@novasamatech/host-papp 0.9.0 → 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.papi/descriptors/dist/common-types.d.ts +1483 -1359
- package/.papi/descriptors/dist/descriptors-BLqmZ_vS.js +25 -0
- package/.papi/descriptors/dist/index.d.ts +1 -1
- package/.papi/descriptors/dist/index.js +8 -6
- package/.papi/descriptors/dist/metadataTypes-wXgvb64i.js +3 -0
- package/.papi/descriptors/dist/metadataTypes.d.ts +1 -1
- package/.papi/descriptors/dist/people_lite.d.ts +1175 -1001
- package/.papi/descriptors/dist/people_lite_metadata-CwU9OBGy.js +3 -0
- package/.papi/descriptors/generated.json +1 -1
- package/.papi/descriptors/package.json +1 -1
- package/.papi/metadata/people_lite.scale +0 -0
- package/.papi/polkadot-api.json +3 -3
- package/README.md +85 -79
- package/dist/identity/identifierKey.d.ts +19 -0
- package/dist/identity/identifierKey.js +17 -0
- package/dist/identity/impl.js +12 -17
- package/dist/identity/index.d.ts +2 -0
- package/dist/identity/index.js +1 -0
- package/dist/identity/rpcAdapter.d.ts +5 -1
- package/dist/identity/rpcAdapter.js +9 -3
- package/dist/identity/types.d.ts +9 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +2 -0
- package/package.json +9 -5
- package/.papi/descriptors/dist/descriptors-D5oN4i7I.js +0 -25
- package/.papi/descriptors/dist/metadataTypes-BaUy_4gO.js +0 -3
- package/.papi/descriptors/dist/people_lite_metadata-Cj1JLFI2.js +0 -3
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
const binMeta = "bWV0YRBNDQAMKHNwX3J1bnRpbWUwbXVsdGlhZGRyZXNzME11bHRpQWRkcmVzcwgkQWNjb3VudElkAQQwQWNjb3VudEluZGV4ARABFAhJZAQABAEkQWNjb3VudElkAAAAFEluZGV4BAAUATBBY2NvdW50SW5kZXgAAQAMUmF3BAAYARxWZWM8dTg+AAIAJEFkZHJlc3MzMgQACAEgW3U4OyAzMl0AAwAkQWRkcmVzczIwBAAcASBbdTg7IDIwXQAEAAAEDBxzcF9jb3JlGGNyeXB0byxBY2NvdW50SWQzMgAABAAIASBbdTg7IDMyXQAACAAAAyAAAAAMAAwAAAUDABAAAAQAABQAAAYQABgAAAIMABwAAAMUAAAADAAgCGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lLFJ1bnRpbWVDYWxsAAGIGFN5c3RlbQQAJAGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTeXN0ZW0sIFJ1bnRpbWU+AAAAPFBhcmFjaGFpblN5c3RlbQQAQAHRAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQYXJhY2hhaW5TeXN0ZW0sIFJ1bnRpbWU+AAEAJFRpbWVzdGFtcAQAsAG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxUaW1lc3RhbXAsIFJ1bnRpbWU+AAIANFBhcmFjaGFpbkluZm8EALgByQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGFyYWNoYWluSW5mbywgUnVudGltZT4AAwAgQmFsYW5jZXMEALwBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QmFsYW5jZXMsIFJ1bnRpbWU+AAoARE9yaWdpblJlc3RyaWN0aW9uBADUAdkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE9yaWdpblJlc3RyaWN0aW9uLCBSdW50aW1lPgANABhBc3NldHMEANwBrQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QXNzZXRzLCBSdW50aW1lPgAOACRBc3NldFJhdGUEACkBAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEFzc2V0UmF0ZSwgUnVudGltZT4AEABEQ29sbGF0b3JTZWxlY3Rpb24EADEBAdkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENvbGxhdG9yU2VsZWN0aW9uLCBSdW50aW1lPgAVABxTZXNzaW9uBAA1AQGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTZXNzaW9uLCBSdW50aW1lPgAWACRYY21wUXVldWUEAEEBAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFhjbXBRdWV1ZSwgUnVudGltZT4AHgAsUG9sa2Fkb3RYY20EAEUBAcEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBvbGthZG90WGNtLCBSdW50aW1lPgAfAChDdW11bHVzWGNtBAAZAwG9AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxDdW11bHVzWGNtLCBSdW50aW1lPgAgADBNZXNzYWdlUXVldWUEAB0DAcUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE1lc3NhZ2VRdWV1ZSwgUnVudGltZT4AIgAcVXRpbGl0eQQAJQMBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8VXRpbGl0eSwgUnVudGltZT4AKAAgTXVsdGlzaWcEAIkDAbUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpc2lnLCBSdW50aW1lPgApABBTdWRvBACVAwGlAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTdWRvLCBSdW50aW1lPgAqABRQcm94eQQAmQMBqQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UHJveHksIFJ1bnRpbWU+ACwAIElkZW50aXR5BAClAwG1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxJZGVudGl0eSwgUnVudGltZT4AMgAYUGVvcGxlBABRBAGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQZW9wbGUsIFJ1bnRpbWU+ADMAHE1vYlJ1bGUEAGEEAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE1vYlJ1bGUsIFJ1bnRpbWU+ADQAKFByb29mT2ZJbmsEAGkEAb0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFByb29mT2ZJbmssIFJ1bnRpbWU+ADUAEEdhbWUEAIkEAaUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEdhbWUsIFJ1bnRpbWU+ADcAFFNjb3JlBACtBAGpAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTY29yZSwgUnVudGltZT4AOAAgRHVtbXlEaW0EAMUEAbUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPER1bW15RGltLCBSdW50aW1lPgA7AChQZW9wbGVMaXRlBADdBAG9AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQZW9wbGVMaXRlLCBSdW50aW1lPgA+ACRSZXNvdXJjZXMEAO0EAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFJlc291cmNlcywgUnVudGltZT4APwA0Q2h1bmtzTWFuYWdlcgQA+QQByQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q2h1bmtzTWFuYWdlciwgUnVudGltZT4AQAAcTWVtYmVycwQAAQUBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TWVtYmVycywgUnVudGltZT4AQwAcQ29pbmFnZQQABQUBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q29pbmFnZSwgUnVudGltZT4ARAA8TWVtYmVyc05vdGlmaWVyBABFBQHRAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNZW1iZXJzTm90aWZpZXIsIFJ1bnRpbWU+AEUAVFN0b3JhZ2VJbml0aWFsaXphdGlvbgQAXQUB6QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U3RvcmFnZUluaXRpYWxpemF0aW9uLCBSdW50aW1lPgA8ABxBaXJkcm9wBABhBQGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxBaXJkcm9wLCBSdW50aW1lPgA9AFBNdWx0aUJsb2NrTWlncmF0aW9ucwQAbQUB5QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TXVsdGlCbG9ja01pZ3JhdGlvbnMsIFJ1bnRpbWU+AGIAACQMMGZyYW1lX3N5c3RlbRhwYWxsZXQQQ2FsbAQEVAABLBhyZW1hcmsEARhyZW1hcmsYARxWZWM8dTg+AAAMaE1ha2Ugc29tZSBvbi1jaGFpbiByZW1hcmsuAIhDYW4gYmUgZXhlY3V0ZWQgYnkgZXZlcnkgYG9yaWdpbmAuOHNldF9oZWFwX3BhZ2VzBAEUcGFnZXMoAQx1NjQAAQT4U2V0IHRoZSBudW1iZXIgb2YgcGFnZXMgaW4gdGhlIFdlYkFzc2VtYmx5IGVudmlyb25tZW50J3MgaGVhcC4gc2V0X2NvZGUEARBjb2RlGAEcVmVjPHU4PgACBGRTZXQgdGhlIG5ldyBydW50aW1lIGNvZGUuXHNldF9jb2RlX3dpdGhvdXRfY2hlY2tzBAEQY29kZRgBHFZlYzx1OD4AAxAZAVNldCB0aGUgbmV3IHJ1bnRpbWUgY29kZSB3aXRob3V0IGRvaW5nIGFueSBjaGVja3Mgb2YgdGhlIGdpdmVuIGBjb2RlYC4AUQFOb3RlIHRoYXQgcnVudGltZSB1cGdyYWRlcyB3aWxsIG5vdCBydW4gaWYgdGhpcyBpcyBjYWxsZWQgd2l0aCBhIG5vdC1pbmNyZWFzaW5nIHNwZWMgdmVyc2lvbiEsc2V0X3N0b3JhZ2UEARRpdGVtcywBNFZlYzxLZXlWYWx1ZT4ABARoU2V0IHNvbWUgaXRlbXMgb2Ygc3RvcmFnZS4wa2lsbF9zdG9yYWdlBAEQa2V5czQBIFZlYzxLZXk+AAUEdEtpbGwgc29tZSBpdGVtcyBmcm9tIHN0b3JhZ2UuLGtpbGxfcHJlZml4CAEYcHJlZml4GAEMS2V5AAEcc3Via2V5czgBDHUzMgAGEBEBS2lsbCBhbGwgc3RvcmFnZSBpdGVtcyB3aXRoIGEga2V5IHRoYXQgc3RhcnRzIHdpdGggdGhlIGdpdmVuIHByZWZpeC4AOQEqKk5PVEU6KiogV2UgcmVseSBvbiB0aGUgUm9vdCBvcmlnaW4gdG8gcHJvdmlkZSB1cyB0aGUgbnVtYmVyIG9mIHN1YmtleXMgdW5kZXI9AXRoZSBwcmVmaXggd2UgYXJlIHJlbW92aW5nIHRvIGFjY3VyYXRlbHkgY2FsY3VsYXRlIHRoZSB3ZWlnaHQgb2YgdGhpcyBmdW5jdGlvbi5EcmVtYXJrX3dpdGhfZXZlbnQEARhyZW1hcmsYARxWZWM8dTg+AAcEpE1ha2Ugc29tZSBvbi1jaGFpbiByZW1hcmsgYW5kIGVtaXQgZXZlbnQuRGF1dGhvcml6ZV91cGdyYWRlBAEkY29kZV9oYXNoPAEcVDo6SGFzaAAJEGEBQXV0aG9yaXplIGFuIHVwZ3JhZGUgdG8gYSBnaXZlbiBgY29kZV9oYXNoYCBmb3IgdGhlIHJ1bnRpbWUuIFRoZSBydW50aW1lIGNhbiBiZSBzdXBwbGllZBhsYXRlci4AfFRoaXMgY2FsbCByZXF1aXJlcyBSb290IG9yaWdpbi6AYXV0aG9yaXplX3VwZ3JhZGVfd2l0aG91dF9jaGVja3MEASRjb2RlX2hhc2g8ARxUOjpIYXNoAAogYQFBdXRob3JpemUgYW4gdXBncmFkZSB0byBhIGdpdmVuIGBjb2RlX2hhc2hgIGZvciB0aGUgcnVudGltZS4gVGhlIHJ1bnRpbWUgY2FuIGJlIHN1cHBsaWVkGGxhdGVyLgBdAVdBUk5JTkc6IFRoaXMgYXV0aG9yaXplcyBhbiB1cGdyYWRlIHRoYXQgd2lsbCB0YWtlIHBsYWNlIHdpdGhvdXQgYW55IHNhZmV0eSBjaGVja3MsIGZvclkBZXhhbXBsZSB0aGF0IHRoZSBzcGVjIG5hbWUgcmVtYWlucyB0aGUgc2FtZSBhbmQgdGhhdCB0aGUgdmVyc2lvbiBudW1iZXIgaW5jcmVhc2VzLiBOb3TwcmVjb21tZW5kZWQgZm9yIG5vcm1hbCB1c2UuIFVzZSBgYXV0aG9yaXplX3VwZ3JhZGVgIGluc3RlYWQuAHxUaGlzIGNhbGwgcmVxdWlyZXMgUm9vdCBvcmlnaW4uYGFwcGx5X2F1dGhvcml6ZWRfdXBncmFkZQQBEGNvZGUYARxWZWM8dTg+AAskVQFQcm92aWRlIHRoZSBwcmVpbWFnZSAocnVudGltZSBiaW5hcnkpIGBjb2RlYCBmb3IgYW4gdXBncmFkZSB0aGF0IGhhcyBiZWVuIGF1dGhvcml6ZWQuAEkBSWYgdGhlIGF1dGhvcml6YXRpb24gcmVxdWlyZWQgYSB2ZXJzaW9uIGNoZWNrLCB0aGlzIGNhbGwgd2lsbCBlbnN1cmUgdGhlIHNwZWMgbmFtZehyZW1haW5zIHVuY2hhbmdlZCBhbmQgdGhhdCB0aGUgc3BlYyB2ZXJzaW9uIGhhcyBpbmNyZWFzZWQuAFkBRGVwZW5kaW5nIG9uIHRoZSBydW50aW1lJ3MgYE9uU2V0Q29kZWAgY29uZmlndXJhdGlvbiwgdGhpcyBmdW5jdGlvbiBtYXkgZGlyZWN0bHkgYXBwbHkRAXRoZSBuZXcgYGNvZGVgIGluIHRoZSBzYW1lIGJsb2NrIG9yIGF0dGVtcHQgdG8gc2NoZWR1bGUgdGhlIHVwZ3JhZGUuAGBBbGwgb3JpZ2lucyBhcmUgYWxsb3dlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuKAAABQYALAAAAjAAMAAABAgYGAA0AAACGAA4AAAFBQA8CDxwcmltaXRpdmVfdHlwZXMQSDI1NgAABAAIASBbdTg7IDMyXQAAQAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbRhwYWxsZXQQQ2FsbAQEVAABCExzZXRfdmFsaWRhdGlvbl9kYXRhCAEQZGF0YUQBaEJhc2ljUGFyYWNoYWluSW5oZXJlbnREYXRhAAFUaW5ib3VuZF9tZXNzYWdlc19kYXRhfAFMSW5ib3VuZE1lc3NhZ2VzRGF0YQAAJIBTZXQgdGhlIGN1cnJlbnQgdmFsaWRhdGlvbiBkYXRhLgBBAVRoaXMgc2hvdWxkIGJlIGludm9rZWQgZXhhY3RseSBvbmNlIHBlciBibG9jay4gSXQgd2lsbCBwYW5pYyBhdCB0aGUgZmluYWxpemF0aW9uiHBoYXNlIGlmIHRoZSBjYWxsIHdhcyBub3QgaW52b2tlZC4A0FRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIGBJbmhlcmVudGAAIQFBcyBhIHNpZGUgZWZmZWN0LCB0aGlzIGZ1bmN0aW9uIHVwZ3JhZGVzIHRoZSBjdXJyZW50IHZhbGlkYXRpb24gZnVuY3Rpb26EaWYgdGhlIGFwcHJvcHJpYXRlIHRpbWUgaGFzIGNvbWUuYHN1ZG9fc2VuZF91cHdhcmRfbWVzc2FnZQQBHG1lc3NhZ2UYATRVcHdhcmRNZXNzYWdlAAEABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLkQMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50aEJhc2ljUGFyYWNoYWluSW5oZXJlbnREYXRhAAAQATx2YWxpZGF0aW9uX2RhdGFIAVxQZXJzaXN0ZWRWYWxpZGF0aW9uRGF0YQABRHJlbGF5X2NoYWluX3N0YXRlUAFUc3BfdHJpZTo6U3RvcmFnZVByb29mAAFgcmVsYXlfcGFyZW50X2Rlc2NlbmRhbnRzWAFAVmVjPFJlbGF5SGVhZGVyPgABQGNvbGxhdG9yX3BlZXJfaWR0AVhPcHRpb248QXBwcm92ZWRQZWVySWQ+AABIDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5XFBlcnNpc3RlZFZhbGlkYXRpb25EYXRhCARIATwETgE4ABABLHBhcmVudF9oZWFkTAEgSGVhZERhdGEAAUxyZWxheV9wYXJlbnRfbnVtYmVyOAEETgABZHJlbGF5X3BhcmVudF9zdG9yYWdlX3Jvb3Q8AQRIAAEwbWF4X3Bvdl9zaXplOAEMdTMyAABMDHRwb2xrYWRvdF9wYXJhY2hhaW5fcHJpbWl0aXZlcyhwcmltaXRpdmVzIEhlYWREYXRhAAAEABgBHFZlYzx1OD4AAFAMHHNwX3RyaWU0c3RvcmFnZV9wcm9vZjBTdG9yYWdlUHJvb2YAAAQBKHRyaWVfbm9kZXNUAURCVHJlZVNldDxWZWM8dTg+PgAAVAQgQlRyZWVTZXQEBFQBGAAEADQAAABYAAACXABcEChzcF9ydW50aW1lHGdlbmVyaWMYaGVhZGVyGEhlYWRlcggYTnVtYmVyATgQSGFzaAAAFAEscGFyZW50X2hhc2g8ATBIYXNoOjpPdXRwdXQAARhudW1iZXJgARhOdW1iZXIAAShzdGF0ZV9yb290PAEwSGFzaDo6T3V0cHV0AAE8ZXh0cmluc2ljc19yb290PAEwSGFzaDo6T3V0cHV0AAEYZGlnZXN0ZAEYRGlnZXN0AABgAAAGOABkEChzcF9ydW50aW1lHGdlbmVyaWMYZGlnZXN0GERpZ2VzdAAABAEQbG9nc2gBPFZlYzxEaWdlc3RJdGVtPgAAaAAAAmwAbBAoc3BfcnVudGltZRxnZW5lcmljGGRpZ2VzdChEaWdlc3RJdGVtAAEUKFByZVJ1bnRpbWUIAHABRENvbnNlbnN1c0VuZ2luZUlkAAAYARxWZWM8dTg+AAYAJENvbnNlbnN1cwgAcAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABAAQU2VhbAgAcAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABQAUT3RoZXIEABgBHFZlYzx1OD4AAABkUnVudGltZUVudmlyb25tZW50VXBkYXRlZAAIAABwAAADBAAAAAwAdAQYT3B0aW9uBARUAXgBCBBOb25lAAAAEFNvbWUEAHgAAAEAAHgMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAB8DHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHBhcmFjaGFpbl9pbmhlcmVudExJbmJvdW5kTWVzc2FnZXNEYXRhAAAIAURkb3dud2FyZF9tZXNzYWdlc4ABfEFicmlkZ2VkSW5ib3VuZERvd253YXJkTWVzc2FnZXMAAUxob3Jpem9udGFsX21lc3NhZ2VzlAFsQWJyaWRnZWRJbmJvdW5kSHJtcE1lc3NhZ2VzAACADHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHBhcmFjaGFpbl9pbmhlcmVudIRBYnJpZGdlZEluYm91bmRNZXNzYWdlc0NvbGxlY3Rpb24EHE1lc3NhZ2UBhAAIATRmdWxsX21lc3NhZ2VziAEwVmVjPE1lc3NhZ2U+AAE8aGFzaGVkX21lc3NhZ2VzjAF8VmVjPE1lc3NhZ2U6OkNvbXByZXNzZWRNZXNzYWdlPgAAhAhgcG9sa2Fkb3RfY29yZV9wcmltaXRpdmVzWEluYm91bmREb3dud2FyZE1lc3NhZ2UELEJsb2NrTnVtYmVyATgACAEcc2VudF9hdDgBLEJsb2NrTnVtYmVyAAEMbXNnGAE8RG93bndhcmRNZXNzYWdlAACIAAAChACMAAACkACQCJRjdW11bHVzX3ByaW1pdGl2ZXNfcGFyYWNoYWluX2luaGVyZW50NEhhc2hlZE1lc3NhZ2UAAAgBHHNlbnRfYXQ4AVRSZWxheUNoYWluQmxvY2tOdW1iZXIAASBtc2dfaGFzaDwBNHNwX2NvcmU6OkgyNTYAAJQMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50hEFicmlkZ2VkSW5ib3VuZE1lc3NhZ2VzQ29sbGVjdGlvbgQcTWVzc2FnZQGYAAgBNGZ1bGxfbWVzc2FnZXOkATBWZWM8TWVzc2FnZT4AATxoYXNoZWRfbWVzc2FnZXOoAXxWZWM8TWVzc2FnZTo6Q29tcHJlc3NlZE1lc3NhZ2U+AACYAAAECJygAJwMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXMISWQAAAQAOAEMdTMyAACgCGBwb2xrYWRvdF9jb3JlX3ByaW1pdGl2ZXNISW5ib3VuZEhybXBNZXNzYWdlBCxCbG9ja051bWJlcgE4AAgBHHNlbnRfYXQ4ASxCbG9ja051bWJlcgABEGRhdGEYAUxhbGxvYzo6dmVjOjpWZWM8dTg+AACkAAACmACoAAACrACsAAAECJyQALAMQHBhbGxldF90aW1lc3RhbXAYcGFsbGV0EENhbGwEBFQAAQQMc2V0BAEMbm93tAEkVDo6TW9tZW50AABMVFNldCB0aGUgY3VycmVudCB0aW1lLgBVAVRoaXMgY2FsbCBzaG91bGQgYmUgaW52b2tlZCBleGFjdGx5IG9uY2UgcGVyIGJsb2NrLiBJdCB3aWxsIHBhbmljIGF0IHRoZSBmaW5hbGl6YXRpb27UcGhhc2UsIGlmIHRoaXMgY2FsbCBoYXNuJ3QgYmVlbiBpbnZva2VkIGJ5IHRoYXQgdGltZS4AQQFUaGUgdGltZXN0YW1wIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gdGhlIHByZXZpb3VzIG9uZSBieSB0aGUgYW1vdW50IHNwZWNpZmllZCBieWhbYENvbmZpZzo6TWluaW11bVBlcmlvZGBdLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX05vbmVfLgBRAVRoaXMgZGlzcGF0Y2ggY2xhc3MgaXMgX01hbmRhdG9yeV8gdG8gZW5zdXJlIGl0IGdldHMgZXhlY3V0ZWQgaW4gdGhlIGJsb2NrLiBCZSBhd2FyZVEBdGhhdCBjaGFuZ2luZyB0aGUgY29tcGxleGl0eSBvZiB0aGlzIGNhbGwgY291bGQgcmVzdWx0IGV4aGF1c3RpbmcgdGhlIHJlc291cmNlcyBpbiBhhGJsb2NrIHRvIGV4ZWN1dGUgYW55IG90aGVyIGNhbGxzLgA0IyMgQ29tcGxleGl0eTEBLSBgTygxKWAgKE5vdGUgdGhhdCBpbXBsZW1lbnRhdGlvbnMgb2YgYE9uVGltZXN0YW1wU2V0YCBtdXN0IGFsc28gYmUgYE8oMSlgKVUBLSAxIHN0b3JhZ2UgcmVhZCBhbmQgMSBzdG9yYWdlIG11dGF0aW9uIChjb2RlYyBgTygxKWAgYmVjYXVzZSBvZiBgRGlkVXBkYXRlOjp0YWtlYCBpbkAgIGBvbl9maW5hbGl6ZWAp1C0gMSBldmVudCBoYW5kbGVyIGBvbl90aW1lc3RhbXBfc2V0YC4gTXVzdCBiZSBgTygxKWAuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLrQAAAYoALgMWHN0YWdpbmdfcGFyYWNoYWluX2luZm8YcGFsbGV0EENhbGwEBFQAAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuvAw8cGFsbGV0X2JhbGFuY2VzGHBhbGxldBBDYWxsCARUAARJAAEkUHRyYW5zZmVyX2FsbG93X2RlYXRoCAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWXAAShUOjpCYWxhbmNlAAAc1FRyYW5zZmVyIHNvbWUgbGlxdWlkIGZyZWUgYmFsYW5jZSB0byBhbm90aGVyIGFjY291bnQuADUBYHRyYW5zZmVyX2FsbG93X2RlYXRoYCB3aWxsIHNldCB0aGUgYEZyZWVCYWxhbmNlYCBvZiB0aGUgc2VuZGVyIGFuZCByZWNlaXZlci4RAUlmIHRoZSBzZW5kZXIncyBhY2NvdW50IGlzIGJlbG93IHRoZSBleGlzdGVudGlhbCBkZXBvc2l0IGFzIGEgcmVzdWx0sG9mIHRoZSB0cmFuc2ZlciwgdGhlIGFjY291bnQgd2lsbCBiZSByZWFwZWQuABUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgYFNpZ25lZGAgYnkgdGhlIHRyYW5zYWN0b3IuOGZvcmNlX3RyYW5zZmVyDAEYc291cmNlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARR2YWx1ZcABKFQ6OkJhbGFuY2UAAghhAUV4YWN0bHkgYXMgYHRyYW5zZmVyX2FsbG93X2RlYXRoYCwgZXhjZXB0IHRoZSBvcmlnaW4gbXVzdCBiZSByb290IGFuZCB0aGUgc291cmNlIGFjY291bnREbWF5IGJlIHNwZWNpZmllZC5MdHJhbnNmZXJfa2VlcF9hbGl2ZQgBEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFHZhbHVlwAEoVDo6QmFsYW5jZQADGFkBU2FtZSBhcyB0aGUgW2B0cmFuc2Zlcl9hbGxvd19kZWF0aGBdIGNhbGwsIGJ1dCB3aXRoIGEgY2hlY2sgdGhhdCB0aGUgdHJhbnNmZXIgd2lsbCBub3Rga2lsbCB0aGUgb3JpZ2luIGFjY291bnQuAOg5OSUgb2YgdGhlIHRpbWUgeW91IHdhbnQgW2B0cmFuc2Zlcl9hbGxvd19kZWF0aGBdIGluc3RlYWQuAPBbYHRyYW5zZmVyX2FsbG93X2RlYXRoYF06IHN0cnVjdC5QYWxsZXQuaHRtbCNtZXRob2QudHJhbnNmZXIwdHJhbnNmZXJfYWxsCAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoa2VlcF9hbGl2ZcgBEGJvb2wABDwFAVRyYW5zZmVyIHRoZSBlbnRpcmUgdHJhbnNmZXJhYmxlIGJhbGFuY2UgZnJvbSB0aGUgY2FsbGVyIGFjY291bnQuAFkBTk9URTogVGhpcyBmdW5jdGlvbiBvbmx5IGF0dGVtcHRzIHRvIHRyYW5zZmVyIF90cmFuc2ZlcmFibGVfIGJhbGFuY2VzLiBUaGlzIG1lYW5zIHRoYXRhAWFueSBsb2NrZWQsIHJlc2VydmVkLCBvciBleGlzdGVudGlhbCBkZXBvc2l0cyAod2hlbiBga2VlcF9hbGl2ZWAgaXMgYHRydWVgKSwgd2lsbCBub3QgYmVdAXRyYW5zZmVycmVkIGJ5IHRoaXMgZnVuY3Rpb24uIFRvIGVuc3VyZSB0aGF0IHRoaXMgZnVuY3Rpb24gcmVzdWx0cyBpbiBhIGtpbGxlZCBhY2NvdW50LEUBeW91IG1pZ2h0IG5lZWQgdG8gcHJlcGFyZSB0aGUgYWNjb3VudCBieSByZW1vdmluZyBhbnkgcmVmZXJlbmNlIGNvdW50ZXJzLCBzdG9yYWdlQGRlcG9zaXRzLCBldGMuLi4AwFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgU2lnbmVkLgCgLSBgZGVzdGA6IFRoZSByZWNpcGllbnQgb2YgdGhlIHRyYW5zZmVyLlkBLSBga2VlcF9hbGl2ZWA6IEEgYm9vbGVhbiB0byBkZXRlcm1pbmUgaWYgdGhlIGB0cmFuc2Zlcl9hbGxgIG9wZXJhdGlvbiBzaG91bGQgc2VuZCBhbGxNASAgb2YgdGhlIGZ1bmRzIHRoZSBhY2NvdW50IGhhcywgY2F1c2luZyB0aGUgc2VuZGVyIGFjY291bnQgdG8gYmUga2lsbGVkIChmYWxzZSksIG9yWQEgIHRyYW5zZmVyIGV2ZXJ5dGhpbmcgZXhjZXB0IGF0IGxlYXN0IHRoZSBleGlzdGVudGlhbCBkZXBvc2l0LCB3aGljaCB3aWxsIGd1YXJhbnRlZSB0b5wgIGtlZXAgdGhlIHNlbmRlciBhY2NvdW50IGFsaXZlICh0cnVlKS48Zm9yY2VfdW5yZXNlcnZlCAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnTEAShUOjpCYWxhbmNlAAUMsFVucmVzZXJ2ZSBzb21lIGJhbGFuY2UgZnJvbSBhIHVzZXIgYnkgZm9yY2UuAGxDYW4gb25seSBiZSBjYWxsZWQgYnkgUk9PVC5AdXBncmFkZV9hY2NvdW50cwQBDHdob8wBRFZlYzxUOjpBY2NvdW50SWQ+AAYgcFVwZ3JhZGUgYSBzcGVjaWZpZWQgYWNjb3VudC4AdC0gYG9yaWdpbmA6IE11c3QgYmUgYFNpZ25lZGAukC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVwZ3JhZGVkLgBVAVRoaXMgd2lsbCB3YWl2ZSB0aGUgdHJhbnNhY3Rpb24gZmVlIGlmIGF0IGxlYXN0IGFsbCBidXQgMTAlIG9mIHRoZSBhY2NvdW50cyBuZWVkZWQgdG9BAWJlIHVwZ3JhZGVkLiAoV2UgbGV0IHNvbWUgbm90IGhhdmUgdG8gYmUgdXBncmFkZWQganVzdCBpbiBvcmRlciB0byBhbGxvdyBmb3IgdGhlWHBvc3NpYmlsaXR5IG9mIGNodXJuKS5EZm9yY2Vfc2V0X2JhbGFuY2UIAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIG5ld19mcmVlwAEoVDo6QmFsYW5jZQAIDKxTZXQgdGhlIHJlZ3VsYXIgYmFsYW5jZSBvZiBhIGdpdmVuIGFjY291bnQuALBUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgaXMgYHJvb3RgLmxmb3JjZV9hZGp1c3RfdG90YWxfaXNzdWFuY2UIASRkaXJlY3Rpb27QAUxBZGp1c3RtZW50RGlyZWN0aW9uAAEUZGVsdGHAAShUOjpCYWxhbmNlAAkUuEFkanVzdCB0aGUgdG90YWwgaXNzdWFuY2UgaW4gYSBzYXR1cmF0aW5nIHdheS4A/ENhbiBvbmx5IGJlIGNhbGxlZCBieSByb290IGFuZCBhbHdheXMgbmVlZHMgYSBwb3NpdGl2ZSBgZGVsdGFgLgAkIyBFeGFtcGxlEGJ1cm4IARR2YWx1ZcABKFQ6OkJhbGFuY2UAAShrZWVwX2FsaXZlyAEQYm9vbAAKHPxCdXJuIHRoZSBzcGVjaWZpZWQgbGlxdWlkIGZyZWUgYmFsYW5jZSBmcm9tIHRoZSBvcmlnaW4gYWNjb3VudC4AJQFJZiB0aGUgb3JpZ2luJ3MgYWNjb3VudCBlbmRzIHVwIGJlbG93IHRoZSBleGlzdGVudGlhbCBkZXBvc2l0IGFzIGEgcmVzdWx0CQFvZiB0aGUgYnVybiBhbmQgYGtlZXBfYWxpdmVgIGlzIGZhbHNlLCB0aGUgYWNjb3VudCB3aWxsIGJlIHJlYXBlZC4AUQFVbmxpa2Ugc2VuZGluZyBmdW5kcyB0byBhIF9idXJuXyBhZGRyZXNzLCB3aGljaCBtZXJlbHkgbWFrZXMgdGhlIGZ1bmRzIGluYWNjZXNzaWJsZSwhAXRoaXMgYGJ1cm5gIG9wZXJhdGlvbiB3aWxsIHJlZHVjZSB0b3RhbCBpc3N1YW5jZSBieSB0aGUgYW1vdW50IF9idXJuZWRfLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7AAAAGxADEAAAFBwDIAAAFAADMAAACBADQDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXNMQWRqdXN0bWVudERpcmVjdGlvbgABCCBJbmNyZWFzZQAAACBEZWNyZWFzZQABAADUDHxpbmRpdl9wYWxsZXRfb3JpZ2luX3Jlc3RyaWN0aW9uGHBhbGxldBBDYWxsBARUAAEELGNsZWFuX3VzYWdlBAEYZW50aXR52AFMVDo6UmVzdHJpY3RlZEVudGl0eQABCEkBQWxsb3cgdG8gY2xlYW4gdXNhZ2UgYXNzb2NpYXRlZCB3aXRoIGFuIGVudGl0eSB3aGVuIGl0IGlzIHplcm8gb3Igd2hlbiB0aGVyZSBpcyBub5Bsb25nZXIgYW55IGFsbG93YW5jZSBmb3IgdGhlIG9yaWdpbi4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu2AhkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZUBSZXN0cmljdGVkRW50aXR5AAEYNFBlcnNvbmFsQWxpYXMEAAgBFEFsaWFzAAAAQFBlcnNvbmFsSWRlbnRpdHkEACgBDHU2NAABAERSZWZlcnJlZENhbmRpZGF0ZQQABAEkQWNjb3VudElkAAIASEFjY291bnRQYXJ0aWNpcGFudAQABAEkQWNjb3VudElkAAMAQEludml0ZWRDYW5kaWRhdGUEAAQBJEFjY291bnRJZAAEAChMaXRlUGVyc29uBAAEASRBY2NvdW50SWQABQAA3Aw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQQQ2FsbAgEVAAESQABiBhjcmVhdGUMAQhpZOABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2XEAShUOjpCYWxhbmNlAABM6Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHVibGljIG9yaWdpbi4AJQFUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseSBhbmQgaXRzIG93bmVyIGlzIHRoZSBvcmlnaW4uAGEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQgYENyZWF0ZU9yaWdpbmAgYW5kIGhhdmUgc3VmZmljaWVudCBmdW5kcyBmcmVlLgC8RnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBieSBgQXNzZXREZXBvc2l0YC4ALFBhcmFtZXRlcnM6WQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgYWRtaW5gOiBUaGUgYWRtaW4gb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBhZG1pbiBpcyB0aGUgaW5pdGlhbCBhZGRyZXNzIG9mIGVhY2icbWVtYmVyIG9mIHRoZSBhc3NldCBjbGFzcydzIGFkbWluIHRlYW0uTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCYRW1pdHMgYENyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgMGZvcmNlX2NyZWF0ZRABCGlk4AFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AATRpc19zdWZmaWNpZW50yAEQYm9vbAABLG1pbl9iYWxhbmNlwAEoVDo6QmFsYW5jZQABTPhJc3N1ZSBhIG5ldyBjbGFzcyBvZiBmdW5naWJsZSBhc3NldHMgZnJvbSBhIHByaXZpbGVnZWQgb3JpZ2luLgC0VGhpcyBuZXcgYXNzZXQgY2xhc3MgaGFzIG5vIGFzc2V0cyBpbml0aWFsbHkuAKRUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gLgCcVW5saWtlIGBjcmVhdGVgLCBubyBmdW5kcyBhcmUgcmVzZXJ2ZWQuAFkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGFzc2V0LiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UgdG8gaWRlbnRpZnkxAWFuIGV4aXN0aW5nIGFzc2V0LiBJZiBbYE5leHRBc3NldElkYF0gaXMgc2V0LCB0aGVuIHRoaXMgbXVzdCBiZSBlcXVhbCB0byBpdC5ZAS0gYG93bmVyYDogVGhlIG93bmVyIG9mIHRoaXMgY2xhc3Mgb2YgYXNzZXRzLiBUaGUgb3duZXIgaGFzIGZ1bGwgc3VwZXJ1c2VyIHBlcm1pc3Npb25zJQFvdmVyIHRoaXMgYXNzZXQsIGJ1dCBtYXkgbGF0ZXIgY2hhbmdlIGFuZCBjb25maWd1cmUgdGhlIHBlcm1pc3Npb25zIHVzaW5nkGB0cmFuc2Zlcl9vd25lcnNoaXBgIGFuZCBgc2V0X3RlYW1gLk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby4ArEVtaXRzIGBGb3JjZUNyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgNHN0YXJ0X2Rlc3Ryb3kEAQhpZOABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAjDcU3RhcnQgdGhlIHByb2Nlc3Mgb2YgZGVzdHJveWluZyBhIGZ1bmdpYmxlIGFzc2V0IGNsYXNzLgBZAWBzdGFydF9kZXN0cm95YCBpcyB0aGUgZmlyc3QgaW4gYSBzZXJpZXMgb2YgZXh0cmluc2ljcyB0aGF0IHNob3VsZCBiZSBjYWxsZWQsIHRvIGFsbG93eGRlc3RydWN0aW9uIG9mIGFuIGFzc2V0IGNsYXNzLgBRAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBgU2lnbmVkYCBieSB0aGUgYXNzZXQncyBgb3duZXJgLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZrhhbiBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuQGRlc3Ryb3lfYWNjb3VudHMEAQhpZOABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAzDMRGVzdHJveSBhbGwgYWNjb3VudHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQuAF0BYGRlc3Ryb3lfYWNjb3VudHNgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlhGFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLgBdAUR1ZSB0byB3ZWlnaHQgcmVzdHJpY3Rpb25zLCB0aGlzIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB0byBmdWxseTEBZGVzdHJveSBhbGwgYWNjb3VudHMuIEl0IHdpbGwgZGVzdHJveSBgUmVtb3ZlSXRlbXNMaW1pdGAgYWNjb3VudHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANRFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQWNjb3VudHNgIGV2ZW50LkRkZXN0cm95X2FwcHJvdmFscwQBCGlk4AFMVDo6QXNzZXRJZFBhcmFtZXRlcgAEMGEBRGVzdHJveSBhbGwgYXBwcm92YWxzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFzc2V0IHVwIHRvIHRoZSBtYXggKFQ6OlJlbW92ZUl0ZW1zTGltaXQpLgBhAWBkZXN0cm95X2FwcHJvdmFsc2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5OQFkZXN0cm95IGFsbCBhcHByb3ZhbHMuIEl0IHdpbGwgZGVzdHJveSBgUmVtb3ZlSXRlbXNMaW1pdGAgYXBwcm92YWxzIGF0IGEgdGltZS4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDYRWFjaCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZEFwcHJvdmFsc2AgZXZlbnQuOGZpbmlzaF9kZXN0cm95BAEIaWTgAUxUOjpBc3NldElkUGFyYW1ldGVyAAUoxENvbXBsZXRlIGRlc3Ryb3lpbmcgYXNzZXQgYW5kIHVucmVzZXJ2ZSBjdXJyZW5jeS4AVQFgZmluaXNoX2Rlc3Ryb3lgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlWQFhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4gQWxsIGFjY291bnRzIG9yIGFwcHJvdmFscyBzaG91bGQgYmUgZGVzdHJveWVkIGJlZm9yZRRoYW5kLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuAOBFYWNoIHN1Y2Nlc3NmdWwgY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRgIGV2ZW50LhBtaW50DAEIaWTgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEsYmVuZWZpY2lhcnkAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudMABKFQ6OkJhbGFuY2UABjCITWludCBhc3NldHMgb2YgYSBwYXJ0aWN1bGFyIGNsYXNzLgA5AVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGUgSXNzdWVyIG9mIHRoZSBhc3NldCBgaWRgLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBtaW50ZWQuDQEtIGBiZW5lZmljaWFyeWA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkIHdpdGggdGhlIG1pbnRlZCBhc3NldHMuxC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgdGhlIGFzc2V0IHRvIGJlIG1pbnRlZC4AlEVtaXRzIGBJc3N1ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgVQFNb2RlczogUHJlLWV4aXN0aW5nIGJhbGFuY2Ugb2YgYGJlbmVmaWNpYXJ5YDsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mIGBiZW5lZmljaWFyeWAuEGJ1cm4MAQhpZOABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudMABKFQ6OkJhbGFuY2UABzxFAVJlZHVjZSB0aGUgYmFsYW5jZSBvZiBgd2hvYCBieSBhcyBtdWNoIGFzIHBvc3NpYmxlIHVwIHRvIGBhbW91bnRgIGFzc2V0cyBvZiBgaWRgLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE1hbmFnZXIgb2YgdGhlIGFzc2V0IGBpZGAuANBCYWlscyB3aXRoIGBOb0FjY291bnRgIGlmIHRoZSBgd2hvYCBpcyBhbHJlYWR5IGRlYWQuAPwtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IGJ1cm5lZC6gLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgZGViaXRlZCBmcm9tLikBLSBgYW1vdW50YDogVGhlIG1heGltdW0gYW1vdW50IGJ5IHdoaWNoIGB3aG9gJ3MgYmFsYW5jZSBzaG91bGQgYmUgcmVkdWNlZC4AUQFFbWl0cyBgQnVybmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IGJ1cm5lZC4gSWYgdGhpcyB0YWtlcyB0aGUgYmFsYW5jZSB0byBiZWxvdyB0aGU5AW1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IGJ1cm5lZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWAJAU1vZGVzOiBQb3N0LWV4aXN0ZW5jZSBvZiBgd2hvYDsgUHJlICYgcG9zdCBab21iaWUtc3RhdHVzIG9mIGB3aG9gLiB0cmFuc2ZlcgwBCGlk4AFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50wAEoVDo6QmFsYW5jZQAISNBNb3ZlIHNvbWUgYXNzZXRzIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6cLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuUQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBzZW5kZXIncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRhAWB0YXJnZXRgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5dAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBzZW5kZXIgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dCBiZWxvd7x0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGB0YXJnZXRgOyBQb3N0LWV4aXN0ZW5jZSBvZiBzZW5kZXI7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiRgdGFyZ2V0YC5MdHJhbnNmZXJfa2VlcF9hbGl2ZQwBCGlk4AFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50wAEoVDo6QmFsYW5jZQAJSFkBTW92ZSBzb21lIGFzc2V0cyBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLCBrZWVwaW5nIHRoZSBzZW5kZXIgYWNjb3VudCBhbGl2ZS4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLjhmb3JjZV90cmFuc2ZlchABCGlk4AFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHNvdXJjZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50wAEoVDo6QmFsYW5jZQAKTLRNb3ZlIHNvbWUgYXNzZXRzIGZyb20gb25lIGFjY291bnQgdG8gYW5vdGhlci4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpgtIGBzb3VyY2VgOiBUaGUgYWNjb3VudCB0byBiZSBkZWJpdGVkLpQtIGBkZXN0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuWQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBgc291cmNlYCdzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZFkBYGRlc3RgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5NAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBgc291cmNlYCBiYWxhbmNlIGFib3ZlIHplcm8gYnV01GJlbG93IHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYGRlc3RgOyBQb3N0LWV4aXN0ZW5jZSBvZiBgc291cmNlYDsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mHGBkZXN0YC4YZnJlZXplCAEIaWTgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ACzBVAURpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBvZiBhbiBhc3NldCBgaWRgIGZyb20gYW4gYWNjb3VudCBgd2hvYC4gYHdob2BNAW11c3QgYWxyZWFkeSBleGlzdCBhcyBhbiBlbnRyeSBpbiBgQWNjb3VudGBzIG9mIHRoZSBhc3NldC4gSWYgeW91IHdhbnQgdG8gZnJlZXplIGFu9GFjY291bnQgdGhhdCBkb2VzIG5vdCBoYXZlIGFuIGVudHJ5LCB1c2UgYHRvdWNoX290aGVyYCBmaXJzdC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLogtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBmcm96ZW4uADxFbWl0cyBgRnJvemVuYC4AOFdlaWdodDogYE8oMSlgEHRoYXcIAQhpZOABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAMKOhBbGxvdyB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIHRvIGFuZCBmcm9tIGFuIGFjY291bnQgYWdhaW4uAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4ukC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVuZnJvemVuLgA8RW1pdHMgYFRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYDBmcmVlemVfYXNzZXQEAQhpZOABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIADSTwRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIGZvciB0aGUgYXNzZXQgY2xhc3MuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi4APEVtaXRzIGBGcm96ZW5gLgA4V2VpZ2h0OiBgTygxKWAodGhhd19hc3NldAQBCGlk4AFMVDo6QXNzZXRJZFBhcmFtZXRlcgAOJMRBbGxvdyB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIGZvciB0aGUgYXNzZXQgYWdhaW4uAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSB0aGF3ZWQuADxFbWl0cyBgVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgSHRyYW5zZmVyX293bmVyc2hpcAgBCGlk4AFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADyh0Q2hhbmdlIHRoZSBPd25lciBvZiBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LpwtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBhc3NldC4AVEVtaXRzIGBPd25lckNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWAgc2V0X3RlYW0QAQhpZOABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARhpc3N1ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxmcmVlemVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AEDDEQ2hhbmdlIHRoZSBJc3N1ZXIsIEFkbWluIGFuZCBGcmVlemVyIG9mIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLqQtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGFzc2V0LpwtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBhc3NldC6sLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGFzc2V0LgBQRW1pdHMgYFRlYW1DaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgMHNldF9tZXRhZGF0YRABCGlk4AFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAEUB4U2V0IHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuANhGdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTpRAWBNZXRhZGF0YURlcG9zaXRCYXNlICsgTWV0YWRhdGFEZXBvc2l0UGVyQnl0ZSAqIChuYW1lLmxlbiArIHN5bWJvbC5sZW4pYCB0YWtpbmcgaW50b4xhY2NvdW50IGFueSBhbHJlYWR5IHJlc2VydmVkIGZ1bmRzLgC4LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gdXBkYXRlLk0BLSBgbmFtZWA6IFRoZSB1c2VyIGZyaWVuZGx5IG5hbWUgb2YgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC5NAS0gYHN5bWJvbGA6IFRoZSBleGNoYW5nZSBzeW1ib2wgZm9yIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuLQEtIGBkZWNpbWFsc2A6IFRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdGhpcyBhc3NldCB1c2VzIHRvIHJlcHJlc2VudCBvbmUgdW5pdC4AUEVtaXRzIGBNZXRhZGF0YVNldGAuADhXZWlnaHQ6IGBPKDEpYDhjbGVhcl9tZXRhZGF0YQQBCGlk4AFMVDo6QXNzZXRJZFBhcmFtZXRlcgASLIBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgCkQW55IGRlcG9zaXQgaXMgZnJlZWQgZm9yIHRoZSBhc3NldCBvd25lci4AtC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYEhmb3JjZV9zZXRfbWV0YWRhdGEUAQhpZOABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVuyAEQYm9vbAATOLhGb3JjZSB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0IHRvIHNvbWUgdmFsdWUuAGxPcmlnaW4gbXVzdCBiZSBGb3JjZU9yaWdpbi4AaEFueSBkZXBvc2l0IGlzIGxlZnQgYWxvbmUuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byB1cGRhdGUuTQEtIGBuYW1lYDogVGhlIHVzZXIgZnJpZW5kbHkgbmFtZSBvZiB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLk0BLSBgc3ltYm9sYDogVGhlIGV4Y2hhbmdlIHN5bWJvbCBmb3IgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4tAS0gYGRlY2ltYWxzYDogVGhlIG51bWJlciBvZiBkZWNpbWFscyB0aGlzIGFzc2V0IHVzZXMgdG8gcmVwcmVzZW50IG9uZSB1bml0LgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AUQFXZWlnaHQ6IGBPKE4gKyBTKWAgd2hlcmUgTiBhbmQgUyBhcmUgdGhlIGxlbmd0aCBvZiB0aGUgbmFtZSBhbmQgc3ltYm9sIHJlc3BlY3RpdmVseS5QZm9yY2VfY2xlYXJfbWV0YWRhdGEEAQhpZOABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAFCyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBgQW55IGRlcG9zaXQgaXMgcmV0dXJuZWQuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2VfYXNzZXRfc3RhdHVzIAEIaWTgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLG1pbl9iYWxhbmNlwAEoVDo6QmFsYW5jZQABNGlzX3N1ZmZpY2llbnTIARBib29sAAEkaXNfZnJvemVuyAEQYm9vbAAVWJhBbHRlciB0aGUgYXR0cmlidXRlcyBvZiBhIGdpdmVuIGFzc2V0LgB0T3JpZ2luIG11c3QgYmUgYEZvcmNlT3JpZ2luYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LpwtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBhc3NldC6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uUQEtIGBpc19zdWZmaWNpZW50YDogV2hldGhlciBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhpcyBhc3NldCBpcyBkZXBvc2l0IG9mIHN1ZmZpY2llbnRNAXZhbHVlIHRvIGFjY291bnQgZm9yIHRoZSBzdGF0ZSBibG9hdCBhc3NvY2lhdGVkIHdpdGggaXRzIGJhbGFuY2Ugc3RvcmFnZS4gSWYgc2V0IHRvVQFgdHJ1ZWAsIHRoZW4gbm9uLXplcm8gYmFsYW5jZXMgbWF5IGJlIHN0b3JlZCB3aXRob3V0IGEgYGNvbnN1bWVyYCByZWZlcmVuY2UgKGFuZCB0aHVzTQFhbiBFRCBpbiB0aGUgQmFsYW5jZXMgcGFsbGV0IG9yIHdoYXRldmVyIGVsc2UgaXMgdXNlZCB0byBjb250cm9sIHVzZXItYWNjb3VudCBzdGF0ZSBncm93dGgpLj0BLSBgaXNfZnJvemVuYDogV2hldGhlciB0aGlzIGFzc2V0IGNsYXNzIGlzIGZyb3plbiBleGNlcHQgZm9yIHBlcm1pc3Npb25lZC9hZG1pbjRpbnN0cnVjdGlvbnMuAOhFbWl0cyBgQXNzZXRTdGF0dXNDaGFuZ2VkYCB3aXRoIHRoZSBpZGVudGl0eSBvZiB0aGUgYXNzZXQuADhXZWlnaHQ6IGBPKDEpYEBhcHByb3ZlX3RyYW5zZmVyDAEIaWTgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudMABKFQ6OkJhbGFuY2UAFlAtAUFwcHJvdmUgYW4gYW1vdW50IG9mIGFzc2V0IGZvciB0cmFuc2ZlciBieSBhIGRlbGVnYXRlZCB0aGlyZC1wYXJ0eSBhY2NvdW50LgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgBNAUVuc3VyZXMgdGhhdCBgQXBwcm92YWxEZXBvc2l0YCB3b3J0aCBvZiBgQ3VycmVuY3lgIGlzIHJlc2VydmVkIGZyb20gc2lnbmluZyBhY2NvdW50VQFmb3IgdGhlIHB1cnBvc2Ugb2YgaG9sZGluZyB0aGUgYXBwcm92YWwuIElmIHNvbWUgbm9uLXplcm8gYW1vdW50IG9mIGFzc2V0cyBpcyBhbHJlYWR5SQFhcHByb3ZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudCB0byBgZGVsZWdhdGVgLCB0aGVuIGl0IGlzIHRvcHBlZCB1cCBvciB1bnJlc2VydmVkIHRvVG1lZXQgdGhlIHJpZ2h0IHZhbHVlLgBFAU5PVEU6IFRoZSBzaWduaW5nIGFjY291bnQgZG9lcyBub3QgbmVlZCB0byBvd24gYGFtb3VudGAgb2YgYXNzZXRzIGF0IHRoZSBwb2ludCBvZkRtYWtpbmcgdGhpcyBjYWxsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuDQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuSQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0IHRoYXQgbWF5IGJlIHRyYW5zZmVycmVkIGJ5IGBkZWxlZ2F0ZWAuIElmIHRoZXJlIGlz4GFscmVhZHkgYW4gYXBwcm92YWwgaW4gcGxhY2UsIHRoZW4gdGhpcyBhY3RzIGFkZGl0aXZlbHkuAJBFbWl0cyBgQXBwcm92ZWRUcmFuc2ZlcmAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgPGNhbmNlbF9hcHByb3ZhbAgBCGlk4AFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AFzRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYmV0d2VlbiBzaWduZXIgYW5kLGBkZWxlZ2F0ZWAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBUZm9yY2VfY2FuY2VsX2FwcHJvdmFsDAEIaWTgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AGDRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgRm9yY2VPcmlnaW4gb3IgU2lnbmVkIG9yaWdpbiB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIEFkbWluaGFjY291bnQgb2YgdGhlIGFzc2V0IGBpZGAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBEdHJhbnNmZXJfYXBwcm92ZWQQAQhpZOABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsZGVzdGluYXRpb24AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudMABKFQ6OkJhbGFuY2UAGUhNAVRyYW5zZmVyIHNvbWUgYXNzZXQgYmFsYW5jZSBmcm9tIGEgcHJldmlvdXNseSBkZWxlZ2F0ZWQgYWNjb3VudCB0byBzb21lIHRoaXJkLXBhcnR5IGFjY291bnQuAEkBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGVyZSBtdXN0IGJlIGFuIGFwcHJvdmFsIGluIHBsYWNlIGJ5IHRoZSBgb3duZXJgIHRvIHRoZRxzaWduZXIuAFkBSWYgdGhlIGVudGlyZSBhbW91bnQgYXBwcm92ZWQgZm9yIHRyYW5zZmVyIGlzIHRyYW5zZmVycmVkLCB0aGVuIGFueSBkZXBvc2l0IHByZXZpb3VzbHm0cmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGlzIHVucmVzZXJ2ZWQuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC5hAS0gYG93bmVyYDogVGhlIGFjY291bnQgd2hpY2ggcHJldmlvdXNseSBhcHByb3ZlZCBmb3IgYSB0cmFuc2ZlciBvZiBhdCBsZWFzdCBgYW1vdW50YCBhbmS8ZnJvbSB3aGljaCB0aGUgYXNzZXQgYmFsYW5jZSB3aWxsIGJlIHdpdGhkcmF3bi5hAS0gYGRlc3RpbmF0aW9uYDogVGhlIGFjY291bnQgdG8gd2hpY2ggdGhlIGFzc2V0IGJhbGFuY2Ugb2YgYGFtb3VudGAgd2lsbCBiZSB0cmFuc2ZlcnJlZC60LSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiBhc3NldHMgdG8gdHJhbnNmZXIuAJxFbWl0cyBgVHJhbnNmZXJyZWRBcHByb3ZlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgFHRvdWNoBAEIaWTgAUxUOjpBc3NldElkUGFyYW1ldGVyABokwENyZWF0ZSBhbiBhc3NldCBhY2NvdW50IGZvciBub24tcHJvdmlkZXIgYXNzZXRzLgDAQSBkZXBvc2l0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgc2lnbmVyIGFjY291bnQuAF0BLSBgb3JpZ2luYDogTXVzdCBiZSBTaWduZWQ7IHRoZSBzaWduZXIgYWNjb3VudCBtdXN0IGhhdmUgc3VmZmljaWVudCBmdW5kcyBmb3IgYSBkZXBvc2l0OCAgdG8gYmUgdGFrZW4uCQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZC4AmEVtaXRzIGBUb3VjaGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuGHJlZnVuZAgBCGlk4AFMVDo6QXNzZXRJZFBhcmFtZXRlcgABKGFsbG93X2J1cm7IARBib29sABs0WQFSZXR1cm4gdGhlIGRlcG9zaXQgKGlmIGFueSkgb2YgYW4gYXNzZXQgYWNjb3VudCBvciBhIGNvbnN1bWVyIHJlZmVyZW5jZSAoaWYgYW55KSBvZiBhbiBhY2NvdW50LgBoVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZC4APQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3Igd2hpY2ggdGhlIGNhbGxlciB3b3VsZCBsaWtlIHRoZSBkZXBvc2l0LCAgcmVmdW5kZWQuXQEtIGBhbGxvd19idXJuYDogSWYgYHRydWVgIHRoZW4gYXNzZXRzIG1heSBiZSBkZXN0cm95ZWQgaW4gb3JkZXIgdG8gY29tcGxldGUgdGhlIHJlZnVuZC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlm1HRoZSBhc3NldCBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuAJxFbWl0cyBgUmVmdW5kZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC48c2V0X21pbl9iYWxhbmNlCAEIaWTgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEsbWluX2JhbGFuY2XEAShUOjpCYWxhbmNlABwwlFNldHMgdGhlIG1pbmltdW0gYmFsYW5jZSBvZiBhbiBhc3NldC4AIQFPbmx5IHdvcmtzIGlmIHRoZXJlIGFyZW4ndCBhbnkgYWNjb3VudHMgdGhhdCBhcmUgaG9sZGluZyB0aGUgYXNzZXQgb3IgaWbgdGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgIGlzIGxlc3MgdGhhbiB0aGUgb2xkIG9uZS4A/E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBoYXMgdG8gYmUgdGhlIE93bmVyIG9mIHRoZSxhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuwC0gYG1pbl9iYWxhbmNlYDogVGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgLgDURW1pdHMgYEFzc2V0TWluQmFsYW5jZUNoYW5nZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4sdG91Y2hfb3RoZXIIAQhpZOABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAdLIhDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3IgYHdob2AuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AXQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZDsgdGhlIHNpZ25lciBhY2NvdW50IG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQ4ICB0byBiZSB0YWtlbi5hAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLCB0aGUgYXNzZXQgc3RhdHVzIG11c3QoICBiZSBsaXZlLowtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4wcmVmdW5kX290aGVyCAEIaWTgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHjRdAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhIHRhcmdldCBhc3NldCBhY2NvdW50LiBVc2VmdWwgaWYgeW91IGFyZSB0aGUgZGVwb3NpdG9yLgBdAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIGVpdGhlciB0aGUgYWNjb3VudCBvd25lciwgZGVwb3NpdG9yLCBvciBhc3NldCBgQWRtaW5gLiBJbmEBb3JkZXIgdG8gYnVybiBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhlIGFzc2V0LCB0aGUgY2FsbGVyIG11c3QgYmUgdGhlIGFjY291bnQgYW5kIHNob3VsZDR1c2UgYHJlZnVuZGAuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LnwtIGB3aG9gOiBUaGUgYWNjb3VudCB0byByZWZ1bmQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZtR0aGUgYXNzZXQgYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLgCcRW1pdHMgYFJlZnVuZGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuFGJsb2NrCAEIaWTgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHyhZAURpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBvZiBhbiBhc3NldCBgaWRgIHRvIGFuZCBmcm9tIGFuIGFjY291bnQgYHdob2AuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFjY291bnQncyBhc3NldC6ULSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5ibG9ja2VkLgBARW1pdHMgYEJsb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWAwdHJhbnNmZXJfYWxsDAEIaWTgAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoa2VlcF9hbGl2ZcgBEGJvb2wAIEAdAVRyYW5zZmVyIHRoZSBlbnRpcmUgdHJhbnNmZXJhYmxlIGJhbGFuY2UgZnJvbSB0aGUgY2FsbGVyIGFzc2V0IGFjY291bnQuAFkBTk9URTogVGhpcyBmdW5jdGlvbiBvbmx5IGF0dGVtcHRzIHRvIHRyYW5zZmVyIF90cmFuc2ZlcmFibGVfIGJhbGFuY2VzLiBUaGlzIG1lYW5zIHRoYXQ9AWFueSBoZWxkLCBmcm96ZW4sIG9yIG1pbmltdW0gYmFsYW5jZSAod2hlbiBga2VlcF9hbGl2ZWAgaXMgYHRydWVgKSwgd2lsbCBub3QgYmVdAXRyYW5zZmVycmVkIGJ5IHRoaXMgZnVuY3Rpb24uIFRvIGVuc3VyZSB0aGF0IHRoaXMgZnVuY3Rpb24gcmVzdWx0cyBpbiBhIGtpbGxlZCBhY2NvdW50LEUBeW91IG1pZ2h0IG5lZWQgdG8gcHJlcGFyZSB0aGUgYWNjb3VudCBieSByZW1vdmluZyBhbnkgcmVmZXJlbmNlIGNvdW50ZXJzLCBzdG9yYWdlQGRlcG9zaXRzLCBldGMuLi4AwFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgU2lnbmVkLgAZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCBob2xkaW5nIGEgZGVwb3NpdC6gLSBgZGVzdGA6IFRoZSByZWNpcGllbnQgb2YgdGhlIHRyYW5zZmVyLlkBLSBga2VlcF9hbGl2ZWA6IEEgYm9vbGVhbiB0byBkZXRlcm1pbmUgaWYgdGhlIGB0cmFuc2Zlcl9hbGxgIG9wZXJhdGlvbiBzaG91bGQgc2VuZCBhbGxNASAgb2YgdGhlIGZ1bmRzIHRoZSBhc3NldCBhY2NvdW50IGhhcywgY2F1c2luZyB0aGUgc2VuZGVyIGFzc2V0IGFjY291bnQgdG8gYmUga2lsbGVkRQEgIChmYWxzZSksIG9yIHRyYW5zZmVyIGV2ZXJ5dGhpbmcgZXhjZXB0IGF0IGxlYXN0IHRoZSBtaW5pbXVtIGJhbGFuY2UsIHdoaWNoIHdpbGzoICBndWFyYW50ZWUgdG8ga2VlcCB0aGUgc2VuZGVyIGFzc2V0IGFjY291bnQgYWxpdmUgKHRydWUpLjBzZXRfcmVzZXJ2ZXMIAQhpZOABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASByZXNlcnZlcx0BAchCb3VuZGVkVmVjPFQ6OlJlc2VydmVEYXRhLCBDb25zdFUzMjxNQVhfUkVTRVJWRVM+PgAhJMRTZXRzIHRoZSB0cnVzdGVkIHJlc2VydmUgaW5mb3JtYXRpb24gb2YgYW4gYXNzZXQuAFUBT3JpZ2luIG11c3QgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLiBUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byB0aGUgY29uZmlndXJlZCUBYENyZWF0ZU9yaWdpbmAgb3IgYmUgdGhlIHNpZ25lZCBgb3duZXJgIGNvbmZpZ3VyZWQgZHVyaW5nIGFzc2V0IGNyZWF0aW9uLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQu8C0gYHJlc2VydmVzYDogVGhlIGZ1bGwgbGlzdCBvZiB0cnVzdGVkIHJlc2VydmVzIGluZm9ybWF0aW9uLgDURW1pdHMgYEFzc2V0TWluQmFsYW5jZUNoYW5nZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu4BAsc3RhZ2luZ194Y20IdjUgbG9jYXRpb24gTG9jYXRpb24AAAgBHHBhcmVudHMMAQh1OAABIGludGVyaW9y5AEkSnVuY3Rpb25zAADkECxzdGFnaW5nX3hjbQh2NSRqdW5jdGlvbnMkSnVuY3Rpb25zAAEkEEhlcmUAAAAIWDEEAOgBSEFyYzxbSnVuY3Rpb247IDFdPgABAAhYMgQAAQEBSEFyYzxbSnVuY3Rpb247IDJdPgACAAhYMwQABQEBSEFyYzxbSnVuY3Rpb247IDNdPgADAAhYNAQACQEBSEFyYzxbSnVuY3Rpb247IDRdPgAEAAhYNQQADQEBSEFyYzxbSnVuY3Rpb247IDVdPgAFAAhYNgQAEQEBSEFyYzxbSnVuY3Rpb247IDZdPgAGAAhYNwQAFQEBSEFyYzxbSnVuY3Rpb247IDddPgAHAAhYOAQAGQEBSEFyYzxbSnVuY3Rpb247IDhdPgAIAADoAAADAQAAAOwA7BAsc3RhZ2luZ194Y20IdjUganVuY3Rpb24gSnVuY3Rpb24AASgkUGFyYWNoYWluBABgAQx1MzIAAAAsQWNjb3VudElkMzIIARxuZXR3b3Jr8AFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAgBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29ya/ABRE9wdGlvbjxOZXR3b3JrSWQ+AAEUaW5kZXi0AQx1NjQAAgAwQWNjb3VudEtleTIwCAEcbmV0d29ya/ABRE9wdGlvbjxOZXR3b3JrSWQ+AAEMa2V5HAEgW3U4OyAyMF0AAwA4UGFsbGV0SW5zdGFuY2UEAAwBCHU4AAQAMEdlbmVyYWxJbmRleAQAwAEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoDAEIdTgAARBkYXRhCAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlk+AEYQm9keUlkAAEQcGFydPwBIEJvZHlQYXJ0AAgAPEdsb2JhbENvbnNlbnN1cwQA9AEkTmV0d29ya0lkAAkAAPAEGE9wdGlvbgQEVAH0AQgQTm9uZQAAABBTb21lBAD0AAABAAD0ECxzdGFnaW5nX3hjbQh2NSBqdW5jdGlvbiROZXR3b3JrSWQAASAkQnlHZW5lc2lzBAAIASBbdTg7IDMyXQAAABhCeUZvcmsIATBibG9ja19udW1iZXIoAQx1NjQAAShibG9ja19oYXNoCAEgW3U4OyAzMl0AAQAgUG9sa2Fkb3QAAgAYS3VzYW1hAAMAIEV0aGVyZXVtBAEgY2hhaW5faWS0AQx1NjQABwAsQml0Y29pbkNvcmUACAAsQml0Y29pbkNhc2gACQBAUG9sa2Fkb3RCdWxsZXRpbgAKAAD4EAx4Y20IdjMganVuY3Rpb24YQm9keUlkAAEoEFVuaXQAAAAcTW9uaWtlcgQAcAEcW3U4OyA0XQABABRJbmRleAQAYAEMdTMyAAIAJEV4ZWN1dGl2ZQADACRUZWNobmljYWwABAAsTGVnaXNsYXRpdmUABQAgSnVkaWNpYWwABgAcRGVmZW5zZQAHADhBZG1pbmlzdHJhdGlvbgAIACBUcmVhc3VyeQAJAAD8EAx4Y20IdjMganVuY3Rpb24gQm9keVBhcnQAARQUVm9pY2UAAAAcTWVtYmVycwQBFGNvdW50YAEMdTMyAAEAIEZyYWN0aW9uCAEMbm9tYAEMdTMyAAEUZGVub21gAQx1MzIAAgBEQXRMZWFzdFByb3BvcnRpb24IAQxub21gAQx1MzIAARRkZW5vbWABDHUzMgADAEhNb3JlVGhhblByb3BvcnRpb24IAQxub21gAQx1MzIAARRkZW5vbWABDHUzMgAEAAABAQAAAwIAAADsAAUBAAADAwAAAOwACQEAAAMEAAAA7AANAQAAAwUAAADsABEBAAADBgAAAOwAFQEAAAMHAAAA7AAZAQAAAwgAAADsAB0BDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBIQEEUwAABAAlAQEYVmVjPFQ+AAAhAQw0YXNzZXRzX2NvbW1vbmBsb2NhbF9hbmRfZm9yZWlnbl9hc3NldHNcRm9yZWlnbkFzc2V0UmVzZXJ2ZURhdGEAAAgBHHJlc2VydmXgASBMb2NhdGlvbgABMHRlbGVwb3J0YWJsZcgBEGJvb2wAACUBAAACIQEAKQEMRHBhbGxldF9hc3NldF9yYXRlGHBhbGxldBBDYWxsBARUAAEMGGNyZWF0ZQgBKGFzc2V0X2tpbmTgAURCb3g8VDo6QXNzZXRLaW5kPgABEHJhdGUtAQEkRml4ZWRVMTI4AAAQDQFJbml0aWFsaXplIGEgY29udmVyc2lvbiByYXRlIHRvIG5hdGl2ZSBiYWxhbmNlIGZvciB0aGUgZ2l2ZW4gYXNzZXQuADQjIyBDb21wbGV4aXR5GC0gTygxKRh1cGRhdGUIAShhc3NldF9raW5k4AFEQm94PFQ6OkFzc2V0S2luZD4AARByYXRlLQEBJEZpeGVkVTEyOAABEAUBVXBkYXRlIHRoZSBjb252ZXJzaW9uIHJhdGUgdG8gbmF0aXZlIGJhbGFuY2UgZm9yIHRoZSBnaXZlbiBhc3NldC4ANCMjIENvbXBsZXhpdHkYLSBPKDEpGHJlbW92ZQQBKGFzc2V0X2tpbmTgAURCb3g8VDo6QXNzZXRLaW5kPgACECUBUmVtb3ZlIGFuIGV4aXN0aW5nIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuLQEMNHNwX2FyaXRobWV0aWMsZml4ZWRfcG9pbnQkRml4ZWRVMTI4AAAEAMQBEHUxMjgAADEBDGRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uGHBhbGxldBBDYWxsBARUAAEkRHNldF9pbnZ1bG5lcmFibGVzBAEMbmV3zAFEVmVjPFQ6OkFjY291bnRJZD4AADQxAVNldCB0aGUgbGlzdCBvZiBpbnZ1bG5lcmFibGUgKGZpeGVkKSBjb2xsYXRvcnMuIFRoZXNlIGNvbGxhdG9ycyBtdXN0IGRvIHNvbWXQcHJlcGFyYXRpb24sIG5hbWVseSB0byBoYXZlIHJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzLgBZAVRoZSBjYWxsIHdpbGwgcmVtb3ZlIGFueSBhY2NvdW50cyB0aGF0IGhhdmUgbm90IHJlZ2lzdGVyZWQga2V5cyBmcm9tIHRoZSBzZXQuIFRoYXQgaXMsXQFpdCBpcyBub24tYXRvbWljOyB0aGUgY2FsbGVyIGFjY2VwdHMgYWxsIGBBY2NvdW50SWRgcyBwYXNzZWQgaW4gYG5ld2AgX2luZGl2aWR1YWxseV8gYXMxAWFjY2VwdGFibGUgSW52dWxuZXJhYmxlcywgYW5kIGlzIG5vdCBwcm9wb3NpbmcgYSBfc2V0XyBvZiBuZXcgSW52dWxuZXJhYmxlcy4AWQFUaGlzIGNhbGwgZG9lcyBub3QgbWFpbnRhaW4gbXV0dWFsIGV4Y2x1c2l2aXR5IG9mIGBJbnZ1bG5lcmFibGVzYCBhbmQgYENhbmRpZGF0ZXNgLiBJdGEBaXMgcmVjb21tZW5kZWQgdG8gdXNlIGEgYmF0Y2ggb2YgYGFkZF9pbnZ1bG5lcmFibGVgIGFuZCBgcmVtb3ZlX2ludnVsbmVyYWJsZWAgaW5zdGVhZC4gQVEBYGJhdGNoX2FsbGAgY2FuIGFsc28gYmUgdXNlZCB0byBlbmZvcmNlIGF0b21pY2l0eS4gSWYgYW55IGNhbmRpZGF0ZXMgYXJlIGluY2x1ZGVkIGluTQFgbmV3YCwgdGhleSBzaG91bGQgYmUgcmVtb3ZlZCB3aXRoIGByZW1vdmVfaW52dWxuZXJhYmxlX2NhbmRpZGF0ZWAgYWZ0ZXIgZXhlY3V0aW9uLgCUTXVzdCBiZSBjYWxsZWQgYnkgdGhlIGBVcGRhdGVPcmlnaW5gLlhzZXRfZGVzaXJlZF9jYW5kaWRhdGVzBAEMbWF4OAEMdTMyAAEUVQFTZXQgdGhlIGlkZWFsIG51bWJlciBvZiBub24taW52dWxuZXJhYmxlIGNvbGxhdG9ycy4gSWYgbG93ZXJpbmcgdGhpcyBudW1iZXIsIHRoZW4gdGhlYQFudW1iZXIgb2YgcnVubmluZyBjb2xsYXRvcnMgY291bGQgYmUgaGlnaGVyIHRoYW4gdGhpcyBmaWd1cmUuIEFzaWRlIGZyb20gdGhhdCBlZGdlIGNhc2UsNQF0aGVyZSBzaG91bGQgYmUgbm8gb3RoZXIgd2F5IHRvIGhhdmUgbW9yZSBjYW5kaWRhdGVzIHRoYW4gdGhlIGRlc2lyZWQgbnVtYmVyLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLkhzZXRfY2FuZGlkYWN5X2JvbmQEARBib25kxAEwQmFsYW5jZU9mPFQ+AAIceFNldCB0aGUgY2FuZGlkYWN5IGJvbmQgYW1vdW50LgBRAUlmIHRoZSBjYW5kaWRhY3kgYm9uZCBpcyBpbmNyZWFzZWQgYnkgdGhpcyBjYWxsLCBhbGwgY3VycmVudCBjYW5kaWRhdGVzIHdoaWNoIGhhdmUgYU0BZGVwb3NpdCBsb3dlciB0aGFuIHRoZSBuZXcgYm9uZCB3aWxsIGJlIGtpY2tlZCBmcm9tIHRoZSBsaXN0IGFuZCBnZXQgdGhlaXIgZGVwb3NpdHMUYmFjay4A0FRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBgVXBkYXRlT3JpZ2luYC5UcmVnaXN0ZXJfYXNfY2FuZGlkYXRlAAMQQQFSZWdpc3RlciB0aGlzIGFjY291bnQgYXMgYSBjb2xsYXRvciBjYW5kaWRhdGUuIFRoZSBhY2NvdW50IG11c3QgKGEpIGFscmVhZHkgaGF2ZR0BcmVnaXN0ZXJlZCBzZXNzaW9uIGtleXMgYW5kIChiKSBiZSBhYmxlIHRvIHJlc2VydmUgdGhlIGBDYW5kaWRhY3lCb25kYC4A3FRoaXMgY2FsbCBpcyBub3QgYXZhaWxhYmxlIHRvIGBJbnZ1bG5lcmFibGVgIGNvbGxhdG9ycy4wbGVhdmVfaW50ZW50AAQUVQFEZXJlZ2lzdGVyIGBvcmlnaW5gIGFzIGEgY29sbGF0b3IgY2FuZGlkYXRlLiBOb3RlIHRoYXQgdGhlIGNvbGxhdG9yIGNhbiBvbmx5IGxlYXZlIG9uDQFzZXNzaW9uIGNoYW5nZS4gVGhlIGBDYW5kaWRhY3lCb25kYCB3aWxsIGJlIHVucmVzZXJ2ZWQgaW1tZWRpYXRlbHkuABkBVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiB0aGUgdG90YWwgbnVtYmVyIG9mIGNhbmRpZGF0ZXMgd291bGQgZHJvcCBiZWxvd1xgTWluRWxpZ2libGVDb2xsYXRvcnNgLkBhZGRfaW52dWxuZXJhYmxlBAEMd2hvBAEwVDo6QWNjb3VudElkAAUQRQFBZGQgYSBuZXcgYWNjb3VudCBgd2hvYCB0byB0aGUgbGlzdCBvZiBgSW52dWxuZXJhYmxlc2AgY29sbGF0b3JzLiBgd2hvYCBtdXN0IGhhdmUdAXJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzLiBJZiBgd2hvYCBpcyBhIGNhbmRpZGF0ZSwgdGhleSB3aWxsIGJlIHJlbW92ZWQuANBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYFVwZGF0ZU9yaWdpbmAuTHJlbW92ZV9pbnZ1bG5lcmFibGUEAQx3aG8EATBUOjpBY2NvdW50SWQABhBhAVJlbW92ZSBhbiBhY2NvdW50IGB3aG9gIGZyb20gdGhlIGxpc3Qgb2YgYEludnVsbmVyYWJsZXNgIGNvbGxhdG9ycy4gYEludnVsbmVyYWJsZXNgIG11c3QoYmUgc29ydGVkLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLix1cGRhdGVfYm9uZAQBLG5ld19kZXBvc2l0xAEwQmFsYW5jZU9mPFQ+AAccXQFVcGRhdGUgdGhlIGNhbmRpZGFjeSBib25kIG9mIGNvbGxhdG9yIGNhbmRpZGF0ZSBgb3JpZ2luYCB0byBhIG5ldyBhbW91bnQgYG5ld19kZXBvc2l0YC4AQQFTZXR0aW5nIGEgYG5ld19kZXBvc2l0YCB0aGF0IGlzIGxvd2VyIHRoYW4gdGhlIGN1cnJlbnQgZGVwb3NpdCB3aGlsZSBgb3JpZ2luYCBpc+BvY2N1cHlpbmcgYSB0b3AtYERlc2lyZWRDYW5kaWRhdGVzYCBzbG90IGlzIG5vdCBhbGxvd2VkLgBZAVRoaXMgY2FsbCB3aWxsIGZhaWwgaWYgYG9yaWdpbmAgaXMgbm90IGEgY29sbGF0b3IgY2FuZGlkYXRlLCB0aGUgdXBkYXRlZCBib25kIGlzIGxvd2VyGQF0aGFuIHRoZSBtaW5pbXVtIGNhbmRpZGFjeSBib25kLCBhbmQvb3IgdGhlIGFtb3VudCBjYW5ub3QgYmUgcmVzZXJ2ZWQuTHRha2VfY2FuZGlkYXRlX3Nsb3QIARxkZXBvc2l0xAEwQmFsYW5jZU9mPFQ+AAEYdGFyZ2V0BAEwVDo6QWNjb3VudElkAAgcTQFUaGUgY2FsbGVyIGBvcmlnaW5gIHJlcGxhY2VzIGEgY2FuZGlkYXRlIGB0YXJnZXRgIGluIHRoZSBjb2xsYXRvciBjYW5kaWRhdGUgbGlzdCBieVUBcmVzZXJ2aW5nIGBkZXBvc2l0YC4gVGhlIGFtb3VudCBgZGVwb3NpdGAgcmVzZXJ2ZWQgYnkgdGhlIGNhbGxlciBtdXN0IGJlIGdyZWF0ZXIgdGhhbuB0aGUgZXhpc3RpbmcgYm9uZCBvZiB0aGUgdGFyZ2V0IGl0IGlzIHRyeWluZyB0byByZXBsYWNlLgBZAVRoaXMgY2FsbCB3aWxsIGZhaWwgaWYgdGhlIGNhbGxlciBpcyBhbHJlYWR5IGEgY29sbGF0b3IgY2FuZGlkYXRlIG9yIGludnVsbmVyYWJsZSwgdGhlVQFjYWxsZXIgZG9lcyBub3QgaGF2ZSByZWdpc3RlcmVkIHNlc3Npb24ga2V5cywgdGhlIHRhcmdldCBpcyBub3QgYSBjb2xsYXRvciBjYW5kaWRhdGUsvGFuZC9vciB0aGUgYGRlcG9zaXRgIGFtb3VudCBjYW5ub3QgYmUgcmVzZXJ2ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLjUBDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQQQ2FsbAQEVAABCCBzZXRfa2V5cwgBEGtleXM5AQEcVDo6S2V5cwABFHByb29mGAEcVmVjPHU4PgAALORTZXRzIHRoZSBzZXNzaW9uIGtleShzKSBvZiB0aGUgZnVuY3Rpb24gY2FsbGVyIHRvIGBrZXlzYC4AHQFBbGxvd3MgYW4gYWNjb3VudCB0byBzZXQgaXRzIHNlc3Npb24ga2V5IHByaW9yIHRvIGJlY29taW5nIGEgdmFsaWRhdG9yLsBUaGlzIGRvZXNuJ3QgdGFrZSBlZmZlY3QgdW50aWwgdGhlIG5leHQgc2Vzc2lvbi4AAQEtIGBvcmlnaW5gOiBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgZnVuY3Rpb24gbXVzdCBiZSBzaWduZWQuVQEtIGBrZXlzYDogVGhlIG5ldyBzZXNzaW9uIGtleXMgdG8gc2V0LiBUaGVzZSBhcmUgdGhlIHB1YmxpYyBrZXlzIG9mIGFsbCBzZXNzaW9ucyBrZXlzXCAgc2V0dXAgaW4gdGhlIHJ1bnRpbWUuQQEtIGBwcm9vZmA6IFRoZSBwcm9vZiB0aGF0IGBvcmlnaW5gIGhhcyBhY2Nlc3MgdG8gdGhlIHByaXZhdGUga2V5cyBvZiBga2V5c2AuIFNlZU0BICBbYGltcGxfb3BhcXVlX2tleXNgXShzcF9ydW50aW1lOjppbXBsX29wYXF1ZV9rZXlzKSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGU8ICBwcm9vZiBmb3JtYXQuKHB1cmdlX2tleXMAASDIUmVtb3ZlcyBhbnkgc2Vzc2lvbiBrZXkocykgb2YgdGhlIGZ1bmN0aW9uIGNhbGxlci4AwFRoaXMgZG9lc24ndCB0YWtlIGVmZmVjdCB1bnRpbCB0aGUgbmV4dCBzZXNzaW9uLgBVAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBmdW5jdGlvbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIGFjY291bnQgbXVzdCBiZSBlaXRoZXIgYmVdAWNvbnZlcnRpYmxlIHRvIGEgdmFsaWRhdG9yIElEIHVzaW5nIHRoZSBjaGFpbidzIHR5cGljYWwgYWRkcmVzc2luZyBzeXN0ZW0gKHRoaXMgdXN1YWxseVEBbWVhbnMgYmVpbmcgYSBjb250cm9sbGVyIGFjY291bnQpIG9yIGRpcmVjdGx5IGNvbnZlcnRpYmxlIGludG8gYSB2YWxpZGF0b3IgSUQgKHdoaWNolHVzdWFsbHkgbWVhbnMgYmVpbmcgYSBzdGFzaCBhY2NvdW50KS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuOQEIZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUsU2Vzc2lvbktleXMAAAQBEGF1cmE9AQHEPEF1cmEgYXMgJGNyYXRlOjpCb3VuZFRvUnVudGltZUFwcFB1YmxpYz46OlB1YmxpYwAAPQEQRHNwX2NvbnNlbnN1c19hdXJhHHNyMjU1MTksYXBwX3NyMjU1MTkYUHVibGljAAAEAAgBPHNyMjU1MTk6OlB1YmxpYwAAQQEMZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0EENhbGwEBFQAARRUc3VzcGVuZF94Y21fZXhlY3V0aW9uAAEMSQFTdXNwZW5kcyBhbGwgWENNIGV4ZWN1dGlvbnMgZm9yIHRoZSBYQ01QIHF1ZXVlLCByZWdhcmRsZXNzIG9mIHRoZSBzZW5kZXIncyBvcmlnaW4uAKQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYENvbnRyb2xsZXJPcmlnaW5gLlByZXN1bWVfeGNtX2V4ZWN1dGlvbgACFLhSZXN1bWVzIGFsbCBYQ00gZXhlY3V0aW9ucyBmb3IgdGhlIFhDTVAgcXVldWUuAD0BTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gZG9lc24ndCBjaGFuZ2UgdGhlIHN0YXR1cyBvZiB0aGUgaW4vb3V0IGJvdW5kIGNoYW5uZWxzLgCkLSBgb3JpZ2luYDogTXVzdCBwYXNzIGBDb250cm9sbGVyT3JpZ2luYC5gdXBkYXRlX3N1c3BlbmRfdGhyZXNob2xkBAEMbmV3OAEMdTMyAAMUSQFPdmVyd3JpdGVzIHRoZSBudW1iZXIgb2YgcGFnZXMgd2hpY2ggbXVzdCBiZSBpbiB0aGUgcXVldWUgZm9yIHRoZSBvdGhlciBzaWRlIHRvIGJleHRvbGQgdG8gc3VzcGVuZCB0aGVpciBzZW5kaW5nLgB0LSBgb3JpZ2luYDogTXVzdCBwYXNzIGBSb290YC7oLSBgbmV3YDogRGVzaXJlZCB2YWx1ZSBmb3IgYFF1ZXVlQ29uZmlnRGF0YS5zdXNwZW5kX3ZhbHVlYFR1cGRhdGVfZHJvcF90aHJlc2hvbGQEAQxuZXc4AQx1MzIABBRFAU92ZXJ3cml0ZXMgdGhlIG51bWJlciBvZiBwYWdlcyB3aGljaCBtdXN0IGJlIGluIHRoZSBxdWV1ZSBhZnRlciB3aGljaCB3ZSBkcm9wIGFueYhmdXJ0aGVyIG1lc3NhZ2VzIGZyb20gdGhlIGNoYW5uZWwuAHQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYFJvb3RgLuwtIGBuZXdgOiBEZXNpcmVkIHZhbHVlIGZvciBgUXVldWVDb25maWdEYXRhLmRyb3BfdGhyZXNob2xkYFx1cGRhdGVfcmVzdW1lX3RocmVzaG9sZAQBDG5ldzgBDHUzMgAFFE0BT3ZlcndyaXRlcyB0aGUgbnVtYmVyIG9mIHBhZ2VzIHdoaWNoIHRoZSBxdWV1ZSBtdXN0IGJlIHJlZHVjZWQgdG8gYmVmb3JlIGl0IHNpZ25hbHMBAXRoYXQgbWVzc2FnZSBzZW5kaW5nIG1heSByZWNvbW1lbmNlIGFmdGVyIGl0IGhhcyBiZWVuIHN1c3BlbmRlZC4AdC0gYG9yaWdpbmA6IE11c3QgcGFzcyBgUm9vdGAu9C0gYG5ld2A6IERlc2lyZWQgdmFsdWUgZm9yIGBRdWV1ZUNvbmZpZ0RhdGEucmVzdW1lX3RocmVzaG9sZGAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuRQEMKHBhbGxldF94Y20YcGFsbGV0EENhbGwEBFQAAUQQc2VuZAgBEGRlc3RJAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABHG1lc3NhZ2WVAQFUQm94PFZlcnNpb25lZFhjbTwoKT4+AAAAPHRlbGVwb3J0X2Fzc2V0cxABEGRlc3RJAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABLGJlbmVmaWNpYXJ5SQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHPZAgFQQm94PFZlcnNpb25lZEFzc2V0cz4AAThmZWVfYXNzZXRfaXRlbTgBDHUzMgABSBEBVGVsZXBvcnQgc29tZSBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gc29tZSBkZXN0aW5hdGlvbiBjaGFpbi4AHQEqKlRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDogVXNlIGBsaW1pdGVkX3RlbGVwb3J0X2Fzc2V0c2AgaW5zdGVhZC4qKgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYC4gVGhlIHdlaWdodCBsaW1pdCBmb3IgZmVlcyBpcyBub3QgcHJvdmlkZWQgYW5kIHRodXMgaXMgdW5saW1pdGVkLLR3aXRoIGFsbCBmZWVzIHRha2VuIGFzIG5lZWRlZCBmcm9tIHRoZSBhc3NldC4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlaCAgZmVlIG9uIHRoZSBgZGVzdGAgY2hhaW4uTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuXHJlc2VydmVfdHJhbnNmZXJfYXNzZXRzEAEQZGVzdEkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnlJAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c9kCAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAJ4XQFUcmFuc2ZlciBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdGhyb3VnaCB0aGVpciBsb2NhbCx4ZGVzdGluYXRpb24gb3IgcmVtb3RlIHJlc2VydmUuAD0BYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBhbmQgbWF5IG5vdCBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLk0BIC0gYGFzc2V0c2AgaGF2ZSBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb25NASAgIGNoYWluIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkbCAgIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlUBIC0gYGFzc2V0c2AgaGF2ZSBkZXN0aW5hdGlvbiByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuYQEgLSBgYXNzZXRzYCBoYXZlIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlYQEgICByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3Rg9CAgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4APQEqKlRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDogVXNlIGBsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzYCBpbnN0ZWFkLioqAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLiBUaGUgd2VpZ2h0IGxpbWl0IGZvciBmZWVzIGlzIG5vdCBwcm92aWRlZCBhbmQgdGh1cyBpcyB1bmxpbWl0ZWQstHdpdGggYWxsIGZlZXMgdGFrZW4gYXMgbmVlZGVkIGZyb20gdGhlIGFzc2V0LgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGXIICBmZWUgb24gdGhlIGBkZXN0YCAoYW5kIHBvc3NpYmx5IHJlc2VydmUpIGNoYWlucy5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy4cZXhlY3V0ZQgBHG1lc3NhZ2XdAgG0Qm94PFZlcnNpb25lZFhjbTw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4+AAEobWF4X3dlaWdodNUBARhXZWlnaHQAAyDQRXhlY3V0ZSBhbiBYQ00gbWVzc2FnZSBmcm9tIGEgbG9jYWwsIHNpZ25lZCwgb3JpZ2luLgBNAUFuIGV2ZW50IGlzIGRlcG9zaXRlZCBpbmRpY2F0aW5nIHdoZXRoZXIgYG1zZ2AgY291bGQgYmUgZXhlY3V0ZWQgY29tcGxldGVseSBvciBvbmx5KHBhcnRpYWxseS4AXQFObyBtb3JlIHRoYW4gYG1heF93ZWlnaHRgIHdpbGwgYmUgdXNlZCBpbiBpdHMgYXR0ZW1wdGVkIGV4ZWN1dGlvbi4gSWYgdGhpcyBpcyBsZXNzIHRoYW5BAXRoZSBtYXhpbXVtIGFtb3VudCBvZiB3ZWlnaHQgdGhhdCB0aGUgbWVzc2FnZSBjb3VsZCB0YWtlIHRvIGJlIGV4ZWN1dGVkLCB0aGVuIG5vfGV4ZWN1dGlvbiBhdHRlbXB0IHdpbGwgYmUgbWFkZS5EZm9yY2VfeGNtX3ZlcnNpb24IASBsb2NhdGlvbuABNEJveDxMb2NhdGlvbj4AARx2ZXJzaW9uOAEoWGNtVmVyc2lvbgAEGEkBRXh0b2xsIHRoYXQgYSBwYXJ0aWN1bGFyIGRlc3RpbmF0aW9uIGNhbiBiZSBjb21tdW5pY2F0ZWQgd2l0aCB0aHJvdWdoIGEgcGFydGljdWxhcjx2ZXJzaW9uIG9mIFhDTS4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi7YLSBgbG9jYXRpb25gOiBUaGUgZGVzdGluYXRpb24gdGhhdCBpcyBiZWluZyBkZXNjcmliZWQuEQEtIGB4Y21fdmVyc2lvbmA6IFRoZSBsYXRlc3QgdmVyc2lvbiBvZiBYQ00gdGhhdCBgbG9jYXRpb25gIHN1cHBvcnRzLmRmb3JjZV9kZWZhdWx0X3hjbV92ZXJzaW9uBAFEbWF5YmVfeGNtX3ZlcnNpb24JAwFIT3B0aW9uPFhjbVZlcnNpb24+AAUUWQFTZXQgYSBzYWZlIFhDTSB2ZXJzaW9uICh0aGUgdmVyc2lvbiB0aGF0IFhDTSBzaG91bGQgYmUgZW5jb2RlZCB3aXRoIGlmIHRoZSBtb3N0IHJlY2VudLR2ZXJzaW9uIGEgZGVzdGluYXRpb24gY2FuIGFjY2VwdCBpcyB1bmtub3duKS4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi45AS0gYG1heWJlX3hjbV92ZXJzaW9uYDogVGhlIGRlZmF1bHQgWENNIGVuY29kaW5nIHZlcnNpb24sIG9yIGBOb25lYCB0byBkaXNhYmxlLnhmb3JjZV9zdWJzY3JpYmVfdmVyc2lvbl9ub3RpZnkEASBsb2NhdGlvbkkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAYQOQFBc2sgYSBsb2NhdGlvbiB0byBub3RpZnkgdXMgcmVnYXJkaW5nIHRoZWlyIFhDTSB2ZXJzaW9uIGFuZCBhbnkgY2hhbmdlcyB0byBpdC4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi5ZAS0gYGxvY2F0aW9uYDogVGhlIGxvY2F0aW9uIHRvIHdoaWNoIHdlIHNob3VsZCBzdWJzY3JpYmUgZm9yIFhDTSB2ZXJzaW9uIG5vdGlmaWNhdGlvbnMugGZvcmNlX3Vuc3Vic2NyaWJlX3ZlcnNpb25fbm90aWZ5BAEgbG9jYXRpb25JAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgAHGEkBUmVxdWlyZSB0aGF0IGEgcGFydGljdWxhciBkZXN0aW5hdGlvbiBzaG91bGQgbm8gbG9uZ2VyIG5vdGlmeSB1cyByZWdhcmRpbmcgYW55IFhDTUB2ZXJzaW9uIGNoYW5nZXMuANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4uPQEtIGBsb2NhdGlvbmA6IFRoZSBsb2NhdGlvbiB0byB3aGljaCB3ZSBhcmUgY3VycmVudGx5IHN1YnNjcmliZWQgZm9yIFhDTSB2ZXJzaW9uqCAgbm90aWZpY2F0aW9ucyB3aGljaCB3ZSBubyBsb25nZXIgZGVzaXJlLnxsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzFAEQZGVzdEkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnlJAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c9kCAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAEwd2VpZ2h0X2xpbWl0DQIBLFdlaWdodExpbWl0AAh4XQFUcmFuc2ZlciBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdGhyb3VnaCB0aGVpciBsb2NhbCx4ZGVzdGluYXRpb24gb3IgcmVtb3RlIHJlc2VydmUuAD0BYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBhbmQgbWF5IG5vdCBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLk0BIC0gYGFzc2V0c2AgaGF2ZSBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb25NASAgIGNoYWluIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkbCAgIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlUBIC0gYGFzc2V0c2AgaGF2ZSBkZXN0aW5hdGlvbiByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuYQEgLSBgYXNzZXRzYCBoYXZlIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlYQEgICByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3Rg9CAgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4AUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2ZhAWluZGV4IGBmZWVfYXNzZXRfaXRlbWAsIHVwIHRvIGVub3VnaCB0byBwYXkgZm9yIGB3ZWlnaHRfbGltaXRgIG9mIHdlaWdodC4gSWYgbW9yZSB3ZWlnaHRZAWlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4lAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgW1BhcmVudCxhASAgUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgW1BhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb21UICByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuXGxpbWl0ZWRfdGVsZXBvcnRfYXNzZXRzFAEQZGVzdEkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnlJAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c9kCAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAEwd2VpZ2h0X2xpbWl0DQIBLFdlaWdodExpbWl0AAlIEQFUZWxlcG9ydCBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byBzb21lIGRlc3RpbmF0aW9uIGNoYWluLgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYCwgdXAgdG8gZW5vdWdoIHRvIHBheSBmb3IgYHdlaWdodF9saW1pdGAgb2Ygd2VpZ2h0LiBJZiBtb3JlIHdlaWdodFkBaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlaCAgZmVlIG9uIHRoZSBgZGVzdGAgY2hhaW4uTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS5AZm9yY2Vfc3VzcGVuc2lvbgQBJHN1c3BlbmRlZMgBEGJvb2wAChD0U2V0IG9yIHVuc2V0IHRoZSBnbG9iYWwgc3VzcGVuc2lvbiBzdGF0ZSBvZiB0aGUgWENNIGV4ZWN1dG9yLgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLtAtIGBzdXNwZW5kZWRgOiBgdHJ1ZWAgdG8gc3VzcGVuZCwgYGZhbHNlYCB0byByZXN1bWUuPHRyYW5zZmVyX2Fzc2V0cxQBEGRlc3RJAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABLGJlbmVmaWNpYXJ5SQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHPZAgFQQm94PFZlcnNpb25lZEFzc2V0cz4AAThmZWVfYXNzZXRfaXRlbTgBDHUzMgABMHdlaWdodF9saW1pdA0CASxXZWlnaHRMaW1pdAALhF0BVHJhbnNmZXIgc29tZSBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluIHRocm91Z2ggdGhlaXIgbG9jYWws0GRlc3RpbmF0aW9uIG9yIHJlbW90ZSByZXNlcnZlLCBvciB0aHJvdWdoIHRlbGVwb3J0cy4AUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2Y1AWluZGV4IGBmZWVfYXNzZXRfaXRlbWAgKGhlbmNlIHJlZmVycmVkIHRvIGFzIGBmZWVzYCksIHVwIHRvIGVub3VnaCB0byBwYXkgZm9yQQFgd2VpZ2h0X2xpbWl0YCBvZiB3ZWlnaHQuIElmIG1vcmUgd2VpZ2h0IGlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZdxvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suAGEBYGFzc2V0c2AgKGV4Y2x1ZGluZyBgZmVlc2ApIG11c3QgaGF2ZSBzYW1lIHJlc2VydmUgbG9jYXRpb24gb3Igb3RoZXJ3aXNlIGJlIHRlbGVwb3J0YWJsZbB0byBgZGVzdGAsIG5vIGxpbWl0YXRpb25zIGltcG9zZWQgb24gYGZlZXNgLk0BIC0gZm9yIGxvY2FsIHJlc2VydmU6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbiBjaGFpbiBhbmRNASAgIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvRCAgIGBiZW5lZmljaWFyeWAuYQEgLSBmb3IgZGVzdGluYXRpb24gcmVzZXJ2ZTogYnVybiBsb2NhbCBhc3NldHMgYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gdG8gYGRlc3RgIGNoYWluWQEgICB0byB3aXRoZHJhdyB0aGUgcmVzZXJ2ZSBhc3NldHMgZnJvbSB0aGlzIGNoYWluJ3Mgc292ZXJlaWduIGFjY291bnQgYW5kIGRlcG9zaXQgdGhlbVAgICB0byBgYmVuZWZpY2lhcnlgLl0BIC0gZm9yIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlIHJlc2VydmVzXQEgICBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3RgIHRvIG1pbnTUICAgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC5RASAtIGZvciB0ZWxlcG9ydHM6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIFhDTSB0byBgZGVzdGAgY2hhaW4gdG8gbWludC90ZWxlcG9ydLAgICBhc3NldHMgYW5kIGRlcG9zaXQgdGhlbSB0byBgYmVuZWZpY2lhcnlgLgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uLQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFgyKFBhcmVudCxVASAgUGFyYWNoYWluKC4uKSlgIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgWDEoUGFyYWNoYWluKC4uKSlgIHRvIHNlbmRoICBmcm9tIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlyCAgZmVlIG9uIHRoZSBgZGVzdGAgKGFuZCBwb3NzaWJseSByZXNlcnZlKSBjaGFpbnMuTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS4wY2xhaW1fYXNzZXRzCAEYYXNzZXRz2QIBUEJveDxWZXJzaW9uZWRBc3NldHM+AAEsYmVuZWZpY2lhcnlJAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgAMGFUBQ2xhaW1zIGFzc2V0cyB0cmFwcGVkIG9uIHRoaXMgcGFsbGV0IGJlY2F1c2Ugb2YgbGVmdG92ZXIgYXNzZXRzIGR1cmluZyBYQ00gZXhlY3V0aW9uLgCsLSBgb3JpZ2luYDogQW55b25lIGNhbiBjYWxsIHRoaXMgZXh0cmluc2ljLl0BLSBgYXNzZXRzYDogVGhlIGV4YWN0IGFzc2V0cyB0aGF0IHdlcmUgdHJhcHBlZC4gVXNlIHRoZSB2ZXJzaW9uIHRvIHNwZWNpZnkgd2hhdCB2ZXJzaW9umHdhcyB0aGUgbGF0ZXN0IHdoZW4gdGhleSB3ZXJlIHRyYXBwZWQuRQEtIGBiZW5lZmljaWFyeWA6IFRoZSBsb2NhdGlvbi9hY2NvdW50IHdoZXJlIHRoZSBjbGFpbWVkIGFzc2V0cyB3aWxsIGJlIGRlcG9zaXRlZC6MdHJhbnNmZXJfYXNzZXRzX3VzaW5nX3R5cGVfYW5kX3RoZW4cARBkZXN0SQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHPZAgFQQm94PFZlcnNpb25lZEFzc2V0cz4AAVBhc3NldHNfdHJhbnNmZXJfdHlwZQ0DAURCb3g8VHJhbnNmZXJUeXBlPgABOHJlbW90ZV9mZWVzX2lkEQMBVEJveDxWZXJzaW9uZWRBc3NldElkPgABSGZlZXNfdHJhbnNmZXJfdHlwZQ0DAURCb3g8VHJhbnNmZXJUeXBlPgABSGN1c3RvbV94Y21fb25fZGVzdJUBAVRCb3g8VmVyc2lvbmVkWGNtPCgpPj4AATB3ZWlnaHRfbGltaXQNAgEsV2VpZ2h0TGltaXQADcBVAVRyYW5zZmVyIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdXNpbmcgZXhwbGljaXQgdHJhbnNmZXJodHlwZXMgZm9yIGFzc2V0cyBhbmQgZmVlcy4AWQFgYXNzZXRzYCBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIG9yIG1heSBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLiBDYWxsZXIgbXVzdOxwcm92aWRlIHRoZSBgYXNzZXRzX3RyYW5zZmVyX3R5cGVgIHRvIGJlIHVzZWQgZm9yIGBhc3NldHNgOlEBIC0gYFRyYW5zZmVyVHlwZTo6TG9jYWxSZXNlcnZlYDogdHJhbnNmZXIgYXNzZXRzIHRvIHNvdmVyZWlnbiBhY2NvdW50IG9mIGRlc3RpbmF0aW9uTQEgICBjaGFpbiBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiBYQ00gdG8gYGRlc3RgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZGwgICBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC5ZASAtIGBUcmFuc2ZlclR5cGU6OkRlc3RpbmF0aW9uUmVzZXJ2ZWA6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvWQEgICBgZGVzdGAgY2hhaW4gdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZIQgICBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC5ZASAtIGBUcmFuc2ZlclR5cGU6OlJlbW90ZVJlc2VydmUocmVzZXJ2ZSlgOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gYHJlc2VydmVgYQEgICBjaGFpbiB0byBtb3ZlIHJlc2VydmVzIGZyb20gdGhpcyBjaGFpbidzIFNBIHRvIGBkZXN0YCBjaGFpbidzIFNBLCBhbmQgZm9yd2FyZCBhbm90aGVyVQEgICBYQ00gdG8gYGRlc3RgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4gVHlwaWNhbGx5lCAgIHRoZSByZW1vdGUgYHJlc2VydmVgIGlzIEFzc2V0IEh1Yi5FASAtIGBUcmFuc2ZlclR5cGU6OlRlbGVwb3J0YDogYnVybiBsb2NhbCBhc3NldHMgYW5kIGZvcndhcmQgWENNIHRvIGBkZXN0YCBjaGFpbiB0b+ggICBtaW50L3RlbGVwb3J0IGFzc2V0cyBhbmQgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuAFUBT24gdGhlIGRlc3RpbmF0aW9uIGNoYWluLCBhcyB3ZWxsIGFzIGFueSBpbnRlcm1lZGlhcnkgaG9wcywgYEJ1eUV4ZWN1dGlvbmAgaXMgdXNlZCB0byEBYnV5IGV4ZWN1dGlvbiB1c2luZyB0cmFuc2ZlcnJlZCBgYXNzZXRzYCBpZGVudGlmaWVkIGJ5IGByZW1vdGVfZmVlc19pZGAuWQFNYWtlIHN1cmUgZW5vdWdoIG9mIHRoZSBzcGVjaWZpZWQgYHJlbW90ZV9mZWVzX2lkYCBhc3NldCBpcyBpbmNsdWRlZCBpbiB0aGUgZ2l2ZW4gbGlzdGEBb2YgYGFzc2V0c2AuIGByZW1vdGVfZmVlc19pZGAgc2hvdWxkIGJlIGVub3VnaCB0byBwYXkgZm9yIGB3ZWlnaHRfbGltaXRgLiBJZiBtb3JlIHdlaWdodFkBaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4ARQFgcmVtb3RlX2ZlZXNfaWRgIG1heSB1c2UgZGlmZmVyZW50IHRyYW5zZmVyIHR5cGUgdGhhbiByZXN0IG9mIGBhc3NldHNgIGFuZCBjYW4gYmWcc3BlY2lmaWVkIHRocm91Z2ggYGZlZXNfdHJhbnNmZXJfdHlwZWAuAGEBVGhlIGNhbGxlciBuZWVkcyB0byBzcGVjaWZ5IHdoYXQgc2hvdWxkIGhhcHBlbiB0byB0aGUgdHJhbnNmZXJyZWQgYXNzZXRzIG9uY2UgdGhleSByZWFjaEEBdGhlIGBkZXN0YCBjaGFpbi4gVGhpcyBpcyBkb25lIHRocm91Z2ggdGhlIGBjdXN0b21feGNtX29uX2Rlc3RgIHBhcmFtZXRlciwgd2hpY2j8Y29udGFpbnMgdGhlIGluc3RydWN0aW9ucyB0byBleGVjdXRlIG9uIGBkZXN0YCBhcyBhIGZpbmFsIHN0ZXAufCAgVGhpcyBpcyB1c3VhbGx5IGFzIHNpbXBsZSBhczpRASAgYFhjbSh2ZWMhW0RlcG9zaXRBc3NldCB7IGFzc2V0czogV2lsZChBbGxDb3VudGVkKGFzc2V0cy5sZW4oKSkpLCBiZW5lZmljaWFyeSB9XSlgLDEBICBidXQgY291bGQgYmUgc29tZXRoaW5nIG1vcmUgZXhvdGljIGxpa2Ugc2VuZGluZyB0aGUgYGFzc2V0c2AgZXZlbiBmdXJ0aGVyLgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tPQEgIHJlbGF5IHRvIHBhcmFjaGFpbiwgb3IgYChwYXJlbnRzOiAyLCAoR2xvYmFsQ29uc2Vuc3VzKC4uKSwgLi4pKWAgdG8gc2VuZCBmcm9t9CAgcGFyYWNoYWluIGFjcm9zcyBhIGJyaWRnZSB0byBhbm90aGVyIGVjb3N5c3RlbSBkZXN0aW5hdGlvbi5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlyCAgZmVlIG9uIHRoZSBgZGVzdGAgKGFuZCBwb3NzaWJseSByZXNlcnZlKSBjaGFpbnMuPQEtIGBhc3NldHNfdHJhbnNmZXJfdHlwZWA6IFRoZSBYQ00gYFRyYW5zZmVyVHlwZWAgdXNlZCB0byB0cmFuc2ZlciB0aGUgYGFzc2V0c2AuIQEtIGByZW1vdGVfZmVlc19pZGA6IE9uZSBvZiB0aGUgaW5jbHVkZWQgYGFzc2V0c2AgdG8gYmUgdXNlZCB0byBwYXkgZmVlcy5JAS0gYGZlZXNfdHJhbnNmZXJfdHlwZWA6IFRoZSBYQ00gYFRyYW5zZmVyVHlwZWAgdXNlZCB0byB0cmFuc2ZlciB0aGUgYGZlZXNgIGFzc2V0cy5ZAS0gYGN1c3RvbV94Y21fb25fZGVzdGA6IFRoZSBYQ00gdG8gYmUgZXhlY3V0ZWQgb24gYGRlc3RgIGNoYWluIGFzIHRoZSBsYXN0IHN0ZXAgb2YgdGhlWQEgIHRyYW5zZmVyLCB3aGljaCBhbHNvIGRldGVybWluZXMgd2hhdCBoYXBwZW5zIHRvIHRoZSBhc3NldHMgb24gdGhlIGRlc3RpbmF0aW9uIGNoYWluLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuUGFkZF9hdXRob3JpemVkX2FsaWFzCAEcYWxpYXNlckkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEcZXhwaXJlcxUDASxPcHRpb248dTY0PgAOLF0BQXV0aG9yaXplIGFub3RoZXIgYGFsaWFzZXJgIGxvY2F0aW9uIHRvIGFsaWFzIGludG8gdGhlIGxvY2FsIGBvcmlnaW5gIG1ha2luZyB0aGlzIGNhbGwuKQFUaGUgYGFsaWFzZXJgIGlzIG9ubHkgYXV0aG9yaXplZCB1bnRpbCB0aGUgcHJvdmlkZWQgYGV4cGlyeWAgYmxvY2sgbnVtYmVyLkkBVGhlIGNhbGwgY2FuIGFsc28gYmUgdXNlZCBmb3IgYSBwcmV2aW91c2x5IGF1dGhvcml6ZWQgYWxpYXMgaW4gb3JkZXIgdG8gdXBkYXRlIGl0c1hgZXhwaXJ5YCBibG9jayBudW1iZXIuAFEBVXN1YWxseSB1c2VmdWwgdG8gYWxsb3cgeW91ciBsb2NhbCBhY2NvdW50IHRvIGJlIGFsaWFzZWQgaW50byBmcm9tIGEgcmVtb3RlIGxvY2F0aW9u9GFsc28gdW5kZXIgeW91ciBjb250cm9sIChsaWtlIHlvdXIgYWNjb3VudCBvbiBhbm90aGVyIGNoYWluKS4AUQFXQVJOSU5HOiBtYWtlIHN1cmUgdGhlIGNhbGxlciBgb3JpZ2luYCAoeW91KSB0cnVzdHMgdGhlIGBhbGlhc2VyYCBsb2NhdGlvbiB0byBhY3QgaW5ZAXRoZWlyL3lvdXIgbmFtZS4gT25jZSBhdXRob3JpemVkIHVzaW5nIHRoaXMgY2FsbCwgdGhlIGBhbGlhc2VyYCBjYW4gZnJlZWx5IGltcGVyc29uYXRl1GBvcmlnaW5gIGluIFhDTSBwcm9ncmFtcyBleGVjdXRlZCBvbiB0aGUgbG9jYWwgY2hhaW4uXHJlbW92ZV9hdXRob3JpemVkX2FsaWFzBAEcYWxpYXNlckkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AA8IXQFSZW1vdmUgYSBwcmV2aW91c2x5IGF1dGhvcml6ZWQgYGFsaWFzZXJgIGZyb20gdGhlIGxpc3Qgb2YgbG9jYXRpb25zIHRoYXQgY2FuIGFsaWFzIGludG+QdGhlIGxvY2FsIGBvcmlnaW5gIG1ha2luZyB0aGlzIGNhbGwudHJlbW92ZV9hbGxfYXV0aG9yaXplZF9hbGlhc2VzABAISQFSZW1vdmUgYWxsIHByZXZpb3VzbHkgYXV0aG9yaXplZCBgYWxpYXNlcmBzIHRoYXQgY2FuIGFsaWFzIGludG8gdGhlIGxvY2FsIGBvcmlnaW5gRG1ha2luZyB0aGlzIGNhbGwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLkkBCAx4Y21EVmVyc2lvbmVkTG9jYXRpb24AAQwIVjMEAE0BAUR2Mzo6TXVsdGlMb2NhdGlvbgADAAhWNAQAYQEBMHY0OjpMb2NhdGlvbgAEAAhWNQQA4AEwdjU6OkxvY2F0aW9uAAUAAE0BECxzdGFnaW5nX3hjbQh2MzRtdWx0aWxvY2F0aW9uNE11bHRpTG9jYXRpb24AAAgBHHBhcmVudHMMAQh1OAABIGludGVyaW9yUQEBJEp1bmN0aW9ucwAAUQEQDHhjbQh2MyRqdW5jdGlvbnMkSnVuY3Rpb25zAAEkEEhlcmUAAAAIWDEEAFUBASBKdW5jdGlvbgABAAhYMggAVQEBIEp1bmN0aW9uAABVAQEgSnVuY3Rpb24AAgAIWDMMAFUBASBKdW5jdGlvbgAAVQEBIEp1bmN0aW9uAABVAQEgSnVuY3Rpb24AAwAIWDQQAFUBASBKdW5jdGlvbgAAVQEBIEp1bmN0aW9uAABVAQEgSnVuY3Rpb24AAFUBASBKdW5jdGlvbgAEAAhYNRQAVQEBIEp1bmN0aW9uAABVAQEgSnVuY3Rpb24AAFUBASBKdW5jdGlvbgAAVQEBIEp1bmN0aW9uAABVAQEgSnVuY3Rpb24ABQAIWDYYAFUBASBKdW5jdGlvbgAAVQEBIEp1bmN0aW9uAABVAQEgSnVuY3Rpb24AAFUBASBKdW5jdGlvbgAAVQEBIEp1bmN0aW9uAABVAQEgSnVuY3Rpb24ABgAIWDccAFUBASBKdW5jdGlvbgAAVQEBIEp1bmN0aW9uAABVAQEgSnVuY3Rpb24AAFUBASBKdW5jdGlvbgAAVQEBIEp1bmN0aW9uAABVAQEgSnVuY3Rpb24AAFUBASBKdW5jdGlvbgAHAAhYOCAAVQEBIEp1bmN0aW9uAABVAQEgSnVuY3Rpb24AAFUBASBKdW5jdGlvbgAAVQEBIEp1bmN0aW9uAABVAQEgSnVuY3Rpb24AAFUBASBKdW5jdGlvbgAAVQEBIEp1bmN0aW9uAABVAQEgSnVuY3Rpb24ACAAAVQEQDHhjbQh2MyBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAGABDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmtZAQFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAgBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29ya1kBAURPcHRpb248TmV0d29ya0lkPgABFGluZGV4tAEMdTY0AAIAMEFjY291bnRLZXkyMAgBHG5ldHdvcmtZAQFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXkcASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQADAEIdTgABAAwR2VuZXJhbEluZGV4BADAARB1MTI4AAUAKEdlbmVyYWxLZXkIARhsZW5ndGgMAQh1OAABEGRhdGEIASBbdTg7IDMyXQAGACRPbmx5Q2hpbGQABwAkUGx1cmFsaXR5CAEIaWT4ARhCb2R5SWQAARBwYXJ0/AEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBABdAQEkTmV0d29ya0lkAAkAAFkBBBhPcHRpb24EBFQBXQEBCBBOb25lAAAAEFNvbWUEAF0BAAABAABdARAMeGNtCHYzIGp1bmN0aW9uJE5ldHdvcmtJZAABLCRCeUdlbmVzaXMEAAgBIFt1ODsgMzJdAAAAGEJ5Rm9yawgBMGJsb2NrX251bWJlcigBDHU2NAABKGJsb2NrX2hhc2gIASBbdTg7IDMyXQABACBQb2xrYWRvdAACABhLdXNhbWEAAwAcV2VzdGVuZAAEABhSb2NvY28ABQAYV29jb2NvAAYAIEV0aGVyZXVtBAEgY2hhaW5faWS0AQx1NjQABwAsQml0Y29pbkNvcmUACAAsQml0Y29pbkNhc2gACQBAUG9sa2Fkb3RCdWxsZXRpbgAKAABhARAsc3RhZ2luZ194Y20IdjQgbG9jYXRpb24gTG9jYXRpb24AAAgBHHBhcmVudHMMAQh1OAABIGludGVyaW9yZQEBJEp1bmN0aW9ucwAAZQEQLHN0YWdpbmdfeGNtCHY0JGp1bmN0aW9ucyRKdW5jdGlvbnMAASQQSGVyZQAAAAhYMQQAaQEBSEFyYzxbSnVuY3Rpb247IDFdPgABAAhYMgQAeQEBSEFyYzxbSnVuY3Rpb247IDJdPgACAAhYMwQAfQEBSEFyYzxbSnVuY3Rpb247IDNdPgADAAhYNAQAgQEBSEFyYzxbSnVuY3Rpb247IDRdPgAEAAhYNQQAhQEBSEFyYzxbSnVuY3Rpb247IDVdPgAFAAhYNgQAiQEBSEFyYzxbSnVuY3Rpb247IDZdPgAGAAhYNwQAjQEBSEFyYzxbSnVuY3Rpb247IDddPgAHAAhYOAQAkQEBSEFyYzxbSnVuY3Rpb247IDhdPgAIAABpAQAAAwEAAABtAQBtARAsc3RhZ2luZ194Y20IdjQganVuY3Rpb24gSnVuY3Rpb24AASgkUGFyYWNoYWluBABgAQx1MzIAAAAsQWNjb3VudElkMzIIARxuZXR3b3JrcQEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEIaWQIASBbdTg7IDMyXQABADhBY2NvdW50SW5kZXg2NAgBHG5ldHdvcmtxAQFET3B0aW9uPE5ldHdvcmtJZD4AARRpbmRleLQBDHU2NAACADBBY2NvdW50S2V5MjAIARxuZXR3b3JrcQEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEMa2V5HAEgW3U4OyAyMF0AAwA4UGFsbGV0SW5zdGFuY2UEAAwBCHU4AAQAMEdlbmVyYWxJbmRleAQAwAEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoDAEIdTgAARBkYXRhCAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlk+AEYQm9keUlkAAEQcGFydPwBIEJvZHlQYXJ0AAgAPEdsb2JhbENvbnNlbnN1cwQAdQEBJE5ldHdvcmtJZAAJAABxAQQYT3B0aW9uBARUAXUBAQgQTm9uZQAAABBTb21lBAB1AQAAAQAAdQEQLHN0YWdpbmdfeGNtCHY0IGp1bmN0aW9uJE5ldHdvcmtJZAABLCRCeUdlbmVzaXMEAAgBIFt1ODsgMzJdAAAAGEJ5Rm9yawgBMGJsb2NrX251bWJlcigBDHU2NAABKGJsb2NrX2hhc2gIASBbdTg7IDMyXQABACBQb2xrYWRvdAACABhLdXNhbWEAAwAcV2VzdGVuZAAEABhSb2NvY28ABQAYV29jb2NvAAYAIEV0aGVyZXVtBAEgY2hhaW5faWS0AQx1NjQABwAsQml0Y29pbkNvcmUACAAsQml0Y29pbkNhc2gACQBAUG9sa2Fkb3RCdWxsZXRpbgAKAAB5AQAAAwIAAABtAQB9AQAAAwMAAABtAQCBAQAAAwQAAABtAQCFAQAAAwUAAABtAQCJAQAAAwYAAABtAQCNAQAAAwcAAABtAQCRAQAAAwgAAABtAQCVAQgMeGNtMFZlcnNpb25lZFhjbQQsUnVudGltZUNhbGwAAQwIVjMEAJkBAVB2Mzo6WGNtPFJ1bnRpbWVDYWxsPgADAAhWNAQAEQIBUHY0OjpYY208UnVudGltZUNhbGw+AAQACFY1BABdAgFQdjU6OlhjbTxSdW50aW1lQ2FsbD4ABQAAmQEMDHhjbQh2MwxYY20EEENhbGwAAAQAnQEBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAJ0BAAACoQEAoQEMDHhjbQh2MyxJbnN0cnVjdGlvbgQQQ2FsbAABwDRXaXRoZHJhd0Fzc2V0BAClAQEsTXVsdGlBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBAClAQEsTXVsdGlBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQApQEBLE11bHRpQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLQBHFF1ZXJ5SWQAASByZXNwb25zZcUBASBSZXNwb25zZQABKG1heF93ZWlnaHTVAQEYV2VpZ2h0AAEccXVlcmllcvEBAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c6UBASxNdWx0aUFzc2V0cwABLGJlbmVmaWNpYXJ5TQEBNE11bHRpTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHOlAQEsTXVsdGlBc3NldHMAARBkZXN0TQEBNE11bHRpTG9jYXRpb24AAQx4Y22ZAQEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5k9QEBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N01QEBGFdlaWdodAABEGNhbGz5AQFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBABRAQFUSW50ZXJpb3JNdWx0aUxvY2F0aW9uAAsALFJlcG9ydEVycm9yBAD9AQFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRzAQIBQE11bHRpQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeU0BATRNdWx0aUxvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHMBAgFATXVsdGlBc3NldEZpbHRlcgABEGRlc3RNAQE0TXVsdGlMb2NhdGlvbgABDHhjbZkBARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlAQIBQE11bHRpQXNzZXRGaWx0ZXIAARB3YW50pQEBLE11bHRpQXNzZXRzAAEcbWF4aW1hbMgBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHMBAgFATXVsdGlBc3NldEZpbHRlcgABHHJlc2VydmVNAQE0TXVsdGlMb2NhdGlvbgABDHhjbZkBARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHMBAgFATXVsdGlBc3NldEZpbHRlcgABEGRlc3RNAQE0TXVsdGlMb2NhdGlvbgABDHhjbZkBARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZv/QEBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzAQIBQE11bHRpQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlc60BAShNdWx0aUFzc2V0AAEwd2VpZ2h0X2xpbWl0DQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBACZAQEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BACZAQEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c6UBASxNdWx0aUFzc2V0cwABGHRpY2tldE0BATRNdWx0aUxvY2F0aW9uABgAEFRyYXAEALQBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS0ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodNUBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQApQEBLE11bHRpQXNzZXRzABwALEV4cGVjdEFzc2V0BAClAQEsTXVsdGlBc3NldHMAHQAwRXhwZWN0T3JpZ2luBADxAQFUT3B0aW9uPE11bHRpTG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBADJAQFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAOkBAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm/9AQFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhgAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yYAEMdTMyAAE8bWluX2NyYXRlX21pbm9yYAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBAD9AQFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EAFUBASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya10BASROZXR3b3JrSWQAASxkZXN0aW5hdGlvblEBAVRJbnRlcmlvck11bHRpTG9jYXRpb24AAQx4Y22ZAQEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldK0BAShNdWx0aUFzc2V0AAEgdW5sb2NrZXJNAQE0TXVsdGlMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0rQEBKE11bHRpQXNzZXQAARh0YXJnZXRNAQE0TXVsdGlMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0rQEBKE11bHRpQXNzZXQAARRvd25lck0BATRNdWx0aUxvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldK0BAShNdWx0aUFzc2V0AAEYbG9ja2VyTQEBNE11bHRpTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXfIARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBABNAQE0TXVsdGlMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXQNAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW7xAQFUT3B0aW9uPE11bHRpTG9jYXRpb24+AC8AAKUBEAx4Y20IdjMobXVsdGlhc3NldCxNdWx0aUFzc2V0cwAABACpAQE8VmVjPE11bHRpQXNzZXQ+AACpAQAAAq0BAK0BEAx4Y20IdjMobXVsdGlhc3NldChNdWx0aUFzc2V0AAAIAQhpZLEBARxBc3NldElkAAEMZnVutQEBLEZ1bmdpYmlsaXR5AACxARAMeGNtCHYzKG11bHRpYXNzZXQcQXNzZXRJZAABCCBDb25jcmV0ZQQATQEBNE11bHRpTG9jYXRpb24AAAAgQWJzdHJhY3QEAAgBIFt1ODsgMzJdAAEAALUBEAx4Y20IdjMobXVsdGlhc3NldCxGdW5naWJpbGl0eQABCCBGdW5naWJsZQQAwAEQdTEyOAAAACxOb25GdW5naWJsZQQAuQEBNEFzc2V0SW5zdGFuY2UAAQAAuQEQDHhjbQh2MyhtdWx0aWFzc2V0NEFzc2V0SW5zdGFuY2UAARgkVW5kZWZpbmVkAAAAFEluZGV4BADAARB1MTI4AAEAGEFycmF5NAQAcAEcW3U4OyA0XQACABhBcnJheTgEAL0BARxbdTg7IDhdAAMAHEFycmF5MTYEAMEBASBbdTg7IDE2XQAEABxBcnJheTMyBAAIASBbdTg7IDMyXQAFAAC9AQAAAwgAAAAMAMEBAAADEAAAAAwAxQEMDHhjbQh2MyBSZXNwb25zZQABGBBOdWxsAAAAGEFzc2V0cwQApQEBLE11bHRpQXNzZXRzAAEAPEV4ZWN1dGlvblJlc3VsdAQAyQEBUE9wdGlvbjwodTMyLCBFcnJvcik+AAIAHFZlcnNpb24EADgBOHN1cGVyOjpWZXJzaW9uAAMALFBhbGxldHNJbmZvBADZAQGYQm91bmRlZFZlYzxQYWxsZXRJbmZvLCBNYXhQYWxsZXRzSW5mbz4ABAA4RGlzcGF0Y2hSZXN1bHQEAOkBAThNYXliZUVycm9yQ29kZQAFAADJAQQYT3B0aW9uBARUAc0BAQgQTm9uZQAAABBTb21lBADNAQAAAQAAzQEAAAQIONEBANEBEAx4Y20IdjMYdHJhaXRzFEVycm9yAAGgIE92ZXJmbG93AAAANFVuaW1wbGVtZW50ZWQAAQBgVW50cnVzdGVkUmVzZXJ2ZUxvY2F0aW9uAAIAZFVudHJ1c3RlZFRlbGVwb3J0TG9jYXRpb24AAwAwTG9jYXRpb25GdWxsAAQAVExvY2F0aW9uTm90SW52ZXJ0aWJsZQAFACRCYWRPcmlnaW4ABgA8SW52YWxpZExvY2F0aW9uAAcANEFzc2V0Tm90Rm91bmQACABURmFpbGVkVG9UcmFuc2FjdEFzc2V0AAkAPE5vdFdpdGhkcmF3YWJsZQAKAEhMb2NhdGlvbkNhbm5vdEhvbGQACwBURXhjZWVkc01heE1lc3NhZ2VTaXplAAwAWERlc3RpbmF0aW9uVW5zdXBwb3J0ZWQADQAkVHJhbnNwb3J0AA4AKFVucm91dGFibGUADwAwVW5rbm93bkNsYWltABAAOEZhaWxlZFRvRGVjb2RlABEAQE1heFdlaWdodEludmFsaWQAEgA4Tm90SG9sZGluZ0ZlZXMAEwAwVG9vRXhwZW5zaXZlABQAEFRyYXAEACgBDHU2NAAVAEBFeHBlY3RhdGlvbkZhbHNlABYAOFBhbGxldE5vdEZvdW5kABcAME5hbWVNaXNtYXRjaAAYAExWZXJzaW9uSW5jb21wYXRpYmxlABkAUEhvbGRpbmdXb3VsZE92ZXJmbG93ABoALEV4cG9ydEVycm9yABsAOFJlYW5jaG9yRmFpbGVkABwAGE5vRGVhbAAdAChGZWVzTm90TWV0AB4AJExvY2tFcnJvcgAfADBOb1Blcm1pc3Npb24AIAAoVW5hbmNob3JlZAAhADhOb3REZXBvc2l0YWJsZQAiAExVbmhhbmRsZWRYY21WZXJzaW9uACMASFdlaWdodExpbWl0UmVhY2hlZAQA1QEBGFdlaWdodAAkABxCYXJyaWVyACUATFdlaWdodE5vdENvbXB1dGFibGUAJgBERXhjZWVkc1N0YWNrTGltaXQAJwAA1QEMKHNwX3dlaWdodHMkd2VpZ2h0X3YyGFdlaWdodAAACAEgcmVmX3RpbWW0AQx1NjQAAShwcm9vZl9zaXpltAEMdTY0AADZAQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAd0BBFMAAAQA5QEBGFZlYzxUPgAA3QEMDHhjbQh2MyhQYWxsZXRJbmZvAAAYARRpbmRleGABDHUzMgABEG5hbWXhAQGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AASxtb2R1bGVfbmFtZeEBAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABFG1ham9yYAEMdTMyAAEUbWlub3JgAQx1MzIAARRwYXRjaGABDHUzMgAA4QEMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AADlAQAAAt0BAOkBDAx4Y20IdjM4TWF5YmVFcnJvckNvZGUAAQwcU3VjY2VzcwAAABRFcnJvcgQA7QEBjEJvdW5kZWRWZWM8dTgsIE1heERpc3BhdGNoRXJyb3JMZW4+AAEAOFRydW5jYXRlZEVycm9yBADtAQGMQm91bmRlZFZlYzx1OCwgTWF4RGlzcGF0Y2hFcnJvckxlbj4AAgAA7QEMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AADxAQQYT3B0aW9uBARUAU0BAQgQTm9uZQAAABBTb21lBABNAQAAAQAA9QEMDHhjbQh2MyhPcmlnaW5LaW5kAAEQGE5hdGl2ZQAAAEBTb3ZlcmVpZ25BY2NvdW50AAEAJFN1cGVydXNlcgACAAxYY20AAwAA+QEMDHhjbThkb3VibGVfZW5jb2RlZDREb3VibGVFbmNvZGVkBARUAAAEARxlbmNvZGVkGAEcVmVjPHU4PgAA/QEMDHhjbQh2M0RRdWVyeVJlc3BvbnNlSW5mbwAADAEsZGVzdGluYXRpb25NAQE0TXVsdGlMb2NhdGlvbgABIHF1ZXJ5X2lktAEcUXVlcnlJZAABKG1heF93ZWlnaHTVAQEYV2VpZ2h0AAABAhAMeGNtCHYzKG11bHRpYXNzZXRATXVsdGlBc3NldEZpbHRlcgABCCBEZWZpbml0ZQQApQEBLE11bHRpQXNzZXRzAAAAEFdpbGQEAAUCAThXaWxkTXVsdGlBc3NldAABAAAFAhAMeGNtCHYzKG11bHRpYXNzZXQ4V2lsZE11bHRpQXNzZXQAARAMQWxsAAAAFEFsbE9mCAEIaWSxAQEcQXNzZXRJZAABDGZ1bgkCATxXaWxkRnVuZ2liaWxpdHkAAQAoQWxsQ291bnRlZAQAYAEMdTMyAAIAMEFsbE9mQ291bnRlZAwBCGlksQEBHEFzc2V0SWQAAQxmdW4JAgE8V2lsZEZ1bmdpYmlsaXR5AAEUY291bnRgAQx1MzIAAwAACQIQDHhjbQh2MyhtdWx0aWFzc2V0PFdpbGRGdW5naWJpbGl0eQABCCBGdW5naWJsZQAAACxOb25GdW5naWJsZQABAAANAgwMeGNtCHYzLFdlaWdodExpbWl0AAEIJFVubGltaXRlZAAAABxMaW1pdGVkBADVAQEYV2VpZ2h0AAEAABECDCxzdGFnaW5nX3hjbQh2NAxYY20EEENhbGwAAAQAFQIBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AABUCAAACGQIAGQIMLHN0YWdpbmdfeGNtCHY0LEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEAB0CARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBAAdAgEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAB0CARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNlNQIBIFJlc3BvbnNlAAEobWF4X3dlaWdodNUBARhXZWlnaHQAARxxdWVyaWVySQIBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0cx0CARhBc3NldHMAASxiZW5lZmljaWFyeWEBASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0cx0CARhBc3NldHMAARBkZXN0YQEBIExvY2F0aW9uAAEMeGNtEQIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZPUBAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdNUBARhXZWlnaHQAARBjYWxs+QEBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQAZQEBQEludGVyaW9yTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAE0CAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHNRAgEsQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeWEBASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzUQIBLEFzc2V0RmlsdGVyAAEQZGVzdGEBASBMb2NhdGlvbgABDHhjbRECARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlUQIBLEFzc2V0RmlsdGVyAAEQd2FudB0CARhBc3NldHMAARxtYXhpbWFsyAEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c1ECASxBc3NldEZpbHRlcgABHHJlc2VydmVhAQEgTG9jYXRpb24AAQx4Y20RAgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzUQIBLEFzc2V0RmlsdGVyAAEQZGVzdGEBASBMb2NhdGlvbgABDHhjbRECARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvTQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzUQIBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXMlAgEUQXNzZXQAATB3ZWlnaHRfbGltaXQNAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEABECASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEABECASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzHQIBGEFzc2V0cwABGHRpY2tldGEBASBMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHTVAQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAB0CARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEAB0CARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBABJAgFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAyQEBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBADpAQE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvTQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQATQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBABtAQEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmt1AQEkTmV0d29ya0lkAAEsZGVzdGluYXRpb25lAQFASW50ZXJpb3JMb2NhdGlvbgABDHhjbRECARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0JQIBFEFzc2V0AAEgdW5sb2NrZXJhAQEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldCUCARRBc3NldAABGHRhcmdldGEBASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0JQIBFEFzc2V0AAEUb3duZXJhAQEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0JQIBFEFzc2V0AAEYbG9ja2VyYQEBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3yAEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQAYQEBIExvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdA0CASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbkkCAUBPcHRpb248TG9jYXRpb24+AC8AAB0CECxzdGFnaW5nX3hjbQh2NBRhc3NldBhBc3NldHMAAAQAIQIBKFZlYzxBc3NldD4AACECAAACJQIAJQIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0FEFzc2V0AAAIAQhpZCkCARxBc3NldElkAAEMZnVuLQIBLEZ1bmdpYmlsaXR5AAApAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQcQXNzZXRJZAAABABhAQEgTG9jYXRpb24AAC0CECxzdGFnaW5nX3hjbQh2NBRhc3NldCxGdW5naWJpbGl0eQABCCBGdW5naWJsZQQAwAEQdTEyOAAAACxOb25GdW5naWJsZQQAMQIBNEFzc2V0SW5zdGFuY2UAAQAAMQIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0NEFzc2V0SW5zdGFuY2UAARgkVW5kZWZpbmVkAAAAFEluZGV4BADAARB1MTI4AAEAGEFycmF5NAQAcAEcW3U4OyA0XQACABhBcnJheTgEAL0BARxbdTg7IDhdAAMAHEFycmF5MTYEAMEBASBbdTg7IDE2XQAEABxBcnJheTMyBAAIASBbdTg7IDMyXQAFAAA1Agwsc3RhZ2luZ194Y20IdjQgUmVzcG9uc2UAARgQTnVsbAAAABhBc3NldHMEAB0CARhBc3NldHMAAQA8RXhlY3V0aW9uUmVzdWx0BADJAQFQT3B0aW9uPCh1MzIsIEVycm9yKT4AAgAcVmVyc2lvbgQAOAE4c3VwZXI6OlZlcnNpb24AAwAsUGFsbGV0c0luZm8EADkCAZhCb3VuZGVkVmVjPFBhbGxldEluZm8sIE1heFBhbGxldHNJbmZvPgAEADhEaXNwYXRjaFJlc3VsdAQA6QEBOE1heWJlRXJyb3JDb2RlAAUAADkCDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBPQIEUwAABABFAgEYVmVjPFQ+AAA9Agwsc3RhZ2luZ194Y20IdjQoUGFsbGV0SW5mbwAAGAEUaW5kZXhgAQx1MzIAARBuYW1lQQIBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEsbW9kdWxlX25hbWVBAgGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AARRtYWpvcmABDHUzMgABFG1pbm9yYAEMdTMyAAEUcGF0Y2hgAQx1MzIAAEECDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAARQIAAAI9AgBJAgQYT3B0aW9uBARUAWEBAQgQTm9uZQAAABBTb21lBABhAQAAAQAATQIMLHN0YWdpbmdfeGNtCHY0RFF1ZXJ5UmVzcG9uc2VJbmZvAAAMASxkZXN0aW5hdGlvbmEBASBMb2NhdGlvbgABIHF1ZXJ5X2lktAEcUXVlcnlJZAABKG1heF93ZWlnaHTVAQEYV2VpZ2h0AABRAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQsQXNzZXRGaWx0ZXIAAQggRGVmaW5pdGUEAB0CARhBc3NldHMAAAAQV2lsZAQAVQIBJFdpbGRBc3NldAABAABVAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQkV2lsZEFzc2V0AAEQDEFsbAAAABRBbGxPZggBCGlkKQIBHEFzc2V0SWQAAQxmdW5ZAgE8V2lsZEZ1bmdpYmlsaXR5AAEAKEFsbENvdW50ZWQEAGABDHUzMgACADBBbGxPZkNvdW50ZWQMAQhpZCkCARxBc3NldElkAAEMZnVuWQIBPFdpbGRGdW5naWJpbGl0eQABFGNvdW50YAEMdTMyAAMAAFkCECxzdGFnaW5nX3hjbQh2NBRhc3NldDxXaWxkRnVuZ2liaWxpdHkAAQggRnVuZ2libGUAAAAsTm9uRnVuZ2libGUAAQAAXQIMLHN0YWdpbmdfeGNtCHY1DFhjbQQQQ2FsbAAABABhAgFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAYQIAAAJlAgBlAgwsc3RhZ2luZ194Y20IdjUsSW5zdHJ1Y3Rpb24EEENhbGwAAdA0V2l0aGRyYXdBc3NldAQAaQIBGEFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAGkCARhBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQAaQIBGEFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS0ARxRdWVyeUlkAAEgcmVzcG9uc2WBAgEgUmVzcG9uc2UAAShtYXhfd2VpZ2h01QEBGFdlaWdodAABHHF1ZXJpZXKhAgFAT3B0aW9uPExvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzaQIBGEFzc2V0cwABLGJlbmVmaWNpYXJ54AEgTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHNpAgEYQXNzZXRzAAEQZGVzdOABIExvY2F0aW9uAAEMeGNtXQIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZPUBAShPcmlnaW5LaW5kAAFMZmFsbGJhY2tfbWF4X3dlaWdodKUCAThPcHRpb248V2VpZ2h0PgABEGNhbGz5AQFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBADkAUBJbnRlcmlvckxvY2F0aW9uAAsALFJlcG9ydEVycm9yBACpAgFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRzrQIBLEFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnngASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzrQIBLEFzc2V0RmlsdGVyAAEQZGVzdOABIExvY2F0aW9uAAEMeGNtXQIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmWtAgEsQXNzZXRGaWx0ZXIAARB3YW50aQIBGEFzc2V0cwABHG1heGltYWzIARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRzrQIBLEFzc2V0RmlsdGVyAAEccmVzZXJ2ZeABIExvY2F0aW9uAAEMeGNtXQIBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c60CASxBc3NldEZpbHRlcgABEGRlc3TgASBMb2NhdGlvbgABDHhjbV0CARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvqQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzrQIBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXNxAgEUQXNzZXQAATB3ZWlnaHRfbGltaXQNAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAF0CASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAF0CASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzaQIBGEFzc2V0cwABGHRpY2tldOABIExvY2F0aW9uABgAEFRyYXAEALQBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS0ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodNUBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQAaQIBGEFzc2V0cwAcACxFeHBlY3RBc3NldAQAaQIBGEFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAKECAUBPcHRpb248TG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBACFAgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAOkBAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm+pAgFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhgAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yYAEMdTMyAAE8bWluX2NyYXRlX21pbm9yYAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBACpAgFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EAOwBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3Jr9AEkTmV0d29ya0lkAAEsZGVzdGluYXRpb27kAUBJbnRlcmlvckxvY2F0aW9uAAEMeGNtXQIBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXRxAgEUQXNzZXQAASB1bmxvY2tlcuABIExvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXRxAgEUQXNzZXQAARh0YXJnZXTgASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0cQIBFEFzc2V0AAEUb3duZXLgASBMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXRxAgEUQXNzZXQAARhsb2NrZXLgASBMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd8gBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAOABIExvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdA0CASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbqECAUBPcHRpb248TG9jYXRpb24+AC8AHFBheUZlZXMEARRhc3NldHECARRBc3NldAAwAEBJbml0aWF0ZVRyYW5zZmVyFAEsZGVzdGluYXRpb27gASBMb2NhdGlvbgABLHJlbW90ZV9mZWVzuQIBbE9wdGlvbjxBc3NldFRyYW5zZmVyRmlsdGVyPgABPHByZXNlcnZlX29yaWdpbsgBEGJvb2wAARhhc3NldHPBAgHgQm91bmRlZFZlYzxBc3NldFRyYW5zZmVyRmlsdGVyLCBNYXhBc3NldFRyYW5zZmVyRmlsdGVycz4AAShyZW1vdGVfeGNtXQIBHFhjbTwoKT4AMQBERXhlY3V0ZVdpdGhPcmlnaW4IAURkZXNjZW5kYW50X29yaWdpbskCAWBPcHRpb248SW50ZXJpb3JMb2NhdGlvbj4AAQx4Y21dAgEkWGNtPENhbGw+ADIAIFNldEhpbnRzBAEUaGludHPNAgGEQm91bmRlZFZlYzxIaW50LCBIaW50TnVtVmFyaWFudHM+ADMAAGkCECxzdGFnaW5nX3hjbQh2NRRhc3NldBhBc3NldHMAAAQAbQIBKFZlYzxBc3NldD4AAG0CAAACcQIAcQIQLHN0YWdpbmdfeGNtCHY1FGFzc2V0FEFzc2V0AAAIAQhpZHUCARxBc3NldElkAAEMZnVueQIBLEZ1bmdpYmlsaXR5AAB1AhAsc3RhZ2luZ194Y20IdjUUYXNzZXQcQXNzZXRJZAAABADgASBMb2NhdGlvbgAAeQIQLHN0YWdpbmdfeGNtCHY1FGFzc2V0LEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlBADAARB1MTI4AAAALE5vbkZ1bmdpYmxlBAB9AgE0QXNzZXRJbnN0YW5jZQABAAB9AhAsc3RhZ2luZ194Y20IdjUUYXNzZXQ0QXNzZXRJbnN0YW5jZQABGCRVbmRlZmluZWQAAAAUSW5kZXgEAMABEHUxMjgAAQAYQXJyYXk0BABwARxbdTg7IDRdAAIAGEFycmF5OAQAvQEBHFt1ODsgOF0AAwAcQXJyYXkxNgQAwQEBIFt1ODsgMTZdAAQAHEFycmF5MzIEAAgBIFt1ODsgMzJdAAUAAIECDCxzdGFnaW5nX3hjbQh2NSBSZXNwb25zZQABGBBOdWxsAAAAGEFzc2V0cwQAaQIBGEFzc2V0cwABADxFeGVjdXRpb25SZXN1bHQEAIUCAVBPcHRpb248KHUzMiwgRXJyb3IpPgACABxWZXJzaW9uBAA4AThzdXBlcjo6VmVyc2lvbgADACxQYWxsZXRzSW5mbwQAkQIBmEJvdW5kZWRWZWM8UGFsbGV0SW5mbywgTWF4UGFsbGV0c0luZm8+AAQAOERpc3BhdGNoUmVzdWx0BADpAQE4TWF5YmVFcnJvckNvZGUABQAAhQIEGE9wdGlvbgQEVAGJAgEIEE5vbmUAAAAQU29tZQQAiQIAAAEAAIkCAAAECDiNAgCNAhAMeGNtCHY1GHRyYWl0cxRFcnJvcgABpCBPdmVyZmxvdwAAADRVbmltcGxlbWVudGVkAAEAYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgACAGRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAMAMExvY2F0aW9uRnVsbAAEAFRMb2NhdGlvbk5vdEludmVydGlibGUABQAkQmFkT3JpZ2luAAYAPEludmFsaWRMb2NhdGlvbgAHADRBc3NldE5vdEZvdW5kAAgAVEZhaWxlZFRvVHJhbnNhY3RBc3NldAAJADxOb3RXaXRoZHJhd2FibGUACgBITG9jYXRpb25DYW5ub3RIb2xkAAsAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAMAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAA0AJFRyYW5zcG9ydAAOAChVbnJvdXRhYmxlAA8AMFVua25vd25DbGFpbQAQADhGYWlsZWRUb0RlY29kZQARAEBNYXhXZWlnaHRJbnZhbGlkABIAOE5vdEhvbGRpbmdGZWVzABMAMFRvb0V4cGVuc2l2ZQAUABBUcmFwBAAoAQx1NjQAFQBARXhwZWN0YXRpb25GYWxzZQAWADhQYWxsZXROb3RGb3VuZAAXADBOYW1lTWlzbWF0Y2gAGABMVmVyc2lvbkluY29tcGF0aWJsZQAZAFBIb2xkaW5nV291bGRPdmVyZmxvdwAaACxFeHBvcnRFcnJvcgAbADhSZWFuY2hvckZhaWxlZAAcABhOb0RlYWwAHQAoRmVlc05vdE1ldAAeACRMb2NrRXJyb3IAHwAwTm9QZXJtaXNzaW9uACAAKFVuYW5jaG9yZWQAIQA4Tm90RGVwb3NpdGFibGUAIgA0VG9vTWFueUFzc2V0cwAjAExVbmhhbmRsZWRYY21WZXJzaW9uACQASFdlaWdodExpbWl0UmVhY2hlZAQA1QEBGFdlaWdodAAlABxCYXJyaWVyACYATFdlaWdodE5vdENvbXB1dGFibGUAJwBERXhjZWVkc1N0YWNrTGltaXQAKAAAkQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGVAgRTAAAEAJ0CARhWZWM8VD4AAJUCDCxzdGFnaW5nX3hjbQh2NShQYWxsZXRJbmZvAAAYARRpbmRleGABDHUzMgABEG5hbWWZAgGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AASxtb2R1bGVfbmFtZZkCAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABFG1ham9yYAEMdTMyAAEUbWlub3JgAQx1MzIAARRwYXRjaGABDHUzMgAAmQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AACdAgAAApUCAKECBBhPcHRpb24EBFQB4AEIEE5vbmUAAAAQU29tZQQA4AAAAQAApQIEGE9wdGlvbgQEVAHVAQEIEE5vbmUAAAAQU29tZQQA1QEAAAEAAKkCDCxzdGFnaW5nX3hjbQh2NURRdWVyeVJlc3BvbnNlSW5mbwAADAEsZGVzdGluYXRpb27gASBMb2NhdGlvbgABIHF1ZXJ5X2lktAEcUXVlcnlJZAABKG1heF93ZWlnaHTVAQEYV2VpZ2h0AACtAhAsc3RhZ2luZ194Y20IdjUUYXNzZXQsQXNzZXRGaWx0ZXIAAQggRGVmaW5pdGUEAGkCARhBc3NldHMAAAAQV2lsZAQAsQIBJFdpbGRBc3NldAABAACxAhAsc3RhZ2luZ194Y20IdjUUYXNzZXQkV2lsZEFzc2V0AAEQDEFsbAAAABRBbGxPZggBCGlkdQIBHEFzc2V0SWQAAQxmdW61AgE8V2lsZEZ1bmdpYmlsaXR5AAEAKEFsbENvdW50ZWQEAGABDHUzMgACADBBbGxPZkNvdW50ZWQMAQhpZHUCARxBc3NldElkAAEMZnVutQIBPFdpbGRGdW5naWJpbGl0eQABFGNvdW50YAEMdTMyAAMAALUCECxzdGFnaW5nX3hjbQh2NRRhc3NldDxXaWxkRnVuZ2liaWxpdHkAAQggRnVuZ2libGUAAAAsTm9uRnVuZ2libGUAAQAAuQIEGE9wdGlvbgQEVAG9AgEIEE5vbmUAAAAQU29tZQQAvQIAAAEAAL0CECxzdGFnaW5nX3hjbQh2NRRhc3NldExBc3NldFRyYW5zZmVyRmlsdGVyAAEMIFRlbGVwb3J0BACtAgEsQXNzZXRGaWx0ZXIAAAA4UmVzZXJ2ZURlcG9zaXQEAK0CASxBc3NldEZpbHRlcgABADxSZXNlcnZlV2l0aGRyYXcEAK0CASxBc3NldEZpbHRlcgACAADBAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAb0CBFMAAAQAxQIBGFZlYzxUPgAAxQIAAAK9AgDJAgQYT3B0aW9uBARUAeQBCBBOb25lAAAAEFNvbWUEAOQAAAEAAM0CDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB0QIEUwAABADVAgEYVmVjPFQ+AADRAgwsc3RhZ2luZ194Y20IdjUQSGludAABBDBBc3NldENsYWltZXIEASBsb2NhdGlvbuABIExvY2F0aW9uAAAAANUCAAAC0QIA2QIIDHhjbTxWZXJzaW9uZWRBc3NldHMAAQwIVjMEAKUBATx2Mzo6TXVsdGlBc3NldHMAAwAIVjQEAB0CASh2NDo6QXNzZXRzAAQACFY1BABpAgEodjU6OkFzc2V0cwAFAADdAggMeGNtMFZlcnNpb25lZFhjbQQsUnVudGltZUNhbGwAAQwIVjMEAOECAVB2Mzo6WGNtPFJ1bnRpbWVDYWxsPgADAAhWNAQA8QIBUHY0OjpYY208UnVudGltZUNhbGw+AAQACFY1BAD9AgFQdjU6OlhjbTxSdW50aW1lQ2FsbD4ABQAA4QIMDHhjbQh2MwxYY20EEENhbGwAAAQA5QIBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAOUCAAAC6QIA6QIMDHhjbQh2MyxJbnN0cnVjdGlvbgQQQ2FsbAABwDRXaXRoZHJhd0Fzc2V0BAClAQEsTXVsdGlBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBAClAQEsTXVsdGlBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQApQEBLE11bHRpQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLQBHFF1ZXJ5SWQAASByZXNwb25zZcUBASBSZXNwb25zZQABKG1heF93ZWlnaHTVAQEYV2VpZ2h0AAEccXVlcmllcvEBAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c6UBASxNdWx0aUFzc2V0cwABLGJlbmVmaWNpYXJ5TQEBNE11bHRpTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHOlAQEsTXVsdGlBc3NldHMAARBkZXN0TQEBNE11bHRpTG9jYXRpb24AAQx4Y22ZAQEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5k9QEBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N01QEBGFdlaWdodAABEGNhbGztAgFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBABRAQFUSW50ZXJpb3JNdWx0aUxvY2F0aW9uAAsALFJlcG9ydEVycm9yBAD9AQFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRzAQIBQE11bHRpQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeU0BATRNdWx0aUxvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHMBAgFATXVsdGlBc3NldEZpbHRlcgABEGRlc3RNAQE0TXVsdGlMb2NhdGlvbgABDHhjbZkBARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlAQIBQE11bHRpQXNzZXRGaWx0ZXIAARB3YW50pQEBLE11bHRpQXNzZXRzAAEcbWF4aW1hbMgBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHMBAgFATXVsdGlBc3NldEZpbHRlcgABHHJlc2VydmVNAQE0TXVsdGlMb2NhdGlvbgABDHhjbZkBARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHMBAgFATXVsdGlBc3NldEZpbHRlcgABEGRlc3RNAQE0TXVsdGlMb2NhdGlvbgABDHhjbZkBARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZv/QEBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzAQIBQE11bHRpQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlc60BAShNdWx0aUFzc2V0AAEwd2VpZ2h0X2xpbWl0DQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBADhAgEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BADhAgEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c6UBASxNdWx0aUFzc2V0cwABGHRpY2tldE0BATRNdWx0aUxvY2F0aW9uABgAEFRyYXAEALQBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS0ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodNUBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQApQEBLE11bHRpQXNzZXRzABwALEV4cGVjdEFzc2V0BAClAQEsTXVsdGlBc3NldHMAHQAwRXhwZWN0T3JpZ2luBADxAQFUT3B0aW9uPE11bHRpTG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBADJAQFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAOkBAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm/9AQFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhgAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yYAEMdTMyAAE8bWluX2NyYXRlX21pbm9yYAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBAD9AQFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EAFUBASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya10BASROZXR3b3JrSWQAASxkZXN0aW5hdGlvblEBAVRJbnRlcmlvck11bHRpTG9jYXRpb24AAQx4Y22ZAQEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldK0BAShNdWx0aUFzc2V0AAEgdW5sb2NrZXJNAQE0TXVsdGlMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0rQEBKE11bHRpQXNzZXQAARh0YXJnZXRNAQE0TXVsdGlMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0rQEBKE11bHRpQXNzZXQAARRvd25lck0BATRNdWx0aUxvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldK0BAShNdWx0aUFzc2V0AAEYbG9ja2VyTQEBNE11bHRpTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXfIARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBABNAQE0TXVsdGlMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXQNAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW7xAQFUT3B0aW9uPE11bHRpTG9jYXRpb24+AC8AAO0CDAx4Y204ZG91YmxlX2VuY29kZWQ0RG91YmxlRW5jb2RlZAQEVAAABAEcZW5jb2RlZBgBHFZlYzx1OD4AAPECDCxzdGFnaW5nX3hjbQh2NAxYY20EEENhbGwAAAQA9QIBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAPUCAAAC+QIA+QIMLHN0YWdpbmdfeGNtCHY0LEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEAB0CARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBAAdAgEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAB0CARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNlNQIBIFJlc3BvbnNlAAEobWF4X3dlaWdodNUBARhXZWlnaHQAARxxdWVyaWVySQIBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0cx0CARhBc3NldHMAASxiZW5lZmljaWFyeWEBASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0cx0CARhBc3NldHMAARBkZXN0YQEBIExvY2F0aW9uAAEMeGNtEQIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZPUBAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdNUBARhXZWlnaHQAARBjYWxs7QIBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQAZQEBQEludGVyaW9yTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAE0CAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHNRAgEsQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeWEBASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzUQIBLEFzc2V0RmlsdGVyAAEQZGVzdGEBASBMb2NhdGlvbgABDHhjbRECARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlUQIBLEFzc2V0RmlsdGVyAAEQd2FudB0CARhBc3NldHMAARxtYXhpbWFsyAEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c1ECASxBc3NldEZpbHRlcgABHHJlc2VydmVhAQEgTG9jYXRpb24AAQx4Y20RAgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzUQIBLEFzc2V0RmlsdGVyAAEQZGVzdGEBASBMb2NhdGlvbgABDHhjbRECARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvTQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzUQIBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXMlAgEUQXNzZXQAATB3ZWlnaHRfbGltaXQNAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAPECASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAPECASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzHQIBGEFzc2V0cwABGHRpY2tldGEBASBMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHTVAQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAB0CARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEAB0CARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBABJAgFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAyQEBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBADpAQE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvTQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQATQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBABtAQEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmt1AQEkTmV0d29ya0lkAAEsZGVzdGluYXRpb25lAQFASW50ZXJpb3JMb2NhdGlvbgABDHhjbRECARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0JQIBFEFzc2V0AAEgdW5sb2NrZXJhAQEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldCUCARRBc3NldAABGHRhcmdldGEBASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0JQIBFEFzc2V0AAEUb3duZXJhAQEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0JQIBFEFzc2V0AAEYbG9ja2VyYQEBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3yAEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQAYQEBIExvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdA0CASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbkkCAUBPcHRpb248TG9jYXRpb24+AC8AAP0CDCxzdGFnaW5nX3hjbQh2NQxYY20EEENhbGwAAAQAAQMBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAAEDAAACBQMABQMMLHN0YWdpbmdfeGNtCHY1LEluc3RydWN0aW9uBBBDYWxsAAHQNFdpdGhkcmF3QXNzZXQEAGkCARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBABpAgEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAGkCARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lktAEcUXVlcnlJZAABIHJlc3BvbnNlgQIBIFJlc3BvbnNlAAEobWF4X3dlaWdodNUBARhXZWlnaHQAARxxdWVyaWVyoQIBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c2kCARhBc3NldHMAASxiZW5lZmljaWFyeeABIExvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzaQIBGEFzc2V0cwABEGRlc3TgASBMb2NhdGlvbgABDHhjbV0CARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmT1AQEoT3JpZ2luS2luZAABTGZhbGxiYWNrX21heF93ZWlnaHSlAgE4T3B0aW9uPFdlaWdodD4AARBjYWxs7QIBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQA5AFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAqQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c60CASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ54AEgTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0c60CASxBc3NldEZpbHRlcgABEGRlc3TgASBMb2NhdGlvbgABDHhjbV0CARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlrQIBLEFzc2V0RmlsdGVyAAEQd2FudGkCARhBc3NldHMAARxtYXhpbWFsyAEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c60CASxBc3NldEZpbHRlcgABHHJlc2VydmXgASBMb2NhdGlvbgABDHhjbV0CARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHOtAgEsQXNzZXRGaWx0ZXIAARBkZXN04AEgTG9jYXRpb24AAQx4Y21dAgEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb6kCAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c60CASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzcQIBFEFzc2V0AAEwd2VpZ2h0X2xpbWl0DQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBAD9AgEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BAD9AgEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c2kCARhBc3NldHMAARh0aWNrZXTgASBMb2NhdGlvbgAYABBUcmFwBAC0AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lktAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHTVAQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAGkCARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEAGkCARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBAChAgFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAhQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBADpAQE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvqQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAqQIBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBADsASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya/QBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9u5AFASW50ZXJpb3JMb2NhdGlvbgABDHhjbV0CARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0cQIBFEFzc2V0AAEgdW5sb2NrZXLgASBMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0cQIBFEFzc2V0AAEYdGFyZ2V04AEgTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldHECARRBc3NldAABFG93bmVy4AEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0cQIBFEFzc2V0AAEYbG9ja2Vy4AEgTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXfIARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBADgASBMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXQNAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW6hAgFAT3B0aW9uPExvY2F0aW9uPgAvABxQYXlGZWVzBAEUYXNzZXRxAgEUQXNzZXQAMABASW5pdGlhdGVUcmFuc2ZlchQBLGRlc3RpbmF0aW9u4AEgTG9jYXRpb24AASxyZW1vdGVfZmVlc7kCAWxPcHRpb248QXNzZXRUcmFuc2ZlckZpbHRlcj4AATxwcmVzZXJ2ZV9vcmlnaW7IARBib29sAAEYYXNzZXRzwQIB4EJvdW5kZWRWZWM8QXNzZXRUcmFuc2ZlckZpbHRlciwgTWF4QXNzZXRUcmFuc2ZlckZpbHRlcnM+AAEocmVtb3RlX3hjbV0CARxYY208KCk+ADEAREV4ZWN1dGVXaXRoT3JpZ2luCAFEZGVzY2VuZGFudF9vcmlnaW7JAgFgT3B0aW9uPEludGVyaW9yTG9jYXRpb24+AAEMeGNt/QIBJFhjbTxDYWxsPgAyACBTZXRIaW50cwQBFGhpbnRzzQIBhEJvdW5kZWRWZWM8SGludCwgSGludE51bVZhcmlhbnRzPgAzAAAJAwQYT3B0aW9uBARUATgBCBBOb25lAAAAEFNvbWUEADgAAAEAAA0DEFBzdGFnaW5nX3hjbV9leGVjdXRvchh0cmFpdHM4YXNzZXRfdHJhbnNmZXIwVHJhbnNmZXJUeXBlAAEQIFRlbGVwb3J0AAAAMExvY2FsUmVzZXJ2ZQABAEhEZXN0aW5hdGlvblJlc2VydmUAAgA0UmVtb3RlUmVzZXJ2ZQQASQEBRFZlcnNpb25lZExvY2F0aW9uAAMAABEDCAx4Y21AVmVyc2lvbmVkQXNzZXRJZAABDAhWMwQAsQEBLHYzOjpBc3NldElkAAMACFY0BAApAgEsdjQ6OkFzc2V0SWQABAAIVjUEAHUCASx2NTo6QXNzZXRJZAAFAAAVAwQYT3B0aW9uBARUASgBCBBOb25lAAAAEFNvbWUEACgAAAEAABkDDEhjdW11bHVzX3BhbGxldF94Y20YcGFsbGV0EENhbGwEBFQAAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuHQMMUHBhbGxldF9tZXNzYWdlX3F1ZXVlGHBhbGxldBBDYWxsBARUAAEIJHJlYXBfcGFnZQgBOG1lc3NhZ2Vfb3JpZ2luIQMBSE1lc3NhZ2VPcmlnaW5PZjxUPgABKHBhZ2VfaW5kZXg4ASRQYWdlSW5kZXgAAAQ9AVJlbW92ZSBhIHBhZ2Ugd2hpY2ggaGFzIG5vIG1vcmUgbWVzc2FnZXMgcmVtYWluaW5nIHRvIGJlIHByb2Nlc3NlZCBvciBpcyBzdGFsZS5IZXhlY3V0ZV9vdmVyd2VpZ2h0EAE4bWVzc2FnZV9vcmlnaW4hAwFITWVzc2FnZU9yaWdpbk9mPFQ+AAEQcGFnZTgBJFBhZ2VJbmRleAABFGluZGV4OAEcVDo6U2l6ZQABMHdlaWdodF9saW1pdNUBARhXZWlnaHQAATR4RXhlY3V0ZSBhbiBvdmVyd2VpZ2h0IG1lc3NhZ2UuAE0BVGVtcG9yYXJ5IHByb2Nlc3NpbmcgZXJyb3JzIHdpbGwgYmUgcHJvcGFnYXRlZCB3aGVyZWFzIHBlcm1hbmVudCBlcnJvcnMgYXJlIHRyZWF0ZWRUYXMgc3VjY2VzcyBjb25kaXRpb24uAHQtIGBvcmlnaW5gOiBNdXN0IGJlIGBTaWduZWRgLjUBLSBgbWVzc2FnZV9vcmlnaW5gOiBUaGUgb3JpZ2luIGZyb20gd2hpY2ggdGhlIG1lc3NhZ2UgdG8gYmUgZXhlY3V0ZWQgYXJyaXZlZC49AS0gYHBhZ2VgOiBUaGUgcGFnZSBpbiB0aGUgcXVldWUgaW4gd2hpY2ggdGhlIG1lc3NhZ2UgdG8gYmUgZXhlY3V0ZWQgaXMgc2l0dGluZy4JAS0gYGluZGV4YDogVGhlIGluZGV4IGludG8gdGhlIHF1ZXVlIG9mIHRoZSBtZXNzYWdlIHRvIGJlIGV4ZWN1dGVkLlkBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIG1heGltdW0gYW1vdW50IG9mIHdlaWdodCBhbGxvd2VkIHRvIGJlIGNvbnN1bWVkIGluIHRoZSBleGVjdXRpb25EICBvZiB0aGUgbWVzc2FnZS4A9EJlbmNobWFyayBjb21wbGV4aXR5IGNvbnNpZGVyYXRpb25zOiBPKGluZGV4ICsgd2VpZ2h0X2xpbWl0KS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuIQMIXGN1bXVsdXNfcHJpbWl0aXZlc19jb3JlWEFnZ3JlZ2F0ZU1lc3NhZ2VPcmlnaW4AAQwQSGVyZQAAABhQYXJlbnQAAQAcU2libGluZwQAnAEYUGFyYUlkAAIAACUDDDhwYWxsZXRfdXRpbGl0eRhwYWxsZXQQQ2FsbAQEVAABIBRiYXRjaAQBFGNhbGxzKQMBfFZlYzw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAEh8U2VuZCBhIGJhdGNoIG9mIGRpc3BhdGNoIGNhbGxzLgCwTWF5IGJlIGNhbGxlZCBmcm9tIGFueSBvcmlnaW4gZXhjZXB0IGBOb25lYC4AXQEtIGBjYWxsc2A6IFRoZSBjYWxscyB0byBiZSBkaXNwYXRjaGVkIGZyb20gdGhlIHNhbWUgb3JpZ2luLiBUaGUgbnVtYmVyIG9mIGNhbGwgbXVzdCBub3Q5ASAgZXhjZWVkIHRoZSBjb25zdGFudDogYGJhdGNoZWRfY2FsbHNfbGltaXRgIChhdmFpbGFibGUgaW4gY29uc3RhbnQgbWV0YWRhdGEpLgBVAUlmIG9yaWdpbiBpcyByb290IHRoZW4gdGhlIGNhbGxzIGFyZSBkaXNwYXRjaGVkIHdpdGhvdXQgY2hlY2tpbmcgb3JpZ2luIGZpbHRlci4gKFRoaXPsaW5jbHVkZXMgYnlwYXNzaW5nIGBmcmFtZV9zeXN0ZW06OkNvbmZpZzo6QmFzZUNhbGxGaWx0ZXJgKS4ANCMjIENvbXBsZXhpdHnQLSBPKEMpIHdoZXJlIEMgaXMgdGhlIG51bWJlciBvZiBjYWxscyB0byBiZSBiYXRjaGVkLgBVAVRoaXMgd2lsbCByZXR1cm4gYE9rYCBpbiBhbGwgY2lyY3Vtc3RhbmNlcy4gVG8gZGV0ZXJtaW5lIHRoZSBzdWNjZXNzIG9mIHRoZSBiYXRjaCwgYW4xAWV2ZW50IGlzIGRlcG9zaXRlZC4gSWYgYSBjYWxsIGZhaWxlZCBhbmQgdGhlIGJhdGNoIHdhcyBpbnRlcnJ1cHRlZCwgdGhlbiB0aGVVAWBCYXRjaEludGVycnVwdGVkYCBldmVudCBpcyBkZXBvc2l0ZWQsIGFsb25nIHdpdGggdGhlIG51bWJlciBvZiBzdWNjZXNzZnVsIGNhbGxzIG1hZGVNAWFuZCB0aGUgZXJyb3Igb2YgdGhlIGZhaWxlZCBjYWxsLiBJZiBhbGwgd2VyZSBzdWNjZXNzZnVsLCB0aGVuIHRoZSBgQmF0Y2hDb21wbGV0ZWRgTGV2ZW50IGlzIGRlcG9zaXRlZC40YXNfZGVyaXZhdGl2ZQgBFGluZGV4LQMBDHUxNgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAE03FNlbmQgYSBjYWxsIHRocm91Z2ggYW4gaW5kZXhlZCBwc2V1ZG9ueW0gb2YgdGhlIHNlbmRlci4AVQFGaWx0ZXIgZnJvbSBvcmlnaW4gYXJlIHBhc3NlZCBhbG9uZy4gVGhlIGNhbGwgd2lsbCBiZSBkaXNwYXRjaGVkIHdpdGggYW4gb3JpZ2luIHdoaWNovHVzZSB0aGUgc2FtZSBmaWx0ZXIgYXMgdGhlIG9yaWdpbiBvZiB0aGlzIGNhbGwuAEUBTk9URTogSWYgeW91IG5lZWQgdG8gZW5zdXJlIHRoYXQgYW55IGFjY291bnQtYmFzZWQgZmlsdGVyaW5nIGlzIG5vdCBob25vcmVkIChpLmUuYQFiZWNhdXNlIHlvdSBleHBlY3QgYHByb3h5YCB0byBoYXZlIGJlZW4gdXNlZCBwcmlvciBpbiB0aGUgY2FsbCBzdGFjayBhbmQgeW91IGRvIG5vdCB3YW50UQF0aGUgY2FsbCByZXN0cmljdGlvbnMgdG8gYXBwbHkgdG8gYW55IHN1Yi1hY2NvdW50cyksIHRoZW4gdXNlIGBhc19tdWx0aV90aHJlc2hvbGRfMWB8aW4gdGhlIE11bHRpc2lnIHBhbGxldCBpbnN0ZWFkLgD0Tk9URTogUHJpb3IgdG8gdmVyc2lvbiAqMTIsIHRoaXMgd2FzIGNhbGxlZCBgYXNfbGltaXRlZF9zdWJgLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uJGJhdGNoX2FsbAQBFGNhbGxzKQMBfFZlYzw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAjTsU2VuZCBhIGJhdGNoIG9mIGRpc3BhdGNoIGNhbGxzIGFuZCBhdG9taWNhbGx5IGV4ZWN1dGUgdGhlbS4hAVRoZSB3aG9sZSB0cmFuc2FjdGlvbiB3aWxsIHJvbGxiYWNrIGFuZCBmYWlsIGlmIGFueSBvZiB0aGUgY2FsbHMgZmFpbGVkLgCwTWF5IGJlIGNhbGxlZCBmcm9tIGFueSBvcmlnaW4gZXhjZXB0IGBOb25lYC4AXQEtIGBjYWxsc2A6IFRoZSBjYWxscyB0byBiZSBkaXNwYXRjaGVkIGZyb20gdGhlIHNhbWUgb3JpZ2luLiBUaGUgbnVtYmVyIG9mIGNhbGwgbXVzdCBub3Q5ASAgZXhjZWVkIHRoZSBjb25zdGFudDogYGJhdGNoZWRfY2FsbHNfbGltaXRgIChhdmFpbGFibGUgaW4gY29uc3RhbnQgbWV0YWRhdGEpLgBVAUlmIG9yaWdpbiBpcyByb290IHRoZW4gdGhlIGNhbGxzIGFyZSBkaXNwYXRjaGVkIHdpdGhvdXQgY2hlY2tpbmcgb3JpZ2luIGZpbHRlci4gKFRoaXPsaW5jbHVkZXMgYnlwYXNzaW5nIGBmcmFtZV9zeXN0ZW06OkNvbmZpZzo6QmFzZUNhbGxGaWx0ZXJgKS4ANCMjIENvbXBsZXhpdHnQLSBPKEMpIHdoZXJlIEMgaXMgdGhlIG51bWJlciBvZiBjYWxscyB0byBiZSBiYXRjaGVkLixkaXNwYXRjaF9hcwgBJGFzX29yaWdpbjEDAVRCb3g8VDo6UGFsbGV0c09yaWdpbj4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgADGMhEaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGEgcHJvdmlkZWQgb3JpZ2luLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuLGZvcmNlX2JhdGNoBAEUY2FsbHMpAwF8VmVjPDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAENHxTZW5kIGEgYmF0Y2ggb2YgZGlzcGF0Y2ggY2FsbHMu1FVubGlrZSBgYmF0Y2hgLCBpdCBhbGxvd3MgZXJyb3JzIGFuZCB3b24ndCBpbnRlcnJ1cHQuALBNYXkgYmUgY2FsbGVkIGZyb20gYW55IG9yaWdpbiBleGNlcHQgYE5vbmVgLgBdAS0gYGNhbGxzYDogVGhlIGNhbGxzIHRvIGJlIGRpc3BhdGNoZWQgZnJvbSB0aGUgc2FtZSBvcmlnaW4uIFRoZSBudW1iZXIgb2YgY2FsbCBtdXN0IG5vdDkBICBleGNlZWQgdGhlIGNvbnN0YW50OiBgYmF0Y2hlZF9jYWxsc19saW1pdGAgKGF2YWlsYWJsZSBpbiBjb25zdGFudCBtZXRhZGF0YSkuAE0BSWYgb3JpZ2luIGlzIHJvb3QgdGhlbiB0aGUgY2FsbHMgYXJlIGRpc3BhdGNoIHdpdGhvdXQgY2hlY2tpbmcgb3JpZ2luIGZpbHRlci4gKFRoaXPsaW5jbHVkZXMgYnlwYXNzaW5nIGBmcmFtZV9zeXN0ZW06OkNvbmZpZzo6QmFzZUNhbGxGaWx0ZXJgKS4ANCMjIENvbXBsZXhpdHnQLSBPKEMpIHdoZXJlIEMgaXMgdGhlIG51bWJlciBvZiBjYWxscyB0byBiZSBiYXRjaGVkLix3aXRoX3dlaWdodAgBEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAEYd2VpZ2h01QEBGFdlaWdodAAFGMREaXNwYXRjaCBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBhIHNwZWNpZmllZCB3ZWlnaHQuAC0BVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBjaGVjayB0aGUgd2VpZ2h0IG9mIHRoZSBjYWxsLCBhbmQgaW5zdGVhZCBhbGxvd3MgdGhluFJvb3Qgb3JpZ2luIHRvIHNwZWNpZnkgdGhlIHdlaWdodCBvZiB0aGUgY2FsbC4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290Xy4caWZfZWxzZQgBEG1haW4gAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAEgZmFsbGJhY2sgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAZcFQFEaXNwYXRjaCBhIGZhbGxiYWNrIGNhbGwgaW4gdGhlIGV2ZW50IHRoZSBtYWluIGNhbGwgZmFpbHMgdG8gZXhlY3V0ZS6wTWF5IGJlIGNhbGxlZCBmcm9tIGFueSBvcmlnaW4gZXhjZXB0IGBOb25lYC4A5FRoaXMgZnVuY3Rpb24gZmlyc3QgYXR0ZW1wdHMgdG8gZGlzcGF0Y2ggdGhlIGBtYWluYCBjYWxsLtRJZiB0aGUgYG1haW5gIGNhbGwgZmFpbHMsIHRoZSBgZmFsbGJhY2tgIGlzIGF0dGVtdGVkLhUBaWYgdGhlIGZhbGxiYWNrIGlzIHN1Y2Nlc3NmdWxseSBkaXNwYXRjaGVkLCB0aGUgd2VpZ2h0cyBvZiBib3RoIGNhbGxzJQFhcmUgYWNjdW11bGF0ZWQgYW5kIGFuIGV2ZW50IGNvbnRhaW5pbmcgdGhlIG1haW4gY2FsbCBlcnJvciBpcyBkZXBvc2l0ZWQuANxJbiB0aGUgZXZlbnQgb2YgYSBmYWxsYmFjayBmYWlsdXJlIHRoZSB3aG9sZSBjYWxsIGZhaWxzaHdpdGggdGhlIHdlaWdodHMgcmV0dXJuZWQuAEEBLSBgbWFpbmA6IFRoZSBtYWluIGNhbGwgdG8gYmUgZGlzcGF0Y2hlZC4gVGhpcyBpcyB0aGUgcHJpbWFyeSBhY3Rpb24gdG8gZXhlY3V0ZS49AS0gYGZhbGxiYWNrYDogVGhlIGZhbGxiYWNrIGNhbGwgdG8gYmUgZGlzcGF0Y2hlZCBpbiBjYXNlIHRoZSBgbWFpbmAgY2FsbCBmYWlscy4ARCMjIERpc3BhdGNoIExvZ2ljQQEtIElmIHRoZSBvcmlnaW4gaXMgYHJvb3RgLCBib3RoIHRoZSBtYWluIGFuZCBmYWxsYmFjayBjYWxscyBhcmUgZXhlY3V0ZWQgd2l0aG91dHggIGFwcGx5aW5nIGFueSBvcmlnaW4gZmlsdGVycy5JAS0gSWYgdGhlIG9yaWdpbiBpcyBub3QgYHJvb3RgLCB0aGUgb3JpZ2luIGZpbHRlciBpcyBhcHBsaWVkIHRvIGJvdGggdGhlIGBtYWluYCBhbmRMICBgZmFsbGJhY2tgIGNhbGxzLgAsIyMgVXNlIENhc2VZAS0gU29tZSB1c2UgY2FzZXMgbWlnaHQgaW52b2x2ZSBzdWJtaXR0aW5nIGEgYGJhdGNoYCB0eXBlIGNhbGwgaW4gZWl0aGVyIG1haW4sIGZhbGxiYWNrKCAgb3IgYm90aC5QZGlzcGF0Y2hfYXNfZmFsbGlibGUIASRhc19vcmlnaW4xAwFUQm94PFQ6OlBhbGxldHNPcmlnaW4+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ABxTIRGlzcGF0Y2hlcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBhIHByb3ZpZGVkIG9yaWdpbi4AUQFBbG1vc3QgdGhlIHNhbWUgYXMgW2BQYWxsZXQ6OmRpc3BhdGNoX2FzYF0gYnV0IGZvcndhcmRzIGFueSBlcnJvciBvZiB0aGUgaW5uZXIgY2FsbC4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290Xy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuKQMAAAIgAC0DAAAFBAAxAwhkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZTBPcmlnaW5DYWxsZXIAASwYc3lzdGVtBAA1AwF0ZnJhbWVfc3lzdGVtOjpPcmlnaW48UnVudGltZT4AAAAsUG9sa2Fkb3RYY20EADkDAUhwYWxsZXRfeGNtOjpPcmlnaW4AHwAoQ3VtdWx1c1hjbQQAPQMBaGN1bXVsdXNfcGFsbGV0X3hjbTo6T3JpZ2luACAAGFBlb3BsZQQAQQMBbGluZGl2X3BhbGxldF9wZW9wbGU6Ok9yaWdpbgAzAChQcm9vZk9mSW5rBABNAwGoaW5kaXZfcGFsbGV0X3Byb29mX29mX2luazo6T3JpZ2luPFJ1bnRpbWU+ADUAEEdhbWUEAFEDAYhpbmRpdl9wYWxsZXRfZ2FtZTo6T3JpZ2luPFJ1bnRpbWU+ADcAFFNjb3JlBABVAwGMaW5kaXZfcGFsbGV0X3Njb3JlOjpPcmlnaW48UnVudGltZT4AOAAoUGVvcGxlTGl0ZQQAWQMBpGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZTo6T3JpZ2luPFJ1bnRpbWU+AD4AJFJlc291cmNlcwQAXQMBeGluZGl2X3BhbGxldF9yZXNvdXJjZXM6Ok9yaWdpbgA/ABxNZW1iZXJzBABlAwGUaW5kaXZfcGFsbGV0X21lbWJlcnM6Ok9yaWdpbjxSdW50aW1lPgBDABxDb2luYWdlBABtAwGUaW5kaXZfcGFsbGV0X2NvaW5hZ2U6Ok9yaWdpbjxSdW50aW1lPgBEAAA1Aww0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaCRSYXdPcmlnaW4EJEFjY291bnRJZAEEARAQUm9vdAAAABhTaWduZWQEAAQBJEFjY291bnRJZAABABBOb25lAAIAKEF1dGhvcml6ZWQAAwAAOQMMKHBhbGxldF94Y20YcGFsbGV0GE9yaWdpbgABCAxYY20EAOABIExvY2F0aW9uAAAAIFJlc3BvbnNlBADgASBMb2NhdGlvbgABAAA9AwxIY3VtdWx1c19wYWxsZXRfeGNtGHBhbGxldBhPcmlnaW4AAQgUUmVsYXkAAABAU2libGluZ1BhcmFjaGFpbgQAnAEYUGFyYUlkAAEAAEEDDExpbmRpdl9wYWxsZXRfcGVvcGxlGHBhbGxldBhPcmlnaW4AAQhAUGVyc29uYWxJZGVudGl0eQQAKAEoUGVyc29uYWxJZAAAADRQZXJzb25hbEFsaWFzBABFAwFYUmV2aXNlZENvbnRleHR1YWxBbGlhcwABAABFAxA0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eVhSZXZpc2VkQ29udGV4dHVhbEFsaWFzAAAMASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAARByaW5nOAEkUmluZ0luZGV4AAEIY2FJAwE8Q29udGV4dHVhbEFsaWFzAABJAxA0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eTxDb250ZXh0dWFsQWxpYXMAAAgBFGFsaWFzCAEUQWxpYXMAARxjb250ZXh0CAEcQ29udGV4dAAATQMMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmsYcGFsbGV0GE9yaWdpbgQEVAABDFhBdXRob3JpemVkQXBwbHlXaXRoU2lnBAAEATBUOjpBY2NvdW50SWQAAABEUmVmZXJyZWRDYW5kaWRhdGUEAAQBMFQ6OkFjY291bnRJZAABAEBJbnZpdGVkQ2FuZGlkYXRlBAAEATBUOjpBY2NvdW50SWQAAgAAUQMMRGluZGl2X3BhbGxldF9nYW1lGHBhbGxldBhPcmlnaW4EBFQAAQQcSW52aXRlZAQABAEwVDo6QWNjb3VudElkAAAAAFUDDEhpbmRpdl9wYWxsZXRfc2NvcmUYcGFsbGV0GE9yaWdpbgQEVAABBEhBY2NvdW50UGFydGljaXBhbnQEAAQBMFQ6OkFjY291bnRJZAAAAABZAwxgaW5kaXZfcGFsbGV0X3Blb3BsZV9saXRlGHBhbGxldBhPcmlnaW4EBFQAAQgoTGl0ZVBlcnNvbgQABAEwVDo6QWNjb3VudElkAAAAJExpdGVBbGlhcwQARQMBWFJldmlzZWRDb250ZXh0dWFsQWxpYXMAAQAAXQMMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMYcGFsbGV0GE9yaWdpbgABDEhGcmllbmRSZXF1ZXN0QWxpYXMEAAgBFEFsaWFzAAAAOFN0bXRTdG9yZUFsaWFzBAAIARRBbGlhcwABAFBMb25nVGVybVN0b3JhZ2VDbGFpbQgACAEUQWxpYXMAAGEDAVBNZW1iZXJzaGlwQ29sbGVjdGlvbgACAABhAwxYaW5kaXZfcGFsbGV0X3Jlc291cmNlcxR0eXBlc1BNZW1iZXJzaGlwQ29sbGVjdGlvbgABCBhQZW9wbGUAAAAoTGl0ZVBlb3BsZQABAABlAwxQaW5kaXZfcGFsbGV0X21lbWJlcnMYcGFsbGV0GE9yaWdpbgQEVAFpAwEILE1lbWJlckFsaWFzCAAIAShJZGVudGlmaWVyAABFAwFYUmV2aXNlZENvbnRleHR1YWxBbGlhcwAAACxTZWxmSW5jbHVkZQQACAEsTWVtYmVyT2Y8VD4AAQAAaQMIZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUcUnVudGltZQAAAABtAwxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0GE9yaWdpbgQEVAFpAwEMEENvaW4IARxjb2luX2lkBAEwVDo6QWNjb3VudElkAAEQY29pbnEDARBDb2luAAAALFVubG9hZFRva2VuDAEwYWxpYXNfcHJvb2ZzeQMBrEJvdW5kZWRWZWM8UHJvb2ZPZjxUPiwgVDo6TWF4Q29uc29saWRhdGlvbj4AAShwcm92ZW5fbXNnCAEgW3U4OyAzMl0AAQxmZWWFAwEkVW5sb2FkRmVlAAEAWEluZmFsbGlibGVVbnBhaWRTaWduZWQEAQx3aG8EATBUOjpBY2NvdW50SWQAAgAAcQMMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldBBDb2luAAAIARR2YWx1ZXUDASRDb2luVmFsdWUAAQxhZ2UtAwEMdTE2AAB1AwAABQkAeQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAF9AwRTAAAEAIEDARhWZWM8VD4AAH0DAAADFAMAAAwAgQMAAAJ9AwCFAwxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0JFVubG9hZEZlZQABCBxQcmVwYWlkAAAAKEZyb21PdXRwdXQIAUhmZWVfcmVjeWNsZXJfdmFsdWV1AwEkQ29pblZhbHVlAAFIZmVlX3JlY3ljbGVyX2luZGV4OAEkUmluZ0luZGV4AAEAAIkDDDxwYWxsZXRfbXVsdGlzaWcYcGFsbGV0EENhbGwEBFQAARRQYXNfbXVsdGlfdGhyZXNob2xkXzEIAURvdGhlcl9zaWduYXRvcmllc8wBRFZlYzxUOjpBY2NvdW50SWQ+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AADBRAUltbWVkaWF0ZWx5IGRpc3BhdGNoIGEgbXVsdGktc2lnbmF0dXJlIGNhbGwgdXNpbmcgYSBzaW5nbGUgYXBwcm92YWwgZnJvbSB0aGUgY2FsbGVyLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAD0BLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGFyZSBwYXJ0IG9mIHRoZQEBbXVsdGktc2lnbmF0dXJlLCBidXQgZG8gbm90IHBhcnRpY2lwYXRlIGluIHRoZSBhcHByb3ZhbCBwcm9jZXNzLogtIGBjYWxsYDogVGhlIGNhbGwgdG8gYmUgZXhlY3V0ZWQuALhSZXN1bHQgaXMgZXF1aXZhbGVudCB0byB0aGUgZGlzcGF0Y2hlZCByZXN1bHQuADQjIyBDb21wbGV4aXR5GQFPKFogKyBDKSB3aGVyZSBaIGlzIHRoZSBsZW5ndGggb2YgdGhlIGNhbGwgYW5kIEMgaXRzIGV4ZWN1dGlvbiB3ZWlnaHQuIGFzX211bHRpFAEkdGhyZXNob2xkLQMBDHUxNgABRG90aGVyX3NpZ25hdG9yaWVzzAFEVmVjPFQ6OkFjY291bnRJZD4AATxtYXliZV90aW1lcG9pbnSNAwGQT3B0aW9uPFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAShtYXhfd2VpZ2h01QEBGFdlaWdodAABqFUBUmVnaXN0ZXIgYXBwcm92YWwgZm9yIGEgZGlzcGF0Y2ggdG8gYmUgbWFkZSBmcm9tIGEgZGV0ZXJtaW5pc3RpYyBjb21wb3NpdGUgYWNjb3VudCBpZvhhcHByb3ZlZCBieSBhIHRvdGFsIG9mIGB0aHJlc2hvbGQgLSAxYCBvZiBgb3RoZXJfc2lnbmF0b3JpZXNgLgA9ASoqSWYgdGhlIGFwcHJvdmFsIHRocmVzaG9sZCBpcyBtZXQgKGluY2x1ZGluZyB0aGUgc2VuZGVyJ3MgYXBwcm92YWwpLCB0aGlzIHdpbGxFAWltbWVkaWF0ZWx5IGV4ZWN1dGUgdGhlIGNhbGwuKiogVGhpcyBpcyB0aGUgb25seSB3YXkgdG8gZXhlY3V0ZSBhIG11bHRpc2lnIGNhbGwgLcBgYXBwcm92ZV9hc19tdWx0aWAgd2lsbCBuZXZlciB0cmlnZ2VyIGV4ZWN1dGlvbi4ALQFQYXltZW50OiBgRGVwb3NpdEJhc2VgIHdpbGwgYmUgcmVzZXJ2ZWQgaWYgdGhpcyBpcyB0aGUgZmlyc3QgYXBwcm92YWwsIHBsdXM9AWB0aHJlc2hvbGRgIHRpbWVzIGBEZXBvc2l0RmFjdG9yYC4gSXQgaXMgcmV0dXJuZWQgb25jZSB0aGlzIGRpc3BhdGNoIGhhcHBlbnMgb3I0aXMgY2FuY2VsbGVkLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAFUBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgZm9yIHRoaXMgZGlzcGF0Y2ggYmVmb3JlIGl0IGlzIGV4ZWN1dGVkLkEBLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGNhbiBhcHByb3ZlIHRoaXNsZGlzcGF0Y2guIE1heSBub3QgYmUgZW1wdHkuWQEtIGBtYXliZV90aW1lcG9pbnRgOiBJZiB0aGlzIGlzIHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiB0aGlzIG11c3QgYmUgYE5vbmVgLiBJZiBpdCBpc1EBbm90IHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiBpdCBtdXN0IGJlIGBTb21lYCwgd2l0aCB0aGUgdGltZXBvaW50IChibG9jayBudW1iZXIgYW5k1HRyYW5zYWN0aW9uIGluZGV4KSBvZiB0aGUgZmlyc3QgYXBwcm92YWwgdHJhbnNhY3Rpb24uiC0gYGNhbGxgOiBUaGUgY2FsbCB0byBiZSBleGVjdXRlZC4ATQFOT1RFOiBGb3IgaW50ZXJtZWRpYXRlIGFwcHJvdmFscyAobm90IHRoZSBmaW5hbCBhcHByb3ZhbCksIHlvdSBzaG91bGQgZ2VuZXJhbGx5IHVzZUUBYGFwcHJvdmVfYXNfbXVsdGlgIGluc3RlYWQsIHNpbmNlIGl0IG9ubHkgcmVxdWlyZXMgYSBoYXNoIG9mIHRoZSBjYWxsIGFuZCBpcyBtb3JlKGVmZmljaWVudC4AWQFSZXN1bHQgaXMgZXF1aXZhbGVudCB0byB0aGUgZGlzcGF0Y2hlZCByZXN1bHQgaWYgYHRocmVzaG9sZGAgaXMgZXhhY3RseSBgMWAuIE90aGVyd2lzZVUBb24gc3VjY2VzcywgcmVzdWx0IGlzIGBPa2AgYW5kIHRoZSByZXN1bHQgZnJvbSB0aGUgaW50ZXJpb3IgY2FsbCwgaWYgaXQgd2FzIGV4ZWN1dGVkLNxtYXkgYmUgZm91bmQgaW4gdGhlIGRlcG9zaXRlZCBgTXVsdGlzaWdFeGVjdXRlZGAgZXZlbnQuADQjIyBDb21wbGV4aXR5UC0gYE8oUyArIFogKyBDYWxsKWAuzC0gVXAgdG8gb25lIGJhbGFuY2UtcmVzZXJ2ZSBvciB1bnJlc2VydmUgb3BlcmF0aW9uLj0BLSBPbmUgcGFzc3Rocm91Z2ggb3BlcmF0aW9uLCBvbmUgaW5zZXJ0LCBib3RoIGBPKFMpYCB3aGVyZSBgU2AgaXMgdGhlIG51bWJlciBvZkUBICBzaWduYXRvcmllcy4gYFNgIGlzIGNhcHBlZCBieSBgTWF4U2lnbmF0b3JpZXNgLCB3aXRoIHdlaWdodCBiZWluZyBwcm9wb3J0aW9uYWwuIQEtIE9uZSBjYWxsIGVuY29kZSAmIGhhc2gsIGJvdGggb2YgY29tcGxleGl0eSBgTyhaKWAgd2hlcmUgYFpgIGlzIHR4LWxlbi68LSBPbmUgZW5jb2RlICYgaGFzaCwgYm90aCBvZiBjb21wbGV4aXR5IGBPKFMpYC7ULSBVcCB0byBvbmUgYmluYXJ5IHNlYXJjaCBhbmQgaW5zZXJ0IChgTyhsb2dTICsgUylgKS74LSBJL086IDEgcmVhZCBgTyhTKWAsIHVwIHRvIDEgbXV0YXRlIGBPKFMpYC4gVXAgdG8gb25lIHJlbW92ZS4wLSBPbmUgZXZlbnQubC0gVGhlIHdlaWdodCBvZiB0aGUgYGNhbGxgLk0BLSBTdG9yYWdlOiBpbnNlcnRzIG9uZSBpdGVtLCB2YWx1ZSBzaXplIGJvdW5kZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCBhIGRlcG9zaXQZASAgdGFrZW4gZm9yIGl0cyBsaWZldGltZSBvZiBgRGVwb3NpdEJhc2UgKyB0aHJlc2hvbGQgKiBEZXBvc2l0RmFjdG9yYC5AYXBwcm92ZV9hc19tdWx0aRQBJHRocmVzaG9sZC0DAQx1MTYAAURvdGhlcl9zaWduYXRvcmllc8wBRFZlYzxUOjpBY2NvdW50SWQ+AAE8bWF5YmVfdGltZXBvaW50jQMBkE9wdGlvbjxUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+PgABJGNhbGxfaGFzaAgBIFt1ODsgMzJdAAEobWF4X3dlaWdodNUBARhXZWlnaHQAAphVAVJlZ2lzdGVyIGFwcHJvdmFsIGZvciBhIGRpc3BhdGNoIHRvIGJlIG1hZGUgZnJvbSBhIGRldGVybWluaXN0aWMgY29tcG9zaXRlIGFjY291bnQgaWb4YXBwcm92ZWQgYnkgYSB0b3RhbCBvZiBgdGhyZXNob2xkIC0gMWAgb2YgYG90aGVyX3NpZ25hdG9yaWVzYC4AOQEqKlRoaXMgZnVuY3Rpb24gd2lsbCBORVZFUiBleGVjdXRlIHRoZSBjYWxsLCBldmVuIGlmIHRoZSBhcHByb3ZhbCB0aHJlc2hvbGQgaXNRAXJlYWNoZWQuKiogSXQgb25seSByZWdpc3RlcnMgYXBwcm92YWwuIFRvIGFjdHVhbGx5IGV4ZWN1dGUgdGhlIGNhbGwsIGBhc19tdWx0aWAgbXVzdPBiZSBjYWxsZWQgd2l0aCB0aGUgZnVsbCBjYWxsIGRhdGEgYnkgYW55IG9mIHRoZSBzaWduYXRvcmllcy4ATQFUaGlzIGZ1bmN0aW9uIGlzIG1vcmUgZWZmaWNpZW50IHRoYW4gYGFzX211bHRpYCBmb3IgaW50ZXJtZWRpYXRlIGFwcHJvdmFscyBzaW5jZSBpdNBvbmx5IHJlcXVpcmVzIHRoZSBjYWxsIGhhc2gsIG5vdCB0aGUgZnVsbCBjYWxsIGRhdGEuAC0BUGF5bWVudDogYERlcG9zaXRCYXNlYCB3aWxsIGJlIHJlc2VydmVkIGlmIHRoaXMgaXMgdGhlIGZpcnN0IGFwcHJvdmFsLCBwbHVzPQFgdGhyZXNob2xkYCB0aW1lcyBgRGVwb3NpdEZhY3RvcmAuIEl0IGlzIHJldHVybmVkIG9uY2UgdGhpcyBkaXNwYXRjaCBoYXBwZW5zIG9yNGlzIGNhbmNlbGxlZC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBVAS0gYHRocmVzaG9sZGA6IFRoZSB0b3RhbCBudW1iZXIgb2YgYXBwcm92YWxzIGZvciB0aGlzIGRpc3BhdGNoIGJlZm9yZSBpdCBpcyBleGVjdXRlZC5BAS0gYG90aGVyX3NpZ25hdG9yaWVzYDogVGhlIGFjY291bnRzIChvdGhlciB0aGFuIHRoZSBzZW5kZXIpIHdobyBjYW4gYXBwcm92ZSB0aGlzbGRpc3BhdGNoLiBNYXkgbm90IGJlIGVtcHR5LlkBLSBgbWF5YmVfdGltZXBvaW50YDogSWYgdGhpcyBpcyB0aGUgZmlyc3QgYXBwcm92YWwsIHRoZW4gdGhpcyBtdXN0IGJlIGBOb25lYC4gSWYgaXQgaXNRAW5vdCB0aGUgZmlyc3QgYXBwcm92YWwsIHRoZW4gaXQgbXVzdCBiZSBgU29tZWAsIHdpdGggdGhlIHRpbWVwb2ludCAoYmxvY2sgbnVtYmVyIGFuZNR0cmFuc2FjdGlvbiBpbmRleCkgb2YgdGhlIGZpcnN0IGFwcHJvdmFsIHRyYW5zYWN0aW9uLswtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0byBiZSBleGVjdXRlZC4APQFOT1RFOiBUbyBleGVjdXRlIHRoZSBjYWxsIGFmdGVyIGFwcHJvdmFscyBhcmUgZ2F0aGVyZWQsIGFueSBzaWduYXRvcnkgbXVzdCBjYWxsKQFgYXNfbXVsdGlgIHdpdGggdGhlIGZ1bGwgY2FsbCBkYXRhLiBUaGlzIGZ1bmN0aW9uIGNhbm5vdCBleGVjdXRlIHRoZSBjYWxsLgA0IyMgQ29tcGxleGl0eSQtIGBPKFMpYC7MLSBVcCB0byBvbmUgYmFsYW5jZS1yZXNlcnZlIG9yIHVucmVzZXJ2ZSBvcGVyYXRpb24uPQEtIE9uZSBwYXNzdGhyb3VnaCBvcGVyYXRpb24sIG9uZSBpbnNlcnQsIGJvdGggYE8oUylgIHdoZXJlIGBTYCBpcyB0aGUgbnVtYmVyIG9mRQEgIHNpZ25hdG9yaWVzLiBgU2AgaXMgY2FwcGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggd2VpZ2h0IGJlaW5nIHByb3BvcnRpb25hbC68LSBPbmUgZW5jb2RlICYgaGFzaCwgYm90aCBvZiBjb21wbGV4aXR5IGBPKFMpYC7ULSBVcCB0byBvbmUgYmluYXJ5IHNlYXJjaCBhbmQgaW5zZXJ0IChgTyhsb2dTICsgUylgKS74LSBJL086IDEgcmVhZCBgTyhTKWAsIHVwIHRvIDEgbXV0YXRlIGBPKFMpYC4gVXAgdG8gb25lIHJlbW92ZS4wLSBPbmUgZXZlbnQuTQEtIFN0b3JhZ2U6IGluc2VydHMgb25lIGl0ZW0sIHZhbHVlIHNpemUgYm91bmRlZCBieSBgTWF4U2lnbmF0b3JpZXNgLCB3aXRoIGEgZGVwb3NpdBkBICB0YWtlbiBmb3IgaXRzIGxpZmV0aW1lIG9mIGBEZXBvc2l0QmFzZSArIHRocmVzaG9sZCAqIERlcG9zaXRGYWN0b3JgLjxjYW5jZWxfYXNfbXVsdGkQASR0aHJlc2hvbGQtAwEMdTE2AAFEb3RoZXJfc2lnbmF0b3JpZXPMAURWZWM8VDo6QWNjb3VudElkPgABJHRpbWVwb2ludJEDAXBUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+AAEkY2FsbF9oYXNoCAEgW3U4OyAzMl0AA1RVAUNhbmNlbCBhIHByZS1leGlzdGluZywgb24tZ29pbmcgbXVsdGlzaWcgdHJhbnNhY3Rpb24uIEFueSBkZXBvc2l0IHJlc2VydmVkIHByZXZpb3VzbHnEZm9yIHRoaXMgb3BlcmF0aW9uIHdpbGwgYmUgdW5yZXNlcnZlZCBvbiBzdWNjZXNzLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAFUBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgZm9yIHRoaXMgZGlzcGF0Y2ggYmVmb3JlIGl0IGlzIGV4ZWN1dGVkLkEBLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGNhbiBhcHByb3ZlIHRoaXNsZGlzcGF0Y2guIE1heSBub3QgYmUgZW1wdHkuXQEtIGB0aW1lcG9pbnRgOiBUaGUgdGltZXBvaW50IChibG9jayBudW1iZXIgYW5kIHRyYW5zYWN0aW9uIGluZGV4KSBvZiB0aGUgZmlyc3QgYXBwcm92YWx4dHJhbnNhY3Rpb24gZm9yIHRoaXMgZGlzcGF0Y2guzC0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIGV4ZWN1dGVkLgA0IyMgQ29tcGxleGl0eSQtIGBPKFMpYC7MLSBVcCB0byBvbmUgYmFsYW5jZS1yZXNlcnZlIG9yIHVucmVzZXJ2ZSBvcGVyYXRpb24uPQEtIE9uZSBwYXNzdGhyb3VnaCBvcGVyYXRpb24sIG9uZSBpbnNlcnQsIGJvdGggYE8oUylgIHdoZXJlIGBTYCBpcyB0aGUgbnVtYmVyIG9mRQEgIHNpZ25hdG9yaWVzLiBgU2AgaXMgY2FwcGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggd2VpZ2h0IGJlaW5nIHByb3BvcnRpb25hbC68LSBPbmUgZW5jb2RlICYgaGFzaCwgYm90aCBvZiBjb21wbGV4aXR5IGBPKFMpYC4wLSBPbmUgZXZlbnQuhC0gSS9POiAxIHJlYWQgYE8oUylgLCBvbmUgcmVtb3ZlLnAtIFN0b3JhZ2U6IHJlbW92ZXMgb25lIGl0ZW0uMHBva2VfZGVwb3NpdAwBJHRocmVzaG9sZC0DAQx1MTYAAURvdGhlcl9zaWduYXRvcmllc8wBRFZlYzxUOjpBY2NvdW50SWQ+AAEkY2FsbF9oYXNoCAEgW3U4OyAzMl0ABDT0UG9rZSB0aGUgZGVwb3NpdCByZXNlcnZlZCBmb3IgYW4gZXhpc3RpbmcgbXVsdGlzaWcgb3BlcmF0aW9uLgBhAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCBtdXN0IGJlIHRoZSBvcmlnaW5hbCBkZXBvc2l0b3Igb2ZcdGhlIG11bHRpc2lnIG9wZXJhdGlvbi4AAQFUaGUgdHJhbnNhY3Rpb24gZmVlIGlzIHdhaXZlZCBpZiB0aGUgZGVwb3NpdCBhbW91bnQgaGFzIGNoYW5nZWQuABkBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgbmVlZGVkIGZvciB0aGlzIG11bHRpc2lnLj0BLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGFyZSBwYXJ0IG9mIHRoZSwgIG11bHRpc2lnLgUBLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdGhpcyBkZXBvc2l0IGlzIHJlc2VydmVkIGZvci4AjEVtaXRzIGBEZXBvc2l0UG9rZWRgIGlmIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLo0DBBhPcHRpb24EBFQBkQMBCBBOb25lAAAAEFNvbWUEAJEDAAABAACRAwg8cGFsbGV0X211bHRpc2lnJFRpbWVwb2ludAQsQmxvY2tOdW1iZXIBOAAIARhoZWlnaHQ4ASxCbG9ja051bWJlcgABFGluZGV4OAEMdTMyAACVAwwscGFsbGV0X3N1ZG8YcGFsbGV0EENhbGwEBFQAARQQc3VkbwQBEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAAENQFBdXRoZW50aWNhdGVzIHRoZSBzdWRvIGtleSBhbmQgZGlzcGF0Y2hlcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBgUm9vdGAgb3JpZ2luLlRzdWRvX3VuY2hlY2tlZF93ZWlnaHQIARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABGHdlaWdodNUBARhXZWlnaHQAARQ1AUF1dGhlbnRpY2F0ZXMgdGhlIHN1ZG8ga2V5IGFuZCBkaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGBSb290YCBvcmlnaW4uLQFUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGNoZWNrIHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwsIGFuZCBpbnN0ZWFkIGFsbG93cyB0aGWwU3VkbyB1c2VyIHRvIHNwZWNpZnkgdGhlIHdlaWdodCBvZiB0aGUgY2FsbC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLhxzZXRfa2V5BAEMbmV3AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAghdAUF1dGhlbnRpY2F0ZXMgdGhlIGN1cnJlbnQgc3VkbyBrZXkgYW5kIHNldHMgdGhlIGdpdmVuIEFjY291bnRJZCAoYG5ld2ApIGFzIHRoZSBuZXcgc3VkbxBrZXkuHHN1ZG9fYXMIAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAMQTQFBdXRoZW50aWNhdGVzIHRoZSBzdWRvIGtleSBhbmQgZGlzcGF0Y2hlcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBgU2lnbmVkYCBvcmlnaW4gZnJvbUBhIGdpdmVuIGFjY291bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ocmVtb3ZlX2tleQAEDIRQZXJtYW5lbnRseSByZW1vdmVzIHRoZSBzdWRvIGtleS4AbCoqVGhpcyBjYW5ub3QgYmUgdW4tZG9uZS4qKgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6ZAwwwcGFsbGV0X3Byb3h5GHBhbGxldBBDYWxsBARUAAEsFHByb3h5DAEQcmVhbAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAFAZm9yY2VfcHJveHlfdHlwZZ0DAVBPcHRpb248VDo6UHJveHlUeXBlPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAAkTQFEaXNwYXRjaCB0aGUgZ2l2ZW4gYGNhbGxgIGZyb20gYW4gYWNjb3VudCB0aGF0IHRoZSBzZW5kZXIgaXMgYXV0aG9yaXNlZCBmb3IgdGhyb3VnaDBgYWRkX3Byb3h5YC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczoNAS0gYHJlYWxgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBwcm94eSB3aWxsIG1ha2UgYSBjYWxsIG9uIGJlaGFsZiBvZi5hAS0gYGZvcmNlX3Byb3h5X3R5cGVgOiBTcGVjaWZ5IHRoZSBleGFjdCBwcm94eSB0eXBlIHRvIGJlIHVzZWQgYW5kIGNoZWNrZWQgZm9yIHRoaXMgY2FsbC7QLSBgY2FsbGA6IFRoZSBjYWxsIHRvIGJlIG1hZGUgYnkgdGhlIGByZWFsYCBhY2NvdW50LiRhZGRfcHJveHkMASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEocHJveHlfdHlwZaEDATBUOjpQcm94eVR5cGUAARRkZWxheTgBREJsb2NrTnVtYmVyRm9yPFQ+AAEkRQFSZWdpc3RlciBhIHByb3h5IGFjY291bnQgZm9yIHRoZSBzZW5kZXIgdGhhdCBpcyBhYmxlIHRvIG1ha2UgY2FsbHMgb24gaXRzIGJlaGFsZi4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczoRAS0gYHByb3h5YDogVGhlIGFjY291bnQgdGhhdCB0aGUgYGNhbGxlcmAgd291bGQgbGlrZSB0byBtYWtlIGEgcHJveHku/C0gYHByb3h5X3R5cGVgOiBUaGUgcGVybWlzc2lvbnMgYWxsb3dlZCBmb3IgdGhpcyBwcm94eSBhY2NvdW50Lk0BLSBgZGVsYXlgOiBUaGUgYW5ub3VuY2VtZW50IHBlcmlvZCByZXF1aXJlZCBvZiB0aGUgaW5pdGlhbCBwcm94eS4gV2lsbCBnZW5lcmFsbHkgYmUUemVyby4wcmVtb3ZlX3Byb3h5DAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKHByb3h5X3R5cGWhAwEwVDo6UHJveHlUeXBlAAEUZGVsYXk4AURCbG9ja051bWJlckZvcjxUPgACHKhVbnJlZ2lzdGVyIGEgcHJveHkgYWNjb3VudCBmb3IgdGhlIHNlbmRlci4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczolAS0gYHByb3h5YDogVGhlIGFjY291bnQgdGhhdCB0aGUgYGNhbGxlcmAgd291bGQgbGlrZSB0byByZW1vdmUgYXMgYSBwcm94eS5BAS0gYHByb3h5X3R5cGVgOiBUaGUgcGVybWlzc2lvbnMgY3VycmVudGx5IGVuYWJsZWQgZm9yIHRoZSByZW1vdmVkIHByb3h5IGFjY291bnQuOHJlbW92ZV9wcm94aWVzAAMYtFVucmVnaXN0ZXIgYWxsIHByb3h5IGFjY291bnRzIGZvciB0aGUgc2VuZGVyLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAF0BV0FSTklORzogVGhpcyBtYXkgYmUgY2FsbGVkIG9uIGFjY291bnRzIGNyZWF0ZWQgYnkgYGNyZWF0ZV9wdXJlYCwgaG93ZXZlciBpZiBkb25lLCB0aGVuWQF0aGUgdW5yZXNlcnZlZCBmZWVzIHdpbGwgYmUgaW5hY2Nlc3NpYmxlLiAqKkFsbCBhY2Nlc3MgdG8gdGhpcyBhY2NvdW50IHdpbGwgYmUgbG9zdC4qKixjcmVhdGVfcHVyZQwBKHByb3h5X3R5cGWhAwEwVDo6UHJveHlUeXBlAAEUZGVsYXk4AURCbG9ja051bWJlckZvcjxUPgABFGluZGV4LQMBDHUxNgAESDkBU3Bhd24gYSBmcmVzaCBuZXcgYWNjb3VudCB0aGF0IGlzIGd1YXJhbnRlZWQgdG8gYmUgb3RoZXJ3aXNlIGluYWNjZXNzaWJsZSwgYW5k/GluaXRpYWxpemUgaXQgd2l0aCBhIHByb3h5IG9mIGBwcm94eV90eXBlYCBmb3IgYG9yaWdpbmAgc2VuZGVyLgBsUmVxdWlyZXMgYSBgU2lnbmVkYCBvcmlnaW4uAFEBLSBgcHJveHlfdHlwZWA6IFRoZSB0eXBlIG9mIHRoZSBwcm94eSB0aGF0IHRoZSBzZW5kZXIgd2lsbCBiZSByZWdpc3RlcmVkIGFzIG92ZXIgdGhlTQFuZXcgYWNjb3VudC4gVGhpcyB3aWxsIGFsbW9zdCBhbHdheXMgYmUgdGhlIG1vc3QgcGVybWlzc2l2ZSBgUHJveHlUeXBlYCBwb3NzaWJsZSB0b3hhbGxvdyBmb3IgbWF4aW11bSBmbGV4aWJpbGl0eS5RAS0gYGluZGV4YDogQSBkaXNhbWJpZ3VhdGlvbiBpbmRleCwgaW4gY2FzZSB0aGlzIGlzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBpbiB0aGUgc2FtZV0BdHJhbnNhY3Rpb24gKGUuZy4gd2l0aCBgdXRpbGl0eTo6YmF0Y2hgKS4gVW5sZXNzIHlvdSdyZSB1c2luZyBgYmF0Y2hgIHlvdSBwcm9iYWJseSBqdXN0QHdhbnQgdG8gdXNlIGAwYC5NAS0gYGRlbGF5YDogVGhlIGFubm91bmNlbWVudCBwZXJpb2QgcmVxdWlyZWQgb2YgdGhlIGluaXRpYWwgcHJveHkuIFdpbGwgZ2VuZXJhbGx5IGJlFHplcm8uAFEBRmFpbHMgd2l0aCBgRHVwbGljYXRlYCBpZiB0aGlzIGhhcyBhbHJlYWR5IGJlZW4gY2FsbGVkIGluIHRoaXMgdHJhbnNhY3Rpb24sIGZyb20gdGhlmHNhbWUgc2VuZGVyLCB3aXRoIHRoZSBzYW1lIHBhcmFtZXRlcnMuAORGYWlscyBpZiB0aGVyZSBhcmUgaW5zdWZmaWNpZW50IGZ1bmRzIHRvIHBheSBmb3IgZGVwb3NpdC4ka2lsbF9wdXJlFAEcc3Bhd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEocHJveHlfdHlwZaEDATBUOjpQcm94eVR5cGUAARRpbmRleC0DAQx1MTYAARhoZWlnaHRgAURCbG9ja051bWJlckZvcjxUPgABJGV4dF9pbmRleGABDHUzMgAFQKBSZW1vdmVzIGEgcHJldmlvdXNseSBzcGF3bmVkIHB1cmUgcHJveHkuAEkBV0FSTklORzogKipBbGwgYWNjZXNzIHRvIHRoaXMgYWNjb3VudCB3aWxsIGJlIGxvc3QuKiogQW55IGZ1bmRzIGhlbGQgaW4gaXQgd2lsbCBiZTRpbmFjY2Vzc2libGUuAFkBUmVxdWlyZXMgYSBgU2lnbmVkYCBvcmlnaW4sIGFuZCB0aGUgc2VuZGVyIGFjY291bnQgbXVzdCBoYXZlIGJlZW4gY3JlYXRlZCBieSBhIGNhbGwgdG+wYGNyZWF0ZV9wdXJlYCB3aXRoIGNvcnJlc3BvbmRpbmcgcGFyYW1ldGVycy4AVQEtIGBzcGF3bmVyYDogVGhlIGFjY291bnQgdGhhdCBvcmlnaW5hbGx5IGNhbGxlZCBgY3JlYXRlX3B1cmVgIHRvIGNyZWF0ZSB0aGlzIGFjY291bnQuVQEtIGBpbmRleGA6IFRoZSBkaXNhbWJpZ3VhdGlvbiBpbmRleCBvcmlnaW5hbGx5IHBhc3NlZCB0byBgY3JlYXRlX3B1cmVgLiBQcm9iYWJseSBgMGAuCQEtIGBwcm94eV90eXBlYDogVGhlIHByb3h5IHR5cGUgb3JpZ2luYWxseSBwYXNzZWQgdG8gYGNyZWF0ZV9wdXJlYC5FAS0gYGhlaWdodGA6IFRoZSBoZWlnaHQgb2YgdGhlIGNoYWluIHdoZW4gdGhlIGNhbGwgdG8gYGNyZWF0ZV9wdXJlYCB3YXMgcHJvY2Vzc2VkLlEBLSBgZXh0X2luZGV4YDogVGhlIGV4dHJpbnNpYyBpbmRleCBpbiB3aGljaCB0aGUgY2FsbCB0byBgY3JlYXRlX3B1cmVgIHdhcyBwcm9jZXNzZWQuADUBRmFpbHMgd2l0aCBgTm9QZXJtaXNzaW9uYCBpbiBjYXNlIHRoZSBjYWxsZXIgaXMgbm90IGEgcHJldmlvdXNseSBjcmVhdGVkIHB1cmX4YWNjb3VudCB3aG9zZSBgY3JlYXRlX3B1cmVgIGNhbGwgaGFzIGNvcnJlc3BvbmRpbmcgcGFyYW1ldGVycy4gYW5ub3VuY2UIARByZWFsAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRjYWxsX2hhc2g8ATRDYWxsSGFzaE9mPFQ+AAY8BQFQdWJsaXNoIHRoZSBoYXNoIG9mIGEgcHJveHktY2FsbCB0aGF0IHdpbGwgYmUgbWFkZSBpbiB0aGUgZnV0dXJlLgBdAVRoaXMgbXVzdCBiZSBjYWxsZWQgc29tZSBudW1iZXIgb2YgYmxvY2tzIGJlZm9yZSB0aGUgY29ycmVzcG9uZGluZyBgcHJveHlgIGlzIGF0dGVtcHRlZCUBaWYgdGhlIGRlbGF5IGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJveHkgcmVsYXRpb25zaGlwIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLgARAU5vIG1vcmUgdGhhbiBgTWF4UGVuZGluZ2AgYW5ub3VuY2VtZW50cyBtYXkgYmUgbWFkZSBhdCBhbnkgb25lIHRpbWUuAAkBVGhpcyB3aWxsIHRha2UgYSBkZXBvc2l0IG9mIGBBbm5vdW5jZW1lbnREZXBvc2l0RmFjdG9yYCBhcyB3ZWxsIGFzGQFgQW5ub3VuY2VtZW50RGVwb3NpdEJhc2VgIGlmIHRoZXJlIGFyZSBubyBvdGhlciBwZW5kaW5nIGFubm91bmNlbWVudHMuACUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIGEgcHJveHkgb2YgYHJlYWxgLgAsUGFyYW1ldGVyczoNAS0gYHJlYWxgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBwcm94eSB3aWxsIG1ha2UgYSBjYWxsIG9uIGJlaGFsZiBvZi4VAS0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIG1hZGUgYnkgdGhlIGByZWFsYCBhY2NvdW50LkxyZW1vdmVfYW5ub3VuY2VtZW50CAEQcmVhbAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkY2FsbF9oYXNoPAE0Q2FsbEhhc2hPZjxUPgAHKHBSZW1vdmUgYSBnaXZlbiBhbm5vdW5jZW1lbnQuAFkBTWF5IGJlIGNhbGxlZCBieSBhIHByb3h5IGFjY291bnQgdG8gcmVtb3ZlIGEgY2FsbCB0aGV5IHByZXZpb3VzbHkgYW5ub3VuY2VkIGFuZCByZXR1cm4wdGhlIGRlcG9zaXQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6DQEtIGByZWFsYDogVGhlIGFjY291bnQgdGhhdCB0aGUgcHJveHkgd2lsbCBtYWtlIGEgY2FsbCBvbiBiZWhhbGYgb2YuFQEtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0byBiZSBtYWRlIGJ5IHRoZSBgcmVhbGAgYWNjb3VudC5McmVqZWN0X2Fubm91bmNlbWVudAgBIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRjYWxsX2hhc2g8ATRDYWxsSGFzaE9mPFQ+AAgosFJlbW92ZSB0aGUgZ2l2ZW4gYW5ub3VuY2VtZW50IG9mIGEgZGVsZWdhdGUuAGEBTWF5IGJlIGNhbGxlZCBieSBhIHRhcmdldCAocHJveGllZCkgYWNjb3VudCB0byByZW1vdmUgYSBjYWxsIHRoYXQgb25lIG9mIHRoZWlyIGRlbGVnYXRlcyUBKGBkZWxlZ2F0ZWApIGhhcyBhbm5vdW5jZWQgdGhleSB3YW50IHRvIGV4ZWN1dGUuIFRoZSBkZXBvc2l0IGlzIHJldHVybmVkLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOvQtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRoYXQgcHJldmlvdXNseSBhbm5vdW5jZWQgdGhlIGNhbGwuvC0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIG1hZGUuPHByb3h5X2Fubm91bmNlZBABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARByZWFsAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAUBmb3JjZV9wcm94eV90eXBlnQMBUE9wdGlvbjxUOjpQcm94eVR5cGU+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ACSxNAURpc3BhdGNoIHRoZSBnaXZlbiBgY2FsbGAgZnJvbSBhbiBhY2NvdW50IHRoYXQgdGhlIHNlbmRlciBpcyBhdXRob3JpemVkIGZvciB0aHJvdWdoMGBhZGRfcHJveHlgLgCoUmVtb3ZlcyBhbnkgY29ycmVzcG9uZGluZyBhbm5vdW5jZW1lbnQocykuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6DQEtIGByZWFsYDogVGhlIGFjY291bnQgdGhhdCB0aGUgcHJveHkgd2lsbCBtYWtlIGEgY2FsbCBvbiBiZWhhbGYgb2YuYQEtIGBmb3JjZV9wcm94eV90eXBlYDogU3BlY2lmeSB0aGUgZXhhY3QgcHJveHkgdHlwZSB0byBiZSB1c2VkIGFuZCBjaGVja2VkIGZvciB0aGlzIGNhbGwu0C0gYGNhbGxgOiBUaGUgY2FsbCB0byBiZSBtYWRlIGJ5IHRoZSBgcmVhbGAgYWNjb3VudC4wcG9rZV9kZXBvc2l0AAogSQFQb2tlIC8gQWRqdXN0IGRlcG9zaXRzIG1hZGUgZm9yIHByb3hpZXMgYW5kIGFubm91bmNlbWVudHMgYmFzZWQgb24gY3VycmVudCB2YWx1ZXMuDQFUaGlzIGNhbiBiZSB1c2VkIGJ5IGFjY291bnRzIHRvIHBvc3NpYmx5IGxvd2VyIHRoZWlyIGxvY2tlZCBhbW91bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AAQFUaGUgdHJhbnNhY3Rpb24gZmVlIGlzIHdhaXZlZCBpZiB0aGUgZGVwb3NpdCBhbW91bnQgaGFzIGNoYW5nZWQuAIxFbWl0cyBgRGVwb3NpdFBva2VkYCBpZiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6dAwQYT3B0aW9uBARUAaEDAQgQTm9uZQAAABBTb21lBAChAwAAAQAAoQMIZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUkUHJveHlUeXBlAAEYDEFueQAAACxOb25UcmFuc2ZlcgABACxDYW5jZWxQcm94eQACACBJZGVudGl0eQADAERJZGVudGl0eUp1ZGdlbWVudAAEACBDb2xsYXRvcgAFAAClAwxUaW5kaXZfcGFsbGV0X2lkZW50aXR5GHBhbGxldBBDYWxsBARUAAF4NGFkZF9yZWdpc3RyYXIEARxhY2NvdW50AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AABx4QWRkIGEgcmVnaXN0cmFyIHRvIHRoZSBzeXN0ZW0uAPxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBgVDo6UmVnaXN0cmFyT3JpZ2luYC4AqC0gYGFjY291bnRgOiB0aGUgYWNjb3VudCBvZiB0aGUgcmVnaXN0cmFyLgCURW1pdHMgYFJlZ2lzdHJhckFkZGVkYCBpZiBzdWNjZXNzZnVsLjBzZXRfaWRlbnRpdHkEARBpbmZvqQMBbEJveDxUOjpJZGVudGl0eUluZm9ybWF0aW9uPgABKCkBU2V0IGFuIGFjY291bnQncyBpZGVudGl0eSBpbmZvcm1hdGlvbiBhbmQgcmVzZXJ2ZSB0aGUgYXBwcm9wcmlhdGUgZGVwb3NpdC4AVQFJZiB0aGUgYWNjb3VudCBhbHJlYWR5IGhhcyBpZGVudGl0eSBpbmZvcm1hdGlvbiwgdGhlIGRlcG9zaXQgaXMgdGFrZW4gYXMgcGFydCBwYXltZW50UGZvciB0aGUgbmV3IGRlcG9zaXQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AjC0gYGluZm9gOiBUaGUgaWRlbnRpdHkgaW5mb3JtYXRpb24uAIhFbWl0cyBgSWRlbnRpdHlTZXRgIGlmIHN1Y2Nlc3NmdWwuIHNldF9zdWJzBAEQc3VicyUEAWRWZWM8KFQ6OkFjY291bnRJZCwgRGF0YSk+AAIkjFNldCB0aGUgc3ViLWFjY291bnRzIG9mIHRoZSBzZW5kZXIuAFUBUGF5bWVudDogQW55IGFnZ3JlZ2F0ZSBiYWxhbmNlIHJlc2VydmVkIGJ5IHByZXZpb3VzIGBzZXRfc3Vic2AgY2FsbHMgd2lsbCBiZSByZXR1cm5lZC0BYW5kIGFuIGFtb3VudCBgU3ViQWNjb3VudERlcG9zaXRgIHdpbGwgYmUgcmVzZXJ2ZWQgZm9yIGVhY2ggaXRlbSBpbiBgc3Vic2AuAGEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIHRoZSBzZW5kZXIgbXVzdCBoYXZlIGEgcmVnaXN0ZXJlZCRpZGVudGl0eS4AsC0gYHN1YnNgOiBUaGUgaWRlbnRpdHkncyAobmV3KSBzdWItYWNjb3VudHMuOGNsZWFyX2lkZW50aXR5AAMgOQFDbGVhciBhbiBhY2NvdW50J3MgaWRlbnRpdHkgaW5mbyBhbmQgYWxsIHN1Yi1hY2NvdW50cyBhbmQgcmV0dXJuIGFsbCBkZXBvc2l0cy4A7FBheW1lbnQ6IEFsbCByZXNlcnZlZCBiYWxhbmNlcyBvbiB0aGUgYWNjb3VudCBhcmUgcmV0dXJuZWQuAGEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIHRoZSBzZW5kZXIgbXVzdCBoYXZlIGEgcmVnaXN0ZXJlZCRpZGVudGl0eS4AmEVtaXRzIGBJZGVudGl0eUNsZWFyZWRgIGlmIHN1Y2Nlc3NmdWwuRHJlcXVlc3RfanVkZ2VtZW50CAEkcmVnX2luZGV4YAE4UmVnaXN0cmFySW5kZXgAARxtYXhfZmVlwAEwQmFsYW5jZU9mPFQ+AARAlFJlcXVlc3QgYSBqdWRnZW1lbnQgZnJvbSBhIHJlZ2lzdHJhci4AVQFQYXltZW50OiBBdCBtb3N0IGBtYXhfZmVlYCB3aWxsIGJlIHJlc2VydmVkIGZvciBwYXltZW50IHRvIHRoZSByZWdpc3RyYXIgaWYganVkZ2VtZW50GGdpdmVuLgA1AVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCB0aGUgc2VuZGVyIG11c3QgaGF2ZSBhUHJlZ2lzdGVyZWQgaWRlbnRpdHkuAB0BLSBgcmVnX2luZGV4YDogVGhlIGluZGV4IG9mIHRoZSByZWdpc3RyYXIgd2hvc2UganVkZ2VtZW50IGlzIHJlcXVlc3RlZC5VAS0gYG1heF9mZWVgOiBUaGUgbWF4aW11bSBmZWUgdGhhdCBtYXkgYmUgcGFpZC4gVGhpcyBzaG91bGQganVzdCBiZSBhdXRvLXBvcHVsYXRlZCBhczoAMGBgYG5vY29tcGlsZbhTZWxmOjpyZWdpc3RyYXJzKCkuZ2V0KHJlZ19pbmRleCkudW53cmFwKCkuZmVlDGBgYACkRW1pdHMgYEp1ZGdlbWVudFJlcXVlc3RlZGAgaWYgc3VjY2Vzc2Z1bC44Y2FuY2VsX3JlcXVlc3QEASRyZWdfaW5kZXg4AThSZWdpc3RyYXJJbmRleAAFKGhDYW5jZWwgYSBwcmV2aW91cyByZXF1ZXN0LgD4UGF5bWVudDogQSBwcmV2aW91c2x5IHJlc2VydmVkIGRlcG9zaXQgaXMgcmV0dXJuZWQgb24gc3VjY2Vzcy4ANQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNlbmRlciBtdXN0IGhhdmUgYVByZWdpc3RlcmVkIGlkZW50aXR5LgBFAS0gYHJlZ19pbmRleGA6IFRoZSBpbmRleCBvZiB0aGUgcmVnaXN0cmFyIHdob3NlIGp1ZGdlbWVudCBpcyBubyBsb25nZXIgcmVxdWVzdGVkLgCsRW1pdHMgYEp1ZGdlbWVudFVucmVxdWVzdGVkYCBpZiBzdWNjZXNzZnVsLhxzZXRfZmVlCAEUaW5kZXhgAThSZWdpc3RyYXJJbmRleAABDGZlZcABMEJhbGFuY2VPZjxUPgAGHBkBU2V0IHRoZSBmZWUgcmVxdWlyZWQgZm9yIGEganVkZ2VtZW50IHRvIGJlIHJlcXVlc3RlZCBmcm9tIGEgcmVnaXN0cmFyLgBVAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCB0aGUgc2VuZGVyIG11c3QgYmUgdGhlIGFjY291bnSgb2YgdGhlIHJlZ2lzdHJhciB3aG9zZSBpbmRleCBpcyBgaW5kZXhgLgD0LSBgaW5kZXhgOiB0aGUgaW5kZXggb2YgdGhlIHJlZ2lzdHJhciB3aG9zZSBmZWUgaXMgdG8gYmUgc2V0LlQtIGBmZWVgOiB0aGUgbmV3IGZlZS44c2V0X2FjY291bnRfaWQIARRpbmRleGABOFJlZ2lzdHJhckluZGV4AAEMbmV3AAFQQWNjb3VudElkTG9va3VwT2Y8VD4ABxy8Q2hhbmdlIHRoZSBhY2NvdW50IGFzc29jaWF0ZWQgd2l0aCBhIHJlZ2lzdHJhci4AVQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZSBhY2NvdW50oG9mIHRoZSByZWdpc3RyYXIgd2hvc2UgaW5kZXggaXMgYGluZGV4YC4A9C0gYGluZGV4YDogdGhlIGluZGV4IG9mIHRoZSByZWdpc3RyYXIgd2hvc2UgZmVlIGlzIHRvIGJlIHNldC5wLSBgbmV3YDogdGhlIG5ldyBhY2NvdW50IElELihzZXRfZmllbGRzCAEUaW5kZXhgAThSZWdpc3RyYXJJbmRleAABGGZpZWxkcygBKQE8VDo6SWRlbnRpdHlJbmZvcm1hdGlvbiBhcyBJZGVudGl0eUluZm9ybWF0aW9uUHJvdmlkZXI+OjoKRmllbGRzSWRlbnRpZmllcgAIHKhTZXQgdGhlIGZpZWxkIGluZm9ybWF0aW9uIGZvciBhIHJlZ2lzdHJhci4AVQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZSBhY2NvdW50oG9mIHRoZSByZWdpc3RyYXIgd2hvc2UgaW5kZXggaXMgYGluZGV4YC4A9C0gYGluZGV4YDogdGhlIGluZGV4IG9mIHRoZSByZWdpc3RyYXIgd2hvc2UgZmVlIGlzIHRvIGJlIHNldC4NAS0gYGZpZWxkc2A6IHRoZSBmaWVsZHMgdGhhdCB0aGUgcmVnaXN0cmFyIGNvbmNlcm5zIHRoZW1zZWx2ZXMgd2l0aC5EcHJvdmlkZV9qdWRnZW1lbnQQASRyZWdfaW5kZXhgAThSZWdpc3RyYXJJbmRleAABGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkanVkZ2VtZW50LQQBXEp1ZGdlbWVudDxCYWxhbmNlT2Y8VD4+AAEgaWRlbnRpdHk8ARxUOjpIYXNoAAk8uFByb3ZpZGUgYSBqdWRnZW1lbnQgZm9yIGFuIGFjY291bnQncyBpZGVudGl0eS4AVQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZSBhY2NvdW50sG9mIHRoZSByZWdpc3RyYXIgd2hvc2UgaW5kZXggaXMgYHJlZ19pbmRleGAuACEBLSBgcmVnX2luZGV4YDogdGhlIGluZGV4IG9mIHRoZSByZWdpc3RyYXIgd2hvc2UganVkZ2VtZW50IGlzIGJlaW5nIG1hZGUuVQEtIGB0YXJnZXRgOiB0aGUgYWNjb3VudCB3aG9zZSBpZGVudGl0eSB0aGUganVkZ2VtZW50IGlzIHVwb24uIFRoaXMgbXVzdCBiZSBhbiBhY2NvdW50dCAgd2l0aCBhIHJlZ2lzdGVyZWQgaWRlbnRpdHkuSQEtIGBqdWRnZW1lbnRgOiB0aGUganVkZ2VtZW50IG9mIHRoZSByZWdpc3RyYXIgb2YgaW5kZXggYHJlZ19pbmRleGAgYWJvdXQgYHRhcmdldGAuXQEtIGBpZGVudGl0eWA6IFRoZSBoYXNoIG9mIHRoZSBbYElkZW50aXR5SW5mb3JtYXRpb25Qcm92aWRlcmBdIGZvciB0aGF0IHRoZSBqdWRnZW1lbnQgaXMsICBwcm92aWRlZC4AsE5vdGU6IEp1ZGdlbWVudHMgZG8gbm90IGFwcGx5IHRvIGEgdXNlcm5hbWUuAJRFbWl0cyBgSnVkZ2VtZW50R2l2ZW5gIGlmIHN1Y2Nlc3NmdWwuNGtpbGxfaWRlbnRpdHkEARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAKMEEBUmVtb3ZlIGFuIGFjY291bnQncyBpZGVudGl0eSBhbmQgc3ViLWFjY291bnQgaW5mb3JtYXRpb24gYW5kIHNsYXNoIHRoZSBkZXBvc2l0cy4AYQFQYXltZW50OiBSZXNlcnZlZCBiYWxhbmNlcyBmcm9tIGBzZXRfc3Vic2AgYW5kIGBzZXRfaWRlbnRpdHlgIGFyZSBzbGFzaGVkIGFuZCBoYW5kbGVkIGJ5RQFgU2xhc2hgLiBWZXJpZmljYXRpb24gcmVxdWVzdCBkZXBvc2l0cyBhcmUgbm90IHJldHVybmVkOyB0aGV5IHNob3VsZCBiZSBjYW5jZWxsZWSAbWFudWFsbHkgdXNpbmcgYGNhbmNlbF9yZXF1ZXN0YC4A+FRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IG1hdGNoIGBUOjpGb3JjZU9yaWdpbmAuAFUBLSBgdGFyZ2V0YDogdGhlIGFjY291bnQgd2hvc2UgaWRlbnRpdHkgdGhlIGp1ZGdlbWVudCBpcyB1cG9uLiBUaGlzIG11c3QgYmUgYW4gYWNjb3VudHQgIHdpdGggYSByZWdpc3RlcmVkIGlkZW50aXR5LgCURW1pdHMgYElkZW50aXR5S2lsbGVkYCBpZiBzdWNjZXNzZnVsLhxhZGRfc3ViCAEMc3ViAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARBkYXRhrQMBEERhdGEACxysQWRkIHRoZSBnaXZlbiBhY2NvdW50IHRvIHRoZSBzZW5kZXIncyBzdWJzLgBdAVBheW1lbnQ6IEJhbGFuY2UgcmVzZXJ2ZWQgYnkgYSBwcmV2aW91cyBgc2V0X3N1YnNgIGNhbGwgZm9yIG9uZSBzdWIgd2lsbCBiZSByZXBhdHJpYXRlZDh0byB0aGUgc2VuZGVyLgBhAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCB0aGUgc2VuZGVyIG11c3QgaGF2ZSBhIHJlZ2lzdGVyZWRYc3ViIGlkZW50aXR5IG9mIGBzdWJgLihyZW5hbWVfc3ViCAEMc3ViAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARBkYXRhrQMBEERhdGEADBDMQWx0ZXIgdGhlIGFzc29jaWF0ZWQgbmFtZSBvZiB0aGUgZ2l2ZW4gc3ViLWFjY291bnQuAGEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIHRoZSBzZW5kZXIgbXVzdCBoYXZlIGEgcmVnaXN0ZXJlZFhzdWIgaWRlbnRpdHkgb2YgYHN1YmAuKHJlbW92ZV9zdWIEAQxzdWIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgANHMBSZW1vdmUgdGhlIGdpdmVuIGFjY291bnQgZnJvbSB0aGUgc2VuZGVyJ3Mgc3Vicy4AXQFQYXltZW50OiBCYWxhbmNlIHJlc2VydmVkIGJ5IGEgcHJldmlvdXMgYHNldF9zdWJzYCBjYWxsIGZvciBvbmUgc3ViIHdpbGwgYmUgcmVwYXRyaWF0ZWQ4dG8gdGhlIHNlbmRlci4AYQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNlbmRlciBtdXN0IGhhdmUgYSByZWdpc3RlcmVkWHN1YiBpZGVudGl0eSBvZiBgc3ViYC4gcXVpdF9zdWIADiiMUmVtb3ZlIHRoZSBzZW5kZXIgYXMgYSBzdWItYWNjb3VudC4AXQFQYXltZW50OiBCYWxhbmNlIHJlc2VydmVkIGJ5IGEgcHJldmlvdXMgYHNldF9zdWJzYCBjYWxsIGZvciBvbmUgc3ViIHdpbGwgYmUgcmVwYXRyaWF0ZWS0dG8gdGhlIHNlbmRlciAoKm5vdCogdGhlIG9yaWdpbmFsIGRlcG9zaXRvcikuAGEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIHRoZSBzZW5kZXIgbXVzdCBoYXZlIGEgcmVnaXN0ZXJlZDxzdXBlci1pZGVudGl0eS4ARQFOT1RFOiBUaGlzIHNob3VsZCBub3Qgbm9ybWFsbHkgYmUgdXNlZCwgYnV0IGlzIHByb3ZpZGVkIGluIHRoZSBjYXNlIHRoYXQgdGhlIG5vbi0RAWNvbnRyb2xsZXIgb2YgYW4gYWNjb3VudCBpcyBtYWxpY2lvdXNseSByZWdpc3RlcmVkIGFzIGEgc3ViLWFjY291bnQuWGFkZF91c2VybmFtZV9hdXRob3JpdHkMASRhdXRob3JpdHkAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGHN1ZmZpeBgBHFZlYzx1OD4AAShhbGxvY2F0aW9uOAEMdTMyAA8UVQFBZGQgYW4gYEFjY291bnRJZGAgd2l0aCBwZXJtaXNzaW9uIHRvIGdyYW50IHVzZXJuYW1lcyB3aXRoIGEgZ2l2ZW4gYHN1ZmZpeGAgYXBwZW5kZWQuAEUBVGhlIGF1dGhvcml0eSBjYW4gZ3JhbnQgdXAgdG8gYGFsbG9jYXRpb25gIHVzZXJuYW1lcy4gVG8gdG9wIHVwIHRoZSBhbGxvY2F0aW9uIG9ySQFjaGFuZ2UgdGhlIGFjY291bnQgdXNlZCB0byBncmFudCB1c2VybmFtZXMsIHRoaXMgY2FsbCBjYW4gYmUgdXNlZCB3aXRoIHRoZSB1cGRhdGVkzHBhcmFtZXRlcnMgdG8gb3ZlcndyaXRlIHRoZSBleGlzdGluZyBjb25maWd1cmF0aW9uLmRyZW1vdmVfdXNlcm5hbWVfYXV0aG9yaXR5CAEYc3VmZml4GAEcVmVjPHU4PgABJGF1dGhvcml0eQABUEFjY291bnRJZExvb2t1cE9mPFQ+ABAExFJlbW92ZSBgYXV0aG9yaXR5YCBmcm9tIHRoZSB1c2VybmFtZSBhdXRob3JpdGllcy5Ac2V0X3VzZXJuYW1lX2ZvchABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgdXNlcm5hbWUYARxWZWM8dTg+AAEkc2lnbmF0dXJlMQQBcE9wdGlvbjxUOjpPZmZjaGFpblNpZ25hdHVyZT4AATh1c2VfYWxsb2NhdGlvbsgBEGJvb2wAETQNAVNldCB0aGUgdXNlcm5hbWUgZm9yIGB3aG9gLiBNdXN0IGJlIGNhbGxlZCBieSBhIHVzZXJuYW1lIGF1dGhvcml0eS4AWQFJZiBgdXNlX2FsbG9jYXRpb25gIGlzIHNldCwgdGhlIGF1dGhvcml0eSBtdXN0IGhhdmUgYSB1c2VybmFtZSBhbGxvY2F0aW9uIGF2YWlsYWJsZSB0b0UBc3BlbmQuIE90aGVyd2lzZSwgdGhlIGF1dGhvcml0eSB3aWxsIG5lZWQgdG8gcHV0IHVwIGEgZGVwb3NpdCBmb3IgcmVnaXN0ZXJpbmcgdGhlJHVzZXJuYW1lLgCwVXNlcnMgY2FuIGVpdGhlciBwcmUtc2lnbiB0aGVpciB1c2VybmFtZXMgb3JIYWNjZXB0IHRoZW0gbGF0ZXIuADxVc2VybmFtZXMgbXVzdDrYICAtIE9ubHkgY29udGFpbiBsb3dlcmNhc2UgQVNDSUkgY2hhcmFjdGVycyBvciBkaWdpdHMuNQEgIC0gV2hlbiBjb21iaW5lZCB3aXRoIHRoZSBzdWZmaXggb2YgdGhlIGlzc3VpbmcgYXV0aG9yaXR5IGJlIF9sZXNzIHRoYW5fIHRoZWAgICAgYE1heFVzZXJuYW1lTGVuZ3RoYC48YWNjZXB0X3VzZXJuYW1lBAEgdXNlcm5hbWVBBAEsVXNlcm5hbWU8VD4AEgxNAUFjY2VwdCBhIGdpdmVuIHVzZXJuYW1lIHRoYXQgYW4gYGF1dGhvcml0eWAgZ3JhbnRlZC4gVGhlIGNhbGwgbXVzdCBpbmNsdWRlIHRoZSBmdWxsVQF1c2VybmFtZSwgYXMgaW4gYHVzZXJuYW1lLnN1ZmZpeGAuIEF1dGhvcml0aWVzIGNhbm5vdCBncmFudCB1c2VybmFtZXMgdG8gcGVvcGxlLCBvbmx5UHRvIHJlZ3VsYXIgYWNjb3VudHMuXHJlbW92ZV9leHBpcmVkX2FwcHJvdmFsBAEgdXNlcm5hbWVBBAEsVXNlcm5hbWU8VD4AEwxhAVJlbW92ZSBhbiBleHBpcmVkIHVzZXJuYW1lIGFwcHJvdmFsLiBUaGUgdXNlcm5hbWUgd2FzIGFwcHJvdmVkIGJ5IGFuIGF1dGhvcml0eSBidXQgbmV2ZXJVAWFjY2VwdGVkIGJ5IHRoZSB1c2VyIGFuZCBtdXN0IG5vdyBiZSBiZXlvbmQgaXRzIGV4cGlyYXRpb24uIFRoZSBjYWxsIG11c3QgaW5jbHVkZSB0aGWcZnVsbCB1c2VybmFtZSwgYXMgaW4gYHVzZXJuYW1lLnN1ZmZpeGAuUHNldF9wcmltYXJ5X3VzZXJuYW1lBAEgdXNlcm5hbWVBBAEsVXNlcm5hbWU8VD4AFAxFAVNldCBhIGdpdmVuIHVzZXJuYW1lIGFzIHRoZSBwcmltYXJ5LiBUaGUgdXNlcm5hbWUgc2hvdWxkIGluY2x1ZGUgdGhlIHN1ZmZpeC4gT25seVkBcmVndWxhciBhY2NvdW50cyBjYW4gc2V0IHRoZWlyIHByaW1hcnkgdXNlcm5hbWUsIGFzIHBlb3BsZSBjYW4gb25seSBoYXZlIG9uZSB1c2VybmFtZSyQZ3JhbnRlZCB0aHJvdWdoIGEgc3lzdGVtIGFsbG9jYXRpb24uPHVuYmluZF91c2VybmFtZQQBIHVzZXJuYW1lQQQBLFVzZXJuYW1lPFQ+ABUMWQFTdGFydCB0aGUgcHJvY2VzcyBvZiByZW1vdmluZyBhIHVzZXJuYW1lIGJ5IHBsYWNpbmcgaXQgaW4gdGhlIHVuYmluZGluZyB1c2VybmFtZXMgbWFwLiEBT25jZSB0aGUgZ3JhY2UgcGVyaW9kIGhhcyBwYXNzZWQsIHRoZSB1c2VybmFtZSBjYW4gYmUgZGVsZXRlZCBieSBjYWxsaW5nwFtyZW1vdmVfdXNlcm5hbWVdKGNyYXRlOjpDYWxsOjpyZW1vdmVfdXNlcm5hbWUpLjxyZW1vdmVfdXNlcm5hbWUEASB1c2VybmFtZUEEASxVc2VybmFtZTxUPgAWCGEBUGVybWFuZW50bHkgZGVsZXRlIGEgdXNlcm5hbWUgd2hpY2ggaGFzIGJlZW4gdW5iaW5kaW5nIGZvciBsb25nZXIgdGhhbiB0aGUgZ3JhY2UgcGVyaW9kLkkBQ2FsbGVyIGlzIHJlZnVuZGVkIHRoZSBmZWUgaWYgdGhlIHVzZXJuYW1lIGV4cGlyZWQgYW5kIHRoZSByZW1vdmFsIHdhcyBzdWNjZXNzZnVsLjRraWxsX3VzZXJuYW1lBAEgdXNlcm5hbWVBBAEsVXNlcm5hbWU8VD4AFwhdAUNhbGwgd2l0aCBbRm9yY2VPcmlnaW5dKGNyYXRlOjpDb25maWc6OkZvcmNlT3JpZ2luKSBwcml2aWxlZ2VzIHdoaWNoIGRlbGV0ZXMgYSB1c2VybmFtZaxhbmQgc2xhc2hlcyBhbnkgZGVwb3NpdCBhc3NvY2lhdGVkIHdpdGggaXQuVHNldF9wZXJzb25hbF9pZGVudGl0eQwBHGFjY291bnQEATBUOjpBY2NvdW50SWQAASRzaWduYXR1cmU1BAFQVDo6T2ZmY2hhaW5TaWduYXR1cmUAASB1c2VybmFtZUEEASxVc2VybmFtZTxUPgAYLF0BU2V0cyB0aGUgdXNlcm5hbWUgYW5kIG9uLWNoYWluIGFjY291bnQgZm9yIGEgcGVyc29uLCBhbG9uZyB3aXRoIGFuIGVtcHR5IGlkZW50aXR5IHdoaWNoYQFjYW4gb25seSBiZSBwb3B1bGF0ZWQgdXNpbmcgYW4gb3JhY2xlIHRocm91Z2ggdGhlIHNvY2lhbCBjcmVkZW50aWFsIHZlcmlmaWNhdGlvbiBzeXN0ZW0unFRoZSBjaG9zZW4gdXNlcm5hbWUgbXVzdCBiZSBkb21haW5sZXNzLgBJAVRoZSBzZW5kZXIgbXVzdCBzaWduIHRoZSBhbGlhcyB1c2luZyB0aGUga2V5IGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJvdmlkZWQgb24tY2hhaW5sYWNjb3VudCB0byBwcm92ZSBvd25lcnNoaXAuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGNvbnRleHR1YWwgYWxpYXMgb2YgdGhlIHBlcnNvbiBhbmQgdGhlEQFzZW5kZXIgbXVzdCBub3QgaGF2ZSBhbHJlYWR5IHJlZ2lzdGVyZWQgdGhlaXIgaWRlbnRpdHkgYW5kIHVzZXJuYW1lLgCoRW1pdHMgYFBlcnNvbmFsSWRlbnRpdHlTZXRgIGlmIHN1Y2Nlc3NmdWwujHN1Ym1pdF9wZXJzb25hbF9jcmVkZW50aWFsX2V2aWRlbmNlBAEoY3JlZGVudGlhbEUEARhTb2NpYWwAGRgNAU9wZW4gYSBjYXNlIGZvciBhbiBvcmFjbGUgdG8ganVkZ2UgYSBzb2NpYWwgY3JlZGVudGlhbCBvZiBhIHBlcnNvbi4AUQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgY29udGV4dHVhbCBhbGlhcyBvZiB0aGUgcGVyc29uIGFuZCB0aGWcc2VuZGVyIG11c3QgaGF2ZSBhIHJlZ2lzdGVyZWQgaWRlbnRpdHkuAKBFbWl0cyBgRXZpZGVuY2VTdWJtaXR0ZWRgIGlmIHN1Y2Nlc3NmdWwuaHBlcnNvbmFsX2NyZWRlbnRpYWxfanVkZ2VkDAEYdGlja2V0OAFET3JhY2xlVGlja2V0T2Y8VD4AARxjb250ZXh0eAFASnVkZ2VtZW50Q29udGV4dAABJGp1ZGdlbWVudEkEATxPcmFjbGVKdWRnZW1lbnQAGghZAUNhbGxiYWNrIHRvIGVuZm9yY2UgdGhlIGp1ZGdlbWVudCBvZiBhIHNvY2lhbCBjcmVkZW50aWFsLiBUaGlzIGlzIHRvIGJlIGNhbGxlZCBvbmx5IGJ5gHRoZSBvcmFjbGUgdGhhdCBqdWRnZWQgdGhlIGNhc2UuXGNsZWFyX3BlcnNvbmFsX2lkZW50aXR5ABscUQFDbGVhciBhIHBlcnNvbidzIGlkZW50aXR5IGluZm8uIFRoZSBzZW5kZXIgbXVzdCBwYXkgYSBwZW5hbHR5IHRocm91Z2ggdGhlIGFzc29jaWF0ZWSgYWxpYXMgYWNjb3VudCBmb3IgcmVtb3ZpbmcgdGhlIGlkZW50aXR5LgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBjb250ZXh0dWFsIGFsaWFzIG9mIHRoZSBwZXJzb24gYW5kIHRoZZxzZW5kZXIgbXVzdCBoYXZlIGEgcmVnaXN0ZXJlZCBpZGVudGl0eS4AuEVtaXRzIGBJZGVudGl0eVBlcnNvbmFsQ2xlYXJlZGAgaWYgc3VjY2Vzc2Z1bC48cmVwb3J0X3VzZXJuYW1lBAEgdXNlcm5hbWVBBAEsVXNlcm5hbWU8VD4AHBTsUmVwb3J0IGEgdXNlcm5hbWUgYXMgaW52YWxpZC9vZmZlbnNpdmUvd3JvbmcvYW55dGhpbmcgZWxzZS4A9FRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIGEgc2lnbmVkIGV4dHJpbnNpYy4AqC0gYHVzZXJuYW1lYDogVGhlIHVzZXJuYW1lIHRvIGJlIHJlcG9ydGVkLmByZXBvcnRlZF91c2VybmFtZV9qdWRnZWQMARh0aWNrZXQ4AWBjcmF0ZTo6T3JhY2xlVGlja2V0T2Y8VD4AARxjb250ZXh0eAFASnVkZ2VtZW50Q29udGV4dAABJGp1ZGdlbWVudEkEATxPcmFjbGVKdWRnZW1lbnQAHSTkR2l2ZW4ganVkZ2VtZW50IG9uIGEgcHJldmlvdXNseSByZXBvcnRlZCB1c2VybmFtZSBlaXRoZXI6kDEuIEluIGNhc2UgdXNlcm5hbWUgd2FzIGZvdW5kIHZhbGlkOrwtIHNsYXNoZXMgdGhlIGFtb3VudCBkZXBvc2l0ZWQgYnkgdGhlIHJlcG9ydGVyLPAtIGRvZXMgbm90aGluZyB0byB0aGUgaWRlbnRpdHkgYmVoaW5kIHRoZSByZXBvcnRlZCB1c2VybmFtZSyYMi4gSW4gY2FzZSB1c2VybmFtZSB3YXMgZm91bmQgaW52YWxpZDq4LSByZXR1cm5zIHRoZSBkZXBvc2l0ZWQgZnVuZHMgdG8gdGhlIHJlcG9ydGVyLMQtIGJhbnMgdGhlIGlkZW50aXR5IGJlaGluZCB0aGUgcmVwb3J0ZWQgdXNlcm5hbWUu/FNlcnZlcyBhcyBhIGNhbGxiYWNrIHVzZWQgdXBvbiBqdWRnZW1lbnQgcmVxdWVzdCB0byB0aGUgb3JhY2xlLqhNdXN0IG9ubHkgYmUgdXNlZCBieSB0aGUgc3RhdGVtZW50IG9yYWNsZS4EcElkZW50aXR5IHBhbGxldCBkZWNsYXJhdGlvbi6pAwxkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZRhwZW9wbGUwSWRlbnRpdHlJbmZvAAAoARxkaXNwbGF5rQMBEERhdGEAARRsZWdhbK0DARBEYXRhAAEMd2VirQMBEERhdGEAARhtYXRyaXitAwEQRGF0YQABFGVtYWlsrQMBEERhdGEAATxwZ3BfZmluZ2VycHJpbnQhBAFAT3B0aW9uPFt1ODsgMjBdPgABFGltYWdlrQMBEERhdGEAARx0d2l0dGVyrQMBEERhdGEAARhnaXRodWKtAwEQRGF0YQABHGRpc2NvcmStAwEQRGF0YQAArQMMVGluZGl2X3BhbGxldF9pZGVudGl0eRR0eXBlcxBEYXRhAAGYEE5vbmUAAAAQUmF3MAQAsQMAAAEAEFJhdzEEALUDAAACABBSYXcyBAC5AwAAAwAQUmF3MwQAvQMAAAQAEFJhdzQEAHAAAAUAEFJhdzUEAMEDAAAGABBSYXc2BADFAwAABwAQUmF3NwQAyQMAAAgAEFJhdzgEAL0BAAAJABBSYXc5BADNAwAACgAUUmF3MTAEANEDAAALABRSYXcxMQQA1QMAAAwAFFJhdzEyBADZAwAADQAUUmF3MTMEAN0DAAAOABRSYXcxNAQA4QMAAA8AFFJhdzE1BADlAwAAEAAUUmF3MTYEAMEBAAARABRSYXcxNwQA6QMAABIAFFJhdzE4BADtAwAAEwAUUmF3MTkEAPEDAAAUABRSYXcyMAQAHAAAFQAUUmF3MjEEAPUDAAAWABRSYXcyMgQA+QMAABcAFFJhdzIzBAD9AwAAGAAUUmF3MjQEAAEEAAAZABRSYXcyNQQABQQAABoAFFJhdzI2BAAJBAAAGwAUUmF3MjcEAA0EAAAcABRSYXcyOAQAEQQAAB0AFFJhdzI5BAAVBAAAHgAUUmF3MzAEABkEAAAfABRSYXczMQQAHQQAACAAFFJhdzMyBAAIAAAhACxCbGFrZVR3bzI1NgQACAAAIgAYU2hhMjU2BAAIAAAjACRLZWNjYWsyNTYEAAgAACQALFNoYVRocmVlMjU2BAAIAAAlAACxAwAAAwAAAAAMALUDAAADAQAAAAwAuQMAAAMCAAAADAC9AwAAAwMAAAAMAMEDAAADBQAAAAwAxQMAAAMGAAAADADJAwAAAwcAAAAMAM0DAAADCQAAAAwA0QMAAAMKAAAADADVAwAAAwsAAAAMANkDAAADDAAAAAwA3QMAAAMNAAAADADhAwAAAw4AAAAMAOUDAAADDwAAAAwA6QMAAAMRAAAADADtAwAAAxIAAAAMAPEDAAADEwAAAAwA9QMAAAMVAAAADAD5AwAAAxYAAAAMAP0DAAADFwAAAAwAAQQAAAMYAAAADAAFBAAAAxkAAAAMAAkEAAADGgAAAAwADQQAAAMbAAAADAARBAAAAxwAAAAMABUEAAADHQAAAAwAGQQAAAMeAAAADAAdBAAAAx8AAAAMACEEBBhPcHRpb24EBFQBHAEIEE5vbmUAAAAQU29tZQQAHAAAAQAAJQQAAAIpBAApBAAABAgErQMALQQMVGluZGl2X3BhbGxldF9pZGVudGl0eRR0eXBlcyRKdWRnZW1lbnQEHEJhbGFuY2UBxAEgHFVua25vd24AAAAcRmVlUGFpZAQAxAEcQmFsYW5jZQABAChSZWFzb25hYmxlAAIAJEtub3duR29vZAADACRPdXRPZkRhdGUABAAoTG93UXVhbGl0eQAFACRFcnJvbmVvdXMABgAgRXh0ZXJuYWwABwAAMQQEGE9wdGlvbgQEVAE1BAEIEE5vbmUAAAAQU29tZQQANQQAAAEAADUECChzcF9ydW50aW1lOE11bHRpU2lnbmF0dXJlAAEQHEVkMjU1MTkEADkEAUhlZDI1NTE5OjpTaWduYXR1cmUAAAAcU3IyNTUxOQQAOQQBSHNyMjU1MTk6OlNpZ25hdHVyZQABABRFY2RzYQQAPQQBQGVjZHNhOjpTaWduYXR1cmUAAgAMRXRoBAA9BAFYZWNkc2E6OktlY2Nha1NpZ25hdHVyZQADAAA5BAAAA0AAAAAMAD0EAAADQQAAAAwAQQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AABFBBQ0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eSBpZGVudGl0eRhTb2NpYWwAAQwcVHdpdHRlcgQBIHVzZXJuYW1lQQQBEERhdGEAAAAYR2l0aHViBAEgdXNlcm5hbWVBBAEQRGF0YQABABxEaXNjb3JkBAE8ZGlzcGxheV9hbmRfdGFnQQQBEERhdGEAAgAASQQQNGluZGl2X3N1cHBvcnQYdHJhaXRzHHJlYWxpdHkkSnVkZ2VtZW50AAEIFFRydXRoBABNBAEUVHJ1dGgAAAAgQ29udGVtcHQAAQAATQQQNGluZGl2X3N1cHBvcnQYdHJhaXRzHHJlYWxpdHkUVHJ1dGgAAQgQVHJ1ZQAAABRGYWxzZQABAABRBAxMaW5kaXZfcGFsbGV0X3Blb3BsZRhwYWxsZXQQQ2FsbAQEVAABICx1bmRlcl9hbGlhcwQBEGNhbGwgAbRCb3g8PFQgYXMgZnJhbWVfc3lzdGVtOjpDb25maWc+OjpSdW50aW1lQ2FsbD4AABAVAURpc3BhdGNoIGEgY2FsbCB1bmRlciBhbiBhbGlhcyB1c2luZyB0aGUgYGFjY291bnQgPC0+IGFsaWFzYCBtYXBwaW5nLgBFAVRoaXMgaXMgYSBjYWxsIHZlcnNpb24gb2YgdGhlIHRyYW5zYWN0aW9uIGV4dGVuc2lvbiBgQXNQZXJzb25hbEFsaWFzV2l0aEFjY291bnRgLiUBSXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIHRoZSB0cmFuc2FjdGlvbiBleHRlbnNpb24gaW5zdGVhZCB3aGVuIHN1aXRhYmxlLkRzZXRfYWxpYXNfYWNjb3VudAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAATRjYWxsX3ZhbGlkX2F0OAFEQmxvY2tOdW1iZXJGb3I8VD4AASQtAVRoaXMgdHJhbnNhY3Rpb24gaXMgcmVmdW5kZWQgaWYgc3VjY2Vzc2Z1bCBhbmQgbm8gYWxpYXMgd2FzIHByZXZpb3VzbHkgc2V0LgCwVGhlIGNhbGwgaXMgdmFsaWQgZnJvbSBgY2FsbF92YWxpZF9hdGAgdW50aWy8YGNhbGxfdmFsaWRfYXQgKyBhY2NvdW50X3NldHVwX3RpbWVfdG9sZXJhbmNlYC4dAWBhY2NvdW50X3NldHVwX3RpbWVfdG9sZXJhbmNlYCBpcyBhIGNvbnN0YW50IGF2YWlsYWJsZSBpbiB0aGUgbWV0YWRhdGEuACxQYXJhbWV0ZXJzOrgtIGBhY2NvdW50YDogVGhlIGFjY291bnQgdG8gc2V0IHRoZSBhbGlhcyBmb3IuAQEtIGBjYWxsX3ZhbGlkX2F0YDogVGhlIGJsb2NrIG51bWJlciB3aGVuIHRoZSBjYWxsIGJlY29tZXMgdmFsaWQuTHVuc2V0X2FsaWFzX2FjY291bnQAAgQVAVJlbW92ZSB0aGUgbWFwcGluZyBmcm9tIGEgcGFydGljdWxhciBhbGlhcyB0byBpdHMgcmVnaXN0ZXJlZCBhY2NvdW50Lmhmb3JjZV9yZWNvZ25pemVfcGVyc29uaG9vZAQBGHBlb3BsZVUEAUBWZWM8TWVtYmVyT2Y8VD4+AAMQ4FJlY29nbml6ZSBhIHNldCBvZiBwZW9wbGUgd2l0aG91dCBhbnkgYWRkaXRpb25hbCBjaGVja3MuAFEBVGhlIHBlb3BsZSBhcmUgaWRlbnRpZmllZCBieSB0aGUgcHJvdmlkZWQgbGlzdCBvZiBrZXlzIGFuZCB3aWxsIGVhY2ggYmUgYXNzaWduZWQsIGlumG9yZGVyLCB0aGUgbmV4dCBhdmFpbGFibGUgcGVyc29uYWwgSUQuXHNldF9wZXJzb25hbF9pZF9hY2NvdW50CAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABNGNhbGxfdmFsaWRfYXQ4AURCbG9ja051bWJlckZvcjxUPgAEPGhTZXQgYSBwZXJzb25hbCBpZCBhY2NvdW50LgBNAVRoZSBhY2NvdW50IGNhbiB0aGVuIGJlIHVzZWQgdG8gc2lnbiB0cmFuc2FjdGlvbnMgb24gYmVoYWxmIG9mIHRoZSBwZXJzb25hbCBpZCwgYW5kpHByb3ZpZGUgcmVwbGF5IHByb3RlY3Rpb24gd2l0aCB0aGUgbm9uY2UuAFEBVGhpcyB0cmFuc2FjdGlvbiBpcyByZWZ1bmRlZCBpZiBzdWNjZXNzZnVsIGFuZCBubyBhY2NvdW50IHdhcyBwcmV2aW91c2x5IHNldCBmb3IgdGhlMHBlcnNvbmFsIGlkLgCwVGhlIGNhbGwgaXMgdmFsaWQgZnJvbSBgY2FsbF92YWxpZF9hdGAgdW50aWy8YGNhbGxfdmFsaWRfYXQgKyBhY2NvdW50X3NldHVwX3RpbWVfdG9sZXJhbmNlYC4dAWBhY2NvdW50X3NldHVwX3RpbWVfdG9sZXJhbmNlYCBpcyBhIGNvbnN0YW50IGF2YWlsYWJsZSBpbiB0aGUgbWV0YWRhdGEuACxQYXJhbWV0ZXJzOrgtIGBhY2NvdW50YDogVGhlIGFjY291bnQgdG8gc2V0IHRoZSBhbGlhcyBmb3IuAQEtIGBjYWxsX3ZhbGlkX2F0YDogVGhlIGJsb2NrIG51bWJlciB3aGVuIHRoZSBjYWxsIGJlY29tZXMgdmFsaWQuZHVuc2V0X3BlcnNvbmFsX2lkX2FjY291bnQABQR4VW5zZXQgdGhlIHBlcnNvbmFsIGlkIGFjY291bnQuYGNyZWF0ZV9wZW9wbGVfY29sbGVjdGlvbgAGKHRDcmVhdGUgdGhlIHBlb3BsZSBjb2xsZWN0aW9uLgApAVRoaXMgY2FsbCBpcyB2YWxpZCBvbmx5IGlmIHRoZSBjb2xsZWN0aW9uIGRvZXNuJ3QgZXhpc3QgeWV0LiBPbmNlIGNyZWF0ZWQsjHRoaXMgY2FsbCBjYW5ub3QgYmUgZXhlY3V0ZWQgYWdhaW4uANRUaGUgY29sbGVjdGlvbiBpcyBjcmVhdGVkIHdpdGggYSBmaXhlZCBjb25maWd1cmF0aW9uOrgtIE93bmVyOiBDb25maWd1cmVkIHZpYSBgQ29sbGVjdGlvbk93bmVyYCB0eXBlwC0gT25ib2FyZGluZyBzaXplOiBgUEVPUExFX09OQk9BUkRJTkdfU0laRWAgKDEwKUgtIE1vZGU6IGBGbGV4aWJsZWBMLSBSaW5nIHNpemU6IGBSMmU5YFhjbGVhbl91cF9zdGFsZV9hbGlhc2VzBAEcYWxpYXNlc1kEAdxCb3VuZGVkVmVjPENvbnRleHR1YWxBbGlhcywgQ29uc3RVMzI8TUFYX0JVTEtfQ0xFQU5VUD4+AAdQoFJlbW92ZSBzdGFsZSBhbGlhcyA8LT4gYWNjb3VudCBtYXBwaW5ncy4AYEEgbWFwcGluZyBpcyBzdGFsZSB3aGVuOi0BLSBpdHMgY29udGV4dCBoYXMgYmVlbiByZW1vdmVkIGZyb20gW2BDb25maWc6OkFjY291bnRDb250ZXh0c2BdIChnb3Zlcm5hbmNlqCAgcmVjb25maWd1cmF0aW9uLCBlbmRlZCBhaXJkcm9wIGV0Yy4pLCBvcnAtIGl0cyByaW5nIGhhcyBiZWVuIGRlbGV0ZWQuAB0BUmV2aXNpb24gbWlzbWF0Y2hlcyBkbyBub3QgcmVuZGVyIGFuIGFsaWFzIHN0YWxlLiBUaGUgdXNlciBjYW4gY29udGludWUVAXRyYW5zYWN0aW5nIHZpYSBgQXNQZXJzb25hbEFsaWFzV2l0aEFjY291bnRSZXZpc2VkYCB3aXRob3V0IGhhdmluZyB0b0xyZWRvIGFjY291bnQgc2V0dXAuAPxUeXBpY2FsbHkgc3VibWl0dGVkIGJ5IHRoZSBPQ1csIGJ1dCB0aGUgZGlzcGF0Y2ggZG9lcyBub3QgdHJ1c3SodGhlIGNhbGxlci4gRWFjaCBhbGlhcyBpcyByZS12YWxpZGF0ZWQgdmlh9FtgU2VsZjo6ZW5zdXJlX2FsaWFzX2lzX3N0YWxlYF07IHRob3NlIHRoYXQgYXJlIG5vdCBzdGFsZSBhcmUgc2tpcHBlZC4A8EF0IG1vc3QgW2BNQVhfQlVMS19DTEVBTlVQYF0gYWxpYXNlcyBhcmUgcHJvY2Vzc2VkIHBlciBjYWxsLgABAVRoZSB0cmFuc2FjdGlvbiBzb3VyY2UgbXVzdCBiZSBsb2NhbCBvciBpbi1ibG9jay4gVGh1cywgZXh0ZXJuYWx4aW52b2NhdGlvbnMgYXJlIG5vdCBwZXJtaXR0ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLlUEAAACCABZBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAUkDBFMAAAQAXQQBGFZlYzxUPgAAXQQAAAJJAwBhBAxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldBBDYWxsBARUAAFEEHZvdGUIAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4AAEcb3BpbmlvbkkEASRKdWRnZW1lbnQAAATgRmVlbGVzcyBvbiBzdWNjZXNzIChkZXRlcm1pbmVkIG9ubHkgYnkgdG9wIHRocmVlIGxpbmVzKS4oY2xvc2VfY2FzZQQBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgAAQAoY2xlYW5fdm90ZQgBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgAARR2b3RlcggBFEFsaWFzAAIMJQFPcmlnaW4gbXVzdCBiZSBgTm9uZWAuIFRoZSB0cmFuc2FjdGlvbiBpcyB2YWxpZGF0ZWQgaW4gYFZhbGlkYXRlVW5zaWduZWRgYQF3aGVuIHRoZSBzb3VyY2UgaXMgbG9jYWwgKGUuZy4gZnJvbSB0aGUgb2ZmY2hhaW4gd29ya2VyKS4gRm9yIGV4dGVybmFsIHRyYW5zYWN0aW9ucywgdXNlUGBjbGVhbl92b3RlX3NpZ25lZGAuJHJlYXBfY2FzZQQBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgAAwAkaW50ZXJ2ZW5lCAEoY2FzZV9pbmRleDgBJENhc2VJbmRleAABHHZlcmRpY3RJBAEkSnVkZ2VtZW50AAQAKGNsYWltX3ZvdGUEAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4AAUIIQFBIHBlcnNvbiBjbGFpbXMgdGhlIG1vYiBjcmVkaXQgYXNzb2NpYXRlZCB3aXRoIGEgY29ycmVjdCB2b3RlIG9uIGEgY2FzZS5gVGhlIGNhc2UgbXVzdCBiZSBgRG9uZWAuOHBheW91dF9yZXdhcmRzBAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQABgQJAUEgcGVyc29uIGNvbnZlcnRzIHRoZWlyIGNsYWltZWQgbW9iIGNyZWRpdCBpbnRvIGEgZGlyZWN0IHRyYW5zZmVyLixjbGFpbV92b3RlcwQBMGNhc2VfaW5kaWNlc2UEAThWZWM8Q2FzZUluZGV4PgAHCDUBQSBwZXJzb24gY2xhaW1zIG11bHRpcGxlIG1vYiBjcmVkaXRzIGFzc29jaWF0ZWQgYSBjb3JyZWN0IHZvdGUgb24gYSBjYXNlLiBUaGVQY2FzZSBtdXN0IGJlIGBEb25lYC5Ic3RhcnRfcGF5b3V0X3JvdW5kAAgAWHNjaGVkdWxlX3BheW91dF9yb3VuZHMMARhhbW91bnTEATBCYWxhbmNlT2Y8VD4AARRjb3VudDgBDHUzMgABGHBlcmlvZDgBREJsb2NrTnVtYmVyRm9yPFQ+AAkAWHJlbW92ZV9wYXlvdXRfc2NoZWR1bGUEARRpbmRleDgBDHUzMgAKADBjbGFpbV9jcmVkaXQACwAwY2xlYW5fcG9pbnRzCAEUcm91bmQ4AShSb3VuZEluZGV4AAEUdm90ZXIIARRBbGlhcwAMAEBmb3JjZV9yaXBlbl9jYXNlBAEoY2FzZV9pbmRleDgBJENhc2VJbmRleAANACh0b3VjaF9jYXNlBAEoY2FzZV9pbmRleDgBJENhc2VJbmRleAAOAFBjbGVhcl92b3RpbmdfcGVuYWx0eQAPAERjbGVhbl92b3RlX3NpZ25lZAgBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgAARR2b3RlcggBFEFsaWFzABAEWE9yaWdpbiBtdXN0IGJlIHNpZ25lZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuZQQAAAI4AGkEDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldBBDYWxsBARUAAFYFGFwcGx5AAAMkC0gRGVjbGFyZSBpbnRlbnRpb24gdG8gZ2V0IGEgdGF0dG9vLkwtIERlcG9zaXQgaXMgdGFrZW4uuC0gYElua1R5cGVgIG1heSBub3QgYmUgYFByb2NlZHVyYWxEZXJpdmF0aXZlYC48c3VibWl0X2V2aWRlbmNlBAEgZXZpZGVuY2UIATBFdmlkZW5jZUhhc2gAARC8LSBPcGVuIGEganVkaWNpYWwgY2FzZSB0byBqdWRnZSB0aGUgYGV2aWRlbmNlYC7ULSBDYWxscyBKdWRpY2lhbC9gSnVkZ2VTdGF0ZW1lbnQoUE9JX0hBU0gsIGV2aWRlbmNlKWBRAS0gTmVlZHMgYFNpZ25lZEV4dGVuc2lvbmAgdG8gYXZvaWQgdXBmcm9udCByZXF1aXJlbWVudCBmb3IgZmVlIGlmIGBqdWRnZW1lbnRzID09IDBgLjkBLSBJZiBganVkZ2VtZW50cyA+IDBgLCB0aGVuIGFuIGFkZGl0aW9uYWwgZmVlIHNob3VsZCBiZSBjaGFyZ2VkIGludG8gVHJlYXN1cnkuGGp1ZGdlZAwBGHRpY2tldDgBRE9yYWNsZVRpY2tldE9mPFQ+AAEcY29udGV4dHgBQEp1ZGdlbWVudENvbnRleHQAASRqdWRnZW1lbnRJBAEkSnVkZ2VtZW50AAIE6ElzIGNhbGxlZCBieSB0aGUgT3JhY2xlIHdoZW4gdGhlIGV2aWRlbmNlIGhhcyBiZWVuIGp1ZGdlZC5EcmVnaXN0ZXJfcmVmZXJyZWQMAQxrZXkIASxNZW1iZXJPZjxUPgABLGRlc3RpbmF0aW9uBAEwVDo6QWNjb3VudElkAAFIcHJvb2Zfb2Zfb3duZXJzaGlwbQQBsDxUOjpDcnlwdG8gYXMgR2VuZXJhdGVWZXJpZmlhYmxlPjo6U2lnbmF0dXJlAAMkUC0gR2V0cyBhIG5ldyBgaW5kZXhgeC0gUHV0cyBhbiBlbnRyeSBpbnRvIGBQZW9wbGVgLpgtIENhbGxzIFBlb3BsZS9gbmV3UGVyc29uKGluZGV4LCBrZXkpYAAsIyBBcmd1bWVudHOwKiBga2V5YCAtIFRoZSBwZXJzb25hbCBpZGVudGl0eSB0byByZWdpc3Rlci4hASogYGRlc3RpbmF0aW9uYCAtIFRoZSBhY2NvdW50IHJlY2VpdmluZyB0aGUgY2FuZGlkYXRlJ3MgcmVmZXJyYWwgcmV3YXJkLkkBKiBgcHJvb2Zfb2Zfb3duZXJoc2lwYCAtIFRoZSBzaWduYXR1cmUgb2YgcHJlZGVmaW5lZCBwcmVmaXggYCJwb3AgcmVnaXN0ZXIgdXNpbmciYKggIGNvbmNhdGVuYXRlZCB3aXRoIHRoZSBzZW5kZXIgYWNjb3VudCBpZC5UcmVnaXN0ZXJfbm9uX3JlZmVycmVkDAEMa2V5CAEsTWVtYmVyT2Y8VD4AASxkZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAABSHByb29mX29mX293bmVyc2hpcG0EAbA8VDo6Q3J5cHRvIGFzIEdlbmVyYXRlVmVyaWZpYWJsZT46OlNpZ25hdHVyZQAEOFAtIEdldHMgYSBuZXcgYGluZGV4YHgtIFB1dHMgYW4gZW50cnkgaW50byBgUGVvcGxlYC6YLSBDYWxscyBQZW9wbGUvYG5ld1BlcnNvbihpbmRleCwga2V5KWAALCMgQXJndW1lbnRzsCogYGtleWAgLSBUaGUgcGVyc29uYWwgaWRlbnRpdHkgdG8gcmVnaXN0ZXIuwCogYGRlc3RpbmF0aW9uYCAtIFRoZSBhY2NvdW50IHJlY2VpdmluZyByZXdhcmRzLkkBKiBgcHJvb2Zfb2Zfb3duZXJoc2lwYCAtIFRoZSBzaWduYXR1cmUgb2YgcHJlZGVmaW5lZCBwcmVmaXggYCJwb3AgcmVnaXN0ZXIgdXNpbmciYKggIGNvbmNhdGVuYXRlZCB3aXRoIHRoZSBzZW5kZXIgYWNjb3VudCBpZC4AKCMgV2FybmluZzoAOQFUaGlzIGNhbGwgY2FuIHBheSB0d28gcmV3YXJkcyB0byB0aGUgc2FtZSBhY2NvdW50IGZvciBub24tcmVmZXJyZWQgY2FuZGlkYXRlcy4pAVRoZSBhcHAgaXMgcmVzcG9uc2libGUgZm9yIGFueSBhZGRpdGlvbmFsIHByaXZhY3kgaGFuZGxpbmcgYWZ0ZXIgdHJhbnNmZXIuGHJlcm9sbAAFABhjb21taXQIARhjaG9pY2VxBAEkSW5rQ2hvaWNlAAEocmVxdWlyZV9pZBUDAUhPcHRpb248UGVyc29uYWxJZD4ABhRJAUNvbW1pdCB0byBhIGRlc2lnbiBhbmQgYXV0aG9yaXplIHRoZSBzdG9yYWdlIGZvciAocG9zc2libHkganVzdCBpbml0aWFsKSBldmlkZW5jZS4AVQFJZiBhIHNwZWNpZmljIHBlcnNvbmFsIGlkZW50aXR5IGlzIHJlcXVpcmVkLCB0aGVuIHRoaXMgY2FuIGJlIHBsYWNlZCBpbiBgcmVxdWlyZV9pZGAuQQFUaGlzIGNhbiBiZSBhbnkgdW51c2VkL3VucmVzZXJ2ZWQgcGVyc29uYWwgaWRlbnRpdHkgbm8gZ3JlYXRlciB0aGFuIHRoZSBgTmV4dElkYCBjb3VudGVyLjRhbGxvY2F0ZV9mdWxsAAcAHHRpbWVvdXQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAgMOQFPbmNlIGEgdGltZW91dCBwYXNzZXMsIHJlbW92ZXMgYSBjYW5kaWRhdGUgd2hvIGlzIHNlbGVjdGVkIGJ1dCBub3QgeWV0IHByb3Zlbi5ZAUlmIHRoZSBjYW5kaWRhdGUgd2FzIHJlZmVycmVkIHRoZW4gcmVmZXJyYWwgaXMgYmFkLCBpZiBjYW5kaWRhdGUgYXBwbGllZCB3aXRoIGRlcG9zaXQsTGRlcG9zaXQgaXMgc2xhc2hlZC4gZmxha2VvdXQACQS0UmVtb3ZlIGEgY2FuZGlkYXRlIHdobyBoYXMgbm90IHlldCBjb21taXR0ZWQuUGFwcGx5X3dpdGhfc2lnbmF0dXJlDAEgcmVmZXJyZXIoAShQZXJzb25hbElkAAEkc2lnbmF0dXJlNQQBSFQ6OlRpY2tldFNpZ25hdHVyZQABGHRpY2tldAQBJFQ6OlRpY2tldAAKEHRVdGlsaXplIGEgcmVmZXJyYWwgc2lnbmF0dXJlLgBdAVRoZSBwYXlsb2FkIHRvIGJlIHNpZ25lZCBieSB0aGUgcmVmZXJyZXIgdXNpbmcgdGhlaXIgcmVnaXN0ZXJlZCBrZXkgcGFpciBpcyB0aGUgZW5jb2RlZKRieXRlcyBvZiB0aGUgYWNjb3VudCBJRCBvZiB0aGUgY2FuZGlkYXRlLlRhcHBseV93aXRoX2ludml0YXRpb24MARxpbnZpdGVyBAEwVDo6QWNjb3VudElkAAEYdGlja2V0BAEsVGlja2V0T2Y8VD4AASRzaWduYXR1cmU1BAFIVDo6VGlja2V0U2lnbmF0dXJlABMQ1EFwcGx5IHRvIHRoZSBQcm9vZi1vZi1JbmsgcHJvY2VzcyB3aXRoIGFuIGludml0YXRpb24uAFkBVGhlIHBheWxvYWQgdG8gYmUgc2lnbmVkIGJ5IHRoZSBpbnZpdGVyIHVzaW5nIHRoZWlyIHJlZ2lzdGVyZWQga2V5IHBhaXIgaXMgdGhlIGVuY29kZWSkYnl0ZXMgb2YgdGhlIGFjY291bnQgSUQgb2YgdGhlIGNhbmRpZGF0ZS5EYWRkX2Rlc2lnbl9mYW1pbHkMARRpbmRleC0DASxGYW1pbHlJbmRleAABEGtpbmR1BAEoRmFtaWx5S2luZAABCGlkCAEgRmFtaWx5SWQACwTwQWRkIGEgZGVzaWduIGZhbWlseS4gTXVzdCBoYXZlIHByaXZpbGVnZWQgYWNjZXNzIHRvIGRvIHRoaXMuTHNldF9yZWZlcnJhbF90aWNrZXQEARh0aWNrZXQEASRUOjpUaWNrZXQADBi8QWRkIGEgcmVmZXJyYWwgdGlja2V0IGFzc29jaWF0ZWQgd2l0aCBhIHBlcnNvbi4AVQFPbmx5IG9uZSByZWZlcnJhbCB0aWNrZXQgbWF5IGJlIGFjdGl2ZSBhdCBhbnkgZ2l2ZW4gdGltZSBmb3Igb25lIHBlcnNvbi4gQ2FsbGluZyB0aGlzJQFleHRyaW5zaWMgd2hpbGUgYSB2YWxpZCB0aWNrZXQgaXMgc2V0IHdpbGwgb3ZlcndyaXRlIHRoZSBleGlzdGluZyB0aWNrZXQuADkBSWYgYW55IHBlbmRpbmcgcmVmZXJyYWwgcmV3YXJkcyBhcmUgcHJlc2VudCwgdGhleSBuZWVkIHRvIGJlIHJlZ2lzdGVyZWQgZmlyc3QuWGNhbmNlbF9yZWZlcnJhbF90aWNrZXQEARh0aWNrZXQEASRUOjpUaWNrZXQADQTIQ2FuY2VsIGEgcmVmZXJyYWwgdGlja2V0IGFzc29jaWF0ZWQgd2l0aCBhIHBlcnNvbi6McmVnaXN0ZXJfc3VjY2Vzc2Z1bF9yZWZlcnJhbF9yZXdhcmQEASxkZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAAOADRncmFudF9pbnZpdGVzCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABFGNvdW50OAEMdTMyAA8Y5EdyYW50cyBpbnZpdGVzIHRvIGFuIGFjY291bnQgc28gdGhleSBjYW4gZGlzdHJpYnV0ZSB0aGVtLgCYVGhlIG9yaWdpbiBtdXN0IGJlIGBJbnZpdGF0aW9uc09yaWdpbi4AsC0gYGFjY291bnRgOiBUaGUgYWNjb3VudCB0byBnaXZlIGludml0ZXMgdG8upC0gYGNvdW50YDogVGhlIG51bWJlciBvZiBpbnZpdGVzIHRvIGdpdmUukHJlbW92ZV9hdmFpbGFibGVfYW5kX3BlbmRpbmdfaW52aXRlcwgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARRsaW1pdDgBDHUzMgAQGJxSZW1vdmUgYWxsIGludml0ZXMgZ2l2ZW4gdG8gYW4gYWNjb3VudC4AnFRoZSBvcmlnaW4gbXVzdCBiZSBgSW52aXRhdGlvbnNPcmlnaW5gLgDQLSBgYWNjb3VudGA6IFRoZSBhY2NvdW50IHRvIHJlbW92ZSBhbGwgaW52aXRlcyBmcm9tLuwtIGBsaW1pdGA6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBwZW5kaW5nIGludml0ZXMgdG8gcmVtb3ZlLkRzZXRfaW52aXRlX3RpY2tldAQBGHRpY2tldAQBLFRpY2tldE9mPFQ+ABEUSEludml0ZSBhbiBhY2NvdW50LgANAVRoZSBvcmlnaW4gbXVzdCBiZSBzaWduZWQgYnkgYW4gYWNjb3VudCBhbmQgaGF2ZSBzb21lIGludml0ZXMgbGVmdC4AlC0gYHRpY2tldGA6IFRoZSBpbnZpdGUgdGlja2V0IHRvIHNldC5QY2FuY2VsX2ludml0ZV90aWNrZXQEARh0aWNrZXQEASxUaWNrZXRPZjxUPgASFFRDYW5jZWwgYW4gaW52aXRhdGlvbi4AIQFUaGUgb3JpZ2luIG11c3QgYmUgc2lnbmVkIGJ5IHRoZSBhY2NvdW50IHRoYXQgb3ducyB0aGUgdGlja2V0IHRvIGNhbmNlbC4AoC0gYHRpY2tldGA6IFRoZSBpbnZpdGUgdGlja2V0IHRvIGNhbmNlbC5Ec2V0X2NvbmZpZ3VyYXRpb24EARhjb25maWd5BAF8Q29uZmlnUmVjb3JkPEJsb2NrTnVtYmVyRm9yPFQ+PgAyBBUBU2V0IHRoZSBjb25maWd1cmF0aW9uIHJlY29yZC4gTXVzdCBoYXZlIHByaXZpbGVnZWQgYWNjZXNzIHRvIGRvIHRoaXMuYHNldF9yZWltYnVyc2VtZW50X3ZhbHVlcwgBPHJlZmVycmVkX3ZhbHVlc30EAehCb3VuZGVkVmVjPChCYWxhbmNlT2Y8VD4sIHUzMiksIFQ6Ok1heFJlaW1idXJzZW1lbnRWYWx1ZXM+AAE8cmVmZXJyZXJfdmFsdWVzfQQB6EJvdW5kZWRWZWM8KEJhbGFuY2VPZjxUPiwgdTMyKSwgVDo6TWF4UmVpbWJ1cnNlbWVudFZhbHVlcz4AMyhNAVNldCB0aGUgdmFsdWVzIG9mIHRoZSByZWltYnVyc2VtZW50IGF3YXJkZWQgdG8gcmVmZXJyZWQgY2FuZGlkYXRlcyBhcyB3ZWxsIGFzIHRoZWlyTQFyZWZlcnJlcnMsIGFsb25nIHdpdGggdGhlIG51bWJlciBvZiByZWltYnVyc2VtZW50cyBmb3IgZWFjaCB2YWx1ZS4gVGhlc2UgdmFsdWVzIGFyZSRzdG9yZWQgaW5RAXJldmVyc2Ugb3JkZXIgb2YgdGhlaXIgcHJpb3JpdHksIHNvIHRoZSBsYXN0IHZhbHVlIGluIHRoZSBsaXN0IHdpbGwgYmUgdGhlIGZpcnN0IG9uZUkBdG8gYmUgdXNlZCBieSB0aGUgcmVpbWJ1cnNlbWVudCBzeXN0ZW0uIFRoZSBsZW5ndGggb2YgdGhlIHR3byBsaXN0cyBtdXN0IGJlIGVxdWFsLgAgV0FSTklORyEATQFBZnRlciB0aGUgbnVtYmVyIG9mIHJlaW1idXJzZW1lbnRzIGlzIGV4aGF1c3RlZCBmb3IgYSB2YWx1ZSBpbiB0aGUgbGlzdCwgdGhlIHBhbGxldPRzdGFydHMgdXNpbmcgdGhlIG5leHQgdmFsdWUgaW1tZWRpYXRlbHkgZm9yIGZ1dHVyZSB0cmFuc2ZlcnMuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLm0EAAADYAAAAAwAcQQMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmsYcGFsbGV0JElua0Nob2ljZQABFEBEZXNpZ25lZEVsZWN0aXZlCAAtAwEsRmFtaWx5SW5kZXgAAC0DASxEZXNpZ25JbmRleAAAAERQcm9jZWR1cmFsQWNjb3VudAQALQMBLEZhbWlseUluZGV4AAEASFByb2NlZHVyYWxQZXJzb25hbAQALQMBLEZhbWlseUluZGV4AAIAKFByb2NlZHVyYWwIAC0DASxGYW1pbHlJbmRleAAADAEwVmFyaWFudEluZGV4AAMAUFByb2NlZHVyYWxEZXJpdmF0aXZlCAAoAShQZXJzb25hbElkAAAVAwFIT3B0aW9uPFBlcnNvbmFsSWQ+AAQAAHUEDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldChGYW1pbHlLaW5kAAEQIERlc2lnbmVkBAEUY291bnQtAwEsRGVzaWduSW5kZXgAAABEUHJvY2VkdXJhbEFjY291bnQAAQBIUHJvY2VkdXJhbFBlcnNvbmFsAAIAKFByb2NlZHVyYWwEARRyYW5nZQwBMFZhcmlhbnRJbmRleAADAAB5BAxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luaxhwYWxsZXQwQ29uZmlnUmVjb3JkBCxCbG9ja051bWJlcgE4ACABOHJlcm9sbF90aW1lb3V0OAEsQmxvY2tOdW1iZXIAATxmYXN0dHJhY2tfY291bnQ4AQx1MzIAARxtYXhpbXVtOAEMdTMyAAE4ZnVsbF9hbGxvY19sZW4oAQx1NjQAAUBmdWxsX2FsbG9jX2NvdW50OAEMdTMyAAE4aW5pdF9hbGxvY19sZW4oAQx1NjQAAUBpbml0X2FsbG9jX2NvdW50OAEMdTMyAAEcdGltZW91dDgBLEJsb2NrTnVtYmVyAAB9BAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAYEEBFMAAAQAhQQBGFZlYzxUPgAAgQQAAAQIxDgAhQQAAAKBBACJBAxEaW5kaXZfcGFsbGV0X2dhbWUYcGFsbGV0EENhbGwEBFQAAUhMc2lnbl91cF93aXRoX2ludml0ZQQBOGlkZW50aWZpZXJfa2V5PQQBXENvbW11bmljYXRpb25JZGVudGlmaWVyAAAg0FNpZ24gdXAgZm9yIHRoZSBnYW1lIHVzaW5nIGFuIGFjY291bnQgYW5kIGFuIGludml0ZS4AFQFUaGlzIGlzIGZvciBuZXcgcGxheWVycyBvciBhcmNoaXZlZCBwbGF5ZXJzLCBvdGhlciBwbGF5ZXJzIHNob3VsZCB1c2WoW2BQYWxsZXQ6OnNpZ25fdXBfd2l0aF9hY2NvdW50YF0gZm9yIGZyZWUuANRBIGdhbWUgbXVzdCBiZSBvbmdvaW5nIGFuZCBpbiBpdHMgcmVnaXN0cmF0aW9uIHBoYXNlLgBBAVRoZSBvcmlnaW4gbXVzdCBiZSBhIHNpZ25lZCBieSBhbiBhY2NvdW50IGFuZCB1c2UgdGhlIGBHYW1lQXNJbnZpdGVkYCBleHRlbnNpb24uUHNpZ25fdXBfd2l0aF9hY2NvdW50BAE4aWRlbnRpZmllcl9rZXk9BAFcQ29tbXVuaWNhdGlvbklkZW50aWZpZXIAASSYU2lnbiB1cCBmb3IgdGhlIGdhbWUgdXNpbmcgYW4gYWNjb3VudC4APQFJZiB0aGUgcGxheWVyIGlzIG5ldyBvciBhcmNoaXZlZCwgdGhlbiBhIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIubE90aGVyd2lzZSB0aGUgY2FsbCBpcyBmcmVlLgDUQSBnYW1lIG11c3QgYmUgb25nb2luZyBhbmQgaW4gaXRzIHJlZ2lzdHJhdGlvbiBwaGFzZS4AMQFUaGUgb3JpZ2luIG11c3QgYmUgc2lnbmVkIGJ5IGFuIGFjY291bnQsIG9yLCBiZSBzaWduZWQgYnkgYW4gYWNjb3VudCBhbmQgdXNlfGBTY29yZUFzUGFydGljaXBhbnRgIGV4dGVuc2lvbi5Ic2lnbl91cF93aXRoX2FsaWFzDAE4aWRlbnRpZmllcl9rZXk9BAFcQ29tbXVuaWNhdGlvbklkZW50aWZpZXIAAURzdGF0ZW1lbnRfYWNjb3VudAQBMFQ6OkFjY291bnRJZAABDHNpZzUEAUxUOjpBY2NvdW50U2lnbmF0dXJlAAJIVFNpZ24gdXAgZm9yIHRoZSBnYW1lLgBVAUlmIGEgcGxheWVyIGlzIGFscmVhZHkgcmVjb2duaXplZCBieSBhbm90aGVyIERJTSwgdGhleSBjYW4gc2lnbiB1c2luZyB0aGVpciBhbGlhcyBhbmQRAWRvbid0IG5lZWQgYW55IGRlcG9zaXQgb3IgaW52aXRlIHRvIHByb3ZlIHRoZWlyIGluaXRpYWwgY3JlZGliaWxpdHkuYQFPbiB0b3Agb2YgdGhpcyB0aGVpciBzY29yZSBpcyBuZXZlciBnb2luZyBiZWxvdyBwZXJzb25ob29kIHRocmVzaG9sZCBhbmQgdGhlIHBsYXllciB3aWxsTG5ldmVyIGdldCBhcmNoaXZlZC4A1EEgZ2FtZSBtdXN0IGJlIG9uZ29pbmcgYW5kIGluIGl0cyByZWdpc3RyYXRpb24gcGhhc2UuAJBUaGUgb3JpZ2luIG11c3QgYmUgYSBwZXJzb25hbCBhbGlhcy4ALFBhcmFtZXRlcnM6YQEtIGBzdGF0ZW1lbnRfYWNjb3VudGA6IHRoZSBhY2NvdW50IGlkIHRvIHVzZSB0byBpbnRlcmFjdCB3aXRoIHRoZSBzdGF0ZW1lbnQgc3RvcmUgZHVyaW5nLCAgdGhlIGdhbWUuVQEtIGBzaWdgOiB0aGUgcHJvb2Ygb2Ygb3duZXJzaGlwIG9mIHRoZSBhY2NvdW50IGBzdGF0ZW1lbnRfYWNjb3VudGAgYnkgYW4gYWxpYXMsIGl0IGlzXQEgIHRoZSBzaWduYXR1cmUgb2YgdGhlIG1lc3NhZ2UgYCJwb3A6Z2FtZTpzdG10X2FjY291bnRfZm9yX2FsaWFzOiJgIGNvbmNhdGVuYXRlZCB0byB0aGVJASAgYWxpYXMsIGFuZCB0aGVuIGhhc2hlZCB3aXRoIGBibGFrZTJfMjU2YCAoYmxha2UyIDI1NmJpdCBvdXRwdXQpLiBUaGUgYmFzZSBvZiB0aGUZASAgbWVzc2FnZSBjYW4gYmUgZm91bmQgaW4gdGhlIGNvbnN0YW50OiBgcHJvb2Zfb2Zfb3duZXJzaGlwX21zZ19iYXNlYC4YcmVwb3J0BAEsZnVsbF9yZXBvcnSNBAE0RnVsbFJlcG9ydDxUPgADLJRBZnRlciB0aGUgZ2FtZSwgc2VuZCB0aGUgZnVsbCByZXBvcnQuANBUaGUgZ2FtZSBtdXN0IGJlIG9uZ29pbmcgYW5kIGluIGl0cyByZXBvcnRpbmcgcGhhc2UuAFUBVGhlIG9yaWdpbiBtdXN0IGJlIGFuIGFsaWFzLCBvciBzaWduZWQgYnkgYW4gYWNjb3VudCwgb3Igc2lnbmVkIGJ5IGFuIGFjY291bnQgYW5kIHVzZXxgU2NvcmVBc1BhcnRpY2lwYW50YCBleHRlbnNpb24uAEkBQWZ0ZXIgdGhlIHZvdGVzIGZyb20gdGhlIHJlcG9ydCBhcmUgY291bnRlZCwgdGhlIHJlcG9ydGVyIGFuZCBlYWNoIG9mIHRoZSByZXBvcnRlZEUBcGxheWVycyB3aG9zZSBhdHRlbmRhbmNlIGNhbiBub3cgYmUgZGV0ZXJtaW5lZCBhcmUgcHJvY2Vzc2VkIGVhcmx5LiBUaGlzIGxldHMgdGhlTQFnYW1lIHNraXAgdGhlIHBsYXllci1wcm9jZXNzIHBoYXNlIGVudGlyZWx5IHdoZW4gZXZlcnkgcGxheWVyIGhhcyBiZWVuIHByb2Nlc3NlZCBieVR0aGUgZW5kIG9mIHJlcG9ydGluZy4gb2ZmYm9hcmQABByAT2ZmYm9hcmQgYSBwbGF5ZXIgZnJvbSB0aGUgZ2FtZS4AVQFUaGUgb3JpZ2luIG11c3QgYmUgYW4gYWxpYXMsIG9yIHNpZ25lZCBieSBhbiBhY2NvdW50LCBvciBzaWduZWQgYnkgYW4gYWNjb3VudCBhbmQgdXNlfGBTY29yZUFzUGFydGljaXBhbnRgIGV4dGVuc2lvbi4AXQFUaGVyZSBtdXN0IGJlIG5vIGdhbWUgb3IgdGhlIGV4aXN0aW5nIGdhbWUgbXVzdCBiZSBpbiByZWdpc3RyYXRpb24gcGhhc2UgYW5kIHRoZSBwbGF5ZXKUbXVzdCBoYXZlIG5vdCBzaWduZWQgdXAgZm9yIHRoZSBnYW1lLhxraWNrb3V0BAEYcGxheWVyBAEwVDo6QWNjb3VudElkAAUYMQFLaWNrb3V0IGEga2lja2FibGUgcGxheWVyIHRoYXQgaXMgbm90IHBsYXlpbmcgYWZ0ZXIgYE5vblBsYXlpbmdLaWNrb3V0VGltZWAuAKBUaGUgb3JpZ2luIG11c3QgYmUgc2lnbmVkIGJ5IGFuIGFjY291bnQuACEBLSBgcGxheWVyYDogVGhlIHBsYXllciB0byBraWNrb3V0LiBJdCBtdXN0IGJlIGFyY2hpdmVkIGFuZCBraWNrYWJsZSB3aXRo2CAgYGFyY2hpdmVkX3NpbmNlYCBvbGRlciB0aGFuIGBOb25QbGF5aW5nS2lja291dFRpbWVgLjRncmFudF9pbnZpdGVzCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABFGNvdW50OAEMdTMyAAYY9EdyYW50IHNvbWUgaW52aXRlcyB0byBhbiBhY2NvdW50IHNvIHRoZXkgY2FuIGRpc3RyaWJ1dGUgdGhlbS4AiFRoZSBvcmlnaW4gbXVzdCBiZSBgSW52aXRlSXNzdWVyYC4AtC0gYGFjY291bnRgOiBUaGUgYWNjb3VudCB0byBncmFudCBpbnZpdGVzIHRvLqgtIGBjb3VudGA6IFRoZSBudW1iZXIgb2YgaW52aXRlcyB0byBncmFudC6QcmVtb3ZlX2F2YWlsYWJsZV9hbmRfcGVuZGluZ19pbnZpdGVzCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABFGxpbWl0OAEMdTMyAAcYmENsZWFyIGFsbCBpbnZpdGVzIGdpdmVuIHRvIGFuIGFjY291bnQuAIhUaGUgb3JpZ2luIG11c3QgYmUgYEludml0ZUlzc3VlcmAuANAtIGBhY2NvdW50YDogVGhlIGFjY291bnQgdG8gcmVtb3ZlIGFsbCBpbnZpdGVzIGZyb20u7C0gYGxpbWl0YDogVGhlIG1heGltdW0gbnVtYmVyIG9mIHBlbmRpbmcgaW52aXRlcyB0byByZW1vdmUuRHNldF9pbnZpdGVfdGlja2V0BAEYdGlja2V0BAEsVGlja2V0T2Y8VD4ACBRISW52aXRlIGFuIGFjY291bnQuAA0BVGhlIG9yaWdpbiBtdXN0IGJlIHNpZ25lZCBieSBhbiBhY2NvdW50IGFuZCBoYXZlIHNvbWUgaW52aXRlcyBsZWZ0LgCULSBgdGlja2V0YDogVGhlIGludml0ZSB0aWNrZXQgdG8gc2V0LlBjYW5jZWxfaW52aXRlX3RpY2tldAQBGHRpY2tldAQBLFRpY2tldE9mPFQ+AAkURENhbmNlbCBhbiBpbnZpdGUuACEBVGhlIG9yaWdpbiBtdXN0IGJlIHNpZ25lZCBieSB0aGUgYWNjb3VudCB0aGF0IG93bnMgdGhlIHRpY2tldCB0byBjYW5jZWwuAKAtIGB0aWNrZXRgOiBUaGUgaW52aXRlIHRpY2tldCB0byBjYW5jZWwuOHNjaGVkdWxlX2dhbWVzBAE8Z2FtZXNfc2NoZWR1bGVzoQQBRFZlYzxHYW1lU2NoZWR1bGU+AAoI0FNjaGVkdWxlcyBuZXcgZ2FtZXMgYWNjb3JkaW5nIHRvIHByb3ZpZGVkIHNjaGVkdWxlcy5dAVNjaGVkdWxlcyBtdXN0IGJlIGluIGNocm9ub2xvZ2ljYWwgb3JkZXIsIGFuZCBhZnRlciB0aGUgb25nb2luZyBnYW1lIChpZiB0aGVyZSBpcyBhbnkpLlRyZW1vdmVfc2NoZWR1bGVkX2dhbWUEAThnYW1lX3BsYXlfdGltZTgBDHUzMgALADBjbGFpbV9yZXdhcmQEASxiZW5lZmljaWFyeQQBMFQ6OkFjY291bnRJZAAMOCUBQ2xhaW0gdGhlIHNjcmF0Y2ggY2FyZCByZXdhcmQgKGEuay5hLiAic3RhciBwcml6ZSIpIGZvciB0aGUgY3VycmVudCBnYW1lLgA1AVRoZSBjYWxsZXIgbXVzdCBiZSBhIHNpZ25lZCBhY2NvdW50IG9yIGEgcGFydGljaXBhbnQvcGVyc29uIG9yaWdpbiB3aG9zZSBnYW1lNQFpZGVudGl0eSB3YXMgZWxpZ2libGUgKGF0dGVuZGVkICsgcmVjb2duaXplZCkgZm9yIHRoZSBjdXJyZW50IHNjcmF0Y2ggcmV3YXJkLj0BVGhlIHBsYXllcidzIHNjcmF0Y2ggaGFzaCBtdXN0IGZhbGwgYmVsb3cgdGhlIHdpbm5lciB0aHJlc2hvbGQsIGFuZCBlYWNoIHBsYXllcjkBbWF5IGNsYWltIGF0IG1vc3Qgb25jZSBhY3Jvc3MgYWxsIGdhbWVzLiBFbGlnaWJsZSBwbGF5ZXJzIGNhbiBjbGFpbSBvbmx5IHVudGlsLQF0aGUgbmV4dCBnYW1lIGZpbmlzaGVzOyBvbmNlIHRoYXQgaGFwcGVucywgdGhlIHVuY2xhaW1lZCByZXdhcmQgaXMgZHJvcHBlZC4AHQFQZXItZ2FtZSBwcml6ZS1wb29sIGFpcmRyb3BzIGFyZSBjbGFpbWVkIHZpYSBbYFNlbGY6OmNsYWltX2dhbWVfcHJpemVgXQEBKHdoaWNoIGZvcndhcmRzIGludG8gdGhlIGFpcmRyb3AgcGFsbGV0KSwgbm90IHRocm91Z2ggdGhpcyBjYWxsLgAsUGFyYW1ldGVyczrsLSBgb3JpZ2luYDogYSBzaWduZWQgYWNjb3VudCwgcGFydGljaXBhbnQgb3IgcGVyc29uIG9yaWdpbi7MLSBgYmVuZWZpY2lhcnlgOiB0aGUgYWNjb3VudCB0byByZWNlaXZlIHRoZSByZXdhcmQuQGNsYWltX2dhbWVfcHJpemUUARxwb29sX2lkOAGEaW5kaXZfcGFsbGV0X2FpcmRyb3A6OlByaXplUG9vbElkAAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABIHJldmlzaW9uOAE0UmV2aXNpb25JbmRleAABFHByb29mfQMBhDxUOjpBaXJkcm9wIGFzIEFpcmRyb3BBcGk+OjpQcm9vZgABLGJlbmVmaWNpYXJ5BAEwVDo6QWNjb3VudElkAA08CQFDbGFpbSBhIHByaXplIGZyb20gdGhlIHJlY3VycmluZyBwZXItZ2FtZSBwcml6ZSBwb29sIG9wZW5lZCBieSB0aGUJAWFpcmRyb3AgcGFsbGV0IGZvciBgZ2FtZV9pZGAuIFRoZSBwb29sIGlzIGlkZW50aWZpZWQgYnkgYHBvb2xfaWRgLNR3aGljaCBtdXN0IGJlIGEgYFByaXplVGFyZ2V0OjpHYW1lUGFydGljaXBhbnRzYCBwb29sLgD8VGhlIG9yaWdpbiBtdXN0IGJlIGEgc2lnbmVkIGFjY291bnQsIGEgcGFydGljaXBhbnQgb3JpZ2luLCBvciBhEQFwZXJzb24gb3JpZ2luLiBUaGUgcmVzb2x2ZWQgW2BBY2NvdW50T3JQZXJzb25gXSBpZGVudGl0eSBtdXN0IGFwcGVhcvRpbiBbYFBsYXllckF0dGVuZGFuY2VIaXN0b3J5YF0gZm9yIHRoZSBwb29sJ3MgZ2FtZTsgb3RoZXJ3aXNlaFtgRXJyb3I6Ok5vdFBhcnRpY2lwYW50YF0uABEBYHByb29mYCBpcyBhIHJpbmctbWVtYmVyc2hpcCBwcm9vZiB0aGF0IHRoZSBjYWxsZXIgaXMgYSBsaXRlIHBlcnNvbi4NAUl0IGlzIHZlcmlmaWVkIGJ5IHRoZSBhaXJkcm9wIHBhbGxldCBhZ2FpbnN0IHRoZSBwb29sJ3MgY29udGV4dCBhbmQJAWBiZW5lZmljaWFyeWAgKHNvIGEgY2FwdHVyZWQgcHJvb2YgY2Fubm90IHJlZGlyZWN0IHRoZSBwcml6ZSkuIFRoZRkBYWxpYXMgcmVjb3ZlcmVkIGZyb20gdGhhdCB2ZXJpZmljYXRpb24gZHJpdmVzIHRoZSBwZXItcG9vbCB3aW5uZXItaGFzaBUBY2hlY2s7IHRoZSByZXBsYXkgZ3VhcmQga2V5cyBvbiB0aGUgcmVzb2x2ZWQgaWRlbnRpdHkgZnJvbSB0aGUgb3JpZ2luGQEoQWNjb3VudCBvciBQZXJzb24pLCBzbyBlYWNoIGlkZW50aXR5IGNhbiBjbGFpbSBhdCBtb3N0IG9uY2UgcGVyIHBvb2wubHRlc3RuZXRfZm9yY2Vfc3RhcnRfc2h1ZmZsZQBlDNRGb3JjZSBzdGFydCB0aGUgc2h1ZmZsZSBiZWZvcmUgaXRzIG5vcm1hbCBzdGFydCB0aW1lLgBNAVRoaXMgYWN0aW9uIGNhbiBvbmx5IGJlIHBlcmZvcm1lZCBieSB0aGUgcm9vdCBvcmlnaW4gYW5kIGlzIG9ubHkgbWVhbnQgZm9yIHRlc3RpbmcubHRlc3RuZXRfZm9yY2VfZW5kX3JlcG9ydGluZwBmDPhGb3JjZSBlbmQgYSBnYW1lJ3MgcmVwb3J0aW5nIHBoYXNlIGJlZm9yZSBpdHMgbm9ybWFsIGVuZCB0aW1lLgBNAVRoaXMgYWN0aW9uIGNhbiBvbmx5IGJlIHBlcmZvcm1lZCBieSB0aGUgcm9vdCBvcmlnaW4gYW5kIGlzIG9ubHkgbWVhbnQgZm9yIHRlc3RpbmcuXHRlc3RuZXRfc2V0X2dhbWVfcGhhc2VzBAEYcGhhc2VzqQQBTFBoYXNlRHVyYXRpb25WYWx1ZXMAZwyERm9yY2Ugc2V0IHRoZSBnYW1lIHBoYXNlIHBlcmlvZHMuAE0BVGhpcyBhY3Rpb24gY2FuIG9ubHkgYmUgcGVyZm9ybWVkIGJ5IHRoZSByb290IG9yaWdpbiBhbmQgaXMgb25seSBtZWFudCBmb3IgdGVzdGluZy5kdGVzdG5ldF9raWxsX2N1cnJlbnRfZ2FtZQBoBMxLaWxsIHRoZSBjdXJyZW50IGdhbWUuIFdoYXRldmVyIHRoZSBwaGFzZSBpdCBpcyBpbi4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMujQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGRBARTAAAEAJ0EARhWZWM8VD4AAJEEDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBlQQEUwAABACZBAEYVmVjPFQ+AACVBAxEaW5kaXZfcGFsbGV0X2dhbWUUdHlwZXMYUmVwb3J0AAEIGFBlcnNvbgAAACROb3RQZXJzb24AAQAAmQQAAAKVBACdBAAAApEEAKEEAAACpQQApQQMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzMEdhbWVTY2hlZHVsZQAADAE4Z2FtZV9wbGF5X3RpbWU4AQx1MzIAARhyb3VuZHMMAQh1OAABOG1heF9ncm91cF9zaXplOAEMdTMyAACpBAxEaW5kaXZfcGFsbGV0X2dhbWUUdHlwZXNMUGhhc2VEdXJhdGlvblZhbHVlcwAAFAEwcmVnaXN0cmF0aW9uOAEMdTMyAAEcc2h1ZmZsZTgBDHUzMgABTHBvc3Rfc2h1ZmZsZV9tYXJnaW44AQx1MzIAASRyZXBvcnRpbmc4AQx1MzIAAThwbGF5ZXJfcHJvY2VzczgBDHUzMgAArQQMSGluZGl2X3BhbGxldF9zY29yZRhwYWxsZXQQQ2FsbAQEVAABIFhzY2hlZHVsZV9wYXlvdXRfcm91bmRzDAEYYW1vdW50xAEwQmFsYW5jZU9mPFQ+AAEUY291bnQ4AQx1MzIAASBkdXJhdGlvbjgBREJsb2NrTnVtYmVyRm9yPFQ+AAEMXFNjaGVkdWxlIHBheW91dCByb3VuZHMuAJBDYWxsZWQgZnJvbSBgTWFuYWdlck9yaWdpbmAgb3Igcm9vdC5YcmVtb3ZlX3BheW91dF9zY2hlZHVsZQQBFGluZGV4OAEMdTMyAAIMgFJlbW92ZSBhIHNjaGVkdWxlZCBwYXlvdXQgcm91bmQuAJBDYWxsZWQgZnJvbSBgTWFuYWdlck9yaWdpbmAgb3Igcm9vdC5AdHJhbnNpdGlvbl9yb3VuZAQBLHJvdW5kX2luZGV4OAEMdTMyAAMYSFN0YXJ0IGEgbmV3IHJvdW5kLgBRAVRoaXMgaXMgdmFsaWQgaWYgdGhlIGN1cnJlbnQgcm91bmQgaXMgZmluaXNoZWQsIG9yIGlmIHRoZSBjdXJyZW50IHJvdW5kIGRvZXNuJ3QgaGF2ZahwbGFubmluZyBhbmQgYSBzY2hlZHVsZSBleGlzdHMgdG8gcGxhbiBpdC4AvFRoaXMgaXMgYSB0YXNrLCBhbmQgY2FuIGJlIGNhbGxlZCBmcm9tIGFueWJvZHkuUG9wZXJhdGVfcGF5b3V0X3JvdW5kCAEscm91bmRfaW5kZXg4AShSb3VuZEluZGV4AAEUbGltaXQ4AQx1MzIABDx4T3BlcmF0ZSBzb21lIHJvdW5kIHBheWluZyBvdXQuAFEBRHJhaW5zIHJvdW5kJ3MgcGFydGljaXBhbnRzLCB1cCB0byBhIGxpbWl0LiBGb3IgZWFjaCBwYXJ0aWNpcGFudCwgYWRkIHRoZSBjYWxjdWxhdGVkFQFyZXdhcmQgKGBiYXNlX3Jld2FyZCArIHJlbWFpbmRlcl9wb3J0aW9uYCkgdG8gdGhlaXIgYGNyZWRpdGAgYmFsYW5jZS4AYQFUaGVuLCBtb3ZlcyBmdW5kcyBvbiB0aGUgcG90IGFjY291bnQgZnJvbSBQYXlvdXQgdG8gQ3JlZGl0LCBzbyB0aGV5IGFyZSBvd2VkIHRvIHNwZWNpZmljoHBhcnRpY2lwYW50cyByYXRoZXIgdGhhbiB0aGUgcm91bmQgcG9vbC4ARQFGaW5hbGx5LCByZWxlYXNlIHRoZSBsZWZ0b3ZlciBmcm9tIHRoZSBQYXlvdXQgaG9sZCBiYWNrIHRvIHRoZSBwb3QncyBmcmVlIGJhbGFuY2VUKGZ1bmRzIGFyZSByZWN5Y2xlZCkuALxUaGlzIGlzIGEgdGFzaywgYW5kIGNhbiBiZSBjYWxsZWQgZnJvbSBhbnlib2R5LgDEKiByb3VuZF9pbmRleDogVGhlIGluZGV4IG9mIHRoZSByb3VuZCB0byBvcGVyYXRlLhEBKiBsaW1pdDogVGhlIG1heGltdW0gbnVtYmVyIG9mIHBhcnRpY2lwYW50cyB0byBvcGVyYXRlIGluIHRoaXMgY2FsbC4gY2FzaF9vdXQABSRZAUNhc2ggb3V0IGhhbGYgb2YgdGhlIHNjb3JlLCByb3VuZGVkIHVwLiBDb252ZXJ0cyB0aGUgc2NvcmUgaW50byBwb2ludHMgZm9yIHRoZSBjdXJyZW50JQFwYXlvdXQgcm91bmQuIENhbGxlciBtdXN0IGhhdmUgbmV2ZXIgcmVhY2hlZCBwZXJzb25ob29kIHNpbmNlIG9uYm9hcmRpbmcuALRJdCBjYW4gYmUgY2FsbGVkIG9uY2UgcGVyIGdhbWUgc2Vzc2lvbiAoZXJhKS4APQFPcmlnaW4gbXVzdCBiZSBzaWduZWQgb3IgcGFydGljaXBhbnQgKHNpZ25lZCBleHRyaW5zaWMgdXNpbmcgU2NvcmVBc1BhcnRpY2lwYW50WHRyYW5zYWN0aW9uIGV4dGVuc2lvbikAzEFsaWFzIG9yaWdpbiBpcyBub3QgYWxsb3dlZCBhcyB0aGV5IGNhbid0IGNhc2ggb3V0LjRyZWRlZW1fY3JlZGl0BAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQABhhRAVJlZGVlbSBmdWxsIGFjY3VtdWxhdGVkIGNyZWRpdCwgdHJhbnNmZXJyaW5nIGl0IHRvIHRoZSBwcm92aWRlZCBkZXN0aW5hdGlvbiBhY2NvdW50LgDkQ3JlZGl0IGlzIGNvbnZlcnRlZCBmcm9tIHBvaW50cyBkdXJpbmcgcGF5b3V0IHByb2Nlc3NpbmcuAEkBT3JpZ2luIG11c3QgYmUgYSBwZXJzb24gYWxpYXMsIGEgc2lnbmVkIGFjY291bnQgb3IgYSBwYXJ0aWNpcGFudCAoc2lnbmVkIGV4dHJpbnNpY8B1c2luZyBTY29yZUFzUGFydGljaXBhbnQgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uKS4gcmVnaXN0ZXIEAQxrZXmxBAENAU9wdGlvbjwoTWVtYmVyT2Y8VD4sPFQ6OkNyeXB0byBhcyBHZW5lcmF0ZVZlcmlmaWFibGU+OjpTaWduYXR1cmUpCj4ABzTwUmVnaXN0ZXIgYXMgYSBwZXJzb24sIG9yIHJlc3VtZSBwZXJzb25ob29kIGFmdGVyIHN1c3BlbnNpb24uACUBUmVxdWlyZXMgc2NvcmUgPj0gcGVyc29uaG9vZCB0aHJlc2hvbGQgKG9yIGhhdmluZyBwcmV2aW91c2x5IHJlYWNoZWQgaXQpLgBhAUlmIHRoZSBwYXJ0aWNpcGFudCB3YXMgcHJldmlvdXNseSByZWNvZ25pc2VkIGFuZCBpcyBub3cgc3VzcGVuZGVkLCB0aGV5IG11c3Qgbm90IHByb3ZpZGWIYSBrZXkuIFRoZSBleGlzdGluZyBrZXkgaXMgcmV1c2VkLgA9AUlmIHRoZSBwYXJ0aWNpcGFudCB3YXMgbmV2ZXIgcmVjb2duaXNlZCwgdGhleSBtdXN0IHByb3ZpZGUgYSBrZXkgYW5kIGEgcHJvb2Ygb2YZAW93bmVyc2hpcCAoYGtleWAgcGFyYW1ldGVyKTogYSBzaWduYXR1cmUgb3ZlciBgInBvcCByZWdpc3RlciB1c2luZyIgfHxMc2VuZGVyX2FjY291bnRfaWRgLgBFAU9yaWdpbiBtdXN0IGJlIHNpZ25lZCBvciBhIHBhcnRpY2lwYW50IChzaWduZWQgZXh0cmluc2ljIHVzaW5nIFNjb3JlQXNQYXJ0aWNpcGFudFx0cmFuc2FjdGlvbiBleHRlbnNpb24pLmhzZXRfYWJzZW5jZV9ncmFjZV9zY2hlZHVsZQQBIHNjaGVkdWxluQQBREFic2VuY2VHcmFjZVRpZXJzAAg4fFNldCB0aGUgYWJzZW5jZSBncmFjZSBzY2hlZHVsZS4AKQFFdmVyeSB0aWVyIG11c3Qgc2F0aXNmeTogYDAgPD0gd2luZG93IDw9IDhgIGFuZCBgYWxsb3dlZF9taXNzZXMgPCB3aW5kb3dgLhUBYGFsbG93ZWRfbWlzc2VzID0gMGAgZGlzYWJsZXMgZ3JhY2UgZW50aXJlbHkgKGFueSBhYnNlbmNlIGltbWVkaWF0ZWx5KHN1c3BlbmRzKS4AJQFUaWVycyBtdXN0IGJlIHByb3ZpZGVkIGluIGFzY2VuZGluZyBvcmRlciBvZiBgcG9wdWxhdGlvbl9zaXplX3RocmVzaG9sZGAuAPxBbiBlbXB0eSBzY2hlZHVsZSBkaXNhYmxlcyB0aGUgZ3JhY2UgcGVyaW9kIGVudGlyZWx5IChpbW1lZGlhdGUdAXN1c3BlbnNpb24gb24gYW55IG1pc3NlZCBnYW1lKS4gVGhlIG5ldyByYXRpbyB0YWtlcyBlZmZlY3QgYXQgdGhlIHN0YXJ0CQFvZiB0aGUgbmV4dCByZXBvcnQgc2Vzc2lvbiB3aGVuIGB1cGRhdGVfdGhyZXNob2xkcygpYCByZWNhbGN1bGF0ZXNQYEFic2VuY2VHcmFjZVJhdGlvYC4AkENhbGxlZCBmcm9tIGBNYW5hZ2VyT3JpZ2luYCBvciByb290LgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6xBAQYT3B0aW9uBARUAbUEAQgQTm9uZQAAABBTb21lBAC1BAAAAQAAtQQAAAQICG0EALkEDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBvQQEUwAABADBBAEYVmVjPFQ+AAC9BAxIaW5kaXZfcGFsbGV0X3Njb3JlFHR5cGVzQEFic2VuY2VHcmFjZVRpZXIAAAwBZHBvcHVsYXRpb25fc2l6ZV90aHJlc2hvbGQ4AQx1MzIAARh3aW5kb3cMAQh1OAABOGFsbG93ZWRfbWlzc2VzDAEIdTgAAMEEAAACvQQAxQQMWGluZGl2X3BhbGxldF9kdW1teV9kaW0YcGFsbGV0EENhbGwEBFQAASAscmVzZXJ2ZV9pZHMEARRjb3VudDgBDHUzMgAABIRSZXNlcnZlIGEgbnVtYmVyIG9mIHBlcnNvbmFsIElEcy5QcmVuZXdfaWRfcmVzZXJ2YXRpb24EAQhpZCgBKFBlcnNvbmFsSWQAAQS8UmVuZXcgYSBwZXJzb25hbCBJRC4gVGhlIElEIG11c3Qgbm90IGJlIGluIHVzZS5UY2FuY2VsX2lkX3Jlc2VydmF0aW9uBAEIaWQoAShQZXJzb25hbElkAAIEhENhbmNlbCBhIHBlcnNvbmFsIElEIHJlc2VydmF0aW9uLlByZWNvZ25pemVfcGVyc29uaG9vZAQBMGlkc19hbmRfa2V5c8kEAfBCb3VuZGVkVmVjPChQZXJzb25hbElkLCBNZW1iZXJPZjxUPiksIFQ6Ok1heFBlcnNvbkJhdGNoU2l6ZT4AAwQpAUdyYW50IHBlcnNvbmhvb2QgZm9yIGEgbGlzdCBvZiBjYW5kaWRhdGVzIHRoYXQgaGF2ZSByZXNlcnZlZCBwZXJzb25hbCBJRHMuSHN1c3BlbmRfcGVyc29uaG9vZAQBDGlkc9UEAbRCb3VuZGVkVmVjPFBlcnNvbmFsSWQsIFQ6Ok1heFBlcnNvbkJhdGNoU2l6ZT4ABAhdAVN1c3BlbmQgdGhlIHBlcnNvbmhvb2Qgb2YgYSBsaXN0IG9mIHJlY29nbml6ZWQgcGVvcGxlLiBUaGUgcGVvcGxlIG11c3Qgbm90IGN1cnJlbnRseSBiZShzdXNwZW5kZWQuRHJlc3VtZV9wZXJzb25ob29kBAEIaWQoAShQZXJzb25hbElkAAUEEQFSZXN1bWUgc29tZW9uZSdzIHBlcnNvbmhvb2QuIFRoZSBwZXJzb24gbXVzdCBjdXJyZW50bHkgYmUgc3VzcGVuZGVkLlhzdGFydF9tdXRhdGlvbl9zZXNzaW9uAAYIXQFTdGFydCBhIG11dGF0aW9uIHNlc3Npb24gaW4gdGhlIHVuZGVybHlpbmcgYFBlb3BsZWAgaW50ZXJmYWNlLiBUaGlzIGNhbGwgZG9lcyBub3QgY2hlY2slAXdoZXRoZXIgYSBtdXRhdGlvbiBzZXNzaW9uIGlzIGFscmVhZHkgb25nb2luZyBhbmQgY2FuIHN0YXJ0IG5ldyBzZXNzaW9ucy5QZW5kX211dGF0aW9uX3Nlc3Npb24ABxBdAUVuZCBhIG11dGF0aW9uIHNlc3Npb24gaW4gdGhlIHVuZGVybHlpbmcgYFBlb3BsZWAgaW50ZXJmYWNlLiBUaGlzIGNhbGwgY2FuIGVuZCBtdWx0aXBsZeBtdXRhdGlvbiBzZXNzaW9ucywgZXZlbiBvbmVzIG5vdCBzdGFydGVkIGJ5IHRoaXMgcGFsbGV0LgDYVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiBubyBtdXRhdGlvbiBzZXNzaW9uIGlzIG9uZ29pbmcuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLskEDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBzQQEUwAABADRBAEYVmVjPFQ+AADNBAAABAgoCADRBAAAAs0EANUEDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBKARTAAAEANkEARhWZWM8VD4AANkEAAACKADdBAxgaW5kaXZfcGFsbGV0X3Blb3BsZV9saXRlGHBhbGxldBBDYWxsBARUAAEYeGluY3JlYXNlX2F0dGVzdGF0aW9uX2FsbG93YW5jZQgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARRjb3VudDgBDHUzMgAAGCUBR3JhbnQgc29tZSBhdHRlc3RhdGlvbiBhbGxvd2FuY2UgdG8gYW4gYWNjb3VudCBzbyB0aGV5IGNhbiBhdHRlc3QgcGVvcGxlLgDEVGhlIG9yaWdpbiBtdXN0IGJlIGBBdHRlc3RhdGlvbkFsbG93YW5jZU1hbmFnZXJgLgDILSBgYWNjb3VudGA6IFRoZSBhY2NvdW50IHRvIGdyYW50IGF0dGVzdGF0aW9ucyB0by68LSBgY291bnRgOiBUaGUgbnVtYmVyIG9mIGF0dGVzdGF0aW9ucyB0byBncmFudC5sY2xlYXJfYXR0ZXN0YXRpb25fYWxsb3dhbmNlBAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABFLxDbGVhciBhbGwgYXR0ZXN0YXRpb24gYWxsb3dhbmNlIGZvciBhbiBhY2NvdW50LgDEVGhlIG9yaWdpbiBtdXN0IGJlIGBBdHRlc3RhdGlvbkFsbG93YW5jZU1hbmFnZXJgLgDkLSBgYWNjb3VudGA6IFRoZSBhY2NvdW50IHRvIHJlbW92ZSBhbGwgYXR0ZXN0YXRpb25zIGZyb20uGGF0dGVzdBQBJGNhbmRpZGF0ZQQBMFQ6OkFjY291bnRJZAABTGNhbmRpZGF0ZV9zaWduYXR1cmU1BAFcVDo6QXR0ZXN0YXRpb25TaWduYXR1cmUAATByaW5nX3ZyZl9rZXkIASxNZW1iZXJPZjxUPgABSHByb29mX29mX293bmVyc2hpcG0EAThTaWduYXR1cmVPZjxUPgABVGNvbnN1bWVyX3JlZ2lzdHJhdGlvbuEEAaxPcHRpb248TGl0ZUNvbnN1bWVyUmVnaXN0cmF0aW9uUGFyYW1zT2Y8VD4+AAKESEF0dGVzdCBhbiBhY2NvdW50LgBFAVRoZSBvcmlnaW4gbXVzdCBiZSBzaWduZWQgYnkgYW4gYWNjb3VudCBhbmQgaGF2ZSBzb21lIGF0dGVzdGF0aW9uIGFsbG93YW5jZSBsZWZ0LgDwVGhlIGF1dGhvcml0eSB3aWxsIGhhdmUgdG8gZ2V0IHR3byBzaWduYXR1cmVzIGZyb20gdGhlIHVzZXI6TQEtIG9uZSBjcmVhdGVkIHVzaW5nIHRoZWlyIGFjY291bnQga2V5IGF0dGVzdGluZyB0byB0aGUgb3duZXJzaGlwIG9mIHRoZSBgY2FuZGlkYXRlYCggIGFjY291bnQ7XQEtIG9uZSBjcmVhdGVkIHVzaW5nIHRoZWlyIHJpbmctdnJmIGtleSBhdHRlc3RpbmcgdG8gdGhlIG93bmVyc2hpcCBvZiB0aGUgYHJpbmdfdnJmX2tleWAYICBrZXkuAGEBVGhlIG1lc3NhZ2UgdG8gYmUgc2lnbmVkIGJ5IGJvdGgga2V5cyBmcm9tIHdoaWNoIHRoZSBzaWduYXR1cmVzIGFyZSBnZW5lcmF0ZWQgaXMgY3JlYXRlZFUBYnkgY29uY2F0ZW5hdGluZyB0aGUgYnl0ZXMgInBvcDpwZW9wbGUtbGl0ZTpyZWdpc3RlciB1c2luZyIgd2l0aCB0aGUgZW5jb2RlZCBieXRlcyBvZi0BdGhlIHVzZXIncyBhY2NvdW50IChgY2FuZGlkYXRlYCksIGFuZCB0aGUgZW5jb2RlZCBieXRlcyBvZiB0aGUgcmluZyBWUkYga2V5RChgcmluZ192cmZfa2V5YCkuAFhPbiBzdWNjZXNzLCB0aGlzIGNhbGw6wC0gc3RvcmVzIGxpdGUgcmVnaXN0cmF0aW9uIGRhdGEgaW4gYExpdGVQZW9wbGVgLPQtIGFkZHMgdGhlIHVzZXIncyByaW5nIFZSRiBrZXkgdG8gdGhlIGxpdGUgbWVtYmVyIGNvbGxlY3Rpb24uAC0BVGhlIGxpdGUgbWVtYmVyIGNvbGxlY3Rpb24gbXVzdCBhbHJlYWR5IGhhdmUgYmVlbiBpbml0aWFsaXplZCBieSBgb25fcG9sbGAuAPwtIGBjYW5kaWRhdGVgOiBUaGUgY2FuZGlkYXRlIHRvIGJlIHJlY29nbml6ZWQgYXMgYSBsaXRlIHBlcnNvbi5hAS0gYGNhbmRpZGF0ZV9zaWduYXR1cmVgOiBUaGUgc2lnbmF0dXJlLCBwcm92aWRlZCBieSB0aGUgY2FuZGlkYXRlLCB0byBhbGxvdyB0aGUgYXR0ZXN0ZXLcICB0byBjb21wbGV0ZSB0aGUgcmVnaXN0cmF0aW9uIHByb2Nlc3Mgb24gdGhlaXIgYmVoYWxmLiUBLSBgcmluZ192cmZfa2V5YDogVGhlIHJpbmcgVlJGIGtleSB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIGxpdGUgcGVyc29uLl0BLSBgcmluZ192cmZfa2V5X3NpZ25hdHVyZWA6IFRoZSByaW5nIFZSRiBzaWduYXR1cmUsIHByb3ZpZGVkIGJ5IHRoZSBjYW5kaWRhdGUsIHRvIGFsbG93VQEgIHRoZSBhdHRlc3RlciB0byBjb21wbGV0ZSB0aGUgcmVnaXN0cmF0aW9uIHByb2Nlc3MuIFRoaXMgYWxzbyBwcm92ZSB0aGUgb3duZXJzaGlwIG9mkCAgdGhlIHJpbmcgVlJGIGtleSBieSB0aGUgY2FuZGlkYXRlLl0BLSBjb25zdW1lcl9yZWdpc3RyYXRpb246IE9wdGlvbmFsIHBhcmFtZXRlciB3aGljaCBjYW4gY29udGFpbiB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uXQEgIHRvIGZvcndhcmQgYSBjb25zdW1lciByZWdpc3RyYXRpb24gcmVxdWVzdCB0byB0aGUgYExpdGVDb25zdW1lclJlZ2lzdHJhcmAgc2VydmljZS4gSWZRASAgcHJlc2VudCwgaXQgYWxzbyBjb250YWlucyBhIHNpZ25hdHVyZSBjcmVhdGVkIGJ5IHRoZSB1c2VyIGluIG9yZGVyIHRvIHZhbGlkYXRlIHRoZSUBICBpbnRlbnQuIE1vcmUgaW5mb3JtYXRpb24gb24gdGhlIHNpZ25pbmcgcGF5bG9hZCBnZW5lcmF0aW9uIGF2YWlsYWJsZSBpbuwgIFt0eXBlczo6TGl0ZUNvbnN1bWVyUmVnaXN0cmF0aW9uUGFyYW1zOjpzaWduaW5nX3BheWxvYWRdLkhkaXNwYXRjaF9hc19zaWduZXIEARBjYWxsIAFMQm94PFQ6OlJ1bnRpbWVDYWxsPgAFAERzZXRfYWxpYXNfYWNjb3VudAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAATh2YWxpZF9hdF9ibG9jazgBREJsb2NrTnVtYmVyRm9yPFQ+AAYQtFNldCB0aGUgYWNjb3VudCBhc3NvY2lhdGVkIHdpdGggYSBsaXRlIGFsaWFzLgC0VGhlIGNhbGwgaXMgdmFsaWQgZnJvbSBgdmFsaWRfYXRfYmxvY2tgIHVudGlsxGB2YWxpZF9hdF9ibG9jayArIGFjY291bnRfc2V0dXBfYmxvY2tfdG9sZXJhbmNlYC5MdW5zZXRfYWxpYXNfYWNjb3VudAAHAAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7hBAQYT3B0aW9uBARUAeUEAQgQTm9uZQAAABBTb21lBADlBAAAAQAA5QQMYGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZRR0eXBlc3hMaXRlQ29uc3VtZXJSZWdpc3RyYXRpb25QYXJhbXMIJEFjY291bnRJZAEEJFNpZ25hdHVyZQE1BAAUASRzaWduYXR1cmU1BAEkU2lnbmF0dXJlAAEcYWNjb3VudAQBJEFjY291bnRJZAABOGlkZW50aWZpZXJfa2V5PQQBXENvbW11bmljYXRpb25JZGVudGlmaWVyAAEgdXNlcm5hbWVBBAEgVXNlcm5hbWUAAURyZXNlcnZlZF91c2VybmFtZekEAUBPcHRpb248VXNlcm5hbWU+AADpBAQYT3B0aW9uBARUAUEEAQgQTm9uZQAAABBTb21lBABBBAAAAQAA7QQMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMYcGFsbGV0EENhbGwEBFQAATRQcmVnaXN0ZXJfbGl0ZV9wZXJzb24MAThpZGVudGlmaWVyX2tleT0EAVxDb21tdW5pY2F0aW9uSWRlbnRpZmllcgABIHVzZXJuYW1lQQQBIFVzZXJuYW1lAAFEcmVzZXJ2ZWRfdXNlcm5hbWXpBAFAT3B0aW9uPFVzZXJuYW1lPgAABJRSZWdpc3RlciBhIGxpdGUgcGVyc29uIGFzIGEgY29uc3VtZXIuPHJlZ2lzdGVyX3BlcnNvbgwBUGxpbmtlZF9saXRlX2lkZW50aXR5BAEwVDo6QWNjb3VudElkAAFMbGl0ZV9pZGVudGl0eV9wcm9vZjUEAVBUOjpPZmZjaGFpblNpZ25hdHVyZQABPHVzZXJuYW1lX2Nob2ljZfEEAVhQZXJzb25hbFVzZXJuYW1lQ2hvaWNlAAEknFJlZ2lzdGVyIGEgcHJvdmVuIHBlcnNvbiBhcyBhIGNvbnN1bWVyLgBdAVRoZSBwZXJzb24gbXVzdCBsaW5rIGEgcHJldmlvdXNseSByZWNvZ25pemVkIGxpdGUgaWRlbnRpdHksIHdoaWNoIHdpbGwgYmUgdXBncmFkZWQgdG8gYVkBZnVsbCBwZXJzb24gY29uc3VtZXIuIEluIG9yZGVyIHRvIHByb3ZlIHRoZXkgaG9sZCB0aGUgbGl0ZSBpZGVudGl0eSB0aGV5IHdhbnQgdG8gbGluayxhAXVzZXJzIG11c3QgcHJvdmlkZSBhIGBsaXRlX2lkZW50aXR5X3Byb29mYCBzaWduYXR1cmUsIGNyZWF0ZWQgYnkgc2lnbmluZyB0aGUgYWxpYXMgYnl0ZXOIdXNpbmcgdGhlaXIgbGl0ZSBjb25zdW1lciBhY2NvdW50LgA5AVRoZSBjb25zdW1lciBjYW4gY2hvb3NlIGlmIHRoZXkgd2FudCB0byBoYXZlIGEgbmV3IHVzZXJuYW1lIG9yIHVzZSBhbiBleGlzdGluZxUBcmVzZXJ2YXRpb24gbWFkZSBpbiB0aGUgbmFtZSBvZiB0aGUgbGl0ZSBjb25zdW1lciB3aG8gd2lsbCBiZSBsaW5rZWQuaHRvdWNoX3BlcnNvbl9hdXRob3JpemF0aW9uAAIQSQFVcGRhdGUgYSBwZXJzb24ncyBhdXRob3JpemF0aW9uIGJ5IGVuc3VyaW5nIHRoZXkgY2FuIHN0aWxsIGF1dGhlbnRpY2F0ZSBhcyBwZW9wbGUuAFEBVGhpcyBjYWxsIG11c3QgYmUgcGVyZm9ybWVkIGF0IGxlYXN0IGBNaW5QZXJzb25BdXRoVXBkYXRlSW50ZXJ2YWxgIHNlY29uZHMgYWZ0ZXIgdGhllGxhc3QgdXBkYXRlIGluIG9yZGVyIHRvIHByZXZlbnQgc3BhbS6McmVtb3ZlX2V4cGlyZWRfdXNlcm5hbWVfcmVzZXJ2YXRpb24IASB1c2VybmFtZUEEASBVc2VybmFtZQABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAyA5AVJlbW92ZSBhbiBleHBpcmVkIGVudHJ5IGZyb20gYSB1c2VybmFtZSByZXNlcnZhdGlvbiBxdWV1ZS4gVGhlIHRhcmdldCBlbnRyeSBpcwEBaWRlbnRpZmllZCBieSBgYWNjb3VudGAgYW5kIGNhbiBiZSBhdCBhbnkgcG9zaXRpb24gaW4gdGhlIHF1ZXVlLh0BRWFjaCBjYWxsIHJlbW92ZXMgZXhhY3RseSBvbmUgZW50cnksIHNvIGl0IG11c3QgYmUgY2FsbGVkIHJlcGVhdGVkbHkgdG+QY2xlYXIgbXVsdGlwbGUgZXhwaXJlZCByZXNlcnZhdGlvbnMuAC0BVGhpcyBpcyBhIHBlcm1pc3Npb25sZXNzIGNhbGw7IHRoZSBvcmlnaW4gbXVzdCBiZSBhdXRob3JpemVkLiBUaGUgYGFjY291bnRgMQFwYXJhbWV0ZXIgaXMgYWxzbyB1c2VkIGZvciB0cmFuc2FjdGlvbiBwb29sIGRlZHVwbGljYXRpb24sIGFsbG93aW5nIHBhcmFsbGVsEQFzdWJtaXNzaW9ucyB0aGF0IHRhcmdldCBkaWZmZXJlbnQgZXhwaXJlZCBlbnRyaWVzIGluIHRoZSBzYW1lIHF1ZXVlLlR1cGRhdGVfaWRlbnRpZmllcl9rZXkEAThpZGVudGlmaWVyX2tleT0EAVxDb21tdW5pY2F0aW9uSWRlbnRpZmllcgAEENhVcGRhdGUgdGhlIGNvbW11bmljYXRpb24gaWRlbnRpZmllciBrZXkgb2YgYSBjb25zdW1lci4AQQFUaGUgb3JpZ2luIG11c3QgYmUgdGhlIGFjY291bnQgcmVnaXN0ZXJlZCBmb3IgdGhhdCBjb25zdW1lciwgcmVnYXJkbGVzcyBvZiB0aGVpcjBjcmVkaWJpbGl0eS6Ec2V0X3VzZXJuYW1lX3Jlc2VydmF0aW9uX2R1cmF0aW9uBAEgZHVyYXRpb24oAQx1NjQABQwdAVNldCB0aGUgZHVyYXRpb24gZm9yIHdoaWNoIGEgdXNlcm5hbWUgcmVzZXJ2YXRpb24gaXMgdmFsaWQsIGluIHNlY29uZHMuAGBUaGUgb3JpZ2luIG11c3QgYmUgcm9vdC5MZGVtb3RlX2F1dGhfZXhwaXJlZAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQABwwxAURlbW90ZSBhIGZ1bGwgcGVyc29uIHRvIGEgbGl0ZSBwZXJzb24gYWZ0ZXIgdGhlaXIgYXV0aG9yaXphdGlvbiBoYXMgZXhwaXJlZC4A9FRoaXMgaXMgYSBwZXJtaXNzaW9ubGVzcyBjYWxsOyB0aGUgb3JpZ2luIG11c3QgYmUgYXV0aG9yaXplZC7Ec2V0X2ZyaWVuZF9yZXF1ZXN0X3N0YXRlbWVudF9hY2NvdW50X2Zvcl9zZXF1ZW5jZQgBJHJlZmVyZW5jZfUEAVhGcmllbmRSZXF1ZXN0UmVmZXJlbmNlAAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAIQBUBQXNzb2NpYXRlIGEgc3RhdGVtZW50IGFjY291bnQgd2l0aCBhIGZyaWVuZCByZXF1ZXN0IGNvbnRleHQgc2VxdWVuY2UuAFkBVGhlIGFzc29jaWF0ZWQgYWNjb3VudCBjYW4gc3VibWl0IHN0YXRlbWVudHMgd2hpbGUgdGhpcyBmcmllbmQgcmVxdWVzdCByZWdpc3RyYXRpb24gaXMcYWN0aXZlLjUBVGhlIG9yaWdpbiBtdXN0IGJlIGBPcmlnaW46OkZyaWVuZFJlcXVlc3RBbGlhc2AsIGNyZWF0ZWQgYnkgdGhlIGBBc1Jlc291cmNlc2BRAShgUmVnaXN0ZXJGcmllbmRSZXF1ZXN0V2l0aFByb29mKC4uKWApIHRyYW5zYWN0aW9uIGV4dGVuc2lvbiBhZnRlciBwcm9vZiB2YWxpZGF0aW9uLh0BT24gc3VjY2VzcywgaW5jcmVhc2VzIHN0YXRlbWVudCBhbGxvd2FuY2UgYW5kIHN0b3JlcyByZWdpc3RyYXRpb24gc3RhdGVoYHthY2NvdW50X2lkLCByZWZlcmVuY2V9YC4ALFBhcmFtZXRlcnM6zCogYHJlZmVyZW5jZWA6IGZyaWVuZCByZXF1ZXN0IHBlcmlvZC9zZXF1ZW5jZSBwYWlyLjEBICAtIGByZWZlcmVuY2UucGVyaW9kYCBtdXN0IGJlIGluIHRoZSBhY2NlcHRlZCBwZXJpb2Qgd2luZG93OiBgW3BlcmlvZChub3cgLbQgICAgRnJpZW5kUmVxdWVzdEdyYWNlV2luZG93KSwgcGVyaW9kKG5vdyldYC4FASAgLSBgcmVmZXJlbmNlLnNlcWAgbXVzdCBiZSBpbiBgMC4uPUZyaWVuZFJlcXVlc3RTbG90c1BlclBlcmlvZGAuTQEqIGBhY2NvdW50X2lkYDogc3RhdGVtZW50IGFjY291bnQgdG8gYXV0aG9yaXplLiBNdXN0IG5vdCBhbHJlYWR5IGJlIHVzZWQgYnkgYW5vdGhlcnggIGZyaWVuZCByZXF1ZXN0IHJlZ2lzdHJhdGlvbi6UY2xlYXJfZXhwaXJlZF9mcmllbmRfcmVxdWVzdF9zZXF1ZW5jZQgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAAQxzZXEMAQh1OAAJKDUBQ2xlYXIgYSBzdGFsZSBmcmllbmQgcmVxdWVzdCByZWdpc3RyYXRpb24gYW5kIHJldm9rZSBpdHMgc3RhdGVtZW50IGFsbG93YW5jZS4A9FRoaXMgaXMgYSBwZXJtaXNzaW9ubGVzcyBjYWxsOyB0aGUgb3JpZ2luIG11c3QgYmUgYXV0aG9yaXplZC4hAVN1Y2NlZWRzIG9ubHkgd2hlbiB0aGUgcmVnaXN0cmF0aW9uJ3MgcGVyaW9kLWRlcml2ZWQgZXhwaXJ5IGhhcyBlbGFwc2VkLmEBT24gc3VjY2VzcywgcmVtb3ZlcyBmcmllbmQgcmVxdWVzdCByZWdpc3RyYXRpb24gc3RhdGUgYW5kIGRlY3JlYXNlcyBzdGF0ZW1lbnQgYWxsb3dhbmNlLgAsUGFyYW1ldGVyczphASogYGFjY291bnRgOiBzdGF0ZW1lbnQgYWNjb3VudCBwcmV2aW91c2x5IGFzc29jaWF0ZWQgd2l0aCBhIGZyaWVuZCByZXF1ZXN0IHJlZ2lzdHJhdGlvbi5ZASogYHNlcWA6IGZyaWVuZCByZXF1ZXN0IHNlcXVlbmNlIHRvIGNsZWFyLiBNdXN0IG1hdGNoIHN0b3JlZCByZWdpc3RyYXRpb24gc2VxdWVuY2UgYW5kqCAgYmUgaW4gYDAuLj1GcmllbmRSZXF1ZXN0U2xvdHNQZXJQZXJpb2RgLmxzZXRfc3RhdGVtZW50X3N0b3JlX2FjY291bnQMARhwZXJpb2Q4AQx1MzIAAQxzZXE4AQx1MzIAATh0YXJnZXRfYWNjb3VudAQBMFQ6OkFjY291bnRJZAAKLAkBQ2xhaW0gYW4gYW5vbnltb3VzIHN0YXRlbWVudCBzdG9yZSBhbGxvd2FuY2UgZm9yIGEgdGFyZ2V0IGFjY291bnQuACkBVGhlIG9yaWdpbiBtdXN0IGJlIGBPcmlnaW46OlN0bXRTdG9yZUFsaWFzYCwgcHJvZHVjZWQgYnkgdGhlIGBBc1Jlc291cmNlc2BVAShgUmVnaXN0ZXJTdGF0ZW1lbnRTdG9yZUFsbG93YW5jZSguLilgKSB0cmFuc2FjdGlvbiBleHRlbnNpb24gYWZ0ZXIgcHJvb2YgdmFsaWRhdGlvbi5FAU9uIHN1Y2Nlc3MsIGluY3JlYXNlcyB0aGUgc3RhdGVtZW50IGFsbG93YW5jZSBmb3IgYHRhcmdldF9hY2NvdW50YCBhbmQgc3RvcmVzIHRoZZhtYXBwaW5nIGluIGBTdGF0ZW1lbnRTdG9yZUFsbG93YW5jZXNgLgAsUGFyYW1ldGVyczo9ASogYHBlcmlvZGA6IGRheSBudW1iZXIgc2luY2UgVW5peCBlcG9jaC4gTXVzdCBiZSBpbiB0aGUgYWNjZXB0ZWQgcGVyaW9kIHdpbmRvdy5FASogYHNlcWA6IHNsb3QgbnVtYmVyIHdpdGhpbiB0aGUgcGVyaW9kLCBib3VuZGVkIGJ5IHRoZSBjb2xsZWN0aW9uLXNwZWNpZmljIGxpbWl0LswqIGB0YXJnZXRfYWNjb3VudGA6IHN0YXRlbWVudCBhY2NvdW50IHRvIGF1dGhvcml6ZS6MY2xlYXJfZXhwaXJlZF9zdG10X3N0b3JlX2FsbG93YW5jZXMIARhwZXJpb2Q4AQx1MzIAASxmaXJzdF9lbnRyeQgBFEFsaWFzAAsU8FJlbW92ZSBleHBpcmVkIHN0YXRlbWVudCBzdG9yZSBhbGxvd2FuY2VzIGZvciBhIHBhc3QgcGVyaW9kLgD0VGhpcyBpcyBhIHBlcm1pc3Npb25sZXNzIGNhbGw7IHRoZSBvcmlnaW4gbXVzdCBiZSBhdXRob3JpemVkLkUBUmVtb3ZlcyB1cCB0byBgU3RtdFN0b3JlQ2xlYW51cExpbWl0YCBlbnRyaWVzIGZyb20gYFN0YXRlbWVudFN0b3JlQWxsb3dhbmNlc2AgZm9yQQF0aGUgZ2l2ZW4gYHBlcmlvZGAsIGRlY3JlYXNpbmcgdGhlIHN0YXRlbWVudCBhbGxvd2FuY2UgZm9yIGVhY2ggcmVtb3ZlZCBhY2NvdW50LlxjbGFpbV9sb25nX3Rlcm1fc3RvcmFnZQwBGHBlcmlvZDgBDHUzMgABHGNvdW50ZXIMAQh1OAABKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQADDA5AUNsYWltIGxvbmctdGVybSBzdG9yYWdlIG9uIGEgcmVtb3RlIGNoYWluIHVzaW5nIGFuIGFub255bW91cyBtZW1iZXJzaGlwIHByb29mLgBRAVRoZSBvcmlnaW4gbXVzdCBiZSBgT3JpZ2luOjpMb25nVGVybVN0b3JhZ2VDbGFpbShhbGlhcywgY29sbGVjdGlvbilgLCBjcmVhdGVkIGJ5IHRoZVUBYEFzUmVzb3VyY2VzYCAoYENsYWltTG9uZ1Rlcm1TdG9yYWdlKC4uKWApIHRyYW5zYWN0aW9uIGV4dGVuc2lvbiBhZnRlciByaW5nLVZSRiBwcm9vZix2YWxpZGF0aW9uLgAsUGFyYW1ldGVyczpJASogYHBlcmlvZGA6IHRoZSBjbGFpbWluZyBwZXJpb2QuIE11c3QgYmUgdGhlIGN1cnJlbnQgcGVyaW9kIG9yIHRoZSBwcmV2aW91cyBvbmUgaWZoICB3aXRoaW4gdGhlIGdyYWNlIHdpbmRvdy4NASogYGNvdW50ZXJgOiB0aGUgY2xhaW0gY291bnRlciB3aXRoaW4gdGhlIHBlcmlvZC4gTXVzdCBiZSBsZXNzIHRoYW4tASAgYExvbmdUZXJtU3RvcmFnZUNsYWltc1BlclBlcmlvZGAuIEVhY2ggY291bnRlciBwcm9kdWNlcyBhIGRpc3RpbmN0IGFsaWFzLiUBKiBgYWNjb3VudF9pZGA6IHRoZSBhY2NvdW50IHRvIGF1dGhvcml6ZSBmb3Igc3RvcmFnZSBvbiB0aGUgcmVtb3RlIGNoYWluLpxjbGVhcl9leHBpcmVkX2xvbmdfdGVybV9zdG9yYWdlX2FsaWFzZXMIARhwZXJpb2Q4AQx1MzIAARRsaW1pdDgBDHUzMgANIPBDbGVhciBzcGVudCBsb25nLXRlcm0gc3RvcmFnZSBhbGlhc2VzIGZvciBhbiBleHBpcmVkIHBlcmlvZC4ARQFUaGlzIGlzIGEgcGVybWlzc2lvbmxlc3MgY2FsbCBhdXRob3JpemVkIHZpYSB0aGUgYGF1dGhvcml6ZWAgYXR0cmlidXRlLiBJdCBjYW4gYmUlAWNhbGxlZCBieSBhbnlvbmUgb25jZSBhIHBlcmlvZCBoYXMgZnVsbHkgZXhwaXJlZCAocGFzdCB0aGUgZ3JhY2Ugd2luZG93KS4ALFBhcmFtZXRlcnM60CogYHBlcmlvZGA6IHRoZSBleHBpcmVkIHBlcmlvZCB0byBjbGVhciBhbGlhc2VzIGZvci4BASogYGxpbWl0YDogdGhlIG1heGltdW0gbnVtYmVyIG9mIGVudHJpZXMgdG8gcmVtb3ZlIGluIHRoaXMgY2FsbC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu8QQMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMUdHlwZXNYUGVyc29uYWxVc2VybmFtZUNob2ljZQABCChTdGFuZGFsb25lBABBBAEgVXNlcm5hbWUAAAAsUmVzZXJ2YXRpb24EAEEEASBVc2VybmFtZQABAAD1BAxYaW5kaXZfcGFsbGV0X3Jlc291cmNlcxR0eXBlc1hGcmllbmRSZXF1ZXN0UmVmZXJlbmNlAAAIARhwZXJpb2Q4AQx1MzIAAQxzZXEMAQh1OAAA+QQMbGluZGl2X3BhbGxldF9jaHVua3NfbWFuYWdlchhwYWxsZXQQQ2FsbAQEVAABCChhZGRfY2h1bmtzDAE0cmluZ19leHBvbmVudP0EATBSaW5nRXhwb25lbnQAAShwYWdlX2luZGV4OAEkUGFnZUluZGV4AAE4ZW5jb2RlZF9jaHVua3MYARxWZWM8dTg+AAAQaEFkZHMgYSBuZXcgcGFnZSBvZiBjaHVua3MuAEEBVGhlIGhhc2ggb2YgdGhlIGNodW5rcyBtdXN0IG1hdGNoIHRoZSBoYXNoIHN0b3JlZCBvbi1jaGFpbiBpbiBgQ2h1bmtQYWdlSGFzaGVzYC7cVGhlIGNhbGwgd2lsbCBmYWlsIGlmIHRoZSBwYWdlIGFscmVhZHkgZXhpc3RzIG9uLWNoYWluLlRzZXRfY2h1bmtfcGFnZV9oYXNoZXMIATRyaW5nX2V4cG9uZW50/QQBMFJpbmdFeHBvbmVudAABLHBhZ2VfaGFzaGVzVQQBSFZlYzxDaHVua1BhZ2VIYXNoPgABGA0BU2V0cyB0aGUgZXhwZWN0ZWQgaGFzaGVzIGZvciBjaHVuayBwYWdlcyBmb3IgYSBnaXZlbiByaW5nIGV4cG9uZW50LgAhAUFsbG93cyBzZXR0aW5nIHRoZSBleHBlY3RlZCBoYXNoZXMgdGhhdCBjaHVua3MgbXVzdCBtYXRjaCB3aGVuIGFkZGVkIHZpYTRgYWRkX2NodW5rc2AuAKxUaGUgb3JpZ2luIG11c3QgYmUgYE1hbmFnZXJPcmlnaW5gIG9yIHJvb3QuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLv0EEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5MFJpbmdFeHBvbmVudAABDBBSMmU5AAkAFFIyZTEwAAoAFFIyZTE0AA4AAAEFDFBpbmRpdl9wYWxsZXRfbWVtYmVycxhwYWxsZXQQQ2FsbAQEVAABNCxtZXJnZV9yaW5ncwwBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAE8YmFzZV9yaW5nX2luZGV4OAEkUmluZ0luZGV4AAFEdGFyZ2V0X3JpbmdfaW5kZXg4ASRSaW5nSW5kZXgAAAxRAU1lcmdlIHRoZSBtZW1iZXJzIGluIHR3byByaW5ncyBpbnRvIGEgc2luZ2xlLCBuZXcgcmluZy4gSW4gb3JkZXIgZm9yIHRoZSByaW5ncyB0byBiZTUBZWxpZ2libGUgZm9yIG1lcmdpbmcsIHRoZXkgbXVzdCBiZSBiZWxvdyAxLzIgb2YgbWF4IGNhcGFjaXR5LCBoYXZlIG5vIHBlbmRpbmfgc3VzcGVuc2lvbnMgYW5kIG5vdCBiZSB0aGUgdG9wIHJpbmcgdXNlZCBmb3Igb25ib2FyZGluZy5Mc2V0X29uYm9hcmRpbmdfc2l6ZQgBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAE8b25ib2FyZGluZ19zaXplOAEMdTMyAAEETQFGb3JjZSBzZXQgdGhlIG9uYm9hcmRpbmcgc2l6ZSBmb3IgYSBjb2xsZWN0aW9uLiBUaGlzIGNhbGwgcmVxdWlyZXMgcm9vdCBwcml2aWxlZ2VzLjBzZWxmX2luY2x1ZGUMAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABGG1lbWJlcggBLE1lbWJlck9mPFQ+AAE0Y2FsbF92YWxpZF9hdCgBDHU2NAACKEEBQWxsb3cgYSBtZW1iZXIgd2FpdGluZyBpbiB0aGUgb25ib2FyZGluZyBxdWV1ZSB0byBpbmNsdWRlIHRoZW1zZWx2ZXMgaW50byBhIHJpbmdNAWFmdGVyIGVub3VnaCB0aW1lIGhhcyBwYXNzZWQuIFRoaXMgYnlwYXNzZXMgdGhlIG5vcm1hbCBjb2hvcnQtYmFzZWQgb25ib2FyZGluZyBzaXplMHJlcXVpcmVtZW50LgA5AVRoaXMgY2FsbCBtdXN0IGJlIGRpc3BhdGNoZWQgd2l0aCBhIGBTZWxmSW5jbHVkZWAgb3JpZ2luLCBhdXRoZW50aWNhdGVkIGJ5IHRoZSEBYEFzTWVtYmVyYCB0cmFuc2FjdGlvbiBleHRlbnNpb24uIFRoZSByaW5ncyBtdXN0IGJlIGluIGFwcGVuZC1vbmx5IG1vZGUuAE0BVGhlIGBjYWxsX3ZhbGlkX2F0YCBwYXJhbWV0ZXIgZGljdGF0ZXMgdGhlIHRpbWUgd2luZG93IGluIHdoaWNoIHRoaXMgdHJhbnNhY3Rpb24gaXNNAXZhbGlkIGFuZCByZXByZXNlbnRzIHRoZSB0aW1lc3RhbXAgKGluIHNlY29uZHMgc2luY2UgdGhlIFVOSVggZXBvY2gpIHdoZW4gdGhpcyBjYWxsOGJlY29tZXMgdmFsaWQuVGJ1aWxkX3JpbmdfYXV0aG9yaXplZBQBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABNHJpbmdfZXhwb25lbnT9BAEwUmluZ0V4cG9uZW50AAEgcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEodG9faW5jbHVkZTgBDHUzMgBkGNhCdWlsZCBhIHJpbmcgcm9vdCBmb3IgYSBzcGVjaWZpYyByaW5nIGluIGEgY29sbGVjdGlvbi4A2FN1Ym1pdHRlZCBieSB0aGUgT0NXIHdpdGggYSBgdG9faW5jbHVkZWAgc25hcHNob3QgZnJvbSkBW2BTZWxmOjpzaG91bGRfYnVpbGRfcmluZ2BdLiBMZWZ0b3ZlcnMgZnJvbSBsYXRlciBvbmJvYXJkaW5nIGFyZSBwaWNrZWQgdXAZAW9uIHRoZSBuZXh0IE9DVyB0aWNrLCBvciBieSB0aGUgbWVtYmVyIHZpYSBbYFNlbGY6OnNlbGZfaW5jbHVkZWBdIHdoZW6AY29ob3J0IGdhdGluZyBzdGFsbHMgb25ib2FyZGluZy5ob25ib2FyZF9tZW1iZXJzX2F1dGhvcml6ZWQMAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAARBoZWFkOAEkUGFnZUluZGV4AGUMEQFPbmJvYXJkIG1lbWJlcnMgZnJvbSB0aGUgb25ib2FyZGluZyBxdWV1ZSBmb3IgYSBzcGVjaWZpYyBjb2xsZWN0aW9uLgCEU3VibWl0dGVkIGJ5IHRoZSBvZmZjaGFpbiB3b3JrZXIucG1lcmdlX3F1ZXVlX3BhZ2VzX2F1dGhvcml6ZWQMAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABMGluaXRpYWxfaGVhZDgBJFBhZ2VJbmRleAABIG5ld19oZWFkOAEkUGFnZUluZGV4AGYMDQFNZXJnZSB0aGUgdG9wIHR3byBvbmJvYXJkaW5nIHF1ZXVlIHBhZ2VzIGZvciBhIHNwZWNpZmljIGNvbGxlY3Rpb24uAIRTdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci6AcmVtb3ZlX3N1c3BlbmRlZF9rZXlzX2F1dGhvcml6ZWQIAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAZwzsUmVtb3ZlIHN1c3BlbmRlZCBrZXlzIGZyb20gYSBzcGVjaWZpYyByaW5nIGluIGEgY29sbGVjdGlvbi4AhFN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyLmxkZWxldGVfcmluZ19wYWdlX2F1dGhvcml6ZWQMAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAAShwYWdlX2luZGV4OAEkUGFnZUluZGV4AGgMyERlbGV0ZSBhIHBhZ2UgZm9yIGEgc3BlY2lmaWMgcmluZyBpbiBhIGNvbGxlY3Rpb24uAIRTdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci6AZW5xdWV1ZV9yaW5nX2RlbGV0aW9uX2F1dGhvcml6ZWQIAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAaRzsRW5xdWV1ZSBhIHJpbmcgZm9yIGRlbGV0aW9uIGFzIHBhcnQgb2YgY29sbGVjdGlvbiBkZWxldGlvbi4AIQFBcmNoaXZlcyB0aGUgcmluZyByb290LCBub3RpZmllcyBzdWJzY3JpYmVycywgcmVtb3ZlcyByaW5nIG1ldGFkYXRhLCBhbmT4ZW5xdWV1ZXMgcmluZyBwYWdlcyBpbnRvIGBSaW5nRGVsZXRpb25RdWV1ZWAgZm9yIHByb2Nlc3NpbmcgYnl4YGRlbGV0ZV9yaW5nX3BhZ2VfYXV0aG9yaXplZGAuAIRTdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci6cZGVsZXRlX29uYm9hcmRpbmdfcXVldWVfcGFnZV9hdXRob3JpemVkCAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAAShwYWdlX2luZGV4OAEkUGFnZUluZGV4AGoc/ERlbGV0ZSBhbiBvbmJvYXJkaW5nIHF1ZXVlIHBhZ2UgYXMgcGFydCBvZiBjb2xsZWN0aW9uIGRlbGV0aW9uLgAdAVJlbW92ZXMgYWxsIGBNZW1iZXJzYCBlbnRyaWVzIGZvciB0aGUgbWVtYmVycyBpbiB0aGUgcGFnZSwgdGhlbiByZW1vdmVzJQF0aGUgcGFnZSBpdHNlbGYuIENhbiBvbmx5IHByb2NlZWQgd2hlbiBhbGwgcmluZ3MgYW5kIHJpbmcgcGFnZXMgaGF2ZSBiZWVuOGZ1bGx5IGRlbGV0ZWQuAIRTdWJtaXR0ZWQgYnkgdGhlIG9mZmNoYWluIHdvcmtlci6cZmluYWxpemVfY29sbGVjdGlvbl9kZWxldGlvbl9hdXRob3JpemVkBAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAaxx0RmluYWxpemUgY29sbGVjdGlvbiBkZWxldGlvbi4AHQFSZW1vdmVzIGFsbCByZW1haW5pbmcgcGVyLWNvbGxlY3Rpb24gc3RvcmFnZSBhbmQgdGhlIG93bmVyJ3MgaWRlbnRpZmllchkBcmVmZXJlbmNlLiBDYW4gb25seSBwcm9jZWVkIHdoZW4gYWxsIHJpbmdzLCByaW5nIHBhZ2VzLCBhbmQgb25ib2FyZGluZ5BxdWV1ZSBwYWdlcyBoYXZlIGJlZW4gZnVsbHkgZGVsZXRlZC4AhFN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyLmhtYXJrX3Jpbmdfc3RhbGVfYXV0aG9yaXplZAgBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEocmluZ19pbmRleDgBJFJpbmdJbmRleABsGPBNYXJrIGEgcmluZyBhcyBzdGFsZSBzbyB0aGUgb2ZmY2hhaW4gd29ya2VyIHdpbGwgcmVidWlsZCBpdC4AHQFBbnlvbmUgY2FuIHN1Ym1pdCB0aGlzIHRyYW5zYWN0aW9uIGlmIHRoZSByaW5nIGhhcyBtZW1iZXJzIHRoYXQgYXJlIG5vdCUBeWV0IGluY2x1ZGVkIGluIHRoZSByb290IChgdG90YWwgPiBpbmNsdWRlZGApIGFuZCB0aGUgcmluZyBpcyBub3QgYWxyZWFkeSUBbWFya2VkIHN0YWxlLiBUaGlzIGlzIGEgcmVjb3ZlcnkgbWVjaGFuaXNtIGluIGNhc2UgdGhlIGBTdGFsZVJpbmdzYCBlbnRyeWx3YXMgbG9zdCBvciBuZXZlciBpbnNlcnRlZC50Y2xlYW5fdXBfb2xkX3Jvb3RzX2F1dGhvcml6ZWQMAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAARRsaW1pdDgBDHUzMgBtIIBDbGVhbiB1cCBleHBpcmVkIG9sZCByaW5nIHJvb3RzLgARAVJlbW92ZXMgdXAgdG8gYGxpbWl0YCBvbGQgcmluZyByb290cyBmb3IgdGhlIGdpdmVuIHJpbmcgaW4gdGhlIGdpdmVuLGNvbGxlY3Rpb24uANBUaGUgdHJhbnNhY3Rpb24gc291cmNlIG11c3QgYmUgYExvY2FsYCBvciBgSW5CbG9ja2AuAPRUaGlzIGlzIGEgbWFpbnRlbmFuY2UgY2FsbC4gU3VibWl0dGVkIGJ5IHRoZSBvZmZjaGFpbiB3b3JrZXIuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLgUFDFBpbmRpdl9wYWxsZXRfY29pbmFnZRhwYWxsZXQQQ2FsbAQEVAABWBRzcGxpdAQBKHNwbGl0X2ludG8JBQFpAUJvdW5kZWRWZWM8KENvaW5WYWx1ZSwgQm91bmRlZFZlYzxUOjpBY2NvdW50SWQsIFQ6Ok1heFNwbGl0T3V0cHV0cz4pLApUOjpNYXhTcGxpdE91dHB1dHMsPgAAUIRTcGxpdCBhIGNvaW4gaW50byBtdWx0aXBsZSBjb2lucy4APQFUaGUgb3JpZ2luIG11c3QgYmUgYSBbT3JpZ2luOjpDb2luXSwgd2hpY2ggY2FuIGJlIG9idGFpbmVkIGZyb20gdGhlIHRyYW5zYWN0aW9uWGV4dGVuc2lvbiBbQXNDb2luYWdlXS4A1FRoZSBjYWxsIGlzIGZyZWUgYW5kIGFnZXMgdGhlIHJlc3VsdGluZyBjb2lucyBieSBvbmUuAEkBVGhlIGBzcGxpdF9pbnRvYCBwYXJhbWV0ZXIgY29udGFpbnMgYSB2ZWN0b3Igb2YgcGFpcnMsIGVhY2ggcGFpciBjb250YWluaW5nIGEgY29pblUBdmFsdWUgYW5kIGEgbGlzdCBvZiBkZXN0aW5hdGlvbiBhY2NvdW50IGlkcy4gRm9yIGVhY2ggcGFpciwgYSBuZXcgY29pbiB3aXRoIHRoZSBnaXZlbsR2YWx1ZSBpcyBjcmVhdGVkIGZvciBlYWNoIGRlc3RpbmF0aW9uIGFjY291bnQgaWQuAFhWYWxpZGl0eSByZXF1aXJlbWVudHM6PQEoYW4gaW52YWxpZCB0cmFuc2FjdGlvbiB3b24ndCBiZSBpbmNsdWRlZCBpbiBhIGJsb2NrLCB0aGUgY29pbiBpcyBub3QgY29uc3VtZWQp4CogVGhlIGNvaW4ncyBhZ2UgbXVzdCBiZSBsZXNzIHRoYW4gW0NvbmZpZzo6TWF4aW11bUFnZV0uTQEqIFRoZSBjb2luIHZhbHVlIG11c3QgYmUgd2l0aGluIHRoZSBib3VuZHMgZGVmaW5lZCBieSBbQ29uZmlnOjpNaW5pbXVtRXhwb25lbnRdIGFuZHAgIFtDb25maWc6Ok1heGltdW1FeHBvbmVudF0uLQEqIFRoZSB0b3RhbCB2YWx1ZSBvZiB0aGUgbmV3IGNvaW5zIG11c3QgZXF1YWwgdGhlIHZhbHVlIG9mIHRoZSBvcmlnaW4gY29pbi4JASogVGhlIG51bWJlciBvZiBvdXRwdXRzIG11c3Qgbm90IGV4Y2VlZCBbQ29uZmlnOjpNYXhTcGxpdE91dHB1dHNdLiUBKiBUaGUgYWdlIG9mIHRoZSBuZXcgY29pbnMgaXMgc2V0IHRvIHRoZSBhZ2Ugb2YgdGhlIG9yaWdpbiBjb2luIHBsdXMgb25lLuAqIEVhY2ggZGVzdGluYXRpb24gYWNjb3VudCBtdXN0IG5vdCBhbHJlYWR5IGhhdmUgYSBjb2luLiB0cmFuc2ZlcgQBCHRvBAEwVDo6QWNjb3VudElkAAEsjFRyYW5zZmVyIGEgY29pbiB0byBhbm90aGVyIGFjY291bnQuAD0BVGhlIG9yaWdpbiBtdXN0IGJlIGEgW09yaWdpbjo6Q29pbl0sIHdoaWNoIGNhbiBiZSBvYnRhaW5lZCBmcm9tIHRoZSB0cmFuc2FjdGlvblhleHRlbnNpb24gW0FzQ29pbmFnZV0uANBUaGUgY2FsbCBpcyBmcmVlIGFuZCBhZ2VzIHRoZSByZXN1bHRpbmcgY29pbiBieSBvbmUuAFhWYWxpZGl0eSByZXF1aXJlbWVudHM6PQEoYW4gaW52YWxpZCB0cmFuc2FjdGlvbiB3b24ndCBiZSBpbmNsdWRlZCBpbiBhIGJsb2NrLCB0aGUgY29pbiBpcyBub3QgY29uc3VtZWQp3CogVGhlIGRlc3RpbmF0aW9uIGFjY291bnQgbXVzdCBub3QgYWxyZWFkeSBoYXZlIGEgY29pbi7gKiBUaGUgY29pbidzIGFnZSBtdXN0IGJlIGxlc3MgdGhhbiBbQ29uZmlnOjpNYXhpbXVtQWdlXS5cbG9hZF9yZWN5Y2xlcl93aXRoX2NvaW4IAShtZW1iZXJfa2V5CAEsTWVtYmVyT2Y8VD4AAUhwcm9vZl9vZl9vd25lcnNoaXBtBAE4U2lnbmF0dXJlT2Y8VD4AAkRoTG9hZCBjb2luIGludG8gYSByZWN5Y2xlci4APQFUaGUgb3JpZ2luIG11c3QgYmUgYSBbT3JpZ2luOjpDb2luXSwgd2hpY2ggY2FuIGJlIG9idGFpbmVkIGZyb20gdGhlIHRyYW5zYWN0aW9uWGV4dGVuc2lvbiBbQXNDb2luYWdlXS4ARFRoZSBjYWxsIGlzIGZyZWUuAFkBVGhlIGBtZW1iZXJfa2V5YCBwYXJhbWV0ZXIgaXMgdGhlIG1lbWJlciBrZXkgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlY3ljbGVyLCBhbmQgd2hvc2WoYWxpYXMgaXMgdXNlZCB0byB1bmxvYWQgZnJvbSB0aGUgcmVjeWNsZXIuAFhWYWxpZGl0eSByZXF1aXJlbWVudHM6PQEoYW4gaW52YWxpZCB0cmFuc2FjdGlvbiB3b24ndCBiZSBpbmNsdWRlZCBpbiBhIGJsb2NrLCB0aGUgY29pbiBpcyBub3QgY29uc3VtZWQpAQEqIFRoZSBgbWVtYmVyX2tleWAgbXVzdCBub3QgYWxyZWFkeSBiZSB1c2VkIGluIGFub3RoZXIgcmVjeWNsZXIu0CogVGhlIGBtZW1iZXJfa2V5YCBtdXN0IGJlIHZhbGlkIChpLmUuIHdlbGwgZm9ybWVkKS5RASogVGhlIGBwcm9vZl9vZl9vd25lcnNoaXBgIG11c3QgYmUgYSB2YWxpZCBzaWduYXR1cmUgb2YgdGhlIGNvaW4ncyBhY2NvdW50IGlkIGJ5IHRoZTwgIGBtZW1iZXJfa2V5YC4FASogVGhlIHJlY3ljbGVyIGNvbGxlY3Rpb24gZm9yIHRoZSBjb2luJ3MgdmFsdWUgbXVzdCBhbHJlYWR5IGV4aXN0hGxvYWRfcmVjeWNsZXJfd2l0aF9leHRlcm5hbF9hc3NldBABMHByZXNlcnZhdGlvbhkFAURDb2RlY1ByZXNlcnZhdGlvbgABFHZhbHVldQMBJENvaW5WYWx1ZQABKG1lbWJlcl9rZXkIASxNZW1iZXJPZjxUPgABSHByb29mX29mX293bmVyc2hpcG0EAThTaWduYXR1cmVPZjxUPgADcJBMb2FkIGV4dGVybmFsIGFzc2V0IGludG8gYSByZWN5Y2xlci4AjFRoZSBvcmlnaW4gbXVzdCBiZSBhIHNpZ25lZCBvcmlnaW4uAIBUaGUgdHJhbnNhY3Rpb24gZmVlIGlzIHJlZnVuZGVkLgBFAVRoZSBgcHJlc2VydmF0aW9uYCBwYXJhbWV0ZXIgaW5kaWNhdGVzIGhvdyB0aGUgYXNzZXQgdHJhbnNmZXIgc2hvdWxkIHByZXNlcnZlIHRoZURzaWduZXIncyBhY2NvdW50LgA5AVRoZSBgdmFsdWVgIHBhcmFtZXRlciBpbmRpY2F0ZXMgdGhlIGNvaW4gdmFsdWUgdG8gYmUgbG9hZGVkIGludG8gdGhlIHJlY3ljbGVyLj0BVGhlIGVxdWl2YWxlbnQgYW1vdW50IG9mIHRoZSB1bmRlcmx5aW5nIGFzc2V0IGlzIHRyYW5zZmVycmVkIGZyb20gdGhlIHNpZ25lciB0b0x0aGUgcGFsbGV0IGFjY291bnQuAFkBVGhlIGBtZW1iZXJfa2V5YCBwYXJhbWV0ZXIgaXMgdGhlIG1lbWJlciBrZXkgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJlY3ljbGVyLCBhbmQgd2hvc2WoYWxpYXMgaXMgdXNlZCB0byB1bmxvYWQgZnJvbSB0aGUgcmVjeWNsZXIuAFUBVGhlIGBwcm9vZl9vZl9vd25lcnNoaXBgIHBhcmFtZXRlciBpcyB0aGUgc2lnbmF0dXJlIG9mIHRoZSBzaWduZXIncyBhY2NvdW50IGlkIGJ5IHRoZTRgbWVtYmVyX2tleWAuADRSZXF1aXJlbWVudHM6AQEqIFRoZSBgbWVtYmVyX2tleWAgbXVzdCBub3QgYWxyZWFkeSBiZSB1c2VkIGluIGFub3RoZXIgcmVjeWNsZXIu0CogVGhlIGBtZW1iZXJfa2V5YCBtdXN0IGJlIHZhbGlkIChpLmUuIHdlbGwgZm9ybWVkKS5BASogVGhlIGB2YWx1ZWAgbXVzdCBiZSB3aXRoaW4gdGhlIGJvdW5kcyBkZWZpbmVkIGJ5IFtDb25maWc6Ok1pbmltdW1FeHBvbmVudF0gYW5kcCAgW0NvbmZpZzo6TWF4aW11bUV4cG9uZW50XS5VASogVGhlIHNpZ25lciBtdXN0IGhhdmUgZW5vdWdoIGJhbGFuY2Ugb2YgdGhlIHVuZGVybHlpbmcgYXNzZXQgdG8gY292ZXIgdGhlIGVxdWl2YWxlbnSIICBhbW91bnQgZm9yIHRoZSBnaXZlbiBjb2luIHZhbHVlLlkBKiBUaGUgYHByb29mX29mX293bmVyc2hpcGAgbXVzdCBiZSBhIHZhbGlkIHNpZ25hdHVyZSBvZiB0aGUgc2lnbmVyJ3MgYWNjb3VudCBpZCBieSB0aGU0YG1lbWJlcl9rZXlgLqBsb2FkX3JlY3ljbGVyX3dpdGhfZXh0ZXJuYWxfYXNzZXRfdW5wYWlkEAEwcHJlc2VydmF0aW9uGQUBRENvZGVjUHJlc2VydmF0aW9uAAEUdmFsdWV1AwEkQ29pblZhbHVlAAEobWVtYmVyX2tleQgBLE1lbWJlck9mPFQ+AAFIcHJvb2Zfb2Zfb3duZXJzaGlwbQQBOFNpZ25hdHVyZU9mPFQ+AA9ELQFMb2FkIGV4dGVybmFsIGFzc2V0IGludG8gYSByZWN5Y2xlciAoaW5mYWxsaWJsZSwgdmFsaWRhdGVkIHVucGFpZCB2YXJpYW50KS4ATQFUaGUgb3JpZ2luIG11c3QgYmUgW09yaWdpbjo6SW5mYWxsaWJsZVVucGFpZFNpZ25lZF0sIHdoaWNoIGNhbiBiZSBvYnRhaW5lZCBmcm9tIHRoZQkBdHJhbnNhY3Rpb24gZXh0ZW5zaW9uIHZhcmlhbnQgW0FzQ29pbmFnZTo6SW5mYWxsaWJsZVVucGFpZFNpZ25lZF0uANxUaGUgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uIHZhbGlkYXRpb24gcGhhc2UgbXVzdCBlbnN1cmU6FQEtIFRoZSBgbWVtYmVyX2tleWAgaXMgdmFsaWQgYW5kIG5vdCBhbHJlYWR5IHVzZWQgaW4gYW5vdGhlciByZWN5Y2xlci5FAS0gVGhlIGBwcm9vZl9vZl9vd25lcnNoaXBgIGlzIGEgdmFsaWQgc2lnbmF0dXJlIG9mIHRoZSBzaWduZXIncyBhY2NvdW50IGlkIGJ5IHRoZTwgIGBtZW1iZXJfa2V5YC4tAS0gVGhlIGB2YWx1ZWAgaXMgd2l0aGluIHRoZSBib3VuZHMgZGVmaW5lZCBieSBbQ29uZmlnOjpNaW5pbXVtRXhwb25lbnRdIGFuZEEBICBbQ29uZmlnOjpNYXhpbXVtRXhwb25lbnRdLCBhbmQgY2FuIGJlIGxvc3NsZXNzbHkgY29udmVydGVkIHRvIGFuIGFzc2V0IGFtb3VudC5ZAS0gVGhlIHNpZ25lciBoYXMgZW5vdWdoIGJhbGFuY2Ugb2YgdGhlIHVuZGVybHlpbmcgYXNzZXQgdG8gY292ZXIgdGhlIGVxdWl2YWxlbnQgYW1vdW503CAgZm9yIHRoZSBnaXZlbiBjb2luIHZhbHVlIChyZXNwZWN0aW5nIGBwcmVzZXJ2YXRpb25gKS6sLSBUaGUgbm9uY2UgaXMgdmFsaWQgZm9yIHJlcGxheSBwcm90ZWN0aW9uLtQtIFRoZSByZWN5Y2xlciBjb2xsZWN0aW9uIGZvciBgdmFsdWVgIGFscmVhZHkgZXhpc3RzLgBEVGhlIGNhbGwgaXMgZnJlZS64bG9hZF9yZWN5Y2xlcl93aXRoX2V4dGVybmFsX2Fzc2V0X3VucGFpZF9iYXRjaAQBFGl0ZW1zHQUB1EJvdW5kZWRWZWM8VW5wYWlkTG9hZElucHV0PFQ+LCBUOjpNYXhCYXRjaFVucGFpZExvYWQ+ABA0GQFCYXRjaGVkIHZhcmlhbnQgb2YgW2BTZWxmOjpsb2FkX3JlY3ljbGVyX3dpdGhfZXh0ZXJuYWxfYXNzZXRfdW5wYWlkYF0uAE0BVGhlIG9yaWdpbiBtdXN0IGJlIFtPcmlnaW46OkluZmFsbGlibGVVbnBhaWRTaWduZWRdLCB3aGljaCBjYW4gYmUgb2J0YWluZWQgZnJvbSB0aGVBAXRyYW5zYWN0aW9uIGV4dGVuc2lvbiB2YXJpYW50IFtBc0NvaW5hZ2U6OkluZmFsbGlibGVVbnBhaWRTaWduZWRdLiBUaGUgZXh0ZW5zaW9uUQF2YWxpZGF0ZXMgZWFjaCBpbm5lciBpdGVtIGFuZCBhZGRpdGlvbmFsbHkgY2hlY2tzIHdpdGhpbi1iYXRjaCBtZW1iZXIta2V5IHVuaXF1ZW5lc3MhAWFuZCB0aGF0IHRoZSBzaWduZXIncyBiYWxhbmNlIGNvdmVycyB0aGUgc3VtIG9mIGFsbCBpbm5lciBhc3NldCBhbW91bnRzLgBBAVRoaXMgY2FsbCBkaXNwYXRjaGVzIGVhY2ggaW5uZXIgbG9hZCBieSByZS1ydW5uaW5nIHRoZSBzYW1lIGNoZWNrcyB0aGUgZXh0ZW5zaW9uUQFqdXN0IHBlcmZvcm1lZCAoc2VlIFtgUmVjeWNsZXJNYW5hZ2VyOjpsb2FkYF0pLiBUaGUgcmVkdW5kYW5jeSBtYXRjaGVzIHRoZSBkZWZlbnNpdmVNAXBhdHRlcm4gdXNlZCBieSBbYFNlbGY6OmxvYWRfcmVjeWNsZXJfd2l0aF9leHRlcm5hbF9hc3NldF91bnBhaWRgXTogYSBkaXNwYXRjaCBwYXRoRQF0aGF0IGZhaWxzIGFueSBvZiB0aGVzZSBjaGVja3MgaXMgYSBsb2dpYyBidWcgaW4gdGhlIGV4dGVuc2lvbiwgbm90IGEgdXNlciBlcnJvci4ARFRoZSBjYWxsIGlzIGZyZWUuZHVubG9hZF9yZWN5Y2xlcl9pbnRvX2NvaW4UARxhbGlhc2VzKQUBmEJvdW5kZWRWZWM8QWxpYXMsIFQ6Ok1heENvbnNvbGlkYXRpb24+AAEUdmFsdWV1AwEkQ29pblZhbHVlAAEUaW5kZXg4ASRSaW5nSW5kZXgAASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAAQh0bwQBMFQ6OkFjY291bnRJZAAEZJRVbmxvYWQgYSByZWN5Y2xlciB0byBtaW50IGEgbmV3IGNvaW4uAF0BVGhlIG9yaWdpbiBtdXN0IGJlIGEgW09yaWdpbjo6VW5sb2FkVG9rZW5dIHdpdGggYGZlZTogVW5sb2FkRmVlOjpQcmVwYWlkYCwgd2hpY2ggY2FuIGJlQQFvYnRhaW5lZCBmcm9tIHRoZSB0cmFuc2FjdGlvbiBleHRlbnNpb24gW0FzQ29pbmFnZV0gdXNpbmcgYEFzVW5sb2FkVG9rZW5QZW9wbGVgLOxgQXNVbmxvYWRUb2tlbkxpdGVQZW9wbGVgLCBvciBgQXNVbmxvYWRUb2tlblBhaWRgIHZhcmlhbnRzLgBJAVRoaXMgZnVuY3Rpb24gYWxsb3dzIGEgdXNlciB0byBwcm92ZSB0aGV5IG93biBvbmUgb3IgbW9yZSBjb2lucyBpbiBhIHJlY3ljbGVyIHJpbmddAXdpdGhvdXQgcmV2ZWFsaW5nIHdoaWNoIHNwZWNpZmljIGNvaW5zIHRoZXkgb3duLiBJdCBjb25zb2xpZGF0ZXMgb25lIG9yIG11bHRpcGxlIGlucHV0c2hpbnRvIGEgc2luZ2xlIG91dHB1dCBjb2luLgAsUGFyYW1ldGVyczpFASogYGFsaWFzZXNgOiB0aGUgbGlzdCBvZiBhbGlhc2VzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1lbWJlciBrZXlzIGluY2x1ZGVkIGluIHRoZRUBICByZWN5Y2xlci4gVGhlIHByb29mcyBmb3IgdGhlc2UgYWxpYXNlcyBhcmUgY29udGFpbmVkIGluIHRoZSBvcmlnaW4u+CogYHZhbHVlYCBhbmQgYGluZGV4YDogaWRlbnRpZmllcyB0aGUgcmVjeWNsZXIgYmVpbmcgdW5sb2FkZWQu/CogYF9yZXZpc2lvbmA6IHRoZSByZWN5Y2xlciByZXZpc2lvbiB1c2VkIGZvciB0aGUgYWxpYXNfcHJvb2ZzLsQqIGB0b2A6IHRoZSBkZXN0aW5hdGlvbiBhY2NvdW50IGZvciB0aGUgbmV3IGNvaW4uADRSZXF1aXJlbWVudHM6KQEqIFRoZSBvcmlnaW4gbXVzdCBiZSBbT3JpZ2luOjpVbmxvYWRUb2tlbl0gd2l0aCBgZmVlOiBVbmxvYWRGZWU6OlByZXBhaWRgLvAqIFRoZSByZWN5Y2xlciBpZGVudGlmaWVkIGJ5IGB2YWx1ZWAgYW5kIGBpbmRleGAgbXVzdCBleGlzdC5RASogVGhlIGFsaWFzIHByb29mcyBwcm92aWRlZCBpbiB0aGUgb3JpZ2luIG11c3QgYmUgdmFsaWQgZm9yIHRoZSByZWN5Y2xlcidzIHJldmlzaW9uLiEBKiBUaGUgYGFsaWFzZXNgIHByb3ZpZGVkIG11c3QgbWF0Y2ggdGhlIGFsaWFzZXMgZGVyaXZlZCBmcm9tIHRoZSBwcm9vZnMuFQEqIFRoZSBhbGlhc2VzIG11c3Qgbm90IGhhdmUgYmVlbiBhbHJlYWR5IHVubG9hZGVkIGZyb20gdGhpcyByZWN5Y2xlci68KiBUaGUgbnVtYmVyIG9mIGFsaWFzZXMgbXVzdCBiZSBhIHBvd2VyIG9mIHR3by41ASogVGhlIHJlc3VsdGluZyBjb25zb2xpZGF0ZWQgdmFsdWUgbXVzdCBub3QgZXhjZWVkIFtDb25maWc6Ok1heGltdW1FeHBvbmVudF0ujHVubG9hZF9yZWN5Y2xlcl9pbnRvX2V4dGVybmFsX2Fzc2V0FAEcYWxpYXNlcykFAZhCb3VuZGVkVmVjPEFsaWFzLCBUOjpNYXhDb25zb2xpZGF0aW9uPgABFHZhbHVldQMBJENvaW5WYWx1ZQABFGluZGV4OAEkUmluZ0luZGV4AAEgcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEIdG8EATBUOjpBY2NvdW50SWQABWDwVW5sb2FkIGEgcmVjeWNsZXIgdG8gd2l0aGRyYXcgdGhlIHVuZGVybHlpbmcgZXh0ZXJuYWwgYXNzZXQuAFEBVGhlIG9yaWdpbiBtdXN0IGJlIFtPcmlnaW46OlVubG9hZFRva2VuXSwgd2hpY2ggY2FuIGJlIG9idGFpbmVkIGZyb20gdGhlIHRyYW5zYWN0aW9uWGV4dGVuc2lvbiBbQXNDb2luYWdlXS4AXQFXaGVuIGBmZWVgIGlzIFtVbmxvYWRGZWU6OlByZXBhaWRdICh2aWEgZnJlZSBvciBwYWlkIHVubG9hZCB0b2tlbiksIG5vIGZlZSBpcyBkZWR1Y3RlZC5RAVdoZW4gYGZlZWAgaXMgW1VubG9hZEZlZTo6RnJvbU91dHB1dF0sIHRoZSBmZWUgaXMgZGVkdWN0ZWQgZnJvbSB0aGUgdW5sb2FkZWQgYXNzZXRzLgAxAVRoaXMgZnVuY3Rpb24gYWxsb3dzIGEgdXNlciB0byB3aXRoZHJhdyB0aGVpciBjb2lucyBiYWNrIGludG8gdGhlIHVuZGVybHlpbmdkYXNzZXQgKGUuZy4sIHN0YWJsZWNvaW4pLgAsUGFyYW1ldGVyczpFASogYGFsaWFzZXNgOiB0aGUgbGlzdCBvZiBhbGlhc2VzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1lbWJlciBrZXlzIGluY2x1ZGVkIGluIHRoZRUBICByZWN5Y2xlci4gVGhlIHByb29mcyBmb3IgdGhlc2UgYWxpYXNlcyBhcmUgY29udGFpbmVkIGluIHRoZSBvcmlnaW4u+CogYHZhbHVlYCBhbmQgYGluZGV4YDogaWRlbnRpZmllcyB0aGUgcmVjeWNsZXIgYmVpbmcgdW5sb2FkZWQu/CogYF9yZXZpc2lvbmA6IHRoZSByZWN5Y2xlciByZXZpc2lvbiB1c2VkIGZvciB0aGUgYWxpYXNfcHJvb2ZzLuQqIGB0b2A6IHRoZSBkZXN0aW5hdGlvbiBhY2NvdW50IGZvciB0aGUgdW5kZXJseWluZyBhc3NldC4ANFJlcXVpcmVtZW50czqsKiBUaGUgb3JpZ2luIG11c3QgYmUgW09yaWdpbjo6VW5sb2FkVG9rZW5dLvAqIFRoZSByZWN5Y2xlciBpZGVudGlmaWVkIGJ5IGB2YWx1ZWAgYW5kIGBpbmRleGAgbXVzdCBleGlzdC5RASogVGhlIGFsaWFzIHByb29mcyBwcm92aWRlZCBpbiB0aGUgb3JpZ2luIG11c3QgYmUgdmFsaWQgZm9yIHRoZSByZWN5Y2xlcidzIHJldmlzaW9uLlkBKiBUaGUgYWxpYXNlcyBtdXN0IG5vdCBoYXZlIGJlZW4gYWxyZWFkeSB1bmxvYWRlZCAoZXhjZXB0IGZvciB0aGUgZmlyc3Qgb25lIHdoZW4gYGZlZWAVASAgaXMgW1VubG9hZEZlZTo6RnJvbU91dHB1dF0sIHdoaWNoIHdhcyBwcmUtbWFya2VkIGluIHRoZSBleHRlbnNpb24pLqxwYXlfZm9yX3JlY3ljbGVyX3VubG9hZF9mZWVfdG9rZW5fd2l0aF9jb2luCAEobWVtYmVyX2tleQgBLE1lbWJlck9mPFQ+AAFIcHJvb2Zfb2Zfb3duZXJzaGlwbQQBuDxDcnlwdG9PZjxUPiBhcyBHZW5lcmF0ZVZlcmlmaWFibGU+OjpTaWduYXR1cmUABlQpAVBheSB0aGUgZmVlIHRvIHJlZ2lzdGVyIGEgbWVtYmVyIGtleSBmb3IgYSBwYWlkIHVubG9hZCB0b2tlbiB1c2luZyBhIGNvaW4uAD0BVGhlIG9yaWdpbiBtdXN0IGJlIGEgW09yaWdpbjo6Q29pbl0sIHdoaWNoIGNhbiBiZSBvYnRhaW5lZCBmcm9tIHRoZSB0cmFuc2FjdGlvblhleHRlbnNpb24gW0FzQ29pbmFnZV0uAEkBVGhlIGNvaW4gaXMgY29uc3VtZWQuIFRoZSBmZWUgaXMgZGVkdWN0ZWQgZnJvbSB0aGUgY29pbidzIHZhbHVlIGFuZCB0cmFuc2ZlcnJlZCB0bx0BW0NvbmZpZzo6RmVlRGVzdGluYXRpb25dLiBUaGUgcmVtYWluaW5nIHZhbHVlIG9mIHRoZSBjb2luIGlzIGRlc3Ryb3llZC4A1ElmIHRoZSBjYWxsIGZhaWxzLCB0aGUgb3JpZ2luIGNvaW4gaXMgc3RpbGwgY29uc3VtZWQuAF0BVG8gcHJvdGVjdCB0aGUgdXNlciBhZ2FpbnN0IHZhcnlpbmcgZmVlcywgaWYgdGhlIGNvaW4ncyB2YWx1ZSBpcyBsZXNzIHRoYW4gdGhlIGZlZSwgdGhl6GNhbGwgaXMgaW52YWxpZCAoYW4gaW52YWxpZCBjYWxsIG5ldmVyIGdvZXMgaW50byBhIGJsb2NrKS4AXQFUaGUgYHByb29mX29mX293bmVyc2hpcGAgaXMgYSBzaWduYXR1cmUgb2YgdGhlIGNhbGxlcidzIGFjY291bnQgSUQgYnkgdGhlIGBtZW1iZXJfa2V5YC4lAVRoaXMgZW5zdXJlcyB0aGUgY2FsbGVyIGNvbnRyb2xzIHRoZSBtZW1iZXIga2V5IHRvIHByZXZlbnQgZnJvbnQtcnVubmluZy4ANFJlcXVpcmVtZW50czrgKiBUaGUgY29pbidzIGFnZSBtdXN0IGJlIGxlc3MgdGhhbiBbQ29uZmlnOjpNYXhpbXVtQWdlXS7UKiBUaGUgY29pbiB2YWx1ZSBtdXN0IGJlIHN1ZmZpY2llbnQgdG8gY292ZXIgdGhlIGZlZS7YKiBUaGUgYG1lbWJlcl9rZXlgIG11c3QgYmUgdmFsaWQgYW5kIG5vdCBhbHJlYWR5IHVzZWQupCogVGhlIGBwcm9vZl9vZl9vd25lcnNoaXBgIG11c3QgYmUgdmFsaWQutHBheV9mb3JfcmVjeWNsZXJfdW5sb2FkX2ZlZV90b2tlbl93aXRoX25hdGl2ZQgBKG1lbWJlcl9rZXkIASxNZW1iZXJPZjxUPgABSHByb29mX29mX293bmVyc2hpcG0EAbg8Q3J5cHRvT2Y8VD4gYXMgR2VuZXJhdGVWZXJpZmlhYmxlPjo6U2lnbmF0dXJlAAc8XQFQYXkgdGhlIGZlZSB0byByZWdpc3RlciBhIG1lbWJlciBrZXkgZm9yIGEgcGFpZCB1bmxvYWQgdG9rZW4gdXNpbmcgdGhlIG5hdGl2ZSBjdXJyZW5jeS4AaFRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQuAEUBVGhpcyBhZGRzIHRoZSBgbWVtYmVyX2tleWAgdG8gYSAicGFpZCB1bmxvYWQgdG9rZW4gcmluZyIuIEJlaW5nIHBhcnQgb2YgdGhpcyByaW5nSQFhbGxvd3MgdGhlIHVzZXIgdG8gbGF0ZXIgZ2VuZXJhdGUgYW4gYW5vbnltb3VzIGBVbmxvYWRUb2tlbmAgdG8gdW5sb2FkIGEgcmVjeWNsZXIuAA0BVGhlIGZlZSBpcyB0cmFuc2ZlcnJlZCBmcm9tIHRoZSBjYWxsZXIgdG8gW0NvbmZpZzo6RmVlRGVzdGluYXRpb25dLgBdAVRoZSBgcHJvb2Zfb2Zfb3duZXJzaGlwYCBpcyBhIHNpZ25hdHVyZSBvZiB0aGUgY2FsbGVyJ3MgYWNjb3VudCBJRCBieSB0aGUgYG1lbWJlcl9rZXlgLiUBVGhpcyBlbnN1cmVzIHRoZSBjYWxsZXIgY29udHJvbHMgdGhlIG1lbWJlciBrZXkgdG8gcHJldmVudCBmcm9udC1ydW5uaW5nLgA0UmVxdWlyZW1lbnRzOtgqIFRoZSBgbWVtYmVyX2tleWAgbXVzdCBiZSB2YWxpZCBhbmQgbm90IGFscmVhZHkgdXNlZC6kKiBUaGUgYHByb29mX29mX293bmVyc2hpcGAgbXVzdCBiZSB2YWxpZC60cGF5X2Zvcl9yZWN5Y2xlcl91bmxvYWRfZmVlX3Rva2VuX3dpdGhfc3RhYmxlCAEobWVtYmVyX2tleQgBLE1lbWJlck9mPFQ+AAFIcHJvb2Zfb2Zfb3duZXJzaGlwbQQBuDxDcnlwdG9PZjxUPiBhcyBHZW5lcmF0ZVZlcmlmaWFibGU+OjpTaWduYXR1cmUACEBdAVBheSB0aGUgZmVlIHRvIHJlZ2lzdGVyIGEgbWVtYmVyIGtleSBmb3IgYSBwYWlkIHVubG9hZCB0b2tlbiB1c2luZyB0aGUgdW5kZXJseWluZyBhc3NldFBpLmUuIHRoZSBzdGFibGVjb2luLgBoVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZC4ARQFUaGlzIGFkZHMgdGhlIGBtZW1iZXJfa2V5YCB0byBhICJwYWlkIHVubG9hZCB0b2tlbiByaW5nIi4gQmVpbmcgcGFydCBvZiB0aGlzIHJpbmdJAWFsbG93cyB0aGUgdXNlciB0byBsYXRlciBnZW5lcmF0ZSBhbiBhbm9ueW1vdXMgYFVubG9hZFRva2VuYCB0byB1bmxvYWQgYSByZWN5Y2xlci4ADQFUaGUgZmVlIGlzIHRyYW5zZmVycmVkIGZyb20gdGhlIGNhbGxlciB0byBbQ29uZmlnOjpGZWVEZXN0aW5hdGlvbl0uAF0BVGhlIGBwcm9vZl9vZl9vd25lcnNoaXBgIGlzIGEgc2lnbmF0dXJlIG9mIHRoZSBjYWxsZXIncyBhY2NvdW50IElEIGJ5IHRoZSBgbWVtYmVyX2tleWAuJQFUaGlzIGVuc3VyZXMgdGhlIGNhbGxlciBjb250cm9scyB0aGUgbWVtYmVyIGtleSB0byBwcmV2ZW50IGZyb250LXJ1bm5pbmcuADRSZXF1aXJlbWVudHM62CogVGhlIGBtZW1iZXJfa2V5YCBtdXN0IGJlIHZhbGlkIGFuZCBub3QgYWxyZWFkeSB1c2VkLqQqIFRoZSBgcHJvb2Zfb2Zfb3duZXJzaGlwYCBtdXN0IGJlIHZhbGlkLsB1bmxvYWRfcmVjeWNsZXJfaW50b19leHRlcm5hbF9hc3NldF9hbmRfdm91Y2hlcnMcARxhbGlhc2VzKQUBmEJvdW5kZWRWZWM8QWxpYXMsIFQ6Ok1heENvbnNvbGlkYXRpb24+AAEUdmFsdWV1AwEkQ29pblZhbHVlAAEUaW5kZXg4ASRSaW5nSW5kZXgAASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAAQh0bwQBMFQ6OkFjY291bnRJZAABVGV4dGVybmFsX2Fzc2V0X2Ftb3VudMQBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgABMG5ld192b3VjaGVycy0FAeBCb3VuZGVkVmVjPChDb2luVmFsdWUsIE1lbWJlck9mPFQ+KSwgVDo6TWF4U3BsaXRPdXRwdXRzPgAJjAkBVW5sb2FkIGEgcmVjeWNsZXIgaW50byBhIG1peCBvZiBleHRlcm5hbCBhc3NldCBhbmQgZnJlc2ggdm91Y2hlcnMuAFEBVGhlIG9yaWdpbiBtdXN0IGJlIFtPcmlnaW46OlVubG9hZFRva2VuXSwgd2hpY2ggY2FuIGJlIG9idGFpbmVkIGZyb20gdGhlIHRyYW5zYWN0aW9uWGV4dGVuc2lvbiBbQXNDb2luYWdlXS4AWQFUaGlzIGZ1bmN0aW9uIGFsbG93cyBhIHVzZXIgdG8gb2ZmYm9hcmQgcGFydCBvZiB0aGUgdW5sb2FkZWQgdmFsdWUgaW50byB0aGUgdW5kZXJseWluZ+hhc3NldCB3aGlsZSByZW1pbnRpbmcgdGhlIHJlc3QgYXMgZnJlc2ggcmVjeWNsZXIgdm91Y2hlcnMuAEUBV2hlbiBgZmVlYCBpcyBbVW5sb2FkRmVlOjpQcmVwYWlkXSwgYGV4dGVybmFsX2Fzc2V0X2Ftb3VudGAgaXMgdHJhbnNmZXJyZWQgYXMtaXMuNQFXaGVuIGBmZWVgIGlzIFtVbmxvYWRGZWU6OkZyb21PdXRwdXRdLCB0aGUgZmVlIGlzIGRlZHVjdGVkIGZyb20gdGhlIHNwZWNpZmllZAUBYGV4dGVybmFsX2Fzc2V0X2Ftb3VudGAsIHNvIHRoZSByZWNpcGllbnQgcmVjZWl2ZXMgdGhlIHJlbWFpbmRlci4ALFBhcmFtZXRlcnM6RQEqIGBhbGlhc2VzYDogdGhlIGxpc3Qgb2YgYWxpYXNlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBtZW1iZXIga2V5cyBpbmNsdWRlZCBpbiB0aGUVASAgcmVjeWNsZXIuIFRoZSBwcm9vZnMgZm9yIHRoZXNlIGFsaWFzZXMgYXJlIGNvbnRhaW5lZCBpbiB0aGUgb3JpZ2luLvgqIGB2YWx1ZWAgYW5kIGBpbmRleGA6IGlkZW50aWZpZXMgdGhlIHJlY3ljbGVyIGJlaW5nIHVubG9hZGVkLvgqIGByZXZpc2lvbmA6IHRoZSByZWN5Y2xlciByZXZpc2lvbiB1c2VkIGZvciB0aGUgYWxpYXMgcHJvb2ZzLvwqIGB0b2A6IHRoZSBkZXN0aW5hdGlvbiBhY2NvdW50IGZvciB0aGUgZXh0ZXJuYWwgYXNzZXQgcG9ydGlvbi5dASogYGV4dGVybmFsX2Fzc2V0X2Ftb3VudGA6IHRoZSBncm9zcyBhc3NldCBwb3J0aW9uIHRvIG9mZmJvYXJkIGZyb20gdGhlIHVubG9hZGVkIHZhbHVlLmEBKiBgbmV3X3ZvdWNoZXJzYDogdGhlIGZyZXNoIHJlY3ljbGVyIHZvdWNoZXJzIHRvIG1pbnQgZnJvbSB0aGUgcmVtYWluaW5nIHVubG9hZGVkIHZhbHVlLgBZAVRoZSB0b3RhbCB1bmxvYWRlZCB2YWx1ZSBtdXN0IGFsd2F5cyBlcXVhbCB0aGUgYXNzZXQgcG9ydGlvbiBwbHVzIHRoZSB2b3VjaGVyIHBvcnRpb24uVQFJbiBgRnJvbU91dHB1dGAgbW9kZSwgdGhlIGFzc2V0IHBvcnRpb24gbXVzdCBiZSBsYXJnZSBlbm91Z2ggdG8gY292ZXIgdGhlIHVubG9hZCBmZWUuADRSZXF1aXJlbWVudHM6rCogVGhlIG9yaWdpbiBtdXN0IGJlIFtPcmlnaW46OlVubG9hZFRva2VuXS7wKiBUaGUgcmVjeWNsZXIgaWRlbnRpZmllZCBieSBgdmFsdWVgIGFuZCBgaW5kZXhgIG11c3QgZXhpc3QuUQEqIFRoZSBhbGlhcyBwcm9vZnMgcHJvdmlkZWQgaW4gdGhlIG9yaWdpbiBtdXN0IGJlIHZhbGlkIGZvciB0aGUgcmVjeWNsZXIncyByZXZpc2lvbi5ZASogVGhlIGFsaWFzZXMgbXVzdCBub3QgaGF2ZSBiZWVuIGFscmVhZHkgdW5sb2FkZWQgKGV4Y2VwdCBmb3IgdGhlIGZpcnN0IG9uZSB3aGVuIGBmZWVgFQEgIGlzIFtVbmxvYWRGZWU6OkZyb21PdXRwdXRdLCB3aGljaCB3YXMgcHJlLW1hcmtlZCBpbiB0aGUgZXh0ZW5zaW9uKS5FASogYG5ld192b3VjaGVyc2AgbXVzdCBub3QgYmUgZW1wdHksIGFuZCBhbGwgdm91Y2hlciBtZW1iZXIga2V5cyBtdXN0IGJlIHZhbGlkIGFuZCQgIHVudXNlZC5hASogVGhlIHRvdGFsIHVubG9hZGVkIHZhbHVlIG11c3QgZXF1YWwgYGV4dGVybmFsX2Fzc2V0X2Ftb3VudGAgcGx1cyB0aGUgdG90YWwgYXNzZXQgdmFsdWVQICBvZiBgbmV3X3ZvdWNoZXJzYC5FASogV2hlbiB1c2luZyBbVW5sb2FkRmVlOjpGcm9tT3V0cHV0XSwgYGV4dGVybmFsX2Fzc2V0X2Ftb3VudGAgbXVzdCBjb3ZlciB0aGUgZmVlLsR1bmxvYWRfcmVjeWNsZXJfaW50b19leHRlcm5hbF9hc3NldF9ub25fYW5vbnltb3VzEAEUaW5wdXQ5BQGgVW5sb2FkUmVjeWNsZXJJbnB1dDxUOjpNYXhDb25zb2xpZGF0aW9uPgABMGFsaWFzX3Byb29mc3kDAaxCb3VuZGVkVmVjPFByb29mT2Y8VD4sIFQ6Ok1heENvbnNvbGlkYXRpb24+AAEIdG8EATBUOjpBY2NvdW50SWQAATBmZWVfY3VycmVuY3k9BQEsRmVlQ3VycmVuY3kACxgxAVVubG9hZCBhIHJlY3ljbGVyIHRvIHdpdGhkcmF3IHRoZSB1bmRlcmx5aW5nIGV4dGVybmFsIGFzc2V0IChub24tYW5vbnltb3VzKS4AVQFDb252ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCBbU2VsZjo6dW5sb2FkX3JlY3ljbGVyc19pbnRvX2V4dGVybmFsX2Fzc2V0X25vbl9hbm9ueW1vdXNddGZvciB0aGUgc2luZ2xlLXJlY3ljbGVyIGNhc2UuAFkBU2VlIFtTZWxmOjp1bmxvYWRfcmVjeWNsZXJzX2ludG9fZXh0ZXJuYWxfYXNzZXRfbm9uX2Fub255bW91c10gZm9yIGZ1bGwgZG9jdW1lbnRhdGlvbi7IdW5sb2FkX3JlY3ljbGVyc19pbnRvX2V4dGVybmFsX2Fzc2V0X25vbl9hbm9ueW1vdXMQARhpbnB1dHNBBQG0VmVjPFVubG9hZFJlY3ljbGVySW5wdXQ8VDo6TWF4Q29uc29saWRhdGlvbj4+AAEwYWxpYXNfcHJvb2ZzeQMBrEJvdW5kZWRWZWM8UHJvb2ZPZjxUPiwgVDo6TWF4Q29uc29saWRhdGlvbj4AAQh0bwQBMFQ6OkFjY291bnRJZAABMGZlZV9jdXJyZW5jeT0FASxGZWVDdXJyZW5jeQAMWFEBVW5sb2FkIG11bHRpcGxlIHJlY3ljbGVycyB0byB3aXRoZHJhdyB0aGUgdW5kZXJseWluZyBleHRlcm5hbCBhc3NldCAobm9uLWFub255bW91cykuAD0BVGhpcyBpcyBhIG5vbi1hbm9ueW1vdXMgdmVyc2lvbiBvZiBbU2VsZjo6dW5sb2FkX3JlY3ljbGVyc19pbnRvX2V4dGVybmFsX2Fzc2V0XUEBd2hlcmUgdGhlIGZlZSBpcyBwYWlkIGV4cGxpY2l0bHkgYnkgdGhlIHNpZ25lciByYXRoZXIgdGhhbiB0aHJvdWdoIHRoZSBhbm9ueW1vdXO4dW5sb2FkIHRva2VuIHJpbmcsIGFuZCBmb3IgbXVsdGlwbGUgcmVjeWNsZXJzLgAxAVRoZSBmZWUgY2hhcmdlZCBpcyBvbmUgdW5sb2FkIHRva2VuIGZlZSBwZXIgcmVjeWNsZXIgKGkuZS4sIGBpbnB1dHMubGVuKClgKS4ALFBhcmFtZXRlcnM6MQEqIGBpbnB1dHNgOiBBIGxpc3Qgb2YgaW5wdXRzLCBzcGVjaWZ5aW5nIHRoZSByZWN5Y2xlciBhbmQgYWxpYXNlcyB0byB1bmxvYWQuVQEqIGBhbGlhc19wcm9vZnNgOiB0aGUgcHJvb2ZzIGZvciBhbGwgYWxpYXNlcyBhY3Jvc3MgYWxsIGlucHV0cywgc2lnbmVkIG92ZXIgYSBtZXNzYWdlVQEgIHRoYXQgaW5jbHVkZXMgdGhlIHNpZ25lci4gVGhlIHByb29mcyBtdXN0IGNvcnJlc3BvbmQgc2VxdWVudGlhbGx5IHRvIHRoZSBhbGlhc2VzIGluLCAgYGlucHV0c2AuuCogYHRvYDogdGhlIGRlc3RpbmF0aW9uIGFjY291bnQgZm9yIHRoZSBhc3NldC4xASogYGZlZV9jdXJyZW5jeWA6IHdoZXRoZXIgdG8gcGF5IHRoZSBmZWUgaW4gbmF0aXZlIGN1cnJlbmN5IG9yIHN0YWJsZSBhc3NldC4ANFJlcXVpcmVtZW50czpwKiBUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLpQqIEFsbCBzcGVjaWZpZWQgcmVjeWNsZXJzIG11c3QgZXhpc3QuLQEqIFRoZSBhbGlhcyBwcm9vZnMgbXVzdCBjb3JyZXNwb25kIHNlcXVlbnRpYWxseSB0byB0aGUgYWxpYXNlcyBpbiBgaW5wdXRzYC45ASogYGlucHV0c2AgbXVzdCBub3QgYmUgZW1wdHkgYW5kIGVhY2ggZWxlbWVudCBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIGFsaWFzLkEBKiBUaGUgc2lnbmVyIG11c3QgaGF2ZSBzdWZmaWNpZW50IGJhbGFuY2UgdG8gcGF5IHRoZSBmZWUgKG9uZSBmZWUgcGVyIHJlY3ljbGVyKS5odW5sb2FkX3JlY3ljbGVyX2ludG9fY29pbnMYARxhbGlhc2VzKQUBmEJvdW5kZWRWZWM8QWxpYXMsIFQ6Ok1heENvbnNvbGlkYXRpb24+AAEUdmFsdWV1AwEkQ29pblZhbHVlAAEUaW5kZXg4ASRSaW5nSW5kZXgAASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAAShzcGxpdF9pbnRvCQUBaQFCb3VuZGVkVmVjPChDb2luVmFsdWUsIEJvdW5kZWRWZWM8VDo6QWNjb3VudElkLCBUOjpNYXhTcGxpdE91dHB1dHM+KSwKVDo6TWF4U3BsaXRPdXRwdXRzLD4AARxtYXhfZmVlxAFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AA201FVubG9hZCBhIHJlY3ljbGVyIHRvIG1pbnQgbXVsdGlwbGUgbmV3IGNvaW5zIChzcGxpdCkuACkBVGhlIG9yaWdpbiBtdXN0IGJlIGEgW09yaWdpbjo6VW5sb2FkVG9rZW5dIHdpdGggYGZlZTogVW5sb2FkRmVlOjpQcmVwYWlkYC4ARQFUaGlzIGZ1bmN0aW9uIGNvbWJpbmVzIHRoZSBmdW5jdGlvbmFsaXR5IG9mIFtTZWxmOjp1bmxvYWRfcmVjeWNsZXJfaW50b19jb2luXSBhbmRFAVtTZWxmOjpzcGxpdF0gaW4gYSBzaW5nbGUgYXRvbWljIG9wZXJhdGlvbi4gVGhlIHJlc3VsdGluZyBjb2lucycgYWdlIGlzIDEgYmVjYXVzZUUBdGhlIGFjdGlvbiBvZiBzcGxpdHRpbmcgYWdlIGNvaW5zLiBUaGlzIGlzIGFsc28gaW1wb3J0YW50IGJlY2F1c2UgcmVzdWx0aW5nIGNvaW5z6GFyZSBub3QgZW50aXJlbHkgZnJlc2gsIHRoZXkgY2FuIGJlIGxpbmtlZCB0byBvdGhlciBjb2lucy4AWQFVbmxpa2UgW1NlbGY6OnVubG9hZF9yZWN5Y2xlcl9pbnRvX2NvaW5dLCB0aGlzIGNhbGwgZG9lcyAqKm5vdCoqIHJlcXVpcmUgdGhlIG51bWJlciBvZnRhbGlhc2VzIHRvIGJlIGEgcG93ZXIgb2YgdHdvLgAsUGFyYW1ldGVyczpFASogYGFsaWFzZXNgOiB0aGUgbGlzdCBvZiBhbGlhc2VzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1lbWJlciBrZXlzIGluY2x1ZGVkIGluIHRoZRUBICByZWN5Y2xlci4gVGhlIHByb29mcyBmb3IgdGhlc2UgYWxpYXNlcyBhcmUgY29udGFpbmVkIGluIHRoZSBvcmlnaW4u+CogYHZhbHVlYCBhbmQgYGluZGV4YDogaWRlbnRpZmllcyB0aGUgcmVjeWNsZXIgYmVpbmcgdW5sb2FkZWQu+CogYHJldmlzaW9uYDogdGhlIHJlY3ljbGVyIHJldmlzaW9uIHVzZWQgZm9yIHRoZSBhbGlhc19wcm9vZnMuSQEqIGBzcGxpdF9pbnRvYDogYSB2ZWN0b3Igb2YgcGFpcnMsIGVhY2ggcGFpciBjb250YWluaW5nIGEgY29pbiB2YWx1ZSBhbmQgYSBsaXN0IG9maCAgZGVzdGluYXRpb24gYWNjb3VudCBpZHMuWQEqIGBtYXhfZmVlYDogdGhlIG1heGltdW0gZmVlIHRoZSBjYWxsZXIgaXMgd2lsbGluZyB0byBwYXksIGV4cHJlc3NlZCBpbiB0aGUgdW5kZXJseWluZ0kBICBhc3NldCBiYWxhbmNlLiBJdCBtdXN0IGJlIGVxdWFsIHRvIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHRvdGFsIHZhbHVlIG9mIHRoZTkBICB1bmxvYWRlZCBjb2lucyBhbmQgdGhlIHRvdGFsIHZhbHVlIG9mIHRoZSBuZXcgY29pbnMgZGVmaW5lZCBpbiBgc3BsaXRfaW50b2AuAMggIFdoZW4gdXNpbmcgW1VubG9hZEZlZTo6UHJlcGFpZF0sIHRoaXMgbXVzdCBiZSAwLkUBICBXaGVuIHVzaW5nIFtVbmxvYWRGZWU6OkZyb21PdXRwdXRdLCB0aGlzIGFtb3VudCBpcyBkZWR1Y3RlZCBmcm9tIHRoZSBpbnB1dDogdGhlVQEgIG5ldHdvcmsgZmVlIGlzIHRyYW5zZmVycmVkIHRvIFtDb25maWc6OkZlZURlc3RpbmF0aW9uXSBhbmQgYW55IHJlbWFpbmRlciBpcyBidXJuZWQuQQEgIFRoZSBjYWxsZXIgY2FuIHF1ZXJ5IGBnZXRfcGFpZF91bmxvYWRfdG9rZW5fZmVlX2luX2Fzc2V0YCB0byBlc3RpbWF0ZSB0aGUgZmVlLgBhASAgVGhpcyBwYXJhbWV0ZXIgc2VydmVzIGFzIGEgc2FmZWd1YXJkOiB0aGUgdHJhbnNhY3Rpb24gaXMgcmVqZWN0ZWQgYXQgdmFsaWRhdGlvbiBpZiB0aGVBASAgYWN0dWFsIG5ldHdvcmsgZmVlIGV4Y2VlZHMgYG1heF9mZWVgLCBwcm90ZWN0aW5nIHRoZSBjYWxsZXIgZnJvbSBleGNlc3NpdmUgZmVlXQEgIGluY3JlYXNlcyB0aGF0IHdvdWxkIHJlbmRlciB0aGUgYXJndW1lbnQgYHNwbGl0X2ludG9gIGludmFsaWQgKHVubG9hZGVkIGZ1bmRzIG11c3QgYmWYICBoaWdoZXIgdGhhbiB0aGUgc3BsaXQgcGx1cyB0aGUgZmVlKS4ANFJlcXVpcmVtZW50czqsKiBUaGUgb3JpZ2luIG11c3QgYmUgW09yaWdpbjo6VW5sb2FkVG9rZW5dLvAqIFRoZSByZWN5Y2xlciBpZGVudGlmaWVkIGJ5IGB2YWx1ZWAgYW5kIGBpbmRleGAgbXVzdCBleGlzdC5RASogVGhlIGFsaWFzIHByb29mcyBwcm92aWRlZCBpbiB0aGUgb3JpZ2luIG11c3QgYmUgdmFsaWQgZm9yIHRoZSByZWN5Y2xlcidzIHJldmlzaW9uLiEBKiBUaGUgYGFsaWFzZXNgIHByb3ZpZGVkIG11c3QgbWF0Y2ggdGhlIGFsaWFzZXMgZGVyaXZlZCBmcm9tIHRoZSBwcm9vZnMuYQEqIFRoZSB0b3RhbCB2YWx1ZSBvZiB0aGUgbmV3IGNvaW5zIGRlZmluZWQgaW4gYHNwbGl0X2ludG9gIHBsdXMgYG1heF9mZWVgIG11c3QgZXF1YWwgdGhlkCAgdG90YWwgdmFsdWUgb2YgdGhlIHVubG9hZGVkIGNvaW5zLlUBKiBgbWF4X2ZlZWAgbXVzdCBiZSBhIG11bHRpcGxlIG9mIHRoZSBtaW5pbXVtIGNvaW4uIChUaGlzIGlzIGltcGxpZWQgYnkgdGhlIGNvbmRpdGlvbiQgIGFib3ZlKS7gKiBFYWNoIGRlc3RpbmF0aW9uIGFjY291bnQgbXVzdCBub3QgYWxyZWFkeSBoYXZlIGEgY29pbi7cKiBXaGVuIHVzaW5nIFtVbmxvYWRGZWU6OlByZXBhaWRdLCBgbWF4X2ZlZWAgbXVzdCBiZSAwLi0BKiBXaGVuIHVzaW5nIFtVbmxvYWRGZWU6OkZyb21PdXRwdXRdLCBgbWF4X2ZlZWAgbXVzdCBjb3ZlciB0aGUgbmV0d29yayBmZWUuoGRpcmVjdF9vZmZib2FyZF9jb2luX2ludG9fZXh0ZXJuYWxfYXNzZXQEAQh0bwQBMFQ6OkFjY291bnRJZAAOOCUBRGlyZWN0bHkgb2ZmYm9hcmQgYSBmcmVzaCwgMC1hZ2UgY29pbiBpbnRvIHRoZSB1bmRlcmx5aW5nIGV4dGVybmFsIGFzc2V0LgBFAVRoZSBvcmlnaW4gbXVzdCBiZSBhIFtPcmlnaW46OkNvaW5dLCBvYnRhaW5lZCB0aHJvdWdoIFtBc0NvaW5hZ2VdIHVzaW5nIGBBc0NvaW5gLgANAUJlY2F1c2UgdGhlIGNvaW4gbXVzdCBiZSBmcmVzaCAoYGFnZSA9PSAwYCksIHRoaXMgY2FsbCBieXBhc3NlcyB0aGVJAXJlY3ljbGVyL3VubG9hZC10b2tlbiBvZmZib2FyZGluZyBmbG93IGFuZCByZWxlYXNlcyB0aGUgdW5kZXJseWluZyBhc3NldCBkaXJlY3RseS4ALFBhcmFtZXRlcnM6PQEqIGB0b2A6IGRlc3RpbmF0aW9uIGFjY291bnQgdGhhdCByZWNlaXZlcyB0aGUgcmVsZWFzZWQgdW5kZXJseWluZyBhc3NldCBhbW91bnQuADRSZXF1aXJlbWVudHM6kCogVGhlIG9yaWdpbiBtdXN0IGJlIFtPcmlnaW46OkNvaW5dLqgqIFRoZSBjb2luIG11c3QgYmUgZnJlc2g6IGBjb2luLmFnZSA9PSAwYC4JASogVGhlIGNvaW4gdmFsdWUgbXVzdCBiZSByZXByZXNlbnRhYmxlIGFzIHVuZGVybHlpbmctYXNzZXQgYW1vdW50LjhjbGVhbl9yZWN5Y2xlcgQBFHZhbHVldQMBJENvaW5WYWx1ZQBlHHRDbGVhbiB1cCBhbiBleHBpcmVkIHJlY3ljbGVyLgBBAVRoaXMgaXMgYSBtYWludGVuYW5jZSBjYWxsLiBUaGUgb3JpZ2luIG11c3QgYmUgYXV0aG9yaXplZCBhbmQgZnJvbSBsb2NhbCBzb3VyY2UuAA0BVGhpcyByZW1vdmVzIGFuIG9sZCByZWN5Y2xlciB0aGF0IGhhcyBleGNlZWRlZCBpdHMgZXhwaXJhdGlvbiB0aW1lLkkBQW55IHJlbWFpbmluZyAobm90IHVubG9hZGVkKSB2YWx1ZSBpbiB0aGUgcmVjeWNsZXIgaXMgY29uc2lkZXJlZCBsb3N0IGFuZCBhZGRlZCB0b3RbVG90YWxWYWx1ZU9mRGVzdHJveWVkQ29pbnNdLmRjbGVhbl9jb25zdW1lZF9mcmVlX3Rva2VuBAEYcGVyaW9kOAEYUGVyaW9kAGYM/ENsZWFudXAgc3RvcmFnZSBmb3IgY29uc3VtZWQgZnJlZSB1bmxvYWQgdG9rZW5zIG9mIG9sZCBwZXJpb2RzLgBBAVRoaXMgaXMgYSBtYWludGVuYW5jZSBjYWxsLiBUaGUgb3JpZ2luIG11c3QgYmUgYXV0aG9yaXplZCBhbmQgZnJvbSBsb2NhbCBzb3VyY2UucGNsZWFuX3BhaWRfdW5sb2FkX3Rva2VuX3JpbmcIARhwZXJpb2Q4ARhQZXJpb2QAAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AGgYCQFDbGVhbiB1cCBhIHNpbmdsZSByaW5nIGluIGFuIGV4cGlyZWQgcGFpZCB1bmxvYWQgdG9rZW4gY29sbGVjdGlvbi4AQQFUaGlzIGlzIGEgbWFpbnRlbmFuY2UgY2FsbC4gVGhlIG9yaWdpbiBtdXN0IGJlIGF1dGhvcml6ZWQgYW5kIGZyb20gbG9jYWwgc291cmNlLikBUmluZ3MgbXVzdCBiZSBjbGVhbmVkIHNlcXVlbnRpYWxseSAocmluZyAwIGZpcnN0LCB0aGVuIDEsIGV0Yy4pIGJlZm9yZSB0aGV0Y29sbGVjdGlvbiBjYW4gYmUgZGVsZXRlZCB2aWGNAVtgZGVsZXRlX2V4cGlyZWRfcGFpZF91bmxvYWRfdG9rZW5fY29sbGVjdGlvbmBdKFNlbGY6OmRlbGV0ZV9leHBpcmVkX3BhaWRfdW5sb2FkX3Rva2VuX2NvbGxlY3Rpb24pLkxjbGVhbl9yZWN5Y2xlcl9kdXN0AGkUcENsZWFuIHVwIGR1c3QgZm9yIHJlY3ljbGVycy4AQQFUaGlzIGlzIGEgbWFpbnRlbmFuY2UgY2FsbC4gVGhlIG9yaWdpbiBtdXN0IGJlIGF1dGhvcml6ZWQgYW5kIGZyb20gbG9jYWwgc291cmNlLkkBUmVtb3ZlcyB1cCB0byBEVVNUX0NMRUFOVVBfQkFUQ0hfU0laRSB1bmxvYWRlZCBhbGlhcyBlbnRyaWVzIHBlciBjYWxsIHRvIGJvdW5kIHRoZShvcGVyYXRpb24ucGNsZWFuX3BhaWRfdW5sb2FkX3Rva2VuX2R1c3QAagyUQ2xlYW4gdXAgZHVzdCBmb3IgcGFpZCB1bmxvYWQgdG9rZW5zLgBBAVRoaXMgaXMgYSBtYWludGVuYW5jZSBjYWxsLiBUaGUgb3JpZ2luIG11c3QgYmUgYXV0aG9yaXplZCBhbmQgZnJvbSBsb2NhbCBzb3VyY2UurGRlbGV0ZV9leHBpcmVkX3BhaWRfdW5sb2FkX3Rva2VuX2NvbGxlY3Rpb24EARhwZXJpb2Q4ARhQZXJpb2QAaxhFAURlbGV0ZSBhbiBleHBpcmVkIHBhaWQgdW5sb2FkIHRva2VuIGNvbGxlY3Rpb24gYWZ0ZXIgYWxsIHJpbmdzIGhhdmUgYmVlbiBjbGVhbmVkLgBBAVRoaXMgaXMgYSBtYWludGVuYW5jZSBjYWxsLiBUaGUgb3JpZ2luIG11c3QgYmUgYXV0aG9yaXplZCBhbmQgZnJvbSBsb2NhbCBzb3VyY2UukEFsbCByaW5ncyBtdXN0IGhhdmUgYmVlbiBjbGVhbmVkIHZpYUEBW2BjbGVhbl9wYWlkX3VubG9hZF90b2tlbl9yaW5nYF0oU2VsZjo6Y2xlYW5fcGFpZF91bmxvYWRfdG9rZW5fcmluZykgYmVmb3JlIHRoaXM4Y2FuIGJlIGNhbGxlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuCQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAENBQRTAAAEABUFARhWZWM8VD4AAA0FAAAECHUDEQUAEQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQAzAEYVmVjPFQ+AAAVBQAAAg0FABkFDFBpbmRpdl9wYWxsZXRfY29pbmFnZRhwYWxsZXREQ29kZWNQcmVzZXJ2YXRpb24AAQwoRXhwZW5kYWJsZQAAABxQcm90ZWN0AAEAIFByZXNlcnZlAAIAAB0FDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBIQUEUwAABAAlBQEYVmVjPFQ+AAAhBQxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0PFVucGFpZExvYWRJbnB1dAQEVAAAEAEwcHJlc2VydmF0aW9uGQUBRENvZGVjUHJlc2VydmF0aW9uAAEUdmFsdWV1AwEkQ29pblZhbHVlAAEobWVtYmVyX2tleQgBLE1lbWJlck9mPFQ+AAFIcHJvb2Zfb2Zfb3duZXJzaGlwbQQBOFNpZ25hdHVyZU9mPFQ+AAAlBQAAAiEFACkFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBCARTAAAEAFUEARhWZWM8VD4AAC0FDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBMQUEUwAABAA1BQEYVmVjPFQ+AAAxBQAABAh1AwgANQUAAAIxBQA5BQxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0TFVubG9hZFJlY3ljbGVySW5wdXQEMEFsaWFzZXNCb3VuZAAAEAEUdmFsdWV1AwEkQ29pblZhbHVlAAEUaW5kZXg4ASRSaW5nSW5kZXgAASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAARxhbGlhc2VzKQUBfEJvdW5kZWRWZWM8QWxpYXMsIEFsaWFzZXNCb3VuZD4AAD0FDFBpbmRpdl9wYWxsZXRfY29pbmFnZRhwYWxsZXQsRmVlQ3VycmVuY3kAAQgYTmF0aXZlAAAAGFN0YWJsZQABAABBBQAAAjkFAEUFDHRpbmRpdl9wYWxsZXRfbWVtYmVyc19ub3RpZmllchhwYWxsZXQQQ2FsbAQEVAABHCRzdWJzY3JpYmUMAVxzdWJzY3JpYmVyX3BhcmFjaGFpbl9pZJwBGFBhcmFJZAABTG1lbWJlcnNfY29sbGVjdGlvbnNJBQEdAUJvdW5kZWRWZWM8KElkZW50aWZpZXIsIFJpbmdFeHBvbmVudCksIFQ6Ok1heENvbGxlY3Rpb25zUGVyU3Vic2NyaWJlciw+AAEwcGFsbGV0X2luZGV4DAEIdTgAACygUmVnaXN0ZXJzIHRoZSBwYXJhY2hhaW4gYXMgYSBzdWJzY3JpYmVyLtBUaGUgaW5pdGlhbCBzdGF0ZSB3aWxsIGJlIHNlbnQgb3ZlciBzaG9ydGx5IHZpYSBYQ00uACQjIyBPcmlnaW6oUmVxdWlyZXMgYE1hbmFnZU9yaWdpbmAgKGdvdmVybmFuY2Uvcm9vdCkuADQjIyBQYXJhbWV0ZXJzFQEtIGBzdWJzY3JpYmVyX3BhcmFjaGFpbl9pZGA6IFRoZSBQYXJhSWQgb2YgdGhlIHN1YnNjcmliaW5nIHBhcmFjaGFpbi5FAS0gYG1lbWJlcnNfY29sbGVjdGlvbnNgOiBMaXN0IG9mIGNvbGxlY3Rpb24gaWRlbnRpZmllcnMgdG8gc3Vic2NyaWJlIHRvIGFuZCB0aGVpcnAgIHJlc3BlY3RpdmUgcmluZyBleHBvbmVudHMuNQEtIGBwYWxsZXRfaW5kZXhgOiBQYWxsZXQgaW5kZXggb2YgbWVtYmVycy1zdWJzY3JpYmVyIG9uIHRoZSBzdWJzY3JpYmVyIGNoYWluLix1bnN1YnNjcmliZQQBXHN1YnNjcmliZXJfcGFyYWNoYWluX2lkVQUBOE9wdGlvbjxQYXJhSWQ+AAEkZFVuc3Vic2NyaWJlcyBhIHBhcmFjaGFpbi4AJCMjIE9yaWdpbj0BLSAqKlNlbGYtdW5zdWJzY3JpYmUqKjogU3Vic2NyaWJlciBwYXJhY2hhaW4gdmlhIFhDTSAoYEVuc3VyZVN1YnNjcmliZXJPcmlnaW5gKdQtICoqR292ZXJuYW5jZSB1bnN1YnNjcmliZSoqOiBSZXF1aXJlcyBgTWFuYWdlT3JpZ2luYAA0IyMgUGFyYW1ldGVyc2EBLSBgc3Vic2NyaWJlcl9wYXJhY2hhaW5faWRgOiBUaGUgUGFyYUlkIHRvIHVuc3Vic2NyaWJlLiBSZXF1aXJlZCBmb3IgZ292ZXJuYW5jZSwgaWdub3JlZMQgIGZvciBzZWxmLXVuc3Vic2NyaWJlIChkZXJpdmVkIGZyb20gWENNIG9yaWdpbikuOHJlcXVlc3RfcmVwbGF5DAFcc3Vic2NyaWJlcl9wYXJhY2hhaW5faWScARhQYXJhSWQAAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABRHJpbmdfcm9vdF9pbmRpY2VzWQUBsEJvdW5kZWRWZWM8UmluZ0luZGV4LCBUOjpNYXhVcGRhdGVzUGVyQmF0Y2g+AAIknFJlcXVlc3RzIHJlcGxheSBvZiBzcGVjaWZpYyByaW5nIHJvb3RzLgA1AVBlcm1pc3Npb25sZXNzIOKAlCBhbnkgc2lnbmVkIG9yaWdpbiBjYW4gcmVxdWVzdCBhIHJlcGxheSBmb3IgYW55IHN1YnNjcmliZXIuSQFUaGUgc3Vic2NyaWJlciBwYXJhY2hhaW4gaXMgaWRlbnRpZmllZCBieSB0aGUgYHN1YnNjcmliZXJfcGFyYWNoYWluX2lkYCBwYXJhbWV0ZXIuACxQYXJhbWV0ZXJzOugtIGBzdWJzY3JpYmVyX3BhcmFjaGFpbl9pZGA6IFRoZSBQYXJhSWQgb2YgdGhlIHN1YnNjcmliZXIumC0gYGlkZW50aWZpZXJgOiBDb2xsZWN0aW9uIGlkZW50aWZpZXIuWQEtIGByaW5nX3Jvb3RfaW5kaWNlc2A6IExpc3Qgb2YgcmluZyByb290IGluZGljZXMsIG11c3QgYmUgaW4gc3RyaWN0bHkgYXNjZW5kaW5nIG9yZGVyLjxlbnF1ZXVlX3VwZGF0ZXMEASRzZW5kX3BhZ2UtAwEMdTE2AAMM+EVucXVldWVzIHBlbmRpbmcgdXBkYXRlcyBpbnRvIGEgc2VhbGVkIGJhdGNoIGZvciBkaXN0cmlidXRpb24uAMRBdXRob3JpemVkIGNhbGwgc3VibWl0dGVkIGJ5IHRoZSBvZmZjaGFpbiB3b3JrZXIuKHNlbmRfYmF0Y2gIARxwYXJhX2lknAEYUGFyYUlkAAEgc2VxdWVuY2UoAThTZXF1ZW5jZU51bWJlcgAEDMRTZW5kcyB0aGUgY3VycmVudCBiYXRjaCB0byBhIHNwZWNpZmljIHN1YnNjcmliZXIuAPRBdXRob3JpemVkIG1haW50ZW5hbmNlIGNhbGwgc3VibWl0dGVkIGJ5IHRoZSBvZmZjaGFpbiB3b3JrZXIuOHNlbmRfaW5pdF9wYWdlDAEccGFyYV9pZJwBGFBhcmFJZAABYGN1cnJlbnRfY29sbGVjdGlvbl9pbmRleDgBDHUzMgABQGFmdGVyX3JpbmdfaW5kZXgJAwFET3B0aW9uPFJpbmdJbmRleD4ABQzYU2VuZHMgb25lIHBhZ2Ugb2YgaW5pdGlhbGl6YXRpb24gZGF0YSB0byBhIHN1YnNjcmliZXIuAPRBdXRob3JpemVkIG1haW50ZW5hbmNlIGNhbGwgc3VibWl0dGVkIGJ5IHRoZSBvZmZjaGFpbiB3b3JrZXIuTGFiYW5kb25fc3R1Y2tfYmF0Y2gABhTkQWJhbmRvbnMgYSBzdHVjayBiYXRjaCB0aGF0IGV4Y2VlZGVkIGBTdHVja0JhdGNoVGltZW91dGAuMQFTdWJzY3JpYmVycyB0aGF0IGRpZCBub3QgcmVjZWl2ZSB0aGUgYmF0Y2ggY2FuIHJlY292ZXIgdmlhIGByZXF1ZXN0X3JlcGxheWAuADUBQXV0aG9yaXplZCBtYWludGVuYW5jZSBjYWxsIHN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyIHdoZW4gYSBiYXRjaCBoYXOwYmVlbiBhY3RpdmUgbG9uZ2VyIHRoYW4gYFN0dWNrQmF0Y2hUaW1lb3V0YC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuSQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFNBQRTAAAEAFEFARhWZWM8VD4AAE0FAAAECAj9BABRBQAAAk0FAFUFBBhPcHRpb24EBFQBnAEIEE5vbmUAAAAQU29tZQQAnAAAAQAAWQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAE4BFMAAAQAZQQBGFZlYzxUPgAAXQUMjGluZGl2X3BhbGxldF9zdG9yYWdlX2luaXRpYWxpemF0aW9uGHBhbGxldBBDYWxsBARUAAEEeHNldF9haXJkcm9wX3NjaGVkdWxpbmdfZW5hYmxlZAQBHGVuYWJsZWTIARBib29sAAAQAQFFbmFibGUgb3IgZGlzYWJsZSBvbl9wb2xsIGFpcmRyb3Agc2NoZWR1bGluZy4gV2hpbGUgZGlzYWJsZWQgdGhlCQFgT3BlbmluZ0FpcmRyb3BQb29sc2Agc3RhdGUgcmVtYWlucyBhY3RpdmUgYnV0IG9wZW5zIG5vIG5ldyBwb29scy4pAVJlLWVuYWJsaW5nIGRvZXMgbm90IGJhY2stZmlsbCBza2lwcGVkIHBlcmlvZHM6IGF0IG1vc3Qgb25lIHBvb2wgaXMgb3BlbmVksHBlciBwZXJpb2QsIGFuZCBvbmx5IGZvciB0aGUgY3VycmVudCBwZXJpb2QuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLmEFDFBpbmRpdl9wYWxsZXRfYWlyZHJvcBhwYWxsZXQQQ2FsbAQEVAABDDxvcGVuX3ByaXplX3Bvb2wcARh0YXJnZXRlBQEsUHJpemVUYXJnZXQAAShkaXNwYXRjaGVyBAEwVDo6QWNjb3VudElkAAEgdmFsaWRpdHk4AQx1MzIAAShudW1fcHJpemVzOAEMdTMyAAEscHJpemVfdmFsdWXEAURBc3NldEJhbGFuY2VPZjxUPgABIGFzc2V0X2lk4AEwQXNzZXRJZE9mPFQ+AAEwd2lubmVyX3JhdGlvaQUBHFBlcm1pbGwAABRBAU9wZW4gYSBuZXcgcHJpemUgcG9vbCBmcm9tIHdoaWNoIGBudW1fcHJpemVzYCBhbGlhc2VzIGluIHRoZSBgdGFyZ2V0YCBwb3B1bGF0aW9ugG1heSBjbGFpbSBhIGZpeGVkIGBwcml6ZV92YWx1ZWAuAOBPcmlnaW4gbXVzdCBiZSBgVDo6TWFuYWdlck9yaWdpbmAuIE90aGVyIHBhbGxldHMgY2FuIHVzZQkBW2BBaXJkcm9wQXBpOjpvcGVuX3ByaXplX3Bvb2xgXSAoZ2F0ZWQgYnkgYFQ6OlRyYWl0Q2FsbGVyT3JpZ2luYCkuLGNsYWltX3ByaXplGAEccG9vbF9pZDgBLFByaXplUG9vbElkAAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABIHJldmlzaW9uOAE0UmV2aXNpb25JbmRleAABFHByb29mfQMBKFByb29mT2Y8VD4AARRhbGlhcwgBFEFsaWFzAAEsYmVuZWZpY2lhcnkEATBUOjpBY2NvdW50SWQAAUwVAUNsYWltIGEgcHJpemUgZnJvbSBhIGBQcml6ZVRhcmdldDo6UGVvcGxlYCBwb29sIGJ5IHN1Ym1pdHRpbmcgYSByaW5nLWhtZW1iZXJzaGlwIHByb29mIGRpcmVjdGx5LgAxAVRoaXMgaXMgYW4gYXV0aG9yaXplZCBleHRyaW5zaWM6IHRoZSBwcm9vZiBpdHNlbGYgaXMgdGhlIGF1dGhlbnRpY2F0aW9uLiBUaGVFAXBlci1wb29sIFtgUHJpemVQb29sQ2xhaW1zYF0gc3RvcmFnZSBpcyB0aGUgcmVwbGF5IGd1YXJkIOKAlCBlYWNoIGFsaWFzIG1heSBjbGFpbTkBb25jZSBwZXIgcG9vbC4gVGhlIHByb29mIGlzIGJvdW5kIHRvIGBiZW5lZmljaWFyeWAgKHNvIGEgY2FwdHVyZWQgcHJvb2YgY2Fubm90PQFyZWRpcmVjdCB0aGUgcHJpemUpIGFuZCB0byB0aGUgcG9vbCdzIGNvbnRleHQgKHNvIGEgcHJvb2YgY2Fubm90IGJlIHJlcGxheWVkIG9uSGEgZGlmZmVyZW50IHBvb2wpLgAlAWBhbGlhc2AgaXMgdGhlIHZhbHVlIHRoZSBwcm9vZiB2ZXJpZmllcyB0bzsgdGhlIGF1dGhvcml6ZSBjbG9zdXJlIHJlamVjdHMhAWBBbGlhc01pc21hdGNoYCBpZiBpdCBkaXNhZ3JlZXMgd2l0aCB0aGUgcHJvb2YuIFRoZSBkaXNwYXRjaCBib2R5IHRydXN0czUBYGFsaWFzYCBhbmQgc2tpcHMgYSBzZWNvbmQgdmVyaWZpY2F0aW9uIOKAlCB0aGlzIGlzIHNvdW5kIGJlY2F1c2UgdGhlIGNhbGwgaXM5AW9ubHkgcmVhY2hhYmxlIHRocm91Z2ggYGVuc3VyZV9hdXRob3JpemVkYCwgd2hpY2ggcHJvdmVzIHRoZSBhdXRob3JpemUgY2xvc3VyZSRhY2NlcHRlZC4AMQFUaGUgcHJvb2YncyBjb250ZXh0IGlzIGBjb250ZXh0X2Zvcl9wb29sX2lkKHBvb2xfaWQpYDsgdGhlIHByb29mIGlzIHZlcmlmaWVkNQFhZ2FpbnN0IGBQRU9QTEVfSURFTlRJRklFUmAgKGxpdGUtcGVvcGxlIGFyZSBub3QgZWxpZ2libGUpLiBUaGUgcG9vbCdzIHRhcmdldC0BbXVzdCBiZSBgUHJpemVUYXJnZXQ6OlBlb3BsZWA7IGBHYW1lUGFydGljaXBhbnRzYCBwb29scyBhcmUgY2xhaW1lZCB2aWEgdGhlAQFnYW1lIHBhbGxldCwgd2hpY2ggZm9yd2FyZHMgdG8gW2BBaXJkcm9wQXBpOjpjbGFpbV9nYW1lX3ByaXplYF0uQGNsb3NlX3ByaXplX3Bvb2wEARxwb29sX2lkOAEsUHJpemVQb29sSWQAAhgtAUNsb3NlIGEgcHJpemUgcG9vbCBlYXJseS4gT3JpZ2luIG11c3QgYmUgdGhlIHBvb2wncyBgZGlzcGF0Y2hlcmAgb3Igc2F0aXNmeUEBYFQ6Ok1hbmFnZXJPcmlnaW5gLiBSZWxlYXNlcyBgcHJpemVfdmFsdWUgKiBwcml6ZXNfcmVtYWluaW5nYCBvZiBoZWxkIGZ1bmRzIGJhY2s1AXRvIHRoZSBhaXJkcm9wIHBvdCBhbmQgbWFya3MgdGhlIHBvb2wgZXhwaXJlZC1ub3cgc28gdGhlIG9uLXBvbGwgY2xlYW51cCBsb29wPQFkcmFpbnMgYFByaXplUG9vbENsYWltc2Agb3ZlciBtdWx0aXBsZSB0aWNrcy4gVGhpcyBrZWVwcyB0aGUgZXh0cmluc2ljJ3Mgd2VpZ2h0HQFib3VuZGVkIGJ5IGBQcml6ZVBvb2xDbGVhckxpbWl0YCByZWdhcmRsZXNzIG9mIGhvdyBtYW55IGNsYWltcyB0aGUgcG9vbDBhY2N1bXVsYXRlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuZQUMUGluZGl2X3BhbGxldF9haXJkcm9wGHBhbGxldCxQcml6ZVRhcmdldAABCBhQZW9wbGUAAABAR2FtZVBhcnRpY2lwYW50cwQAOAEMdTMyAAEAAGkFDDRzcF9hcml0aG1ldGljKHBlcl90aGluZ3McUGVybWlsbAAABAA4AQx1MzIAAG0FDERwYWxsZXRfbWlncmF0aW9ucxhwYWxsZXQQQ2FsbAQEVAABEEBmb3JjZV9zZXRfY3Vyc29yBAEYY3Vyc29ycQUBTE9wdGlvbjxDdXJzb3JPZjxUPj4AABRdAUFsbG93cyByb290IHRvIHNldCBhIGN1cnNvciB0byBmb3JjZWZ1bGx5IHN0YXJ0LCBzdG9wIG9yIGZvcndhcmQgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzLgBJAVNob3VsZCBub3JtYWxseSBub3QgYmUgbmVlZGVkIGFuZCBpcyBvbmx5IGluIHBsYWNlIGFzIGVtZXJnZW5jeSBtZWFzdXJlLiBOb3RlIHRoYXQFAXJlc3RhcnRpbmcgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzIGluIHRoaXMgbWFubmVyIHdpbGwgbm90IGNhbGwgdGhlLQFbYE1pZ3JhdGlvblN0YXR1c0hhbmRsZXI6OnN0YXJ0ZWRgXSBob29rIG9yIGVtaXQgYW4gYFVwZ3JhZGVTdGFydGVkYCBldmVudC5cZm9yY2Vfc2V0X2FjdGl2ZV9jdXJzb3IMARRpbmRleDgBDHUzMgABMGlubmVyX2N1cnNvcoEFAVhPcHRpb248UmF3Q3Vyc29yT2Y8VD4+AAEoc3RhcnRlZF9hdAkDAWRPcHRpb248QmxvY2tOdW1iZXJGb3I8VD4+AAEYWQFBbGxvd3Mgcm9vdCB0byBzZXQgYW4gYWN0aXZlIGN1cnNvciB0byBmb3JjZWZ1bGx5IHN0YXJ0L2ZvcndhcmQgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzLgBFAVRoaXMgaXMgYW4gZWRnZS1jYXNlIHZlcnNpb24gb2YgW2BTZWxmOjpmb3JjZV9zZXRfY3Vyc29yYF0gdGhhdCBhbGxvd3MgdG8gc2V0IHRoZWEBYHN0YXJ0ZWRfYXRgIHZhbHVlIHRvIHRoZSBuZXh0IGJsb2NrIG51bWJlci4gT3RoZXJ3aXNlIHRoaXMgd291bGQgbm90IGJlIHBvc3NpYmxlLCBzaW5jZUUBYGZvcmNlX3NldF9jdXJzb3JgIHRha2VzIGFuIGFic29sdXRlIGJsb2NrIG51bWJlci4gU2V0dGluZyBgc3RhcnRlZF9hdGAgdG8gYE5vbmVgAQFpbmRpY2F0ZXMgdGhhdCB0aGUgY3VycmVudCBibG9jayBudW1iZXIgcGx1cyBvbmUgc2hvdWxkIGJlIHVzZWQuSGZvcmNlX29uYm9hcmRfbWJtcwACEKBGb3JjZXMgdGhlIG9uYm9hcmRpbmcgb2YgdGhlIG1pZ3JhdGlvbnMuAF0BVGhpcyBwcm9jZXNzIGhhcHBlbnMgYXV0b21hdGljYWxseSBvbiBhIHJ1bnRpbWUgdXBncmFkZS4gSXQgaXMgaW4gcGxhY2UgYXMgYW4gZW1lcmdlbmN5/G1lYXN1cmVtZW50LiBUaGUgY3Vyc29yIG5lZWRzIHRvIGJlIGBOb25lYCBmb3IgdGhpcyB0byBzdWNjZWVkLjhjbGVhcl9oaXN0b3JpYwQBIHNlbGVjdG9yhQUBoEhpc3RvcmljQ2xlYW51cFNlbGVjdG9yPElkZW50aWZpZXJPZjxUPj4AAxRoQ2xlYXJzIHRoZSBgSGlzdG9yaWNgIHNldC4ADQFgbWFwX2N1cnNvcmAgbXVzdCBiZSBzZXQgdG8gdGhlIGxhc3QgdmFsdWUgdGhhdCB3YXMgcmV0dXJuZWQgYnkgdGhlXQFgSGlzdG9yaWNDbGVhcmVkYCBldmVudC4gVGhlIGZpcnN0IHRpbWUgYE5vbmVgIGNhbiBiZSB1c2VkLiBgbGltaXRgIG11c3QgYmUgY2hvc2VuIGluIGGod2F5IHRoYXQgd2lsbCByZXN1bHQgaW4gYSBzZW5zaWJsZSB3ZWlnaHQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLnEFBBhPcHRpb24EBFQBdQUBCBBOb25lAAAAEFNvbWUEAHUFAAABAAB1BQhEcGFsbGV0X21pZ3JhdGlvbnM8TWlncmF0aW9uQ3Vyc29yCBhDdXJzb3IBeQUsQmxvY2tOdW1iZXIBOAEIGEFjdGl2ZQQAfQUBhEFjdGl2ZUN1cnNvcjxDdXJzb3IsIEJsb2NrTnVtYmVyPgAAABRTdHVjawABAAB5BQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAH0FCERwYWxsZXRfbWlncmF0aW9uczBBY3RpdmVDdXJzb3IIGEN1cnNvcgF5BSxCbG9ja051bWJlcgE4AAwBFGluZGV4OAEMdTMyAAEwaW5uZXJfY3Vyc29ygQUBOE9wdGlvbjxDdXJzb3I+AAEoc3RhcnRlZF9hdDgBLEJsb2NrTnVtYmVyAACBBQQYT3B0aW9uBARUAXkFAQgQTm9uZQAAABBTb21lBAB5BQAAAQAAhQUIRHBhbGxldF9taWdyYXRpb25zXEhpc3RvcmljQ2xlYW51cFNlbGVjdG9yBAhJZAGJBQEIIFNwZWNpZmljBACNBQEcVmVjPElkPgAAACBXaWxkY2FyZAgBFGxpbWl0CQMBLE9wdGlvbjx1MzI+AAE8cHJldmlvdXNfY3Vyc29ykQUBPE9wdGlvbjxWZWM8dTg+PgABAACJBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAI0FAAACiQUAkQUEGE9wdGlvbgQEVAEYAQgQTm9uZQAAABBTb21lBAAYAAABAACVBQxccGFsbGV0X3ZlcmlmeV9zaWduYXR1cmUkZXh0ZW5zaW9uPFZlcmlmeVNpZ25hdHVyZQQEVAABCCBEaXNhYmxlZAAAABhTaWduZWQIASRzaWduYXR1cmU1BAEwVDo6U2lnbmF0dXJlAAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABAACZBQxMaW5kaXZfcGFsbGV0X3Blb3BsZSRleHRlbnNpb24gQXNQZXJzb24EBFQAAAQAnQUBXE9wdGlvbjxBc1BlcnNvbkluZm88VD4+AACdBQQYT3B0aW9uBARUAaEFAQgQTm9uZQAAABBTb21lBAChBQAAAQAAoQUMTGluZGl2X3BhbGxldF9wZW9wbGUkZXh0ZW5zaW9uMEFzUGVyc29uSW5mbwQEVAABFGhBc1BlcnNvbmFsQWxpYXNXaXRoQWNjb3VudAQAOAEgVDo6Tm9uY2UAAABgQXNQZXJzb25hbEFsaWFzV2l0aFByb29mDAB9AwEoUHJvb2ZPZjxUPgAAOAEkUmluZ0luZGV4AAAIARxDb250ZXh0AAEAbEFzUGVyc29uYWxJZGVudGl0eVdpdGhQcm9vZggAbQQBOFNpZ25hdHVyZU9mPFQ+AAAoAShQZXJzb25hbElkAAIAdEFzUGVyc29uYWxJZGVudGl0eVdpdGhBY2NvdW50BAA4ASBUOjpOb25jZQADAIRBc1BlcnNvbmFsQWxpYXNXaXRoQWNjb3VudFJldmlzZWQQADgBIFQ6Ok5vbmNlAAB9AwEoUHJvb2ZPZjxUPgAAOAEkUmluZ0luZGV4AAAIARxDb250ZXh0AAQAAKUFDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rJGV4dGVuc2lvblxBc1Byb29mT2ZJbmtQYXJ0aWNpcGFudAQEVAAABACpBQGYT3B0aW9uPEFzUHJvb2ZPZklua1BhcnRpY2lwYW50SW5mbzxUPj4AAKkFBBhPcHRpb24EBFQBrQUBCBBOb25lAAAAEFNvbWUEAK0FAAABAACtBQxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luayRleHRlbnNpb25sQXNQcm9vZk9mSW5rUGFydGljaXBhbnRJbmZvBARUAAEMOEFzQXBwbHlXaXRoU2lnBAA4ASBUOjpOb25jZQAAAChBc1JlZmVycmVkBAA4ASBUOjpOb25jZQABACRBc0ludml0ZWQEADgBIFQ6Ok5vbmNlAAIAALEFDEhpbmRpdl9wYWxsZXRfc2NvcmUkZXh0ZW5zaW9uSFNjb3JlQXNQYXJ0aWNpcGFudAQEVAAABAC1BQGgT3B0aW9uPFNjb3JlQXNQYXJ0aWNpcGFudERhdGE8VDo6Tm9uY2U+PgAAtQUEGE9wdGlvbgQEVAG5BQEIEE5vbmUAAAAQU29tZQQAuQUAAAEAALkFDEhpbmRpdl9wYWxsZXRfc2NvcmUkZXh0ZW5zaW9uWFNjb3JlQXNQYXJ0aWNpcGFudERhdGEEFE5vbmNlATgABAEUbm9uY2U4ARROb25jZQAAvQUMRGluZGl2X3BhbGxldF9nYW1lJGV4dGVuc2lvbjRHYW1lQXNJbnZpdGVkBARUAAAEAMEFAXBPcHRpb248R2FtZUFzSW52aXRlZERhdGE8VD4+AADBBQQYT3B0aW9uBARUAcUFAQgQTm9uZQAAABBTb21lBADFBQAAAQAAxQUMRGluZGl2X3BhbGxldF9nYW1lJGV4dGVuc2lvbkRHYW1lQXNJbnZpdGVkRGF0YQQEVAAAEAEUbm9uY2U4ASBUOjpOb25jZQABHGludml0ZXIEATBUOjpBY2NvdW50SWQAARh0aWNrZXQEASxUaWNrZXRPZjxUPgABJHNpZ25hdHVyZTUEAUhUOjpUaWNrZXRTaWduYXR1cmUAAMkFDGBpbmRpdl9wYWxsZXRfcGVvcGxlX2xpdGUkZXh0ZW5zaW9uOFBlb3BsZUxpdGVBdXRoBARUAAAEAM0FAXxPcHRpb248UGVvcGxlTGl0ZUF1dGhEYXRhT2Y8VD4+AADNBQQYT3B0aW9uBARUAdEFAQgQTm9uZQAAABBTb21lBADRBQAAAQAA0QUMYGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZSRleHRlbnNpb25IUGVvcGxlTGl0ZUF1dGhEYXRhCBROb25jZQE4FFByb29mAX0DARAwQXNMaXRlUGVyc29uBAA4ARROb25jZQAAAFhBc0xpdGVBbGlhc1dpdGhBY2NvdW50BAA4ARROb25jZQABAFBBc0xpdGVBbGlhc1dpdGhQcm9vZgwAfQMBFFByb29mAAA4ASRSaW5nSW5kZXgAAAgBHENvbnRleHQAAgB0QXNMaXRlQWxpYXNXaXRoQWNjb3VudFJldmlzZWQQADgBFE5vbmNlAAB9AwEUUHJvb2YAADgBJFJpbmdJbmRleAAACAEcQ29udGV4dAADAADVBQxQaW5kaXZfcGFsbGV0X21lbWJlcnMkZXh0ZW5zaW9uIEFzTWVtYmVyBARUAAAEANkFAVxPcHRpb248QXNNZW1iZXJJbmZvPFQ+PgAA2QUEGE9wdGlvbgQEVAHdBQEIEE5vbmUAAAAQU29tZQQA3QUAAAEAAN0FDFBpbmRpdl9wYWxsZXRfbWVtYmVycyRleHRlbnNpb24wQXNNZW1iZXJJbmZvBARUAAEELFNlbGZJbmNsdWRlBABtBAE4U2lnbmF0dXJlT2Y8VD4AAAAA4QUMUGluZGl2X3BhbGxldF9jb2luYWdlJGV4dGVuc2lvbiRBc0NvaW5hZ2UEBFQAAAQA5QUBYE9wdGlvbjxBc0NvaW5hZ2VJbmZvPFQ+PgAA5QUEGE9wdGlvbgQEVAHpBQEIEE5vbmUAAAAQU29tZQQA6QUAAAEAAOkFDFBpbmRpdl9wYWxsZXRfY29pbmFnZSRleHRlbnNpb240QXNDb2luYWdlSW5mbwQEVAABGBhBc0NvaW4AAABMQXNVbmxvYWRUb2tlblBlb3BsZRABFHByb29m7QUBoDxUOjpQZW9wbGVQcm9vZiBhcyBWYWxpZGF0ZVByb29mPjo6UHJvb2YAARhwZXJpb2Q4ARhQZXJpb2QAARxjb3VudGVyOAEMdTMyAAEwYWxpYXNfcHJvb2ZzeQMBrEJvdW5kZWRWZWM8UHJvb2ZPZjxUPiwgVDo6TWF4Q29uc29saWRhdGlvbj4AAQBcQXNVbmxvYWRUb2tlbkxpdGVQZW9wbGUQARRwcm9vZvEFAbA8VDo6TGl0ZVBlb3BsZVByb29mIGFzIFZhbGlkYXRlUHJvb2Y+OjpQcm9vZgABGHBlcmlvZDgBGFBlcmlvZAABHGNvdW50ZXI4AQx1MzIAATBhbGlhc19wcm9vZnN5AwGsQm91bmRlZFZlYzxQcm9vZk9mPFQ+LCBUOjpNYXhDb25zb2xpZGF0aW9uPgACAERBc1VubG9hZFRva2VuUGFpZBQBFHByb29mfQMBKFByb29mT2Y8VD4AARhwZXJpb2Q4ARhQZXJpb2QAAVRwYWlkX3Rva2VuX3JpbmdfaW5kZXg4AQx1MzIAAWBwYWlkX3Rva2VuX3JpbmdfcmV2aXNpb244AQx1MzIAATBhbGlhc19wcm9vZnN5AwGsQm91bmRlZFZlYzxQcm9vZk9mPFQ+LCBUOjpNYXhDb25zb2xpZGF0aW9uPgADAFxBc1VubG9hZFRva2VuRnJvbU91dHB1dBABSGZlZV9yZWN5Y2xlcl92YWx1ZXUDASRDb2luVmFsdWUAAUhmZWVfcmVjeWNsZXJfaW5kZXg4ASRSaW5nSW5kZXgAAVRmZWVfcmVjeWNsZXJfcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEwYWxpYXNfcHJvb2ZzeQMBrEJvdW5kZWRWZWM8UHJvb2ZPZjxUPiwgVDo6TWF4Q29uc29saWRhdGlvbj4ABABYSW5mYWxsaWJsZVVucGFpZFNpZ25lZAQBFG5vbmNlOAEgVDo6Tm9uY2UABQAA7QUMZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWUYcGVvcGxlLFBlb3BsZVByb29mAAAIARRwcm9vZn0DAeA8QmFuZGVyc25hdGNoVnJmVmVyaWZpYWJsZSBhcyBHZW5lcmF0ZVZlcmlmaWFibGU+OjpQcm9vZgABEHJpbmc4ASRSaW5nSW5kZXgAAPEFDGRuZXh0X3Blb3BsZV9wYXNlb19ydW50aW1lGHBlb3BsZTxMaXRlUGVvcGxlUHJvb2YAAAgBFHByb29mfQMB4DxCYW5kZXJzbmF0Y2hWcmZWZXJpZmlhYmxlIGFzIEdlbmVyYXRlVmVyaWZpYWJsZT46OlByb29mAAEQcmluZzgBJFJpbmdJbmRleAAA9QUMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMkZXh0ZW5zaW9uLEFzUmVzb3VyY2VzBARUAAAEAPkFAWhPcHRpb248QXNSZXNvdXJjZXNJbmZvPFQ+PgAA+QUEGE9wdGlvbgQEVAH9BQEIEE5vbmUAAAAQU29tZQQA/QUAAAEAAP0FDFhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzJGV4dGVuc2lvbjxBc1Jlc291cmNlc0luZm8EBFQAARB4UmVnaXN0ZXJGcmllbmRSZXF1ZXN0V2l0aFByb29mCAB9AwEoUHJvb2ZPZjxUPgAAOAEkUmluZ0luZGV4AAAAiFJlZ2lzdGVyRnJpZW5kUmVxdWVzdEZvckNvbGxlY3Rpb24MAH0DAShQcm9vZk9mPFQ+AAA4ASRSaW5nSW5kZXgAAGEDAVBNZW1iZXJzaGlwQ29sbGVjdGlvbgABAHxSZWdpc3RlclN0YXRlbWVudFN0b3JlQWxsb3dhbmNlDAB9AwEoUHJvb2ZPZjxUPgAAOAEkUmluZ0luZGV4AABhAwFQTWVtYmVyc2hpcENvbGxlY3Rpb24AAgBQQ2xhaW1Mb25nVGVybVN0b3JhZ2UQAH0DAShQcm9vZk9mPFQ+AAA4ASRSaW5nSW5kZXgAADgBNFJldmlzaW9uSW5kZXgAAGEDAVBNZW1iZXJzaGlwQ29sbGVjdGlvbgADAAABBhAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnM4YXV0aG9yaXplX2NhbGw0QXV0aG9yaXplQ2FsbAQEVAAAAAAFBgh8aW5kaXZfcGFsbGV0X29yaWdpbl9yZXN0cmljdGlvbjhSZXN0cmljdE9yaWdpbgQEVAAABADIARBib29sAAAJBhAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnNUY2hlY2tfbm9uX3plcm9fc2VuZGVySENoZWNrTm9uWmVyb1NlbmRlcgQEVAAAAAANBhAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnNIY2hlY2tfc3BlY192ZXJzaW9uQENoZWNrU3BlY1ZlcnNpb24EBFQAAAAAEQYQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zQGNoZWNrX3R4X3ZlcnNpb244Q2hlY2tUeFZlcnNpb24EBFQAAAAAFQYQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zNGNoZWNrX2dlbmVzaXMwQ2hlY2tHZW5lc2lzBARUAAAAABkGEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uczxjaGVja19tb3J0YWxpdHk4Q2hlY2tNb3J0YWxpdHkEBFQAAAQAHQYBDEVyYQAAHQYQKHNwX3J1bnRpbWUcZ2VuZXJpYwxlcmEMRXJhAAEBBCBJbW1vcnRhbAAAABxNb3J0YWwxBAAMAAABABxNb3J0YWwyBAAMAAACABxNb3J0YWwzBAAMAAADABxNb3J0YWw0BAAMAAAEABxNb3J0YWw1BAAMAAAFABxNb3J0YWw2BAAMAAAGABxNb3J0YWw3BAAMAAAHABxNb3J0YWw4BAAMAAAIABxNb3J0YWw5BAAMAAAJACBNb3J0YWwxMAQADAAACgAgTW9ydGFsMTEEAAwAAAsAIE1vcnRhbDEyBAAMAAAMACBNb3J0YWwxMwQADAAADQAgTW9ydGFsMTQEAAwAAA4AIE1vcnRhbDE1BAAMAAAPACBNb3J0YWwxNgQADAAAEAAgTW9ydGFsMTcEAAwAABEAIE1vcnRhbDE4BAAMAAASACBNb3J0YWwxOQQADAAAEwAgTW9ydGFsMjAEAAwAABQAIE1vcnRhbDIxBAAMAAAVACBNb3J0YWwyMgQADAAAFgAgTW9ydGFsMjMEAAwAABcAIE1vcnRhbDI0BAAMAAAYACBNb3J0YWwyNQQADAAAGQAgTW9ydGFsMjYEAAwAABoAIE1vcnRhbDI3BAAMAAAbACBNb3J0YWwyOAQADAAAHAAgTW9ydGFsMjkEAAwAAB0AIE1vcnRhbDMwBAAMAAAeACBNb3J0YWwzMQQADAAAHwAgTW9ydGFsMzIEAAwAACAAIE1vcnRhbDMzBAAMAAAhACBNb3J0YWwzNAQADAAAIgAgTW9ydGFsMzUEAAwAACMAIE1vcnRhbDM2BAAMAAAkACBNb3J0YWwzNwQADAAAJQAgTW9ydGFsMzgEAAwAACYAIE1vcnRhbDM5BAAMAAAnACBNb3J0YWw0MAQADAAAKAAgTW9ydGFsNDEEAAwAACkAIE1vcnRhbDQyBAAMAAAqACBNb3J0YWw0MwQADAAAKwAgTW9ydGFsNDQEAAwAACwAIE1vcnRhbDQ1BAAMAAAtACBNb3J0YWw0NgQADAAALgAgTW9ydGFsNDcEAAwAAC8AIE1vcnRhbDQ4BAAMAAAwACBNb3J0YWw0OQQADAAAMQAgTW9ydGFsNTAEAAwAADIAIE1vcnRhbDUxBAAMAAAzACBNb3J0YWw1MgQADAAANAAgTW9ydGFsNTMEAAwAADUAIE1vcnRhbDU0BAAMAAA2ACBNb3J0YWw1NQQADAAANwAgTW9ydGFsNTYEAAwAADgAIE1vcnRhbDU3BAAMAAA5ACBNb3J0YWw1OAQADAAAOgAgTW9ydGFsNTkEAAwAADsAIE1vcnRhbDYwBAAMAAA8ACBNb3J0YWw2MQQADAAAPQAgTW9ydGFsNjIEAAwAAD4AIE1vcnRhbDYzBAAMAAA/ACBNb3J0YWw2NAQADAAAQAAgTW9ydGFsNjUEAAwAAEEAIE1vcnRhbDY2BAAMAABCACBNb3J0YWw2NwQADAAAQwAgTW9ydGFsNjgEAAwAAEQAIE1vcnRhbDY5BAAMAABFACBNb3J0YWw3MAQADAAARgAgTW9ydGFsNzEEAAwAAEcAIE1vcnRhbDcyBAAMAABIACBNb3J0YWw3MwQADAAASQAgTW9ydGFsNzQEAAwAAEoAIE1vcnRhbDc1BAAMAABLACBNb3J0YWw3NgQADAAATAAgTW9ydGFsNzcEAAwAAE0AIE1vcnRhbDc4BAAMAABOACBNb3J0YWw3OQQADAAATwAgTW9ydGFsODAEAAwAAFAAIE1vcnRhbDgxBAAMAABRACBNb3J0YWw4MgQADAAAUgAgTW9ydGFsODMEAAwAAFMAIE1vcnRhbDg0BAAMAABUACBNb3J0YWw4NQQADAAAVQAgTW9ydGFsODYEAAwAAFYAIE1vcnRhbDg3BAAMAABXACBNb3J0YWw4OAQADAAAWAAgTW9ydGFsODkEAAwAAFkAIE1vcnRhbDkwBAAMAABaACBNb3J0YWw5MQQADAAAWwAgTW9ydGFsOTIEAAwAAFwAIE1vcnRhbDkzBAAMAABdACBNb3J0YWw5NAQADAAAXgAgTW9ydGFsOTUEAAwAAF8AIE1vcnRhbDk2BAAMAABgACBNb3J0YWw5NwQADAAAYQAgTW9ydGFsOTgEAAwAAGIAIE1vcnRhbDk5BAAMAABjACRNb3J0YWwxMDAEAAwAAGQAJE1vcnRhbDEwMQQADAAAZQAkTW9ydGFsMTAyBAAMAABmACRNb3J0YWwxMDMEAAwAAGcAJE1vcnRhbDEwNAQADAAAaAAkTW9ydGFsMTA1BAAMAABpACRNb3J0YWwxMDYEAAwAAGoAJE1vcnRhbDEwNwQADAAAawAkTW9ydGFsMTA4BAAMAABsACRNb3J0YWwxMDkEAAwAAG0AJE1vcnRhbDExMAQADAAAbgAkTW9ydGFsMTExBAAMAABvACRNb3J0YWwxMTIEAAwAAHAAJE1vcnRhbDExMwQADAAAcQAkTW9ydGFsMTE0BAAMAAByACRNb3J0YWwxMTUEAAwAAHMAJE1vcnRhbDExNgQADAAAdAAkTW9ydGFsMTE3BAAMAAB1ACRNb3J0YWwxMTgEAAwAAHYAJE1vcnRhbDExOQQADAAAdwAkTW9ydGFsMTIwBAAMAAB4ACRNb3J0YWwxMjEEAAwAAHkAJE1vcnRhbDEyMgQADAAAegAkTW9ydGFsMTIzBAAMAAB7ACRNb3J0YWwxMjQEAAwAAHwAJE1vcnRhbDEyNQQADAAAfQAkTW9ydGFsMTI2BAAMAAB+ACRNb3J0YWwxMjcEAAwAAH8AJE1vcnRhbDEyOAQADAAAgAAkTW9ydGFsMTI5BAAMAACBACRNb3J0YWwxMzAEAAwAAIIAJE1vcnRhbDEzMQQADAAAgwAkTW9ydGFsMTMyBAAMAACEACRNb3J0YWwxMzMEAAwAAIUAJE1vcnRhbDEzNAQADAAAhgAkTW9ydGFsMTM1BAAMAACHACRNb3J0YWwxMzYEAAwAAIgAJE1vcnRhbDEzNwQADAAAiQAkTW9ydGFsMTM4BAAMAACKACRNb3J0YWwxMzkEAAwAAIsAJE1vcnRhbDE0MAQADAAAjAAkTW9ydGFsMTQxBAAMAACNACRNb3J0YWwxNDIEAAwAAI4AJE1vcnRhbDE0MwQADAAAjwAkTW9ydGFsMTQ0BAAMAACQACRNb3J0YWwxNDUEAAwAAJEAJE1vcnRhbDE0NgQADAAAkgAkTW9ydGFsMTQ3BAAMAACTACRNb3J0YWwxNDgEAAwAAJQAJE1vcnRhbDE0OQQADAAAlQAkTW9ydGFsMTUwBAAMAACWACRNb3J0YWwxNTEEAAwAAJcAJE1vcnRhbDE1MgQADAAAmAAkTW9ydGFsMTUzBAAMAACZACRNb3J0YWwxNTQEAAwAAJoAJE1vcnRhbDE1NQQADAAAmwAkTW9ydGFsMTU2BAAMAACcACRNb3J0YWwxNTcEAAwAAJ0AJE1vcnRhbDE1OAQADAAAngAkTW9ydGFsMTU5BAAMAACfACRNb3J0YWwxNjAEAAwAAKAAJE1vcnRhbDE2MQQADAAAoQAkTW9ydGFsMTYyBAAMAACiACRNb3J0YWwxNjMEAAwAAKMAJE1vcnRhbDE2NAQADAAApAAkTW9ydGFsMTY1BAAMAAClACRNb3J0YWwxNjYEAAwAAKYAJE1vcnRhbDE2NwQADAAApwAkTW9ydGFsMTY4BAAMAACoACRNb3J0YWwxNjkEAAwAAKkAJE1vcnRhbDE3MAQADAAAqgAkTW9ydGFsMTcxBAAMAACrACRNb3J0YWwxNzIEAAwAAKwAJE1vcnRhbDE3MwQADAAArQAkTW9ydGFsMTc0BAAMAACuACRNb3J0YWwxNzUEAAwAAK8AJE1vcnRhbDE3NgQADAAAsAAkTW9ydGFsMTc3BAAMAACxACRNb3J0YWwxNzgEAAwAALIAJE1vcnRhbDE3OQQADAAAswAkTW9ydGFsMTgwBAAMAAC0ACRNb3J0YWwxODEEAAwAALUAJE1vcnRhbDE4MgQADAAAtgAkTW9ydGFsMTgzBAAMAAC3ACRNb3J0YWwxODQEAAwAALgAJE1vcnRhbDE4NQQADAAAuQAkTW9ydGFsMTg2BAAMAAC6ACRNb3J0YWwxODcEAAwAALsAJE1vcnRhbDE4OAQADAAAvAAkTW9ydGFsMTg5BAAMAAC9ACRNb3J0YWwxOTAEAAwAAL4AJE1vcnRhbDE5MQQADAAAvwAkTW9ydGFsMTkyBAAMAADAACRNb3J0YWwxOTMEAAwAAMEAJE1vcnRhbDE5NAQADAAAwgAkTW9ydGFsMTk1BAAMAADDACRNb3J0YWwxOTYEAAwAAMQAJE1vcnRhbDE5NwQADAAAxQAkTW9ydGFsMTk4BAAMAADGACRNb3J0YWwxOTkEAAwAAMcAJE1vcnRhbDIwMAQADAAAyAAkTW9ydGFsMjAxBAAMAADJACRNb3J0YWwyMDIEAAwAAMoAJE1vcnRhbDIwMwQADAAAywAkTW9ydGFsMjA0BAAMAADMACRNb3J0YWwyMDUEAAwAAM0AJE1vcnRhbDIwNgQADAAAzgAkTW9ydGFsMjA3BAAMAADPACRNb3J0YWwyMDgEAAwAANAAJE1vcnRhbDIwOQQADAAA0QAkTW9ydGFsMjEwBAAMAADSACRNb3J0YWwyMTEEAAwAANMAJE1vcnRhbDIxMgQADAAA1AAkTW9ydGFsMjEzBAAMAADVACRNb3J0YWwyMTQEAAwAANYAJE1vcnRhbDIxNQQADAAA1wAkTW9ydGFsMjE2BAAMAADYACRNb3J0YWwyMTcEAAwAANkAJE1vcnRhbDIxOAQADAAA2gAkTW9ydGFsMjE5BAAMAADbACRNb3J0YWwyMjAEAAwAANwAJE1vcnRhbDIyMQQADAAA3QAkTW9ydGFsMjIyBAAMAADeACRNb3J0YWwyMjMEAAwAAN8AJE1vcnRhbDIyNAQADAAA4AAkTW9ydGFsMjI1BAAMAADhACRNb3J0YWwyMjYEAAwAAOIAJE1vcnRhbDIyNwQADAAA4wAkTW9ydGFsMjI4BAAMAADkACRNb3J0YWwyMjkEAAwAAOUAJE1vcnRhbDIzMAQADAAA5gAkTW9ydGFsMjMxBAAMAADnACRNb3J0YWwyMzIEAAwAAOgAJE1vcnRhbDIzMwQADAAA6QAkTW9ydGFsMjM0BAAMAADqACRNb3J0YWwyMzUEAAwAAOsAJE1vcnRhbDIzNgQADAAA7AAkTW9ydGFsMjM3BAAMAADtACRNb3J0YWwyMzgEAAwAAO4AJE1vcnRhbDIzOQQADAAA7wAkTW9ydGFsMjQwBAAMAADwACRNb3J0YWwyNDEEAAwAAPEAJE1vcnRhbDI0MgQADAAA8gAkTW9ydGFsMjQzBAAMAADzACRNb3J0YWwyNDQEAAwAAPQAJE1vcnRhbDI0NQQADAAA9QAkTW9ydGFsMjQ2BAAMAAD2ACRNb3J0YWwyNDcEAAwAAPcAJE1vcnRhbDI0OAQADAAA+AAkTW9ydGFsMjQ5BAAMAAD5ACRNb3J0YWwyNTAEAAwAAPoAJE1vcnRhbDI1MQQADAAA+wAkTW9ydGFsMjUyBAAMAAD8ACRNb3J0YWwyNTMEAAwAAP0AJE1vcnRhbDI1NAQADAAA/gAkTW9ydGFsMjU1BAAMAAD/AAAhBhAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnMsY2hlY2tfbm9uY2UoQ2hlY2tOb25jZQQEVAAABABgASBUOjpOb25jZQAAJQYQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zMGNoZWNrX3dlaWdodCxDaGVja1dlaWdodAQEVAAAAAApBghccGFsbGV0X2Fzc2V0X3R4X3BheW1lbnRQQ2hhcmdlQXNzZXRUeFBheW1lbnQEBFQAAAgBDHRpcMABMEJhbGFuY2VPZjxUPgABIGFzc2V0X2lkoQIBaE9wdGlvbjxDaGFyZ2VBc3NldElkT2Y8VD4+AAAtBggwZnJhbWVfc3lzdGVtLEFjY291bnRJbmZvCBROb25jZQE4LEFjY291bnREYXRhATEGABQBFG5vbmNlOAEUTm9uY2UAASRjb25zdW1lcnM4ASBSZWZDb3VudAABJHByb3ZpZGVyczgBIFJlZkNvdW50AAEsc3VmZmljaWVudHM4ASBSZWZDb3VudAABEGRhdGExBgEsQWNjb3VudERhdGEAADEGDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMsQWNjb3VudERhdGEEHEJhbGFuY2UBxAAQARBmcmVlxAEcQmFsYW5jZQABIHJlc2VydmVkxAEcQmFsYW5jZQABGGZyb3plbsQBHEJhbGFuY2UAARRmbGFnczUGAShFeHRyYUZsYWdzAAA1Bgw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzKEV4dHJhRmxhZ3MAAAQAxAEQdTEyOAAAOQYMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUGVyRGlzcGF0Y2hDbGFzcwQEVAHVAQAMARhub3JtYWzVAQEEVAABLG9wZXJhdGlvbmFs1QEBBFQAASRtYW5kYXRvcnnVAQEEVAAAPQYAAAJBBgBBBggwZnJhbWVfc3lzdGVtLEV2ZW50UmVjb3JkCARFAUUGBFQBPAAMARRwaGFzZVEHARRQaGFzZQABFGV2ZW50RQYBBEUAARh0b3BpY3NVBwEYVmVjPFQ+AABFBghkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZTBSdW50aW1lRXZlbnQAAZQYU3lzdGVtBABJBgFwZnJhbWVfc3lzdGVtOjpFdmVudDxSdW50aW1lPgAAADxQYXJhY2hhaW5TeXN0ZW0EAHEGAbxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtOjpFdmVudDxSdW50aW1lPgABACBCYWxhbmNlcwQAeQYBfHBhbGxldF9iYWxhbmNlczo6RXZlbnQ8UnVudGltZT4ACgBIVHJhbnNhY3Rpb25QYXltZW50BACpBgGocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQ6OkV2ZW50PFJ1bnRpbWU+AAsASFNraXBGZWVsZXNzUGF5bWVudAQArQYBrHBhbGxldF9za2lwX2ZlZWxlc3NfcGF5bWVudDo6RXZlbnQ8UnVudGltZT4ADABET3JpZ2luUmVzdHJpY3Rpb24EALEGAbxpbmRpdl9wYWxsZXRfb3JpZ2luX3Jlc3RyaWN0aW9uOjpFdmVudDxSdW50aW1lPgANABhBc3NldHMEALUGAXRwYWxsZXRfYXNzZXRzOjpFdmVudDxSdW50aW1lPgAOADBBc3NldHNIb2xkZXIEALkGAZBwYWxsZXRfYXNzZXRzX2hvbGRlcjo6RXZlbnQ8UnVudGltZT4ADwAkQXNzZXRSYXRlBAC9BgGEcGFsbGV0X2Fzc2V0X3JhdGU6OkV2ZW50PFJ1bnRpbWU+ABAAOEFzc2V0VHhQYXltZW50BADBBgGccGFsbGV0X2Fzc2V0X3R4X3BheW1lbnQ6OkV2ZW50PFJ1bnRpbWU+ABEARENvbGxhdG9yU2VsZWN0aW9uBADFBgGkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbjo6RXZlbnQ8UnVudGltZT4AFQAcU2Vzc2lvbgQAyQYBeHBhbGxldF9zZXNzaW9uOjpFdmVudDxSdW50aW1lPgAWACRYY21wUXVldWUEAM0GAaRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlOjpFdmVudDxSdW50aW1lPgAeACxQb2xrYWRvdFhjbQQA0QYBaHBhbGxldF94Y206OkV2ZW50PFJ1bnRpbWU+AB8AKEN1bXVsdXNYY20EAOEGAYhjdW11bHVzX3BhbGxldF94Y206OkV2ZW50PFJ1bnRpbWU+ACAAME1lc3NhZ2VRdWV1ZQQA5QYBkHBhbGxldF9tZXNzYWdlX3F1ZXVlOjpFdmVudDxSdW50aW1lPgAiABxVdGlsaXR5BADtBgFUcGFsbGV0X3V0aWxpdHk6OkV2ZW50ACgAIE11bHRpc2lnBAD1BgF8cGFsbGV0X211bHRpc2lnOjpFdmVudDxSdW50aW1lPgApABBTdWRvBAD5BgFscGFsbGV0X3N1ZG86OkV2ZW50PFJ1bnRpbWU+ACoAFFByb3h5BAABBwFwcGFsbGV0X3Byb3h5OjpFdmVudDxSdW50aW1lPgAsACBJZGVudGl0eQQACQcBlGluZGl2X3BhbGxldF9pZGVudGl0eTo6RXZlbnQ8UnVudGltZT4AMgAYUGVvcGxlBAANBwGMaW5kaXZfcGFsbGV0X3Blb3BsZTo6RXZlbnQ8UnVudGltZT4AMwAcTW9iUnVsZQQAEQcBlGluZGl2X3BhbGxldF9tb2JfcnVsZTo6RXZlbnQ8UnVudGltZT4ANAAoUHJvb2ZPZkluawQAFQcBpGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbms6OkV2ZW50PFJ1bnRpbWU+ADUAEEdhbWUEABkHAYRpbmRpdl9wYWxsZXRfZ2FtZTo6RXZlbnQ8UnVudGltZT4ANwAUU2NvcmUEACEHAYhpbmRpdl9wYWxsZXRfc2NvcmU6OkV2ZW50PFJ1bnRpbWU+ADgAIER1bW15RGltBAAlBwGYaW5kaXZfcGFsbGV0X2R1bW15X2RpbTo6RXZlbnQ8UnVudGltZT4AOwAoUGVvcGxlTGl0ZQQAKQcBoGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZTo6RXZlbnQ8UnVudGltZT4APgAkUmVzb3VyY2VzBAAtBwGYaW5kaXZfcGFsbGV0X3Jlc291cmNlczo6RXZlbnQ8UnVudGltZT4APwA0Q2h1bmtzTWFuYWdlcgQAMQcBrGluZGl2X3BhbGxldF9jaHVua3NfbWFuYWdlcjo6RXZlbnQ8UnVudGltZT4AQAAcTWVtYmVycwQANQcBkGluZGl2X3BhbGxldF9tZW1iZXJzOjpFdmVudDxSdW50aW1lPgBDABxDb2luYWdlBAA5BwGQaW5kaXZfcGFsbGV0X2NvaW5hZ2U6OkV2ZW50PFJ1bnRpbWU+AEQAPE1lbWJlcnNOb3RpZmllcgQAPQcBtGluZGl2X3BhbGxldF9tZW1iZXJzX25vdGlmaWVyOjpFdmVudDxSdW50aW1lPgBFAFRTdG9yYWdlSW5pdGlhbGl6YXRpb24EAEEHAcxpbmRpdl9wYWxsZXRfc3RvcmFnZV9pbml0aWFsaXphdGlvbjo6RXZlbnQ8UnVudGltZT4APABkU3RvcmFnZUluaXRpYWxpemF0aW9uTGl0ZQQARQcB4GluZGl2X3BhbGxldF9zdG9yYWdlX2luaXRpYWxpemF0aW9uX2xpdGU6OkV2ZW50PFJ1bnRpbWU+AEEAHEFpcmRyb3AEAEkHAZBpbmRpdl9wYWxsZXRfYWlyZHJvcDo6RXZlbnQ8UnVudGltZT4APQBQTXVsdGlCbG9ja01pZ3JhdGlvbnMEAE0HAYRwYWxsZXRfbWlncmF0aW9uczo6RXZlbnQ8UnVudGltZT4AYgAASQYMMGZyYW1lX3N5c3RlbRhwYWxsZXQURXZlbnQEBFQAASBARXh0cmluc2ljU3VjY2VzcwQBNGRpc3BhdGNoX2luZm9NBgFERGlzcGF0Y2hFdmVudEluZm8AAASQQW4gZXh0cmluc2ljIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuPEV4dHJpbnNpY0ZhaWxlZAgBOGRpc3BhdGNoX2Vycm9yWQYBNERpc3BhdGNoRXJyb3IAATRkaXNwYXRjaF9pbmZvTQYBRERpc3BhdGNoRXZlbnRJbmZvAAEEUEFuIGV4dHJpbnNpYyBmYWlsZWQuLENvZGVVcGRhdGVkBAEQaGFzaDwBHFQ6Okhhc2gAAgTQYDpjb2RlYCB3YXMgdXBkYXRlZCB0byB0aGUgY29kZSB3aXRoIHRoZSBnaXZlbiBoYXNoLihOZXdBY2NvdW50BAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAADBGhBIG5ldyBhY2NvdW50IHdhcyBjcmVhdGVkLjRLaWxsZWRBY2NvdW50BAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAEBFhBbiBhY2NvdW50IHdhcyByZWFwZWQuIFJlbWFya2VkCAEYc2VuZGVyBAEwVDo6QWNjb3VudElkAAEQaGFzaDwBHFQ6Okhhc2gABQRwT24gb24tY2hhaW4gcmVtYXJrIGhhcHBlbmVkLkRVcGdyYWRlQXV0aG9yaXplZAgBJGNvZGVfaGFzaDwBHFQ6Okhhc2gAATRjaGVja192ZXJzaW9uyAEQYm9vbAAGBGhBbiB1cGdyYWRlIHdhcyBhdXRob3JpemVkLoBSZWplY3RlZEludmFsaWRBdXRob3JpemVkVXBncmFkZQgBJGNvZGVfaGFzaDwBHFQ6Okhhc2gAARRlcnJvclkGATREaXNwYXRjaEVycm9yAAcEEQFBbiBpbnZhbGlkIGF1dGhvcml6ZWQgdXBncmFkZSB3YXMgcmVqZWN0ZWQgd2hpbGUgdHJ5aW5nIHRvIGFwcGx5IGl0LgRwRXZlbnQgZm9yIHRoZSBTeXN0ZW0gcGFsbGV0Lk0GCDBmcmFtZV9zeXN0ZW1ERGlzcGF0Y2hFdmVudEluZm8AAAwBGHdlaWdodNUBARhXZWlnaHQAARRjbGFzc1EGATREaXNwYXRjaENsYXNzAAEgcGF5c19mZWVVBgEQUGF5cwAAUQYMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2g0RGlzcGF0Y2hDbGFzcwABDBhOb3JtYWwAAAAsT3BlcmF0aW9uYWwAAQAkTWFuZGF0b3J5AAIAAFUGDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoEFBheXMAAQgMWWVzAAAACE5vAAEAAFkGCChzcF9ydW50aW1lNERpc3BhdGNoRXJyb3IAATwUT3RoZXIAAAAwQ2Fubm90TG9va3VwAAEAJEJhZE9yaWdpbgACABhNb2R1bGUEAF0GASxNb2R1bGVFcnJvcgADAERDb25zdW1lclJlbWFpbmluZwAEACxOb1Byb3ZpZGVycwAFAEBUb29NYW55Q29uc3VtZXJzAAYAFFRva2VuBABhBgEoVG9rZW5FcnJvcgAHAChBcml0aG1ldGljBABlBgE8QXJpdGhtZXRpY0Vycm9yAAgANFRyYW5zYWN0aW9uYWwEAGkGAUhUcmFuc2FjdGlvbmFsRXJyb3IACQAkRXhoYXVzdGVkAAoAKENvcnJ1cHRpb24ACwAsVW5hdmFpbGFibGUADAA4Um9vdE5vdEFsbG93ZWQADQAQVHJpZQQAbQYBJFRyaWVFcnJvcgAOAABdBggoc3BfcnVudGltZSxNb2R1bGVFcnJvcgAACAEUaW5kZXgMAQh1OAABFGVycm9ycAGMW3U4OyBNQVhfTU9EVUxFX0VSUk9SX0VOQ09ERURfU0laRV0AAGEGCChzcF9ydW50aW1lKFRva2VuRXJyb3IAAShARnVuZHNVbmF2YWlsYWJsZQAAADBPbmx5UHJvdmlkZXIAAQAwQmVsb3dNaW5pbXVtAAIAMENhbm5vdENyZWF0ZQADADBVbmtub3duQXNzZXQABAAYRnJvemVuAAUALFVuc3VwcG9ydGVkAAYAQENhbm5vdENyZWF0ZUhvbGQABwA0Tm90RXhwZW5kYWJsZQAIABxCbG9ja2VkAAkAAGUGCDRzcF9hcml0aG1ldGljPEFyaXRobWV0aWNFcnJvcgABDCRVbmRlcmZsb3cAAAAgT3ZlcmZsb3cAAQA4RGl2aXNpb25CeVplcm8AAgAAaQYIKHNwX3J1bnRpbWVIVHJhbnNhY3Rpb25hbEVycm9yAAEIMExpbWl0UmVhY2hlZAAAABxOb0xheWVyAAEAAG0GDChzcF9ydW50aW1lMHByb3ZpbmdfdHJpZSRUcmllRXJyb3IAAThASW52YWxpZFN0YXRlUm9vdAAAAEhJbmNvbXBsZXRlRGF0YWJhc2UAAQBQVmFsdWVBdEluY29tcGxldGVLZXkAAgAwRGVjb2RlckVycm9yAAMALEludmFsaWRIYXNoAAQAMER1cGxpY2F0ZUtleQAFADhFeHRyYW5lb3VzTm9kZQAGADxFeHRyYW5lb3VzVmFsdWUABwBcRXh0cmFuZW91c0hhc2hSZWZlcmVuY2UACABUSW52YWxpZENoaWxkUmVmZXJlbmNlAAkANFZhbHVlTWlzbWF0Y2gACgA8SW5jb21wbGV0ZVByb29mAAsAMFJvb3RNaXNtYXRjaAAMACxEZWNvZGVFcnJvcgANAABxBgx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbRhwYWxsZXQURXZlbnQEBFQAARhgVmFsaWRhdGlvbkZ1bmN0aW9uU3RvcmVkAAAE0FRoZSB2YWxpZGF0aW9uIGZ1bmN0aW9uIGhhcyBiZWVuIHNjaGVkdWxlZCB0byBhcHBseS5kVmFsaWRhdGlvbkZ1bmN0aW9uQXBwbGllZAQBVHJlbGF5X2NoYWluX2Jsb2NrX251bTgBVFJlbGF5Q2hhaW5CbG9ja051bWJlcgABBEUBVGhlIHZhbGlkYXRpb24gZnVuY3Rpb24gd2FzIGFwcGxpZWQgYXMgb2YgdGhlIGNvbnRhaW5lZCByZWxheSBjaGFpbiBibG9jayBudW1iZXIubFZhbGlkYXRpb25GdW5jdGlvbkRpc2NhcmRlZAACBLBUaGUgcmVsYXktY2hhaW4gYWJvcnRlZCB0aGUgdXBncmFkZSBwcm9jZXNzLmBEb3dud2FyZE1lc3NhZ2VzUmVjZWl2ZWQEARRjb3VudDgBDHUzMgADBAEBU29tZSBkb3dud2FyZCBtZXNzYWdlcyBoYXZlIGJlZW4gcmVjZWl2ZWQgYW5kIHdpbGwgYmUgcHJvY2Vzc2VkLmREb3dud2FyZE1lc3NhZ2VzUHJvY2Vzc2VkCAEsd2VpZ2h0X3VzZWTVAQEYV2VpZ2h0AAEgZG1xX2hlYWQ8AURyZWxheV9jaGFpbjo6SGFzaAAEBOBEb3dud2FyZCBtZXNzYWdlcyB3ZXJlIHByb2Nlc3NlZCB1c2luZyB0aGUgZ2l2ZW4gd2VpZ2h0LkRVcHdhcmRNZXNzYWdlU2VudAQBMG1lc3NhZ2VfaGFzaHUGATxPcHRpb248WGNtSGFzaD4ABQS4QW4gdXB3YXJkIG1lc3NhZ2Ugd2FzIHNlbnQgdG8gdGhlIHJlbGF5IGNoYWluLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldHUGBBhPcHRpb24EBFQBCAEIEE5vbmUAAAAQU29tZQQACAAAAQAAeQYMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQURXZlbnQIBFQABEkAAXgcRW5kb3dlZAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAATBmcmVlX2JhbGFuY2XEAShUOjpCYWxhbmNlAAAEuEFuIGFjY291bnQgd2FzIGNyZWF0ZWQgd2l0aCBzb21lIGZyZWUgYmFsYW5jZS4gRHVzdExvc3QIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEYYW1vdW50xAEoVDo6QmFsYW5jZQABCD0BQW4gYWNjb3VudCB3YXMgcmVtb3ZlZCB3aG9zZSBiYWxhbmNlIHdhcyBub24temVybyBidXQgYmVsb3cgRXhpc3RlbnRpYWxEZXBvc2l0LHhyZXN1bHRpbmcgaW4gYW4gb3V0cmlnaHQgbG9zcy4gVHJhbnNmZXIMARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQAARhhbW91bnTEAShUOjpCYWxhbmNlAAIETFRyYW5zZmVyIHN1Y2NlZWRlZC4oQmFsYW5jZVNldAgBDHdobwQBMFQ6OkFjY291bnRJZAABEGZyZWXEAShUOjpCYWxhbmNlAAMEaEEgYmFsYW5jZSB3YXMgc2V0IGJ5IHJvb3QuIFJlc2VydmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50xAEoVDo6QmFsYW5jZQAEBOBTb21lIGJhbGFuY2Ugd2FzIHJlc2VydmVkIChtb3ZlZCBmcm9tIGZyZWUgdG8gcmVzZXJ2ZWQpLihVbnJlc2VydmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50xAEoVDo6QmFsYW5jZQAFBOhTb21lIGJhbGFuY2Ugd2FzIHVucmVzZXJ2ZWQgKG1vdmVkIGZyb20gcmVzZXJ2ZWQgdG8gZnJlZSkuSFJlc2VydmVSZXBhdHJpYXRlZBABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABGGFtb3VudMQBKFQ6OkJhbGFuY2UAAUhkZXN0aW5hdGlvbl9zdGF0dXN9BgEYU3RhdHVzAAYITQFTb21lIGJhbGFuY2Ugd2FzIG1vdmVkIGZyb20gdGhlIHJlc2VydmUgb2YgdGhlIGZpcnN0IGFjY291bnQgdG8gdGhlIHNlY29uZCBhY2NvdW50LthGaW5hbCBhcmd1bWVudCBpbmRpY2F0ZXMgdGhlIGRlc3RpbmF0aW9uIGJhbGFuY2UgdHlwZS4cRGVwb3NpdAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudMQBKFQ6OkJhbGFuY2UABwTYU29tZSBhbW91bnQgd2FzIGRlcG9zaXRlZCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuIFdpdGhkcmF3CAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50xAEoVDo6QmFsYW5jZQAIBB0BU29tZSBhbW91bnQgd2FzIHdpdGhkcmF3biBmcm9tIHRoZSBhY2NvdW50IChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4cU2xhc2hlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudMQBKFQ6OkJhbGFuY2UACQQBAVNvbWUgYW1vdW50IHdhcyByZW1vdmVkIGZyb20gdGhlIGFjY291bnQgKGUuZy4gZm9yIG1pc2JlaGF2aW9yKS4YTWludGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50xAEoVDo6QmFsYW5jZQAKBJxTb21lIGFtb3VudCB3YXMgbWludGVkIGludG8gYW4gYWNjb3VudC4wTWludGVkQ3JlZGl0BAEYYW1vdW50xAEoVDo6QmFsYW5jZQALBOBTb21lIGNyZWRpdCB3YXMgYmFsYW5jZWQgYW5kIGFkZGVkIHRvIHRoZSBUb3RhbElzc3VhbmNlLhhCdXJuZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnTEAShUOjpCYWxhbmNlAAwEnFNvbWUgYW1vdW50IHdhcyBidXJuZWQgZnJvbSBhbiBhY2NvdW50LihCdXJuZWREZWJ0BAEYYW1vdW50xAEoVDo6QmFsYW5jZQANBMxTb21lIGRlYnQgaGFzIGJlZW4gZHJvcHBlZCBmcm9tIHRoZSBUb3RhbCBJc3N1YW5jZS4kU3VzcGVuZGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50xAEoVDo6QmFsYW5jZQAOBBUBU29tZSBhbW91bnQgd2FzIHN1c3BlbmRlZCBmcm9tIGFuIGFjY291bnQgKGl0IGNhbiBiZSByZXN0b3JlZCBsYXRlcikuIFJlc3RvcmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50xAEoVDo6QmFsYW5jZQAPBKRTb21lIGFtb3VudCB3YXMgcmVzdG9yZWQgaW50byBhbiBhY2NvdW50LiBVcGdyYWRlZAQBDHdobwQBMFQ6OkFjY291bnRJZAAQBGBBbiBhY2NvdW50IHdhcyB1cGdyYWRlZC4YSXNzdWVkBAEYYW1vdW50xAEoVDo6QmFsYW5jZQARBC0BVG90YWwgaXNzdWFuY2Ugd2FzIGluY3JlYXNlZCBieSBgYW1vdW50YCwgY3JlYXRpbmcgYSBjcmVkaXQgdG8gYmUgYmFsYW5jZWQuJFJlc2NpbmRlZAQBGGFtb3VudMQBKFQ6OkJhbGFuY2UAEgQlAVRvdGFsIGlzc3VhbmNlIHdhcyBkZWNyZWFzZWQgYnkgYGFtb3VudGAsIGNyZWF0aW5nIGEgZGVidCB0byBiZSBiYWxhbmNlZC4YTG9ja2VkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50xAEoVDo6QmFsYW5jZQATBGBTb21lIGJhbGFuY2Ugd2FzIGxvY2tlZC4gVW5sb2NrZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnTEAShUOjpCYWxhbmNlABQEaFNvbWUgYmFsYW5jZSB3YXMgdW5sb2NrZWQuGEZyb3plbggBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudMQBKFQ6OkJhbGFuY2UAFQRgU29tZSBiYWxhbmNlIHdhcyBmcm96ZW4uGFRoYXdlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudMQBKFQ6OkJhbGFuY2UAFgRgU29tZSBiYWxhbmNlIHdhcyB0aGF3ZWQuTFRvdGFsSXNzdWFuY2VGb3JjZWQIAQxvbGTEAShUOjpCYWxhbmNlAAEMbmV3xAEoVDo6QmFsYW5jZQAXBKxUaGUgYFRvdGFsSXNzdWFuY2VgIHdhcyBmb3JjZWZ1bGx5IGNoYW5nZWQuEEhlbGQMARhyZWFzb26BBgFQVDo6UnVudGltZUhvbGRSZWFzb24AAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnTEAShUOjpCYWxhbmNlABgEgFNvbWUgYmFsYW5jZSB3YXMgcGxhY2VkIG9uIGhvbGQuKEJ1cm5lZEhlbGQMARhyZWFzb26BBgFQVDo6UnVudGltZUhvbGRSZWFzb24AAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnTEAShUOjpCYWxhbmNlABkEoEhlbGQgYmFsYW5jZSB3YXMgYnVybmVkIGZyb20gYW4gYWNjb3VudC44VHJhbnNmZXJPbkhvbGQQARhyZWFzb26BBgFQVDo6UnVudGltZUhvbGRSZWFzb24AARhzb3VyY2UEATBUOjpBY2NvdW50SWQAARBkZXN0BAEwVDo6QWNjb3VudElkAAEYYW1vdW50xAEoVDo6QmFsYW5jZQAaBBUBQSB0cmFuc2ZlciBvZiBgYW1vdW50YCBvbiBob2xkIGZyb20gYHNvdXJjZWAgdG8gYGRlc3RgIHdhcyBpbml0aWF0ZWQuPFRyYW5zZmVyQW5kSG9sZBABGHJlYXNvboEGAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGHNvdXJjZQQBMFQ6OkFjY291bnRJZAABEGRlc3QEATBUOjpBY2NvdW50SWQAASx0cmFuc2ZlcnJlZMQBKFQ6OkJhbGFuY2UAGwQJAVRoZSBgdHJhbnNmZXJyZWRgIGJhbGFuY2UgaXMgcGxhY2VkIG9uIGhvbGQgYXQgdGhlIGBkZXN0YCBhY2NvdW50LiBSZWxlYXNlZAwBGHJlYXNvboEGAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudMQBKFQ6OkJhbGFuY2UAHASQU29tZSBiYWxhbmNlIHdhcyByZWxlYXNlZCBmcm9tIGhvbGQuKFVuZXhwZWN0ZWQEAKUGAThVbmV4cGVjdGVkS2luZAAdBLBBbiB1bmV4cGVjdGVkL2RlZmVuc2l2ZSBldmVudCB3YXMgdHJpZ2dlcmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldH0GFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMQbWlzYzRCYWxhbmNlU3RhdHVzAAEIEEZyZWUAAAAgUmVzZXJ2ZWQAAQAAgQYIZG5leHRfcGVvcGxlX3Bhc2VvX3J1bnRpbWVEUnVudGltZUhvbGRSZWFzb24AASAcU2Vzc2lvbgQAhQYBaHBhbGxldF9zZXNzaW9uOjpIb2xkUmVhc29uABYALFBvbGthZG90WGNtBACJBgFYcGFsbGV0X3hjbTo6SG9sZFJlYXNvbgAfABxNb2JSdWxlBACNBgGEaW5kaXZfcGFsbGV0X21vYl9ydWxlOjpIb2xkUmVhc29uADQAKFByb29mT2ZJbmsEAJEGAZRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rOjpIb2xkUmVhc29uADUAEEdhbWUEAJUGAXRpbmRpdl9wYWxsZXRfZ2FtZTo6SG9sZFJlYXNvbgA3ABRTY29yZQQAmQYBeGluZGl2X3BhbGxldF9zY29yZTo6SG9sZFJlYXNvbgA4ABxDb2luYWdlBACdBgGAaW5kaXZfcGFsbGV0X2NvaW5hZ2U6OkhvbGRSZWFzb24ARAAcQWlyZHJvcAQAoQYBgGluZGl2X3BhbGxldF9haXJkcm9wOjpIb2xkUmVhc29uAD0AAIUGDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQoSG9sZFJlYXNvbgABBBBLZXlzAAAAAIkGDChwYWxsZXRfeGNtGHBhbGxldChIb2xkUmVhc29uAAEEOEF1dGhvcml6ZUFsaWFzAAAAAI0GDFRpbmRpdl9wYWxsZXRfbW9iX3J1bGUYcGFsbGV0KEhvbGRSZWFzb24AAQgYUGF5b3V0AAAAGENyZWRpdAABAACRBgxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luaxhwYWxsZXQoSG9sZFJlYXNvbgABBChQcm9vZk9mSW5rAAAAAJUGDERpbmRpdl9wYWxsZXRfZ2FtZRhwYWxsZXQoSG9sZFJlYXNvbgABBCBQbGF5R2FtZQAAAACZBgxIaW5kaXZfcGFsbGV0X3Njb3JlGHBhbGxldChIb2xkUmVhc29uAAEIGFBheW91dAAAABhDcmVkaXQAAQAAnQYMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldChIb2xkUmVhc29uAAEEHFdyYXBwZWQAAAAAoQYMUGluZGl2X3BhbGxldF9haXJkcm9wGHBhbGxldChIb2xkUmVhc29uAAEEHEFpcmRyb3AAAAAApQYMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQ4VW5leHBlY3RlZEtpbmQAAQg4QmFsYW5jZVVwZGF0ZWQAAABURmFpbGVkVG9NdXRhdGVBY2NvdW50AAEAAKkGDGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudBhwYWxsZXQURXZlbnQEBFQAAQRIVHJhbnNhY3Rpb25GZWVQYWlkDAEMd2hvBAEwVDo6QWNjb3VudElkAAEoYWN0dWFsX2ZlZcQBMEJhbGFuY2VPZjxUPgABDHRpcMQBMEJhbGFuY2VPZjxUPgAACFkBQSB0cmFuc2FjdGlvbiBmZWUgYGFjdHVhbF9mZWVgLCBvZiB3aGljaCBgdGlwYCB3YXMgYWRkZWQgdG8gdGhlIG1pbmltdW0gaW5jbHVzaW9uIGZlZSxcaGFzIGJlZW4gcGFpZCBieSBgd2hvYC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXStBgxscGFsbGV0X3NraXBfZmVlbGVzc19wYXltZW50GHBhbGxldBRFdmVudAQEVAABBChGZWVTa2lwcGVkBAEYb3JpZ2luMQMBwDxUOjpSdW50aW1lT3JpZ2luIGFzIE9yaWdpblRyYWl0Pjo6UGFsbGV0c09yaWdpbgAABHhBIHRyYW5zYWN0aW9uIGZlZSB3YXMgc2tpcHBlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSxBgx8aW5kaXZfcGFsbGV0X29yaWdpbl9yZXN0cmljdGlvbhhwYWxsZXQURXZlbnQEBFQAAQQwVXNhZ2VDbGVhbmVkBAEYZW50aXR52AFMVDo6UmVzdHJpY3RlZEVudGl0eQAABHxVc2FnZSBmb3IgYW4gZW50aXR5IGlzIGNsZWFuZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0tQYMNHBhbGxldF9hc3NldHMYcGFsbGV0FEV2ZW50CARUAARJAAGAHENyZWF0ZWQMASBhc3NldF9pZOABKFQ6OkFzc2V0SWQAARxjcmVhdG9yBAEwVDo6QWNjb3VudElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAAAR0U29tZSBhc3NldCBjbGFzcyB3YXMgY3JlYXRlZC4YSXNzdWVkDAEgYXNzZXRfaWTgAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAARhhbW91bnTEAShUOjpCYWxhbmNlAAEEYFNvbWUgYXNzZXRzIHdlcmUgaXNzdWVkLixUcmFuc2ZlcnJlZBABIGFzc2V0X2lk4AEoVDo6QXNzZXRJZAABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABGGFtb3VudMQBKFQ6OkJhbGFuY2UAAgR0U29tZSBhc3NldHMgd2VyZSB0cmFuc2ZlcnJlZC4YQnVybmVkDAEgYXNzZXRfaWTgAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAARxiYWxhbmNlxAEoVDo6QmFsYW5jZQADBGxTb21lIGFzc2V0cyB3ZXJlIGRlc3Ryb3llZC4sVGVhbUNoYW5nZWQQASBhc3NldF9pZOABKFQ6OkFzc2V0SWQAARhpc3N1ZXIEATBUOjpBY2NvdW50SWQAARRhZG1pbgQBMFQ6OkFjY291bnRJZAABHGZyZWV6ZXIEATBUOjpBY2NvdW50SWQABARwVGhlIG1hbmFnZW1lbnQgdGVhbSBjaGFuZ2VkLjBPd25lckNoYW5nZWQIASBhc3NldF9pZOABKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAFBEhUaGUgb3duZXIgY2hhbmdlZC4YRnJvemVuCAEgYXNzZXRfaWTgAShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAYEeFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgZnJvemVuLhhUaGF3ZWQIASBhc3NldF9pZOABKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQABwR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyB0aGF3ZWQuLEFzc2V0RnJvemVuBAEgYXNzZXRfaWTgAShUOjpBc3NldElkAAgEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgZnJvemVuLixBc3NldFRoYXdlZAQBIGFzc2V0X2lk4AEoVDo6QXNzZXRJZAAJBIRTb21lIGFzc2V0IGBhc3NldF9pZGAgd2FzIHRoYXdlZC5EQWNjb3VudHNEZXN0cm95ZWQMASBhc3NldF9pZOABKFQ6OkFzc2V0SWQAAUhhY2NvdW50c19kZXN0cm95ZWQ4AQx1MzIAAUhhY2NvdW50c19yZW1haW5pbmc4AQx1MzIACgSgQWNjb3VudHMgd2VyZSBkZXN0cm95ZWQgZm9yIGdpdmVuIGFzc2V0LkhBcHByb3ZhbHNEZXN0cm95ZWQMASBhc3NldF9pZOABKFQ6OkFzc2V0SWQAAUxhcHByb3ZhbHNfZGVzdHJveWVkOAEMdTMyAAFMYXBwcm92YWxzX3JlbWFpbmluZzgBDHUzMgALBKRBcHByb3ZhbHMgd2VyZSBkZXN0cm95ZWQgZm9yIGdpdmVuIGFzc2V0LkhEZXN0cnVjdGlvblN0YXJ0ZWQEASBhc3NldF9pZOABKFQ6OkFzc2V0SWQADATQQW4gYXNzZXQgY2xhc3MgaXMgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcgZGVzdHJveWVkLiREZXN0cm95ZWQEASBhc3NldF9pZOABKFQ6OkFzc2V0SWQADQR0QW4gYXNzZXQgY2xhc3Mgd2FzIGRlc3Ryb3llZC4wRm9yY2VDcmVhdGVkCAEgYXNzZXRfaWTgAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQADgSMU29tZSBhc3NldCBjbGFzcyB3YXMgZm9yY2UtY3JlYXRlZC4sTWV0YWRhdGFTZXQUASBhc3NldF9pZOABKFQ6OkFzc2V0SWQAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVuyAEQYm9vbAAPBJxOZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhbiBhc3NldC48TWV0YWRhdGFDbGVhcmVkBAEgYXNzZXRfaWTgAShUOjpBc3NldElkABAEnE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGFzc2V0LkBBcHByb3ZlZFRyYW5zZmVyEAEgYXNzZXRfaWTgAShUOjpBc3NldElkAAEYc291cmNlBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAARhhbW91bnTEAShUOjpCYWxhbmNlABEEMQEoQWRkaXRpb25hbCkgZnVuZHMgaGF2ZSBiZWVuIGFwcHJvdmVkIGZvciB0cmFuc2ZlciB0byBhIGRlc3RpbmF0aW9uIGFjY291bnQuREFwcHJvdmFsQ2FuY2VsbGVkDAEgYXNzZXRfaWTgAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAASBPBBbiBhcHByb3ZhbCBmb3IgYWNjb3VudCBgZGVsZWdhdGVgIHdhcyBjYW5jZWxsZWQgYnkgYG93bmVyYC5MVHJhbnNmZXJyZWRBcHByb3ZlZBQBIGFzc2V0X2lk4AEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAASxkZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAABGGFtb3VudMQBKFQ6OkJhbGFuY2UAEwgxAUFuIGBhbW91bnRgIHdhcyB0cmFuc2ZlcnJlZCBpbiBpdHMgZW50aXJldHkgZnJvbSBgb3duZXJgIHRvIGBkZXN0aW5hdGlvbmAgYnlgdGhlIGFwcHJvdmVkIGBkZWxlZ2F0ZWAuSEFzc2V0U3RhdHVzQ2hhbmdlZAQBIGFzc2V0X2lk4AEoVDo6QXNzZXRJZAAUBPhBbiBhc3NldCBoYXMgaGFkIGl0cyBhdHRyaWJ1dGVzIGNoYW5nZWQgYnkgdGhlIGBGb3JjZWAgb3JpZ2luLlhBc3NldE1pbkJhbGFuY2VDaGFuZ2VkCAEgYXNzZXRfaWTgAShUOjpBc3NldElkAAE8bmV3X21pbl9iYWxhbmNlxAEoVDo6QmFsYW5jZQAVBAEBVGhlIG1pbl9iYWxhbmNlIG9mIGFuIGFzc2V0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgdGhlIGFzc2V0IG93bmVyLhxUb3VjaGVkDAEgYXNzZXRfaWTgAShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEkZGVwb3NpdG9yBAEwVDo6QWNjb3VudElkABYE/FNvbWUgYWNjb3VudCBgd2hvYCB3YXMgY3JlYXRlZCB3aXRoIGEgZGVwb3NpdCBmcm9tIGBkZXBvc2l0b3JgLhxCbG9ja2VkCAEgYXNzZXRfaWTgAShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkABcEfFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgYmxvY2tlZC4kRGVwb3NpdGVkDAEgYXNzZXRfaWTgAShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50xAEoVDo6QmFsYW5jZQAYBNxTb21lIGFzc2V0cyB3ZXJlIGRlcG9zaXRlZCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuJFdpdGhkcmF3bgwBIGFzc2V0X2lk4AEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudMQBKFQ6OkJhbGFuY2UAGQQhAVNvbWUgYXNzZXRzIHdlcmUgd2l0aGRyYXduIGZyb20gdGhlIGFjY291bnQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLjxSZXNlcnZlc1VwZGF0ZWQIASBhc3NldF9pZOABKFQ6OkFzc2V0SWQAASByZXNlcnZlcyUBAUxWZWM8VDo6UmVzZXJ2ZURhdGE+ABoE2FJlc2VydmUgaW5mb3JtYXRpb24gd2FzIHNldCBvciB1cGRhdGVkIGZvciBgYXNzZXRfaWRgLjxSZXNlcnZlc1JlbW92ZWQEASBhc3NldF9pZOABKFQ6OkFzc2V0SWQAGwS8UmVzZXJ2ZSBpbmZvcm1hdGlvbiB3YXMgcmVtb3ZlZCBmb3IgYGFzc2V0X2lkYC4wSXNzdWVkQ3JlZGl0CAEgYXNzZXRfaWTgAShUOjpBc3NldElkAAEYYW1vdW50xAEoVDo6QmFsYW5jZQAcBMRTb21lIGFzc2V0cyB3ZXJlIGlzc3VlZCBhcyBDcmVkaXQgKG5vIG93bmVyIHlldCkuMEJ1cm5lZENyZWRpdAgBIGFzc2V0X2lk4AEoVDo6QXNzZXRJZAABGGFtb3VudMQBKFQ6OkJhbGFuY2UAHQSEU29tZSBhc3NldHMgQ3JlZGl0IHdhcyBkZXN0cm95ZWQuKElzc3VlZERlYnQIASBhc3NldF9pZOABKFQ6OkFzc2V0SWQAARhhbW91bnTEAShUOjpCYWxhbmNlAB4EvFNvbWUgYXNzZXRzIHdlcmUgYnVybmVkIGFuZCBhIERlYnQgd2FzIGNyZWF0ZWQuKEJ1cm5lZERlYnQIASBhc3NldF9pZOABKFQ6OkFzc2V0SWQAARhhbW91bnTEAShUOjpCYWxhbmNlAB8EzFNvbWUgYXNzZXRzIERlYnQgd2FzIGRlc3Ryb3llZCAoYW5kIGFzc2V0cyBpc3N1ZWQpLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldLkGDFBwYWxsZXRfYXNzZXRzX2hvbGRlchhwYWxsZXQURXZlbnQIBFQABEkAAQwQSGVsZBABDHdobwQBMFQ6OkFjY291bnRJZAABIGFzc2V0X2lk4AEoVDo6QXNzZXRJZAABGHJlYXNvboEGAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGGFtb3VudMQBKFQ6OkJhbGFuY2UAAATEYHdob2BzIGJhbGFuY2Ugb24gaG9sZCB3YXMgaW5jcmVhc2VkIGJ5IGBhbW91bnRgLiBSZWxlYXNlZBABDHdobwQBMFQ6OkFjY291bnRJZAABIGFzc2V0X2lk4AEoVDo6QXNzZXRJZAABGHJlYXNvboEGAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABGGFtb3VudMQBKFQ6OkJhbGFuY2UAAQTEYHdob2BzIGJhbGFuY2Ugb24gaG9sZCB3YXMgZGVjcmVhc2VkIGJ5IGBhbW91bnRgLhhCdXJuZWQQAQx3aG8EATBUOjpBY2NvdW50SWQAASBhc3NldF9pZOABKFQ6OkFzc2V0SWQAARhyZWFzb26BBgFQVDo6UnVudGltZUhvbGRSZWFzb24AARhhbW91bnTEAShUOjpCYWxhbmNlAAIEuGB3aG9gcyBiYWxhbmNlIG9uIGhvbGQgd2FzIGJ1cm5lZCBieSBgYW1vdW50YC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXS9BgxEcGFsbGV0X2Fzc2V0X3JhdGUYcGFsbGV0FEV2ZW50BARUAAEMQEFzc2V0UmF0ZUNyZWF0ZWQIAShhc3NldF9raW5k4AEwVDo6QXNzZXRLaW5kAAEQcmF0ZS0BASRGaXhlZFUxMjgAAABAQXNzZXRSYXRlUmVtb3ZlZAQBKGFzc2V0X2tpbmTgATBUOjpBc3NldEtpbmQAAQBAQXNzZXRSYXRlVXBkYXRlZAwBKGFzc2V0X2tpbmTgATBUOjpBc3NldEtpbmQAAQxvbGQtAQEkRml4ZWRVMTI4AAEMbmV3LQEBJEZpeGVkVTEyOAACAAR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldMEGDFxwYWxsZXRfYXNzZXRfdHhfcGF5bWVudBhwYWxsZXQURXZlbnQEBFQAAQQ4QXNzZXRUeEZlZVBhaWQQAQx3aG8EATBUOjpBY2NvdW50SWQAAShhY3R1YWxfZmVlxAFEQXNzZXRCYWxhbmNlT2Y8VD4AAQx0aXDEAURBc3NldEJhbGFuY2VPZjxUPgABIGFzc2V0X2lkoQIBaE9wdGlvbjxDaGFyZ2VBc3NldElkT2Y8VD4+AAAIWQFBIHRyYW5zYWN0aW9uIGZlZSBgYWN0dWFsX2ZlZWAsIG9mIHdoaWNoIGB0aXBgIHdhcyBhZGRlZCB0byB0aGUgbWluaW11bSBpbmNsdXNpb24gZmVlLLhoYXMgYmVlbiBwYWlkIGJ5IGB3aG9gIGluIGFuIGFzc2V0IGBhc3NldF9pZGAuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0xQYMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0FEV2ZW50BARUAAEoQE5ld0ludnVsbmVyYWJsZXMEATRpbnZ1bG5lcmFibGVzzAFEVmVjPFQ6OkFjY291bnRJZD4AAARsTmV3IEludnVsbmVyYWJsZXMgd2VyZSBzZXQuREludnVsbmVyYWJsZUFkZGVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABBHRBIG5ldyBJbnZ1bG5lcmFibGUgd2FzIGFkZGVkLkxJbnZ1bG5lcmFibGVSZW1vdmVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAACBHBBbiBJbnZ1bG5lcmFibGUgd2FzIHJlbW92ZWQuUE5ld0Rlc2lyZWRDYW5kaWRhdGVzBAFIZGVzaXJlZF9jYW5kaWRhdGVzOAEMdTMyAAMEpFRoZSBudW1iZXIgb2YgZGVzaXJlZCBjYW5kaWRhdGVzIHdhcyBzZXQuQE5ld0NhbmRpZGFjeUJvbmQEASxib25kX2Ftb3VudMQBMEJhbGFuY2VPZjxUPgAEBGxUaGUgY2FuZGlkYWN5IGJvbmQgd2FzIHNldC44Q2FuZGlkYXRlQWRkZWQIAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAEcZGVwb3NpdMQBMEJhbGFuY2VPZjxUPgAFBFxBIG5ldyBjYW5kaWRhdGUgam9pbmVkLlBDYW5kaWRhdGVCb25kVXBkYXRlZAgBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAARxkZXBvc2l0xAEwQmFsYW5jZU9mPFQ+AAYEcEJvbmQgb2YgYSBjYW5kaWRhdGUgdXBkYXRlZC5AQ2FuZGlkYXRlUmVtb3ZlZAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQABwRgQSBjYW5kaWRhdGUgd2FzIHJlbW92ZWQuRENhbmRpZGF0ZVJlcGxhY2VkDAEMb2xkBAEwVDo6QWNjb3VudElkAAEMbmV3BAEwVDo6QWNjb3VudElkAAEcZGVwb3NpdMQBMEJhbGFuY2VPZjxUPgAIBPRBbiBhY2NvdW50IHdhcyByZXBsYWNlZCBpbiB0aGUgY2FuZGlkYXRlIGxpc3QgYnkgYW5vdGhlciBvbmUuaEludmFsaWRJbnZ1bG5lcmFibGVTa2lwcGVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAAJCFUBQW4gYWNjb3VudCB3YXMgdW5hYmxlIHRvIGJlIGFkZGVkIHRvIHRoZSBJbnZ1bG5lcmFibGVzIGJlY2F1c2UgdGhleSBkaWQgbm90IGhhdmUga2V5c8hyZWdpc3RlcmVkLiBPdGhlciBJbnZ1bG5lcmFibGVzIG1heSBoYXZlIGJlZW4gc2V0LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldMkGDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQURXZlbnQEBFQAARAoTmV3U2Vzc2lvbgQBNHNlc3Npb25faW5kZXg4ATBTZXNzaW9uSW5kZXgAAAg5AU5ldyBzZXNzaW9uIGhhcyBoYXBwZW5lZC4gTm90ZSB0aGF0IHRoZSBhcmd1bWVudCBpcyB0aGUgc2Vzc2lvbiBpbmRleCwgbm90IHRoZZxibG9jayBudW1iZXIgYXMgdGhlIHR5cGUgbWlnaHQgc3VnZ2VzdC4kTmV3UXVldWVkAAEISQFUaGUgYE5ld1Nlc3Npb25gIGV2ZW50IGluIHRoZSBjdXJyZW50IGJsb2NrIGFsc28gaW1wbGllcyBhIG5ldyB2YWxpZGF0b3Igc2V0IHRvIGJlHHF1ZXVlZC5EVmFsaWRhdG9yRGlzYWJsZWQEASR2YWxpZGF0b3IEAThUOjpWYWxpZGF0b3JJZAACBHBWYWxpZGF0b3IgaGFzIGJlZW4gZGlzYWJsZWQuSFZhbGlkYXRvclJlZW5hYmxlZAQBJHZhbGlkYXRvcgQBOFQ6OlZhbGlkYXRvcklkAAMEeFZhbGlkYXRvciBoYXMgYmVlbiByZS1lbmFibGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldM0GDGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlGHBhbGxldBRFdmVudAQEVAABBDxYY21wTWVzc2FnZVNlbnQEATBtZXNzYWdlX2hhc2gIARxYY21IYXNoAAAEwEFuIEhSTVAgbWVzc2FnZSB3YXMgc2VudCB0byBhIHNpYmxpbmcgcGFyYWNoYWluLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldNEGDChwYWxsZXRfeGNtGHBhbGxldBRFdmVudAQEVAABdCRBdHRlbXB0ZWQEARxvdXRjb21l1QYBUHhjbTo6bGF0ZXN0OjpPdXRjb21lAAAEqEV4ZWN1dGlvbiBvZiBhbiBYQ00gbWVzc2FnZSB3YXMgYXR0ZW1wdGVkLhBTZW50EAEYb3JpZ2lu4AEgTG9jYXRpb24AASxkZXN0aW5hdGlvbuABIExvY2F0aW9uAAEcbWVzc2FnZV0CARxYY208KCk+AAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAAQRgQW4gWENNIG1lc3NhZ2Ugd2FzIHNlbnQuKFNlbmRGYWlsZWQQARhvcmlnaW7gASBMb2NhdGlvbgABLGRlc3RpbmF0aW9u4AEgTG9jYXRpb24AARRlcnJvct0GASRTZW5kRXJyb3IAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAACBHhBbiBYQ00gbWVzc2FnZSBmYWlsZWQgdG8gc2VuZC48UHJvY2Vzc1hjbUVycm9yDAEYb3JpZ2lu4AEgTG9jYXRpb24AARRlcnJvco0CASBYY21FcnJvcgABKG1lc3NhZ2VfaWQIARxYY21IYXNoAAMEhEFuIFhDTSBtZXNzYWdlIGZhaWxlZCB0byBwcm9jZXNzLkhVbmV4cGVjdGVkUmVzcG9uc2UIARhvcmlnaW7gASBMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAAEDFkBUXVlcnkgcmVzcG9uc2UgcmVjZWl2ZWQgd2hpY2ggZG9lcyBub3QgbWF0Y2ggYSByZWdpc3RlcmVkIHF1ZXJ5LiBUaGlzIG1heSBiZSBiZWNhdXNlIGFVAW1hdGNoaW5nIHF1ZXJ5IHdhcyBuZXZlciByZWdpc3RlcmVkLCBpdCBtYXkgYmUgYmVjYXVzZSBpdCBpcyBhIGR1cGxpY2F0ZSByZXNwb25zZSwgb3JwYmVjYXVzZSB0aGUgcXVlcnkgdGltZWQgb3V0LjRSZXNwb25zZVJlYWR5CAEgcXVlcnlfaWQoARxRdWVyeUlkAAEgcmVzcG9uc2WBAgEgUmVzcG9uc2UABQhdAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBpcyByZWFkeSBmb3IgdGFraW5nIHdpdGggYHRha2VfcmVzcG9uc2VgLiBUaGVyZSBpc4BubyByZWdpc3RlcmVkIG5vdGlmaWNhdGlvbiBjYWxsLiBOb3RpZmllZAwBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAwBCHU4AAEoY2FsbF9pbmRleAwBCHU4AAYIWQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlIHJlZ2lzdGVyZWQgbm90aWZpY2F0aW9uIGhhc6hiZWVuIGRpc3BhdGNoZWQgYW5kIGV4ZWN1dGVkIHN1Y2Nlc3NmdWxseS5ATm90aWZ5T3ZlcndlaWdodBQBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAwBCHU4AAEoY2FsbF9pbmRleAwBCHU4AAE0YWN0dWFsX3dlaWdodNUBARhXZWlnaHQAAUxtYXhfYnVkZ2V0ZWRfd2VpZ2h01QEBGFdlaWdodAAHDEkBUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIHF1ZXJ5IGlzIHJlbW92ZWQuIFRoZSByZWdpc3RlcmVkIG5vdGlmaWNhdGlvblkBY291bGQgbm90IGJlIGRpc3BhdGNoZWQgYmVjYXVzZSB0aGUgZGlzcGF0Y2ggd2VpZ2h0IGlzIGdyZWF0ZXIgdGhhbiB0aGUgbWF4aW11bSB3ZWlnaHTkb3JpZ2luYWxseSBidWRnZXRlZCBieSB0aGlzIHJ1bnRpbWUgZm9yIHRoZSBxdWVyeSByZXN1bHQuTE5vdGlmeURpc3BhdGNoRXJyb3IMASBxdWVyeV9pZCgBHFF1ZXJ5SWQAATBwYWxsZXRfaW5kZXgMAQh1OAABKGNhbGxfaW5kZXgMAQh1OAAICFUBUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIHF1ZXJ5IGlzIHJlbW92ZWQuIFRoZXJlIHdhcyBhIGdlbmVyYWwgZXJyb3Igd2l0aIhkaXNwYXRjaGluZyB0aGUgbm90aWZpY2F0aW9uIGNhbGwuSE5vdGlmeURlY29kZUZhaWxlZAwBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAwBCHU4AAEoY2FsbF9pbmRleAwBCHU4AAkMUQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlIGRpc3BhdGNoIHdhcyB1bmFibGUgdG8gYmVZAWRlY29kZWQgaW50byBhIGBDYWxsYDsgdGhpcyBtaWdodCBiZSBkdWUgdG8gZGlzcGF0Y2ggZnVuY3Rpb24gaGF2aW5nIGEgc2lnbmF0dXJlIHdoaWNolGlzIG5vdCBgKG9yaWdpbiwgUXVlcnlJZCwgUmVzcG9uc2UpYC5ASW52YWxpZFJlc3BvbmRlcgwBGG9yaWdpbuABIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAFEZXhwZWN0ZWRfbG9jYXRpb26hAgFAT3B0aW9uPExvY2F0aW9uPgAKDFkBRXhwZWN0ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYnV0IHRoZSBvcmlnaW4gbG9jYXRpb24gb2YgdGhlIHJlc3BvbnNlIGRvZXNVAW5vdCBtYXRjaCB0aGF0IGV4cGVjdGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkIGZvciBhIGxhdGVyLCB2YWxpZCwgcmVzcG9uc2UgdG9sYmUgcmVjZWl2ZWQgYW5kIGFjdGVkIHVwb24uXEludmFsaWRSZXNwb25kZXJWZXJzaW9uCAEYb3JpZ2lu4AEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQACxxRAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgZXhwZWN0ZWQgb3JpZ2luIGxvY2F0aW9uIHBsYWNlZCBpbk0Bc3RvcmFnZSBieSB0aGlzIHJ1bnRpbWUgcHJldmlvdXNseSBjYW5ub3QgYmUgZGVjb2RlZC4gVGhlIHF1ZXJ5IHJlbWFpbnMgcmVnaXN0ZXJlZC4AQQFUaGlzIGlzIHVuZXhwZWN0ZWQgKHNpbmNlIGEgbG9jYXRpb24gcGxhY2VkIGluIHN0b3JhZ2UgaW4gYSBwcmV2aW91c2x5IGV4ZWN1dGluZ00BcnVudGltZSBzaG91bGQgYmUgcmVhZGFibGUgcHJpb3IgdG8gcXVlcnkgdGltZW91dCkgYW5kIGRhbmdlcm91cyBzaW5jZSB0aGUgcG9zc2libHlZAXZhbGlkIHJlc3BvbnNlIHdpbGwgYmUgZHJvcHBlZC4gTWFudWFsIGdvdmVybmFuY2UgaW50ZXJ2ZW50aW9uIGlzIHByb2JhYmx5IGdvaW5nIHRvIGJlHG5lZWRlZC40UmVzcG9uc2VUYWtlbgQBIHF1ZXJ5X2lkKAEcUXVlcnlJZAAMBMhSZWNlaXZlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWFkIGFuZCByZW1vdmVkLjRBc3NldHNUcmFwcGVkDAEQaGFzaDwBEEgyNTYAARhvcmlnaW7gASBMb2NhdGlvbgABGGFzc2V0c9kCATxWZXJzaW9uZWRBc3NldHMADQS4U29tZSBhc3NldHMgaGF2ZSBiZWVuIHBsYWNlZCBpbiBhbiBhc3NldCB0cmFwLlRWZXJzaW9uQ2hhbmdlTm90aWZpZWQQASxkZXN0aW5hdGlvbuABIExvY2F0aW9uAAEYcmVzdWx0OAEoWGNtVmVyc2lvbgABEGNvc3RpAgEYQXNzZXRzAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gADgwlAUFuIFhDTSB2ZXJzaW9uIGNoYW5nZSBub3RpZmljYXRpb24gbWVzc2FnZSBoYXMgYmVlbiBhdHRlbXB0ZWQgdG8gYmUgc2VudC4A4FRoZSBjb3N0IG9mIHNlbmRpbmcgaXQgKGJvcm5lIGJ5IHRoZSBjaGFpbikgaXMgaW5jbHVkZWQuXFN1cHBvcnRlZFZlcnNpb25DaGFuZ2VkCAEgbG9jYXRpb27gASBMb2NhdGlvbgABHHZlcnNpb244AShYY21WZXJzaW9uAA8IOQFUaGUgc3VwcG9ydGVkIHZlcnNpb24gb2YgYSBsb2NhdGlvbiBoYXMgYmVlbiBjaGFuZ2VkLiBUaGlzIG1pZ2h0IGJlIHRocm91Z2ggYW7AYXV0b21hdGljIG5vdGlmaWNhdGlvbiBvciBhIG1hbnVhbCBpbnRlcnZlbnRpb24uUE5vdGlmeVRhcmdldFNlbmRGYWlsDAEgbG9jYXRpb27gASBMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAABFGVycm9yjQIBIFhjbUVycm9yABAIWQFBIGdpdmVuIGxvY2F0aW9uIHdoaWNoIGhhZCBhIHZlcnNpb24gY2hhbmdlIHN1YnNjcmlwdGlvbiB3YXMgZHJvcHBlZCBvd2luZyB0byBhbiBlcnJvcnxzZW5kaW5nIHRoZSBub3RpZmljYXRpb24gdG8gaXQuZE5vdGlmeVRhcmdldE1pZ3JhdGlvbkZhaWwIASBsb2NhdGlvbkkBAURWZXJzaW9uZWRMb2NhdGlvbgABIHF1ZXJ5X2lkKAEcUXVlcnlJZAARCFkBQSBnaXZlbiBsb2NhdGlvbiB3aGljaCBoYWQgYSB2ZXJzaW9uIGNoYW5nZSBzdWJzY3JpcHRpb24gd2FzIGRyb3BwZWQgb3dpbmcgdG8gYW4gZXJyb3K0bWlncmF0aW5nIHRoZSBsb2NhdGlvbiB0byBvdXIgbmV3IFhDTSBmb3JtYXQuVEludmFsaWRRdWVyaWVyVmVyc2lvbggBGG9yaWdpbuABIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkABIcVQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIGV4cGVjdGVkIHF1ZXJpZXIgbG9jYXRpb24gcGxhY2VkIGluTQFzdG9yYWdlIGJ5IHRoaXMgcnVudGltZSBwcmV2aW91c2x5IGNhbm5vdCBiZSBkZWNvZGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkLgBBAVRoaXMgaXMgdW5leHBlY3RlZCAoc2luY2UgYSBsb2NhdGlvbiBwbGFjZWQgaW4gc3RvcmFnZSBpbiBhIHByZXZpb3VzbHkgZXhlY3V0aW5nTQFydW50aW1lIHNob3VsZCBiZSByZWFkYWJsZSBwcmlvciB0byBxdWVyeSB0aW1lb3V0KSBhbmQgZGFuZ2Vyb3VzIHNpbmNlIHRoZSBwb3NzaWJseVkBdmFsaWQgcmVzcG9uc2Ugd2lsbCBiZSBkcm9wcGVkLiBNYW51YWwgZ292ZXJuYW5jZSBpbnRlcnZlbnRpb24gaXMgcHJvYmFibHkgZ29pbmcgdG8gYmUcbmVlZGVkLjhJbnZhbGlkUXVlcmllchABGG9yaWdpbuABIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAFAZXhwZWN0ZWRfcXVlcmllcuABIExvY2F0aW9uAAFQbWF5YmVfYWN0dWFsX3F1ZXJpZXKhAgFAT3B0aW9uPExvY2F0aW9uPgATDF0BRXhwZWN0ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYnV0IHRoZSBxdWVyaWVyIGxvY2F0aW9uIG9mIHRoZSByZXNwb25zZSBkb2VzUQFub3QgbWF0Y2ggdGhlIGV4cGVjdGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkIGZvciBhIGxhdGVyLCB2YWxpZCwgcmVzcG9uc2UgdG9sYmUgcmVjZWl2ZWQgYW5kIGFjdGVkIHVwb24uUFZlcnNpb25Ob3RpZnlTdGFydGVkDAEsZGVzdGluYXRpb27gASBMb2NhdGlvbgABEGNvc3RpAgEYQXNzZXRzAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAFAhZAUEgcmVtb3RlIGhhcyByZXF1ZXN0ZWQgWENNIHZlcnNpb24gY2hhbmdlIG5vdGlmaWNhdGlvbiBmcm9tIHVzIGFuZCB3ZSBoYXZlIGhvbm9yZWQgaXQuHQFBIHZlcnNpb24gaW5mb3JtYXRpb24gbWVzc2FnZSBpcyBzZW50IHRvIHRoZW0gYW5kIGl0cyBjb3N0IGlzIGluY2x1ZGVkLlhWZXJzaW9uTm90aWZ5UmVxdWVzdGVkDAEsZGVzdGluYXRpb27gASBMb2NhdGlvbgABEGNvc3RpAgEYQXNzZXRzAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAFQQ9AVdlIGhhdmUgcmVxdWVzdGVkIHRoYXQgYSByZW1vdGUgY2hhaW4gc2VuZCB1cyBYQ00gdmVyc2lvbiBjaGFuZ2Ugbm90aWZpY2F0aW9ucy5gVmVyc2lvbk5vdGlmeVVucmVxdWVzdGVkDAEsZGVzdGluYXRpb27gASBMb2NhdGlvbgABEGNvc3RpAgEYQXNzZXRzAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAFgglAVdlIGhhdmUgcmVxdWVzdGVkIHRoYXQgYSByZW1vdGUgY2hhaW4gc3RvcHMgc2VuZGluZyB1cyBYQ00gdmVyc2lvbiBjaGFuZ2U4bm90aWZpY2F0aW9ucy4gRmVlc1BhaWQIARhwYXlpbmfgASBMb2NhdGlvbgABEGZlZXNpAgEYQXNzZXRzABcEMQFGZWVzIHdlcmUgcGFpZCBmcm9tIGEgbG9jYXRpb24gZm9yIGFuIG9wZXJhdGlvbiAob2Z0ZW4gZm9yIHVzaW5nIGBTZW5kWGNtYCkuNEFzc2V0c0NsYWltZWQMARBoYXNoPAEQSDI1NgABGG9yaWdpbuABIExvY2F0aW9uAAEYYXNzZXRz2QIBPFZlcnNpb25lZEFzc2V0cwAYBMBTb21lIGFzc2V0cyBoYXZlIGJlZW4gY2xhaW1lZCBmcm9tIGFuIGFzc2V0IHRyYXBgVmVyc2lvbk1pZ3JhdGlvbkZpbmlzaGVkBAEcdmVyc2lvbjgBKFhjbVZlcnNpb24AGQSEQSBYQ00gdmVyc2lvbiBtaWdyYXRpb24gZmluaXNoZWQuPEFsaWFzQXV0aG9yaXplZAwBHGFsaWFzZXLgASBMb2NhdGlvbgABGHRhcmdldOABIExvY2F0aW9uAAEYZXhwaXJ5FQMBLE9wdGlvbjx1NjQ+ABoIXQFBbiBgYWxpYXNlcmAgbG9jYXRpb24gd2FzIGF1dGhvcml6ZWQgYnkgYHRhcmdldGAgdG8gYWxpYXMgaXQsIGF1dGhvcml6YXRpb24gdmFsaWQgdW50aWxYYGV4cGlyeWAgYmxvY2sgbnVtYmVyLmRBbGlhc0F1dGhvcml6YXRpb25SZW1vdmVkCAEcYWxpYXNlcuABIExvY2F0aW9uAAEYdGFyZ2V04AEgTG9jYXRpb24AGwTMYHRhcmdldGAgcmVtb3ZlZCBhbGlhcyBhdXRob3JpemF0aW9uIGZvciBgYWxpYXNlcmAucEFsaWFzZXNBdXRob3JpemF0aW9uc1JlbW92ZWQEARh0YXJnZXTgASBMb2NhdGlvbgAcBKhgdGFyZ2V0YCByZW1vdmVkIGFsbCBhbGlhcyBhdXRob3JpemF0aW9ucy4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTVBhAsc3RhZ2luZ194Y20IdjUYdHJhaXRzHE91dGNvbWUAAQwgQ29tcGxldGUEARB1c2Vk1QEBGFdlaWdodAAAAChJbmNvbXBsZXRlCAEQdXNlZNUBARhXZWlnaHQAARRlcnJvctkGAUBJbnN0cnVjdGlvbkVycm9yAAEAFEVycm9yBADZBgFASW5zdHJ1Y3Rpb25FcnJvcgACAADZBhAsc3RhZ2luZ194Y20IdjUYdHJhaXRzQEluc3RydWN0aW9uRXJyb3IAAAgBFGluZGV4DAFASW5zdHJ1Y3Rpb25JbmRleAABFGVycm9yjQIBFEVycm9yAADdBhAMeGNtCHYzGHRyYWl0cyRTZW5kRXJyb3IAARw0Tm90QXBwbGljYWJsZQAAACRUcmFuc3BvcnQAAQAoVW5yb3V0YWJsZQACAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAAMAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAEADxNaXNzaW5nQXJndW1lbnQABQAQRmVlcwAGAADhBgxIY3VtdWx1c19wYWxsZXRfeGNtGHBhbGxldBRFdmVudAQEVAABDDRJbnZhbGlkRm9ybWF0BAAIASBbdTg7IDMyXQAACIBEb3dud2FyZCBtZXNzYWdlIGlzIGludmFsaWQgWENNLiBcWyBpZCBcXUhVbnN1cHBvcnRlZFZlcnNpb24EAAgBIFt1ODsgMzJdAAEIvERvd253YXJkIG1lc3NhZ2UgaXMgdW5zdXBwb3J0ZWQgdmVyc2lvbiBvZiBYQ00uIFxbIGlkIFxdQEV4ZWN1dGVkRG93bndhcmQIAAgBIFt1ODsgMzJdAADVBgEcT3V0Y29tZQACCMREb3dud2FyZCBtZXNzYWdlIGV4ZWN1dGVkIHdpdGggdGhlIGdpdmVuIG91dGNvbWUuRFxbIGlkLCBvdXRjb21lIFxdBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV05QYMUHBhbGxldF9tZXNzYWdlX3F1ZXVlGHBhbGxldBRFdmVudAQEVAABEEBQcm9jZXNzaW5nRmFpbGVkDAEIaWQ8ARBIMjU2BJRUaGUgYGJsYWtlMl8yNTZgIGhhc2ggb2YgdGhlIG1lc3NhZ2UuARhvcmlnaW4hAwFITWVzc2FnZU9yaWdpbk9mPFQ+BGRUaGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UuARRlcnJvcukGAUxQcm9jZXNzTWVzc2FnZUVycm9yEGBUaGUgZXJyb3IgdGhhdCBvY2N1cnJlZC4ASQFUaGlzIGVycm9yIGlzIHByZXR0eSBvcGFxdWUuIE1vcmUgZmluZS1ncmFpbmVkIGVycm9ycyBuZWVkIHRvIGJlIGVtaXR0ZWQgYXMgZXZlbnRzaGJ5IHRoZSBgTWVzc2FnZVByb2Nlc3NvcmAuAARVAU1lc3NhZ2UgZGlzY2FyZGVkIGR1ZSB0byBhbiBlcnJvciBpbiB0aGUgYE1lc3NhZ2VQcm9jZXNzb3JgICh1c3VhbGx5IGEgZm9ybWF0IGVycm9yKS4kUHJvY2Vzc2VkEAEIaWQ8ARBIMjU2BJRUaGUgYGJsYWtlMl8yNTZgIGhhc2ggb2YgdGhlIG1lc3NhZ2UuARhvcmlnaW4hAwFITWVzc2FnZU9yaWdpbk9mPFQ+BGRUaGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UuASx3ZWlnaHRfdXNlZNUBARhXZWlnaHQEwEhvdyBtdWNoIHdlaWdodCB3YXMgdXNlZCB0byBwcm9jZXNzIHRoZSBtZXNzYWdlLgEcc3VjY2Vzc8gBEGJvb2wYiFdoZXRoZXIgdGhlIG1lc3NhZ2Ugd2FzIHByb2Nlc3NlZC4ASQFOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBtZWFuIHRoYXQgdGhlIHVuZGVybHlpbmcgYE1lc3NhZ2VQcm9jZXNzb3JgIHdhcyBpbnRlcm5hbGx5NQFzdWNjZXNzZnVsLiBJdCAqc29sZWx5KiBtZWFucyB0aGF0IHRoZSBNUSBwYWxsZXQgd2lsbCB0cmVhdCB0aGlzIGFzIGEgc3VjY2Vzc00BY29uZGl0aW9uIGFuZCBkaXNjYXJkIHRoZSBtZXNzYWdlLiBBbnkgaW50ZXJuYWwgZXJyb3IgbmVlZHMgdG8gYmUgZW1pdHRlZCBhcyBldmVudHNoYnkgdGhlIGBNZXNzYWdlUHJvY2Vzc29yYC4BBFRNZXNzYWdlIGlzIHByb2Nlc3NlZC5IT3ZlcndlaWdodEVucXVldWVkEAEIaWQIASBbdTg7IDMyXQSUVGhlIGBibGFrZTJfMjU2YCBoYXNoIG9mIHRoZSBtZXNzYWdlLgEYb3JpZ2luIQMBSE1lc3NhZ2VPcmlnaW5PZjxUPgRkVGhlIHF1ZXVlIG9mIHRoZSBtZXNzYWdlLgEocGFnZV9pbmRleDgBJFBhZ2VJbmRleARgVGhlIHBhZ2Ugb2YgdGhlIG1lc3NhZ2UuATRtZXNzYWdlX2luZGV4OAEcVDo6U2l6ZQSkVGhlIGluZGV4IG9mIHRoZSBtZXNzYWdlIHdpdGhpbiB0aGUgcGFnZS4CBIxNZXNzYWdlIHBsYWNlZCBpbiBvdmVyd2VpZ2h0IHF1ZXVlLihQYWdlUmVhcGVkCAEYb3JpZ2luIQMBSE1lc3NhZ2VPcmlnaW5PZjxUPgRYVGhlIHF1ZXVlIG9mIHRoZSBwYWdlLgEUaW5kZXg4ASRQYWdlSW5kZXgEWFRoZSBpbmRleCBvZiB0aGUgcGFnZS4DBFRUaGlzIHBhZ2Ugd2FzIHJlYXBlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTpBhA0ZnJhbWVfc3VwcG9ydBh0cmFpdHMgbWVzc2FnZXNMUHJvY2Vzc01lc3NhZ2VFcnJvcgABGCRCYWRGb3JtYXQAAAAcQ29ycnVwdAABACxVbnN1cHBvcnRlZAACAChPdmVyd2VpZ2h0BADVAQEYV2VpZ2h0AAMAFFlpZWxkAAQARFN0YWNrTGltaXRSZWFjaGVkAAUAAO0GDDhwYWxsZXRfdXRpbGl0eRhwYWxsZXQURXZlbnQAASBAQmF0Y2hJbnRlcnJ1cHRlZAgBFGluZGV4OAEMdTMyAAEUZXJyb3JZBgE0RGlzcGF0Y2hFcnJvcgAACFUBQmF0Y2ggb2YgZGlzcGF0Y2hlcyBkaWQgbm90IGNvbXBsZXRlIGZ1bGx5LiBJbmRleCBvZiBmaXJzdCBmYWlsaW5nIGRpc3BhdGNoIGdpdmVuLCBhc0h3ZWxsIGFzIHRoZSBlcnJvci44QmF0Y2hDb21wbGV0ZWQAAQTIQmF0Y2ggb2YgZGlzcGF0Y2hlcyBjb21wbGV0ZWQgZnVsbHkgd2l0aCBubyBlcnJvci5gQmF0Y2hDb21wbGV0ZWRXaXRoRXJyb3JzAAIEtEJhdGNoIG9mIGRpc3BhdGNoZXMgY29tcGxldGVkIGJ1dCBoYXMgZXJyb3JzLjRJdGVtQ29tcGxldGVkAAMEHQFBIHNpbmdsZSBpdGVtIHdpdGhpbiBhIEJhdGNoIG9mIGRpc3BhdGNoZXMgaGFzIGNvbXBsZXRlZCB3aXRoIG5vIGVycm9yLihJdGVtRmFpbGVkBAEUZXJyb3JZBgE0RGlzcGF0Y2hFcnJvcgAEBBEBQSBzaW5nbGUgaXRlbSB3aXRoaW4gYSBCYXRjaCBvZiBkaXNwYXRjaGVzIGhhcyBjb21wbGV0ZWQgd2l0aCBlcnJvci4wRGlzcGF0Y2hlZEFzBAEYcmVzdWx08QYBOERpc3BhdGNoUmVzdWx0AAUEWEEgY2FsbCB3YXMgZGlzcGF0Y2hlZC5ESWZFbHNlTWFpblN1Y2Nlc3MABgRkTWFpbiBjYWxsIHdhcyBkaXNwYXRjaGVkLlBJZkVsc2VGYWxsYmFja0NhbGxlZAQBKG1haW5fZXJyb3JZBgE0RGlzcGF0Y2hFcnJvcgAHBIRUaGUgZmFsbGJhY2sgY2FsbCB3YXMgZGlzcGF0Y2hlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTxBgQYUmVzdWx0CARUARAERQFZBgEICE9rBAAQAAAAAAxFcnIEAFkGAAABAAD1Bgw8cGFsbGV0X211bHRpc2lnGHBhbGxldBRFdmVudAQEVAABFCxOZXdNdWx0aXNpZwwBJGFwcHJvdmluZwQBMFQ6OkFjY291bnRJZAABIG11bHRpc2lnBAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoCAEgQ2FsbEhhc2gAAASMQSBuZXcgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWd1bi5ATXVsdGlzaWdBcHByb3ZhbBABJGFwcHJvdmluZwQBMFQ6OkFjY291bnRJZAABJHRpbWVwb2ludJEDAXBUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+AAEgbXVsdGlzaWcEATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gIASBDYWxsSGFzaAABBMhBIG11bHRpc2lnIG9wZXJhdGlvbiBoYXMgYmVlbiBhcHByb3ZlZCBieSBzb21lb25lLkBNdWx0aXNpZ0V4ZWN1dGVkFAEkYXBwcm92aW5nBAEwVDo6QWNjb3VudElkAAEkdGltZXBvaW50kQMBcFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4AASBtdWx0aXNpZwQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAgBIENhbGxIYXNoAAEYcmVzdWx08QYBOERpc3BhdGNoUmVzdWx0AAIEnEEgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWVuIGV4ZWN1dGVkLkRNdWx0aXNpZ0NhbmNlbGxlZBABKGNhbmNlbGxpbmcEATBUOjpBY2NvdW50SWQAASR0aW1lcG9pbnSRAwFwVGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+PgABIG11bHRpc2lnBAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoCAEgQ2FsbEhhc2gAAwSgQSBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZW4gY2FuY2VsbGVkLjBEZXBvc2l0UG9rZWQQAQx3aG8EATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gIASBDYWxsSGFzaAABLG9sZF9kZXBvc2l0xAEwQmFsYW5jZU9mPFQ+AAEsbmV3X2RlcG9zaXTEATBCYWxhbmNlT2Y8VD4ABATwVGhlIGRlcG9zaXQgZm9yIGEgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWVuIHVwZGF0ZWQvcG9rZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0+QYMLHBhbGxldF9zdWRvGHBhbGxldBRFdmVudAQEVAABEBRTdWRpZAQBLHN1ZG9fcmVzdWx08QYBOERpc3BhdGNoUmVzdWx0BLRUaGUgcmVzdWx0IG9mIHRoZSBjYWxsIG1hZGUgYnkgdGhlIHN1ZG8gdXNlci4ABHBBIHN1ZG8gY2FsbCBqdXN0IHRvb2sgcGxhY2UuKEtleUNoYW5nZWQIAQxvbGT9BgFQT3B0aW9uPFQ6OkFjY291bnRJZD4EtFRoZSBvbGQgc3VkbyBrZXkgKGlmIG9uZSB3YXMgcHJldmlvdXNseSBzZXQpLgEMbmV3BAEwVDo6QWNjb3VudElkBIhUaGUgbmV3IHN1ZG8ga2V5IChpZiBvbmUgd2FzIHNldCkuAQR4VGhlIHN1ZG8ga2V5IGhhcyBiZWVuIHVwZGF0ZWQuKEtleVJlbW92ZWQAAgSAVGhlIGtleSB3YXMgcGVybWFuZW50bHkgcmVtb3ZlZC4oU3Vkb0FzRG9uZQQBLHN1ZG9fcmVzdWx08QYBOERpc3BhdGNoUmVzdWx0BLRUaGUgcmVzdWx0IG9mIHRoZSBjYWxsIG1hZGUgYnkgdGhlIHN1ZG8gdXNlci4DBMhBIFtzdWRvX2FzXShQYWxsZXQ6OnN1ZG9fYXMpIGNhbGwganVzdCB0b29rIHBsYWNlLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldP0GBBhPcHRpb24EBFQBBAEIEE5vbmUAAAAQU29tZQQABAAAAQAAAQcMMHBhbGxldF9wcm94eRhwYWxsZXQURXZlbnQEBFQAARw0UHJveHlFeGVjdXRlZAQBGHJlc3VsdPEGAThEaXNwYXRjaFJlc3VsdAAABLxBIHByb3h5IHdhcyBleGVjdXRlZCBjb3JyZWN0bHksIHdpdGggdGhlIGdpdmVuLixQdXJlQ3JlYXRlZBgBEHB1cmUEATBUOjpBY2NvdW50SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAAShwcm94eV90eXBloQMBMFQ6OlByb3h5VHlwZQABUGRpc2FtYmlndWF0aW9uX2luZGV4LQMBDHUxNgABCGF0OAFEQmxvY2tOdW1iZXJGb3I8VD4AATxleHRyaW5zaWNfaW5kZXg4AQx1MzIAAQjcQSBwdXJlIGFjY291bnQgaGFzIGJlZW4gY3JlYXRlZCBieSBuZXcgcHJveHkgd2l0aCBnaXZlbpBkaXNhbWJpZ3VhdGlvbiBpbmRleCBhbmQgcHJveHkgdHlwZS4oUHVyZUtpbGxlZBABEHB1cmUEATBUOjpBY2NvdW50SWQAARxzcGF3bmVyBAEwVDo6QWNjb3VudElkAAEocHJveHlfdHlwZaEDATBUOjpQcm94eVR5cGUAAVBkaXNhbWJpZ3VhdGlvbl9pbmRleC0DAQx1MTYAAgScQSBwdXJlIHByb3h5IHdhcyBraWxsZWQgYnkgaXRzIHNwYXduZXIuJEFubm91bmNlZAwBEHJlYWwEATBUOjpBY2NvdW50SWQAARRwcm94eQQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaDwBNENhbGxIYXNoT2Y8VD4AAwTgQW4gYW5ub3VuY2VtZW50IHdhcyBwbGFjZWQgdG8gbWFrZSBhIGNhbGwgaW4gdGhlIGZ1dHVyZS4oUHJveHlBZGRlZBABJGRlbGVnYXRvcgQBMFQ6OkFjY291bnRJZAABJGRlbGVnYXRlZQQBMFQ6OkFjY291bnRJZAABKHByb3h5X3R5cGWhAwEwVDo6UHJveHlUeXBlAAEUZGVsYXk4AURCbG9ja051bWJlckZvcjxUPgAEBEhBIHByb3h5IHdhcyBhZGRlZC4wUHJveHlSZW1vdmVkEAEkZGVsZWdhdG9yBAEwVDo6QWNjb3VudElkAAEkZGVsZWdhdGVlBAEwVDo6QWNjb3VudElkAAEocHJveHlfdHlwZaEDATBUOjpQcm94eVR5cGUAARRkZWxheTgBREJsb2NrTnVtYmVyRm9yPFQ+AAUEUEEgcHJveHkgd2FzIHJlbW92ZWQuMERlcG9zaXRQb2tlZBABDHdobwQBMFQ6OkFjY291bnRJZAABEGtpbmQFBwEsRGVwb3NpdEtpbmQAASxvbGRfZGVwb3NpdMQBMEJhbGFuY2VPZjxUPgABLG5ld19kZXBvc2l0xAEwQmFsYW5jZU9mPFQ+AAYECQFBIGRlcG9zaXQgc3RvcmVkIGZvciBwcm94aWVzIG9yIGFubm91bmNlbWVudHMgd2FzIHBva2VkIC8gdXBkYXRlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQFBwgwcGFsbGV0X3Byb3h5LERlcG9zaXRLaW5kAAEIHFByb3hpZXMAAAA0QW5ub3VuY2VtZW50cwABAAAJBwxUaW5kaXZfcGFsbGV0X2lkZW50aXR5GHBhbGxldBRFdmVudAQEVAABgCxJZGVudGl0eVNldAQBDHdobwQBMFQ6OkFjY291bnRJZAAABOxBIG5hbWUgd2FzIHNldCBvciByZXNldCAod2hpY2ggd2lsbCByZW1vdmUgYWxsIGp1ZGdlbWVudHMpLjxJZGVudGl0eUNsZWFyZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARxkZXBvc2l0xAEwQmFsYW5jZU9mPFQ+AAEEzEEgbmFtZSB3YXMgY2xlYXJlZCwgYW5kIHRoZSBnaXZlbiBiYWxhbmNlIHJldHVybmVkLjhJZGVudGl0eUtpbGxlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABHGRlcG9zaXTEATBCYWxhbmNlT2Y8VD4AAgTEQSBuYW1lIHdhcyByZW1vdmVkIGFuZCB0aGUgZ2l2ZW4gYmFsYW5jZSBzbGFzaGVkLkhKdWRnZW1lbnRSZXF1ZXN0ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAATxyZWdpc3RyYXJfaW5kZXg4AThSZWdpc3RyYXJJbmRleAADBJxBIGp1ZGdlbWVudCB3YXMgYXNrZWQgZnJvbSBhIHJlZ2lzdHJhci5QSnVkZ2VtZW50VW5yZXF1ZXN0ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAATxyZWdpc3RyYXJfaW5kZXg4AThSZWdpc3RyYXJJbmRleAAEBIhBIGp1ZGdlbWVudCByZXF1ZXN0IHdhcyByZXRyYWN0ZWQuOEp1ZGdlbWVudEdpdmVuCAEYdGFyZ2V0BAEwVDo6QWNjb3VudElkAAE8cmVnaXN0cmFyX2luZGV4OAE4UmVnaXN0cmFySW5kZXgABQSUQSBqdWRnZW1lbnQgd2FzIGdpdmVuIGJ5IGEgcmVnaXN0cmFyLjhSZWdpc3RyYXJBZGRlZAQBPHJlZ2lzdHJhcl9pbmRleDgBOFJlZ2lzdHJhckluZGV4AAYEWEEgcmVnaXN0cmFyIHdhcyBhZGRlZC5AU3ViSWRlbnRpdHlBZGRlZAwBDHN1YgQBMFQ6OkFjY291bnRJZAABEG1haW4EATBUOjpBY2NvdW50SWQAARxkZXBvc2l0xAEwQmFsYW5jZU9mPFQ+AAcE9EEgc3ViLWlkZW50aXR5IHdhcyBhZGRlZCB0byBhbiBpZGVudGl0eSBhbmQgdGhlIGRlcG9zaXQgcGFpZC5AU3ViSWRlbnRpdGllc1NldAwBEG1haW4EATBUOjpBY2NvdW50SWQAAThudW1iZXJfb2Zfc3ViczgBDHUzMgABLG5ld19kZXBvc2l0xAEwQmFsYW5jZU9mPFQ+AAgEvEFuIGFjY291bnQncyBzdWItaWRlbnRpdGllcyB3ZXJlIHNldCAoaW4gYnVsaykuSFN1YklkZW50aXR5UmVuYW1lZAgBDHN1YgQBMFQ6OkFjY291bnRJZAABEG1haW4EATBUOjpBY2NvdW50SWQACQQhAUEgZ2l2ZW4gc3ViLWFjY291bnQncyBhc3NvY2lhdGVkIG5hbWUgd2FzIGNoYW5nZWQgYnkgaXRzIHN1cGVyLWlkZW50aXR5LkhTdWJJZGVudGl0eVJlbW92ZWQMAQxzdWIEATBUOjpBY2NvdW50SWQAARBtYWluBAEwVDo6QWNjb3VudElkAAEcZGVwb3NpdMQBMEJhbGFuY2VPZjxUPgAKBAkBQSBzdWItaWRlbnRpdHkgd2FzIHJlbW92ZWQgZnJvbSBhbiBpZGVudGl0eSBhbmQgdGhlIGRlcG9zaXQgZnJlZWQuSFN1YklkZW50aXR5UmV2b2tlZAwBDHN1YgQBMFQ6OkFjY291bnRJZAABEG1haW4EATBUOjpBY2NvdW50SWQAARxkZXBvc2l0xAEwQmFsYW5jZU9mPFQ+AAsIGQFBIHN1Yi1pZGVudGl0eSB3YXMgY2xlYXJlZCwgYW5kIHRoZSBnaXZlbiBkZXBvc2l0IHJlcGF0cmlhdGVkIGZyb20gdGhlyG1haW4gaWRlbnRpdHkgYWNjb3VudCB0byB0aGUgc3ViLWlkZW50aXR5IGFjY291bnQuOEF1dGhvcml0eUFkZGVkBAEkYXV0aG9yaXR5BAEwVDo6QWNjb3VudElkAAwEfEEgdXNlcm5hbWUgYXV0aG9yaXR5IHdhcyBhZGRlZC5AQXV0aG9yaXR5UmVtb3ZlZAQBJGF1dGhvcml0eQQBMFQ6OkFjY291bnRJZAANBIRBIHVzZXJuYW1lIGF1dGhvcml0eSB3YXMgcmVtb3ZlZC4sVXNlcm5hbWVTZXQIAQx3aG8EATBUOjpBY2NvdW50SWQAASB1c2VybmFtZUEEASxVc2VybmFtZTxUPgAOBHRBIHVzZXJuYW1lIHdhcyBzZXQgZm9yIGB3aG9gLjhVc2VybmFtZVF1ZXVlZAwBDHdobwQBMFQ6OkFjY291bnRJZAABIHVzZXJuYW1lQQQBLFVzZXJuYW1lPFQ+AAEoZXhwaXJhdGlvbjgBREJsb2NrTnVtYmVyRm9yPFQ+AA8EGQFBIHVzZXJuYW1lIHdhcyBxdWV1ZWQsIGJ1dCBgd2hvYCBtdXN0IGFjY2VwdCBpdCBwcmlvciB0byBgZXhwaXJhdGlvbmAuSFByZWFwcHJvdmFsRXhwaXJlZAQBFHdob3NlBAEwVDo6QWNjb3VudElkABAEOQFBIHF1ZXVlZCB1c2VybmFtZSBwYXNzZWQgaXRzIGV4cGlyYXRpb24gd2l0aG91dCBiZWluZyBjbGFpbWVkIGFuZCB3YXMgcmVtb3ZlZC5IUHJpbWFyeVVzZXJuYW1lU2V0CAEMd2hvBAEwVDo6QWNjb3VudElkAAEgdXNlcm5hbWVBBAEsVXNlcm5hbWU8VD4AEQQBAUEgdXNlcm5hbWUgd2FzIHNldCBhcyBhIHByaW1hcnkgYW5kIGNhbiBiZSBsb29rZWQgdXAgZnJvbSBgd2hvYC5cRGFuZ2xpbmdVc2VybmFtZVJlbW92ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAASB1c2VybmFtZUEEASxVc2VybmFtZTxUPgASCF0BQSBkYW5nbGluZyB1c2VybmFtZSAoYXMgaW4sIGEgdXNlcm5hbWUgY29ycmVzcG9uZGluZyB0byBhbiBhY2NvdW50IHRoYXQgaGFzIHJlbW92ZWQgaXRzbGlkZW50aXR5KSBoYXMgYmVlbiByZW1vdmVkLjxVc2VybmFtZVVuYm91bmQEASB1c2VybmFtZUEEASxVc2VybmFtZTxUPgATBHBBIHVzZXJuYW1lIGhhcyBiZWVuIHVuYm91bmQuPFVzZXJuYW1lUmVtb3ZlZAQBIHVzZXJuYW1lQQQBLFVzZXJuYW1lPFQ+ABQEcEEgdXNlcm5hbWUgaGFzIGJlZW4gcmVtb3ZlZC44VXNlcm5hbWVLaWxsZWQEASB1c2VybmFtZUEEASxVc2VybmFtZTxUPgAVBGxBIHVzZXJuYW1lIGhhcyBiZWVuIGtpbGxlZC5AVXNlcm5hbWVSZXBvcnRlZAgBIHJlcG9ydGVyBAEwVDo6QWNjb3VudElkAAEgdXNlcm5hbWVBBAEsVXNlcm5hbWU8VD4AFgR0QSB1c2VybmFtZSBoYXMgYmVlbiByZXBvcnRlZC5MUGVyc29uYWxJZGVudGl0eVNldAwBFGFsaWFzCAEUQWxpYXMAARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEgdXNlcm5hbWVBBAEsVXNlcm5hbWU8VD4AFwSYQW4gaWRlbnRpdHkgZm9yIGEgcGVyc29uIGhhcyBiZWVuIHNldC5ERXZpZGVuY2VTdWJtaXR0ZWQEARRhbGlhcwgBFEFsaWFzABgE5EV2aWRlbmNlIGZvciBhIGNyZWRlbnRpYWwgaGFzIGJlZWQgc3VibWl0dGVkIGJ5IGEgcGVyc29uLkhDcmVkZW50aWFsQWNjZXB0ZWQEARRhbGlhcwgBFEFsaWFzABkEnEEgY3JlZGVudGlhbCB3YXMgYWNjZXB0ZWQgZm9yIGEgcGVyc29uLkhDcmVkZW50aWFsUmVqZWN0ZWQEARRhbGlhcwgBFEFsaWFzABoEnEEgY3JlZGVudGlhbCB3YXMgcmVqZWN0ZWQgZm9yIGEgcGVyc29uLjBQZXJzb25CYW5uZWQEARRhbGlhcwgBFEFsaWFzABsE0FBlcnNvbiB3YXMgYmFubmVkIGZvciBzZW5kaW5nIGNvbnRlbXB0dW91cyBldmlkZW5jZS5cUGVyc29uYWxJZGVudGl0eUNsZWFyZWQEARRhbGlhcwgBFEFsaWFzABwEgEEgcGVyc29uYWwgaWRlbnRpdHkgd2FzIGNsZWFyZWQubFJlcG9ydGVkVXNlcm5hbWVKdWRnZWRWYWxpZAQBIHVzZXJuYW1lQQQBLFVzZXJuYW1lPFQ+AB0ElEEgcmVwb3J0ZWQgdXNlcm5hbWUgd2FzIGp1ZGdlZCB2YWxpZC50UmVwb3J0ZWRVc2VybmFtZUp1ZGdlZEludmFsaWQEASB1c2VybmFtZUEEASxVc2VybmFtZTxUPgAeBJxBIHJlcG9ydGVkIHVzZXJuYW1lIHdhcyBqdWRnZWQgaW52YWxpZC6YUmVwb3J0ZWRVc2VybmFtZVdlYWtPclVuY2xlYXJKdWRnZW1lbnQIASB1c2VybmFtZUEEASxVc2VybmFtZTxUPgABJGp1ZGdlbWVudEkEATxPcmFjbGVKdWRnZW1lbnQAHwQRAVRoZSBqdWRnbWVudCByZWdhcmRpbmcgYSByZXBvcnRlZCB1c2VybmFtZSB3YXMgdW5jbGVhciBvciB1bmNlcnRhaW4uBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0DQcMTGluZGl2X3BhbGxldF9wZW9wbGUYcGFsbGV0FEV2ZW50BARUAAEoUFBlcnNvbmhvb2RSZWNvZ25pemVkCAEMd2hvKAEoUGVyc29uYWxJZAABDGtleQgBLE1lbWJlck9mPFQ+AAAE+EFuIGluZGl2aWR1YWwgaGFzIGhhZCB0aGVpciBwZXJzb25ob29kIHJlY29nbmlzZWQgYW5kIGluZGV4ZWQuQFBlcnNvbk9uYm9hcmRpbmcIAQx3aG8oAShQZXJzb25hbElkAAEMa2V5CAEsTWVtYmVyT2Y8VD4AAQQRAUFuIGluZGl2aWR1YWwgaGFzIGhhZCB0aGVpciBwZXJzb25ob29kIHJlY29nbmlzZWQgYWdhaW4gYW5kIGluZGV4ZWQuPEFsaWFzRGlzcGF0Y2hlZAgBFGFsaWFzSQMBPENvbnRleHR1YWxBbGlhcwABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAgSUQSBjYWxsIHdhcyBkaXNwYXRjaGVkIHVuZGVyIGFuIGFsaWFzLjxBbGlhc0FjY291bnRTZXQIARRhbGlhc0kDATxDb250ZXh0dWFsQWxpYXMAARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAMEvEFuIGFsaWFzLXRvLWFjY291bnQgbWFwcGluZyB3YXMgc2V0IG9yIHVwZGF0ZWQuREFsaWFzQWNjb3VudFVuc2V0CAEUYWxpYXNJAwE8Q29udGV4dHVhbEFsaWFzAAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAEBKBBbiBhbGlhcy10by1hY2NvdW50IG1hcHBpbmcgd2FzIHJlbW92ZWQuUFBlcnNvbmFsSWRBY2NvdW50U2V0CAEMd2hvKAEoUGVyc29uYWxJZAABHGFjY291bnQEATBUOjpBY2NvdW50SWQABQTQQSBwZXJzb25hbCBJRC10by1hY2NvdW50IG1hcHBpbmcgd2FzIHNldCBvciB1cGRhdGVkLlhQZXJzb25hbElkQWNjb3VudFVuc2V0CAEMd2hvKAEoUGVyc29uYWxJZAABHGFjY291bnQEATBUOjpBY2NvdW50SWQABgS0QSBwZXJzb25hbCBJRC10by1hY2NvdW50IG1hcHBpbmcgd2FzIHJlbW92ZWQuRENvbGxlY3Rpb25DcmVhdGVkAAcEiFRoZSBwZW9wbGUgY29sbGVjdGlvbiB3YXMgY3JlYXRlZC5kRm9yY2VQZXJzb25ob29kUmVjb2duaXplZAQBGHBlb3BsZVUEAUBWZWM8TWVtYmVyT2Y8VD4+AAgEtFBlcnNvbmhvb2Qgd2FzIGZvcmNlZnVsbHkgcmVjb2duaXplZCBieSByb290LjhBbGlhc0NsZWFuZWRVcAgBFGFsaWFzSQMBPENvbnRleHR1YWxBbGlhcwABHGFjY291bnQEATBUOjpBY2NvdW50SWQACQSsQW4gYWxpYXMtdG8tYWNjb3VudCBtYXBwaW5nIHdhcyBjbGVhbmVkIHVwLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldBEHDFRpbmRpdl9wYWxsZXRfbW9iX3J1bGUYcGFsbGV0FEV2ZW50BARUAAFELENhc2VDcmVhdGVkBAEoY2FzZV9pbmRleDgBJENhc2VJbmRleASAVGhlIGNhc2UgaW5kZXggdGhhdCB3YXMgY3JlYXRlZC4ABGBBIGNhc2UgaGFzIGJlZW4gY3JlYXRlZC4gQ2FsbGJhY2sEARhyZXN1bHTxBgE4RGlzcGF0Y2hSZXN1bHQEbFRoZSByZXN1bHQgb2YgdGhlIGNhbGxiYWNrLgEEnEEgY2FsbGJhY2sgd2FzIHRyaWdnZXJlZCBmcm9tIG1vYi1ydWxlLjRDYWxsYmFja0Vycm9yAAIE8FRoZXJlIHdhcyBhIGNvZGVjIGVycm9yIHdoZW4gdHJ5aW5nIHRvIGV4ZWN1dGUgdGhlIGNhbGxiYWNrLihDYXNlQ2xvc2VkCAEoY2FzZV9pbmRleDgBJENhc2VJbmRleAR8VGhlIGNhc2UgaW5kZXggdGhhdCB3YXMgY2xvc2VkLgEcdmVyZGljdEkEASRKdWRnZW1lbnQEfFRoZSB2ZXJkaWN0IG9mIHRoZSBjbG9zZWQgY2FzZS4DBMxUaGUgY2FzZSBoYXMgYmVlbiBjbG9zZWQgd2l0aCB0aGUgZm9sbG93aW5nIHJlc3VsdC4UVm90ZWQMAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4BEhUaGUgY2FzZSB2b3RlZCBvbi4BFHZvdGVyCAEUQWxpYXMEVFRoZSBhbGlhcyB0aGF0IHZvdGVkLgEcb3BpbmlvbkkEASRKdWRnZW1lbnQEZFRoZSBvcGluaW9uIG9mIHRoZSB2b3Rlci4EBIRBIHZvdGUgaGFzIGJlZW4gcGxhY2VkIG9uIGEgY2FzZS4sVm90ZUNsZWFuZWQIAShjYXNlX2luZGV4OAEkQ2FzZUluZGV4BEhUaGUgY2FzZSB2b3RlZCBvbi4BFHZvdGVyCAEUQWxpYXMEVFRoZSBhbGlhcyB0aGF0IHZvdGVkLgUEYEEgdm90ZSBoYXMgYmVlbiBjbGVhbmVkLixDYXNlUmVtb3ZlZAQBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgESFRoZSBjYXNlIHZvdGVkIG9uLgYEYEEgY2FzZSBoYXMgYmVlbiByZW1vdmVkLjhDYXNlSW50ZXJ2ZW5lZAgBKGNhc2VfaW5kZXg4ASRDYXNlSW5kZXgEiFRoZSBjYXNlIHRoYXQgaGFzIGJlZW4gaW50ZXJ2ZW5lZC4BHHZlcmRpY3RJBAEkSnVkZ2VtZW50BIBUaGUgdmVyZGljdCBhcHBsaWVkIHRvIHRoZSBjYXNlLgcEbEEgY2FzZSBoYXMgYmVlbiBpbnRlcnZlbmVkLjBWb3Rlc0NsYWltZWQIARR2b3RlcggBFEFsaWFzBFRUaGUgYWxpYXMgdGhhdCB2b3RlZC4BMGNhc2VfaW5kaWNlc2UEAThWZWM8Q2FzZUluZGV4PgSIVGhlIGNhc2UgdGhhdCBoYXMgYmVlbiBpbnRlcnZlbmVkLggEkENyZWRpdHMgZm9yIHZvdGVzIGhhdmUgYmVlbiBjbGFpbWVkLjBSZXdhcmRQYXlvdXQMARR2b3RlcggBFEFsaWFzBHxUaGUgYWxpYXMgdGhhdCBlYXJuZWQgYSByZXdhcmQuASxkZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAScVGhlIGRlc3RpbmF0aW9uIGFjY291bnQgZm9yIHRoZSBwYXlvdXQuARhhbW91bnTEATBCYWxhbmNlT2Y8VD4EnFRoZSBwYXlvdXQgYW1vdW50IHRoYXQgd2FzIHRyYW5zZmVycmVkLgkEgEEgcmV3YXJkIHRoYXQgaGFzIGJlZW4gcGFpZCBvdXQuSFBheW91dFJvdW5kU3RhcnRlZAwBFHJvdW5kOAEoUm91bmRJbmRleASIVGhlIGluZGV4IG9mIHRoZSBuZXcgcGF5b3V0IHJvdW5kLgE8aW5pdGlhbF9iYWxhbmNlxAEwQmFsYW5jZU9mPFQ+BLBUaGUgaW5pdGlhbCBiYWxhbmNlIGFsbG9jYXRlZCBmb3IgdGhlIHJvdW5kLgEwdG90YWxfcG9pbnRzKAEkVm90ZUNvdW50BMRUb3RhbCBhY2N1bXVsYXRlZCBwb2ludHMgY2xhaW1hYmxlIGluIHRoaXMgcm91bmQuCgSQQSBuZXcgcGF5b3V0IHJvdW5kIGhhcyBiZWVuIHN0YXJ0ZWQuVFBheW91dFJvdW5kc1NjaGVkdWxlZAwBGGFtb3VudMQBMEJhbGFuY2VPZjxUPgR4VGhlIGFtb3VudCBvZiBmdW5kcyBwZXIgcm91bmQuARRjb3VudDgBDHUzMgR8VGhlIG51bWJlciBvZiByb3VuZHMgc2NoZWR1bGVkLgEYcGVyaW9kOAFEQmxvY2tOdW1iZXJGb3I8VD4EuFRoZSBtaW5pbXVtIHBlcmlvZCAoaW4gYmxvY2tzKSBiZXR3ZWVuIHJvdW5kcy4LBIhQYXlvdXQgcm91bmRzIGhhdmUgYmVlbiBzY2hlZHVsZWQuVFBheW91dFNjaGVkdWxlUmVtb3ZlZAQBFGluZGV4OAEMdTMyBIhUaGUgaW5kZXggb2YgdGhlIHJlbW92ZWQgc2NoZWR1bGUuDASMQSBwYXlvdXQgc2NoZWR1bGUgaGFzIGJlZW4gcmVtb3ZlZC40Q3JlZGl0Q2xhaW1lZAgBFHZvdGVyCAEUQWxpYXMEjFRoZSBhbGlhcyBvZiB0aGUgdm90ZXIgd2hvIGNsYWltZWQuARhhbW91bnTEATBCYWxhbmNlT2Y8VD4EdFRoZSBhbW91bnQgb2YgY3JlZGl0IGNsYWltZWQuDQTUQ3JlZGl0IGhhcyBiZWVuIGNsYWltZWQgZnJvbSB0aGUgcGF5b3V0IGRpc3RyaWJ1dGlvbi40UG9pbnRzQ2xlYW5lZAgBFHJvdW5kOAEoUm91bmRJbmRleAS8VGhlIHJvdW5kIGluZGV4IGZyb20gd2hpY2ggcG9pbnRzIHdlcmUgcmVtb3ZlZC4BFHZvdGVyCAEUQWxpYXMEkFRoZSBhbGlhcyB3aG9zZSBwb2ludHMgd2VyZSByZW1vdmVkLg4EmFN0YWxlIHZvdGluZyBwb2ludHMgaGF2ZSBiZWVuIGNsZWFuZWQuLENhc2VUb3VjaGVkCAEoY2FzZV9pbmRleDgBJENhc2VJbmRleARoVGhlIGNhc2UgdGhhdCB3YXMgdG91Y2hlZC4BHHJpcGVuZWTIARBib29sBKRXaGV0aGVyIHRoZSBjYXNlIHdhcyByaXBlbmVkIGFzIGEgcmVzdWx0Lg8EnEEgY2FzZSBoYXMgYmVlbiB0b3VjaGVkIChyZS1ldmFsdWF0ZWQpLlBWb3RpbmdQZW5hbHR5Q2xlYXJlZAQBDHdobwgBFEFsaWFzBJBUaGUgYWxpYXMgd2hvc2UgcGVuYWx0eSB3YXMgY2xlYXJlZC4QBIhBIHZvdGluZyBwZW5hbHR5IGhhcyBiZWVuIGNsZWFyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0FQcMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmsYcGFsbGV0FEV2ZW50BARUAAFcQENhbmRpZGF0ZUFwcGxpZWQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAAEjENhbmRpZGF0ZSBhcHBsaWVkIGZvciB2ZXJpZmljYXRpb24uSEp1ZGdlbWVudFJlcXVlc3RlZAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAAQQFAUNhbmRpZGF0ZSBvcGVuZWQgYSBqdWRpY2lhbCBjYXNlIGZvciB0aGVpciB2ZXJpZmljYXRpb24gZXZpZGVuY2UuREp1ZGdlbWVudFByb3ZpZGVkCAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABJGp1ZGdlbWVudEkEASRKdWRnZW1lbnQAAgTYT3JhY2xlIGhhcyBwcm92aWRlZCB0aGUganVkZ2VtZW50IGZvciBhIGp1ZGljaWFsIGNhc2UuMFJldHJ5R3JhbnRlZAgBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAASBmYWlsdXJlczgBDHUzMgADCEUBQSBjYW5kaWRhdGUgaGFzIGJlZW4gZ3JhbnRlZCBhIGZyZWUgcmV0cnkgYXR0ZW1wdCBhZnRlciBhIGZhaWx1cmUgdG8gdmVyaWZ5IHRoZWlyJGV2aWRlbmNlLkBQZXJzb25SZWdpc3RlcmVkCAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABLHBlcnNvbmFsX2lkKAEoUGVyc29uYWxJZAAEBIBSZWdpc3RlciBhbiBhY2NvdW50IGFzIGEgcGVyc29uLkRDYW5kaWRhdGVSZWZlcnJlZAgBIHJlZmVycmVyKAEoUGVyc29uYWxJZAABIHJlZmVycmVkBAEwVDo6QWNjb3VudElkAAUEbFBlcnNvbiByZWZlcnJlZCBhbiBhY2NvdW50LiBSZXJvbGxlZAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQABgS0RW50cm9weSBmb3IgYSBjYW5kaWRhdGUgY2hhbmdlZCBhZnRlciBleHBpcnkuPERlc2lnbkNvbW1pdHRlZAgBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQAASxyZXNlcnZlZF9pZCgBKFBlcnNvbmFsSWQABwSUQ2FuZGlkYXRlIGNvbW1pdHRlZCB0byBhbiBpbmsgZGVzaWduLjhGdWxseUFsbG9jYXRlZAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQACAS8U3RvcmFnZSBmdWxseSBhbGxvY2F0ZWQgZm9yIGEgY29tbWl0dGVkIGRlc2lnbi4gVGltZWRPdXQEAShhY2NvdW50X2lkBAEwVDo6QWNjb3VudElkAAkEgENhbmRpZGF0ZSByZW1vdmVkIGFmdGVyIHRpbWVvdXQuJEZsYWtlZE91dAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQACgR4VW5jb21taXR0ZWQgY2FuZGlkYXRlIHJlbW92ZWQuOFRpY2tldFJlZmVycmVkCAEgcmVmZXJyZXIoAShQZXJzb25hbElkAAEYdGlja2V0BAEkVDo6VGlja2V0AAsE7FJlZmVycmFsIHRpY2tldCBjcmVhdGVkIGJ5IHN0b3JpbmcgdGhlIHB1YmxpYyBrZXkgb24gY2hhaW4uPFRpY2tldENhbmNlbGxlZAgBIHJlZmVycmVyKAEoUGVyc29uYWxJZAABGHRpY2tldAQBJFQ6OlRpY2tldAAMBBkBUmVmZXJyYWwgdGlja2V0IHJlbW92ZWQgYnkgcmVtb3ZpbmcgdGhlIHB1YmxpYyBrZXkgZnJvbSBjaGFpbiBzdG9yYWdlLjRUaWNrZXRBcHBsaWVkCAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABIHJlZmVycmVyKAEoUGVyc29uYWxJZAANBKhDYW5kaWRhdGUgYXBwbGllZCB1c2luZyBhIHJlZmVycmFsIHRpY2tldC4sRmFtaWx5QWRkZWQMARRpbmRleC0DASxGYW1pbHlJbmRleAABEGtpbmR1BAEoRmFtaWx5S2luZAABCGlkCAEgRmFtaWx5SWQADgRQRGVzaWduIGZhbWlseSBhZGRlZC5EQWxsSW52aXRlc1JlbW92ZWQEARxpbnZpdGVyBAEwVDo6QWNjb3VudElkAA8EuEFsbCBpbnZpdGVzIGhhdmUgYmVlbiByZW1vdmVkIGZvciB0aGUgaW52aXRlci5IU29tZUludml0ZXNSZW1vdmVkBAEcaW52aXRlcgQBMFQ6OkFjY291bnRJZAAQBA0BU29tZSBpbnZpdGVzIGhhdmUgYmVlbiByZW1vdmVkIGZvciB0aGUgaW52aXRlciwgc29tZSBhcmUgcmVtYWluaW5nLlxJbnZpdGVkQ2FuZGlkYXRlQXBwbGllZAgBDHdobwQBMFQ6OkFjY291bnRJZAABHGludml0ZXIEATBUOjpBY2NvdW50SWQAEQSYQ2FuZGlkYXRlIGFwcGxpZWQgdXNpbmcgYW4gaW52aXRhdGlvbi5kUmVmZXJyYWxWb3VjaGVyUmVnaXN0ZXJlZAQBIHJlZmVycmVyKAEoUGVyc29uYWxJZAASBMBBIHJlZmVycmVyJ3MgcmV3YXJkIHZvdWNoZXIgaGFzIGJlZW4gcmVnaXN0ZXJlZC44SW52aXRlc0dyYW50ZWQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEUY291bnQ4AQx1MzIAEwSgSW52aXRlcyBoYXZlIGJlZW4gZ3JhbnRlZCB0byBhbiBhY2NvdW50LjxJbnZpdGVUaWNrZXRTZXQIARxpbnZpdGVyBAEwVDo6QWNjb3VudElkAAEYdGlja2V0BAEkVDo6VGlja2V0ABQEeEFuIGludml0ZSB0aWNrZXQgaGFzIGJlZW4gc2V0LlRJbnZpdGVUaWNrZXRDYW5jZWxsZWQIARxpbnZpdGVyBAEwVDo6QWNjb3VudElkAAEYdGlja2V0BAEkVDo6VGlja2V0ABUEkEFuIGludml0ZSB0aWNrZXQgaGFzIGJlZW4gY2FuY2VsbGVkLkBDb25maWd1cmF0aW9uU2V0BAEYY29uZmlneQQBfENvbmZpZ1JlY29yZDxCbG9ja051bWJlckZvcjxUPj4AFgSoVGhlIHBhbGxldCBjb25maWd1cmF0aW9uIGhhcyBiZWVuIHVwZGF0ZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0GQcMRGluZGl2X3BhbGxldF9nYW1lGHBhbGxldBRFdmVudAQEVAABSBxOZXdHYW1lDAFEcmVnaXN0cmF0aW9uX2VuZHM4AQx1MzIAASRnYW1lX2RhdGU4AQx1MzIAASxyZXBvcnRfZW5kczgBDHUzMgAABFxBIG5ldyBnYW1lIGlzIHN0YXJ0aW5nLiRHYW1lRW5kZWQEARRpbmRleDgBDHUzMgABBKBUaGUgZ2FtZSBhbmQgaXRzIHBvc3QtcHJvY2VzcyBoYXMgZW5kZWQuIFNpZ25lZFVwBAEMd2hvHQcBdEFjY291bnRPclBlcnNvbjxUOjpBY2NvdW50SWQ+AAIEgEEgcGxheWVyIHNpZ25lZCB1cCBmb3IgdGhlIGdhbWUuPFJlcG9ydFN1Ym1pdHRlZAgBDHdobx0HAXRBY2NvdW50T3JQZXJzb248VDo6QWNjb3VudElkPgABKGdhbWVfaW5kZXg4AQx1MzIAAwSAQSBwbGF5ZXIgc3VibWl0dGVkIHRoZWlyIHJlcG9ydC4oT2ZmYm9hcmRlZAQBDHdobx0HAXRBY2NvdW50T3JQZXJzb248VDo6QWNjb3VudElkPgAEBIhBIHBsYXllciBvZmZib2FyZGVkIGZyb20gdGhlIGdhbWUuJEtpY2tlZE91dAQBGHBsYXllch0HAXRBY2NvdW50T3JQZXJzb248VDo6QWNjb3VudElkPgAFBIhBbiBhcmNoaXZlZCBwbGF5ZXIgd2FzIGtpY2tlZCBvdXQuOEludml0ZXNHcmFudGVkCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABFGNvdW50OAEMdTMyAAYEjEludml0ZXMgd2VyZSBncmFudGVkIHRvIGFuIGFjY291bnQuPEludml0ZVRpY2tldFNldAQBHGludml0ZXIEATBUOjpBY2NvdW50SWQABwRkQW4gaW52aXRlIHRpY2tldCB3YXMgc2V0LlRJbnZpdGVUaWNrZXRDYW5jZWxsZWQEARxpbnZpdGVyBAEwVDo6QWNjb3VudElkAAgEfEFuIGludml0ZSB0aWNrZXQgd2FzIGNhbmNlbGxlZC44R2FtZXNTY2hlZHVsZWQEARRjb3VudDgBDHUzMgAJBFRHYW1lcyB3ZXJlIHNjaGVkdWxlZC5QU2NoZWR1bGVkR2FtZVJlbW92ZWQEAThnYW1lX3BsYXlfdGltZTgBDHUzMgAKBHRBIHNjaGVkdWxlZCBnYW1lIHdhcyByZW1vdmVkLkBTdG10VXNhZ2VSZW1vdmVkBAEMd2hvCAEgW3U4OyAzMl0ACwS4U3RhdGVtZW50IHN0b3JlIHVzYWdlIHJlbW92ZWQgZm9yIHRoZSBhY2NvdW50LkRBbGxJbnZpdGVzUmVtb3ZlZAQBHGludml0ZXIEATBUOjpBY2NvdW50SWQADAS4QWxsIGludml0ZXMgaGF2ZSBiZWVuIHJlbW92ZWQgZm9yIHRoZSBpbnZpdGVyLkhTb21lSW52aXRlc1JlbW92ZWQEARxpbnZpdGVyBAEwVDo6QWNjb3VudElkAA0EDQFTb21lIGludml0ZXMgaGF2ZSBiZWVuIHJlbW92ZWQgZm9yIHRoZSBpbnZpdGVyLCBzb21lIGFyZSByZW1haW5pbmcuWFNjcmF0Y2hSZXdhcmRBdmFpbGFibGUEAShnYW1lX2luZGV4OAEMdTMyAA4E6FNjcmF0Y2ggY2FyZCByZXdhcmRzIGFyZSBhdmFpbGFibGUgZm9yIHRoZSBjb25jbHVkZWQgZ2FtZS5QU2NyYXRjaFJld2FyZENsYWltZWQIASxiZW5lZmljaWFyeQQBMFQ6OkFjY291bnRJZAABGGFtb3VudMQBTFNjcmF0Y2hCYWxhbmNlT2Y8VD4ADwTQQSBwbGF5ZXIgc3VjY2Vzc2Z1bGx5IGNsYWltZWQgYSBzY3JhdGNoIGNhcmQgcmV3YXJkLkxHYW1lUHJpemVQb29sT3BlbmVkCAEoZ2FtZV9pbmRleDgBDHUzMgABHHBvb2xfaWQ4AYRpbmRpdl9wYWxsZXRfYWlyZHJvcDo6UHJpemVQb29sSWQAEAT8QSBuZXcgZ2FtZSBvcGVuZWQgYSByZWN1cnJpbmctcHJpemUgcG9vbCBpbiB0aGUgYWlyZHJvcCBwYWxsZXQuXEdhbWVQcml6ZVBvb2xPcGVuRmFpbGVkCAEoZ2FtZV9pbmRleDgBDHUzMgABFGVycm9yWQYBNERpc3BhdGNoRXJyb3IAEQQpAWBuZXdfZ2FtZWAgY291bGQgbm90IG9wZW4gaXRzIGNvbXBhbmlvbiBwcml6ZSBwb29sLiBUaGUgZ2FtZSBzdGlsbCBzdGFydHMuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0HQcMSGluZGl2X3BhbGxldF9zY29yZRR0eXBlczxBY2NvdW50T3JQZXJzb24EJEFjY291bnRJZAEEAQgcQWNjb3VudAQABAEkQWNjb3VudElkAAAAGFBlcnNvbgQACAEUQWxpYXMAAQAAIQcMSGluZGl2X3BhbGxldF9zY29yZRhwYWxsZXQURXZlbnQEBFQAARw0Q3JlZGl0Q2xhaW1lZAwBDHdobx0HAXRBY2NvdW50T3JQZXJzb248VDo6QWNjb3VudElkPgR4VGhlIHBlcnNvbiB3aG8gY2xhaW1lZCBjcmVkaXQuASxkZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAS8RGVzdGluYXRpb24gYWNjb3VudCB0aGF0IHJlY2VpdmVkIHRoZSB0cmFuc2Zlci4BGGFtb3VudMQBMEJhbGFuY2VPZjxUPgRMQW1vdW50IHRyYW5zZmVycmVkLgAEcEEgcGVyc29uIGhhcyBjbGFpbWVkIGNyZWRpdC5QUGVyc29uaG9vZFJlY29nbml6ZWQIAQx3aG8dBwF0QWNjb3VudE9yUGVyc29uPFQ6OkFjY291bnRJZD4EsFRoZSBhY2NvdW50IHdob3NlIHBlcnNvbmhvb2Qgd2FzIHJlY29nbml6ZWQuARxyZXN1bWVkyAEQYm9vbAQRAVdoZXRoZXIgdGhpcyB3YXMgcmVzdW1pbmcgZnJvbSBzdXNwZW5zaW9uIG9yIGZpcnN0LXRpbWUgcmVjb2duaXRpb24uAQSkUGVyc29uaG9vZCB3YXMgcmVjb2duaXplZCBmb3IgYW4gYWNjb3VudC5UUGF5b3V0Um91bmRzU2NoZWR1bGVkDAEYYW1vdW50xAEwQmFsYW5jZU9mPFQ+BFRUaGUgYW1vdW50IHBlciByb3VuZC4BFGNvdW50OAEMdTMyBFRUaGUgbnVtYmVyIG9mIHJvdW5kcy4BIGR1cmF0aW9uOAFEQmxvY2tOdW1iZXJGb3I8VD4EhFRoZSBkdXJhdGlvbiBwZXIgcm91bmQgaW4gYmxvY2tzLgIEiFBheW91dCByb3VuZHMgaGF2ZSBiZWVuIHNjaGVkdWxlZC5UUGF5b3V0U2NoZWR1bGVSZW1vdmVkBAEUaW5kZXg4AQx1MzIEiFRoZSBpbmRleCBvZiB0aGUgcmVtb3ZlZCBzY2hlZHVsZS4DBIxBIHBheW91dCBzY2hlZHVsZSBoYXMgYmVlbiByZW1vdmVkLkRSb3VuZFRyYW5zaXRpb25lZAQBLHJvdW5kX2luZGV4OAEoUm91bmRJbmRleASYVGhlIHJvdW5kIGluZGV4IHRoYXQgd2FzIHRyYW5zaXRpb25lZC4EBHhBIHJvdW5kIGhhcyBiZWVuIHRyYW5zaXRpb25lZC5MUGF5b3V0Um91bmRPcGVyYXRlZAQBLHJvdW5kX2luZGV4OAEoUm91bmRJbmRleASIVGhlIHJvdW5kIGluZGV4IHRoYXQgd2FzIG9wZXJhdGVkLgUEGQFBIHBheW91dCByb3VuZCBoYXMgYmVlbiBvcGVyYXRlZCAoY3JlZGl0IGRpc3RyaWJ1dGVkIHRvIHBhcnRpY2lwYW50cykuJENhc2hlZE91dAQBDHdobx0HAXRBY2NvdW50T3JQZXJzb248VDo6QWNjb3VudElkPgR8VGhlIHBhcnRpY2lwYW50IHdobyBjYXNoZWQgb3V0LgYEuEEgcGFydGljaXBhbnQgaGFzIGNhc2hlZCBvdXQgc2NvcmUgZm9yIHBvaW50cy4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQlBwxYaW5kaXZfcGFsbGV0X2R1bW15X2RpbRhwYWxsZXQURXZlbnQEBFQAASAsSWRzUmVzZXJ2ZWQEARRjb3VudDgBDHUzMgAABHRBIG51bWJlciBvZiBJRHMgd2FzIHJlc2VydmVkLiRJZFJlbmV3ZWQEAQhpZCgBKFBlcnNvbmFsSWQAAQRIQW4gSUQgd2FzIHJlbmV3ZWQuMElkVW5yZXNlcnZlZAQBCGlkKAEoUGVyc29uYWxJZAACBGhBIHJlc2VydmVkIElEIHdhcyByZW1vdmVkLkBQZW9wbGVSZWdpc3RlcmVkBAEUY291bnQ4AQx1MzIAAwRkUmVnaXN0ZXIgbXVsdGlwbGUgcGVvcGxlLjxQZW9wbGVTdXNwZW5kZWQEARRjb3VudDgBDHUzMgAEBGxTdXNwZW5kIGEgbnVtYmVyIG9mIHBlb3BsZS5EUGVyc29uaG9vZFJlc3VtZWQEAQhpZCgBKFBlcnNvbmFsSWQABQSEU29tZW9uZSdzIHBlcnNvbmhvb2Qgd2FzIHJlc3VtZWQuSFN1c3BlbnNpb25zU3RhcnRlZAAGBHxUaGUgcGFsbGV0IGVuYWJsZWQgc3VzcGVuc2lvbnMuQFN1c3BlbnNpb25zRW5kZWQABwSAVGhlIHBhbGxldCBkaXNhYmxlZCBzdXNwZW5zaW9ucy4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQpBwxgaW5kaXZfcGFsbGV0X3Blb3BsZV9saXRlGHBhbGxldBRFdmVudAQEVAABGHhBbGxBdHRlc3RhdGlvbkFsbG93YW5jZUNsZWFyZWQEASB2ZXJpZmllcgQBMFQ6OkFjY291bnRJZAAABPBBbGwgYXR0ZXN0YXRpb24gYWxsb3dhbmNlIGhhcyBiZWVuIHJlbW92ZWQgZm9yIHRoZSB2ZXJpZmllci50QXR0ZXN0YXRpb25BbGxvd2FuY2VJbmNyZWFzZWQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEUY291bnQ4AQx1MzIAAQQtAUF0dGVzdGF0aW9uIGFsbG93YW5jZSB3YXMgaW5jcmVhc2VkIGZvciBhbiBhY2NvdW50IGJ5IGBjb3VudGAgYXR0ZXN0YXRpb25zLjhQZXJzb25BdHRlc3RlZAgBJGNhbmRpZGF0ZQQBMFQ6OkFjY291bnRJZAABIHZlcmlmaWVyBAEwVDo6QWNjb3VudElkAAIE1EEgbmV3IGxpdGUgcGVyc29uIHdhcyByZWdpc3RlcmVkIHRocm91Z2ggYXR0ZXN0YXRpb24uSENvbnN1bWVyUmVnaXN0ZXJlZAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQAAwSsQSBsaXRlIHBlcnNvbiB3YXMgcmVnaXN0ZXJlZCBhcyBhIGNvbnN1bWVyLjxBbGlhc0FjY291bnRTZXQIARRhbGlhc0kDATxDb250ZXh0dWFsQWxpYXMAARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAQEvEFuIGFsaWFzLXRvLWFjY291bnQgbWFwcGluZyB3YXMgc2V0IG9yIHVwZGF0ZWQuREFsaWFzQWNjb3VudFVuc2V0CAEUYWxpYXNJAwE8Q29udGV4dHVhbEFsaWFzAAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAFBKBBbiBhbGlhcy10by1hY2NvdW50IG1hcHBpbmcgd2FzIHJlbW92ZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0LQcMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMYcGFsbGV0FEV2ZW50BARUAAE4QFBlcnNvblJlZ2lzdGVyZWQIARRhbGlhcwgBFEFsaWFzAAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAABJhBIHBlcnNvbiBoYXMgcmVnaXN0ZXJlZCBhcyBhIGNvbnN1bWVyLlBMaXRlUGVyc29uUmVnaXN0ZXJlZAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQAAQSsQSBsaXRlIHBlcnNvbiBoYXMgcmVnaXN0ZXJlZCBhcyBhIGNvbnN1bWVyLmRGcmllbmRSZXF1ZXN0U3RtdFVzYWdlU2V0EAEUYWxpYXMIARRBbGlhcwABGHBlcmlvZDgBDHUzMgABDHNlcQwBCHU4AAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAACBAEBRnJpZW5kIHJlcXVlc3Qgc3RhdGVtZW50IHVzYWdlIGhhcyBiZWVuIGFzc2lnbmVkIGZvciBhIHNlcXVlbmNlLnRGcmllbmRSZXF1ZXN0U3RtdFVzYWdlUmVtb3ZlZAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQAAwTARnJpZW5kIHJlcXVlc3Qgc3RhdGVtZW50IHVzYWdlIGhhcyBiZWVuIHJlbW92ZWQuaFBlcnNvbkF1dGhvcml6YXRpb25Ub3VjaGVkBAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAEBJRBIHBlcnNvbidzIGF1dGhvcml6YXRpb24gd2FzIHRvdWNoZWQuhEV4cGlyZWRVc2VybmFtZVJlc2VydmF0aW9uUmVtb3ZlZAgBIHVzZXJuYW1lQQQBIFVzZXJuYW1lAAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAFBLBBbiBleHBpcmVkIHVzZXJuYW1lIHJlc2VydmF0aW9uIHdhcyByZW1vdmVkLlBJZGVudGlmaWVyS2V5VXBkYXRlZAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQABgSgQSBjb25zdW1lcidzIGlkZW50aWZpZXIga2V5IHdhcyB1cGRhdGVkLnhVc2VybmFtZVJlc2VydmF0aW9uRHVyYXRpb25TZXQEASBkdXJhdGlvbigBDHU2NAAHBKhUaGUgdXNlcm5hbWUgcmVzZXJ2YXRpb24gZHVyYXRpb24gd2FzIHNldC5UU3RtdFN0b3JlQWxsb3dhbmNlU2V0EAEUYWxpYXMIARRBbGlhcwABGHBlcmlvZDgBDHUzMgABDHNlcTgBDHUzMgABHGFjY291bnQEATBUOjpBY2NvdW50SWQACATMQW4gYW5vbnltb3VzIHN0YXRlbWVudCBzdG9yZSBhbGxvd2FuY2Ugd2FzIGdyYW50ZWQuaFN0bXRTdG9yZUFsbG93YW5jZXNDbGVhcmVkDAEYcGVyaW9kOAEMdTMyAAEkZmlyc3Rfa2V5CAEUQWxpYXMAARRjb3VudDgBDHUzMgAJBMxFeHBpcmVkIHN0YXRlbWVudCBzdG9yZSBhbGxvd2FuY2VzIHdlcmUgY2xlYW5lZCB1cC40UGVyc29uRGVtb3RlZAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQACgTcQSBmdWxsIHBlcnNvbiB3YXMgZGVtb3RlZCBkdWUgdG8gZXhwaXJlZCBhdXRob3JpemF0aW9uLlhMb25nVGVybVN0b3JhZ2VDbGFpbWVkFAEUYWxpYXMIARRBbGlhcwABGHBlcmlvZDgBDHUzMgABHGNvdW50ZXIMAQh1OAABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAShjb2xsZWN0aW9uYQMBUE1lbWJlcnNoaXBDb2xsZWN0aW9uAAsEyExvbmctdGVybSBzdG9yYWdlIGhhcyBiZWVuIGNsYWltZWQgZm9yIGFuIGFjY291bnQufExvbmdUZXJtU3RvcmFnZUFsbG9jYXRpb25GYWlsZWQUARRhbGlhcwgBFEFsaWFzAAEYcGVyaW9kOAEMdTMyAAEcY291bnRlcgwBCHU4AAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABKGNvbGxlY3Rpb25hAwFQTWVtYmVyc2hpcENvbGxlY3Rpb24ADAhZAUEgbG9uZy10ZXJtIHN0b3JhZ2UgY2xhaW0gd2FzIGFjY2VwdGVkIGJ1dCB0aGUgZG93bnN0cmVhbSBhbGxvY2F0aW9uIGZhaWxlZC4gVGhlIGFsaWFzlGlzIHN0aWxsIG1hcmtlZCBzcGVudCBmb3IgdGhlIHBlcmlvZC50TG9uZ1Rlcm1TdG9yYWdlQWxpYXNlc0NsZWFyZWQIARhwZXJpb2Q4AQx1MzIAARRjb3VudDgBDHUzMgANBAUBRXhwaXJlZCBsb25nLXRlcm0gc3RvcmFnZSBhbGlhc2VzIGhhdmUgYmVlbiBjbGVhcmVkIGZvciBhIHBlcmlvZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQxBwxsaW5kaXZfcGFsbGV0X2NodW5rc19tYW5hZ2VyGHBhbGxldBRFdmVudAQEVAABCGhDaHVua1BhZ2VIYXNoZXNJbml0aWFsaXplZAgBNHJpbmdfZXhwb25lbnT9BAEwUmluZ0V4cG9uZW50AAEsdG90YWxfcGFnZXM4AQx1MzIAAAQZAUEgbmV3IGNodW5rIHBhZ2UgaGFzaCBzZXQgaGFzIGJlZW4gaW5pdGlhbGl6ZWQgKGUuZy4sIGR1cmluZyBnZW5lc2lzKS4sQ2h1bmtzQWRkZWQMATRyaW5nX2V4cG9uZW50/QQBMFJpbmdFeHBvbmVudAABLHN0YXJ0X2luZGV4OAEMdTMyAAEUY291bnQ4AQx1MzIAAQQhAU5ldyBjaHVua3MgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSBhZGRlZCB0byBhbiBleGlzdGluZyBvciBuZXcgY2h1bmsgc2V0LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldDUHDFBpbmRpdl9wYWxsZXRfbWVtYmVycxhwYWxsZXQURXZlbnQEBFQAASgsTWVtYmVyQWRkZWQEAQxrZXkIASxNZW1iZXJPZjxUPgAABOhBbiBlbnRpdHkgaGFzIGhhZCB0aGVpciBtZW1iZXJzaGlwIHJlY29nbmlzZWQgYW5kIGluZGV4ZWQuNE1lbWJlclJlbW92ZWQEAQxrZXkIASxNZW1iZXJPZjxUPgABBKxBbiBlbnRpdHkgaGFzIGhhZCB0aGVpciBtZW1iZXJzaGlwIHJldm9rZWQubENvbGxlY3Rpb25NYXJrZWRGb3JEZWxldGlvbgQBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAIEqEEgY29sbGVjdGlvbiBoYXMgYmVlbiBtYXJrZWQgZm9yIGRlbGV0aW9uLkRDb2xsZWN0aW9uRGVsZXRlZAQBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAMEkEEgY29sbGVjdGlvbiBoYXMgYmVlbiBmdWxseSBkZWxldGVkLiRSaW5nQnVpbHQIAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgABARYQSByaW5nIHJvb3Qgd2FzIGJ1aWx0LkBNZW1iZXJzT25ib2FyZGVkBAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIABQRcTWVtYmVycyB3ZXJlIG9uYm9hcmRlZC4sUmluZ3NNZXJnZWQMAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABPGJhc2VfcmluZ19pbmRleDgBJFJpbmdJbmRleAABRHRhcmdldF9yaW5nX2luZGV4OAEkUmluZ0luZGV4AAYEWFR3byByaW5ncyB3ZXJlIG1lcmdlZC5ET25ib2FyZGluZ1NpemVTZXQIAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABPG9uYm9hcmRpbmdfc2l6ZTgBDHUzMgAHBLRUaGUgb25ib2FyZGluZyBzaXplIHdhcyBzZXQgZm9yIGEgY29sbGVjdGlvbi5ITWVtYmVyU2VsZkluY2x1ZGVkCAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAAQxrZXkIASxNZW1iZXJPZjxUPgAIBIxBIG1lbWJlciBzZWxmLWluY2x1ZGVkIGludG8gYSByaW5nLkBPbGRSb290Q2xlYW5lZFVwDAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIAAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAEgcmV2aXNpb244AQx1MzIACQSkQW4gb2xkIHJvb3QgcmV2aXNpb24gaGFzIGJlZW4gY2xlYW5lZCB1cC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQ5BwxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0FEV2ZW50BARUAAFcJENvaW5TcGxpdAQBMG91dHB1dF9jb3VudDgBDHUzMgAAADxDb2luVHJhbnNmZXJyZWQMAQh0bwQBMFQ6OkFjY291bnRJZAABFHZhbHVldQMBJENvaW5WYWx1ZQABHG5ld19hZ2UtAwEMdTE2AAEAWFJlY3ljbGVyTG9hZGVkV2l0aENvaW4EARR2YWx1ZXUDASRDb2luVmFsdWUAAgB8UmVjeWNsZXJMb2FkZWRXaXRoRXh0ZXJuYWxBc3NldAwBDHdobwQBMFQ6OkFjY291bnRJZAABFHZhbHVldQMBJENvaW5WYWx1ZQABGGFtb3VudMQBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgADAGBSZWN5Y2xlclVubG9hZGVkSW50b0NvaW4QAQh0bwQBMFQ6OkFjY291bnRJZAABLGlucHV0X3ZhbHVldQMBJENvaW5WYWx1ZQABMG91dHB1dF92YWx1ZXUDASRDb2luVmFsdWUAASxpbnB1dF9jb3VudDgBDHUzMgAEAIRSZWN5Y2xlclVubG9hZGVkSW50b0V4dGVybmFsQXNzZXQQAQh0bwQBMFQ6OkFjY291bnRJZAABFHZhbHVldQMBJENvaW5WYWx1ZQABLGlucHV0X2NvdW50OAEMdTMyAAEYYW1vdW50xAFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAUAsFJlY3ljbGVyVW5sb2FkZWRJbnRvRXh0ZXJuYWxBc3NldEFuZFZvdWNoZXJzFAEIdG8EATBUOjpBY2NvdW50SWQAARR2YWx1ZXUDASRDb2luVmFsdWUAASxpbnB1dF9jb3VudDgBDHUzMgABVGV4dGVybmFsX2Fzc2V0X2Ftb3VudMQBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgABNHZvdWNoZXJfY291bnQ4AQx1MzIABgCEUGFpZFVubG9hZFRva2VuUmVnaXN0ZXJlZFdpdGhDb2luCAEMZmVlxAFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAEkZGVzdHJveWVkxAFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAcAjFBhaWRVbmxvYWRUb2tlblJlZ2lzdGVyZWRXaXRoTmF0aXZlCAEMd2hvBAEwVDo6QWNjb3VudElkAAEMZmVlxAFITmF0aXZlQmFsYW5jZU9mPFQ+AAgAjFBhaWRVbmxvYWRUb2tlblJlZ2lzdGVyZWRXaXRoU3RhYmxlCAEMd2hvBAEwVDo6QWNjb3VudElkAAEMZmVlxAFURnVuZ2libGVzQmFsYW5jZU9mPFQ+AAkAdFBlb3BsZUZyZWVVbmxvYWRUb2tlbkNvbnN1bWVkBAEYcGVyaW9kOAEYUGVyaW9kAAoAhExpdGVQZW9wbGVGcmVlVW5sb2FkVG9rZW5Db25zdW1lZAQBGHBlcmlvZDgBGFBlcmlvZAALAGRSZWN5Y2xlcnNVbmxvYWRlZEludG9Db2luDAEIdG8EATBUOjpBY2NvdW50SWQAATBvdXRwdXRfdmFsdWV1AwEkQ29pblZhbHVlAAEsaW5wdXRfY291bnQ4AQx1MzIADACIUmVjeWNsZXJzVW5sb2FkZWRJbnRvRXh0ZXJuYWxBc3NldAwBCHRvBAEwVDo6QWNjb3VudElkAAEsaW5wdXRfY291bnQ4AQx1MzIAARhhbW91bnTEAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4ADQC4UmVjeWNsZXJzVW5sb2FkZWRJbnRvRXh0ZXJuYWxBc3NldE5vbkFub255bW91cxQBDHdobwQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAEsaW5wdXRfY291bnQ4AQx1MzIAARhhbW91bnTEAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4AATBmZWVfY3VycmVuY3k9BQEsRmVlQ3VycmVuY3kADgBkUmVjeWNsZXJVbmxvYWRlZEludG9Db2lucwQBMG91dHB1dF9jb3VudDgBDHUzMgAPAHxDb2luT2ZmYm9hcmRlZEludG9FeHRlcm5hbEFzc2V0DAEIdG8EATBUOjpBY2NvdW50SWQAARR2YWx1ZXUDASRDb2luVmFsdWUAARhhbW91bnTEAVRGdW5naWJsZXNCYWxhbmNlT2Y8VD4AEAA8UmVjeWNsZXJDbGVhbmVkDAEUdmFsdWV1AwEkQ29pblZhbHVlAAE8cmVtYWluaW5nX2NvaW5zOAEMdTMyAAFAZGVzdHJveWVkX2Ftb3VudMQBVEZ1bmdpYmxlc0JhbGFuY2VPZjxUPgARAGRDb25zdW1lZEZyZWVUb2tlbnNDbGVhbmVkBAEYcGVyaW9kOAEYUGVyaW9kABIAaFBhaWRVbmxvYWRUb2tlblJpbmdDbGVhbmVkCAEYcGVyaW9kOAEYUGVyaW9kAAEocmluZ19pbmRleDgBJFJpbmdJbmRleAATAExSZWN5Y2xlckR1c3RDbGVhbmVkABQAaFBhaWRVbmxvYWRUb2tlbkR1c3RDbGVhbmVkABUAnEV4cGlyZWRQYWlkVW5sb2FkVG9rZW5Db2xsZWN0aW9uRGVsZXRlZAQBGHBlcmlvZDgBGFBlcmlvZAAWAAR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldD0HDHRpbmRpdl9wYWxsZXRfbWVtYmVyc19ub3RpZmllchhwYWxsZXQURXZlbnQEBFQAARgoU3Vic2NyaWJlZAQBHHBhcmFfaWScARhQYXJhSWQAAARcQSBwYXJhY2hhaW4gc3Vic2NyaWJlZC4wVW5zdWJzY3JpYmVkBAEccGFyYV9pZJwBGFBhcmFJZAABBGRBIHBhcmFjaGFpbiB1bnN1YnNjcmliZWQuLFVwZGF0ZXNTZW50CAEccGFyYV9pZJwBGFBhcmFJZAABMHVwZGF0ZV9jb3VudDgBDHUzMgACBIBVcGRhdGUgYmF0Y2ggc2VudCB0byBzdWJzY3JpYmVyLkBVcGRhdGVTZW5kRmFpbGVkBAEccGFyYV9pZJwBGFBhcmFJZAADBMRTZW5kaW5nIHJpbmcgcm9vdCB1cGRhdGVzIHRvIGEgc3Vic2NyaWJlciBmYWlsZWQuPFJlcGxheVJlcXVlc3RlZAwBHHBhcmFfaWScARhQYXJhSWQAAShpZGVudGlmaWVyCAEoSWRlbnRpZmllcgABNGluZGljZXNfY291bnQ4AQx1MzIABAS8UmVwbGF5IG9mIHJpbmcgcm9vdHMgcmVxdWVzdGVkIGJ5IGEgc3Vic2NyaWJlci44QmF0Y2hBYmFuZG9uZWQEASBzZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyAAUEzEEgc3R1Y2sgYmF0Y2ggd2FzIGFiYW5kb25lZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldEEHDIxpbmRpdl9wYWxsZXRfc3RvcmFnZV9pbml0aWFsaXphdGlvbhhwYWxsZXQURXZlbnQEBFQAAUgwQXNzZXRDcmVhdGVkAAAE0FRoZSBmb3JlaWduIGFzc2V0IHdhcyBjcmVhdGVkIGFuZCByZXNlcnZlcyB3ZXJlIHNldC5QWGNtRnVuZHNUcmFuc2ZlclNlbnQAAQSwQW4gWENNIGZ1bmRzIHRyYW5zZmVyIHdhcyBzZW50IHRvIEFzc2V0IEh1Yi5gWGNtRnVuZHNUcmFuc2ZlclRpbWVkT3V0AAIEvFRoZSBYQ00gdHJhbnNmZXIgdGltZWQgb3V0IGFuZCB3aWxsIGJlIHJldHJpZWQuNEZ1bmRzVmVyaWZpZWQAAwSUVHJhbnNmZXJyZWQgZnVuZHMgaGF2ZSBiZWVuIHZlcmlmaWVkLihQb3RzRnVuZGVkAAQEaEFsbCBwb3RzIGhhdmUgYmVlbiBmdW5kZWQuXE1vYlJ1bGVQYXlvdXRzU2NoZWR1bGVkAAUEmE1vYiBSdWxlIHBheW91dCBzY2hlZHVsZSBoYXMgYmVlbiBzZXQuVFNjb3JlUGF5b3V0c1NjaGVkdWxlZAAGBIxTY29yZSBwYXlvdXQgc2NoZWR1bGUgaGFzIGJlZW4gc2V0LkRBaXJkcm9wUG9vbE9wZW5lZAQBHHBvb2xfaWQ4AYRpbmRpdl9wYWxsZXRfYWlyZHJvcDo6UHJpemVQb29sSWQABwT8QW4gYWlyZHJvcCBwcml6ZSBwb29sIGhhcyBiZWVuIG9wZW5lZCBieSB0aGUgb25fcG9sbCBzY2hlZHVsZXIufEFpcmRyb3BTY2hlZHVsaW5nRW5hYmxlZENoYW5nZWQEARxlbmFibGVkyAEQYm9vbAAIBEEBQWlyZHJvcCBzY2hlZHVsaW5nIHdhcyBlbmFibGVkIG9yIGRpc2FibGVkIHZpYSBgc2V0X2FpcmRyb3Bfc2NoZWR1bGluZ19lbmFibGVkYC50T25Qb2xsSW5pdGlhbGl6YXRpb25Db21wbGV0ZWQACQwpAVRoZSBvbmUtdGltZSBvbl9wb2xsIGluaXRpYWxpemF0aW9uIGhhcyBjb21wbGV0ZWQuIFJlY3VycmluZyBhaXJkcm9wIHByaXpl/HBvb2wgb3BlbmluZyBjb250aW51ZXMgYWZ0ZXJ3YXJkIGluIGBPcGVuaW5nQWlyZHJvcFBvb2xzYCB3aGlsZZRgQWlyZHJvcFNjaGVkdWxpbmdFbmFibGVkYCBpcyBgdHJ1ZWAuZE1pZ3JhdGlvblBlb3BsZVJlY29nbml6ZWQACgS8TWlncmF0aW9uOiBpbml0aWFsIHBlb3BsZSBoYXZlIGJlZW4gcmVjb2duaXplZC5oTWlncmF0aW9uT25ib2FyZGluZ1NpemVTZXQACwSgTWlncmF0aW9uOiBvbmJvYXJkaW5nIHNpemUgaGFzIGJlZW4gc2V0LnhNaWdyYXRpb25Qcm9vZk9mSW5rSW5pdGlhbGl6ZWQADATQTWlncmF0aW9uOiBQcm9vZi1vZi1JbmsgcGFsbGV0IGhhcyBiZWVuIGluaXRpYWxpemVkLlxNaWdyYXRpb25HYW1lc1NjaGVkdWxlZAANBJRNaWdyYXRpb246IGdhbWVzIGhhdmUgYmVlbiBzY2hlZHVsZWQuXE1pZ3JhdGlvbkludml0ZXNHcmFudGVkAA4ElE1pZ3JhdGlvbjogaW52aXRlcyBoYXZlIGJlZW4gZ3JhbnRlZC58TWlncmF0aW9uUmVpbWJ1cnNlbWVudFZhbHVlc1NldAAPBOxNaWdyYXRpb246IFByb29mLW9mLUluayByZWltYnVyc2VtZW50IHZhbHVlcyBoYXZlIGJlZW4gc2V0LoRNaWdyYXRpb25BdHRlc3RhdGlvbkFsbG93YW5jZXNTZXQAEATwTWlncmF0aW9uOiBQZW9wbGUgTGl0ZSBhdHRlc3RhdGlvbiBhbGxvd2FuY2VzIGhhdmUgYmVlbiBzZXQuSE1pZ3JhdGlvbkNvbXBsZXRlZAARBBkBTWlncmF0aW9uIGhhcyBjb21wbGV0ZWQgYW5kIG9uX3BvbGwgaW5pdGlhbGl6YXRpb24gaGFzIGJlZW4gdHJpZ2dlcmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldEUHDKBpbmRpdl9wYWxsZXRfc3RvcmFnZV9pbml0aWFsaXphdGlvbl9saXRlGHBhbGxldBRFdmVudAQEVAABBFxJbml0aWFsaXphdGlvbkNvbXBsZXRlZAAABBEBQXR0ZXN0YXRpb24gYWxsb3dhbmNlcyBoYXZlIGJlZW4gc2V0IGFuZCBpbml0aWFsaXphdGlvbiBpcyBjb21wbGV0ZS4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRJBwxQaW5kaXZfcGFsbGV0X2FpcmRyb3AYcGFsbGV0FEV2ZW50BARUAAEYPFByaXplUG9vbE9wZW5lZBwBCGlkOAEsUHJpemVQb29sSWQAAShkaXNwYXRjaGVyBAEwVDo6QWNjb3VudElkAAEYdGFyZ2V0ZQUBLFByaXplVGFyZ2V0AAEgYXNzZXRfaWTgATBBc3NldElkT2Y8VD4AAShudW1fcHJpemVzOAEMdTMyAAEscHJpemVfdmFsdWXEAURBc3NldEJhbGFuY2VPZjxUPgABKGV4cGlyZXNfYXQoAQx1NjQAAARgQSBwcml6ZSBwb29sIHdhcyBvcGVuZWQuMFByaXplQ2xhaW1lZBQBHHBvb2xfaWQ4ASxQcml6ZVBvb2xJZAABIGNsYWltYW50HQcBdEFjY291bnRPclBlcnNvbjxUOjpBY2NvdW50SWQ+AAEsYmVuZWZpY2lhcnkEATBUOjpBY2NvdW50SWQAASBhc3NldF9pZOABMEFzc2V0SWRPZjxUPgABGGFtb3VudMQBREFzc2V0QmFsYW5jZU9mPFQ+AAEUGQFBIHByaXplIHdhcyBjbGFpbWVkIGZyb20gYSBwcml6ZSBwb29sLiBgY2xhaW1hbnRgIGlzIHRoZSBpZGVudGl0eSB0aGF0BQFzYXRpc2ZpZWQgdGhlIHBvb2wncyBlbGlnaWJpbGl0eSBwcmVkaWNhdGUg4oCUIGEgUGVyc29uIGFsaWFzIGZvcuxbYENhbGw6OmNsYWltX3ByaXplYF0gKHZlcmlmaWVkLXBlb3BsZSBwb29scyksIGFuZCB3aGF0ZXZlcg0BYEFjY291bnRPclBlcnNvbmAgdGhlIGdhbWUgcGFsbGV0IHN1cHBsaWVkIGZvciBnYW1lLXBvb2wgY2xhaW1zIHZpYYRbYEFpcmRyb3BBcGk6OmNsYWltX2dhbWVfcHJpemVgXS5AQWxsUHJpemVzQ2xhaW1lZAgBCGlkOAEsUHJpemVQb29sSWQAASBhc3NldF9pZOABMEFzc2V0SWRPZjxUPgACDBkBQSBwcml6ZSBwb29sIGRlbGl2ZXJlZCBpdHMgbGFzdCBwcml6ZS4gVGhlIHBvb2wgc3RheXMgaW4gc3RvcmFnZSB1bnRpbCEBYGV4cGlyZXNfYXRgIHNvIGBQcml6ZVBvb2xDbGFpbXNgIGtlZXBzIHRoZSByZXBsYXkgd2luZG93OyBmdXJ0aGVyIGNsYWltsGF0dGVtcHRzIHJldHVybiBgRXJyb3I6OlByaXplUG9vbEV4aGF1c3RlZGAuQFByaXplUG9vbEV4cGlyZWQMAQhpZDgBLFByaXplUG9vbElkAAEgYXNzZXRfaWTgATBBc3NldElkT2Y8VD4AASByZWZ1bmRlZMQBREFzc2V0QmFsYW5jZU9mPFQ+AAMIPQFBIHByaXplIHBvb2wgcmVhY2hlZCBgZXhwaXJlc19hdGAgYW5kIHdhcyBjbGVhbmVkIHVwOyByZW1haW5pbmcgaGVsZCBmdW5kcyB3ZXJlJHJlbGVhc2VkLjxQcml6ZVBvb2xDbG9zZWQMAQhpZDgBLFByaXplUG9vbElkAAEgYXNzZXRfaWTgATBBc3NldElkT2Y8VD4AASByZWZ1bmRlZMQBREFzc2V0QmFsYW5jZU9mPFQ+AAQIUQFBIHByaXplIHBvb2wgd2FzIGNsb3NlZCBlYXJseSBieSBpdHMgZGlzcGF0Y2hlciAob3IgYE1hbmFnZXJPcmlnaW5gKTsgcmVtYWluaW5nIGhlbGRQZnVuZHMgd2VyZSByZWxlYXNlZC5MUHJpemVUcmFuc2ZlckZhaWxlZBABHHBvb2xfaWQ4ASxQcml6ZVBvb2xJZAABLGJlbmVmaWNpYXJ5BAEwVDo6QWNjb3VudElkAAEgYXNzZXRfaWTgATBBc3NldElkT2Y8VD4AARhhbW91bnTEAURBc3NldEJhbGFuY2VPZjxUPgAFFCkBVGhlIHNsb3Qgd2FzIGF3YXJkZWQgYnV0IHRoZSBpbW1lZGlhdGUgcGF5b3V0IHRyYW5zZmVyIGZhaWxlZCAoZS5nLiBkdXN0ZWQtAWJlbmVmaWNpYXJ5KS4gVGhlIHJlbGVhc2UrdHJhbnNmZXIgd2FzIHJvbGxlZCBiYWNrIHNvIHRoZSBmdW5kcyByZW1haW4gaGVsZCkBb24gdGhlIHBvdCwgYnV0IGBQcml6ZVBvb2xDbGFpbXNgIGFuZCBgcHJpemVzX3JlbWFpbmluZ2Agc3RpbGwgcmVmbGVjdCB0aGUtAWNsYWltIOKAlCB0aGUgc2xvdCBpcyBjb25zdW1lZCB3aXRob3V0IGEgcmVjb3ZlcnkgcGF0aC4gRW1pdHRlZCBpbiBhZGRpdGlvbkh0byBgUHJpemVDbGFpbWVkYC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRNBwxEcGFsbGV0X21pZ3JhdGlvbnMYcGFsbGV0FEV2ZW50BARUAAEgOFVwZ3JhZGVTdGFydGVkBAEobWlncmF0aW9uczgBDHUzMhDQVGhlIG51bWJlciBvZiBtaWdyYXRpb25zIHRoYXQgdGhpcyB1cGdyYWRlIGNvbnRhaW5zLgBBAVRoaXMgY2FuIGJlIHVzZWQgdG8gZGVzaWduIGEgcHJvZ3Jlc3MgaW5kaWNhdG9yIGluIGNvbWJpbmF0aW9uIHdpdGggY291bnRpbmcgdGhlzGBNaWdyYXRpb25Db21wbGV0ZWRgIGFuZCBgTWlncmF0aW9uU2tpcHBlZGAgZXZlbnRzLgAMaEEgUnVudGltZSB1cGdyYWRlIHN0YXJ0ZWQuAPhJdHMgZW5kIGlzIGluZGljYXRlZCBieSBgVXBncmFkZUNvbXBsZXRlZGAgb3IgYFVwZ3JhZGVGYWlsZWRgLkBVcGdyYWRlQ29tcGxldGVkAAEMmFRoZSBjdXJyZW50IHJ1bnRpbWUgdXBncmFkZSBjb21wbGV0ZWQuAB0BVGhpcyBpbXBsaWVzIHRoYXQgYWxsIG9mIGl0cyBtaWdyYXRpb25zIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkgYXMgd2VsbC40VXBncmFkZUZhaWxlZAACDFxSdW50aW1lIHVwZ3JhZGUgZmFpbGVkLgDoVGhpcyBpcyB2ZXJ5IGJhZCBhbmQgd2lsbCByZXF1aXJlIGdvdmVybmFuY2UgaW50ZXJ2ZW50aW9uLkBNaWdyYXRpb25Ta2lwcGVkBAEUaW5kZXg4AQx1MzIEKQFUaGUgaW5kZXggb2YgdGhlIHNraXBwZWQgbWlncmF0aW9uIHdpdGhpbiB0aGUgW2BDb25maWc6Ok1pZ3JhdGlvbnNgXSBsaXN0LgMECQFBIG1pZ3JhdGlvbiB3YXMgc2tpcHBlZCBzaW5jZSBpdCB3YXMgYWxyZWFkeSBleGVjdXRlZCBpbiB0aGUgcGFzdC5ETWlncmF0aW9uQWR2YW5jZWQIARRpbmRleDgBDHUzMgQJAVRoZSBpbmRleCBvZiB0aGUgbWlncmF0aW9uIHdpdGhpbiB0aGUgW2BDb25maWc6Ok1pZ3JhdGlvbnNgXSBsaXN0LgEQdG9vazgBREJsb2NrTnVtYmVyRm9yPFQ+BNRUaGUgbnVtYmVyIG9mIGJsb2NrcyB0aGF0IHRoaXMgbWlncmF0aW9uIHRvb2sgc28gZmFyLgQEXEEgbWlncmF0aW9uIHByb2dyZXNzZWQuSE1pZ3JhdGlvbkNvbXBsZXRlZAgBFGluZGV4OAEMdTMyBAkBVGhlIGluZGV4IG9mIHRoZSBtaWdyYXRpb24gd2l0aGluIHRoZSBbYENvbmZpZzo6TWlncmF0aW9uc2BdIGxpc3QuARB0b29rOAFEQmxvY2tOdW1iZXJGb3I8VD4E1FRoZSBudW1iZXIgb2YgYmxvY2tzIHRoYXQgdGhpcyBtaWdyYXRpb24gdG9vayBzbyBmYXIuBQRYQSBNaWdyYXRpb24gY29tcGxldGVkLjxNaWdyYXRpb25GYWlsZWQIARRpbmRleDgBDHUzMgQJAVRoZSBpbmRleCBvZiB0aGUgbWlncmF0aW9uIHdpdGhpbiB0aGUgW2BDb25maWc6Ok1pZ3JhdGlvbnNgXSBsaXN0LgEQdG9vazgBREJsb2NrTnVtYmVyRm9yPFQ+BNRUaGUgbnVtYmVyIG9mIGJsb2NrcyB0aGF0IHRoaXMgbWlncmF0aW9uIHRvb2sgc28gZmFyLgYMTEEgTWlncmF0aW9uIGZhaWxlZC4ATQFUaGlzIGltcGxpZXMgdGhhdCB0aGUgd2hvbGUgdXBncmFkZSBmYWlsZWQgYW5kIGdvdmVybmFuY2UgaW50ZXJ2ZW50aW9uIGlzIHJlcXVpcmVkLjxIaXN0b3JpY0NsZWFyZWQEASxuZXh0X2N1cnNvcpEFATxPcHRpb248VmVjPHU4Pj4E6FNob3VsZCBiZSBwYXNzZWQgdG8gYGNsZWFyX2hpc3RvcmljYCBpbiBhIHN1Y2Nlc3NpdmUgY2FsbC4HBMhUaGUgc2V0IG9mIGhpc3RvcmljYWwgbWlncmF0aW9ucyBoYXMgYmVlbiBjbGVhcmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldFEHCDBmcmFtZV9zeXN0ZW0UUGhhc2UAAQw4QXBwbHlFeHRyaW5zaWMEADgBDHUzMgAAADBGaW5hbGl6YXRpb24AAQA4SW5pdGlhbGl6YXRpb24AAgAAVQcAAAI8AFkHAAACXQcAXQcAAAQIODgAYQcIMGZyYW1lX3N5c3RlbVhMYXN0UnVudGltZVVwZ3JhZGVJbmZvAAAIATBzcGVjX3ZlcnNpb25gAUxjb2RlYzo6Q29tcGFjdDx1MzI+AAEkc3BlY19uYW1lZQcBRENvdzwnc3RhdGljLCBzdHI+AABlBwQMQ293BARUAWkHAAQAaQcAAABpBwAABQIAbQcIMGZyYW1lX3N5c3RlbWBDb2RlVXBncmFkZUF1dGhvcml6YXRpb24EBFQAAAgBJGNvZGVfaGFzaDwBHFQ6Okhhc2gAATRjaGVja192ZXJzaW9uyAEQYm9vbAAAcQcMMGZyYW1lX3N5c3RlbRhsaW1pdHMwQmxvY2tXZWlnaHRzAAAMAShiYXNlX2Jsb2Nr1QEBGFdlaWdodAABJG1heF9ibG9ja9UBARhXZWlnaHQAASRwZXJfY2xhc3N1BwGEUGVyRGlzcGF0Y2hDbGFzczxXZWlnaHRzUGVyQ2xhc3M+AAB1Bww0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQZXJEaXNwYXRjaENsYXNzBARUAXkHAAwBGG5vcm1hbHkHAQRUAAEsb3BlcmF0aW9uYWx5BwEEVAABJG1hbmRhdG9yeXkHAQRUAAB5BwwwZnJhbWVfc3lzdGVtGGxpbWl0czxXZWlnaHRzUGVyQ2xhc3MAABABOGJhc2VfZXh0cmluc2lj1QEBGFdlaWdodAABNG1heF9leHRyaW5zaWOlAgE4T3B0aW9uPFdlaWdodD4AASRtYXhfdG90YWylAgE4T3B0aW9uPFdlaWdodD4AASByZXNlcnZlZKUCAThPcHRpb248V2VpZ2h0PgAAfQcMMGZyYW1lX3N5c3RlbRhsaW1pdHMsQmxvY2tMZW5ndGgAAAgBDG1heIEHAVRQZXJEaXNwYXRjaENsYXNzPHUzMj4AATxtYXhfaGVhZGVyX3NpemUJAwEsT3B0aW9uPHUzMj4AAIEHDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoQFBlckRpc3BhdGNoQ2xhc3MEBFQBOAAMARhub3JtYWw4AQRUAAEsb3BlcmF0aW9uYWw4AQRUAAEkbWFuZGF0b3J5OAEEVAAAhQcIKHNwX3dlaWdodHM8UnVudGltZURiV2VpZ2h0AAAIARByZWFkKAEMdTY0AAEUd3JpdGUoAQx1NjQAAIkHCChzcF92ZXJzaW9uOFJ1bnRpbWVWZXJzaW9uAAAgASRzcGVjX25hbWVlBwFEQ293PCdzdGF0aWMsIHN0cj4AASRpbXBsX25hbWVlBwFEQ293PCdzdGF0aWMsIHN0cj4AAURhdXRob3JpbmdfdmVyc2lvbjgBDHUzMgABMHNwZWNfdmVyc2lvbjgBDHUzMgABMGltcGxfdmVyc2lvbjgBDHUzMgABEGFwaXONBwEcQXBpc1ZlYwABTHRyYW5zYWN0aW9uX3ZlcnNpb244AQx1MzIAAThzeXN0ZW1fdmVyc2lvbgwBCHU4AACNBwQMQ293BARUAZEHAAQAkQcAAACRBwAAApUHAJUHAAAECL0BOACZBwwwZnJhbWVfc3lzdGVtGHBhbGxldBRFcnJvcgQEVAABJDxJbnZhbGlkU3BlY05hbWUAAAgRAVRoZSBuYW1lIG9mIHNwZWNpZmljYXRpb24gZG9lcyBub3QgbWF0Y2ggYmV0d2VlbiB0aGUgY3VycmVudCBydW50aW1lUGFuZCB0aGUgbmV3IHJ1bnRpbWUuaFNwZWNWZXJzaW9uTmVlZHNUb0luY3JlYXNlAAEIQQFUaGUgc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGlzIG5vdCBhbGxvd2VkIHRvIGRlY3JlYXNlIGJldHdlZW4gdGhlIGN1cnJlbnQgcnVudGltZVBhbmQgdGhlIG5ldyBydW50aW1lLnRGYWlsZWRUb0V4dHJhY3RSdW50aW1lVmVyc2lvbgACDOxGYWlsZWQgdG8gZXh0cmFjdCB0aGUgcnVudGltZSB2ZXJzaW9uIGZyb20gdGhlIG5ldyBydW50aW1lLgAJAUVpdGhlciBjYWxsaW5nIGBDb3JlX3ZlcnNpb25gIG9yIGRlY29kaW5nIGBSdW50aW1lVmVyc2lvbmAgZmFpbGVkLkxOb25EZWZhdWx0Q29tcG9zaXRlAAME/FN1aWNpZGUgY2FsbGVkIHdoZW4gdGhlIGFjY291bnQgaGFzIG5vbi1kZWZhdWx0IGNvbXBvc2l0ZSBkYXRhLjxOb25aZXJvUmVmQ291bnQABAQ1AVRoZXJlIGlzIGEgbm9uLXplcm8gcmVmZXJlbmNlIGNvdW50IHByZXZlbnRpbmcgdGhlIGFjY291bnQgZnJvbSBiZWluZyBwdXJnZWQuMENhbGxGaWx0ZXJlZAAFBNBUaGUgb3JpZ2luIGZpbHRlciBwcmV2ZW50IHRoZSBjYWxsIHRvIGJlIGRpc3BhdGNoZWQubE11bHRpQmxvY2tNaWdyYXRpb25zT25nb2luZwAGBFUBQSBtdWx0aS1ibG9jayBtaWdyYXRpb24gaXMgb25nb2luZyBhbmQgcHJldmVudHMgdGhlIGN1cnJlbnQgY29kZSBmcm9tIGJlaW5nIHJlcGxhY2VkLkROb3RoaW5nQXV0aG9yaXplZAAHBFhObyB1cGdyYWRlIGF1dGhvcml6ZWQuMFVuYXV0aG9yaXplZAAIBJRUaGUgc3VibWl0dGVkIGNvZGUgaXMgbm90IGF1dGhvcml6ZWQuBGxFcnJvciBmb3IgdGhlIFN5c3RlbSBwYWxsZXSdBwwoc3BfcnVudGltZRh0cmFpdHMsQmxha2VUd28yNTYAAAAAoQcQKHNwX3J1bnRpbWUcZ2VuZXJpYxRibG9jaxRCbG9jawgYSGVhZGVyAVwkRXh0cmluc2ljAaUHAAgBGGhlYWRlclwBGEhlYWRlcgABKGV4dHJpbnNpY3O1BwE4VmVjPEV4dHJpbnNpYz4AAKUHEChzcF9ydW50aW1lHGdlbmVyaWNMdW5jaGVja2VkX2V4dHJpbnNpY0hVbmNoZWNrZWRFeHRyaW5zaWMQHEFkZHJlc3MBABBDYWxsASAkU2lnbmF0dXJlATUEFEV4dHJhAakHAAQAGAAAAKkHCHRjdW11bHVzX3BhbGxldF93ZWlnaHRfcmVjbGFpbVBTdG9yYWdlV2VpZ2h0UmVjbGFpbQgEVAAEUwGtBwAEAK0HAQRTAACtBwAABCixBwUGCQYNBhEGFQYZBiEGJQYpBgCxBwAABCiVBZkFpQWxBb0FyQXVBeEF9QUBBgC1BwAAAqUHALkHDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtMGJsb2NrX3dlaWdodDxCbG9ja1dlaWdodE1vZGUEBFQAAQwgRnVsbENvcmUEARxjb250ZXh0OAFEQmxvY2tOdW1iZXJGb3I8VD4AAABEUG90ZW50aWFsRnVsbENvcmUMARxjb250ZXh0OAFEQmxvY2tOdW1iZXJGb3I8VD4AAVxmaXJzdF90cmFuc2FjdGlvbl9pbmRleAkDASxPcHRpb248dTMyPgABNHRhcmdldF93ZWlnaHTVAQEYV2VpZ2h0AAEAOEZyYWN0aW9uT2ZDb3JlCAEcY29udGV4dDgBREJsb2NrTnVtYmVyRm9yPFQ+AAFcZmlyc3RfdHJhbnNhY3Rpb25faW5kZXgJAwEsT3B0aW9uPHUzMj4AAgAAvQcAAAYtAwDBBwAAAsUHAMUHDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHVuaW5jbHVkZWRfc2VnbWVudCBBbmNlc3RvcgQESAE8AAwBOHVzZWRfYmFuZHdpZHRoyQcBNFVzZWRCYW5kd2lkdGgAAThwYXJhX2hlYWRfaGFzaN0HASRPcHRpb248SD4AAWBjb25zdW1lZF9nb19haGVhZF9zaWduYWzhBwGMT3B0aW9uPHJlbGF5X2NoYWluOjpVcGdyYWRlR29BaGVhZD4AAMkHDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHVuaW5jbHVkZWRfc2VnbWVudDRVc2VkQmFuZHdpZHRoAAAMATR1bXBfbXNnX2NvdW50OAEMdTMyAAE8dW1wX3RvdGFsX2J5dGVzOAEMdTMyAAE0aHJtcF9vdXRnb2luZ80HAYxCVHJlZU1hcDxQYXJhSWQsIEhybXBDaGFubmVsVXBkYXRlPgAAzQcEIEJUcmVlTWFwCARLAZwEVgHRBwAEANUHAAAA0QcMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IdW5pbmNsdWRlZF9zZWdtZW50REhybXBDaGFubmVsVXBkYXRlAAAIASRtc2dfY291bnQ4AQx1MzIAASx0b3RhbF9ieXRlczgBDHUzMgAA1QcAAALZBwDZBwAABAic0QcA3QcEGE9wdGlvbgQEVAE8AQgQTm9uZQAAABBTb21lBAA8AAABAADhBwQYT3B0aW9uBARUAeUHAQgQTm9uZQAAABBTb21lBADlBwAAAQAA5QcMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjk4VXBncmFkZUdvQWhlYWQAAQgUQWJvcnQAAAAcR29BaGVhZAABAADpBwx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUh1bmluY2x1ZGVkX3NlZ21lbnQ4U2VnbWVudFRyYWNrZXIEBEgBPAAMATh1c2VkX2JhbmR3aWR0aMkHATRVc2VkQmFuZHdpZHRoAAE4aHJtcF93YXRlcm1hcmsJAwGAT3B0aW9uPHJlbGF5X2NoYWluOjpCbG9ja051bWJlcj4AAWBjb25zdW1lZF9nb19haGVhZF9zaWduYWzhBwGMT3B0aW9uPHJlbGF5X2NoYWluOjpVcGdyYWRlR29BaGVhZD4AAO0HBBhPcHRpb24EBFQB8QcBCBBOb25lAAAAEFNvbWUEAPEHAAABAADxBwxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OUhVcGdyYWRlUmVzdHJpY3Rpb24AAQQcUHJlc2VudAAAAAD1Bwx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbVByZWxheV9zdGF0ZV9zbmFwc2hvdFhNZXNzYWdpbmdTdGF0ZVNuYXBzaG90AAAQATBkbXFfbXFjX2hlYWQ8AURyZWxheV9jaGFpbjo6SGFzaAABnHJlbGF5X2Rpc3BhdGNoX3F1ZXVlX3JlbWFpbmluZ19jYXBhY2l0efkHAYxSZWxheURpc3BhdGNoUXVldWVSZW1haW5pbmdDYXBhY2l0eQABQGluZ3Jlc3NfY2hhbm5lbHP9BwGIVmVjPChQYXJhSWQsIEFicmlkZ2VkSHJtcENoYW5uZWwpPgABPGVncmVzc19jaGFubmVsc/0HAYhWZWM8KFBhcmFJZCwgQWJyaWRnZWRIcm1wQ2hhbm5lbCk+AAD5Bwx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbVByZWxheV9zdGF0ZV9zbmFwc2hvdIxSZWxheURpc3BhdGNoUXVldWVSZW1haW5pbmdDYXBhY2l0eQAACAE8cmVtYWluaW5nX2NvdW50OAEMdTMyAAE4cmVtYWluaW5nX3NpemU4AQx1MzIAAP0HAAACAQgAAQgAAAQInAUIAAUIDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5TEFicmlkZ2VkSHJtcENoYW5uZWwAABgBMG1heF9jYXBhY2l0eTgBDHUzMgABOG1heF90b3RhbF9zaXplOAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZTgBDHUzMgABJG1zZ19jb3VudDgBDHUzMgABKHRvdGFsX3NpemU4AQx1MzIAASBtcWNfaGVhZN0HATBPcHRpb248SGFzaD4AAAkIDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5ZEFicmlkZ2VkSG9zdENvbmZpZ3VyYXRpb24AACgBNG1heF9jb2RlX3NpemU4AQx1MzIAAUhtYXhfaGVhZF9kYXRhX3NpemU4AQx1MzIAAVhtYXhfdXB3YXJkX3F1ZXVlX2NvdW50OAEMdTMyAAFUbWF4X3Vwd2FyZF9xdWV1ZV9zaXplOAEMdTMyAAFcbWF4X3Vwd2FyZF9tZXNzYWdlX3NpemU4AQx1MzIAAZBtYXhfdXB3YXJkX21lc3NhZ2VfbnVtX3Blcl9jYW5kaWRhdGU4AQx1MzIAAYhocm1wX21heF9tZXNzYWdlX251bV9wZXJfY2FuZGlkYXRlOAEMdTMyAAFsdmFsaWRhdGlvbl91cGdyYWRlX2Nvb2xkb3duOAEsQmxvY2tOdW1iZXIAAWB2YWxpZGF0aW9uX3VwZ3JhZGVfZGVsYXk4ASxCbG9ja051bWJlcgABUGFzeW5jX2JhY2tpbmdfcGFyYW1zDQgBSEFzeW5jQmFja2luZ1BhcmFtcwAADQgQTHBvbGthZG90X3ByaW1pdGl2ZXMIdjk0YXN5bmNfYmFja2luZ0hBc3luY0JhY2tpbmdQYXJhbXMAAAgBTG1heF9jYW5kaWRhdGVfZGVwdGg4AQx1MzIAAVBhbGxvd2VkX2FuY2VzdHJ5X2xlbjgBDHUzMgAAEQgIlGN1bXVsdXNfcHJpbWl0aXZlc19wYXJhY2hhaW5faW5oZXJlbnRETWVzc2FnZVF1ZXVlQ2hhaW4AAAQAPAEkUmVsYXlIYXNoAAAVCAQgQlRyZWVNYXAIBEsBnARWAREIAAQAGQgAAAAZCAAAAh0IAB0IAAAECJwRCAAhCAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUhwYXJhY2hhaW5faW5oZXJlbnRASW5ib3VuZE1lc3NhZ2VJZAAACAEcc2VudF9hdDgBLEJsb2NrTnVtYmVyAAEscmV2ZXJzZV9pZHg4AQx1MzIAACUIAAACKQgAKQgIYHBvbGthZG90X2NvcmVfcHJpbWl0aXZlc0xPdXRib3VuZEhybXBNZXNzYWdlBAhJZAGcAAgBJHJlY2lwaWVudJwBCElkAAEQZGF0YRgBTGFsbG9jOjp2ZWM6OlZlYzx1OD4AAC0ICHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtLFBvVk1lc3NhZ2VzAAAYAWhyZWxheV9zdG9yYWdlX3Jvb3Rfb3JfaGFzaDwBRHJlbGF5X2NoYWluOjpIYXNoAAE0Y29yZV9zZWxlY3RvcgwBCHU4AAEwYnVuZGxlX2luZGV4DAEIdTgAATR1bXBfbXNnX2NvdW50OAEMdTMyAAFMaHJtcF9vdXRib3VuZF9jb3VudDgBDHUzMgABYGhybXBfb3V0Ym91bmRfcmVjaXBpZW50czEIASxWZWM8UGFyYUlkPgAAMQgAAAKcADUIDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtGHBhbGxldBRFcnJvcgQEVAABGExPdmVybGFwcGluZ1VwZ3JhZGVzAAAEGQFBdHRlbXB0IHRvIHVwZ3JhZGUgdmFsaWRhdGlvbiBmdW5jdGlvbiB3aGlsZSBleGlzdGluZyB1cGdyYWRlIHBlbmRpbmcuUFByb2hpYml0ZWRCeVBvbGthZG90AAEETQFQb2xrYWRvdCBjdXJyZW50bHkgcHJvaGliaXRzIHRoaXMgcGFyYWNoYWluIGZyb20gdXBncmFkaW5nIGl0cyB2YWxpZGF0aW9uIGZ1bmN0aW9uLhhUb29CaWcAAghFAVRoZSBzdXBwbGllZCB2YWxpZGF0aW9uIGZ1bmN0aW9uIGhhcyBjb21waWxlZCBpbnRvIGEgYmxvYiBsYXJnZXIgdGhhbiBQb2xrYWRvdCBpczx3aWxsaW5nIHRvIHJ1bi5oVmFsaWRhdGlvbkRhdGFOb3RBdmFpbGFibGUAAwQdAVRoZSBpbmhlcmVudCB3aGljaCBzdXBwbGllcyB0aGUgdmFsaWRhdGlvbiBkYXRhIGRpZCBub3QgcnVuIHRoaXMgYmxvY2sudEhvc3RDb25maWd1cmF0aW9uTm90QXZhaWxhYmxlAAQEKQFUaGUgaW5oZXJlbnQgd2hpY2ggc3VwcGxpZXMgdGhlIGhvc3QgY29uZmlndXJhdGlvbiBkaWQgbm90IHJ1biB0aGlzIGJsb2NrLjBOb3RTY2hlZHVsZWQABQTYTm8gdmFsaWRhdGlvbiBmdW5jdGlvbiB1cGdyYWRlIGlzIGN1cnJlbnRseSBzY2hlZHVsZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LjkIDExib3VuZGVkX2NvbGxlY3Rpb25zQHdlYWtfYm91bmRlZF92ZWM4V2Vha0JvdW5kZWRWZWMIBFQBPQgEUwAABABFCAEYVmVjPFQ+AAA9CAw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzLEJhbGFuY2VMb2NrBBxCYWxhbmNlAcQADAEIaWS9AQE4TG9ja0lkZW50aWZpZXIAARhhbW91bnTEARxCYWxhbmNlAAEccmVhc29uc0EIARxSZWFzb25zAABBCAw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzHFJlYXNvbnMAAQwMRmVlAAAAEE1pc2MAAQAMQWxsAAIAAEUIAAACPQgASQgMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFNCARTAAAEAFEIARhWZWM8VD4AAE0IDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMsUmVzZXJ2ZURhdGEIRFJlc2VydmVJZGVudGlmaWVyAb0BHEJhbGFuY2UBxAAIAQhpZL0BAURSZXNlcnZlSWRlbnRpZmllcgABGGFtb3VudMQBHEJhbGFuY2UAAFEIAAACTQgAVQgMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFZCARTAAAEAF0IARhWZWM8VD4AAFkIFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMQbWlzYyBJZEFtb3VudAgISWQBgQYcQmFsYW5jZQHEAAgBCGlkgQYBCElkAAEYYW1vdW50xAEcQmFsYW5jZQAAXQgAAAJZCABhCAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAWUIBFMAAAQAaQgBGFZlYzxUPgAAZQgUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucxBtaXNjIElkQW1vdW50CAhJZAEQHEJhbGFuY2UBxAAIAQhpZBABCElkAAEYYW1vdW50xAEcQmFsYW5jZQAAaQgAAAJlCABtCAw8cGFsbGV0X2JhbGFuY2VzGHBhbGxldBRFcnJvcggEVAAESQABMDhWZXN0aW5nQmFsYW5jZQAABJxWZXN0aW5nIGJhbGFuY2UgdG9vIGhpZ2ggdG8gc2VuZCB2YWx1ZS5UTGlxdWlkaXR5UmVzdHJpY3Rpb25zAAEEyEFjY291bnQgbGlxdWlkaXR5IHJlc3RyaWN0aW9ucyBwcmV2ZW50IHdpdGhkcmF3YWwuTEluc3VmZmljaWVudEJhbGFuY2UAAgR4QmFsYW5jZSB0b28gbG93IHRvIHNlbmQgdmFsdWUuSEV4aXN0ZW50aWFsRGVwb3NpdAADBOxWYWx1ZSB0b28gbG93IHRvIGNyZWF0ZSBhY2NvdW50IGR1ZSB0byBleGlzdGVudGlhbCBkZXBvc2l0LjRFeHBlbmRhYmlsaXR5AAQEkFRyYW5zZmVyL3BheW1lbnQgd291bGQga2lsbCBhY2NvdW50LlxFeGlzdGluZ1Zlc3RpbmdTY2hlZHVsZQAFBMxBIHZlc3Rpbmcgc2NoZWR1bGUgYWxyZWFkeSBleGlzdHMgZm9yIHRoaXMgYWNjb3VudC4sRGVhZEFjY291bnQABgSMQmVuZWZpY2lhcnkgYWNjb3VudCBtdXN0IHByZS1leGlzdC48VG9vTWFueVJlc2VydmVzAAcEuE51bWJlciBvZiBuYW1lZCByZXNlcnZlcyBleGNlZWQgYE1heFJlc2VydmVzYC4wVG9vTWFueUhvbGRzAAgE+E51bWJlciBvZiBob2xkcyBleGNlZWQgYFZhcmlhbnRDb3VudE9mPFQ6OlJ1bnRpbWVIb2xkUmVhc29uPmAuOFRvb01hbnlGcmVlemVzAAkEmE51bWJlciBvZiBmcmVlemVzIGV4Y2VlZCBgTWF4RnJlZXplc2AuTElzc3VhbmNlRGVhY3RpdmF0ZWQACgQBAVRoZSBpc3N1YW5jZSBjYW5ub3QgYmUgbW9kaWZpZWQgc2luY2UgaXQgaXMgYWxyZWFkeSBkZWFjdGl2YXRlZC4kRGVsdGFaZXJvAAsEZFRoZSBkZWx0YSBjYW5ub3QgYmUgemVyby4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQucQgIaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50IFJlbGVhc2VzAAEIJFYxQW5jaWVudAAAAAhWMgABAAB1CBA0ZnJhbWVfc3VwcG9ydBh0cmFpdHMcc3RvcmFnZRhOb0Ryb3AEBFQBeQgABAB5CAEEVAAAeQgYNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZSRpbWJhbGFuY2UkSW1iYWxhbmNlDARCAcQYT25Ecm9wADhPcHBvc2l0ZU9uRHJvcAAABAEYYW1vdW50xAEEQgAAfQgMfGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb24YcGFsbGV0FFVzYWdlCBxCYWxhbmNlAcQsQmxvY2tOdW1iZXIBOAAIARB1c2VkxAEcQmFsYW5jZQABIGF0X2Jsb2NrOAEsQmxvY2tOdW1iZXIAAIEIDHxpbmRpdl9wYWxsZXRfb3JpZ2luX3Jlc3RyaWN0aW9uGHBhbGxldBRFcnJvcgQEVAABCBxOb1VzYWdlAAAEgFRoZSBvcmlnaW4gaGFzIG5vIHVzYWdlIHRyYWNrZWQuHE5vdFplcm8AAQRYVGhlIHVzYWdlIGlzIG5vdCB6ZXJvLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6FCAw0cGFsbGV0X2Fzc2V0cxR0eXBlczBBc3NldERldGFpbHMMHEJhbGFuY2UBxCRBY2NvdW50SWQBBDhEZXBvc2l0QmFsYW5jZQHEADABFG93bmVyBAEkQWNjb3VudElkAAEYaXNzdWVyBAEkQWNjb3VudElkAAEUYWRtaW4EASRBY2NvdW50SWQAARxmcmVlemVyBAEkQWNjb3VudElkAAEYc3VwcGx5xAEcQmFsYW5jZQABHGRlcG9zaXTEAThEZXBvc2l0QmFsYW5jZQABLG1pbl9iYWxhbmNlxAEcQmFsYW5jZQABNGlzX3N1ZmZpY2llbnTIARBib29sAAEgYWNjb3VudHM4AQx1MzIAASxzdWZmaWNpZW50czgBDHUzMgABJGFwcHJvdmFsczgBDHUzMgABGHN0YXR1c4kIASxBc3NldFN0YXR1cwAAiQgMNHBhbGxldF9hc3NldHMUdHlwZXMsQXNzZXRTdGF0dXMAAQwQTGl2ZQAAABhGcm96ZW4AAQAoRGVzdHJveWluZwACAACNCAAABAjgBACRCAw0cGFsbGV0X2Fzc2V0cxR0eXBlczBBc3NldEFjY291bnQQHEJhbGFuY2UBxDhEZXBvc2l0QmFsYW5jZQHEFEV4dHJhARAkQWNjb3VudElkAQQAEAEcYmFsYW5jZcQBHEJhbGFuY2UAARhzdGF0dXOVCAE0QWNjb3VudFN0YXR1cwABGHJlYXNvbpkIAahFeGlzdGVuY2VSZWFzb248RGVwb3NpdEJhbGFuY2UsIEFjY291bnRJZD4AARRleHRyYRABFEV4dHJhAACVCAw0cGFsbGV0X2Fzc2V0cxR0eXBlczRBY2NvdW50U3RhdHVzAAEMGExpcXVpZAAAABhGcm96ZW4AAQAcQmxvY2tlZAACAACZCAw0cGFsbGV0X2Fzc2V0cxR0eXBlczxFeGlzdGVuY2VSZWFzb24IHEJhbGFuY2UBxCRBY2NvdW50SWQBBAEUIENvbnN1bWVyAAAAKFN1ZmZpY2llbnQAAQAsRGVwb3NpdEhlbGQEAMQBHEJhbGFuY2UAAgA8RGVwb3NpdFJlZnVuZGVkAAMALERlcG9zaXRGcm9tCAAEASRBY2NvdW50SWQAAMQBHEJhbGFuY2UABAAAnQgAAAQM4AQEAKEIDDRwYWxsZXRfYXNzZXRzFHR5cGVzIEFwcHJvdmFsCBxCYWxhbmNlAcQ4RGVwb3NpdEJhbGFuY2UBxAAIARhhbW91bnTEARxCYWxhbmNlAAEcZGVwb3NpdMQBOERlcG9zaXRCYWxhbmNlAAClCAw0cGFsbGV0X2Fzc2V0cxR0eXBlczRBc3NldE1ldGFkYXRhCDhEZXBvc2l0QmFsYW5jZQHENEJvdW5kZWRTdHJpbmcBqQgAFAEcZGVwb3NpdMQBOERlcG9zaXRCYWxhbmNlAAEQbmFtZakIATRCb3VuZGVkU3RyaW5nAAEYc3ltYm9sqQgBNEJvdW5kZWRTdHJpbmcAASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVuyAEQYm9vbAAAqQgMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AACtCAw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXJyb3IIBFQABEkAAWAoQmFsYW5jZUxvdwAABBUBQWNjb3VudCBiYWxhbmNlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB0cmFuc2ZlciBhbW91bnQuJE5vQWNjb3VudAABBJBUaGUgYWNjb3VudCB0byBhbHRlciBkb2VzIG5vdCBleGlzdC4wTm9QZXJtaXNzaW9uAAIE6FRoZSBzaWduaW5nIGFjY291bnQgaGFzIG5vIHBlcm1pc3Npb24gdG8gZG8gdGhlIG9wZXJhdGlvbi4cVW5rbm93bgADBHhUaGUgZ2l2ZW4gYXNzZXQgSUQgaXMgdW5rbm93bi4YRnJvemVuAAQEdFRoZSBvcmlnaW4gYWNjb3VudCBpcyBmcm96ZW4uFEluVXNlAAUEeFRoZSBhc3NldCBJRCBpcyBhbHJlYWR5IHRha2VuLihCYWRXaXRuZXNzAAYEbEludmFsaWQgd2l0bmVzcyBkYXRhIGdpdmVuLjhNaW5CYWxhbmNlWmVybwAHBIxNaW5pbXVtIGJhbGFuY2Ugc2hvdWxkIGJlIG5vbi16ZXJvLkxVbmF2YWlsYWJsZUNvbnN1bWVyAAgMWQFVbmFibGUgdG8gaW5jcmVtZW50IHRoZSBjb25zdW1lciByZWZlcmVuY2UgY291bnRlcnMgb24gdGhlIGFjY291bnQuIEVpdGhlciBubyBwcm92aWRlck0BcmVmZXJlbmNlIGV4aXN0cyB0byBhbGxvdyBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgYSBub24tc2VsZi1zdWZmaWNpZW50IGFzc2V0LCBvciBvbmXwZmV3ZXIgdGhlbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29uc3VtZXJzIGhhcyBiZWVuIHJlYWNoZWQuLEJhZE1ldGFkYXRhAAkEXEludmFsaWQgbWV0YWRhdGEgZ2l2ZW4uKFVuYXBwcm92ZWQACgTETm8gYXBwcm92YWwgZXhpc3RzIHRoYXQgd291bGQgYWxsb3cgdGhlIHRyYW5zZmVyLiBXb3VsZERpZQALBDUBVGhlIHNvdXJjZSBhY2NvdW50IHdvdWxkIG5vdCBzdXJ2aXZlIHRoZSB0cmFuc2ZlciBhbmQgaXQgbmVlZHMgdG8gc3RheSBhbGl2ZS40QWxyZWFkeUV4aXN0cwAMBIRUaGUgYXNzZXQtYWNjb3VudCBhbHJlYWR5IGV4aXN0cy4kTm9EZXBvc2l0AA0E1FRoZSBhc3NldC1hY2NvdW50IGRvZXNuJ3QgaGF2ZSBhbiBhc3NvY2lhdGVkIGRlcG9zaXQuJFdvdWxkQnVybgAOBMRUaGUgb3BlcmF0aW9uIHdvdWxkIHJlc3VsdCBpbiBmdW5kcyBiZWluZyBidXJuZWQuJExpdmVBc3NldAAPCFkBVGhlIGFzc2V0IGlzIGEgbGl2ZSBhc3NldCBhbmQgaXMgYWN0aXZlbHkgYmVpbmcgdXNlZC4gVXN1YWxseSBlbWl0IGZvciBvcGVyYXRpb25zIHN1Y2gdAWFzIGBzdGFydF9kZXN0cm95YCB3aGljaCByZXF1aXJlIHRoZSBhc3NldCB0byBiZSBpbiBhIGRlc3Ryb3lpbmcgc3RhdGUuMEFzc2V0Tm90TGl2ZQAQBMhUaGUgYXNzZXQgaXMgbm90IGxpdmUsIGFuZCBsaWtlbHkgYmVpbmcgZGVzdHJveWVkLjxJbmNvcnJlY3RTdGF0dXMAEQSwVGhlIGFzc2V0IHN0YXR1cyBpcyBub3QgdGhlIGV4cGVjdGVkIHN0YXR1cy4kTm90RnJvemVuABIE2FRoZSBhc3NldCBzaG91bGQgYmUgZnJvemVuIGJlZm9yZSB0aGUgZ2l2ZW4gb3BlcmF0aW9uLjhDYWxsYmFja0ZhaWxlZAATBIRDYWxsYmFjayBhY3Rpb24gcmVzdWx0ZWQgaW4gZXJyb3IoQmFkQXNzZXRJZAAUBMhUaGUgYXNzZXQgSUQgbXVzdCBiZSBlcXVhbCB0byB0aGUgW2BOZXh0QXNzZXRJZGBdLjxDb250YWluc0ZyZWV6ZXMAFQRNAVRoZSBhc3NldCBjYW5ub3QgYmUgZGVzdHJveWVkIGJlY2F1c2Ugc29tZSBhY2NvdW50cyBmb3IgdGhpcyBhc3NldCBjb250YWluIGZyZWV6ZXMuNENvbnRhaW5zSG9sZHMAFgRFAVRoZSBhc3NldCBjYW5ub3QgYmUgZGVzdHJveWVkIGJlY2F1c2Ugc29tZSBhY2NvdW50cyBmb3IgdGhpcyBhc3NldCBjb250YWluIGhvbGRzLjxUb29NYW55UmVzZXJ2ZXMAFwSAVHJpZWQgc2V0dGluZyB0b28gbWFueSByZXNlcnZlcy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQusQgEGE9wdGlvbgQEVAGFCAEIEE5vbmUAAAAQU29tZQQAhQgAAAEAALUIBBhPcHRpb24EBFQBxAEIEE5vbmUAAAAQU29tZQQAxAAAAQAAuQgEGE9wdGlvbgQEVAGlCAEIEE5vbmUAAAAQU29tZQQApQgAAAEAAL0IDFBwYWxsZXRfYXNzZXRzX2hvbGRlchhwYWxsZXQURXJyb3IIBFQABEkAAQQwVG9vTWFueUhvbGRzAAAEMQFOdW1iZXIgb2YgaG9sZHMgb24gYW4gYWNjb3VudCB3b3VsZCBleGNlZWQgdGhlIGNvdW50IG9mIGBSdW50aW1lSG9sZFJlYXNvbmAuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LsEIDERwYWxsZXRfYXNzZXRfcmF0ZRhwYWxsZXQURXJyb3IEBFQAAQxAVW5rbm93bkFzc2V0S2luZAAABHhUaGUgZ2l2ZW4gYXNzZXQgSUQgaXMgdW5rbm93bi40QWxyZWFkeUV4aXN0cwABBFEBVGhlIGdpdmVuIGFzc2V0IElEIGFscmVhZHkgaGFzIGFuIGFzc2lnbmVkIGNvbnZlcnNpb24gcmF0ZSBhbmQgY2Fubm90IGJlIHJlLWNyZWF0ZWQuIE92ZXJmbG93AAIEzE92ZXJmbG93IG9jdXJyZWQgd2hlbiBjYWxjdWxhdGluZyB0aGUgaW52ZXJzZSByYXRlLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7FCAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABADMARhWZWM8VD4AAMkIDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBzQgEUwAABADRCAEYVmVjPFQ+AADNCAxkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbhhwYWxsZXQ0Q2FuZGlkYXRlSW5mbwgkQWNjb3VudElkAQQcQmFsYW5jZQHEAAgBDHdobwQBJEFjY291bnRJZAABHGRlcG9zaXTEARxCYWxhbmNlAADRCAAAAs0IANUICDRmcmFtZV9zdXBwb3J0IFBhbGxldElkAAAEAL0BARxbdTg7IDhdAADZCAxkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbhhwYWxsZXQURXJyb3IEBFQAAUREVG9vTWFueUNhbmRpZGF0ZXMAAASMVGhlIHBhbGxldCBoYXMgdG9vIG1hbnkgY2FuZGlkYXRlcy5cVG9vRmV3RWxpZ2libGVDb2xsYXRvcnMAAQSsTGVhdmluZyB3b3VsZCByZXN1bHQgaW4gdG9vIGZldyBjYW5kaWRhdGVzLkBBbHJlYWR5Q2FuZGlkYXRlAAIEfEFjY291bnQgaXMgYWxyZWFkeSBhIGNhbmRpZGF0ZS4wTm90Q2FuZGlkYXRlAAMEbEFjY291bnQgaXMgbm90IGEgY2FuZGlkYXRlLlBUb29NYW55SW52dWxuZXJhYmxlcwAEBIRUaGVyZSBhcmUgdG9vIG1hbnkgSW52dWxuZXJhYmxlcy5MQWxyZWFkeUludnVsbmVyYWJsZQAFBIxBY2NvdW50IGlzIGFscmVhZHkgYW4gSW52dWxuZXJhYmxlLjxOb3RJbnZ1bG5lcmFibGUABgR8QWNjb3VudCBpcyBub3QgYW4gSW52dWxuZXJhYmxlLlxOb0Fzc29jaWF0ZWRWYWxpZGF0b3JJZAAHBJxBY2NvdW50IGhhcyBubyBhc3NvY2lhdGVkIHZhbGlkYXRvciBJRC5YVmFsaWRhdG9yTm90UmVnaXN0ZXJlZAAIBIxWYWxpZGF0b3IgSUQgaXMgbm90IHlldCByZWdpc3RlcmVkLmxJbnNlcnRUb0NhbmRpZGF0ZUxpc3RGYWlsZWQACQScQ291bGQgbm90IGluc2VydCBpbiB0aGUgY2FuZGlkYXRlIGxpc3QudFJlbW92ZUZyb21DYW5kaWRhdGVMaXN0RmFpbGVkAAoEpENvdWxkIG5vdCByZW1vdmUgZnJvbSB0aGUgY2FuZGlkYXRlIGxpc3QuNERlcG9zaXRUb29Mb3cACwT0TmV3IGRlcG9zaXQgYW1vdW50IHdvdWxkIGJlIGJlbG93IHRoZSBtaW5pbXVtIGNhbmRpZGFjeSBib25kLmRVcGRhdGVDYW5kaWRhdGVMaXN0RmFpbGVkAAwEkENvdWxkIG5vdCB1cGRhdGUgdGhlIGNhbmRpZGF0ZSBsaXN0LkBJbnN1ZmZpY2llbnRCb25kAA0EKQFEZXBvc2l0IGFtb3VudCBpcyB0b28gbG93IHRvIHRha2UgdGhlIHRhcmdldCdzIHNsb3QgaW4gdGhlIGNhbmRpZGF0ZSBsaXN0LlBUYXJnZXRJc05vdENhbmRpZGF0ZQAOBC0BVGhlIHRhcmdldCBhY2NvdW50IHRvIGJlIHJlcGxhY2VkIGluIHRoZSBjYW5kaWRhdGUgbGlzdCBpcyBub3QgYSBjYW5kaWRhdGUuQElkZW50aWNhbERlcG9zaXQADwQNAVRoZSB1cGRhdGVkIGRlcG9zaXQgYW1vdW50IGlzIGVxdWFsIHRvIHRoZSBhbW91bnQgYWxyZWFkeSByZXNlcnZlZC5ASW52YWxpZFVucmVzZXJ2ZQAQBD0BQ2Fubm90IGxvd2VyIGNhbmRpZGFjeSBib25kIHdoaWxlIG9jY3VweWluZyBhIGZ1dHVyZSBjb2xsYXRvciBzbG90IGluIHRoZSBsaXN0LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7dCAAAAuEIAOEIAAAECAQ5AQDlCAAAAukIAOkIAAAECDjtCADtCAwoc3Bfc3Rha2luZxxvZmZlbmNlPE9mZmVuY2VTZXZlcml0eQAABADxCAEcUGVyYmlsbAAA8QgMNHNwX2FyaXRobWV0aWMocGVyX3RoaW5ncxxQZXJiaWxsAAAEADgBDHUzMgAA9QgAAAQI+QgYAPkIDBxzcF9jb3JlGGNyeXB0byRLZXlUeXBlSWQAAAQAcAEcW3U4OyA0XQAA/QgMOHBhbGxldF9zZXNzaW9uGHBhbGxldBRFcnJvcgQEVAABFDBJbnZhbGlkUHJvb2YAAARgSW52YWxpZCBvd25lcnNoaXAgcHJvb2YuXE5vQXNzb2NpYXRlZFZhbGlkYXRvcklkAAEEnE5vIGFzc29jaWF0ZWQgdmFsaWRhdG9yIElEIGZvciBhY2NvdW50LjREdXBsaWNhdGVkS2V5AAIEZFJlZ2lzdGVyZWQgZHVwbGljYXRlIGtleS4YTm9LZXlzAAMEpE5vIGtleXMgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGFjY291bnQuJE5vQWNjb3VudAAEBBkBS2V5IHNldHRpbmcgYWNjb3VudCBpcyBub3QgbGl2ZSwgc28gaXQncyBpbXBvc3NpYmxlIHRvIGFzc29jaWF0ZSBrZXlzLgR0RXJyb3IgZm9yIHRoZSBzZXNzaW9uIHBhbGxldC4BCQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAT0BBFMAAAQABQkBGFZlYzxUPgAABQkAAAI9AQAJCQhIc3BfY29uc2Vuc3VzX3Nsb3RzEFNsb3QAAAQAKAEMdTY0AAANCQAABAgJCTgAEQkMTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9zZXQ8Qm91bmRlZEJUcmVlU2V0CARUAZwEUwAABAAVCQEsQlRyZWVTZXQ8VD4AABUJBCBCVHJlZVNldAQEVAGcAAQAMQgAAAAZCQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAR0JBFMAAAQAKQkBGFZlYzxUPgAAHQkIZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWVYT3V0Ym91bmRDaGFubmVsRGV0YWlscwAAGAEkcmVjaXBpZW50nAEYUGFyYUlkAAEUc3RhdGUhCQE0T3V0Ym91bmRTdGF0ZQABNHNpZ25hbHNfZXhpc3TIARBib29sAAEsZmlyc3RfaW5kZXgtAwEMdTE2AAEobGFzdF9pbmRleC0DAQx1MTYAARRmbGFncyUJAVBPdXRib3VuZENoYW5uZWxGbGFncwAAIQkIZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU0T3V0Ym91bmRTdGF0ZQABCAhPawAAACRTdXNwZW5kZWQAAQAAJQkIZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWVQT3V0Ym91bmRDaGFubmVsRmxhZ3MAAAQBEGJpdHM4AQx1MzIAACkJAAACHQkALQkAAAQInC0DADEJDExib3VuZGVkX2NvbGxlY3Rpb25zQHdlYWtfYm91bmRlZF92ZWM4V2Vha0JvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAANQkIZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU8UXVldWVDb25maWdEYXRhAAAMAURzdXNwZW5kX3RocmVzaG9sZDgBDHUzMgABOGRyb3BfdGhyZXNob2xkOAEMdTMyAAFAcmVzdW1lX3RocmVzaG9sZDgBDHUzMgAAOQkMZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0FEVycm9yBARUAAEUOEJhZFF1ZXVlQ29uZmlnAAAEEQFTZXR0aW5nIHRoZSBxdWV1ZSBjb25maWcgZmFpbGVkIHNpbmNlIG9uZSBvZiBpdHMgdmFsdWVzIHdhcyBpbnZhbGlkLkBBbHJlYWR5U3VzcGVuZGVkAAEEjFRoZSBleGVjdXRpb24gaXMgYWxyZWFkeSBzdXNwZW5kZWQuOEFscmVhZHlSZXN1bWVkAAIEhFRoZSBleGVjdXRpb24gaXMgYWxyZWFkeSByZXN1bWVkLnRUb29NYW55QWN0aXZlT3V0Ym91bmRDaGFubmVscwADBLBUaGVyZSBhcmUgdG9vIG1hbnkgYWN0aXZlIG91dGJvdW5kIGNoYW5uZWxzLhhUb29CaWcABARcVGhlIG1lc3NhZ2UgaXMgdG9vIGJpZy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuPQkMKHBhbGxldF94Y20YcGFsbGV0LFF1ZXJ5U3RhdHVzBCxCbG9ja051bWJlcgE4AQwcUGVuZGluZxABJHJlc3BvbmRlckkBAURWZXJzaW9uZWRMb2NhdGlvbgABTG1heWJlX21hdGNoX3F1ZXJpZXJBCQFkT3B0aW9uPFZlcnNpb25lZExvY2F0aW9uPgABMG1heWJlX25vdGlmeUUJAUBPcHRpb248KHU4LCB1OCk+AAEcdGltZW91dDgBLEJsb2NrTnVtYmVyAAAAPFZlcnNpb25Ob3RpZmllcggBGG9yaWdpbkkBAURWZXJzaW9uZWRMb2NhdGlvbgABJGlzX2FjdGl2ZcgBEGJvb2wAAQAUUmVhZHkIASByZXNwb25zZU0JAURWZXJzaW9uZWRSZXNwb25zZQABCGF0OAEsQmxvY2tOdW1iZXIAAgAAQQkEGE9wdGlvbgQEVAFJAQEIEE5vbmUAAAAQU29tZQQASQEAAAEAAEUJBBhPcHRpb24EBFQBSQkBCBBOb25lAAAAEFNvbWUEAEkJAAABAABJCQAABAgMDABNCQgMeGNtRFZlcnNpb25lZFJlc3BvbnNlAAEMCFYzBADFAQEwdjM6OlJlc3BvbnNlAAMACFY0BAA1AgEwdjQ6OlJlc3BvbnNlAAQACFY1BACBAgEwdjU6OlJlc3BvbnNlAAUAAFEJAAAECDhJAQBVCQAABAwo1QE4AFkJDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBXQkEUwAABABhCQEYVmVjPFQ+AABdCQAABAhJATgAYQkAAAJdCQBlCQwocGFsbGV0X3hjbRhwYWxsZXRUVmVyc2lvbk1pZ3JhdGlvblN0YWdlAAEQXE1pZ3JhdGVTdXBwb3J0ZWRWZXJzaW9uAAAAXE1pZ3JhdGVWZXJzaW9uTm90aWZpZXJzAAEAUE5vdGlmeUN1cnJlbnRUYXJnZXRzBACRBQE8T3B0aW9uPFZlYzx1OD4+AAIAaE1pZ3JhdGVBbmROb3RpZnlPbGRUYXJnZXRzAAMAAGkJAAAEDDgEEQMAbQkMKHBhbGxldF94Y20YcGFsbGV0aFJlbW90ZUxvY2tlZEZ1bmdpYmxlUmVjb3JkCEhDb25zdW1lcklkZW50aWZpZXIBEDBNYXhDb25zdW1lcnMAABABGGFtb3VudMQBEHUxMjgAARRvd25lckkBAURWZXJzaW9uZWRMb2NhdGlvbgABGGxvY2tlckkBAURWZXJzaW9uZWRMb2NhdGlvbgABJGNvbnN1bWVyc3EJAdBCb3VuZGVkVmVjPChDb25zdW1lcklkZW50aWZpZXIsIHUxMjgpLCBNYXhDb25zdW1lcnM+AABxCQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAXUJBFMAAAQAeQkBGFZlYzxUPgAAdQkAAAQIEMQAeQkAAAJ1CQB9CQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAYEJBFMAAAQAhQkBGFZlYzxUPgAAgQkAAAQIxEkBAIUJAAACgQkAiQkIKHBhbGxldF94Y21YQXV0aG9yaXplZEFsaWFzZXNFbnRyeQgYVGlja2V0AY0JDE1BWAGRCQAIASBhbGlhc2Vyc5UJAXhCb3VuZGVkVmVjPE9yaWdpbkFsaWFzZXIsIE1BWD4AARh0aWNrZXSNCQEYVGlja2V0AACNCRA0ZnJhbWVfc3VwcG9ydBh0cmFpdHMcc3RvcmFnZSBEaXNhYmxlZAAAAACRCQwocGFsbGV0X3hjbRhwYWxsZXRQTWF4QXV0aG9yaXplZEFsaWFzZXMAAAAAlQkMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGZCQRTAAAEAJ0JARhWZWM8VD4AAJkJDEB4Y21fcnVudGltZV9hcGlzSGF1dGhvcml6ZWRfYWxpYXNlczRPcmlnaW5BbGlhc2VyAAAIASBsb2NhdGlvbkkBAURWZXJzaW9uZWRMb2NhdGlvbgABGGV4cGlyeRUDASxPcHRpb248dTY0PgAAnQkAAAKZCQChCQwocGFsbGV0X3hjbRhwYWxsZXQURXJyb3IEBFQAAXAsVW5yZWFjaGFibGUAAAhdAVRoZSBkZXNpcmVkIGRlc3RpbmF0aW9uIHdhcyB1bnJlYWNoYWJsZSwgZ2VuZXJhbGx5IGJlY2F1c2UgdGhlcmUgaXMgYSBubyB3YXkgb2Ygcm91dGluZxh0byBpdC4sU2VuZEZhaWx1cmUAAQhBAVRoZXJlIHdhcyBzb21lIG90aGVyIGlzc3VlIChpLmUuIG5vdCB0byBkbyB3aXRoIHJvdXRpbmcpIGluIHNlbmRpbmcgdGhlIG1lc3NhZ2UuyFBlcmhhcHMgYSBsYWNrIG9mIHNwYWNlIGZvciBidWZmZXJpbmcgdGhlIG1lc3NhZ2UuIEZpbHRlcmVkAAIEnFRoZSBtZXNzYWdlIGV4ZWN1dGlvbiBmYWlscyB0aGUgZmlsdGVyLkhVbndlaWdoYWJsZU1lc3NhZ2UAAwS0VGhlIG1lc3NhZ2UncyB3ZWlnaHQgY291bGQgbm90IGJlIGRldGVybWluZWQuYERlc3RpbmF0aW9uTm90SW52ZXJ0aWJsZQAEBNxUaGUgZGVzdGluYXRpb24gYExvY2F0aW9uYCBwcm92aWRlZCBjYW5ub3QgYmUgaW52ZXJ0ZWQuFEVtcHR5AAUEgFRoZSBhc3NldHMgdG8gYmUgc2VudCBhcmUgZW1wdHkuOENhbm5vdFJlYW5jaG9yAAYENQFDb3VsZCBub3QgcmUtYW5jaG9yIHRoZSBhc3NldHMgdG8gZGVjbGFyZSB0aGUgZmVlcyBmb3IgdGhlIGRlc3RpbmF0aW9uIGNoYWluLjRUb29NYW55QXNzZXRzAAcExFRvbyBtYW55IGFzc2V0cyBoYXZlIGJlZW4gYXR0ZW1wdGVkIGZvciB0cmFuc2Zlci40SW52YWxpZE9yaWdpbgAIBHhPcmlnaW4gaXMgaW52YWxpZCBmb3Igc2VuZGluZy4oQmFkVmVyc2lvbgAJBCEBVGhlIHZlcnNpb24gb2YgdGhlIGBWZXJzaW9uZWRgIHZhbHVlIHVzZWQgaXMgbm90IGFibGUgdG8gYmUgaW50ZXJwcmV0ZWQuLEJhZExvY2F0aW9uAAoIQQFUaGUgZ2l2ZW4gbG9jYXRpb24gY291bGQgbm90IGJlIHVzZWQgKGUuZy4gYmVjYXVzZSBpdCBjYW5ub3QgYmUgZXhwcmVzc2VkIGluIHRoZWBkZXNpcmVkIHZlcnNpb24gb2YgWENNKS44Tm9TdWJzY3JpcHRpb24ACwS8VGhlIHJlZmVyZW5jZWQgc3Vic2NyaXB0aW9uIGNvdWxkIG5vdCBiZSBmb3VuZC5EQWxyZWFkeVN1YnNjcmliZWQADAQRAVRoZSBsb2NhdGlvbiBpcyBpbnZhbGlkIHNpbmNlIGl0IGFscmVhZHkgaGFzIGEgc3Vic2NyaXB0aW9uIGZyb20gdXMuWENhbm5vdENoZWNrT3V0VGVsZXBvcnQADQQpAUNvdWxkIG5vdCBjaGVjay1vdXQgdGhlIGFzc2V0cyBmb3IgdGVsZXBvcnRhdGlvbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4uKExvd0JhbGFuY2UADgRBAVRoZSBvd25lciBkb2VzIG5vdCBvd24gKGFsbCkgb2YgdGhlIGFzc2V0IHRoYXQgdGhleSB3aXNoIHRvIGRvIHRoZSBvcGVyYXRpb24gb24uMFRvb01hbnlMb2NrcwAPBMBUaGUgYXNzZXQgb3duZXIgaGFzIHRvbyBtYW55IGxvY2tzIG9uIHRoZSBhc3NldC5MQWNjb3VudE5vdFNvdmVyZWlnbgAQBDEBVGhlIGdpdmVuIGFjY291bnQgaXMgbm90IGFuIGlkZW50aWZpYWJsZSBzb3ZlcmVpZ24gYWNjb3VudCBmb3IgYW55IGxvY2F0aW9uLihGZWVzTm90TWV0ABEEKQFUaGUgb3BlcmF0aW9uIHJlcXVpcmVkIGZlZXMgdG8gYmUgcGFpZCB3aGljaCB0aGUgaW5pdGlhdG9yIGNvdWxkIG5vdCBtZWV0LjBMb2NrTm90Rm91bmQAEgT0QSByZW1vdGUgbG9jayB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGRhdGEgY291bGQgbm90IGJlIGZvdW5kLhRJblVzZQATBEkBVGhlIHVubG9jayBvcGVyYXRpb24gY2Fubm90IHN1Y2NlZWQgYmVjYXVzZSB0aGVyZSBhcmUgc3RpbGwgY29uc3VtZXJzIG9mIHRoZSBsb2NrLmhJbnZhbGlkQXNzZXRVbmtub3duUmVzZXJ2ZQAVBPBJbnZhbGlkIGFzc2V0LCByZXNlcnZlIGNoYWluIGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkIGZvciBpdC54SW52YWxpZEFzc2V0VW5zdXBwb3J0ZWRSZXNlcnZlABYERQFJbnZhbGlkIGFzc2V0LCBkbyBub3Qgc3VwcG9ydCByZW1vdGUgYXNzZXQgcmVzZXJ2ZXMgd2l0aCBkaWZmZXJlbnQgZmVlcyByZXNlcnZlcy48VG9vTWFueVJlc2VydmVzABcESQFUb28gbWFueSBhc3NldHMgd2l0aCBkaWZmZXJlbnQgcmVzZXJ2ZSBsb2NhdGlvbnMgaGF2ZSBiZWVuIGF0dGVtcHRlZCBmb3IgdHJhbnNmZXIuYExvY2FsRXhlY3V0aW9uSW5jb21wbGV0ZQAYBHxMb2NhbCBYQ00gZXhlY3V0aW9uIGluY29tcGxldGUuYFRvb01hbnlBdXRob3JpemVkQWxpYXNlcwAZBLhUb28gbWFueSBsb2NhdGlvbnMgYXV0aG9yaXplZCB0byBhbGlhcyBvcmlnaW4uNEV4cGlyZXNJblBhc3QAGgSMRXhwaXJ5IGJsb2NrIG51bWJlciBpcyBpbiB0aGUgcGFzdC40QWxpYXNOb3RGb3VuZAAbBNBUaGUgYWxpYXMgdG8gcmVtb3ZlIGF1dGhvcml6YXRpb24gZm9yIHdhcyBub3QgZm91bmQuhExvY2FsRXhlY3V0aW9uSW5jb21wbGV0ZVdpdGhFcnJvcggBFGluZGV4DAFASW5zdHJ1Y3Rpb25JbmRleAABFGVycm9ypQkBOEV4ZWN1dGlvbkVycm9yABwINQFMb2NhbCBYQ00gZXhlY3V0aW9uIGluY29tcGxldGUgd2l0aCB0aGUgYWN0dWFsIFhDTSBlcnJvciBhbmQgdGhlIGluZGV4IG9mIHRoZYhpbnN0cnVjdGlvbiB0aGF0IGNhdXNlZCB0aGUgZXJyb3IuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LqUJDChwYWxsZXRfeGNtGGVycm9yczhFeGVjdXRpb25FcnJvcgABpCBPdmVyZmxvdwAAADRVbmltcGxlbWVudGVkAAEAYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgACAGRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAMAMExvY2F0aW9uRnVsbAAEAFRMb2NhdGlvbk5vdEludmVydGlibGUABQAkQmFkT3JpZ2luAAYAPEludmFsaWRMb2NhdGlvbgAHADRBc3NldE5vdEZvdW5kAAgAVEZhaWxlZFRvVHJhbnNhY3RBc3NldAAJADxOb3RXaXRoZHJhd2FibGUACgBITG9jYXRpb25DYW5ub3RIb2xkAAsAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAMAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAA0AJFRyYW5zcG9ydAAOAChVbnJvdXRhYmxlAA8AMFVua25vd25DbGFpbQAQADhGYWlsZWRUb0RlY29kZQARAEBNYXhXZWlnaHRJbnZhbGlkABIAOE5vdEhvbGRpbmdGZWVzABMAMFRvb0V4cGVuc2l2ZQAUABBUcmFwABUAQEV4cGVjdGF0aW9uRmFsc2UAFgA4UGFsbGV0Tm90Rm91bmQAFwAwTmFtZU1pc21hdGNoABgATFZlcnNpb25JbmNvbXBhdGlibGUAGQBQSG9sZGluZ1dvdWxkT3ZlcmZsb3cAGgAsRXhwb3J0RXJyb3IAGwA4UmVhbmNob3JGYWlsZWQAHAAYTm9EZWFsAB0AKEZlZXNOb3RNZXQAHgAkTG9ja0Vycm9yAB8AME5vUGVybWlzc2lvbgAgAChVbmFuY2hvcmVkACEAOE5vdERlcG9zaXRhYmxlACIANFRvb01hbnlBc3NldHMAIwBMVW5oYW5kbGVkWGNtVmVyc2lvbgAkAEhXZWlnaHRMaW1pdFJlYWNoZWQAJQAcQmFycmllcgAmAExXZWlnaHROb3RDb21wdXRhYmxlACcAREV4Y2VlZHNTdGFja0xpbWl0ACgAAKkJCFBwYWxsZXRfbWVzc2FnZV9xdWV1ZSRCb29rU3RhdGUENE1lc3NhZ2VPcmlnaW4BIQMAGAEUYmVnaW44ASRQYWdlSW5kZXgAAQxlbmQ4ASRQYWdlSW5kZXgAARRjb3VudDgBJFBhZ2VJbmRleAABQHJlYWR5X25laWdoYm91cnOtCQGET3B0aW9uPE5laWdoYm91cnM8TWVzc2FnZU9yaWdpbj4+AAE0bWVzc2FnZV9jb3VudCgBDHU2NAABEHNpemUoAQx1NjQAAK0JBBhPcHRpb24EBFQBsQkBCBBOb25lAAAAEFNvbWUEALEJAAABAACxCQhQcGFsbGV0X21lc3NhZ2VfcXVldWUoTmVpZ2hib3VycwQ0TWVzc2FnZU9yaWdpbgEhAwAIARBwcmV2IQMBNE1lc3NhZ2VPcmlnaW4AARBuZXh0IQMBNE1lc3NhZ2VPcmlnaW4AALUJAAAECCEDOAC5CQhQcGFsbGV0X21lc3NhZ2VfcXVldWUQUGFnZQgQU2l6ZQE4IEhlYXBTaXplAAAYASRyZW1haW5pbmc4ARBTaXplAAE4cmVtYWluaW5nX3NpemU4ARBTaXplAAEsZmlyc3RfaW5kZXg4ARBTaXplAAEUZmlyc3Q4ARBTaXplAAEQbGFzdDgBEFNpemUAARBoZWFwvQkBnEJvdW5kZWRWZWM8dTgsIEludG9VMzI8SGVhcFNpemUsIFNpemU+PgAAvQkMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AADBCQxQcGFsbGV0X21lc3NhZ2VfcXVldWUYcGFsbGV0FEVycm9yBARUAAEkLE5vdFJlYXBhYmxlAAAISQFQYWdlIGlzIG5vdCByZWFwYWJsZSBiZWNhdXNlIGl0IGhhcyBpdGVtcyByZW1haW5pbmcgdG8gYmUgcHJvY2Vzc2VkIGFuZCBpcyBub3Qgb2xkHGVub3VnaC4YTm9QYWdlAAEEhFBhZ2UgdG8gYmUgcmVhcGVkIGRvZXMgbm90IGV4aXN0LiROb01lc3NhZ2UAAgSoVGhlIHJlZmVyZW5jZWQgbWVzc2FnZSBjb3VsZCBub3QgYmUgZm91bmQuQEFscmVhZHlQcm9jZXNzZWQAAwQBAVRoZSBtZXNzYWdlIHdhcyBhbHJlYWR5IHByb2Nlc3NlZCBhbmQgY2Fubm90IGJlIHByb2Nlc3NlZCBhZ2Fpbi4YUXVldWVkAAQErFRoZSBtZXNzYWdlIGlzIHF1ZXVlZCBmb3IgZnV0dXJlIGV4ZWN1dGlvbi5ISW5zdWZmaWNpZW50V2VpZ2h0AAUEGQFUaGVyZSBpcyB0ZW1wb3JhcmlseSBub3QgZW5vdWdoIHdlaWdodCB0byBjb250aW51ZSBzZXJ2aWNpbmcgbWVzc2FnZXMuYFRlbXBvcmFyaWx5VW5wcm9jZXNzYWJsZQAGEKhUaGlzIG1lc3NhZ2UgaXMgdGVtcG9yYXJpbHkgdW5wcm9jZXNzYWJsZS4AWQFTdWNoIGVycm9ycyBhcmUgZXhwZWN0ZWQsIGJ1dCBub3QgZ3VhcmFudGVlZCwgdG8gcmVzb2x2ZSB0aGVtc2VsdmVzIGV2ZW50dWFsbHkgdGhyb3VnaCRyZXRyeWluZy4sUXVldWVQYXVzZWQABwzsVGhlIHF1ZXVlIGlzIHBhdXNlZCBhbmQgbm8gbWVzc2FnZSBjYW4gYmUgZXhlY3V0ZWQgZnJvbSBpdC4AHQFUaGlzIGNhbiBjaGFuZ2UgYXQgYW55IHRpbWUgYW5kIG1heSByZXNvbHZlIGluIHRoZSBmdXR1cmUgYnkgcmUtdHJ5aW5nLkxSZWN1cnNpdmVEaXNhbGxvd2VkAAgEMQFBbm90aGVyIGNhbGwgaXMgaW4gcHJvZ3Jlc3MgYW5kIG5lZWRzIHRvIGZpbmlzaCBiZWZvcmUgdGhpcyBjYWxsIGNhbiBoYXBwZW4uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LsUJDDhwYWxsZXRfdXRpbGl0eRhwYWxsZXQURXJyb3IEBFQAAQQwVG9vTWFueUNhbGxzAAAEXFRvbyBtYW55IGNhbGxzIGJhdGNoZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LskJAAAECAQIAM0JCDxwYWxsZXRfbXVsdGlzaWcgTXVsdGlzaWcQLEJsb2NrTnVtYmVyATgcQmFsYW5jZQHEJEFjY291bnRJZAEEME1heEFwcHJvdmFscwAAEAEQd2hlbpEDAVhUaW1lcG9pbnQ8QmxvY2tOdW1iZXI+AAEcZGVwb3NpdMQBHEJhbGFuY2UAASRkZXBvc2l0b3IEASRBY2NvdW50SWQAASRhcHByb3ZhbHPRCQGMQm91bmRlZFZlYzxBY2NvdW50SWQsIE1heEFwcHJvdmFscz4AANEJDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBBARTAAAEAMwBGFZlYzxUPgAA1QkMPHBhbGxldF9tdWx0aXNpZxhwYWxsZXQURXJyb3IEBFQAAThATWluaW11bVRocmVzaG9sZAAABHxUaHJlc2hvbGQgbXVzdCBiZSAyIG9yIGdyZWF0ZXIuPEFscmVhZHlBcHByb3ZlZAABBKxDYWxsIGlzIGFscmVhZHkgYXBwcm92ZWQgYnkgdGhpcyBzaWduYXRvcnkuRE5vQXBwcm92YWxzTmVlZGVkAAIEnENhbGwgZG9lc24ndCBuZWVkIGFueSAobW9yZSkgYXBwcm92YWxzLkRUb29GZXdTaWduYXRvcmllcwADBKhUaGVyZSBhcmUgdG9vIGZldyBzaWduYXRvcmllcyBpbiB0aGUgbGlzdC5IVG9vTWFueVNpZ25hdG9yaWVzAAQErFRoZXJlIGFyZSB0b28gbWFueSBzaWduYXRvcmllcyBpbiB0aGUgbGlzdC5UU2lnbmF0b3JpZXNPdXRPZk9yZGVyAAUEDQFUaGUgc2lnbmF0b3JpZXMgd2VyZSBwcm92aWRlZCBvdXQgb2Ygb3JkZXI7IHRoZXkgc2hvdWxkIGJlIG9yZGVyZWQuTFNlbmRlckluU2lnbmF0b3JpZXMABgQNAVRoZSBzZW5kZXIgd2FzIGNvbnRhaW5lZCBpbiB0aGUgb3RoZXIgc2lnbmF0b3JpZXM7IGl0IHNob3VsZG4ndCBiZS4gTm90Rm91bmQABwSgTXVsdGlzaWcgb3BlcmF0aW9uIG5vdCBmb3VuZCBpbiBzdG9yYWdlLiBOb3RPd25lcgAICFEBT25seSB0aGUgYWNjb3VudCB0aGF0IG9yaWdpbmFsbHkgY3JlYXRlZCB0aGUgbXVsdGlzaWcgaXMgYWJsZSB0byBjYW5jZWwgaXQgb3IgdXBkYXRlNGl0cyBkZXBvc2l0cy4sTm9UaW1lcG9pbnQACQQdAU5vIHRpbWVwb2ludCB3YXMgZ2l2ZW4sIHlldCB0aGUgbXVsdGlzaWcgb3BlcmF0aW9uIGlzIGFscmVhZHkgdW5kZXJ3YXkuOFdyb25nVGltZXBvaW50AAoELQFBIGRpZmZlcmVudCB0aW1lcG9pbnQgd2FzIGdpdmVuIHRvIHRoZSBtdWx0aXNpZyBvcGVyYXRpb24gdGhhdCBpcyB1bmRlcndheS5MVW5leHBlY3RlZFRpbWVwb2ludAALBPRBIHRpbWVwb2ludCB3YXMgZ2l2ZW4sIHlldCBubyBtdWx0aXNpZyBvcGVyYXRpb24gaXMgdW5kZXJ3YXkuPE1heFdlaWdodFRvb0xvdwAMBNBUaGUgbWF4aW11bSB3ZWlnaHQgaW5mb3JtYXRpb24gcHJvdmlkZWQgd2FzIHRvbyBsb3cuNEFscmVhZHlTdG9yZWQADQSgVGhlIGRhdGEgdG8gYmUgc3RvcmVkIGlzIGFscmVhZHkgc3RvcmVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7ZCQwscGFsbGV0X3N1ZG8YcGFsbGV0FEVycm9yBARUAAEELFJlcXVpcmVTdWRvAAAEgFNlbmRlciBtdXN0IGJlIHRoZSBTdWRvIGFjY291bnQuBGhFcnJvciBmb3IgdGhlIFN1ZG8gcGFsbGV0Lt0JAAAECOEJxADhCQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAeUJBFMAAAQA6QkBGFZlYzxUPgAA5QkIMHBhbGxldF9wcm94eTxQcm94eURlZmluaXRpb24MJEFjY291bnRJZAEEJFByb3h5VHlwZQGhAyxCbG9ja051bWJlcgE4AAwBIGRlbGVnYXRlBAEkQWNjb3VudElkAAEocHJveHlfdHlwZaEDASRQcm94eVR5cGUAARRkZWxheTgBLEJsb2NrTnVtYmVyAADpCQAAAuUJAO0JAAAECPEJxADxCQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAfUJBFMAAAQA+QkBGFZlYzxUPgAA9QkIMHBhbGxldF9wcm94eTBBbm5vdW5jZW1lbnQMJEFjY291bnRJZAEEEEhhc2gBPCxCbG9ja051bWJlcgE4AAwBEHJlYWwEASRBY2NvdW50SWQAASRjYWxsX2hhc2g8ARBIYXNoAAEYaGVpZ2h0OAEsQmxvY2tOdW1iZXIAAPkJAAAC9QkA/QkMMHBhbGxldF9wcm94eRhwYWxsZXQURXJyb3IEBFQAASAcVG9vTWFueQAABCEBVGhlcmUgYXJlIHRvbyBtYW55IHByb3hpZXMgcmVnaXN0ZXJlZCBvciB0b28gbWFueSBhbm5vdW5jZW1lbnRzIHBlbmRpbmcuIE5vdEZvdW5kAAEEdFByb3h5IHJlZ2lzdHJhdGlvbiBub3QgZm91bmQuIE5vdFByb3h5AAIEzFNlbmRlciBpcyBub3QgYSBwcm94eSBvZiB0aGUgYWNjb3VudCB0byBiZSBwcm94aWVkLixVbnByb3h5YWJsZQADBCEBQSBjYWxsIHdoaWNoIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBwcm94eSB0eXBlJ3MgZmlsdGVyIHdhcyBhdHRlbXB0ZWQuJER1cGxpY2F0ZQAEBGxBY2NvdW50IGlzIGFscmVhZHkgYSBwcm94eS4wTm9QZXJtaXNzaW9uAAUEFQFDYWxsIG1heSBub3QgYmUgbWFkZSBieSBwcm94eSBiZWNhdXNlIGl0IG1heSBlc2NhbGF0ZSBpdHMgcHJpdmlsZWdlcy4sVW5hbm5vdW5jZWQABgTQQW5ub3VuY2VtZW50LCBpZiBtYWRlIGF0IGFsbCwgd2FzIG1hZGUgdG9vIHJlY2VudGx5LixOb1NlbGZQcm94eQAHBGRDYW5ub3QgYWRkIHNlbGYgYXMgcHJveHkuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LgEKDFRpbmRpdl9wYWxsZXRfaWRlbnRpdHkUdHlwZXMwUmVnaXN0cmF0aW9uDBxCYWxhbmNlAcQ0TWF4SnVkZ2VtZW50cwAwSWRlbnRpdHlJbmZvAakDAAwBKGp1ZGdlbWVudHMFCgH8Qm91bmRlZFZlYzwoUmVnaXN0cmFySW5kZXgsIEp1ZGdlbWVudDxCYWxhbmNlPiksIE1heEp1ZGdlbWVudHM+AAEcZGVwb3NpdMQBHEJhbGFuY2UAARBpbmZvqQMBMElkZW50aXR5SW5mbwAABQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEJCgRTAAAEAA0KARhWZWM8VD4AAAkKAAAECDgtBAANCgAAAgkKABEKAAAECMTRCQAVCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUARkKBFMAAAQAIQoBGFZlYzxUPgAAGQoEGE9wdGlvbgQEVAEdCgEIEE5vbmUAAAAQU29tZQQAHQoAAAEAAB0KDFRpbmRpdl9wYWxsZXRfaWRlbnRpdHkUdHlwZXM0UmVnaXN0cmFySW5mbwwcQmFsYW5jZQHEJEFjY291bnRJZAEEHElkRmllbGQBKAAMARxhY2NvdW50BAEkQWNjb3VudElkAAEMZmVlxAEcQmFsYW5jZQABGGZpZWxkcygBHElkRmllbGQAACEKAAACGQoAJQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAApCgxUaW5kaXZfcGFsbGV0X2lkZW50aXR5FHR5cGVzTEF1dGhvcml0eVByb3BlcnRpZXMEHEFjY291bnQBBAAIAShhY2NvdW50X2lkBAEcQWNjb3VudAABKGFsbG9jYXRpb244AShBbGxvY2F0aW9uAAAtCgxUaW5kaXZfcGFsbGV0X2lkZW50aXR5FHR5cGVzTFVzZXJuYW1lSW5mb3JtYXRpb24IHEFjY291bnQBBBxCYWxhbmNlAcQACAEUb3duZXIEARxBY2NvdW50AAEgcHJvdmlkZXIxCgFEUHJvdmlkZXI8QmFsYW5jZT4AADEKDFRpbmRpdl9wYWxsZXRfaWRlbnRpdHkUdHlwZXMgUHJvdmlkZXIEHEJhbGFuY2UBxAEMKEFsbG9jYXRpb24AAABAQXV0aG9yaXR5RGVwb3NpdAQAxAEcQmFsYW5jZQABABhTeXN0ZW0AAgAANQoAAAQMBDgxCgA5CgxUaW5kaXZfcGFsbGV0X2lkZW50aXR5FHR5cGVzQFBlcnNvbmFsSWRlbnRpdHkQJEFjY291bnRJZAEELEp1ZGdlbWVudElkATg0TWF4SnVkZ2VtZW50cwAsQmxvY2tOdW1iZXIBOAAQARxhY2NvdW50BAEkQWNjb3VudElkAAFIcGVuZGluZ19qdWRnZW1lbnRzPQoBwEJvdW5kZWRWZWM8KFNvY2lhbCwgSnVkZ2VtZW50SWQpLCBNYXhKdWRnZW1lbnRzPgABGGJhbm5lZMgBEGJvb2wAAWR1c2VybmFtZV9sYXN0X3JlcG9ydGVkX2F0CQMBTE9wdGlvbjxCbG9ja051bWJlcj4AAD0KDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBQQoEUwAABABFCgEYVmVjPFQ+AABBCgAABAhFBDgARQoAAAJBCgBJCgxUaW5kaXZfcGFsbGV0X2lkZW50aXR5FHR5cGVzOFVzZXJuYW1lUmVwb3J0DCRBY2NvdW50SWQBBCBVc2VybmFtZQFBBBhUaWNrZXQBOAAMASByZXBvcnRlcgQBJEFjY291bnRJZAABIHVzZXJuYW1lQQQBIFVzZXJuYW1lAAEcY2FzZV9pZDgBGFRpY2tldAAATQoMVGluZGl2X3BhbGxldF9pZGVudGl0eRhwYWxsZXQURXJyb3IEBFQAAaRIVG9vTWFueVN1YkFjY291bnRzAAAEXFRvbyBtYW55IHN1YnMtYWNjb3VudHMuHE5vQWxpYXMAAQR4Tm8gYWxpYXMgZm91bmQgZm9yIGFuIGFjY291bnQuIE5vdEZvdW5kAAIEUEFjY291bnQgaXNuJ3QgZm91bmQuIE5vdE5hbWVkAAMEUEFjY291bnQgaXNuJ3QgbmFtZWQuKEVtcHR5SW5kZXgABAQwRW1wdHkgaW5kZXguKEZlZUNoYW5nZWQABQQ8RmVlIGlzIGNoYW5nZWQuKE5vSWRlbnRpdHkABgRITm8gaWRlbnRpdHkgZm91bmQuPFN0aWNreUp1ZGdlbWVudAAHBERTdGlja3kganVkZ2VtZW50LjhKdWRnZW1lbnRHaXZlbgAIBEBKdWRnZW1lbnQgZ2l2ZW4uQEludmFsaWRKdWRnZW1lbnQACQRISW52YWxpZCBqdWRnZW1lbnQuMEludmFsaWRJbmRleAAKBFRUaGUgaW5kZXggaXMgaW52YWxpZC40SW52YWxpZFRhcmdldAALBFhUaGUgdGFyZ2V0IGlzIGludmFsaWQuRFRvb01hbnlSZWdpc3RyYXJzAAwE6E1heGltdW0gYW1vdW50IG9mIHJlZ2lzdHJhcnMgcmVhY2hlZC4gQ2Fubm90IGFkZCBhbnkgbW9yZS44QWxyZWFkeUNsYWltZWQADQRwQWNjb3VudCBJRCBpcyBhbHJlYWR5IG5hbWVkLjxBbHJlYWR5UmVwb3J0ZWQADgSMVXNlcm5hbWUgaGFzIGFscmVhZHkgYmVlbiByZXBvcnRlZC4YTm90U3ViAA8EcFNlbmRlciBpcyBub3QgYSBzdWItYWNjb3VudC4gTm90T3duZWQAEASIU3ViLWFjY291bnQgaXNuJ3Qgb3duZWQgYnkgc2VuZGVyLnRKdWRnZW1lbnRGb3JEaWZmZXJlbnRJZGVudGl0eQARBNBUaGUgcHJvdmlkZWQganVkZ2VtZW50IHdhcyBmb3IgYSBkaWZmZXJlbnQgaWRlbnRpdHkuWEp1ZGdlbWVudFBheW1lbnRGYWlsZWQAEgT4RXJyb3IgdGhhdCBvY2N1cnMgd2hlbiB0aGVyZSBpcyBhbiBpc3N1ZSBwYXlpbmcgZm9yIGp1ZGdlbWVudC40SW52YWxpZFN1ZmZpeAATBIBUaGUgcHJvdmlkZWQgc3VmZml4IGlzIHRvbyBsb25nLlBOb3RVc2VybmFtZUF1dGhvcml0eQAUBOBUaGUgc2VuZGVyIGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byBpc3N1ZSBhIHVzZXJuYW1lLjBOb0FsbG9jYXRpb24AFQTEVGhlIGF1dGhvcml0eSBjYW5ub3QgYWxsb2NhdGUgYW55IG1vcmUgdXNlcm5hbWVzLkBJbnZhbGlkU2lnbmF0dXJlABYEqFRoZSBzaWduYXR1cmUgb24gYSB1c2VybmFtZSB3YXMgbm90IHZhbGlkLkRSZXF1aXJlc1NpZ25hdHVyZQAXBAkBU2V0dGluZyB0aGlzIHVzZXJuYW1lIHJlcXVpcmVzIGEgc2lnbmF0dXJlLCBidXQgbm9uZSB3YXMgcHJvdmlkZWQuPEludmFsaWRVc2VybmFtZQAYBLBUaGUgdXNlcm5hbWUgZG9lcyBub3QgbWVldCB0aGUgcmVxdWlyZW1lbnRzLjRVc2VybmFtZVRha2VuABkEeFRoZSB1c2VybmFtZSBpcyBhbHJlYWR5IHRha2VuLihOb1VzZXJuYW1lABoEmFRoZSByZXF1ZXN0ZWQgdXNlcm5hbWUgZG9lcyBub3QgZXhpc3QuZE5vdFN5c3RlbVByb3ZpZGVkVXNlcm5hbWUAGwTUVGhlIHJlcG9ydGVkIHVzZXJuYW1lIHdhcyBub3QgcHJvdmlkZWQgYnkgdGhlIHN5c3RlbS4oTm90RXhwaXJlZAAcBC0BVGhlIHVzZXJuYW1lIGNhbm5vdCBiZSBmb3JjZWZ1bGx5IHJlbW92ZWQgYmVjYXVzZSBpdCBjYW4gc3RpbGwgYmUgYWNjZXB0ZWQuIFRvb0Vhcmx5AB0EGQFUaGUgdXNlcm5hbWUgY2Fubm90IGJlIHJlbW92ZWQgYmVjYXVzZSBpdCdzIHN0aWxsIGluIHRoZSBncmFjZSBwZXJpb2QuME5vdFVuYmluZGluZwAeBOxUaGUgdXNlcm5hbWUgY2Fubm90IGJlIHJlbW92ZWQgYmVjYXVzZSBpdCBpcyBub3QgdW5iaW5kaW5nLkBBbHJlYWR5VW5iaW5kaW5nAB8E/FRoZSB1c2VybmFtZSBjYW5ub3QgYmUgdW5ib3VuZCBiZWNhdXNlIGl0IGlzIGFscmVhZHkgdW5iaW5kaW5nLlhJbnN1ZmZpY2llbnRQcml2aWxlZ2VzACAIRQFUaGUgYWN0aW9uIGNhbm5vdCBiZSBwZXJmb3JtZWQgYmVjYXVzZSBvZiBpbnN1ZmZpY2llbnQgcHJpdmlsZWdlcyAoZS5nLiBhdXRob3JpdHnQdHJ5aW5nIHRvIHVuYmluZCBhIHVzZXJuYW1lIHByb3ZpZGVkIGJ5IHRoZSBzeXN0ZW0pLihCYWRDb250ZXh0ACEE5FRoZSBjb250ZXh0IGluIHdoaWNoIHRoZSBhbGlhcyB3YXMgdXNlZCBpcyBub3Qgc3VwcG9ydGVkLkxVbmV4cGVjdGVkSnVkZ2VtZW50ACIExE5vIGFzc29jaWF0ZWQgcmVxdWVzdCBmb3IgdGhlIGp1ZGdlbWVudCByZWNlaXZlZC4wTm90U3VwcG9ydGVkACMEXQFUaGUgc29jaWFsIGNyZWRlbnRpYWwgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgY29uZmlndXJlZCBpZGVudGl0eSBpbmZvcm1hdGlvbiBwcm92aWRlci4YQmFubmVkACQE2FRoZSBwZXJzb24gaXMgYmFubmVkIGFuZCBjYW5ub3QgcGVyZm9ybSB0aGUgb3BlcmF0aW9uLkRBbHJlYWR5UmVnaXN0ZXJlZAAlBB0BVGhlIHBlcnNvbiBhbHJlYWR5IGhhcyBhIHBlcnNvbmFsIGlkZW50aXR5IGFzc29jaWF0ZWQgd2l0aCB0aGVpciBhbGlhcy5ESnVkZ2VtZW50TGlzdEZ1bGwAJgT4VGhlIGxpc3Qgb2YganVkZ2VtZW50cyBvbmdvaW5nIG9uIGEgcGVyc29uYWwgaWRlbnRpdHkgaXMgZnVsbC5sTGFzdFVzZXJuYW1lUmVwb3J0VG9vUmVjZW50ACcEsFRoZSB1c2VybmFtZSBoYXMgYmVlbiByZXBvcnRlZCB0b28gcmVjZW50bHkuYFVzZXJuYW1lSnVkZ2VtZW50T25nb2luZwAoBBEBVGhlIHVzZXJuYW1lIGhhcyBiZWVuIHJlcG9ydGVkIGFuZCBpcyB1bmRlcmdvaW5nIHZhbGlkaXR5IGp1ZGdlbWVudC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuUQoMTGluZGl2X3BhbGxldF9wZW9wbGUUdHlwZXMwUGVyc29uUmVjb3JkCBhNZW1iZXIBCCRBY2NvdW50SWQBBAAIAQxrZXkIARhNZW1iZXIAARxhY2NvdW50/QYBRE9wdGlvbjxBY2NvdW50SWQ+AABVCgxMaW5kaXZfcGFsbGV0X3Blb3BsZRhwYWxsZXQURXJyb3IEBFQAAZQkTm90UGVyc29uAAAE0FRoZSBzdXBwbGllZCBpZGVudGlmaWVyIGRvZXMgbm90IHJlcHJlc2VudCBhIHBlcnNvbi4UTm9LZXkAAQScVGhlIGdpdmVuIHBlcnNvbiBoYXMgbm8gYXNzb2NpYXRlZCBrZXkuOEludmFsaWRDb250ZXh0AAIEKQFUaGUgY29udGV4dCBpcyBub3QgYSBtZW1iZXIgb2YgdGhvc2UgYWxsb3dlZCB0byBoYXZlIGFjY291bnQgYWxpYXNlcyBoZWxkLjhJbnZhbGlkQWNjb3VudAADBGRUaGUgYWNjb3VudCBpcyBub3Qga25vd24uMEFjY291bnRJblVzZQAEBMhUaGUgYWNjb3VudCBpcyBhbHJlYWR5IGluIHVzZSB1bmRlciBhbm90aGVyIGFsaWFzLjBJbnZhbGlkUHJvb2YABQRUVGhlIHByb29mIGlzIGludmFsaWQuQEludmFsaWRTaWduYXR1cmUABgRkVGhlIHNpZ25hdHVyZSBpcyBpbnZhbGlkLiROb01lbWJlcnMABwTQVGhlcmUgYXJlIG5vdCB5ZXQgYW55IG1lbWJlcnMgb2Ygb3VyIHBlcnNvbmhvb2Qgc2V0LihJbmNvbXBsZXRlAAgEBQFUaGUgcm9vdCBjYW5ub3QgYmUgZmluYWxpemVkIGFzIHRoZXJlIGFyZSBzdGlsbCB1bnB1c2hlZCBtZW1iZXJzLihTdGlsbEZyZXNoAAkEYFRoZSByb290IGlzIHN0aWxsIGZyZXNoLjhUb29NYW55TWVtYmVycwAKBIhUb28gbWFueSBtZW1iZXJzIGhhdmUgYmVlbiBwdXNoZWQuPEtleUFscmVhZHlJblVzZQALBJRLZXkgYWxyZWFkeSBpbiB1c2UgYnkgYW5vdGhlciBwZXJzb24uLEtleU5vdEZvdW5kAAwEoFRoZSBvbGQga2V5IHdhcyBub3QgZm91bmQgd2hlbiBleHBlY3RlZC4wQ291bGROb3RQdXNoAA0EkENvdWxkIG5vdCBwdXNoIG1lbWJlciBpbnRvIHRoZSByaW5nLhxTYW1lS2V5AA4ElFRoZSByZWNvcmQgaXMgYWxyZWFkeSB1c2luZyB0aGlzIGtleS5UUGVyc29uYWxJZE5vdFJlc2VydmVkAA8EdFBlcnNvbmFsIElkIHdhcyBub3QgcmVzZXJ2ZWQugFBlcnNvbmFsSWRSZXNlcnZhdGlvbkNhbm5vdFJlbmV3ABAEkFBlcnNvbmFsIElkIGhhcyBuZXZlciBiZWVuIHJlc2VydmVkLpBQZXJzb25hbElkTm90UmVzZXJ2ZWRPck5vdFJlY29nbml6ZWQAEQTcUGVyc29uYWwgSWQgd2FzIG5vdCByZXNlcnZlZCBvciBub3QgYWxyZWFkeSByZWNvZ25pemVkLixJbnZhbGlkUmluZwASBKxSaW5nIGNhbm5vdCBiZSBtZXJnZWQgaWYgaXQncyB0aGUgdG9wIHJpbmcuSFN1c3BlbnNpb25zUGVuZGluZwATBORSaW5nIGNhbm5vdCBiZSBidWlsdCB3aGlsZSB0aGVyZSBhcmUgc3VzcGVuc2lvbnMgcGVuZGluZy5cUmluZ0Fib3ZlTWVyZ2VUaHJlc2hvbGQAFATUUmluZyBjYW5ub3QgYmUgbWVyZ2VkIGlmIGl0J3Mgbm90IGJlbG93IDEvMiBjYXBhY2l0eS5ISW52YWxpZFN1c3BlbnNpb25zABUEoFN1c3BlbnNpb24gaW5kaWNlcyBwcm92aWRlZCBhcmUgaW52YWxpZC5ETm9NdXRhdGlvblNlc3Npb24AFgQ1AUFuIG11dGF0aW5nIGFjdGlvbiB3YXMgcXVldWVkIHdoZW4gdGhlcmUgd2FzIG5vIG11dGF0aW9uIHNlc3Npb24gaW4gcHJvZ3Jlc3MucENvdWxkTm90U3RhcnRNdXRhdGlvblNlc3Npb24AFwSkQW4gbXV0YXRpbmcgc2Vzc2lvbiBjb3VsZCBub3QgYmUgc3RhcnRlZC5sU3VzcGVuc2lvblNlc3Npb25JblByb2dyZXNzABgE9ENhbm5vdCBtZXJnZSByaW5ncyB3aGlsZSBhIHN1c3BlbnNpb24gc2Vzc2lvbiBpcyBpbiBwcm9ncmVzcy40QWxpYXNOb3RTdGFsZQAZBHxUaGUgYWxpYXMgbWFwcGluZyBpcyBub3Qgc3RhbGUuOFRpbWVPdXRPZlJhbmdlABoEeENhbGwgaXMgdG9vIGxhdGUgb3IgdG9vIGVhcmx5LlhBbGlhc0FjY291bnRBbHJlYWR5U2V0ABsEwEFsaWFzIDwtPiBBY2NvdW50IGlzIGFscmVhZHkgc2V0IGFuZCB1cCB0byBkYXRlLjBOb3RTdXNwZW5kZWQAHATQUGVyc29uaG9vZCBjYW5ub3QgYmUgcmVzdW1lZCBpZiBpdCBpcyBub3Qgc3VzcGVuZGVkLiRTdXNwZW5kZWQAHQRgUGVyc29uaG9vZCBpcyBzdXNwZW5kZWQuTEludmFsaWRLZXlNaWdyYXRpb24AHgSoSW52YWxpZCBzdGF0ZSBmb3IgYXR0ZW1wdGVkIGtleSBtaWdyYXRpb24uTEtleUFscmVhZHlTdXNwZW5kZWQAHwhVAUludmFsaWQgc3VzcGVuc2lvbiBvZiBhIGtleSBiZWxvbmdpbmcgdG8gYSBwZXJzb24gd2hvc2UgaW5kZXggaW4gdGhlIHJpbmcgaGFzIGFscmVhZHm4YmVlbiBpbmNsdWRlZCBpbiB0aGUgcGVuZGluZyBzdXNwZW5zaW9ucyBsaXN0LlRJbnZhbGlkT25ib2FyZGluZ1NpemUAIAToVGhlIG9uYm9hcmRpbmcgc2l6ZSBtdXN0IG5vdCBleGNlZWQgdGhlIG1heGltdW0gcmluZyBzaXplLkBJbnZhbGlkTWVtYmVyS2V5ACEErFRoZSBtZW1iZXIga2V5IGlzIG5vdCB2YWxpZCBmb3IgdGhlIGNyeXB0by50UGVvcGxlQ29sbGVjdGlvbkFscmVhZHlFeGlzdHMAIgS8VGhlIHBlb3BsZSBjb2xsZWN0aW9uIGhhcyBhbHJlYWR5IGJlZW4gY3JlYXRlZC40QWxpYXNNaXNtYXRjaAAjBBkBVGhlIHByb3ZpZGVkIGFsaWFzIGRvZXMgbm90IG1hdGNoIHRoZSBhY2NvdW50J3MgY3VycmVudCBhbGlhcyBtYXBwaW5nLjhOb1N0YWxlQWxpYXNlcwAkBKBOb25lIG9mIHRoZSBzdXBwbGllZCBhbGlhc2VzIHdlcmUgc3RhbGUuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LlkKDFRpbmRpdl9wYWxsZXRfbW9iX3J1bGUYcGFsbGV0JE1vYkNyZWRpdAQcQmFsYW5jZQHEABABFHZvdGVkOAEMdTMyAAEcY2xlYW5lZDgBDHUzMgABHGNvcnJlY3Q4AQx1MzIAARhjcmVkaXTEARxCYWxhbmNlAABdCgAABAg4CABhCgxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldCBPcGVuQ2FzZQQsUnVudGltZUNhbGwBIAAMARRzaW5jZSgBQFNlY3NTaW5jZUdlbmVzaXMAARxkZXRhaWxzZQoBYENhc2VEZXRhaWxzPFJ1bnRpbWVDYWxsPgABFHRhbGx5dQoBJFZvdGVUYWxseQAAZQoMVGluZGl2X3BhbGxldF9tb2JfcnVsZRhwYWxsZXQsQ2FzZURldGFpbHMELFJ1bnRpbWVDYWxsASAADAEkc3RhdGVtZW50aQoBJFN0YXRlbWVudAABHGNvbnRleHR4AUBKdWRnZW1lbnRDb250ZXh0AAEgY2FsbGJhY2txCgH8Q2FsbGJhY2s8KENhc2VJbmRleCwgSnVkZ2VtZW50Q29udGV4dCwgSnVkZ2VtZW50KSwgUnVudGltZUNhbGw+AABpChA0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eSRTdGF0ZW1lbnQAAQwoUHJvb2ZPZkluawwBGGRlc2lnbm0KAVRwcm9vZl9vZl9pbms6Oklua1NwZWMAASBldmlkZW5jZQgBMEV2aWRlbmNlSGFzaAABTHByb2JhYmxlX2FjY2VwdGFibGXIARBib29sAAAASElkZW50aXR5Q3JlZGVudGlhbAgBIHBsYXRmb3JtRQQBQGlkZW50aXR5OjpTb2NpYWwAASBldmlkZW5jZUEEAThpZGVudGl0eTo6RGF0YQABADRVc2VybmFtZVZhbGlkBAEgdXNlcm5hbWVBBAE4aWRlbnRpdHk6OkRhdGEAAgAAbQoUNGluZGl2X3N1cHBvcnQYdHJhaXRzHHJlYWxpdHkwcHJvb2Zfb2ZfaW5rHElua1NwZWMAARBARGVzaWduZWRFbGVjdGl2ZQgALQMBLEZhbWlseUluZGV4AAAtAwEsRGVzaWduSW5kZXgAAABEUHJvY2VkdXJhbEFjY291bnQIAC0DASxGYW1pbHlJbmRleAAACAEkQWNjb3VudElkAAEASFByb2NlZHVyYWxQZXJzb25hbAgALQMBLEZhbWlseUluZGV4AAAoAShQZXJzb25hbElkAAIAKFByb2NlZHVyYWwIAC0DASxGYW1pbHlJbmRleAAAcAE4UHJvY2VkdXJhbFNlZWQAAwAAcQoQNGluZGl2X3N1cHBvcnQYdHJhaXRzHHJlYWxpdHkgQ2FsbGJhY2sIGFBhcmFtcwAsUnVudGltZUNhbGwAAAgBMHBhbGxldF9pbmRleAwBCHU4AAEoY2FsbF9pbmRleAwBCHU4AAB1CgxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldCRWb3RlVGFsbHkAAAwBDGF5ZTgBDHUzMgABDG5heTgBDHUzMgABIGNvbnRlbXB0OAEMdTMyAAB5CgxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldCBSaXBlQ2FzZQQsUnVudGltZUNhbGwBIAAIARxkZXRhaWxzZQoBYENhc2VEZXRhaWxzPFJ1bnRpbWVDYWxsPgABHHZlcmRpY3RJBAEkSnVkZ2VtZW50AAB9CgxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldCBEb25lQ2FzZQAACAEUc2luY2UoAUBTZWNzU2luY2VHZW5lc2lzAAEcdmVyZGljdEkEASRKdWRnZW1lbnQAAIEKDFRpbmRpdl9wYWxsZXRfbW9iX3J1bGUYcGFsbGV0SENyZWRpdERpc3RyaWJ1dGlvbggcQmFsYW5jZQHELEJsb2NrTnVtYmVyATgAFAEUcm91bmQ4AShSb3VuZEluZGV4AAE8aW5pdGlhbF9iYWxhbmNlxAEcQmFsYW5jZQABRHJlbWFpbmluZ19iYWxhbmNlxAEcQmFsYW5jZQABMHRvdGFsX3BvaW50cygBJFZvdGVDb3VudAABFHN0YXJ0OAEsQmxvY2tOdW1iZXIAAIUKDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBiQoEUwAABACNCgEYVmVjPFQ+AACJCgxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldDhQYXlvdXRTY2hlZHVsZQgcQmFsYW5jZQHELEJsb2NrTnVtYmVyATgADAEkcmVtYWluaW5nOAEoUm91bmRJbmRleAABQGFtb3VudF9wZXJfcm91bmTEARxCYWxhbmNlAAEYcGVyaW9kOAEsQmxvY2tOdW1iZXIAAI0KAAACiQoAkQoMNHNwX2FyaXRobWV0aWMocGVyX3RoaW5ncxxQZXJjZW50AAAEAAwBCHU4AACVCgxUaW5kaXZfcGFsbGV0X21vYl9ydWxlGHBhbGxldBRFcnJvcgQEVAABUChOb1N1Y2hDYXNlAAAEYFRoZSBjYXNlIGRvZXMgbm90IGV4aXN0LihOb1N1Y2hWb3RlAAEEYFRoZSB2b3RlIGRvZXMgbm90IGV4aXN0LhxOb3RPcGVuAAIEVFRoZSBjYXNlIGlzIG5vdCBvcGVuLhxOb3RSaXBlAAMEVFRoZSBjYXNlIGlzIG5vdCByaXBlLhxOb3REb25lAAQEZFRoZSBjYXNlIGlzIG5vdCB5ZXQgZG9uZS4oQ29kZWNFcnJvcgAFBFUBVGhlIGRlY29kZSBvZiB0aGUgY2FsbCBmYWlsZWQuIE1heWJlIHRoZXJlIHdhcyBhIGJyZWFraW5nIHJ1bnRpbWUgdXBncmFkZSBpbiBiZXR3ZWVuPzREaXNwYXRjaEVycm9yAAYETQFUaGUgY2FsbCBmYWlsZWQgdG8gZGlzcGF0Y2guIE1heWJlIHRoZXJlIHdhcyBhIGJyZWFraW5nIHJ1bnRpbWUgdXBncmFkZSBpbiBiZXR3ZWVuPxhSZWNlbnQABwSQVGhlIGNhc2UgaXMgdG9vIHJlY2VudCB0byBiZSByZWFwZWQuIE5vQ3JlZGl0AAgEoE5vdCBlbm91Z2ggY3JlZGl0IHRvIHBheW91dCB0aGUgcmV3YXJkcy4gTm9SZXdhcmQACQTUTm8gbW9iIGNyZWRpdCBkaXN0cmlidXRpb24gaW4gcGxhY2UgdG8gcmV3YXJkIHZvdGVycy4gTm9Qb2ludHMACgSgTm8gcG9pbnRzIHRvIGJlIGNvbnZlcnRlZCB0byBtb2IgY3JlZGl0LjRUb29NYW55Q2xhaW1zAAsEVFRvbyBtYW55IHZvdGUgY2xhaW1zLiBOb1BheW91dAAMBFhObyBwYXlvdXQgaW4gcHJvZ3Jlc3MuSEFyaXRobWV0aWNPdmVyZmxvdwANBLRUaGUgcG9pbnQgYW5kL29yIGNyZWRpdCBhcml0aG1ldGljIG92ZXJmbG93cy5AVG9vTWFueVNjaGVkdWxlcwAOBIBUb28gbWFueSBwYXlvdXQgcm91bmQgc2NoZWR1bGVzLihOb1NjaGVkdWxlAA8EfE5vIHBheW91dCByb3VuZCBzY2hlZHVsZSBmb3VuZC4kTm9QZW5hbHR5ABAEWE5vIHZvdGUgcGVuYWx0eSBmb3VuZC4URWFybHkAEQSUVGhlIHZvdGUgcGVuYWx0eSBoYXMgbm90IGV4cGlyZWQgeWV0LjBVbmRlclBlbmFsdHkAEgToVGhlIHZvdGUgY2Fubm90IGJlIGNhc3QgZHVlIHRvIGEgdm90aW5nIHBlbmFsdHkgaW4gZWZmZWN0LlhDYXNlRXhwaXJhdGlvbkRpc2FibGVkABMEHQFUaGUgb3BlbiBjYXNlIGV4cGlyYXRpb24gaXMgZGlzYWJsZWQgZHVlIHRvIGluc3VmZmljaWVudCBhY3RpdmUgdm90ZXJzLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6ZCgxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luaxhwYWxsZXQkQ2FuZGlkYXRlECxKdWRnZW1lbnRJZAE4HERlcG9zaXQBnQosQmxvY2tOdW1iZXIBOCRBY2NvdW50SWQBBAEMHEFwcGxpZWQMARBjcmVkoQoBrENyZWRpYmlsaXR5PERlcG9zaXQsIFBlcnNvbmFsSWQsIEFjY291bnRJZD4AARxlbnRyb3B5CAEcRW50cm9weQABNGVudHJvcHlfc2luY2U4ASxCbG9ja051bWJlcgAAACBTZWxlY3RlZCABFHNpbmNlOAEsQmxvY2tOdW1iZXIAARBjcmVkoQoBrENyZWRpYmlsaXR5PERlcG9zaXQsIFBlcnNvbmFsSWQsIEFjY291bnRJZD4AASByZXNlcnZlZCgBKFBlcnNvbmFsSWQAARxlbnRyb3B5CAEcRW50cm9weQABGGRlc2lnbm0KARxJbmtTcGVjAAEoYWxsb2NhdGlvbqUKAShBbGxvY2F0aW9uAAEcanVkZ2luZwkDAUxPcHRpb248SnVkZ2VtZW50SWQ+AAEYZmFpbGVkOAEcQ291bnRlcgABABhQcm92ZW4QARhkZXNpZ25tCgEcSW5rU3BlYwABIHJlc2VydmVkKAEoUGVyc29uYWxJZAABMHdhc19yZWZlcnJlZMgBEGJvb2wAASx3YXNfaW52aXRlZMgBEGJvb2wAAgAAnQoUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZURIb2xkQ29uc2lkZXJhdGlvbhQEQQAERgAEUgAERAAIRnAAAAQAxAEoRjo6QmFsYW5jZQAAoQoMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmsYcGFsbGV0LENyZWRpYmlsaXR5DBxEZXBvc2l0AZ0KKFBlcnNvbmFsSWQBKCRBY2NvdW50SWQBBAEMIFJlZmVycmVkBAAoAShQZXJzb25hbElkAAAAHERlcG9zaXQEAJ0KARxEZXBvc2l0AAEAHEludml0ZWQEAAQBJEFjY291bnRJZAACAAClCgxkaW5kaXZfcGFsbGV0X3Byb29mX29mX2luaxhwYWxsZXQoQWxsb2NhdGlvbgABDBxJbml0aWFsAAAAIEluaXREb25lAAEAEEZ1bGwAAgAAqQoMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmsYcGFsbGV0GFBlcnNvbgQ8Qm91bmRlZEFjY291bnRzAa0KACQBGGRlc2lnbrEKATxPcHRpb248SW5rU3BlYz4AAUBhY3RpdmVfcmVmZXJyYWxzrQoBPEJvdW5kZWRBY2NvdW50cwABYGFsbG93ZWRfcmVmZXJyYWxfdGlja2V0czgBHENvdW50ZXIAATRiYWRfcmVmZXJyYWxzOAEcQ291bnRlcgABUHN1Y2Nlc3NmdWxfcmVmZXJyYWxzOAEcQ291bnRlcgABJHJlZmVycmFsczgBHENvdW50ZXIAASxkZXJpdmF0aXZlczgBHENvdW50ZXIAARhiYW5uZWTIARBib29sAAFgcGVuZGluZ19yZWZlcnJhbF9yZXdhcmRzOAEcQ291bnRlcgAArQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQAzAEYVmVjPFQ+AACxCgQYT3B0aW9uBARUAW0KAQgQTm9uZQAAABBTb21lBABtCgAAAQAAtQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAG5CgRTAAAEAL0KARhWZWM8VD4AALkKDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldDhSZWZlcnJhbFRpY2tldAQYVGlja2V0AQQABAEYdGlja2V0BAEYVGlja2V0AAC9CgAAArkKAMEKDGRpbmRpdl9wYWxsZXRfcHJvb2Zfb2ZfaW5rGHBhbGxldBhGYW1pbHkAAAgBEGtpbmR1BAEoRmFtaWx5S2luZAABCGlkCAEgRmFtaWx5SWQAAMUKAAAECC0DLQMAyQoMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmsYcGFsbGV0MERlc2lnblN0YXR1cwABCCBSZXNlcnZlZAAAACRDb21taXR0ZWQAAQAAzQoAAAQIBAQA0QoMZGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbmsYcGFsbGV0FEVycm9yBARUAAGgKEluUHJvZ3Jlc3MAAATMQWNjb3VudCBpcyBhbHJlYWR5IGFwcGx5aW5nIHRvIG1ha2UgYSBwcm9vZi1vZi1pbmsuKE5vUmVmZXJyYWwAAQR4QWNjb3VudCBoYXMgbm90IGJlZW4gcmVmZXJyZWQuKEJhZENvbnRleHQAAgToVGhlIGNhbGxiYWNrIGNvbnRleHQgaXMgaW52YWxpZDsgdGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLkxVbmV4cGVjdGVkSnVkZ2VtZW50AAMEIQFUaGUgaW5jb21pbmcganVkZ2VtZW50IElEIGlzIG5vdCB3aGF0IHdlIHdlcmUgZXhwZWN0aW5nIGZvciB0aGUgYWNjb3VudC4YTm9BcmdzAAQEuE5vIGFyZ3VtZW50cyB3ZXJlIHN1cHBsaWVkIHdpdGggdGhlIGp1ZGdlbWVudC4oTm90QXBwbGllZAAFBMxUaGUgYWNjb3VudCBoYXMgbm90IGFwcGxpZWQgdG8gbWFrZSBhIHByb29mLW9mLWluay4sTm90U2VsZWN0ZWQABgSwVGhlIGNhbmRpZGF0ZSBoYXMgbm90IGNvbW1pdHRlZCB0byBhIGRlc2lnbi4kTm90UHJvdmVuAAcErFRoZSBjYW5kaWRhdGUgZGlkIG5vdCBwcm92ZSB0aGVtc2VsdmVzIHlldC44QWxyZWFkeVN0YXJ0ZWQACATIVGhlIGNhbmRpZGF0ZSBoYXMgYWxyZWFkeSBzdGFydGVkIHRoZWlyIGp1ZGdlbWVudC4oT3V0T2ZSYW5nZQAJBIBUaGUgcGVyc29uYWwgSUQgaXMgbm90IGluIHJhbmdlLjBBbHJlYWR5VGFrZW4ACgScVGhlIHBlcnNvbmFsIElEIGhhcyBhbHJlYWR5IGJlZW4gdGFrZW4uPE5vTW9yZVJlZmVycmFscwALBLhUaGUgcGVyc29uIGhhcyBubyBtb3JlIHJlZmVycmFscyBsZWZ0IHRvIGdpdmUuIFRvb0Vhcmx5AAwEYFRoZSByZXJvbGwgaXMgdG9vIGVhcmx5LjREZXNpZ25JbnZhbGlkAA0EoFRoZSByZWZlcnJlcidzIGRlc2lnbiBpcyBub3QgcHJvY2VkdXJhbC4sRGVzaWduVGFrZW4ADgScVGhlIHJlZmVycmVyJ3MgZGVzaWduIGlzIGFscmVhZHkgdGFrZW4uJEJhZFBhcmVudAAPBBUBVGhlIHJlZmVycmVyIGRvZXNuJ3QgYXBwZWFyIHRvIGJlIGEgcGVyc29uLiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uJEJhZEZhbWlseQAQBIBUaGUgZGVzaWduIGZhbWlseSBkb2Vzbid0IGV4aXN0LixXcm9uZ0ZhbWlseQARBLRUaGUgZGVzaWduIGZhbWlseSBpcyBpbnZhbGlkIGZvciB0aGlzIGNob2ljZS4sSW5kZXhUb29CaWcAEgRBAVRoZSBpbmRleCBvZiB0aGUgZGVzaWduIG9yIHZhcmlhbnQgaXMgYmV5b25kIHRoZSBhbGxvd2VkIG1heGltdW0gZm9yIHRoZSBmYW1pbHkuEEJ1c3kAEwT4VGhlIHN5c3RlbSBpcyBidXN5IHdpdGggdG9vIG1hbnkgY29tbWl0bWVudHM7IHRyeSBhZ2FpbiBsYXRlci4YQmFubmVkABQEqFRoZSBwZXJzb24gaGFzIGJlZW4gYmFubmVkIGZyb20gcmVmZXJyaW5nLihJbXByb2JhYmxlABUEJQFUaGUgY2FuZGlkYXRlIGhhcyBub3QgZGVtb25zdHJhdGVkIHByb2JhYmx5IHRocm91Z2ggdGhlIGluaXRpYWwgZXZpZGVuY2UuKElkUmVzZXJ2ZWQAFgTAVGhlIHBlcnNvbmFsIGlkZW50aXR5IGhhcyBhbHJlYWR5IGJlZW4gcmVzZXJ2ZWQuGElkVXNlZAAXBOhUaGUgcGVyc29uYWwgaWRlbnRpdHkgaXMgYWxyZWFkeSB0YWtlbiBieSBhIHByb3ZlbiBwZXJzb24uNEludmFsaWRUaWNrZXQAGAR8VGhlIHRpY2tldCBwcm92aWRlZCBpcyBpbnZhbGlkLiBOb1RpY2tldAAZBPBUaGUgY2FsbGVyIGhhcyBub3QgcHJvdmlkZWQgYSByZWZlcnJhbCBvciBpbnZpdGF0aW9uIHRpY2tldC40Tm90QXV0aG9yaXplZAAaBKRUaGUgYWNjb3VudCBpcyBub3QgYXV0aG9yaXplZCB0byBkbyB0aGlzLiROb3RQZXJzb24AGwSQVGhlIHBlcnNvbmFsIGlkZW50aXR5IGRvZXNuJ3QgZXhpc3QuRFJlZmVycmVkQ2FuZGlkYXRlABwEXQFUaGUgY2FuZGlkYXRlIGlzIHJlZmVycmVkLiBCdXQgdGhlIG9wZXJhdGlvbiByZXF1aXJlcyB0aGUgY2FuZGlkYXRlIHRvIG5vdCBiZSByZWZlcnJlZC5QTm90UmVmZXJyZWRDYW5kaWRhdGUAHQRdAVRoZSBjYW5kaWRhdGUgaXMgbm90IHJlZmVycmVkLiBCdXQgdGhlIG9wZXJhdGlvbiByZXF1aXJlcyB0aGUgY2FuZGlkYXRlIHRvIGJlIHJlZmVycmVkLkhOb1Jld2FyZFRvUmVnaXN0ZXIAHgSgVGhlcmUgaXMgbm8gcmVmZXJyYWwgcmV3YXJkIHRvIHJlZ2lzdGVyLkBSZXdhcmRUb1JlZ2lzdGVyAB8EBQFUaGVyZSBpcyBhIHBlbmRpbmcgcmVmZXJyYWwgcmV3YXJkIHRoYXQgbXVzdCBiZSByZWdpc3RlcmVkIGZpcnN0LiROb0ludml0ZXIAIARETm8gaW52aXRlciBmb3VuZC5ASW52YWxpZFNpZ25hdHVyZQAhBEhJbnZhbGlkIHNpZ25hdHVyZS4kTm9JbnZpdGVzACIEUE5vIGludml0ZSBhdmFpbGFibGUuOEFscmVhZHlJbnZpdGVkACMEWEludml0ZSBpcyBhbHJlYWR5IHNldC4oTm9SZWZlcnJlcgAkBHRUaGUgcmVmZXJyZXIgaXMgbm90IGEgcGVyc29uLjBOb3RQb2lQZXJzb24AJQToVGhlIGluZGl2aWR1YWwgaXMgbm90IGEgcGVyc29uIHJlY29nbml6ZWQgYnkgcHJvb2Ygb2YgaW5rLlxJbnZhbGlkUHJvb2ZPZk93bmVyc2hpcAAmBIhUaGUgcHJvb2Ygb2Ygb3duZXJzaGlwIGlzIGludmFsaWQuaEludmFsaWRSZWltYnVyc2VtZW50VmFsdWVzACcElFRoZSByZWltYnVyc2VtZW50IHZhbHVlcyBhcmUgaW52YWxpZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu1QoAAAQIHQcIANkKDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlczhBcmNoaXZlZFBsYXllcgQsQmxvY2tOdW1iZXIBOAEIIEtpY2thYmxlCAEoZmlyc3RfZ2FtZTgBDHUzMgABOGFyY2hpdmVkX3NpbmNlOAEsQmxvY2tOdW1iZXIAAAAoVW5raWNrYWJsZQQBKGZpcnN0X2dhbWU4AQx1MzIAAQAA3QoMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzGFBsYXllcgQsUGxheURlcG9zaXQB4QoAJAEoZmlyc3RfZ2FtZTgBDHUzMgABKHJlZ2lzdGVyZWTIARBib29sAAEsc2VudF9yZXBvcnTIARBib29sAAFoZWFybHlfYXR0ZW5kYW5jZV9lbmFjdG1lbnTlCgGAT3B0aW9uPEVhcmx5QXR0ZW5kYW5jZUVuYWN0bWVudD4AASh5ZXNfcGVyc29uDAEIdTgAATRub19ub3RfcGVyc29uDAEIdTgAAWBleHBlY3RlZF9tYXhfdm90ZV93ZWlnaHQtAwEMdTE2AAEsdm90ZV93ZWlnaHQMAQh1OAABLGNyZWRpYmlsaXR57QoBeFBsYXllckNyZWRpYmlsaXR5PFBsYXlEZXBvc2l0PgAA4QoUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZURIb2xkQ29uc2lkZXJhdGlvbhQEQQAERgAEUgAERAAIRnAAAAQAxAEoRjo6QmFsYW5jZQAA5QoEGE9wdGlvbgQEVAHpCgEIEE5vbmUAAAAQU29tZQQA6QoAAAEAAOkKDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlc2BFYXJseUF0dGVuZGFuY2VFbmFjdG1lbnQAAAwBKGF0dGVuZGFuY2XIARBib29sAAFUZXh0ZXJuYWxseV9yZWNvZ25pemVkyAEQYm9vbAABKHplcm9fc2NvcmXIARBib29sAADtCgxEaW5kaXZfcGFsbGV0X2dhbWUUdHlwZXNEUGxheWVyQ3JlZGliaWxpdHkELFBsYXlEZXBvc2l0AeEKAQwcSW52aXRlZAAAAChSZWNvZ25pemVkAAEAHERlcG9zaXQEAOEKASxQbGF5RGVwb3NpdAACAADxCgxEaW5kaXZfcGFsbGV0X2dhbWUUdHlwZXMgR2FtZUluZm8EJEFjY291bnRJZAEEACQBFGluZGV4OAEMdTMyAAFEcmVnaXN0cmF0aW9uX2VuZHM4AQx1MzIAAUBzaHVmZmxlX2RlYWRsaW5lOAEMdTMyAAEkZ2FtZV9kYXRlOAEMdTMyAAEscmVwb3J0X2VuZHM4AQx1MzIAARRzdGF0ZfUKAVBHYW1lU3RhdGU8QWNjb3VudElkPgABOG1heF9ncm91cF9zaXplOAEMdTMyAAEYcm91bmRzDAEIdTgAAUhwZW5kaW5nX2F0dGVuZGFuY2U4AQx1MzIAAPUKDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlcyRHYW1lU3RhdGUEJEFjY291bnRJZAEEARQwUmVnaXN0cmF0aW9uBAFEbmV4dF9wbGF5ZXJfaW5kZXg4AQx1MzIAAAAcU2h1ZmZsZQQBEHN0ZXD5CgFYU2h1ZmZsZVN0ZXA8QWNjb3VudElkPgABACRSZXBvcnRpbmcEATBwbGF5ZXJfY291bnQ4AQx1MzIAAgA0UGxheWVyUHJvY2VzcwgBOGxhc3RfaXRlcmF0aW9u/QoBiE9wdGlvbjxBY2NvdW50T3JQZXJzb248QWNjb3VudElkPj4AATBwbGF5ZXJfY291bnQ4AQx1MzIAAwAoQ2FuY2VsbGluZwQBOGxhc3RfaXRlcmF0aW9u/QoBiE9wdGlvbjxBY2NvdW50T3JQZXJzb248QWNjb3VudElkPj4ABAAA+QoMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzLFNodWZmbGVTdGVwBCRBY2NvdW50SWQBBAEQLFN0ZXAxSW5zZXJ0BAE4bGFzdF9pdGVyYXRpb279CgGIT3B0aW9uPEFjY291bnRPclBlcnNvbjxBY2NvdW50SWQ+PgAAADRTdGVwMlJldHJpZXZlCAFEbmV4dF9wbGF5ZXJfaW5kZXg4AQx1MzIAAUxyZWNvZ25pemVkX2ZpbmlzaGVkyAEQYm9vbAABAExTdGVwM0NvbXB1dGVXZWlnaHRzCAE4bGFzdF9pdGVyYXRpb279CgGIT3B0aW9uPEFjY291bnRPclBlcnNvbjxBY2NvdW50SWQ+PgABMHBsYXllcl9jb3VudDgBDHUzMgACAERTdGVwNEF3YWl0U2Vzc2lvbgQBMHBsYXllcl9jb3VudDgBDHUzMgADAAD9CgQYT3B0aW9uBARUAR0HAQgQTm9uZQAAABBTb21lBAAdBwAAAQAAAQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAE4BFMAAAQAZQQBGFZlYzxUPgAABQsAAAQIDDgACQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAE4BFMAAAQAZQQBGFZlYzxUPgAADQsAAAQIDAgAEQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGlBARTAAAEAKEEARhWZWM8VD4AABULDERpbmRpdl9wYWxsZXRfZ2FtZRR0eXBlc0RTY3JhdGNoUmV3YXJkSW5mbwAACAEoZ2FtZV9pbmRleDgBDHUzMgABKHJhbmRvbW5lc3MIASBbdTg7IDMyXQAAGQsMRGluZGl2X3BhbGxldF9nYW1lFHR5cGVzSFNjcmF0Y2hFbGlnaWJpbGl0eQABCCBFbGlnaWJsZQQAOAEMdTMyAAAAHENsYWltZWQAAQAAHQsMRGluZGl2X3BhbGxldF9nYW1lGHBhbGxldBRFcnJvcgQEVAABiCxHYW1lT25nb2luZwAABDRHYW1lIG9uZ29pbmcuOE5vUmVnaXN0cmF0aW9uAAEEeE5vIHJlZ2lzdHJhdGlvbiBwaGFzZSBvbmdvaW5nLkRPdXRkYXRlZEdhbWVTZXR1cAACBFhUaGUgc2V0dXAgaXMgb3V0ZGF0ZWQuQEludmFsaWRHYW1lU2V0dXAAAwQ4SW52YWxpZCBzZXR1cC40SW52YWxpZFJlcG9ydAAEBDxJbnZhbGlkIHJlcG9ydC4YTm9HYW1lAAUEQE5vIGdhbWUgb25nb2luZy4sTm9SZXBvcnRpbmcABgRgTm8gcmVwb3J0IHBoYXNlIG9uZ29pbmcuNE5vdFJlZ2lzdGVyZWQABwQ8Tm90IHJlZ2lzdGVyZWQuREFscmVhZHlSZWdpc3RlcmVkAAgEaFBsYXllciBhbHJlYWR5IHJlZ2lzdGVyZWQuRFJlcG9ydEFscmVhZHlTZW50AAkEUFJlcG9ydCBhbHJlYWR5IHNlbnQuFEVhcmx5AAoEbE9wZXJhdGlvbiBpcyBub3QgdmFsaWQgeWV0LkROb3RLaWNrYWJsZVBsYXllcgALBJhUaGUgb3BlcmF0aW9uIGV4cGVjdCBhIHBsYXllciBhY2NvdW50LkBOb0FyY2hpdmVkUGxheWVyAAwEZE5vIGFyY2hpdmVkIHBsYXllciBmb3VuZC4gTm9UaWNrZXQADQRATm8gdGlja2V0IGZvdW5kLiROb0ludml0ZXMADgRQTm8gaW52aXRlIGF2YWlsYWJsZS44QWxyZWFkeUludml0ZWQADwRYSW52aXRlIGlzIGFscmVhZHkgc2V0LkBOb3RBY2NvdW50UGxheWVyABAE+E5vdCBhbiBhY2NvdW50IGJhc2VkIHBsYXllciwgZXhwZWN0ZWQgYW4gYWNjb3VudCBiYXNlZCBwbGF5ZXIuaFVzZUludml0ZUJ1dEFscmVhZHlQbGF5aW5nABEEyFRoZSBwbGF5ZXIgY2FuJ3QgdXNlIGFuIGludml0ZSBpZiBhbHJlYWR5IHBsYXlpbmcuUFRvb01hbnlHYW1lU2NoZWR1bGVzABIEQQFUaGUgbnVtYmVyIG9mIGV4aXN0aW5nIHNjaGVkdWxlcyBhbmQgbmV3IHNjaGVkdWxlcyBleGNlZWRzIHRoZSBjb25maWd1cmVkIGxpbWl0LkxOb1N1Y2hHYW1lU2NoZWR1bGVkABMEKQFUaGUgZ2FtZSB0aGF0IHdhcyBzdXBwb3NlZCB0byBiZSByZW1vdmVkIHdhcyBub3QgZm91bmQgaW4gc2NoZWR1bGVkIGdhbWVzLoBJbnZhbGlkU3RhdGVtZW50QWNjb3VudFNpZ25hdHVyZQAUBKxUaGUgc3RhdGVtZW50IGFjY291bnQgc2lnbmF0dXJlIGlzIGludmFsaWQucFN0YXRlbWVudEFjY291bnRBbHJlYWR5SW5Vc2UAFQTsVGhlIHN0YXRlbWVudCBhY2NvdW50IGlzIGFscmVhZHkgaW4gdXNlZCBieSBhbm90aGVyIHBsYXllci5kSW50ZXJuYWxFcnJvckludmFsaWRTdGF0ZQAWBHRJbnRlcm5hbCBlcnJvciBpbnZhbGlkIHN0YXRlLkBJbnZhbGlkR2FtZVN0YXRlABcE8FRoZSBvcGVyYXRpb24gY2Fubm90IGJlIHBlcmZvcm1lZCBpbiB0aGUgY3VycmVudCBnYW1lIHN0YXRlLiBOb1BsYXllcgAYBEBObyBwbGF5ZXIgZm91bmQukENhbm5vdE9mZmJvYXJkV2hpbGVSZWdpc3RlcmVkRm9yR2FtZQAZBNxUaGUgcGxheWVyIGNhbm5vdCBvZmZib2FyZCB3aGlsZSByZWdpc3RlcmVkIGZvciBhIGdhbWUuMEludmFsaWRTdGF0ZQAaBDRJbnZhbGlkIHN0YXRlPE5vU2NyYXRjaFJld2FyZAAbBNhObyBjb25jbHVkZWQgZ2FtZSB3aXRoIGF2YWlsYWJsZSBzY3JhdGNoIGNhcmQgcmV3YXJkcy4sTm90RWxpZ2libGUAHAT8VGhlIHBsYXllciBpcyBub3QgZWxpZ2libGUgZm9yIHRoZSBjdXJyZW50IHNjcmF0Y2ggY2FyZCByZXdhcmQuJERpZE5vdFdpbgAdBNhUaGUgcGVyc29uIGRpZCBub3Qgd2luIHRoZSBzY3JhdGNoIGNhcmQgZm9yIHRoaXMgZ2FtZS44QWxyZWFkeUNsYWltZWQAHgTQVGhlIGFsaWFzIGhhcyBhbHJlYWR5IGNsYWltZWQgYSBzY3JhdGNoIGNhcmQgcmV3YXJkLjxTY3JhdGNoUG90RW1wdHkAHwSUVGhlIHNjcmF0Y2ggY2FyZCBwb3QgYmFsYW5jZSBpcyB6ZXJvLjhQb29sTm90Rm9yR2FtZQAgCBUBYGNsYWltX2dhbWVfcHJpemVgOiBgcG9vbF9pZGAgaXMgbm90IGEgYEdhbWVQYXJ0aWNpcGFudHNgIHBvb2wgKG9yIG5vSHN1Y2ggcG9vbCBleGlzdHMpLjhOb3RQYXJ0aWNpcGFudAAhCAEBYGNsYWltX2dhbWVfcHJpemVgOiB0aGUgcmVzb2x2ZWQgb3JpZ2luIGlkZW50aXR5IGhhcyBubyByZWNvcmRlZHxhdHRlbmRhbmNlIGZvciB0aGUgcG9vbCdzIGdhbWUuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LiELDEhpbmRpdl9wYWxsZXRfc2NvcmUUdHlwZXMsUGFydGljaXBhbnQEHEJhbGFuY2UBxAAgARRzY29yZTgBDHUzMgABGHN0cmVhayULARhTdHJlYWsAAUhhdHRlbmRhbmNlX2hpc3RvcnkpCwFEQXR0ZW5kYW5jZUhpc3RvcnkAARhjcmVkaXTEARxCYWxhbmNlAAEoY2FzaGVkX291dMgBEGJvb2wAAUhyZWFjaGVkX3BlcnNvbmhvb2TIARBib29sAAFsaGFzX2V2ZXJfcmVhY2hlZF9wZXJzb25ob29kyAEQYm9vbAABLHJlY29nbml0aW9uLQsBLFJlY29nbml0aW9uAAAlCwxIaW5kaXZfcGFsbGV0X3Njb3JlFHR5cGVzGFN0cmVhawABCCBBdHRlbmRlZAQAOAEMdTMyAAAAGEFic2VudAQAOAEMdTMyAAEAACkLDEhpbmRpdl9wYWxsZXRfc2NvcmUUdHlwZXNEQXR0ZW5kYW5jZUhpc3RvcnkAAAQADAEIdTgAAC0LDEhpbmRpdl9wYWxsZXRfc2NvcmUUdHlwZXMsUmVjb2duaXRpb24AARBQRXh0ZXJuYWxseVJlY29nbml6ZWQAAAA0Tm90UmVjb2duaXplZAABACRTdXNwZW5kZWQEACgBKFBlcnNvbmFsSWQAAgAoUmVjb2duaXplZAQAKAEoUGVyc29uYWxJZAADAAAxCwAABAg4HQcANQsMSGluZGl2X3BhbGxldF9zY29yZRR0eXBlcyxSb3VuZFBheW91dAQcQmFsYW5jZQHEABABRHJlbWFpbmluZ19iYWxhbmNlxAEcQmFsYW5jZQABLHBvaW50X3ByaWNlxAEcQmFsYW5jZQABJHJlbWFpbmRlcsQBHEJhbGFuY2UAATB0b3RhbF9wb2ludHM4AQx1MzIAADkLDEhpbmRpdl9wYWxsZXRfc2NvcmUUdHlwZXMkUm91bmRJbmZvCCxCbG9ja051bWJlcgE4HEJhbGFuY2UBxAAIASRmaW5pc2hfYXQ4ASxCbG9ja051bWJlcgABGGNyZWRpdMQBHEJhbGFuY2UAAD0LDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBQQsEUwAABABFCwEYVmVjPFQ+AABBCwxIaW5kaXZfcGFsbGV0X3Njb3JlFHR5cGVzOFBheW91dFNjaGVkdWxlCBxCYWxhbmNlAcQsQmxvY2tOdW1iZXIBOAAMASRyZW1haW5pbmc4AQx1MzIAAUBhbW91bnRfcGVyX3JvdW5kxAEcQmFsYW5jZQABIGR1cmF0aW9uOAEsQmxvY2tOdW1iZXIAAEULAAACQQsASQsMSGluZGl2X3BhbGxldF9zY29yZRhwYWxsZXQURXJyb3IEBFQAAVQkTm90UGVyc29uAAAEjFRoZSBjYWxsaW5nIG9yaWdpbiBpcyBub3QgYSBwZXJzb24uXEhhc05vdFJlYWNoZWRQZXJzb25ob29kAAEEjFRoZSBwZXJzb24gZGlkbid0IHJlYWNoIHBlcnNvbmhvb2QuIE5vUmV3YXJkAAIEUE5vIHJld2FyZCBhdmFpbGFibGUuHE5vU2NvcmUAAwSMVGhlIHBlcnNvbiBoYXMgbm8gYXNzb2NpYXRlZCBzY29yZS4oTm9TY2hlZHVsZQAEBHRObyBwYXlvdXQgc2NoZWR1bGUgYXZhaWxhYmxlLkBUb29NYW55U2NoZWR1bGVzAAUEtFRvbyBtYW55IHBheW91dCBzY2hlZHVsZXMgYWxyZWFkeSByZWdpc3RlcmVkLihSZWNvZ25pemVkAAYEBQFUaGUgcGFydGljaXBhbnQgaXMgcmVjb2duaXplZCBvciBoYXMgYmVlbiByZWNvZ25pemVkIGFzIGEgcGVyc29uLjxDYXNoT3V0Q29vbGRvd24ABwTMVGhlIHBhcnRpY2lwYW50IGhhcyBhbHJlYWR5IGNhc2hlZCBvdXQgaW4gdGhpcyBlcmEuYFJvdW5kT25Hb2luZ09yTm9TY2hlZHVsZQAIBJRUaGUgcm91bmQgaXMgb24gZ29pbmcgb3Igbm8gc2NoZWR1bGUuHE5vUm91bmQACQSEVGhlIHBheW91dCByb3VuZCBoYXMgbm90IHN0YXJ0ZWQubEJhZE9yaWdpbk5vdFBlcnNvbk5vdFNpZ25lZAAKBNBUaGUgb3JpZ2luIGlzIG5laXRoZXIgYSBwZXJzb24gbm9yIGEgc2lnbmVkIGFjY291bnQuwEJhZE9yaWdpbk5vdFBlcnNvbk5vdFNpZ25lZE5vdEFjY291bnRQYXJ0aWNpcGFudAALBD0BVGhlIG9yaWdpbiBpcyBuZWl0aGVyIGEgcGVyc29uIG5vciBhIHNpZ25lZCBhY2NvdW50IG5vciBhbiBhY2NvdW50IHBhcnRpY2lwYW50LpxCYWRPcmlnaW5Ob3RTaWduZWROb3RBY2NvdW50UGFydGljaXBhbnQADAQJAVRoZSBvcmlnaW4gaXMgbmVpdGhlciBhIHNpZ25lZCBhY2NvdW50IG5vciBhbiBhY2NvdW50IHBhcnRpY2lwYW50LlBBbHJlYWR5UGFydGljaXBhdGluZwANBKRUaGUgcGFydGljaXBhbnQgaXMgYWxyZWFkeSBwYXJ0aWNpcGF0aW5nLkRLZXlNdXN0QmVQcm92aWRlZAAOBGRUaGUga2V5IG11c3QgYmUgcHJvdmlkZWQuUEtleU11c3ROb3RCZVByb3ZpZGVkAA8EdFRoZSBrZXkgbXVzdCBub3QgYmUgcHJvdmlkZWQuUEhhc1JlYWNoZWRQZXJzb25ob29kABAEjEhhcyByZWFjaGVkIHBlcnNvbmhvb2QgaW4gdGhlIHBhc3QuXEludmFsaWRQcm9vZk9mT3duZXJzaGlwABEEiFRoZSBwcm9vZiBvZiBvd25lcnNoaXAgaXMgaW52YWxpZC44V2luZG93VG9vTGFyZ2UAEgQ9AUFuIGFic2VuY2UgZ3JhY2UgdGllciBoYXMgYSB3aW5kb3cgZXhjZWVkaW5nIHRoZSBtYXhpbXVtIHRyYWNrYWJsZSBoaXN0b3J5ICg4KS5UQWxsb3dlZE1pc3Nlc1Rvb0xhcmdlABMEIQFUaGUgYWxsb3dlZCBtaXNzZXMgbXVzdCBiZSBzdHJpY3RseSBsZXNzIHRoYW4gdGhlIHdpbmRvdyAob3IgYm90aCB6ZXJvKS5EU2NoZWR1bGVOb3RTb3J0ZWQAFAT4VGllcnMgbXVzdCBiZSBzb3J0ZWQgYnkgYXNjZW5kaW5nIGBwb3B1bGF0aW9uX3NpemVfdGhyZXNob2xkYC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuTQsMWGluZGl2X3BhbGxldF9kdW1teV9kaW0YcGFsbGV0GFJlY29yZAQMS2V5AQgACAEMa2V5CAEMS2V5AAEkc3VzcGVuZGVkyAEQYm9vbAAAUQsMWGluZGl2X3BhbGxldF9kdW1teV9kaW0YcGFsbGV0FEVycm9yBARUAAEQJE5vdFBlcnNvbgAABNxUaGUgcGVyc29uYWwgSUQgZG9lcyBub3QgYmVsb25nIHRvIGEgcmVjb2duaXplZCBwZXJzb24uME5vdFN1c3BlbmRlZAABBNhUaGUgcGVyc29uYWwgSUQgZG9lcyBub3QgYmVsb25nIHRvIGEgc3VzcGVuZGVkIHBlcnNvbi4sTm90UmVzZXJ2ZWQAAgTkVGhlIHBlcnNvbmFsIElEIGlzIG5vdCByZXNlcnZlZCBhbmQgYXdhaXRpbmcgcmVjb2duaXRpb24uNFRvb01hbnlQZW9wbGUAAwTAVGhlIG9wZXJhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgbWFueSBwZW9wbGUuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LlULDGBpbmRpdl9wYWxsZXRfcGVvcGxlX2xpdGUUdHlwZXM4TGl0ZVBlcnNvbkluZm8IGE1lbWJlcgEIGE1ldGhvZAFZCwAIATByaW5nX3ZyZl9rZXkIARhNZW1iZXIAARhtZXRob2RZCwEYTWV0aG9kAABZCwxgaW5kaXZfcGFsbGV0X3Blb3BsZV9saXRlFHR5cGVzRFJlY29nbml0aW9uTWV0aG9kBBxBY2NvdW50AQQBBDBVbmlxdWVEZXZpY2UEAAQBHEFjY291bnQAAAAAXQsMYGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZRhwYWxsZXQURXJyb3IEBFQAASxYTm9BdHRlc3RhdGlvbkFsbG93YW5jZQAABGRObyBhdHRlc3RhdGlvbiBhbGxvd2FuY2UubEludmFsaWRBdHRlc3RhdGlvblNpZ25hdHVyZQABBPBUaGUgc2lnbmF0dXJlIGNyZWF0ZWQgYnkgdGhlIGNhbmRpZGF0ZSdzIGFjY291bnQgaXMgaW52YWxpZC5cSW52YWxpZFByb29mT2ZPd25lcnNoaXAAAgQFAVRoZSBzaWduYXR1cmUgY3JlYXRlZCBieSB0aGUgY2FuZGlkYXRlJ3MgcmluZyB2cmYga2V5IGlzIGludmFsaWQuREFscmVhZHlSZWdpc3RlcmVkAAMEkFRoZSBjYW5kaWRhdGUgaXMgYWxyZWFkeSByZWdpc3RlcmVkLjxLZXlBbHJlYWR5SW5Vc2UABATwVGhlIHJpbmcgVlJGIGtleSBpcyBhbHJlYWR5IGVucm9sbGVkIGJ5IGFub3RoZXIgbGl0ZSBwZXJzb24uMEFjY291bnRJblVzZQAFBHhUaGUgYWNjb3VudCBpcyBhbHJlYWR5IGluIHVzZS5YQWxpYXNBY2NvdW50QWxyZWFkeVNldAAGBORUaGUgYWxpYXMgPC0+IGFjY291bnQgbWFwcGluZyBpcyBhbHJlYWR5IHNldCBhbmQgY3VycmVudC5IQWxpYXNBY2NvdW50Tm90U2V0AAcEpFRoZSBhbGlhcyA8LT4gYWNjb3VudCBtYXBwaW5nIGlzIG5vdCBzZXQuTENhbGxCbG9ja091dE9mUmFuZ2UACAQhAVRoZSByZXF1ZXN0ZWQgYWxpYXMgc2V0dXAgYmxvY2sgd2luZG93IGlzIGludmFsaWQgZm9yIHRoZSBjdXJyZW50IGJsb2NrLkxJbnZhbGlkQWxpYXNDb250ZXh0AAkEdFRoZSBhbGlhcyBjb250ZXh0IGlzIGludmFsaWQueExpdGVQZW9wbGVDb2xsZWN0aW9uTm90Q3JlYXRlZAAKBPxUaGUgbGl0ZSBwZW9wbGUgbWVtYmVyIGNvbGxlY3Rpb24gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuYQsMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMUdHlwZXMwQ29uc3VtZXJJbmZvAAAQAThpZGVudGlmaWVyX2tleT0EAVxDb21tdW5pY2F0aW9uSWRlbnRpZmllcgABNGZ1bGxfdXNlcm5hbWXpBAFAT3B0aW9uPFVzZXJuYW1lPgABNGxpdGVfdXNlcm5hbWVBBAEgVXNlcm5hbWUAASxjcmVkaWJpbGl0eWULASxDcmVkaWJpbGl0eQAAZQsMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMUdHlwZXMsQ3JlZGliaWxpdHkAAQgQTGl0ZQAAABhQZXJzb24MARRhbGlhcwgBFEFsaWFzAAEsbGFzdF91cGRhdGUoAQx1NjQAARxkZW1vdGVkyAEQYm9vbAABAABpCwAABAhtCwgAbQsMNGluZGl2X3N1cHBvcnQUdXRpbHMwQmlnRW5kaWFuVTMyAAMEAAAADAQZAUEgdTMyIGVuY29kZWQgaW4gYmlnLWVuZGlhbiBmb3JtYXQgZm9yIGNvcnJlY3QgbGV4aWNvZ3JhcGhpYyBvcmRlcmluZy5xCwxYaW5kaXZfcGFsbGV0X3Jlc291cmNlcxR0eXBlc1xTdG10U3RvcmVBbGxvd2FuY2VFbnRyeQQEVAAADAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABDHNlcTgBDHUzMgABFHNpbmNlKAEMdTY0AAB1CwAABAgEeQsAeQsAAAQMbQs4CAB9CwxYaW5kaXZfcGFsbGV0X3Jlc291cmNlcxR0eXBlc2RGcmllbmRSZXF1ZXN0UmVnaXN0cmF0aW9uBBxBY2NvdW50AQQACAEoYWNjb3VudF9pZAQBHEFjY291bnQAASRyZWZlcmVuY2X1BAFYRnJpZW5kUmVxdWVzdFJlZmVyZW5jZQAAgQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGFCwRTAAAEAIkLARhWZWM8VD4AAIULDFhpbmRpdl9wYWxsZXRfcmVzb3VyY2VzFHR5cGVzVFJlc2VydmF0aW9uUXVldWVFbnRyeQQcQWNjb3VudAEEAAgBHGFjY291bnQEARxBY2NvdW50AAEkam9pbmVkX2F0KAEMdTY0AACJCwAAAoULAI0LCEhzcF9zdGF0ZW1lbnRfc3RvcmVIU3RhdGVtZW50QWxsb3dhbmNlAAAIASRtYXhfY291bnQ4AQx1MzIAASBtYXhfc2l6ZTgBDHUzMgAAkQsMWGluZGl2X3BhbGxldF9yZXNvdXJjZXMYcGFsbGV0FEVycm9yBARUAAFgPEludmFsaWRVc2VybmFtZQAABJxVc2VybmFtZSBkb2VzIG5vdCBmaXQgdGhlIHJlcXVpcmVtZW50cy40VXNlcm5hbWVUYWtlbgABBGhVc2VybmFtZSBpcyBhbHJlYWR5IHRha2VuLkRBbHJlYWR5UmVnaXN0ZXJlZAACBHxDb25zdW1lciBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuXEludmFsaWRQcm9vZk9mT3duZXJzaGlwAAMEnFByb3ZpZGVkIHByb29mIG9mIG93bmVyc2hpcCBpcyBpbnZhbGlkLjROb3RSZWdpc3RlcmVkAAQEnFBlcnNvbiBpcyBub3QgcmVnaXN0ZXJlZCBhcyBhIGNvbnN1bWVyLjROb3RGdWxsUGVyc29uAAUEeENvbnN1bWVyIGlzIG5vdCBhIGZ1bGwgcGVyc29uLjRUb3VjaE5vdFJlYWR5AAYEzEF0dGVtcHRlZCB0byB1cGRhdGUgcGVyc29uIGF1dGhvcml6YXRpb24gdG9vIGVhcmx5LjROb1Jlc2VydmF0aW9uAAcEaFJlc2VydmF0aW9uIGlzIG5vdCBhY3RpdmUuUE5vdFJlc2VydmF0aW9uSG9sZGVyAAgEFQFUaGUgbGlua2VkIGxpdGUgaWRlbnRpdHkgaXMgbm90IHRoZSBhY3RpdmUgaG9sZGVyIG9mIHRoZSByZXNlcnZhdGlvbi5gVXNlcm5hbWVSZXNlcnZhdGlvblRha2VuAAkE5FRoZSB1c2VybmFtZSBpbiB0aGUgcmVzZXJ2YXRpb24gcmVxdWVzdCBpcyBhbHJlYWR5IHRha2VuLkBSZXNlcnZhdGlvbkZyZXNoAAoEgFRoZSByZXNlcnZhdGlvbiBoYXMgbm90IGV4cGlyZWQuQE5vTGlua2VkSWRlbnRpdHkACwScVGhlcmUgaXMgbm8gbGl0ZSBjb25zdW1lciB0byBiZSBsaW5rZWQuNEFscmVhZHlMaW5rZWQADAT4VGhlIGxpdGUgY29uc3VtZXIgaXMgYWxyZWFkeSBsaW5rZWQgdG8gYSBmdWxsIHBlcnNvbiBjb25zdW1lci5QUGVyc29uQXV0aE5vdEV4cGlyZWQADQS8VGhlIHBlcnNvbidzIGF1dGhvcml6YXRpb24gaGFzIG5vdCBleHBpcmVkIHlldC44QWxyZWFkeURlbW90ZWQADgSQVGhlIHBlcnNvbiBoYXMgYWxyZWFkeSBiZWVuIGRlbW90ZWQuJFF1ZXVlRnVsbAAPBIBRdWV1ZSBmb3IgdGhpcyB1c2VybmFtZSBpcyBmdWxsLihOb3RJblF1ZXVlABAEuEFjY291bnQgaXMgbm90IGluIHRoZSBxdWV1ZSBmb3IgdGhpcyB1c2VybmFtZS5UQWxyZWFkeUhhc1Jlc2VydmF0aW9uABEE3EFjY291bnQgYWxyZWFkeSBoYXMgYSByZXNlcnZhdGlvbiBmb3IgYW5vdGhlciB1c2VybmFtZS5wSW52YWxpZEZyaWVuZFJlcXVlc3RTZXF1ZW5jZQASBNBGcmllbmQgcmVxdWVzdCBzZXF1ZW5jZSBpcyBpbnZhbGlkIGZvciB0aGUgY29uc3VtZXIuaEludmFsaWRGcmllbmRSZXF1ZXN0UGVyaW9kABMEwEZyaWVuZCByZXF1ZXN0IHBlcmlvZCBpcyBub3QgdGhlIGN1cnJlbnQgcGVyaW9kLoxGcmllbmRSZXF1ZXN0UmVnaXN0cmF0aW9uTm90RXhwaXJlZAAUBLxGcmllbmQgcmVxdWVzdCByZWdpc3RyYXRpb24gaXMgbm90IGV4cGlyZWQgeWV0LphGcmllbmRSZXF1ZXN0UmVnaXN0cmF0aW9uQWxyZWFkeUV4aXN0cwAVBAUBRnJpZW5kIHJlcXVlc3QgcmVnaXN0cmF0aW9uIGFscmVhZHkgZXhpc3RzIGZvciB0aGUgYWxpYXMvY29udGV4dC5wU3RtdFN0b3JlUmVwbGFjZW1lbnRUb29FYXJseQAWBBkBVGhlIHJlcGxhY2VtZW50IGNvb2xkb3duIGhhcyBub3QgZWxhcHNlZCBzaW5jZSB0aGUgZW50cnkgd2FzIGxhc3Qgc2V0LoxMb25nVGVybVN0b3JhZ2VDbGVhbnVwTGltaXRFeGNlZWRlZAAXBOxUaGUgcHJvdmlkZWQgYGxpbWl0YCBleGNlZWRzIGBMb25nVGVybVN0b3JhZ2VDbGVhbnVwTGltaXRgLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6VCwAABAj9BDgAmQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGdCwRTAAAEAKELARhWZWM8VD4AAJ0LDCh2ZXJpZmlhYmxlEHJpbmcsU3RhdGljQ2h1bmsAA2AAAAAMAKELAAACnQsApQsMbGluZGl2X3BhbGxldF9jaHVua3NfbWFuYWdlchhwYWxsZXQURXJyb3IEBFQAAQw0Q2h1bmtOb3RGb3VuZAAABKBUaGUgcmVxdWVzdGVkIGNodW5rIGluZGV4IGRvZXNuJ3QgZXhpc3QuNEludmFsaWRDaHVua3MAAQSwVGhlIHByb3ZpZGVkIGNodW5rIGRhdGEgY291bGRuJ3QgYmUgZGVjb2RlZC5ESW52YWxpZENodW5rUmFuZ2UAAgTcVGhlIHN0YXJ0IGluZGV4IGlzbid0IHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgZW5kIGluZGV4LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6pCwxQaW5kaXZfcGFsbGV0X21lbWJlcnMUdHlwZXM4Q29sbGVjdGlvbkluZm8IHEFjY291bnQBBCBMb2NhdGlvbgHgABABFG93bmVyrQsBiENvbGxlY3Rpb25Pd25lcjxBY2NvdW50LCBMb2NhdGlvbj4AARBtb2RlsQsBIFJpbmdNb2RlAAEkcmluZ19zaXpl/QQBMFJpbmdFeHBvbmVudAABUHNlbGZfaW5jbHVzaW9uX2RlbGF5FQMBLE9wdGlvbjx1NjQ+AACtCwxQaW5kaXZfcGFsbGV0X21lbWJlcnMUdHlwZXM8Q29sbGVjdGlvbk93bmVyCBxBY2NvdW50AQQgTG9jYXRpb24B4AEIIEV4dGVybmFsBADgASBMb2NhdGlvbgAAABRMb2NhbAQABAEcQWNjb3VudAABAACxCxA0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eSBSaW5nTW9kZQABCChBcHBlbmRPbmx5AAAAIEZsZXhpYmxlAAEAALULDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBCARTAAAEAFUEARhWZWM8VD4AALkLAAAECAg4AL0LDFBpbmRpdl9wYWxsZXRfbWVtYmVycxR0eXBlcyBSaW5nUm9vdAQEVAAADAEQcm9vdMELATBNZW1iZXJzT2Y8VD4AASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAATBpbnRlcm1lZGlhdGXFCwFESW50ZXJtZWRpYXRlT2Y8VD4AAMELDCh2ZXJpZmlhYmxlEHJpbmdETWVtYmVyc0NvbW1pdG1lbnQAAwADAAAMAMULDCh2ZXJpZmlhYmxlEHJpbmcoTWVtYmVyc1NldAADUAMAAAwAyQsAAAQMCDhtCwDNCwxQaW5kaXZfcGFsbGV0X21lbWJlcnMUdHlwZXMcT2xkUm9vdAQEVAAACAEQcm9vdMELATBNZW1iZXJzT2Y8VD4AASxhcmNoaXZlZF9hdCgBDHU2NAAA0QsAAAQMCDg4ANULDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBCARTAAAEAFUEARhWZWM8VD4AANkLEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5KFJpbmdTdGF0dXMAAAwBFHRvdGFsOAEMdTMyAAEgaW5jbHVkZWQ4AQx1MzIAATxpbW11dGFibGVfc2luY2UVAwEsT3B0aW9uPHU2ND4AAN0LDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBOARTAAAEAGUEARhWZWM8VD4AAOELAAAECAgIAOULEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5MFJpbmdQb3NpdGlvbgABDChPbmJvYXJkaW5nCAEocXVldWVfcGFnZTgBJFBhZ2VJbmRleAABJHF1ZXVlZF9hdCgBDHU2NAAAACBJbmNsdWRlZAwBKHJpbmdfaW5kZXg4ASRSaW5nSW5kZXgAASRyaW5nX3BhZ2U4ASRQYWdlSW5kZXgAATRyaW5nX3Bvc2l0aW9uOAEMdTMyAAEAJFN1c3BlbmRlZAACAADpCxA0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eUBSaW5nTWVtYmVyc1N0YXRlAAAEARBtb2Rl7QsBQFJpbmdNdXRhdGlvbk1vZGUAAO0LEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5QFJpbmdNdXRhdGlvbk1vZGUAAQgoQXBwZW5kT25seQAAACBNdXRhdGluZwQADAEIdTgAAQAA8QsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEIBFMAAAQAVQQBGFZlYzxUPgAA9QsMUGluZGl2X3BhbGxldF9tZW1iZXJzGHBhbGxldBRFcnJvcgQEVAABcCROb3RNZW1iZXIAAATQVGhlIHN1cHBsaWVkIGlkZW50aWZpZXIgZG9lcyBub3QgcmVwcmVzZW50IGEgbWVtYmVyLhhOb1Jvb3QAAQREUmluZyBoYXMgbm8gcm9vdC4wSW52YWxpZFByb29mAAIEVFRoZSBwcm9vZiBpcyBpbnZhbGlkLihJbmNvbXBsZXRlAAMEBQFUaGUgcm9vdCBjYW5ub3QgYmUgZmluYWxpemVkIGFzIHRoZXJlIGFyZSBzdGlsbCB1bnB1c2hlZCBtZW1iZXJzLjhUb29NYW55TWVtYmVycwAEBIhUb28gbWFueSBtZW1iZXJzIGhhdmUgYmVlbiBwdXNoZWQuPEtleUFscmVhZHlJblVzZQAFBJRLZXkgYWxyZWFkeSBpbiB1c2UgYnkgYW5vdGhlciBtZW1iZXIuLEtleU5vdEZvdW5kAAYEoFRoZSBvbGQga2V5IHdhcyBub3QgZm91bmQgd2hlbiBleHBlY3RlZC4wQ291bGROb3RQdXNoAAcEkENvdWxkIG5vdCBwdXNoIG1lbWJlciBpbnRvIHRoZSByaW5nLixJbnZhbGlkUmluZwAIBKxSaW5nIGNhbm5vdCBiZSBtZXJnZWQgaWYgaXQncyB0aGUgdG9wIHJpbmcuSFN1c3BlbnNpb25zUGVuZGluZwAJBORSaW5nIGNhbm5vdCBiZSBidWlsdCB3aGlsZSB0aGVyZSBhcmUgc3VzcGVuc2lvbnMgcGVuZGluZy5cUmluZ0Fib3ZlTWVyZ2VUaHJlc2hvbGQACgTUUmluZyBjYW5ub3QgYmUgbWVyZ2VkIGlmIGl0J3Mgbm90IGJlbG93IDEvMiBjYXBhY2l0eS5ISW52YWxpZFN1c3BlbnNpb25zAAsEoFN1c3BlbnNpb24gaW5kaWNlcyBwcm92aWRlZCBhcmUgaW52YWxpZC5ATm9SZW1vdmFsU2Vzc2lvbgAMBC0BQSBtdXRhdGluZyBhY3Rpb24gd2FzIHF1ZXVlZCB3aGVuIHRoZXJlIHdhcyBubyByZW1vdmFsIHNlc3Npb24gaW4gcHJvZ3Jlc3MubENvdWxkTm90U3RhcnRSZW1vdmFsU2Vzc2lvbgANBJxBIHJlbW92YWwgc2Vzc2lvbiBjb3VsZCBub3QgYmUgc3RhcnRlZC5gUmVtb3ZhbFNlc3Npb25JblByb2dyZXNzAA4E6ENhbm5vdCBtZXJnZSByaW5ncyB3aGlsZSBhIHJlbW92YWwgc2Vzc2lvbiBpcyBpbiBwcm9ncmVzcy5MS2V5QWxyZWFkeVN1c3BlbmRlZAAPCFUBSW52YWxpZCBzdXNwZW5zaW9uIG9mIGEga2V5IGJlbG9uZ2luZyB0byBhIG1lbWJlciB3aG9zZSBpbmRleCBpbiB0aGUgcmluZyBoYXMgYWxyZWFkebhiZWVuIGluY2x1ZGVkIGluIHRoZSBwZW5kaW5nIHN1c3BlbnNpb25zIGxpc3QuVEludmFsaWRPbmJvYXJkaW5nU2l6ZQAQBOhUaGUgb25ib2FyZGluZyBzaXplIG11c3Qgbm90IGV4Y2VlZCB0aGUgbWF4aW11bSByaW5nIHNpemUuQEludmFsaWRNZW1iZXJLZXkAEQSsVGhlIG1lbWJlciBrZXkgaXMgbm90IHZhbGlkIGZvciB0aGUgY3J5cHRvLkhDb2xsZWN0aW9uTm90Rm91bmQAEgR4VGhlIGNvbGxlY3Rpb24gZG9lcyBub3QgZXhpc3QuXENvbGxlY3Rpb25BbHJlYWR5RXhpc3RzABMEeFRoZSBjb2xsZWN0aW9uIGFscmVhZHkgZXhpc3RzLkhUb29NYW55Q29sbGVjdGlvbnMAFASQVG9vIG1hbnkgY29sbGVjdGlvbnMgZm9yIHRoaXMgb3duZXIuaEludmFsaWRSaW5nU2l6ZUZvckZsZXhpYmxlABUEEQFGbGV4aWJsZSBjb2xsZWN0aW9ucyBtdXN0IHVzZSB0aGUgTWF4RmxleGlibGVSaW5nRXhwb25lbnQgcmluZyBzaXplLkxJbnZhbGlkUmluZ0V4cG9uZW50ABYEjFRoZSByaW5nIGV4cG9uZW50IGlzIG5vdCBzdXBwb3J0ZWQuTFByZW1hdHVyZU9uYm9hcmRpbmcAFwS0SW5zdWZmaWNpZW50IG1lbWJlcnMgaW4gdGhlIHF1ZXVlIHRvIG9uYm9hcmQubENvbGxlY3Rpb25NYXJrZWRGb3JEZWxldGlvbgAYBPRUaGUgY29sbGVjdGlvbiBpcyBtYXJrZWQgZm9yIGRlbGV0aW9uIGFuZCBjYW5ub3QgYmUgbW9kaWZpZWQuSE5vdENvbGxlY3Rpb25Pd25lcgAZBLhUaGUgY2FsbGVyIGlzIG5vdCB0aGUgb3duZXIgb2YgdGhlIGNvbGxlY3Rpb24uNE5vdE9uYm9hcmRpbmcAGgSoVGhlIG1lbWJlciBpcyBub3QgaW4gdGhlIG9uYm9hcmRpbmcgcXVldWUuOE5vdGhpbmdUb0J1aWxkABsEfFRoZXJlIGlzIG5vIHJpbmcgcm9vdCB0byBidWlsZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu+QsMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldChMb2NrZWRDb2luAAAIARhyZWFzb279CwEoTG9ja1JlYXNvbgABFHVudGlsKAEMdTY0AAD9CwxQaW5kaXZfcGFsbGV0X2NvaW5hZ2UYcGFsbGV0KExvY2tSZWFzb24AAQQ4RmFpbGVkRGlzcGF0Y2gEARxyZXRyaWVzDAEIdTgAAAAAAQwAAAQMdQM4CAAFDAAABAh1AzgACQwMUGluZGl2X3BhbGxldF9jb2luYWdlGHBhbGxldBRFcnJvcgQEVAABeFBNZW1iZXJLZXlBbHJlYWR5VXNlZAAAAEBJbnZhbGlkTWVtYmVyS2V5AAEANEludGVybmFsRXJyb3IAAgBcUmVjeWNsZXJBbHJlYWR5VW5sb2FkZWQAAwBQSW52YWxpZENvbnNvbGlkYXRpb24ABABMQ29uc29saWRhdGlvblRvb0JpZwAFADxDb2luVmFsdWVUb29CaWcABgBEQ29pblZhbHVlVG9vU21hbGwABwBYQ29pblZhbHVlSXNMZXNzVGhhbkZlZQAIAExDb2luVmFsdWVPdXRPZkJvdW5kAAkAYExvc3N5Q29pblZhbHVlQ29udmVyc2lvbgAKCCEBVGhlIGNvaW4gdmFsdWUgY2Fubm90IGJlIGxvc3NsZXNzbHkgY29udmVydGVkIHRvIGFuIGFzc2V0IGFtb3VudCBiZWNhdXNl9GBVbmRlcmx5aW5nQXNzZXRVbml0YCBpcyBub3QgZXZlbmx5IGRpdmlzaWJsZSBieSBgMl58dmFsdWV8YC5ESW52YWxpZEFsaWFzUHJvb2YACwBMTm9VbmxvYWRpbmdSZWN5Y2xlcgAMAFRQcm9vZkFuZEFsaWFzTWlzbWF0Y2gADQA4Tm90aGluZ1RvQnVpbGQADgAwVG9vTWFueVJpbmdzAA8AVEFkZHJlc3NBbHJlYWR5SGFzQ29pbgAQAFxJbnZhbGlkUHJvb2ZPZk93bmVyc2hpcAARACxFbXB0eUlucHV0cwASAEBSZWN5Y2xlck1pc21hdGNoABMECQFUaGUgZmVlIHJlY3ljbGVyIGluIHRoZSBvcmlnaW4gZG9lcyBub3QgbWF0Y2ggdGhlIGNhbGwncyByZWN5Y2xlci5gSW5zdWZmaWNpZW50VW5sb2FkRm9yRmVlABQEvFRoZSB0b3RhbCB1bmxvYWRlZCBhbW91bnQgaXMgbGVzcyB0aGFuIHRoZSBmZWUuREFsaWFzTm90UHJlbWFya2VkABUEOQFUaGUgZmlyc3QgYWxpYXMgd2FzIG5vdCBwcmUtbWFya2VkIGJ5IGV4dGVuc2lvbiAocmVxdWlyZWQgZm9yIEZyb21PdXRwdXQgZmVlKS5cSW52YWxpZFJlY3ljbGVyUmV2aXNpb24AFgRJAVRoZSByZWN5Y2xlciByZXZpc2lvbiBkb2VzIG5vdCBtYXRjaCAocmVjeWNsZXIgbWF5IG5vdCBleGlzdCBvciBoYXMgYmVlbiByZWJ1aWx0KS4wSW52YWxpZFNwbGl0ABcAREZyZXNoQ29pblJlcXVpcmVkABgEyFRoaXMgb3BlcmF0aW9uIHJlcXVpcmVzIGEgZnJlc2ggY29pbiAoYGFnZSA9PSAwYCkuaENhbm5vdENvbnZlcnROYXRpdmVUb0Fzc2V0ABkAaE1heEZlZU5vdEFsbG93ZWRGb3JQcmVwYWlkABoEvFdoZW4gdXNpbmcgUHJlcGFpZCBmZWUgbW9kZSwgbWF4X2ZlZSBtdXN0IGJlIDAuSE1heEZlZUV4Y2VlZHNJbnB1dAAbBKhUaGUgbWF4X2ZlZSBleGNlZWRzIHRoZSB0b3RhbCBpbnB1dCB2YWx1ZS40SW52YWxpZE1heEZlZQAcBNhUaGUgbWF4IGZlZSBhcmd1bWVudCBkb2Vzbid0IHNhdGlzZnkgdGhlIHJlcXVpcmVtZW50cy54Q2Fubm90Q3JlYXRlUmVjeWNsZXJDb2xsZWN0aW9uAB0EKQFUaGUgcmVjeWNsZXIgY29sbGVjdGlvbiBkb2VzIG5vdCBleGlzdCBhbmQgY291bGQgbm90IGJlIGNyZWF0ZWQgb24tZGVtYW5kLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4NDAAABAgJAwkDABEMBBhPcHRpb24EBFQB2QsBCBBOb25lAAAAEFNvbWUEANkLAAABAAAVDAQYT3B0aW9uBARUAXEDAQgQTm9uZQAAABBTb21lBABxAwAAAQAAGQwEGE9wdGlvbgQEVAF1AwEIEE5vbmUAAAAQU29tZQQAdQMAAAEAAB0MDHRpbmRpdl9wYWxsZXRfbWVtYmVyc19ub3RpZmllchR0eXBlczhTdWJzY3JpYmVySW5mbwQEVAAADAEsY29sbGVjdGlvbnNJBQEZAUJvdW5kZWRWZWM8KElkZW50aWZpZXIsIFJpbmdFeHBvbmVudCksIFQ6Ok1heENvbGxlY3Rpb25zUGVyU3Vic2NyaWJlcj4AAUhsYXN0X2luaXRfc2VxdWVuY2UoAThTZXF1ZW5jZU51bWJlcgABMHBhbGxldF9pbmRleAwBCHU4AAAhDAx0aW5kaXZfcGFsbGV0X21lbWJlcnNfbm90aWZpZXIUdHlwZXMsUGFnaW5nU3RhdGUELEJsb2NrTnVtYmVyATgADAEod3JpdGVfcGFnZS0DAQx1MTYAASRzZW5kX3BhZ2UtAwEMdTE2AAFEbGFzdF91cGRhdGVfYmxvY2s4ASxCbG9ja051bWJlcgAAJQwAAAQMLQMIOAApDAx0aW5kaXZfcGFsbGV0X21lbWJlcnNfbm90aWZpZXIUdHlwZXNAUGVuZGluZ0luaXRTdGF0ZQQEVAAAGAEsY29sbGVjdGlvbnNJBQEZAUJvdW5kZWRWZWM8KElkZW50aWZpZXIsIFJpbmdFeHBvbmVudCksIFQ6Ok1heENvbGxlY3Rpb25zUGVyU3Vic2NyaWJlcj4AAWBjdXJyZW50X2NvbGxlY3Rpb25faW5kZXg4AQx1MzIAAUBhZnRlcl9yaW5nX2luZGV4CQMBRE9wdGlvbjxSaW5nSW5kZXg+AAEgc2VxdWVuY2UoAThTZXF1ZW5jZU51bWJlcgABLHNvdXJjZV90aW1lKAEMdTY0AAEwcGFsbGV0X2luZGV4DAEIdTgAAC0MDHRpbmRpdl9wYWxsZXRfbWVtYmVyc19ub3RpZmllchR0eXBlc1hCYXRjaERpc3RyaWJ1dGlvblN0YXRlBCxCbG9ja051bWJlcgE4ABABIHNlcXVlbmNlKAE4U2VxdWVuY2VOdW1iZXIAASxzb3VyY2VfdGltZSgBDHU2NAABJHNlYWxlZF9hdDgBLEJsb2NrTnVtYmVyAAFUcmVtYWluaW5nX3N1YnNjcmliZXJzOAEMdTMyAAAxDAAABAicCAA1DAx0aW5kaXZfcGFsbGV0X21lbWJlcnNfbm90aWZpZXIYcGFsbGV0FEVycm9yBARUAAE0SFN1YnNjcmliZXJOb3RGb3VuZAAABFRTdWJzY3JpYmVyIG5vdCBmb3VuZC5EQWxyZWFkeVN1YnNjcmliZWQAAQRoU3Vic2NyaWJlciBhbHJlYWR5IGV4aXN0cy5IVG9vTWFueVN1YnNjcmliZXJzAAIEcE1heGltdW0gc3Vic2NyaWJlcnMgcmVhY2hlZC5YSW52YWxpZENvbGxlY3Rpb25zTGlzdAADBD0BQ29sbGVjdGlvbnMgbGlzdCBtdXN0IGJlIHNvcnRlZCBpbiBzdHJpY3RseSBhc2NlbmRpbmcgb3JkZXIgd2l0aCBubyBkdXBsaWNhdGVzLjhUb29NYW55VXBkYXRlcwAEBNBUb28gbWFueSByaW5nIHJvb3QgdXBkYXRlcyB0byBmaXQgaW4gYSBzaW5nbGUgYmF0Y2guNFhjbVNlbmRGYWlsZWQABQRAWENNIHNlbmQgZmFpbGVkLmROb3RTdWJzY3JpYmVkVG9Db2xsZWN0aW9uAAYE5FN1YnNjcmliZXIgaXMgbm90IHN1YnNjcmliZWQgdG8gdGhlIHJlcXVlc3RlZCBjb2xsZWN0aW9uLkBJbnZhbGlkUmluZ0luZGV4AAcEgFJpbmcgcm9vdCBpbmRleCBpcyBvdXQgb2YgcmFuZ2UuWEV4Y2VlZHNDaGFubmVsQ2FwYWNpdHkACAQBAVJlcXVlc3RlZCB1cGRhdGVzIGV4Y2VlZCB0aGUgc3Vic2NyaWJlcidzIEhSTVAgY2hhbm5lbCBjYXBhY2l0eS40Tm9CYXRjaEFjdGl2ZQAJBFxObyBhY3RpdmUgYmF0Y2ggZXhpc3RzLjROb1BlbmRpbmdJbml0AAoEuE5vIHBlbmRpbmcgaW5pdGlhbGl6YXRpb24gZm9yIHRoaXMgc3Vic2NyaWJlci5QUmVwbGF5Q29vbGRvd25BY3RpdmUACwQNAVJlcGxheSBjb29sZG93biBoYXMgbm90IGVsYXBzZWQgZm9yIHRoaXMgc3Vic2NyaWJlciBhbmQgY29sbGVjdGlvbi5ARW1wdHlSaW5nSW5kaWNlcwAMBORSZXBsYXkgcmVxdWVzdGVkIHdpdGggYW4gZW1wdHkgbGlzdCBvZiByaW5nIHJvb3QgaW5kaWNlcy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuOQwMjGluZGl2X3BhbGxldF9zdG9yYWdlX2luaXRpYWxpemF0aW9uGHBhbGxldCxPblBvbGxTdGF0ZQABICBJbmFjdGl2ZQAAADRDcmVhdGluZ0Fzc2V0AAEAQFhjbUZ1bmRzVHJhbnNmZXIAAgA4VmVyaWZ5aW5nRnVuZHMAAwAsRnVuZGluZ1BvdHMABABgU2NoZWR1bGluZ01vYlJ1bGVQYXlvdXRzAAUAWFNjaGVkdWxpbmdTY29yZVBheW91dHMABgBMT3BlbmluZ0FpcmRyb3BQb29scwAHAAA9DAygaW5kaXZfcGFsbGV0X3N0b3JhZ2VfaW5pdGlhbGl6YXRpb25fbGl0ZRhwYWxsZXQsT25Qb2xsU3RhdGUAAQggSW5hY3RpdmUAAAAkQ29tcGxldGVkAAEAAEEMDFBpbmRpdl9wYWxsZXRfYWlyZHJvcBhwYWxsZXQkUHJpemVQb29sDCRBY2NvdW50SWQBBBxBc3NldElkAeAwQXNzZXRCYWxhbmNlAcQAIAEIaWQ4ASxQcml6ZVBvb2xJZAABGHRhcmdldGUFASxQcml6ZVRhcmdldAABKGRpc3BhdGNoZXIEASRBY2NvdW50SWQAAShleHBpcmVzX2F0KAEMdTY0AAFAcHJpemVzX3JlbWFpbmluZzgBDHUzMgABLHByaXplX3ZhbHVlxAEwQXNzZXRCYWxhbmNlAAEgYXNzZXRfaWTgARxBc3NldElkAAFAdGFyZ2V0X3RocmVzaG9sZEUMARBVMjU2AABFDAg8cHJpbWl0aXZlX3R5cGVzEFUyNTYAAAQASQwBIFt1NjQ7IDRdAABJDAAAAwQAAAAoAE0MDFBpbmRpdl9wYWxsZXRfYWlyZHJvcBhwYWxsZXQURXJyb3IEBFQAATyIUHJpemVNdXN0QmVNb3JlT3JFcXVhbFRvTWluQmFsYW5jZQAABNxUaGUgcHJpemUgbXVzdCBiZSBhdCBsZWFzdCB0aGUgYXNzZXQncyBtaW5pbXVtIGJhbGFuY2UuPFZhbGlkaXR5VG9vTG9uZwABBJhWYWxpZGl0eSBleGNlZWRzIGBNYXhWYWxpZGl0eVNlY29uZHNgLkBWYWxpZGl0eVRvb1Nob3J0AAIEnFZhbGlkaXR5IGlzIGJlbG93IGBNaW5WYWxpZGl0eVNlY29uZHNgLiBOb1ByaXplcwADBJxgbnVtX3ByaXplc2AgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby5ESW5zdWZmaWNpZW50RnVuZHMABAToRnVuZGluZyBhY2NvdW50IGRvZXMgbm90IGNvdmVyIGBwcml6ZV92YWx1ZSAqIG51bV9wcml6ZXNgLmxUb29NYW55Q29uY3VycmVudFByaXplUG9vbHMABQSUYE1BWF9DT05DVVJSRU5UX1BSSVpFX1BPT0xTYCBpcyBmdWxsLjxOb1N1Y2hQcml6ZVBvb2wABgSEYHBvb2xfaWRgIGlzIG5vdCBpbiBgUHJpemVQb29sc2AuQFByaXplUG9vbEV4cGlyZWQABwS0UHJpemUgcG9vbCBoYXMgZXhwaXJlZCAoYG5vdyA+PSBleHBpcmVzX2F0YCkuSFByaXplUG9vbEV4aGF1c3RlZAAIBIxQcml6ZSBwb29sIGhhcyBubyByZW1haW5pbmcgcHJpemVzLjhBbHJlYWR5Q2xhaW1lZAAJBNRDYWxsZXIncyBpZGVudGl0eSBoYXMgYWxyZWFkeSBjbGFpbWVkIGZyb20gdGhpcyBwb29sLkRQb29sVmFsdWVPdmVyZmxvdwAKBPBBcml0aG1ldGljIG92ZXJmbG93IHdoZW4gY29tcHV0aW5nIHRoZSBwZXItcG9vbCBob2xkIGFtb3VudC4sV3JvbmdUYXJnZXQACwglAVtgQWlyZHJvcEFwaTo6Y2xhaW1fZ2FtZV9wcml6ZWBdIHdhcyBjYWxsZWQgb24gYSBwb29sIHdob3NlIHRhcmdldCBpcyBub3T0YEdhbWVQYXJ0aWNpcGFudHNgICh0aGUgdHJhaXQgbWV0aG9kIGlzIGZvciBnYW1lIHBvb2xzIG9ubHkpLiREaWROb3RXaW4ADATkQ2xhaW1hbnQncyB3aW5uZXItaGFzaCBpcyBub3QgYmVsb3cgdGhlIHBvb2wncyB0aHJlc2hvbGQuMEludmFsaWRQcm9vZgANBCEBUmluZy1tZW1iZXJzaGlwIHByb29mIGZhaWxlZCB0byB2ZXJpZnkgYWdhaW5zdCBgUEVPUExFX0xJVEVfSURFTlRJRklFUmAuNEFsaWFzTWlzbWF0Y2gADgQBAVN1cHBsaWVkIGBhbGlhc2AgZG9lcyBub3QgbWF0Y2ggdGhlIGFsaWFzIHRoZSBwcm9vZiB2ZXJpZmllcyB0by4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuUQwMRHBhbGxldF9taWdyYXRpb25zGHBhbGxldBRFcnJvcgQEVAABBBxPbmdvaW5nAAAE6FRoZSBvcGVyYXRpb24gY2Fubm90IGNvbXBsZXRlIHNpbmNlIHNvbWUgTUJNcyBhcmUgb25nb2luZy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuVQwIRHBhbGxldF9taWdyYXRpb25zME1ibUlzT25nb2luZwABDAxZZXMAAAAITm8AAQAUU3R1Y2sAAgAAWQwEGE9wdGlvbgQEVAFdDAEIEE5vbmUAAAAQU29tZQQAXQwAAAEAAF0MCERwYWxsZXRfbWlncmF0aW9ucyxNYm1Qcm9ncmVzcwAAEAFEY3VycmVudF9taWdyYXRpb244AQx1MzIAAUB0b3RhbF9taWdyYXRpb25zOAEMdTMyAAFcY3VycmVudF9taWdyYXRpb25fc3RlcHM4AQx1MzIAAWxjdXJyZW50X21pZ3JhdGlvbl9tYXhfc3RlcHMJAwEsT3B0aW9uPHUzMj4AAGEMCERwYWxsZXRfbWlncmF0aW9ucyRNYm1TdGF0dXMAAAwBHG9uZ29pbmdVDAEwTWJtSXNPbmdvaW5nAAEgcHJvZ3Jlc3NZDAFMT3B0aW9uPE1ibVByb2dyZXNzPgABIHByZWZpeGVzNAEwVmVjPFZlYzx1OD4+AABlDAhIc3BfY29uc2Vuc3VzX3Nsb3RzMFNsb3REdXJhdGlvbgAABAAoAQx1NjQAAGkMEChzcF9ydW50aW1lHGdlbmVyaWMUYmxvY2skTGF6eUJsb2NrCBhIZWFkZXIBXCRFeHRyaW5zaWMBpQcACAEYaGVhZGVyXAEYSGVhZGVyAAEoZXh0cmluc2ljc20MAVBWZWM8T3BhcXVlRXh0cmluc2ljPgAAbQwAAAJxDABxDAgoc3BfcnVudGltZTxPcGFxdWVFeHRyaW5zaWMAAAQAGAEcVmVjPHU4PgAAdQwIKHNwX3J1bnRpbWVYRXh0cmluc2ljSW5jbHVzaW9uTW9kZQABCDRBbGxFeHRyaW5zaWNzAAAANE9ubHlJbmhlcmVudHMAAQAAeQwIHHNwX2NvcmU4T3BhcXVlTWV0YWRhdGEAAAQAGAEcVmVjPHU4PgAAfQwEGE9wdGlvbgQEVAF5DAEIEE5vbmUAAAAQU29tZQQAeQwAAAEAAIEMDDRmcmFtZV9zdXBwb3J0OHZpZXdfZnVuY3Rpb25zOFZpZXdGdW5jdGlvbklkAAAIARhwcmVmaXjBAQEgW3U4OyAxNl0AARhzdWZmaXjBAQEgW3U4OyAxNl0AAIUMBBhSZXN1bHQIBFQBGARFAYkMAQgIT2sEABgAAAAADEVycgQAiQwAAAEAAIkMDDRmcmFtZV9zdXBwb3J0OHZpZXdfZnVuY3Rpb25zZFZpZXdGdW5jdGlvbkRpc3BhdGNoRXJyb3IAAQw4Tm90SW1wbGVtZW50ZWQAAAAgTm90Rm91bmQEAIEMAThWaWV3RnVuY3Rpb25JZAABABRDb2RlYwACAACNDAQYUmVzdWx0CARUAfEGBEUBkQwBCAhPawQA8QYAAAAADEVycgQAkQwAAAEAAJEMDChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5YFRyYW5zYWN0aW9uVmFsaWRpdHlFcnJvcgABCBxJbnZhbGlkBACVDAFISW52YWxpZFRyYW5zYWN0aW9uAAAAHFVua25vd24EAJkMAUhVbmtub3duVHJhbnNhY3Rpb24AAQAAlQwMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlISW52YWxpZFRyYW5zYWN0aW9uAAE0EENhbGwAAAAcUGF5bWVudAABABhGdXR1cmUAAgAUU3RhbGUAAwAgQmFkUHJvb2YABABEQW5jaWVudEJpcnRoQmxvY2sABQBERXhoYXVzdHNSZXNvdXJjZXMABgAYQ3VzdG9tBAAMAQh1OAAHADBCYWRNYW5kYXRvcnkACABMTWFuZGF0b3J5VmFsaWRhdGlvbgAJACRCYWRTaWduZXIACgBUSW5kZXRlcm1pbmF0ZUltcGxpY2l0AAsANFVua25vd25PcmlnaW4ADAAAmQwMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlIVW5rbm93blRyYW5zYWN0aW9uAAEMMENhbm5vdExvb2t1cAAAAExOb1Vuc2lnbmVkVmFsaWRhdG9yAAEAGEN1c3RvbQQADAEIdTgAAgAAnQwIMHNwX2luaGVyZW50czBJbmhlcmVudERhdGEAAAQBEGRhdGGhDAGUQlRyZWVNYXA8SW5oZXJlbnRJZGVudGlmaWVyLCBWZWM8dTg+PgAAoQwEIEJUcmVlTWFwCARLAb0BBFYBGAAEAKUMAAAApQwAAAKpDACpDAAABAi9ARgArQwIMHNwX2luaGVyZW50c1BDaGVja0luaGVyZW50c1Jlc3VsdAAADAEQb2thecgBEGJvb2wAASxmYXRhbF9lcnJvcsgBEGJvb2wAARhlcnJvcnOdDAEwSW5oZXJlbnREYXRhAACxDAwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eURUcmFuc2FjdGlvblNvdXJjZQABDBxJbkJsb2NrAAAAFExvY2FsAAEAIEV4dGVybmFsAAIAALUMBBhSZXN1bHQIBFQBuQwERQGRDAEICE9rBAC5DAAAAAAMRXJyBACRDAAAAQAAuQwMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlAVmFsaWRUcmFuc2FjdGlvbgAAFAEgcHJpb3JpdHkoAUxUcmFuc2FjdGlvblByaW9yaXR5AAEgcmVxdWlyZXM0AUxWZWM8VHJhbnNhY3Rpb25UYWc+AAEgcHJvdmlkZXM0AUxWZWM8VHJhbnNhY3Rpb25UYWc+AAEkbG9uZ2V2aXR5KAFQVHJhbnNhY3Rpb25Mb25nZXZpdHkAASRwcm9wYWdhdGXIARBib29sAAC9DAwoc3Bfc2Vzc2lvbixydW50aW1lX2FwaWhPcGFxdWVHZW5lcmF0ZWRTZXNzaW9uS2V5cwAACAEQa2V5cxgBHFZlYzx1OD4AARRwcm9vZhgBHFZlYzx1OD4AAMEMBBhPcHRpb24EBFQBxQwBCBBOb25lAAAAEFNvbWUEAMUMAAABAADFDAAAAskMAMkMAAAECBj5CADNDAxocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQUdHlwZXNMUnVudGltZURpc3BhdGNoSW5mbwgcQmFsYW5jZQHEGFdlaWdodAHVAQAMARh3ZWlnaHTVAQEYV2VpZ2h0AAEUY2xhc3NRBgE0RGlzcGF0Y2hDbGFzcwABLHBhcnRpYWxfZmVlxAEcQmFsYW5jZQAA0QwMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50FHR5cGVzKEZlZURldGFpbHMEHEJhbGFuY2UBxAAIATRpbmNsdXNpb25fZmVl1QwBdE9wdGlvbjxJbmNsdXNpb25GZWU8QmFsYW5jZT4+AAEMdGlwxAEcQmFsYW5jZQAA1QwEGE9wdGlvbgQEVAHZDAEIEE5vbmUAAAAQU29tZQQA2QwAAAEAANkMDGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudBR0eXBlczBJbmNsdXNpb25GZWUEHEJhbGFuY2UBxAAMASBiYXNlX2ZlZcQBHEJhbGFuY2UAARxsZW5fZmVlxAEcQmFsYW5jZQABTGFkanVzdGVkX3dlaWdodF9mZWXEARxCYWxhbmNlAADdDAQYUmVzdWx0CARUAeEMBEUB5QwBCAhPawQA4QwAAAAADEVycgQA5QwAAAEAAOEMAAACEQMA5QwMQHhjbV9ydW50aW1lX2FwaXMQZmVlcxRFcnJvcgABGDRVbmltcGxlbWVudGVkAAAAZFZlcnNpb25lZENvbnZlcnNpb25GYWlsZWQAAQBMV2VpZ2h0Tm90Q29tcHV0YWJsZQACAExVbmhhbmRsZWRYY21WZXJzaW9uAAMANEFzc2V0Tm90Rm91bmQABAAoVW5yb3V0YWJsZQAFAADpDAQYUmVzdWx0CARUAdUBBEUB5QwBCAhPawQA1QEAAAAADEVycgQA5QwAAAEAAO0MBBhSZXN1bHQIBFQBxARFAeUMAQgIT2sEAMQAAAAADEVycgQA5QwAAAEAAPEMBBhSZXN1bHQIBFQB2QIERQHlDAEICE9rBADZAgAAAAAMRXJyBADlDAAAAQAA9QwEGFJlc3VsdAgEVAH5DARFAR0NAQgIT2sEAPkMAAAAAAxFcnIEAB0NAAABAAD5DAxAeGNtX3J1bnRpbWVfYXBpcxxkcnlfcnVuRENhbGxEcnlSdW5FZmZlY3RzBBRFdmVudAFFBgAQAUBleGVjdXRpb25fcmVzdWx0/QwBaERpc3BhdGNoUmVzdWx0V2l0aFBvc3RJbmZvAAE4ZW1pdHRlZF9ldmVudHMJDQEoVmVjPEV2ZW50PgABJGxvY2FsX3hjbQ0NAWBPcHRpb248VmVyc2lvbmVkWGNtPCgpPj4AAThmb3J3YXJkZWRfeGNtcxENAbxWZWM8KFZlcnNpb25lZExvY2F0aW9uLCBWZWM8VmVyc2lvbmVkWGNtPCgpPj4pPgAA/QwEGFJlc3VsdAgEVAEBDQRFAQUNAQgIT2sEAAENAAAAAAxFcnIEAAUNAAABAAABDQw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQb3N0RGlzcGF0Y2hJbmZvAAAIATRhY3R1YWxfd2VpZ2h0pQIBOE9wdGlvbjxXZWlnaHQ+AAEgcGF5c19mZWVVBgEQUGF5cwAABQ0IKHNwX3J1bnRpbWVkRGlzcGF0Y2hFcnJvcldpdGhQb3N0SW5mbwQQSW5mbwEBDQAIASRwb3N0X2luZm8BDQEQSW5mbwABFGVycm9yWQYBNERpc3BhdGNoRXJyb3IAAAkNAAACRQYADQ0EGE9wdGlvbgQEVAGVAQEIEE5vbmUAAAAQU29tZQQAlQEAAAEAABENAAACFQ0AFQ0AAAQISQEZDQAZDQAAApUBAB0NDEB4Y21fcnVudGltZV9hcGlzHGRyeV9ydW4URXJyb3IAAQg0VW5pbXBsZW1lbnRlZAAAAGRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEAACENBBhSZXN1bHQIBFQBJQ0ERQEdDQEICE9rBAAlDQAAAAAMRXJyBAAdDQAAAQAAJQ0MQHhjbV9ydW50aW1lX2FwaXMcZHJ5X3J1bkBYY21EcnlSdW5FZmZlY3RzBBRFdmVudAFFBgAMAUBleGVjdXRpb25fcmVzdWx01QYBHE91dGNvbWUAAThlbWl0dGVkX2V2ZW50cwkNAShWZWM8RXZlbnQ+AAE4Zm9yd2FyZGVkX3hjbXMRDQG8VmVjPChWZXJzaW9uZWRMb2NhdGlvbiwgVmVjPFZlcnNpb25lZFhjbTwoKT4+KT4AACkNBBhSZXN1bHQIBFQBBARFAS0NAQgIT2sEAAQAAAAADEVycgQALQ0AAAEAAC0NDEB4Y21fcnVudGltZV9hcGlzLGNvbnZlcnNpb25zFEVycm9yAAEILFVuc3VwcG9ydGVkAAAAZFZlcnNpb25lZENvbnZlcnNpb25GYWlsZWQAAQAAMQ0IXGN1bXVsdXNfcHJpbWl0aXZlc19jb3JlNENvbGxhdGlvbkluZm8AABgBPHVwd2FyZF9tZXNzYWdlczQBSFZlYzxVcHdhcmRNZXNzYWdlPgABTGhvcml6b250YWxfbWVzc2FnZXMlCAFgVmVjPE91dGJvdW5kSHJtcE1lc3NhZ2U+AAFMbmV3X3ZhbGlkYXRpb25fY29kZTUNAYxPcHRpb248cmVsYXlfY2hhaW46OlZhbGlkYXRpb25Db2RlPgABbHByb2Nlc3NlZF9kb3dud2FyZF9tZXNzYWdlczgBDHUzMgABOGhybXBfd2F0ZXJtYXJrOAFgcmVsYXlfY2hhaW46OkJsb2NrTnVtYmVyAAEkaGVhZF9kYXRhTAEgSGVhZERhdGEAADUNBBhPcHRpb24EBFQBOQ0BCBBOb25lAAAAEFNvbWUEADkNAAABAAA5DQx0cG9sa2Fkb3RfcGFyYWNoYWluX3ByaW1pdGl2ZXMocHJpbWl0aXZlczhWYWxpZGF0aW9uQ29kZQAABAAYARxWZWM8dTg+AAA9DQQYUmVzdWx0CARUARAERQFpBwEICE9rBAAQAAAAAAxFcnIEAGkHAAABAABBDQQYT3B0aW9uBARUAWkHAQgQTm9uZQAAABBTb21lBABpBwAAAQAARQ0AAAJpBwBJDQhkbmV4dF9wZW9wbGVfcGFzZW9fcnVudGltZTBSdW50aW1lRXJyb3IAAXwYU3lzdGVtBACZBwFwZnJhbWVfc3lzdGVtOjpFcnJvcjxSdW50aW1lPgAAADxQYXJhY2hhaW5TeXN0ZW0EADUIAbxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtOjpFcnJvcjxSdW50aW1lPgABACBCYWxhbmNlcwQAbQgBfHBhbGxldF9iYWxhbmNlczo6RXJyb3I8UnVudGltZT4ACgBET3JpZ2luUmVzdHJpY3Rpb24EAIEIAbxpbmRpdl9wYWxsZXRfb3JpZ2luX3Jlc3RyaWN0aW9uOjpFcnJvcjxSdW50aW1lPgANABhBc3NldHMEAK0IAXRwYWxsZXRfYXNzZXRzOjpFcnJvcjxSdW50aW1lPgAOADBBc3NldHNIb2xkZXIEAL0IAZBwYWxsZXRfYXNzZXRzX2hvbGRlcjo6RXJyb3I8UnVudGltZT4ADwAkQXNzZXRSYXRlBADBCAGEcGFsbGV0X2Fzc2V0X3JhdGU6OkVycm9yPFJ1bnRpbWU+ABAARENvbGxhdG9yU2VsZWN0aW9uBADZCAGkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbjo6RXJyb3I8UnVudGltZT4AFQAcU2Vzc2lvbgQA/QgBeHBhbGxldF9zZXNzaW9uOjpFcnJvcjxSdW50aW1lPgAWACRYY21wUXVldWUEADkJAaRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlOjpFcnJvcjxSdW50aW1lPgAeACxQb2xrYWRvdFhjbQQAoQkBaHBhbGxldF94Y206OkVycm9yPFJ1bnRpbWU+AB8AME1lc3NhZ2VRdWV1ZQQAwQkBkHBhbGxldF9tZXNzYWdlX3F1ZXVlOjpFcnJvcjxSdW50aW1lPgAiABxVdGlsaXR5BADFCQF4cGFsbGV0X3V0aWxpdHk6OkVycm9yPFJ1bnRpbWU+ACgAIE11bHRpc2lnBADVCQF8cGFsbGV0X211bHRpc2lnOjpFcnJvcjxSdW50aW1lPgApABBTdWRvBADZCQFscGFsbGV0X3N1ZG86OkVycm9yPFJ1bnRpbWU+ACoAFFByb3h5BAD9CQFwcGFsbGV0X3Byb3h5OjpFcnJvcjxSdW50aW1lPgAsACBJZGVudGl0eQQATQoBlGluZGl2X3BhbGxldF9pZGVudGl0eTo6RXJyb3I8UnVudGltZT4AMgAYUGVvcGxlBABVCgGMaW5kaXZfcGFsbGV0X3Blb3BsZTo6RXJyb3I8UnVudGltZT4AMwAcTW9iUnVsZQQAlQoBlGluZGl2X3BhbGxldF9tb2JfcnVsZTo6RXJyb3I8UnVudGltZT4ANAAoUHJvb2ZPZkluawQA0QoBpGluZGl2X3BhbGxldF9wcm9vZl9vZl9pbms6OkVycm9yPFJ1bnRpbWU+ADUAEEdhbWUEAB0LAYRpbmRpdl9wYWxsZXRfZ2FtZTo6RXJyb3I8UnVudGltZT4ANwAUU2NvcmUEAEkLAYhpbmRpdl9wYWxsZXRfc2NvcmU6OkVycm9yPFJ1bnRpbWU+ADgAIER1bW15RGltBABRCwGYaW5kaXZfcGFsbGV0X2R1bW15X2RpbTo6RXJyb3I8UnVudGltZT4AOwAoUGVvcGxlTGl0ZQQAXQsBoGluZGl2X3BhbGxldF9wZW9wbGVfbGl0ZTo6RXJyb3I8UnVudGltZT4APgAkUmVzb3VyY2VzBACRCwGYaW5kaXZfcGFsbGV0X3Jlc291cmNlczo6RXJyb3I8UnVudGltZT4APwA0Q2h1bmtzTWFuYWdlcgQApQsBrGluZGl2X3BhbGxldF9jaHVua3NfbWFuYWdlcjo6RXJyb3I8UnVudGltZT4AQAAcTWVtYmVycwQA9QsBkGluZGl2X3BhbGxldF9tZW1iZXJzOjpFcnJvcjxSdW50aW1lPgBDABxDb2luYWdlBAAJDAGQaW5kaXZfcGFsbGV0X2NvaW5hZ2U6OkVycm9yPFJ1bnRpbWU+AEQAPE1lbWJlcnNOb3RpZmllcgQANQwBtGluZGl2X3BhbGxldF9tZW1iZXJzX25vdGlmaWVyOjpFcnJvcjxSdW50aW1lPgBFABxBaXJkcm9wBABNDAGQaW5kaXZfcGFsbGV0X2FpcmRyb3A6OkVycm9yPFJ1bnRpbWU+AD0AUE11bHRpQmxvY2tNaWdyYXRpb25zBABRDAGEcGFsbGV0X21pZ3JhdGlvbnM6OkVycm9yPFJ1bnRpbWU+AGIAALAYU3lzdGVtARhTeXN0ZW1QHEFjY291bnQBAQQCBC0GQQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAToIFRoZSBmdWxsIGFjY291bnQgaW5mb3JtYXRpb24gZm9yIGEgcGFydGljdWxhciBhY2NvdW50IElELgA4RXh0cmluc2ljQ291bnQAADgEAAS4IFRvdGFsIGV4dHJpbnNpY3MgY291bnQgZm9yIHRoZSBjdXJyZW50IGJsb2NrLgBASW5oZXJlbnRzQXBwbGllZAEAyAQABKQgV2hldGhlciBhbGwgaW5oZXJlbnRzIGhhdmUgYmVlbiBhcHBsaWVkLgAsQmxvY2tXZWlnaHQBADkGGAAAAAAAAASIIFRoZSBjdXJyZW50IHdlaWdodCBmb3IgdGhlIGJsb2NrLgAkQmxvY2tTaXplAAA4BAAMsCBUb3RhbCBzaXplIChpbiBieXRlcykgb2YgdGhlIGN1cnJlbnQgYmxvY2suAMggVHJhY2tzIHRoZSBzaXplIG9mIHRoZSBoZWFkZXIgYW5kIGFsbCBleHRyaW5zaWNzLgAkQmxvY2tIYXNoAQEEBTg8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJggTWFwIG9mIGJsb2NrIG51bWJlcnMgdG8gYmxvY2sgaGFzaGVzLgA0RXh0cmluc2ljRGF0YQEBBAU4GAQABD0BIEV4dHJpbnNpY3MgZGF0YSBmb3IgdGhlIGN1cnJlbnQgYmxvY2sgKG1hcHMgYW4gZXh0cmluc2ljJ3MgaW5kZXggdG8gaXRzIGRhdGEpLgAYTnVtYmVyAQA4EAAAAAAECQEgVGhlIGN1cnJlbnQgYmxvY2sgbnVtYmVyIGJlaW5nIHByb2Nlc3NlZC4gU2V0IGJ5IGBleGVjdXRlX2Jsb2NrYC4AKFBhcmVudEhhc2gBADyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEcCBIYXNoIG9mIHRoZSBwcmV2aW91cyBibG9jay4AGERpZ2VzdAEAZAQABPAgRGlnZXN0IG9mIHRoZSBjdXJyZW50IGJsb2NrLCBhbHNvIHBhcnQgb2YgdGhlIGJsb2NrIGhlYWRlci4AGEV2ZW50cwEAPQYEABygIEV2ZW50cyBkZXBvc2l0ZWQgZm9yIHRoZSBjdXJyZW50IGJsb2NrLgAdASBOT1RFOiBUaGUgaXRlbSBpcyB1bmJvdW5kIGFuZCBzaG91bGQgdGhlcmVmb3JlIG5ldmVyIGJlIHJlYWQgb24gY2hhaW4u0CBJdCBjb3VsZCBvdGhlcndpc2UgaW5mbGF0ZSB0aGUgUG9WIHNpemUgb2YgYSBibG9jay4ALQEgRXZlbnRzIGhhdmUgYSBsYXJnZSBpbi1tZW1vcnkgc2l6ZS4gQm94IHRoZSBldmVudHMgdG8gbm90IGdvIG91dC1vZi1tZW1vcnn8IGp1c3QgaW4gY2FzZSBzb21lb25lIHN0aWxsIHJlYWRzIHRoZW0gZnJvbSB3aXRoaW4gdGhlIHJ1bnRpbWUuAChFdmVudENvdW50AQA4EAAAAAAEuCBUaGUgbnVtYmVyIG9mIGV2ZW50cyBpbiB0aGUgYEV2ZW50czxUPmAgbGlzdC4ALEV2ZW50VG9waWNzAQEEAjxZBwQAKCUBIE1hcHBpbmcgYmV0d2VlbiBhIHRvcGljIChyZXByZXNlbnRlZCBieSBUOjpIYXNoKSBhbmQgYSB2ZWN0b3Igb2YgaW5kZXhlc5Qgb2YgZXZlbnRzIGluIHRoZSBgPEV2ZW50czxUPj5gIGxpc3QuAFEBIEFsbCB0b3BpYyB2ZWN0b3JzIGhhdmUgZGV0ZXJtaW5pc3RpYyBzdG9yYWdlIGxvY2F0aW9ucyBkZXBlbmRpbmcgb24gdGhlIHRvcGljLiBUaGlzRQEgYWxsb3dzIGxpZ2h0LWNsaWVudHMgdG8gbGV2ZXJhZ2UgdGhlIGNoYW5nZXMgdHJpZSBzdG9yYWdlIHRyYWNraW5nIG1lY2hhbmlzbSBhbmTkIGluIGNhc2Ugb2YgY2hhbmdlcyBmZXRjaCB0aGUgbGlzdCBvZiBldmVudHMgb2YgaW50ZXJlc3QuAFkBIFRoZSB2YWx1ZSBoYXMgdGhlIHR5cGUgYChCbG9ja051bWJlckZvcjxUPiwgRXZlbnRJbmRleClgIGJlY2F1c2UgaWYgd2UgdXNlZCBvbmx5IGp1c3RNASB0aGUgYEV2ZW50SW5kZXhgIHRoZW4gaW4gY2FzZSBpZiB0aGUgdG9waWMgaGFzIHRoZSBzYW1lIGNvbnRlbnRzIG9uIHRoZSBuZXh0IGJsb2NrAQEgbm8gbm90aWZpY2F0aW9uIHdpbGwgYmUgdHJpZ2dlcmVkIHRodXMgdGhlIGV2ZW50IG1pZ2h0IGJlIGxvc3QuAEhMYXN0UnVudGltZVVwZ3JhZGUAAGEHBAAEVQEgU3RvcmVzIHRoZSBgc3BlY192ZXJzaW9uYCBhbmQgYHNwZWNfbmFtZWAgb2Ygd2hlbiB0aGUgbGFzdCBydW50aW1lIHVwZ3JhZGUgaGFwcGVuZWQuAERCbG9ja3NUaWxsVXBncmFkZQAADAQABOwgTnVtYmVyIG9mIGJsb2NrcyB0aWxsIHRoZSBwZW5kaW5nIGNvZGUgdXBncmFkZSBpcyBhcHBsaWVkLgBUVXBncmFkZWRUb1UzMlJlZkNvdW50AQDIBAAETQEgVHJ1ZSBpZiB3ZSBoYXZlIHVwZ3JhZGVkIHNvIHRoYXQgYHR5cGUgUmVmQ291bnRgIGlzIGB1MzJgLiBGYWxzZSAoZGVmYXVsdCkgaWYgbm90LgBgVXBncmFkZWRUb1RyaXBsZVJlZkNvdW50AQDIBAAIXQEgVHJ1ZSBpZiB3ZSBoYXZlIHVwZ3JhZGVkIHNvIHRoYXQgQWNjb3VudEluZm8gY29udGFpbnMgdGhyZWUgdHlwZXMgb2YgYFJlZkNvdW50YC4gRmFsc2VIIChkZWZhdWx0KSBpZiBub3QuADhFeGVjdXRpb25QaGFzZQAAUQcEAASIIFRoZSBleGVjdXRpb24gcGhhc2Ugb2YgdGhlIGJsb2NrLgBEQXV0aG9yaXplZFVwZ3JhZGUAAG0HBAAEuCBgU29tZWAgaWYgYSBjb2RlIHVwZ3JhZGUgaGFzIGJlZW4gYXV0aG9yaXplZC4AYEV4dHJpbnNpY1dlaWdodFJlY2xhaW1lZAEA1QEIAAAcoCBUaGUgd2VpZ2h0IHJlY2xhaW1lZCBmb3IgdGhlIGV4dHJpbnNpYy4AIQEgVGhpcyBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgdW50aWwgdGhlIGVuZCBvZiB0aGUgZXh0cmluc2ljIGV4ZWN1dGlvbi4hASBNb3JlIHByZWNpc2VseSB0aGlzIGluZm9ybWF0aW9uIGlzIHJlbW92ZWQgaW4gYG5vdGVfYXBwbGllZF9leHRyaW5zaWNgLgBxASBMb2dpYyBkb2luZyBzb21lIHBvc3QgZGlzcGF0Y2ggd2VpZ2h0IHJlZHVjdGlvbiBtdXN0IHVwZGF0ZSB0aGlzIHN0b3JhZ2UgdG8gYXZvaWQgZHVwbGljYXRlLCByZWR1Y3Rpb24uAAEkAAFJBgAYMEJsb2NrV2VpZ2h0c3EHiQEHAPIFKgEACwAgSqnRAQIAgAICZc0dAAELwFYN70UBAgDAAQELAJj3Pl0BAgDgAQEAAAJlzR0AAQvA3l9ZugECAGACAQsAIEqp0QECAIACAQcAiFJqdAIAoAACZc0dAAAAAATQIEJsb2NrICYgZXh0cmluc2ljcyB3ZWlnaHRzOiBiYXNlIHZhbHVlcyBhbmQgbGltaXRzLgAsQmxvY2tMZW5ndGh9BzQAADwAAABQAAAAUAAABKggVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgYmxvY2sgKGluIGJ5dGVzKS4AOEJsb2NrSGFzaENvdW50OBAAEAAABFUBIE1heGltdW0gbnVtYmVyIG9mIGJsb2NrIG51bWJlciB0byBibG9jayBoYXNoIG1hcHBpbmdzIHRvIGtlZXAgKG9sZGVzdCBwcnVuZWQgZmlyc3QpLgAgRGJXZWlnaHSFB0BAeH0BAAAAAADh9QUAAAAABAkBIFRoZSB3ZWlnaHQgb2YgcnVudGltZSBkYXRhYmFzZSBvcGVyYXRpb25zIHRoZSBydW50aW1lIGNhbiBpbnZva2UuABxWZXJzaW9uiQfJBERuZXh0LXBlb3BsZS1wYXNlb0RuZXh0LXBlb3BsZS1wYXNlbwEAAABJQg8AAAAAAFTdcY1cxTJi1AEAAAAE5wUhoNPS+AEAAADXvdiicsoNZQIAAADfastomQdgmwUAAAA345f8fJH15AIAAADM2d5jlsiZygEAAABA/jrUAfiVmgYAAADSvJiX7tCPFQMAAAD3iyeL5T9FTAIAAACrPAVyKR/riwIAAAC8nYmQT1uSPwEAAAA3yLsTUKmiqAQAAADz/xTVq1JwWQMAAABv9S7oWObFvQIAAACRscixYyjrkgIAAACf+1BapzjWnAEAAADQuse+SmsJIAEAAACSh/sOAhvIVAEAAACEO2+M7ICYxwEAAADqk+Pxbz1pYgMAAAD7xXe510fv1gEAAAABAAAAAQSEIEdldCB0aGUgY2hhaW4ncyBpbi1jb2RlIHZlcnNpb24uAChTUzU4UHJlZml4LQMIKgAUqCBUaGUgZGVzaWduYXRlZCBTUzU4IHByZWZpeCBvZiB0aGlzIGNoYWluLgA5ASBUaGlzIHJlcGxhY2VzIHRoZSAic3M1OEZvcm1hdCIgcHJvcGVydHkgZGVjbGFyZWQgaW4gdGhlIGNoYWluIHNwZWMuIFJlYXNvbiBpczEBIHRoYXQgdGhlIHJ1bnRpbWUgc2hvdWxkIGtub3cgYWJvdXQgdGhlIHByZWZpeCBpbiBvcmRlciB0byBtYWtlIHVzZSBvZiBpdCBhc3AgYW4gaWRlbnRpZmllciBvZiB0aGUgY2hhaW4uAAGZBwAcLFJ1bnRpbWVDYWxsIASMIFRoZSBhZ2dyZWdhdGVkIGBSdW50aW1lQ2FsbGAgdHlwZS4UTm9uY2U4BEkBIFRoaXMgc3RvcmVzIHRoZSBudW1iZXIgb2YgcHJldmlvdXMgdHJhbnNhY3Rpb25zIGFzc29jaWF0ZWQgd2l0aCBhIHNlbmRlciBhY2NvdW50LhBIYXNoPASYIFRoZSBvdXRwdXQgb2YgdGhlIGBIYXNoaW5nYCBmdW5jdGlvbi4cSGFzaGluZ50HBCEBIFRoZSBoYXNoaW5nIHN5c3RlbSAoYWxnb3JpdGhtKSBiZWluZyB1c2VkIGluIHRoZSBydW50aW1lIChlLmcuIEJsYWtlMikuJEFjY291bnRJZAQEyCBUaGUgdXNlciBhY2NvdW50IGlkZW50aWZpZXIgdHlwZSBmb3IgdGhlIHJ1bnRpbWUuFEJsb2NroQcIYQEgVGhlIEJsb2NrIHR5cGUgdXNlZCBieSB0aGUgcnVudGltZS4gVGhpcyBpcyB1c2VkIGJ5IGBjb25zdHJ1Y3RfcnVudGltZWAgdG8gcmV0cmlldmUgdGhlzCBleHRyaW5zaWNzIG9yIG90aGVyIGJsb2NrIHNwZWNpZmljIGRhdGEgYXMgbmVlZGVkLixBY2NvdW50RGF0YTEGCGEBIERhdGEgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIGFuIGFjY291bnQgKG90aGVyIHRoYW4gbm9uY2UvdHJhbnNhY3Rpb24gY291bnRlciwgd2hpY2ggdGhpc2QgcGFsbGV0IGRvZXMgcmVnYXJkbGVzcykuAAAAADxQYXJhY2hhaW5TeXN0ZW0BPFBhcmFjaGFpblN5c3RlbXw8QmxvY2tXZWlnaHRNb2RlAAC5BwQAGHwgVGhlIGN1cnJlbnQgYmxvY2sgd2VpZ2h0IG1vZGUuAHUBIFRoaXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hhdCBpcyB0aGUgbWF4aW11bSBhbGxvd2VkIGJsb2NrIHdlaWdodCwgZm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlSCBbYGJsb2NrX3dlaWdodGBdLgAlASBLaWxsZWQgaW4gW2BTZWxmOjpvbl9pbml0aWFsaXplYF0gYW5kIHNldCBieSB0aGUgW2BibG9ja193ZWlnaHRgXSBsb2dpYy4ARFByZXZpb3VzQ29yZUNvdW50AAC9BwQADAUBIFRoZSBjb3JlIGNvdW50IGF2YWlsYWJsZSB0byB0aGUgcGFyYWNoYWluIGluIHRoZSBwcmV2aW91cyBibG9jay4AdQEgVGhpcyBpcyBtYWlubHkgdXNlZCBmb3Igb2ZmY2hhaW4gZnVuY3Rpb25hbGl0eSB0byBjYWxjdWxhdGUgdGhlIGNvcnJlY3QgdGFyZ2V0IGJsb2NrIHdlaWdodC4ARFVuaW5jbHVkZWRTZWdtZW50AQDBBwQAGEkBIExhdGVzdCBpbmNsdWRlZCBibG9jayBkZXNjZW5kYW50cyB0aGUgcnVudGltZSBhY2NlcHRlZC4gSW4gb3RoZXIgd29yZHMsIHRoZXNlIGFyZWEBIGFuY2VzdG9ycyBvZiB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyBibG9jayB3aGljaCBoYXZlIG5vdCBiZWVuIGluY2x1ZGVkIGluIHRoZSBvYnNlcnZlZEwgcmVsYXktY2hhaW4gc3RhdGUuAHUBIFRoZSBzZWdtZW50IGxlbmd0aCBpcyBsaW1pdGVkIGJ5IHRoZSBjYXBhY2l0eSByZXR1cm5lZCBmcm9tIHRoZSBbYENvbnNlbnN1c0hvb2tgXSBjb25maWd1cmVkPCBpbiB0aGUgcGFsbGV0LgBsQWdncmVnYXRlZFVuaW5jbHVkZWRTZWdtZW50AADpBwQADGkBIFN0b3JhZ2UgZmllbGQgdGhhdCBrZWVwcyB0cmFjayBvZiBiYW5kd2lkdGggdXNlZCBieSB0aGUgdW5pbmNsdWRlZCBzZWdtZW50IGFsb25nIHdpdGggdGhlLQEgbGF0ZXN0IEhSTVAgd2F0ZXJtYXJrLiBVc2VkIGZvciBsaW1pdGluZyB0aGUgYWNjZXB0YW5jZSBvZiBuZXcgYmxvY2tzIHdpdGiQIHJlc3BlY3QgdG8gcmVsYXkgY2hhaW4gY29uc3RyYWludHMuAFRQZW5kaW5nVmFsaWRhdGlvbkNvZGUBABgEABhZASBJbiBjYXNlIG9mIGEgc2NoZWR1bGVkIHVwZ3JhZGUsIHRoaXMgc3RvcmFnZSBmaWVsZCBjb250YWlucyB0aGUgdmFsaWRhdGlvbiBjb2RlIHRvIGJlJCBhcHBsaWVkLgA9ASBBcyBzb29uIGFzIHRoZSByZWxheSBjaGFpbiBnaXZlcyB1cyB0aGUgZ28tYWhlYWQgc2lnbmFsLCB3ZSB3aWxsIG92ZXJ3cml0ZSB0aGVlASBbYDpwZW5kaW5nX2NvZGVgXVtzcF9jb3JlOjpzdG9yYWdlOjp3ZWxsX2tub3duX2tleXM6OlBFTkRJTkdfQ09ERV0gd2hpY2ggd2lsbCByZXN1bHQgdGhldQEgbmV4dCBibG9jayB0byBiZSBwcm9jZXNzZWQgd2l0aCB0aGUgbmV3IHZhbGlkYXRpb24gY29kZS4gVGhpcyBjb25jbHVkZXMgdGhlIHVwZ3JhZGUgcHJvY2Vzcy4ARE5ld1ZhbGlkYXRpb25Db2RlAAAYBAAUXQEgVmFsaWRhdGlvbiBjb2RlIHRoYXQgaXMgc2V0IGJ5IHRoZSBwYXJhY2hhaW4gYW5kIGlzIHRvIGJlIGNvbW11bmljYXRlZCB0byBjb2xsYXRvciBhbmR4IGNvbnNlcXVlbnRseSB0aGUgcmVsYXktY2hhaW4uAGUBIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBvZiBlYWNoIG5ldyBibG9jayBpZiBubyBvdGhlciBwYWxsZXQgYWxyZWFkeSBzZXQsIHRoZSB2YWx1ZS4AOFZhbGlkYXRpb25EYXRhAABIBAAM0CBUaGUgW2BQZXJzaXN0ZWRWYWxpZGF0aW9uRGF0YWBdIHNldCBmb3IgdGhpcyBibG9jay4AcQEgVGhpcyB2YWx1ZSBpcyBleHBlY3RlZCB0byBiZSBzZXQgb25seSBvbmNlIGJ5IHRoZSBbYFBhbGxldDo6c2V0X3ZhbGlkYXRpb25fZGF0YWBdIGluaGVyZW50LgBQRGlkU2V0VmFsaWRhdGlvbkNvZGUBAMgEAATgIFdlcmUgdGhlIHZhbGlkYXRpb24gZGF0YSBzZXQgdG8gbm90aWZ5IHRoZSByZWxheSBjaGFpbj8AZExhc3RSZWxheUNoYWluQmxvY2tOdW1iZXIBADgQAAAAAAwdASBUaGUgcmVsYXkgY2hhaW4gYmxvY2sgbnVtYmVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgbGFzdCBwYXJhY2hhaW4gYmxvY2suAIggVGhpcyBpcyB1cGRhdGVkIGluIGBvbl9maW5hbGl6ZWAuAGBVcGdyYWRlUmVzdHJpY3Rpb25TaWduYWwBAO0HBAAcdQEgQW4gb3B0aW9uIHdoaWNoIGluZGljYXRlcyBpZiB0aGUgcmVsYXktY2hhaW4gcmVzdHJpY3RzIHNpZ25hbGxpbmcgYSB2YWxpZGF0aW9uIGNvZGUgdXBncmFkZS5hASBJbiBvdGhlciB3b3JkcywgaWYgdGhpcyBpcyBgU29tZWAgYW5kIFtgTmV3VmFsaWRhdGlvbkNvZGVgXSBpcyBgU29tZWAgdGhlbiB0aGUgcHJvZHVjZWRsIGNhbmRpZGF0ZSB3aWxsIGJlIGludmFsaWQuAHEBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIGEgbWlycm9yIG9mIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGZvciB0aGUgY3VycmVudCBwYXJhY2hhaW4gZnJvbSB0aGVtASByZWxheS1jaGFpbi4gVGhpcyB2YWx1ZSBpcyBlcGhlbWVyYWwgd2hpY2ggbWVhbnMgaXQgZG9lc24ndCBoaXQgdGhlIHN0b3JhZ2UuIFRoaXMgdmFsdWUgaXNgIHNldCBhZnRlciB0aGUgaW5oZXJlbnQuADhVcGdyYWRlR29BaGVhZAEA4QcEABTcIE9wdGlvbmFsIHVwZ3JhZGUgZ28tYWhlYWQgc2lnbmFsIGZyb20gdGhlIHJlbGF5LWNoYWluLgBxASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBhIG1pcnJvciBvZiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgcGFyYWNoYWluIGZyb20gdGhlbQEgcmVsYXktY2hhaW4uIFRoaXMgdmFsdWUgaXMgZXBoZW1lcmFsIHdoaWNoIG1lYW5zIGl0IGRvZXNuJ3QgaGl0IHRoZSBzdG9yYWdlLiBUaGlzIHZhbHVlIGlzYCBzZXQgYWZ0ZXIgdGhlIGluaGVyZW50LgA8UmVsYXlTdGF0ZVByb29mAABQBAAYxCBUaGUgc3RhdGUgcHJvb2YgZm9yIHRoZSBsYXN0IHJlbGF5IHBhcmVudCBibG9jay4AbQEgVGhpcyBmaWVsZCBpcyBtZWFudCB0byBiZSB1cGRhdGVkIGVhY2ggYmxvY2sgd2l0aCB0aGUgdmFsaWRhdGlvbiBkYXRhIGluaGVyZW50LiBUaGVyZWZvcmUsTQEgYmVmb3JlIHByb2Nlc3Npbmcgb2YgdGhlIGluaGVyZW50LCBlLmcuIGluIGBvbl9pbml0aWFsaXplYCB0aGlzIGRhdGEgbWF5IGJlIHN0YWxlLgCsIFRoaXMgZGF0YSBpcyBhbHNvIGFic2VudCBmcm9tIHRoZSBnZW5lc2lzLgBYUmVsZXZhbnRNZXNzYWdpbmdTdGF0ZQAA9QcEABxlASBUaGUgc25hcHNob3Qgb2Ygc29tZSBzdGF0ZSByZWxhdGVkIHRvIG1lc3NhZ2luZyByZWxldmFudCB0byB0aGUgY3VycmVudCBwYXJhY2hhaW4gYXMgcGVySCB0aGUgcmVsYXkgcGFyZW50LgBtASBUaGlzIGZpZWxkIGlzIG1lYW50IHRvIGJlIHVwZGF0ZWQgZWFjaCBibG9jayB3aXRoIHRoZSB2YWxpZGF0aW9uIGRhdGEgaW5oZXJlbnQuIFRoZXJlZm9yZSxNASBiZWZvcmUgcHJvY2Vzc2luZyBvZiB0aGUgaW5oZXJlbnQsIGUuZy4gaW4gYG9uX2luaXRpYWxpemVgIHRoaXMgZGF0YSBtYXkgYmUgc3RhbGUuAKwgVGhpcyBkYXRhIGlzIGFsc28gYWJzZW50IGZyb20gdGhlIGdlbmVzaXMuAERIb3N0Q29uZmlndXJhdGlvbgAACQgEABgpASBUaGUgcGFyYWNoYWluIGhvc3QgY29uZmlndXJhdGlvbiB0aGF0IHdhcyBvYnRhaW5lZCBmcm9tIHRoZSByZWxheSBwYXJlbnQuAG0BIFRoaXMgZmllbGQgaXMgbWVhbnQgdG8gYmUgdXBkYXRlZCBlYWNoIGJsb2NrIHdpdGggdGhlIHZhbGlkYXRpb24gZGF0YSBpbmhlcmVudC4gVGhlcmVmb3JlLE0BIGJlZm9yZSBwcm9jZXNzaW5nIG9mIHRoZSBpbmhlcmVudCwgZS5nLiBpbiBgb25faW5pdGlhbGl6ZWAgdGhpcyBkYXRhIG1heSBiZSBzdGFsZS4ArCBUaGlzIGRhdGEgaXMgYWxzbyBhYnNlbnQgZnJvbSB0aGUgZ2VuZXNpcy4AOExhc3REbXFNcWNIZWFkAQARCIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABD0IFRoZSBsYXN0IGRvd253YXJkIG1lc3NhZ2UgcXVldWUgY2hhaW4gaGVhZCB3ZSBoYXZlIG9ic2VydmVkLgBlASBUaGlzIHZhbHVlIGlzIGxvYWRlZCBiZWZvcmUgYW5kIHNhdmVkIGFmdGVyIHByb2Nlc3NpbmcgaW5ib3VuZCBkb3dud2FyZCBtZXNzYWdlcyBjYXJyaWVkYCBieSB0aGUgc3lzdGVtIGluaGVyZW50LgBATGFzdEhybXBNcWNIZWFkcwEAFQgEABBJASBUaGUgbWVzc2FnZSBxdWV1ZSBjaGFpbiBoZWFkcyB3ZSBoYXZlIG9ic2VydmVkIHBlciBlYWNoIGNoYW5uZWwgaW5jb21pbmcgY2hhbm5lbC4AZQEgVGhpcyB2YWx1ZSBpcyBsb2FkZWQgYmVmb3JlIGFuZCBzYXZlZCBhZnRlciBwcm9jZXNzaW5nIGluYm91bmQgZG93bndhcmQgbWVzc2FnZXMgY2FycmllZGAgYnkgdGhlIHN5c3RlbSBpbmhlcmVudC4AZFByb2Nlc3NlZERvd253YXJkTWVzc2FnZXMBADgQAAAAAAzIIE51bWJlciBvZiBkb3dud2FyZCBtZXNzYWdlcyBwcm9jZXNzZWQgaW4gYSBibG9jay4A7CBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25faW5pdGlhbGl6ZWAgb2YgZWFjaCBuZXcgYmxvY2suAHBMYXN0UHJvY2Vzc2VkRG93bndhcmRNZXNzYWdlAAAhCAQADJQgVGhlIGxhc3QgcHJvY2Vzc2VkIGRvd253YXJkIG1lc3NhZ2UuAF0BIFdlIG5lZWQgdG8ga2VlcCB0cmFjayBvZiB0aGlzIHRvIGZpbHRlciB0aGUgbWVzc2FnZXMgdGhhdCBoYXZlIGJlZW4gYWxyZWFkeSBwcm9jZXNzZWQuADRIcm1wV2F0ZXJtYXJrAQA4EAAAAAAEoCBIUk1QIHdhdGVybWFyayB0aGF0IHdhcyBzZXQgaW4gYSBibG9jay4AYExhc3RQcm9jZXNzZWRIcm1wTWVzc2FnZQAAIQgEAAyEIFRoZSBsYXN0IHByb2Nlc3NlZCBIUk1QIG1lc3NhZ2UuAF0BIFdlIG5lZWQgdG8ga2VlcCB0cmFjayBvZiB0aGlzIHRvIGZpbHRlciB0aGUgbWVzc2FnZXMgdGhhdCBoYXZlIGJlZW4gYWxyZWFkeSBwcm9jZXNzZWQuAFBIcm1wT3V0Ym91bmRNZXNzYWdlcwEAJQgEAAykIEhSTVAgbWVzc2FnZXMgdGhhdCB3ZXJlIHNlbnQgaW4gYSBibG9jay4A7CBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25faW5pdGlhbGl6ZWAgb2YgZWFjaCBuZXcgYmxvY2suADhVcHdhcmRNZXNzYWdlcwEANAQADKwgVXB3YXJkIG1lc3NhZ2VzIHRoYXQgd2VyZSBzZW50IGluIGEgYmxvY2suAPAgVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2luaXRpYWxpemVgIGZvciBlYWNoIG5ldyBibG9jay4AVFBlbmRpbmdVcHdhcmRNZXNzYWdlcwEANAQABDEBIFVwd2FyZCBtZXNzYWdlcyB0aGF0IGFyZSBzdGlsbCBwZW5kaW5nIGFuZCBub3QgeWV0IHNlbnQgdG8gdGhlIHJlbGF5IGNoYWluLgBQUGVuZGluZ1Vwd2FyZFNpZ25hbHMBADQEAAwtASBVcHdhcmQgc2lnbmFscyB0aGF0IGFyZSBzdGlsbCBwZW5kaW5nIGFuZCBub3QgeWV0IHNlbnQgdG8gdGhlIHJlbGF5IGNoYWluLgDYIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9maW5hbGl6ZWAgZm9yIGVhY2ggYmxvY2suAExQZW5kaW5nQXBwcm92ZWRQZWVyAAB4BAAEOQEgVGhlIGFwcHJvdmVkIHBlZXIgaWQgdG8gYmUgc2VudCBhcyBhIFVNUCBzaWduYWwgb24gdGhlIGxhc3QgYmxvY2sgb2YgdGhlIFBvVi4AXFVwd2FyZERlbGl2ZXJ5RmVlRmFjdG9yAQAtAUAAAGSns7bgDQAAAAAAAAAABOQgVGhlIGZhY3RvciB0byBtdWx0aXBseSB0aGUgYmFzZSBkZWxpdmVyeSBmZWUgYnkgZm9yIFVNUC4AhEFubm91bmNlZEhybXBNZXNzYWdlc1BlckNhbmRpZGF0ZQEAOBAAAAAACGUBIFRoZSBudW1iZXIgb2YgSFJNUCBtZXNzYWdlcyB3ZSBvYnNlcnZlZCBpbiBgb25faW5pdGlhbGl6ZWAgYW5kIHRodXMgdXNlZCB0aGF0IG51bWJlciBmb3LwIGFubm91bmNpbmcgdGhlIHdlaWdodCBvZiBgb25faW5pdGlhbGl6ZWAgYW5kIGBvbl9maW5hbGl6ZWAuAGhSZXNlcnZlZFhjbXBXZWlnaHRPdmVycmlkZQAA1QEEAAhdASBUaGUgd2VpZ2h0IHdlIHJlc2VydmUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYmxvY2sgZm9yIHByb2Nlc3NpbmcgWENNUCBtZXNzYWdlcy4gVGhpc7ggb3ZlcnJpZGVzIHRoZSBhbW91bnQgc2V0IGluIHRoZSBDb25maWcgdHJhaXQuAGRSZXNlcnZlZERtcFdlaWdodE92ZXJyaWRlAADVAQQACFkBIFRoZSB3ZWlnaHQgd2UgcmVzZXJ2ZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBibG9jayBmb3IgcHJvY2Vzc2luZyBETVAgbWVzc2FnZXMuIFRoaXO4IG92ZXJyaWRlcyB0aGUgYW1vdW50IHNldCBpbiB0aGUgQ29uZmlnIHRyYWl0LgBgQ3VzdG9tVmFsaWRhdGlvbkhlYWREYXRhAAAYBAAMKQEgQSBjdXN0b20gaGVhZCBkYXRhIHRoYXQgc2hvdWxkIGJlIHJldHVybmVkIGFzIHJlc3VsdCBvZiBgdmFsaWRhdGVfYmxvY2tgLgARASBTZWUgYFBhbGxldDo6c2V0X2N1c3RvbV92YWxpZGF0aW9uX2hlYWRfZGF0YWAgZm9yIG1vcmUgaW5mb3JtYXRpb24uAEhQb1ZNZXNzYWdlc1RyYWNrZXIAAC0IBAAMVQEgVHJhY2tzIGN1bXVsYXRpdmUgYFVNUGAgYW5kIGBIUk1QYCBtZXNzYWdlcyBzZW50IGFjcm9zcyBibG9ja3MgaW4gdGhlIGN1cnJlbnQgYFBvVmAuAHUBIEFjcm9zcyBkaWZmZXJlbnQgY2FuZGlkYXRlcy9Qb1ZzIHRoZSBidWRnZXRzIGFyZSB0cmFja2VkIGJ5IFtgQWdncmVnYXRlZFVuaW5jbHVkZWRTZWdtZW50YF0uAAFAAAFxBgAEKFNlbGZQYXJhSWScEBQUAAAEuCBSZXR1cm5zIHRoZSBwYXJhY2hhaW4gSUQgd2UgYXJlIHJ1bm5pbmcgd2l0aC4AATUIAAAAAQAAJFRpbWVzdGFtcAEkVGltZXN0YW1wCAxOb3cBACggAAAAAAAAAAAEoCBUaGUgY3VycmVudCB0aW1lIGZvciB0aGUgY3VycmVudCBibG9jay4AJERpZFVwZGF0ZQEAyAQAENggV2hldGhlciB0aGUgdGltZXN0YW1wIGhhcyBiZWVuIHVwZGF0ZWQgaW4gdGhpcyBibG9jay4AVQEgVGhpcyB2YWx1ZSBpcyB1cGRhdGVkIHRvIGB0cnVlYCB1cG9uIHN1Y2Nlc3NmdWwgc3VibWlzc2lvbiBvZiBhIHRpbWVzdGFtcCBieSBhIG5vZGUuRQEgSXQgaXMgdGhlbiBjaGVja2VkIGF0IHRoZSBlbmQgb2YgZWFjaCBibG9jayBleGVjdXRpb24gaW4gdGhlIGBvbl9maW5hbGl6ZWAgaG9vay4AAbAAAAQ0TWluaW11bVBlcmlvZCggAAAAAAAAAAAYjCBUaGUgbWluaW11bSBwZXJpb2QgYmV0d2VlbiBibG9ja3MuAE0BIEJlIGF3YXJlIHRoYXQgdGhpcyBpcyBkaWZmZXJlbnQgdG8gdGhlICpleHBlY3RlZCogcGVyaW9kIHRoYXQgdGhlIGJsb2NrIHByb2R1Y3Rpb25JASBhcHBhcmF0dXMgcHJvdmlkZXMuIFlvdXIgY2hvc2VuIGNvbnNlbnN1cyBzeXN0ZW0gd2lsbCBnZW5lcmFsbHkgd29yayB3aXRoIHRoaXMgdG9hASBkZXRlcm1pbmUgYSBzZW5zaWJsZSBibG9jayB0aW1lLiBGb3IgZXhhbXBsZSwgaW4gdGhlIEF1cmEgcGFsbGV0IGl0IHdpbGwgYmUgZG91YmxlIHRoaXNwIHBlcmlvZCBvbiBkZWZhdWx0IHNldHRpbmdzLgAABBhNb21lbnQoBJggVHlwZSB1c2VkIGZvciBleHByZXNzaW5nIGEgdGltZXN0YW1wLgACAAA0UGFyYWNoYWluSW5mbwE0UGFyYWNoYWluSW5mbwQsUGFyYWNoYWluSWQBAJwQZAAAAAAAAbgAAAAAAAADAAA0V2VpZ2h0UmVjbGFpbQAAAAAAAAAECIEBIFBhbGxldCB0byB1c2UgYWxvbmdzaWRlIHRoZSB0cmFuc2FjdGlvbiBleHRlbnNpb24gW2BTdG9yYWdlV2VpZ2h0UmVjbGFpbWBdLCB0aGUgcGFsbGV0IHByb3ZpZGVzjCB3ZWlnaHQgaW5mb3JtYXRpb24gYW5kIGJlbmNobWFya3MuACBCYWxhbmNlcwEgQmFsYW5jZXMcNFRvdGFsSXNzdWFuY2UBAMRAAAAAAAAAAAAAAAAAAAAAAASYIFRoZSB0b3RhbCB1bml0cyBpc3N1ZWQgaW4gdGhlIHN5c3RlbS4AQEluYWN0aXZlSXNzdWFuY2UBAMRAAAAAAAAAAAAAAAAAAAAAAAQJASBUaGUgdG90YWwgdW5pdHMgb2Ygb3V0c3RhbmRpbmcgZGVhY3RpdmF0ZWQgYmFsYW5jZSBpbiB0aGUgc3lzdGVtLgAcQWNjb3VudAEBBAIEMQYBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBgCQEgVGhlIEJhbGFuY2VzIHBhbGxldCBleGFtcGxlIG9mIHN0b3JpbmcgdGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudC4AKCAjIEV4YW1wbGUANCBgYGBub2NvbXBpbGWwICBpbXBsIHBhbGxldF9iYWxhbmNlczo6Q29uZmlnIGZvciBSdW50aW1lIHsZAiAgICB0eXBlIEFjY291bnRTdG9yZSA9IFN0b3JhZ2VNYXBTaGltPFNlbGY6OkFjY291bnQ8UnVudGltZT4sIGZyYW1lX3N5c3RlbTo6UHJvdmlkZXI8UnVudGltZT4sIEFjY291bnRJZCwgU2VsZjo6QWNjb3VudERhdGE8QmFsYW5jZT4+DCAgfRAgYGBgABUBIFlvdSBjYW4gYWxzbyBzdG9yZSB0aGUgYmFsYW5jZSBvZiBhbiBhY2NvdW50IGluIHRoZSBgU3lzdGVtYCBwYWxsZXQuACggIyBFeGFtcGxlADQgYGBgbm9jb21waWxlsCAgaW1wbCBwYWxsZXRfYmFsYW5jZXM6OkNvbmZpZyBmb3IgUnVudGltZSB7dCAgIHR5cGUgQWNjb3VudFN0b3JlID0gU3lzdGVtDCAgfRAgYGBgAFEBIEJ1dCB0aGlzIGNvbWVzIHdpdGggdHJhZGVvZmZzLCBzdG9yaW5nIGFjY291bnQgYmFsYW5jZXMgaW4gdGhlIHN5c3RlbSBwYWxsZXQgc3RvcmVzbQEgYGZyYW1lX3N5c3RlbWAgZGF0YSBhbG9uZ3NpZGUgdGhlIGFjY291bnQgZGF0YSBjb250cmFyeSB0byBzdG9yaW5nIGFjY291bnQgYmFsYW5jZXMgaW4gdGhlKQEgYEJhbGFuY2VzYCBwYWxsZXQsIHdoaWNoIHVzZXMgYSBgU3RvcmFnZU1hcGAgdG8gc3RvcmUgYmFsYW5jZXMgZGF0YSBvbmx5LkEBIE5PVEU6IFRoaXMgaXMgb25seSB1c2VkIGluIHRoZSBjYXNlIHRoYXQgdGhpcyBwYWxsZXQgaXMgdXNlZCB0byBzdG9yZSBiYWxhbmNlcy4AFExvY2tzAQEEAgQ5CAQAELggQW55IGxpcXVpZGl0eSBsb2NrcyBvbiBzb21lIGFjY291bnQgYmFsYW5jZXMuJQEgTk9URTogU2hvdWxkIG9ubHkgYmUgYWNjZXNzZWQgd2hlbiBzZXR0aW5nLCBjaGFuZ2luZyBhbmQgZnJlZWluZyBhIGxvY2suAK0BIFVzZSBvZiBsb2NrcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBmcmVlemVzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AAIFJlc2VydmVzAQEEAgRJCAQADKQgTmFtZWQgcmVzZXJ2ZXMgb24gc29tZSBhY2NvdW50IGJhbGFuY2VzLgCxASBVc2Ugb2YgcmVzZXJ2ZXMgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaG9sZHMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYAAUSG9sZHMBAQQCBFUIBAAEbCBIb2xkcyBvbiBhY2NvdW50IGJhbGFuY2VzLgAcRnJlZXplcwEBBAIEYQgEAASIIEZyZWV6ZSBsb2NrcyBvbiBhY2NvdW50IGJhbGFuY2VzLgABvAABeQYAEEhFeGlzdGVudGlhbERlcG9zaXTEQADKmjsAAAAAAAAAAAAAAAAgQQEgVGhlIG1pbmltdW0gYW1vdW50IHJlcXVpcmVkIHRvIGtlZXAgYW4gYWNjb3VudCBvcGVuLiBNVVNUIEJFIEdSRUFURVIgVEhBTiBaRVJPIQBZASBJZiB5b3UgKnJlYWxseSogbmVlZCBpdCB0byBiZSB6ZXJvLCB5b3UgY2FuIGVuYWJsZSB0aGUgZmVhdHVyZSBgaW5zZWN1cmVfemVyb19lZGAgZm9yYQEgdGhpcyBwYWxsZXQuIEhvd2V2ZXIsIHlvdSBkbyBzbyBhdCB5b3VyIG93biByaXNrOiB0aGlzIHdpbGwgb3BlbiB1cCBhIG1ham9yIERvUyB2ZWN0b3IuWQEgSW4gY2FzZSB5b3UgaGF2ZSBtdWx0aXBsZSBzb3VyY2VzIG9mIHByb3ZpZGVyIHJlZmVyZW5jZXMsIHlvdSBtYXkgYWxzbyBnZXQgdW5leHBlY3RlZIwgYmVoYXZpb3VyIGlmIHlvdSBzZXQgdGhpcyB0byB6ZXJvLgDwIEJvdHRvbSBsaW5lOiBEbyB5b3Vyc2VsZiBhIGZhdm91ciBhbmQgbWFrZSBpdCBhdCBsZWFzdCBvbmUhACBNYXhMb2NrczgQMgAAABD0IFRoZSBtYXhpbXVtIG51bWJlciBvZiBsb2NrcyB0aGF0IHNob3VsZCBleGlzdCBvbiBhbiBhY2NvdW50LtwgTm90IHN0cmljdGx5IGVuZm9yY2VkLCBidXQgdXNlZCBmb3Igd2VpZ2h0IGVzdGltYXRpb24uAK0BIFVzZSBvZiBsb2NrcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBmcmVlemVzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AALE1heFJlc2VydmVzOBAyAAAADA0BIFRoZSBtYXhpbXVtIG51bWJlciBvZiBuYW1lZCByZXNlcnZlcyB0aGF0IGNhbiBleGlzdCBvbiBhbiBhY2NvdW50LgCxASBVc2Ugb2YgcmVzZXJ2ZXMgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaG9sZHMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYAAoTWF4RnJlZXplczgQAAAAAARhASBUaGUgbWF4aW11bSBudW1iZXIgb2YgaW5kaXZpZHVhbCBmcmVlemUgbG9ja3MgdGhhdCBjYW4gZXhpc3Qgb24gYW4gYWNjb3VudCBhdCBhbnkgdGltZS4AAW0IABBEUnVudGltZUhvbGRSZWFzb26BBgR0IFRoZSBvdmVyYXJjaGluZyBob2xkIHJlYXNvbi4cQmFsYW5jZcQEbCBUaGUgYmFsYW5jZSBvZiBhbiBhY2NvdW50LkRSZXNlcnZlSWRlbnRpZmllcr0BDGggVGhlIElEIHR5cGUgZm9yIHJlc2VydmVzLgCxASBVc2Ugb2YgcmVzZXJ2ZXMgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaG9sZHMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYEBGcmVlemVJZGVudGlmaWVyEARkIFRoZSBJRCB0eXBlIGZvciBmcmVlemVzLgAKAABIVHJhbnNhY3Rpb25QYXltZW50AUhUcmFuc2FjdGlvblBheW1lbnQMRE5leHRGZWVNdWx0aXBsaWVyAQAtAUAAAGSns7bgDQAAAAAAAAAAAAA4U3RvcmFnZVZlcnNpb24BAHEIBAAAADxUeFBheW1lbnRDcmVkaXQAAHUIBAAM8CBUaGUgYE9uQ2hhcmdlVHJhbnNhY3Rpb25gIHN0b3JlcyB0aGUgd2l0aGRyYXduIHR4IGZlZSBoZXJlLgA1ASBVc2UgYHdpdGhkcmF3X3R4ZmVlYCBhbmQgYHJlbWFpbmluZ190eGZlZWAgdG8gYWNjZXNzIGZyb20gb3V0c2lkZSB0aGUgY3JhdGUuAAABqQYABGBPcGVyYXRpb25hbEZlZU11bHRpcGxpZXIMBAVUWQEgQSBmZWUgbXVsdGlwbGllciBmb3IgYE9wZXJhdGlvbmFsYCBleHRyaW5zaWNzIHRvIGNvbXB1dGUgInZpcnR1YWwgdGlwIiB0byBib29zdCB0aGVpciwgYHByaW9yaXR5YABRASBUaGlzIHZhbHVlIGlzIG11bHRpcGxpZWQgYnkgdGhlIGBmaW5hbF9mZWVgIHRvIG9idGFpbiBhICJ2aXJ0dWFsIHRpcCIgdGhhdCBpcyBsYXRlcvQgYWRkZWQgdG8gYSB0aXAgY29tcG9uZW50IGluIHJlZ3VsYXIgYHByaW9yaXR5YCBjYWxjdWxhdGlvbnMuTQEgSXQgbWVhbnMgdGhhdCBhIGBOb3JtYWxgIHRyYW5zYWN0aW9uIGNhbiBmcm9udC1ydW4gYSBzaW1pbGFybHktc2l6ZWQgYE9wZXJhdGlvbmFsYEEBIGV4dHJpbnNpYyAod2l0aCBubyB0aXApLCBieSBpbmNsdWRpbmcgYSB0aXAgdmFsdWUgZ3JlYXRlciB0aGFuIHRoZSB2aXJ0dWFsIHRpcC4APCBgYGBydXN0LGlnbm9yZUAgLy8gRm9yIGBOb3JtYWxgjCBsZXQgcHJpb3JpdHkgPSBwcmlvcml0eV9jYWxjKHRpcCk7AFQgLy8gRm9yIGBPcGVyYXRpb25hbGARASBsZXQgdmlydHVhbF90aXAgPSAoaW5jbHVzaW9uX2ZlZSArIHRpcCkgKiBPcGVyYXRpb25hbEZlZU11bHRpcGxpZXI7xCBsZXQgcHJpb3JpdHkgPSBwcmlvcml0eV9jYWxjKHRpcCArIHZpcnR1YWxfdGlwKTsQIGBgYABRASBOb3RlIHRoYXQgc2luY2Ugd2UgdXNlIGBmaW5hbF9mZWVgIHRoZSBtdWx0aXBsaWVyIGFwcGxpZXMgYWxzbyB0byB0aGUgcmVndWxhciBgdGlwYF0BIHNlbnQgd2l0aCB0aGUgdHJhbnNhY3Rpb24uIFNvLCBub3Qgb25seSBkb2VzIHRoZSB0cmFuc2FjdGlvbiBnZXQgYSBwcmlvcml0eSBidW1wIGJhc2VkYQEgb24gdGhlIGBpbmNsdXNpb25fZmVlYCwgYnV0IHdlIGFsc28gYW1wbGlmeSB0aGUgaW1wYWN0IG9mIHRpcHMgYXBwbGllZCB0byBgT3BlcmF0aW9uYWxgOCB0cmFuc2FjdGlvbnMuAAAAAAsAAEhTa2lwRmVlbGVzc1BheW1lbnQAAAGtBgAAAAAADAAARE9yaWdpblJlc3RyaWN0aW9uAURPcmlnaW5SZXN0cmljdGlvbgQYVXNhZ2VzAAEEAth9CAQABIwgVGhlIGN1cnJlbnQgdXNhZ2UgZm9yIGVhY2ggZW50aXR5LgAB1AABsQYAAAGBCAAEQFJlc3RyaWN0ZWRFbnRpdHnYJFEBIFRoZSB0eXBlIHRoYXQgcmVwcmVzZW50IHRoZSBlbnRpdGllcyB0cmFja2VkLCBpdHMgYWxsb3dhbmNlIGFuZCB0aGUgY29udmVyc2lvbiBmcm9tmCBvcmlnaW4gaXMgYm91bmRlZCBpbiBbYFJlc3RyaWN0aW9uYF0uAB0BIFRoaXMgaXMgdGhlIGNhbm9uaWNhbCBvcmlnaW4gZnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZiB1c2FnZSB0cmFja2luZy6MIEVhY2ggZW50aXR5IGlzIHRyYWNrZWQgc2VwYXJhdGVseS4ASQEgVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSBvcmlnaW4gYXMgYSBtdWx0aXBsZSBvcmlnaW4gY2FuIHJlcHJlc2VudCBhIHNpbmdsZSBlbnRpdHkuYQEgRm9yIGV4YW1wbGUsIGltYWdpbmUgYSBEQU8gb3JpZ2luIHdpdGggYSBwZXJjZW50YWdlIG9mIHZvdGVycywgd2Ugd2FudCB0byB0cmFjayB0aGUgREFPrCBlbnRpdHkgcmVnYXJkbGVzcyBvZiB0aGUgdm90ZXIgcGVyY2VudGFnZS4ADQAAGEFzc2V0cwEYQXNzZXRzGBRBc3NldAABBALghQgEAARUIERldGFpbHMgb2YgYW4gYXNzZXQuABxBY2NvdW50AAEIAgKNCJEIBAAE5CBUaGUgaG9sZGluZ3Mgb2YgYSBzcGVjaWZpYyBhY2NvdW50IGZvciBhIHNwZWNpZmljIGFzc2V0LgAkQXBwcm92YWxzAAEMAgICnQihCAQADFkBIEFwcHJvdmVkIGJhbGFuY2UgdHJhbnNmZXJzLiBGaXJzdCBiYWxhbmNlIGlzIHRoZSBhbW91bnQgYXBwcm92ZWQgZm9yIHRyYW5zZmVyLiBTZWNvbmToIGlzIHRoZSBhbW91bnQgb2YgYFQ6OkN1cnJlbmN5YCByZXNlcnZlZCBmb3Igc3RvcmluZyB0aGlzLkkBIEZpcnN0IGtleSBpcyB0aGUgYXNzZXQgSUQsIHNlY29uZCBrZXkgaXMgdGhlIG93bmVyIGFuZCB0aGlyZCBrZXkgaXMgdGhlIGRlbGVnYXRlLgAgTWV0YWRhdGEBAQQC4KUIUAAAAAAAAAAAAAAAAAAAAAAAAAAABFggTWV0YWRhdGEgb2YgYW4gYXNzZXQuACBSZXNlcnZlcwEBBALgHQEEAAT8IE1hcHMgYW4gYXNzZXQgdG8gYSBsaXN0IG9mIGl0cyBjb25maWd1cmVkIHJlc2VydmUgaW5mb3JtYXRpb24uACxOZXh0QXNzZXRJZAAA4AQAJG0BIFRoZSBhc3NldCBJRCBlbmZvcmNlZCBmb3IgdGhlIG5leHQgYXNzZXQgY3JlYXRpb24sIGlmIGFueSBwcmVzZW50LiBPdGhlcndpc2UsIHRoaXMgc3RvcmFnZVAgaXRlbSBoYXMgbm8gZWZmZWN0LgBlASBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIHNldHRpbmcgdXAgY29uc3RyYWludHMgZm9yIElEcyBvZiB0aGUgbmV3IGFzc2V0cy4gRm9yIGV4YW1wbGUsIGJ5aQEgcHJvdmlkaW5nIGFuIGluaXRpYWwgW2BOZXh0QXNzZXRJZGBdIGFuZCB1c2luZyB0aGUgW2BjcmF0ZTo6QXV0b0luY0Fzc2V0SWRgXSBjYWxsYmFjaywgYW7oIGF1dG8taW5jcmVtZW50IG1vZGVsIGNhbiBiZSBhcHBsaWVkIHRvIGFsbCBuZXcgYXNzZXQgSURzLgAhASBUaGUgaW5pdGlhbCBuZXh0IGFzc2V0IElEIGNhbiBiZSBzZXQgdXNpbmcgdGhlIFtgR2VuZXNpc0NvbmZpZ2BdIG9yIHRoZSEBIFtTZXROZXh0QXNzZXRJZF0oYG1pZ3JhdGlvbjo6bmV4dF9hc3NldF9pZDo6U2V0TmV4dEFzc2V0SWRgKSBtaWdyYXRpb24uAAHcAAG1BgAcQFJlbW92ZUl0ZW1zTGltaXQ4EOgDAAAMUQEgTWF4IG51bWJlciBvZiBpdGVtcyB0byBkZXN0cm95IHBlciBgZGVzdHJveV9hY2NvdW50c2AgYW5kIGBkZXN0cm95X2FwcHJvdmFsc2AgY2FsbC4AOQEgTXVzdCBiZSBjb25maWd1cmVkIHRvIHJlc3VsdCBpbiBhIHdlaWdodCB0aGF0IG1ha2VzIGVhY2ggY2FsbCBmaXQgaW4gYSBibG9jay4AMEFzc2V0RGVwb3NpdMRAAMqaOwAAAAAAAAAAAAAAAAT4IFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhbiBhc3NldC4ATEFzc2V0QWNjb3VudERlcG9zaXTEQAD0abMCAAAAAAAAAAAAAAAIRQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGEgbm9uLXByb3ZpZGVyIGFzc2V0IGFjY291bnQgdG8gYmUwIG1haW50YWluZWQuAExNZXRhZGF0YURlcG9zaXRCYXNlxEAAqFvpAwAAAAAAAAAAAAAABFEBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIG1ldGFkYXRhIHRvIHlvdXIgYXNzZXQuAFhNZXRhZGF0YURlcG9zaXRQZXJCeXRlxEAA4fUFAAAAAAAAAAAAAAAACFUBIFRoZSBhZGRpdGlvbmFsIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgdGhlIG51bWJlciBvZiBieXRlcyB5b3Ugc3RvcmUgaW4geW91ciggbWV0YWRhdGEuADxBcHByb3ZhbERlcG9zaXTEQADKmjsAAAAAAAAAAAAAAAAEIQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBjcmVhdGluZyBhIG5ldyBhcHByb3ZhbC4ALFN0cmluZ0xpbWl0OBAyAAAABOAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgbmFtZSBvciBzeW1ib2wgc3RvcmVkIG9uLWNoYWluLgABrQgAFBxCYWxhbmNlxAScIFRoZSB1bml0cyBpbiB3aGljaCB3ZSByZWNvcmQgYmFsYW5jZXMuHEFzc2V0SWTgBIwgSWRlbnRpZmllciBmb3IgdGhlIGNsYXNzIG9mIGFzc2V0LkBBc3NldElkUGFyYW1ldGVy4BxZASBXcmFwcGVyIGFyb3VuZCBgU2VsZjo6QXNzZXRJZGAgdG8gdXNlIGluIGRpc3BhdGNoYWJsZSBjYWxsIHNpZ25hdHVyZXMuIEFsbG93cyB0aGUgdXNlUQEgb2YgY29tcGFjdCBlbmNvZGluZyBpbiBpbnN0YW5jZXMgb2YgdGhlIHBhbGxldCwgd2hpY2ggd2lsbCBwcmV2ZW50IGJyZWFraW5nIGNoYW5nZXMFASByZXN1bHRpbmcgZnJvbSB0aGUgcmVtb3ZhbCBvZiBgSGFzQ29tcGFjdGAgZnJvbSBgU2VsZjo6QXNzZXRJZGAuAFkBIFRoaXMgdHlwZSBpbmNsdWRlcyB0aGUgYEZyb208U2VsZjo6QXNzZXRJZD5gIGJvdW5kLCBzaW5jZSB0aWdodGx5IGNvdXBsZWQgcGFsbGV0cyBtYXlFASB3YW50IHRvIGNvbnZlcnQgYW4gYEFzc2V0SWRgIGludG8gYSBwYXJhbWV0ZXIgZm9yIGNhbGxpbmcgZGlzcGF0Y2hhYmxlIGZ1bmN0aW9ucyggZGlyZWN0bHkuLFJlc2VydmVEYXRhIQEE6CBJbmZvcm1hdGlvbiBhYm91dCByZXNlcnZlIGxvY2F0aW9ucyBmb3IgYSBjbGFzcyBvZiBhc3NldC4URXh0cmEQBPggQWRkaXRpb25hbCBkYXRhIHRvIGJlIHN0b3JlZCB3aXRoIGFuIGFjY291bnQncyBhc3NldCBiYWxhbmNlLhBoKlnVGrnkioyMxBj/lwjSpwKXrQtL3T2kt0YpplpuXDRhc3NldF9kZXRhaWxzBAhpZOCxCASoIFByb3ZpZGUgdGhlIGFzc2V0IGRldGFpbHMgZm9yIGFzc2V0IGBpZGAuAGgqWdUaueSKjIzEGP+XCNJTGsfiG3axIedh5HNBmhsCKGJhbGFuY2Vfb2YIDHdobwQIaWTgtQgEtCBQcm92aWRlIHRoZSBiYWxhbmNlIG9mIGB3aG9gIGZvciBhc3NldCBgaWRgLgBoKlnVGrnkioyMxBj/lwjSLodmpA0badYVG9gB5XVQXjBnZXRfbWV0YWRhdGEECGlk4LkIBMAgUHJvdmlkZSB0aGUgY29uZmlndXJlZCBtZXRhZGF0YSBmb3IgYXNzZXQgYGlkYC4AaCpZ1Rq55IqMjMQY/5cI0mT2Pykj45goJDFjga4eaYZEZ2V0X3Jlc2VydmVzX2RhdGEECGlk4CUBBNQgUHJvdmlkZSB0aGUgY29uZmlndXJlZCByZXNlcnZlcyBkYXRhIGZvciBhc3NldCBgaWRgLgAOAAAwQXNzZXRzSG9sZGVyATBBc3NldHNIb2xkZXIIFEhvbGRzAQEIAgKNCFUIBAAEDQEgQSBtYXAgdGhhdCBzdG9yZXMgaG9sZHMgYXBwbGllZCBvbiBhbiBhY2NvdW50IGZvciBhIGdpdmVuIEFzc2V0SWQuADhCYWxhbmNlc09uSG9sZAABCAICjQjEBAAEaQEgQSBtYXAgdGhhdCBzdG9yZXMgdGhlIGN1cnJlbnQgdG90YWwgYmFsYW5jZSBvbiBob2xkIGZvciBldmVyeSBhY2NvdW50IG9uIGEgZ2l2ZW4gQXNzZXRJZC4AAAG5BgAAAb0IAAREUnVudGltZUhvbGRSZWFzb26BBgR8IFRoZSBvdmVyYXJjaGluZyBmcmVlemUgcmVhc29uLgAPAAAkQXNzZXRSYXRlASRBc3NldFJhdGUEWENvbnZlcnNpb25SYXRlVG9OYXRpdmUAAQQC4C0BBAAMHQEgTWFwcyBhbiBhc3NldCB0byBpdHMgZml4ZWQgcG9pbnQgcmVwcmVzZW50YXRpb24gaW4gdGhlIG5hdGl2ZSBiYWxhbmNlLgBNASBFLmcuIGBuYXRpdmVfYW1vdW50ID0gYXNzZXRfYW1vdW50ICogQ29udmVyc2lvblJhdGVUb05hdGl2ZTo6PFQ+OjpnZXQoYXNzZXRfa2luZClgAAEpAQABvQYAAAHBCAAEJEFzc2V0S2luZOAERQEgVGhlIHR5cGUgZm9yIGFzc2V0IGtpbmRzIGZvciB3aGljaCB0aGUgY29udmVyc2lvbiByYXRlIHRvIG5hdGl2ZSBiYWxhbmNlIGlzIHNldC4AEAAAOEFzc2V0VHhQYXltZW50AAABwQYAAAAAABEAAChBdXRob3JzaGlwAShBdXRob3JzaGlwBBhBdXRob3IAAAQEAARkIEF1dGhvciBvZiBjdXJyZW50IGJsb2NrLgAAAAAAAAAUAABEQ29sbGF0b3JTZWxlY3Rpb24BRENvbGxhdG9yU2VsZWN0aW9uFDRJbnZ1bG5lcmFibGVzAQDFCAQABBEBIFRoZSBpbnZ1bG5lcmFibGUsIHBlcm1pc3Npb25lZCBjb2xsYXRvcnMuIFRoaXMgbGlzdCBtdXN0IGJlIHNvcnRlZC4ANENhbmRpZGF0ZUxpc3QBAMkIBAAUaQEgVGhlIChjb21tdW5pdHksIGxpbWl0ZWQpIGNvbGxhdGlvbiBjYW5kaWRhdGVzLiBgQ2FuZGlkYXRlc2AgYW5kIGBJbnZ1bG5lcmFibGVzYCBzaG91bGQgYmVQIG11dHVhbGx5IGV4Y2x1c2l2ZS4AdQEgVGhpcyBsaXN0IGlzIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIgYnkgZGVwb3NpdCBhbmQgd2hlbiB0aGUgZGVwb3NpdHMgYXJlIGVxdWFsLCB0aGUgbGVhc3SgIHJlY2VudGx5IHVwZGF0ZWQgaXMgY29uc2lkZXJlZCBncmVhdGVyLgBETGFzdEF1dGhvcmVkQmxvY2sBAQQFBDgQAAAAAASEIExhc3QgYmxvY2sgYXV0aG9yZWQgYnkgY29sbGF0b3IuAEREZXNpcmVkQ2FuZGlkYXRlcwEAOBAAAAAADHggRGVzaXJlZCBudW1iZXIgb2YgY2FuZGlkYXRlcy4AdQEgVGhpcyBzaG91bGQgaWRlYWxseSBhbHdheXMgYmUgbGVzcyB0aGFuIFtgQ29uZmlnOjpNYXhDYW5kaWRhdGVzYF0gZm9yIHdlaWdodHMgdG8gYmUgY29ycmVjdC4ANENhbmRpZGFjeUJvbmQBAMRAAAAAAAAAAAAAAAAAAAAAAAy4IEZpeGVkIGFtb3VudCB0byBkZXBvc2l0IHRvIGJlY29tZSBhIGNvbGxhdG9yLgBBASBXaGVuIGEgY29sbGF0b3IgY2FsbHMgYGxlYXZlX2ludGVudGAgdGhleSBpbW1lZGlhdGVseSByZWNlaXZlIHRoZSBkZXBvc2l0IGJhY2suAAExAQABxQYAGBRQb3RJZNUIIFBvdFN0YWtlBPQgQWNjb3VudCBJZGVudGlmaWVyIGZyb20gd2hpY2ggdGhlIGludGVybmFsIFBvdCBpcyBnZW5lcmF0ZWQuADRNYXhDYW5kaWRhdGVzOBBkAAAADMggTWF4aW11bSBudW1iZXIgb2YgY2FuZGlkYXRlcyB0aGF0IHdlIHNob3VsZCBoYXZlLgDMIFRoaXMgZG9lcyBub3QgdGFrZSBpbnRvIGFjY291bnQgdGhlIGludnVsbmVyYWJsZXMuAFBNaW5FbGlnaWJsZUNvbGxhdG9yczgQBAAAAAxVASBNaW5pbXVtIG51bWJlciBlbGlnaWJsZSBjb2xsYXRvcnMuIFNob3VsZCBhbHdheXMgYmUgZ3JlYXRlciB0aGFuIHplcm8uIFRoaXMgaW5jbHVkZXNRASBJbnZ1bG5lcmFibGUgY29sbGF0b3JzLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGVyZSB3aWxsIGFsd2F5cyBiZSBvbmUgY29sbGF0b3Igd2hvIGNhbkQgcHJvZHVjZSBhIGJsb2NrLgBATWF4SW52dWxuZXJhYmxlczgQFAAAAASEIE1heGltdW0gbnVtYmVyIG9mIGludnVsbmVyYWJsZXMuADRLaWNrVGhyZXNob2xkOBAwKgAAAAAscG90X2FjY291bnQEgG1vZGxQb3RTdGFrZQAAAAAAAAAAAAAAAAAAAAAAAAAABKAgR2V0cyB0aGlzIHBhbGxldCdzIGRlcml2ZWQgcG90IGFjY291bnQuAAHZCAAELFZhbGlkYXRvcklkBAR0IEEgc3RhYmxlIElEIGZvciBhIHZhbGlkYXRvci4AFQAAHFNlc3Npb24BHFNlc3Npb24gKFZhbGlkYXRvcnMBAMwEAAR8IFRoZSBjdXJyZW50IHNldCBvZiB2YWxpZGF0b3JzLgAwQ3VycmVudEluZGV4AQA4EAAAAAAEeCBDdXJyZW50IGluZGV4IG9mIHRoZSBzZXNzaW9uLgA0UXVldWVkQ2hhbmdlZAEAyAQACDkBIFRydWUgaWYgdGhlIHVuZGVybHlpbmcgZWNvbm9taWMgaWRlbnRpdGllcyBvciB3ZWlnaHRpbmcgYmVoaW5kIHRoZSB2YWxpZGF0b3JzpCBoYXMgY2hhbmdlZCBpbiB0aGUgcXVldWVkIHZhbGlkYXRvciBzZXQuAChRdWV1ZWRLZXlzAQDdCAQACD0BIFRoZSBxdWV1ZWQga2V5cyBmb3IgdGhlIG5leHQgc2Vzc2lvbi4gV2hlbiB0aGUgbmV4dCBzZXNzaW9uIGJlZ2lucywgdGhlc2Uga2V5c+Agd2lsbCBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUgdmFsaWRhdG9yJ3Mgc2Vzc2lvbiBrZXlzLgBIRGlzYWJsZWRWYWxpZGF0b3JzAQDlCAQAFIAgSW5kaWNlcyBvZiBkaXNhYmxlZCB2YWxpZGF0b3JzLgA9ASBUaGUgdmVjIGlzIGFsd2F5cyBrZXB0IHNvcnRlZCBzbyB0aGF0IHdlIGNhbiBmaW5kIHdoZXRoZXIgYSBnaXZlbiB2YWxpZGF0b3IgaXM9ASBkaXNhYmxlZCB1c2luZyBiaW5hcnkgc2VhcmNoLiBJdCBnZXRzIGNsZWFyZWQgd2hlbiBgb25fc2Vzc2lvbl9lbmRpbmdgIHJldHVybnNkIGEgbmV3IHNldCBvZiBpZGVudGl0aWVzLgAgTmV4dEtleXMAAQQFBDkBBAAEnCBUaGUgbmV4dCBzZXNzaW9uIGtleXMgZm9yIGEgdmFsaWRhdG9yLgAgS2V5T3duZXIAAQQF9QgEBAAECQEgVGhlIG93bmVyIG9mIGEga2V5LiBUaGUga2V5IGlzIHRoZSBgS2V5VHlwZUlkYCArIHRoZSBlbmNvZGVkIGtleS4AREV4dGVybmFsbHlTZXRLZXlzAAEEBQQQBAAQMQEgQWNjb3VudHMgd2hvc2Uga2V5cyB3ZXJlIHNldCB2aWEgYFNlc3Npb25JbnRlcmZhY2VgIChleHRlcm5hbCBwYXRoKSB3aXRob3V0OQEgaW5jcmVtZW50aW5nIHRoZSBjb25zdW1lciByZWZlcmVuY2Ugb3IgcGxhY2luZyBhIGtleSBkZXBvc2l0LiBgZG9fcHVyZ2Vfa2V5c2A5ASBvbmx5IGRlY3JlbWVudHMgY29uc3VtZXJzIGZvciBhY2NvdW50cyB0aGF0IHdlcmUgcmVnaXN0ZXJlZCB0aHJvdWdoIHRoZSBsb2NhbEAgc2Vzc2lvbiBwYWxsZXQuAAE1AQAByQYABChLZXlEZXBvc2l0xEAAAAAAAAAAAAAAAAAAAAAABKQgVGhlIGFtb3VudCB0byBiZSBoZWxkIHdoZW4gc2V0dGluZyBrZXlzLgAB/QgACCxWYWxpZGF0b3JJZAQEdCBBIHN0YWJsZSBJRCBmb3IgYSB2YWxpZGF0b3IuEEtleXM5AQQoIFRoZSBrZXlzLgAWAAAQQXVyYQEQQXVyYQgsQXV0aG9yaXRpZXMBAAEJBAAEbCBUaGUgY3VycmVudCBhdXRob3JpdHkgc2V0LgAsQ3VycmVudFNsb3QBAAkJIAAAAAAAAAAADIAgVGhlIGN1cnJlbnQgc2xvdCBvZiB0aGlzIGJsb2NrLgCUIFRoaXMgd2lsbCBiZSBzZXQgaW4gYG9uX2luaXRpYWxpemVgLgAAAAQwU2xvdER1cmF0aW9uKCDgLgAAAAAAABQNASBUaGUgc2xvdCBkdXJhdGlvbiBBdXJhIHNob3VsZCBydW4gd2l0aCwgZXhwcmVzc2VkIGluIG1pbGxpc2Vjb25kcy4AIQEgVGhlIGVmZmVjdGl2ZSB2YWx1ZSBvZiB0aGlzIHR5cGUgY2FuIGJlIGNoYW5nZWQgd2l0aCBhIHJ1bnRpbWUgdXBncmFkZS4ANQEgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGVpdGhlciB1c2UgW2BNaW5pbXVtUGVyaW9kVGltZXNUd29gXSBvciBhIGNvbnN0LgAABCxBdXRob3JpdHlJZD0BBJggVGhlIGlkZW50aWZpZXIgdHlwZSBmb3IgYW4gYXV0aG9yaXR5LgAXAAAcQXVyYUV4dAEcQXVyYUV4dAgsQXV0aG9yaXRpZXMBAAEJBAAUlCBTZXJ2ZXMgYXMgY2FjaGUgZm9yIHRoZSBhdXRob3JpdGllcy4AcQEgVGhlIGF1dGhvcml0aWVzIGluIEF1UmEgYXJlIG92ZXJ3cml0dGVuIGluIGBvbl9pbml0aWFsaXplYCB3aGVuIHdlIHN3aXRjaCB0byBhIG5ldyBzZXNzaW9uLF0BIGJ1dCB3ZSByZXF1aXJlIHRoZSBvbGQgYXV0aG9yaXRpZXMgdG8gdmVyaWZ5IHRoZSBzZWFsIHdoZW4gdmFsaWRhdGluZyBhIFBvVi4gVGhpcyB3aWxsDQEgYWx3YXlzIGJlIHVwZGF0ZWQgdG8gdGhlIGxhdGVzdCBBdVJhIGF1dGhvcml0aWVzIGluIGBvbl9maW5hbGl6ZWAuADRSZWxheVNsb3RJbmZvAAANCQQAEAkBIEN1cnJlbnQgcmVsYXkgY2hhaW4gc2xvdCBwYWlyZWQgd2l0aCBhIG51bWJlciBvZiBhdXRob3JlZCBibG9ja3MuAGUBIFRoaXMgaXMgdXBkYXRlZCBpbiBbYEZpeGVkVmVsb2NpdHlDb25zZW5zdXNIb29rOjpvbl9zdGF0ZV9wcm9vZmBdIHdpdGggdGhlIGN1cnJlbnQgcmVsYXncIGNoYWluIHNsb3QgYXMgcHJvdmlkZWQgYnkgdGhlIHJlbGF5IGNoYWluIHN0YXRlIHByb29mLgAAAAAAAAAYAAAkWGNtcFF1ZXVlASRYY21wUXVldWUcUEluYm91bmRYY21wU3VzcGVuZGVkAQARCQQAIA0BIFRoZSBzdXNwZW5kZWQgaW5ib3VuZCBYQ01QIGNoYW5uZWxzLiBBbGwgb3RoZXJzIGFyZSBub3Qgc3VzcGVuZGVkLgBxASBUaGlzIGlzIGEgYFN0b3JhZ2VWYWx1ZWAgaW5zdGVhZCBvZiBhIGBTdG9yYWdlTWFwYCBzaW5jZSB3ZSBleHBlY3QgbXVsdGlwbGUgcmVhZHMgcGVyIGJsb2NraQEgdG8gZGlmZmVyZW50IGtleXMgd2l0aCBhIG9uZSBieXRlIHBheWxvYWQuIFRoZSBhY2Nlc3MgdG8gYEJvdW5kZWRCVHJlZVNldGAgd2lsbCBiZSBjYWNoZWQVASB3aXRoaW4gdGhlIGJsb2NrIGFuZCB0aGVyZWZvcmUgb25seSBpbmNsdWRlZCBvbmNlIGluIHRoZSBwcm9vZiBzaXplLgBlASBOT1RFOiBUaGUgUG9WIGJlbmNobWFya2luZyBjYW5ub3Qga25vdyB0aGlzIGFuZCB3aWxsIG92ZXItZXN0aW1hdGUsIGJ1dCB0aGUgYWN0dWFsIHByb29mRCB3aWxsIGJlIHNtYWxsZXIuAEhPdXRib3VuZFhjbXBTdGF0dXMBABkJBAAYXQEgVGhlIG5vbi1lbXB0eSBYQ01QIGNoYW5uZWxzIGluIG9yZGVyIG9mIGJlY29taW5nIG5vbi1lbXB0eSwgYW5kIHRoZSBpbmRleCBvZiB0aGUgZmlyc3RRASBhbmQgbGFzdCBvdXRib3VuZCBtZXNzYWdlLiBJZiB0aGUgdHdvIGluZGljZXMgYXJlIGVxdWFsLCB0aGVuIGl0IGluZGljYXRlcyBhbiBlbXB0eVkBIHF1ZXVlIGFuZCB0aGVyZSBtdXN0IGJlIGEgbm9uLWBPa2AgYE91dGJvdW5kU3RhdHVzYC4gV2UgYXNzdW1lIHF1ZXVlcyBncm93IG5vIGdyZWF0ZXJZASB0aGFuIDY1NTM1IGl0ZW1zLiBRdWV1ZSBpbmRpY2VzIGZvciBub3JtYWwgbWVzc2FnZXMgYmVnaW4gYXQgb25lOyB6ZXJvIGlzIHJlc2VydmVkIGluEQEgY2FzZSBvZiB0aGUgbmVlZCB0byBzZW5kIGEgaGlnaC1wcmlvcml0eSBzaWduYWwgbWVzc2FnZSB0aGlzIGJsb2NrLgkBIFRoZSBib29sIGlzIHRydWUgaWYgdGhlcmUgaXMgYSBzaWduYWwgbWVzc2FnZSB3YWl0aW5nIHRvIGJlIHNlbnQuAFBPdXRib3VuZFhjbXBNZXNzYWdlcwEBCAIFLQkxCQQABLwgVGhlIG1lc3NhZ2VzIG91dGJvdW5kIGluIGEgZ2l2ZW4gWENNUCBjaGFubmVsLgA4U2lnbmFsTWVzc2FnZXMBAQQCnDEJBAAEoCBBbnkgc2lnbmFsIG1lc3NhZ2VzIHdhaXRpbmcgdG8gYmUgc2VudC4ALFF1ZXVlQ29uZmlnAQA1CTAgAAAAMAAAAAgAAAAEFQEgVGhlIGNvbmZpZ3VyYXRpb24gd2hpY2ggY29udHJvbHMgdGhlIGR5bmFtaWNzIG9mIHRoZSBvdXRib3VuZCBxdWV1ZS4AOFF1ZXVlU3VzcGVuZGVkAQDIBAAEQQEgV2hldGhlciBvciBub3QgdGhlIFhDTVAgcXVldWUgaXMgc3VzcGVuZGVkIGZyb20gZXhlY3V0aW5nIGluY29taW5nIFhDTXMgb3Igbm90LgBERGVsaXZlcnlGZWVGYWN0b3IBAQQFnC0BQAAAZKeztuANAAAAAAAAAAAExCBUaGUgZmFjdG9yIHRvIG11bHRpcGx5IHRoZSBiYXNlIGRlbGl2ZXJ5IGZlZSBieS4AAUEBAAHNBgAMTE1heEluYm91bmRTdXNwZW5kZWQ4EOgDAAAUSQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGluYm91bmQgWENNUCBjaGFubmVscyB0aGF0IGNhbiBiZSBzdXNwZW5kZWQgc2ltdWx0YW5lb3VzbHkuAF0BIEFueSBmdXJ0aGVyIGNoYW5uZWwgc3VzcGVuc2lvbnMgd2lsbCBmYWlsIGFuZCBtZXNzYWdlcyBtYXkgZ2V0IGRyb3BwZWQgd2l0aG91dCBmdXJ0aGVyRQEgbm90aWNlLiBDaG9vc2luZyBhIGhpZ2ggdmFsdWUgKDEwMDApIGlzIG9rYXk7IHRoZSB0cmFkZS1vZmYgdGhhdCBpcyBkZXNjcmliZWQgaW7YIFtgSW5ib3VuZFhjbXBTdXNwZW5kZWRgXSBzdGlsbCBhcHBsaWVzIGF0IHRoYXQgc2NhbGUuAGRNYXhBY3RpdmVPdXRib3VuZENoYW5uZWxzOBCAAAAAIGUBIE1heGltYWwgbnVtYmVyIG9mIG91dGJvdW5kIFhDTVAgY2hhbm5lbHMgdGhhdCBjYW4gaGF2ZSBtZXNzYWdlcyBxdWV1ZWQgYXQgdGhlIHNhbWUgdGltZS4AVQEgSWYgdGhpcyBpcyByZWFjaGVkLCB0aGVuIG5vIGZ1cnRoZXIgbWVzc2FnZXMgY2FuIGJlIHNlbnQgdG8gY2hhbm5lbHMgdGhhdCBkbyBub3QgeWV0XQEgaGF2ZSBhIG1lc3NhZ2UgcXVldWVkLiBUaGlzIHNob3VsZCBiZSBzZXQgdG8gdGhlIGV4cGVjdGVkIG1heGltdW0gb2Ygb3V0Ym91bmQgY2hhbm5lbHNhASB3aGljaCBpcyBkZXRlcm1pbmVkIGJ5IFtgU2VsZjo6Q2hhbm5lbEluZm9gXS4gSXQgaXMgaW1wb3J0YW50IHRvIHNldCB0aGlzIGxhcmdlIGVub3VnaCxdASBzaW5jZSBvdGhlcndpc2UgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBwcm90b2NvbCB3aWxsIG5vdCB3b3JrIGFzIGludGVuZGVkIGFuZCBtZXNzYWdlc1EBIG1heSBiZSBkcm9wcGVkLiBUaGlzIHZhbHVlIGluY3JlYXNlcyB0aGUgUG9WIGFuZCBzaG91bGQgdGhlcmVmb3JlIG5vdCBiZSBwaWNrZWQgdG9vTQEgaGlnaC4gR292ZXJuYW5jZSBuZWVkcyB0byBwYXkgYXR0ZW50aW9uIHRvIG5vdCBvcGVuIG1vcmUgY2hhbm5lbHMgdGhhbiB0aGlzIHZhbHVlLgAsTWF4UGFnZVNpemU4EACcAQAUuCBUaGUgbWF4aW1hbCBwYWdlIHNpemUgZm9yIEhSTVAgbWVzc2FnZSBwYWdlcy4AYQEgQSBsb3dlciBsaW1pdCBjYW4gYmUgc2V0IGR5bmFtaWNhbGx5LCBidXQgdGhpcyBpcyB0aGUgaGFyZC1saW1pdCBmb3IgdGhlIFBvViB3b3JzdCBjYXNlVQEgYmVuY2htYXJraW5nLiBUaGUgbGltaXQgZm9yIHRoZSBzaXplIG9mIGEgbWVzc2FnZSBpcyBzbGlnaHRseSBiZWxvdyB0aGlzLCBzaW5jZSBzb21luCBvdmVyaGVhZCBpcyBpbmN1cnJlZCBmb3IgZW5jb2RpbmcgdGhlIGZvcm1hdC4AATkJAAAAHgAALFBvbGthZG90WGNtASxQb2xrYWRvdFhjbTwwUXVlcnlDb3VudGVyAQAoIAAAAAAAAAAABIggVGhlIGxhdGVzdCBhdmFpbGFibGUgcXVlcnkgaW5kZXguABxRdWVyaWVzAAEEAig9CQQABFQgVGhlIG9uZ29pbmcgcXVlcmllcy4AKEFzc2V0VHJhcHMBAQQGPDgQAAAAABBoIFRoZSBleGlzdGluZyBhc3NldCB0cmFwcy4AYQEgS2V5IGlzIHRoZSBibGFrZTIgMjU2IGhhc2ggb2YgKG9yaWdpbiwgdmVyc2lvbmVkIGBBc3NldHNgKSBwYWlyLiBWYWx1ZSBpcyB0aGUgbnVtYmVyIG9mHQEgdGltZXMgdGhpcyBwYWlyIGhhcyBiZWVuIHRyYXBwZWQgKHVzdWFsbHkganVzdCAxIGlmIGl0IGV4aXN0cyBhdCBhbGwpLgA4U2FmZVhjbVZlcnNpb24AADgEAAhhASBEZWZhdWx0IHZlcnNpb24gdG8gZW5jb2RlIFhDTSB3aGVuIGxhdGVzdCB2ZXJzaW9uIG9mIGRlc3RpbmF0aW9uIGlzIHVua25vd24uIElmIGBOb25lYCw9ASB0aGVuIHRoZSBkZXN0aW5hdGlvbnMgd2hvc2UgWENNIHZlcnNpb24gaXMgdW5rbm93biBhcmUgY29uc2lkZXJlZCB1bnJlYWNoYWJsZS4AQFN1cHBvcnRlZFZlcnNpb24AAQgFAlEJOAQABPAgVGhlIExhdGVzdCB2ZXJzaW9ucyB0aGF0IHdlIGtub3cgdmFyaW91cyBsb2NhdGlvbnMgc3VwcG9ydC4AQFZlcnNpb25Ob3RpZmllcnMAAQgFAlEJKAQABAUBIEFsbCBsb2NhdGlvbnMgdGhhdCB3ZSBoYXZlIHJlcXVlc3RlZCB2ZXJzaW9uIG5vdGlmaWNhdGlvbnMgZnJvbS4AUFZlcnNpb25Ob3RpZnlUYXJnZXRzAAEIBQJRCVUJBAAIcQEgVGhlIHRhcmdldCBsb2NhdGlvbnMgdGhhdCBhcmUgc3Vic2NyaWJlZCB0byBvdXIgdmVyc2lvbiBjaGFuZ2VzLCBhcyB3ZWxsIGFzIHRoZSBtb3N0IHJlY2VudJQgb2Ygb3VyIHZlcnNpb25zIHdlIGluZm9ybWVkIHRoZW0gb2YuAFRWZXJzaW9uRGlzY292ZXJ5UXVldWUBAFkJBAAMZQEgRGVzdGluYXRpb25zIHdob3NlIGxhdGVzdCBYQ00gdmVyc2lvbiB3ZSB3b3VsZCBsaWtlIHRvIGtub3cuIER1cGxpY2F0ZXMgbm90IGFsbG93ZWQsIGFuZHEBIHRoZSBgdTMyYCBjb3VudGVyIGlzIHRoZSBudW1iZXIgb2YgdGltZXMgdGhhdCBhIHNlbmQgdG8gdGhlIGRlc3RpbmF0aW9uIGhhcyBiZWVuIGF0dGVtcHRlZCyMIHdoaWNoIGlzIHVzZWQgYXMgYSBwcmlvcml0aXphdGlvbi4AQEN1cnJlbnRNaWdyYXRpb24AAGUJBAAEnCBUaGUgY3VycmVudCBtaWdyYXRpb24ncyBzdGFnZSwgaWYgYW55LgBUUmVtb3RlTG9ja2VkRnVuZ2libGVzAAEMBQICaQltCQQABPAgRnVuZ2libGUgYXNzZXRzIHdoaWNoIHdlIGtub3cgYXJlIGxvY2tlZCBvbiBhIHJlbW90ZSBjaGFpbi4APExvY2tlZEZ1bmdpYmxlcwABBAIEfQkEAATgIEZ1bmdpYmxlIGFzc2V0cyB3aGljaCB3ZSBrbm93IGFyZSBsb2NrZWQgb24gdGhpcyBjaGFpbi4AVFhjbUV4ZWN1dGlvblN1c3BlbmRlZAEAyAQABLQgR2xvYmFsIHN1c3BlbnNpb24gc3RhdGUgb2YgdGhlIFhDTSBleGVjdXRvci4APFNob3VsZFJlY29yZFhjbQEAyAQAHFkBIFdoZXRoZXIgb3Igbm90IGluY29taW5nIFhDTXMgKGJvdGggZXhlY3V0ZWQgbG9jYWxseSBhbmQgcmVjZWl2ZWQpIHNob3VsZCBiZSByZWNvcmRlZC7EIE9ubHkgb25lIFhDTSBwcm9ncmFtIHdpbGwgYmUgcmVjb3JkZWQgYXQgYSB0aW1lLikBIFRoaXMgaXMgbWVhbnQgdG8gYmUgdXNlZCBpbiBydW50aW1lIEFQSXMsIGFuZCBpdCdzIGFkdmlzZWQgaXQgc3RheXMgZmFsc2UNASBmb3IgYWxsIG90aGVyIHVzZSBjYXNlcywgc28gYXMgdG8gbm90IGRlZ3JhZGUgcmVndWxhciBwZXJmb3JtYW5jZS4AWQEgT25seSByZWxldmFudCBpZiB0aGlzIHBhbGxldCBpcyBiZWluZyB1c2VkIGFzIHRoZSBbYHhjbV9leGVjdXRvcjo6dHJhaXRzOjpSZWNvcmRYY21gXcggaW1wbGVtZW50YXRpb24gaW4gdGhlIFhDTSBleGVjdXRvciBjb25maWd1cmF0aW9uLgAsUmVjb3JkZWRYY20AAF0CBAAYSQEgSWYgW2BTaG91bGRSZWNvcmRYY21gXSBpcyBzZXQgdG8gdHJ1ZSwgdGhlbiB0aGUgbGFzdCBYQ00gcHJvZ3JhbSBleGVjdXRlZCBsb2NhbGx5VCB3aWxsIGJlIHN0b3JlZCBoZXJlLikBIFJ1bnRpbWUgQVBJcyBjYW4gZmV0Y2ggdGhlIFhDTSB0aGF0IHdhcyBleGVjdXRlZCBieSBhY2Nlc3NpbmcgdGhpcyB2YWx1ZS4AWQEgT25seSByZWxldmFudCBpZiB0aGlzIHBhbGxldCBpcyBiZWluZyB1c2VkIGFzIHRoZSBbYHhjbV9leGVjdXRvcjo6dHJhaXRzOjpSZWNvcmRYY21gXcggaW1wbGVtZW50YXRpb24gaW4gdGhlIFhDTSBleGVjdXRvciBjb25maWd1cmF0aW9uLgBEQXV0aG9yaXplZEFsaWFzZXMAAQQCSQGJCQQADGUBIE1hcCBvZiBhdXRob3JpemVkIGFsaWFzZXJzIG9mIGxvY2FsIG9yaWdpbnMuIEVhY2ggbG9jYWwgbG9jYXRpb24gY2FuIGF1dGhvcml6ZSBhIGxpc3Qgb2ZZASBvdGhlciBsb2NhdGlvbnMgdG8gYWxpYXMgaW50byBpdC4gRWFjaCBhbGlhc2VyIGlzIG9ubHkgdmFsaWQgdW50aWwgaXRzIGlubmVyIGBleHBpcnlgOCBibG9jayBudW1iZXIuAAFFAQgBArkBVGhpcyBleHRyaW5zaWMgdXNlcyBgV2VpZ2h0TGltaXQ6OlVubGltaXRlZGAsIHBsZWFzZSBtaWdyYXRlIHRvIGBsaW1pdGVkX3RlbGVwb3J0X2Fzc2V0c2Agb3IgYHRyYW5zZmVyX2Fzc2V0c2AAAgLZAVRoaXMgZXh0cmluc2ljIHVzZXMgYFdlaWdodExpbWl0OjpVbmxpbWl0ZWRgLCBwbGVhc2UgbWlncmF0ZSB0byBgbGltaXRlZF9yZXNlcnZlX3RyYW5zZmVyX2Fzc2V0c2Agb3IgYHRyYW5zZmVyX2Fzc2V0c2AAAdEGABBEVW5pdmVyc2FsTG9jYXRpb27kGAIJAgBRUASEIFRoaXMgY2hhaW4ncyBVbml2ZXJzYWwgTG9jYXRpb24uAFBBZHZlcnRpc2VkWGNtVmVyc2lvbjgQBQAAAAglASBUaGUgbGF0ZXN0IHN1cHBvcnRlZCB2ZXJzaW9uIHRoYXQgd2UgYWR2ZXJ0aXNlLiBHZW5lcmFsbHkganVzdCBzZXQgaXQgdG+EIGBwYWxsZXRfeGNtOjpDdXJyZW50WGNtVmVyc2lvbmAuAChNYXhMb2NrZXJzOBAIAAAABBkBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBsb2NhbCBYQ00gbG9ja3MgdGhhdCBhIHNpbmdsZSBhY2NvdW50IG1heSBoYXZlLgBYTWF4UmVtb3RlTG9ja0NvbnN1bWVyczgQAAAAAAT8IFRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25zdW1lcnMgYSBzaW5nbGUgcmVtb3RlIGxvY2sgbWF5IGhhdmUuAAGhCQQYArxVc2UgYExvY2FsRXhlY3V0aW9uSW5jb21wbGV0ZVdpdGhFcnJvcmAgaW5zdGVhZAEYMjAuMC4wCCxSdW50aW1lQ2FsbCAEZCBUaGUgcnVudGltZSBgQ2FsbGAgdHlwZS5wUmVtb3RlTG9ja0NvbnN1bWVySWRlbnRpZmllchAExCBUaGUgSUQgdHlwZSBmb3IgbG9jYWwgY29uc3VtZXJzIG9mIHJlbW90ZSBsb2Nrcy4AHwAAKEN1bXVsdXNYY20AARkDAAHhBgAAAAAAIAAAME1lc3NhZ2VRdWV1ZQEwTWVzc2FnZVF1ZXVlDDBCb29rU3RhdGVGb3IBAQQFIQOpCXQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATMIFRoZSBpbmRleCBvZiB0aGUgZmlyc3QgYW5kIGxhc3QgKG5vbi1lbXB0eSkgcGFnZXMuACxTZXJ2aWNlSGVhZAAAIQMEAAS8IFRoZSBvcmlnaW4gYXQgd2hpY2ggd2Ugc2hvdWxkIGJlZ2luIHNlcnZpY2luZy4AFFBhZ2VzAAEIBQW1CbkJBAAEiCBUaGUgbWFwIG9mIHBhZ2UgaW5kaWNlcyB0byBwYWdlcy4AAR0DAAHlBgAQIEhlYXBTaXplOBAAnAEAFD0BIFRoZSBzaXplIG9mIHRoZSBwYWdlOyB0aGlzIGltcGxpZXMgdGhlIG1heGltdW0gbWVzc2FnZSBzaXplIHdoaWNoIGNhbiBiZSBzZW50LgBZASBBIGdvb2QgdmFsdWUgZGVwZW5kcyBvbiB0aGUgZXhwZWN0ZWQgbWVzc2FnZSBzaXplcywgdGhlaXIgd2VpZ2h0cywgdGhlIHdlaWdodCB0aGF0IGlzXQEgYXZhaWxhYmxlIGZvciBwcm9jZXNzaW5nIHRoZW0gYW5kIHRoZSBtYXhpbWFsIG5lZWRlZCBtZXNzYWdlIHNpemUuIFRoZSBtYXhpbWFsIG1lc3NhZ2URASBzaXplIGlzIHNsaWdodGx5IGxvd2VyIHRoYW4gdGhpcyBhcyBkZWZpbmVkIGJ5IFtgTWF4TWVzc2FnZUxlbk9mYF0uACBNYXhTdGFsZTgQCAAAAAxdASBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc3RhbGUgcGFnZXMgKGkuZS4gb2Ygb3ZlcndlaWdodCBtZXNzYWdlcykgYWxsb3dlZCBiZWZvcmUgY3VsbGluZ1EBIGNhbiBoYXBwZW4uIE9uY2UgdGhlcmUgYXJlIG1vcmUgc3RhbGUgcGFnZXMgdGhhbiB0aGlzLCB0aGVuIGhpc3RvcmljYWwgcGFnZXMgbWF5IGJl/CBkcm9wcGVkLCBldmVuIGlmIHRoZXkgY29udGFpbiB1bnByb2Nlc3NlZCBvdmVyd2VpZ2h0IG1lc3NhZ2VzLgA0U2VydmljZVdlaWdodKUCLAEHAFhA+6ICAOAAGEEBIFRoZSBhbW91bnQgb2Ygd2VpZ2h0IChpZiBhbnkpIHdoaWNoIHNob3VsZCBiZSBwcm92aWRlZCB0byB0aGUgbWVzc2FnZSBxdWV1ZSBmb3KoIHNlcnZpY2luZyBlbnF1ZXVlZCBpdGVtcyBgb25faW5pdGlhbGl6ZWAuAPwgVGhpcyBtYXkgYmUgbGVnaXRpbWF0ZWx5IGBOb25lYCBpbiB0aGUgY2FzZSB0aGF0IHlvdSB3aWxsIGNhbGxdASBgU2VydmljZVF1ZXVlczo6c2VydmljZV9xdWV1ZXNgIG1hbnVhbGx5IG9yIHNldCBbYFNlbGY6OklkbGVNYXhTZXJ2aWNlV2VpZ2h0YF0gdG8gaGF2ZVQgaXQgcnVuIGluIGBvbl9pZGxlYC4AUElkbGVNYXhTZXJ2aWNlV2VpZ2h0pQIsAQcAWED7ogIA4AAUXQEgVGhlIG1heGltdW0gYW1vdW50IG9mIHdlaWdodCAoaWYgYW55KSB0byBiZSB1c2VkIGZyb20gcmVtYWluaW5nIHdlaWdodCBgb25faWRsZWAgd2hpY2hBASBzaG91bGQgYmUgcHJvdmlkZWQgdG8gdGhlIG1lc3NhZ2UgcXVldWUgZm9yIHNlcnZpY2luZyBlbnF1ZXVlZCBpdGVtcyBgb25faWRsZWAuPQEgVXNlZnVsIGZvciBwYXJhY2hhaW5zIHRvIHByb2Nlc3MgbWVzc2FnZXMgYXQgdGhlIHNhbWUgYmxvY2sgdGhleSBhcmUgcmVjZWl2ZWQuACkBIElmIGBOb25lYCwgaXQgd2lsbCBub3QgY2FsbCBgU2VydmljZVF1ZXVlczo6c2VydmljZV9xdWV1ZXNgIGluIGBvbl9pZGxlYC4AAcEJAAQQU2l6ZTgEVCBQYWdlL2hlYXAgc2l6ZSB0eXBlLgAiAAAcVXRpbGl0eQABJQMAAe0GAARMYmF0Y2hlZF9jYWxsc19saW1pdDgQqioAAASoIFRoZSBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIGJhdGNoZWQgY2FsbHMuAAHFCQAILFJ1bnRpbWVDYWxsIARsIFRoZSBvdmVyYXJjaGluZyBjYWxsIHR5cGUuNFBhbGxldHNPcmlnaW4xAwTwIFRoZSBjYWxsZXIgb3JpZ2luLCBvdmVyYXJjaGluZyB0eXBlIG9mIGFsbCBwYWxsZXRzIG9yaWdpbnMuACgAACBNdWx0aXNpZwEgTXVsdGlzaWcEJE11bHRpc2lncwABCAUCyQnNCQQABJQgVGhlIHNldCBvZiBvcGVuIG11bHRpc2lnIG9wZXJhdGlvbnMuAAGJAwAB9QYADCxEZXBvc2l0QmFzZcRAADyRYAQAAAAAAAAAAAAAABhZASBUaGUgYmFzZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHRvIHJlc2VydmUgZm9yIGNyZWF0aW5nIGEgbXVsdGlzaWcgZXhlY3V0aW9uIG9yIHRvhCBzdG9yZSBhIGRpc3BhdGNoIGNhbGwgZm9yIGxhdGVyLgABASBUaGlzIGlzIGhlbGQgZm9yIGFuIGFkZGl0aW9uYWwgc3RvcmFnZSBpdGVtIHdob3NlIHZhbHVlIHNpemUgaXMxASBgNCArIHNpemVvZigoQmxvY2tOdW1iZXIsIEJhbGFuY2UsIEFjY291bnRJZCkpYCBieXRlcyBhbmQgd2hvc2Uga2V5IHNpemUgaXOAIGAzMiArIHNpemVvZihBY2NvdW50SWQpYCBieXRlcy4ANERlcG9zaXRGYWN0b3LEQAAgvL4AAAAAAAAAAAAAAAAMVQEgVGhlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgcGVyIHVuaXQgdGhyZXNob2xkIHdoZW4gY3JlYXRpbmcgYSBtdWx0aXNpZyBleGVjdXRpb24uACUBIFRoaXMgaXMgaGVsZCBmb3IgYWRkaW5nIDMyIGJ5dGVzIG1vcmUgaW50byBhIHByZS1leGlzdGluZyBzdG9yYWdlIHZhbHVlLgA4TWF4U2lnbmF0b3JpZXM4EGQAAAAE7CBUaGUgbWF4aW11bSBhbW91bnQgb2Ygc2lnbmF0b3JpZXMgYWxsb3dlZCBpbiB0aGUgbXVsdGlzaWcuAAHVCQAELFJ1bnRpbWVDYWxsIARsIFRoZSBvdmVyYXJjaGluZyBjYWxsIHR5cGUuACkAABBTdWRvARBTdWRvBAxLZXkAAAQEAASEIFRoZSBgQWNjb3VudElkYCBvZiB0aGUgc3VkbyBrZXkuAAGVAwAB+QYAAAHZCQAELFJ1bnRpbWVDYWxsIARIIEEgc3Vkby1hYmxlIGNhbGwuACoAADxWZXJpZnlTaWduYXR1cmUAAAAAAAQkU2lnbmF0dXJlNQQE9CBTaWduYXR1cmUgdHlwZSB0aGF0IHRoZSBleHRlbnNpb24gb2YgdGhpcyBwYWxsZXQgY2FuIHZlcmlmeS4AKwAAFFByb3h5ARRQcm94eQgcUHJveGllcwEBBAUE3QlEAAAAAAAAAAAAAAAAAAAAAAAIRQEgVGhlIHNldCBvZiBhY2NvdW50IHByb3hpZXMuIE1hcHMgdGhlIGFjY291bnQgd2hpY2ggaGFzIGRlbGVnYXRlZCB0byB0aGUgYWNjb3VudHMhASB3aGljaCBhcmUgYmVpbmcgZGVsZWdhdGVkIHRvLCB0b2dldGhlciB3aXRoIHRoZSBhbW91bnQgaGVsZCBvbiBkZXBvc2l0LgA0QW5ub3VuY2VtZW50cwEBBAUE7QlEAAAAAAAAAAAAAAAAAAAAAAAErCBUaGUgYW5ub3VuY2VtZW50cyBtYWRlIGJ5IHRoZSBwcm94eSAoa2V5KS4AAZkDAAEBBwAYQFByb3h5RGVwb3NpdEJhc2XEQAAMd0IDAAAAAAAAAAAAAAAQEQEgVGhlIGJhc2UgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCB0byByZXNlcnZlIGZvciBjcmVhdGluZyBhIHByb3h5LgABASBUaGlzIGlzIGhlbGQgZm9yIGFuIGFkZGl0aW9uYWwgc3RvcmFnZSBpdGVtIHdob3NlIHZhbHVlIHNpemUgaXMlASBgc2l6ZW9mKEJhbGFuY2UpYCBieXRlcyBhbmQgd2hvc2Uga2V5IHNpemUgaXMgYHNpemVvZihBY2NvdW50SWQpYCBieXRlcy4ASFByb3h5RGVwb3NpdEZhY3RvcsRAAAGyxAAAAAAAAAAAAAAAABS8IFRoZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHBlciBwcm94eSBhZGRlZC4ANQEgVGhpcyBpcyBoZWxkIGZvciBhZGRpbmcgMzIgYnl0ZXMgcGx1cyBhbiBpbnN0YW5jZSBvZiBgUHJveHlUeXBlYCBtb3JlIGludG8gYWEBIHByZS1leGlzdGluZyBzdG9yYWdlIHZhbHVlLiBUaHVzLCB3aGVuIGNvbmZpZ3VyaW5nIGBQcm94eURlcG9zaXRGYWN0b3JgIG9uZSBzaG91bGQgdGFrZfQgaW50byBhY2NvdW50IGAzMiArIHByb3h5X3R5cGUuZW5jb2RlKCkubGVuKClgIGJ5dGVzIG9mIGRhdGEuAChNYXhQcm94aWVzOBAgAAAABPAgVGhlIG1heGltdW0gYW1vdW50IG9mIHByb3hpZXMgYWxsb3dlZCBmb3IgYSBzaW5nbGUgYWNjb3VudC4AKE1heFBlbmRpbmc4ECAAAAAERQEgVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUtZGVsYXllZCBhbm5vdW5jZW1lbnRzIHRoYXQgYXJlIGFsbG93ZWQgdG8gYmUgcGVuZGluZy4AXEFubm91bmNlbWVudERlcG9zaXRCYXNlxEAAFCZyAwAAAAAAAAAAAAAAEDEBIFRoZSBiYXNlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgdG8gcmVzZXJ2ZSBmb3IgY3JlYXRpbmcgYW4gYW5ub3VuY2VtZW50LgBJASBUaGlzIGlzIGhlbGQgd2hlbiBhIG5ldyBzdG9yYWdlIGl0ZW0gaG9sZGluZyBhIGBCYWxhbmNlYCBpcyBjcmVhdGVkICh0eXBpY2FsbHkgMTYgIGJ5dGVzKS4AZEFubm91bmNlbWVudERlcG9zaXRGYWN0b3LEQAACZIkBAAAAAAAAAAAAAAAQ1CBUaGUgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCBwZXIgYW5ub3VuY2VtZW50IG1hZGUuAFkBIFRoaXMgaXMgaGVsZCBmb3IgYWRkaW5nIGFuIGBBY2NvdW50SWRgLCBgSGFzaGAgYW5kIGBCbG9ja051bWJlcmAgKHR5cGljYWxseSA2OCBieXRlcymMIGludG8gYSBwcmUtZXhpc3Rpbmcgc3RvcmFnZSB2YWx1ZS4AAf0JAAgsUnVudGltZUNhbGwgBGwgVGhlIG92ZXJhcmNoaW5nIGNhbGwgdHlwZS4kUHJveHlUeXBloQMQVQEgQSBraW5kIG9mIHByb3h5OyBzcGVjaWZpZWQgd2l0aCB0aGUgcHJveHkgYW5kIHBhc3NlZCBpbiB0byB0aGUgYElzUHJveHlhYmxlYCBmaWx0ZXIuUQEgVGhlIGluc3RhbmNlIGZpbHRlciBkZXRlcm1pbmVzIHdoZXRoZXIgYSBnaXZlbiBjYWxsIG1heSBiZSBwcm94aWVkIHVuZGVyIHRoaXMgdHlwZS4ATQEgSU1QT1JUQU5UOiBgRGVmYXVsdGAgbXVzdCBiZSBwcm92aWRlZCBhbmQgTVVTVCBCRSB0aGUgdGhlICptb3N0IHBlcm1pc3NpdmUqIHZhbHVlLggYCdeDRnJ6DvWMD6A7r6Mjy8UUiNkqGqcTewO/tQ78F0RjaGVja19wZXJtaXNzaW9ucwgQY2FsbCAocHJveHlfdHlwZaEDyAT0IENoZWNrIGlmIGEgYFJ1bnRpbWVDYWxsYCBpcyBhbGxvd2VkIGZvciBhIGdpdmVuIGBQcm94eVR5cGVgLgAYCdeDRnJ6DvWMD6A7r6MjFxSwYH1irwo7OwrSxdVcWCxpc19zdXBlcnNldAggdG9fY2hlY2uhAxxhZ2FpbnN0oQPIBPQgQ2hlY2sgaWYgb25lIGBQcm94eVR5cGVgIGlzIGEgc3Vic2V0IG9mIGFub3RoZXIgYFByb3h5VHlwZWAuACwAACBJZGVudGl0eQEgSWRlbnRpdHkwKElkZW50aXR5T2YAAQQFBAEKBAAQaQEgSW5mb3JtYXRpb24gdGhhdCBpcyBwZXJ0aW5lbnQgdG8gaWRlbnRpZnkgdGhlIGVudGl0eSBiZWhpbmQgYW4gYWNjb3VudC4gRmlyc3QgaXRlbSBpcyB0aGXgIHJlZ2lzdHJhdGlvbiwgc2Vjb25kIGlzIHRoZSBhY2NvdW50J3MgcHJpbWFyeSB1c2VybmFtZS4AwCBUV09YLU5PVEU6IE9LIOKAlSBgQWNjb3VudElkYCBpcyBhIHNlY3VyZSBoYXNoLgAoVXNlcm5hbWVPZgABBAUEQQQEAAS8IElkZW50aWZpZXMgdGhlIHByaW1hcnkgdXNlcm5hbWUgb2YgYW4gYWNjb3VudC4AHFN1cGVyT2YAAQQCBCkEBAAIYQEgVGhlIHN1cGVyLWlkZW50aXR5IG9mIGFuIGFsdGVybmF0aXZlICJzdWIiIGlkZW50aXR5IHRvZ2V0aGVyIHdpdGggaXRzIG5hbWUsIHdpdGhpbiB0aGF0UQEgY29udGV4dC4gSWYgdGhlIGFjY291bnQgaXMgbm90IHNvbWUgb3RoZXIgYWNjb3VudCdzIHN1Yi1pZGVudGl0eSwgdGhlbiBqdXN0IGBOb25lYC4AGFN1YnNPZgEBBAUEEQpEAAAAAAAAAAAAAAAAAAAAAAAUuCBBbHRlcm5hdGl2ZSAic3ViIiBpZGVudGl0aWVzIG9mIHRoaXMgYWNjb3VudC4AHQEgVGhlIGZpcnN0IGl0ZW0gaXMgdGhlIGRlcG9zaXQsIHRoZSBzZWNvbmQgaXMgYSB2ZWN0b3Igb2YgdGhlIGFjY291bnRzLgDAIFRXT1gtTk9URTogT0sg4oCVIGBBY2NvdW50SWRgIGlzIGEgc2VjdXJlIGhhc2guAChSZWdpc3RyYXJzAQAVCgQAEE0BIFRoZSBzZXQgb2YgcmVnaXN0cmFycy4gTm90IGV4cGVjdGVkIHRvIGdldCB2ZXJ5IGJpZyBhcyBjYW4gb25seSBiZSBhZGRlZCB0aHJvdWdoIGGoIHNwZWNpYWwgb3JpZ2luIChsaWtlbHkgYSBjb3VuY2lsIG1vdGlvbikuACkBIFRoZSBpbmRleCBpbnRvIHRoaXMgY2FuIGJlIGNhc3QgdG8gYFJlZ2lzdHJhckluZGV4YCB0byBnZXQgYSB2YWxpZCB2YWx1ZS4ALEF1dGhvcml0eU9mAAEEBSUKKQoEAAT0IEEgbWFwIG9mIHRoZSBhY2NvdW50cyB3aG8gYXJlIGF1dGhvcml6ZWQgdG8gZ3JhbnQgdXNlcm5hbWVzLgA4VXNlcm5hbWVJbmZvT2YAAQQCQQQtCgQAGHUBIFJldmVyc2UgbG9va3VwIGZyb20gYHVzZXJuYW1lYCB0byB0aGUgYEFjY291bnRJZGAgdGhhdCBoYXMgcmVnaXN0ZXJlZCBpdCBhbmQgdGhlIHByb3ZpZGVyIG9mbQEgdGhlIHVzZXJuYW1lLiBUaGUgYG93bmVyYCB2YWx1ZSBzaG91bGQgYmUgYSBrZXkgaW4gdGhlIGBVc2VybmFtZU9mYCBtYXAsIGJ1dCBpdCBtYXkgbm90IGlm8CB0aGUgdXNlciBoYXMgY2xlYXJlZCB0aGVpciB1c2VybmFtZSBvciBpdCBoYXMgYmVlbiByZW1vdmVkLgBpASBNdWx0aXBsZSB1c2VybmFtZXMgbWF5IG1hcCB0byB0aGUgc2FtZSBgQWNjb3VudElkYCwgYnV0IGBVc2VybmFtZU9mYCB3aWxsIG9ubHkgbWFwIHRvIG9uZUggcHJpbWFyeSB1c2VybmFtZS4AQFBlbmRpbmdVc2VybmFtZXMAAQQCQQQ1CgQAIG0BIFVzZXJuYW1lcyB0aGF0IGFuIGF1dGhvcml0eSBoYXMgZ3JhbnRlZCwgYnV0IHRoYXQgdGhlIGFjY291bnQgY29udHJvbGxlciBoYXMgbm90IGNvbmZpcm1lZEwgdGhhdCB0aGV5IHdhbnQgaXQuACUBIFVzZWQgcHJpbWFyaWx5IGluIGNhc2VzIHdoZXJlIHRoZSBgQWNjb3VudElkYCBjYW5ub3QgcHJvdmlkZSBhIHNpZ25hdHVyZV0BIGJlY2F1c2UgdGhleSBhcmUgYSBwdXJlIHByb3h5LCBtdWx0aXNpZywgZXRjLiBJbiBvcmRlciB0byBjb25maXJtIGl0LCB0aGV5IHNob3VsZCBjYWxssCBbYWNjZXB0X3VzZXJuYW1lXShgQ2FsbDo6YWNjZXB0X3VzZXJuYW1lYCkuAB0BIEZpcnN0IHR1cGxlIGl0ZW0gaXMgdGhlIGFjY291bnQgYW5kIHNlY29uZCBpcyB0aGUgYWNjZXB0YW5jZSBkZWFkbGluZS4ASFVuYmluZGluZ1VzZXJuYW1lcwABBAJBBDgEABBdASBVc2VybmFtZXMgZm9yIHdoaWNoIHRoZSBhdXRob3JpdHkgdGhhdCBncmFudGVkIHRoZW0gaGFzIHN0YXJ0ZWQgdGhlIHJlbW92YWwgcHJvY2VzcyBieXEBIHVuYmluZGluZyB0aGVtLiBFYWNoIHVuYmluZGluZyB1c2VybmFtZSBtYXBzIHRvIGl0cyBncmFjZSBwZXJpb2QgZXhwaXJ5LCB3aGljaCBpcyB0aGUgZmlyc3TcIGJsb2NrIGluIHdoaWNoIHRoZSB1c2VybmFtZSBjb3VsZCBiZSBkZWxldGVkIHRocm91Z2ggYcQgW3JlbW92ZV91c2VybmFtZV0oYENhbGw6OnJlbW92ZV91c2VybmFtZWApIGNhbGwuAEBQZXJzb25JZGVudGl0aWVzAAEEAgg5CgQACGUBIFRoZSBtZXRhZGF0YSBhc3NvY2lhdGVkIHdpdGggYSBwZXJzb24gdGhyb3VnaCB0aGVpciBjb250ZXh0dWFsIGFsaWFzIGZvciB0aGUgcHVycG9zZXMgb2aIIHJlZ2lzdGVyaW5nIGlkZW50aXR5IGluZm9ybWF0aW9uLgA4QWNjb3VudFRvQWxpYXMAAQQCBAgEAAhlASBSZXZlcnNlIGxvb2t1cCBvZiBhY2NvdW50cyBjb250cm9sbGVkIGJ5IGEgcGVyc29uIHRocm91Z2ggYSBjb250ZXh0dWFsIGFsaWFzLiBBbGwgcGVvcGxlLQEgdGhhdCByZWdpc3RlcmVkIGFuIGlkZW50aXR5IG11c3QgYWxzbyBhc3NvY2lhdGUgYW4gb24tY2hhaW4gYWNjb3VudCB0byBpdC4AWFBlbmRpbmdVc2VybmFtZVJlcG9ydHMAAQQCCEkKBAAElCBTdG9yZXMgcGVuZGluZyByZXBvcnRzIG9mIHVzZXJuYW1lcy4AAaUDAAEJBwBAMEJhc2ljRGVwb3NpdMRAANVfuQIAAAAAAAAAAAAAAATYIFRoZSBhbW91bnQgaGVsZCBvbiBkZXBvc2l0IGZvciBhIHJlZ2lzdGVyZWQgaWRlbnRpdHkuACxCeXRlRGVwb3NpdMRAAOH1BQAAAAAAAAAAAAAAAAQdASBUaGUgYW1vdW50IGhlbGQgb24gZGVwb3NpdCBwZXIgZW5jb2RlZCBieXRlIGZvciBhIHJlZ2lzdGVyZWQgaWRlbnRpdHkuADxVc2VybmFtZURlcG9zaXTEQAAgvL4AAAAAAAAAAAAAAAAIVQEgVGhlIGFtb3VudCBoZWxkIG9uIGRlcG9zaXQgcGVyIHJlZ2lzdGVyZWQgdXNlcm5hbWUuIFRoaXMgdmFsdWUgc2hvdWxkIGNoYW5nZSBvbmx5IGlu9CBydW50aW1lIHVwZ3JhZGVzIHdpdGggcHJvcGVyIG1pZ3JhdGlvbiBvZiBleGlzdGluZyBkZXBvc2l0cy4ARFN1YkFjY291bnREZXBvc2l0xEAAefOPAwAAAAAAAAAAAAAADGUBIFRoZSBhbW91bnQgaGVsZCBvbiBkZXBvc2l0IGZvciBhIHJlZ2lzdGVyZWQgc3ViYWNjb3VudC4gVGhpcyBzaG91bGQgYWNjb3VudCBmb3IgdGhlIGZhY3RlASB0aGF0IG9uZSBzdG9yYWdlIGl0ZW0ncyB2YWx1ZSB3aWxsIGluY3JlYXNlIGJ5IHRoZSBzaXplIG9mIGFuIGFjY291bnQgSUQsIGFuZCB0aGVyZSB3aWxsNQEgYmUgYW5vdGhlciB0cmllIGl0ZW0gd2hvc2UgdmFsdWUgaXMgdGhlIHNpemUgb2YgYW4gYWNjb3VudCBJRCBwbHVzIDMyIGJ5dGVzLgBUVXNlcm5hbWVSZXBvcnREZXBvc2l0xEAAKGvuAAAAAAAAAAAAAAAABMggVGhlIGFtb3VudCBoZWxkIG9uIGRlcG9zaXQgcGVyIHJlcG9ydGVkIHVzZXJuYW1lLgA4TWF4U3ViQWNjb3VudHM4EGQAAAAEDQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIHN1Yi1hY2NvdW50cyBhbGxvd2VkIHBlciBpZGVudGlmaWVkIGFjY291bnQuAFRVc2VybmFtZVJlcG9ydFRpbWVvdXQ4EIDGEwAMSQEgVGhlIG51bWJlciBvZiBibG9ja3MgdGhhdCBoYXZlIHRvIHBhc3MgYmV0d2VlbiB0aGUgbGFzdCB0aW1lIGEgZ2l2ZW4gdXNlcm5hbWUgd2FzXQEgcmVwb3J0ZWQgYW5kIG5vdyBpbiBvcmRlciB0byBiZSBhYmxlIHRvIHJlcG9ydCBpdCBhZ2Fpbi4gSW4gb3RoZXIgd29yZHMsIGl0IHJlcHJlc2VudHOUIHRoZSB1c2VybmFtZSB2YWxpZGl0eSBzYWZldHkgcGVyaW9kLgA0TWF4UmVnaXN0cmFyczgQFAAAAAhNASBNYXhpbXVtIG51bWJlciBvZiByZWdpc3RyYXJzIGFsbG93ZWQgaW4gdGhlIHN5c3RlbS4gTmVlZGVkIHRvIGJvdW5kIHRoZSBjb21wbGV4aXR5fCBvZiwgZS5nLiwgdXBkYXRpbmcganVkZ2VtZW50cy4ANE1heEp1ZGdlbWVudHM4EAMAAAAEKQEgTWF4aW11bSBudW1iZXIgb2YganVkZ2VtZW50cyBwZXIgcGVyc29uYWwgaWRlbnRpdHkgYWxsb3dlZCBpbiB0aGUgc3lzdGVtLgBkUGVuZGluZ1VzZXJuYW1lRXhwaXJhdGlvbjgQQJ0EAAQVASBUaGUgbnVtYmVyIG9mIGJsb2NrcyB3aXRoaW4gd2hpY2ggYSB1c2VybmFtZSBncmFudCBtdXN0IGJlIGFjY2VwdGVkLgBMVXNlcm5hbWVHcmFjZVBlcmlvZDgQQPoBAAhZASBUaGUgbnVtYmVyIG9mIGJsb2NrcyB0aGF0IG11c3QgcGFzcyB0byBlbmFibGUgdGhlIHBlcm1hbmVudCBkZWxldGlvbiBvZiBhIHVzZXJuYW1lIGJ5aCBpdHMgcmVzcGVjdGl2ZSBhdXRob3JpdHkuADxNYXhTdWZmaXhMZW5ndGg4EAcAAAAEgCBUaGUgbWF4aW11bSBsZW5ndGggb2YgYSBzdWZmaXguAERNYXhVc2VybmFtZUxlbmd0aDgQIAAAAARhASBUaGUgbWF4aW11bSBsZW5ndGggb2YgYSB1c2VybmFtZSwgaW5jbHVkaW5nIGl0cyBzdWZmaXggYW5kIGFueSBzeXN0ZW0tYWRkZWQgZGVsaW1pdGVycy4ARE1pblVzZXJuYW1lTGVuZ3RoOBACAAAABLAgVGhlIG1pbmltdW0gbGVuZ3RoIG9mIGEgdXNlcm5hbWUgb3Igc3VmZml4LgBgQ3JlZGVudGlhbFJlbW92YWxQZW5hbHR5xEAA8gUqAQAAAAAAAAAAAAAACFUBIFRoZSBmZWUgdGhhdCBhIHBlcnNvbiBtdXN0IHBheSB0aHJvdWdoIHRoZWlyIGFzc29jaWF0ZWQgb24tY2hhaW4gYWNjb3VudCBpbiBvcmRlciB0b1wgcmVtb3ZlIHRoZWlyIGlkZW50aXR5LgBAaWRlbnRpdHlfY29udGV4dAiAcG9wOnBvbGthZG90Lm5ldHdvcmsvaWRlbnRpdHkgICAIQQEgVGhlIGNvbnRleHQgdXNlZCBmb3IgdGhlIHByb29mcyByZXF1aXJlZCB0byBhdXRoZW50aWNhdGUgYXMgYSBwZXJzb25hbCBhbGlhcyBpbiggaWRlbnRpdHkuAAFNCgAERE9mZmNoYWluU2lnbmF0dXJlNQQM4CBTaWduYXR1cmUgdHlwZSBmb3IgcHJlLWF1dGhvcml6aW5nIHVzZXJuYW1lcyBvZmYtY2hhaW4uABEBIENhbiB2ZXJpZnkgd2hldGhlciBhbiBgU2VsZjo6U2lnbmluZ1B1YmxpY0tleWAgY3JlYXRlZCBhIHNpZ25hdHVyZS4AMgAAGFBlb3BsZQEYUGVvcGxlJBBLZXlzAAEEAggoBAAUSQEgVGhlIGN1cnJlbnQgaW5kaXZpZHVhbHMgd2UgcmVjb2duaXNlLCBidXQgbm90IG5lY2Vzc2FyaWx5IHlldCBpbmNsdWRlZCBpbiBhIHJpbmcuAHUBIExvb2stdXAgZnJvbSB0aGUgY3J5cHRvIChwdWJsaWMpIGtleSB0byB0aGUgaW1tdXRhYmxlIElEIG9mIHRoZSBpbmRpdmlkdWFsIChgUGVyc29uYWxJZGApLiBBXQEgcGVyc29uIGNhbiBoYXZlIHR3byBkaWZmZXJlbnQgZW50cmllcyBpbiB0aGlzIG1hcCBpZiB0aGV5IHF1ZXVlZCBhIGtleSBtaWdyYXRpb24gd2hpY2hkIGhhc24ndCBiZWVuIGVuYWN0ZWQgeWV0LgA4Q291bnRlckZvcktleXMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAYUGVvcGxlAAEEAihRCgQADEkBIFRoZSBjdXJyZW50IGluZGl2aWR1YWxzIHdlIHJlY29nbmlzZSwgYnV0IG5vdCBuZWNlc3NhcmlseSB5ZXQgaW5jbHVkZWQgaW4gYSByaW5nLgBlASBJbW11dGFibGUgSUQgb2YgdGhlIGluZGl2aWR1YWwgKGBQZXJzb25hbElkYCkgdG8gaW5mb3JtYXRpb24gYWJvdXQgdGhlaXIga2V5IGFuZCBzdGF0dXMuADhBbGlhc1RvQWNjb3VudAABBAJJAwQEAATMIENvbnZlcnNpb24gb2YgYSBjb250ZXh0dWFsIGFsaWFzIHRvIGFuIGFjY291bnQgSUQuADhBY2NvdW50VG9BbGlhcwABBAIERQMEAATMIENvbnZlcnNpb24gb2YgYW4gYWNjb3VudCBJRCB0byBhIGNvbnRleHR1YWwgYWxpYXMuAExBY2NvdW50VG9QZXJzb25hbElkAAEEAgQoBAAQvCBBc3NvY2lhdGlvbiBvZiBhbiBhY2NvdW50IElEIHRvIGEgcGVyc29uYWwgSUQuACEBIE1hbmFnZWQgd2l0aCBgc2V0X3BlcnNvbmFsX2lkX2FjY291bnRgIGFuZCBgdW5zZXRfcGVyc29uYWxfaWRfYWNjb3VudGAu+CBSZXZlcnNlIGxvb2t1cCBpcyBpbnNpZGUgYFBlb3BsZWAgc3RvcmFnZSwgaW5zaWRlIHRoZSByZWNvcmQuADhOZXh0UGVyc29uYWxJZAEAKCAAAAAAAAAAAAS4IFRoZSBuZXh0IGZyZWUgYW5kIG5ldmVyIHJlc2VydmVkIHBlcnNvbmFsIElELgBcUGVvcGxlQ29sbGVjdGlvbkNyZWF0ZWQBAMgEAATAIFdoZXRoZXIgdGhlIHBlb3BsZSBjb2xsZWN0aW9uIGhhcyBiZWVuIGNyZWF0ZWQuAEhSZXNlcnZlZFBlcnNvbmFsSWQAAQQFKBAEAATAIENhbmRpZGF0ZXMnIHJlc2VydmVkIGlkZW50aXRpZXMgd2hpY2ggd2UgdHJhY2suAAFRBAABDQcAEDBSaW5nRXhwb25lbnT9BAQJBE0BIFRoZSByaW5nIGV4cG9uZW50IHVzZWQgdG8gb3BlcmF0ZSB0aGUgcGVvcGxlIG1lbWJlciBjb2xsZWN0aW9uIGluIGBNZW1iZXJTZXJ2aWNlYC4AXE9uYm9hcmRpbmdRdWV1ZVBhZ2VTaXplOBAeAAAACEkBIE1heGltdW0gbnVtYmVyIG9mIHBlb3BsZSBpbmNsdWRlZCBpbiBhbiBvbmJvYXJkaW5nIHF1ZXVlIHBhZ2UgYmVmb3JlIGEgbmV3IG9uZSBpcyQgY3JlYXRlZC4AZFN0YWxlQWxpYXNDbGVhbnVwSW50ZXJ2YWw4EJYAAAAEMQEgSW50ZXJ2YWwgKGluIGJsb2NrcykgYXQgd2hpY2ggdGhlIG9mZmNoYWluIHdvcmtlciBydW5zIHN0YWxlIGFsaWFzIGNsZWFudXAuAHBhY2NvdW50X3NldHVwX3RpbWVfdG9sZXJhbmNlOBBYAgAAFD0BIFRoZSBhbW91bnQgb2YgYmxvY2sgbnVtYmVyIHRvbGVyYW5jZSB3ZSBhbGxvdyBmb3IgYSBzZXR1cCBhY2NvdW50IHRyYW5zYWN0aW9uLgAFASBgc2V0X2FsaWFzX2FjY291bnRgIGFuZCBgc2V0X3BlcnNvbmFsX2lkX2FjY291bnRgIGNhbGxzIGNvbnRhaW5zUQEgYGNhbGxfdmFsaWRfYXRgIGFzIGEgcGFyYW1ldGVyLCB0aG9zZSBjYWxscyBhcmUgdmFsaWQgaWYgdGhlIGJsb2NrIG51bWJlciBpcyB3aXRoaW5YIHRoZSB0b2xlcmFuY2UgcGVyaW9kLgABVQoAAAAzAAAcTW9iUnVsZQEcTW9iUnVsZTAcQ3JlZGl0cwEBBAIIWQpwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASMIFRoZSB2b3RpbmcgcmVjb3JkcyBvZiBhbGwgYWxpYXNlcy4APFZvdGluZ1BlbmFsdGllcwABBAIIOAQACHEBIFRoZSB2b3RlIHBlbmFsdGllcyBvZiB1c2VycyBhbmQgdGhlaXIgc3RhcnRpbmcgbW9tZW50LiBWb3RlcnMgd2l0aCBwZW5hbHRpZXMgY2Fubm90IHZvdGUgaW7MIGNvbnRlbXB0IHVudGlsIHRoZSBwZW5hbHR5IGV4cGlyZXMgYW5kIGlzIHJlbW92ZWQuADBWb3RpbmdQb2ludHMBAQgGAl0KOBAAAAAACGUBIFRoZSBhY2N1bXVsYXRlZCBwb2ludHMgb2YgYWxsIGFsaWFzZXMsIGR1cmluZyBlYWNoIGZ1bmRpbmcgcm91bmQuIFRoZSBwb2ludHMgYWNjdW11bGF0ZWQhASBkdXJpbmcgcm91bmQgYE5gIGNhbiBiZSByZWRlZW1lZCBmb3IgcmV3YXJkcyBvbmx5IGR1cmluZyByb3VuZCBgTiArIDFgLgAUVm90ZXMAAQgCAl0KSQQEAAS4IEFsbCB2b3RlcyBjYXN0LCBzZWdyZWdhdGVkIGJ5IGNhc2UgYW5kIHZvdGVyLgAkQ2FzZUNvdW50AQA4EAAAAAAEEQEgVGhlIG51bWJlciBvZiBjYXNlcywgb3BlbiBvciByZWNlbnRseSBjbG9zZWQsIHN0b3JlZCBpbiB0aGUgcGFsbGV0LgAkT3BlbkNhc2VzAAEEAjhhCgQABCkBIFRoZSBvcGVuIGNhc2VzIHJlY29yZGVkIGluIHRoZSBwYWxsZXQuIFRoZXNlIGNhc2VzIGNhbiBzdGlsbCBiZSB2b3RlZCBvbi4AJFJpcGVDYXNlcwABBAI4eQoEAAx1ASBUaGUgcmlwZSBjYXNlcyByZWNvcmRlZCBpbiB0aGUgcGFsbGV0LiBUaGUgdm90aW5nIGhhcyBjb25jbHVkZWQgb24gdGhlc2UgY2FzZXMgYW5kIGEgdmVyZGljdGUBIGhhcyBiZWVuIHJlYWNoZWQsIGJ1dCB0aGV5IGNhbm5vdCBiZSByZW1vdmVkIHlldCBpbiBvcmRlciB0byBhbGxvdyBwZW9wbGUgdG8gY2xhaW0gdGhlaXIcIHZvdGVzLgAkRG9uZUNhc2VzAAEEAjh9CgQACGEBIFRoZSBkb25lIGNhc2VzIHJlY29yZGVkIGluIHRoZSBwYWxsZXQuIFRoZXNlIGNhc2VzIGFyZSBvYnNvbGV0ZSBhbmQgY2FuIGJlIHJlbW92ZWQgZnJvbSQgc3RvcmFnZS4AREFjY3VtdWxhdGVkUG9pbnRzAQAoIAAAAAAAAAAACHUBIFRoZSBudW1iZXIgb2YgcG9pbnRzIGFjY3VtdWxhdGVkIHRocm91Z2ggY29ycmVjdCB2b3RlcyBkdXJpbmcgdGhlIGN1cnJlbnQgcGF5b3V0IHJvdW5kLiBUaGlzdQEgYW1vdW50IGlzIGdvaW5nIHRvIGRldGVybWluZSB0aGUgcG9pbnQvcmV3YXJkIGV4Y2hhbmdlIHJhdGUgb2YgdGhlIG5leHQgcmV3YXJkIHBheW91dCByb3VuZC4ASFBheW91dERpc3RyaWJ1dGlvbgAAgQoEAATYIERlc2NyaWJlcyB0aGUgcGFyYW1ldGVycyBvZiB0aGUgY3VycmVudCBwYXlvdXQgcm91bmQuADhSb3VuZFNjaGVkdWxlcwEAhQoEAAS4IERlc2NyaWJlcyB0aGUgc2NoZWR1bGVzIG9mIHRoZSBwYXlvdXQgcm91bmRzLgAsQWN0aXZlU2luY2UAACgEAAhtASBUaGUgdGltZXN0YW1wLCBpbiBzZWNvbmRzLCBvZiB0aGUgbW9tZW50IGVub3VnaCBhY3RpdmUgdm90ZXJzIHdlcmUgZGV0ZWN0ZWQgYW5kIHZvdGluZyB3YXMxASBlbmFibGVkLiBUaGlzIHZhbHVlIHdpbGwgbm90IGJlIHByZXNlbnQgaWYgdGhlcmUgYXJlIHRvbyBmZXcgYWN0aXZlIHZvdGVycy4AAWEEAAERBwA4UEN1cnJlbmN5TG9jYXRpb25JbmZv4DABAwChDwQyBXbI6wsE9CBUaGUgbG9jYXRpb24gb2YgdGhlIHVzZWQgY3VycmVuY3kuIEl0IGlzIGluZm9ybWF0aW9uYWwgb25seS4AUE1heFZvdGVDbGFpbUR1cmF0aW9uKCCAUQEAAAAAAAQFASBUaGUgbnVtYmVyIG9mIHNlY29uZHMgYmVmb3JlIGEgY2FzZSB0aW1lcyBvdXQgYW5kIGNhbiBiZSByZWFwZWQuADxNaW5DYXNlRHVyYXRpb244EFgCAAAEQQEgVGhlIG51bWJlciBvZiBzZWNvbmRzIGEgY2FzZSBtdXN0IHN0YXkgb3BlbiBmb3Igdm90aW5nIGJlZm9yZSBpdCBjYW4gYmUgY2xvc2VkLgBETWF4Vm90aW5nRHVyYXRpb244ELAEAAAELQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIHNlY29uZHMgZm9yIHdoaWNoIGEgY2FzZSBjb3VsZCBzdGF5IG9wZW4gZm9yIHZvdGluZy4ARE1pblR1cm5vdXROb21pbmFsOBABAAAABEUBIFRoZSBtaW5pbXVtIG51bWJlciBvZiB2b3RlcyBhIGNhc2UgbXVzdCByZWNlaXZlIGJlZm9yZSBhIHZlcmRpY3QgY2FuIGJlIHJlYWNoZWQuAFBNaW5UdXJub3V0UGVyY2VudGFnZZEKBAoIZQEgVGhlIG1pbmltdW0gbnVtYmVyIG9mIHZvdGVzIGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgdG90YWwgdm90ZXIgY291bnQgYSBjYXNlIG11c3QgcmVjZWl2ZYQgYmVmb3JlIGEgdmVyZGljdCBjYW4gYmUgcmVhY2hlZC4AVFZvdGluZ1BlbmFsdHlEdXJhdGlvbjgQwKgAAATQIFRoZSBudW1iZXIgb2YgYmxvY2tzIHRoYXQgYSBwZW5hbHR5IGlzIGFwcGxpZWQgZm9yLgBETWF4Vm90ZXNDbGFpbWFibGU4EAoAAAAE9CBUaGUgbWF4aW11bSBudW1iZXIgb2Ygdm90ZXMgY2xhaW1hYmxlIGluIGEgc2luZ2xlIGV4dHJpbnNpYy4AUE9mZmNoYWluV29ya0ludGVydmFsOBCWAAAABLAgVGhlIGludGVydmFsIGF0IHdoaWNoIG9mZmNoYWluIHdvcmtlciBydW5zLgBMQ2xlYW5Wb3Rlc0JhdGNoU2l6ZTgQ6AMAAAQlASBNYXhpbXVtIG51bWJlciBvZiB2b3RlcyB0aGF0IHdpbGwgYmUgY2xlYW5lZCBkdXJpbmcgb2ZmY2hhaW4gd29ya2VyIHJ1bi4AaFZvdGVzT3BlbkZvckNsYWltc0R1cmF0aW9uOBBYAgAACBUBIFRoZSB0aW1lIGluIHNlY29uZHMgZHVyaW5nIHdoaWNoIHZvdGVzIGNhbiBiZSBjbGFpbWVkIG9uIGRvbmUgY2FzZXMuwCBNZWFzdXJlZCBmcm9tIHRoZSB0aW1lIHRoZSBjYXNlIGJlY29tZXMgJ0RvbmUnLgBUTWluaW11bVZvdGVyVGhyZXNob2xkOBADAAAACGUBIFRoZSBtaW5pbXVtIG51bWJlciBvZiBhY3RpdmUgdm90ZXJzIHJlcXVpcmVkIHRvIGFsbG93IHZvdGluZy4gV2hlbiB0aGlzIHRocmVzaG9sZCBpcyBub3SEIG1ldCwgb3BlbiBjYXNlcyBjYW5ub3QgdGltZSBvdXQuADxtb2JfcnVsZV9wb3RfaWQEgG1vZGxNb2JSd3JkcwAAAAAAAAAAAAAAAAAAAAAAAAAABOAgR2V0IGEgdW5pcXVlLCBpbmFjY2Vzc2libGUgYWNjb3VudCBJRCBmcm9tIHRoZSBgUG90SWRgLgBAbW9iX3J1bGVfY29udGV4dAiAcG9wOnBvbGthZG90Lm5ldHdvcmsvbW9iLXJ1bGUgICAIUQEgVGhlIGNvbnRleHQgdXNlZCBmb3IgdGhlIHByb29mcyByZXF1aXJlZCB0byBhdXRoZW50aWNhdGUgYXMgYSBwZXJzb25hbCBhbGlhcyBpbiBtb2IYIHJ1bGUuAAGVCgAAADQAAChQcm9vZk9mSW5rAShQcm9vZk9mSW5rLChDYW5kaWRhdGVzAAEEAgSZCgQABEkBIFRoZSBjdXJyZW50IHBlcnNvbmFsIGlkZW50aXRpZXMgd2hpY2ggYXJlIGdvaW5nIHRocm91Z2ggdGhlIHByb29mLW9mLWluayBwcm9jZXNzLgAYUGVvcGxlAAEEBSipCgQACHEBIFRoZSBwZXJzb25hbCBpZGVudGl0aWVzIHdoaWNoIHdlIHRyYWNrOyBhbGwgd2hpY2ggaGF2ZSBiZWVuIHJlY29nbml6ZWQgdGhyb3VnaCBwcm9vZi1vZi1pbms0IGFyZSBpbiBoZXJlLgA8UmVmZXJyYWxUaWNrZXRzAAEEBSi1CgQABAkBIFRoZSB0aWNrZXRzIHN0b3JlZCBvbi1jaGFpbiByZWFkeSB0byBiZSB1c2VkIHRvIHJlZmVyIGNhbmRpZGF0ZXMuADhEZXNpZ25GYW1pbGllcwABBAItA8EKBAAEqCBUaGUgY3VycmVudCBkZXNpZ24gZmFtaWxpZXMgd2UgcmVjb2duaXNlLgBAQ29tbWl0dGVkRGVzaWducwABCAICxQrJCgQABNQgVGhlIGNvbW1pdHRlZCBkZXNpZ25zIHdoaWNoIGFyZSBubyBsb25nZXIgYXZhaWxhYmxlLgA8QWxsb2NhdGlvbkNvdW50AQA4EAAAAAAEsCBUaGUgbnVtYmVyIG9mIGp1ZGdlbWVudHMgY3VycmVudGx5IG9uZ29pbmcuADRDb25maWd1cmF0aW9uAQB5BKBAnQQABAAAAOgDAAAAAAAEAAAAACAAAAAAACAAAAAAAAgAAABAnQQABEwgVGhlIGNvbmZpZ3VyYXRpb24uAEBBdmFpbGFibGVJbnZpdGVzAQEEAgQ4EAAAAAAE+CBOdW1iZXIgb2YgaW52aXRhdGlvbnMgYXZhaWxhYmxlIHRvIGRpc3RyaWJ1dGUgZm9yIGFuIGFjY291bnQuADhQZW5kaW5nSW52aXRlcwABCAICzQoQBAAMHQEgUGVuZGluZyBpbnZpdGF0aW9ucyBmb3IgZWFjaCBpbnZpdGVyIChhbiBhY2NvdW50IHRoYXQgaW52aXRlcyBvdGhlcnMpLgBZASBJZiB0aGUga2V5IGAoaW52aXRlciwgdGlja2V0KWAgZXhpc3RzLCB0aGVuIHRoZSB0aWNrZXQgaXMgY3VycmVudGx5IGEgcGVuZGluZyBpbnZpdGUuAGxSZWZlcnJlclJlaW1idXJzZW1lbnRWYWx1ZXMAAH0EBAAUYQEgVGhlIHZhbHVlcyBvZiB0aGUgcmVpbWJ1cnNlbWVudCBhd2FyZGVkIHRvIHJlZmVycmVycywgYWxvbmcgd2l0aCBob3cgbWFueSBvZiBlYWNoIHZhbHVlbQEgc2hvdWxkIGJlIGF3YXJkZWQuIFRoZXNlIHZhbHVlcyBhcmUgc3RvcmVkIGluIHJldmVyc2Ugb3JkZXIgb2YgdGhlaXIgcHJpb3JpdHksIHNvIHRoZSBsYXN0QQEgdmFsdWUgaW4gdGhlIGxpc3Qgd2lsbCBiZSB0aGUgZmlyc3Qgb25lIHRvIGJlIHVzZWQgYnkgdGhlIHJlaW1idXJzZW1lbnQgc3lzdGVtLgBFASBTdG9yYWdlIGl0ZW0gbmFtZSBrZWVwcyB0aGUgbGVnYWN5IHByZWZpeCBmb3Igc3RvcmFnZSByZWFkYWJpbGl0eSBjb21wYXRpYmlsaXR5LgBsUmVmZXJyZWRSZWltYnVyc2VtZW50VmFsdWVzAAB9BAQAFGEBIFRoZSB2YWx1ZXMgb2YgdGhlIHJlaW1idXJzZW1lbnQgYXdhcmRlZCB0byByZWZlcnJlZCBwZW9wbGUsIGFsb25nIHdpdGggaG93IG1hbnkgb2YgZWFjaHEBIHZhbHVlIHNob3VsZCBiZSBhd2FyZGVkLiBUaGVzZSB2YWx1ZXMgYXJlIHN0b3JlZCBpbiByZXZlcnNlIG9yZGVyIG9mIHRoZWlyIHByaW9yaXR5LCBzbyB0aGVVASBsYXN0IHZhbHVlIGluIHRoZSBsaXN0IHdpbGwgYmUgdGhlIGZpcnN0IG9uZSB0byBiZSB1c2VkIGJ5IHRoZSByZWltYnVyc2VtZW50IHN5c3RlbS4ARQEgU3RvcmFnZSBpdGVtIG5hbWUga2VlcHMgdGhlIGxlZ2FjeSBwcmVmaXggZm9yIHN0b3JhZ2UgcmVhZGFiaWxpdHkgY29tcGF0aWJpbGl0eS4AAWkEAAEVBwAMSE1heEFjdGl2ZVJlZmVycmFsczgQCgAAAAj0IFRoZSBtYXhpbXVtIG51bWJlciBvZiBhY3RpdmUgcmVmZXJyYWxzIGEgdXNlciBjYW4gaGF2ZSBvcGVuLlggSXQgY2Fubm90IGV4Y2VlZCAyMDAuABRQb3RJZNUIIFBvSVBvdF9fIOwgQWNjb3VudCBJZGVudGlmaWVyIGZyb20gd2hpY2ggdGhlIHJld2FyZCBwb3QgaXMgZ2VuZXJhdGVkLgApASBUaGUgYWNjb3VudCBtdXN0IGJlIGZ1bmRlZCBzbyByZXdhcmRzIGNhbiBiZSBwYWlkIGR1cmluZyByZWdpc3RyYXRpb24gYW5kYCByZWZlcnJhbCByZXdhcmQgY2xhaW1zLgARASBUaGUgYFBhbGxldElkYCBtdXN0IGJlIGEgY29uc3RhbnQgYXMgaXQgaXMgZXhwb3NlZCBpbiB0aGUgbWV0YWRhdGEuZQEgQ2hhbmdpbmcgdGhpcyB2YWx1ZSB3aXRoIGEgcnVudGltZSB1cGdyYWRlIGNhbiBiZSBkb25lIGF0IGFueSB0aW1lLCB0aGUgbmV3IGFjY291bnQgd2lsbJAgdGhlbiBuZWVkIHRvIGJlIGZ1bmRlZCBhY2NvcmRpbmdseS4ATHByb29mX29mX2lua19wb3RfaWQEgG1vZGxQb0lQb3RfXwAAAAAAAAAAAAAAAAAAAAAAAAAABNQgVGhlIGFjY291bnQgSUQgb2YgdGhlIHBvdCB1c2VkIGZvciByZXdhcmQgdHJhbnNmZXJzLgAB0QoACDxUaWNrZXRTaWduYXR1cmU1BAyIIFNpZ25hdHVyZSB1c2VkIHRvIHZlcmlmeSB0aWNrZXRzLgABASBDYW4gdmVyaWZ5IHdoZXRoZXIgYW4gYFNlbGY6OlRpY2tldFB1YmxpY2AgY3JlYXRlZCBhIHNpZ25hdHVyZS4YVGlja2V0BASYIFRpY2tldCB0eXBlIHVzZWQgdG8gcmVmZXIgY2FuZGlkYXRlcy4ANQAAEEdhbWUBEEdhbWVcbFRlc3RuZXRTdG9yZWRQaGFzZUR1cmF0aW9ucwAAqQQEAAS8IFRoZSBvdmVycmlkZW4gcGhhc2UgZHVyYXRpb25zIGZvciB0aGUgdGVzdG5ldC4AEE5mdHMAAQgCAtUKOAQAJCkBIEFsbCBtaW50ZWQgTkZUcywga2V5ZWQgYnkgb3duZXIgYW5kIE5GVCBoYXNoLiBUaGUgdmFsdWUgaXMgYSBVbml4LXNlY29uZHM1ASB0aW1lc3RhbXAgc2V0IHdoZW5ldmVyIHRoZSBlbnRyeSBpcyB3cml0dGVuOiBieSB0aGUgYHJlcG9ydGAgZXh0cmluc2ljIGZvciBhNQEgZnJlc2ggYFBlcnNvbmAgdm90ZSwgYnkgYG1pbnRfYXR0ZW5kYW5jZV9uZnRzYCB3aGVuIGFuIGF0dGVuZGVlJ3MgYXR0ZW5kYW5jZTEBIGlzIGZpbmFsaXNlZCwgb3IgYnkgYHByb21vdGVfbmZ0X2NhbmRpZGF0ZXNgIHdoZW4gYSBoZWxkIGBOb3RQZXJzb25gIE5GVCBpczUBIHJlc29sdmVkLiBCYWNrZmlsbCB3cml0ZXMgb3ZlcndyaXRlIGFuIGVhcmxpZXIgdGltZXN0YW1wIG9uIHRoZSBzYW1lIGtleSDigJQxASB0aGUgdmFsdWUgaXMgdGhlcmVmb3JlIHRoZSAqbW9zdCByZWNlbnQqIG1pbnQgdGltZSwgbm90IHRoZSBmaXJzdC4gV2l0aGluIGE5ASBzaW5nbGUgZ2FtZSB0aGVzZSB0aW1lc3RhbXBzIGFyZSBib3VuZGVkIHRvZ2V0aGVyICh0eXBpY2FsbHkgdGhlIHNhbWUgYmxvY2spLDUBIHNvIGNsaWVudHMgY2FuIHVzZSB0aGVtIGFzIGEgcGVyLWdhbWUgdmVyc2lvbiBtYXJrZXIgKGUuZy4gbWFwcGluZyBvbGQgbWludHPUIHRvIG9uZSBpbWFnZSBjb2xsZWN0aW9uIGFuZCBuZXdlciBtaW50cyB0byBhbm90aGVyKS4ANE5mdENhbmRpZGF0ZXMAAQgCAtUKEAQAJCkBIENhbmRpZGF0ZSBORlRzIHN0YWdlZCBmcm9tIGBOb3RQZXJzb25gIHJlcG9ydHMsIGhlbGQgdW50aWwgdGhlIGF0dGVzdGVlJ3NcIGF0dGVuZGFuY2UgaXMgZGVjaWRlZC4AOQEgRHVyaW5nIHRoZSByZXBvcnRpbmcgcGhhc2UgYSBgTm90UGVyc29uYCB2b3RlIHN0YWdlcyB0aGUgTkZUIGhlcmUgcmF0aGVyIHRoYW49ASBtaW50aW5nIGRpcmVjdGx5IGludG8gW2BOZnRzYF06IHRoZSBhdHRlc3RlZSBvbmx5IGVhcm5zIHRoZSBORlQgaWYgdGhleSBlbmQgdXAhASBjbGFzc2VkIGFzIGhhdmluZyBhdHRlbmRlZC4gVGhlIGZpcnN0IGtleSBpcyB0aGUgcHJvc3BlY3RpdmUgb3duZXIgKHRoZSEBIGF0dGVzdGVlKSwgdGhlIHNlY29uZCBpcyB0aGUgTkZUIGhhc2ggKHNhbWUgZGVyaXZhdGlvbiBhcyBpbiBbYE5mdHNgXSkuIQEgUmVzb2x2ZWQgZW50cmllcyBhcmUgZWl0aGVyIHByb21vdGVkIGludG8gW2BOZnRzYF0gb3IgZGlzY2FyZGVkIOKAlCBzZWXUIGBwcm9tb3RlX25mdF9jYW5kaWRhdGVzYCAvIGBkaXNjYXJkX25mdF9jYW5kaWRhdGVzYC4APEFyY2hpdmVkUGxheWVycwABBAIdB9kKBAAEKQEgQWxsIHRoZSBwbGF5ZXIgd2l0aCB6ZXJvIHNjb3JlIGJ1dCBzdGlsbCBvbmJvYXJkZWQgaW4gaW5kaXZfcGFsbGV0X3Njb3JlLgAcUGxheWVycwABBAIdB90KBAAQcCBBbGwgdGhlIHBsYXllciBpbiB0aGUgZ2FtZS4AIQEgQWNjb3VudC1iYXNlZCBwbGF5ZXIgYWNjb3VudHMgaW4gdGhpcyBzdG9yYWdlIGFuZCBzdGF0ZW1lbnQgYWNjb3VudHMgaW6kIFtgU3RtdEFjY291bnRUb0FsaWFzYF0gbXVzdCBub3Qgb3ZlcmxhcC4AJEdhbWVJbmRleAEAOBAAAAAABGAgVGhlIGN1cnJlbnQgZ2FtZSBpbmRleC4AEEdhbWUAAPEKBAAEzCBUaGUgaW5mb3JtYXRpb24gZm9yIHRoZSBuZXh0IGdhbWUgb3Igb25nb2luZyBnYW1lLgAsR2FtZUhpc3RvcnkAAQQFODgEAAhhASBUaGUgbWFwcGluZyBmcm9tIHBhc3QgZ2FtZXMsIGlkZW50aWZpZWQgYnkgdGhlaXIgZ2FtZSBpbmRleCwgdG8gdGhlIHN0YXJ0IHRpbWVzdGFtcCwgaW54IHNlY29uZHMgc2luY2UgdGhlIFVOSVggZXBvY2guAFxQbGF5ZXJBdHRlbmRhbmNlSGlzdG9yeQEBBAIdBwELBAAQMQEgRW50cmllcyBvZiBwcmV2aW91c2x5IGF0dGVuZGVkIGdhbWVzIG9mIGVhY2ggcGxheWVyLiBSZXRhaW5lZCBvbiBgb2ZmYm9hcmRgKQEgYW5kIGBraWNrb3V0YCBzbyBhbiBhdHRlbmRlZCBpZGVudGl0eSBrZWVwcyBwYXNzaW5nIHRoZSBwYXJ0aWNpcGFudCBjaGVjazEBIGluIGBjbGFpbV9nYW1lX3ByaXplYCBhdCBjbGFpbSB0aW1lLiBCb3VuZGVkIGJ5IGBNYXhBdHRlbmRhbmNlSGlzdG9yeURlcHRoYDAgcGVyIHBsYXllci4AUEdhbWVQYXJ0aWNpcGFudENvdW50AQEEBTg4EAAAAAAc8CBDb3VudCBvZiBjb25maXJtZWQgYXR0ZW5kZWVzIHBlciBnYW1lIGluZGV4LiBJbmNyZW1lbnRlZCBieRkBIFtgUGFsbGV0Ojpub3RlX2F0dGVuZGFuY2VgXSBmb3IgZXZlcnkgYXR0ZW5kYW5jZSBlbnRyeSwgcmVnYXJkbGVzcyBvZvwgd2hldGhlciB0aGUgcGxheWVyIGlzIHJlY29yZGVkIGFzIGBBY2NvdW50T3JQZXJzb246OlBlcnNvbmAgb3IxASBgQWNjb3VudE9yUGVyc29uOjpBY2NvdW50YCDigJQgYm90aCBhcmUgZWxpZ2libGUgdG8gY2xhaW0gZnJvbSB0aGUgcGVyLWdhbWUNASBwcml6ZSBwb29sIHZpYSBbYFBhbGxldDo6Y2xhaW1fZ2FtZV9wcml6ZWBdLiBFeHBvc2VkIGZvciBvZmYtY2hhaW4pASBjb25zdW1lcnMgKGUuZy4gY2xpZW50cyBjb21wdXRpbmcgdGhlIGFpcmRyb3AgYHdpbm5lcl9yYXRpb2AgZm9yIHRoZSBuZXh0vCBwZXItZ2FtZSBwb29sKTsgbm90IHJlYWQgYnkgYW55IG9uLWNoYWluIGNvZGUuADRJbmRleFRvUGxheWVyAAEEBQULHQcEAATkIFRoZSBtYXBwaW5nIGZyb20gcm91bmQgaW5kZXggYW5kIHBsYXllciBpbmRleCB0byBwbGF5ZXIuADRQbGF5ZXJUb0luZGV4AAEEAh0HCQsEAATgIFRoZSBtYXBwaW5nIGZyb20gcGxheWVyIHRvIHRoZWlyIGluZGljZXMgaW4gZWFjaCByb3VuZC4ARFNodWZmbGVSZWNvZ25pemVkAAEIBQYNCx0HBAAEAQEgU3RvcmFnZSB1c2VkIHRvIGNvbXB1dGUgdGhlIHNodWZmbGUgb3JkZXIgb2YgcmVjb2duaXplZCBwZW9wbGUuAFBTaHVmZmxlTm90UmVjb2duaXplZAABCAUGDQsdBwQABFUBIFN0b3JhZ2UgdXNlZCB0byBjb21wdXRlIHRoZSBzaHVmZmxlIG9yZGVyIG9mIG5vdCByZWNvZ25pemVkIHBlb3BsZSwgaS5lLiBjYW5kaWRhdGVzLgA0R2FtZVNjaGVkdWxlcwEAEQsEAAAAQEF2YWlsYWJsZUludml0ZXMBAQQCBDgQAAAAAAToIE51bWJlciBvZiBpbnZpdGVzIGF2YWlsYWJsZSB0byBkaXN0cmlidXRlIGZvciBhbiBhY2NvdW50LgA4UGVuZGluZ0ludml0ZXMAAQgCAs0KEAQAEIggUGVuZGluZyBpbnZpdGVzIGZvciBlYWNoIGludml0ZXIuAGkBIElmIHRoZSBrZXkgYChpbnZpdGVyLCB0aWNrZXQpYCBleGlzdHMgdGhlbiB0aGUgdGlja2V0IGlzIGN1cnJlbnRseSBhIHBlbmRpbmcgaW52aXRlLCBmcm9tNCB0aGUgaW52aXRlci4ASEFsaWFzVG9TdG10QWNjb3VudAABBAIIBAQAHFkBIE1hcHBpbmcgZnJvbSBhbGlhcyB0byB0aGUgYWNjb3VudCBpZCB0byB1c2UgZm9yIGludGVyYWN0aW5nIHdpdGggdGhlIHN0YXRlbWVudCBzdG9yZS4AQQEgQWNjb3VudC1iYXNlZCBwbGF5ZXIgc2ltcGx5IHVzZSB0aGVpciBhY2NvdW50IGFuZCBhcmUgbm90IHBhcnQgb2YgdGhpcyBtYXBwaW5nLgEBIFJldmVyc2UgbWFwcGluZyBpcyBhdmFpbGFibGUgaW4gc3RvcmFnZSBbYFN0bXRBY2NvdW50VG9BbGlhc2BdLgDsIFRoaXMgaXMgcmVtb3ZlZCB3aGVuIHRoZSBhbGlhcy1iYXNlZCBwbGF5ZXIgZ2V0cyBhcmNoaXZlZC5VASBUaGlzIGlzIHVwZGF0ZWQgd2hlbiB0aGUgYWxpYXMtYmFzZWQgcGxheWVyIHNpZ25zIHVwIHdpdGggYW5vdGhlciBzdGF0ZW1lbnQgYWNjb3VudC4ASFN0bXRBY2NvdW50VG9BbGlhcwABBAIECAQAJFkBIE1hcHBpbmcgZnJvbSB0aGUgYWNjb3VudCBpZCB0byB1c2UgZm9yIGludGVyYWN0aW5nIHdpdGggc3RhdGVtZW50IHN0b3JlIHRvIHRoZSBhbGlhcy4AQQEgQWNjb3VudC1iYXNlZCBwbGF5ZXIgc2ltcGx5IHVzZSB0aGVpciBhY2NvdW50IGFuZCBhcmUgbm90IHBhcnQgb2YgdGhpcyBtYXBwaW5nLgEBIFJldmVyc2UgbWFwcGluZyBpcyBhdmFpbGFibGUgaW4gc3RvcmFnZSBbYEFsaWFzVG9TdG10QWNjb3VudGBdLuwgVGhpcyBpcyByZW1vdmVkIHdoZW4gdGhlIGFsaWFzLWJhc2VkIHBsYXllciBnZXRzIGFyY2hpdmVkLlUBIFRoaXMgaXMgdXBkYXRlZCB3aGVuIHRoZSBhbGlhcy1iYXNlZCBwbGF5ZXIgc2lnbnMgdXAgd2l0aCBhbm90aGVyIHN0YXRlbWVudCBhY2NvdW50LgBlASBTdGF0ZW1lbnQgYWNjb3VudHMgaW4gdGhpcyBzdG9yYWdlIGFuZCBhY2NvdW50LWJhc2VkIHBsYXllciBhY2NvdW50cyBpbiBbYFBsYXllcnNgXSBtdXN0NCBub3Qgb3ZlcmxhcC4AYENvbW11bmljYXRpb25JZGVudGlmaWVycwABBAIEPQQEAAxpASBUaGUgY29tbXVuaWNhdGlvbiBpZGVudGlmaWVycyB1c2VkIGJ5IHBsYXllcnMgdG8gZXN0YWJsaXNoIGFuIGVuY3J5cHRlZCBQMlAgY29ubmVjdGlvbiBpbm0BIG9yZGVyIHRvIHBsYXkgdGhlIGdhbWUuIFRoZSBhY2NvdW50IHVuZGVyIHdoaWNoIHRoZSBjb21tdW5pY2F0aW9uIGlkZW50aWZpZXIgaXMgcmVnaXN0ZXJlZBkBIHNob3VsZCBiZSB0aGUgc2FtZSBhY2NvdW50IHVzZWQgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgc3RhdGVtZW50IHN0b3JlLgA0U2NyYXRjaFJld2FyZAAAFQsEAAwpASBTY3JhdGNoIGNhcmQgcmV3YXJkIGluZm8gZm9yIHRoZSBjdXJyZW50IG9yIG1vc3QgcmVjZW50bHkgY29uY2x1ZGVkIGdhbWUuHQEgT3ZlcndyaXR0ZW4gYnkgYGZpbmFsaXplX3NjcmF0Y2hfcmV3YXJkc2AgYXQgZ2FtZSBlbmQuIENsZWFyZWQgb24gZ2FtZTggY2FuY2VsbGF0aW9uLgBUU2NyYXRjaEVsaWdpYmlsaXR5TWFwAAEEAh0HGQsEAASsIFBlci1wbGF5ZXIgc2NyYXRjaCBjYXJkIGVsaWdpYmlsaXR5IHN0YXRlLgBMU2NyYXRjaENsYWltZWRDb3VudAEAOBAAAAAABAUBIFRvdGFsIG51bWJlciBvZiBzY3JhdGNoIGNhcmQgc3VjY2Vzc2Z1bCBjbGFpbXMgYWNyb3NzIGFsbCBnYW1lcy4AAYkEAAEZBwAkJE1heFJvdW5kczgQAwAAAAygIFRoZSBtYXhpbXVtIG51bWJlciBvZiByb3VuZHMgaW4gYSBnYW1lLgDoIE5vdGU6IHRoZSBhY3R1YWwgbnVtYmVyIG9mIHJvdW5kcyBpcyBjb25maWd1cmVkIHBlciBnYW1lLgAwTWF4R3JvdXBTaXplOBAGAAAADKggVGhlIG1heGltdW0gbnVtYmVyIG9mIHBsYXllcnMgaW4gYSBncm91cC4AGQEgTm90ZTogdGhlIGFjdHVhbCBudW1iZXIgb2YgcGxheWVycyBpbiBhIGdyb3VwIGlzIGNvbmZpZ3VyZWQgcGVyIGdhbWUuADBNaW5Hcm91cFNpemU4EAAAAAAgqCBUaGUgbWluaW11bSBudW1iZXIgb2YgcGxheWVycyBpbiBhIGdyb3VwLgBlASBXaGVuIHNjaGVkdWxpbmcgYSBnYW1lIHRoZSB2YWx1ZSBmb3IgYG1heF9ncm91cF9zaXplYCBtdXN0IGJlIGF0IGxlYXN0IHRoaXMgbWluaW11bSArIDEuACUBIEluIG9yZGVyIHRvIGhhdmUgbm8gc2luZ2xlLXBsYXllciBncm91cHMsIHRoaXMgdmFsdWUgbXVzdCBiZSBhdCBsZWFzdCAyLgBRASBOb3RlOiB0aGUgYWN0dWFsIG1pbmltdW0gbnVtYmVyIG9mIHBsYXllcnMgaW4gYSBncm91cCBpcyBjb25maWd1cmVkIHBlciBnYW1lLCBpdCBpc1ggYG1heF9ncm91cF9zaXplIC0gMWAuAFROb25QbGF5aW5nS2lja291dFRpbWU4EIBTOwAMFQEgVGhlIHRpbWUgYWZ0ZXIgd2hpY2ggYSBwbGF5ZXIgdGhhdCBpcyBub3QgcGxheWluZyBjYW4gYmUga2lja2VkIG91dC4AvCBUaGlzIGlzIG9ubHkgZm9yIGFjY291bnQgcGxheWVycywgbm90IHBlcnNvbnMuADhQaGFzZUR1cmF0aW9uc6kEUCwBAAA8AAAAHgAAAFgCAAA8AAAABLggVGhlIGR1cmF0aW9ucyBvZiBlYWNoIGdhbWUgcGhhc2UsIGluIHNlY29uZHMuAEBNYXhHYW1lU2NoZWR1bGVzOBAMAAAABOwgVGhlIE1heGltdW0gbnVtYmVyIG9mIGdhbWUgc2NoZWR1bGVzIHRoZSBwYWxsZXQgY2FuIHN0b3JlLgBkTWF4QXR0ZW5kYW5jZUhpc3RvcnlEZXB0aDgQDAAAAAhdASBUaGUgbWF4aW11bSBudW1iZXIgb2YgcGFzdCBnYW1lcyBmb3Igd2hpY2ggcGxheWVyIGF0dGVuZGFuY2UgaXMgc3RvcmVkLiBBbnkgYXR0ZW5kYW5jZQEBIGVudHJpZXMgb2xkZXIgdGhhbiB0aGlzIHdpbGwgYmUgaW1taW5lbnRseSBwdXJnZWQgZnJvbSBzdG9yYWdlLgA8UmV3YXJkUGVyV2lubmVyxEAAQOWcMBIAAAAAAAAAAAAACAkBIEZpeGVkIHJld2FyZCBhbW91bnQgcGVyIHNjcmF0Y2ggY2FyZCB3aW5uZXIuIFRoZSBhY3R1YWwgcGF5b3V0IGlzlCBgbWluKHBvdF9iYWxhbmNlLCBSZXdhcmRQZXJXaW5uZXIpYC4AbHByb29mX29mX293bmVyc2hpcF9tc2dfYmFzZQiAcG9wOmdhbWU6c3RtdF9hY2NvdW50X2Zvcl9hbGlhczoQGQEgVGhlIGJhc2UgbWVzc2FnZSBvZiB0aGUgcHJvb2Ygb2Ygb3duZXJzaGlwIG9mIGFuIGFjY291bnQgYnkgYW4gYWxpYXMuADUBIFRoZSBmdWxsIG1lc3NhZ2UgaXMgdGhpcyBiYXNlIGNvbmNhdGVuYXRlZCB0byB0aGUgYWxpYXMgYW5kIHRoZW4gaGFzaGVkIHdpdGisIGBibGFrZTJfMjU2YCAoYmxha2UyIHdpdGggMjU2IGJpdCBvdXRwdXQpLgABHQsACDxUaWNrZXRTaWduYXR1cmU1BASIIFNpZ25hdHVyZSB1c2VkIHRvIHZlcmlmeSB0aWNrZXRzLkBBY2NvdW50U2lnbmF0dXJlNQQEYCBTaWduYXR1cmUgZm9yIGFjY291bnRzLgA3AAAUU2NvcmUBFFNjb3JlKDBQYXJ0aWNpcGFudHMAAQQCHQchCwQABHwgVGhlIHBhcnRpY2lwYW50cyBpbmZvcm1hdGlvbnMuAExQZXJzb25ob29kVGhyZXNob2xkAQA4EAAAAAAEyCBUaGUgc2NvcmUgdGhyZXNob2xkIHJlcXVpcmVkIHRvIHJlYWNoIHBlcnNvbmhvb2QuAFBBYnNlbmNlR3JhY2VTY2hlZHVsZQAAuQQEABgpASBSdW50aW1lLWNvbmZpZ3VyYWJsZSBzY2hlZHVsZSBvZiBhYnNlbmNlLWdyYWNlIHRpZXJzLCBzb3J0ZWQgYnkgYXNjZW5kaW5nDQEgcG9wdWxhdGlvbiBzaXplIHRocmVzaG9sZC4gRWFjaCB0aWVyIHNwZWNpZmllcyBob3cgbWFueSBtaXNzZXMgYXJlDQEgdG9sZXJhdGVkIHdpdGhpbiByZWNlbnQgZ2FtZXMgYmVmb3JlIGEgcGFydGljaXBhbnQncyBwZXJzb25ob29kIGlzLCBzdXNwZW5kZWQuAOwgV2hlbiBlbXB0eSBvciB1bnNldCwgYSBoYXJkY29kZWQgZGVmYXVsdCBzY2hlZHVsZSBpcyB1c2VkLgBEQWJzZW5jZUdyYWNlUmF0aW8BAEkJCAAAGBUBIFRoZSBjdXJyZW50bHkgYWN0aXZlIGFic2VuY2UtZ3JhY2UgcmF0aW8gYChhbGxvd2VkX21pc3Nlcywgd2luZG93KWAsJQEgZGVyaXZlZCBmcm9tIGBBYnNlbmNlR3JhY2VTY2hlZHVsZWAgYW5kIHRoZSBjdXJyZW50IGFjdGl2ZS1wZXJzb24gY291bnQuABEBIFVwZGF0ZWQgZWFjaCB0aW1lIGB1cGRhdGVfdGhyZXNob2xkcygpYCBydW5zIChhdCB0aGUgc3RhcnQgb2YgZXZlcnkdASBhdHRlbmRhbmNlIHJlcG9ydCBzZXNzaW9uKS4gUmVhZCBieSBgc2V0X2F0dGVuZGFuY2VgIHRvIGRlY2lkZSB3aGV0aGVyjCBhIHBhcnRpY2lwYW50IHNob3VsZCBiZSBzdXNwZW5kZWQuAEhDdXJyZW50Um91bmRQb2ludHMBADgQAAAAAAS0IFRoZSBhY2N1bXVsYXRlZCBwb2ludHMgaW4gdGhlIGN1cnJlbnQgcm91bmQuAERDdXJyZW50Um91bmRJbmRleAEAOBAAAAAAHIAgVGhlIGluZGV4IG9mIHRoZSBjdXJyZW50IHJvdW5kLgBdASBUaGlzIG11c3QgYmUgdGhlIHN1bSBvZiBhbGwgcG9pbnRzIGFjY3VtdWxhdGVkIGluIGBSb3VuZHNQb2ludHNGb3JQYXJ0aWNpcGFudGAgZm9yIHRoZTwgY3VycmVudCByb3VuZC4AUQEgKipXQVJOSU5HKio6IFRoaXMgc3RvcmFnZSBtdXN0IGJlIGNvbnNpc3RlbnQgd2l0aCBgUm91bmRzUG9pbnRzRm9yUGFydGljaXBhbnRgLCB1c2W0IGBmbiBhZGRfcG9pbnRzX3RvX3BhcnRpY2lwYW50YCB0byB1cGRhdGUgaXQuAGhSb3VuZHNQb2ludHNGb3JQYXJ0aWNpcGFudAEBCAICMQs4EAAAAAAY0CBUaGUgcG9pbnRzIGFjY3VtdWxhdGVkIGJ5IGEgcGFydGljaXBhbnQgaW4gYSByb3VuZC4AUQEgRm9yIHRoZSBjdXJyZW50IHJvdW5kLCB0aGlzIHN0b3JhZ2UgbXVzdCBiZSB1cGRhdGVkIGFsb25nc2lkZSBgQ3VycmVudFJvdW5kUG9pbnRzYC4AMQEgKipXQVJOSU5HKio6IFRoaXMgc3RvcmFnZSBtdXN0IGJlIGNvbnNpc3RlbnQgd2l0aCBgQ3VycmVudFJvdW5kUG9pbnRzYCwgdXNltCBgZm4gYWRkX3BvaW50c190b19wYXJ0aWNpcGFudGAgdG8gdXBkYXRlIGl0LgAwUm91bmRQYXlvdXRzAAEEAjg1CwQAEKggVGhlIHJvdW5kcyB0aGF0IGFyZSBjdXJyZW50bHkgcGF5aW5nIG91dC4AEQEgUm91bmRzIGFyZSBwYXlpbmcgb3V0IGFmdGVyIHRoZXkgaGF2ZSBmaW5pc2hlZCBhY2N1bXVsYXRpbmcgcG9pbnRzLiUBIFdoZW4gYWxsIHRoZWlyIHBvaW50cyBoYXZlIGJlZW4gcGFpZCBvdXQsIHRoZXkgYXJlIHJlbW92ZWQgZnJvbSBzdG9yYWdlLgA0Um91bmRQbGFubmluZwAAOQsEAAz8IFRoZSBwbGFubmluZyBvZiB0aGUgY3VycmVudCByb3VuZCB0aGF0IGlzIGFjY3VtdWxhdGluZyBwb2ludHMuAD0BIElmIG5vbmUgdGhlIGN1cnJlbnQgcm91bmQgaXMgb25nb2luZyBhbmQgd2lsbCBiZSBwbGFubmVkIG9uIHRoZSBuZXh0IHNjaGVkdWxlLgA4Um91bmRTY2hlZHVsZXMBAD0LBAAEuCBEZXNjcmliZXMgdGhlIHNjaGVkdWxlcyBvZiB0aGUgcGF5b3V0IHJvdW5kcy4AAa0EAAEhBwAUUEN1cnJlbmN5TG9jYXRpb25JbmZv4DABAwChDwQyBXbI6wsE9CBUaGUgbG9jYXRpb24gb2YgdGhlIHVzZWQgY3VycmVuY3kuIEl0IGlzIGluZm9ybWF0aW9uYWwgb25seS4AUE9mZmNoYWluV29ya0ludGVydmFsOBACAAAABLAgVGhlIGludGVydmFsIGF0IHdoaWNoIG9mZmNoYWluIHdvcmtlciBydW5zLgAwc2NvcmVfcG90X2lkBIBtb2Rsc2NvcmVwb3QAAAAAAAAAAAAAAAAAAAAAAAAAAATgIEdldCBhIHVuaXF1ZSwgaW5hY2Nlc3NpYmxlIGFjY291bnQgSUQgZnJvbSB0aGUgYFBvdElkYC4ANHNjb3JlX2NvbnRleHQIgHBvcDpwb2xrYWRvdC5uZXR3b3JrL3Njb3JlICAgICAgCFkBIFRoZSBjb250ZXh0IHVzZWQgZm9yIHRoZSBwcm9vZnMgcmVxdWlyZWQgdG8gYXV0aGVudGljYXRlIGFzIGEgcGVyc29uYWwgYWxpYXMgaW4gc2NvcmUgIHBhbGxldC4AKHViaV9wb2ludHM4EAYAAAAEFQEgVGhlIG51bWJlciBvZiBwb2ludHMgcmVjZWl2ZWQgd2hlbiBhdHRlbmRpbmcgYXMgYSByZWNvZ25pemVkIHBlcnNvbi4AAUkLAAAAOAAAIER1bW15RGltASBEdW1teURpbQgsUmVzZXJ2ZWRJZHMAAQQCKBAEAATcIFRoZSBwZXJzb25hbCBJRHMgdGhhdCBhcmUgcmVzZXJ2ZWQgYnkgdW5wcm92ZW4gcGVvcGxlLgAYUGVvcGxlAAEEBShNCwQABLggVGhlIHBlb3BsZSB3ZSB0cmFjayBhbG9uZyB3aXRoIHRoZWlyIHJlY29yZHMuAAHFBAABJQcAAAFRCwAAADsAAChQZW9wbGVMaXRlAShQZW9wbGVMaXRlFChMaXRlUGVvcGxlAAEEAgRVCwQAAAA4QWxpYXNUb0FjY291bnQAAQQCSQMEBAAE4CBDb252ZXJzaW9uIG9mIGEgbGl0ZSBjb250ZXh0dWFsIGFsaWFzIHRvIGFuIGFjY291bnQgSUQuADhBY2NvdW50VG9BbGlhcwABBAIERQMEAATgIENvbnZlcnNpb24gb2YgYW4gYWNjb3VudCBJRCB0byBhIGxpdGUgY29udGV4dHVhbCBhbGlhcy4AbExpdGVQZW9wbGVDb2xsZWN0aW9uQ3JlYXRlZAEAyAQABPAgV2hldGhlciB0aGUgbGl0ZSBwZW9wbGUgbWVtYmVyIGNvbGxlY3Rpb24gaGFzIGJlZW4gY3JlYXRlZC4AUEF0dGVzdGF0aW9uQWxsb3dhbmNlAQEEAgQ4EAAAAAAEKQEgTnVtYmVyIG9mIGF0dGVzdGF0aW9ucyBhdmFpbGFibGUgdG8gZGlzdHJpYnV0ZSBmb3IgYSB2ZXJpZmllciBhY2NvdW50IGlkLgAB3QQAASkHAAxATGl0ZVJpbmdFeHBvbmVudP0EBAkEzCBSaW5nIGV4cG9uZW50IHVzZWQgZm9yIHRoZSBsaXRlIHBlb3BsZSBjb2xsZWN0aW9uLgBITGl0ZU9uYm9hcmRpbmdTaXplOBADAAAABPwgT25ib2FyZGluZyBzaXplIHVzZWQgd2hlbiBjcmVhdGluZyB0aGUgbGl0ZSBwZW9wbGUgY29sbGVjdGlvbi4AdGFjY291bnRfc2V0dXBfYmxvY2tfdG9sZXJhbmNlOBBYAgAABC0BIFRoZSBudW1iZXIgb2YgYmxvY2tzIG9mIHRvbGVyYW5jZSB3ZSBhbGxvdyBmb3IgYW4gYWxpYXMgc2V0dXAgdHJhbnNhY3Rpb24uAAFdCwAEUEF0dGVzdGF0aW9uU2lnbmF0dXJlNQQIYQEgU2lnbmF0dXJlIGdlbmVyYXRlZCBieSBsaXRlIHBlb3BsZSBhbmQgdXNlZCBieSB2ZXJpZmllcnMgdG8gY2xhaW0gYXR0ZXN0YXRpb25zIG9uIHRoZWlyICBiZWhhbGYuAD4AACRSZXNvdXJjZXMBJFJlc291cmNlcywkQ29uc3VtZXJzAAEEAgRhCwQABCkBIEFjY291bnRzIHVzZWQgdG8gaWRlbnRpZnkgY29uc3VtZXJzIG1hcHBlZCB0byB0aGVpciBjb25zdW1lciBpbmZvcm1hdGlvbi4AYFN0YXRlbWVudFN0b3JlQWxsb3dhbmNlcwABCAYCaQtxCwQAFHEBIEFjY291bnRzIGFzc29jaWF0ZWQgd2l0aCBhIHN0YXRlbWVudCBzdG9yZSBzbG90IHRocm91Z2ggYW4gYW5vbnltb3VzIGFsbG93YW5jZSwgcGVyIHBlcmlvZC4AYQEgVGhlIHBlcmlvZCBrZXkgaXMgYSBiaWctZW5kaWFuIGVuY29kZWQgZGF5IG51bWJlciAoc2Vjb25kcyBzaW5jZSBVbml4IGVwb2NoIC8gODY0MDApIHNvcQEgdGhhdCBgSWRlbnRpdHlgLWhhc2hlZCBpdGVyYXRpb24geWllbGRzIGVudHJpZXMgaW4gY2hyb25vbG9naWNhbCBvcmRlciB0byBiZSByZW1vdmVkIGJ5IHRoZUQgb2ZmY2hhaW4gd29ya2VyLgBsU3RtdFN0b3JlQWxsb3dhbmNlQnlBY2NvdW50AAEIAgJ1CxAEABRBASBSZXZlcnNlIGxvb2t1cCBmcm9tIGEgc3RhdGVtZW50IGFjY291bnQgdG8gYWxsIGl0cyBhY3RpdmUgYW5vbnltb3VzIGFsbG93YW5jZXMuAEUBIEtleWVkIGJ5IGAoQWNjb3VudElkLCAoQmlnRW5kaWFuVTMyIHBlcmlvZCwgdTMyIHNlcSwgQWxpYXMpKWAg4oaSIGAoKWAuIE11bHRpcGxlSQEgZW50cmllcyBwZXIgYWNjb3VudCBhcmUgcG9zc2libGUgd2hlbiB0aGUgc2FtZSBzdGF0ZW1lbnQgYWNjb3VudCBpcyBhdXRob3JpemVkIGJ5zCBkaWZmZXJlbnQgYWxpYXNlcyBvciBhY3Jvc3MgZ3JhY2Utd2luZG93IG92ZXJsYXBzLgCARnJpZW5kUmVxdWVzdFJlZ2lzdHJhdGlvbkJ5QWxpYXMAAQQCCH0LBAAEKQEgRnJpZW5kIHJlcXVlc3QgcmVnaXN0cmF0aW9uIGJ5IGFub255bW91cyBhbGlhcyBpbiBmcmllbmQgcmVxdWVzdCBjb250ZXh0LgBsRnJpZW5kUmVxdWVzdEFsaWFzQnlBY2NvdW50AAEEAgQIBAAEJQEgUmV2ZXJzZSBsb29rdXAgZnJvbSBmcmllbmQgcmVxdWVzdCBzdGF0ZW1lbnQgYWNjb3VudCB0byBhbm9ueW1vdXMgYWxpYXMuAGxTcGVudExvbmdUZXJtU3RvcmFnZUFsaWFzZXMAAQgGAmkLEAQAIEkBIEFsaWFzZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiB1c2VkIHRvIGNsYWltIGxvbmctdGVybSBzdG9yYWdlIGluIGEgZ2l2ZW4gcGVyaW9kLgBZASBLZXllZCBieSBgKHBlcmlvZCwgYWxpYXMpYC4gRWFjaCBjb3VudGVyIHZhbHVlIGluIHRoZSBwcm9vZiBjb250ZXh0IHByb2R1Y2VzIGEgdW5pcXVlXQEgYWxpYXMsIHNvIGEgcGVyc29uIGNhbiBoYXZlIHVwIHRvIGBMb25nVGVybVN0b3JhZ2VDbGFpbXNQZXJQZXJpb2RgIGVudHJpZXMgcGVyIHBlcmlvZC41ASBPbGQgcGVyaW9kcyBjYW4gYmUgY2xlYW5lZCB1cCB2aWEgYGNsZWFyX2V4cGlyZWRfbG9uZ190ZXJtX3N0b3JhZ2VfYWxpYXNlc2AuAEEBIFRoZSBwZXJpb2Qga2V5IGlzIGBCaWdFbmRpYW5VMzJgIHdpdGggYElkZW50aXR5YCBzbyBpdGVyYXRpb24geWllbGRzIGVudHJpZXMgaW7oIGNocm9ub2xvZ2ljYWwgb3JkZXIsIG1hdGNoaW5nIGBTdGF0ZW1lbnRTdG9yZUFsbG93YW5jZXNgLgA8VXNlcm5hbWVPd25lck9mAAEEAkEEBAQAGHEBIFJldmVyc2UgbG9va3VwIGZyb20gYHVzZXJuYW1lYCB0byB0aGUgYEFjY291bnRJZGAgdGhhdCBoYXMgcmVnaXN0ZXJlZCBpdC4gVGhlIGBvd25lcmAgdmFsdWVlASBzaG91bGQgYmUgYSBrZXkgaW4gdGhlIGBDb25zdW1lcnNgIG1hcC4gVGhlcmUgY2FuIGJlIGF0IG1vc3QgMiB1c2VybmFtZXMgcG9pbnRpbmcgdG8gdGhlOCBzYW1lIGBvd25lcmA6cQEgLSB1c2VybmFtZSBhc3NvY2lhdGVkIHdpdGggYSBjb25zdW1lcidzIGxpdGUgcGVyc29uIGlkZW50aXR5IC0gdGhpcyB3aWxsIGFsd2F5cyBiZSBwcmVzZW50O1kBIC0gb3B0aW9uYWxseSBhbm90aGVyIHVzZXJuYW1lIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29uc3VtZXIncyBmdWxsIHBlcnNvbiBpZGVudGl0eSwgaWY4ICAgYXBwbGljYWJsZS4AOEFjY291bnRPZkFsaWFzAAEEAggEBAAEaQEgUmV2ZXJzZSBsb29rdXAgZnJvbSByZWdpc3RlcmVkIGFsaWFzZXMgdG8gdGhlIGBBY2NvdW50SWRgIHVzZWQgdG8gcmVnaXN0ZXIgYXMgYSBjb25zdW1lci4AbFVzZXJuYW1lUmVzZXJ2YXRpb25EdXJhdGlvbgEAKCAAAAAAAAAAAAhVASBUaGUgYW1vdW50IG9mIHRpbWUgZm9yIHdoaWNoIGEgdXNlcm5hbWUgcmVzZXJ2YXRpb24gaXMgdmFsaWQsIGluIHNlY29uZHMuIEFmdGVyIHRoaXPQIHRpbWUgcGVyaW9kIGVsYXBzZXMsIHRoZSByZXNlcnZhdGlvbiBjYW4gYmUgdm9pZGVkLgBgVXNlcm5hbWVSZXNlcnZhdGlvblF1ZXVlAAEEAkEEgQsEAAhxASBNYXAgZnJvbSBhIHJlc2VydmVkIGB1c2VybmFtZWAgdG8gYSBxdWV1ZSBvZiBgUmVzZXJ2YXRpb25RdWV1ZUVudHJ5YCBpdGVtcywgZWFjaCBob2xkaW5nIGFuYQEgYWNjb3VudCBhbmQgdGhlIHRpbWVzdGFtcCB3aGVuIGl0IGpvaW5lZC4gT2xkIHJlc2VydmF0aW9ucyBjYW4gYmUgcmVtb3ZlZCBmcm9tIHN0b3JhZ2UuADRSZXNlcnZhdGlvbk9mAAEEAgRBBAQACGUBIFJldmVyc2UgbG9va3VwIGZyb20gYW4gYWNjb3VudCB0byB0aGUgdXNlcm5hbWUgaXQgaGFzIHJlc2VydmVkLiBFYWNoIGFjY291bnQgY2FuIGhhdmUgYXScIG1vc3Qgb25lIGFjdGl2ZSByZXNlcnZhdGlvbiBhdCBhIHRpbWUuAAHtBAABLQcAVERNYXhVc2VybmFtZUxlbmd0aDgQIAAAAAQtASBUaGUgbWF4aW11bSBsZW5ndGggb2YgYSB1c2VybmFtZSwgaW5jbHVkaW5nIGFueSBwb3RlbnRpYWwgdHJhaWxpbmcgZGlnaXRzLgBETWluVXNlcm5hbWVMZW5ndGg4EAYAAAAEiCBUaGUgbWluaW11bSBsZW5ndGggb2YgYSB1c2VybmFtZS4ASFBlcnNvbkF1dGhEdXJhdGlvbjgQAKMCAAxVASBUaGUgZHVyYXRpb24gb2YgdGltZSwgaW4gc2Vjb25kcywgZm9yIHdoaWNoIGEgcGVyc29uJ3MgYXV0aG9yaXphdGlvbiBpcyB2YWxpZC4gQWZ0ZXJRASB0aGlzIHBlcmlvZCBlbGFwc2VzLCBwZW9wbGUgd2lsbCBubyBsb25nZXIgYmUgY29uc2lkZXJlZCBhY3RpdmUsIGJ1dCB0aGVpciByZXNvdXJjZQ0BIGFsbG93YW5jZXMgc2hvdWxkIGRlZmF1bHQgdG8gdGhlIHNhbWUgdmFsdWVzIHVzZWQgZm9yIGxpdGUgcGVvcGxlLgBsTWluUGVyc29uQXV0aFVwZGF0ZUludGVydmFsOBCAUQEACFUBIFRoZSBtaW5pbXVtIGludGVydmFsIG9mIHRpbWUsIGluIHNlY29uZHMsIHdoaWNoIG11c3QgcGFzcyBiZWZvcmUgdXBkYXRpbmcgYSBwZXJzb24nczwgYXV0aG9yaXphdGlvbi4AZE1heFJlc2VydmF0aW9uUXVldWVMZW5ndGg4EAoAAAAEKQEgTWF4aW11bSBudW1iZXIgb2YgYWNjb3VudHMgdGhhdCBjYW4gcXVldWUgZm9yIGEgc2luZ2xlIHJlc2VydmVkIHVzZXJuYW1lLgBQQWNjb3VudHNBcGlBbGxvd2FuY2WNCyACAAAAAMgAAATQIFRoZSBTdGF0ZW1lbnQgU3RvcmUgYWxsb3dhbmNlIGZvciB0aGUgYWNjb3VudHMgQVBJLgBcU3RtdFN0b3JlU2xvdHNQZXJQZXJpb2Q4EAgAAAAEOQEgTWF4aW11bSBudW1iZXIgb2Ygc3RhdGVtZW50IHN0b3JlIHNsb3RzIGEgcGVyc29uIGNhbiBjbGFpbSB3aXRoaW4gb25lIHBlcmlvZC4AbExpdGVTdG10U3RvcmVTbG90c1BlclBlcmlvZDgQBAAAABBNASBNYXhpbXVtIG51bWJlciBvZiBzdGF0ZW1lbnQgc3RvcmUgc2xvdHMgYSBsaXRlIHBlcnNvbiBjYW4gY2xhaW0gd2l0aGluIG9uZSBwZXJpb2QuAE0BIFNhbWUgc2VtYW50aWNzIGFzIGBTdG10U3RvcmVTbG90c1BlclBlcmlvZGAgYnV0IGFwcGxpZWQgd2hlbiB0aGUgcHJvb2YgdGFyZ2V0cyB0aGX8IGxpdGUtcGVvcGxlIGNvbGxlY3Rpb24gdmlhIGBNZW1iZXJzaGlwQ29sbGVjdGlvbjo6TGl0ZVBlb3BsZWAuAFRTdG10U3RvcmVDbGVhbnVwTGltaXQ4EDIAAAAEWQEgTWF4aW11bSBudW1iZXIgb2Ygc3RhbGUgc3RhdGVtZW50IHN0b3JlIGFsbG93YW5jZSBlbnRyaWVzIHRvIHJlbW92ZSBwZXIgY2xlYW51cCBjYWxsLgBwU3RtdFN0b3JlUmVwbGFjZW1lbnRDb29sZG93bjgQCAcAAAg1ASBNaW5pbXVtIHRpbWUsIGluIHNlY29uZHMsIHRoYXQgbXVzdCBwYXNzIGJlZm9yZSBhbiBhbGlhcyBjYW4gcmVwbGFjZSBpdHMgb3du4CBzdGF0ZW1lbnQgc3RvcmUgYWxsb3dhbmNlIGVudHJ5IHdpdGhpbiB0aGUgc2FtZSBwZXJpb2QuAFhGcmllbmRSZXF1ZXN0QWxsb3dhbmNljQsgAQAAAAAoAAAEJQEgVGhlIFN0YXRlbWVudCBTdG9yZSBhbGxvd2FuY2UgZm9yIGZyaWVuZCByZXF1ZXN0IHN0YXRlbWVudCByZWdpc3RyYXRpb24uAGxGcmllbmRSZXF1ZXN0U2xvdHNQZXJQZXJpb2QMBBAUSQEgTWF4aW11bSBudW1iZXIgb2YgZnJpZW5kIHJlcXVlc3RzIGEgcGVyc29uIGNhbiBzZW5kIHdpdGhpbiBvbmUgcmF0ZS1saW1pdCBwZXJpb2QuAFUBIEZvciBleGFtcGxlLCBpZiB0aGlzIGlzIGA4YCwgZWFjaCBwZXJzb24gY2FuIHNlbmQgdXAgdG8gOCBmcmllbmQgcmVxdWVzdHMgZHVyaW5nIHRoZVkBIHBlcmlvZCBzZWxlY3RlZCBieSBgRnJpZW5kUmVxdWVzdFBlcmlvZER1cmF0aW9uYC4gV2hlbiB0aGUgcGVyaW9kIGFkdmFuY2VzLCB0aGUgc2xvdHMcIHJlc2V0LgB8TGl0ZUZyaWVuZFJlcXVlc3RTbG90c1BlclBlcmlvZAwECBBdASBNYXhpbXVtIG51bWJlciBvZiBmcmllbmQgcmVxdWVzdHMgYSBsaXRlIHBlcnNvbiBjYW4gc2VuZCB3aXRoaW4gb25lIHJhdGUtbGltaXQgcGVyaW9kLgBdASBTYW1lIHNlbWFudGljcyBhcyBgRnJpZW5kUmVxdWVzdFNsb3RzUGVyUGVyaW9kYCBidXQgYXBwbGllZCB3aGVuIHRoZSBwcm9vZiB0YXJnZXRzIHRoZfwgbGl0ZS1wZW9wbGUgY29sbGVjdGlvbiB2aWEgYE1lbWJlcnNoaXBDb2xsZWN0aW9uOjpMaXRlUGVvcGxlYC4AbEZyaWVuZFJlcXVlc3RQZXJpb2REdXJhdGlvbjgQgFEBACQNASBSb2xsaW5nIHRpbWUgd2luZG93IGZvciByYXRlLWxpbWl0aW5nIGZyaWVuZCByZXF1ZXN0cywgaW4gc2Vjb25kcy4ANQEgVGltZSBpcyBkaXZpZGVkIGludG8gZml4ZWQtZHVyYXRpb24gcGVyaW9kcy4gVGhlIHBlcmlvZCBpbmRleCBpcyBjb21wdXRlZCBhc6ggYG5vd19zZWNzIC8gRnJpZW5kUmVxdWVzdFBlcmlvZER1cmF0aW9uYC4AYQEgRm9yIGV4YW1wbGUsIGlmIHRoaXMgaXMgYDg2XzQwMGAgKDI0IGhvdXJzKSwgcGVyaW9kIGAwYCBpcyB0aGUgZmlyc3QgMjQgaG91cnMgc2luY2UgdGhlGQEgVW5peCBlcG9jaCwgcGVyaW9kIGAxYCBpcyB0aGUgbmV4dCAyNCBob3VycywgYW5kIHNvIG9uLiBDb21iaW5lZCB3aXRoZQEgYEZyaWVuZFJlcXVlc3RTbG90c1BlclBlcmlvZGAsIHRoaXMgZGVmaW5lcyBob3cgbWFueSBmcmllbmQgcmVxdWVzdHMgY2FuIGJlIHNlbnQgaW4gZWFjaCAgcGVyaW9kLgBgRnJpZW5kUmVxdWVzdEdyYWNlV2luZG93OBAQDgAAFEUBIEV4dHJhIHRpbWUsIGluIHNlY29uZHMsIGR1cmluZyB3aGljaCB0aGUgcHJldmlvdXMgZnJpZW5kIHJlcXVlc3QgcGVyaW9kIGlzIHN0aWxsbCBhY2NlcHRlZCBhZnRlciBhIHJvbGxvdmVyLgBlASBUaGlzIGFsbG93cyB0cmFuc2FjdGlvbnMgY3JlYXRlZCBjbG9zZSB0byBhIHBlcmlvZCBib3VuZGFyeSB0byBzdGlsbCBiZSBpbmNsdWRlZCBldmVuIGlm1CB0aGV5IGFyZSBleGVjdXRlZCBqdXN0IGFmdGVyIHRoZSBuZXh0IHBlcmlvZCBiZWdpbnMuAHhGcmllbmRSZXF1ZXN0UmV0ZW50aW9uRHVyYXRpb24oIIA6CQAAAAAAFGEBIER1cmF0aW9uIGZvciB3aGljaCBmcmllbmQgcmVxdWVzdCByZWdpc3RyYXRpb25zIHdpbGwgYmUgcmV0YWluZWQuIFNwZWNpZmllZCBpbiBzZWNvbmRzLgAhASBBIHJlZ2lzdHJhdGlvbiBpcyBjcmVhdGVkIGZvciBhIHNwZWNpZmljIHBlcmlvZC4gT25jZSB0aGlzIHBlcmlvZCBlbmRzLCEBIHRoZSByZWdpc3RyYXRpb24gcmVtYWlucyB2YWxpZCBmb3IgdGhlIGNvbmZpZ3VyZWQgZHVyYXRpb24sIGFmdGVyIHdoaWNo8CBpdCBjYW4gYmUgY2xlYW5lZCB1cC4gU2VlIGBmcmllbmRfcmVxdWVzdF9leHBpcmF0aW9uX3RpbWVgLgBYT2ZmY2hhaW5Xb3JrZXJJbnRlcnZhbDgQAQAAAATsIE51bWJlciBvZiBibG9ja3MgYmV0d2VlbiBvZmZjaGFpbi13b3JrZXIgbWFpbnRlbmFuY2UgcnVucy4AdExvbmdUZXJtU3RvcmFnZVBlcmlvZER1cmF0aW9uOBAAdRIAFAUBIFRoZSBkdXJhdGlvbiBvZiBhIGxvbmctdGVybSBzdG9yYWdlIGNsYWltaW5nIHBlcmlvZCwgaW4gc2Vjb25kcy4ANQEgVGltZSBpcyBkaXZpZGVkIGludG8gZml4ZWQtZHVyYXRpb24gcGVyaW9kcy4gVGhlIHBlcmlvZCBpbmRleCBpcyBjb21wdXRlZCBhcyUBIGBub3dfc2VjcyAvIExvbmdUZXJtU3RvcmFnZVBlcmlvZER1cmF0aW9uYC4gRWFjaCBwZXJzb24gY2FuIHN1Ym1pdCB1cCB0b9AgYExvbmdUZXJtU3RvcmFnZUNsYWltc1BlclBlcmlvZGAgY2xhaW1zIHBlciBwZXJpb2QuAHhMb25nVGVybVN0b3JhZ2VDbGFpbXNQZXJQZXJpb2QMBAoQCQEgTWF4aW11bSBudW1iZXIgb2YgbG9uZy10ZXJtIHN0b3JhZ2UgY2xhaW1zIHBlciBwZXJzb24gcGVyIHBlcmlvZC4ASQEgRWFjaCBjbGFpbSB1c2VzIGEgZGlmZmVyZW50IGNvdW50ZXIgdmFsdWUgKDAuLmNsYWltc19wZXJfcGVyaW9kKSB3aGljaCBwcm9kdWNlcyBhKQEgZGlzdGluY3QgYWxpYXMgaW4gdGhlIHByb29mIGNvbnRleHQsIGVuc3VyaW5nIG9uZSBjbGFpbSBwZXIgY291bnRlciBzbG90LgBoTG9uZ1Rlcm1TdG9yYWdlR3JhY2VXaW5kb3c4EBAOAAAQUQEgRXh0cmEgdGltZSwgaW4gc2Vjb25kcywgZHVyaW5nIHdoaWNoIHRoZSBwcmV2aW91cyBsb25nLXRlcm0gc3RvcmFnZSBwZXJpb2QgaXMgc3RpbGxsIGFjY2VwdGVkIGFmdGVyIGEgcm9sbG92ZXIuAFkBIFNhbWUgc2VtYW50aWNzIGFzIGBGcmllbmRSZXF1ZXN0R3JhY2VXaW5kb3dgIGJ1dCBhcHBsaWVkIHRvIGxvbmctdGVybSBzdG9yYWdlIGNsYWltcy4AbExvbmdUZXJtU3RvcmFnZUNsZWFudXBMaW1pdDgQFAAAABRJASBNYXhpbXVtIG51bWJlciBvZiBzcGVudCBsb25nLXRlcm0gc3RvcmFnZSBhbGlhc2VzIHRoYXQgY2FuIGJlIGNsZWFyZWQgaW4gYSBzaW5nbGXAIGBjbGVhcl9leHBpcmVkX2xvbmdfdGVybV9zdG9yYWdlX2FsaWFzZXNgIGNhbGwuAE0BIEJvdW5kcyB0aGUgd29yc3QtY2FzZSB3ZWlnaHQgb2YgdGhlIGNsZWFudXAgZXh0cmluc2ljOyBjYWxsZXJzIG11c3QgcGFzcyBhIGBsaW1pdGBwIG5vIGdyZWF0ZXIgdGhhbiB0aGlzIHZhbHVlLgABkQsABERPZmZjaGFpblNpZ25hdHVyZTUECFEBIFNpZ25hdHVyZSB0eXBlIGZvciBlbnN1cmluZyBvd25lcnNoaXAgb2YgcHJvdmlkZWQgYWNjb3VudHMgaW4gY2FzZSBvZiByZWdpc3RyYXRpb25zPCB0aHJvdWdoIGFsaWFzLgwhEeDfGd6VY7WDAeX34AdDNy0+pos6SqoYqViorNcaQ2RjdXJyZW50X3N0bXRfc3RvcmVfcGVyaW9kADgEUQEgUmV0dXJucyB0aGUgY3VycmVudCBzdGF0ZW1lbnQgc3RvcmUgYWxsb3dhbmNlIHBlcmlvZCAoZGF5IG51bWJlciBzaW5jZSBVbml4IGVwb2NoKS4AIRHg3xnelWO1gwHl9+AHQ6zIJchDXr2dNbwNtep2DpZsc3RtdF9zdG9yZV9zbG90X2NvbnRleHRfZm9yCBhwZXJpb2Q4DHNlcTgIECEBIFJldHVybnMgdGhlIHByb29mIGNvbnRleHQgZm9yIGEgc3RhdGVtZW50IHN0b3JlIHNsb3QgY2xhaW0gYXQgdGhlIGdpdmVuUCBgcGVyaW9kYCBhbmQgYHNlcWAuAD0BIExheW91dDogYFNTU19TTE9UOjxwZXJpb2QgKDQgYnl0ZXMgQkUpPjxzZXEgKDQgYnl0ZXMgQkUpPmAgcGFkZGVkIHRvIDMyIGJ5dGVzLgAhEeDfGd6VY7WDAeX34AdDPYPcixulipt5B3FsGali92hmcmllbmRfcmVxdWVzdF9jb250ZXh0X2ZvcggYcGVyaW9kOAxzZXEMCAglASBSZXR1cm5zIHRoZSBwcm9vZiBjb250ZXh0IGZvciBhIGZyaWVuZCByZXF1ZXN0IHJlZ2lzdHJhdGlvbiBhdCB0aGUgZ2l2ZW5QIGBwZXJpb2RgIGFuZCBgc2VxYC4APwAANENodW5rc01hbmFnZXIBNENodW5rc01hbmFnZXIIGENodW5rcwABCAUFlQuZCwQABBkBIFBhZ2luYXRlZCBjb2xsZWN0aW9uIG9mIGNodW5rcyAoUmluZ0V4cG9uZW50IC0+IFBhZ2VJbmRleCAtPiBDaHVua3MpLgA8Q2h1bmtQYWdlSGFzaGVzAAEIBQWVCwgEAASIIFRoZSBoYXNoIGZvciBlYWNoIHBhZ2Ugb2YgY2h1bmtzLgAB+QQAATEHAAQgUGFnZVNpemU4EP8AAAAEzCBOdW1iZXIgb2YgY2h1bmtzIHBlciBwYWdlLiBNdXN0IGJlIGEgcG93ZXIgb2YgdHdvLgABpQsABBRDaHVua50LBHAgVGhlIHR5cGUgb2YgYSBzaW5nbGUgY2h1bmsuAEAAABxNZW1iZXJzARxNZW1iZXJzRCxDb2xsZWN0aW9ucwABBAYIqQsEAATgIEluZm9ybWF0aW9uIGFib3V0IGVhY2ggY29sbGVjdGlvbiwga2V5ZWQgYnkgaWRlbnRpZmllci4AUFN1c3BlbmRlZENvbGxlY3Rpb25zAAEEBgipCwQACCEBIENvbGxlY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIG1hcmtlZCBmb3IgZGVsZXRpb24gYW5kIGFyZSBiZWluZyBwcm9jZXNzZWQuWQEgT25jZSBhIGNvbGxlY3Rpb24gaXMgbW92ZWQgaGVyZSwgbm9ybWFsIG9wZXJhdGlvbnMgd2lsbCBmYWlsIHdpdGggQ29sbGVjdGlvbk5vdEZvdW5kLgA0SWRlbnRpZmllcnNPZgABBAKtC7ULBAAEzCBUaGUgaWRlbnRpZmllcnMgb2YgY29sbGVjdGlvbnMgb3duZWQgYnkgYW4gZW50aXR5LgAQUm9vdAABCAYCuQu9CwQABIggVGhlIGN1cnJlbnQgbWVtYmVycyB3ZSByZWNvZ25pc2UuACBPbGRSb290cwABDAYGBskLzQsEACRBASBPbGQgcmluZyByb290cyBhcmUgcmV0YWluZWQgZm9yIGEgZ3JhY2UgcGVyaW9kIHNvIHRoYXQgcHJvb2ZzIGdlbmVyYXRlZCBhZ2FpbnN0ZQEgcHJldmlvdXMgcmV2aXNpb25zIHJlbWFpbiB2YWxpZC4gRWFjaCByb290IGluIHRoZSBtYXAgaXMgaWRlbnRpZmllZCBieSB0aGUgY29tcG9zaXRlIGtleS0BIGAoY29sbGVjdGlvbiwgcmluZyBpbmRleCwgcmluZyByZXZpc2lvbilgLiBFbnRyaWVzIGNhbiBiZSBjbGVhbmVkIHVwIGFmdGVyJQEgYE9sZFJvb3RSZXRlbnRpb25EdXJhdGlvbmAgaGFzIHBhc3NlZCBzaW5jZSB0aGUgYGFyY2hpdmVkX2F0YCB0aW1lc3RhbXAuADkBIFRoaXMgc3RvcmFnZSBjYW4gY29udGFpbiBzb21lIHJvb3RzIGZvciBkZWxldGVkIGNvbGxlY3Rpb25zIG9yIHJlbW92ZWQgcmluZ3MuXQEgVGhlIGNhbGwgYHZlcmlmeV9tZW1iZXJzaGlwX2F0X3JldmAgYW5kIG90aGVyIG9wZXJhdGlvbiB1c2luZyBvbGQgcm9vdHMgbXVzdCBjaGVjayB0aGVBASBleGlzdGVuY2Ugb2YgdGhlIGNvbGxlY3Rpb24gYW5kIHRoZSByb290IGluIG9yZGVyIHRvIG5vdCB2YWxpZGF0ZSBhZ2FpbnN0IGR1c3Qu8CBUaGUgb2xkIHJvb3RzIHdpbGwgYmUgcmVtb3ZlZCBhZnRlciB0aGUgcmV0ZW50aW9uIGR1cmF0aW9uLgBAQ3VycmVudFJpbmdJbmRleAEBBAYIOBAAAAAABOQgS2VlcHMgdHJhY2sgb2YgdGhlIHJpbmcgaW5kZXggY3VycmVudGx5IGJlaW5nIHBvcHVsYXRlZC4AOE9uYm9hcmRpbmdTaXplAQEEBgg4EAAAAAAE+CBNYXhpbXVtIG51bWJlciBvZiBtZW1iZXJzIHF1ZXVlZCBiZWZvcmUgb25ib2FyZGluZyB0byBhIHJpbmcuACBSaW5nS2V5cwEBDAYCBdEL1QsEABBhASBCb3RoIHRoZSBrZXlzIHRoYXQgYXJlIGluY2x1ZGVkIGluIGJ1aWx0IHJpbmdzIGFuZCB0aGUga2V5cyB0aGF0IHdpbGwgYmUgdXNlZCBpbiBmdXR1cmVZASByaW5ncy4gUGFnaW5hdGVkIGJ5IChJZGVudGlmaWVyLCBSaW5nSW5kZXgsIFBhZ2VJbmRleCkgd2hlcmUgZWFjaCBwYWdlIGNvbnRhaW5zIHVwIHRvdQEgYFJpbmdDYXBhY2l0eUZyb21FeHBvbmVudGAga2V5cy4gVGhlIHBhZ2Ugc2l6ZSBlcXVhbHMgdGhlIGZsZXhpYmxlIHJpbmcgZXhwb25lbnQncyBjYXBhY2l0eSz0IGVuc3VyaW5nIEZsZXhpYmxlIGNvbGxlY3Rpb25zIG5ldmVyIG5lZWQgbW9yZSB0aGFuIG9uZSBwYWdlLgA4UmluZ0tleXNTdGF0dXMBAQgGArkL2QskAAAAAAAAAAAACGEBIFN0b3JlcyB0aGUgbWV0YSBpbmZvcm1hdGlvbiBmb3IgZWFjaCByaW5nLCB0aGUgbnVtYmVyIG9mIGtleXMgYW5kIGhvdyBtYW55IGFyZSBhY3R1YWxseVggaW5jbHVkZWQgaW4gdGhlIHJvb3QuAEhQZW5kaW5nU3VzcGVuc2lvbnMBAQgGBbkL3QsEAAxpASBBIG1hcCBvZiBhbGwgcmluZ3Mgd2hpY2ggY3VycmVudGx5IGhhdmUgcGVuZGluZyBzdXNwZW5zaW9ucyBhbmQgbmVlZCBjbGVhbmluZywgYWxvbmcgd2l0aBEBIHRoZWlyIHJlc3BlY3RpdmUgbnVtYmVyIG9mIHN1c3BlbmRlZCBrZXlzIHdoaWNoIG5lZWQgdG8gYmUgcmVtb3ZlZC5tASBOb3RlOiBDdXJyZW50bHkgb25seSBzdXBwb3J0cyBzaW5nbGUtcGFnZSByaW5ncywgc28gYm91bmRlZCBieSBgUmluZ0NhcGFjaXR5RnJvbUV4cG9uZW50YC4ANEFjdGl2ZU1lbWJlcnMBAQQGCDgQAAAAAATQIFRoZSBudW1iZXIgb2YgbWVtYmVycyBjdXJyZW50bHkgaW5jbHVkZWQgaW4gYSByaW5nLgAcTWVtYmVycwABCAYC4QvlCwQAGF0BIFRoZSBjdXJyZW50IG1lbWJlcnMgaW4gZWFjaCBjb2xsZWN0aW9uIChlaXRoZXIgaW5jbHVkZWQgaW4gcmluZ3MsIHN1c3BlbmRlZCBhbmQgcXVldWVkIQEgZm9yIHJlbW92YWwgZnJvbSBhIHJpbmcsIHN1c3BlbmRlZCBhbmQgbm90IGluIGFueSByaW5nLCBvciBvbmJvYXJkaW5nKS4ADQEgQ29sbGVjdGlvbiBpZGVudGlmaWVyIHRvIG1lbWJlciBwdWJsaWMga2V5IHRvIHRoZSBtZW1iZXIncyBzdGF0dXMuAKggQSBrZXkgY2FuIGJlbG9uZyB0byBtdWx0aXBsZSBjb2xsZWN0aW9ucy4AKFJpbmdzU3RhdGUBAQQGCOkLBAAE/CBUaGUgY3VycmVudCBzdGF0ZSBvZiBhbGwgcmluZ3MgbWFuYWdlZCBmb3IgYSBnaXZlbiBpZGVudGlmaWVyLgAoU3RhbGVSaW5ncwABCAYFuQsQBAAEzCBTZXQgb2YgcmluZ3Mgd2hpY2ggYXJlIHN0YWxlIGFuZCByZXF1aXJlIGJ1aWxkaW5nLgBAUXVldWVQYWdlSW5kaWNlcwEBBAYIXQcgAAAAAAAAAAAEOQEgS2VlcHMgdHJhY2sgb2YgdGhlIHBhZ2UgaW5kaWNlcyBvZiB0aGUgaGVhZCBhbmQgdGFpbCBvZiB0aGUgb25ib2FyZGluZyBxdWV1ZS4APE9uYm9hcmRpbmdRdWV1ZQEBCAYFuQvxCwQABC0BIFBhZ2luYXRlZCBjb2xsZWN0aW9uIG9mIG1lbWJlciBwdWJsaWMga2V5cyByZWFkeSB0byBiZSBpbmNsdWRlZCBpbiBhIHJpbmcuAERSaW5nRGVsZXRpb25RdWV1ZQABDAYFBdELEAQAFJggUXVldWUgb2YgcmluZyBwYWdlcyBwZW5kaW5nIGRlbGV0aW9uLgAVASBUaGlzIGlzIHVzZWQgYm90aCBieSBgcmVtb3ZlX3JpbmdgIChpbmRpdmlkdWFsIHJpbmcgZGVsZXRpb24pIGFuZCBieRkBIGNvbGxlY3Rpb24gZGVsZXRpb24uIFJpbmcgcGFnZXMgYXJlIHByb2Nlc3NlZCBmcm9tIHRoaXMgcXVldWUgdmlhIE9DV6wgcmVnYXJkbGVzcyBvZiB3aGljaCBvcGVyYXRpb24gcXVldWVkIHRoZW0uAAEBBQABNQcAGDhNYXhDb2xsZWN0aW9uczgQZAAAAATEIE1heGltdW0gbnVtYmVyIG9mIGNvbGxlY3Rpb25zIGFuIG93bmVyIGNhbiBoYXZlLgBcT25ib2FyZGluZ1F1ZXVlUGFnZVNpemU4EP8AAAAITQEgTWF4aW11bSBudW1iZXIgb2YgbWVtYmVycyBpbmNsdWRlZCBpbiBhbiBvbmJvYXJkaW5nIHF1ZXVlIHBhZ2UgYmVmb3JlIGEgbmV3IG9uZSBpcyQgY3JlYXRlZC4AXE1heEZsZXhpYmxlUmluZ0V4cG9uZW50/QQECQxdASBUaGUgbWF4aW11bSByaW5nIGV4cG9uZW50IHVzZWQgZm9yIEZsZXhpYmxlIGNvbGxlY3Rpb25zLiBUaGlzIGFsc28gZGV0ZXJtaW5lcyB0aGUgcGFnZVUBIHNpemUgZm9yIHBhZ2luYXRlZCByaW5nIGtleSBzdG9yYWdlLiBGbGV4aWJsZSBjb2xsZWN0aW9ucyBjYW4gb25seSB1c2UgcmluZyBzaXplcyB1cDwgdG8gdGhpcyB2YWx1ZS4AXFJpbmdCdWlsZGluZ01lbWJlckxpbWl0OBBkAAAACGEBIE1heGltdW0gbnVtYmVyIG9mIG1lbWJlcnMgdGhhdCBjYW4gYmUgaW5jbHVkZWQgaW4gYSByaW5nIHRocm91Z2ggYSBzaW5nbGUgcm9vdCBidWlsZGluZxggY2FsbC4AYE9sZFJvb3RSZXRlbnRpb25EdXJhdGlvbiggWAIAAAAAAAAIUQEgRHVyYXRpb24gaW4gc2Vjb25kcyB0aGF0IG9sZCByaW5nIHJvb3RzIGFyZSByZXRhaW5lZCBiZWZvcmUgdGhleSBjYW4gYmUgY2xlYW5lZCB1cC5JASBUaGlzIGFsbG93cyBwcm9vZnMgZ2VuZXJhdGVkIHdpdGggb2xkZXIgcm9vdHMgdG8gcmVtYWluIHZhbGlkIGZvciBhIGdyYWNlIHBlcmlvZC4AWE9mZmNoYWluV29ya2VySW50ZXJ2YWw4EAEAAAAE5CBUaGUgbnVtYmVyIG9mIGJsb2NrcyBiZXR3ZWVuIG9mZmNoYWluIHdvcmtlciBleGVjdXRpb25zLgAB9QsABCBMb2NhdGlvbuAEOQEgTG9jYXRpb24gdHlwZSBmb3IgaWRlbnRpZnlpbmcgY29sbGVjdGlvbiBvd25lcnMgZnJvbSBvdGhlciBjaGFpbnMvcGFyYWNoYWlucy4AQwAAHENvaW5hZ2UBHENvaW5hZ2U8MENvaW5zQnlPd25lcgABBAUEcQMEABBAIENvaW5zIGJ5IG93bmVyLgBdASBUaGlzIHN0b3JhZ2UgbWFwIGNvbnRhaW5zIGFsbCB0aGUgY29pbnMgY3VycmVudGx5IGNpcmN1bGF0aW5nLiBUaGUgY29pbiBpcyBtaW50ZWQgd2hlbiUBIHVubG9hZGVkIGZyb20gdGhlIHJlY3ljbGVyLCBhbmQgZGVzdHJveWVkIHdoZW4gbG9hZGVkIGludG8gdGhlIHJlY3ljbGVyLgAsTG9ja2VkQ29pbnMAAQQFBPkLBAAQBQEgVGVtcG9yYXJ5IGxvY2sgZXhwaXJ5IGZvciBjb2lucyB0aGF0IHByZXZpb3VzbHkgZmFpbGVkIGRpc3BhdGNoLgBlASBBIGNvaW4gb3duZXIgZW50cnkgaXMgbG9ja2VkIHVudGlsIHRoZSBzdG9yZWQgVW5peCB0aW1lc3RhbXAsIHByZXZlbnRpbmcgcmVwZWF0ZWQgZmFpbGVklCBkaXNwYXRjaCBhdHRlbXB0cyBpbiBhIHNob3J0IHBlcmlvZC4AaFRvdGFsVmFsdWVPZkRlc3Ryb3llZENvaW5zAQDEQAAAAAAAAAAAAAAAAAAAAAAUqCBUaGUgdG90YWwgdmFsdWUgb2YgY29pbnMgdGhhdCB3ZXJlIGJ1cm50LgBpASBUaGlzIHRyYWNrcyB2YWx1ZSB0aGF0IGlzIGludGVudGlvbmFsbHkgZGVzdHJveWVkIGFzIHBhcnQgb2YgcHJvdG9jb2wgZmxvd3MgKGZvciBleGFtcGxlOmUBIHJlY3ljbGVyIGV4cGlyYXRpb24gY2xlYW51cCBhbmQgb3V0cHV0LXRva2VuIHNwYW0gcGVuYWx0eSBwYXRoKS4gVGhpcyBzdG9yYWdlIGl0ZW0ga2VlcHPIIHRyYWNrIG9mIHRoZSB0b3RhbCB2YWx1ZSBvZiBzdWNoIGRlc3Ryb3llZCBjb2lucy4AYENvbnN1bWVkRnJlZVVubG9hZFRva2VucwABCAUFXQoQBAAYxCBDb25zdW1lZCBmcmVlIHVubG9hZCB0b2tlbnMgYnkgcGVyaW9kIGFuZCBhbGlhcy4AVQEgVGhpcyBzdG9yYWdlIGtlZXBzIHRyYWNrIG9mIHRoZSBmcmVlIHVubG9hZCB0b2tlbnMgdGhhdCBoYXZlIGJlZW4gY29uc3VtZWQgYnkgcGVvcGxlrCBhbmQgbGl0ZSBwZW9wbGUsIHRvIGF2b2lkIGRvdWJsZSBzcGVuZGluZy4AcCBJdCBpcyBjbGVhcmVkIHBlcmlvZGljYWxseS4AZFJlY3ljbGVyQ29sbGVjdGlvbkNyZWF0ZWQAAQQFdQMQBABAEQEgVHJhY2tzIHdoZXRoZXIgYSByZWN5Y2xlciBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYSBnaXZlbiBjb2luIHZhbHVlLgBdASBBbGwgcmVjeWNsZXIgY29sbGVjdGlvbnMgYXJlIGNyZWF0ZWQgZWFnZXJseSBkdXJpbmcgb25lLXRpbWUgYG9uX3BvbGxgIGluaXRpYWxpemF0aW9uLi0BIFtgUmVjeWNsZXJNYW5hZ2VyOjplbnN1cmVfY29sbGVjdGlvbl9leGlzdHNgXSBzZXJ2ZXMgYXMgYSBzYWZldHkgZmFsbGJhY2suAFUBICoqV0FSTklORyoqOiBEbyBub3QgdXNlIHRoaXMgc3RvcmFnZSBkaXJlY3RseSwgdXNlIFtgUmVjeWNsZXJNYW5hZ2VyYF0gdHlwZSBpbnN0ZWFkLgBVASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBtYW5hZ2VkIGJ5IFtgUmVjeWNsZXJNYW5hZ2VyYF0gYW5kIGlzIHBhcnQgb2YgYSBjb25zaXN0ZW50IHNldDpBASAqIFtSZWN5Y2xlckNvbGxlY3Rpb25DcmVhdGVkXSAtIHdoZXRoZXIgdGhlIGNvbGxlY3Rpb24gZXhpc3RzIGZvciBhIGNvaW4gdmFsdWUuVQEgKiBbUmVjeWNsZXJzTGFzdFJlbW92ZWRSaW5nSW5kZXhdIC0gdGhlIGxhc3QgcmVtb3ZlZCByaW5nIGluZGV4IGZvciBlYWNoIGNvaW4gdmFsdWUuWQEgKiBbUmVjeWNsZXJzQ29pblRvUmVjeWNsZXJdIC0gdGhlIG1hcHBpbmcgZnJvbSBtZW1iZXIga2V5IHRvIHRoZSBjb2luIHZhbHVlIGl0IGlzIGluLmEBICogW1JlY3ljbGVyc1VubG9hZGVkXSAtIHRoZSByZWN5Y2xlcnMnIHVubG9hZGVkIGFsaWFzZXMsIGluZGV4ZWQgYnkgY29pbiB2YWx1ZSBhbmQgcmluZyQgICBpbmRleC4pASAqIFtSZWN5Y2xlcnNEdXN0aW5nXSAtIG1hcmtzIHJpbmdzIHdpdGggdW5sb2FkZWQgYWxpYXNlcyBwZW5kaW5nIHJlbW92YWwuAGEBIFJpbmcgbWVtYmVycywgcGVuZGluZyBtZW1iZXJzLCBhbmQgcmluZyBzdGF0ZSBhcmUgbWFuYWdlZCBieSBbYENvbmZpZzo6TWVtYmVyU2VydmljZWBdLgB0UmVjeWNsZXJzTGFzdFJlbW92ZWRSaW5nSW5kZXgAAQQFdQM4BABAxCBMYXN0IHJlbW92ZWQgcmluZyBpbmRleCBwZXIgcmVjeWNsZXIgY29pbiB2YWx1ZS4ARQEgUmluZ3MgYXJlIHJlbW92ZWQgc2VxdWVudGlhbGx5IHN0YXJ0aW5nIGZyb20gaW5kZXggMC4gVGhlIG5leHQgcmluZyB0byBjaGVjayBmb3ItASBleHBpcmF0aW9uIGlzIGBsYXN0X3JlbW92ZWQgKyAxYCAob3IgYDBgIGlmIG5vdGhpbmcgaGFzIGJlZW4gcmVtb3ZlZCB5ZXQpLgBVASAqKldBUk5JTkcqKjogRG8gbm90IHVzZSB0aGlzIHN0b3JhZ2UgZGlyZWN0bHksIHVzZSBbYFJlY3ljbGVyTWFuYWdlcmBdIHR5cGUgaW5zdGVhZC4AVQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgbWFuYWdlZCBieSBbYFJlY3ljbGVyTWFuYWdlcmBdIGFuZCBpcyBwYXJ0IG9mIGEgY29uc2lzdGVudCBzZXQ6QQEgKiBbUmVjeWNsZXJDb2xsZWN0aW9uQ3JlYXRlZF0gLSB3aGV0aGVyIHRoZSBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYSBjb2luIHZhbHVlLlUBICogW1JlY3ljbGVyc0xhc3RSZW1vdmVkUmluZ0luZGV4XSAtIHRoZSBsYXN0IHJlbW92ZWQgcmluZyBpbmRleCBmb3IgZWFjaCBjb2luIHZhbHVlLlkBICogW1JlY3ljbGVyc0NvaW5Ub1JlY3ljbGVyXSAtIHRoZSBtYXBwaW5nIGZyb20gbWVtYmVyIGtleSB0byB0aGUgY29pbiB2YWx1ZSBpdCBpcyBpbi5hASAqIFtSZWN5Y2xlcnNVbmxvYWRlZF0gLSB0aGUgcmVjeWNsZXJzJyB1bmxvYWRlZCBhbGlhc2VzLCBpbmRleGVkIGJ5IGNvaW4gdmFsdWUgYW5kIHJpbmckICAgaW5kZXguKQEgKiBbUmVjeWNsZXJzRHVzdGluZ10gLSBtYXJrcyByaW5ncyB3aXRoIHVubG9hZGVkIGFsaWFzZXMgcGVuZGluZyByZW1vdmFsLgBhASBSaW5nIG1lbWJlcnMsIHBlbmRpbmcgbWVtYmVycywgYW5kIHJpbmcgc3RhdGUgYXJlIG1hbmFnZWQgYnkgW2BDb25maWc6Ok1lbWJlclNlcnZpY2VgXS4AXFJlY3ljbGVyc0NvaW5Ub1JlY3ljbGVyAAEEBQh1AwQAQBEBIE1hcHBpbmcgZnJvbSBhIHJlY3ljbGVyIG1lbWJlciBrZXkgdG8gdGhlIGNvaW4gdmFsdWUgaXQgYmVsb25ncyB0by4ATQEgV2hlbiBhIGNvaW4gaXMgbG9hZGVkIGludG8gYSByZWN5Y2xlciwgdGhlIG1lbWJlciBrZXkgaXMgcmVjb3JkZWQgaGVyZSBzbyB0aGF0IHRoZQ0BIHBhbGxldCBjYW4gbG9vayB1cCB3aGljaCBjb2luIHZhbHVlIHRoZSBtZW1iZXIga2V5IGNvcnJlc3BvbmRzIHRvLgBVASAqKldBUk5JTkcqKjogRG8gbm90IHVzZSB0aGlzIHN0b3JhZ2UgZGlyZWN0bHksIHVzZSBbYFJlY3ljbGVyTWFuYWdlcmBdIHR5cGUgaW5zdGVhZC4AVQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgbWFuYWdlZCBieSBbYFJlY3ljbGVyTWFuYWdlcmBdIGFuZCBpcyBwYXJ0IG9mIGEgY29uc2lzdGVudCBzZXQ6QQEgKiBbUmVjeWNsZXJDb2xsZWN0aW9uQ3JlYXRlZF0gLSB3aGV0aGVyIHRoZSBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYSBjb2luIHZhbHVlLlUBICogW1JlY3ljbGVyc0xhc3RSZW1vdmVkUmluZ0luZGV4XSAtIHRoZSBsYXN0IHJlbW92ZWQgcmluZyBpbmRleCBmb3IgZWFjaCBjb2luIHZhbHVlLlkBICogW1JlY3ljbGVyc0NvaW5Ub1JlY3ljbGVyXSAtIHRoZSBtYXBwaW5nIGZyb20gbWVtYmVyIGtleSB0byB0aGUgY29pbiB2YWx1ZSBpdCBpcyBpbi5hASAqIFtSZWN5Y2xlcnNVbmxvYWRlZF0gLSB0aGUgcmVjeWNsZXJzJyB1bmxvYWRlZCBhbGlhc2VzLCBpbmRleGVkIGJ5IGNvaW4gdmFsdWUgYW5kIHJpbmckICAgaW5kZXguKQEgKiBbUmVjeWNsZXJzRHVzdGluZ10gLSBtYXJrcyByaW5ncyB3aXRoIHVubG9hZGVkIGFsaWFzZXMgcGVuZGluZyByZW1vdmFsLgBhASBSaW5nIG1lbWJlcnMsIHBlbmRpbmcgbWVtYmVycywgYW5kIHJpbmcgc3RhdGUgYXJlIG1hbmFnZWQgYnkgW2BDb25maWc6Ok1lbWJlclNlcnZpY2VgXS4ARFJlY3ljbGVyc1VubG9hZGVkAAEMBQUFAQwQBABANQEgVGhlIHJlY3ljbGVycycgdW5sb2FkZWQgYWxpYXNlcywgaW5kZXhlZCBieSAoY29pbiB2YWx1ZSwgcmluZyBpbmRleCwgYWxpYXMpLgBVASBXaGVuIGEgY29pbiBpcyB1bmxvYWRlZCBmcm9tIGEgcmVjeWNsZXIsIHRoZSBhbGlhcyBwcm9kdWNlZCBieSB0aGUgcmluZy1WUkYgcHJvb2YgaXMZASBzdG9yZWQgaGVyZSB0byBwcmV2ZW50IGRvdWJsZS1zcGVuZGluZyB3aXRoaW4gdGhlIHNhbWUgcmVjeWNsZXIgcmluZy4AVQEgKipXQVJOSU5HKio6IERvIG5vdCB1c2UgdGhpcyBzdG9yYWdlIGRpcmVjdGx5LCB1c2UgW2BSZWN5Y2xlck1hbmFnZXJgXSB0eXBlIGluc3RlYWQuAFUBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIG1hbmFnZWQgYnkgW2BSZWN5Y2xlck1hbmFnZXJgXSBhbmQgaXMgcGFydCBvZiBhIGNvbnNpc3RlbnQgc2V0OkEBICogW1JlY3ljbGVyQ29sbGVjdGlvbkNyZWF0ZWRdIC0gd2hldGhlciB0aGUgY29sbGVjdGlvbiBleGlzdHMgZm9yIGEgY29pbiB2YWx1ZS5VASAqIFtSZWN5Y2xlcnNMYXN0UmVtb3ZlZFJpbmdJbmRleF0gLSB0aGUgbGFzdCByZW1vdmVkIHJpbmcgaW5kZXggZm9yIGVhY2ggY29pbiB2YWx1ZS5ZASAqIFtSZWN5Y2xlcnNDb2luVG9SZWN5Y2xlcl0gLSB0aGUgbWFwcGluZyBmcm9tIG1lbWJlciBrZXkgdG8gdGhlIGNvaW4gdmFsdWUgaXQgaXMgaW4uYQEgKiBbUmVjeWNsZXJzVW5sb2FkZWRdIC0gdGhlIHJlY3ljbGVycycgdW5sb2FkZWQgYWxpYXNlcywgaW5kZXhlZCBieSBjb2luIHZhbHVlIGFuZCByaW5nJCAgIGluZGV4LikBICogW1JlY3ljbGVyc0R1c3RpbmddIC0gbWFya3MgcmluZ3Mgd2l0aCB1bmxvYWRlZCBhbGlhc2VzIHBlbmRpbmcgcmVtb3ZhbC4AYQEgUmluZyBtZW1iZXJzLCBwZW5kaW5nIG1lbWJlcnMsIGFuZCByaW5nIHN0YXRlIGFyZSBtYW5hZ2VkIGJ5IFtgQ29uZmlnOjpNZW1iZXJTZXJ2aWNlYF0uAEBSZWN5Y2xlcnNEdXN0aW5nAAEEBQUMEAQASAUBIE1hcmtzIHJlY3ljbGVyIHJpbmdzIHRoYXQgaGF2ZSB1bmxvYWRlZCBhbGlhc2VzIHBlbmRpbmcgcmVtb3ZhbC4AIQEgV2hlbiBhIHJlY3ljbGVyIHJpbmcgaXMgcmVtb3ZlZCwgdGhlIGNsZWFudXAgb2YgaXRzIHVubG9hZGVkIGFsaWFzZXMgaW5RASBbUmVjeWNsZXJzVW5sb2FkZWRdIGlzIHBlcmZvcm1lZCBncmFkdWFsbHkgdGhyb3VnaCB0aGlzIHN0b3JhZ2UgaXRlbS4gQW4gZW50cnkgaGVyZVEBIGluZGljYXRlcyB0aGF0IHVubG9hZGVkIGFsaWFzZXMgZm9yIHRoZSBnaXZlbiBjb2luIHZhbHVlIGFuZCByaW5nIGluZGV4IHN0aWxsIGV4aXN0WCBhbmQgc2hvdWxkIGJlIGR1c3RlZC4AVQEgKipXQVJOSU5HKio6IERvIG5vdCB1c2UgdGhpcyBzdG9yYWdlIGRpcmVjdGx5LCB1c2UgW2BSZWN5Y2xlck1hbmFnZXJgXSB0eXBlIGluc3RlYWQuAFUBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIG1hbmFnZWQgYnkgW2BSZWN5Y2xlck1hbmFnZXJgXSBhbmQgaXMgcGFydCBvZiBhIGNvbnNpc3RlbnQgc2V0OkEBICogW1JlY3ljbGVyQ29sbGVjdGlvbkNyZWF0ZWRdIC0gd2hldGhlciB0aGUgY29sbGVjdGlvbiBleGlzdHMgZm9yIGEgY29pbiB2YWx1ZS5VASAqIFtSZWN5Y2xlcnNMYXN0UmVtb3ZlZFJpbmdJbmRleF0gLSB0aGUgbGFzdCByZW1vdmVkIHJpbmcgaW5kZXggZm9yIGVhY2ggY29pbiB2YWx1ZS5ZASAqIFtSZWN5Y2xlcnNDb2luVG9SZWN5Y2xlcl0gLSB0aGUgbWFwcGluZyBmcm9tIG1lbWJlciBrZXkgdG8gdGhlIGNvaW4gdmFsdWUgaXQgaXMgaW4uYQEgKiBbUmVjeWNsZXJzVW5sb2FkZWRdIC0gdGhlIHJlY3ljbGVycycgdW5sb2FkZWQgYWxpYXNlcywgaW5kZXhlZCBieSBjb2luIHZhbHVlIGFuZCByaW5nJCAgIGluZGV4LikBICogW1JlY3ljbGVyc0R1c3RpbmddIC0gbWFya3MgcmluZ3Mgd2l0aCB1bmxvYWRlZCBhbGlhc2VzIHBlbmRpbmcgcmVtb3ZhbC4AYQEgUmluZyBtZW1iZXJzLCBwZW5kaW5nIG1lbWJlcnMsIGFuZCByaW5nIHN0YXRlIGFyZSBtYW5hZ2VkIGJ5IFtgQ29uZmlnOjpNZW1iZXJTZXJ2aWNlYF0uAFhQYWlkVW5sb2FkVG9rZW5NZW1iZXJzAAEEBQgQBAA4CQEgTWFwcGluZyBmcm9tIGEgcGFpZCB0b2tlbiBtZW1iZXIga2V5IHRvIHRoZSBwZXJpb2QgaXQgYmVsb25ncyB0by4ARQEgV2hlbiBhIHVzZXIgcGF5cyBmb3IgYSByZWN5Y2xlciB1bmxvYWQgdG9rZW4sIHRoZSBtZW1iZXIga2V5IGlzIHJlY29yZGVkIGhlcmUgc28hASB0aGF0IHRoZSBwYWxsZXQgY2FuIGxvb2sgdXAgd2hpY2ggcGVyaW9kIHRoZSBtZW1iZXIga2V5IGNvcnJlc3BvbmRzIHRvLgBRASAqKldBUk5JTkcqKjogRG8gbm90IHVzZSB0aGlzIHN0b3JhZ2UgZGlyZWN0bHksIHVzZSBbYFBhaWRUa25NYW5hZ2VyYF0gdHlwZSBpbnN0ZWFkLgBRASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBtYW5hZ2VkIGJ5IFtgUGFpZFRrbk1hbmFnZXJgXSBhbmQgaXMgcGFydCBvZiBhIGNvbnNpc3RlbnQgc2V0OvAgKiBbUGFpZFVubG9hZFRva2VuTWVtYmVyc10gLSB0cmFja3MgcmVnaXN0ZXJlZCBtZW1iZXIga2V5cy4ZASAqIFtQYWlkVW5sb2FkVG9rZW5Db25zdW1lZF0gLSB0aGUgY29uc3VtZWQgcGFpZCB1bmxvYWQgdG9rZW4gYWxpYXNlcy45ASAqIFtQYWlkVG9rZW5Db2xsZWN0aW9uc0NyZWF0ZWRdIC0gd2hldGhlciB0aGUgY29sbGVjdGlvbiBleGlzdHMgZm9yIGEgcGVyaW9kLkUBICogW1BhaWRVbmxvYWRUb2tlbkR1c3RpbmddIC0gbWFya3MgcGVyaW9kcyB3aXRoIGNvbnN1bWVkIHRva2VucyBwZW5kaW5nIHJlbW92YWwuAGEBIFJpbmcgbWVtYmVycywgcGVuZGluZyBtZW1iZXJzLCBhbmQgcmluZyBzdGF0ZSBhcmUgbWFuYWdlZCBieSBbYENvbmZpZzo6TWVtYmVyU2VydmljZWBdLgBcUGFpZFVubG9hZFRva2VuQ29uc3VtZWQAAQwGBQV5CxAEADj0IENvbnN1bWVkIHBhaWQgdW5sb2FkIHRva2VucyBieSBwZXJpb2QsIHJpbmcgaW5kZXggYW5kIGFsaWFzLgBJASBXaGVuIGEgcGFpZCB1bmxvYWQgdG9rZW4gaXMgY29uc3VtZWQsIHRoZSBhbGlhcyBwcm9kdWNlZCBieSB0aGUgcmluZy1WUkYgcHJvb2YgaXP0IHN0b3JlZCBoZXJlIHRvIHByZXZlbnQgZG91YmxlLXNwZW5kaW5nIHdpdGhpbiB0aGUgc2FtZSByaW5nLgBRASAqKldBUk5JTkcqKjogRG8gbm90IHVzZSB0aGlzIHN0b3JhZ2UgZGlyZWN0bHksIHVzZSBbYFBhaWRUa25NYW5hZ2VyYF0gdHlwZSBpbnN0ZWFkLgBRASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBtYW5hZ2VkIGJ5IFtgUGFpZFRrbk1hbmFnZXJgXSBhbmQgaXMgcGFydCBvZiBhIGNvbnNpc3RlbnQgc2V0OvAgKiBbUGFpZFVubG9hZFRva2VuTWVtYmVyc10gLSB0cmFja3MgcmVnaXN0ZXJlZCBtZW1iZXIga2V5cy4ZASAqIFtQYWlkVW5sb2FkVG9rZW5Db25zdW1lZF0gLSB0aGUgY29uc3VtZWQgcGFpZCB1bmxvYWQgdG9rZW4gYWxpYXNlcy45ASAqIFtQYWlkVG9rZW5Db2xsZWN0aW9uc0NyZWF0ZWRdIC0gd2hldGhlciB0aGUgY29sbGVjdGlvbiBleGlzdHMgZm9yIGEgcGVyaW9kLkUBICogW1BhaWRVbmxvYWRUb2tlbkR1c3RpbmddIC0gbWFya3MgcGVyaW9kcyB3aXRoIGNvbnN1bWVkIHRva2VucyBwZW5kaW5nIHJlbW92YWwuAGEBIFJpbmcgbWVtYmVycywgcGVuZGluZyBtZW1iZXJzLCBhbmQgcmluZyBzdGF0ZSBhcmUgbWFuYWdlZCBieSBbYENvbmZpZzo6TWVtYmVyU2VydmljZWBdLgBsUGFpZFRva2VuQ29sbGVjdGlvbnNDcmVhdGVkAAEEBm0LEAQAOAkBIFRyYWNrcyB3aGV0aGVyIGEgcGFpZCB0b2tlbiBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYSBnaXZlbiBwZXJpb2QuAFUBIFVzZXMgYElkZW50aXR5YCBoYXNoZXIgc28gdGhhdCBpdGVyYXRpb24geWllbGRzIHBlcmlvZHMgaW4gb3JkZXIsIGVuYWJsaW5nIGVmZmljaWVudHAgY2xlYW51cCBvZiBleHBpcmVkIHBlcmlvZHMuAFEBICoqV0FSTklORyoqOiBEbyBub3QgdXNlIHRoaXMgc3RvcmFnZSBkaXJlY3RseSwgdXNlIFtgUGFpZFRrbk1hbmFnZXJgXSB0eXBlIGluc3RlYWQuAFEBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIG1hbmFnZWQgYnkgW2BQYWlkVGtuTWFuYWdlcmBdIGFuZCBpcyBwYXJ0IG9mIGEgY29uc2lzdGVudCBzZXQ68CAqIFtQYWlkVW5sb2FkVG9rZW5NZW1iZXJzXSAtIHRyYWNrcyByZWdpc3RlcmVkIG1lbWJlciBrZXlzLhkBICogW1BhaWRVbmxvYWRUb2tlbkNvbnN1bWVkXSAtIHRoZSBjb25zdW1lZCBwYWlkIHVubG9hZCB0b2tlbiBhbGlhc2VzLjkBICogW1BhaWRUb2tlbkNvbGxlY3Rpb25zQ3JlYXRlZF0gLSB3aGV0aGVyIHRoZSBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYSBwZXJpb2QuRQEgKiBbUGFpZFVubG9hZFRva2VuRHVzdGluZ10gLSBtYXJrcyBwZXJpb2RzIHdpdGggY29uc3VtZWQgdG9rZW5zIHBlbmRpbmcgcmVtb3ZhbC4AYQEgUmluZyBtZW1iZXJzLCBwZW5kaW5nIG1lbWJlcnMsIGFuZCByaW5nIHN0YXRlIGFyZSBtYW5hZ2VkIGJ5IFtgQ29uZmlnOjpNZW1iZXJTZXJ2aWNlYF0uAFhQYWlkVW5sb2FkVG9rZW5EdXN0aW5nAAEEBm0LEAQAQC0BIE1hcmtzIHBhaWQgdW5sb2FkIHRva2VuIHBlcmlvZHMgdGhhdCBoYXZlIGNvbnN1bWVkIHRva2VucyBwZW5kaW5nIHJlbW92YWwuAFkBIFdoZW4gYSBwYWlkIHVubG9hZCB0b2tlbiBjb2xsZWN0aW9uIGlzIHJlbW92ZWQsIHRoZSBjbGVhbnVwIG9mIGl0cyBjb25zdW1lZCB0b2tlbnMgaW5VASBbUGFpZFVubG9hZFRva2VuQ29uc3VtZWRdIGlzIHBlcmZvcm1lZCBncmFkdWFsbHkgdGhyb3VnaCB0aGlzIHN0b3JhZ2UgaXRlbS4gQW4gZW50cnlNASBoZXJlIGluZGljYXRlcyB0aGF0IGNvbnN1bWVkIHRva2VucyBmb3IgdGhlIGdpdmVuIHBlcmlvZCBzdGlsbCBleGlzdCBhbmQgc2hvdWxkIGJlICBkdXN0ZWQuAFEBICoqV0FSTklORyoqOiBEbyBub3QgdXNlIHRoaXMgc3RvcmFnZSBkaXJlY3RseSwgdXNlIFtgUGFpZFRrbk1hbmFnZXJgXSB0eXBlIGluc3RlYWQuAFEBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIG1hbmFnZWQgYnkgW2BQYWlkVGtuTWFuYWdlcmBdIGFuZCBpcyBwYXJ0IG9mIGEgY29uc2lzdGVudCBzZXQ68CAqIFtQYWlkVW5sb2FkVG9rZW5NZW1iZXJzXSAtIHRyYWNrcyByZWdpc3RlcmVkIG1lbWJlciBrZXlzLhkBICogW1BhaWRVbmxvYWRUb2tlbkNvbnN1bWVkXSAtIHRoZSBjb25zdW1lZCBwYWlkIHVubG9hZCB0b2tlbiBhbGlhc2VzLjkBICogW1BhaWRUb2tlbkNvbGxlY3Rpb25zQ3JlYXRlZF0gLSB3aGV0aGVyIHRoZSBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYSBwZXJpb2QuRQEgKiBbUGFpZFVubG9hZFRva2VuRHVzdGluZ10gLSBtYXJrcyBwZXJpb2RzIHdpdGggY29uc3VtZWQgdG9rZW5zIHBlbmRpbmcgcmVtb3ZhbC4AYQEgUmluZyBtZW1iZXJzLCBwZW5kaW5nIG1lbWJlcnMsIGFuZCByaW5nIHN0YXRlIGFyZSBtYW5hZ2VkIGJ5IFtgQ29uZmlnOjpNZW1iZXJTZXJ2aWNlYF0uAHhQYWlkVW5sb2FkVG9rZW5OZXh0UmluZ1RvQ2xlYW4AAQQGbQs4BABg9CBUcmFja3MgdGhlIG5leHQgcmluZyBpbmRleCB0byBjbGVhbiBmb3IgZWFjaCBleHBpcmVkIHBlcmlvZC4ANQEgVXNlZCBieSB0aGUgT0NXIHRvIGRldGVybWluZSBjbGVhbnVwIHByb2dyZXNzIGFuZCBieSB0aGUgY29sbGVjdGlvbiBkZWxldGlvbsQgZXh0cmluc2ljIHRvIHZlcmlmeSBhbGwgcmluZ3MgaGF2ZSBiZWVuIGNsZWFuZWQuAD0BIFJpbmdzIGFyZSBjbGVhbmVkIHNlcXVlbnRpYWxseSAob25lIHBlciBPQ1cgaW50ZXJ2YWwpIHJhdGhlciB0aGFuIGFsbCBhdCBvbmNlLj0BIFRoaXMgaXMgaW50ZW50aW9uYWw6IGEgc2luZ2xlIHN0b3JhZ2UgY3Vyc29yIGVuYWJsZXMgTygxKSBjb21wbGV0aW9uIGNoZWNrcyBpbswgYm90aCBbYFBhaWRUa25NYW5hZ2VyOjplbnN1cmVfY2FuX2NsZWFuX3JpbmdgXSBhbmRFASBbYFBhaWRUa25NYW5hZ2VyOjplbnN1cmVfY2FuX2RlbGV0ZV9jb2xsZWN0aW9uYF0uIFRoZSBhbHRlcm5hdGl2ZSDigJQgc3VibWl0dGluZ1UBIGFsbCByaW5nIGNsZWFucyBpbiBwYXJhbGxlbCDigJQgd291bGQgcmVxdWlyZSBmZXRjaGluZyByaW5nIG1lbWJlcnMgdG8gY2hlY2sgd2hldGhlck0BIGVhY2ggcmluZyB3YXMgYWxyZWFkeSBjbGVhbmVkIChzaW5jZSBgcmluZ19zdGF0dXNgIHN0aWxsIHJlcG9ydHMgYHRvdGFsID4gMGAgYWZ0ZXJVASBjbGVhbnVwIGJlY2F1c2UgcmluZ3MgYXJlIG5vdCByZW1vdmVkIHVudGlsIGNvbGxlY3Rpb24gZGVsZXRpb24pLiBDbGVhbnVwIG9mIGV4cGlyZWRNASBjb2xsZWN0aW9ucyBpcyBub3QgdGltZS1jcml0aWNhbCwgc28gdGhlIHNpbXBsZXIgc2VxdWVudGlhbCBhcHByb2FjaCBpcyBwcmVmZXJyZWQuAFEBICoqV0FSTklORyoqOiBEbyBub3QgdXNlIHRoaXMgc3RvcmFnZSBkaXJlY3RseSwgdXNlIFtgUGFpZFRrbk1hbmFnZXJgXSB0eXBlIGluc3RlYWQuAFEBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIG1hbmFnZWQgYnkgW2BQYWlkVGtuTWFuYWdlcmBdIGFuZCBpcyBwYXJ0IG9mIGEgY29uc2lzdGVudCBzZXQ68CAqIFtQYWlkVW5sb2FkVG9rZW5NZW1iZXJzXSAtIHRyYWNrcyByZWdpc3RlcmVkIG1lbWJlciBrZXlzLhkBICogW1BhaWRVbmxvYWRUb2tlbkNvbnN1bWVkXSAtIHRoZSBjb25zdW1lZCBwYWlkIHVubG9hZCB0b2tlbiBhbGlhc2VzLjkBICogW1BhaWRUb2tlbkNvbGxlY3Rpb25zQ3JlYXRlZF0gLSB3aGV0aGVyIHRoZSBjb2xsZWN0aW9uIGV4aXN0cyBmb3IgYSBwZXJpb2QuRQEgKiBbUGFpZFVubG9hZFRva2VuRHVzdGluZ10gLSBtYXJrcyBwZXJpb2RzIHdpdGggY29uc3VtZWQgdG9rZW5zIHBlbmRpbmcgcmVtb3ZhbC4dASAqIFtQYWlkVW5sb2FkVG9rZW5OZXh0UmluZ1RvQ2xlYW5dIC0gc2VxdWVudGlhbCByaW5nIGNsZWFudXAgcHJvZ3Jlc3MuAGEBIFJpbmcgbWVtYmVycywgcGVuZGluZyBtZW1iZXJzLCBhbmQgcmluZyBzdGF0ZSBhcmUgbWFuYWdlZCBieSBbYENvbmZpZzo6TWVtYmVyU2VydmljZWBdLgBcSW5pdGlhbGl6ZVBhbGxldEFjY291bnQAABAEABDEIFdoZXRoZXIgdGhlIHBhbGxldCBhY2NvdW50IGhhcyBiZWVuIGluaXRpYWxpemVkLgBZASBXZSBuZWVkIHRvIGluaXRpYWxpemUgdGhlIHBhbGxldCBhY2NvdW50IHdpdGggbWluaW11bSBiYWxhbmNlIHNvIHRoYXQgaXQgY2FuIGhvbGQgYW557CBhbW91bnQgb2YgdW5kZXJseWluZyBhc3NldCBldmVuIGxlc3MgdGhhbiBtaW5pbXVtIGJhbGFuY2UuAAEFBQABOQcARFBSZWN5Y2xlclJpbmdFeHBvbmVudP0EBAoEsCBUaGUgcmluZyBleHBvbmVudCBmb3IgcmVjeWNsZXIgY29sbGVjdGlvbnMuAGxQYWlkVW5sb2FkVG9rZW5SaW5nRXhwb25lbnT9BAQKBNQgVGhlIHJpbmcgZXhwb25lbnQgZm9yIHBhaWQgdW5sb2FkIHRva2VuIGNvbGxlY3Rpb25zLgBEVW5kZXJseWluZ0Fzc2V0SWTgMAEDAKEPBDIFdsjrCwTMIFRoZSBhc3NldCBpZCBvZiB0aGUgdW5kZXJseWluZyBhc3NldCBvZiB0aGUgY29pbnMuAExVbmRlcmx5aW5nQXNzZXRVbml0xEAQJwAAAAAAAAAAAAAAAAAABLwgVGhlIHVuaXQgb2YgdGhlIHVuZGVybHlpbmcgYXNzZXQgb2YgdGhlIGNvaW5zLgA8TWluaW11bUV4cG9uZW50dQMEAASkIFRoZSBtaW5pbXVtIGV4cG9uZW50IGZvciB0aGUgY29pbiB2YWx1ZS4APE1heGltdW1FeHBvbmVudHUDBA4EpCBUaGUgbWF4aW11bSBleHBvbmVudCBmb3IgdGhlIGNvaW4gdmFsdWUuAIRNaW5pbXVtRXhwb25lbnRGb3JPdXRwdXRVbmxvYWRGZWV1AwQAIF0BIFRoZSBtaW5pbXVtIGNvaW4gZXhwb25lbnQgdGhhdCBjYW4gYmUgdXNlZCB0byBkaXNwYXRjaCBhIGNhbGwgYHVubG9hZF9yZWN5Y2xlcl8qYCB3aXRo1CB0aGUgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uIGBBc1VubG9hZFRva2VuRnJvbU91dHB1dGAuAGEBIFRoaXMgZW5zdXJlcyB0aGUgZmVlIGNvaW4gaXMgbGFyZ2UgZW5vdWdoIHRvIHBlbmFsaXplIGZhaWxpbmcgdHJhbnNhY3Rpb25zLCBidXQgaXQgZG9lc7ggbm90IG5lZWQgdG8gY292ZXIgdGhlIHdob2xlIHVubG9hZCB0b2tlbiBmZWUuAFEBIFRoZSBoZWxwZXIgZnVuY3Rpb24gYHdlaWdodF9mb3JfdW5sb2FkX3JlY3ljbGVyX3BheWluZ191c2luZ19vdXRwdXRgIGNhbiBiZSB1c2VkIHRvzCBldmFsdWF0ZSB0aGUgd29yc3QtY2FzZSB3ZWlnaHQgZm9yIHRoaXMgb3BlcmF0aW9uLgA8TWF4U3BsaXRPdXRwdXRzOBAgAAAABKwgVGhlIG1heGltdW0gbnVtYmVyIG9mIG91dHB1dHMgZm9yIGEgc3BsaXQuAEBNYXhDb25zb2xpZGF0aW9uOBBAAAAABNwgVGhlIG1heGltdW0gbnVtYmVyIG9mIGFsaWFzIHByb29mcyBpbiBhIGNvbnNvbGlkYXRpb24uAEhNYXhCYXRjaFVucGFpZExvYWQ4EAoAAAAIuCBUaGUgbWF4aW11bSBudW1iZXIgb2YgaW5uZXIgY2FsbHMgaW4gYSBzaW5nbGUNASBbYENhbGw6OmxvYWRfcmVjeWNsZXJfd2l0aF9leHRlcm5hbF9hc3NldF91bnBhaWRfYmF0Y2hgXSBkaXNwYXRjaC4AlFVubG9hZFRva2VuVGltZVBlcmlvZFBlb3BsZUxpdGVQZW9wbGU4EIBRAQAE4CBUaGUgdGltZSBwZXJpb2QgZHVyYXRpb24gZm9yIHVubG9hZCB0b2tlbnMsIGluIHNlY29uZHMuAKhVbmxvYWRUb2tlbkFsbG93YW5jZVBlclRpbWVQZXJpb2RGb3JQZW9wbGXEQICEHgAAAAAAAAAAAAAAAAAUXQEgVGhlIGFsbG93YW5jZSBvZiB1bmxvYWQgdG9rZW5zIHRoYXQgYSBwZXJzb24gY2FuIHVzZSBwZXIgdGltZSBwZXJpb2QsIGV4cHJlc3NlZCBpbiB0aGVIIHVuZGVybHlpbmcgYXNzZXQuAFUBIFVzZSBwYWxsZXQgdmlldyB0byBmZXRjaCB0aGUgY29ycmVzcG9uZGluZyBudW1iZXIgb2YgdW5sb2FkIHRva2VucyBnaXZlbiB0aGUgY3VycmVudGQgcHJpY2UgZm9yIHVubG9hZCB0b2tlbnMuALhVbmxvYWRUb2tlbkFsbG93YW5jZVBlclRpbWVQZXJpb2RGb3JMaXRlUGVvcGxlxEAgoQcAAAAAAAAAAAAAAAAAFGEBIFRoZSBhbGxvd2FuY2Ugb2YgdW5sb2FkIHRva2VucyB0aGF0IGEgbGl0ZSBwZXJzb24gY2FuIHVzZSBwZXIgdGltZSBwZXJpb2QsIGV4cHJlc3NlZCBpblggdGhlIHVuZGVybHlpbmcgYXNzZXQuAFkBIFVzZSBwYWxsZXQncyBnZXRfZnJlZV91bmxvYWRfdG9rZW5faW5mbygpIHRvIGZldGNoIHRoZSBjb3JyZXNwb25kaW5nIG51bWJlciBvZiB1bmxvYWTIIHRva2VucyBnaXZlbiB0aGUgY3VycmVudCBwcmljZSBmb3IgdW5sb2FkIHRva2Vucy4AgE1heEZyZWVVbmxvYWRUb2tlbnNQZXJUaW1lUGVyaW9kOBAKAAAAEBkBIEhhcmQgdXBwZXIgYm91bmQgb24gdGhlIG51bWJlciBvZiBmcmVlIHVubG9hZCB0b2tlbnMgcGVyIHRpbWUgcGVyaW9kLgCMIFRoZSBlZmZlY3RpdmUgZnJlZSB0b2tlbiBsaW1pdCBpczoJASBgbWluKGFsbG93YW5jZSAvIGN1cnJlbnRfZmVlLCBNYXhGcmVlVW5sb2FkVG9rZW5zUGVyVGltZVBlcmlvZClgLgBYT2ZmY2hhaW5Xb3JrZXJJbnRlcnZhbDgQBAAAAATkIFRoZSBudW1iZXIgb2YgYmxvY2tzIGJldHdlZW4gb2ZmY2hhaW4gd29ya2VyIGV4ZWN1dGlvbnMuAFRDb2luRmFpbHVyZUxvY2tQZXJpb2QoIDwAAAAAAAAAEFEBIFRoZSBiYXNlIG51bWJlciBvZiBzZWNvbmRzIHRvIGxvY2sgYSBjb2luIGFmdGVyIGEgZmFpbGVkIGRpc3BhdGNoIGluIGBBc0NvaW5gIGZsb3cuAD0BIFRoZSBhY3R1YWwgbG9jayBkdXJhdGlvbiBpcyBleHBvbmVudGlhbDogYDJecmV0cmllcyAqIGJhc2VgIHdoZXJlIGByZXRyaWVzYCBpc5AgdGhlIG51bWJlciBvZiBjb25zZWN1dGl2ZSBmYWlsdXJlcy4AOHBhbGxldF9hY2NvdW50BIBtb2RsY29pbmFnZSAAAAAAAAAAAAAAAAAAAAAAAAAAAAR4IFRoZSBhY2NvdW50IGlkIG9mIHRoZSBwYWxsZXQuAAEJDAAARHrCcSyKdqUqw7oQopAh7Jn5LyTubT1XSX6PPFJhXGFhaGdldF9mcmVlX3VubG9hZF90b2tlbl9pbmZvAA0MJE0BIEdldCB0aGUgY3VycmVudCBudW1iZXIgb2YgZnJlZSB1bmxvYWQgdG9rZW5zIGRpc3RyaWJ1dGVkIHRvIHBlb3BsZSBhbmQgbGl0ZSBwZW9wbGWsIGdpdmVuIHRoZSBjdXJyZW50IHByaWNlIGZvciB1bmxvYWQgdG9rZW5zLgBdASBJZiBhbiBlbGVtZW50IGlzIGBOb25lYCwgbm8gcHJpY2UgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBhbmQgY29udmVyc2lvbiBiZXR3ZWVuIG5hdGl2ZcQgYW5kIHRoZSB1bmRlcmx5aW5nIGFzc2V0IG5lZWRzIHRvIGJlIGNvbmZpZ3VyZWQuALggUmV0dXJuczogYChsaW1pdF9wZW9wbGUsIGxpbWl0X2xpdGVfcGVvcGxlKWAuAOggRWFjaCBlbGVtZW50IGlzIGBOb25lYCB3aGVuIGl0cyBsaW1pdCBjYW5ub3QgYmUgY29tcHV0ZWQuAHrCcSyKdqUqw7oQopAh7Jlz3RmCn2nEk576y2aKrIOrYGdldF9yZWN5Y2xlcl9yaW5nX3N0YXR1cwgUdmFsdWV1AxRpbmRleDgRDAToIEdldCB0aGUgcmluZyBzdGF0dXMgZm9yIGEgcmVjeWNsZXIgYXQgYSBnaXZlbiByaW5nIGluZGV4LgB6wnEsinalKsO6EKKQIeyZSNpY7ahV6pVQvr0qolt98mhnZXRfcmVjeWNsZXJfcmluZ19yZXZpc2lvbggUdmFsdWV1AxRpbmRleDgJAwTwIEdldCB0aGUgcmluZyByZXZpc2lvbiBmb3IgYSByZWN5Y2xlciBhdCBhIGdpdmVuIHJpbmcgaW5kZXguAHrCcSyKdqUqw7oQopAh7Jm178aAmmvzawOuV/TGbASJaGdldF9wYWlkX3Rva2VuX3Jpbmdfc3RhdHVzCBhwZXJpb2Q4FGluZGV4OBEMBB0BIEdldCB0aGUgcmluZyBzdGF0dXMgZm9yIGEgcGFpZCB0b2tlbiBhdCBhIGdpdmVuIHBlcmlvZCBhbmQgcmluZyBpbmRleC4AesJxLIp2pSrDuhCikCHsmaD2wxD2qCqffHbvIH/9njVwZ2V0X3BhaWRfdG9rZW5fcmluZ19yZXZpc2lvbggYcGVyaW9kOBRpbmRleDgJAwQlASBHZXQgdGhlIHJpbmcgcmV2aXNpb24gZm9yIGEgcGFpZCB0b2tlbiBhdCBhIGdpdmVuIHBlcmlvZCBhbmQgcmluZyBpbmRleC4AesJxLIp2pSrDuhCikCHsmW68Vemc1+I+cyXj7PzZm2aIZ2V0X3BhaWRfdW5sb2FkX3Rva2VuX2ZlZV9pbl9hc3NldAC1CBARASBHZXQgdGhlIGN1cnJlbnQgZmVlIGluIHRoZSB1bmRlcmx5aW5nIGFzc2V0IGZvciBwYWlkIHVubG9hZCB0b2tlbnMuAF0BIElmIG5vbmUgaXMgcmV0dXJuZWQgaXQgbWVhbnMgdGhhdCBubyBwcmljZSBpcyBjdXJyZW50bHkgYXZhaWxhYmxlLCBhbmQgc29tZSBjb252ZXJzaW9uAQEgYmV0d2VlbiBuYXRpdmUgYW5kIHRoZSB1bmRlcmx5aW5nIGFzc2V0IG5lZWRzIHRvIGJlIGNvbmZpZ3VyZWQuAHrCcSyKdqUqw7oQopAh7JnOvUSgz1HVuplPbA/gLOnqjGdldF9wYWlkX3VubG9hZF90b2tlbl9mZWVfaW5fbmF0aXZlAMQEDQEgR2V0IHRoZSBjdXJyZW50IGZlZSBpbiB0aGUgbmF0aXZlIGN1cnJlbmN5IGZvciBwYWlkIHVubG9hZCB0b2tlbnMuAHrCcSyKdqUqw7oQopAh7JmeXpBeWapAn7GAa3iZpheFRGdldF9jb2luX2J5X293bmVyBBRvd25lcgQVDASEIEdldCBjb2luIGRldGFpbHMgZm9yIGFuIGFjY291bnQuAHrCcSyKdqUqw7oQopAh7JnanBbpJIKl96OX8Z/8pH8aTGdldF9jb2luX2xvY2tfdW50aWwEFG93bmVyBBUDDFUBIEdldCB0aGUgVW5peCB0aW1lc3RhbXAgdW50aWwgd2hpY2ggYSBjb2luIGlzIGN1cnJlbnRseSBsb2NrZWQgYWZ0ZXIgZmFpbGVkIGRpc3BhdGNoLgBJASBSZXR1cm5zIGBOb25lYCB3aGVuIHRoZXJlIGlzIG5vIGxvY2sgb3Igd2hlbiB0aGUgc3RvcmVkIGxvY2sgaGFzIGFscmVhZHkgZXhwaXJlZC4AesJxLIp2pSrDuhCikCHsmWRjKKh5eAr8EuFCWWARYFBgZ2V0X3JlY3ljbGVyX21lbWJlcl9pbmZvBBhtZW1iZXIIGQwE3CBHZXQgdGhlIGNvaW4gdmFsdWUgZm9yIGEgc3BlY2lmaWMgcmVjeWNsZXIgbWVtYmVyIGtleS4AesJxLIp2pSrDuhCikCHsmU8iBwpDfNFUQuU+iaAqaHRQaXNfcGFpZF90b2tlbl9tZW1iZXIEGG1lbWJlcgjIBNQgQ2hlY2sgd2hldGhlciBhIHBhaWQgdG9rZW4gbWVtYmVyIGtleSBpcyByZWdpc3RlcmVkLgB6wnEsinalKsO6EKKQIeyZLPZHZCEzYZ1/Hjy8Xbh7OFBnZXRfcmVjeWNsZXJfbWVtYmVycwgUdmFsdWV1AxRpbmRleDhVBAjgIEdldCB0aGUgbWVtYmVycyBvZiBhIHJlY3ljbGVyIHJpbmcgKHRoZSBhbm9ueW1pdHkgc2V0KS4NASBSZXF1aXJlZCB0byBidWlsZCB0aGUgcmluZyBjb21taXRtZW50IChhY2N1bXVsYXRvcikgZm9yIHRoZSBwcm9vZi4AesJxLIp2pSrDuhCikCHsmfE4/CBo8j4A9lUO7c5iT2FsZ2V0X3BhaWRfdG9rZW5fcmluZ19tZW1iZXJzCBhwZXJpb2Q4FGluZGV4OFUECOggR2V0IHRoZSBtZW1iZXJzIG9mIGEgcGFpZCB0b2tlbiByaW5nICh0aGUgYW5vbnltaXR5IHNldCkuDQEgUmVxdWlyZWQgdG8gYnVpbGQgdGhlIHJpbmcgY29tbWl0bWVudCAoYWNjdW11bGF0b3IpIGZvciB0aGUgcHJvb2YuAHrCcSyKdqUqw7oQopAh7JkF2qg6IjGFaW4l7IHksnyGaGlzX3JlY3ljbGVyX2FsaWFzX3VubG9hZGVkDBR2YWx1ZXUDFGluZGV4OBRhbGlhcwjIDPQgQ2hlY2sgaWYgYSByZWN5Y2xlciBhbGlhcyBoYXMgYWxyZWFkeSBiZWVuIHVubG9hZGVkIChzcGVudCkuAPAgSWYgdGhlIHJlY3ljbGVyIGlzIG5vdCBsaXZlLCB0aGUgcmVzdWx0IGlzIG5vdCBzaWduaWZpY2FudC4AesJxLIp2pSrDuhCikCHsmS6NiyqbxAjIWuSgBYhX0I9waXNfcGFpZF90b2tlbl9hbGlhc19jb25zdW1lZAwYcGVyaW9kOBRpbmRleDgUYWxpYXMIyAzAIENoZWNrIGlmIGEgcGFpZCB1bmxvYWQgdG9rZW4gaGFzIGJlZW4gY29uc3VtZWQuAPQgSWYgdGhlIHBlcmlvZCBpcyBub3QgY3VycmVudCwgdGhlIHJlc3VsdCBpcyBub3Qgc2lnbmlmaWNhbnQuAHrCcSyKdqUqw7oQopAh7Jm/EtB6iDYdDvU17ItcGeXTcGlzX2ZyZWVfdG9rZW5fYWxpYXNfY29uc3VtZWQIGHBlcmlvZDgUYWxpYXMIyAzAIENoZWNrIGlmIGEgZnJlZSB1bmxvYWQgdG9rZW4gaGFzIGJlZW4gY29uc3VtZWQuAPQgSWYgdGhlIHBlcmlvZCBpcyBub3QgY3VycmVudCwgdGhlIHJlc3VsdCBpcyBub3Qgc2lnbmlmaWNhbnQuAHrCcSyKdqUqw7oQopAh7JmRsy8uvB8r+d6VykJZ3bjFuHdlaWdodF9mb3JfdW5sb2FkX3JlY3ljbGVyX3BheWluZ191c2luZ19vdXRwdXQA1QEUMQEgR2V0IHRoZSB3b3JzdC1jYXNlIHdlaWdodCBmb3IgYSB0cmFuc2FjdGlvbiB1c2luZyBvdXRwdXQtYmFzZWQgZmVlIHBheW1lbnQuACkBIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgbWF4aW11bSB3ZWlnaHQgZm9yIHRyYW5zYWN0aW9ucyBkaXNwYXRjaGVkIHdpdGhVASBgQXNVbmxvYWRUb2tlbkZyb21PdXRwdXRgLCB1c2VmdWwgZm9yIHJ1bnRpbWUgY29uZmlndXJhdGlvbiB0byBmaW5kIGEgZ29vZCB2YWx1ZSBmb3KUIGBNaW5pbXVtRXhwb25lbnRGb3JPdXRwdXRVbmxvYWRGZWVgLgBEAAA8TWVtYmVyc05vdGlmaWVyATxNZW1iZXJzTm90aWZpZXIwLFN1YnNjcmliZXJzAAEEBpwdDAQABEEBIFN1YnNjcmliZXIgcmVnaXN0cnkgd2l0aCB0aGVpciBzdWJzY3JpYmVkIGNvbGxlY3Rpb25zIGFuZCBpbml0aWFsaXphdGlvbiBzdGF0ZS4AVENvdW50ZXJGb3JTdWJzY3JpYmVycwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwAExTZWFsZWRCYXRjaFNlcXVlbmNlAQAoIAAAAAAAAAAADIggU2VxdWVuY2UgbnVtYmVyIGZvciBzZWFsZWQgYmF0Y2gu9CBJbmNyZW1lbnRlZCB3aGVuIGEgYmF0Y2ggaXMgc2VhbGVkIC0gcmVhZHkgZm9yIGRpc3RyaWJ1dGlvbi7wIFNlcnZlcyBhcyB0aGUgYmF0Y2ggaWRlbnRpZmllciBmb3IgcmVwbGF5IGFuZCBkaXN0cmlidXRpb24uACRQYWdlU3RhdGUBACEMIAAAAAAAAAAABPAgUGFnaW5nIHN0YXRlOiB3cml0ZSBwYWdlLCBzZW5kIHBhZ2UsIGFuZCBsYXN0IHVwZGF0ZSBibG9jay4AOFBlbmRpbmdVcGRhdGVzAAEMBgYGJQwQBAAMfCBDaGFuZ2VkIHJpbmcgcm9vdCBrZXlzLCBwYWdlZC4xASBLZXk6IChwYWdlX2luZGV4LCBpZGVudGlmaWVyLCByaW5nX2luZGV4KS4gUG9wdWxhdGVkIGJ5IGBPblJpbmdSb290Q2hhbmdlYCw5ASBjb25zdW1lZCBieSBgZW5xdWV1ZV91cGRhdGVzYCBvbmUgcGFnZSBhdCBhIHRpbWUgZnJvbSBgUGFnZVN0YXRlOjpzZW5kX3BhZ2VgLgBAUGFnZVVwZGF0ZXNDb3VudAEBBAYtAzgQAAAAAAS0IFBlci1wYWdlIGNvdW50IG9mIGVudHJpZXMgaW4gUGVuZGluZ1VwZGF0ZXMuACxQZW5kaW5nSW5pdAABBAacKQwEAAS8IFN0YXRlIGZvciBwYWdpbmF0ZWQgc3Vic2NyaWJlciBpbml0aWFsaXphdGlvbi4AVENvdW50ZXJGb3JQZW5kaW5nSW5pdAEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwAEhTZWFsZWRCYXRjaEluZGljZXMAAQQGCFkFBAAE3CBJbmRpY2VzIHBlciBjb2xsZWN0aW9uIGZvciB0aGUgc2VhbGVkIChjdXJyZW50KSBiYXRjaC4AMEN1cnJlbnRCYXRjaAAALQwEAASIIEN1cnJlbnQgYmF0Y2ggZGlzdHJpYnV0aW9uIHN0YXRlLgBsU3Vic2NyaWJlcnNXaXRoQ3VycmVudEJhdGNoAAEEBpwQBAAE6CBUcmFja3Mgd2hpY2ggc3Vic2NyaWJlcnMgaGF2ZSByZWNlaXZlZCB0aGUgY3VycmVudCBiYXRjaC4AOExhc3RSZXBsYXlUaW1lAAEIBgYxDCgEAAjQIExhc3QgcmVwbGF5IHRpbWUgcGVyIChzdWJzY3JpYmVyLCBjb2xsZWN0aW9uKSBwYWlyLtAgVXNlZCB0byBlbmZvcmNlIGEgY29vbGRvd24gYmV0d2VlbiByZXBsYXkgcmVxdWVzdHMuAAFFBQABPQcAKDhNYXhTdWJzY3JpYmVyczgQCgAAAAScIE1heGltdW0gbnVtYmVyIG9mIHN1YnNjcmliZXJzIGFsbG93ZWQuAEhNYXhVcGRhdGVzUGVyQmF0Y2g4EAoAAAAEbCBNYXhpbXVtIHVwZGF0ZXMgcGVyIGJhdGNoLgBsTWF4Q29sbGVjdGlvbnNQZXJTdWJzY3JpYmVyOBADAAAABMwgTWF4aW11bSBjb2xsZWN0aW9ucyBhIHN1YnNjcmliZXIgY2FuIHN1YnNjcmliZSB0by4AOE1heENvbGxlY3Rpb25zOBBkAAAABJAgTWF4aW11bSBudW1iZXIgb2YgcmluZyBjb2xsZWN0aW9ucy4ATFVwZGF0ZVRyaWdnZXJCbG9ja3M4EAEAAAAExCBNaW5pbXVtIG51bWJlciBvZiBibG9ja3MgYmV0d2VlbiB1cGRhdGUgYmF0Y2hlcy4AWFVwZGF0ZVRyaWdnZXJUaHJlc2hvbGQ4EAEAAAAE7CBNaW5pbXVtIG51bWJlciBvZiB1cGRhdGVzIHRvIHRyaWdnZXIgaW1tZWRpYXRlIGJhdGNoIHNlbmQuAGRSZXF1ZXN0UmVwbGF5UmVtb3RlV2VpZ2h01QEMQZwABCUBIFBlci1pbmRleCB3ZWlnaHQgc3VyY2hhcmdlIGZvciByZW1vdGUgZXhlY3V0aW9uIG9uIHRoZSBzdWJzY3JpYmVyIGNoYWluLgBYT2ZmY2hhaW5Xb3JrZXJJbnRlcnZhbDgQAQAAAATcIE1pbmltdW0gbnVtYmVyIG9mIGJsb2NrcyBiZXR3ZWVuIG9mZmNoYWluIHdvcmtlciBydW5zLgBEU3R1Y2tCYXRjaFRpbWVvdXQ4EGQAAAAE5CBOdW1iZXIgb2YgYmxvY2tzIGFmdGVyIHdoaWNoIGEgc3R1Y2sgYmF0Y2ggaXMgYWJhbmRvbmVkLgBUUmVwbGF5Q29vbGRvd25TZWNvbmRzKCA8AAAAAAAAAARZASBDb29sZG93biwgaW4gc2Vjb25kcywgYmV0d2VlbiByZXBsYXkgcmVxdWVzdHMgZm9yIHRoZSBzYW1lIHN1YnNjcmliZXIgYW5kIGNvbGxlY3Rpb24uAAE1DAAAAEUAAFRTdG9yYWdlSW5pdGlhbGl6YXRpb24BVFN0b3JhZ2VJbml0aWFsaXphdGlvbhAwT25Qb2xsU3RhdHVzAQA5DAQABPQgQ3VycmVudCBzdGF0ZSBvZiB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyBpbiBvbl9wb2xsIGhvb2suAFhYY21UcmFuc2ZlckluaXRpYXRlZEF0AAA4BAAIuCBCbG9jayBudW1iZXIgd2hlbiBYQ00gdHJhbnNmZXIgd2FzIGluaXRpYXRlZC6AIFVzZWQgdG8gdHJhY2sgdHJhbnNmZXIgdGltZW91dC4AVExhc3RBaXJkcm9wUG9vbFBlcmlvZAEAOBAAAAAAGD0BIFBlcmlvZCBpbmRleCBvZiB0aGUgbW9zdCByZWNlbnRseSBvcGVuZWQgcmVjdXJyaW5nIGFpcmRyb3AgcHJpemUgcG9vbCwgd2hlcmUgYUEBICJwZXJpb2QiIGlzIGEgd2luZG93IG9mIGBBaXJkcm9wUG9vbFBlcmlvZGAgc2Vjb25kcyBhbmNob3JlZCBhdCAxMjowMCBVVEMgZGFpbHlBASAoc2VlIFtgUE9PTF9QRVJJT0RfT0ZGU0VUYF0pLiBPbiBlYWNoIGBvbl9wb2xsYCB0aWNrIHRoZSBzY2hlZHVsZXIgY29tcHV0ZXMgdGhlQQEgY3VycmVudCBwZXJpb2Q7IGlmIGl0IGV4Y2VlZHMgdGhpcyB2YWx1ZSwgb25lIHBvb2wgaXMgb3BlbmVkIGFuZCB0aGlzIGlzIGJ1bXBlZEUBIHRvIHRoZSBjdXJyZW50IHBlcmlvZC4gQSBjaGFpbiBwYXVzZSBzcGFubmluZyBtdWx0aXBsZSBwZXJpb2RzIG9wZW5zIGF0IG1vc3Qgb25l3CBwb29sIG9uIHJlc3VtZSDigJQgbWlzc2VkIHBlcmlvZHMgYXJlIG5vdCBiYWNrLWZpbGxlZC4AYEFpcmRyb3BTY2hlZHVsaW5nRW5hYmxlZAEAyAQADEEBIFdoZXRoZXIgb25fcG9sbCBhaXJkcm9wIHNjaGVkdWxpbmcgaXMgY3VycmVudGx5IGVuYWJsZWQuIFNldCB0byBgdHJ1ZWAgd2hlbiB0aGU9ASBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSB0cmFuc2l0aW9ucyBpbnRvIFtgT25Qb2xsU3RhdGU6Ok9wZW5pbmdBaXJkcm9wUG9vbHNgXTsVASB0b2dnbGFibGUgdGhlcmVhZnRlciB2aWEgW2BQYWxsZXQ6OnNldF9haXJkcm9wX3NjaGVkdWxpbmdfZW5hYmxlZGBdLgABXQUAAUEHAAAAAAA8AABkU3RvcmFnZUluaXRpYWxpemF0aW9uTGl0ZQFkU3RvcmFnZUluaXRpYWxpemF0aW9uTGl0ZQQwT25Qb2xsU3RhdHVzAQA9DAQABPQgQ3VycmVudCBzdGF0ZSBvZiB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyBpbiBvbl9wb2xsIGhvb2suAAABRQcAAAAAAEEAABxBaXJkcm9wARxBaXJkcm9wEDxOZXh0UHJpemVQb29sSWQBADgQAAAAAAQJASBDb3VudGVyIHRoYXQgc3VwcGxpZXMgW2BQcml6ZVBvb2w6OmlkYF0gZm9yIHRoZSBuZXh0IHBvb2wgb3BlbmVkLgAoUHJpemVQb29scwABBAU4QQwEAAwZASBDdXJyZW50bHktb3BlbiBwcml6ZSBwb29scywga2V5ZWQgYnkgaWQuIFRoZSBhc3NvY2lhdGVkIGNvdW50ZXIgKGZyb21JASBbYENvdW50ZWRTdG9yYWdlTWFwYF0pIGRyaXZlcyB0aGUgYE1BWF9DT05DVVJSRU5UX1BSSVpFX1BPT0xTYCBjYXAgYW5kIHJlcGxhY2VzIGF4IHNlcGFyYXRlICJhY3RpdmUgaWRzIiBtaXJyb3IuAFBDb3VudGVyRm9yUHJpemVQb29scwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwADxQcml6ZVBvb2xDbGFpbXMAAQgFBTELEAQAEAkBIFBlci1wb29sIHJlY29yZCBvZiB3aGljaCBjbGFpbWFudHMgaGF2ZSBhbHJlYWR5IGNsYWltZWQuIEtleWVkIG9uJQEgW2BBY2NvdW50T3JQZXJzb25gXSBzbyB0aGUgUGVyc29uIGFuZCBBY2NvdW50IGNsYWltIHBhdGhzIHNoYXJlIGEgc2luZ2xlJQEgcmVwbGF5LWd1YXJkOiBlYWNoIGlkZW50aXR5ICh3aGljaGV2ZXIgaXQgaXMpIGNhbiBjbGFpbSBhdCBtb3N0IG9uY2UgcGVyGCBwb29sLgABYQUAAUkHABBITWluVmFsaWRpdHlTZWNvbmRzOBA8AAAAEEEBIExvd2VyIGJvdW5kIG9uIGEgcHJpemUgcG9vbCdzIGB2YWxpZGl0eWAgKGluIHNlY29uZHMpLiBBIHBvb2wgd2hvc2UgdmFsaWRpdHkgaXNBASBiZWxvdyB0aGlzIGlzIHJlamVjdGVkIHdpdGggW2BFcnJvcjo6VmFsaWRpdHlUb29TaG9ydGBdIOKAlCB0aGUgZmxvb3IgZXhpc3RzIHNvMQEgY2xhaW1hbnRzIGhhdmUgYXQgbGVhc3QgYSBtaW5pbXVtIHdpbmRvdyBpbiB3aGljaCB0byBzdWJtaXQgYmVmb3JlIHRoZSBwb29sQCBhdXRvLWNsZWFucy11cC4ASE1heFZhbGlkaXR5U2Vjb25kczgQgDoJAAw5ASBVcHBlciBib3VuZCBvbiBhIHByaXplIHBvb2wncyBgdmFsaWRpdHlgIChpbiBzZWNvbmRzKS4gQm91bmRzIHRoZSBsaWZldGltZSBvZjEBIGBQcml6ZVBvb2xDbGFpbXNgIGVudHJpZXMgZm9yIGEgc2luZ2xlIHBvb2wuIERlZmF1bHQgY2hvc2VuIGJ5IHRoZSBydW50aW1lO6ggdGhlIHNwZWMgcmVjb21tZW5kcyBvbmUgd2VlayAoYDYwNF84MDBgKS4ATFByaXplUG9vbENsZWFyTGltaXQ4EPQBAAAIMQEgTWF4aW11bSBudW1iZXIgb2YgYFByaXplUG9vbENsYWltc2AgZW50cmllcyB0byBkcm9wIHBlciBgb25fcG9sbGAgdGljayB3aGVujCBjbGVhbmluZyB1cCBhbiBleHBpcmVkIHByaXplIHBvb2wuADhhaXJkcm9wX3BvdF9pZASAbW9kbHBvcDphZHJwAAAAAAAAAAAAAAAAAAAAAAAAAAAEkCBUaGUgYWNjb3VudCBpZCBmb3IgdGhlIGFpcmRyb3AgcG90LgABTQwAAAA9AABQTXVsdGlCbG9ja01pZ3JhdGlvbnMBUE11bHRpQmxvY2tNaWdyYXRpb25zCBhDdXJzb3IAAHUFBAAM2CBUaGUgY3VycmVudGx5IGFjdGl2ZSBtaWdyYXRpb24gdG8gcnVuIGFuZCBpdHMgY3Vyc29yLgC8IGBOb25lYCBpbmRpY2F0ZXMgdGhhdCBubyBtaWdyYXRpb24gaXMgcnVubmluZy4AIEhpc3RvcmljAAEEBYkFEAQAELQgU2V0IG9mIGFsbCBzdWNjZXNzZnVsbHkgZXhlY3V0ZWQgbWlncmF0aW9ucy4AcQEgVGhpcyBpcyB1c2VkIGFzIGJsYWNrbGlzdCwgdG8gbm90IHJlLWV4ZWN1dGUgbWlncmF0aW9ucyB0aGF0IGhhdmUgbm90IGJlZW4gcmVtb3ZlZCBmcm9tIHRoZTEBIGNvZGViYXNlIHlldC4gR292ZXJuYW5jZSBjYW4gcmVndWxhcmx5IGNsZWFyIHRoaXMgb3V0IHZpYSBgY2xlYXJfaGlzdG9yaWNgLgABbQUAAU0HAAgwQ3Vyc29yTWF4TGVuOBAAAAEAEKQgVGhlIG1heGltYWwgbGVuZ3RoIG9mIGFuIGVuY29kZWQgY3Vyc29yLgBlASBBIGdvb2QgZGVmYXVsdCBuZWVkcyB0byBzZWxlY3RlZCBzdWNoIHRoYXQgbm8gbWlncmF0aW9uIHdpbGwgZXZlciBoYXZlIGEgY3Vyc29yIHdpdGggTUVMCQEgYWJvdmUgdGhpcyBsaW1pdC4gVGhpcyBpcyBzdGF0aWNhbGx5IGNoZWNrZWQgaW4gYGludGVncml0eV90ZXN0YC4AQElkZW50aWZpZXJNYXhMZW44EAABAAAQtCBUaGUgbWF4aW1hbCBsZW5ndGggb2YgYW4gZW5jb2RlZCBpZGVudGlmaWVyLgBVASBBIGdvb2QgZGVmYXVsdCBuZWVkcyB0byBzZWxlY3RlZCBzdWNoIHRoYXQgbm8gbWlncmF0aW9uIHdpbGwgZXZlciBoYXZlIGFuIGlkZW50aWZpZXItASB3aXRoIE1FTCBhYm92ZSB0aGlzIGxpbWl0LiBUaGlzIGlzIHN0YXRpY2FsbHkgY2hlY2tlZCBpbiBgaW50ZWdyaXR5X3Rlc3RgLgABUQwAABALIBmazjVk0JZOLE1Km6RplE28/2ps4aTQsnxvzALSTDhvbmdvaW5nX3N0YXR1cwBVDASoIFJldHVybnMgdGhlIG9uZ29pbmcgc3RhdHVzIG9mIG1pZ3JhdGlvbnMuAAsgGZrONWTQlk4sTUqbpGlevXdssV2bkS4njU0tYsWhIHByb2dyZXNzAFkMEAkBIFJldHVybnMgcHJvZ3Jlc3MgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgbWlncmF0aW9uLCBpZiBhbnkuAFEBIFRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgbWlncmF0aW9uJ3MgcHJvZ3Jlc3MsHQEgaW5jbHVkaW5nIHRoZSBudW1iZXIgb2Ygc3RlcHMgY29tcGxldGVkIGFuZCB0aGUgbWF4aW11bSBhbGxvd2VkIHN0ZXBzLgALIBmazjVk0JZOLE1Km6RpRq9LzsbzWnu77p2fwQlb4URhZmZlY3RlZF9wcmVmaXhlcwA0DAEBIFJldHVybnMgdGhlIHN0b3JhZ2UgcHJlZml4ZXMgYWZmZWN0ZWQgYnkgdGhlIGN1cnJlbnQgbWlncmF0aW9uLgAZASBDYW4gYmUgZW1wdHkgaWYgdGhlIG1pZ3JhdGlvbiBkb2VzIG5vdCBrbm93IG9yIHRoZXJlIGFyZSBubyBwcmVmaXhlcy4ACyAZms41ZNCWTixNSpukaapMKKBvGYhFvRuynsYgXd0Yc3RhdHVzAGEMBPAgUmV0dXJucyB0aGUgY29tcHJlaGVuc2l2ZSBzdGF0dXMgb2YgbXVsdGktYmxvY2sgbWlncmF0aW9ucy4AYgAACAQFACA1BAQAUAAECAwQFBgcICQoLDA0ODxAREhMUFBWZXJpZnlNdWx0aVNpZ25hdHVyZZUFECBBc1BlcnNvbpkFEFxBc1Byb29mT2ZJbmtQYXJ0aWNpcGFudKUFEEhTY29yZUFzUGFydGljaXBhbnSxBRA0R2FtZUFzSW52aXRlZL0FEDhQZW9wbGVMaXRlQXV0aMkFECBBc01lbWJlctUFECRBc0NvaW5hZ2XhBRAsQXNSZXNvdXJjZXP1BRA0QXV0aG9yaXplQ2FsbAEGEDxSZXN0cmljdE9yaWdpbnMFBhBIQ2hlY2tOb25aZXJvU2VuZGVyCQYQQENoZWNrU3BlY1ZlcnNpb24NBjg4Q2hlY2tUeFZlcnNpb24RBjgwQ2hlY2tHZW5lc2lzFQY8OENoZWNrTW9ydGFsaXR5GQY8KENoZWNrTm9uY2UhBhAsQ2hlY2tXZWlnaHQlBhBQQ2hhcmdlQXNzZXRUeFBheW1lbnQpBhBQU3RvcmFnZVdlaWdodFJlY2xhaW0QEFQcQXVyYUFwaQg0c2xvdF9kdXJhdGlvbgBlDAyQIFJldHVybnMgdGhlIHNsb3QgZHVyYXRpb24gZm9yIEF1cmEuACUBIEN1cnJlbnRseSwgb25seSB0aGUgdmFsdWUgcHJvdmlkZWQgYnkgdGhpcyB0eXBlIGF0IGdlbmVzaXMgd2lsbCBiZSB1c2VkLgAsYXV0aG9yaXRpZXMABQkEnCBSZXR1cm4gdGhlIGN1cnJlbnQgc2V0IG9mIGF1dGhvcml0aWVzLgAEuCBBUEkgbmVjZXNzYXJ5IGZvciBibG9jayBhdXRob3JzaGlwIHdpdGggYXVyYS4EAFBSZWxheVBhcmVudE9mZnNldEFwaQRMcmVsYXlfcGFyZW50X29mZnNldAA4BPQgRmV0Y2ggdGhlIHNsb3Qgb2Zmc2V0IHRoYXQgaXMgZXhwZWN0ZWQgZnJvbSB0aGUgcmVsYXkgY2hhaW4uABAFASBBUEkgdG8gdGVsbCB0aGUgbm9kZSBzaWRlIGhvdyB0aGUgcmVsYXkgcGFyZW50IHNob3VsZCBiZSBjaG9zZW4uAGkBIEEgbGFyZ2VyIG9mZnNldCBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVsYXkgcGFyZW50IHNob3VsZCBub3QgYmUgdGhlIHRpcCBvZiB0aGUgcmVsYXkgY2hhaW4sMQEgYnV0IGBOYCBibG9ja3MgYmVoaW5kIHRoZSB0aXAuIFRoaXMgb2Zmc2V0IGlzIHRoZW4gZW5mb3JjZWQgYnkgdGhlIHJ1bnRpbWUuBABgQXVyYVVuaW5jbHVkZWRTZWdtZW50QXBpBDhjYW5fYnVpbGRfdXBvbgg0aW5jbHVkZWRfaGFzaDwQc2xvdAkJyCg5ASBXaGV0aGVyIGl0IGlzIGxlZ2FsIHRvIGV4dGVuZCB0aGUgY2hhaW4sIGFzc3VtaW5nIHRoZSBnaXZlbiBibG9jayBpcyB0aGUgbW9zdDUBIHJlY2VudGx5IGluY2x1ZGVkIG9uZSBhcy1vZiB0aGUgcmVsYXkgcGFyZW50IHRoYXQgd2lsbCBiZSBidWlsdCBhZ2FpbnN0LCBhbmRwIHRoZSBnaXZlbiByZWxheSBjaGFpbiBzbG90LgBRASBUaGlzIHNob3VsZCBiZSBjb25zaXN0ZW50IHdpdGggdGhlIGxvZ2ljIHRoZSBydW50aW1lIHVzZXMgd2hlbiB2YWxpZGF0aW5nIGJsb2NrcyB0bzggYXZvaWQgaXNzdWVzLgBhASBXaGVuIHRoZSB1bmluY2x1ZGVkIHNlZ21lbnQgaXMgZW1wdHksIGkuZS4gYGluY2x1ZGVkX2hhc2ggPT0gYXRgLCB3aGVyZSBhdCBpcyB0aGUgYmxvY2thASB3aG9zZSBzdGF0ZSB3ZSBhcmUgcXVlcnlpbmcgYWdhaW5zdCwgdGhpcyBtdXN0IGFsd2F5cyByZXR1cm4gYHRydWVgIGFzIGxvbmcgYXMgdGhlIHNsb3S8IGlzIG1vcmUgcmVjZW50IHRoYW4gdGhlIGluY2x1ZGVkIGJsb2NrIGl0c2VsZi4ANDUBIFRoaXMgcnVudGltZSBBUEkgaXMgdXNlZCB0byBpbmZvcm0gcG90ZW50aWFsIGJsb2NrIGF1dGhvcnMgd2hldGhlciB0aGV5IHdpbGwlASBoYXZlIHRoZSByaWdodCB0byBhdXRob3IgYXQgYSBzbG90LCBhc3N1bWluZyB0aGV5IGhhdmUgY2xhaW1lZCB0aGUgc2xvdC4AdQEgSW4gcGFydGljdWxhciwgdGhpcyBBUEkgYWxsb3dzIEF1cmEtYmFzZWQgcGFyYWNoYWlucyB0byByZWd1bGF0ZSB0aGVpciAidW5pbmNsdWRlZCBzZWdtZW50IixtASB3aGljaCBpcyB0aGUgc2VjdGlvbiBvZiB0aGUgaGVhZCBvZiB0aGUgY2hhaW4gd2hpY2ggaGFzIG5vdCB5ZXQgYmVlbiBtYWRlIGF2YWlsYWJsZSBpbiB0aGU0IHJlbGF5IGNoYWluLgBhASBXaGVuIHRoZSB1bmluY2x1ZGVkIHNlZ21lbnQgaXMgc2hvcnQsIEF1cmEgY2hhaW5zIHdpbGwgYWxsb3cgYXV0aG9ycyB0byBjcmVhdGUgbXVsdGlwbGVdASBibG9ja3MgcGVyIHNsb3QgaW4gb3JkZXIgdG8gYnVpbGQgYSBiYWNrbG9nLiBXaGVuIGl0IGlzIHNhdHVyYXRlZCwgdGhpcyBBUEkgd2lsbCBsaW1pdKggdGhlIGFtb3VudCBvZiBibG9ja3MgdGhhdCBjYW4gYmUgY3JlYXRlZC4AJCBDaGFuZ2VzOpEBIC0gVmVyc2lvbiAyOiBVcGRhdGUgdG8gYGNhbl9idWlsZF91cG9uYCB0byB0YWtlIGEgcmVsYXkgY2hhaW4gYFNsb3RgIGluc3RlYWQgb2YgYSBwYXJhY2hhaW4gYFNsb3RgLggAEENvcmUMHHZlcnNpb24AiQcEkCBSZXR1cm5zIHRoZSB2ZXJzaW9uIG9mIHRoZSBydW50aW1lLgA0ZXhlY3V0ZV9ibG9jawQUYmxvY2tpDBAEZCBFeGVjdXRlIHRoZSBnaXZlbiBibG9jay4AQGluaXRpYWxpemVfYmxvY2sEGGhlYWRlclx1DARBASBJbml0aWFsaXplIGEgYmxvY2sgd2l0aCB0aGUgZ2l2ZW4gaGVhZGVyIGFuZCByZXR1cm4gdGhlIHJ1bnRpbWUgZXhlY3V0aXZlIG1vZGUuAAQhASBUaGUgYENvcmVgIHJ1bnRpbWUgYXBpIHRoYXQgZXZlcnkgU3Vic3RyYXRlIHJ1bnRpbWUgbmVlZHMgdG8gaW1wbGVtZW50LhQAIE1ldGFkYXRhDCBtZXRhZGF0YQB5DASMIFJldHVybnMgdGhlIG1ldGFkYXRhIG9mIGEgcnVudGltZS4ATG1ldGFkYXRhX2F0X3ZlcnNpb24EHHZlcnNpb244fQwQpCBSZXR1cm5zIHRoZSBtZXRhZGF0YSBhdCBhIGdpdmVuIHZlcnNpb24uAAUBIElmIHRoZSBnaXZlbiBgdmVyc2lvbmAgaXNuJ3Qgc3VwcG9ydGVkLCB0aGlzIHdpbGwgcmV0dXJuIGBOb25lYC51ASBVc2UgW2BTZWxmOjptZXRhZGF0YV92ZXJzaW9uc2BdIHRvIGZpbmQgb3V0IGFib3V0IHN1cHBvcnRlZCBtZXRhZGF0YSB2ZXJzaW9uIG9mIHRoZSBydW50aW1lLgBEbWV0YWRhdGFfdmVyc2lvbnMAZQQMpCBSZXR1cm5zIHRoZSBzdXBwb3J0ZWQgbWV0YWRhdGEgdmVyc2lvbnMuAMAgVGhpcyBjYW4gYmUgdXNlZCB0byBjYWxsIGBtZXRhZGF0YV9hdF92ZXJzaW9uYC4ABAEBIFRoZSBgTWV0YWRhdGFgIGFwaSB0cmFpdCB0aGF0IHJldHVybnMgbWV0YWRhdGEgZm9yIHRoZSBydW50aW1lLggATFJ1bnRpbWVWaWV3RnVuY3Rpb24EVGV4ZWN1dGVfdmlld19mdW5jdGlvbgggcXVlcnlfaWSBDBRpbnB1dBiFDAR8IEV4ZWN1dGUgYSB2aWV3IGZ1bmN0aW9uIHF1ZXJ5LgAEpCBSdW50aW1lIEFQSSBmb3IgZXhlY3V0aW5nIHZpZXcgZnVuY3Rpb25zBAAwQmxvY2tCdWlsZGVyEDxhcHBseV9leHRyaW5zaWMEJGV4dHJpbnNpY6UHjQwQbCBBcHBseSB0aGUgZ2l2ZW4gZXh0cmluc2ljLgA5ASBSZXR1cm5zIGFuIGluY2x1c2lvbiBvdXRjb21lIHdoaWNoIHNwZWNpZmllcyBpZiB0aGlzIGV4dHJpbnNpYyBpcyBpbmNsdWRlZCBpbkwgdGhpcyBibG9jayBvciBub3QuADhmaW5hbGl6ZV9ibG9jawBcBGggRmluaXNoIHRoZSBjdXJyZW50IGJsb2NrLgBMaW5oZXJlbnRfZXh0cmluc2ljcwQgaW5oZXJlbnSdDLUHBD0BIEdlbmVyYXRlIGluaGVyZW50IGV4dHJpbnNpY3MuIFRoZSBpbmhlcmVudCBkYXRhIHdpbGwgdmFyeSBmcm9tIGNoYWluIHRvIGNoYWluLgA8Y2hlY2tfaW5oZXJlbnRzCBRibG9ja2kMEGRhdGGdDK0MBFUBIENoZWNrIHRoYXQgdGhlIGluaGVyZW50cyBhcmUgdmFsaWQuIFRoZSBpbmhlcmVudCBkYXRhIHdpbGwgdmFyeSBmcm9tIGNoYWluIHRvIGNoYWluLgAEcQEgVGhlIGBCbG9ja0J1aWxkZXJgIGFwaSB0cmFpdCB0aGF0IHByb3ZpZGVzIHRoZSByZXF1aXJlZCBmdW5jdGlvbmFsaXR5IGZvciBidWlsZGluZyBhIGJsb2NrLhgAWFRhZ2dlZFRyYW5zYWN0aW9uUXVldWUEUHZhbGlkYXRlX3RyYW5zYWN0aW9uDBhzb3VyY2WxDAh0eKUHKGJsb2NrX2hhc2g8tQwkaCBWYWxpZGF0ZSB0aGUgdHJhbnNhY3Rpb24uAGUBIFRoaXMgbWV0aG9kIGlzIGludm9rZWQgYnkgdGhlIHRyYW5zYWN0aW9uIHBvb2wgdG8gbGVhcm4gZGV0YWlscyBhYm91dCBnaXZlbiB0cmFuc2FjdGlvbi5FASBUaGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIG1ha2Ugc3VyZSB0byB2ZXJpZnkgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSB0cmFuc2FjdGlvbk0BIGFnYWluc3QgY3VycmVudCBzdGF0ZS4gVGhlIGdpdmVuIGBibG9ja19oYXNoYCBjb3JyZXNwb25kcyB0byB0aGUgaGFzaCBvZiB0aGUgYmxvY2t8IHRoYXQgaXMgdXNlZCBhcyBjdXJyZW50IHN0YXRlLgBFASBOb3RlIHRoYXQgdGhpcyBjYWxsIG1heSBiZSBwZXJmb3JtZWQgYnkgdGhlIHBvb2wgbXVsdGlwbGUgdGltZXMgYW5kIHRyYW5zYWN0aW9uc6QgbWlnaHQgYmUgdmVyaWZpZWQgaW4gYW55IHBvc3NpYmxlIG9yZGVyLgAETQEgVGhlIGBUYWdnZWRUcmFuc2FjdGlvblF1ZXVlYCBhcGkgdHJhaXQgZm9yIGludGVyZmVyaW5nIHdpdGggdGhlIHRyYW5zYWN0aW9uIHF1ZXVlLgwARE9mZmNoYWluV29ya2VyQXBpBDxvZmZjaGFpbl93b3JrZXIEGGhlYWRlclwQBMggU3RhcnRzIHRoZSBvZmYtY2hhaW4gdGFzayBmb3IgZ2l2ZW4gYmxvY2sgaGVhZGVyLgAEZCBUaGUgb2ZmY2hhaW4gd29ya2VyIGFwaS4IACxTZXNzaW9uS2V5cwhUZ2VuZXJhdGVfc2Vzc2lvbl9rZXlzCBRvd25lchgQc2VlZJEFvQwcFQEgR2VuZXJhdGUgYSBzZXQgb2Ygc2Vzc2lvbiBrZXlzIHdpdGggb3B0aW9uYWxseSB1c2luZyB0aGUgZ2l2ZW4gc2VlZC4JASBUaGUga2V5cyBzaG91bGQgYmUgc3RvcmVkIHdpdGhpbiB0aGUga2V5c3RvcmUgZXhwb3NlZCB2aWEgcnVudGltZTwgZXh0ZXJuYWxpdGllcy4AsCBUaGUgc2VlZCBuZWVkcyB0byBiZSBhIHZhbGlkIGB1dGY4YCBzdHJpbmcuANAgUmV0dXJucyB0aGUgY29uY2F0ZW5hdGVkIFNDQUxFIGVuY29kZWQgcHVibGljIGtleXMuAExkZWNvZGVfc2Vzc2lvbl9rZXlzBBxlbmNvZGVkGMEMDJggRGVjb2RlIHRoZSBnaXZlbiBwdWJsaWMgc2Vzc2lvbiBrZXlzLgDcIFJldHVybnMgdGhlIGxpc3Qgb2YgcHVibGljIHJhdyBwdWJsaWMga2V5cyArIGtleSB0eXBlLgAEaCBTZXNzaW9uIGtleXMgcnVudGltZSBhcGkuCAA8QWNjb3VudE5vbmNlQXBpBDRhY2NvdW50X25vbmNlBBxhY2NvdW50BDgEwCBHZXQgY3VycmVudCBhY2NvdW50IG5vbmNlIG9mIGdpdmVuIGBBY2NvdW50SWRgLgAEgCBUaGUgQVBJIHRvIHF1ZXJ5IGFjY291bnQgbm9uY2UuBABUVHJhbnNhY3Rpb25QYXltZW50QXBpEChxdWVyeV9pbmZvCAx1eHSlBwxsZW44zQwAAERxdWVyeV9mZWVfZGV0YWlscwgMdXh0pQcMbGVuONEMAABMcXVlcnlfd2VpZ2h0X3RvX2ZlZQQYd2VpZ2h01QHEAABMcXVlcnlfbGVuZ3RoX3RvX2ZlZQQYbGVuZ3RoOMQAAAAQAGRUcmFuc2FjdGlvblBheW1lbnRDYWxsQXBpEDxxdWVyeV9jYWxsX2luZm8IEGNhbGwgDGxlbjjNDARJASBRdWVyeSBpbmZvcm1hdGlvbiBvZiBhIGRpc3BhdGNoIGNsYXNzLCB3ZWlnaHQsIGFuZCBmZWUgb2YgYSBnaXZlbiBlbmNvZGVkIGBDYWxsYC4AWHF1ZXJ5X2NhbGxfZmVlX2RldGFpbHMIEGNhbGwgDGxlbjjRDAS0IFF1ZXJ5IGZlZSBkZXRhaWxzIG9mIGEgZ2l2ZW4gZW5jb2RlZCBgQ2FsbGAuAExxdWVyeV93ZWlnaHRfdG9fZmVlBBh3ZWlnaHTVAcQEAQEgUXVlcnkgdGhlIG91dHB1dCBvZiB0aGUgY3VycmVudCBgV2VpZ2h0VG9GZWVgIGdpdmVuIHNvbWUgaW5wdXQuAExxdWVyeV9sZW5ndGhfdG9fZmVlBBhsZW5ndGg4xAQBASBRdWVyeSB0aGUgb3V0cHV0IG9mIHRoZSBjdXJyZW50IGBMZW5ndGhUb0ZlZWAgZ2l2ZW4gc29tZSBpbnB1dC4AAAwANFhjbVBheW1lbnRBcGkQfHF1ZXJ5X2FjY2VwdGFibGVfcGF5bWVudF9hc3NldHMELHhjbV92ZXJzaW9uON0MFLQgUmV0dXJucyBhIGxpc3Qgb2YgYWNjZXB0YWJsZSBwYXltZW50IGFzc2V0cy4AMCAjIEFyZ3VtZW50cwBoICogYHhjbV92ZXJzaW9uYDogVmVyc2lvbi4AQHF1ZXJ5X3hjbV93ZWlnaHQEHG1lc3NhZ2WVAekMFKggUmV0dXJucyBhIHdlaWdodCBuZWVkZWQgdG8gZXhlY3V0ZSBhIFhDTS4AMCAjIEFyZ3VtZW50cwB0ICogYG1lc3NhZ2VgOiBgVmVyc2lvbmVkWGNtYC4AZHF1ZXJ5X3dlaWdodF90b19hc3NldF9mZWUIGHdlaWdodNUBFGFzc2V0EQPtDBjoIENvbnZlcnRzIGEgd2VpZ2h0IGludG8gYSBmZWUgZm9yIHRoZSBzcGVjaWZpZWQgYEFzc2V0SWRgLgAwICMgQXJndW1lbnRzAIggKiBgd2VpZ2h0YDogY29udmVydGlibGUgYFdlaWdodGAufCAqIGBhc3NldGA6IGBWZXJzaW9uZWRBc3NldElkYC4ATHF1ZXJ5X2RlbGl2ZXJ5X2ZlZXMMLGRlc3RpbmF0aW9uSQEcbWVzc2FnZZUBIGFzc2V0X2lkEQPxDChgIFF1ZXJ5IGRlbGl2ZXJ5IGZlZXMgVjIuAB0BIEdldCBkZWxpdmVyeSBmZWVzIGZvciBzZW5kaW5nIGEgc3BlY2lmaWMgYG1lc3NhZ2VgIHRvIGEgYGRlc3RpbmF0aW9uYC70IFRoZXNlIGFsd2F5cyBjb21lIGluIGEgc3BlY2lmaWMgYXNzZXQsIGRlZmluZWQgYnkgdGhlIGNoYWluLgAwICMgQXJndW1lbnRzgQEgKiBgbWVzc2FnZWA6IFRoZSBtZXNzYWdlIHRoYXQnbGwgYmUgc2VudCwgbmVjZXNzYXJ5IGJlY2F1c2UgbW9zdCBkZWxpdmVyeSBmZWVzIGFyZSBiYXNlZCBvbiB0aGVcICAgc2l6ZSBvZiB0aGUgbWVzc2FnZS5hASAqIGBkZXN0aW5hdGlvbmA6IFRoZSBkZXN0aW5hdGlvbiB0byBzZW5kIHRoZSBtZXNzYWdlIHRvLiBEaWZmZXJlbnQgZGVzdGluYXRpb25zIG1heSB1c2XAICAgZGlmZmVyZW50IHNlbmRlcnMgdGhhdCBjaGFyZ2UgZGlmZmVyZW50IGZlZXMuACxwIEEgdHJhaXQgb2YgWENNIHBheW1lbnQgQVBJLgCoIEFQSSBwcm92aWRlcyBmdW5jdGlvbmFsaXR5IGZvciBvYnRhaW5pbmc6AMQgKiB0aGUgd2VpZ2h0IHJlcXVpcmVkIHRvIGV4ZWN1dGUgYW4gWENNIG1lc3NhZ2UsBQEgKiBhIGxpc3Qgb2YgYWNjZXB0YWJsZSBgQXNzZXRJZGBzIGZvciBtZXNzYWdlIGV4ZWN1dGlvbiBwYXltZW50LAEBICogdGhlIGNvc3Qgb2YgdGhlIHdlaWdodCBpbiB0aGUgc3BlY2lmaWVkIGFjY2VwdGFibGUgYEFzc2V0SWRgLqAgKiB0aGUgZmVlcyBmb3IgYW4gWENNIG1lc3NhZ2UgZGVsaXZlcnkuAPAgVG8gZGV0ZXJtaW5lIHRoZSBleGVjdXRpb24gd2VpZ2h0IG9mIHRoZSBjYWxscyByZXF1aXJlZCBmb3J1ASBbYHhjbTo6bGF0ZXN0OjpJbnN0cnVjdGlvbjo6VHJhbnNhY3RgXSBpbnN0cnVjdGlvbiwgYFRyYW5zYWN0aW9uUGF5bWVudENhbGxBcGlgIGNhbiBiZSB1c2VkLggAJERyeVJ1bkFwaQgwZHJ5X3J1bl9jYWxsDBhvcmlnaW4xAxBjYWxsIExyZXN1bHRfeGNtc192ZXJzaW9uOPUMBEQgRHJ5IHJ1biBjYWxsIFYyLgAsZHJ5X3J1bl94Y20IPG9yaWdpbl9sb2NhdGlvbkkBDHhjbd0CIQ0EUCBEcnkgcnVuIFhDTSBwcm9ncmFtACSxASBBUEkgZm9yIGRyeS1ydW5uaW5nIGV4dHJpbnNpY3MgYW5kIFhDTSBwcm9ncmFtcyB0byBnZXQgdGhlIHByb2dyYW1zIHRoYXQgbmVlZCB0byBiZSBwYXNzZWQgdG8gdGhlIGZlZXMgQVBJLgCBASBBbGwgY2FsbHMgcmV0dXJuIGEgdmVjdG9yIG9mIHR1cGxlcyAobG9jYXRpb24sIHhjbSkgd2hlcmUgZWFjaCAieGNtIiBpcyBleGVjdXRlZCBpbiAibG9jYXRpb24iLuQgSWYgdGhlcmUncyBsb2NhbCBleGVjdXRpb24sIHRoZSBsb2NhdGlvbiB3aWxsIGJlICJIZXJlIi4dASBUaGlzIHZlY3RvciBjYW4gYmUgdXNlZCB0byBjYWxjdWxhdGUgYm90aCBleGVjdXRpb24gYW5kIGRlbGl2ZXJ5IGZlZXMuAJkBIENhbGxzIG9yIFhDTXMgbWlnaHQgZmFpbCB3aGVuIGV4ZWN1dGVkLCB0aGlzIGRvZXNuJ3QgbWVhbiB0aGUgcmVzdWx0IG9mIHRoZXNlIGNhbGxzIHdpbGwgYmUgYW4gYEVycmAuZQEgSW4gdGhvc2UgY2FzZXMsIHRoZXJlIG1pZ2h0IHN0aWxsIGJlIGEgdmFsaWQgcmVzdWx0LCB3aXRoIHRoZSBleGVjdXRpb24gZXJyb3IgaW5zaWRlIGl0LmUBIFRoZSBvbmx5IHJlYXNvbnMgd2h5IHRoZXNlIGNhbGxzIG1pZ2h0IHJldHVybiBhbiBlcnJvciBhcmUgbGlzdGVkIGluIHRoZSBbYEVycm9yYF0gZW51bS4IAFBMb2NhdGlvblRvQWNjb3VudEFwaQRAY29udmVydF9sb2NhdGlvbgQgbG9jYXRpb25JASkNBJAgQ29udmVydHMgYExvY2F0aW9uYCB0byBgQWNjb3VudElkYC4ABA0BIEFQSSBmb3IgdXNlZnVsIGNvbnZlcnNpb25zIGJldHdlZW4gWENNIGBMb2NhdGlvbmAgYW5kIGBBY2NvdW50SWRgLgQAKE1vYlJ1bGVBcGkEIHZvdGVkX29uCBR2b3RlcggkZG9uZV9vbmx5yGUEDFkBIFJldHVybnMgYSBsaXN0IG9mIGNhc2VzIHdoZXJlIHRoZSB1c2VyIGhhcyBhIHZvdGUgc3RvcmVkIG9uIGNoYWluLiBJZiB0aGUgYGRvbmVfb25seWBVASBmbGFnIGlzIHNldCwgb25seSBjYXNlcyB0aGF0IGFyZSBkb25lIGFuZCByZWFkeSB0byBiZSBjbGFpbWVkIHdpbGwgYmUgcmV0dXJuZWQuIFRoaXMFASBmdW5jdGlvbiBkb2VzIG5vdCB0YWtlIHRoZSBjb3JyZWN0bmVzcyBvZiB0aGUgdm90ZSBpbnRvIGFjY291bnQuAAS0IFRoZSBBUEkgdG8gcXVlcnkgdGhlIHJld2FyZHMgZm9yIG1vYiBjcmVkaXQuBAA0UHJvb2ZPZklua0FwaQREY2FuZGlkYWN5X2RlcG9zaXQAxATUIFJldHVybnMgdGhlIGRlcG9zaXQgbmVjZXNzYXJ5IHRvIGJlY29tZSBhIGNhbmRpZGF0ZS4ABOwgVGhlIEFQSSB0byBxdWVyeSB0aGUgZGVwb3NpdCBmb3IgYSBwcm9vZiBvZiBpbmsgY2FuZGlkYWN5LgQANFBhbGxldEdhbWVBcGkEMHBsYXlfZGVwb3NpdADEBLggUmV0dXJucyB0aGUgZGVwb3NpdCBuZWNlc3NhcnkgdG8gcGxheSBhIGdhbWUuAASsIFRoZSBBUEkgdG8gcXVlcnkgdGhlIGRlcG9zaXQgZm9yIGdhbWVwbGF5LgQAUENvbGxlY3RDb2xsYXRpb25JbmZvBFhjb2xsZWN0X2NvbGxhdGlvbl9pbmZvBBhoZWFkZXJcMQ0QnCBDb2xsZWN0IGluZm9ybWF0aW9uIGFib3V0IGEgY29sbGF0aW9uLgD0IFRoZSBnaXZlbiBgaGVhZGVyYCBpcyB0aGUgaGVhZGVyIG9mIHRoZSBidWlsdCBibG9jayBmb3IgdGhhdKggd2UgYXJlIGNvbGxlY3RpbmcgdGhlIGNvbGxhdGlvbiBpbmZvIGZvci4AFNggUnVudGltZSBhcGkgdG8gY29sbGVjdCBpbmZvcm1hdGlvbiBhYm91dCBhIGNvbGxhdGlvbi4ARCBWZXJzaW9uIGhpc3Rvcnk6AQEgLSBWZXJzaW9uIDI6IENoYW5nZWQgW2BTZWxmOjpjb2xsZWN0X2NvbGxhdGlvbl9pbmZvYF0gc2lnbmF0dXJlNQEgLSBWZXJzaW9uIDM6IFNpZ25hbHMgdG8gdGhlIG5vZGUgdG8gdXNlIHZlcnNpb24gMSBvZiBbYFBhcmFjaGFpbkJsb2NrRGF0YWBdLgwAOEdlbmVzaXNCdWlsZGVyDCxidWlsZF9zdGF0ZQQQanNvbhg9DShlASBCdWlsZCBgUnVudGltZUdlbmVzaXNDb25maWdgIGZyb20gYSBKU09OIGJsb2Igbm90IHVzaW5nIGFueSBkZWZhdWx0cyBhbmQgc3RvcmUgaXQgaW4gdGhlJCBzdG9yYWdlLgApASBJbiB0aGUgY2FzZSBvZiBhIEZSQU1FLWJhc2VkIHJ1bnRpbWUsIHRoaXMgZnVuY3Rpb24gZGVzZXJpYWxpemVzIHRoZSBmdWxsVQEgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBmcm9tIHRoZSBnaXZlbiBKU09OIGJsb2IgYW5kIHB1dHMgaXQgaW50byB0aGUgc3RvcmFnZS4gSWYgdGhlVQEgcHJvdmlkZWQgSlNPTiBibG9iIGlzIGluY29ycmVjdCBvciBpbmNvbXBsZXRlIG9yIHRoZSBkZXNlcmlhbGl6YXRpb24gZmFpbHMsIGFuIGVycm9yNCBpcyByZXR1cm5lZC4AXQEgUGxlYXNlIG5vdGUgdGhhdCBwcm92aWRlZCBKU09OIGJsb2IgbXVzdCBjb250YWluIGFsbCBgUnVudGltZUdlbmVzaXNDb25maWdgIGZpZWxkcywgbm9cIGRlZmF1bHRzIHdpbGwgYmUgdXNlZC4AKGdldF9wcmVzZXQECGlkQQ2RBThhASBSZXR1cm5zIGEgSlNPTiBibG9iIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBidWlsdC1pbiBgUnVudGltZUdlbmVzaXNDb25maWdgIGlkZW50aWZpZWQgYnkYIGBpZGAuAFUBIElmIGBpZGAgaXMgYE5vbmVgIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIEpTT04gYmxvYiByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGVmYXVsdEkBIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2Agc3RydWN0IG9mIHRoZSBydW50aW1lLiBJbXBsZW1lbnRhdGlvbiBtdXN0IHByb3ZpZGUgZGVmYXVsdGAgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYC4AIQEgT3RoZXJ3aXNlIGZ1bmN0aW9uIHJldHVybnMgYSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBidWlsdC1pbiwgbmFtZWRRASBgUnVudGltZUdlbmVzaXNDb25maWdgIHByZXNldCBpZGVudGlmaWVkIGJ5IGBpZGAsIG9yIGBOb25lYCBpZiBzdWNoIHByZXNldCBkb2VzIG5vdGEBIGV4aXN0LiBSZXR1cm5lZCBgVmVjPHU4PmAgY29udGFpbnMgYnl0ZXMgb2YgSlNPTiBibG9iIChwYXRjaCkgd2hpY2ggY29tcHJpc2VzIGEgbGlzdCBvZk0BIChwb3RlbnRpYWxseSBuZXN0ZWQpIGtleS12YWx1ZSBwYWlycyB0aGF0IGFyZSBpbnRlbmRlZCBmb3IgY3VzdG9taXppbmcgdGhlIGRlZmF1bHRlASBydW50aW1lIGdlbmVzaXMgY29uZmlnLiBUaGUgcGF0Y2ggc2hhbGwgYmUgbWVyZ2VkIChyZmM3Mzg2KSB3aXRoIHRoZSBKU09OIHJlcHJlc2VudGF0aW9uYQEgb2YgdGhlIGRlZmF1bHQgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCB0byBjcmVhdGUgYSBjb21wcmVoZW5zaXZlIGdlbmVzaXMgY29uZmlnIHRoYXQgY2FuhCBiZSB1c2VkIGluIGBidWlsZF9zdGF0ZWAgbWV0aG9kLgAwcHJlc2V0X25hbWVzAEUNEFEBIFJldHVybnMgYSBsaXN0IG9mIGlkZW50aWZpZXJzIGZvciBhdmFpbGFibGUgYnVpbHRpbiBgUnVudGltZUdlbmVzaXNDb25maWdgIHByZXNldHMuAGEBIFRoZSBwcmVzZXRzIGZyb20gdGhlIGxpc3QgY2FuIGJlIHF1ZXJpZWQgd2l0aCBbYEdlbmVzaXNCdWlsZGVyOjpnZXRfcHJlc2V0YF0gbWV0aG9kLiBJZgEBIG5vIG5hbWVkIHByZXNldHMgYXJlIHByb3ZpZGVkIGJ5IHRoZSBydW50aW1lIHRoZSBsaXN0IGlzIGVtcHR5LgAE8CBBUEkgdG8gaW50ZXJhY3Qgd2l0aCBgUnVudGltZUdlbmVzaXNDb25maWdgIGZvciB0aGUgcnVudGltZQQAIEUGSQ0A";
|
|
2
|
-
|
|
3
|
-
export { binMeta as default };
|