15 KiB
IyBMdWNpZCBNQ1AgVG9vbCBSZWZlcmVuY2UgR3VpZGUKCkZ1bGwgZGV0YWlsIG9uIGV2ZXJ5IEx1 Y2lkIE1DUCB0b29sOiB3aGF0IGl0IGRvZXMsIHdoZW4gdG8gdXNlIGl0LCBleGFtcGxlIHByb21w dHMsIGFuZCBlZGdlIGNhc2VzLgoKLS0tCgojIyBUb29sOiBTZWFyY2ggRG9jdW1lbnRzCgoqKlB1 cnBvc2U6KiogRnVsbC10ZXh0IHNlYXJjaCBhY3Jvc3MgdGhlIHVzZXIncyBlbnRpcmUgTHVjaWQg bGlicmFyeSAoTHVjaWRjaGFydCArIEx1Y2lkc3BhcmspLgoKKipJbnB1dDoqKiBOYXR1cmFsIGxh bmd1YWdlIHF1ZXJ5IGRlc2NyaWJpbmcgd2hhdCB0byBmaW5kLgoKKipPdXRwdXQ6KiogTGlzdCBv ZiBtYXRjaGluZyBkb2N1bWVudHMgd2l0aCB0aXRsZXMsIGRvY3VtZW50IHR5cGVzLCBhbmQgZGly ZWN0IGxpbmtzLgoKKipFeGFtcGxlIHByb21wdHM6KioKLSAiRmluZCBteSBCaXJtaW5naGFtIHRy YW5zaXQgYXJjaGl0ZWN0dXJlIGRpYWdyYW0iCi0gIlNlYXJjaCBmb3IgYW55IHByb2Nlc3MgZmxv d3MgcmVsYXRlZCB0byBkaXNwbGF5IGluc3RhbGxhdGlvbiIKLSAiRG8gSSBoYXZlIGEgZGlhZ3Jh bSBzaG93aW5nIHRoZSBSRE1DIEFQSSBpbnRlZ3JhdGlvbj8iCi0gIkZpbmQgbGFzdCBtb250aCdz IHN0YW5kdXAgYm9hcmQiCgoqKkVkZ2UgY2FzZXM6KioKLSBJZiBubyByZXN1bHRzIGZvdW5kOiBh c2sgdGhlIHVzZXIgZm9yIGFsdGVybmF0ZSBzZWFyY2ggdGVybXMgb3Igd2hldGhlciB0aGUgZG9j dW1lbnQgbWlnaHQgYmUgaW4gYSBzaGFyZWQgZm9sZGVyCi0gSWYgbWFueSByZXN1bHRzOiBsaXN0 IHRvcCA1IHdpdGggdGl0bGVzLCBhc2sgdXNlciB0byBzZWxlY3QKLSBTZWFyY2ggbWF5IG5vdCBm aW5kIGNvbnRlbnQgb24gcGFnZXMgMisgb2YgYSBkb2N1bWVudCAoa25vd24gTHVjaWQgbGltaXRh dGlvbiBhcyBvZiBNYXkgMjAyNikKCi0tLQoKIyMgVG9vbDogR2V0IERvY3VtZW50IENvbnRlbnQg LyBTdW1tYXJ5CgoqKlB1cnBvc2U6KiogUmV0cmlldmUgdGhlIHRleHR1YWwgY29udGVudCwgc2hh cGUgbGFiZWxzLCBjb25uZWN0aW9ucywgYW5kIHN0cnVjdHVyZSBvZiBhIHNwZWNpZmljIEx1Y2lk IGRvY3VtZW50LgoKKipJbnB1dDoqKiBEb2N1bWVudCBJRCBvciBVUkwuCgoqKk91dHB1dDoqKiBT dHJ1Y3R1cmVkIGRlc2NyaXB0aW9uIG9mIGRvY3VtZW50IGNvbnRlbnQg4oCUIHNoYXBlcywgbGFi ZWxzLCBhcnJvd3MsIHN3aW0gbGFuZXMsIHBhZ2UgdGl0bGVzLgoKKipFeGFtcGxlIHByb21wdHM6 KioKLSAiU3VtbWFyaXplIHRoZSBrZXkgc3RlcHMgaW4gdGhpcyBwcm9jZXNzIGRpYWdyYW06IFtV UkxdIgotICJXaGF0IG5vZGVzIGFyZSBpbiB0aGUgYXJjaGl0ZWN0dXJlIGRpYWdyYW0gSSBqdXN0 IGZvdW5kPyIKLSAiTGlzdCBhbGwgdGhlIHNoYXBlcyBhbmQgY29ubmVjdGlvbnMgaW4gdGhpcyBm bG93Y2hhcnQiCi0gIldoYXQncyB0aGUgZGF0YSBmbG93IHNob3duIGluIHRoaXMgRVIgZGlhZ3Jh bT8iCgoqKlVzYWdlIHBhdHRlcm46KiogVHlwaWNhbGx5IGZvbGxvd3MgYSBzZWFyY2gg4oCUIHRh a2UgdGhlIGRvY3VtZW50IFVSTCBmcm9tIHNlYXJjaCByZXN1bHRzIGFuZCBwYXNzIGl0IHRvIHRo aXMgdG9vbC4KCioqRWRnZSBjYXNlczoqKgotIENvbXBsZXggZGlhZ3JhbXMgd2l0aCBtYW55IHBh Z2VzOiBzdW1tYXJpemUgcGFnZSBieSBwYWdlLCBhc2sgdXNlciB3aGljaCBwYWdlcyBtYXR0ZXIK LSBEaWFncmFtcyB3aXRoIGVtYmVkZGVkIGltYWdlcyBvciBjdXN0b20gc2hhcGVzOiBkZXNjcmli ZSBsYXlvdXQgYW5kIGxhYmVsIHRleHQgb25seQotIElmIGNvbnRlbnQgaXMgc3BhcnNlL2VtcHR5 OiByZXBvcnQgdGhhdCB0aGUgZG9jdW1lbnQgYXBwZWFycyBibGFuayBvciBjb250YWlucyBtb3N0 bHkgaW1hZ2VzCgotLS0KCiMjIFRvb2w6IENyZWF0ZSBEaWFncmFtCgoqKlB1cnBvc2U6KiogR2Vu ZXJhdGUgYSBuZXcgTHVjaWQgZGlhZ3JhbSB3aXRoIHN0YW5kYXJkIHNoYXBlcyBiYXNlZCBvbiBh IHRleHQgZGVzY3JpcHRpb24uCgoqKklucHV0OioqIFN0cnVjdHVyZWQgZGVzY3JpcHRpb24gaW5j bHVkaW5nOgotIERpYWdyYW0gdHlwZSAoZmxvd2NoYXJ0LCBzZXF1ZW5jZSwgRVIsIHVzZXIgZmxv dywgbmV0d29yaywgc3dpbSBsYW5lLCBldGMuKQotIE5vZGUvc2hhcGUgbmFtZXMgYW5kIGxhYmVs cwotIENvbm5lY3Rpb25zICh3aGljaCBub2RlIGNvbm5lY3RzIHRvIHdoaWNoLCBkaXJlY3Rpb24s IGxhYmVsIG9uIGFycm93IGlmIGFueSkKLSBBbnkgYnJhbmNoaW5nL2RlY2lzaW9uIGxvZ2ljCgoq Kk91dHB1dDoqKiBMaW5rIHRvIG5ld2x5IGNyZWF0ZWQgTHVjaWRjaGFydCBkb2N1bWVudC4KCioq U3VwcG9ydGVkIGRpYWdyYW0gdHlwZXMgKHN0YW5kYXJkIHNoYXBlcyk6KioKLSBQcm9jZXNzIGZs b3djaGFydHMKLSBVc2VyIGZsb3cgZGlhZ3JhbXMKLSBTZXF1ZW5jZSBkaWFncmFtcwotIEVudGl0 eS1yZWxhdGlvbnNoaXAgKEVSKSBkaWFncmFtcwotIE5ldHdvcmsgLyBzeXN0ZW0gYXJjaGl0ZWN0 dXJlIGRpYWdyYW1zCi0gU3dpbSBsYW5lIGRpYWdyYW1zCi0gTWluZCBtYXBzCi0gT3JnIGNoYXJ0 cyAoc2VlIGRlZGljYXRlZCBvcmcgY2hhcnQgdG9vbCBiZWxvdykKCioqTk9UIHN1cHBvcnRlZCAo YXMgb2YgTWF5IDIwMjYpOioqCi0gQ3VzdG9tIHNoYXBlIGxpYnJhcmllcyAoREZELCBBV1MsIEdD UCwgQXp1cmUgc3BlY2lmaWMgaWNvbnMpIOKAlCB0aGVzZSByZXF1aXJlIG1hbnVhbCBlZGl0aW5n IGluIEx1Y2lkY2hhcnQKLSBDdXN0b20vYnJhbmRlZCBzaGFwZSBzZXRzCgoqKkV4YW1wbGUgcHJv bXB0czoqKgotICJDcmVhdGUgYSB1c2VyIGZsb3cgZm9yIHRoZSBkaXNwbGF5IHByb3Zpc2lvbmlu ZyBwcm9jZXNzIGluIEx1Y2lkLiBTdGFydCBhdCAnTmV3IERpc3BsYXknLCBzaG93ICdSZWdpc3Rl ciBpbiBSRE1DJywgYnJhbmNoIHRvICdPbmxpbmUgQ2hlY2snLCBhbmQgZW5kIGF0ICdEZXBsb3ll ZCcuIgotICJCdWlsZCBhIHNlcXVlbmNlIGRpYWdyYW0gaW4gTHVjaWQgc2hvd2luZyB0aGUgUkRN QyBwb2xsaW5nIGEgZGlzcGxheSBldmVyeSA2MCBzZWNvbmRzIOKAlCBpbmNsdWRlIHRoZSBzdGF0 dXMgcmVzcG9uc2UuIgotICJNYWtlIGEgc3dpbSBsYW5lIGZsb3djaGFydCBpbiBMdWNpZCBmb3Ig b3VyIGhlbHBkZXNrIGVzY2FsYXRpb246IGxhbmVzIGZvciBDdXN0b21lciwgTDEgU3VwcG9ydCwg YW5kIEVuZ2luZWVyaW5nLiIKLSAiQ3JlYXRlIGFuIEVSIGRpYWdyYW0gaW4gTHVjaWQgZm9yIG91 ciBkaXNwbGF5IGludmVudG9yeSBzY2hlbWE6IERpc3BsYXksIExvY2F0aW9uLCBBZ2VuY3ksIGFu ZCBTZXJ2aWNlUmVjb3JkIHRhYmxlcy4iCgoqKkJlZm9yZSBpbnZva2luZzoqKiBJZiB0aGUgdXNl cidzIGRlc2NyaXB0aW9uIGlzIGhpZ2gtbGV2ZWwgKGUuZy4sICJtYWtlIGEgZGlhZ3JhbSBmb3Ig b3VyIGRlcGxveW1lbnQgcHJvY2VzcyIpLCBhc2sgZm9yIHRoZSBrZXkgc3RlcHMgb3Igbm9kZXMg YmVmb3JlIGdlbmVyYXRpbmcuIFRoaXMgYXZvaWRzIGEgdXNlbGVzcyBmaXJzdCBkcmFmdC4KCi0t LQoKIyMgVG9vbDogQ3JlYXRlIE9yZyBDaGFydAoKKipQdXJwb3NlOioqIEdlbmVyYXRlIGEgc3Ry dWN0dXJlZCBvcmcgY2hhcnQgZGlhZ3JhbSBpbiBMdWNpZCBmcm9tIHRleHQgb3IgQ1NWIGRhdGEu CgoqKklucHV0ICh0ZXh0KToqKiBOYXR1cmFsIGxhbmd1YWdlIGRlc2NyaXB0aW9uIG9mIGhpZXJh cmNoeS4KLSBFeGFtcGxlOiAiQ3JlYXRlIGFuIG9yZyBjaGFydCB3aGVyZSBCcnlhbiBpcyBhdCB0 aGUgdG9wLiBVbmRlciBCcnlhbiBhcmUgU2FyYWggKERpcmVjdG9yIG9mIE9wcykgYW5kIE1pa2Ug KERpcmVjdG9yIG9mIEVuZ2luZWVyaW5nKS4gVW5kZXIgTWlrZSBhcmUgZm91ciBlbmdpbmVlcnM6 IEFsZXgsIEphbWllLCBDaHJpcywgYW5kIERhbmEuIgoKKipJbnB1dCAoQ1NWKToqKiBVcGxvYWRl ZCBDU1Ygd2l0aCBhdCBtaW5pbXVtOgotIE5hbWUgY29sdW1uCi0gTWFuYWdlci9SZXBvcnRzLVRv IGNvbHVtbgotIE9wdGlvbmFsOiBUaXRsZSwgRGVwYXJ0bWVudCwgRW1haWwKCioqQ1NWIGNvbHVt biBtYXBwaW5nIOKAlCBjb25maXJtIGJlZm9yZSBnZW5lcmF0aW5nOioqCi0gTmFtZSDihpIgcGVy c29uJ3MgZnVsbCBuYW1lCi0gTWFuYWdlciDihpIgdGhlaXIgZGlyZWN0IG1hbmFnZXIncyBuYW1l IChibGFuayA9IHRvcCBvZiBoaWVyYXJjaHkpCi0gVGl0bGUg4oaSIGpvYiB0aXRsZSAob3B0aW9u YWwgYnV0IHJlY29tbWVuZGVkKQotIERlcGFydG1lbnQg4oaSIHVzZWQgZm9yIGdyb3VwaW5nL2Nv bG9yIChvcHRpb25hbCkKCioqT3V0cHV0OioqIExpbmsgdG8gbmV3bHkgY3JlYXRlZCBvcmcgY2hh cnQgaW4gTHVjaWQuCgoqKkV4YW1wbGUgcHJvbXB0czoqKgotICJCdWlsZCBhbiBvcmcgY2hhcnQg Zm9yIE1QTSB3aGVyZSBCcnlhbiBpcyBDRU8uIFVuZGVyIEJyeWFuOiBTYXJhaCAoQ09PKSwgTWlr ZSAoQ1RPKSwgYW5kIEplc3MgKFZQIFNhbGVzKS4iCi0gIkdlbmVyYXRlIGFuIG9yZyBjaGFydCBm cm9tIHRoaXMgQ1NWIGZpbGUgSSdtIHVwbG9hZGluZy4gTmFtZSBpcyBjb2x1bW4gQSwgTWFuYWdl ciBpcyBjb2x1bW4gQy4iCi0gIkNyZWF0ZSBhIGRlcGFydG1lbnQgaGllcmFyY2h5IGZvciBvdXIg RW5naW5lZXJpbmcgdGVhbSBpbiBMdWNpZC4iCgoqKkVkZ2UgY2FzZXM6KioKLSBDaXJjdWxhciBy ZWZlcmVuY2VzIGluIENTViAoQSByZXBvcnRzIHRvIEIsIEIgcmVwb3J0cyB0byBBKTogZmxhZyBh bmQgYXNrIHVzZXIgdG8gcmVzb2x2ZSBiZWZvcmUgZ2VuZXJhdGluZwotIE1pc3NpbmcgbWFuYWdl ciBuYW1lcyB0aGF0IGRvbid0IG1hdGNoIGFueSBOYW1lIGluIHRoZSBkYXRhc2V0OiBmbGFnIGFz IG9ycGhhbmVkIG5vZGVzCi0gVmVyeSBsYXJnZSBvcmcgY2hhcnRzICg1MCsgcGVvcGxlKTogd2Fy biB0aGF0IGdlbmVyYXRpb24gbWF5IHRha2UgbG9uZ2VyIGFuZCB0aGUgZGlhZ3JhbSB3aWxsIG5l ZWQgbGF5b3V0IGFkanVzdG1lbnQgaW4gTHVjaWRjaGFydAoKLS0tCgojIyBUb29sOiBTaGFyZSBE b2N1bWVudAoKKipQdXJwb3NlOioqIFNoYXJlIGEgTHVjaWQgZG9jdW1lbnQgd2l0aCBhIHNwZWNp ZmljIHBlcnNvbiBieSBlbWFpbC4KCioqSW5wdXQ6KioKLSBEb2N1bWVudCBJRCBvciBVUkwKLSBS ZWNpcGllbnQgZW1haWwgYWRkcmVzcwotIFBlcm1pc3Npb24gbGV2ZWw6IFZpZXcsIENvbW1lbnQs IEVkaXQsIG9yIEVkaXQgYW5kIFNoYXJlCgoqKk91dHB1dDoqKiBDb25maXJtYXRpb24gdGhhdCB0 aGUgc2hhcmUgd2FzIHNlbnQuCgoqKkV4YW1wbGUgcHJvbXB0czoqKgotICJTaGFyZSBteSAnSW5z dGFsbGF0aW9uIFByb2Nlc3MgRmxvdycgTHVjaWQgZG9jIHdpdGggc2FyYWhAbWVzc2FnZXBvaW50 Lm1lZGlhIHdpdGggZWRpdCBwZXJtaXNzaW9ucy4iCi0gIkdpdmUgYnJ5YW5AbWVzc2FnZXBvaW50 Lm1lZGlhIHZpZXctb25seSBhY2Nlc3MgdG8gdGhlIEJpcm1pbmdoYW0gYXJjaGl0ZWN0dXJlIGRp YWdyYW0uIgotICJTaGFyZSB0aGlzIGJvYXJkIHdpdGggbXkgd2hvbGUgdGVhbSBhdCBtZXNzYWdl cG9pbnQubWVkaWEg4oCUIGdpdmUgdGhlbSBjb21tZW50IGFjY2Vzcy4iCgoqKlBlcm1pc3Npb24g bGV2ZWwgZ3VpZGU6KioKLSAqKlZpZXc6KiogQ2FuIHNlZSB0aGUgZG9jdW1lbnQsIGNhbm5vdCBl ZGl0IG9yIHNoYXJlCi0gKipDb21tZW50OioqIENhbiBhZGQgY29tbWVudHMsIGNhbm5vdCBlZGl0 IHNoYXBlcwotICoqRWRpdDoqKiBDYW4gbW9kaWZ5IGRpYWdyYW0gY29udGVudAotICoqRWRpdCBh bmQgU2hhcmU6KiogRnVsbCBhY2Nlc3MgaW5jbHVkaW5nIHJlLXNoYXJpbmcgd2l0aCBvdGhlcnMK CioqQWx3YXlzIGNvbmZpcm0gYmVmb3JlIGV4ZWN1dGluZzoqKiAiSSdsbCBzaGFyZSBbZG9jdW1l bnQgdGl0bGVdIHdpdGggW2VtYWlsXSBhdCBbcGVybWlzc2lvbiBsZXZlbF0uIENvbmZpcm0/IgoK LS0tCgojIyBUb29sOiBDcmVhdGUgU2hhcmUgTGluawoKKipQdXJwb3NlOioqIEdlbmVyYXRlIGEg c2hhcmVhYmxlIFVSTCB0byBhIEx1Y2lkIGRvY3VtZW50IHdpdGggc3BlY2lmaWVkIHBlcm1pc3Np b25zLgoKKipJbnB1dDoqKgotIERvY3VtZW50IElEIG9yIFVSTAotIExpbmsgcGVybWlzc2lvbiB0 eXBlOiBWaWV3LCBDb21tZW50LCBvciBFZGl0CgoqKk91dHB1dDoqKiBTaGFyZWFibGUgVVJMIHN0 cmluZy4KCioqRXhhbXBsZSBwcm9tcHRzOioqCi0gIkNyZWF0ZSBhIHZpZXctb25seSBzaGFyZSBs aW5rIGZvciB0aGUgUHJvamVjdCBQcm9wb3NhbCBkaWFncmFtLiIKLSAiR2V0IG1lIGEgY29tbWVu dC1lbmFibGVkIGxpbmsgZm9yIHRoaXMgYm9hcmQgc28gc3Rha2Vob2xkZXJzIGNhbiBsZWF2ZSBm ZWVkYmFjay4iCi0gIk1ha2UgYSBzaGFyZWFibGUgbGluayBmb3IgdGhpcyBmbG93Y2hhcnQg4oCU IGVkaXQgcGVybWlzc2lvbnMuIgoKKipVc2UgY2FzZXM6KioKLSBFbWJlZGRpbmcgaW4gZW1haWxz LCBTbGFjayBtZXNzYWdlcywgb3IgcHJvcG9zYWxzCi0gU2hhcmluZyB3aXRoIHBlb3BsZSB3aG8g ZG9uJ3QgaGF2ZSBhIEx1Y2lkIGFjY291bnQgKHZpZXcgbGlua3Mgd29yayB3aXRob3V0IGxvZ2lu KQotIERpc3RyaWJ1dGluZyB0byBleHRlcm5hbCBjbGllbnRzIG9yIHRyYW5zaXQgYWdlbmNpZXMK CioqQWZ0ZXIgZ2VuZXJhdGluZzoqKiBPZmZlciB0byBzZW5kIHRoZSBsaW5rIHZpYSBlbWFpbCBv ciBjb3B5IGl0IGludG8gYW4gb3BlbiBkb2N1bWVudC9lbWFpbCBkcmFmdC4KCi0tLQoKIyMgVG9v bDogQ29udmVydCBTVkcgdG8gRGlhZ3JhbSAobHVjaWRfY29udmVydF9zdmdfdG9fZGlhZ3JhbSkK CioqUHVycG9zZToqKiBDb252ZXJ0IGEgY29tcGxldGUgU1ZHIGRpcmVjdGx5IGludG8gYSBuZXcg ZWRpdGFibGUgTHVjaWRjaGFydCBkb2N1bWVudC4gVGhpcyBpcyB0aGUgKipwcmVmZXJyZWQgdG9v bCBmb3IgY3JlYXRpbmcgbW9zdCBkaWFncmFtcyoqIOKAlCBpdCBwcmVzZXJ2ZXMgY29sb3IsIGhh bmRsZXMgY3VzdG9tIHNoYXBlcywgYW5kIHByb2R1Y2VzIGhpZ2hlci1maWRlbGl0eSBvdXRwdXQg dGhhbiB0aGUgSlNPTiBzcGVjIHBhdGguCgoqKldoZW4gdG8gdXNlOioqCi0gQW55IHRpbWUgYSBm bG93Y2hhcnQsIHByb2Nlc3MgZmxvdywgbmV0d29yayBkaWFncmFtLCBhcmNoaXRlY3R1cmUgZGlh Z3JhbSwgdXNlciBmbG93LCBvciBFUiBkaWFncmFtIGlzIG5lZWRlZCDigJQgZ2VuZXJhdGUgdGhl IFNWRywgdGhlbiBwYXNzIGl0IGhlcmUgdmVyYmF0aW0KLSBBbnkgdGltZSBDbGF1ZGUgaGFzIGFs cmVhZHkgZHJhd24gYW4gU1ZHIChlLmcuIGEgdmlzdWFsaXplIHdpZGdldCBpbiBjaGF0KSBhbmQg dGhlIHVzZXIgd2FudHMgaXQgZWRpdGFibGUgaW4gTHVjaWQKLSBBbnkgdGltZSBjdXN0b20gb3Ig YnJhbmRlZCBzaGFwZXMgbmVlZCB0byBiZSBlbWJlZGRlZCBpbiBhIEx1Y2lkIGRpYWdyYW0KCioq V2hlbiBOT1QgdG8gdXNlOioqCi0gU2VxdWVuY2UgZGlhZ3JhbXMg4oaSIHVzZSBgbHVjaWRfY3Jl YXRlX3NlcXVlbmNlX2RpYWdyYW1gIChQbGFudFVNTCkKLSBPcmcgY2hhcnRzIOKGkiB1c2UgYGx1 Y2lkX2NyZWF0ZV9vcmdfY2hhcnRgCi0gRGlhZ3JhbXMgcmVxdWlyaW5nIEx1Y2lkLW5hdGl2ZSBz aGFwZSB0eXBlczogQlBNTiBwb29scywgVU1MIGNsYXNzIGJsb2NrcywgbmFtZWQgQVdTL0dDUC9B enVyZSBsaWJyYXJ5IHNoYXBlcywgbHVjaWRDYXJkLCB0YWJsZXMg4oaSIHVzZSBgbHVjaWRfY3Jl YXRlX2RpYWdyYW1fZnJvbV9zcGVjaWZpY2F0aW9uYAoKKipJbnB1dDoqKgotIGB0aXRsZWA6IERv Y3VtZW50IHRpdGxlCi0gYHN2Z2A6IEEgdmFsaWQgU1ZHIHN0cmluZyB3aXRoIGA8c3ZnPmAgdGFn LCBtYXggMjU2S0IuIFBhc3MgKip2ZXJiYXRpbSoqIOKAlCBkbyBub3Qgc2ltcGxpZnkgb3IgcmV3 cml0ZSBiZWZvcmUgY2FsbGluZy4KLSBgcHJvZHVjdGA6IGAibHVjaWRjaGFydCJgIChkZWZhdWx0 KSBvciBgImx1Y2lkc3BhcmsiYAoKKipTdXBwb3J0ZWQgU1ZHIGVsZW1lbnRzOioqIGA8cmVjdD5g LCBgPHBvbHlnb24+YCwgYDxlbGxpcHNlPmAsIGA8Y2lyY2xlPmAsIGA8bGluZT5gLCBgPHBhdGg+ YCwgYDx0ZXh0PmAuIFRoZXNlIG1hcCB0byBMdWNpZCBmbG93Y2hhcnQgc2hhcGVzIChwcm9jZXNz IGJveGVzLCBkZWNpc2lvbiBkaWFtb25kcywgdGVybWluYXRvcnMsIGNpcmNsZXMpIHdpdGggY29u bmVjdGluZyBsaW5lcy4KCioqQ29sb3IgaGFuZGxpbmc6KiogQ29sb3JzIGFwcGxpZWQgdmlhIGlu bGluZSBgZmlsbGAgYW5kIGBzdHJva2VgIGF0dHJpYnV0ZXMgYXJlIHByZXNlcnZlZC4gVGhlbWUg Y2xhc3NlcyBgYy1wdXJwbGVgLCBgYy10ZWFsYCwgYGMtY29yYWxgLCBgYy1ibHVlYCwgYGMtZ3Jl ZW5gLCBgYy1hbWJlcmAsIGBjLXJlZGAsIGBjLXBpbmtgLCBgYy1ncmF5YCBhcmUgYWxzbyBzdXBw b3J0ZWQuCgoqKkN1c3RvbSBzaGFwZSBlbWJlZGRpbmc6KioKVG8gaW5jbHVkZSBhIGN1c3RvbSBz aGFwZSAoTVBNIGhhcmR3YXJlIGljb24sIGJyYW5kZWQgZWxlbWVudCwgc2hhcGUgZnJvbSAiTXkg TGlicmFyeSIpOgoxLiBBc2sgdGhlIHVzZXIgdG8gZXhwb3J0L3NoYXJlIHRoZSBTVkcgc291cmNl IG9mIHRoZWlyIGN1c3RvbSBzaGFwZQoyLiBFbWJlZCBpdCBhcyBhIGA8ZyB0cmFuc2Zvcm09InRy YW5zbGF0ZSh4LHkpIj4uLi48L2c+YCBibG9jayBpbiB0aGUgZGlhZ3JhbSBTVkcKMy4gUGFzcyB0 aGUgZnVsbCBjb21wb3NlZCBTVkcgdG8gdGhpcyB0b29sClRoZSBjdXN0b20gc2hhcGUgbGFuZHMg aW4gTHVjaWRjaGFydCBhcyBhIGZ1bGx5IGVkaXRhYmxlIGVsZW1lbnQg4oCUIHNhbWUgZW5kIHJl c3VsdCBhcyBwbGFjaW5nIGl0IGZyb20gYSBzaGFwZSBsaWJyYXJ5LgoKKipDdXN0b20gc2hhcGUg bGlicmFyaWVzIChNeSBMaWJyYXJ5KToqKiBOT1QgYWNjZXNzaWJsZSB2aWEgdGhlIE1DUCBBUEku IE9ubHkgQVdTIDIwMjQsIEdDUCAyMDIxLCBhbmQgQXp1cmUgMjAyNCBsaWJyYXJpZXMgYXJlIGV4 cG9zZWQgdmlhIGBnZXRfbWNwX3Jlc291cmNlYC4gVGhlIFNWRyBlbWJlZCBhcHByb2FjaCBhYm92 ZSBpcyB0aGUgY29ycmVjdCB3b3JrYXJvdW5kLgoKKipFeGFtcGxlIHByb21wdHM6KioKLSAiQnVp bGQgYSBkaXNwbGF5IHByb3Zpc2lvbmluZyBmbG93Y2hhcnQgYW5kIHB1c2ggaXQgdG8gTHVjaWQu IgotICJUYWtlIHRoYXQgU1ZHIGRpYWdyYW0geW91IGp1c3QgZ2VuZXJhdGVkIGFuZCBtYWtlIGl0 IGVkaXRhYmxlIGluIEx1Y2lkY2hhcnQuIgotICJDcmVhdGUgYW4gYXJjaGl0ZWN0dXJlIGRpYWdy YW0gdXNpbmcgb3VyIGN1c3RvbSBFc2NhbGF0b3Igc2hhcGUg4oCUIGhlcmUncyB0aGUgU1ZHIHNv dXJjZS4iCi0gIkNvbnZlcnQgdGhpcyBwcm9jZXNzIGZsb3cgdG8gYSBMdWNpZCBkb2N1bWVudC4i CgoqKk91dHB1dDoqKiBFZGl0IFVSTCBhbmQgdmlldyBVUkwgZm9yIHRoZSBuZXcgTHVjaWRjaGFy dCBkb2N1bWVudC4KCioqVmVyaWZpZWQ6KiogU21va2UtdGVzdGVkIDIwMjYtMDUtMjEuIENvbG9y cywgc2hhcGVzLCBhbmQgY29ubmVjdGlvbnMgY29uZmlybWVkIHdvcmtpbmcuCgotLS0KCiMjIEF1 dGhlbnRpY2F0aW9uICYgU2V0dXAgTm90ZXMKClRoZSBMdWNpZCBNQ1Agc2VydmVyIHVzZXMgT0F1 dGguIEZpcnN0LXRpbWUgc2V0dXAgcmVxdWlyZXM6CgoxLiBBIEx1Y2lkIGFjY291bnQgKFRlYW0g b3IgRW50ZXJwcmlzZSBwbGFuKQoyLiBMdWNpZCBBZG1pbiBQYW5lbCDihpIgU2VjdXJpdHkg4oaS IEZlYXR1cmUgQ29udHJvbHMg4oaSIGVuYWJsZSAiQWxsb3cgdXNlcnMgdG8gY29ubmVjdCIgdW5k ZXIgTUNQIEFjY2VzcwozLiBJbiBDb1dvcms6IG9wZW4gdGhlIGx1Y2lkLW1jcCBwbHVnaW4g4oaS IENvbm5lY3RvcnMg4oaSIGNvbm5lY3QgdGhlIEx1Y2lkIGNvbm5lY3RvciAoT0F1dGggZmxvdykK NC4gQXV0aG9yaXplIENsYXVkZSB0byBhY2Nlc3MgeW91ciBMdWNpZCBhY2NvdW50CgpJZiB0b29s cyByZXR1cm4gYXV0aGVudGljYXRpb24gZXJyb3JzLCBnbyB0byBDb1dvcmsgcGx1Z2luIHNldHRp bmdzIOKGkiBsdWNpZC1tY3Ag4oaSIENvbm5lY3RvcnMg4oaSIGRpc2Nvbm5lY3QgYW5kIHJlY29u bmVjdCB0byByZS10cmlnZ2VyIHRoZSBPQXV0aCBmbG93LgoKLS0tCgojIyBQbGFuIFJlcXVpcmVt ZW50cwoKfCBGZWF0dXJlIHwgVGVhbSBQbGFuIHwgRW50ZXJwcmlzZSBQbGFuIHwKfC0tLS0tLS0t LXwtLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLXwKfCBTZWFyY2gsIGZldGNoLCBzdW1tYXJp emUgfCDinIUgfCDinIUgfAp8IENyZWF0ZSBkaWFncmFtcyAoYWxsIHR5cGVzKSB8IOKchSB8IOKc hSB8CnwgRXhwb3J0IGFzIFBORyB8IOKchSB8IOKchSB8CnwgQWRkIC8gZWRpdCAvIGRlbGV0ZSBz aGFwZXMgfCDinIUgfCDinIUgfAp8IENyZWF0ZSBzaGFyZSBsaW5rcyB8IOKdjCB8IOKchSB8Cnwg U2hhcmUgd2l0aCBjb2xsYWJvcmF0b3JzIGJ5IGVtYWlsIHwg4p2MIHwg4pyFIHwKClRoZSBgbHVj aWRfY3JlYXRlX2RvY3VtZW50X3NoYXJlX2xpbmtgIGFuZCBgc2hhcmVfZG9jdW1lbnRfd2l0aF9j b2xsYWJvcmF0b3JzYCB0b29scyByZXF1aXJlIGFuICoqRW50ZXJwcmlzZSBMdWNpZCBwbGFuKiou IE9uIFRlYW0gcGxhbiB0aGVzZSByZXR1cm4gNDAwLzQwMyBlcnJvcnMuIERpcmVjdCB0aGUgdXNl ciB0byBzaGFyZSBtYW51YWxseSBmcm9tIHdpdGhpbiBMdWNpZGNoYXJ0LCBvciBub3RlIHRoYXQg dXBncmFkaW5nIHRvIEVudGVycHJpc2UgdW5sb2NrcyB0aGlzIGNhcGFiaWxpdHkuCgotLS0KCiMj IEtub3duIExpbWl0YXRpb25zIChhcyBvZiBNYXkgMjAyNikKCi0gU2VhcmNoIG1heSBub3QgcmVs aWFibHkgZmluZCBjb250ZW50IG9uIHBhZ2UgMisgb2YgbXVsdGktcGFnZSBkb2N1bWVudHMKLSBB V1MgMjAyNCwgR0NQIDIwMjEsIGFuZCBBenVyZSAyMDI0IHNoYXBlIGxpYnJhcmllcyBBUkUgYWNj ZXNzaWJsZSB2aWEgYGdldF9tY3BfcmVzb3VyY2VgIOKAlCBjbG91ZCBwcm92aWRlciBzaGFwZXMg d29yayBmaW5lIChlYXJsaWVyIGRvY3VtZW50YXRpb24gaW5jb3JyZWN0bHkgc2FpZCB0aGV5IHdl cmUgdW5hdmFpbGFibGUpCi0gKipDdXN0b20gdXNlciBzaGFwZSBsaWJyYXJpZXMgKCJNeSBMaWJy YXJ5IikgYXJlIE5PVCBhY2Nlc3NpYmxlIHZpYSB0aGUgTUNQIEFQSSoqIOKAlCBvbmx5IHRoZSB0 aHJlZSBjbG91ZCBwcm92aWRlciBsaWJyYXJpZXMgYWJvdmUgYXJlIGV4cG9zZWQuIFdvcmthcm91 bmQ6IGFzayB0aGUgdXNlciB0byBzaGFyZSB0aGUgU1ZHIHNvdXJjZSBvZiB0aGVpciBjdXN0b20g c2hhcGUsIGVtYmVkIGl0IGludG8gdGhlIGRpYWdyYW0gU1ZHLCBhbmQgcHVzaCB2aWEgYGx1Y2lk X2NvbnZlcnRfc3ZnX3RvX2RpYWdyYW1gCi0gQ2Fubm90IGVkaXQgZXhpc3RpbmcgZGlhZ3JhbSBj b250ZW50IHZpYSBNQ1Ag4oCUIG9ubHkgcmVhZCBhbmQgY3JlYXRlIG5ldyBkb2N1bWVudHMKLSBF ZGl0aW5nL29wZW5pbmcgS2lyby1nZW5lcmF0ZWQgZGlhZ3JhbXMgbm90IHN1cHBvcnRlZAotIGBs dWNpZF9jb252ZXJ0X3N2Z190b19kaWFncmFtYCB3YXMgYWRkZWQgdG8gdGhlIE1DUCBpbiBNYXkg MjAyNiBhbmQgaXMgbm93IHRoZSBwcmVmZXJyZWQgZGlhZ3JhbSBjcmVhdGlvbiBwYXRoIGZvciBz dGFuZGFyZCBmbG93Y2hhcnRzIGFuZCBzdHJ1Y3R1cmVkIGRpYWdyYW1zCg==