LyoKICogQ29weXJpZ2h0IDIwMDQgSWx5YSBLb3JuaXlrbwogKiBDb3B5cmlnaHQgMjAxMCBJZ29yIFBhbGl5Y2h1awogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojaW5jbHVkZSAic2hyZXNkZWYuaCIKCkxBTkdVQUdFIExBTkdfVUtSQUlOSUFOLCBTVUJMQU5HX0RFRkFVTFQKCk1FTlVfMDAxIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KCU1FTlVJVEVNICImwuXr6OqzILLq7u3q6CIsCUZDSURNX1NIVklFV19CSUdJQ09OCglNRU5VSVRFTSAiJszg67Mgsuru7eroIiwJRkNJRE1fU0hWSUVXX1NNQUxMSUNPTgoJTUVOVUlURU0gIibR7+jx7uoiLAkJRkNJRE1fU0hWSUVXX0xJU1RWSUVXCglNRU5VSVRFTSAiJs/u5PDu4ej2syIsCQlGQ0lETV9TSFZJRVdfUkVQT1JUVklFVwpFTkQKCi8qCiBzaGVsbHZpZXcgYmFja2dyb3VuZCBtZW51CiovCk1FTlVfMDAyIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KCVBPUFVQICIiCglCRUdJTgoJICBQT1BVUCAiJsLo4+v/5CIKCSAgQkVHSU4KCSAgICBNRU5VSVRFTSAiJsLl6+jqsyCy6u7t6ugiLAlGQ0lETV9TSFZJRVdfQklHSUNPTgoJICAgIE1FTlVJVEVNICImzODrsyCy6u7t6ugiLAlGQ0lETV9TSFZJRVdfU01BTExJQ09OCgkgICAgTUVOVUlURU0gIibR7+jx7uoiLAkJRkNJRE1fU0hWSUVXX0xJU1RWSUVXCgkgICAgTUVOVUlURU0gIibP7uTw7uHo9rMiLAlGQ0lETV9TSFZJRVdfUkVQT1JUVklFVwoJICBFTkQKCSAgTUVOVUlURU0gU0VQQVJBVE9SCgkgIFBPUFVQICLC7+7w/+Tq8+Lg8uggJrLq7u3q6CIKCSAgQkVHSU4KCSAgICBNRU5VSVRFTSAix+AgJs3g5+Lu/iIsCTB4MzAJLyogY29sdW1uIDAgKi8KCSAgICBNRU5VSVRFTSAix+AgJtLo7+7sIiwJMHgzMgkvKiBjb2x1bW4gMiAqLwoJICAgIE1FTlVJVEVNICLH4CAm0O7n7LPw7uwiLAkweDMxCS8qIC4uLiAqLwoJICAgIE1FTlVJVEVNICLH4CAmxODy7v4iLAkweDMzCgkgICAgTUVOVUlURU0gU0VQQVJBVE9SCgkgICAgTUVOVUlURU0gIibA4vLu7ODy6Pft7iIsCUZDSURNX1NIVklFV19BVVRPQVJSQU5HRQoJICBFTkQKCSAgTUVOVUlURU0gIsLo8LPi7f/y6CCy6u7t6ugiLAlGQ0lETV9TSFZJRVdfU05BUFRPR1JJRAoJICBNRU5VSVRFTSBTRVBBUkFUT1IKCSAgTUVOVUlURU0gIs7t7uLo8ugiLAkJRkNJRE1fU0hWSUVXX1JFRlJFU0gKCSAgTUVOVUlURU0gU0VQQVJBVE9SCgkgIE1FTlVJVEVNICLC8fLg4ujy6CIsCQlGQ0lETV9TSFZJRVdfSU5TRVJUCgkgIE1FTlVJVEVNICLC8fLg4ujy6CDP7vHo6+Dt7f8iLAlGQ0lETV9TSFZJRVdfSU5TRVJUTElOSwoJICBNRU5VSVRFTSBTRVBBUkFUT1IKCSAgUE9QVVAgItHy4u7w6PLoIgoJICBCRUdJTgoJICAgIE1FTlVJVEVNICLN7uLgICbS5ergIiwJRkNJRE1fU0hWSUVXX05FV0ZPTERFUgoJICAgIE1FTlVJVEVNICLN7uLlICbP7vHo6+Dt7f8iLAlGQ0lETV9TSFZJRVdfTkVXTElOSwoJICAgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICBFTkQKCSAgTUVOVUlURU0gU0VQQVJBVE9SCgkgIE1FTlVJVEVNICLC6+Dx8uji7vHysyIsCUZDSURNX1NIVklFV19QUk9QRVJUSUVTCglFTkQKRU5ECgovKgogc2hlbGx2aWV3IGl0ZW0gbWVudQoqLwpNRU5VX1NIVl9GSUxFIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KCVBPUFVQICIiCglCRUdJTgoJICBNRU5VSVRFTSAiJsLo4fDg8ugiCQlGQ0lETV9TSFZJRVdfT1BFTgoJICBNRU5VSVRFTSAiJs/w7uKz5O3o6iIsCQlGQ0lETV9TSFZJRVdfRVhQTE9SRQoJICBNRU5VSVRFTSAiJsKz5Orw6PLoIiwJCUZDSURNX1NIVklFV19PUEVOCgkgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICBNRU5VSVRFTSAiwugm8LPn4PLoIiwJCUZDSURNX1NIVklFV19DVVQKCSAgTUVOVUlURU0gIibK7u+z/yIsCQlGQ0lETV9TSFZJRVdfQ09QWQoJICBNRU5VSVRFTSBTRVBBUkFUT1IKCSAgTUVOVUlURU0gIibR8uLu8Ojy6CDP7vHo6+Dt7f8iLAlGQ0lETV9TSFZJRVdfQ1JFQVRFTElOSwoJICBNRU5VSVRFTSAiwugm5ODr6PLoIiwJCUZDSURNX1NIVklFV19ERUxFVEUKCSAgTUVOVUlURU0gIs/l8OUm6ezl7fPi4PLoIiwJCUZDSURNX1NIVklFV19SRU5BTUUKCSAgTUVOVUlURU0gU0VQQVJBVE9SCgkgIE1FTlVJVEVNICImwuvg8fLo4u7x8rMiLAlGQ0lETV9TSFZJRVdfUFJPUEVSVElFUwoJRU5ECkVORAoKTUVOVV9DUEFORUwgTUVOVQpCRUdJTgogICAgUE9QVVAgIibU4OnrIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiwibo9bPkIiwgSURNX0NQQU5FTF9FWElUCiAgICBFTkQKCiAgICBQT1BVUCAiJsLo4+v/5CIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIibC5evo6rMgsuru7eroIiwgRkNJRE1fU0hWSUVXX0JJR0lDT04KICAgICAgICBNRU5VSVRFTSAiJszg67Mgsuru7eroIiwgRkNJRE1fU0hWSUVXX1NNQUxMSUNPTgogICAgICAgIE1FTlVJVEVNICIm0e/o8e7qIiwgRkNJRE1fU0hWSUVXX0xJU1RWSUVXCiAgICAgICAgTUVOVUlURU0gIibP7uTw7uHo9rMiLCBGQ0lETV9TSFZJRVdfUkVQT1JUVklFVwogICAgRU5ECgogICAgUE9QVVAgIibE7u/u7O7j4CIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIibP8O4g7+Dt5ev8IOrl8PPi4O3t/y4uLiIsIElETV9DUEFORUxfQUJPVVQKICAgIEVORApFTkQKClNIQlJTRk9SRk9MREVSX01TR0JPWCBESUFMT0cgTE9BRE9OQ0FMTCBNT1ZFQUJMRSBESVNDQVJEQUJMRSAxNSwgNDAsIDE4OCwgMTkyClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVSB8IERTX01PREFMRlJBTUUgfCBEU19TRVRGT05UIHwgRFNfM0RMT09LCkNBUFRJT04gIs7j6//kIOTuIPLl6ugiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKewogREVGUFVTSEJVVFRPTiAiT0siLCAxLCA4MCwgMTc2LCA1MCwgMTIsIEJTX0RFRlBVU0hCVVRUT04gfCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKIFBVU0hCVVRUT04gItHq4PHz4uDy6CIsIDIsIDEzNCwgMTc2LCA1MCwgMTIsIFdTX0dST1VQIHwgV1NfVEFCU1RPUAogTFRFWFQgIiIsIElERF9USVRMRSwgNCwgNCwgMTgwLCAxMgogTFRFWFQgIiIsIElERF9TVEFUVVMsIDQsIDI1LCAxODAsIDEyCiBDT05UUk9MICIiLCBJRERfVFJFRVZJRVcsICJTeXNUcmVlVmlldzMyIiwKIAlUVlNfSEFTQlVUVE9OUyB8IFRWU19IQVNMSU5FUyB8IFRWU19MSU5FU0FUUk9PVCB8CglXU19CT1JERVIgfCBXU19UQUJTVE9QLAoJNCwgNDAsIDE4MCwgMTIwCn0KClNITkVXQlJTRk9SRk9MREVSX01TR0JPWCBESUFMT0cgTE9BRE9OQ0FMTCBNT1ZFQUJMRSBESVNDQVJEQUJMRSAxNSwgNDAsIDIxOCwgMTk2ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVSB8IFdTX1NJWkVCT1ggfCBEU19NT0RBTEZSQU1FIHwgRFNfU0VURk9OVCB8IERTXzNETE9PSwpDQVBUSU9OICLO4+v/5CDk7iDy5eroIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCnsKIExURVhUICIiLCBJRERfVElUTEUsIDEwLCA4LCAxOTgsIDI0CiBMVEVYVCAiIiwgSUREX1NUQVRVUywgMTAsIDI1LCAxOTgsIDEyCiBMVEVYVCAi0uXq4DoiLCBJRERfRk9MREVSLCAxMCwgMTU2LCA0MCwgMTIKIENPTlRST0wgIiIsIElERF9UUkVFVklFVywgIlN5c1RyZWVWaWV3MzIiLAoJVFZTX0hBU0JVVFRPTlMgfCBUVlNfSEFTTElORVMgfCBUVlNfTElORVNBVFJPT1QgfAoJV1NfQk9SREVSIHwgV1NfVEFCU1RPUCwKCTEyLCAzOCwgMTk0LCAxMDUKIEVESVRURVhUIElERF9GT0xERVJURVhULCA0NiwgMTUwLCAxNjAsIDE0LCBXU19CT1JERVIgfCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKIFBVU0hCVVRUT04gIibH8O7h6PLoIO3u4vMg8uXq8yIsIElERF9NQUtFTkVXRk9MREVSLCAxMiwgMTc0LCA3MCwgMTQsIFdTX0dST1VQIHwgV1NfVEFCU1RPUAogREVGUFVTSEJVVFRPTiAiT0siLCBJRE9LLCAxMDIsIDE3NCwgNTAsIDE0LCBCU19ERUZQVVNIQlVUVE9OIHwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiBQVVNIQlVUVE9OICLR6uDx8+Lg8ugiLCBJRENBTkNFTCwgMTU2LCAxNzQsIDUwLCAxNCwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCn0KClNIRUxMX1lFU1RPQUxMX01TR0JPWCBESUFMT0cgMjAwLCAxMDAsIDI4MCwgOTAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfVklTSUJMRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIs/u4rPk7uzr5e3t/yIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgp7CiAgICBERUZQVVNIQlVUVE9OICIm0uDqIiwgSURZRVMsIDM0LCA2OSwgNTMsIDE0LCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKICAgIFBVU0hCVVRUT04gItLg6iDk6/8gJuLxs/UiLCBJRERfWUVTVE9BTEwsIDkyLCA2OSwgNjUsIDE0LCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKICAgIFBVU0hCVVRUT04gIibNsyIsIElETk8sIDE2MiwgNjksIDUzLCAxNCwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiAgICBQVVNIQlVUVE9OICIm0erg8fPi4PLoIiwgSURDQU5DRUwsIDIyMCwgNjksIDUzLCAxNCwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiAgICBJQ09OICIiLCBJRERfSUNPTiwgMTAsIDEwLCAxNiwgMTYKICAgIExURVhUICIiLCBJRERfTUVTU0FHRSwgNDAsIDEwLCAyMzgsIDUyLCAwCn0KClNIRUxMX0FCT1VUX01TR0JPWCBESUFMT0cgTE9BRE9OQ0FMTCBNT1ZFQUJMRSBESVNDQVJEQUJMRSAxNSwgNDAsIDIyMCwgMTUyClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX1ZJU0lCTEUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICLP8O4gJXMiCkZPTlQgMTAsICJNUyBTaGVsbCBEbGciCnsKIERFRlBVU0hCVVRUT04gIk9LIiwgSURPSywgMTUzLCAxMzMsIDYwLCAxMiwgV1NfVEFCU1RPUAogUFVTSEJVVFRPTiAiJsuz9uXt57P/IFdpbmUuLi4iLCBJRENfQUJPVVRfTElDRU5TRSwgMTUzLCAxMTMsIDYwLCAxMiwgV1NfVEFCU1RPUAogTElTVEJPWCBJRENfQUJPVVRfTElTVEJPWCwgOCwgNjUsIDEzNywgODIsIExCU19OT1RJRlkgfCBXU19WU0NST0xMIHwgV1NfQk9SREVSCiBJQ09OICIiLCBzdGMxLCAxMCwgMTAsIDMwLCAzMAogTFRFWFQgIiIsIElEQ19BQk9VVF9TVEFUSUNfVEVYVDEsIDQwLCAxMCwgMTcwLCAxMAogTFRFWFQgIiIsIElEQ19BQk9VVF9TVEFUSUNfVEVYVDIsIDQwLCAyMiwgMTcwLCAxMAogTFRFWFQgIs/w4Pb+uiDt4CAlcyIsIElEQ19BQk9VVF9TVEFUSUNfVEVYVDMsIDQyLCAzNCwgMTcwLCAxMAogTFRFWFQgItDu5/Du4e3o6uggV2luZToiLCBJRENfQUJPVVRfV0lORV9URVhULCA4LCA1NSwgMTM3LCAxMAp9CgpTSEVMTF9SVU5fRExHIERJQUxPRyBMT0FET05DQUxMIE1PVkVBQkxFIERJU0NBUkRBQkxFIDAsIDAsIDIyNywgOTUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfVklTSUJMRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIiIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgp7CiBJQ09OICIiLCAxMjI5NywgNywgMTEsIDE4LCAyMCwgV1NfVklTSUJMRQogTFRFWFQgIsLi5eSz8vwgs+wn/yDv8O7j8ODs6Cwg8uXq6Cwg5O7q8+zl7fLzIPfoIPDl8fPw8SCy7fLl8O3l8vMsILMgV2luZSDis+Tq8Oi6IL/1LiIsIDEyMjg5LCAzNiwgMTEsIDE4MiwgMTgKIExURVhUICImwrPk6vDo8ug6IiwgMTIzMDUsIDMsIDM5LCAzMCwgMTAKIENPTlRST0wgIiIsIDEyMjk4LCAiQ09NQk9CT1giLCBXU19UQUJTVE9QIHwgV1NfR1JPVVAgfCBXU19WU0NST0xMIHwgV1NfVklTSUJMRSB8IENCU19ESVNBQkxFTk9TQ1JPTEwgfCBDQlNfQVVUT0hTQ1JPTEwgfCBDQlNfRFJPUERPV04sIDM2LCAzNywgMTgzLCAxMDAKIERFRlBVU0hCVVRUT04gIk9LIiwgSURPSywgNjIsIDYzLCA1MCwgMTQsIFdTX1RBQlNUT1AKIFBVU0hCVVRUT04gItHq4PHz4uDy6CIsIElEQ0FOQ0VMLCAxMTYsIDYzLCA1MCwgMTQsIFdTX1RBQlNUT1AKIFBVU0hCVVRUT04gIibO4+v/5C4uLiIsIDEyMjg4LCAxNzAsIDYzLCA1MCwgMTQsIFdTX1RBQlNUT1AKfQoKU1RSSU5HVEFCTEUKewovKgljb2x1bW5zIGluIHRoZSBzaGVsbHZpZXcJKi8KCUlEU19TSFZfQ09MVU1OMQkJItTg6esiCglJRFNfU0hWX0NPTFVNTjIJCSLQ7ufss/AiCglJRFNfU0hWX0NPTFVNTjMJCSLS6O8iCglJRFNfU0hWX0NPTFVNTjQJCSLH7LPt5e3uIgoJSURTX1NIVl9DT0xVTU41CQkiwPLw6OHz8ugiCglJRFNfU0hWX0NPTFVNTjYJCSLQ7ufss/AiCglJRFNfU0hWX0NPTFVNTjcJCSLCs+v87ejpINDu5+yz8CIKCUlEU19TSFZfQ09MVU1OOAkJIrLsJ/8iCglJRFNfU0hWX0NPTFVNTjkJCSLK7uzl7fLg8LMiCglJRFNfU0hWX0NPTFVNTjEwCSLC6+Dx7ejqIgoJSURTX1NIVl9DT0xVTU4xMQkiw/Dz7+AiCglJRFNfU0hWX0NPTFVNTl9ERUxGUk9NCSLO8Ojjs+3g6/zt5SDw7ufss/nl7e3/IgoJSURTX1NIVl9DT0xVTU5fREVMREFURQkixODy4CDi6OTg6+Xt7f8iCglJRFNfU0hWX0NPTF9ET0NTCSLE7urz7OXt8ugiCglJRFNfU0hWX0NPTF9TVEFUVVMJItHy4O0iCglJRFNfU0hWX0NPTF9MT0NBVElPTgki0O7n7LP55e3t/yIKCUlEU19TSFZfQ09MX01PREVMCSLM7uTl6/wiCgoJLyogc3BlY2lhbCBmb2xkZXJzICovCglJRFNfREVTS1RPUAkJItDu4e736Okg8fKz6yIKCUlEU19NWUNPTVBVVEVSCQkizLPpIMru7O8n/vLl8CIKCUlEU19SRUNZQ0xFQklOX0ZPTERFUl9OQU1FICAgICAgIsru+OjqIgoJSURTX0NPTlRST0xQQU5FTAkiz+Dt5ev8IOrl8PPi4O3t/yIKCiAgICAgICAgLyogY29udGV4dCBtZW51cyAqLwoJSURTX1ZJRVdfTEFSR0UJCSImwuXr6OqzILLq7u3q6CIKCUlEU19WSUVXX1NNQUxMCQkiJszg67Mgsuru7eroIgoJSURTX1ZJRVdfTElTVAkJIibR7+jx7uoiCglJRFNfVklFV19ERVRBSUxTCSImz+7k8O7h6PazIgoJSURTX1NFTEVDVAkJIsLoJuHw4PLoIgoJSURTX09QRU4JCSLCsybk6vDo8ugiCgoJSURTX0NSRUFURUZPTERFUl9ERU5JRUQgIs3lIOLk4Ovu8f8g8fLi7vDo8ugg7e7i8yDy5erzOiDCs+Ts7uLgIPMg5O7x8vPvsy4iCglJRFNfQ1JFQVRFRk9MREVSX0NBUFRJT04gIs/u7Ojr6uAg7/DoIPHy4u7w5e3tsyDt7uLuvyDy5eroIgoJSURTX0RFTEVURUlURU1fQ0FQVElPTiAiz7Pk8uLl8OTm5e3t/yDi6Ovz9+Xt7f8g9ODp6/MiCglJRFNfREVMRVRFRk9MREVSX0NBUFRJT04gIs+z5PLi5fDk5uXt7f8g4ujr8/fl7e3/IPLl6ugiCglJRFNfREVMRVRFSVRFTV9URVhUICLC6CDi7+Xi7eXtsywg+e4g9e735fLlIOLo6/P36PLoICclMSc/IgoJSURTX0RFTEVURU1VTFRJUExFX1RFWFQgIsLoIOLv5eLt5e2zLCD57iD17vfl8uUg4ujr8/fo8ugg9rMgJTEg5evl7OXt8ugos+IpPyIKCUlEU19ERUxFVEVTRUxFQ1RFRF9URVhUICLC6CDi7+Xi7eXtsywg+e4g9e735fLlIOLo6/P36PLoIO7h8ODtsyDl6+Xs5e3y6D8iCglJRFNfVFJBU0hJVEVNX1RFWFQgIsLoIOLv5eLt5e2zLCD57iD17vfl8uUg4rPks/Hr4PLoICclMScg4iDK7vjo6j8iCglJRFNfVFJBU0hGT0xERVJfVEVYVCAiwugg4u/l4u3l7bMsIPnuIPXu9+Xy5SDis+Sz8evg8uggJyUxJyDy4CDi5fH8IL+/IOLss/HyIOIgyu746Oo/IgoJSURTX1RSQVNITVVMVElQTEVfVEVYVCAiwugg4u/l4u3l7bMsIPnuIPXu9+Xy5SDis+Sz8evg8ugg9rMgJTEg5evl7OXt8ugos+IpIOIgyu746Oo/IgoJSURTX0NBTlRUUkFTSF9URVhUICLF6+Xs5e3yICclMScg7eUg7O7m5SDh8/LoIOKz5LPx6+Dt6Okg4iDK7vjo6i4gwujk4Ovo8ugg6e7j7iDn4Oyz8fL8IPb87uPuPyIKCUlEU19PVkVSV1JJVEVGSUxFX1RFWFQgItb/IPLl6uAg4ublIOyz8fLo8vwg9ODp6yDnILPs5e3l7CAnJTEnLlxuXG7V7vfl8uUg5+Dss+3o8ugg6e7j7j8iCglJRFNfT1ZFUldSSVRFRklMRV9DQVBUSU9OICLPs+Ty4uXw5Obl7e3/IM/l8OXn4O/o8fMg1ODp6/MiCglJRFNfT1ZFUldSSVRFRk9MREVSX1RFWFQgItb/IPLl6uAg4ublIOyz8fLo8vwg8uXq8yDnILPs5e3l7CAnJTEnLlxuXG4iXAoJICAgICLf6vnuIPTg6evoIOIg8uX2syDv8Ojn7eD35e3t/yDs4P7y/CDysyDmILPs5e3gIPnuIPTg6evoIOJcbiJcCgkgICAgIu7h8ODts+kg8uX2sywg4u7t6CDh8+Tz8vwg5+Dss+3l7bMuIMLoIOLx5SD55SDh4ObguvLlIO/l8OXss/Hy6PLoIPfoXG4iXAoJICAgICLx6u7vs/7i4PLoIPLl6vM/IgoKICAgICAgICAvKiBtZXNzYWdlIGJveCBzdHJpbmdzICovCiAgICAgICAgSURTX1JFU1RBUlRfVElUTEUgICAgICAgIs/l8OXn4OLg7fLg5ujy6CIKICAgICAgICBJRFNfUkVTVEFSVF9QUk9NUFQgICAgICAi0ejs8+v+4uDy6CDv5fDl5+Di4O3y4Obl7e3/IFdpbmRvd3M/IgogICAgICAgIElEU19TSFVURE9XTl9USVRMRSAgICAgICLC6Ozq7fPy6CIKICAgICAgICBJRFNfU0hVVERPV05fUFJPTVBUICAgICAix+Di5fD46PLoIPHl8bP+IPDu4e7y6CBXaW5lPyIKCiAgICAgICAgLyogUnVuIEZpbGUgZGlhbG9nICovCiAgICAgICAgSURTX1JVTkRMR19FUlJPUiAgICAgICAgICAgIs3l7O7m6+ji7iDis+Tu4fDg5+jy6CDks+Dr7uMgx+Dv8/HqINTg6evzICji7fPy8LP47f8g7+7s6Ovq4CkiCiAgICAgICAgSURTX1JVTkRMR19CUk9XU0VfRVJST1IgICAgIs3l7O7m6+ji7iDis+Tu4fDg5+jy6CDks+Dr7uMgzuPr/+QgKOLt8/Lws/jt/yDv7uzo6+rgKSIKICAgICAgICBJRFNfUlVORExHX0JST1dTRV9DQVBUSU9OICAizuPr/+QiCiAgICAgICAgSURTX1JVTkRMR19CUk9XU0VfRklMVEVSICAgIsLo6u7t8+Lg7bMg1ODp6+hcMCouZXhlXDDC8bMg1ODp6+hcMCouKlwwXDAiCgogICAgICAgIC8qIHNoZWxsIGZvbGRlciBwYXRoIGRlZmF1bHQgdmFsdWVzICovCglJRFNfUFJPR1JBTVMgICAgICAgICAgICAgICAgIsPu6+7i7eUg7OXt/lxcz/Du4/Dg7OgiCglJRFNfUEVSU09OQUwgICAgICAgICAgICAgICAgIszuvyDk7urz7OXt8ugiCglJRFNfRkFWT1JJVEVTICAgICAgICAgICAgICAgIs7h8ODt5SIKCUlEU19TVEFSVFVQICAgICAgICAgICAgICAgICAiw+7r7uLt5SDs5e3+XFzP8O7j8ODs6FxcwOLy7ufg7/Px6iIKCUlEU19SRUNFTlQgICAgICAgICAgICAgICAgICAizeXk4OLtuiIKCUlEU19TRU5EVE8gICAgICAgICAgICAgICAgICAiwrPks/Hr4PLoIgoJSURTX1NUQVJUTUVOVSAgICAgICAgICAgICAgICLD7uvu4u3lIOzl7f4iCglJRFNfTVlNVVNJQyAgICAgICAgICAgICAgICAgIszu/yDM8+fo6uAiCglJRFNfTVlWSURFTyAgICAgICAgICAgICAgICAgIszuvyDUs+v87OgiCglJRFNfREVTS1RPUERJUkVDVE9SWSAgICAgICAgItDu4e736Okg8fKz6yIKCUlEU19ORVRIT09EICAgICAgICAgICAgICAgICAizOXw5ebt5SDu8u735e3t/yIKCUlEU19URU1QTEFURVMgICAgICAgICAgICAgICAi2ODh6+7t6CIKCUlEU19BUFBEQVRBICAgICAgICAgICAgICAgICAiQXBwbGljYXRpb24gRGF0YSIKCUlEU19QUklOVEhPT0QgICAgICAgICAgICAgICAiz/Do7fLl8OgiCglJRFNfTE9DQUxfQVBQREFUQSAgICAgICAgICAgIkxvY2FsIFNldHRpbmdzXFxBcHBsaWNhdGlvbiBEYXRhIgoJSURTX0lOVEVSTkVUX0NBQ0hFICAgICAgICAgICJMb2NhbCBTZXR0aW5nc1xcVGVtcG9yYXJ5IEludGVybmV0IEZpbGVzIgoJSURTX0NPT0tJRVMgICAgICAgICAgICAgICAgICJDb29raWVzIgoJSURTX0hJU1RPUlkgICAgICAgICAgICAgICAgICJMb2NhbCBTZXR0aW5nc1xcSGlzdG9yeSIKCUlEU19QUk9HUkFNX0ZJTEVTICAgICAgICAgICAiUHJvZ3JhbSBGaWxlcyIKCUlEU19NWVBJQ1RVUkVTICAgICAgICAgICAgICAizO6/IMzg6/7t6ugiCglJRFNfUFJPR1JBTV9GSUxFU19DT01NT04gICAgIlByb2dyYW0gRmlsZXNcXENvbW1vbiBGaWxlcyIKCUlEU19DT01NT05fRE9DVU1FTlRTICAgICAgICAixO7q8+zl7fLoIgoJSURTX0FETUlOVE9PTFMgICAgICAgICAgICAgICJTdGFydCBNZW51XFxQcm9ncmFtc1xcQWRtaW5pc3RyYXRpdmUgVG9vbHMiCglJRFNfQ09NTU9OX01VU0lDICAgICAgICAgICAgIszz5+jq4CIKCUlEU19DT01NT05fUElDVFVSRVMgICAgICAgICAizODr/u3q6CIKCUlEU19DT01NT05fVklERU8gICAgICAgICAgICAi1LPr/OzoIgoJSURTX0NEQlVSTl9BUkVBICAgICAgICAgICAgICJMb2NhbCBTZXR0aW5nc1xcQXBwbGljYXRpb24gRGF0YVxcTWljcm9zb2Z0XFxDRCBCdXJuaW5nIgoKCUlEU19ORVdGT0xERVIJCSLN7uLgINLl6uAiCgoJSURTX0NQQU5FTF9USVRMRSAgICAgICAgICAgICLP4O3l6/wg6uXw8+Lg7e3/IFdpbmUiCglJRFNfQ1BBTkVMX05BTUUgICAgICAgICAgICAgIrLsJ/8iCglJRFNfQ1BBTkVMX0RFU0NSSVBUSU9OICAgICAgIs7v6PEiCgogICAgICAgIElEU19TSExFWEVDX05PQVNTT0MgICAgICAgICAizeUg8eru7fSz4/Pw7uLg7e4g7/Du4/Dg7OggV2luZG93cyDk6/8g4rPk6vDo8vL/IPTg6euz4iD2/O7j7iDy6O/zLiIKfQoKU1RSSU5HVEFCTEUKewpJRFNfTElDRU5TRV9DQVBUSU9OLCAgICAgICAgICAgICLLs/bl7eez/yBXaW5lIgpJRFNfTElDRU5TRSwKIldpbmUguiDis+v87ejsIM/HOyDi6CDs7ubl8uUg7+746PD+4uDy6CDp7uPuIPLgL+Dh7iBcCufss+3+4uDy6CDn47Pk7e4g8+zu4iBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIFwKTGljZW5zZSwg/+rgIO7v8+Hrs+ru4uDt4CBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IOLl8PGzvyBcCjIuMSDLs/bl7eezvywg9+ggKO3gIOLg+CDw7ufx8+QpIO3u4rP47r8g4uXw8bO/LlxuXG5cCldpbmUg8O7n7+7i8f7k5vO68vzx/yDnIO3g5LO6/iwg+e4g4fPk5SDq7vDo8e3o7CwgXArg6+UgwcXHIMHTxNwt38rI1SDDwNDAzdKyyTsg7eDis/L8IOHl5yDt5e/w/+zo9SDj4PDg7fKz6SD57uTuXArP0M7EwMbTIPfoIM/QyMTA0s3O0dKyIMTL3yDPxcLNyNUg1rLLxckuICDE6OKz8vzx/yBHTlUgXApMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSDk6/8g5OXy4Ov87e6/ILPt9O7w7OD2s78uXG5cblwKwugg7+7i6O3tsyDh8+voIO7y8Ojs4PLoIOru77P+IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgXApMaWNlbnNlIPDg5+7sIOcgV2luZTsg/+r57iDtsywg7eDv6Piz8vwg5O4gRnJlZSBTb2Z0d2FyZSBcCkZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuIgp9Cg==