LyoKICogUHJvZ3JhbSBNYW5hZ2VyCiAqCiAqIENvcHlyaWdodCAyMDA1LTIwMDYgQWxleGFuZGVyIE4uIFP4cm5lcyA8YWxleEB0aGVoYW5kb2ZhZ29ueS5jb20+CiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCi8qIE1lbnUgKi8KCk1BSU5fTUVOVSBNRU5VIExBTkdVQUdFIExBTkdfTk9SV0VHSUFOLCBTVUJMQU5HX05PUldFR0lBTl9CT0tNQUwKewogUE9QVVAgIiZGaWwiIHsKICAgTUVOVUlURU0gIiZOeSAuIC4gLiIsICAgICAgICAgICAgICBQTV9ORVcKICAgTUVOVUlURU0gIsUmcG5lXHRFbnRlciIsICAgICAgICAgICAgIFBNX09QRU4KICAgTUVOVUlURU0gIiZGbHl0dCAuIC4gLlx0RjciLCAgICAgICAgICAgICBQTV9NT1ZFLCAgICAgIEdSQVlFRAogICBNRU5VSVRFTSAiJktvcGllciAuIC4gLlx0RjgiLCAgICAgICAgICAgICBQTV9DT1BZLCAgICAgIEdSQVlFRAogICBNRU5VSVRFTSAiJlNsZXR0XHRFbnRmIiwgICAgICAgICAgIFBNX0RFTEVURQogICBNRU5VSVRFTSAiJkF0dHJpYnV0dGVyIC4gLiAuXHRBbHQrRW50ZXIiLCAgICAgICBQTV9BVFRSSUJVVEVTCiAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICBNRU5VSVRFTSAiSyZq+HIgLiAuIC4iLCAgICAgICAgICBQTV9FWEVDVVRFCiAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICBNRU5VSVRFTSAiQSZ2c2x1dHQgV2luZG93cyAuIC4gLiIsICAgICAgICAgICAgIFBNX0VYSVQKIH0KIFBPUFVQICImSW5uc3RpbGxpbmdlciIgewogICBNRU5VSVRFTSAiT3JkbmUgJmF1dG9tYXRpc2siLCAgUE1fQVVUT19BUlJBTkdFCiAgIE1FTlVJVEVNICImTWluaW1lciB2ZWQgb3Bwc3RhcnQiLCAgICBQTV9NSU5fT05fUlVOCiAgIE1FTlVJVEVNICJMYWdyZSBlbmRyaW5nZXIgdmVkIGF2JnNsdXR0aW5nIiwgUE1fU0FWRV9TRVRUSU5HUwogfQogUE9QVVAgIiZWaW5kdWVyIiB7CiAgIE1FTlVJVEVNICImT3ZlcmxhcHBldFx0U2hpZnQrRjUiLCAgICAgICBQTV9PVkVSTEFQCiAgIE1FTlVJVEVNICImU2lkZSB2ZWQgc2lkZVx0U2hpZnQrRjQiLCAgUE1fU0lERV9CWV9TSURFCiAgIE1FTlVJVEVNICJPcmRuZSAmaWtvbmVyIiwgICAgICAgUE1fQVJSQU5HRQogfQogClBPUFVQICImSGplbHAiIHsKICAgTUVOVUlURU0gIiZJbm5ob2xkIiwgICAgICAgICBQTV9DT05URU5UUwogICBNRU5VSVRFTSAiJlP4ayAuIC4gLiIsICAgICAgICAgICBQTV9TRUFSQ0gKICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgIE1FTlVJVEVNICImSGplbHAgdGlsIGhqZWxwIiwgICAgIFBNX0hFTFBPTkhFTFAKICAgTUVOVUlURU0gIiZWZWlsZWRuaW5nIiwgICAgICAgICBQTV9UVVRPUklBTAogICBNRU5VSVRFTSBTRVBBUkFUT1IKCiAgIFBPUFVQICImSW5mb3JtYXNqb24gLiAuIC4iIHsKICAgICBNRU5VSVRFTSAiJkxpc2VucyIsICAgICAgICBQTV9MSUNFTlNFCiAgICAgTUVOVUlURU0gIkkmTkdFTiBHQVJBTlRJIiwgICAgUE1fTk9fV0FSUkFOVFkKICAgICBNRU5VSVRFTSAiJm9tIFdJTkUiLCAgICAgUE1fQUJPVVRfV0lORQogICB9CiB9Cn0KCi8qIERpYWxvZyBgTmV3JyAqLwoKRElBTE9HX05FVyBESUFMT0cgMCwgMCwgMTcwLCA2NQpMQU5HVUFHRSBMQU5HX05PUldFR0lBTiwgU1VCTEFOR19OT1JXRUdJQU5fQk9LTUFMClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIk55Igp7ClJBRElPQlVUVE9OICAgIiIsICAgICAgICAgICAgICAgICBQTV9ORVdfR1JPVVAsICAgIDEwLCAxNSwgIDEwLCAxNQpMVEVYVCAgICAgICAgICJQUHJvZ3JhbSZncnVwcGUiLCAgIFBNX05FV19HUk9VUCwgICAgMjAsIDE4LCAgODAsIDE1ClJBRElPQlVUVE9OICAgIiIsICAgICAgICAgICAgICAgICBQTV9ORVdfUFJPR1JBTSwgIDEwLCAzNSwgIDEwLCAxNQpMVEVYVCAgICAgICAgICImUHJvZ3JhbSIsIFBNX05FV19QUk9HUkFNLCAgMjAsIDM4LCAgODAsIDE1CkRFRlBVU0hCVVRUT04gIk9LIiwgICAgICAgICAgSURPSywgICAgICAgICAgIDEwNSwgIDUsICA2MCwgMTUsIFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAgICAiQXZicnl0IiwgICAgICBJRENBTkNFTCwgICAgICAgMTA1LCAyNSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICImSGplbHAiLCAgICAgICAgUE1fSEVMUCwgICAgICAgIDEwNSwgNDUsICA2MCwgMTUsIFdTX1RBQlNUT1AKfQoKLyogRGlhbG9nIGBNb3ZlJyAqLwoKRElBTE9HX01PVkUgRElBTE9HIDAsIDAsIDI1MCwgNjUKTEFOR1VBR0UgTEFOR19OT1JXRUdJQU4sIFNVQkxBTkdfTk9SV0VHSUFOX0JPS01BTApTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJGbHl0dCBwcm9ncmFtIgp7CkxURVhUICAgICAgICAgIkZseXR0IHByb2dyYW06IiwgICAgSURJR05PUkUsICAgICAgICAgICAgNSwgIDUsICA5MCwgMTUKTFRFWFQgICAgICAgICAiIiwgICAgICAgICAgICAgICAgICAgICBQTV9QUk9HUkFNLCAgICAgICAgIDk1LCAgNSwgIDkwLCAxNQpMVEVYVCAgICAgICAgICJGcmEgZ3J1cHBlOiIsIElESUdOT1JFLCAgICAgICAgICAgIDUsIDEzLCAgOTAsIDE1CkxURVhUICAgICAgICAgIiIsICAgICAgICAgICAgICAgICAgICAgUE1fRlJPTV9HUk9VUCwgICAgICA5NSwgMTMsICA5MCwgMTUKTFRFWFQgICAgICAgICAiJlRpbCBncnVwcGU6IiwgICBQTV9UT19HUk9VUF9UWFQsICAgICA1LCAyOCwgMTQwLCAxNQpDT01CT0JPWCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBNX1RPX0dST1VQLCAgICAgICAgIDUsIDM4LCAxNDAsIDUwLCBXU19UQUJTVE9QIHwgQ0JTX0RST1BET1dOTElTVApERUZQVVNIQlVUVE9OICJPSyIsICAgICAgICAgICAgICBJRE9LLCAgICAgICAgICAgICAgMTg1LCAgNSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICJBdmJyeXQiLCAgICAgICAgICBJRENBTkNFTCwgICAgICAgICAgMTg1LCAyNSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICImSGplbHAiLCAgICAgICAgICAgIFBNX0hFTFAsICAgICAgICAgICAxODUsIDQ1LCAgNjAsIDE1LCBXU19UQUJTVE9QCn0KCi8qIERpYWxvZyBgQ29weScgKi8KCkRJQUxPR19DT1BZIERJQUxPRyAwLCAwLCAyNTAsIDY1CkxBTkdVQUdFIExBTkdfTk9SV0VHSUFOLCBTVUJMQU5HX05PUldFR0lBTl9CT0tNQUwKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiS29waWVyIHByb2dyYW0iCnsKTFRFWFQgICAgICAgICAiS29waWVyIHByb2dyYW06IiwgICAgSURJR05PUkUsICAgICAgICAgICAgNSwgIDUsICA5MCwgMTUKTFRFWFQgICAgICAgICAiIiwgICAgICAgICAgICAgICAgICAgICBQTV9QUk9HUkFNLCAgICAgICAgIDk1LCAgNSwgIDkwLCAxNQpMVEVYVCAgICAgICAgICJGcmEgZ3J1cHBlOiIsIElESUdOT1JFLCAgICAgICAgICAgIDUsIDEzLCAgOTAsIDE1CkxURVhUICAgICAgICAgIiIsICAgICAgICAgICAgICAgICAgICAgUE1fRlJPTV9HUk9VUCwgICAgICA5NSwgMTMsICA5MCwgMTUKTFRFWFQgICAgICAgICAiJlRpbCBncnVwcGU6IiwgICBQTV9UT19HUk9VUF9UWFQsICAgICA1LCAyOCwgMTQwLCAxNQpDT01CT0JPWCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBNX1RPX0dST1VQLCAgICAgICAgIDUsIDM4LCAxNDAsIDUwLCBXU19UQUJTVE9QIHwgQ0JTX0RST1BET1dOTElTVApERUZQVVNIQlVUVE9OICJPSyIsICAgICAgICAgICAgICBJRE9LLCAgICAgICAgICAgICAgMTg1LCAgNSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICJBdmJyeXQiLCAgICAgICAgICBJRENBTkNFTCwgICAgICAgICAgMTg1LCAyNSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICImSGplbHAiLCAgICAgICAgICAgIFBNX0hFTFAsICAgICAgICAgICAxODUsIDQ1LCAgNjAsIDE1LCBXU19UQUJTVE9QCn0KCi8qIERpYWxvZyBgR3JvdXAgYXR0cmlidXRlcycgKi8KCkRJQUxPR19HUk9VUCBESUFMT0cgMCwgMCwgMjMwLCA2NQpMQU5HVUFHRSBMQU5HX05PUldFR0lBTiwgU1VCTEFOR19OT1JXRUdJQU5fQk9LTUFMClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlByb2dyYW1ncnVwcGVhdHRyaWJ1dHRlciIKewpMVEVYVCAgICAgIiZCZXNrcml2ZWxzZToiLCBQTV9ERVNDUklQVElPTl9UWFQsICAgMDUsIDE4LCAgNTAsIDEwCkVESVRURVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBNX0RFU0NSSVBUSU9OLCAgICAgICA2MCwgMTgsICA5MCwgMTUsIFdTX1RBQlNUT1AKTFRFWFQgICAgICImR3J1cHBlZmlsOiIsICAgICAgICBQTV9GSUxFX1RYVCwgICAgICAgICAgMDUsIDM4LCAgNTAsIDEwCkVESVRURVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBNX0ZJTEUsICAgICAgICAgICAgICA2MCwgMzgsICA5MCwgMTUsIFdTX1RBQlNUT1AKREVGUFVTSEJVVFRPTiAiT0siLCAgICAgICAgICAgIElET0ssICAgICAgICAgICAgICAgIDE1NSwgIDUsICA2MCwgMTUsIFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAgICAiQXZicnl0IiwgICAgICAgIElEQ0FOQ0VMLCAgICAgICAgICAgIDE1NSwgMjUsICA2MCwgMTUsIFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAgICAiJkhqZWxwIiwgICAgICAgICAgUE1fSEVMUCwgICAgICAgICAgICAgMTU1LCA0NSwgIDYwLCAxNSwgV1NfVEFCU1RPUAp9CgovKiBEaWFsb2cgYFByb2dyYW0gYXR0cmlidXRlcycgKi8KCkRJQUxPR19QUk9HUkFNIERJQUxPRyAwLCAwLCAyNTAsIDEwNQpMQU5HVUFHRSBMQU5HX05PUldFR0lBTiwgU1VCTEFOR19OT1JXRUdJQU5fQk9LTUFMClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlByb2dyYW1hdHRyaWJ1dHRlciIKewpMVEVYVCAgICAgICAgICImQmVza3JpdmVsc2U6IiwgIFBNX0RFU0NSSVBUSU9OX1RYVCwgICAwNSwgMTAsICA2MCwgMTAKRURJVFRFWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBNX0RFU0NSSVBUSU9OLCAgICAgICA4MCwgMTAsICA5MCwgMTUsIFdTX1RBQlNUT1AKTFRFWFQgICAgICAgICAiJktvbW1hbmRvbGluamU6IiwgUE1fQ09NTUFORF9MSU5FX1RYVCwgIDA1LCAyNSwgIDYwLCAxMApFRElUVEVYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUE1fQ09NTUFORF9MSU5FLCAgICAgIDgwLCAyNSwgIDkwLCAxNSwgV1NfVEFCU1RPUApMVEVYVCAgICAgICAgICImQXJiZWlkc2thdGFsb2c6IiwgICAgUE1fRElSRUNUT1JZX1RYVCwgICAgIDA1LCA0MCwgIDYwLCAxMApFRElUVEVYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUE1fRElSRUNUT1JZLCAgICAgICAgIDgwLCA0MCwgIDkwLCAxNSwgV1NfVEFCU1RPUApMVEVYVCAgICAgICAgICJO+CZra2Vsa29tYmluYXNqb246IiwgICAgICBQTV9IT1RfS0VZX1RYVCwgICAgICAgMDUsIDU1LCAgNjAsIDEwCkVESVRURVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQTV9IT1RfS0VZLCAgICAgICAgICAgODAsIDU1LCAgOTAsIDE1LCBXU19UQUJTVE9QCklDT04gICAgICAgICAgIiIsICAgICAgICAgICAgICAgICAgICAgICAgICBQTV9JQ09OLCAgICAgICAgICAgICAgMjAsIDcwCkNIRUNLQk9YICAgICAgIiIsICAgICAgICAgICAgICAgICAgICAgICAgICBQTV9TWU1CT0wsICAgICAgICAgICAgODAsIDc1LCAgMTAsIDEwLCBXU19UQUJTVE9QCkxURVhUICAgICAgICAgIiZNaW5pbWVyIHZlZCBvcHBzdGFydCIsICAgICAgIElESUdOT1JFLCAgICAgICAgICAgICA5NSwgNzUsICA3NSwgMTAKREVGUFVTSEJVVFRPTiAiT0siLCAgICAgICAgICAgICAgICAgICBJRE9LLCAgICAgICAgICAgICAgICAxODUsICA1LCAgNjAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gICAgIkF2YnJ5dCIsICAgICAgICAgICAgICAgSURDQU5DRUwsICAgICAgICAgICAgMTg1LCAyNSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICImQmxhIC4gLiAuIiwgICAgICAgICAgICAgICBQTV9CUk9XU0UsICAgICAgICAgICAxODUsIDQ1LCAgNjAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gICAgIkVuZHJlICZpa29uIC4gLiAuIiwgUE1fT1RIRVJfU1lNQk9MLCAgICAgMTg1LCA2NSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICImSGplbHAiLCAgICAgICAgICAgICAgICAgUE1fSEVMUCwgICAgICAgICAgICAgMTg1LCA4NSwgIDYwLCAxNSwgV1NfVEFCU1RPUAp9CgovKiBEaWFsb2cgYFN5bWJvbCcgKi8KCkRJQUxPR19TWU1CT0wgRElBTE9HIDAsIDAsIDIwMCwgODUKTEFOR1VBR0UgTEFOR19OT1JXRUdJQU4sIFNVQkxBTkdfTk9SV0VHSUFOX0JPS01BTApTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJFbmRyZSBpa29uIgp7CkxURVhUICAgICAiJkZpbG5hdm46IiwgICAgUE1fSUNPTl9GSUxFX1RYVCwgICAgNSwgMTUsICA0MCwgMTAKRURJVFRFWFQgICAgICAgICAgICAgICAgICAgICAgICAgUE1fSUNPTl9GSUxFLCAgICAgICA0NSwgMTUsICA4NSwgMTUsIFdTX1RBQlNUT1AKTFRFWFQgICAgICJHamVsZGVuZGUgJmlrb246IiwgUE1fU1lNQk9MX0xJU1RfVFhULCAgNSwgMzAsIDEyNSwgMTAKQ09NQk9CT1ggICAgICAgICAgICAgICAgICAgICAgICAgUE1fU1lNQk9MX0xJU1QsICAgICAgNSwgNDAsIDEyNSwgNTAsCiAgIENCU19EUk9QRE9XTkxJU1QgfCBDQlNfQVVUT0hTQ1JPTEwgfCBDQlNfT1dORVJEUkFXRklYRUQgfCBXU19UQUJTVE9QCkRFRlBVU0hCVVRUT04gIk9LIiwgICAgICAgICBJRE9LLCAgICAgICAgICAgICAgMTM1LCAgNSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICJBdmJyeXQiLCAgICAgSURDQU5DRUwsICAgICAgICAgIDEzNSwgMjUsICA2MCwgMTUsIFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAgICAiJkJsYSAuIC4gLiIsICAgIFBNX0JST1dTRSwgICAgICAgICAxMzUsIDQ1LCAgNjAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gICAgIiZIamVscCIsICAgICAgIFBNX0hFTFAsICAgICAgICAgICAxMzUsIDY1LCAgNjAsIDE1LCBXU19UQUJTVE9QCn0KCi8qIERpYWxvZyBgRXhlY3V0ZScgKi8KCkRJQUxPR19FWEVDVVRFIERJQUxPRyAwLCAwLCAyMDAsIDg1CkxBTkdVQUdFIExBTkdfTk9SV0VHSUFOLCBTVUJMQU5HX05PUldFR0lBTl9CT0tNQUwKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiS2r4ciBwcm9ncmFtIgp7CkxURVhUICAgICAiJktvbW1hbmRvbGluamU6IiwgSURJR05PUkUsICAgMDUsIDE1LCAxMjAsIDEwCkVESVRURVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBNX0NPTU1BTkQsIDA1LCAyNSwgMTIwLCAxNSwgV1NfVEFCU1RPUApDSEVDS0JPWCAgICAgICIiLCAgICAgICAgICAgICAgICAgICAgICBQTV9TWU1CT0wsICAwNSwgNDUsICAxMCwgMTAsIFdTX1RBQlNUT1AKTFRFWFQgICAgICAgICAiJk1pbmltZXIgdmVkIG9wcHN0YXJ0IiwgICBJRElHTk9SRSwgICAyMCwgNDUsIDEyMCwgMTAKREVGUFVTSEJVVFRPTiAiT0siLCAgICAgICAgICAgICAgIElET0ssICAgICAgMTM1LCAgNSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICJBdmJyeXQiLCAgICAgICAgICAgSURDQU5DRUwsICAxMzUsIDI1LCAgNjAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gICAgIiZCbGEgLiAuIC4iLCAgICAgICAgICBQTV9CUk9XU0UsIDEzNSwgNDUsICA2MCwgMTUsIFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAgICAiJkhqZWxwIiwgICAgICAgICAgICAgUE1fSEVMUCwgICAxMzUsIDY1LCAgNjAsIDE1LCBXU19UQUJTVE9QCn0KCi8qIFN0cmluZ3MgKi8KClNUUklOR1RBQkxFIERJU0NBUkRBQkxFIExBTkdVQUdFIExBTkdfTk9SV0VHSUFOLCBTVUJMQU5HX05PUldFR0lBTl9CT0tNQUwKewpJRFNfUFJPR1JBTV9NQU5BR0VSLAkJIlByb2dyYW1iZWhhbmRsaW5nIgpJRFNfRVJST1IsCQkJIkZFSUwiCklEU19XQVJOSU5HLAkJCSJBRFZBUlNFTCIKSURTX0lORk8sCQkJIkluZm9ybWFzam9uIgpJRFNfREVMRVRFLAkJCSJTbGV0dCIKSURTX0RFTEVURV9HUk9VUF9zLAkJIlNsZXR0ZSBncnVwcGVuICclcyc/IgpJRFNfREVMRVRFX1BST0dSQU1fcywJCSJTbGV0dGUgcHJvZ3JhbW1ldCAnJXMnPyIKSURTX05PVF9JTVBMRU1FTlRFRCwJCSJJa2tlIGltcGxlbWVudGVydCIKSURTX0ZJTEVfUkVBRF9FUlJPUl9zLAkJIkZlaWwgdmVkIGxlc2luZyBhdiAnJXMnLiIKSURTX0ZJTEVfV1JJVEVfRVJST1JfcywJCSJGZWlsIHZlZCBza3JpdmluZyB0aWwgJyVzJy4iCklEU19HUlBGSUxFX1JFQURfRVJST1JfcywJIlwKS3VubmUgaWtrZSDlcG5lIGdydXBwZWZpbGVuICclcycuXG5cClZpbCBkdSBwcvh2ZSBtZXI/IgpJRFNfT1VUX09GX01FTU9SWSwJCSJJa2tlIG5vayBtaW5uZS4iCklEU19XSU5IRUxQX0VSUk9SLAkJIkluZ2VuIGhqZWxwIGVyIGlra2UgdGlsZ2plbmdlbGlnLiIKSURTX1VOS05PV05fRkVBVFVSRV9zLAkJIlVramVudCBlZ2Vuc2thcCBpICclcyciCklEU19GSUxFX05PVF9PVkVSV1JJVFRFTl9zLAkiRmlsZW4gJyVzJyBmYW50ZXMgYWxsZXJlZGUsIG9nIGJsZSBpa2tlIG92ZXJza3JldmV0LiIKSURTX1NBVkVfR1JPVVBfQVNfcywJCSJMYWdyZSBncnVwcGUgc29tICclcycgZm9yIOUgdW5uZ+Ug5SBvdmVyc2tyaXZlIGZpbGVyLiIKSURTX05PX0hPVF9LRVksCQkJIkluZ2VuIgpJRFNfQUxMX0ZJTEVTLAkJCSJBbGxlIGZpbGVyICgqLiopIgpJRFNfUFJPR1JBTVMsCQkJIlByb2dyYW1tZXIiCklEU19MSUJSQVJJRVNfRExMLAkJIkJpYmxpb3Rla2VyICgqLmRsbCkiCklEU19TWU1CT0xfRklMRVMsCQkiSWtvbmZpbGVyIgpJRFNfU1lNQk9MU19JQ08sCQkiSWtvbmVyICgqLmljbykiCn0KClNUUklOR1RBQkxFIERJU0NBUkRBQkxFIExBTkdVQUdFIExBTkdfTk9SV0VHSUFOLCBTVUJMQU5HX05PUldFR0lBTl9CT0tNQUwKewpJRFNfTElDRU5TRV9DQVBUSU9OLCAgICAgICAgICAgICJMSVNFTlMiCklEU19MSUNFTlNFLAoiRGV0dGUgYmlibGlvdGVrZXQgZXIgZnJpIHByb2dyYW12YXJlOyBkdSBrYW4gcmVkaXN0cmlidWVyZSBkZXQgIFwKb2cvZWxsZXIgZW5kcmUgZGV0IHVuZGVyIHZpbGvlcmVuZSBpIKtHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIFwKTGljZW5zZbssIHV0Z2l0dCBhdiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlbnRlbiBcCnZlcnNqb24gMi4xIGF2IExpc2Vuc2VuLCBlbGxlciAoaHZpcyBkdSD4bnNrZXIgZGV0KSBlbiBueWVyZSB2ZXJzam9uLlxuXApEZXR0ZSBiaWJsaW90ZWtldCBkaXN0cmlidWVyZXMgaSBo5XAgb20gYXQgZGV0IGVyIG55dHRpZywgXAptZW4gVVRFTiBFTkhWRVIgR0FSQU5USTsgaWtrZSBlbmdhbmcgZW4gdXR0cnlrdGUgZ2FyYW50aWVuIGZvciBcCkhBTkRFTFNEWUtUSUdIRVQgZWxsZXIgRUdORVRIRVQgRk9SIEVUIFNQRVNJRUxUIEZPUk3FTC4gU2Ugq0dOVSBcCkxlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNluyBmb3IgZmxlcmUgZGV0YWxqZXIuXG5cCkR1IHNrYWwgaGEgbW90dGF0dCBldCBla3NlbXBsYXIgYXYgq0dOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgXApMaWNlbnNluyBzYW1tZW4gbWVkIGRldHRlIGJpYmxpb3Rla2V0OyBodmlzIGlra2UsIHNrcml2IHRpbDogdGhlIEZyZWUgU29mdHdhcmUgXApGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBIgoKSURTX1dBUlJBTlRZX0NBUFRJT04sICJJTkdFTiBHQVJBTlRJIgpJRFNfV0FSUkFOVFksCiJEZXR0ZSBiaWJsaW90ZWtldCBkaXN0cmlidWVyZXMgaSBkZXQgaOVwIGF0IGRldCBlciBueXR0aWcsIFwKbWVuIFVURU4gRU5IVkVSIEdBUkFOVEk7IGlra2UgZW5nYW5nIGVuIHV0dHJ5a3RlIGdhcmFudGllbiBmb3IgXApIQU5ERUxTRFlLVElHSEVUIGVsbGVyIEVHTkVUSEVUIEZPUiBFVCBTUEVTSUVMVCBGT1JNxUwuIFNlIKtHTlUgXApMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZbsgZm9yIGZsZXJlIGRldGFsamVyLiIKfQo=