IyBNYWtlZmlsZSBmb3IgVklNIG9uIFdpbjMyLCB1c2luZyAnRUdDUy9taW5ndzMyIDEuMS4yJy4KIyBJbmZvIGF0IGh0dHA6Ly93d3cubWluZ3cub3JnCiMgQWxzbyByZXF1aXJlcyAnR05VIG1ha2UgMy43NycsIHdoaWNoIHlvdSBjYW4gZ2V0IHRocm91Z2ggYSBsaW5rCiMgdG8gJ0phbkphYXAncyBwYWdlIGZyb20gdGhlIGFib3ZlIHBhZ2UuCiMgR2V0IG1pc3NpbmcgbGlicmFyaWVzIGZyb20gaHR0cDovL2dudXdpbjMyLnNmLm5ldC4KIwojIFRlc3RlZCBvbiBXaW4zMiBOVCA0IGFuZCBXaW45NS4KIwojIFRvIG1ha2UgZXZlcnl0aGluZywganVzdCAnbWFrZSAtZiBNYWtlX21pbmcubWFrJwojIFRvIG1ha2UganVzdCBlLmcuIGd2aW0uZXhlLCAnbWFrZSAtZiBNYWtlX21pbmcubWFrIGd2aW0uZXhlJwojIEFmdGVyIGEgcnVuLCB5b3UgY2FuICdtYWtlIC1mIE1ha2VfbWluZy5tYWsgY2xlYW4nIHRvIGNsZWFuIHVwCiMKIyBOT1RFOiBTb21ldGltZXMgJ0dOVSBNYWtlJyB3aWxsIHN0b3AgYWZ0ZXIgYnVpbGRpbmcgdmltcnVuLmV4ZSAtLSBJIHRoaW5rCiMgaXQncyBqdXN0IHJ1biBvdXQgb2YgbWVtb3J5IG9yIHNvbWV0aGluZy4gIFJ1biBhZ2FpbiwgYW5kIGl0IHdpbGwgY29udGludWUKIyB3aXRoICd4eGQnLgojCiMgIm1ha2UgdXB4IiBtYWtlcyAqY29tcHJlc3NlZCogdmVyc2lvbnMgb2YgdGhlIEdVSSBhbmQgY29uc29sZSBFWEVzLCB1c2luZyB0aGUKIyBleGNlbGxlbnQgVVBYIGNvbXByZXNzb3I6CiMgICAgIGh0dHA6Ly91cHguc291cmNlZm9yZ2UubmV0LwojCiMgTWFpbnRhaW5lZCBieSBSb24gQWFyb24gPHJvbmFoYXJvbkB5YWhvby5jb20+CiMgdXBkYXRlZCAyMDAzIEphbiAyMAoKIz4+Pj4+IGNob29zZSBvcHRpb25zOgojIHNldCB0byB5ZXMgZm9yIGEgZGVidWcgYnVpbGQKREVCVUc9bm8KIyBzZXQgdG8gU0laRSBmb3Igc2l6ZSwgU1BFRUQgZm9yIHNwZWVkLCBNQVhTUEVFRCBmb3IgbWF4aW11bSBvcHRpbWl6YXRpb24KT1BUSU1JWkU9TUFYU1BFRUQKIyBzZXQgdG8geWVzIHRvIG1ha2UgZ3ZpbSwgbm8gZm9yIHZpbQpHVUk9eWVzCiMgRkVBVFVSRVM9W1RJTlkgfCBTTUFMTCAgfCBOT1JNQUwgfCBCSUcgfCBIVUdFXQojIHNldCB0byBUSU5ZIHRvIG1ha2UgbWluaW1hbCB2ZXJzaW9uIChmZXcgZmVhdHVyZXMpCkZFQVRVUkVTPUJJRwojIHNldCB0byBvbmUgb2YgaTM4NiwgaTQ4NiwgaTU4NiwgaTY4NiBhcyB0aGUgbWluaW11bSB0YXJnZXQgcHJvY2Vzc29yCkFSQ0g9aTM4NgojIHNldCB0byB5ZXMgdG8gY3Jvc3MtY29tcGlsZSBmcm9tIHVuaXg7IG5vPW5hdGl2ZSBXaW5kb3dzCkNST1NTPW5vCiMgc2V0IHRvIHBhdGggdG8gaWNvbnYuaCBhbmQgbGliaWNvbnYuYSB0byBlbmFibGUgdXNpbmcgJ2ljb252LmRsbCcKI0lDT05WPSIuIgpJQ09OVj15ZXMKR0VUVEVYVD15ZXMKIyBzZXQgdG8geWVzIHRvIGluY2x1ZGUgbXVsdGlieXRlIHN1cHBvcnQKTUJZVEU9eWVzCiMgc2V0IHRvIHllcyB0byBpbmNsdWRlIElNRSBzdXBwb3J0CklNRT15ZXMKRFlOQU1JQ19JTUU9eWVzCiMgc2V0IHRvIHllcyB0byBlbmFibGUgd3JpdGluZyBhIHBvc3RzY3JpcHQgZmlsZSB3aXRoIDpoYXJkY29weQpQT1NUU0NSSVBUPW5vCiMgc2V0IHRvIHllcyB0byBlbmFibGUgT0xFIHN1cHBvcnQKT0xFPW5vCiMgU2V0IHRoZSBkZWZhdWx0ICQoV0lOVkVSKSB0byBtYWtlIGl0IHdvcmsgd2l0aCBwcmUtV2luMmsKV0lOVkVSID0gMHgwNDAwCiMgU2V0IHRvIHllcyB0byBlbmFibGUgQ3Njb3BlIHN1cHBvcnQKQ1NDT1BFPXllcwojIFNldCB0byB5ZXMgdG8gZW5hYmxlIE5ldGJlYW5zIHN1cHBvcnQKTkVUQkVBTlM9JChHVUkpCgoKIyBJZiB0aGUgdXNlciBkb2Vzbid0IHdhbnQgZ2V0dGV4dCwgdW5kZWZpbmUgaXQuCmlmZXEgKG5vLCAkKEdFVFRFWFQpKQpHRVRURVhUPQplbmRpZgojIEFkZGVkIGJ5IEUuRi4gQW1hdHJpYSA8ZWZlcm5hMUBwbGF0ZWEucHRpYy5tZWMuZXM+IDIwMDEgRmViIDIzCiMgVW5jb21tZW50IHRoZSBmaXJzdCBsaW5lIGFuZCBvbmUgb2YgdGhlIGZvbGxvd2luZyB0aHJlZSBpZiB5b3Ugd2FudCBOYXRpdmUgTGFuZ3VhZ2UKIyBTdXBwb3J0LiAgWW91J2xsIG5lZWQgZ251X2dldHRleHQud2luMzIsIGEgTUlOR1czMiBXaW5kb3dzIFBPUlQgb2YgZ2V0dGV4dCBieQojIEZyYW5jbyBCZXogPGZyYW5jby5iZXpAZ214LmRlPi4gIEl0IG1heSBiZSBmb3VuZCBhdAojIGh0dHA6Ly9ob21lLmEtY2l0eS5kZS9mcmFuY28uYmV6L2dldHRleHQvZ2V0dGV4dF93aW4zMl9lbi5odG1sCiMgVGVzdGVkIHdpdGggbWluZ3czMiB3aXRoIEdDQy0yLjk1LjIgb24gV2luOTgKIyBVcGRhdGVkIDIwMDEgSnVuIDkKI0dFVFRFWFQ9YzovZ2V0dGV4dC53aW4zMi5tc3ZjcnQKI1NUQVRJQ19HRVRURVhUPVVTRV9TVEFUSUNfR0VUVEVYVAojRFlOQU1JQ19HRVRURVhUPVVTRV9HRVRURVhUX0RMTAojRFlOQU1JQ19HRVRURVhUPVVTRV9TQUZFX0dFVFRFWFRfRExMClNBRkVfR0VUVEVYVF9ETExfT0JKID0gJChHRVRURVhUKS9zcmMvc2FmZV9nZXR0ZXh0X2RsbC9zYWZlX2dldHRleHRfZGxsLm8KIyBBbHRlcm5hdGl2ZWx5LCBpZiB5b3UgdW5jb21tZW50IHRoZSB0d28gZm9sbG93aW5nIGxpbmVzLCB5b3UgZ2V0IGEgInNhZmUiIHZlcnNpb24KIyB3aXRob3V0IGxpbmtpbmcgdGhlIHNhZmVfZ2V0dGV4dF9kbGwubyBvYmplY3QgZmlsZS4KI0RZTkFNSUNfR0VUVEVYVD1EWU5BTUlDX0dFVFRFWFQKI0dFVFRFWFRfRFlOQU1JQz1nbnVfZ2V0dGV4dC5kbGwKSU5UTFBBVEg9JChHRVRURVhUKS9saWIvbWluZ3czMgpJTlRMTElCPWdudV9nZXR0ZXh0CgojIElmIHlvdSBhcmUgdXNpbmcgZ2V0dGV4dC0wLjEwLjM1IGZyb20gaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9nZXR0ZXh0CiMgb3IgZ2V0dGV4dC0wLjEwLjM3IGZyb20gaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9taW5nd3JlcC8KIyB1bmNvbW1lbnQgdGhlIGZvbGxvd2luZywgYnV0IEkgY2FuJ3QgYnVpbGQgYSBzdGF0aWMgdmVyc2nzbiB3aXRoIHRoZW0sID8tKHwKI0dFVFRFWFQ9YzovZ2V0dGV4dC0wLjEwLjM3LTIwMDEwNDMwCiNTVEFUSUNfR0VUVEVYVD1VU0VfU1RBVElDX0dFVFRFWFQKI0RZTkFNSUNfR0VUVEVYVD1EWU5BTUlDX0dFVFRFWFQKI0lOVExQQVRIPSQoR0VUVEVYVCkvbGliCiNJTlRMTElCPWludGwKCiMgdW5jb21tZW50ICdQRVJMJyBpZiB5b3Ugd2FudCBhIHBlcmwtZW5hYmxlZCB2ZXJzaW9uCiNQRVJMPUM6L3BlcmwKaWZkZWYgUEVSTAppZm5kZWYgUEVSTF9WRVIKUEVSTF9WRVI9NTYKZW5kaWYKaWZuZGVmIERZTkFNSUNfUEVSTApEWU5BTUlDX1BFUkw9eWVzCmVuZGlmCiMgb24gTGludXgsIGZvciBjcm9zcy1jb21waWxlLCBpdCdzIGhlcmU6CiNQRVJMTElCPS9ob21lL3Jvbi9BY3RpdmVQZXJsL2xpYgojIG9uIE5ULCBpdCdzIGhlcmU6ClBFUkxMSUI9JChQRVJMKS9saWIKUEVSTExJQlM9JChQRVJMTElCKS9Db3JlCmVuZGlmCgojIHVuY29tbWVudCAnTFVBJyBpZiB5b3Ugd2FudCBhIEx1YS1lbmFibGVkIHZlcnNpb24KI0xVQT0vdXNyL2xvY2FsCmlmZGVmIExVQQppZm5kZWYgRFlOQU1JQ19MVUEKRFlOQU1JQ19MVUE9eWVzCmVuZGlmCgppZm5kZWYgTFVBX1ZFUgpMVUFfVkVSPTUxCmVuZGlmCgppZmVxIChubywkKERZTkFNSUNfTFVBKSkKTFVBX0xJQiA9IC1MJChMVUEpL2xpYiAtbGx1YQplbmRpZgoKZW5kaWYKCiMgdW5jb21tZW50ICdNWlNDSEVNRScgaWYgeW91IHdhbnQgYSBNelNjaGVtZS1lbmFibGVkIHZlcnNpb24KI01aU0NIRU1FPWQ6L3BsdAppZmRlZiBNWlNDSEVNRQppZm5kZWYgRFlOQU1JQ19NWlNDSEVNRQpEWU5BTUlDX01aU0NIRU1FPXllcwplbmRpZgoKaWZuZGVmIE1aU0NIRU1FX1ZFUgpNWlNDSEVNRV9WRVI9MjA1XzAwMAplbmRpZgoKaWZuZGVmIE1aU0NIRU1FX1BSRUNJU0VfR0MKTVpTQ0hFTUVfUFJFQ0lTRV9HQz1ubwplbmRpZgoKIyBmb3IgdmVyc2lvbiA0Lnggd2UgbmVlZCB0byBnZW5lcmF0ZSBieXRlLWNvZGUgZm9yIFNjaGVtZSBiYXNlCmlmbmRlZiBNWlNDSEVNRV9HRU5FUkFURV9CQVNFCk1aU0NIRU1FX0dFTkVSQVRFX0JBU0U9bm8KZW5kaWYKCmlmZXEgKG5vLCQoRFlOQU1JQ19NWlNDSEVNRSkpCmlmZXEgKHllcywkKE1aU0NIRU1FX1BSRUNJU0VfR0MpKQpNWlNDSEVNRV9MSUI9LWxtenNjaCQoTVpTQ0hFTUVfVkVSKQplbHNlCk1aU0NIRU1FX0xJQiA9IC1sbXpzY2gkKE1aU0NIRU1FX1ZFUikgLWxtemdjJChNWlNDSEVNRV9WRVIpCmVuZGlmCiMgdGhlIG1vZGVybiBNaW5HVyBjYW4gZHluYW1pY2FsbHkgbGluayB0byBkbGxzIGRpcmVjdGx5LgojIHBvaW50IE1aU0NIRU1FX0RMTFMgdG8gd2hlcmUgeW91IHB1dCBsaWJtenNjaFhYWFhYWFguZGxsIGFuZCBsaWJnY1hYWFhYWFguZGxsCmlmbmRlZiBNWlNDSEVNRV9ETExTCk1aU0NIRU1FX0RMTFM9JChNWlNDSEVNRSkKZW5kaWYKTVpTQ0hFTUVfTElCRElSPS1MJChNWlNDSEVNRV9ETExTKSAtTCQoTVpTQ0hFTUVfRExMUylcbGliCmVuZGlmCgplbmRpZgoKIyBQeXRob24gc3VwcG9ydCAtLSB3b3JrcyB3aXRoIHRoZSBBY3RpdmVTdGF0ZSBweXRob24gMi4wIHJlbGVhc2UgKGFuZCBvdGhlcnMKIyB0b28sIHByb2JhYmx5KQojCiMgdW5jb21tZW50ICdQWVRIT04nIHRvIG1ha2UgcHl0aG9uLWVuYWJsZWQgdmVyc2lvbgojIFB1dCB0aGUgcGF0aCB0byB0aGUgcHl0aG9uIGRpc3RybyBoZXJlLiAgSWYgY3Jvc3MgY29tcGlsaW5nIGZyb20gTGludXgsIHlvdQojIHdpbGwgYWxzbyBuZWVkIHRvIGNvbnZlcnQgdGhlIGhlYWRlciBmaWxlcyB0byB1bml4IGluc3RlYWQgb2YgZG9zIGZvcm1hdDoKIyAgIGZvciBmaWwgaW4gKi5oIDsgZG8gdmltIC1lIC1jICdzZXQgZmY9dW5peHx3fHEnICRmaWwKIyBhbmQgYWxzbywgeW91IHdpbGwgbmVlZCB0byBtYWtlIGEgbWluZ3czMiAnbGlicHl0aG9uMjAuYScgdG8gbGluayB3aXRoOgojICAgY2QgJFBZVEhPTi9saWJzCiMgICBwZXhwb3J0cyBweXRob24yMC5kbGwgPiBweXRob24yMC5kZWYKIyAgIGRsbHRvb2wgLWQgcHl0aG9uMjAuZGVmIC1sIGxpYnB5dGhvbjIwLmEKIyBvbiBteSBMaW51eCBib3gsIEkgcHV0IHRoZSBQeXRob24gc3R1ZmYgaGVyZToKI1BZVEhPTj0vaG9tZS9yb24vQWN0aXZlUHl0aG9uLTIuMC4wLTIwMi9zcmMvQ29yZQojIG9uIG15IE5UIGJveCwgaXQncyBoZXJlOgojUFlUSE9OPWM6L3B5dGhvbjIwCgppZmRlZiBQWVRIT04KaWZuZGVmIERZTkFNSUNfUFlUSE9OCkRZTkFNSUNfUFlUSE9OPXllcwplbmRpZgoKaWZuZGVmIFBZVEhPTl9WRVIKUFlUSE9OX1ZFUj0yMgplbmRpZgoKaWZlcSAobm8sJChEWU5BTUlDX1BZVEhPTikpClBZVEhPTkxJQj0tTCQoUFlUSE9OKS9saWJzIC1scHl0aG9uJChQWVRIT05fVkVSKQplbmRpZgojIG15IGluY2x1ZGUgZmlsZXMgYXJlIGluICd3aW4zMmluYycgb24gTGludXgsIGFuZCAnaW5jbHVkZScgaW4gdGhlIHN0YW5kYXJkCiMgTlQgZGlzdHJvIChBY3RpdmVTdGF0ZSkKaWZlcSAoJChDUk9TUyksbm8pClBZVEhPTklOQz0tSSAkKFBZVEhPTikvaW5jbHVkZQplbHNlClBZVEhPTklOQz0tSSAkKFBZVEhPTikvd2luMzJpbmMKZW5kaWYKZW5kaWYKCiNQWVRIT04zOiBTZWUgY29tbWVudCBmb3IgUHl0aG9uIDIgYWJvdmUKCmlmZGVmIFBZVEhPTjMKaWZuZGVmIERZTkFNSUNfUFlUSE9OMwpEWU5BTUlDX1BZVEhPTjM9eWVzCmVuZGlmCgppZm5kZWYgUFlUSE9OM19WRVIKUFlUSE9OM19WRVI9MzEKZW5kaWYKCmlmZXEgKG5vLCQoRFlOQU1JQ19QWVRIT04zKSkKUFlUSE9OM0xJQj0tTCQoUFlUSE9OMykvbGlicyAtbFBZVEhPTiQoUFlUSE9OM19WRVIpCmVuZGlmCgppZmVxICgkKENST1NTKSxubykKUFlUSE9OM0lOQz0tSSAkKFBZVEhPTjMpL2luY2x1ZGUKZWxzZQpQWVRIT04zSU5DPS1JICQoUFlUSE9OMykvd2luMzJpbmMKZW5kaWYKZW5kaWYKCiMJVENMIGludGVyZmFjZToKIwkgIFRDTD1bUGF0aCB0byBUQ0wgZGlyZWN0b3J5XQojCSAgRFlOQU1JQ19UQ0w9eWVzICh0byBsb2FkIHRoZSBUQ0wgRExMIGR5bmFtaWNhbGx5KQojCSAgVENMX1ZFUj1bVENMIHZlcnNpb24sIGVnIDgzLCA4NF0gKGRlZmF1bHQgaXMgODMpCiNUQ0w9YzovdGNsCmlmZGVmIFRDTAppZm5kZWYgRFlOQU1JQ19UQ0wKRFlOQU1JQ19UQ0w9eWVzCmVuZGlmCmlmbmRlZiBUQ0xfVkVSClRDTF9WRVIgPSA4MwplbmRpZgpUQ0xJTkMgKz0gLUkkKFRDTCkvaW5jbHVkZQplbmRpZgoKCiMJUnVieSBpbnRlcmZhY2U6CiMJICBSVUJZPVtQYXRoIHRvIFJ1YnkgZGlyZWN0b3J5XQojCSAgRFlOQU1JQ19SVUJZPXllcyAodG8gbG9hZCB0aGUgUnVieSBETEwgZHluYW1pY2FsbHkpCiMJICBSVUJZX1ZFUj1bUnVieSB2ZXJzaW9uLCBlZyAxNiwgMTddIChkZWZhdWx0IGlzIDE2KQojCSAgUlVCWV9WRVJfTE9ORz1bUnVieSB2ZXJzaW9uLCBlZyAxLjYsIDEuN10gKGRlZmF1bHQgaXMgMS42KQojCSAgICBZb3UgbXVzdCBzZXQgUlVCWV9WRVJfTE9ORyB3aGVuIGNoYW5nZSBSVUJZX1ZFUi4KI1JVQlk9YzovcnVieQppZmRlZiBSVUJZCmlmbmRlZiBEWU5BTUlDX1JVQlkKRFlOQU1JQ19SVUJZPXllcwplbmRpZgojICBTZXQgZGVmYXVsdCB2YWx1ZQppZm5kZWYgUlVCWV9WRVIKUlVCWV9WRVIgPSAxNgplbmRpZgppZm5kZWYgUlVCWV9WRVJfTE9ORwpSVUJZX1ZFUl9MT05HID0gMS42CmVuZGlmCgppZm5kZWYgUlVCWV9QTEFURk9STQppZmVxICgkKFJVQllfVkVSKSwgMTYpClJVQllfUExBVEZPUk0gPSBpNTg2LW1zd2luMzIKZWxzZQppZm5lcSAoJCh3aWxkY2FyZCAkKFJVQlkpL2xpYi9ydWJ5LyQoUlVCWV9WRVJfTE9ORykvaTM4Ni1taW5ndzMyKSwpClJVQllfUExBVEZPUk0gPSBpMzg2LW1pbmd3MzIKZWxzZQpSVUJZX1BMQVRGT1JNID0gaTM4Ni1tc3dpbjMyCmVuZGlmCmVuZGlmCmVuZGlmCgppZm5kZWYgUlVCWV9JTlNUQUxMX05BTUUKaWZlcSAoJChSVUJZX1ZFUiksIDE2KQpSVUJZX0lOU1RBTExfTkFNRSA9IG1zd2luMzItcnVieSQoUlVCWV9WRVIpCmVsc2UKUlVCWV9JTlNUQUxMX05BTUUgPSBtc3ZjcnQtcnVieSQoUlVCWV9WRVIpCmVuZGlmCmVuZGlmCgpSVUJZSU5DID0tSSAkKFJVQlkpL2xpYi9ydWJ5LyQoUlVCWV9WRVJfTE9ORykvJChSVUJZX1BMQVRGT1JNKSAtSSAkKFJVQlkpL2luY2x1ZGUvcnVieS0kKFJVQllfVkVSX0xPTkcpIC1JICQoUlVCWSkvaW5jbHVkZS9ydWJ5LSQoUlVCWV9WRVJfTE9ORykvJChSVUJZX1BMQVRGT1JNKQppZmVxIChubywgJChEWU5BTUlDX1JVQlkpKQpSVUJZTElCID0gLUwkKFJVQlkpL2xpYiAtbCQoUlVCWV9JTlNUQUxMX05BTUUpCmVuZGlmCgplbmRpZiAjIFJVQlkKCiMgU2VlIGZlYXR1cmUuaCBmb3IgYSBsaXN0IG9mIG9wdGlvbnMuCiMgQW55IG90aGVyIGRlZmluZXMgY2FuIGJlIGluY2x1ZGVkIGhlcmUuCkRFRl9HVUk9LURGRUFUX0dVSV9XMzIgLURGRUFUX0NMSVBCT0FSRApERUZJTkVTPS1EV0lOMzIgLURXSU5WRVI9JChXSU5WRVIpIC1EX1dJTjMyX1dJTk5UPSQoV0lOVkVSKSBcCgktREhBVkVfUEFUSERFRiAtREZFQVRfJChGRUFUVVJFUykKaWZlcSAoJChDUk9TUykseWVzKQojIGNyb3NzLWNvbXBpbGVyIHByZWZpeDoKQ1JPU1NfQ09NUElMRSA9IGk1ODYtcGMtbWluZ3czMm1zdmMtCkRFTCA9IHJtCk1LRElSID0gbWtkaXIgLXAKRElSU0xBU0ggPSAvCmVsc2UKIyBub3JtYWwgKFdpbmRvd3MpIGNvbXBpbGF0aW9uOgpDUk9TU19DT01QSUxFID0KaWZuZXEgKHNoLmV4ZSwgJChTSEVMTCkpCkRFTCA9IHJtCk1LRElSID0gbWtkaXIgLXAKRElSU0xBU0ggPSAvCmVsc2UKREVMID0gZGVsCk1LRElSID0gbWtkaXIKRElSU0xBU0ggPSBcXAplbmRpZgplbmRpZgpDQyA6PSAkKENST1NTX0NPTVBJTEUpZ2NjCldJTkRSRVMgOj0gJChDUk9TU19DT01QSUxFKXdpbmRyZXMgLS1wcmVwcm9jZXNzb3I9IiQoQ0MpIC1FIC14YyIgLURSQ19JTlZPS0VECgojPj4+Pj4gZW5kIG9mIGNob2ljZXMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpDRkxBR1MgPSAtSXByb3RvICQoREVGSU5FUykgLXBpcGUgLXcgLW1hcmNoPSQoQVJDSCkgLVdhbGwKCmlmZGVmIEdFVFRFWFQKREVGSU5FUyArPSAtREhBVkVfR0VUVEVYVCAtREhBVkVfTE9DQUxFX0gKR0VUVEVYVElOQ0xVREUgPSAkKEdFVFRFWFQpL2luY2x1ZGUKR0VUVEVYVExJQiA9ICQoSU5UTFBBVEgpCmlmZXEgKHllcywgJChHRVRURVhUKSkKREVGSU5FUyArPSAtRERZTkFNSUNfR0VUVEVYVAplbHNlCmlmZGVmIERZTkFNSUNfR0VUVEVYVApERUZJTkVTICs9IC1EJChEWU5BTUlDX0dFVFRFWFQpCmlmZGVmIEdFVFRFWFRfRFlOQU1JQwpERUZJTkVTICs9IC1ER0VUVEVYVF9EWU5BTUlDIC1ER0VUVEVYVF9ETEw9XCIkKEdFVFRFWFRfRFlOQU1JQylcIgplbmRpZgplbmRpZgplbmRpZgplbmRpZgoKaWZkZWYgUEVSTApDRkxBR1MgKz0gLUkkKFBFUkxMSUJTKSAtREZFQVRfUEVSTCAtTCQoUEVSTExJQlMpCmlmZXEgKHllcywgJChEWU5BTUlDX1BFUkwpKQpDRkxBR1MgKz0gLUREWU5BTUlDX1BFUkwgLUREWU5BTUlDX1BFUkxfRExMPVwicGVybCQoUEVSTF9WRVIpLmRsbFwiCmVuZGlmCmVuZGlmCgppZmRlZiBMVUEKQ0ZMQUdTICs9IC1JJChMVUEpL2luY2x1ZGUgLURGRUFUX0xVQQppZmVxICh5ZXMsICQoRFlOQU1JQ19MVUEpKQpDRkxBR1MgKz0gLUREWU5BTUlDX0xVQSAtRERZTkFNSUNfTFVBX0RMTD1cImx1YSQoTFVBX1ZFUikuZGxsXCIKZW5kaWYKZW5kaWYKCmlmZGVmIE1aU0NIRU1FCkNGTEFHUyArPSAtSSQoTVpTQ0hFTUUpL2luY2x1ZGUgLURGRUFUX01aU0NIRU1FIC1ETVpTQ0hFTUVfQ09MTEVDVFM9XCIkKE1aU0NIRU1FKS9jb2xsZWN0c1wiCmlmZXEgKHllcywgJChEWU5BTUlDX01aU0NIRU1FKSkKQ0ZMQUdTICs9IC1ERFlOQU1JQ19NWlNDSEVNRSAtRERZTkFNSUNfTVpTQ0hfRExMPVwibGlibXpzY2gkKE1aU0NIRU1FX1ZFUikuZGxsXCIgLUREWU5BTUlDX01aR0NfRExMPVwibGlibXpnYyQoTVpTQ0hFTUVfVkVSKS5kbGxcIgplbmRpZgplbmRpZgoKaWZkZWYgUlVCWQpDRkxBR1MgKz0gLURGRUFUX1JVQlkgJChSVUJZSU5DKQppZmVxICh5ZXMsICQoRFlOQU1JQ19SVUJZKSkKQ0ZMQUdTICs9IC1ERFlOQU1JQ19SVUJZIC1ERFlOQU1JQ19SVUJZX0RMTD1cIiQoUlVCWV9JTlNUQUxMX05BTUUpLmRsbFwiCkNGTEFHUyArPSAtRERZTkFNSUNfUlVCWV9WRVI9JChSVUJZX1ZFUikKZW5kaWYKZW5kaWYKCmlmZGVmIFBZVEhPTgpDRkxBR1MgKz0gLURGRUFUX1BZVEhPTiAKaWZlcSAoeWVzLCAkKERZTkFNSUNfUFlUSE9OKSkKQ0ZMQUdTICs9IC1ERFlOQU1JQ19QWVRIT04KZW5kaWYKZW5kaWYKCmlmZGVmIFBZVEhPTjMgCkNGTEFHUyArPSAtREZFQVRfUFlUSE9OMyAKaWZlcSAoeWVzLCAkKERZTkFNSUNfUFlUSE9OMykpCkNGTEFHUyArPSAtRERZTkFNSUNfUFlUSE9OMyAKZW5kaWYKZW5kaWYKCmlmZGVmIFRDTApDRkxBR1MgKz0gLURGRUFUX1RDTCAkKFRDTElOQykKaWZlcSAoeWVzLCAkKERZTkFNSUNfVENMKSkKQ0ZMQUdTICs9IC1ERFlOQU1JQ19UQ0wgLUREWU5BTUlDX1RDTF9ETEw9XCJ0Y2wkKFRDTF9WRVIpLmRsbFwiCmVuZGlmCmVuZGlmCgppZmVxICgkKFBPU1RTQ1JJUFQpLHllcykKREVGSU5FUyArPSAtRE1TV0lOUFMKZW5kaWYKCmlmZXEgKHllcywgJChPTEUpKQpERUZJTkVTICs9IC1ERkVBVF9PTEUKZW5kaWYKCmlmZXEgKCQoQ1NDT1BFKSx5ZXMpCkRFRklORVMgKz0gLURGRUFUX0NTQ09QRQplbmRpZgoKaWZlcSAoJChORVRCRUFOUykseWVzKQojIE9ubHkgYWxsb3cgTkVUQkVBTlMgZm9yIGEgR1VJIGJ1aWxkLgppZmVxICh5ZXMsICQoR1VJKSkKREVGSU5FUyArPSAtREZFQVRfTkVUQkVBTlNfSU5URwoKaWZlcSAoJChOQkRFQlVHKSwgeWVzKQpERUZJTkVTICs9IC1ETkJERUJVRwpOQkRFQlVHX0lOQ0wgPSBuYmRlYnVnLmgKTkJERUJVR19TUkMgPSBuYmRlYnVnLmMKZW5kaWYKZW5kaWYKZW5kaWYKCmlmZGVmIFhQTQojIE9ubHkgYWxsb3cgWFBNIGZvciBhIEdVSSBidWlsZC4KaWZlcSAoeWVzLCAkKEdVSSkpCkNGTEFHUyArPSAtREZFQVRfWFBNX1czMiAtSSAkKFhQTSkvaW5jbHVkZQplbmRpZgplbmRpZgoKaWZlcSAoJChERUJVRykseWVzKQpDRkxBR1MgKz0gLWcgLWZzdGFjay1jaGVjawpERUJVR19TVUZGSVg9ZAplbHNlCmlmZXEgKCQoT1BUSU1JWkUpLCBTSVpFKQpDRkxBR1MgKz0gLU9zCmVsc2UKaWZlcSAoJChPUFRJTUlaRSksIE1BWFNQRUVEKQpDRkxBR1MgKz0gLU8zCkNGTEFHUyArPSAtZm9taXQtZnJhbWUtcG9pbnRlciAtZnJlZy1zdHJ1Y3QtcmV0dXJuCmVsc2UgICMgU1BFRUQKQ0ZMQUdTICs9IC1PMgplbmRpZgplbmRpZgpDRkxBR1MgKz0gLXMKZW5kaWYKCkxJQiA9IC1sa2VybmVsMzIgLWx1c2VyMzIgLWxnZGkzMiAtbGFkdmFwaTMyIC1sY29tZGxnMzIgLWxjb21jdGwzMiAtbHZlcnNpb24KR1VJT0JKID0gICQoT1VURElSKS9ndWkubyAkKE9VVERJUikvZ3VpX3czMi5vICQoT1VURElSKS9ndWlfYmV2YWwubyAkKE9VVERJUikvb3NfdzMyZXhlLm8KT0JKID0gXAoJJChPVVRESVIpL2Jsb3dmaXNoLm8gXAoJJChPVVRESVIpL2J1ZmZlci5vIFwKCSQoT1VURElSKS9jaGFyc2V0Lm8gXAoJJChPVVRESVIpL2RpZmYubyBcCgkkKE9VVERJUikvZGlncmFwaC5vIFwKCSQoT1VURElSKS9lZGl0Lm8gXAoJJChPVVRESVIpL2V2YWwubyBcCgkkKE9VVERJUikvZXhfY21kcy5vIFwKCSQoT1VURElSKS9leF9jbWRzMi5vIFwKCSQoT1VURElSKS9leF9kb2NtZC5vIFwKCSQoT1VURElSKS9leF9ldmFsLm8gXAoJJChPVVRESVIpL2V4X2dldGxuLm8gXAoJJChPVVRESVIpL2ZpbGVpby5vIFwKCSQoT1VURElSKS9mb2xkLm8gXAoJJChPVVRESVIpL2dldGNoYXIubyBcCgkkKE9VVERJUikvaGFyZGNvcHkubyBcCgkkKE9VVERJUikvaGFzaHRhYi5vIFwKCSQoT1VURElSKS9tYWluLm8gXAoJJChPVVRESVIpL21hcmsubyBcCgkkKE9VVERJUikvbWVtZmlsZS5vIFwKCSQoT1VURElSKS9tZW1saW5lLm8gXAoJJChPVVRESVIpL21lbnUubyBcCgkkKE9VVERJUikvbWVzc2FnZS5vIFwKCSQoT1VURElSKS9taXNjMS5vIFwKCSQoT1VURElSKS9taXNjMi5vIFwKCSQoT1VURElSKS9tb3ZlLm8gXAoJJChPVVRESVIpL21ieXRlLm8gXAoJJChPVVRESVIpL25vcm1hbC5vIFwKCSQoT1VURElSKS9vcHMubyBcCgkkKE9VVERJUikvb3B0aW9uLm8gXAoJJChPVVRESVIpL29zX3dpbjMyLm8gXAoJJChPVVRESVIpL29zX21zd2luLm8gXAoJJChPVVRESVIpL3BhdGhkZWYubyBcCgkkKE9VVERJUikvcG9wdXBtbnUubyBcCgkkKE9VVERJUikvcXVpY2tmaXgubyBcCgkkKE9VVERJUikvcmVnZXhwLm8gXAoJJChPVVRESVIpL3NjcmVlbi5vIFwKCSQoT1VURElSKS9zZWFyY2gubyBcCgkkKE9VVERJUikvc2hhMjU2Lm8gXAoJJChPVVRESVIpL3NwZWxsLm8gXAoJJChPVVRESVIpL3N5bnRheC5vIFwKCSQoT1VURElSKS90YWcubyBcCgkkKE9VVERJUikvdGVybS5vIFwKCSQoT1VURElSKS91aS5vIFwKCSQoT1VURElSKS91bmRvLm8gXAoJJChPVVRESVIpL3ZlcnNpb24ubyBcCgkkKE9VVERJUikvdmltcmMubyBcCgkkKE9VVERJUikvd2luZG93Lm8KCmlmZGVmIFBFUkwKT0JKICs9ICQoT1VURElSKS9pZl9wZXJsLm8KZW5kaWYKaWZkZWYgTFVBCk9CSiArPSAkKE9VVERJUikvaWZfbHVhLm8KZW5kaWYKaWZkZWYgTVpTQ0hFTUUKT0JKICs9ICQoT1VURElSKS9pZl9tenNjaC5vCk1aU0NIRU1FX0lOQ0wgPSBpZl9tenNjaC5oCmlmZXEgKHllcywkKE1aU0NIRU1FX0dFTkVSQVRFX0JBU0UpKQpDRkxBR1MgKz0gLURJTkNMVURFX01aU0NIRU1FX0JBU0UKTVpfRVhUUkFfREVQICs9IG16c2NoZW1lX2Jhc2UuYwplbmRpZgppZmVxICh5ZXMsJChNWlNDSEVNRV9QUkVDSVNFX0dDKSkKQ0ZMQUdTICs9IC1ETVpfUFJFQ0lTRV9HQwplbmRpZgplbmRpZgppZmRlZiBQWVRIT04KT0JKICs9ICQoT1VURElSKS9pZl9weXRob24ubwplbmRpZgppZmRlZiBQWVRIT04zCk9CSiArPSAkKE9VVERJUikvaWZfcHl0aG9uMy5vCmVuZGlmCmlmZGVmIFJVQlkKT0JKICs9ICQoT1VURElSKS9pZl9ydWJ5Lm8KZW5kaWYKaWZkZWYgVENMCk9CSiArPSAkKE9VVERJUikvaWZfdGNsLm8KZW5kaWYKaWZlcSAoJChDU0NPUEUpLHllcykKT0JKICs9ICQoT1VURElSKS9pZl9jc2NvcGUubwplbmRpZgppZmVxICgkKE5FVEJFQU5TKSx5ZXMpCiMgT25seSBhbGxvdyBORVRCRUFOUyBmb3IgYSBHVUkgYnVpbGQuCmlmZXEgKHllcywgJChHVUkpKQpPQkogKz0gJChPVVRESVIpL25ldGJlYW5zLm8KTElCICs9IC1sd3NvY2szMgplbmRpZgplbmRpZgppZmRlZiBYUE0KIyBPbmx5IGFsbG93IFhQTSBmb3IgYSBHVUkgYnVpbGQuCmlmZXEgKHllcywgJChHVUkpKQpPQkogKz0gJChPVVRESVIpL3hwbV93MzIubwojIFlvdSdsbCBuZWVkIGxpYlhwbS5hIGZyb20gaHR0cDovL2dudXdpbjMyLnNmLm5ldApMSUIgKz0gLUwgJChYUE0pL2xpYiAtbFhwbQplbmRpZgplbmRpZgoKCmlmZGVmIE1aU0NIRU1FCk1aU0NIRU1FX1NVRkZJWCA9IFoKZW5kaWYKCmlmZXEgKCQoR1VJKSx5ZXMpClRBUkdFVCA6PSBndmltJChERUJVR19TVUZGSVgpLmV4ZQpERUZJTkVTICs9ICQoREVGX0dVSSkKT0JKICs9ICQoR1VJT0JKKQpMRkxBR1MgKz0gLW13aW5kb3dzCk9VVERJUiA9IGdvYmokKERFQlVHX1NVRkZJWCkkKE1aU0NIRU1FX1NVRkZJWCkKZWxzZQpUQVJHRVQgOj0gdmltJChERUJVR19TVUZGSVgpLmV4ZQpPVVRESVIgPSBvYmokKERFQlVHX1NVRkZJWCkkKE1aU0NIRU1FX1NVRkZJWCkKZW5kaWYKCmlmZGVmIEdFVFRFWFQKaWZuZXEgKHllcywgJChHRVRURVhUKSkKQ0ZMQUdTICs9IC1JJChHRVRURVhUSU5DTFVERSkKaWZuZGVmIFNUQVRJQ19HRVRURVhUCkxJQiArPSAtTCQoR0VUVEVYVExJQikgLWwkKElOVExMSUIpCmlmZXEgKFVTRV9TQUZFX0dFVFRFWFRfRExMLCAkKERZTkFNSUNfR0VUVEVYVCkpCk9CSis9JChTQUZFX0dFVFRFWFRfRExMX09CSikKZW5kaWYKZWxzZQpMSUIgKz0gLUwkKEdFVFRFWFRMSUIpIC1saW50bAplbmRpZgplbmRpZgplbmRpZgoKaWZkZWYgUEVSTAppZmVxIChubywgJChEWU5BTUlDX1BFUkwpKQpMSUIgKz0gLWxwZXJsJChQRVJMX1ZFUikKZW5kaWYKZW5kaWYKCmlmZGVmIFRDTApMSUIgKz0gLUwkKFRDTCkvbGliCmlmZXEgKHllcywgJChEWU5BTUlDX1RDTCkpCkxJQiArPSAtbHRjbHN0dWIkKFRDTF9WRVIpCmVsc2UKTElCICs9IC1sdGNsJChUQ0xfVkVSKQplbmRpZgplbmRpZgoKaWZlcSAoeWVzLCAkKE9MRSkpCkxJQiArPSAtbG9sZWF1dDMyIC1sc3RkYysrCk9CSiArPSAkKE9VVERJUikvaWZfb2xlLm8KZW5kaWYKCmlmZXEgKHllcywgJChNQllURSkpCkRFRklORVMgKz0gLURGRUFUX01CWVRFCmVuZGlmCgppZmVxICh5ZXMsICQoSU1FKSkKREVGSU5FUyArPSAtREZFQVRfTUJZVEVfSU1FCmlmZXEgKHllcywgJChEWU5BTUlDX0lNRSkpCkRFRklORVMgKz0gLUREWU5BTUlDX0lNRQplbHNlCkxJQiArPSAtbGltbTMyCmVuZGlmCmVuZGlmCgppZmRlZiBJQ09OVgppZm5lcSAoeWVzLCAkKElDT05WKSkKTElCICs9IC1MJChJQ09OVikKQ0ZMQUdTICs9IC1JJChJQ09OVikKZW5kaWYKREVGSU5FUys9LUREWU5BTUlDX0lDT05WCmVuZGlmCgphbGw6ICQoVEFSR0VUKSB2aW1ydW4uZXhlIHh4ZC94eGQuZXhlIGluc3RhbGwuZXhlIHVuaW5zdGFsLmV4ZSBHdmltRXh0L2d2aW1leHQuZGxsCgp2aW1ydW4uZXhlOiB2aW1ydW4uYwoJJChDQykgJChDRkxBR1MpIC1vIHZpbXJ1bi5leGUgdmltcnVuLmMgJChMSUIpCgppbnN0YWxsLmV4ZTogZG9zaW5zdC5jCgkkKENDKSAkKENGTEFHUykgLW8gaW5zdGFsbC5leGUgZG9zaW5zdC5jICQoTElCKSAtbG9sZTMyIC1sdXVpZAoKdW5pbnN0YWwuZXhlOiB1bmluc3RhbC5jCgkkKENDKSAkKENGTEFHUykgLW8gdW5pbnN0YWwuZXhlIHVuaW5zdGFsLmMgJChMSUIpCgokKFRBUkdFVCk6ICQoT1VURElSKSAkKE9CSikKCSQoQ0MpICQoQ0ZMQUdTKSAkKExGTEFHUykgLW8gJEAgJChPQkopICQoTElCKSAtbG9sZTMyIC1sdXVpZCAkKExVQV9MSUIpICQoTVpTQ0hFTUVfTElCRElSKSAkKE1aU0NIRU1FX0xJQikgJChQWVRIT05MSUIpICQoUFlUSE9OM0xJQikgJChSVUJZTElCKQoKdXB4OiBleGVzCgl1cHggZ3ZpbS5leGUKCXVweCB2aW0uZXhlCgp4eGQveHhkLmV4ZTogeHhkL3h4ZC5jCgkkKE1BS0UpIC1DIHh4ZCAtZiBNYWtlX2N5Zy5tYWsgQ0M9JChDQykKCkd2aW1FeHQvZ3ZpbWV4dC5kbGw6IEd2aW1FeHQvZ3ZpbWV4dC5jcHAgR3ZpbUV4dC9ndmltZXh0LnJjIEd2aW1FeHQvZ3ZpbWV4dC5oCgkkKE1BS0UpIC1DIEd2aW1FeHQgLWYgTWFrZV9taW5nLm1hayBDUk9TUz0kKENST1NTKSBDUk9TU19DT01QSUxFPSQoQ1JPU1NfQ09NUElMRSkKCmNsZWFuOgoJLSQoREVMKSAkKE9VVERJUikkKERJUlNMQVNIKSoubwoJLSQoREVMKSAkKE9VVERJUikkKERJUlNMQVNIKSoucmVzCgktcm1kaXIgJChPVVRESVIpCgktJChERUwpICouZXhlCgktJChERUwpIHBhdGhkZWYuYwppZmRlZiBQRVJMCgktJChERUwpIGlmX3BlcmwuYwplbmRpZgppZmRlZiBNWlNDSEVNRQoJLSQoREVMKSBtenNjaGVtZV9iYXNlLmMKZW5kaWYKCSQoTUFLRSkgLUMgR3ZpbUV4dCAtZiBNYWtlX21pbmcubWFrIGNsZWFuCgkkKE1BS0UpIC1DIHh4ZCAtZiBNYWtlX2N5Zy5tYWsgY2xlYW4KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpJTkNMID0gdmltLmggZmVhdHVyZS5oIG9zX3dpbjMyLmggb3NfZG9zLmggYXNjaWkuaCBrZXltYXAuaCB0ZXJtLmggbWFjcm9zLmggXAoJc3RydWN0cy5oIHJlZ2V4cC5oIG9wdGlvbi5oIGV4X2NtZHMuaCBwcm90by5oIGdsb2JhbHMuaCBmYXJzaS5oIFwKCWd1aS5oCgokKE9VVERJUikvaWZfcHl0aG9uLm8gOiBpZl9weXRob24uYyAkKElOQ0wpCgkkKENDKSAtYyAkKENGTEFHUykgJChQWVRIT05JTkMpIC1ERFlOQU1JQ19QWVRIT05fRExMPVwicHl0aG9uJChQWVRIT05fVkVSKS5kbGxcIiAkPCAtbyAkQAoKJChPVVRESVIpL2lmX3B5dGhvbjMubyA6IGlmX3B5dGhvbjMuYyAkKElOQ0wpCgkkKENDKSAtYyAkKENGTEFHUykgJChQWVRIT04zSU5DKSAtRERZTkFNSUNfUFlUSE9OM19ETEw9XCJQWVRIT04kKFBZVEhPTjNfVkVSKS5kbGxcIiAkPCAtbyAkQAoKJChPVVRESVIpLyUubyA6ICUuYyAkKElOQ0wpCgkkKENDKSAtYyAkKENGTEFHUykgJDwgLW8gJEAKCiQoT1VURElSKS92aW1yZXMucmVzOiB2aW0ucmMgdmVyc2lvbi5oIGd1aV93MzJfcmMuaAoJJChXSU5EUkVTKSAkKERFRklORVMpIHZpbS5yYyAkKE9VVERJUikvdmltcmVzLnJlcwoKJChPVVRESVIpL3ZpbXJjLm86ICQoT1VURElSKS92aW1yZXMucmVzCgkkKFdJTkRSRVMpICQoT1VURElSKS92aW1yZXMucmVzICQoT1VURElSKS92aW1yYy5vCgokKE9VVERJUik6CgkkKE1LRElSKSAkKE9VVERJUikKCiQoT1VURElSKS9leF9kb2NtZC5vOglleF9kb2NtZC5jICQoSU5DTCkgZXhfY21kcy5oCgkkKENDKSAtYyAkKENGTEFHUykgZXhfZG9jbWQuYyAtbyAkKE9VVERJUikvZXhfZG9jbWQubwoKJChPVVRESVIpL2V4X2V2YWwubzoJZXhfZXZhbC5jICQoSU5DTCkgZXhfY21kcy5oCgkkKENDKSAtYyAkKENGTEFHUykgZXhfZXZhbC5jIC1vICQoT1VURElSKS9leF9ldmFsLm8KCiQoT1VURElSKS9pZl9jc2NvcGUubzoJaWZfY3Njb3BlLmMgJChJTkNMKSBpZl9jc2NvcGUuaAoJJChDQykgLWMgJChDRkxBR1MpIGlmX2NzY29wZS5jIC1vICQoT1VURElSKS9pZl9jc2NvcGUubwoKIyBSZW1vdmUgLURfX0lJRF9ERUZJTkVEX18gZm9yIG5ld2VyIHZlcnNpb25zIG9mIHRoZSB3MzJhcGkKJChPVVRESVIpL2lmX29sZS5vOiBpZl9vbGUuY3BwICQoSU5DTCkKCSQoQ0MpICQoQ0ZMQUdTKSAtYyAtbyAkKE9VVERJUikvaWZfb2xlLm8gaWZfb2xlLmNwcAoKJChPVVRESVIpL2lmX3J1YnkubzogaWZfcnVieS5jICQoSU5DTCkKaWZlcSAoMTYsICQoUlVCWSkpCgkkKENDKSAkKENGTEFHUykgLVVfV0lOMzIgLWMgLW8gJChPVVRESVIpL2lmX3J1YnkubyBpZl9ydWJ5LmMKZW5kaWYKCmlmX3BlcmwuYzogaWZfcGVybC54cyB0eXBlbWFwCglwZXJsICQoUEVSTExJQikvRXh0VXRpbHMveHN1YnBwIC1wcm90b3R5cGVzIC10eXBlbWFwIFwKCSAgICAgJChQRVJMTElCKS9FeHRVdGlscy90eXBlbWFwIGlmX3BlcmwueHMgPiAkQAoKJChPVVRESVIpL25ldGJlYW5zLm86CW5ldGJlYW5zLmMgJChJTkNMKSAkKE5CREVCVUdfSU5DTCkgJChOQkRFQlVHX1NSQykKCSQoQ0MpIC1jICQoQ0ZMQUdTKSBuZXRiZWFucy5jIC1vICQoT1VURElSKS9uZXRiZWFucy5vCgokKE9VVERJUikvaWZfbXpzY2gubzoJaWZfbXpzY2guYyAkKElOQ0wpIGlmX216c2NoLmggJChNWl9FWFRSQV9ERVApCgkkKENDKSAtYyAkKENGTEFHUykgaWZfbXpzY2guYyAtbyAkKE9VVERJUikvaWZfbXpzY2gubwoKbXpzY2hlbWVfYmFzZS5jOgoJJChNWlNDSEVNRSkvbXpjIC0tYy1tb2RzIG16c2NoZW1lX2Jhc2UuYyArK2xpYiBzY2hlbWUvYmFzZQoKcGF0aGRlZi5jOiAkKElOQ0wpCmlmbmVxIChzaC5leGUsICQoU0hFTEwpKQoJQGVjaG8gY3JlYXRpbmcgcGF0aGRlZi5jCglAZWNobyAnLyogcGF0aGRlZi5jICovJyA+IHBhdGhkZWYuYwoJQGVjaG8gJyNpbmNsdWRlICJ2aW0uaCInID4+IHBhdGhkZWYuYwoJQGVjaG8gJ2NoYXJfdSAqZGVmYXVsdF92aW1fZGlyID0gKGNoYXJfdSAqKSIkKFZJTVJDTE9DKSI7JyA+PiBwYXRoZGVmLmMKCUBlY2hvICdjaGFyX3UgKmRlZmF1bHRfdmltcnVudGltZV9kaXIgPSAoY2hhcl91ICopIiQoVklNUlVOVElNRURJUikiOycgPj4gcGF0aGRlZi5jCglAZWNobyAnY2hhcl91ICphbGxfY2ZsYWdzID0gKGNoYXJfdSAqKSIkKENDKSAkKENGTEFHUykiOycgPj4gcGF0aGRlZi5jCglAZWNobyAnY2hhcl91ICphbGxfbGZsYWdzID0gKGNoYXJfdSAqKSIkKENDKSAkKENGTEFHUykgJChMRkxBR1MpIC1vICQoVEFSR0VUKSAkKExJQikgLWxvbGUzMiAtbHV1aWQgJChMVUFfTElCKSAkKE1aU0NIRU1FX0xJQkRJUikgJChNWlNDSEVNRV9MSUIpICQoUFlUSE9OTElCKSAkKFBZVEhPTjNMSUIpICQoUlVCWUxJQikiOycgPj4gcGF0aGRlZi5jCglAZWNobyAnY2hhcl91ICpjb21waWxlZF91c2VyID0gKGNoYXJfdSAqKSIkKFVTRVJOQU1FKSI7JyA+PiBwYXRoZGVmLmMKCUBlY2hvICdjaGFyX3UgKmNvbXBpbGVkX3N5cyA9IChjaGFyX3UgKikiJChVU0VSRE9NQUlOKSI7JyA+PiBwYXRoZGVmLmMKZWxzZQoJQGVjaG8gY3JlYXRpbmcgcGF0aGRlZi5jCglAZWNobyAvKiBwYXRoZGVmLmMgKi8gPiBwYXRoZGVmLmMKCUBlY2hvICNpbmNsdWRlICJ2aW0uaCIgPj4gcGF0aGRlZi5jCglAZWNobyBjaGFyX3UgKmRlZmF1bHRfdmltX2RpciA9IChjaGFyX3UgKikiJChWSU1SQ0xPQykiOyA+PiBwYXRoZGVmLmMKCUBlY2hvIGNoYXJfdSAqZGVmYXVsdF92aW1ydW50aW1lX2RpciA9IChjaGFyX3UgKikiJChWSU1SVU5USU1FRElSKSI7ID4+IHBhdGhkZWYuYwoJQGVjaG8gY2hhcl91ICphbGxfY2ZsYWdzID0gKGNoYXJfdSAqKSIkKENDKSAkKENGTEFHUykiOyA+PiBwYXRoZGVmLmMKCUBlY2hvIGNoYXJfdSAqYWxsX2xmbGFncyA9IChjaGFyX3UgKikiJChDQykgJChDRkxBR1MpICQoTEZMQUdTKSAtbyAkKFRBUkdFVCkgJChMSUIpIC1sb2xlMzIgLWx1dWlkICQoTFVBX0xJQikgJChNWlNDSEVNRV9MSUJESVIpICQoTVpTQ0hFTUVfTElCKSAkKFBZVEhPTkxJQikgJChQWVRIT04zTElCKSAkKFJVQllMSUIpIjsgPj4gcGF0aGRlZi5jCglAZWNobyBjaGFyX3UgKmNvbXBpbGVkX3VzZXIgPSAoY2hhcl91ICopIiQoVVNFUk5BTUUpIjsgPj4gcGF0aGRlZi5jCglAZWNobyBjaGFyX3UgKmNvbXBpbGVkX3N5cyA9IChjaGFyX3UgKikiJChVU0VSRE9NQUlOKSI7ID4+IHBhdGhkZWYuYwplbmRpZgo=