ZG5sIApkbmwgICRJZCQKZG5sIApkbmwgIENvcHlyaWdodCCpIDIwMDMgS2VpdGggUGFja2FyZApkbmwgCmRubCAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgZGlzdHJpYnV0ZSwgYW5kIHNlbGwgdGhpcyBzb2Z0d2FyZSBhbmQgaXRzCmRubCAgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgaXMgaGVyZWJ5IGdyYW50ZWQgd2l0aG91dCBmZWUsIHByb3ZpZGVkIHRoYXQKZG5sICB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcyBhbmQgdGhhdCBib3RoIHRoYXQKZG5sICBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBzdXBwb3J0aW5nCmRubCAgZG9jdW1lbnRhdGlvbiwgYW5kIHRoYXQgdGhlIG5hbWUgb2YgS2VpdGggUGFja2FyZCBub3QgYmUgdXNlZCBpbgpkbmwgIGFkdmVydGlzaW5nIG9yIHB1YmxpY2l0eSBwZXJ0YWluaW5nIHRvIGRpc3RyaWJ1dGlvbiBvZiB0aGUgc29mdHdhcmUgd2l0aG91dApkbmwgIHNwZWNpZmljLCB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uICBLZWl0aCBQYWNrYXJkIG1ha2VzIG5vCmRubCAgcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZS4gIEl0CmRubCAgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4KZG5sIApkbmwgIEtFSVRIIFBBQ0tBUkQgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEggUkVHQVJEIFRPIFRISVMgU09GVFdBUkUsCmRubCAgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLCBJTiBOTwpkbmwgIEVWRU5UIFNIQUxMIEtFSVRIIFBBQ0tBUkQgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgSU5ESVJFQ1QgT1IKZG5sICBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwKZG5sICBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSCmRubCAgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUgpkbmwgIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCmRubApkbmwgUHJvY2VzcyB0aGlzIGZpbGUgd2l0aCBhdXRvY29uZiB0byBjcmVhdGUgY29uZmlndXJlLgoKQUNfSU5JVChmb250cy5kdGQpCgpkbmwgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZG5sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25pbmcgICAgICAgICAgICAgIApkbmwgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCmRubCBUaGlzIGlzIHRoZSBwYWNrYWdlIHZlcnNpb24gbnVtYmVyLCBub3QgdGhlIHNoYXJlZCBsaWJyYXJ5CmRubCB2ZXJzaW9uLiAgVGhpcyBzYW1lIHZlcnNpb24gbnVtYmVyIG11c3QgYXBwZWFyIGluIGZvbnRjb25maWcvZm9udGNvbmZpZy5oCmRubCBZZXMsIGl0IGlzIGEgcGFpbiB0byBzeW5jaHJvbml6ZSB2ZXJzaW9uIG51bWJlcnMuICBVbmZvcnR1bmF0ZWx5LCBpdCdzCmRubCBub3QgcG9zc2libGUgdG8gZXh0cmFjdCB0aGUgdmVyc2lvbiBudW1iZXIgaGVyZSBmcm9tIGZvbnRjb25maWcuaApBTV9JTklUX0FVVE9NQUtFKGZvbnRjb25maWcsIDIuMi45MikKCmRubCBsaWJ0b29sIHZlcnNpb25pbmcKCkxUX0NVUlJFTlQ9MQpMVF9SRVZJU0lPTj00CkFDX1NVQlNUKExUX0NVUlJFTlQpCkFDX1NVQlNUKExUX1JFVklTSU9OKQpMVF9BR0U9MAoKTFRfVkVSU0lPTl9JTkZPPSIkTFRfQ1VSUkVOVDokTFRfUkVWSVNJT046JExUX0FHRSIKQUNfU1VCU1QoTFRfVkVSU0lPTl9JTkZPKQoKTFRfQ1VSUkVOVF9NSU5VU19BR0U9YGV4cHIgJExUX0NVUlJFTlQgLSAkTFRfQUdFYApBQ19TVUJTVChMVF9DVVJSRU5UX01JTlVTX0FHRSkKCmRubCA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKQU1fQ09ORklHX0hFQURFUihjb25maWcuaCkKCkFDX1BST0dfQ0MKQUNfUFJPR19JTlNUQUxMCkFDX1BST0dfTE5fUwpBQ19MSUJUT09MX1dJTjMyX0RMTApBTV9QUk9HX0xJQlRPT0wKQUNfUFJPR19NQUtFX1NFVAoKZG5sID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpjYXNlICIkaG9zdCIgaW4KICAqLSotbWluZ3cqKQogICAgb3Nfd2luMzI9eWVzCiAgICA7OwogICopCiAgICBvc193aW4zMj1ubwplc2FjCkFNX0NPTkRJVElPTkFMKE9TX1dJTjMyLCB0ZXN0ICIkb3Nfd2luMzIiID0gInllcyIpCgppZiB0ZXN0ICIkb3Nfd2luMzIiID0gInllcyI7IHRoZW4KICBBQ19DSEVDS19QUk9HKG1zX2xpYnJhcmlhbiwgbGliLmV4ZSwgeWVzLCBubykKZmkKQU1fQ09ORElUSU9OQUwoTVNfTElCX0FWQUlMQUJMRSwgdGVzdCB4JG1zX2xpYnJhcmlhbiA9IHh5ZXMpCgpkbmwgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiMgQ2hlY2tzIGZvciBoZWFkZXIgZmlsZXMuCkFDX0hFQURFUl9ESVJFTlQKQUNfSEVBREVSX1NUREMKQUNfQ0hFQ0tfSEVBREVSUyhbZmNudGwuaCBzdGRsaWIuaCBzdHJpbmcuaCB1bmlzdGQuaF0pCgojIENoZWNrcyBmb3IgdHlwZWRlZnMsIHN0cnVjdHVyZXMsIGFuZCBjb21waWxlciBjaGFyYWN0ZXJpc3RpY3MuCkFDX0NfQ09OU1QKQUNfVFlQRV9QSURfVAoKIyBDaGVja3MgZm9yIGxpYnJhcnkgZnVuY3Rpb25zLgpBQ19GVU5DX1ZQUklOVEYKQUNfQ0hFQ0tfRlVOQ1MoW2dldGV1aWQgZ2V0dWlkIGxpbmsgbWVtbW92ZSBtZW1zZXQgbWtzdGVtcCBzdHJjaHIgc3RycmNociBzdHJ0b2wgZ2V0b3B0IGdldG9wdF9sb25nXSkKCiMKIyBDaGVja3MgZm9yIEZyZWVUeXBlCiMKCkFDX0FSR19XSVRIKGZyZWV0eXBlLWNvbmZpZywgWyAgLS13aXRoLWZyZWV0eXBlLWNvbmZpZz1QUk9HICAgVXNlIEZyZWVUeXBlIGNvbmZpZ3VyYXRpb24gcHJvZ3JhbSBQUk9HXSwgZnJlZXR5cGVfY29uZmlnPSR3aXRodmFsLCBmcmVldHlwZV9jb25maWc9eWVzKQoKaWYgdGVzdCAiJGZyZWV0eXBlX2NvbmZpZyIgPSAieWVzIjsgdGhlbiAKCUFDX1BBVEhfUFJPRyhmdF9jb25maWcsZnJlZXR5cGUtY29uZmlnLG5vKQoJaWYgdGVzdCAiJGZ0X2NvbmZpZyIgPSAibm8iOyB0aGVuCgkJQUNfTVNHX0VSUk9SKFtZb3UgbXVzdCBoYXZlIGZyZWV0eXBlIGluc3RhbGxlZDsgc2VlIGh0dHA6Ly93d3cuZnJlZXR5cGUub3JnL10pCglmaQplbHNlCglmdF9jb25maWc9IiRmcmVldHlwZV9jb25maWciCmZpCgpGUkVFVFlQRV9DRkxBR1M9ImAkZnRfY29uZmlnIC0tY2ZsYWdzYCIKRlJFRVRZUEVfTElCUz0iYCRmdF9jb25maWcgLS1saWJzYCIKCkFDX1NVQlNUKEZSRUVUWVBFX0xJQlMpCkFDX1NVQlNUKEZSRUVUWVBFX0NGTEFHUykKCiMKIyBDaGVjayB0byBzZWUgd2hldGhlciB3ZSBoYXZlOgojICBGVF9HZXRfTmV4dF9DaGFyCiMgIEZUX0dldF9CREZfUHJvcGVydHkKIyAgRlRfR2V0X1BTX0ZvbnRfSW5mbwojICBGVF9IYXNfUFNfR2x5cGhfTmFtZXMKIwoKZm9udGNvbmZpZ19zYXZlX2xpYnM9IiRMSUJTIgpmb250Y29uZmlnX3NhdmVfY2ZsYWdzPSIkQ0ZMQUdTIgpMSUJTPSIkTElCUyAkRlJFRVRZUEVfTElCUyIKQ0ZMQUdTPSIkQ0ZMQUdTICRGUkVFVFlQRV9DRkxBR1MiCkFDX0NIRUNLX0ZVTkNTKEZUX0dldF9OZXh0X0NoYXIgRlRfR2V0X0JERl9Qcm9wZXJ0eSBGVF9HZXRfUFNfRm9udF9JbmZvIEZUX0hhc19QU19HbHlwaF9OYW1lcykKQUNfQ0hFQ0tfTUVNQkVSKEZUX0JpdG1hcF9TaXplLnlfcHBlbSwKCQlIQVZFX0ZUX0JJVE1BUF9TSVpFX1lfUFBFTT0xLAoJCUhBVkVfRlRfQklUTUFQX1NJWkVfWV9QUEVNPTAsClsjaW5jbHVkZSA8ZnQyYnVpbGQuaD4KI2luY2x1ZGUgRlRfRlJFRVRZUEVfSF0pCkFDX0RFRklORV9VTlFVT1RFRChIQVZFX0ZUX0JJVE1BUF9TSVpFX1lfUFBFTSwkSEFWRV9GVF9CSVRNQVBfU0laRV9ZX1BQRU0sCgkJICAgW0ZUX0JpdG1hcF9TaXplIHN0cnVjdHVyZSBpbmNsdWRlcyB5X3BwZW0gZmllbGRdKQoKIwojIENoZWNrIGV4cGF0IGNvbmZpZ3VyYXRpb24KIwoKQUNfQVJHX1dJVEgoZXhwYXQsICAgICAgICAgICAgIFsgIC0td2l0aC1leHBhdD1ESVIgICAgICAgICAgICAgIFVzZSBFeHBhdCBpbiBESVJdLCBleHBhdD0kd2l0aHZhbCwgZXhwYXQ9eWVzKQpBQ19BUkdfV0lUSChleHBhdC1pbmNsdWRlcywgICAgWyAgLS13aXRoLWV4cGF0LWluY2x1ZGVzPURJUiAgICAgVXNlIEV4cGF0IGluY2x1ZGVzIGluIERJUl0sIGV4cGF0X2luY2x1ZGVzPSR3aXRodmFsLCBleHBhdF9pbmNsdWRlcz15ZXMpCkFDX0FSR19XSVRIKGV4cGF0LWxpYiwgICAgICAgICBbICAtLXdpdGgtZXhwYXQtbGliPURJUiAgICAgICAgICBVc2UgRXhwYXQgbGlicmFyeSBpbiBESVJdLCBleHBhdF9saWI9JHdpdGh2YWwsIGV4cGF0X2xpYj15ZXMpCgpjYXNlICIkZXhwYXQiIGluCm5vKQoJOzsKKikKCWNhc2UgIiRleHBhdF9pbmNsdWRlcyIgaW4KCXllc3xubykKCQlFWFBBVF9DRkxBR1M9IiIKCQk7OwoJKikKCQlFWFBBVF9DRkxBR1M9Ii1JJGV4cGF0X2luY2x1ZGVzIgoJCTs7Cgllc2FjCgljYXNlICIkZXhwYXRfbGliIiBpbgoJeWVzKQoJCWNhc2UgIiRleHBhdCIgaW4KCQl5ZXMpCgkJCUVYUEFUX0xJQlM9Ii1sZXhwYXQiCgkJCTs7CgkJKikKCQkJRVhQQVRfTElCUz0iLUwkZXhwYXQvbGliIC1sZXhwYXQiCgkJCTs7CgkJZXNhYwoJCTs7CglubykKCQk7OwoJKikKCQlFWFBBVF9MSUJTPSItTCRleHBhdF9saWIgLWxleHBhdCIKCQk7OwoJZXNhYwoKCWV4cGF0c2F2ZWRfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKCUNQUEZMQUdTPSIkQ1BQRkxBR1MgJEVYUEFUX0NGTEFHUyIKCWV4cGF0c2F2ZWRfTElCUz0iJExJQlMiCglMSUJTPSIkTElCUyAkRVhQQVRfTElCUyIKCglBQ19DSEVDS19IRUFERVIoZXhwYXQuaCkKCWNhc2UgIiRhY19jdl9oZWFkZXJfZXhwYXRfaCIgaW4KCW5vKQoJCUFDX0NIRUNLX0hFQURFUih4bWxwYXJzZS5oKQoJCWNhc2UgIiRhY19jdl9oZWFkZXJfeG1scGFyc2VfaCIgaW4KCQlubykKCQkJaGF2ZV9leHBhdF9oZWFkZXI9bm87CgkJCTs7CgkJeWVzKQoJCQlIQVZFX1hNTFBBUlNFX0g9MQoJCQlBQ19TVUJTVChIQVZFX1hNTFBBUlNFX0gpCgkJCUFDX0RFRklORV9VTlFVT1RFRChIQVZFX1hNTFBBUlNFX0gsJEhBVkVfWE1MUEFSU0VfSCwKCQkJW1VzZSB4bWxwYXJzZS5oIGluc3RlYWQgb2YgZXhwYXQuaF0pCgkJCWhhdmVfZXhwYXRfaGVhZGVyPXllcwoJCQk7OwoJCWVzYWMKCQk7OwoJeWVzKQoJCWhhdmVfZXhwYXRfaGVhZGVyPXllcwoJCTs7Cgllc2FjCgljYXNlICIkaGF2ZV9leHBhdF9oZWFkZXIiIGluCglubykKCQlleHBhdD1ubwoJCTs7Cgl5ZXMpCgkJQUNfQ0hFQ0tfRlVOQ1MoWE1MX1NldERvY3R5cGVEZWNsSGFuZGxlcikKCQljYXNlICIkYWNfY3ZfZnVuY19YTUxfU2V0RG9jdHlwZURlY2xIYW5kbGVyIiBpbgoJCXllcykKCQkJSEFWRV9FWFBBVD0xCgkJCUFDX1NVQlNUKEhBVkVfRVhQQVQpCgkJCUFDX0RFRklORV9VTlFVT1RFRChIQVZFX0VYUEFULCRIQVZFX0VYUEFULAoJCQlbRm91bmQgYSB1c2VhYmxlIGV4cGF0IGxpYnJhcnldKQoJCQk7OwoJCSopCgkJCWV4cGF0PW5vCgkJCTs7CgkJZXNhYwoJCTs7Cgllc2FjCglDUFBGTEFHUz0iJGV4cGF0c2F2ZWRfQ1BQRkxBR1MiCglMSUJTPSIkZXhwYXRzYXZlZF9MSUJTIgoJOzsKZXNhYwpBQ19TVUJTVChFWFBBVF9MSUJTKQpBQ19TVUJTVChFWFBBVF9DRkxBR1MpCgkKY2FzZSAiJGV4cGF0IiBpbgpubykKCUFDX01TR19FUlJPUihbQ2Fubm90IGZpbmQgdXNhYmxlIGV4cGF0IGxpYnJhcnkuIFRoaXMgY291bGQgbWVhbiB0aGF0IHlvdXIgdmVyc2lvbiBpcyB0b28gb2xkLl0pCgk7Owplc2FjCgojCiMgU2V0IGRlZmF1bHQgZm9udCBkaXJlY3RvcnkKIwoKQUNfQVJHX1dJVEgoZGVmYXVsdC1mb250cywgICAgIFsgIC0td2l0aC1kZWZhdWx0LWZvbnRzPURJUiAgICAgIFVzZSBmb250cyBmcm9tIERJUiB3aGVuIGNvbmZpZyBpcyBidXN0ZWRdLCBkZWZhdWx0X2ZvbnRzPSIkd2l0aHZhbCIsIGRlZmF1bHRfZm9udHM9eWVzKQoKY2FzZSAiJGRlZmF1bHRfZm9udHMiIGluCnllcykKCWlmIHRlc3QgIiRvc193aW4zMiIgPSAieWVzIjsgdGhlbgoJCUZDX0RFRkFVTFRfRk9OVFM9IldJTkRPV1NGT05URElSIgoJCUFDX0RFRklORV9VTlFVT1RFRChGQ19ERUZBVUxUX0ZPTlRTLCAiV0lORE9XU0ZPTlRESVIiLCAKCQkJCSAgIFtXaW5kb3dzIGZvbnQgZGlyZWN0b3J5XSkKCWVsc2UKCQlGQ19ERUZBVUxUX0ZPTlRTPSIvdXNyL3NoYXJlL2ZvbnRzIgoJCUFDX0RFRklORV9VTlFVT1RFRChGQ19ERUZBVUxUX0ZPTlRTLCAiL3Vzci9zaGFyZS9mb250cyIsIAoJCQkJICAgW1N5c3RlbSBmb250IGRpcmVjdG9yeV0pCglmaQoJOzsKKikKCUZDX0RFRkFVTFRfRk9OVFM9IiRkZWZhdWx0X2ZvbnRzIgoJQUNfREVGSU5FX1VOUVVPVEVEKEZDX0RFRkFVTFRfRk9OVFMsICIkZGVmYXVsdF9mb250cyIsCgkJCSAgIFtTeXN0ZW0gZm9udCBkaXJlY3RvcnldKQoJOzsKZXNhYwoKQUNfU1VCU1QoRkNfREVGQVVMVF9GT05UUykKCiMKIyBBZGQgbW9yZSBmb250cyBpZiBhdmFpbGFibGUuICBCeSBkZWZhdWx0LCBhZGQgb25seSB0aGUgZGlyZWN0b3JpZXMKIyB3aXRoIG91dGxpbmUgZm9udHM7IHRob3NlIHdpdGggYml0bWFwcyBjYW4gYmUgYWRkZWQgYXMgZGVzaXJlZCBpbgojIGxvY2FsLmNvbmYgb3Igfi8uZm9udHMuY29uZgojCkFDX0FSR19XSVRIKGFkZC1mb250cywgICAgICAgIFsgIC0td2l0aC1hZGQtZm9udHM9RElSMSxESVIyLC4uLkZpbmQgYWRkaXRpb25hbCBmb250cyBpbiBESVIxLERJUjIsLi4uIF0sIGFkZF9mb250cz0iJHdpdGh2YWwiLCBhZGRfZm9udHM9eWVzKQoKY2FzZSAiJGFkZF9mb250cyIgaW4KeWVzKQoJRkNfQUREX0ZPTlRTPSIiCglmb3IgZGlyIGluIC91c3IvWDExUjYvbGliL1gxMSAvdXNyL1gxMS9saWIvWDExIC91c3IvbGliL1gxMTsgZG8KCQljYXNlIHgiJEZDX0FERF9GT05UUyIgaW4KCQl4KQoJCQlpZiB0ZXN0IC1kICIkZGlyL2ZvbnRzIjsgdGhlbgoJCQkJZm9yIHN1YiBpbiAiJGRpciIvZm9udHMvKjsgZG8KCQkJCQlpZiBscyAiJHN1YiIgfCBncmVwIC1xIC1pICdcLnBmXHxcLnR0XHxcLm90JzsgdGhlbgoJCQkJCQljYXNlIHgkRkNfQUREX0ZPTlRTIGluCgkJCQkJCXgpCgkJCQkJCQlGQ19BRERfRk9OVFM9IiRzdWIiCgkJCQkJCQk7OwoJCQkJCQkqKQoJCQkJCQkJRkNfQUREX0ZPTlRTPSIkRkNfQUREX0ZPTlRTLCRzdWIiCgkJCQkJCQk7OwoJCQkJCQllc2FjCgkJCQkJZmkKCQkJCWRvbmUKCQkJZmkKCQkJOzsKCQllc2FjCglkb25lCglBQ19ERUZJTkVfVU5RVU9URUQoRkNfQUREX0ZPTlRTLCIkYWRkX2ZvbnRzIixbQWRkaXRpb25hbCBmb250IGRpcmVjdG9yaWVzXSkKCTs7Cm5vKQoJRkNfQUREX0ZPTlRTPSIiCgk7OwoqKQoJRkNfQUREX0ZPTlRTPSIkYWRkX2ZvbnRzIgoJQUNfREVGSU5FX1VOUVVPVEVEKEZDX0FERF9GT05UUywiJGFkZF9mb250cyIsW0FkZGl0aW9uYWwgZm9udCBkaXJlY3Rvcmllc10pCgk7Owplc2FjCgpBQ19TVUJTVChGQ19BRERfRk9OVFMpCgpGQ19GT05UUEFUSD0iIgoKY2FzZSAiJEZDX0FERF9GT05UUyIgaW4KIiIpCgk7OwoqKQoJRkNfRk9OVFBBVEg9YGVjaG8gJEZDX0FERF9GT05UUyB8IAoJCQlzZWQgLWUgJ3MvXi88ZGlyPi8nIC1lICdzLyQvPFwvZGlyPi8nIC1lICdzLywvPFwvZGlyPiA8ZGlyPi9nJ2AKCTs7CmVzYWMKCkFDX1NVQlNUKEZDX0ZPTlRQQVRIKQoKRkNfRk9OVERBVEU9YGRhdGVgCgpBQ19TVUJTVChGQ19GT05UREFURSkKCkFDX0FSR19XSVRIKGNvbmZkaXIsICAgICAgICAgICBbICAtLXdpdGgtY29uZmRpcj1ESVIgICAgICAgICAgICBVc2UgRElSIHRvIHN0b3JlIGNvbmZpZ3VyYXRpb24gZmlsZXMgKGRlZmF1bHQgL2V0Yy9mb250cyldLCBjb25mZGlyPSIkd2l0aHZhbCIsIGNvbmZkaXI9eWVzKQoKIwojIFNldCBDT05GRElSIGFuZCBGT05UQ09ORklHX1BBVEgKIwoKY2FzZSAiJGNvbmZkaXIiIGluCm5vfHllcykKCWNvbmZkaXI9JyR7c3lzY29uZmRpcn0nL2ZvbnRzCgk7OwoqKQoJOzsKZXNhYwpBQ19TVUJTVChjb25mZGlyKQpDT05GRElSPSR7Y29uZmRpcn0KQUNfREVGSU5FX1VOUVVPVEVEKENPTkZESVIsICIkQ09ORkRJUiIsW0ZvbnQgY29uZmlndXJhdGlvbiBkaXJlY3RvcnldKQpBQ19TVUJTVChDT05GRElSKQoKIwojIEZpbmQgb3V0IHdoYXQgbGFuZ3VhZ2Ugb3J0aG9ncmFwaGllcyBhcmUgaW5jbHVkZWQKIwoKT1JUSF9GSUxFUz1gY2QgJHtzcmNkaXJ9L2ZjLWxhbmcgJiYgZWNobyAqLm9ydGhgCkFDX1NVQlNUKE9SVEhfRklMRVMpCgojCiMgTGV0IHBlb3BsZSBub3QgYnVpbGQvaW5zdGFsbCBkb2NzIGlmIHRoZXkgZG9uJ3QgaGF2ZSBkb2Nib29rCiMKCkFDX0NIRUNLX1BST0coSEFTRE9DQk9PSywgZG9jYm9vazJodG1sLCB5ZXMsIG5vKQoKQU1fQ09ORElUSU9OQUwoVVNFRE9DQk9PSywgdGVzdCAieCRIQVNET0NCT09LIiA9IHh5ZXMpCgpkZWZhdWx0X2RvY3M9InllcyIKIwojIENoZWNrIGlmIGRvY3MgZXhpc3Qgb3IgY2FuIGJlIGNyZWF0ZWQKIwppZiB0ZXN0IHgkSEFTRE9DQk9PSyA9IHhubzsgdGhlbgoJaWYgdGVzdCAtZiBkb2MvZm9udHMtY29uZi41OyB0aGVuCgkJOgoJZWxzZQoJCWRlZmF1bHRfZG9jcz0ibm8iCglmaQpmaQoKQUNfQVJHX0VOQUJMRShkb2NzLCAgICAgICAgICAgWyAgLS1kaXNhYmxlLWRvY3MgICAgICAgICAgICAgICAgRG9uJ3QgYnVpbGQgYW5kIGluc3RhbGwgZG9jdW1lbnRhdGlvbl0sLGVuYWJsZV9kb2NzPSRkZWZhdWx0X2RvY3MpCgpBTV9DT05ESVRJT05BTChFTkFCTEVfRE9DUywgdGVzdCAieCRlbmFibGVfZG9jcyIgPSB4eWVzKQoKaWYgdGVzdCAieCRlbmFibGVfZG9jcyIgPSB4eWVzOyB0aGVuCglET0NTUkM9ImRvYyIKCXRtcD1mdW5jcy4kJAoJY2F0ICRzcmNkaXIvZG9jLyouZm5jcyB8IGF3ayAnCgkvXkBUSVRMRUAvCXsgaWYgKCFkb25lKSB7IHByaW50ZiAoIiVzXG4iLCAkMik7IGRvbmUgPSAxOyB9IH0KCS9eQEZVTkNALwl7IGlmICghZG9uZSkgeyBwcmludGYgKCIlc1xuIiwgJDIpOyBkb25lID0gMTsgfSB9CgkvXkBALwkJeyBkb25lID0gMDsgfScgPiAkdG1wCglET0NNQU4zPWBjYXQgJHRtcCB8IGF3ayAneyBwcmludGYgKCIlcy4zICIsICQxKTsgfSdgCgllY2hvIERPQ01BTjMgJERPQ01BTjMKCXJtIC1mICR0bXAKZWxzZQoJRE9DU1JDPSIiCglET0NNQU4zPSIiCmZpCgpBQ19TVUJTVChET0NTUkMpCkFDX1NVQlNUKERPQ01BTjMpCgojCiMgRmlndXJlIG91dCB3aGVyZSB0byBpbnN0YWxsIGRvY3VtZW50YXRpb24KIwoKQUNfQVJHX1dJVEgoZG9jZGlyLCAgICAgICAgICAgWyAgLS13aXRoLWRvY2Rpcj1ESVIgICAgICAgICAgICAgVXNlIERJUiB0byBzdG9yZSBkb2N1bWVudGF0aW9uIGZpbGVzIChkZWZhdWx0ICR7ZGF0YWRpcn0vZG9jL2ZvbnRjb25maWcpXSwgY29uZmRpcj0iJHdpdGh2YWwiKQoKaWYgdGVzdCAieCR3aXRoX2RvY2RpciIgPSAieCIgOyB0aGVuCiAgRE9DRElSPScke2RhdGFkaXJ9L2RvYy9mb250Y29uZmlnJwplbHNlCiAgRE9DRElSPSR3aXRoX2RvY2RpcgpmaQoKQUNfU1VCU1QoRE9DRElSKQoKQUNfT1VUUFVUKFsKTWFrZWZpbGUgCmZvbnRjb25maWcvTWFrZWZpbGUKZmMtbGFuZy9NYWtlZmlsZQpmYy1nbHlwaG5hbWUvTWFrZWZpbGUKc3JjL01ha2VmaWxlCnNyYy9mb250Y29uZmlnLmRlZgpmYy1jYWNoZS9NYWtlZmlsZQpmYy1saXN0L01ha2VmaWxlCmZjLW1hdGNoL01ha2VmaWxlCmRvYy9NYWtlZmlsZQpkb2MvdmVyc2lvbi5zZ21sCnRlc3QvTWFrZWZpbGUKZm9udGNvbmZpZy5zcGVjCmZvbnRjb25maWcucGMKZm9udHMuY29uZgpmb250Y29uZmlnLXppcApdKQo=