A/MNCi9c/FVjAAAAAAAAAAAFAAAAQAAAAHN+AAAAZAAAWgAAZAEAZAIAbAEAWgEAZAEAZAIAbAIAWgIAZAMAZwEAWgMAZAMAZAYAZAQAhAAAgwAAWVoEAGQFAIQAAFoFAHkQAGQBAGQCAGwGAFoGAFduEQAEZQcAawoAcmYAAQEBbhQAWGUGAGoIAGUEAIMAAGoJAIMBAAFkAgBTKAcAAABzQwYAAFdvcmQgY29tcGxldGlvbiBmb3IgR05VIHJlYWRsaW5lLgoKVGhlIGNvbXBsZXRlciBjb21wbGV0ZXMga2V5d29yZHMsIGJ1aWx0LWlucyBhbmQgZ2xvYmFscyBpbiBhIHNlbGVjdGFibGUKbmFtZXNwYWNlICh3aGljaCBkZWZhdWx0cyB0byBfX21haW5fXyk7IHdoZW4gY29tcGxldGluZyBOQU1FLk5BTUUuLi4sIGl0CmV2YWx1YXRlcyAoISkgdGhlIGV4cHJlc3Npb24gdXAgdG8gdGhlIGxhc3QgZG90IGFuZCBjb21wbGV0ZXMgaXRzIGF0dHJpYnV0ZXMuCgpJdCdzIHZlcnkgY29vbCB0byBkbyAiaW1wb3J0IHN5cyIgdHlwZSAic3lzLiIsIGhpdCB0aGUgY29tcGxldGlvbiBrZXkgKHR3aWNlKSwKYW5kIHNlZSB0aGUgbGlzdCBvZiBuYW1lcyBkZWZpbmVkIGJ5IHRoZSBzeXMgbW9kdWxlIQoKVGlwOiB0byB1c2UgdGhlIHRhYiBrZXkgYXMgdGhlIGNvbXBsZXRpb24ga2V5LCBjYWxsCgogICAgcmVhZGxpbmUucGFyc2VfYW5kX2JpbmQoInRhYjogY29tcGxldGUiKQoKTm90ZXM6CgotIEV4Y2VwdGlvbnMgcmFpc2VkIGJ5IHRoZSBjb21wbGV0ZXIgZnVuY3Rpb24gYXJlICppZ25vcmVkKiAoYW5kIGdlbmVyYWxseSBjYXVzZQogIHRoZSBjb21wbGV0aW9uIHRvIGZhaWwpLiAgVGhpcyBpcyBhIGZlYXR1cmUgLS0gc2luY2UgcmVhZGxpbmUgc2V0cyB0aGUgdHR5CiAgZGV2aWNlIGluIHJhdyAob3IgY2JyZWFrKSBtb2RlLCBwcmludGluZyBhIHRyYWNlYmFjayB3b3VsZG4ndCB3b3JrIHdlbGwKICB3aXRob3V0IHNvbWUgY29tcGxpY2F0ZWQgaG9vcGxhIHRvIHNhdmUsIHJlc2V0IGFuZCByZXN0b3JlIHRoZSB0dHkgc3RhdGUuCgotIFRoZSBldmFsdWF0aW9uIG9mIHRoZSBOQU1FLk5BTUUuLi4gZm9ybSBtYXkgY2F1c2UgYXJiaXRyYXJ5IGFwcGxpY2F0aW9uCiAgZGVmaW5lZCBjb2RlIHRvIGJlIGV4ZWN1dGVkIGlmIGFuIG9iamVjdCB3aXRoIGEgX19nZXRhdHRyX18gaG9vayBpcyBmb3VuZC4KICBTaW5jZSBpdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGFwcGxpY2F0aW9uIChvciB0aGUgdXNlcikgdG8gZW5hYmxlIHRoaXMKICBmZWF0dXJlLCBJIGNvbnNpZGVyIHRoaXMgYW4gYWNjZXB0YWJsZSByaXNrLiAgTW9yZSBjb21wbGljYXRlZCBleHByZXNzaW9ucwogIChlLmcuIGZ1bmN0aW9uIGNhbGxzIG9yIGluZGV4aW5nIG9wZXJhdGlvbnMpIGFyZSAqbm90KiBldmFsdWF0ZWQuCgotIEdOVSByZWFkbGluZSBpcyBhbHNvIHVzZWQgYnkgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyBpbnB1dCgpIGFuZApyYXdfaW5wdXQoKSwgYW5kIHRodXMgdGhlc2UgYWxzbyBiZW5lZml0L3N1ZmZlciBmcm9tIHRoZSBjb21wbGV0ZXIKZmVhdHVyZXMuICBDbGVhcmx5IGFuIGludGVyYWN0aXZlIGFwcGxpY2F0aW9uIGNhbiBiZW5lZml0IGJ5CnNwZWNpZnlpbmcgaXRzIG93biBjb21wbGV0ZXIgZnVuY3Rpb24gYW5kIHVzaW5nIHJhd19pbnB1dCgpIGZvciBhbGwKaXRzIGlucHV0LgoKLSBXaGVuIHRoZSBvcmlnaW5hbCBzdGRpbiBpcyBub3QgYSB0dHkgZGV2aWNlLCBHTlUgcmVhZGxpbmUgaXMgbmV2ZXIKICB1c2VkLCBhbmQgdGhpcyBtb2R1bGUgKGFuZCB0aGUgcmVhZGxpbmUgbW9kdWxlKSBhcmUgc2lsZW50bHkgaW5hY3RpdmUuCgpp/////050CQAAAENvbXBsZXRlcmMAAAAAAAAAAAIAAABCAAAAczgAAABlAABaAQBkBQBkAACEAQBaAwBkAQCEAABaBABkAgCEAABaBQBkAwCEAABaBgBkBACEAABaBwBSUygGAAAAYwIAAAACAAAABAAAAEMAAABzUAAAAHwBAHIiAHQAAHwBAHQBAIMCAAxyIgB0AgBkAQCCAgBuAAB8AQBkBABrCAByOgBkAgB8AABfBABuEgBkAwB8AABfBAB8AQB8AABfBQBkBABTKAUAAABz4QEAAENyZWF0ZSBhIG5ldyBjb21wbGV0ZXIgZm9yIHRoZSBjb21tYW5kIGxpbmUuCgogICAgICAgIENvbXBsZXRlcihbbmFtZXNwYWNlXSkgLT4gY29tcGxldGVyIGluc3RhbmNlLgoKICAgICAgICBJZiB1bnNwZWNpZmllZCwgdGhlIGRlZmF1bHQgbmFtZXNwYWNlIHdoZXJlIGNvbXBsZXRpb25zIGFyZSBwZXJmb3JtZWQKICAgICAgICBpcyBfX21haW5fXyAodGVjaG5pY2FsbHksIF9fbWFpbl9fLl9fZGljdF9fKS4gTmFtZXNwYWNlcyBzaG91bGQgYmUKICAgICAgICBnaXZlbiBhcyBkaWN0aW9uYXJpZXMuCgogICAgICAgIENvbXBsZXRlciBpbnN0YW5jZXMgc2hvdWxkIGJlIHVzZWQgYXMgdGhlIGNvbXBsZXRpb24gbWVjaGFuaXNtIG9mCiAgICAgICAgcmVhZGxpbmUgdmlhIHRoZSBzZXRfY29tcGxldGVyKCkgY2FsbDoKCiAgICAgICAgcmVhZGxpbmUuc2V0X2NvbXBsZXRlcihDb21wbGV0ZXIobXlfbmFtZXNwYWNlKS5jb21wbGV0ZSkKICAgICAgICBzHgAAAG5hbWVzcGFjZSBtdXN0IGJlIGEgZGljdGlvbmFyeWkBAAAAaQAAAABOKAYAAAB0CgAAAGlzaW5zdGFuY2V0BAAAAGRpY3R0CQAAAFR5cGVFcnJvcnQEAAAATm9uZXQLAAAAdXNlX21haW5fbnN0CQAAAG5hbWVzcGFjZSgCAAAAdAQAAABzZWxmUgYAAAAoAAAAACgAAAAAc1IAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3JsY29t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