PCEtLSAqKiogV2luZSBGQVEgKioqIC0tPgogIDx0aXRsZT5XaW5lIEZBUTwvdGl0bGU+CgogIDxxYW5kYXNldD4KICAgIDxxYW5kYWRpdiBpZD0iQWJvdXQtdGhpcy1GQVEiPjx0aXRsZT5BYm91dCB0aGlzIEZBUTwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ildoby1tYWludGFpbnMtdGhpcy1GQVEiPgogICAgICAgIDxwYXJhPldobyBtYWludGFpbnMgdGhpcyBGQVEgPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT5EYXZlIEdhcmRuZXIgbWFpbnRhaW5lZCBpdCBmcm9tIDE5OTUtMTk5OC48L3BhcmE+CiAgICAgICAgPHBhcmE+RG91Z2xhcyBSaWRnd2F5IChyaWRnd2F5QHdpbmVocS5jb20pIHRvb2sgaXQgb3ZlciBpbiAxOTk5LjwvcGFyYT4KICAgICAgICA8cGFyYT5BbmRyZWFzIE1vaHIgKGFtb2hyQGNvZGV3ZWF2ZXJzLmNvbSkgY29udmVydGVkIGl0IHRvIEZBUS1PLU1hdGljIGluIDIwMDAuPC9wYXJhPgogICAgICAgIDxwYXJhPkRpbWl0cmllIE8uIFBhdW4sIEtlaXRoIE1hdHRoZXdzIGFuZCBUaG9tYXMgV2lja2xpbmUgcmVvcmdhbmlzZWQgaXQgaW4gMjAwMi48L3BhcmE+CiAgICAgICAgPHBhcmE+Rm9yIHN1Z2dlc3Rpb25zL2FkZGl0aW9ucy9jb21wbGFpbnRzIHJlZ2FyZGluZyB0aGlzIEZBUSwgcGxlYXNlIHNlbmQgYW4gZW1haWwgdG8KICAgICAgICA8dWxpbmsgdXJsPSJtYWlsdG86d2luZS1mYXFAd2luZWhxLm9yZyI+d2luZS1mYXFAd2luZWhxLm9yZzwvdWxpbms+PC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGF0LWlzLXRoZS1jb3B5cmlnaHQtb24tdGhlLUZBUS1BbmQiPgogICAgICAgIDxwYXJhPldoYXQgaXMgdGhlIGNvcHlyaWdodCBvbiB0aGUgRkFRPyBBbmQgaG93IG1heSBJIHVzZSBpdD88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+VGhlIG9yaWdpbmFsIFdpbmUgRkFRLCB3aGljaCB0aGlzIEZBUSB3YXMgYmFzZWQgb24sIHdhcyBjb3B5cmlnaHQgJmNvcHk7IDE5OTUtMTk5OCBEYXZpZCBHYXJkbmVyLjwvcGFyYT4KICAgICAgICA8cGFyYT5JdCBtYXkgYmUgcmVwcm9kdWNlZCBhbmQgbW9kaWZpZWQgdW5kZXIgdGhlIHNhbWUgdGVybXMgYXMgV2luZSBpdHNlbGYuPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgPC9xYW5kYWRpdj4KICAgIDxxYW5kYWRpdiBpZD0iR2VuZXJhbC1RdWVzdGlvbnMtYWJvdXQtV2luZSI+CiAgICAgIDx0aXRsZT5HZW5lcmFsIFF1ZXN0aW9ucyBhYm91dCBXaW5lPC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CgogICAgICA8cXVlc3Rpb24gaWQ9IldoYXQtaXMtV2luZS1hbmQtd2hhdC1pcy1pdC1zdXBwb3NlZC10byI+CiAgICAgICAgPHBhcmE+V2hhdCBpcyBXaW5lIGFuZCB3aGF0IGlzIGl0IHN1cHBvc2VkIHRvIGRvPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgYSBwcm9ncmFtIHdoaWNoIGFsbG93cyB0aGUgb3BlcmF0aW9uIG9mIERPUyBhbmQgTVMKICAgICAgICAgIFdpbmRvd3MgcHJvZ3JhbXMgKFdpbmRvd3MgMy54IGFuZCBXaW4zMiBleGVjdXRhYmxlcykgb24gVU5JWCBvcGVyYXRpbmcgc3lzdGVtcyBzdWNoIGFzIExpbnV4LiAKICAgICAgICAgIEl0IGNvbnNpc3RzIG9mIGEgcHJvZ3JhbSBsb2FkZXIsIHdoaWNoIGxvYWRzIGFuZCBleGVjdXRlcyBhIFdpbmRvd3MKICAgICAgICAgIGJpbmFyeSwgYW5kIGEgc2V0IG9mIGxpYnJhcmllcyB0aGF0IGltcGxlbWVudHMgV2luZG93cyBBUEkgY2FsbHMKICAgICAgICAgIHVzaW5nIHRoZWlyIFVOSVggb3IgWDExIGVxdWl2YWxlbnRzLiBUaGUgbGlicmFyaWVzIG1heSBhbHNvIGJlIHVzZWQKICAgICAgICAgIGZvciBwb3J0aW5nIFdpbjMyIGNvZGUgaW50byBuYXRpdmUgVU5JWCBleGVjdXRhYmxlcywgb2Z0ZW4KICAgICAgICAgIHdpdGhvdXQgbWFueSBjaGFuZ2VzIGluIHRoZSBzb3VyY2UuIFdpbmUgaXMgZnJlZSBzb2Z0d2FyZSwgCiAgICAgICAgICBhbmQgaXRzIGxpY2Vuc2UgKGNvbnRhaW5lZCBpbiB0aGUgZmlsZSBMSUNFTlNFCiAgICAgICAgICBpbiBlYWNoIGRpc3RyaWJ1dGlvbikgaXMgdGhlIExHUEwuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJcy1XaW5lLWFuLWVtdWxhdG9yIj4KICAgICAgICA8cGFyYT5Eb2VzIFdpbmUgZW11bGF0ZSBhIGZ1bGwgY29tcHV0ZXI/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTm8sIGFzIHRoZSBuYW1lIHNheXMsIFdpbmUgSXMgTm90IGEgKENQVSkgRW11bGF0b3IuIFdpbmUganVzdAogICAgICAgICAgcHJvdmlkZXMgdGhlIFdpbmRvd3MgQVBJLiBUaGlzIG1lYW5zIHRoYXQgeW91IHdpbGwgbmVlZCBhbgogICAgICAgICAgeDg2LWNvbXBhdGlibGUgcHJvY2Vzc29yIHRvIHJ1biBhbiB4ODYgV2luZG93cyBhcHBsaWNhdGlvbiwgZm9yIGluc3RhbmNlIGZyb20gSW50ZWwgb3IgQU1ELiBUaGUKICAgICAgICAgIGFkdmFudGFnZSBpcyB0aGF0LCB1bmxpa2Ugc29sdXRpb25zIHRoYXQgcmVseSBvbiBDUFUgZW11bGF0aW9uLCBXaW5lCiAgICAgICAgICBydW5zIGFwcGxpY2F0aW9ucyBhdCBmdWxsIHNwZWVkLiBTb21ldGltZXMgYSBwcm9ncmFtIHJ1biB1bmRlcgoJICBXaW5lIHdpbGwgYmUgc2xvd2VyIHRoYW4gd2hlbiBydW4gb24gYSBjb3B5IG9mIE1pY3Jvc29mdCBXaW5kb3dzLCBidXQKCSAgdGhpcyBpcyBtb3JlIGR1ZSB0byB0aGUgZmFjdCB0aGF0IE1pY3Jvc29mdCBoYXZlIGhlYXZpbHkgb3B0aW1pemVkIHBhcnRzIG9mIHRoZWlyCgkgIGNvZGUsIHdoZXJlYXMgbW9zdGx5IFdpbmUgaXMgbm90IHdlbGwgb3B0aW1pemVkICh5ZXQpLiBPY2Nhc2lvbmFsbHksIGFuIGFwcAoJICBtYXkgcnVuIGZhc3RlciB1bmRlciBXaW5lIHRoYW4gb24gV2luZG93cy4gTW9zdCBhcHBzIHJ1biBhdCByb3VnaGx5IHRoZSBzYW1lIHNwZWVkLgogICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iQXJlLWhlcmUtYW55LWFsdGVybmF0aXZlcy10by1XaW5lIj4KICAgICAgICA8cGFyYT5BcmUgdGhlcmUgYW55IGFsdGVybmF0aXZlcyB0byBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFllcywgdGhlcmUgYXJlLiBZb3UgY2FuIHVzZSA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LnZtd2FyZS5jb20iPlZNV2FyZTwvdWxpbms+IHRvIHJ1biBhIFdpbmRvd3MgaW5zdGFsbGF0aW9uIGluc2lkZSBhIHZpcnR1YWwgbWFjaGluZSwKCSAgb3IgdXNlIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luNGxpbi5jb20iPldpbjRMaW48L3VsaW5rPgoJICB0byBydW4gYSBzcGVjaWFsbHkgYWRhcHRlZCBXaW5kb3dzIHZlcnNpb24gb24gTGludXguCgkgIEJvdGggc29sdXRpb25zIGNvc3QgbW9uZXkgZm9yIGJvdGggdGhlIHNvZnR3YXJlIGl0c2VsZgoJICBhbmQgYSBXaW5kb3dzIGxpY2Vuc2UuCiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICAgTm90ZSB0aGF0LCBsaWtlIFdpbmUsIHRoZXkgY2FuIG9ubHkgdXNlIHRoZSBoYXJkd2FyZSBwbGF0Zm9ybSB0aGF0CiAgICAgICAgIHRoZSB0YXJnZXQgcHJvZ3JhbXMgd2VyZSBvcmlnaW5hbGx5IGNvbXBpbGVkIGZvciAoc2VlIGJlbG93KS4KICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgICAgIAogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJEaWZmZXJlbmNlLWJldHdlZW4tV2luZS1hbmQtZW11bGF0b3JzIj4KICAgICAgICA8cGFyYT5XaGF0IGlzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gV2luZSBhbmQgeDg2IGhhcmR3YXJlIGVtdWxhdG9ycz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGVyZSBhcmUgdHdvIGZyZWUgeDg2IGhhcmR3YXJlIGVtdWxhdG9yczoKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly9ib2Nocy5zb3VyY2Vmb3JnZS5uZXQiPmJvY2hzPC91bGluaz4sIGFuZCAKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly9zYXZhbm5haC5ub25nbnUub3JnL3Byb2plY3RzL3BsZXg4NiI+cGxleDg2PC91bGluaz4uCiAgICAgICA8L3BhcmE+CgogICAgICAgPHBhcmE+CiAgICAgICAgICBQbGV4ODYgaXMgdGhlIG9wZW4tc291cmNlIGZyZWUtc29mdHdhcmUgYWx0ZXJuYXRpdmUgZm9yIFZNV2FyZSwKCSAgVmlydHVhbFBDLCBhbmQgb3RoZXIgSUEtMzIgb24gSUEtMzIgIlZpcnR1YWwgUEMgcHJvZHVjdHMuIiBJdAogICAgICAgICAgY2FuIG9ubHkgcnVuIG9uIHRoZSBJQS0zMiBhcmNoaXRlY3R1cmUuCiAgICAgICA8L3BhcmE+CgogICAgICAgPHBhcmE+CiAgICAgICAgICBCb2NocyBpcyBhIGhpZ2hseSBwb3J0YWJsZSBvcGVuIHNvdXJjZSBJQS0zMiAoeDg2KSBQQyBlbXVsYXRvciAKICAgICAgICAgIHdyaXR0ZW4gaW4gQysrLCB0aGF0IHJ1bnMgb24gbW9zdCBwb3B1bGFyIHBsYXRmb3Jtcy4gSXQgaW5jbHVkZXMgZW11bGF0aW9uCiAgICAgICAgICBvZiB0aGUgSW50ZWwgeDg2IENQVSwgY29tbW9uIEkvTyBkZXZpY2VzLCBhbmQgYSBjdXN0b20gQklPUy4gQ3VycmVudGx5LCAKICAgICAgICAgIGJvY2hzIGNhbiBiZSBjb21waWxlZCB0byBlbXVsYXRlIGEgMzg2LCA0ODYgb3IgUGVudGl1bSBDUFUuIEJvY2hzIGlzIGNhcGFibGUgCiAgICAgICAgICBvZiBydW5uaW5nIG1vc3QgT3BlcmF0aW5nIFN5c3RlbXMgaW5zaWRlIHRoZSBlbXVsYXRpb24gaW5jbHVkaW5nIExpbnV4LCAKICAgICAgICAgIFdpbmRvd3OuIDk1LCBET1MsIGFuZCByZWNlbnRseSBXaW5kb3dzriBOVCA0LgogICAgICAgPC9wYXJhPgoKICAgICAgIDxwYXJhPgogICAgICAgICAgQm90aCBhcmUgbGljZW5zZWQgdW5kZXIgdGhlIEdQTC4gQm9jaHMgaXMgb2xkZXIgdGhhbiBwbGV4ODYsIHNlZW1zIHRvIGJlIAogICAgICAgICAgZWFzaWVyIHRvIGluc3RhbGwsIGJ1dCBwbGV4ODYgd2lsbCBydW4gZmFzdGVyIGJlY2F1c2UgcGxleDg2IHVzZXMgYSBqdXN0IGluCiAgICAgICAgICB0aW1lIGJpbmFyeSBjb21waWxlci4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIGRyYXdiYWNrIG9mIGFsbCBlbXVsYXRvcnMgaXMgdGhhdCB5b3UgbmVlZCBhIHZlcnNpb24KICAgICAgICAgIG9mIFdpbmRvd3MgaW4gb3JkZXIgdG8gcnVuIFdpbmRvd3MsIGFuZCB0aGF0IHRoZXkgYWxsIGhhdmUgYW4KICAgICAgICAgIGltcGFjdCBvbiBwZXJmb3JtYW5jZS4gV2luZSBhbHNvIGdpdmVzIG11Y2ggYmV0dGVyIGRlc2t0b3AgaW50ZWdyYXRpb24gLSBmb3IKCSAgaW5zdGFuY2UsIHByb2dyYW1zIHVzZSB5b3VyIHN0YW5kYXJkIHdpbmRvdyBtYW5hZ2VyLCBzeXN0ZW0gdHJheSBpY29ucyB3aWxsCgkgIGFwcGVhciBpbiB5b3VyIHRyYXkgYXJlYSAoaWYgeW91IGhhdmUgb25lKSwgYW5kIHlvdSBjYW4gcnVuIHByb2dyYW1zIGRpcmVjdCBmcm9tIHRoZQoJICBjb21tYW5kIGxpbmUgYW5kIHRoZSBtZW51cy4gVGhlIGNsaXBib2FyZCBhbHNvIHdvcmtzIHNlYW1sZXNzbHkuCiAgICAgICA8L3BhcmE+CgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSW50ZWdyYXRlLWFuLXg4Ni1lbXVsYXRvciI+CiAgICAgICAgPHBhcmE+V2hlbiB3aWxsIFdpbmUgaW50ZWdyYXRlIGFuIHg4NiBDUFUgZW11bGF0b3Igc28gd2UgY2FuCiAgICAgICAgICBydW4gV2luZG93cyBhcHBsaWNhdGlvbnMgb24gbm9uLXg4NiBtYWNoaW5lcz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGUgc2hvcnQgYW5zd2VyIGlzICdwcm9iYWJseSBuZXZlcicuIFJlbWVtYmVyLCBXaW5lIElzIE5vdCBhCiAgICAgICAgICAoQ1BVKSBFbXVsYXRvci4gVGhlIGxvbmcgYW5zd2VyIGlzIHRoYXQgd2UgcHJvYmFibHkgZG9uJ3Qgd2FudCBvcgogICAgICAgICAgbmVlZCB0byBpbnRlZ3JhdGUgb25lIGluIHRoZSB0cmFkaXRpb25hbCBzZW5zZS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJbnRlZ3JhdGluZyBhIENQVSBlbXVsYXRvciBpbiBXaW5lIHdvdWxkIGJlIGV4dHJlbWVseSBoYXJkLAogICAgICAgICAgZHVlIHRvIHRoZSBsYXJnZSBudW1iZXIgb2YgV2luZG93cyBBUElzIGFuZCB0aGUgY29tcGxleAogICAgICAgICAgZGF0YXR5cGVzIHRoZXkgZXhjaGFuZ2UuIEl0IGlzIG5vdCB1bmNvbW1vbiBmb3IgYSBXaW5kb3dzIEFQSSB0bwogICAgICAgICAgdGFrZSB0aHJlZSBvciBtb3JlIHBvaW50ZXJzIHRvIHN0cnVjdHVyZXMgY29tcG9zZWQgb2YgbWFueSBmaWVsZHMsCiAgICAgICAgICBpbmNsdWRpbmcgcG9pbnRlcnMgdG8gb3RoZXIgY29tcGxleCBzdHJ1Y3R1cmVzLiBGb3IgZWFjaCBvZiB0aGVzZQogICAgICAgICAgd2Ugd291bGQgbmVlZCBhIGNvbnZlcnNpb24gcm91dGluZSB0byBkZWFsIHdpdGggdGhlIGJ5dGUgb3JkZXIgYW5kCiAgICAgICAgICBhbGlnbm1lbnQgaXNzdWVzLiBGdXJ0aGVybW9yZSwgV2luZG93cyBhbHNvIGNvbnRhaW5zIG1hbnkgY2FsbGJhY2sKICAgICAgICAgIG1lY2hhbmlzbXMgdGhhdCBjb25zdGl0dXRlIGFzIG1hbnkgZXh0cmEgcGxhY2VzIHdoZXJlIHdlIHdvdWxkIGhhdmUKICAgICAgICAgIHRvIGhhbmRsZSB0aGVzZSBjb252ZXJzaW9uIGlzc3Vlcy4gV2luZSBhbHJlYWR5IGhhcyB0byBkZWFsIHdpdGgKICAgICAgICAgIDE2IHZzLiAzMiBiaXQgQVBJcyBhbmQgQW5zaSB2cy4gVW5pY29kZSBBUElzIHdoaWNoIGJvdGgKICAgICAgICAgIGludHJvZHVjZSBzaWduaWZpY2FudCBjb21wbGV4aXR5LiBBZGRpbmcgc3VwcG9ydCBmb3IgYSBDUFUgZW11bGF0b3IKICAgICAgICAgIGluc2lkZSBXaW5lIHdvdWxkIGludHJvZHVjZSBhdCBsZWFzdCBkb3VibGUgdGhhdCBjb21wbGV4aXR5IGFuZAogICAgICAgICAgb25seSBzZXJ2ZSB0byBzbG93IGRvd24gdGhlIGRldmVsb3BtZW50IG9mIFdpbmUuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgRm9ydHVuYXRlbHkgYW5vdGhlciBzb2x1dGlvbiBleGlzdHMgdG8gcnVuIFdpbmRvd3MgYXBwbGljYXRpb25zCiAgICAgICAgICBvbiBub24teDg2IHBsYXRmb3JtczogcnVuIGJvdGggV2luZSBhbmQgdGhlIGFwcGxpY2F0aW9uIGluc2lkZSB0aGUKICAgICAgICAgIENQVSBlbXVsYXRvci4gQXMgbG9uZyBhcyB0aGUgZW11bGF0b3IgcHJvdmlkZXMgYSBzdGFuZGFyZCBVbml4CiAgICAgICAgICBlbnZpcm9ubWVudCwgV2luZSBzaG91bGQgb25seSBuZWVkIG1pbmltYWwgbW9kaWZpY2F0aW9ucy4gV2hhdAogICAgICAgICAgcGVyZm9ybWFuY2UgeW91IGxvb3NlIGR1ZSB0byBXaW5lIHJ1bm5pbmcgaW5zaWRlIHRoZSBlbXVsYXRvcgogICAgICAgICAgcmF0aGVyIHRoYW4gbmF0aXZlbHksIHlvdSBnYWluIGluIGNvbXBsZXhpdHkgaW5zaWRlIG9mIFdpbmUuCiAgICAgICAgICBGdXJ0aGVybW9yZSwgaWYgdGhlIGVtdWxhdG9yIGlzIGZhc3QgZW5vdWdoIHRvIHJ1biBXaW5kb3dzCiAgICAgICAgICBhcHBsaWNhdGlvbnMsIFBob3Rvc2hvcCBmb3IgaW5zdGFuY2UsIHRoZW4gaXQgc2hvdWxkIGJlIGZhc3QgZW5vdWdoCiAgICAgICAgICB0byBydW4gdGhhdCBzYW1lIFdpbmRvd3MgYXBwbGljYXRpb24gcGx1cyBXaW5lLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFR3byBwcm9qZWN0cyBoYXZlIHN0YXJ0ZWQgYWxvbmcgdGhvc2UgbGluZXM6IDx1bGluawogICAgICAgICAgdXJsPSJodHRwOi8vZmFicmljZS5iZWxsYXJkLmZyZWUuZnIvcWVtdS8iPlFFTVU8Lz4sIGFuCiAgICAgICAgICBvcGVuLXNvdXJjZSBwcm9qZWN0LCBhbmQgPHVsaW5rCiAgICAgICAgICB1cmw9Imh0dHA6Ly93d3cudHJhbnNpdGl2ZXMuY29tL3RlY2hfb3ZlcnZpZXcuaHRtIj5EeW5hbWl0ZTwvPiwKICAgICAgICAgIGEgY29tbWVyY2lhbCBDUFUgZW11bGF0b3IgZW52aXJvbm1lbnQgZnJvbQogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy50cmFuc2l0aXZlcy5jb20vIj5UcmFuc2l0aXZlcyBUZWNobm9sb2dpZXM8Lz4KICAgICAgICAgIHdoaWNoIGhhcyBiZWVuIDx1bGluawogICAgICAgICAgdXJsPSJodHRwOi8vd3d3LnRyYW5zZ2FtaW5nLmNvbS9uZXdzLnBocD9uZXdzaWQ9MzciPnBhaXJlZAogICAgICAgICAgd2l0aCBXaW5lPC8+LgogICAgICAgIDwvcGFyYT4KCiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaHktd291bGQtYW55b25lLXdhbnQtV2luZS1XaW5kb3dzLXN1Y2siPgogICAgICAgIDxwYXJhPldoeSB3b3VsZCBhbnlvbmUgd2FudCBXaW5lPyBEb2Vzbid0IFdpbmRvd3Mgc3Vjaz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBGaXJzdCBXaW5lIGlzIG5vdCBhYm91dCBydW5uaW5nIFdpbmRvd3MgYnV0IGFib3V0IHJ1bm5pbmcgV2luZG93cyAKICAgICAgICAgIGFwcGxpY2F0aW9ucy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBTbyBpZiBhbGwgeW91ciBjb21wdXRpbmcgbmVlZHMgYXJlIGZ1bGZpbGxlZCBieSBuYXRpdmUgVW5peCAKICAgICAgICAgIGFwcGxpY2F0aW9ucywgdGhlbiB5b3UgZG8gbm90IG5lZWQgV2luZSBhbmQgc2hvdWxkIG5vdCBiZSB1c2luZwogICAgICAgICAgaXQuIEhvd2V2ZXIsIGlmIHlvdSBkZXBlbmQgb24gb25lIG9yIG1vcmUgb2YgdGhlIHRlbnMgb2YgCiAgICAgICAgICB0aG91c2FuZHMgb2YgV2luZG93cyBhcHBsaWNhdGlvbnMsIHRoZW4gV2luZSBpcyB0aGUgYmVzdCB3YXkgdG8KICAgICAgICAgIHVzZSBpdCB3aXRob3V0IGdpdmluZyB1cCBvbiBVbml4LiBMZXQncyBsb29rIGF0IHRoZSBhbHRlcm5hdGl2ZXMKICAgICAgICAgIHRvIHNlZSB3aHk6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIG1vc3Qgb2J2aW91cyBhbHRlcm5hdGl2ZSBpcyB0byBkdWFsLWJvb3QuIFRoaXMgaXMgdGhlIHNvbHV0aW9uCiAgICAgICAgICB0aGF0IHByb3ZpZGVzIHRoZSBiZXN0IGNvbXBhdGliaWxpdHkuIEhvd2V2ZXIgaXQgcmVxdWlyZXMgdGhhdCB5b3UKICAgICAgICAgIGFjcXVpcmUgYSBXaW5kb3dzIGxpY2Vuc2UgYW5kIHRoZW4gZGVkaWNhdGUgYSBnb29kIGNodW5rIG9mIHlvdXIgCiAgICAgICAgICBoYXJkLWRyaXZlIHRvIFdpbmRvd3MuIEJ1dCB0aGUgd29yc3QgaXMgeWV0IHRvIGNvbWUuIEVhY2ggdGltZSB5b3UKICAgICAgICAgIHdpbGwgd2FudCB0byB1c2UgdGhhdCBhcHBsaWNhdGlvbiB5b3Ugd2lsbCBoYXZlIHRvIHJlYm9vdCB0byAKICAgICAgICAgIFdpbmRvd3MuIFRoaXMgaXMgZXNwZWNpYWxseSBzaWduaWZpY2FudCBpZiBleHRlcm5hbCBmYWN0b3JzIGRpY3RhdGUKICAgICAgICAgIHdoZW4geW91IG11c3QgdXNlIHRoaXMgYXBwbGljYXRpb24gKGUuZy4gY3JlZGl0IGNhcmQgdG8gcHJvY2VzcywgCiAgICAgICAgICBlbWFpbCB0byByZXRyaWV2ZSBmcm9tIGEgTG90dXMgTm90ZXMgc2VydmVyKS4gVGhlbiB5b3Ugd2lsbCBmaW5kCiAgICAgICAgICB5b3Vyc2VsZiBmb3JjZWQgdG8gY2xvc2UgYWxsIHlvdXIgTGludXggYXBwbGljYXRpb25zIGp1c3QgdG8gcnVuCiAgICAgICAgICB0aGF0IG9uZSBXaW5kb3dzIGFwcGxpY2F0aW9uLiBZb3UgbWF5IHF1aWNrbHkgZ2V0IHRpcmVkIG9mIHRoaXMsIG9yCiAgICAgICAgICB3aWxsIGZpbmQgdGhhdCBzdWNoIGEgc2l0dWF0aW9uIGlzIGltcG9zc2libGUgdG8ganVzdGlmeSBpbiBhIAogICAgICAgICAgYnVzaW5lc3MgZW52aXJvbm1lbnQuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIG5leHQgc29sdXRpb24gaXMgdG8gaW5zdGFsbCB2aXJ0dWFsIG1hY2hpbmUgZW11bGF0aW9uIHNvZnR3YXJlCiAgICAgICAgICBzdWNoIGFzIFZNV2FyZSwgV2luNExpbiBvciBQbGV4ODYuIFRoZW4geW91IGNhbiB1c2Ugd2luZG93cyAKICAgICAgICAgIGFwcGxpY2F0aW9ucyB3aXRob3V0IHN1ZmZlcmluZyBzdWNoIGEgYmlnIGRpc3J1cHRpb24uIEJ1dCBpdCBzdGlsbAogICAgICAgICAgcmVxdWlyZXMgdGhhdCB5b3UgYWNxdWlyZSBhIFdpbmRvd3MgbGljZW5zZSBhbmQgZGVkaWNhdGUgYXMgbXVjaCAKICAgICAgICAgIGRpc2sgc3BhY2UgdG8gV2luZG93cy4gRnVydGhlcm1vcmUgeW91IHdpbGwgcGF5IGZvciB0aGUgYWRkZWQgCiAgICAgICAgICBjb252ZW5pZW5jZTogaWYgdXNpbmcgVk1XYXJlIG9yIFdpbjRMaW4geW91IGhhdmUgdG8gYnV5IGFub3RoZXIgCiAgICAgICAgICBsaWNlbnNlLCBhbmQgbW9yZSBpbXBvcnRhbnRseSB5b3Ugbm93IGhhdmUgdG8gZGVkaWNhdGUgYSBnb29kIGNodW5rCiAgICAgICAgICBvZiB5b3VyIGNvbXB1dGVyJ3MgbWVtb3J5IHRvIHRoZSB2aXJ0dWFsIG1hY2hpbmUuIFBlcmZvcm1hbmNlIHdpbGwKICAgICAgICAgIHRha2UgYSBzaWduaWZpY2FudCBoaXQgdG9vLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFVzaW5nIFdpbmUgbGV0cyB5b3UgYXZvaWQgYWxsIG9mIHRoYXQgb3ZlcmhlYWQ6IFdpbmRvd3MgbGljZW5zZSwKICAgICAgICAgIGhhcmQtZHJpdmUgc3BhY2UgcmVxdWlyZWQgYnkgV2luZG93cywgbWVtb3J5IGFuZCBwZXJmb3JtYW5jZSBoaXQgCiAgICAgICAgICB0YWtlbiBieSBlbXVsYXRlZCB2aXJ0dWFsIG1hY2hpbmVzLiBOb3cgeW91IGNhbiBzdGFydCB5b3VyIFdpbmRvd3MKICAgICAgICAgIGFwcGxpY2F0aW9uIHN0cmFpZ2h0IGZyb20geW91ciByZWd1bGFyIGRlc2t0b3AgZW52aXJvbm1lbnQsIHBsYWNlCiAgICAgICAgICB0aGF0IGFwcGxpY2F0aW9uJ3Mgd2luZG93IHNpZGUgYnkgc2lkZSB3aXRoIG5hdGl2ZSBhcHBsaWNhdGlvbnMsCiAgICAgICAgICBjb3B5L3Bhc3RlIGZyb20gb25lIHRvIHRoZSBvdGhlciwgYW5kIHJ1biBpdCBhbGwgYXQgZnVsbCBzcGVlZC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJdCBpcyBhbHNvIGEgcHJldHR5IHZpdGFsIHBhcnQgb2YgbWlncmF0aW5nIGEgbGFyZ2Ugb3JnYW5pc2F0aW9uLAogICAgICAgICAgeW91IGNhbid0IGNoYW5nZSBhIDUwMDAgZGVza3RvcCBzZXR1cCBvdmVybmlnaHQgd2l0aG91dCBhIGxvdCBvZiByaXNrLgogICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iVXNlLVdpbmRvd3MtZHJpdmVyLXdpdGgtV2luZSI+CiAgICAgICAgPHBhcmE+Q2FuIEkgdXNlIFdpbmUgdG8gbWFrZSB0aGUgV2luZG93cyBkcml2ZXIgZm9yIG15IG5ldHdvcmsgY2FyZCAvCiAgICAgICAgICBncmFwaGljcyBjYXJkIC8gc2Nhbm5lciAvIGV0Yy4gd29yayBvbiBVbml4PzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBnb2FsIG9mIFdpbmUgaXMgdG8gbWFrZSBpdCBwb3NzaWJsZSB0byBydW4gV2luZG93cyBhcHBsaWNhdGlvbnMKICAgICAgICAgIG9uIFVuaXgsIG5vdCBXaW5kb3dzIGRyaXZlcnMgb3IgVnhEcy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBEcml2ZXJzIGFuZCBXaW5kb3dzIGFwcGxpY2F0aW9ucyBiZWxvbmcgdG8gZGlmZmVyZW50IHdvcmxkcy4KICAgICAgICAgIEFwcGxpY2F0aW9ucyBydW4gaW4gdXNlciBtb2RlIGFuZCB1c2UgdGhlIEFQSXMgcHJvdmlkZWQgYnkKICAgICAgICAgIHRoZSBrZXJuZWwgYW5kIHRoZSBvdGhlciB1c2VyIG1vZGUgZGxscy4gSW4gY29udHJhc3QsIGRyaXZlcnMKICAgICAgICAgIGFyZSBsb2FkZWQgaW4gdGhlIFdpbmRvd3Mga2VybmVsLCBpLmUuIGluIHJpbmcgMCBpbnN0ZWFkIG9mIHJpbmcKICAgICAgICAgIDMsIGhhdmUgdG8gZGVhbCB3aXRoIHNwZWNpZmljIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlcywgYW5kIHVzZQogICAgICAgICAgaW5zdHJ1Y3Rpb25zIG5vdCBhdmFpbGFibGUgdG8gcmVndWxhciBhcHBsaWNhdGlvbnMuIFRoaXMgbWVhbnMKICAgICAgICAgIHRoZXkgd291bGQgbm90IGJlIGFibGUgdG8gcnVuIGluIFdpbmUgc2luY2UgV2luZSBydW5zIGVudGlyZWx5CiAgICAgICAgICBpbiB1c2VyIG1vZGUuIFJhdGhlciB5b3Ugd291bGQgaGF2ZSB0byBtb2RpZnkgdGhlIExpbnV4IGtlcm5lbC4KICAgICAgICAgIEJ1dCBpbiBhZGRpdGlvbiwgZHJpdmVycyB1c2UgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBBUEkgZnJvbQogICAgICAgICAgcmVndWxhciBXaW5kb3dzIGFwcGxpY2F0aW9ucy4gU28gdGhlIHdvcmsgcGVyZm9ybWVkIG9uIFdpbmUgd291bGQKICAgICAgICAgIG5vdCBldmVuIGJlIG9mIGFueSB1c2UgZm9yIHN1Y2ggYSBwcm9qZWN0LiBJbiBvdGhlciB3b3JkcywgbWFraW5nCiAgICAgICAgICBpdCBwb3NzaWJsZSB0byB1c2UgV2luZG93cyBkcml2ZXJzIG9yIFZ4RHMgb24gVW5peCB3b3VsZCBiZSBhCiAgICAgICAgICBjb21wbGV0ZWx5IHNlcGFyYXRlIHByb2plY3QuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSG93ZXZlciwgaWYgeW91IHdhbnQgdG8gcmV1c2UgV2luZG93cyBkcml2ZXJzIG9uIGEgbm9uLU1pY3Jvc29mdAogICAgICAgICAgb3BlcmF0aW5nIHN5c3RlbSB3ZSByZWNvbW1lbmQgdGhhdCB5b3UgaGF2ZSBhIGxvb2sgYXQKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cucmVhY3Rvcy5jb20vIj5SZWFjdE9TPC8+LgogICAgICAgIDwvcGFyYT4KCiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGljaC1vbmUtb2YtdGhlLWRpZmZlcmVudC1XaW5lLXBhY2thZ2VzIj4KICAgICAgICA8cGFyYT5XaGljaCBvbmUgb2YgdGhlIGRpZmZlcmVudCBXaW5lIHBhY2thZ2VzIG91dCB0aGVyZSBpcyBnb29kIGZvciBtZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBDdXJyZW50bHkgdGhlcmUgaXMgYSBicm9hZCBzZWxlY3Rpb24gb2YgZGlmZmVyZW50IFdpbmUgcGFja2FnZXMvdmVyc2lvbnM6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDx2YXJpYWJsZWxpc3Q+CgoJICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgIDx0ZXJtPjx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLmNvbSI+V2luZTwvdWxpbms+PC90ZXJtPgogICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBUaGlzIGlzIHRoZSAic3RhbmRhcmQiIHNvdXJjZSBkaXN0cmlidXRpb24gb2YgV2luZS4gSXRzIGxpY2Vuc2UgaXMgCiAgICAgICAgICAgICAgdGhlIExHUEwsIGl0IGNhbiBiZSBkb3dubG9hZGVkIGZvciBmcmVlLgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogCgkgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dGVybT48dWxpbmsgdXJsPSJodHRwOi8vcmV3aW5kLnNvdXJjZWZvcmdlLm5ldCI+UmVXaW5kPC91bGluaz48L3Rlcm0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIFRoaXMgaXMgYSBmb3JrZWQgV2luZSB0cmVlIHRoYXQgZ290IGNyZWF0ZWQgd2hlbiBXaW5lIGNoYW5nZWQgaXRzCiAgICAgICAgICAgICAgbGljZW5zZSBmcm9tIFgxMSB0byB0aGUgbW9yZSByZXN0cmljdGl2ZSBMR1BMLCBpbiBvcmRlciB0byBsZXQgCiAgICAgICAgICAgICAgcGVvcGxlIGNvbnRpbnVlIHRvIG1haW50YWluIGFuIFgxMSBsaWNlbnNlZCBXaW5lIHZlcnNpb24uIEl0cyAKICAgICAgICAgICAgICBsaWNlbnNlIGlzIFgxMSwgaXQgY2FuIGJlIGRvd25sb2FkZWQgZm9yIGZyZWUuIAogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAKCSAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgIDx0ZXJtPjx1bGluayB1cmw9Imh0dHA6Ly93d3cudHJhbnNnYW1pbmcuY29tIj5UcmFuc2dhbWluZydzIFdpbmVYPC91bGluaz48L3Rlcm0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIFRoaXMgaXMgVHJhbnNHYW1pbmcncyBXaW5lIHZlcnNpb24gc3BlY2lhbGx5IHN1aXRlZCBmb3IKICAgICAgICAgICAgICBnYW1lcy4gIEl0IGluY2x1ZGVzIG1vcmUgbWF0dXJlIERpcmVjdDNEIHN1cHBvcnQgdGhhbgogICAgICAgICAgICAgIFdpbmVIUSwgYWx0aG91Z2ggdGhlc2UgZGF5cyBXaW5lSFEgaGFzIHF1aXRlIGFkdmFuY2VkCiAgICAgICAgICAgICAgRDNEIHN1cHBvcnQgYXMgd2VsbC4gTW9zdCBvZiB0aGUgY29kZSBpcyB1bmRlciB0aGUgQUZQTAogICAgICAgICAgICAgIGFuZCBjYW4gYmUgZG93bmxvYWRlZCBmb3IgZnJlZS4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBIb3dldmVyIFRyYW5zZ2FtaW5nIGFsc28gZGlzdHJpYnV0ZXMgYmluYXJpZXMgdGhhdCBjb250YWluCiAgICAgICAgICAgICAgaW1wcm92ZWQgY29weSBwcm90ZWN0aW9uIHN1cHBvcnQgKG5lZWRlZCBmb3IgbWFueQogICAgICAgICAgICAgIGdhbWVzKSwgc3VwcG9ydCwgYW5kIG90aGVyIGVuaGFuY2VtZW50cy4gVGhlc2UgcGFja2FnZXMgYXJlCiAgICAgICAgICAgICAgb25seSBhdmFpbGFibGUgaW4gYmluYXJ5IGZvcm0gdG8gc3Vic2NyaWJlZCBjdXN0b21lcnMKICAgICAgICAgICAgICAoJDUvbW9udGgpLgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIAoJICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgPHRlcm0+PHVsaW5rIHVybD0iaHR0cDovL3dpbmUuY29kZXdlYXZlcnMuY29tIj5Db2RlV2VhdmVycycgV2luZSBwcmV2aWV3PC91bGluaz48L3Rlcm0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIFRoaXMgaXMgYSBzcGVjaWFsIHBhY2thZ2VkIHZlcnNpb24gb2YgdGhlIHN0YW5kYXJkIFdpbmUgdHJlZQogICAgICAgICAgICAgIHdoaWNoIGhhcyBhIG5pY2Ugc2V0dXAgZm9yIGVhc3kgaW5zdGFsbGF0aW9uLiBMaWNlbnNlIExHUEwsIGZyZWUKICAgICAgICAgICAgICBkb3dubG9hZC4gSXQncyBwcmV0dHkgb2xkIG5vdywgYW5kIG5vdCByZWNvbW1lbmRlZCBmb3IgZ2VuZXJhbCB1c2UuCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogCgkgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dGVybT48dWxpbmsgdXJsPSJodHRwOi8vd3d3LmNvZGV3ZWF2ZXJzLmNvbS9wcm9kdWN0cy9jcm9zc292ZXIvIj5Db2RlV2VhdmVycycgQ3Jvc3NvdmVyIFBsdWdpbjwvdWxpbms+PC90ZXJtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBTcGVjaWFsIFdpbmUgaW5zdGFsbGF0aW9uIHRvIGJlIHVzZWQgZm9yIHJ1bm5pbmcgV2luZG93cwogICAgICAgICAgICAgIE5ldHNjYXBlIGJyb3dzZXIgcGx1Z2lucyBzdWNoIGFzIGUuZy4gUXVpY2tUaW1lIGluIExpbnV4CiAgICAgICAgICAgICAgYnJvd3NlcnMuIENvc3RzICQyNC45NS4KICAgICAgICAgICAgICBXZWxsIHdvcnRoIGl0ICh2ZXJ5IHN0YWJsZSBhbmQgdXNlZnVsIHBhY2thZ2luZykuIAogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CgoJICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgPHRlcm0+PHVsaW5rIHVybD0iaHR0cDovL3d3dy5jb2Rld2VhdmVycy5jb20vcHJvZHVjdHMvb2ZmaWNlLyI+Q29kZVdlYXZlcnMnIENyb3Nzb3ZlciBPZmZpY2U8L3VsaW5rPjwvdGVybT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgV2luZSB2ZXJzaW9uIHdpdGggc3BlY2lhbCBwYWNrYWdpbmcgdG8gbWFrZSBzdXJlIGFsbW9zdCBhbGwgCiAgICAgICAgICAgICAgaW1wb3J0YW50IE9mZmljZSB0eXBlIHByb2dyYW1zIHdvcmsgcHJldHR5IHdlbGwuIENvc3RzICQ1NC45NS4gCiAgICAgICAgICAgICAgU2VlbXMgdG8gYmUgd2VsbCB3b3J0aCBpdCBzbyBmYXIgYWNjb3JkaW5nIHRvIHNvbWUgY29tbWVudHMuIAogICAgICAgICAgICAgIChub3RlOiB5b3UncmUgc3VwcG9ydGluZyBhIGNvbXBhbnkgYWN0aXZlbHkgY29udHJpYnV0aW5nIHRvIFdpbmUKICAgICAgICAgICAgICBpZiB5b3UgZGVjaWRlIHRvIGJ1eSBlaXRoZXIgUGx1Z2luIG9yIE9mZmljZS4pCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIAoJICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgPHRlcm0+PHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL2Rvd25sb2FkLyI+T3RoZXIgcGFja2FnZWQgdmVyc2lvbnMgb2YgV2luZTwvdWxpbms+PC90ZXJtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBWYXJpb3VzIFdpbmUgcGFja2FnZXMgY2FuIGJlIGRvd25sb2FkZWQgZm9yIGZyZWUgZnJvbQogICAgICAgICAgICAgIFdpbmUgSFEuIFRoZXkgYXJlIG5vdCBvZmZpY2lhbGx5IHBhY2thZ2VkIGJ5IFdpbmUgSFEsIGFuZCBhcwogICAgICAgICAgICAgIHN1Y2ggbWF5IGhhdmUgc29tZSBjb25maWd1cmF0aW9uIGluY29uc2lzdGVuY2llcy4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hhdHMtdGhlLWhpc3Rvcnktb2YtV2luZSI+CiAgICAgICAgPHBhcmE+V2hhdCdzIHRoZSBoaXN0b3J5IG9mIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIFdpbmUgcHJvamVjdCBzdGFydGVkIGluIDE5OTMgYXMgYSB3YXkgdG8gc3VwcG9ydCBydW5uaW5nIFdpbmRvd3MgMy4xCiAgICAgICAgICBwcm9ncmFtcyBvbiBMaW51eC4gQm9iIEFtc3RhZHQgd2FzIHRoZSBvcmlnaW5hbCBjb29yZGluYXRvciwgYnV0IHR1cm5lZAogICAgICAgICAgaXQgb3ZlciBmYWlybHkgZWFybHkgb24gdG8gQWxleGFuZHJlIEp1bGxpYXJkLCB3aG8gaGFzIHJ1biBpdCBldmVyIAogICAgICAgICAgc2luY2UuIEEgPHVsaW5rIHVybD0ibmV3czpjb21wLmVtdWxhdG9ycy5tcy13aW5kb3dzLndpbmUiPm5ld3Nncm91cDwvdWxpbms+CiAgICAgICAgICB3YXMgY3JlYXRlZCBpbiBKdWx5IDE5OTQuIE92ZXIgdGhlIHllYXJzLCBwb3J0cyBmb3IKICAgICAgICAgIG90aGVyIFVuaXhlcyBoYXZlIGJlZW4gYWRkZWQsIGFsb25nIHdpdGggc3VwcG9ydCBmb3IgV2luMzIgYXMgV2luMzIgCiAgICAgICAgICBhcHBsaWNhdGlvbnMgYmVjYW1lIHBvcHVsYXIuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5jb20vYWJvdXQuc2h0bWwiPgogICAgICAgICAgaHR0cDovL3d3dy53aW5laHEuY29tL2Fib3V0LnNodG1sPC91bGluaz4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGF0LWlzLXRoZS1jdXJyZW50LXZlcnNpb24tb2YtV2luZSI+CiAgICAgICAgPHBhcmE+V2hhdCBpcyB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQSBuZXcgdmVyc2lvbiBvZiBXaW5lIGlzIGRpc3RyaWJ1dGVkIGFib3V0IGV2ZXJ5IG1vbnRoLiBZb3Ugd2lsbCBiZSAKICAgICAgICAgIGFibGUgdG8ga2VlcCB1cCBvbiBhbGwgdGhlIGxhdGVzdCByZWxlYXNlcyBieSByZWFkaW5nIHRoZSBuZXdzZ3JvdXAKICAgICAgICAgIDx1bGluayB1cmw9Im5ld3M6Y29tcC5lbXVsYXRvcnMubXMtd2luZG93cy53aW5lIj4KICAgICAgICAgIGNvbXAuZW11bGF0b3JzLm1zLXdpbmRvd3Mud2luZTwvdWxpbms+LCBvciBieSB2aXNpdGluZyB0aGUKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLmNvbSI+V2luZSBIUSBob21lcGFnZTwvdWxpbms+LiBXaGVuCiAgICAgICAgICBkb3dubG9hZGluZyBXaW5lIGZyb20geW91ciBGVFAgc2l0ZSBvZiBjaG9pY2UgKHNlZQogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEuY29tL2Rvd25sb2FkLnNodG1sIj50aGUgRG93bmxvYWQgcGFnZTwvdWxpbms+CiAgICAgICAgICBmb3Igc29tZSBvZiB0aGVzZSBjaG9pY2VzKSwgeW91IGNhbiBtYWtlIHN1cmUgdGhhdCB5b3UgYXJlIGdldHRpbmcgCiAgICAgICAgICB0aGUgbGF0ZXN0IHZlcnNpb24gYnkgd2F0Y2hpbmcgdGhlIHZlcnNpb24gbnVtYmVycyBpbiB0aGUgZGlzdHJpYnV0aW9uCiAgICAgICAgICBmaWxlbmFtZS4gRm9yIGluc3RhbmNlLCB0aGUgZGlzdHJpYnV0aW9uIHJlbGVhc2VkIG9uIE9jdG9iZXIgMzEsIDIwMDIKICAgICAgICAgIHdhcyBjYWxsZWQgV2luZS0yMDAyMTAzMS50YXIuZ3ouIFBhdGNoIGZpbGVzIGFyZSBhbHNvIGF2YWlsYWJsZS4gSWYKICAgICAgICAgIHlvdSBhcmUgY3VycmVudCB0byB0aGUgcHJldmlvdXMgdmVyc2lvbiwgeW91IGNhbiBkb3dubG9hZCBhbmQgYXBwbHkgCiAgICAgICAgICBqdXN0IHRoZSBjdXJyZW50IHBhdGNoIGZpbGUgcmF0aGVyIHRoYW4gdGhlIGVudGlyZSBuZXcgZGlzdHJpYnV0aW9uLgogICAgICAgICAgVGhlIHBhdGNoIGZpbGVuYW1lcyBmb2xsb3cgdGhlIHNhbWUgY29udmVudGlvbnMgYXMgdGhlIG1vbnRobHkgCiAgICAgICAgICBkaXN0cmlidXRpb24uIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLmNvbS9kZXYuc2h0bWwiPgogICAgICAgICAgUmVhZC1vbmx5IENWUzwvdWxpbms+IGFjY2VzcyBpcyBhbHNvIGF2YWlsYWJsZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGF0LWlzLXRoZS1jdXJyZW50LVN0YXR1cy1vZi1XaW5lIj4KICAgICAgICA8cGFyYT5XaGF0IGlzIHRoZSBjdXJyZW50IFN0YXR1cyBvZiBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEFzIG9mIG1pZCAyMDAzLCBXaW5lIGNvbnNpc3RzIG9mIGFib3V0IDEuNCBtaWxsaW9uIGxpbmVzIG9mIGNvZGUsCiAgICAgICAgICB3cml0dGVuIGJ5IG1vcmUgdGhhbiA1NTAgZGV2ZWxvcGVycyBmcm9tIGRvemVucyBvZiBjb3VudHJpZXMgYXJvdW5kCiAgICAgICAgICB0aGUgd29ybGQuIFdpbmUgaXMgaW4gYWN0aXZlIHVzZSBieSBhbiBlc3RpbWF0ZWQgMTAwSyBwZW9wbGUuIFdpbmUKICAgICAgICAgIGltcGxlbWVudHMgbW9yZSB0aGFuIDkwJSBvZiB0aGUgY2FsbHMgaW4gcG9wdWxhciBXaW5kb3dzIAogICAgICAgICAgc3BlY2lmaWNhdGlvbnMgc3VjaCBhcyBFQ01BLTIzNCBhbmQgT3BlbjMyLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFlvdSBtYXkgYWxzbyB3YW50IHRvIGxvb2sgYXQgdGhlCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5jb20vYWJvdXQvaW5kZXgucGhwP3N0YXR1cyI+CiAgICAgICAgICBTdGF0dXMgcGFnZTwvdWxpbms+IGZvciBhIGdsb2JhbCB2aWV3IG9uIFdpbmUncyBpbXBsZW1lbnRhdGlvbiBwcm9ncmVzcy4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaGVuLXdpbGwtV2luZS1iZS1maW5pc2hlZCI+CiAgICAgICAgPHBhcmE+V2hlbiB3aWxsIFdpbmUgYmUgZmluaXNoZWQ/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTGFyZ2Ugc29mdHdhcmUgcHJvamVjdHMgYXJlIG5ldmVyIGZpbmlzaGVkLCBvbmx5IHJlbGVhc2VkLiBJbiBhbnkKICAgICAgICAgIGNhc2UgV2luZSBpcyBjaGFzaW5nIGEgbW92aW5nIHRhcmdldCBzaW5jZSBldmVyeSBuZXcgcmVsZWFzZSBvZiAKICAgICAgICAgIFdpbmRvd3MgY29udGFpbnMgbmV3IEFQSSBjYWxscyBvciB2YXJpYXRpb25zIG9uIHRoZSBleGlzdGluZyBvbmVzLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEJlY2F1c2UgV2luZSBpcyBiZWluZyBkZXZlbG9wZWQgYnkgdm9sdW50ZWVycywgaXQgaXMgZGlmZmljdWx0IHRvCiAgICAgICAgICBwcmVkaWN0IHdoZW4gaXQgd2lsbCBiZSByZWFkeSBmb3IgZ2VuZXJhbCByZWxlYXNlLiBCdXQgZHVlIHRvIHRoZQogICAgICAgICAgbXVjaCBpbmNyZWFzZWQgaW50ZXJlc3QgYnkgY29tcGFuaWVzIGluIHBvcnRpbmcgYXBwcyB2aWEgV2luZSwgV2luZQogICAgICAgICAgZGV2ZWxvcG1lbnQgaXMgY29uc3RhbnRseSBnZXR0aW5nIG1vcmUgYW5kIG1vcmUgYWN0aXZlLiBSaWdodCBub3cKICAgICAgICAgIHdlIGFyZSB3b3JraW5nIG9uIHJlbGVhc2luZyBXaW5lIDAuOSBpbiAyMDAzLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ildoby1pcy1yZXNwb25zaWJsZS1mb3ItV2luZSI+CiAgICAgICAgPHBhcmE+V2hvIGlzIHJlc3BvbnNpYmxlIGZvciBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgYXZhaWxhYmxlIHRoYW5rcyB0byB0aGUgd29yayBvZiBtYW55IHBlb3BsZS4gUGxlYXNlIHNlZSB0aGUKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLmNvbS9zb3VyY2UvQVVUSE9SUyI+QVVUSE9SUzwvdWxpbms+CiAgICAgICAgICBmaWxlIGluIHRoZSBkaXN0cmlidXRpb24gZm9yIHRoZSBjb21wbGV0ZSBsaXN0LiBTb21lIGNvbXBhbmllcyB0aGF0CiAgICAgICAgICBhcmUgb3IgaGF2ZSBiZWVuIGludm9sdmVkIHdpdGggV2luZSBkZXZlbG9wbWVudCBhcmUgQ29kZVdlYXZlcnMsCiAgICAgICAgICBUcmFuc0dhbWluZywgQ29yZWwsIGFuZCBNYWNhZGFtaWFuLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9ImZvbGtzLXdoby1jb250cmlidXRlZC1tb25leS1vci1lcXVpcG1lbnQiPgogICAgICAgIDxwYXJhPldobyBhcmUgdGhlIGZvbGtzIGFuZCBvcmdhbml6YXRpb25zIHdobyBoYXZlIGNvbnRyaWJ1dGVkIG1vbmV5IG9yIGVxdWlwbWVudCB0byB0aGUgV2luZSBwcm9qZWN0PzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFBlb3BsZSBhbmQgb3JnYW5pemF0aW9ucyB3aG8gaGF2ZSBnaXZlbiBnZW5lcm91cyBjb250cmlidXRpb25zIG9mCiAgICAgICAgICBtb25leSwgZXF1aXBtZW50LCBvciBsaWNlbnNlcywgaW5jbHVkZToKICAgICAgICA8L3BhcmE+CiAgICAgICAgPGl0ZW1pemVkbGlzdCBzcGFjaW5nPSJjb21wYWN0Ij4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+RGF2aWQgTC4gSGFycGVyPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+Qm9iIEhlcHBsZTwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPk1hcmsgQS4gSG9ydG9uPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+S2V2aW4gUC4gTGF3dG9uPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+VGhlIFN5bnRyb3B5IEluc3RpdHV0ZTwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPkphbWVzIFdvdWxmZTwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgVk1XYXJlIEluYy4gKDx1bGluayB1cmw9Imh0dHA6Ly93d3cudm13YXJlLmNvbSI+CiAgICAgICAgICAgICBodHRwOi8vd3d3LnZtd2FyZS5jb208L3VsaW5rPikKICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBDb3JlbCAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy5jb3JlbC5jb20iPgogICAgICAgICAgICAgaHR0cDovL3d3dy5jb3JlbC5jb208L3VsaW5rPikKICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoYXQtdW5kb2N1bWVudGVkLUFQSXMtYXJlLW5vdC11bmRlcnN0b29kIj4KICAgICAgICA8cGFyYT5XaGF0IHVuZG9jdW1lbnRlZCBBUElzIC8gaW50ZXJmYWNlcyBhcmUgbm90IHVuZGVyc3Rvb2Q/IFdvdWxkCiAgICAgICAgICAgICAgc2VlaW5nIE1pY3Jvc29mdCBzb3VyY2UgaGVscD8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGUgYmVzdCB3b3VsZCBiZSBpZiB0aGUgV2luZG93cyBBUEkgd2FzIGZ1bGx5IGRvY3VtZW50ZWQsIHNvIFdpbmUKICAgICAgICAgIGNvdWxkIGJlIGEgcGVyZmVjdCAiY2xlYW4tcm9vbSIgaW1wbGVtZW50YXRpb24uIFNlZWluZyB0aGUgc291cmNlCiAgICAgICAgICBjb2RlIG1pZ2h0IG1ha2UgaXQgaGFyZGVyIHRvIHByb3ZlIHRoYXQgbm8gY29weXJpZ2h0IHZpb2xhdGlvbnMgaGF2ZQogICAgICAgICAgdGFrZW4gcGxhY2UuIFRoYXQgc2FpZCwgdGhlIGRvY3VtZW50YXRpb24gaXMgb2Z0ZW4gYmFkLCBub25leGlzdGVudCwKICAgICAgICAgIGFuZCBldmVuIG1pc2xlYWRpbmcgd2hlcmUgaXQgZXhpc3RzLCBzbyBhIGZhaXIgYW1vdW50IG9mIHJldmVyc2UKICAgICAgICAgIGVuZ2luZWVyaW5nIGhhcyBiZWVuIG5lY2Vzc2FyeSwgcGFydGljdWxhcmx5IGluIHRoZSBzaGVsbCAoRXhwbG9yZXIpCiAgICAgICAgICBpbnRlcmZhY2UuIFRoZSBiaWdnZXN0IHByb2JsZW0gZmFjaW5nIFdpbmUgdGhvdWdoIGlzIHNpbXBseSBsYWNrIG9mCgkgIG1hbnBvd2VyLiBBdCBvbmUgcG9pbnQsIG92ZXIgNTAwMCBwZW9wbGUgd2VyZSB3b3JraW5nIG9uIFdpbmRvd3MgMjAwMC4KCSAgV2hpbGUgV2luZSBkb2Vzbid0IG5lZWQgdG8gcmVwbGljYXRlIGFsbCBvZiBXaW5kb3dzICh3ZSBvbmx5IGNvdmVyIHRoZQoJICBwYXJ0cyBuZWVkZWQgdG8gbWFrZSBXaW5kb3dzIHByb2dyYW1zIHdvcmspLCB0aGF0J3Mgc3RpbGwgbmVhcmx5IDEwIHRpbWVzCgkgIG1vcmUgcGVvcGxlIHdvcmtpbmcgc2ltcGx5IG9uIG9uZSByZWxlYXNlIHRoYW4gaGF2ZSA8ZW1waGFzaXM+ZXZlcjwvZW1waGFzaXM+CgkgIHdvcmtlZCBvbiBXaW5lLCBpbiB0aGUgaGlzdG9yeSBvZiB0aGUgcHJvamVjdC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IklzLVRyYW5zR2FtaW5ncy1sYXN0LXBhdGNoLWluY2x1ZGVkLWluLVdpbmUiPgogICAgICAgIDxwYXJhPklzIFRyYW5zR2FtaW5nJ3MgbGF0ZXN0IHBhdGNoIGluY2x1ZGVkIGluIHRoZSBzdGFuZGFyZCBXaW5lIHJlbGVhc2U/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTm8sIGl0J3Mgbm90LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRyYW5zR2FtaW5nIG1ha2VzIG1vbmV5IHZpYSBhIHN1YnNjcmlwdGlvbiBzZXJ2aWNlIGFuZCB0aGUgbGljZW5zZQogICAgICAgICAgb2YgdGhlaXIgV2luZVggdHJlZSBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgV2luZSBsaWNlbnNlLiBUaHVzCiAgICAgICAgICBXaW5lWCBwYXRjaGVzIGNhbm5vdCBiZSBpbnRlZ3JhdGVkIGludG8gdGhlIFdpbmUgdHJlZSB3aXRob3V0CiAgICAgICAgICBleHByZXNzIHBlcm1pc3Npb24gYnkgVHJhbnNHYW1pbmcuIFRoZXkgaGF2ZSBzdWJtaXR0ZWQgc29tZQogICAgICAgICAgb2YgdGhlaXIgd29yayBmb3IgaW50ZWdyYXRpb24gaW50byBXaW5lLCBtb3N0IG5vdGFibHkgRGlyZWN0RHJhdwogICAgICAgICAgYW5kIHNvbWUgRGlyZWN0U291bmQgd29yaywgYW5kIHN1Y2ggd29yayBoYXMgYmVlbiBpbnRlZ3JhdGVkIGludG8KICAgICAgICAgIHRoZSBXaW5lIHRyZWUuIEhvd2V2ZXIgaXQgc2VlbXMgdW5saWtlbHkgdGhleSB3aWxsIHN1Ym1pdCB0aGVpcgogICAgICAgICAgRGlyZWN0M0Qgd29yay4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaWxsLXRoZXJlLWJlLWEtV2luZG93cy12ZXJzaW9uLW9mLVdpbmUiPgogICAgICAgIDxwYXJhPldpbGwgdGhlcmUgYmUgYSBXaW5kb3dzIHZlcnNpb24gb2YgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBTb21lIHBlb3BsZSBhcmUgd29ya2luZyBvbiBnZXR0aW5nIFdpbmUgY29kZSB0byBjb21waWxlIG9uIFdpbmRvd3MKICAgICAgICAgIHVzaW5nIG9uZSBvZiB0aGUgZm9sbG93aW5nIHByb2plY3RzIGFzIGEgYmFzaXM6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxpdGVtaXplZGxpc3Qgc3BhY2luZz0iY29tcGFjdCI+CiAgICAgICAgICA8bGlzdGl0ZW0+IAogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBDeWd3aW4KICAgICAgICAgICAgICAoPHVsaW5rIHVybD0iaHR0cDovd3d3LmN5Z3dpbi5jb20vIj5odHRwOi8vd3d3LmN5Z3dpbi5jb208Lz4pCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIE1pbkdXCiAgICAgICAgICAgICAgKDx1bGluayB1cmw9Imh0dHA6L3d3dy5taW5ndy5vcmcvIj5odHRwOi8vd3d3Lm1pbmd3Lm9yZzwvPikKICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgUmVhY3RPUwogICAgICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LnJlYWN0b3MuY29tLyI+aHR0cDovL3d3dy5yZWFjdG9zLmNvbTwvPikKICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZXJlJ3Mgc29tZSBwcm9ncmVzcywgc28gYSBXaW5lIHZlcnNpb24gdGhhdCdzIHVzYWJsZSBvbiBXaW5kb3dzCiAgICAgICAgICBtaWdodCBiZSBhdmFpbGFibGUgYXQgc29tZSB0aW1lLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFBhcnQgb2YgdGhlIHJhdGlvbmFsZSBmb3IgdGhlc2UgcHJvamVjdHMgaXMgdG8gZmluZCBvdXQgYXJlYXMgd2hlcmUKICAgICAgICAgIFdpbmUgcG9ydGFiaWxpdHkgaXMgbGFja2luZy4gVGhpcyBpcyBlc3BlY2lhbGx5IHRydWUgb2YgdGhlCiAgICAgICAgICBSZWFjdE9TIHByb2plY3Qgd2hpY2ggaXMgYSByZWltcGxlbWVudGF0aW9uIG9mIHRoZSBXaW5kb3dzIGtlcm5lbAogICAgICAgICAgYW5kIHNob3VsZCB0aHVzIGJlIGFibGUgdG8gcmV1c2UgbW9zdCBvZiBXaW5lIGRsbHMuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQW5vdGhlciByZWFzb24gZm9yIHB1cnN1aW5nIHRoZXNlIHByb2plY3RzIGlzIHRvIGJlIGFibGUgdG8KICAgICAgICAgIHJlcGxhY2UgYSBzaW5nbGUgV2luZG93cyBkbGwgd2l0aCBpdHMgV2luZSBjb3VudGVycGFydC4gQmVzaWRlcwogICAgICAgICAgYmVpbmcgYSBnb29kIHRlc3QgZm9yIHRoZSBXaW5lIGRsbCwgdGhpcyBsZXRzIHVzIGRldGVjdCBjYXNlcyB3aGVyZQogICAgICAgICAgd2UgbWFkZSBpbmNvcnJlY3QgYXNzdW1wdGlvbnMgYWJvdXQgaG93IHRoZSBkbGxzIGludGVyYWN0LgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICA8L3FhbmRhZGl2PgogICAgPHFhbmRhZGl2IGlkPSJXaGF0LWRvLUktbmVlZC1pbi1vcmRlci10by11c2UtV2luZSI+CiAgICAgIDx0aXRsZT5XaGF0IGRvIEkgbmVlZCBpbiBvcmRlciB0byB1c2UgV2luZT88L3RpdGxlPgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJVbmRlci13aGF0LXBsYXRmb3Jtcy13aWxsLVdpbmUtcnVuIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFVuZGVyIHdoYXQgaGFyZHdhcmUgcGxhdGZvcm0ocykgYW5kIG9wZXJhdGluZyBzeXN0ZW0ocykgd2lsbAogICAgICAgICAgV2luZShMaWIpIHJ1bj8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIGlzIGJlaW5nIGRldmVsb3BlZCBzcGVjaWZpY2FsbHkgdG8gcnVuIG9uIHRoZSA8ZW1waGFzaXM+SW50ZWwgeDg2PC9lbXBoYXNpcz4gY2xhc3Mgb2YgQ1BVcyB1bmRlciBjZXJ0YWluIFVOSVhlcyB0aGF0IHJ1biBvbiB0aGUgeDg2IHBsYXRmb3JtLgoJICBXaW5lbGliIGhvd2V2ZXIgaXMgY2FwYWJsZSBvZiBwb3J0aW5nIFdpbmRvd3MgcHJvZ3JhbSA8ZW1waGFzaXM+c291cmNlIGNvZGU8L2VtcGhhc2lzPiB0byBvdGhlciBwbGF0Zm9ybXMgYWxzbywgbm90IG9ubHkgeDg2LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRodXMgcnVubmluZyBXaW5kb3dzIHByb2dyYW1zIHZpYSBXaW5lIG9uIG90aGVyIHBsYXRmb3JtcyAoZS5nLiBNYWNPUyBYKSBpcyA8ZW1waGFzaXM+bm90PC9lbXBoYXNpcz4gcG9zc2libGU7IHRoZSBvbmx5IHdheSB0byBydW4gV2luZG93cyBjb2RlCgkgIG9uIE1hY09TIFggd291bGQgYmUgdG8gdGFrZSBXaW5kb3dzIHByb2dyYW0gc291cmNlIGNvZGUgYW5kIHJlY29tcGlsZSBpdCBmb3IgZS5nLiBNYWNPUyBYIHVzaW5nIFdpbmVsaWIuCgk8L3BhcmE+Cgk8cGFyYT4KCSAgVGhlIGZvbGxvd2luZyB3aWxsIGxpc3QgdGhlIHg4NiBvcGVyYXRpbmcgc3lzdGVtcyBzdXBwb3J0ZWQgYnkKCSAgV2luZTsgV2luZWxpYiBzdXBwb3J0IGZvciBvdGhlciBwbGF0Zm9ybXMga2VlcHMgZXZvbHZpbmcsCgkgIHNvIGl0J3Mgbm90IHNwZWNpZmljYWxseSBsaXN0ZWQgaGVyZS4KCTwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE5ldEJTRCwgT3BlbkJTRCwgVW5peHdhcmUsIGFuZCBTQ08gT3BlblNlcnZlciA1IHdvcmtlZCBhdCBvbmUgdGltZSwKICAgICAgICAgIGJ1dCBXaW5lIG5vdyByZXF1aXJlcyBrZXJuZWwtbGV2ZWwgdGhyZWFkcyB3aGljaCBhcmUgbm90IGN1cnJlbnRseSAKICAgICAgICAgIGF2YWlsYWJsZSAob3IgdW5kZXJzdG9vZCBieSB0aGUgV2luZSB0ZWFtKSBvbiB0aG9zZSBwbGF0Zm9ybXMuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIFdpbmUgZGV2ZWxvcG1lbnQgdGVhbSBob3BlcyB0byBhdHRyYWN0IHRoZSBpbnRlcmVzdCBvZiBvdGhlcgogICAgICAgICAgY29tbWVyY2lhbCBVTklYIGFuZCBVTklYIGNsb25lIHZlbmRvcnMgYXMgd2VsbC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBCZU9TOiBwb3J0aW5nIGVmZm9ydHMgdXNlZCB0byBiZSBwcmV0dHkgc3Ryb25nLCBidXQgQmVPUyBoYXMgc2V2ZXJlCiAgICAgICAgICBsaW1pdGF0aW9ucyBpbiBVbml4IGNhbGwgc3VwcG9ydCwgc28gYSBwb3J0IHdpbGwgcHJvYmFibHkgbmV2ZXIKICAgICAgICAgIGhhcHBlbi4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBGcmVlQlNEOiBTaG91bGQgd29yaywgd2l0aCBsaW1pdGF0aW9ucyBpbiBzcGVjaWZpYyBhcmVhcyAobWFpbmx5IAogICAgICAgICAgbWlzc2luZyBkZXZpY2UvaGFyZHdhcmUgc3VwcG9ydCkuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTGludXgveDg2OiBXb3JrcywgYW5kIGFzIHRoZSBtb3N0IHBvcHVsYXIgcGxhdGZvcm0gZm9yIGJvdGgKICAgICAgICAgIGRldmVsb3BlcnMgYW5kIHVzZXJzLCBpdCBpcyB0aGUgYmVzdCBzdXBwb3J0ZWQgcGxhdGZvcm0gb2YgYWxsLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoYXQtbWluaW11bS1DUFUtbXVzdC1JLWhhdmUiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2hhdCBtaW5pbXVtIENQVSBtdXN0IEkgaGF2ZSBpbiBteSBjb21wdXRlciB0byBiZSBhYmxlIHRvIHJ1biBXaW5lIAogICAgICAgICAgYW5kIE1TIFdpbmRvd3MgYXBwbGljYXRpb25zIHNtb290aGx5PwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdlIG5lZWQgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIFdpbmUgYW5kIFdpbmVsaWIgaGVyZS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIHdvbid0IHJ1biBvbiBhbnkgeDg2IENQVSBsZXNzIHRoYW4gYW4gODAzODYgZHVlIHRvIGFkZHJlc3MKICAgICAgICAgIG1hbmFnZW1lbnQgbGltaXRhdGlvbnMuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSXQgaXMga25vd24gdG8gYWxzbyB3b3JrIGluIHRoZSA4MDQ4NiBhbmQgdXB3YXJkcyBjb21wYXRpYmxlIENQVXMuCiAgICAgICAgICBUaGUgYmFzaWMgdGVzdCBpcywgaWYgeW91IGNhbiBydW4gWDExIG5vdywgeW91IHNob3VsZCBiZSBhYmxlIHRvIHJ1bgogICAgICAgICAgV2luZSBhbmQgTVMgV2luZG93cyBhcHBsaWNhdGlvbnMgdW5kZXIgaXQuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQXMgYWx3YXlzLCB0aGUgZmFzdGVyIHlvdXIgQ1BVLCB0aGUgYmV0dGVyLiBIYXZpbmcgYSBtYXRoIGNvcHJvY2Vzc29yCiAgICAgICAgICBpcyB1bmltcG9ydGFudC4gSG93ZXZlciwgaGF2aW5nIGEgZ3JhcGhpY3MgYWNjZWxlcmF0ZWQgdmlkZW8gY2FyZAogICAgICAgICAgc3VwcG9ydGVkIGJ5IFggd2lsbCBoZWxwIGdyZWF0bHkuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgRGVwZW5kaW5nIG9uIHlvdXIgYXBwbGljYXRpb24geW91IG1heSBmaW5kIHRoYXQgZmFzdGVyIHNwZWVkcyBhcmUKICAgICAgICAgIHJlcXVpcmVkIGZvciBzZW5zaWJsZSB1c2UuIFdlIGNhbid0IGdpdmUgc3BlY2lmaWMgYWR2aWNlIG9uIHRoYXQgZHVlCiAgICAgICAgICB0byB0aGUgdmFzdCByYW5nZSBvZiBhcHBsaWNhdGlvbnMgb3V0IHRoZXJlLiBIb3dldmVyIHRoZSBydWxlIG9mCiAgICAgICAgICB0aHVtYiBpcyB0aGF0IGlmIHlvdXIgYXBwbGljYXRpb24gcnVucyBmaW5lIG9uIFdpbmRvd3MsIGl0IHNob3VsZAogICAgICAgICAgcnVuIGZpbmUgb24gdGhlIHNhbWUgcGxhdGZvcm0gaW4gV2luZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctbXVjaC1kaXNrLXNwYWNlLXdpbGwtV2luZS10YWtlIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgSG93IG11Y2ggZGlzayBzcGFjZSB3aWxsIHRoZSBXaW5lIHNvdXJjZSBjb2RlIGFuZCBiaW5hcmllcyB0YWtlIG9uIG15CiAgICAgICAgIGhhcmQgZHJpdmU/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWW91IG5lZWQgYXBwcm94aW1hdGVseSAyNTAgbWVnYWJ5dGVzIG9mIGZyZWUgaGFyZCBkcml2ZSBzcGFjZSB0bwogICAgICAgICAgc3RvcmUgYW5kIGNvbXBpbGUgdGhlIHNvdXJjZSBjb2RlLiBXaW5lIGFsc28gbmVlZHMgYWJvdXQgMTggbWVncyBpbgogICAgICAgICAgeW91ciAvdG1wIGRpcmVjdG9yeS4gQW5kIGFib3V0IDUwIE1CIGFyZSBuZWVkZWQgdG8gZG8gYSBtYWtlIGluc3RhbGwuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQmluYXJ5IHBhY2thZ2VzLCBlc3BlY2lhbGx5IHRob3NlIG5vdCBjb250YWluaW5nIGRlYnVnIGluZm9ybWF0aW9uLAogICAgICAgICAgaGF2ZSBtdWNoIGxvd2VyIGRpc2sgc3BhY2UgcmVxdWlyZW1lbnRzLCB1c3VhbGx5IGluIHRoZSAyME1CIHJhbmdlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoYXQtb3RoZXItc29mdHdhcmUtZG8tSS1uZWVkLXRvLWNvbXBpbGUiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2hhdCBvdGhlciBzb2Z0d2FyZSBkbyBJIG5lZWQgdG8gaW5zdGFsbCwgY29tcGlsZSBhbmQgcnVuCiAgICAgICAgICBXaW5lPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE1hbnkgZGV2ZWxvcG1lbnQgdG9vbHMgYXJlIG5lZWRlZCBpbiBvcmRlciB0byBjb21waWxlIFdpbmUuCiAgICAgICAgICBBIGxpc3Qgb2YgcmVxdWlyZWQgcGFja2FnZXMgZm9yIHNldmVyYWwgZGlzdHJpYnV0aW9ucyBpcyBpbmNsdWRlZCBpbgogICAgICAgICAgdGhlIFJFQURNRSAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEuY29tL3NvdXJjZS9SRUFETUUiPgogICAgICAgICAgaHR0cDovL3d3dy53aW5laHEuY29tL3NvdXJjZS9SRUFETUU8L3VsaW5rPikuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVG8gcnVuIFdpbmUsIHlvdSB3aWxsIG5lZWQgdGhlIGZvbGxvd2luZzoKICAgICAgICA8L3BhcmE+CgogICAgICAgIDxpdGVtaXplZGxpc3Qgc3BhY2luZz0iY29tcGFjdCI+CiAgICAgICAgICA8bGlzdGl0ZW0+IAogICAgICAgICAgICA8cGFyYT5UaGUgY29tcGlsZWQgV2luZSBiaW5hcnk8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT5BIHByb3Blcmx5IGNvbmZpZ3VyZWQgd2luZS5jb25mIGZpbGUgKG9yIH4vLndpbmVyYyBmaWxlKTwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPkFuIGluc3RhbGxlZCBhbmQgd29ya2luZyBYIFdpbmRvdyBzeXN0ZW08L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT5Tb21lIFdpbmRvd3MgcHJvZ3JhbXMgdG8gdGVzdDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctbXVjaC1SQU0tZG8tSS1uZWVkIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEhvdyBtdWNoIFJBTSBkbyBJIG5lZWQgdG8gaGF2ZSBvbiBteSBVTklYIHN5c3RlbSB0byBiZSBhYmxlIHRvIHJ1biAKICAgICAgICAgIFdpbmUgYW5kIE1TIFdpbmRvd3MgYXBwbGljYXRpb25zIHNtb290aGx5PwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHlvdSBjYW4gcnVuIFggc21vb3RobHkgb24geW91ciBVTklYIHN5c3RlbSBub3csIHlvdSBzaG91bGQgYmUgCiAgICAgICAgICBhYmxlIHRvIHJ1biBXaW5lIGFuZCBNUyBXaW5kb3dzIGFwcGxpY2F0aW9ucyBqdXN0IGZpbmUgdG9vLCBkZXBlbmRpbmcKICAgICAgICAgIG9uIGhvdyBtZW1vcnkgaHVuZ3J5IHRoZSBhcHBsaWNhdGlvbiBpcy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBIFdpbmUgd29ya3N0YXRpb24gd2lsbCB3b3JrIHdpdGggMTYgbWVnYWJ5dGVzIG9mIFJBTSBhbmQgYSAxNiAKICAgICAgICAgIG1lZ2FieXRlIHN3YXAgcGFydGl0aW9uIGFzIGxvbmcgYXMgeW91IGhhdmUgYSByZWFzb25hYmxlIGdyYXBoaWNzIAogICAgICAgICAgY2FyZC4gTW9zdCBhcHBsaWNhdGlvbnMgd2lsbCBydW4gcmVhc29uYWJseSB3aXRoIDY0LzY0IE1iLCAKICAgICAgICAgIGludGVyYWN0aXZlIGdhbWVzIGFyZSBsaWtlbHkgdG8gbmVlZCBtb3JlLiBZb3UgY2FuIHJ1biBXaW5lIHdpdGggOC84LAogICAgICAgICAgYnV0IGl0IGlzIGdvaW5nIHRvIGJlIHVudXNhYmx5IHNsb3cgYW5kIHZlcnkgY29uc3RyYWluaW5nIG9uIHRoZSAKICAgICAgICAgIGFwcGxpY2F0aW9ucyB5b3UgY2FuIHJ1bi4gSWYgeW91IHdpc2ggdG8gYmUgcGFydCBvZiB0aGUgZGV2ZWxvcG1lbnQKICAgICAgICAgIHRlYW0gYW5kIHByb2dyYW0gV2luZSBpdHNlbGYsIGJlIGF3YXJlIHRoYXQgdGhlIGRlYnVnZ2VyIGlzIHJhdGhlciAKICAgICAgICAgIG1lbW9yeSBpbnRlbnNpdmUuIFNvbWUgaGF2ZSBzdWdnZXN0ZWQgdGhhdCA2NCBtZWdhYnl0ZXMgaXMgdGhlCiAgICAgICAgICBtaW5pbXVtIFJBTSBuZWVkZWQgZm9yIFdpbmUgZGV2ZWxvcG1lbnQsIGFsdGhvdWdoIHNvbWUgYXJlIGFibGUgdG8gCiAgICAgICAgICB3b3JrIChhbGJlaXQgc2xvd2x5KSB3aXRoIDI0IG1lZ2FieXRlcyBvZiBwaHlzaWNhbCBSQU0gYW5kIGxvdHMgb2YKICAgICAgICAgIHN3YXAgc3BhY2UuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWxvbmctZG9lcy1XaW5lLXRha2UtdG8tYnVpbGQiPgogICAgICAgIDxwYXJhPkhvdyBsb25nIGRvZXMgV2luZSB0YWtlIHRvIGJ1aWxkPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBpcyBnZXR0aW5nIHRvIGJlIHF1aXRlIGxhcmdlLCBhbmQgYnVpbGRpbmcgZnJvbSBzY3JhdGNoIHRha2VzIGEKICAgICAgICAgIGxvdCBvZiBwcm9jZXNzaW5nLiBBcyBvZiBTZXB0ZW1iZXIgMjAwMiwgY29tcGlsZSB0aW1lcyB3ZXJlIGFyb3VuZCAyMAogICAgICAgICAgbWludXRlcyBvbiBhbiBBdGhsb24gMTIwMCB3aXRoIDY0MCBNYiBhbmQgNDUtNTAgbWludXRlcyBvbiBhIEN5cml4IAogICAgICAgICAgMzAwIHdpdGggNjQgTWIuIElmIHlvdSBoYXZlIGEgQ1ZTIGNvcHksIHlvdSBtYXkgbm90IG5lZWQgdG8gcmVidWlsZAogICAgICAgICAgdGhlIHdob2xlIHRoaW5nIGV2ZXJ5IHRpbWUgeW91IHVwZGF0ZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkktaGF2ZS1hLURyaXZlc3BhY2VkLXBhcnRpdGlvbiI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJIGhhdmUgYSBEcml2ZXNwYWNlZCwgRG91Ymxlc3BhY2VkIG9yIFN0YWNrZXJlZCBET1MgcGFydGl0aW9uLiBDYW4gCiAgICAgICAgICBXaW5lIHJ1biBNUyBXaW5kb3dzIGJpbmFyaWVzIGxvY2F0ZWQgaW4gc3VjaCBhIHBhcnRpdGlvbj8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZZXMsIGJ1dCBvbmx5IGlmIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHN1cHBvcnRzIG1vdW50aW5nIHRob3NlIHR5cGVzCiAgICAgICAgICBvZiBkcml2ZXMuIFRoZXJlIGlzIGEgTGludXggZmlsZSBzeXN0ZW0gZHJpdmVyIGNhbGxlZCBkbXNkb3MgdGhhdAogICAgICAgICAgd2lsbCBhbGxvdyByZWFkL3dyaXRlIGFjY2VzcyB0byBEb3VibGVzcGFjZWQgYW5kIERyaXZlc3BhY2UgMS4wCiAgICAgICAgICBkcml2ZXMuIE1vcmUgc3BlY2lmaWNhbGx5LCBpdCBzdXBwb3J0cyBtb3VudGluZyBET1MgNi4wIGFuZCA2LjIgCiAgICAgICAgICBEb3VibGVzcGFjZWQsIERPUyA2LjIyIERyaXZlc3BhY2VkLCBhbmQgV2luZG93cyA5NSBEb3VibGVzcGFjZWQgCiAgICAgICAgICBjb21wcmVzc2VkIHBhcnRpdGlvbnMgKHJlYWQgYW5kIHdyaXRlIGFjY2VzcyB3b3JrcyBmaW5lLCBidXQgd3JpdGUgCiAgICAgICAgICBhY2Nlc3MgaXMgc2xvdykuIEl0IGNhbiBiZSBmb3VuZCBhdCAKICAgICAgICAgIDx1bGluayB1cmw9ImZ0cDovL21ldGFsYWIudW5jLmVkdS9wdWIvTGludXgvc3lzdGVtL2ZpbGVzeXN0ZW1zL2Rvc2ZzLyI+CiAgICAgICAgICBmdHA6Ly9tZXRhbGFiLnVuYy5lZHUvcHViL0xpbnV4L3N5c3RlbS9maWxlIHN5c3RlbXMvZG9zZnMvPC91bGluaz4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJEby1JLW5lZWQtdG8taGF2ZS1hLURPUy1wYXJ0aXRpb24iPgogICAgICAgIDxwYXJhPkRvIEkgbmVlZCB0byBoYXZlIGEgRE9TIHBhcnRpdGlvbiBvbiBteSBzeXN0ZW0gdG8gdXNlIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWW91IGRvIG5vdCBuZWVkIGEgbGljZW5zZWQgYW5kIGluc3RhbGxlZCBjb3B5IG9mIERPUyBvciBNUyBXaW5kb3dzIHRvCiAgICAgICAgICBpbnN0YWxsLCBjb25maWd1cmUgYW5kIHJ1biBXaW5lLiBIb3dldmVyLCBXaW5lIGhhcyB0byBiZSBhYmxlIHRvIAogICAgICAgICAgJ3NlZScgYW4gTVMgV2luZG93cyBiaW5hcnkgKGkuZS4gYXBwbGljYXRpb24pIGlmIGl0IGlzIHRvIHJ1biBpdC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iRG9lcy1NUy1XaW5kb3dzLW5lZWQtdG8tYmUtaW5zdGFsbGVkIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIERvZXMgTVMgV2luZG93cyBuZWVkIHRvIGJlIGxvYWRlZCBpbnRvIHRoYXQgcGFydGl0aW9uIGluIG9yZGVyIHRvCiAgICAgICAgICBydW4gTVMgV2luZG93cyBwcm9ncmFtcyB1bmRlciBXaW5lPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE1hbnkgZm9sa3MgaGF2ZSBzdWNjZXNzZnVsbHkgaW5zdGFsbGVkIGFuZCBydW4gcHJvZ3JhbXMKICAgICAgICAgIGluIHRoZWlyIFVOSVggZmlsZXN5c3RlbSB3aXRob3V0IGhhdmluZyBhIERPUyBwYXJ0aXRpb24gb3IgTVMgCiAgICAgICAgICBXaW5kb3dzLiBIb3dldmVyLCBpbiBtYW55IGNhc2VzIHlvdSBuZWVkIGEgZGlyZWN0b3J5IGFuZCBmaWxlIAogICAgICAgICAgaW5mcmFzdHJ1Y3R1cmUgdGhhdCBpcyBzaW1pbGFyIHRvIGFuIGV4aXN0aW5nIFdpbmRvd3MgaW5zdGFsbGF0aW9uLgogICAgICAgICAgU29tZSBhcHBsaWNhdGlvbnMnIGluc3RhbGxhdGlvbiBwcm9ncmFtcyB3YW50IHRvIGRpc3RyaWJ1dGUgc29tZSBvZgogICAgICAgICAgdGhlIHBhY2thZ2UncyBmaWxlcyBpbnRvIHRoZSAvd2luZG93cyBhbmQgL3dpbmRvd3Mvc3lzdGVtIAogICAgICAgICAgZGlyZWN0b3JpZXMgaW4gb3JkZXIgdG8gcnVuLCBhbmQgdW5sZXNzIHRoZXNlIGV4aXN0IG9uIHlvdXIgVU5JWCAKICAgICAgICAgIGZpbGUgc3lzdGVtLCB0aG9zZSBwcm9ncmFtcyB3aWxsIG5vdCBpbnN0YWxsIGNvcnJlY3RseSBhbmQgcHJvYmFibHkKICAgICAgICAgIHdpbGwgbm90IHJ1biB3ZWxsLCBpZiBhdCBhbGwuIE1vc3QgcGFja2FnZXMgd2lsbCBzZXQgdGhhdCB1cCBmb3IgeW91CgkgIGFzIHBhcnQgb2YgdGhlIGluc3RhbGwgcHJvY2Vzcy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UgaGF2ZSBhIERPUyBwYXJ0aXRpb24gd2l0aCBNUyBXaW5kb3dzIGluc3RhbGxlZCBpbiBpdCwgbWFrZQogICAgICAgICAgc3VyZSB0aGF0IHlvdXIgVU5JWCBzeXN0ZW0gY2FuICdzZWUnIHRoaXMgcGFydGl0aW9uIChjaGVjayB5b3VyIAogICAgICAgICAgL2V0Yy9mc3RhYiBmaWxlIG9yIG1vdW50IHRoZSBwYXJ0aXRpb24gbWFudWFsbHkpIHNvIHRoYXQgV2luZSBjYW4KICAgICAgICAgIHJ1biB0aGUgTVMgV2luZG93cyBiaW5hcmllcyBsb2NhdGVkIGluIHRoZSBET1MgcGFydGl0aW9uLiBUbyBydW4KICAgICAgICAgIHdpdGhvdXQgYSBET1MgcGFydGl0aW9uLCB5b3UgbmVlZCB0byBzZXQgYSBVTklYIHBhdGggdG8gYmUgeW91ciAKICAgICAgICAgIGRyaXZlIEMsIGFuZCBtYWtlIHN1cmUgdGhhdCB0aGUgL3dpbmRvd3MgYW5kIC93aW5kb3dzL3N5c3RlbSAKICAgICAgICAgIGRpcmVjdG9yaWVzIHBvaW50IHRvIHNvbWUgcGxhY2UgdGhhdCBhY3R1YWxseSBleGlzdC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBIZXJlJ3MgYW4gZXhhbXBsZSwgY29waWVkIGZyb20gYSBtYWNoaW5lIHdoaWNoIGhhcyBubyBET1MgcGFydGl0aW9uCiAgICAgICAgICBidXQgc3VjY2Vzc2Z1bGx5IHJ1bnMgV2luZToKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KICAgIFtEcml2ZSBDXSAgICAgIAogICAgICAgICAgUGF0aD0vdmFyL2xpYi93aW5lCiAgICAgICAgICBUeXBlPWhkCiAgICAgICAgICBMYWJlbD1NUy1ET1MKICAgICAgICAgIEZpbGVzeXN0ZW09d2luOTUKICAgIFt3aW5lXQogICAgICAgICAgV2luZG93cz1jOlx3aW5kb3dzCiAgICAgICAgICBTeXN0ZW09Yzpcd2luZG93c1xzeXN0ZW0KICAgICAgICAgIFRlbXA9ZTpcCiAgICAgICAgICBQYXRoPWM6XHdpbmRvd3M7Yzpcd2luZG93c1xzeXN0ZW07YzoKICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgSW4gPGZpbGVuYW1lPi92YXIvbGliL3dpbmUvd2luZG93czwvZmlsZW5hbWU+LCB5b3Ugd2lsbCBuZWVkIHRvCiAgICAgICAgIGluc3RhbGwgYSA8ZmlsZW5hbWU+d2luLmluaTwvZmlsZW5hbWU+IGNvbmZpZyBmaWxlIHRoYXQgeW91IG1pZ2h0CiAgICAgICAgIGZpbmQgb24gYSB0eXBpY2FsIE1TIFdpbmRvd3MgMy4xIG1hY2hpbmUuIFRoZSBkaXJlY3RvcnkKICAgICAgICAgPGZpbGVuYW1lPi92YXIvbGliL3dpbmUvd2luZG93cy9zeXN0ZW08L2ZpbGVuYW1lPiBzaG91bGQgZXhpc3QsIGJ1dAogICAgICAgICBkb2Vzbid0IG5lZWQgdG8gY29udGFpbiBhbnl0aGluZy4gSG93ZXZlciwgdG8gdXNlIE1TIERMTHMsIHlvdSBjYW4KICAgICAgICAgY29weSB0aGVtIGludG8gdGhhdCBkaXJlY3RvcnkuIE5vdGUgdGhhdCB0aGlzIGlzIGEgY29udHJhdmVudGlvbiBvZgogICAgICAgICB0aGUgV2luZG93cyBsaWNlbmNlIHVubGVzcyBXaW5kb3dzIGlzIHByb3Blcmx5IGluc3RhbGxlZCBvbiB0aGUKICAgICAgICAgbWFjaGluZS4gSWYgeW91IGhhdmUgRE9TL01TIFdpbmRvd3MgaW5zdGFsbGVkIG9uIHlvdXIgc3lzdGVtLCB5b3UgY2FuCiAgICAgICAgIG1vdW50IHRoYXQgcGFydGl0aW9uIGF0IGJvb3R1cCBieSBtb2RpZnlpbmcgdGhlIGZpbGUgCiAgICAgICAgIDxmaWxlbmFtZT4vZXRjL2ZzdGFiPC9maWxlbmFtZT4gaW4geW91ciBVTklYIHBhcnRpdGlvbiAoYXNzdW1pbmcgdGhhdAogICAgICAgICB0aGUgVU5JWCBrZXJuZWwgc3VwcG9ydHMgdGhlIERPUy9NUyBXaW5kb3dzIGZpbGVzeXN0ZW0gdHlwZSkuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgeW91IGVkaXQgdGhpcyBmaWxlIGJ5IGhhbmQsIGl0IHNob3VsZCBjb250YWluIHNvbWV0aGluZyBzaW1pbGFyCiAgICAgICAgICB0byB0aGUgZm9sbG93aW5nOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgovZGV2L2hkYTEgL2Rvc2MgbXNkb3MgdWlkPTAsZ2lkPTEwMCx1bWFzaz0wMDcgMCAwCiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGlzIHdpbGwgYWxsb3cgeW91IHRvIHJlYWQgYW5kIHdyaXRlIHRvIHRoZSBET1MgcGFydGl0aW9uIHdpdGhvdXQKICAgICAgICAgIGJlaW5nIHJvb3QuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IklmLVdpbmUtY29tcGxldGVseS1yZXBsYWNlcy1NUy1XaW5kb3dzIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIFdpbmUgY29tcGxldGVseSByZXBsYWNlcyBNUyBXaW5kb3dzLCB3aWxsIGl0IGR1cGxpY2F0ZSBhbGwgb2YgdGhlCiAgICAgICAgICBmdW5jdGlvbnMgb2YgTVMgV2luZG93cz8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lJ3MgZ29hbCBpcyB0byBtYWtlIGl0IHBvc3NpYmxlIHRvIHJ1biBXaW5kb3dzIGFwcGxpY2F0aW9ucyBvbgogICAgICAgICAgVW5peC4gVG8gdGhpcyBlbmQgaXQgd2lsbCBwcm92aWRlIHJlcGxhY2VtZW50cyBmb3IganVzdCB0aG9zZQogICAgICAgICAgRExMcyBhbmQgQVBJcyB0aGF0IGFyZSBuZWVkZWQgYnkgdGhlc2UgV2luZG93cyBhcHBsaWNhdGlvbnMuCiAgICAgICAgICBUaGlzIG1lYW5zIHRoYXQgV2luZSB3aWxsIG5vdCBwcm92aWRlIHJlcGxhY2VtZW50cyBmb3IgRExMcyB0aGF0CiAgICAgICAgICBhcmUgbm90IHNoaXBwZWQgd2l0aCBXaW5kb3dzIG9yIGFyZSBhbHdheXMgc2hpcHBlZCB3aXRoIFdpbmRvd3MKICAgICAgICAgIGFwcGxpY2F0aW9uIChlLmcuIHRoZSBWaXN1YWwgQmFzaWMgcnVudGltZSkuIFRoaXMgYWxzbwogICAgICAgICAgbWVhbnMgdGhhdCBpbXBsZW1lbnRpbmcgYW4gQVBJIHRoYXQgbm8gYXBwbGljYXRpb24gZXZlciB1c2VzIGlzIG5vdAogICAgICAgICAgYSBwcmlvcml0eS4gU2ltaWxhcmx5LCB1bnRpbCB0aGVyZSBhcmUgYXBwbGljYXRpb25zIG91dCB0aGVyZSB0aGF0CiAgICAgICAgICB1c2UgdGhlIFdpbjY0IEFQSSwgaXQgd2lsbCBub3QgYmUgYSBwcmlvcml0eS4gVGhhdCBiZWluZyBzYWlkLAogICAgICAgICAgd2Ugd2lsbCBjZXJ0YWlubHkgdHJ5IHRvIGtlZXAgb3VyIG9wdGlvbnMgb3BlbiBhbmQgdG8gaW1wcm92ZSBvdXIgQVBJCiAgICAgICAgICBjb3ZlcmFnZSBhcyB3ZSBjYW4uCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQWxzbyBXaW5lIGlzIG5vdCBhbiBvcGVyYXRpbmcgc3lzdGVtLCBzbyB0aGF0IHdyaXRpbmcgZGV2aWNlCiAgICAgICAgICBkcml2ZXJzIGlzIG5vdCBwYXJ0IG9mIFdpbmUncyBnb2Fscy4gSG93ZXZlciBpZiB5b3UgYXJlIGludGVyZXN0ZWQKICAgICAgICAgIGluIGRldmljZSBkcml2ZXJzLCB0aGUgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5rZXJuZWwub3JnLyI+TGludXg8Lz4sCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LmZyZWVic2Qub3JnLyI+RnJlZUJTRDwvPiBhbmQKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cucmVhY3Rvcy5jb20vIj5SZWFjdE9TPC8+IGtlcm5lbCBkZXZlbG9wcGVycwogICAgICAgICAgd291bGQgY2VydGFpbmx5IGFwcHJlY2lhdGUgeW91ciBjb250cmlidXRpb24uCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgU2ltaWxhcmx5IFdpbmUgZG9lcyBub3QgdHJ5IHRvIGJlIGEgZGVza3RvcCBlbnZpcm9ubWVudCBzbwogICAgICAgICAgcHJvdmlkaW5nIGFwcGxldHMgc3VjaCBhcyBhIGNhbGN1bGF0b3IsIGEgZmlsZSBtYW5hZ2VyIG9yIGV2ZW4KICAgICAgICAgIHdpbmRvdyBtYW5hZ2VyIHRoYXQgbG9vayBsaWtlIFdpbmRvd3MsIGFyZSBsb3cgcHJpb3JpdHkgb3Igd291bGQKICAgICAgICAgIGV2ZW4gYmVzdCBiZSBkb25lIGFzIGEgc2VwYXJhdGUgcHJvamVjdC4gU3VjaCBwcm9qZWN0cyB3b3VsZCBhbHNvCiAgICAgICAgICB0byBhIGxhcmdlIGV4dGFudCBiZSByZWR1bmRhbnQgd2l0aCBvdGhlciBvcGVuLXNvdXJjZSBwcm9qZWN0cy4KICAgICAgICAgIEFnYWluLCB0aGVyZSBhcmUgcHJvamVjdHMgdGhhdCB3b3VsZCBjZXJ0YWlubHkgYXBwcmVjaWF0ZSB5b3VyCiAgICAgICAgICBjb250cmlidXRpb25zIGluIHRoaXMgYXJlYXMsIHN1Y2ggYXMgdGhlCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3Lmdub21lLm9yZy8iPkdub21lPC8+IG9yCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LmtkZS5vcmcvIj5LREU8Lz4gZGVza3RvcCBlbnZpcm9ubWVudHMuIFlvdQogICAgICAgICAgd2lsbCBnZXQgdGhlIGFkZGVkIGJlbmVmaXQgdGhhdCB5b3VyIGNvbnRyaWJ1dGlvbiB3aWxsIHRoZW4gYmUKICAgICAgICAgIHVzYWJsZSBieSBldmVyeW9uZSwgbm90IGp1c3QgYnkgV2luZSB1c2Vycy4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaWxsLUktaW5zdGFsbC1vbi1hbnktVU5JWC1maWxlLXN5c3RlbSI+CiAgICAgICAgPHBhcmE+IAogICAgICAgICAgV2lsbCBJIGJlIGFibGUgdG8gaW5zdGFsbCBNUyBXaW5kb3dzIGFwcGxpY2F0aW9ucyBpbiBhbnkgZmxhdm9yIG9mIGEKICAgICAgICAgIFVOSVggZmlsZSBzeXN0ZW0/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBpcyB3cml0dGVuIHRvIGJlIGZpbGUgc3lzdGVtIGluZGVwZW5kZW50LCBzbyBNUyBXaW5kb3dzIAogICAgICAgICAgYXBwbGljYXRpb25zIHdpbGwgaW5zdGFsbCBhbmQgcnVuIHVuZGVyIHZpcnR1YWxseSBhbnkgZmlsZSBzeXN0ZW0KICAgICAgICAgIHN1cHBvcnRlZCBieSB5b3VyIGJyYW5kIG9mIFVOSVguCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldpbGwtV2luZS1ydW4tb25seS11bmRlci1YIj4KICAgICAgICA8cGFyYT5XaWxsIFdpbmUgcnVuIG9ubHkgdW5kZXIgWCwgb3IgY2FuIGl0IHJ1biBpbiBjaGFyYWN0ZXIgbW9kZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBNb3N0IG9mIFdpbmUncyBkZXZlbG9wbWVudCBlZmZvcnQgaXMgZ2VhcmVkIHRvd2FyZHMgTVMgV2luZG93cycgR1VJLAogICAgICAgICAgYnV0IHNvbWUgbGltaXRlZCBzdXBwb3J0IGZvciBjaGFyYWN0ZXIgbW9kZSBoYXMgYXBwZWFyZWQsIGJ5IHNldHRpbmcKICAgICAgICAgIDxwYXJhbWV0ZXI+R3JhcGhpY3NEcml2ZXI9dHR5ZHJ2PC9wYXJhbWV0ZXI+IGluIHdpbmUuY29uZidzCiAgICAgICAgICA8cGFyYW1ldGVyPlt3aW5lXTwvcGFyYW1ldGVyPiBzZWN0aW9uLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUncyBpbmZyYXN0cnVjdHVyZSBpcyBhbHJlYWR5IHNvbWV3aGF0IHByZXBhcmVkIGZvciBzdXBwb3J0aW5nCiAgICAgICAgICBvdGhlciBncmFwaGljcyBkcml2ZXJzIHRoYW4geDExZHJ2LCBidXQgbm8gcmVhbCAiYWx0ZXJuYXRpdmUiIAogICAgICAgICAgZ3JhcGhpY3MgZHJpdmVyIGhhcyBiZWVuIGRldmVsb3BlZCB5ZXQuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldpbGwtV2luZS1ydW4tdW5kZXItYW55LVgtd2luZG93LW1hbmFnZXIiPgogICAgICAgIDxwYXJhPldpbGwgV2luZSBydW4gdW5kZXIgYW55IFggd2luZG93IG1hbmFnZXI/IERvZXMgaXQgcmVxdWlyZSBhIHdpbmRvdyBtYW5hZ2VyIGF0IGFsbD88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lIGlzIHdpbmRvdyBtYW5hZ2VyIGluZGVwZW5kZW50LCBzbyB0aGUgWCB3aW5kb3cgbWFuYWdlciB5b3UKICAgICAgICAgIGNob29zZSB0byBydW4gaGFzIChhbG1vc3QpIG5vIGJlYXJpbmcgb24geW91ciBhYmlsaXR5IHRvIHJ1biBNUwogICAgICAgICAgV2luZG93cyBwcm9ncmFtcyB1bmRlciBXaW5lLiBXaW5lIHVzZXMgc3RhbmRhcmQgWCBsaWJyYXJpZXMsIHNvIG5vCiAgICAgICAgICBhZGRpdGlvbmFsIG9uZXMgYXJlIG5lZWRlZC4gV2luZSBoYXMgaXRzIG93biB3aW5kb3cgbWFuYWdlbWVudCwKICAgICAgICAgIHdoaWNoIGFjdHMgbGlrZSBNUyBXaW5kb3dzLiBJdCBjYW4gYmUgdHVybmVkIG9mZiB0byB1c2UgdGhlIG5hdGl2ZQogICAgICAgICAgd2luZG93IG1hbmFnZXIgYnkgbW9kaWZ5aW5nIE1hbmFnZWQgb3IgRGVza3RvcCBzZXR0aW5ncyBhcyBkZXNjcmliZWQKICAgICAgICAgIGluIDxjb21tYW5kPm1hbiB3aW5lLmNvbmY8L2NvbW1hbmQ+LgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldpbGwtMzItYml0LWFwcGxpY2F0aW9ucy1ydW4tdW5kZXItV2luZSI+CiAgICAgICAgPHBhcmE+V2lsbCAzMi1iaXQgV2luZG93cyA5NS85OCBhcHBsaWNhdGlvbnMgcnVuIHVuZGVyIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWWVzLCAzMi1iaXQgcHJvZ3JhbXMgYXJlIG5vdyBhYm91dCBhcyB3ZWxsIHN1cHBvcnRlZCBhcyAxNi1iaXQgCiAgICAgICAgICAgcHJvZ3JhbXMuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgICAKICAgIDwvcWFuZGFkaXY+CiAgICA8cWFuZGFkaXYgaWQ9IkZBUS1HZXR0aW5nLVdpbmUiPgogICAgICA8dGl0bGU+R2V0dGluZyBXaW5lPC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iV2hlcmUtY2FuLUktZ2V0LVdpbmUiPgogICAgICAgIDxwYXJhPldoZXJlIGNhbiBJIGdldCBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEJlY2F1c2Ugb2YgbGFncyBjcmVhdGVkIGJ5IHVzaW5nIG1pcnJvciwgd29yZCBvZiB0aGlzIG5ld2VzdCByZWxlYXNlCiAgICAgICAgICBtYXkgcmVhY2ggeW91IGJlZm9yZSB0aGUgcmVsZWFzZSBpcyBhY3R1YWxseSBhdmFpbGFibGUgYXQgdGhlIGZ0cAogICAgICAgICAgc2l0ZXMgbGlzdGVkIGhlcmUuIFRoZSBzb3VyY2VzIGFyZSBhdmFpbGFibGUgZnJvbSB0aGUgZm9sbG93aW5nCiAgICAgICAgICBsb2NhdGlvbnM6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cuaWJpYmxpby5vcmcvcHViL0xpbnV4L0FMUEhBL3dpbmUvZGV2ZWxvcG1lbnQvIj4KICAgICAgICAgICAgICAgaHR0cDovL3d3dy5pYmlibGlvLm9yZy9wdWIvTGludXgvQUxQSEEvd2luZS9kZXZlbG9wbWVudC8KICAgICAgICAgICAgICA8L3VsaW5rPgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICA8dWxpbmsgdXJsPSJmdHA6Ly9mdHAuaW5mb21hZ2ljLmNvbS9wdWIvbWlycm9ycy9saW51eC9zdW5zaXRlL0FMUEhBL3dpbmUvZGV2ZWxvcG1lbnQvIj4KICAgICAgICAgICAgICBmdHA6Ly9mdHAuaW5mb21hZ2ljLmNvbS9wdWIvbWlycm9ycy9saW51eC9zdW5zaXRlL0FMUEhBL3dpbmUvZGV2ZWxvcG1lbnQvIAogICAgICAgICAgICAgIDwvdWxpbms+CiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICA8dWxpbmsgdXJsPSJmdHA6Ly9mdHAuZnUtYmVybGluLmRlL3VuaXgvbGludXgvbWlycm9ycy9zdW5zaXRlLnVuYy5lZHUvQUxQSEEvd2luZS9kZXZlbG9wbWVudC8iPgogICAgICAgICAgICAgIGZ0cDovL2Z0cC5mdS1iZXJsaW4uZGUvdW5peC9saW51eC9taXJyb3JzL3N1bnNpdGUudW5jLmVkdS9BTFBIQS93aW5lL2RldmVsb3BtZW50LyAKICAgICAgICAgICAgICA8L3VsaW5rPgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgoKICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgPHVsaW5rIHVybD0iZnRwOi8vb3JjdXMucHJvZ3NvYy51dHMuZWR1LmF1L3B1Yi9XaW5lL2RldmVsb3BtZW50LyI+CiAgICAgICAgICAgICAgZnRwOi8vb3JjdXMucHJvZ3NvYy51dHMuZWR1LmF1L3B1Yi9XaW5lL2RldmVsb3BtZW50LyAKICAgICAgICAgICAgICA8L3VsaW5rPgogICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgoKICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEl0IHNob3VsZCBhbHNvIGJlIGF2YWlsYWJsZSBmcm9tIGFueSBvdGhlciBzaXRlIHRoYXQgbWlycm9ycyAKICAgICAgICAgIGliaWJsaW8ub3JnLiBGb3IgbW9yZSBkb3dubG9hZCBsb2NhdGlvbnMsIHNlZSAKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly9mdHAgc2VhcmNoLmx5Y29zLmNvbS4iPmx5Y29zPC91bGluaz4gU29tZSBvZgogICAgICAgICAgdGhlc2UgZnRwIHNpdGVzIG1heSBhcmNoaXZlIHByZXZpb3VzIHZlcnNpb25zIG9mIFdpbmUgYXMgd2VsbCBhcyB0aGUKICAgICAgICAgIGN1cnJlbnQgb25lLiBUbyBkZXRlcm1pbmUgd2hpY2ggaXMgdGhlIGxhdGVzdCBvbmUsIGxvb2sgYXQgdGhlIAogICAgICAgICAgZGlzdHJpYnV0aW9uIGZpbGUgbmFtZSwgd2hpY2ggd2lsbCB0YWtlIHRoZSBmb3JtIAogICAgICAgICAgV2luZS1ZWVlZTU1ERC50YXIuZ3ouIFNpbXBseSByZXBsYWNlIFlZWVlNTUREIGluIHRoZSBkaXN0cmlidXRpb24KICAgICAgICAgIGZpbGUgbmFtZSB3aXRoIHRoZSBudW1iZXJzIGZvciB5ZWFyLCBtb250aCBhbmQgZGF0ZSwgcmVzcGVjdGl2ZWx5LgogICAgICAgICAgVGhlIGxhdGVzdCBvbmUgaXMgdGhlIG9uZSB0byBnZXQuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBiaW5hcnkgcGFja2FnZXMgYXJlIGF2YWlsYWJsZSBmb3Igc2V2ZXJhbCBPUydlcyBhbmQgCiAgICAgICAgICBkaXN0cmlidXRpb25zLiBTZWUgCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5jb20vZG93bmxvYWQuc2h0bWwiPgogICAgICAgICAgdGhlIGRvd25sb2FkIHBhZ2U8L3VsaW5rPiBmb3IgdGhlIG1vc3QgcmVjZW50IGxpc3QuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSXMtdGhlcmUtYS1DVlMtdHJlZSI+CiAgICAgICAgPHBhcmE+SXMgdGhlcmUgYSBDVlMgdHJlZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBDdXJyZW50IFdpbmUgc291cmNlcyBhcmUgYWxzbyBhdmFpbGFibGUgdmlhIGFub255bW91cyBjbGllbnQvc2VydmVyCiAgICAgICAgICBDVlMuIFlvdSB3aWxsIG5lZWQgQ1ZTIDEuOSBvciBhYm92ZS4gSWYgeW91IGFyZSBjb21pbmcgZnJvbSBiZWhpbmQgYQogICAgICAgICAgZmlyZXdhbGwsIHlvdSB3aWxsIGVpdGhlciBuZWVkIGEgaG9sZSBpbiB0aGUgZmlyZXdhbGwgZm9yIHRoZSBDVlMKICAgICAgICAgIHBvcnQgKDI0MDEpIG9yIHVzZSBTT0NLUy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUbyBsb2dpbiB0byB0aGUgQ1ZTIHRyZWUsIGRvCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+CmV4cG9ydCBDVlNST09UPTpwc2VydmVyOmN2c0BjdnMud2luZWhxLmNvbS9ob21lL3dpbmUKY3ZzIGxvZ2luCiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBVc2UgImN2cyIgYXMgdGhlIHBhc3N3b3JkICh3aXRob3V0IHRoZSBxdW90ZXMpLiBOb3RlIHRoYXQgCiAgICAgICAgICA8ZmlsZW5hbWU+L2hvbWUvd2luZTwvZmlsZW5hbWU+IGlzIGEgcGF0aCBvbiB0aGUgc2VydmVyLCBub3Qgb24geW91cgogICAgICAgICAgbWFjaGluZS4gVG8gY2hlY2sgb3V0IHRoZSBlbnRpcmUgV2luZSBzb3VyY2UgdHJlZSAod2hpY2ggbWF5IGJlIAogICAgICAgICAgc2xvdyksIHVzZQogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgpjdnMgLXogMyBjaGVja291dCB3aW5lIAogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgb3IgaWYgeW91IGp1c3Qgd2FudCBhIHN1YnRyZWUsIG9yIGluZGl2aWR1YWwgZmlsZSwgeW91IGNhbiBkbyB0aGF0IAogICAgICAgICAgdG9vIHdpdGgKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KY3ZzIC16IDMgY2hlY2tvdXQgd2luZS9BTk5PVU5DRSAKICAgICAgICA8L3NjcmVlbj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEJlIGF3YXJlLCB0aG91Z2gsIHRoYXQgZ2V0dGluZyB0aGUgZW50aXJlIFdpbmUgc291cmNlIHRyZWUgdmlhIENWUwogICAgICAgICAgaXMgcHJldHR5IHNsb3csIGVzcGVjaWFsbHkgY29tcGFyZWQgdG8gZ2V0dGluZyBXaW5lIGZyb20gYW4gRlRQIAogICAgICAgICAgbWlycm9yIG5lYXIgeW91LiBGb3IgYSBDVlMgbWlycm9yIGxpc3QsIHNlZSAKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLmNvbS9kZXYuc2h0bWwiPgogICAgICAgICAgaHR0cDovL3d3dy53aW5laHEuY29tL2Rldi5zaHRtbDwvdWxpbms+CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUGF0Y2ggZmlsZXMgYXJlIGFsc28gYXZhaWxhYmxlLCBzbyB0aGF0IHlvdSBkb24ndCBoYXZlIHRvIGRvd25sb2FkLAogICAgICAgICAgaW5zdGFsbCwgYW5kIGNvbmZpZ3VyZSB0aGUgZW50aXJlIGRpc3RyaWJ1dGlvbiBlYWNoIHdlZWsgaWYgeW91IGFyZQogICAgICAgICAgY3VycmVudCB0byB0aGUgcHJldmlvdXMgcmVsZWFzZS4gUGF0Y2ggZmlsZSByZWxlYXNlIG5hbWVzIGZvbGxvdyB0aGUKICAgICAgICAgIHNhbWUgbnVtYmVyaW5nIGNvbnZlbnRpb24gYXMgZG8gdGhlIGdlbmVyYWwgcmVsZWFzZXMsIGFuZCB0YWtlIHRoZSAKICAgICAgICAgIGZvcm0KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaW5lLVlZWVlNTURELmRpZmYuZ3ogIAogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFBhdGNoIGZpbGVzIGFyZSBhdmFpbGFibGUgZnJvbSB0aGUgc2FtZSBzaXRlcyB0aGF0IGRpc3RyaWJ1dGUgdGhlCiAgICAgICAgICBmdWxsIHJlbGVhc2UuIFRvIHVwZ3JhZGUgdG8gYSBuZXcgcmVsZWFzZSBieSB1c2luZyBhIHBhdGNoIGZpbGUsCiAgICAgICAgICBmaXJzdCBjZCB0byB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeSBvZiB0aGUgcmVsZWFzZSAodGhlIG9uZQogICAgICAgICAgY29udGFpbmluZyB0aGUgUkVBRE1FIGZpbGUpLCB0aGVuIGRvIGEgIm1ha2UgY2xlYW4iLCBhbmQgcGF0Y2ggdGhlCiAgICAgICAgICByZWxlYXNlIHdpdGgKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KZ3VuemlwIC1jIHBhdGNoLWZpbGUgfCBwYXRjaCAtcDEgCiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICB3aGVyZSBwYXRjaC1maWxlIGlzIHRoZSBuYW1lIG9mIHRoZSBwYXRjaCBmaWxlIHNvbWV0aGluZyBsaWtlCiAgICAgICAgICBXaW5lLVlZWVlNTURELmRpZmYuZ3ouIFlvdSBjYW4gdGhlbiByZS1ydW4gLi9jb25maWd1cmUsIGFuZCB0aGVuIHJ1bgogICAgICAgICAgbWFrZSBkZXBlbmQgJiYgbWFrZQogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHlvdSBhcmUgbWlycm9yaW5nIHRoZSBXaW5lIGRpc3RyaWJ1dGlvbiBmcm9tIHRoZSB0c3gtMTEgc2l0ZSBhbmQKICAgICAgICAgIHdpc2ggdG8gYmUgbGlzdGVkIGhlcmUgaW4gdGhpcyBGQVEsIHBsZWFzZSBhZGQgaXQgdG8gdGhlIAogICAgICAgICAgInRoaW5ncyB0byBnbyBpbnRvIHRoZSBkb2N1bWVudGF0aW9uIiBhcmVhLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkNhbi1JLWdldC1XaW5lLXVzaW5nLWN2c3VwIj4KICAgICAgICA8cGFyYT5DYW4gSSBnZXQgV2luZSB1c2luZyBjdnN1cD88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGUgQ1ZTIG1pcnJvcnMgZG9uJ3Qgb2ZmZXIgY3ZzdXAgc3VwcG9ydCB5ZXQsIGJ1dCB0aGUgbWFpbiBzZXJ2ZXIKICAgICAgICAgIGRvZXMuIFVzZSBhIDxmaWxlbmFtZT53aW5lLnN1cDwvZmlsZW5hbWU+IGZpbGUgb2Y6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+CipkZWZhdWx0IGhvc3Q9Y3ZzLndpbmVocS5jb20KKmRlZmF1bHQgYmFzZT0vY3ZzCipkZWZhdWx0IHByZWZpeD0vY3ZzL3dpbmUKKmRlZmF1bHQgcmVsZWFzZT13aW5lCipkZWZhdWx0IGRlbGV0ZSAKCiMgSWYgeW91ciBuZXR3b3JrIGxpbmsgaXMgYSBUMSBvciBmYXN0ZXIsIGNvbW1lbnQgb3V0IHRoZSBmb2xsb3dpbmcgbGluZS4KIypkZWZhdWx0IGNvbXByZXNzIAoKKmRlZmF1bHQgdXNlLXJlbC1zdWZmaXggCndpbmUgCiAgICAgICAgPC9zY3JlZW4+CiAgICAgPC9hbnN3ZXI+CiAgICAgPC9xYW5kYWVudHJ5PgogICAgPC9xYW5kYWRpdj4KCiAgICA8cWFuZGFkaXYgaWQ9Ikluc3RhbGxpbmctQW5kLUNvbmZpZ3VyaW5nLVdpbmUiPgogICAgICA8dGl0bGU+SW5zdGFsbGluZyBhbmQgQ29uZmlndXJpbmcgV2luZTwvdGl0bGU+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikhvdy1kby1JLWNvbXBpbGUtdGhlLVdpbmUtc291cmNlLWNvZGUiPgogICAgICAgIDxwYXJhPkhvdyBkbyBJIGNvbXBpbGUgdGhlIFdpbmUgZGlzdHJpYnV0aW9uIHNvdXJjZSBjb2RlPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFNlZSB0aGUgUkVBRE1FICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5jb20vc291cmNlL1JFQURNRSI+aHR0cDovL3d3dy53aW5laHEuY29tL3NvdXJjZS9SRUFETUU8L3VsaW5rPikgZm9yIGluc3RydWN0aW9ucy4KICAgICAgICAgIEFkZGl0aW9uYWxseSwgeW91IG1heSB3YW50IHRvIHNldCB0aGUgPHBhcmFtZXRlcj5UTVBESVI8L3BhcmFtZXRlcj4KICAgICAgICAgIGVudmlyb25tZW50IHZhcmlhYmxlIDxjb21tYW5kPlRNUERJUj1+L3RtcDwvY29tbWFuZD4gb3IKICAgICAgICAgIDxjb21tYW5kPlRNUERJUj0vdG1wPC9jb21tYW5kPiAoaWYgeW91IGFyZSByb290KS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctZG8tSS1pbnN0YWxsLVdpbmRvd3MtaW4tV2luZSI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgaW5zdGFsbCBXaW5kb3dzIGluIFdpbmUgdW5kZXIgTGludXg/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgU2ltcGxlIGFuc3dlcjogeW91IENBTidULiBXaW5kb3dzIGRlbWFuZHMgZGlyZWN0IGFjY2VzcyB0byB0aGUKICAgICAgICAgIGhhcmR3YXJlIGFuZCBjYW5ub3QgZ2V0IGl0IHdpdGggV2luZSBhbmQgVU5JWCBpbiB0aGUgd2F5CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBpcyBzdXBwb3NlZCB0byBiZSBwcmltYXJpbHkgdXNlZCBXSVRIT1VUIFdpbmRvd3MuIElmIHlvdSB3YW50CiAgICAgICAgICB0byB1c2UgYSBXaW5kb3dzIGluc3RhbGxhdGlvbiwgdGhlbiB1c2UgYW4gZXhpc3RpbmcgaW5zdGFsbGF0aW9uIAogICAgICAgICAgYWxvbmdzaWRlIHRoZSBVTklYIGluc3RhbGxhdGlvbiAoc2VlIHRoZSBkdWFsLWJvb3QgSE9XVE8gZm9yIHlvdXIgT1MKICAgICAgICAgIGZvciBtb3JlIGRldGFpbHMpLiBPciBhbHRlcm5hdGl2ZWx5IHVzZSB0aGUgY2FiZXh0cmFjdCB1dGlsaXR5IHRvCiAgICAgICAgICBleHRyYWN0IFdpbmRvd3MgaW5zdGFsbCBhcmNoaXZlcyB0byBhIGRpcmVjdG9yeSB0aGF0IHlvdSB3YW50IHRvIHVzZQogICAgICAgICAgYXMgV2luZSdzIFdpbmRvd3MgdHJlZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctZG8tSS1jb25maWd1cmUtV2luZS10by1ydW4tb24tbXktc3lzdGVtIj4KICAgICAgICA8cGFyYT5Ib3cgZG8gSSBjb25maWd1cmUgV2luZSB0byBydW4gb24gbXkgc3lzdGVtPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgcmVxdWlyZXMgdGhhdCB5b3UgaGF2ZSBhIGNvbmZpZyBmaWxlIGFzIAogICAgICAgICAgPGZpbGVuYW1lPn4vLndpbmUvY29uZmlnPC9maWxlbmFtZT4uIFRoZSBmb3JtYXQgb2YgdGhpcyBmaWxlIGlzCiAgICAgICAgICBleHBsYWluZWQgaW4gdGhlIDxmaWxlbmFtZT53aW5lLmNvbmY8L2ZpbGVuYW1lPiBtYW4gcGFnZS4gVGhlIGZpbGUKICAgICAgICAgIDxmaWxlbmFtZT5kb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnPC9maWxlbmFtZT4KICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5jb20vc291cmNlL2RvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWciPgogICAgICAgICAgaHR0cDovL3d3dy53aW5laHEuY29tL3NvdXJjZS9kb2N1bWVudGF0aW9uL3NhbXBsZXMvY29uZmlnPC91bGluaz4pIAogICAgICAgICAgY29udGFpbnMgYSBjb25maWcgZmlsZSBleGFtcGxlLiBNb3JlIGV4cGxpY2l0IGRpcmVjdGlvbnMgY2FuIGJlIAogICAgICAgICAgZm91bmQgaW4gdGhlIDxmaWxlbmFtZT5SRUFETUU8L2ZpbGVuYW1lPiBmaWxlCiAgICAgICAgICAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEuY29tL3NvdXJjZS9SRUFETUUiPgogICAgICAgICAgaHR0cDovL3d3dy53aW5laHEuY29tL3NvdXJjZS9SRUFETUU8L3VsaW5rPikgdGhhdCB3aWxsIGJlIGxvY2F0ZWQgaW4KICAgICAgICAgIHRoZSBiYXNlIFdpbmUgZGlyZWN0b3J5IGFmdGVyIHlvdSBndW56aXAgYW5kIHVudGFyIHRoZSBkaXN0cmlidXRpb24KICAgICAgICAgIGZpbGUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWRvLUktdXBncmFkZS1jb25maWd1cmF0aW9uIj4KICAgICAgICA8cGFyYT5Ib3cgZG8gSSB1cGdyYWRlIFdpbmUgd2l0aG91dCBsb3NpbmcgbXkgd29ya2luZyBjb25maWd1cmF0aW9uPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFVwZ3JhZGluZyB0aGUgd2luZSBpbnN0YWxsYXRpb24gZG9lcyBub3QgYWZmZWN0IHRoZSBleGlzdGluZyB3aW5lCiAgICAgICAgICBjb25maWd1cmF0aW9uLiBTbyBhZnRlciB1cGdyYWRpbmcgd2luZSB5b3Ugc3RpbGwgaGF2ZSB0aGUgb2xkICh3b3JraW5nICkKICAgICAgICAgIHdpbmUgY29uZmlndXJhdGlvbi4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJZi1JLXVzZS1XaW5kb3dzLXdoaWNoLXZlcnNpb25zLU9LIj4KICAgICAgICA8cGFyYT5JZiBJIHdhbnQgdG8gdXNlIGEgV2luZG93cyBpbnN0YWxsLCB3aGljaCB2ZXJzaW9ucyBhcmUgT0s/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgRWl0aGVyIHVzZSBhIGNsYXNzaWMgbm8td2luZG93cyBpbnN0YWxsIChXaW5lIGlzIGdldHRpbmcgYmV0dGVyIGFsbAogICAgICAgICAgdGhlIHRpbWUpIG9yIHVzZSBhIFdpbjl4IGluc3RhbGwgKFdpbjk1LCA5OCwgOThTRSwgTUUpLiBET04nVCAKICAgICAgICAgIGNvbmZpZ3VyZSBXaW5lIHRvIHVzZSBhbiBOVC1iYXNlZCBXaW5kb3dzIGluc3RhbGwgKE5ULCBXaW4ySywgV2luWFApLgogICAgICAgIDwvcGFyYT4KCTxwYXJhPgoJICBJbiBnZW5lcmFsLCBtb3N0IFdpbmRvd3MgaW5zdGFsbGF0aW9ucyBjb250YWluIHZhc3QgcXVhbnRpdGllcyBvZiBnYXJiYWdlCgkgIHRoYXQgY2FuIGNvbmZ1c2UgV2luZSBhbmQgbWFrZSBpdCBsZXNzIHJlbGlhYmxlLiBJZiB5b3UgY2FuLCBpdCdzIGJlc3QgdG8KCSAgaW5zdGFsbCB0aGUgcHJvZ3JhbXMgeW91IHdhbnQgaW50byBXaW5lcyBmYWtlIHdpbmRvd3MgZHJpdmUuCgk8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJJZi1JLXVzZS1XaW5kb3dzLXdoaWNoLW9uZS13b3Jrcy1iZXN0Ij4KICAgICAgICA8cGFyYT5JZiBJIHVzZSBhIFdpbmRvd3MgaW5zdGFsbCB3aXRoIFdpbmUsIHdoaWNoIG9uZSB3b3JrcyBiZXN0PzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEFzIG9mIDAyLzIwMDI6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSdkIHNheSBXaW45OFNFIGlzIHRoZSBiZXN0IHZlcnNpb24gdG8gdXNlIHdpdGggV2luZSwgYXMgaXQncyBmYWlybHkKICAgICAgICAgIHdpZGVzcHJlYWQgYW1vbmdzdCBkZXZlbG9wZXJzIGFuZCByZWxhdGl2ZWx5IG9sZC4gVXNpbmcgV2luMksgZmlsZXMKICAgICAgICAgIGlzIDxlbXBoYXNpcz5kZWZpbml0ZWx5PC9lbXBoYXNpcz4gd29yc2UgdGhhbiBhIHBsYWluIG5vLXdpbmRvd3MgCiAgICAgICAgICBXaW5lIGluc3RhbGwsIGFuZCBXaW4gTUUgaXMgc2FpZCB0byBiZSBwcm9ibGVtYXRpYywgdG9vIChhcyBwcm9iYWJseQogICAgICAgICAgbm8gZGV2ZWxvcGVyIHVzZXMgaXQpLiBJbiBzaG9ydDogYWxsIFdpbjl4ICZsdDs9IFc5OFNFIGFyZSBnb29kLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikluc3RhbGxpbmctVmlzdWFsLUJhc2ljLWFwcHMtd29udC1ydW4iPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSW5zdGFsbGluZyBhcHBsaWNhdGlvbnMgZ2VuZXJhdGVkIGJ5IFZpc3VhbCBCYXNpYyB3b24ndCBydW4uIFdoYXQKICAgICAgICAgIHNob3VsZCBJIGRvPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIE1ha2Ugc3VyZSB5b3UgaGF2ZSBhbGwgdGhlIFZCIHJ1bnRpbWUgbGlicmFyaWVzIGluc3RhbGxlZC4gWW91IG1heQogICAgICAgICAgbmVlZCB0byB1c2UgdGhlIG5hdGl2ZSBETEwgdmJydW42MC5kbGwuIFlvdSBjYW4gZ2V0IHNvbWUgZnJvbSBkbGwtZmlsZXMuY29tLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IldoZW4tSS1jbGljay1vbi1leGUtZmlsZS1ub3RoaW5nLWhhcHBlbnMiPgogICAgICAgIDxwYXJhPldoZW4gSSBjbGljayBvbiAqLmV4ZSBmaWxlIGluIG15IGZpbGUgTWFuYWdlciwgbm90aGluZyBoYXBwZW5zLjwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBub3JtYWwgV2luZSByZWxlYXNlcyBkb24ndCBoYXZlIC5leGUgZXh0ZW5zaW9ucyByZWdpc3RlcmVkIGZvcgogICAgICAgICAgV2luZSBpbiBLREUvR25vbWUgeWV0LiBZb3UgaGF2ZSB0byBvcGVuIGEgdGVybWluYWwgd2luZG93IGluc3RlYWQKICAgICAgICAgIChvZnRlbiBhbiBpY29uIHNob3dpbmcgYSAiYmxhY2sgc2NyZWVuIikgYW5kIHR5cGUgc29tZXRoaW5nIGxpa2U6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+CmNkIC9teS93aW5kb3dzL3Byb2dyYW0vZGlyZWN0b3J5CndpbmUgbXlwcm9ncmFtLmV4ZQogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgT3IgYWx0ZXJuYXRpdmVseSB5b3UgY291bGQgZG93bmxvYWQgdGhlIENvZGVXZWF2ZXJzIFdpbmUgcHJldmlldyAKICAgICAgICAgIHdoaWNoIGluY2x1ZGVzIC5leGUgZXh0ZW5zaW9uIHJlZ2lzdHJhdGlvbiBmb3IgS0RFL0dub21lIGFuZCBhIG5pY2UKICAgICAgICAgIHNldHVwIHByb2dyYW0uCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iYmFzaC13aW5lLUNvbW1hbmQtbm90LWZvdW5kLVdoYXQtY2FuLUktZG8iPgogICAgICAgIDxwYXJhPmJhc2ggIndpbmU6IENvbW1hbmQgbm90IGZvdW5kIiBXaGF0IGNhbiBJIGRvPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRyeSB0byByZWxvZ2luIGludG8gYmFzaC4gVGhhdCBtaWdodCBmaXggaXQuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgaXQgZG9lc24ndCwgdGhlbiBtYWtlIHN1cmUgdGhlIHdpbmUgYmluYXJ5IGlzIGluIHlvdXIgCiAgICAgICAgICA8cGFyYW1ldGVyPlBBVEg8L3BhcmFtZXRlcj4uCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUnVuIGFzIHJvb3Q6CiAgICAgICAgPC9QYXJhPgogICAgICAgIDxzY3JlZW4+CmZpbmQgLyAtbmFtZSAid2luZSIgLXR5cGUgZiAtcGVybSArMTExCiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICB0byBmaW5kIHRoZSBwYXRoIHdoZXJlIHRoZSB3aW5lIGJpbmFyeSBpcyBpbi4gVGhlbiBjaGVjayB3aGV0aGVyCiAgICAgICAgPHBhcmFtZXRlcj5QQVRIPC9wYXJhbWV0ZXI+IGluY2x1ZGVzIGl0OgogICAgICAgIDwvcGFyYT4KICAgICAgICA8c2NyZWVuPgplY2hvICRQQVRIIAogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgbm90LCBhZGQgdGhhdCBlLmcuIHRvIDxmaWxlbmFtZT4vZXRjL3Byb2ZpbGU8L2ZpbGVuYW1lPiBieSBkb2luZzoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4KZXhwb3J0IFBBVEg9JFBBVEg6L3BhdGgvdG8vd2luZS9iaW5hcnkgCiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGF0IHNob3VsZCBoZWxwLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgICBJZiB5b3UgdXNlZCBhIHBhY2thZ2UgbWFuYWdlciAoPGNvbW1hbmQ+cnBtPC9jb21tYW5kPiBvciAKICAgICAgICAgICA8Y29tbWFuZD5hcHQ8L2NvbW1hbmQ+KSAtIFZlcmlmeSB5b3VyIHBhY2thZ2VzLiBUaGUgcGFja2FnZSAKICAgICAgICAgICA8ZmlsZW5hbWU+d2luZXNldHVwdGsucnBtPC9maWxlbmFtZT4gaXMgb25seSBhIGZyb250LWVuZCBmb3IgCiAgICAgICAgICAgbWFraW5nIGEgbWVhbmluZ2Z1bCBjb25maWcgZmlsZSwgaXQgRE9FUyBOT1QgaW5zdGFsbCB0aGUgd2luZQogICAgICAgICAgIHBhY2thZ2UuLi4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICAgRm9yIGNvbXBsZXRlIHBhY2thZ2VzLCB1c2UgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5ycG1maW5kLm5ldC8iPgogICAgICAgICAgIHd3dy5ycG1maW5kLm5ldDwvdWxpbms+IG9yIHRoZSA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvZG93bmxvYWQvIj4KICAgICAgICAgICBEb3dubG9hZDwvdWxpbms+IHNlY3Rpb24uCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWRvLUktcmVtb3ZlLVdpbmUtZnJvbS1teS1Db21wdXRlciI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgcmVtb3ZlIFdpbmUgZnJvbSBteSBDb21wdXRlcj88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBBbGwgeW91IGhhdmUgdG8gZG8gaXMgdG8gdHlwZToKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHNjcmVlbj4Kcm0gLWZSIFxbL3BhdGgvXF1XaW5lKgogICAgICAgIDwvc2NyZWVuPgogICAgICAgIDxwYXJhPgogICAgICAgICAgTWFrZSBzdXJlIHRoYXQgeW91IHNwZWNpZnkgdGhlIGV4YWN0IHBhdGggd2hlbiB1c2luZyB0aGUgcG93ZXJmdWwKICAgICAgICAgIDxjb21tYW5kPnJtIC1mUjwvY29tbWFuZD4gY29tbWFuZC4gSWYgeW91IGFyZSBhZnJhaWQgdGhhdCB5b3UgbWlnaHQKICAgICAgICAgIGRlbGV0ZSBzb21ldGhpbmcgaW1wb3J0YW50LCBvciBtaWdodCBvdGhlcndpc2UgZGVsZXRlIG90aGVyIGZpbGVzIAogICAgICAgICAgd2l0aGluIHlvdXIgZmlsZXN5c3RlbSwgPGNvbW1hbmQ+Y2Q8L2NvbW1hbmQ+IGludG8gZWFjaCBXaW5lIAogICAgICAgICAgc3ViZGlyZWN0b3J5IHNpbmdseSBhbmQgZGVsZXRlIHRoZSBmaWxlcyBmb3VuZCB0aGVyZSBtYW51YWxseSwgCiAgICAgICAgICBvbmUgZmlsZSBvciBkaXJlY3RvcnkgYXQgYSB0aW1lLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICBOZWl0aGVyIHRoZSBXaW5lIGRldmVsb3BlcnMgYW5kIHByb2dyYW1tZXJzLCBub3IgdGhlIFdpbmUgRkFRIAogICAgICAgIGF1dGhvci9tYWludGFpbmVyLCBjYW4gYmUgaGVsZCByZXNwb25zaWJsZSBmb3IgeW91ciBkZWxldGluZyBhbnkKICAgICAgICBmaWxlcyBpbiB5b3VyIG93biBmaWxlc3lzdGVtLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgIDwvcWFuZGFkaXY+CgogICAgPHFhbmRhZGl2IGlkPSJBYm91dC1ydW5uaW5nLVdpbmUiPgogICAgICA8dGl0bGU+QWJvdXQgcnVubmluZyBXaW5lPC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWRvLUktcnVuLWFuLU1TLVdpbmRvd3MtcHJvZ3JhbSI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgcnVuIGFuIE1TIFdpbmRvd3MgcHJvZ3JhbSB1bmRlciBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdoZW4gaW52b2tpbmcgV2luZSwgeW91IG11c3Qgc3BlY2lmeSB0aGUgZW50aXJlIHBhdGggdG8gdGhlCiAgICAgICAgICBleGVjdXRhYmxlLCBvciBieSBmaWxlbmFtZSBvbmx5LiBGb3IgZXhhbXBsZSB0byBydW4gV2luZG93cycKICAgICAgICAgIHNvbGl0YWlyZSwgdHlwZSBhbnkgb2YgdGhlIGZvbGxvd2luZzoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8Y29tbWFuZD53aW5lIHNvbDwvY29tbWFuZD4gb3IgPGNvbW1hbmQ+d2luZSBzb2wuZXhlPC9jb21tYW5kPgogICAgICAgICAgICh1c2luZyB0aGUgc2VhcmNoIHBhdGggdG8gbG9jYXRlIHRoZSBmaWxlKS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPGNvbW1hbmQ+d2luZSBjOlxcd2luZG93c1xcc29sLmV4ZTwvY29tbWFuZD4gCiAgICAgICAgICAgKHVzaW5nIGEgRE9TIGZpbGVuYW1lKS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPGNvbW1hbmQ+d2luZSAvdXNyL3dpbmRvd3Mvc29sLmV4ZTwvY29tbWFuZD4KICAgICAgICAgICAodXNpbmcgYSBVTklYIGZpbGVuYW1lKS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPGNvbW1hbmQ+d2luZSAiYzpcd2luZG93c1xzb2wuZXhlIjwvY29tbWFuZD4KICAgICAgICAgICAgKHVzaW5nIHF1b3RlZCBET1MgZmlsZW5hbWUpLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBwYXRoIG9mIHRoZSBmaWxlIHdpbGwgYWxzbyBiZSBhZGRlZCB0byB0aGUgcGF0aCB3aGVuIGEgZnVsbCBuYW1lCiAgICAgICAgICBpcyBzdXBwbGllZCBvbiB0aGUgY29tbWFuZCBsaW5lLgoKICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaW5lLWNhbm5vdC1maW5kLU1TLVdpbmRvd3Mtb24tbXktZHJpdmUiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSBoYXZlIGluc3RhbGxlZCBhbmQgY29uZmlndXJlZCBXaW5lLCBidXQgV2luZSBjYW5ub3QgZmluZCBNUyAKICAgICAgICAgIFdpbmRvd3Mgb24gbXkgZHJpdmUuIFdoZXJlIGRpZCBJIGdvIHdyb25nPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHlvdSBoYXZlIGEgRE9TIHBhcnRpdGlvbiwgZmlyc3QgbWFrZSBzdXJlIHRoYXQgeW91IGhhdmUgbW91bnRlZAogICAgICAgICAgaXQsIGVpdGhlciBieSBwdXR0aW5nIHRoZSBlbnRyeSBpbnRvIDxmaWxlbmFtZT4vZXRjL2ZzdGFiPC9maWxlbmFtZT4sCiAgICAgICAgICBvciBieSBtYW51YWxseSBtb3VudGluZyBpdC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBSZW1lbWJlciB0b28gdGhhdCB1bmxlc3MgeW91ciB2ZXJzaW9uIG9mIFVOSVggY2FuIHNlZSB0aHJvdWdoIGl0LCBvcgogICAgICAgICAgeW91IGFyZSBydW5uaW5nIGEgdXRpbGl0eSB0aGF0IGNhbiBzZWUgdGhyb3VnaCBpdCwgeW91ciBET1MKICAgICAgICAgIHBhcnRpdGlvbiBtdXN0IG5vdCBiZSBsb2NhdGVkIG9uIGEgRHJpdmVzcGFjZWQsIERvdWJsZXNwYWNlZCBvcgogICAgICAgICAgU3RhY2tlcmVkIHBhcnRpdGlvbiwgYXMgbmVpdGhlciBMaW51eCwgRnJlZUJTRCwgTmV0QlNEIG9yIFdpbmUgY2FuCiAgICAgICAgICBuYXRpdmVseSAnc2VlJyBmaWxlcyBsb2NhdGVkIGluIHRoZXNlIGNvbXByZXNzZWQgRE9TIHBhcnRpdGlvbnMuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQ2hlY2sgeW91ciBwYXRoIHN0YXRlbWVudHMgaW4gdGhlIDxmaWxlbmFtZT53aW5lLmNvbmY8L2ZpbGVuYW1lPiAKICAgICAgICAgIGZpbGUuIE5vIGNhcGl0YWwgbGV0dGVycyBtYXkgYmUgdXNlZCBpbiBwYXRocywgYXMgdGhleSBhcmUgCiAgICAgICAgICBhdXRvbWF0aWNhbGx5IGNvbnZlcnRlZCB0byBsb3dlcmNhc2UuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iUGFydHMtb2YtbXktYXBwLWRvLW5vdC13b3JrLVdoYXQtaXMtd3JvbmciPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSSB3YXMgYWJsZSB0byBnZXQgdmFyaW91cyBNUyBXaW5kb3dzIHByb2dyYW1zIHRvIHJ1biwgYnV0IHBhcnRzIG9mCiAgICAgICAgICB0aGVtIGRvIG5vdCB3b3JrLiBXaGF0IGlzIHdyb25nPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgbm90IGNvbXBsZXRlIGF0IHRoaXMgdGltZSwgc28gc29tZSBvZiBlYWNoIHByb2dyYW1zJyAKICAgICAgICAgIGZlYXR1cmVzIG1heSBub3Qgd29yay4gVGhleSB3aWxsIGluIHRpbWUgYXMgbW9yZSBvZiB0aGUgTVMgCiAgICAgICAgICBXaW5kb3dzIEFQSSBjYWxscyBhcmUgaW5jbHVkZWQgaW4gV2luZS4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJNZW51cy1kby1ub3Qtd29yay1ob3ctY2FuLUktZXhpdCI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJIGhhdmUgcnVuIHZhcmlvdXMgTVMgV2luZG93cyBwcm9ncmFtcywgYnV0IHNpbmNlIHRoZSBwcm9ncmFtIG1lbnVzCiAgICAgICAgICBkbyBub3Qgd29yaywgaG93IGNhbiBJIGV4aXQgdGhlc2UgcHJvZ3JhbXM/CiAgICAgICAgPC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgS2lsbCB0aGUgeHRlcm0gc2hlbGwgd2luZG93IHRoYXQgeW91IGNhbGxlZCB1cCB0byBydW4geW91ciBNUyAKICAgICAgICAgIFdpbmRvd3MgcHJvZ3JhbSwgYW5kIHRoZSBYIHdpbmRvdyB0aGF0IGFwcGVhcmVkIHdpdGggdGhlIHByb2dyYW0gCiAgICAgICAgICB3aWxsIGJlIGtpbGxlZCB0b28uCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+Cgk8cXVlc3Rpb24gaWQ9Ik15LWFwcC1kb2VzbnQtd29yay13aGF0LWNhbi1pLWRvIj4KCSAgPHBhcmE+CgkgICAgTXkgcHJvZ3JhbSBkb2Vzbid0IHdvcmssIHdoYXQgY2FuIEkgZG8/CgkgIDwvcGFyYT4KCTwvcXVlc3Rpb24+Cgk8YW5zd2VyPgoJICA8cGFyYT4KCSAgICBJZiB5b3UgYXJlIGEgcHJvZ3JhbW1lciBhbmQga25vdyBDLCB0aGVuIHN0YXJ0IGRlYnVnZ2luZwoJICAgIFdpbmUgYW5kIGhlbHAgdXMgbWFrZSBpdCBiZXR0ZXIhIElmIHlvdSBjYW4ndCwgdGhlbiB5b3Ugd2lsbAoJICAgIGhhdmUgdG8gZWl0aGVyIGNvbnZpbmNlIGEgV2luZSBkZXZlbG9wZXIgdG8gdHJ5IGFuZCBtYWtlIHlvdXIKCSAgICBwcm9ncmFtIHdvcmsgKHRoZXJlIG11c3QgYmUgYSBkb3dubG9hZGFibGUgdmVyc2lvbiBvciBkZW1vIGZvcgoJICAgIHRoYXQpLCBvciBoaXJlIHNvbWVib2R5IHRvIGRvIGl0IGZvciB5b3UuIElmIHRoaXMgYXBwbGljYXRpb24KCSAgICBpcyBhbiBpbnRlcm5hbCBjb3Jwb3JhdGUgYXBwbGljYXRpb24sIHlvdSBtYXkgYmUgYWJsZSB0byBoaXJlIGEKCSAgICBXaW5lIGRldmVsb3BlciB0byBkbyBjb25zdWx0aW5nIHdvcmsgZm9yIHlvdSBvbiB0aGUgbWF0dGVyLgoJICA8L3BhcmE+CgkgIDxwYXJhPgoJICAgIEFsdGVybmF0aXZlbHksIHlvdSBtYXkgYmUgYWJsZSB0byBnZXQgdGhlIGFwcCB3b3JraW5nIGJ5CgkgICAgdGFraW5nIG5hdGl2ZSBETExzIGZyb20gYSBNaWNyb3NvZnQgV2luZG93cyBpbnN0YWxsLCBhbmQgdXNpbmcKCSAgICB0aGVtIChzZXQgdGhlIGRsbHMgdG8gbmF0aXZlIGluIHRoZSBjb25maWcgZmlsZSkuIE5vdCBhbGwgRExMcwoJICAgIGNhbiBiZSByZXBsYWNlZCB0aGF0IHdheSAtIGluIHBhcnRpY3VsYXIgRGlyZWN0WCBjYW5ub3QgYmUsIG5vcgoJICAgIGNhbiBzb21lIGNvcmUgc3lzdGVtIERMTHMgbGlrZSB1c2VyLCBudGRsbCwga2VybmVsMzIgZXRjCgkgIDwvcGFyYT4KCTwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICAgIAogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJDYW4tSS11c2UtV2luZS13aXRoLW90aGVyLUxpbnV4LURpc3Ryb3MiPgogICAgICAgIDxwYXJhPkNhbiBJIHVzZSBXaW5lIHdpdGggU3VTRSwgUGVhbnV0IG9yIG90aGVyIExpbnV4IERpc3RybydzPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFlvdSBjYW4gdXNlIFdpbmUgb24gYW55IHN1ZmZpY2llbnRseSByZWNlbnQgTGludXggaW5zdGFsbGF0aW9uLiBUaGUKICAgICAgICAgIGFtb3VudCBvZiB3b3JrIGdldHRpbmcgV2luZSB1cCBhbmQgcnVubmluZyBkZXBlbmRzIG9uIHdoZXRoZXIgdGhlcmUKICAgICAgICAgIGFyZSBwcm9wZXIgcGFja2FnZXMgYXZhaWxhYmxlIG9yIGEgc291cmNlIGNvbXBpbGUgaGFzIHRvIGJlIGRvbmUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iRG9lcy1XaW5lLXdvcmstd2l0aC1BTUQtUHJvY2Vzc29ycyI+CiAgICAgICAgPHBhcmE+RG9lcyBXaW5lIHdvcmsgd2l0aCBBTUQgUHJvY2Vzc29ycz88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBZZXMsIGl0IGRvZXMuIFdpbmUgc2hvdWxkIHdvcmsgb24gYW55IHByb2Nlc3NvciBjb21wYXRpYmxlIHdpdGgKICAgICAgICAgIHRoZSBQZW50aXVtIG9yIGdyZWF0ZXIuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkNhbi1JLWxhdW5jaC1Vbml4LWFwcC1mcm9tLVdpbmRvd3MtYXBwIj4KICAgICAgICA8cGFyYT4gQ2FuIEkgbGF1bmNoIGEgVW5peCBwcm9ncmFtIGZyb20gYSBXaW5kb3dzIHByb2dyYW0/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgU3VyZSwgV2luZSBzdXBwb3J0cyB0aGF0LiBKdXN0IGVudGVyIHRoZSB1bml4IHByb2dyYW0gbmFtZSB3aGVyZXZlcgogICAgICAgICAgYSBwcm9ncmFtIGhhcyBzb21ldGhpbmcgdGhhdCBpdCdzIHN1cHBvc2VkIHRvIGV4ZWN1dGUsIGFuZCBpdAogICAgICAgICAgc2hvdWxkIGp1c3Qgd29yay4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkVycm9yLXdpdGgtaW5zdGFsbHNoaWVsZC02Ij4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEkgZ2V0IDxxdW90ZT5FcnJvciBpbnN0YWxsaW5nIGlLZXJuZWwuZXhlOiAoMHgxNDAwKTwvcXVvdGU+CiAgICAgICAgICB3aGVuIHJ1bm5pbmcgYW4gSW5zdGFsbHNoaWVsZCA2IGluc3RhbGxlci4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UgZ2V0IHRoZSBlcnJvciAiRXJyb3IgaW5zdGFsbGluZyBpS2VybmVsLmV4ZTogKDB4MTQwMCkiIGF0IGFueQogICAgICAgICAgcG9pbnQsIGl0J3MgcHJvYmFibHkgYmVjYXVzZSB0aGVyZSBhcmUgbGVmdG92ZXIgcHJvY2Vzc2VzIGZyb20gYQogICAgICAgICAgcHJldmlvdXMgdHJ5LiBZb3UgY2FuIHZlcmlmeSB0aGlzIHdpdGggdGhlIGNvbW1hbmQKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+PHByb21wdD4kIDwvPjxjb21tYW5kPnBzIGF1Z3h3IHwgZ3JlcCB3aW5lPC9jb21tYW5kPjwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHRoYXQgY29tbWFuZCBzaG93cyBvbGQgY29waWVzIG9mIHdpbmUgcnVubmluZyB5b3VyIHNldHVwLAogICAgICAgICAgeW91IG5lZWQgdG8ga2lsbCB0aGVtIGJlZm9yZSB5b3UgY2FuIHJ1biB0aGUgc2V0dXAgcHJvZ3JhbS4KICAgICAgICAgIElmIHRoZXJlIGFyZSBubyBvdGhlciBXaW5lIHByb2dyYW1zIHJ1bm5pbmcsIHlvdSBjYW4ga2lsbCB0aGVtCiAgICAgICAgICBhbGwgd2l0aCB0aGUgY29tbWFuZAogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT48cHJvbXB0PiQgPC8+PGNvbW1hbmQ+a2lsbGFsbCB3aW5lPC9jb21tYW5kPjwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHlvdSdyZSBhbHNvIHJ1bm5pbmcgV2luZSBwcm9ncmFtcyB5b3UgY2FyZSBhYm91dCwgeW91J2xsCiAgICAgICAgICBoYXZlIHRvIGtpbGwgb2ZmIHRoZSBvbGQgU2V0dXAgaW5zdGFuY2VzIG9uZSBieSBvbmUgdXNpbmcKICAgICAgICAgIGtpbGwgYW5kIHRoZSBpbmRpdmlkdWFsIFBJRHMgKG9yIHBlcmhhcHMgV2luZSdzIHNwaWZmeSBUYXNrIE1hbmFnZXIsCiAgICAgICAgICB3aGljaCBkb2Vzbid0IGV4aXN0IHlldCkuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWW91IHNob3VsZCByZXBlYXQgdGhlIDxjb21tYW5kPnBzPC9jb21tYW5kPiB0byBtYWtlIHN1cmUgdGhlIG9sZCAKICAgICAgICAgIFdpbmUgcHJvY2Vzc2VzIGFyZSBnb25lLgogICAgICAgIDwvcGFyYT4KICAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICA8L3FhbmRhZGl2PgogICAgIAogICAgPHFhbmRhZGl2IGlkPSJHZXR0aW5nLWhlbHAiPgogICAgICA8dGl0bGU+R2V0dGluZyBoZWxwPC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSXMtdGhlcmUtYW55LWRvY3VtZW50YXRpb24tZm9yLVdpbmUiPgogICAgICAgIDxwYXJhPklzIHRoZXJlIGFueSBkb2N1bWVudGF0aW9uIGZvciBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFllcywgc2VlIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9zdXBwb3J0LnNodG1sIj4KICAgICAgICAgIGh0dHA6Ly93d3cud2luZWhxLmNvbS9zdXBwb3J0LnNodG1sLjwvdWxpbms+CiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSS1oYXZlLXdyaXR0ZW4tc29tZS1kb2N1bWVudGVudGF0aW9uIj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEkgY291bGRuJ3QgZmluZCB0aGUgYW5zd2VyIHRvIG15IHF1ZXN0aW9uIGluIHRoZSBkb2N1bWVudGF0aW9uLCBidXQKICAgICAgICAgIEkndmUgd3JpdHRlbiBhIGRvY3VtZW50IGV4cGxhaW5pbmcgaG93IHRvIHNvbHZlIGl0LiBXaGF0IHNob3VsZCBJIGRvPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFVwZGF0ZXMgYW5kIGFkZGl0aW9ucyB0byB0aGUgV2luZSBkb2N1bWVudGF0aW9uIGRpcmVjdG9yeSBzaG91bGQgYmUKICAgICAgICAgIHNlbnQgdG8gdGhlIHdpbmUtcGF0Y2hlcyBtYWlsaW5nIGxpc3QgYXQgCiAgICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5jb20vZGV2LnNodG1sI21sIj4KICAgICAgICAgIGh0dHA6Ly93d3cud2luZWhxLmNvbS9kZXYuc2h0bWwjbWw8L3VsaW5rPi4gV2Vic2l0ZSBhbmQgRkFRIAogICAgICAgICAgYWRkaXRpb25zIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgYXBwcm9wcmlhdGUgV2luZSBLbm93bGVkZ2ViYXNlCiAgICAgICAgICBkaXJlY3RvcnkuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSXMtdGhlcmUtYS1Vc2VuZXQtbmV3c2dyb3VwLWZvci1XaW5lIj4KICAgICAgICA8cGFyYT5JcyB0aGVyZSBhIFVzZW5ldCBuZXdzZ3JvdXAgZm9yIFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWWVzLCBhbmQgaXQncyBjYWxsZWQgCiAgICAgICAgICA8dWxpbmsgdXJsPSJuZXdzOmNvbXAuZW11bGF0b3JzLm1zLXdpbmRvd3Mud2luZSI+CiAgICAgICAgICBjb21wLmVtdWxhdG9ycy5tcy13aW5kb3dzLndpbmU8L3VsaW5rPi4gVGhlIG5ld3Nncm91cCBzZXJ2ZXMgYXMgYQogICAgICAgICAgcGxhY2UgZm9yIHVzZXJzIGFuZCBkZXZlbG9wZXJzIHRvIGRpc2N1c3MgV2luZSwgYW5kIGZvciBtaW5vciAKICAgICAgICAgIGFubm91bmNlbWVudHMgZm9yIHRoZSBnZW5lcmFsIHB1YmxpYy4gTWFqb3IgYW5ub3VuY2VtZW50cyB3aWxsIGJlCiAgICAgICAgICBjcm9zc3Bvc3RlZCB0byBvdGhlciBhcHByb3ByaWF0ZSBuZXdzZ3JvdXBzLCBzdWNoIGFzIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHVsaW5rIHVybD0ibmV3czpjb21wLm9zLmxpbnV4LmFubm91bmNlIj4KICAgICAgICAgICAgY29tcC5vcy5saW51eC5hbm5vdW5jZTwvdWxpbms+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDx1bGluayB1cmw9Im5ld3M6Y2NvbXAud2luZG93cy54LmFubm91bmNlIj4KICAgICAgICAgICAgY29tcC53aW5kb3dzLnguYW5ub3VuY2U8L3VsaW5rPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8dWxpbmsgdXJsPSJuZXdzOmNjb21wLmVtdWxhdG9ycy5hbm5vdW5jZSI+CiAgICAgICAgICAgIGNvbXAuZW11bGF0b3JzLmFubm91bmNlPC91bGluaz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3VyIFVzZW5ldCBzaXRlIGRvZXMgbm90IGNhcnJ5IHRoZXNlIG5ld3Nncm91cHMsIHBsZWFzZSB1cmdlIAogICAgICAgICAgeW91ciBJU1AncyBzeXNhZG1pbiB0byBhZGQgYW5kL29yIHVwbGluayB0aGVtLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IklzLXRoZXJlLWEtV29ybGQtV2lkZS1XZWItc2l0ZS1mb3ItV2luZSI+CiAgICAgICAgPHBhcmE+SXMgdGhlcmUgYSBXb3JsZCBXaWRlIFdlYiBzaXRlIGZvciBXaW5lPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgSFEgKDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLmNvbSI+aHR0cDovL3d3dy53aW5laHEuY29tPC91bGluaz4pIGlzIHRoZSBvZmZpY2lhbCBzaXRlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IklzLXRoZXJlLWFuLUlSQy1jaGFubmVsLWZvci1XaW5lIj4KICAgICAgICA8cGFyYT5JcyB0aGVyZSBhbiBJUkMgY2hhbm5lbCBmb3IgV2luZT88L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBTdXJlLiBJdCdzIGNoYW5uZWwgPGZpbGVuYW1lPiNXaW5lSFE8L2ZpbGVuYW1lPiBvbiAKICAgICAgICAgIDxmaWxlbmFtZT5pcmMuZnJlZW5vZGUubmV0PC9maWxlbmFtZT4gc2VlIAogICAgICAgICAgKDx1bGluayB1cmw9Imh0dHA6Ly9mcmVlbm9kZS5uZXQiPmh0dHA6Ly9mcmVlbm9kZS5uZXQ8L3VsaW5rPikuCiAgICAgICAgICBVc3VhbGx5IHNldmVyYWwgV2luZSBkZXZlbG9wZXJzIGhhbmcgb3V0IHRoZXJlIGp1c3QgdG8gaGVscCBZT1UgOy0pCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSS10aGluay1JLWZvdW5kLWEtYnVnLUhvdy1kby1JLXJlcG9ydC1pdCI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJIHRoaW5rIEkndmUgZm91bmQgYSBidWcuIEhvdyBkbyBJIHJlcG9ydCB0aGlzIGJ1ZyB0byB0aGUgV2luZQogICAgICAgICAgcHJvZ3JhbW1pbmcgdGVhbT8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBCdWcgcmVwb3J0cyBzaG91bGQgYmUgc3VibWl0dGVkIHRvIG91ciBvbmxpbmUgQnVnemlsbGEgc3lzdGVtIAogICAgICAgICAgKDx1bGluayB1cmw9Imh0dHA6Ly9idWdzLndpbmVocS5jb20iPmh0dHA6Ly9idWdzLndpbmVocS5jb20vPC91bGluaz4pLgogICAgICAgICAgWW91IHNob3VsZCBpbmNsdWRlIGF0IGxlYXN0IHRoZSBmb2xsb3dpbmc6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhlIFdpbmUgdmVyc2lvbiB0ZXN0ZWQKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhlIFdpbmRvd3MgYXBwbGljYXRpb24gbmFtZSwgaW5jbHVkaW5nIHRoZSB2ZXJzaW9uLCBhbmQsIGlmCiAgICAgICAgICAgIGFwcGxpY2FibGUsIGEgVVJMIHRoZSBhcHBsaWNhdGlvbiBjYW4gYmUgZG93bmxvYWRlZCBmcm9tCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEEgYnJpZWYgZGVzY3JpcHRpb24gb2YgdGhlIGJ1ZwogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGUgcmVsZXZhbnQgcGFydChzKSBvZiB0aGUgb3V0cHV0IG9mIHRoZSBXaW5lIGRlYnVnZ2VyCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEEgc2NyZWVuc2hvdCBvZiB0aGUgdmlzdWFsIHByb2JsZW0sIGlmIGFwcGxpY2FibGUKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgPHBhcmE+CiAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHJlcG9ydGluZyBidWdzIHBsZWFzZSBzZWUgdGhlIAogICAgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5vcmcvRG9jcy93aW5lLXVzZXIvYnVnLXJlcG9ydGluZy5zaHRtbCI+CiAgICAgICAgIEhvdyB0byByZXBvcnQgYSBidWc8L3VsaW5rPiBzZWN0aW9uIG9mIHRoZSBXaW5lIFVzZXJzIEd1aWRlLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KICAgIDwvcWFuZGFkaXY+CiAKICAgIDxxYW5kYWRpdiBpZD0iSGVscGluZy1XaW5lLW9yLWJlY29taW5nLWEtV2luZS1kZXZlbG9wZXIiPgogICAgICA8dGl0bGU+SGVscGluZyBXaW5lIG9yIGJlY29taW5nIGEgV2luZSBkZXZlbG9wZXI8L3RpdGxlPgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctZG8tSS1iZWNvbWUtYS1XaW5lLWRldmVsb3BlciI+CiAgICAgICAgPHBhcmE+SG93IGRvIEkgYmVjb21lIGEgV2luZSBkZXZlbG9wZXI/IFdoYXQgZG8gSSBuZWVkIHRvIGtub3c/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgeW91IGNhbiBwcm9ncmFtIEMsIHRoYXQncyBhIGdvb2Qgc3RhcnQuIERvd25sb2FkIHRoZSBzb3VyY2VzIHZpYQogICAgICAgICAgQ1ZTLCBzdWJzY3JpYmUgdG8gdGhlIG1haWxpbmcgbGlzdHMsIGxvb2sgYXJvdW5kIHRoZSBzb3VyY2UsIGFuZCBwYXkKICAgICAgICAgIGF0dGVudGlvbiB0byB0aGUgY29tcC5lbXVsYXRvcnMubXMtd2luZG93cy53aW5lIG5ld3Nncm91cCBhbmQgdGhlIAogICAgICAgICAgbWFpbGluZyBsaXN0cyAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEuY29tL2Rldi5zaHRtbCNtbCI+aHR0cDovL3d3dy53aW5laHEuY29tL2Rldi5zaHRtbCNtbDwvdWxpbms+KS4gU2VlIGlmIHRoZXJlJ3MgYW55dGhpbmcKICAgICAgICAgIHRoYXQgeW91IHRoaW5rIHlvdSBjYW4gZml4IG9yIHdvcmsgb24uIFlvdSB3b24ndCBoYXZlIG11Y2ggdHJvdWJsZQogICAgICAgICAgZmluZGluZyBhcmVhcyB0aGF0IG5lZWQgd29yayBpbiBXaW5lIChncmVwIGZvciBGSVhNRXMgaW4gdGhlIHNvdXJjZSkuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWNhbi1JLWNvbnRyaWJ1dGUtdG8tdGhlLVdpbmUtcHJvamVjdCI+CiAgICAgICAgPHBhcmE+SG93IGNhbiBJIGhlbHAgY29udHJpYnV0ZSB0byB0aGUgV2luZSBwcm9qZWN0LCBhbmQgaW4gd2hhdCB3YXkocyk/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWW91IGNhbiBjb250cmlidXRlIHByb2dyYW1taW5nIG9yIGRvY3VtZW50YXRpb24gc2tpbGxzLCBvciBtb25ldGFyeQogICAgICAgICAgb3IgZXF1aXBtZW50IGRvbmF0aW9ucywgdG8gYWlkIHRoZSBXaW5lIGRldmVsb3BlcnMgaW4gcmVhY2hpbmcgdGhlaXIgCiAgICAgICAgICBnb2Fscy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBGb3IgYSBsaXN0IG9mIGlkZWFzIG9mIGhvdyB5b3UgY2FuIGhlbHAsIHBsZWFzZSBjb25zdWx0IHRoZSAKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLmNvbS9hYm91dC9pbmRleC5waHA/Y29udHJpYiI+CiAgICAgICAgICBXaW5lIGNvbnRyaWIgcGFnZTwvdWxpbms+LgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9Ikktd2FudC10by1oZWxwLWJldGEtdGVzdC1XaW5lIj4KICAgICAgICA8cGFyYT5JIHdhbnQgdG8gaGVscCBiZXRhIHRlc3QgV2luZS4gSG93IGNhbiBJIGRvIHRoaXM/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgV2luZSBzdGlsbCBjb25zaXN0cyBvZiBzb21lIEFscGhhIGNvZGUgYXQgdGhpcyB0aW1lLiBIb3dldmVyLCBhbnlvbmUKICAgICAgICAgIGlzIHdlbGNvbWUgdG8gZG93bmxvYWQgdGhlIGxhdGVzdCB2ZXJzaW9uLCBhbmQgdHJ5IGl0IG91dCBhdCBhbnkKICAgICAgICAgIHRpbWUuCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSS13cm90ZS1zb21lLWNvZGUtSS13b3VsZC1saWtlLXRvLXN1Ym1pdCI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJIGhhdmUgd3JpdHRlbiBzb21lIGNvZGUgdGhhdCBJIHdvdWxkIGxpa2UgdG8gc3VibWl0IHRvIHRoZSBXaW5lCiAgICAgICAgICBwcm9qZWN0LiBIb3cgZG8gSSBnbyBhYm91dCBkb2luZyB0aGlzPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFBhdGNoZXMgYXJlIGdyZWF0bHkgYXBwcmVjaWF0ZWQgYW5kIHNob3VsZCBiZSBzdWJtaXR0ZWQgdG8gdGhlIAogICAgICAgICAgd2luZS1wYXRjaGVzIG1haWxpbmcgbGlzdCAKICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LndpbmVocS5jb20vZGV2LnNodG1sI21sIj5odHRwOi8vd3d3LndpbmVocS5jb20vZGV2LnNodG1sI21sPC91bGluaz4pLiBBbHNvIHNlZSB0aGlzIHBhZ2UgZm9yCiAgICAgICAgICBhIGRlc2NyaXB0aW9uIG9mIHdoYXQgaGFwcGVucyB0byBzdWJtaXR0ZWQgcGF0Y2hlcy4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CiAgICA8L3FhbmRhZGl2PgogCiAgICA8cWFuZGFkaXYgaWQ9IkRldmVsb3BpbmctcHJvZ3JhbXMtdXNpbmctV2luZS1XaW5lTGliIj4KICAgICAgPHRpdGxlPkRldmVsb3BpbmcgcHJvZ3JhbXMgdXNpbmcgV2luZS9XaW5lTGliPC90aXRsZT4KICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iQ2FuLUktdXNlLVdpbmUtdG8tcG9ydC1XaW4zMi1zb3VyY2VzLXRvLVVuaXgiPgogICAgICAgIDxwYXJhPkNhbiBJIHVzZSBXaW5lIHRvIHBvcnQgbXkgV2luMzIgc291cmNlcyB0byBVbml4PzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoYXQgaXMgdGhlIGlkZWEgb2YgV2luZWxpYi4gUmlnaHQgbm93IHlvdSBtYXkgc3RpbGwgaGF2ZSBzb21lIAogICAgICAgICAgZGlmZmljdWx0aWVzLCBidXQgdGhpcyBpcyBjaGFuZ2luZyBhbGwgdGhlIHRpbWUuIFJlYWQgdGhlIAogICAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL0RvY3Mvd2luZWxpYi11c2VyLyI+V2luZWxpYiBVc2VyJ3MgR3VpZGU8L3VsaW5rPiBmb3IgaW5mby4KCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaWxsLU1GQy13b3JrLXdpdGgtV2luZS1XaGF0LWRvLUktbmVlZC10by1kbyI+CiAgICAgICAgPHBhcmE+V2lsbCBNRkMgd29yayB3aXRoIFdpbmU/IFdoYXQgZG8gSSBuZWVkIHRvIGRvPzwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFdpbmUgaXMgbm90IGltcGxlbWVudGluZyBhbiBNRkMgcmVwbGFjZW1lbnQgbm9yIGRvZXMgaXQgaW50ZW5kIHRvLgogICAgICAgICAgSG93ZXZlciBpdCBpcyBwb3NzaWJsZSAod2l0aCBhIGxvdCBvZiB3b3JrKSB0byBjb21waWxlIHRoZSBNRkMgZnJvbQogICAgICAgICAgc291cmNlIGFuZCB0aHVzIHByb2R1Y2UgYW4gPGZpbGVuYW1lPm1mYzQyLmRsbC5zbzwvZmlsZW5hbWU+IGxpYnJhcnkuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUGxlYXNlIHJlZmVyIHRvIHRoZSAKICAgICAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cud2luZWhxLm9yZy9Eb2NzL3dpbmVsaWItdXNlci8iPldpbmVsaWIgVXNlcidzIEd1aWRlPC91bGluaz4gZm9yIGhvdyB0byBkbyB0aGlzLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgICAgIDxxYW5kYWVudHJ5PgogICAgICA8cXVlc3Rpb24gaWQ9IkFyZS10aGVyZS1jb21tZXJjaWFsLWFwcHMtcG9ydGVkLXVzaW5nLVdpbmUiPgogICAgICAgIDxwYXJhPgogICAgICAgICAgQXJlIHRoZXJlIGFueSBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucyB3aGljaCBoYXZlIGJlZW4gcG9ydGVkCiAgICAgICAgICB1c2luZyBXaW5lPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9xdWVzdGlvbj4KICAgICAgPGFuc3dlcj4KICAgICAgICA8cGFyYT4KICAgICAgICAgIEEgZmV3IGV4YW1wbGVzIG9mIGFwcGxpY2F0aW9ucyB1c2luZyBXaW5lbGliOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIENvcmVsJ3MgV29yZFBlcmZlY3QgT2ZmaWNlIFN1aXRlIAogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBBYmlsaXR5IE9mZmljZQogICAgICAgICAgICAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy5hYmlsaXR5LmNvbS9saW51eC9hYmlsaXR5bGludXgucGhwIj5odHRwOi8vd3d3LmFiaWxpdHkuY29tL2xpbnV4L2FiaWxpdHlsaW51eC5waHA8L3VsaW5rPikKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgSUJNJ3MgV2Vic3BoZXJlCiAgICAgICAgICAgICg8dWxpbmsgdXJsPSJodHRwOi8vd3d3N2IuYm91bGRlci5pYm0uY29tL2RsL3N3d3Mvc3d3c2dkZGItcCI+aHR0cDovL3d3dzdiLmJvdWxkZXIuaWJtLmNvbS9kbC9zd3dzL3N3d3NnZGRiLXA8L3VsaW5rPikKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBNYW55IG90aGVyIGltcG9ydGFudCBhcHBsaWNhdGlvbnMgaGF2ZSBhbHJlYWR5IGJlZW4gcG9ydGVkLiAod2UgYXJlCiAgICAgICAgICBzcGVha2luZyBvZiBzZXZlcmFsIHRvcCA1MDAgYXBwbGljYXRpb25zIGhlcmUpCiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgICAgPHFhbmRhZW50cnk+CiAgICAgIDxxdWVzdGlvbiBpZD0iSG93LWNhbi1JLWRldGVjdC1XaW5lIj4KICAgICAgICA8cGFyYT5Ib3cgY2FuIEkgZGV0ZWN0IFdpbmU/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgWW91IHJlYWxseSBzaG91bGRuJ3Qgd2FudCB0byBkbyB0aGlzLiBJZiB0aGVyZSdzIGEgcXVpcmsgaW4gV2luZSAKICAgICAgICAgIHlvdSBuZWVkIHRvIHdvcmsgYXJvdW5kLCBpdCdzIG11Y2ggYmV0dGVyIHRvIGZpeCBpdCBpbiBXaW5lIChhZnRlcgogICAgICAgICAgYWxsIHlvdSdyZSBhIGRldmVsb3Blciwgc28geW91IHNob3VsZCBiZSBhYmxlIHRvIGdhdGhlciBlbm91Z2ggaGVscAogICAgICAgICAgYW5kIGtub3dsZWRnZSB0byBmaXggaXQgZm9yIHJlYWwpLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9hbnN3ZXI+CiAgICAgIDwvcWFuZGFlbnRyeT4KCiAgCiAgICA8L3FhbmRhZGl2PgoKICAgIDxxYW5kYWRpdiBpZD0iV2luZS1IUS1pc3N1ZXMiPgogICAgICA8dGl0bGU+V2luZSBIUSBpc3N1ZXM8L3RpdGxlPgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJXaHktYXJlLXRoZS1tYWlsbGlzdHMtc2V0LXRvLXJlcGx5LXRvLWF1dGhvciI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaHkgYXJlIHRoZSBtYWlsbGlzdHMgc2V0IHRvIHJlcGx5IHRvIGF1dGhvciwgbm90IHRvIG1haWxpbmcgbGlzdD8KICAgICAgICA8L3BhcmE+CiAgICAgIDwvcXVlc3Rpb24+CiAgICAgIDxhbnN3ZXI+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGVyZSBhcmUgdmVyeSB2YWxpZCByZWFzb25zIGZvciBkb2luZyBzby4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvYW5zd2VyPgogICAgICA8L3FhbmRhZW50cnk+CgogICAgICA8cWFuZGFlbnRyeT4KICAgICAgPHF1ZXN0aW9uIGlkPSJIb3ctdG8tdW5zdWJzY3JpYmUtZnJvbS10aGUtbWFpbGluZy1saXN0cyI+CiAgICAgICAgPHBhcmE+SG93IHRvIHVuc3Vic2NyaWJlIGZyb20gdGhlIG1haWxpbmcgbGlzdHM/PC9wYXJhPgogICAgICA8L3F1ZXN0aW9uPgogICAgICA8YW5zd2VyPgogICAgICAgIDxwYXJhPgogICAgICAgICAgUGxlYXNlIHNlZTogPHVsaW5rIHVybD0iaHR0cDovL3d3dy53aW5laHEub3JnL2RldmVsb3BtZW50LyNtbCI+aHR0cDovL3d3dy53aW5laHEub3JnL2RldmVsb3BtZW50LyNtbDwvdWxpbms+CiAgICAgICAgPC9wYXJhPgogICAgICA8L2Fuc3dlcj4KICAgICAgPC9xYW5kYWVudHJ5PgoKICAgIDwvcWFuZGFkaXY+CiAKICA8L3FhbmRhc2V0PgoKPCEtLSBLZWVwIHRoaXMgY29tbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlCkxvY2FsIHZhcmlhYmxlczoKbW9kZTogc2dtbApzZ21sLXBhcmVudC1kb2N1bWVudDooIndpbmUtZGV2ZWwuc2dtbCIgImJvb2siICJwYXJ0IiAiY2hhcHRlciIgIiIpCkVuZDoKLS0+Cg==