Advertisement
TienKiraBN

perl

Aug 8th, 2015
356
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 102.18 KB | None | 0 0
  1. IyEvdXNyL2Jpbi9wZXJsIC1JL3Vzci9sb2NhbC9iYW5kbWluCnVzZSBNSU1FOjpCYXNlNjQ7CiRWZXJzaW9uPSAiQ0dJLVRlbG5ldCBWZXJzaW9uIDEuMyI7CiRFZGl0UGVyc2lvbj0iPGZvbnQgc3R5bGU9J3RleHQtc2hhZG93OiAwcHggMHB4IDZweCByZ2IoMjU1LCAwLCAwKSwgMHB4IDBweCA1cHggcmdiKDI1NSwgMCwgMCksIDBweCAwcHggNXB4IHJnYigyNTUsIDAsIDApOyBjb2xvcjojZmZmZmZmOyBmb250LXdlaWdodDpib2xkOyc+TW9uS2lyYTwvZm9udD4iOwoKJFBhc3N3b3JkID0gIm1vbmtpcmFkZyI7CSMgQ2hhbmdlIHRoaXMuIFlvdSB3aWxsIG5lZWQgdG8gZW50ZXIgdGhpcwojIHRvIGxvZ2luLgpzdWIgSXNfV2luKCl7Cgkkb3MgPSAmdHJpbSgkRU5WeyJTRVJWRVJfU09GVFdBUkUifSk7CglpZigkb3MgPX4gbS93aW4vaSl7CgkJcmV0dXJuIDE7Cgl9CgllbHNlewoJCXJldHVybiAwOwoJfQp9CiRXaW5OVCA9ICZJc19XaW4oKTsJCQkJIyBZb3UgbmVlZCB0byBjaGFuZ2UgdGhlIHZhbHVlIG9mIHRoaXMgdG8gMSBpZgoJCQkJCQkJCSMgeW91J3JlIHJ1bm5pbmcgdGhpcyBzY3JpcHQgb24gYSBXaW5kb3dzIE5UCgkJCQkJCQkJIyBtYWNoaW5lLiBJZiB5b3UncmUgcnVubmluZyBpdCBvbiBVbml4LCB5b3UKCQkJCQkJCQkjIGNhbiBsZWF2ZSB0aGUgdmFsdWUgYXMgaXQgaXMuCgokTlRDbWRTZXAgPSAiJiI7CQkJCSMgVGhpcyBjaGFyYWN0ZXIgaXMgdXNlZCB0byBzZXBlcmF0ZSAyIGNvbW1hbmRzCgkJCQkJCQkJIyBpbiBhIGNvbW1hbmQgbGluZSBvbiBXaW5kb3dzIE5ULgoKJFVuaXhDbWRTZXAgPSAiOyI7CQkJCSMgVGhpcyBjaGFyYWN0ZXIgaXMgdXNlZCB0byBzZXBlcmF0ZSAyIGNvbW1hbmRzCgkJCQkJCQkJIyBpbiBhIGNvbW1hbmQgbGluZSBvbiBVbml4LgoKJENvbW1hbmRUaW1lb3V0RHVyYXRpb24gPSAxMDsJIyBUaW1lIGluIHNlY29uZHMgYWZ0ZXIgY29tbWFuZHMgd2lsbCBiZSBraWxsZWQKCQkJCQkJCQkjIERvbid0IHNldCB0aGlzIHRvIGEgdmVyeSBsYXJnZSB2YWx1ZS4gVGhpcyBpcwoJCQkJCQkJCSMgdXNlZnVsIGZvciBjb21tYW5kcyB0aGF0IG1heSBoYW5nIG9yIHRoYXQKCQkJCQkJCQkjIHRha2UgdmVyeSBsb25nIHRvIGV4ZWN1dGUsIGxpa2UgImZpbmQgLyIuCgkJCQkJCQkJIyBUaGlzIGlzIHZhbGlkIG9ubHkgb24gVW5peCBzZXJ2ZXJzLiBJdCBpcwoJCQkJCQkJCSMgaWdub3JlZCBvbiBOVCBTZXJ2ZXJzLgoKJFNob3dEeW5hbWljT3V0cHV0ID0gMTsJCQkjIElmIHRoaXMgaXMgMSwgdGhlbiBkYXRhIGlzIHNlbnQgdG8gdGhlCgkJCQkJCQkJIyBicm93c2VyIGFzIHNvb24gYXMgaXQgaXMgb3V0cHV0LCBvdGhlcndpc2UKCQkJCQkJCQkjIGl0IGlzIGJ1ZmZlcmVkIGFuZCBzZW5kIHdoZW4gdGhlIGNvbW1hbmQKCQkJCQkJCQkjIGNvbXBsZXRlcy4gVGhpcyBpcyB1c2VmdWwgZm9yIGNvbW1hbmRzIGxpa2UKCQkJCQkJCQkjIHBpbmcsIHNvIHRoYXQgeW91IGNhbiBzZWUgdGhlIG91dHB1dCBhcyBpdAoJCQkJCQkJCSMgaXMgYmVpbmcgZ2VuZXJhdGVkLgoKIyBET04nVCBDSEFOR0UgQU5ZVEhJTkcgQkVMT1cgVEhJUyBMSU5FIFVOTEVTUyBZT1UgS05PVyBXSEFUIFlPVSdSRSBET0lORyAhIQoKJENtZFNlcCA9ICgkV2luTlQgPyAkTlRDbWRTZXAgOiAkVW5peENtZFNlcCk7CiRDbWRQd2QgPSAoJFdpbk5UID8gImNkIiA6ICJwd2QiKTsKJFBhdGhTZXAgPSAoJFdpbk5UID8gIlxcIiA6ICIvIik7CiRSZWRpcmVjdG9yID0gKCRXaW5OVCA/ICIgMj4mMSAxPiYyIiA6ICIgMT4mMSAyPiYxIik7CiRjb2xzPSAxNTA7CiRyb3dzPSAyNjsKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFJlYWRzIHRoZSBpbnB1dCBzZW50IGJ5IHRoZSBicm93c2VyIGFuZCBwYXJzZXMgdGhlIGlucHV0IHZhcmlhYmxlcy4gSXQKIyBwYXJzZXMgR0VULCBQT1NUIGFuZCBtdWx0aXBhcnQvZm9ybS1kYXRhIHRoYXQgaXMgdXNlZCBmb3IgdXBsb2FkaW5nIGZpbGVzLgojIFRoZSBmaWxlbmFtZSBpcyBzdG9yZWQgaW4gJGlueydmJ30gYW5kIHRoZSBkYXRhIGlzIHN0b3JlZCBpbiAkaW57J2ZpbGVkYXRhJ30uCiMgT3RoZXIgdmFyaWFibGVzIGNhbiBiZSBhY2Nlc3NlZCB1c2luZyAkaW57J3Zhcid9LCB3aGVyZSB2YXIgaXMgdGhlIG5hbWUgb2YKIyB0aGUgdmFyaWFibGUuIE5vdGU6IE1vc3Qgb2YgdGhlIGNvZGUgaW4gdGhpcyBmdW5jdGlvbiBpcyB0YWtlbiBmcm9tIG90aGVyIENHSQojIHNjcmlwdHMuCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFJlYWRQYXJzZSAKewoJbG9jYWwgKCppbikgPSBAXyBpZiBAXzsKCWxvY2FsICgkaSwgJGxvYywgJGtleSwgJHZhbCk7CgkKCSRNdWx0aXBhcnRGb3JtRGF0YSA9ICRFTlZ7J0NPTlRFTlRfVFlQRSd9ID1+IC9tdWx0aXBhcnRcL2Zvcm0tZGF0YTsgYm91bmRhcnk9KC4rKSQvOwoKCWlmKCRFTlZ7J1JFUVVFU1RfTUVUSE9EJ30gZXEgIkdFVCIpCgl7CgkJJGluID0gJEVOVnsnUVVFUllfU1RSSU5HJ307Cgl9CgllbHNpZigkRU5WeydSRVFVRVNUX01FVEhPRCd9IGVxICJQT1NUIikKCXsKCQliaW5tb2RlKFNURElOKSBpZiAkTXVsdGlwYXJ0Rm9ybURhdGEgJiAkV2luTlQ7CgkJcmVhZChTVERJTiwgJGluLCAkRU5WeydDT05URU5UX0xFTkdUSCd9KTsKCX0KCgkjIGhhbmRsZSBmaWxlIHVwbG9hZCBkYXRhCglpZigkRU5WeydDT05URU5UX1RZUEUnfSA9fiAvbXVsdGlwYXJ0XC9mb3JtLWRhdGE7IGJvdW5kYXJ5PSguKykkLykKCXsKCQkkQm91bmRhcnkgPSAnLS0nLiQxOyAjIHBsZWFzZSByZWZlciB0byBSRkMxODY3IAoJCUBsaXN0ID0gc3BsaXQoLyRCb3VuZGFyeS8sICRpbik7IAoJCSRIZWFkZXJCb2R5ID0gJGxpc3RbMV07CgkJJEhlYWRlckJvZHkgPX4gL1xyXG5cclxufFxuXG4vOwoJCSRIZWFkZXIgPSAkYDsKCQkkQm9keSA9ICQnOwogCQkkQm9keSA9fiBzL1xyXG4kLy87ICMgdGhlIGxhc3QgXHJcbiB3YXMgcHV0IGluIGJ5IE5ldHNjYXBlCgkJJGlueydmaWxlZGF0YSd9ID0gJEJvZHk7CgkJJEhlYWRlciA9fiAvZmlsZW5hbWU9XCIoLispXCIvOyAKCQkkaW57J2YnfSA9ICQxOyAKCQkkaW57J2YnfSA9fiBzL1wiLy9nOwoJCSRpbnsnZid9ID1+IHMvXHMvL2c7CgoJCSMgcGFyc2UgdHJhaWxlcgoJCWZvcigkaT0yOyAkbGlzdFskaV07ICRpKyspCgkJeyAKCQkJJGxpc3RbJGldID1+IHMvXi4rbmFtZT0kLy87CgkJCSRsaXN0WyRpXSA9fiAvXCIoXHcrKVwiLzsKCQkJJGtleSA9ICQxOwoJCQkkdmFsID0gJCc7CgkJCSR2YWwgPX4gcy8oXihcclxuXHJcbnxcblxuKSl8KFxyXG4kfFxuJCkvL2c7CgkJCSR2YWwgPX4gcy8lKC4uKS9wYWNrKCJjIiwgaGV4KCQxKSkvZ2U7CgkJCSRpbnska2V5fSA9ICR2YWw7IAoJCX0KCX0KCWVsc2UgIyBzdGFuZGFyZCBwb3N0IGRhdGEgKHVybCBlbmNvZGVkLCBub3QgbXVsdGlwYXJ0KQoJewoJCUBpbiA9IHNwbGl0KC8mLywgJGluKTsKCQlmb3JlYWNoICRpICgwIC4uICQjaW4pCgkJewoJCQkkaW5bJGldID1+IHMvXCsvIC9nOwoJCQkoJGtleSwgJHZhbCkgPSBzcGxpdCgvPS8sICRpblskaV0sIDIpOwoJCQkka2V5ID1+IHMvJSguLikvcGFjaygiYyIsIGhleCgkMSkpL2dlOwoJCQkkdmFsID1+IHMvJSguLikvcGFjaygiYyIsIGhleCgkMSkpL2dlOwoJCQkkaW57JGtleX0gLj0gIlwwIiBpZiAoZGVmaW5lZCgkaW57JGtleX0pKTsKCQkJJGlueyRrZXl9IC49ICR2YWw7CgkJfQoJfQp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgUHJpbnRzIHRoZSBIVE1MIFBhZ2UgSGVhZGVyCiMgQXJndW1lbnQgMTogRm9ybSBpdGVtIG5hbWUgdG8gd2hpY2ggZm9jdXMgc2hvdWxkIGJlIHNldAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBQcmludFBhZ2VIZWFkZXIKewoJJEVuY29kZWRDdXJyZW50RGlyID0gJEN1cnJlbnREaXI7CgkkRW5jb2RlZEN1cnJlbnREaXIgPX4gcy8oW15hLXpBLVowLTldKS8nJScudW5wYWNrKCJIKiIsJDEpL2VnOwoJbXkgJGRpciA9JEN1cnJlbnREaXI7CgkkZGlyPX4gcy9cXC9cXFxcL2c7CglwcmludCAiQ29udGVudC10eXBlOiB0ZXh0L2h0bWxcblxuIjsKCXByaW50IDw8RU5EOwo8aHRtbD4KPGhlYWQ+CjxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KPHRpdGxlPk1vbktpcmEgQ0dJIFNoZWxsPC90aXRsZT4KCiRIdG1sTWV0YUhlYWRlcgoKPC9oZWFkPgo8c3R5bGU+CmJvZHl7CmZvbnQ6IDEwcHQgVmVyZGFuYTsKfQp0ciB7CkJPUkRFUi1SSUdIVDogICMzZTNlM2UgMXB4IHNvbGlkOwpCT1JERVItVE9QOiAgICAjM2UzZTNlIDFweCBzb2xpZDsKQk9SREVSLUxFRlQ6ICAgIzNlM2UzZSAxcHggc29saWQ7CkJPUkRFUi1CT1RUT006ICMzZTNlM2UgMXB4IHNvbGlkOwpjb2xvcjogI2ZmOTkwMDsKfQp0ZCB7CkJPUkRFUi1SSUdIVDogICMzZTNlM2UgMXB4IHNvbGlkOwpCT1JERVItVE9QOiAgICAjM2UzZTNlIDFweCBzb2xpZDsKQk9SREVSLUxFRlQ6ICAgIzNlM2UzZSAxcHggc29saWQ7CkJPUkRFUi1CT1RUT006ICMzZTNlM2UgMXB4IHNvbGlkOwpjb2xvcjogIzJCQThFQzsKZm9udDogMTBwdCBWZXJkYW5hOwp9Cgp0YWJsZSB7CkJPUkRFUi1SSUdIVDogICMzZTNlM2UgMXB4IHNvbGlkOwpCT1JERVItVE9QOiAgICAjM2UzZTNlIDFweCBzb2xpZDsKQk9SREVSLUxFRlQ6ICAgIzNlM2UzZSAxcHggc29saWQ7CkJPUkRFUi1CT1RUT006ICMzZTNlM2UgMXB4IHNvbGlkOwpCQUNLR1JPVU5ELUNPTE9SOiAjMTExOwp9CgoKaW5wdXQgewpCT1JERVItUklHSFQ6ICAjM2UzZTNlIDFweCBzb2xpZDsKQk9SREVSLVRPUDogICAgIzNlM2UzZSAxcHggc29saWQ7CkJPUkRFUi1MRUZUOiAgICMzZTNlM2UgMXB4IHNvbGlkOwpCT1JERVItQk9UVE9NOiAjM2UzZTNlIDFweCBzb2xpZDsKQkFDS0dST1VORC1DT0xPUjogQmxhY2s7CmZvbnQ6IDEwcHQgVmVyZGFuYTsKY29sb3I6ICNmZjk5MDA7Cn0KCmlucHV0LnN1Ym1pdCB7CnRleHQtc2hhZG93OiAwcHQgMHB0IDAuM2VtIGN5YW4sIDBwdCAwcHQgMC4zZW0gY3lhbjsKY29sb3I6ICNGRkZGRkY7CmJvcmRlci1jb2xvcjogIzAwOTkwMDsKfQoKY29kZSB7CmJvcmRlcgkJCTogZGFzaGVkIDBweCAjMzMzOwpCQUNLR1JPVU5ELUNPTE9SOiBCbGFjazsKZm9udDogMTBwdCBWZXJkYW5hIGJvbGQ7CmNvbG9yOiB3aGlsZTsKfQoKcnVuIHsKYm9yZGVyCQkJOiBkYXNoZWQgMHB4ICMzMzM7CmZvbnQ6IDEwcHQgVmVyZGFuYSBib2xkOwpjb2xvcjogI0ZGMDBBQTsKfQoKdGV4dGFyZWEgewpCT1JERVItUklHSFQ6ICAjM2UzZTNlIDFweCBzb2xpZDsKQk9SREVSLVRPUDogICAgIzNlM2UzZSAxcHggc29saWQ7CkJPUkRFUi1MRUZUOiAgICMzZTNlM2UgMXB4IHNvbGlkOwpCT1JERVItQk9UVE9NOiAjM2UzZTNlIDFweCBzb2xpZDsKQkFDS0dST1VORC1DT0xPUjogIzFiMWIxYjsKZm9udDogRml4ZWRzeXMgYm9sZDsKY29sb3I6ICMwMEZGMDA7Cn0KQTpsaW5rIHsKCUNPTE9SOiAjMkJBOEVDOyBURVhULURFQ09SQVRJT046IG5vbmUKfQpBOnZpc2l0ZWQgewoJQ09MT1I6ICMyQkE4RUM7IFRFWFQtREVDT1JBVElPTjogbm9uZQp9CkE6aG92ZXIgewoJdGV4dC1zaGFkb3c6IDBwdCAwcHQgMC4zZW0gY3lhbiwgMHB0IDBwdCAwLjNlbSBjeWFuOwoJY29sb3I6ICNGRkZGRkY7IFRFWFQtREVDT1JBVElPTjogbm9uZQp9CkE6YWN0aXZlIHsKCWNvbG9yOiBSZWQ7IFRFWFQtREVDT1JBVElPTjogbm9uZQp9CgoubGlzdGRpciB0cjpob3ZlcnsKCWJhY2tncm91bmQ6ICM0NDQ7Cn0KLmxpc3RkaXIgdHI6aG92ZXIgdGR7CgliYWNrZ3JvdW5kOiAjNDQ0OwoJdGV4dC1zaGFkb3c6IDBwdCAwcHQgMC4zZW0gY3lhbiwgMHB0IDBwdCAwLjNlbSBjeWFuOwoJY29sb3I6ICNGRkZGRkY7IFRFWFQtREVDT1JBVElPTjogbm9uZTsKfQoubm90bGluZXsKCWJhY2tncm91bmQ6ICMxMTE7Cn0KLmxpbmV7CgliYWNrZ3JvdW5kOiAjMjIyOwp9Cjwvc3R5bGU+CjxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgpmdW5jdGlvbiBjaG1vZF9mb3JtKGksZmlsZSkKewoJLyp2YXIgYWpheD0nYWpheF9Qb3N0RGF0YSgiRm9ybVBlcm1zXycraSsnIiwiJFNjcmlwdExvY2F0aW9uIiwiUmVzcG9uc2VEYXRhIik7IHJldHVybiBmYWxzZTsnOyovCgl2YXIgYWpheD0iIjsKCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJGaWxlUGVybXNfIitpKS5pbm5lckhUTUw9Ijxmb3JtIG5hbWU9Rm9ybVBlcm1zXyIgKyBpKyAiIGFjdGlvbj0nJyBtZXRob2Q9J1BPU1QnPjxpbnB1dCBpZD10ZXh0XyIgKyBpICsgIiAgbmFtZT1jaG1vZCB0eXBlPXRleHQgc2l6ZT01IC8+PGlucHV0IHR5cGU9c3VibWl0IGNsYXNzPSdzdWJtaXQnIG9uY2xpY2s9JyIgKyBhamF4ICsgIicgdmFsdWU9T0s+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YSB2YWx1ZT0nZ3VpJz48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1kIHZhbHVlPSckZGlyJz48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1mIHZhbHVlPSciK2ZpbGUrIic+PC9mb3JtPiI7Cglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dF8iICsgaSkuZm9jdXMoKTsKfQpmdW5jdGlvbiBybV9jaG1vZF9mb3JtKHJlc3BvbnNlLGkscGVybXMsZmlsZSkKewoJcmVzcG9uc2UuaW5uZXJIVE1MID0gIjxzcGFuIG9uY2xpY2s9XFxcImNobW9kX2Zvcm0oIiArIGkgKyAiLCciKyBmaWxlKyAiJylcXFwiID4iKyBwZXJtcyArIjwvc3Bhbj48L3RkPiI7Cn0KZnVuY3Rpb24gcmVuYW1lX2Zvcm0oaSxmaWxlLGYpCnsKCXZhciBhamF4PSIiOwoJZi5yZXBsYWNlKC9cXFxcL2csIlxcXFxcXFxcIik7Cgl2YXIgYmFjaz0icm1fcmVuYW1lX2Zvcm0oIitpKyIsXFxcIiIrZmlsZSsiXFxcIixcXFwiIitmKyJcXFwiKTsgcmV0dXJuIGZhbHNlOyI7Cglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiRmlsZV8iK2kpLmlubmVySFRNTD0iPGZvcm0gbmFtZT1Gb3JtUGVybXNfIiArIGkrICIgYWN0aW9uPScnIG1ldGhvZD0nUE9TVCc+PGlucHV0IGlkPXRleHRfIiArIGkgKyAiICBuYW1lPXJlbmFtZSB0eXBlPXRleHQgdmFsdWU9ICciK2ZpbGUrIicgLz48aW5wdXQgdHlwZT1zdWJtaXQgY2xhc3M9J3N1Ym1pdCcgb25jbGljaz0nIiArIGFqYXggKyAiJyB2YWx1ZT1PSz48aW5wdXQgdHlwZT1zdWJtaXQgY2xhc3M9J3N1Ym1pdCcgb25jbGljaz0nIiArIGJhY2sgKyAiJyB2YWx1ZT1DYW5jZWw+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YSB2YWx1ZT0nZ3VpJz48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1kIHZhbHVlPSckZGlyJz48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1mIHZhbHVlPSciK2ZpbGUrIic+PC9mb3JtPiI7Cglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dF8iICsgaSkuZm9jdXMoKTsKfQpmdW5jdGlvbiBybV9yZW5hbWVfZm9ybShpLGZpbGUsZikKewoJaWYoZj09J2YnKQoJewoJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJGaWxlXyIraSkuaW5uZXJIVE1MPSI8YSBocmVmPSc/YT1jb21tYW5kJmQ9JGRpciZjPWVkaXQlMjAiK2ZpbGUrIiUyMCc+IiArZmlsZSsgIjwvYT4iOwoJfWVsc2UKCXsKCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiRmlsZV8iK2kpLmlubmVySFRNTD0iPGEgaHJlZj0nP2E9Z3VpJmQ9IitmKyInPlsgIiArZmlsZSsgIiBdPC9hPiI7Cgl9Cn0KPC9zY3JpcHQ+Cjxib2R5IG9uTG9hZD0iZG9jdW1lbnQuZi5AXy5mb2N1cygpIiBiZ2NvbG9yPSIjMGMwYzBjIiB0b3BtYXJnaW49IjAiIGxlZnRtYXJnaW49IjAiIG1hcmdpbndpZHRoPSIwIiBtYXJnaW5oZWlnaHQ9IjAiPgo8Y2VudGVyPjxjb2RlPgo8YnI+PC9icj4KPHRhYmxlIGJvcmRlcj0iMSIgd2lkdGg9Ijk2JSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIyIj4KPHRyPgoJPHRkIGFsaWduPSJjZW50ZXIiIHJvd3NwYW49IjMiPgoJCSRFZGl0UGVyc2lvbgoJPC90ZD4KCTx0ZD48Zm9udCBjb2xvcj0icmVkIj5Db25uZWN0aW5nOjwvZm9udD4gJEVOVnsnU0VSVkVSX05BTUUnfSB8IDxmb250IGNvbG9yPSJyZWQiPlBhdGggOjwvZm9udD4gJEVOVnsnRE9DVU1FTlRfUk9PVCd9PC90ZD4KCTx0ZD4KCQk8Zm9udCBjb2xvcj0icmVkIj5TZXJ2ZXIgSVA6PGZvbnQgY29sb3I9IiNmZjk5MDAiPiAkRU5WeydTRVJWRVJfQUREUid9PC9mb250PiB8IFlvdXIgSVA6IDxmb250IGNvbG9yPSIjZmY5OTAwIj4kRU5WeydSRU1PVEVfQUREUid9PC9mb250PjwvZm9udD4KCTwvdGQ+CjwvdHI+Cjx0cj4KPHRkIGNvbHNwYW49IjMiPgoJPGZvbnQgZmFjZT0iVmVyZGFuYSIgc2l6ZT0iMiI+PGZvbnQgY29sb3I9InJlZCI+U2VydmVyOjwvZm9udD4gJEVOVnsiU0VSVkVSX1NPRlRXQVJFIn08L2ZvbnQ+CjwvdGQ+CjwvdHI+Cjx0cj4KPHRkIGNvbHNwYW49IjMiPgoJPGZvbnQgZmFjZT0iVmVyZGFuYSIgc2l6ZT0iMiI+CgkJPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uIj5Ib21lPC9hPiB8IAoJCTxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWNvbW1hbmQmZD0kRW5jb2RlZEN1cnJlbnREaXIiPkNvbW1hbmQ8L2E+IHwKCQk8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1ndWkmZD0kRW5jb2RlZEN1cnJlbnREaXIiPkdVSTwvYT4gfCAKCQk8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT11cGxvYWQmZD0kRW5jb2RlZEN1cnJlbnREaXIiPlVwbG9hZCBGaWxlPC9hPiB8IAoJCTxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWRvd25sb2FkJmQ9JEVuY29kZWRDdXJyZW50RGlyIj5Eb3dubG9hZCBGaWxlPC9hPiB8CgoJCTxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWJhY2tiaW5kIj5CYWNrICYgQmluZDwvYT4gfAoJCTxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWJydXRlZm9yY2VyIj5CcnV0ZSBGb3JjZXI8L2E+IHwKCQk8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1jaGVja2xvZyI+Q2hlY2sgTG9nPC9hPiB8CgkJPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9ZG9tYWluc3VzZXIiPkRvbWFpbnMvVXNlcnM8L2E+IHwKCQk8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1jb25maWdtYXJpb24iPkdldCBBbGwgQ29uZmlnPC9hPiB8CgkJPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9bG9nb3V0Ij5Mb2dvdXQ8L2E+IHwKCQk8YSB0YXJnZXQ9J19ibGFuaycgaHJlZj0iIyI+SGVscDwvYT4KCTwvZm9udD4JCjwvdGQ+CjwvdHI+CjwvdGFibGU+Cjxmb250IGlkPSJSZXNwb25zZURhdGEiIGNvbG9yPSIjRkZGRkZGIiA+CkVORAp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgUHJpbnRzIHRoZSBMb2dpbiBTY3JlZW4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgUHJpbnRMb2dpblNjcmVlbgp7CgoJcHJpbnQgPDxFTkQ7CjxwcmU+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgpUeXBpbmdUZXh0ID0gZnVuY3Rpb24oZWxlbWVudCwgaW50ZXJ2YWwsIGN1cnNvciwgZmluaXNoZWRDYWxsYmFjaykgewogIGlmKCh0eXBlb2YgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQgPT0gInVuZGVmaW5lZCIpIHx8ICh0eXBlb2YgZWxlbWVudC5pbm5lckhUTUwgPT0gInVuZGVmaW5lZCIpKSB7CiAgICB0aGlzLnJ1bm5pbmcgPSB0cnVlOwkvLyBOZXZlciBydW4uCiAgICByZXR1cm47CiAgfQogIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7CiAgdGhpcy5maW5pc2hlZENhbGxiYWNrID0gKGZpbmlzaGVkQ2FsbGJhY2sgPyBmaW5pc2hlZENhbGxiYWNrIDogZnVuY3Rpb24oKSB7IHJldHVybjsgfSk7CiAgdGhpcy5pbnRlcnZhbCA9ICh0eXBlb2YgaW50ZXJ2YWwgPT0gInVuZGVmaW5lZCIgPyAxMDAgOiBpbnRlcnZhbCk7CiAgdGhpcy5vcmlnVGV4dCA9IHRoaXMuZWxlbWVudC5pbm5lckhUTUw7CiAgdGhpcy51bnBhcnNlZE9yaWdUZXh0ID0gdGhpcy5vcmlnVGV4dDsKICB0aGlzLmN1cnNvciA9IChjdXJzb3IgPyBjdXJzb3IgOiAiIik7CiAgdGhpcy5jdXJyZW50VGV4dCA9ICIiOwogIHRoaXMuY3VycmVudENoYXIgPSAwOwogIHRoaXMuZWxlbWVudC50eXBpbmdUZXh0ID0gdGhpczsKICBpZih0aGlzLmVsZW1lbnQuaWQgPT0gIiIpIHRoaXMuZWxlbWVudC5pZCA9ICJ0eXBpbmd0ZXh0IiArIFR5cGluZ1RleHQuY3VycmVudEluZGV4Kys7CiAgVHlwaW5nVGV4dC5hbGwucHVzaCh0aGlzKTsKICB0aGlzLnJ1bm5pbmcgPSBmYWxzZTsKICB0aGlzLmluVGFnID0gZmFsc2U7CiAgdGhpcy50YWdCdWZmZXIgPSAiIjsKICB0aGlzLmluSFRNTEVudGl0eSA9IGZhbHNlOwogIHRoaXMuSFRNTEVudGl0eUJ1ZmZlciA9ICIiOwp9ClR5cGluZ1RleHQuYWxsID0gbmV3IEFycmF5KCk7ClR5cGluZ1RleHQuY3VycmVudEluZGV4ID0gMDsKVHlwaW5nVGV4dC5ydW5BbGwgPSBmdW5jdGlvbigpIHsKICBmb3IodmFyIGkgPSAwOyBpIDwgVHlwaW5nVGV4dC5hbGwubGVuZ3RoOyBpKyspIFR5cGluZ1RleHQuYWxsW2ldLnJ1bigpOwp9ClR5cGluZ1RleHQucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uKCkgewogIGlmKHRoaXMucnVubmluZykgcmV0dXJuOwogIGlmKHR5cGVvZiB0aGlzLm9yaWdUZXh0ID09ICJ1bmRlZmluZWQiKSB7CiAgICBzZXRUaW1lb3V0KCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnIiArIHRoaXMuZWxlbWVudC5pZCArICInKS50eXBpbmdUZXh0LnJ1bigpIiwgdGhpcy5pbnRlcnZhbCk7CS8vIFdlIGhhdmVuJ3QgZmluaXNoZWQgbG9hZGluZyB5ZXQuICBIYXZlIHBhdGllbmNlLgogICAgcmV0dXJuOwogIH0KICBpZih0aGlzLmN1cnJlbnRUZXh0ID09ICIiKSB0aGlzLmVsZW1lbnQuaW5uZXJIVE1MID0gIiI7Ci8vICB0aGlzLm9yaWdUZXh0ID0gdGhpcy5vcmlnVGV4dC5yZXBsYWNlKC88KFtePF0pKj4vLCAiIik7ICAgICAvLyBTdHJpcCBIVE1MIGZyb20gdGV4dC4KICBpZih0aGlzLmN1cnJlbnRDaGFyIDwgdGhpcy5vcmlnVGV4dC5sZW5ndGgpIHsKICAgIGlmKHRoaXMub3JpZ1RleHQuY2hhckF0KHRoaXMuY3VycmVudENoYXIpID09ICI8IiAmJiAhdGhpcy5pblRhZykgewogICAgICB0aGlzLnRhZ0J1ZmZlciA9ICI8IjsKICAgICAgdGhpcy5pblRhZyA9IHRydWU7CiAgICAgIHRoaXMuY3VycmVudENoYXIrKzsKICAgICAgdGhpcy5ydW4oKTsKICAgICAgcmV0dXJuOwogICAgfSBlbHNlIGlmKHRoaXMub3JpZ1RleHQuY2hhckF0KHRoaXMuY3VycmVudENoYXIpID09ICI+IiAmJiB0aGlzLmluVGFnKSB7CiAgICAgIHRoaXMudGFnQnVmZmVyICs9ICI+IjsKICAgICAgdGhpcy5pblRhZyA9IGZhbHNlOwogICAgICB0aGlzLmN1cnJlbnRUZXh0ICs9IHRoaXMudGFnQnVmZmVyOwogICAgICB0aGlzLmN1cnJlbnRDaGFyKys7CiAgICAgIHRoaXMucnVuKCk7CiAgICAgIHJldHVybjsKICAgIH0gZWxzZSBpZih0aGlzLmluVGFnKSB7CiAgICAgIHRoaXMudGFnQnVmZmVyICs9IHRoaXMub3JpZ1RleHQuY2hhckF0KHRoaXMuY3VycmVudENoYXIpOwogICAgICB0aGlzLmN1cnJlbnRDaGFyKys7CiAgICAgIHRoaXMucnVuKCk7CiAgICAgIHJldHVybjsKICAgIH0gZWxzZSBpZih0aGlzLm9yaWdUZXh0LmNoYXJBdCh0aGlzLmN1cnJlbnRDaGFyKSA9PSAiJiIgJiYgIXRoaXMuaW5IVE1MRW50aXR5KSB7CiAgICAgIHRoaXMuSFRNTEVudGl0eUJ1ZmZlciA9ICImIjsKICAgICAgdGhpcy5pbkhUTUxFbnRpdHkgPSB0cnVlOwogICAgICB0aGlzLmN1cnJlbnRDaGFyKys7CiAgICAgIHRoaXMucnVuKCk7CiAgICAgIHJldHVybjsKICAgIH0gZWxzZSBpZih0aGlzLm9yaWdUZXh0LmNoYXJBdCh0aGlzLmN1cnJlbnRDaGFyKSA9PSAiOyIgJiYgdGhpcy5pbkhUTUxFbnRpdHkpIHsKICAgICAgdGhpcy5IVE1MRW50aXR5QnVmZmVyICs9ICI7IjsKICAgICAgdGhpcy5pbkhUTUxFbnRpdHkgPSBmYWxzZTsKICAgICAgdGhpcy5jdXJyZW50VGV4dCArPSB0aGlzLkhUTUxFbnRpdHlCdWZmZXI7CiAgICAgIHRoaXMuY3VycmVudENoYXIrKzsKICAgICAgdGhpcy5ydW4oKTsKICAgICAgcmV0dXJuOwogICAgfSBlbHNlIGlmKHRoaXMuaW5IVE1MRW50aXR5KSB7CiAgICAgIHRoaXMuSFRNTEVudGl0eUJ1ZmZlciArPSB0aGlzLm9yaWdUZXh0LmNoYXJBdCh0aGlzLmN1cnJlbnRDaGFyKTsKICAgICAgdGhpcy5jdXJyZW50Q2hhcisrOwogICAgICB0aGlzLnJ1bigpOwogICAgICByZXR1cm47CiAgICB9IGVsc2UgewogICAgICB0aGlzLmN1cnJlbnRUZXh0ICs9IHRoaXMub3JpZ1RleHQuY2hhckF0KHRoaXMuY3VycmVudENoYXIpOwogICAgfQogICAgdGhpcy5lbGVtZW50LmlubmVySFRNTCA9IHRoaXMuY3VycmVudFRleHQ7CiAgICB0aGlzLmVsZW1lbnQuaW5uZXJIVE1MICs9ICh0aGlzLmN1cnJlbnRDaGFyIDwgdGhpcy5vcmlnVGV4dC5sZW5ndGggLSAxID8gKHR5cGVvZiB0aGlzLmN1cnNvciA9PSAiZnVuY3Rpb24iID8gdGhpcy5jdXJzb3IodGhpcy5jdXJyZW50VGV4dCkgOiB0aGlzLmN1cnNvcikgOiAiIik7CiAgICB0aGlzLmN1cnJlbnRDaGFyKys7CiAgICBzZXRUaW1lb3V0KCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnIiArIHRoaXMuZWxlbWVudC5pZCArICInKS50eXBpbmdUZXh0LnJ1bigpIiwgdGhpcy5pbnRlcnZhbCk7CiAgfSBlbHNlIHsKCXRoaXMuY3VycmVudFRleHQgPSAiIjsKCXRoaXMuY3VycmVudENoYXIgPSAwOwogICAgICAgIHRoaXMucnVubmluZyA9IGZhbHNlOwogICAgICAgIHRoaXMuZmluaXNoZWRDYWxsYmFjaygpOwogIH0KfQo8L3NjcmlwdD4KPC9wcmU+Cgo8Zm9udCBzdHlsZT0iZm9udDogMTVwdCBWZXJkYW5hOyBjb2xvcjogeWVsbG93OyI+Q29weXJpZ2h0IChDKSAyMDExIFBhcmtkcmVhbTEgPC9mb250Pjxicj48YnI+Cjx0YWJsZSBhbGlnbj0iY2VudGVyIiBib3JkZXI9IjEiIHdpZHRoPSI2MDAiIGhlaWdoPgo8dGJvZHk+PHRyPgo8dGQgdmFsaWduPSJ0b3AiIGJhY2tncm91bmQ9Imh0dHA6Ly9kbC5kcm9wYm94LmNvbS91LzEwODYwMDUxL2ltYWdlcy9tYXRyYW4uZ2lmIj48cCBpZD0iaGFjayIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAzcHg7Ij4KPGZvbnQgY29sb3I9IiMwMDk5MDAiPiBQbGVhc2UgV2FpdCAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuPC9mb250PiA8YnI+Cgo8Zm9udCBjb2xvcj0iIzAwOTkwMCI+IFRyeWluZyBjb25uZWN0IHRvIFNlcnZlciAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuPC9mb250Pjxicj4KPGZvbnQgY29sb3I9IiNGMDAwMDAiPjxmb250IGNvbG9yPSIjRkZGMDAwIj5+XCQ8L2ZvbnQ+IENvbm5lY3RlZCAhIDwvZm9udD48YnI+Cjxmb250IGNvbG9yPSIjMDA5OTAwIj48Zm9udCBjb2xvcj0iI0ZGRjAwMCI+JFNlcnZlck5hbWV+PC9mb250PiBDaGVja2luZyBTZXJ2ZXIgLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLjwvZm9udD4gPGJyPgoKPGZvbnQgY29sb3I9IiMwMDk5MDAiPjxmb250IGNvbG9yPSIjRkZGMDAwIj4kU2VydmVyTmFtZX48L2ZvbnQ+IFRyeWluZyBjb25uZWN0IHRvIENvbW1hbmQgLiAuIC4gLiAuIC4gLiAuIC4gLiAuPC9mb250Pjxicj4KCjxmb250IGNvbG9yPSIjRjAwMDAwIj48Zm9udCBjb2xvcj0iI0ZGRjAwMCI+JFNlcnZlck5hbWV+PC9mb250PlwkIENvbm5lY3RlZCBDb21tYW5kISA8L2ZvbnQ+PGJyPgo8Zm9udCBjb2xvcj0iIzAwOTkwMCI+PGZvbnQgY29sb3I9IiNGRkYwMDAiPiRTZXJ2ZXJOYW1lfjxmb250IGNvbG9yPSIjRjAwMDAwIj5cJDwvZm9udD48L2ZvbnQ+IE9LISBZb3UgY2FuIGtpbGwgaXQhPC9mb250Pgo8L3RyPgo8L3Rib2R5PjwvdGFibGU+Cjxicj4KCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KbmV3IFR5cGluZ1RleHQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhhY2siKSwgMzAsIGZ1bmN0aW9uKGkpeyB2YXIgYXIgPSBuZXcgQXJyYXkoIl8iLCIiKTsgcmV0dXJuICIgIiArIGFyW2kubGVuZ3RoICUgYXIubGVuZ3RoXTsgfSk7ClR5cGluZ1RleHQucnVuQWxsKCk7Cgo8L3NjcmlwdD4KRU5ECn0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBZGQgaHRtbCBzcGVjaWFsIGNoYXJzCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIEh0bWxTcGVjaWFsQ2hhcnMoJCl7CglteSAkdGV4dCA9IHNoaWZ0OwoJJHRleHQgPX4gcy8mLyZhbXA7L2c7CgkkdGV4dCA9fiBzLyIvJnF1b3Q7L2c7CgkkdGV4dCA9fiBzLycvJiMwMzk7L2c7CgkkdGV4dCA9fiBzLzwvJmx0Oy9nOwoJJHRleHQgPX4gcy8+LyZndDsvZzsKCXJldHVybiAkdGV4dDsKfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQWRkIGxpbmsgZm9yIGRpcmVjdG9yeQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBBZGRMaW5rRGlyKCQpCnsKCW15ICRhYz1zaGlmdDsKCW15IEBkaXI9KCk7CglpZigkV2luTlQpCgl7CgkJQGRpcj1zcGxpdCgvXFwvLCRDdXJyZW50RGlyKTsKCX1lbHNlCgl7CgkJQGRpcj1zcGxpdCgiLyIsJnRyaW0oJEN1cnJlbnREaXIpKTsKCX0KCW15ICRwYXRoPSIiOwoJbXkgJHJlc3VsdD0iIjsKCWZvcmVhY2ggKEBkaXIpCgl7CgkJJHBhdGggLj0gJF8uJFBhdGhTZXA7CgkJJHJlc3VsdC49IjxhIGhyZWY9Jz9hPSIuJGFjLiImZD0iLiRwYXRoLiInPiIuJF8uJFBhdGhTZXAuIjwvYT4iOwoJfQoJcmV0dXJuICRyZXN1bHQ7Cn0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFByaW50cyB0aGUgbWVzc2FnZSB0aGF0IGluZm9ybXMgdGhlIHVzZXIgb2YgYSBmYWlsZWQgbG9naW4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgUHJpbnRMb2dpbkZhaWxlZE1lc3NhZ2UKewoJcHJpbnQgPDxFTkQ7Cjxicj5Mb2dpbiA6IEFkbWluaXN0cmF0b3I8YnI+CgpQYXNzd29yZDo8YnI+CkxvZ2luIGluY29ycmVjdDxicj48YnI+CkVORAp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgUHJpbnRzIHRoZSBIVE1MIGZvcm0gZm9yIGxvZ2dpbmcgaW4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgUHJpbnRMb2dpbkZvcm0KewoJcHJpbnQgPDxFTkQ7Cjxmb3JtIG5hbWU9ImYiIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0ibG9naW4iPgpMb2dpbiA6IEFkbWluaXN0cmF0b3I8YnI+ClBhc3N3b3JkOjxpbnB1dCB0eXBlPSJwYXNzd29yZCIgbmFtZT0icCI+CjxpbnB1dCBjbGFzcz0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJFbnRlciI+CjwvZm9ybT4KRU5ECn0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBQcmludHMgdGhlIGZvb3RlciBmb3IgdGhlIEhUTUwgUGFnZQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBQcmludFBhZ2VGb290ZXIKewoJcHJpbnQgIjwvY29kZT48L2NlbnRlcj48L2JvZHk+PC9odG1sPiI7Cn0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBSZXRyZWl2ZXMgdGhlIHZhbHVlcyBvZiBhbGwgY29va2llcy4gVGhlIGNvb2tpZXMgY2FuIGJlIGFjY2Vzc2VzIHVzaW5nIHRoZQojIHZhcmlhYmxlICRDb29raWVzeycnfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBHZXRDb29raWVzCnsKCUBodHRwY29va2llcyA9IHNwbGl0KC87IC8sJEVOVnsnSFRUUF9DT09LSUUnfSk7Cglmb3JlYWNoICRjb29raWUoQGh0dHBjb29raWVzKQoJewoJCSgkaWQsICR2YWwpID0gc3BsaXQoLz0vLCAkY29va2llKTsKCQkkQ29va2llc3skaWR9ID0gJHZhbDsKCX0KfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFByaW50cyB0aGUgc2NyZWVuIHdoZW4gdGhlIHVzZXIgbG9ncyBvdXQKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgUHJpbnRMb2dvdXRTY3JlZW4KewoJcHJpbnQgIkRhbmcgWHVhdCBUaGFuaCBDb25nLjxicj48YnI+IjsKfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIExvZ3Mgb3V0IHRoZSB1c2VyIGFuZCBhbGxvd3MgdGhlIHVzZXIgdG8gbG9naW4gYWdhaW4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgUGVyZm9ybUxvZ291dAp7CglwcmludCAiU2V0LUNvb2tpZTogU0FWRURQV0Q9O1xuIjsgIyByZW1vdmUgcGFzc3dvcmQgY29va2llCgkmUHJpbnRQYWdlSGVhZGVyKCJwIik7CgkmUHJpbnRMb2dvdXRTY3JlZW47CgoJJlByaW50TG9naW5TY3JlZW47CgkmUHJpbnRMb2dpbkZvcm07CgkmUHJpbnRQYWdlRm9vdGVyOwoJZXhpdDsKfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIGxvZ2luIHRoZSB1c2VyLiBJZiB0aGUgcGFzc3dvcmQgbWF0Y2hlcywgaXQKIyBkaXNwbGF5cyBhIHBhZ2UgdGhhdCBhbGxvd3MgdGhlIHVzZXIgdG8gcnVuIGNvbW1hbmRzLiBJZiB0aGUgcGFzc3dvcmQgZG9lbnMndAojIG1hdGNoIG9yIGlmIG5vIHBhc3N3b3JkIGlzIGVudGVyZWQsIGl0IGRpc3BsYXlzIGEgZm9ybSB0aGF0IGFsbG93cyB0aGUgdXNlcgojIHRvIGxvZ2luCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFBlcmZvcm1Mb2dpbiAKewoJaWYoJExvZ2luUGFzc3dvcmQgZXEgJFBhc3N3b3JkKSAjIHBhc3N3b3JkIG1hdGNoZWQKCXsKCQlwcmludCAiU2V0LUNvb2tpZTogU0FWRURQV0Q9JExvZ2luUGFzc3dvcmQ7XG4iOwoJCSZQcmludFBhZ2VIZWFkZXI7CgkJcHJpbnQgJkxpc3REaXI7Cgl9CgllbHNlICMgcGFzc3dvcmQgZGlkbid0IG1hdGNoCgl7CgkJJlByaW50UGFnZUhlYWRlcigicCIpOwoJCSZQcmludExvZ2luU2NyZWVuOwoJCWlmKCRMb2dpblBhc3N3b3JkIG5lICIiKSAjIHNvbWUgcGFzc3dvcmQgd2FzIGVudGVyZWQKCQl7CgkJCSZQcmludExvZ2luRmFpbGVkTWVzc2FnZTsKCgkJfQoJCSZQcmludExvZ2luRm9ybTsKCQkmUHJpbnRQYWdlRm9vdGVyOwoJCWV4aXQ7Cgl9Cn0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBQcmludHMgdGhlIEhUTUwgZm9ybSB0aGF0IGFsbG93cyB0aGUgdXNlciB0byBlbnRlciBjb21tYW5kcwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBQcmludENvbW1hbmRMaW5lSW5wdXRGb3JtCnsKCW15ICRkaXI9ICI8c3BhbiBzdHlsZT0nZm9udDogMTFwdCBWZXJkYW5hOyBmb250LXdlaWdodDogYm9sZDsnPiIuJkFkZExpbmtEaXIoImNvbW1hbmQiKS4iPC9zcGFuPiI7CgkkUHJvbXB0ID0gJFdpbk5UID8gIiRkaXIgPiAiIDogIjxmb250IGNvbG9yPScjRkZGRkZGJz5bYWRtaW5cQCRTZXJ2ZXJOYW1lICRkaXJdXCQ8L2ZvbnQ+ICI7CglyZXR1cm4gPDxFTkQ7Cjxmb3JtIG5hbWU9ImYiIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPgoKPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImNvbW1hbmQiPgoKPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZCIgdmFsdWU9IiRDdXJyZW50RGlyIj4KJFByb21wdAo8aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iNDAiIG5hbWU9ImMiPgo8aW5wdXQgY2xhc3M9InN1Ym1pdCJ0eXBlPSJzdWJtaXQiIHZhbHVlPSJFbnRlciI+CjwvZm9ybT4KRU5ECn0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBQcmludHMgdGhlIEhUTUwgZm9ybSB0aGF0IGFsbG93cyB0aGUgdXNlciB0byBkb3dubG9hZCBmaWxlcwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBQcmludEZpbGVEb3dubG9hZEZvcm0KewoJbXkgJGRpciA9ICZBZGRMaW5rRGlyKCJkb3dubG9hZCIpOyAKCSRQcm9tcHQgPSAkV2luTlQgPyAiJGRpciA+ICIgOiAiW2FkbWluXEAkU2VydmVyTmFtZSAkZGlyXVwkICI7CglyZXR1cm4gPDxFTkQ7Cjxmb3JtIG5hbWU9ImYiIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkIiB2YWx1ZT0iJEN1cnJlbnREaXIiPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0iZG93bmxvYWQiPgokUHJvbXB0IGRvd25sb2FkPGJyPjxicj4KRmlsZW5hbWU6IDxpbnB1dCBjbGFzcz0iZmlsZSIgdHlwZT0idGV4dCIgbmFtZT0iZiIgc2l6ZT0iMzUiPjxicj48YnI+CkRvd25sb2FkOiA8aW5wdXQgY2xhc3M9InN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iQmVnaW4iPgoKPC9mb3JtPgpFTkQKfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFByaW50cyB0aGUgSFRNTCBmb3JtIHRoYXQgYWxsb3dzIHRoZSB1c2VyIHRvIHVwbG9hZCBmaWxlcwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBQcmludEZpbGVVcGxvYWRGb3JtCnsKCW15ICRkaXI9ICZBZGRMaW5rRGlyKCJ1cGxvYWQiKTsKCSRQcm9tcHQgPSAkV2luTlQgPyAiJGRpciA+ICIgOiAiW2FkbWluXEAkU2VydmVyTmFtZSAkZGlyXVwkICI7CglyZXR1cm4gPDxFTkQ7Cjxmb3JtIG5hbWU9ImYiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPgokUHJvbXB0IHVwbG9hZDxicj48YnI+CkZpbGVuYW1lOiA8aW5wdXQgY2xhc3M9ImZpbGUiIHR5cGU9ImZpbGUiIG5hbWU9ImYiIHNpemU9IjM1Ij48YnI+PGJyPgpPcHRpb25zOiAmbmJzcDs8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9Im8iIGlkPSJ1cCIgdmFsdWU9Im92ZXJ3cml0ZSI+CjxsYWJlbCBmb3I9InVwIj5PdmVyd3JpdGUgaWYgaXQgRXhpc3RzPC9sYWJlbD48YnI+PGJyPgpVcGxvYWQ6Jm5ic3A7Jm5ic3A7Jm5ic3A7PGlucHV0IGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IkJlZ2luIj4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZCIgdmFsdWU9IiRDdXJyZW50RGlyIj4KPGlucHV0IGNsYXNzPSJzdWJtaXQiIHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9InVwbG9hZCI+Cgo8L2Zvcm0+CgpFTkQKfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlIHRpbWVvdXQgZm9yIGEgY29tbWFuZCBleHBpcmVzLiBXZSBuZWVkIHRvCiMgdGVybWluYXRlIHRoZSBzY3JpcHQgaW1tZWRpYXRlbHkuIFRoaXMgZnVuY3Rpb24gaXMgdmFsaWQgb25seSBvbiBVbml4LiBJdCBpcwojIG5ldmVyIGNhbGxlZCB3aGVuIHRoZSBzY3JpcHQgaXMgcnVubmluZyBvbiBOVC4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgQ29tbWFuZFRpbWVvdXQKewoJaWYoISRXaW5OVCkKCXsKCQlhbGFybSgwKTsKCQlyZXR1cm4gPDxFTkQ7CjwvdGV4dGFyZWE+Cjxicj48Zm9udCBjb2xvcj15ZWxsb3c+CkNvbW1hbmQgZXhjZWVkZWQgbWF4aW11bSB0aW1lIG9mICRDb21tYW5kVGltZW91dER1cmF0aW9uIHNlY29uZChzKS48L2ZvbnQ+Cjxicj48Zm9udCBzaXplPSc2JyBjb2xvcj1yZWQ+S2lsbGVkIGl0ITwvZm9udD4KRU5ECgl9Cn0KCgoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZnVuY3Rpb24gZGlzcGxheXMgdGhlIHBhZ2UgdGhhdCBjb250YWlucyBhIGxpbmsgd2hpY2ggYWxsb3dzIHRoZSB1c2VyCiMgdG8gZG93bmxvYWQgdGhlIHNwZWNpZmllZCBmaWxlLiBUaGUgcGFnZSBhbHNvIGNvbnRhaW5zIGEgYXV0by1yZWZyZXNoCiMgZmVhdHVyZSB0aGF0IHN0YXJ0cyB0aGUgZG93bmxvYWQgYXV0b21hdGljYWxseS4KIyBBcmd1bWVudCAxOiBGdWxseSBxdWFsaWZpZWQgZmlsZW5hbWUgb2YgdGhlIGZpbGUgdG8gYmUgZG93bmxvYWRlZAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBQcmludERvd25sb2FkTGlua1BhZ2UKewoJbG9jYWwoJEZpbGVVcmwpID0gQF87CglteSAkcmVzdWx0PSIiOwoJaWYoLWUgJEZpbGVVcmwpICMgaWYgdGhlIGZpbGUgZXhpc3RzCgl7CgkJIyBlbmNvZGUgdGhlIGZpbGUgbGluayBzbyB3ZSBjYW4gc2VuZCBpdCB0byB0aGUgYnJvd3NlcgoJCSRGaWxlVXJsID1+IHMvKFteYS16QS1aMC05XSkvJyUnLnVucGFjaygiSCoiLCQxKS9lZzsKCQkkRG93bmxvYWRMaW5rID0gIiRTY3JpcHRMb2NhdGlvbj9hPWRvd25sb2FkJmY9JEZpbGVVcmwmbz1nbyI7CgkJJEh0bWxNZXRhSGVhZGVyID0gIjxtZXRhIEhUVFAtRVFVSVY9XCJSZWZyZXNoXCIgQ09OVEVOVD1cIjE7IFVSTD0kRG93bmxvYWRMaW5rXCI+IjsKCQkmUHJpbnRQYWdlSGVhZGVyKCJjIik7CgkJJHJlc3VsdCAuPSA8PEVORDsKU2VuZGluZyBGaWxlICRUcmFuc2ZlckZpbGUuLi48YnI+CgpJZiB0aGUgZG93bmxvYWQgZG9lcyBub3Qgc3RhcnQgYXV0b21hdGljYWxseSwKPGEgaHJlZj0iJERvd25sb2FkTGluayI+Q2xpY2sgSGVyZTwvYT4KRU5ECgkJJHJlc3VsdCAuPSAmUHJpbnRDb21tYW5kTGluZUlucHV0Rm9ybTsKCX0KCWVsc2UgIyBmaWxlIGRvZXNuJ3QgZXhpc3QKCXsKCQkkcmVzdWx0IC49ICJGYWlsZWQgdG8gZG93bmxvYWQgJEZpbGVVcmw6ICQhIjsKCQkkcmVzdWx0IC49ICZQcmludEZpbGVEb3dubG9hZEZvcm07Cgl9CglyZXR1cm4gJHJlc3VsdDsKfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZnVuY3Rpb24gcmVhZHMgdGhlIHNwZWNpZmllZCBmaWxlIGZyb20gdGhlIGRpc2sgYW5kIHNlbmRzIGl0IHRvIHRoZQojIGJyb3dzZXIsIHNvIHRoYXQgaXQgY2FuIGJlIGRvd25sb2FkZWQgYnkgdGhlIHVzZXIuCiMgQXJndW1lbnQgMTogRnVsbHkgcXVhbGlmaWVkIHBhdGhuYW1lIG9mIHRoZSBmaWxlIHRvIGJlIHNlbnQuCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFNlbmRGaWxlVG9Ccm93c2VyCnsKCW15ICRyZXN1bHQgPSAiIjsKCWxvY2FsKCRTZW5kRmlsZSkgPSBAXzsKCWlmKG9wZW4oU0VOREZJTEUsICRTZW5kRmlsZSkpICMgZmlsZSBvcGVuZWQgZm9yIHJlYWRpbmcKCXsKCQlpZigkV2luTlQpCgkJewoJCQliaW5tb2RlKFNFTkRGSUxFKTsKCQkJYmlubW9kZShTVERPVVQpOwoJCX0KCQkkRmlsZVNpemUgPSAoc3RhdCgkU2VuZEZpbGUpKVs3XTsKCQkoJEZpbGVuYW1lID0gJFNlbmRGaWxlKSA9fiAgbSEoW14vXlxcXSopJCE7CgkJcHJpbnQgIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC11bmtub3duXG4iOwoJCXByaW50ICJDb250ZW50LUxlbmd0aDogJEZpbGVTaXplXG4iOwoJCXByaW50ICJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0kMVxuXG4iOwoJCXByaW50IHdoaWxlKDxTRU5ERklMRT4pOwoJCWNsb3NlKFNFTkRGSUxFKTsKCQlleGl0KDEpOwoJfQoJZWxzZSAjIGZhaWxlZCB0byBvcGVuIGZpbGUKCXsKCQkkcmVzdWx0IC49ICJGYWlsZWQgdG8gZG93bmxvYWQgJFNlbmRGaWxlOiAkISI7CgkJJHJlc3VsdCAuPSZQcmludEZpbGVEb3dubG9hZEZvcm07Cgl9CglyZXR1cm4gJHJlc3VsdDsKfQoKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRoZSB1c2VyIGRvd25sb2FkcyBhIGZpbGUuIEl0IGRpc3BsYXlzIGEgbWVzc2FnZQojIHRvIHRoZSB1c2VyIGFuZCBwcm92aWRlcyBhIGxpbmsgdGhyb3VnaCB3aGljaCB0aGUgZmlsZSBjYW4gYmUgZG93bmxvYWRlZC4KIyBUaGlzIGZ1bmN0aW9uIGlzIGFsc28gY2FsbGVkIHdoZW4gdGhlIHVzZXIgY2xpY2tzIG9uIHRoYXQgbGluay4gSW4gdGhpcyBjYXNlLAojIHRoZSBmaWxlIGlzIHJlYWQgYW5kIHNlbnQgdG8gdGhlIGJyb3dzZXIuCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIEJlZ2luRG93bmxvYWQKewoJIyBnZXQgZnVsbHkgcXVhbGlmaWVkIHBhdGggb2YgdGhlIGZpbGUgdG8gYmUgZG93bmxvYWRlZAoJaWYoKCRXaW5OVCAmICgkVHJhbnNmZXJGaWxlID1+IG0vXlxcfF4uOi8pKSB8CgkJKCEkV2luTlQgJiAoJFRyYW5zZmVyRmlsZSA9fiBtL15cLy8pKSkgIyBwYXRoIGlzIGFic29sdXRlCgl7CgkJJFRhcmdldEZpbGUgPSAkVHJhbnNmZXJGaWxlOwoJfQoJZWxzZSAjIHBhdGggaXMgcmVsYXRpdmUKCXsKCQljaG9wKCRUYXJnZXRGaWxlKSBpZigkVGFyZ2V0RmlsZSA9ICRDdXJyZW50RGlyKSA9fiBtL1tcXFwvXSQvOwoJCSRUYXJnZXRGaWxlIC49ICRQYXRoU2VwLiRUcmFuc2ZlckZpbGU7Cgl9CgoJaWYoJE9wdGlvbnMgZXEgImdvIikgIyB3ZSBoYXZlIHRvIHNlbmQgdGhlIGZpbGUKCXsKCQkmU2VuZEZpbGVUb0Jyb3dzZXIoJFRhcmdldEZpbGUpOwoJfQoJZWxzZSAjIHdlIGhhdmUgdG8gc2VuZCBvbmx5IHRoZSBsaW5rIHBhZ2UKCXsKCQkmUHJpbnREb3dubG9hZExpbmtQYWdlKCRUYXJnZXRGaWxlKTsKCX0KfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlIHVzZXIgd2FudHMgdG8gdXBsb2FkIGEgZmlsZS4gSWYgdGhlCiMgZmlsZSBpcyBub3Qgc3BlY2lmaWVkLCBpdCBkaXNwbGF5cyBhIGZvcm0gYWxsb3dpbmcgdGhlIHVzZXIgdG8gc3BlY2lmeSBhCiMgZmlsZSwgb3RoZXJ3aXNlIGl0IHN0YXJ0cyB0aGUgdXBsb2FkIHByb2Nlc3MuCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFVwbG9hZEZpbGUKewoJIyBpZiBubyBmaWxlIGlzIHNwZWNpZmllZCwgcHJpbnQgdGhlIHVwbG9hZCBmb3JtIGFnYWluCglpZigkVHJhbnNmZXJGaWxlIGVxICIiKQoJewoJCXJldHVybiAmUHJpbnRGaWxlVXBsb2FkRm9ybTsKCgl9CglteSAkcmVzdWx0PSIiOwoJIyBzdGFydCB0aGUgdXBsb2FkaW5nIHByb2Nlc3MKCSRyZXN1bHQgLj0gIlVwbG9hZGluZyAkVHJhbnNmZXJGaWxlIHRvICRDdXJyZW50RGlyLi4uPGJyPiI7CgoJIyBnZXQgdGhlIGZ1bGxseSBxdWFsaWZpZWQgcGF0aG5hbWUgb2YgdGhlIGZpbGUgdG8gYmUgY3JlYXRlZAoJY2hvcCgkVGFyZ2V0TmFtZSkgaWYgKCRUYXJnZXROYW1lID0gJEN1cnJlbnREaXIpID1+IG0vW1xcXC9dJC87CgkkVHJhbnNmZXJGaWxlID1+IG0hKFteL15cXF0qKSQhOwoJJFRhcmdldE5hbWUgLj0gJFBhdGhTZXAuJDE7CgoJJFRhcmdldEZpbGVTaXplID0gbGVuZ3RoKCRpbnsnZmlsZWRhdGEnfSk7CgkjIGlmIHRoZSBmaWxlIGV4aXN0cyBhbmQgd2UgYXJlIG5vdCBzdXBwb3NlZCB0byBvdmVyd3JpdGUgaXQKCWlmKC1lICRUYXJnZXROYW1lICYmICRPcHRpb25zIG5lICJvdmVyd3JpdGUiKQoJewoJCSRyZXN1bHQgLj0gIkZhaWxlZDogRGVzdGluYXRpb24gZmlsZSBhbHJlYWR5IGV4aXN0cy48YnI+IjsKCX0KCWVsc2UgIyBmaWxlIGlzIG5vdCBwcmVzZW50Cgl7CgkJaWYob3BlbihVUExPQURGSUxFLCAiPiRUYXJnZXROYW1lIikpCgkJewoJCQliaW5tb2RlKFVQTE9BREZJTEUpIGlmICRXaW5OVDsKCQkJcHJpbnQgVVBMT0FERklMRSAkaW57J2ZpbGVkYXRhJ307CgkJCWNsb3NlKFVQTE9BREZJTEUpOwoJCQkkcmVzdWx0IC49ICJUcmFuc2ZlcmVkICRUYXJnZXRGaWxlU2l6ZSBCeXRlcy48YnI+IjsKCQkJJHJlc3VsdCAuPSAiRmlsZSBQYXRoOiAkVGFyZ2V0TmFtZTxicj4iOwoJCX0KCQllbHNlCgkJewoJCQkkcmVzdWx0IC49ICJGYWlsZWQ6ICQhPGJyPiI7CgkJfQoJfQoJJHJlc3VsdCAuPSAmUHJpbnRDb21tYW5kTGluZUlucHV0Rm9ybTsKCXJldHVybiAkcmVzdWx0Owp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgdXNlciB3YW50cyB0byBkb3dubG9hZCBhIGZpbGUuIElmIHRoZQojIGZpbGVuYW1lIGlzIG5vdCBzcGVjaWZpZWQsIGl0IGRpc3BsYXlzIGEgZm9ybSBhbGxvd2luZyB0aGUgdXNlciB0byBzcGVjaWZ5IGEKIyBmaWxlLCBvdGhlcndpc2UgaXQgZGlzcGxheXMgYSBtZXNzYWdlIHRvIHRoZSB1c2VyIGFuZCBwcm92aWRlcyBhIGxpbmsKIyB0aHJvdWdoICB3aGljaCB0aGUgZmlsZSBjYW4gYmUgZG93bmxvYWRlZC4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgRG93bmxvYWRGaWxlCnsKCSMgaWYgbm8gZmlsZSBpcyBzcGVjaWZpZWQsIHByaW50IHRoZSBkb3dubG9hZCBmb3JtIGFnYWluCglpZigkVHJhbnNmZXJGaWxlIGVxICIiKQoJewoJCSZQcmludFBhZ2VIZWFkZXIoImYiKTsKCQlyZXR1cm4gJlByaW50RmlsZURvd25sb2FkRm9ybTsKCX0KCQoJIyBnZXQgZnVsbHkgcXVhbGlmaWVkIHBhdGggb2YgdGhlIGZpbGUgdG8gYmUgZG93bmxvYWRlZAoJaWYoKCRXaW5OVCAmICgkVHJhbnNmZXJGaWxlID1+IG0vXlxcfF4uOi8pKSB8ICghJFdpbk5UICYgKCRUcmFuc2ZlckZpbGUgPX4gbS9eXC8vKSkpICMgcGF0aCBpcyBhYnNvbHV0ZQoJewoJCSRUYXJnZXRGaWxlID0gJFRyYW5zZmVyRmlsZTsKCX0KCWVsc2UgIyBwYXRoIGlzIHJlbGF0aXZlCgl7CgkJY2hvcCgkVGFyZ2V0RmlsZSkgaWYoJFRhcmdldEZpbGUgPSAkQ3VycmVudERpcikgPX4gbS9bXFxcL10kLzsKCQkkVGFyZ2V0RmlsZSAuPSAkUGF0aFNlcC4kVHJhbnNmZXJGaWxlOwoJfQoKCWlmKCRPcHRpb25zIGVxICJnbyIpICMgd2UgaGF2ZSB0byBzZW5kIHRoZSBmaWxlCgl7CgkJcmV0dXJuICZTZW5kRmlsZVRvQnJvd3NlcigkVGFyZ2V0RmlsZSk7Cgl9CgllbHNlICMgd2UgaGF2ZSB0byBzZW5kIG9ubHkgdGhlIGxpbmsgcGFnZQoJewoJCXJldHVybiAmUHJpbnREb3dubG9hZExpbmtQYWdlKCRUYXJnZXRGaWxlKTsKCX0KfQoKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBleGVjdXRlIGNvbW1hbmRzLiBJdCBkaXNwbGF5cyB0aGUgb3V0cHV0IG9mIHRoZQojIGNvbW1hbmQgYW5kIGFsbG93cyB0aGUgdXNlciB0byBlbnRlciBhbm90aGVyIGNvbW1hbmQuIFRoZSBjaGFuZ2UgZGlyZWN0b3J5CiMgY29tbWFuZCBpcyBoYW5kbGVkIGRpZmZlcmVudGx5LiBJbiB0aGlzIGNhc2UsIHRoZSBuZXcgZGlyZWN0b3J5IGlzIHN0b3JlZCBpbgojIGFuIGludGVybmFsIHZhcmlhYmxlIGFuZCBpcyB1c2VkIGVhY2ggdGltZSBhIGNvbW1hbmQgaGFzIHRvIGJlIGV4ZWN1dGVkLiBUaGUKIyBvdXRwdXQgb2YgdGhlIGNoYW5nZSBkaXJlY3RvcnkgY29tbWFuZCBpcyBub3QgZGlzcGxheWVkIHRvIHRoZSB1c2VycwojIHRoZXJlZm9yZSBlcnJvciBtZXNzYWdlcyBjYW5ub3QgYmUgZGlzcGxheWVkLgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBFeGVjdXRlQ29tbWFuZAp7CglteSAkcmVzdWx0PSIiOwoJaWYoJFJ1bkNvbW1hbmQgPX4gbS9eXHMqY2RccysoLispLykgIyBpdCBpcyBhIGNoYW5nZSBkaXIgY29tbWFuZAoJewoJCSMgd2UgY2hhbmdlIHRoZSBkaXJlY3RvcnkgaW50ZXJuYWxseS4gVGhlIG91dHB1dCBvZiB0aGUKCQkjIGNvbW1hbmQgaXMgbm90IGRpc3BsYXllZC4KCQkkQ29tbWFuZCA9ICJjZCBcIiRDdXJyZW50RGlyXCIiLiRDbWRTZXAuImNkICQxIi4kQ21kU2VwLiRDbWRQd2Q7CgkJY2hvcCgkQ3VycmVudERpciA9IGAkQ29tbWFuZGApOwoJCSRyZXN1bHQgLj0gJlByaW50Q29tbWFuZExpbmVJbnB1dEZvcm07CgoJCSRyZXN1bHQgLj0gIkNvbW1hbmQ6IDxydW4+JFJ1bkNvbW1hbmQgPC9ydW4+PGJyPjx0ZXh0YXJlYSBjb2xzPSckY29scycgcm93cz0nJHJvd3MnIHNwZWxsY2hlY2s9J2ZhbHNlJz4iOwoJCSMgeHVhdCB0aG9uZyB0aW4ga2hpIGNodXllbiBkZW4gMSB0aHUgbXVjIG5hbyBkbyEKCQkkUnVuQ29tbWFuZD0gJFdpbk5UPyJkaXIiOiJkaXIgLWxpYSI7CgkJJHJlc3VsdCAuPSAmUnVuQ21kOwoJfWVsc2lmKCRSdW5Db21tYW5kID1+IG0vXlxzKmVkaXRccysoLispLykKCXsKCQkkcmVzdWx0IC49ICAmU2F2ZUZpbGVGb3JtOwoJfWVsc2UKCXsKCQkkcmVzdWx0IC49ICZQcmludENvbW1hbmRMaW5lSW5wdXRGb3JtOwoJCSRyZXN1bHQgLj0gIkNvbW1hbmQ6IDxydW4+JFJ1bkNvbW1hbmQ8L3J1bj48YnI+PHRleHRhcmVhIGlkPSdkYXRhJyBjb2xzPSckY29scycgcm93cz0nJHJvd3MnIHNwZWxsY2hlY2s9J2ZhbHNlJz4iOwoJCSRyZXN1bHQgLj0mUnVuQ21kOwoJfQoJJHJlc3VsdCAuPSAgIjwvdGV4dGFyZWE+IjsKCXJldHVybiAkcmVzdWx0Owp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgcnVuIGNvbW1hbmQKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKc3ViIFJ1bkNtZAp7CglteSAkcmVzdWx0PSIiOwoJJENvbW1hbmQgPSAiY2QgXCIkQ3VycmVudERpclwiIi4kQ21kU2VwLiRSdW5Db21tYW5kLiRSZWRpcmVjdG9yOwoJaWYoISRXaW5OVCkKCXsKCQkkU0lHeydBTFJNJ30gPSBcJkNvbW1hbmRUaW1lb3V0OwoJCWFsYXJtKCRDb21tYW5kVGltZW91dER1cmF0aW9uKTsKCX0KCWlmKCRTaG93RHluYW1pY091dHB1dCkgIyBzaG93IG91dHB1dCBhcyBpdCBpcyBnZW5lcmF0ZWQKCXsKCQkkfD0xOwoJCSRDb21tYW5kIC49ICIgfCI7CgkJb3BlbihDb21tYW5kT3V0cHV0LCAkQ29tbWFuZCk7CgkJd2hpbGUoPENvbW1hbmRPdXRwdXQ+KQoJCXsKCQkJJF8gPX4gcy8oXG58XHJcbikkLy87CgkJCSRyZXN1bHQgLj0gJkh0bWxTcGVjaWFsQ2hhcnMoIiRfXG4iKTsKCQl9CgkJJHw9MDsKCX0KCWVsc2UgIyBzaG93IG91dHB1dCBhZnRlciBjb21tYW5kIGNvbXBsZXRlcwoJewoJCSRyZXN1bHQgLj0gJkh0bWxTcGVjaWFsQ2hhcnMoJyRDb21tYW5kJyk7Cgl9CglpZighJFdpbk5UKQoJewoJCWFsYXJtKDApOwoJfQoJcmV0dXJuICRyZXN1bHQ7Cn0KIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojIEZvcm0gU2F2ZSBGaWxlIAojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CnN1YiBTYXZlRmlsZUZvcm0KewoJbXkgJHJlc3VsdCA9IiI7CglzdWJzdHIoJFJ1bkNvbW1hbmQsMCw1KT0iIjsKCW15ICRmaWxlPSZ0cmltKCRSdW5Db21tYW5kKTsKCSRzYXZlPSc8YnI+PGlucHV0IG5hbWU9ImEiIHR5cGU9InN1Ym1pdCIgdmFsdWU9InNhdmUiIGNsYXNzPSJzdWJtaXQiID4nOwoJJEZpbGU9JEN1cnJlbnREaXIuJFBhdGhTZXAuJFJ1bkNvbW1hbmQ7CglteSAkZGlyPSI8c3BhbiBzdHlsZT0nZm9udDogMTFwdCBWZXJkYW5hOyBmb250LXdlaWdodDogYm9sZDsnPiIuJkFkZExpbmtEaXIoImd1aSIpLiI8L3NwYW4+IjsKCWlmKC13ICRGaWxlKQoJewoJCSRyb3dzPSIyMyIKCX1lbHNlCgl7CgkJJG1zZz0iPGJyPjxmb250IHN0eWxlPSdmb250OiAxNXB0IFZlcmRhbmE7IGNvbG9yOiB5ZWxsb3c7JyA+IFBlcm1pc3Npb24gZGVuaWVkITxmb250Pjxicj4iOwoJCSRyb3dzPSIyMCIKCX0KCSRQcm9tcHQgPSAkV2luTlQgPyAiJGRpciA+ICIgOiAiPGZvbnQgY29sb3I9JyNGRkZGRkYnPlthZG1pblxAJFNlcnZlck5hbWUgJGRpcl1cJDwvZm9udD4gIjsKCSRyZWFkPSgkV2luTlQpPyJ0eXBlIjoibGVzcyI7CgkkUnVuQ29tbWFuZCA9ICIkcmVhZCBcIiRSdW5Db21tYW5kXCIiOwoJJHJlc3VsdCAuPSAgPDxFTkQ7Cgk8Zm9ybSBuYW1lPSJmIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4KCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkIiB2YWx1ZT0iJEN1cnJlbnREaXIiPgoJJFByb21wdAoJPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjQwIiBuYW1lPSJjIj4KCTxpbnB1dCBuYW1lPSJzIiBjbGFzcz0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJFbnRlciI+Cgk8YnI+Q29tbWFuZDogPHJ1bj4gJFJ1bkNvbW1hbmQgPC9ydW4+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmaWxlIiB2YWx1ZT0iJGZpbGUiID4gJHNhdmUgPGJyPiAkbXNnCgk8YnI+PHRleHRhcmVhIGlkPSJkYXRhIiBuYW1lPSJkYXRhIiBjb2xzPSIkY29scyIgcm93cz0iJHJvd3MiIHNwZWxsY2hlY2s9ImZhbHNlIj4KRU5ECgkKCSRyZXN1bHQgLj0gJlJ1bkNtZDsKCSRyZXN1bHQgLj0gICI8L3RleHRhcmVhPiI7CgkkcmVzdWx0IC49ICAiPC9mb3JtPiI7CglyZXR1cm4gJHJlc3VsdDsKfQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMgU2F2ZSBGaWxlCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0Kc3ViIFNhdmVGaWxlKCQpCnsKCW15ICREYXRhPSBzaGlmdCA7CglteSAkRmlsZT0gc2hpZnQ7CgkkRmlsZT0kQ3VycmVudERpci4kUGF0aFNlcC4kRmlsZTsKCWlmKG9wZW4oRklMRSwgIj4kRmlsZSIpKQoJewoJCWJpbm1vZGUgRklMRTsKCQlwcmludCBGSUxFICREYXRhOwoJCWNsb3NlIEZJTEU7CgkJcmV0dXJuIDE7Cgl9ZWxzZQoJewoJCXJldHVybiAwOwoJfQp9CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIwoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIEJydXRlIEZvcmNlciBGb3JtCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIEJydXRlRm9yY2VyRm9ybQp7CglteSAkcmVzdWx0PSIiOwoJJHJlc3VsdCAuPSA8PEVORDsKCjx0YWJsZT4KCjx0cj4KPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM8YnI+ClNpbXBsZSBGVFAgYnJ1dGUgZm9yY2VyPGJyPgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPGZvcm0gbmFtZT0iZiIgbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiI+Cgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0iYnJ1dGVmb3JjZXIiLz4KPC90ZD4KPC90cj4KPHRyPgo8dGQ+VXNlcjo8YnI+PHRleHRhcmVhIHJvd3M9IjE4IiBjb2xzPSIzMCIgbmFtZT0idXNlciI+CkVORApjaG9wKCRyZXN1bHQgLj0gYGxlc3MgL2V0Yy9wYXNzd2QgfCBjdXQgLWQ6IC1mMWApOwokcmVzdWx0IC49IDw8J0VORCc7CjwvdGV4dGFyZWE+PC90ZD4KPHRkPgoKUGFzczo8YnI+Cjx0ZXh0YXJlYSByb3dzPSIxOCIgY29scz0iMzAiIG5hbWU9InBhc3MiPjEyM3Bhc3MKMTIzIUAjCjEyM2FkbWluCjEyM2FiYwoxMjM0NTZhZG1pbgoxMjM0NTU0MzIxCjEyMzQ0MzIxCnBhc3MxMjMKYWRtaW4KYWRtaW5jcAphZG1pbmlzdHJhdG9yCm1hdGtoYXUKcGFzc2FkbWluCnBAc3N3b3JkCnBAc3N3MHJkCnBhc3N3b3JkCjEyMzQ1NgoxMjM0NTY3CjEyMzQ1Njc4CjEyMzQ1Njc4OQoxMjM0NTY3ODkwCjExMTExMQowMDAwMDAKMjIyMjIyCjMzMzMzMwo0NDQ0NDQKNTU1NTU1CjY2NjY2Ngo3Nzc3NzcKODg4ODg4Cjk5OTk5OQoxMjMxMjMKMjM0MjM0CjM0NTM0NQo0NTY0NTYKNTY3NTY3CjY3ODY3OAo3ODk3ODkKMTIzMzIxCjQ1NjY1NAo2NTQzMjEKNzY1NDMyMQo4NzY1NDMyMQo5ODc2NTQzMjEKMDk4NzY1NDMyMQphZG1pbjEyMwphZG1pbjEyMzQ1NgphYmNkZWYKYWJjYWJjCiFAIyFAIwohQCMkJV4KIUAjJCVeJiooCiFAIyQkI0AhCmFiYzEyMwphbmh5ZXVlbQppbG92ZXlvdTwvdGV4dGFyZWE+CjwvdGQ+CjwvdHI+Cjx0cj4KPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPgpTbGVlcDo8c2VsZWN0IG5hbWU9InNsZWVwIj4KCjxvcHRpb24+MDwvb3B0aW9uPgo8b3B0aW9uPjE8L29wdGlvbj4KPG9wdGlvbj4yPC9vcHRpb24+Cgo8b3B0aW9uPjM8L29wdGlvbj4KPC9zZWxlY3Q+IAo8aW5wdXQgdHlwZT0ic3VibWl0IiBjbGFzcz0ic3VibWl0IiB2YWx1ZT0iQnJ1dGUgRm9yY2VyIi8+PC90ZD48L3RyPgo8L2Zvcm0+CjwvdGFibGU+CkVORApyZXR1cm4gJHJlc3VsdDsKfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQnJ1dGUgRm9yY2VyCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIEJydXRlRm9yY2VyCnsKCW15ICRyZXN1bHQ9IiI7CgkkU2VydmVyPSRFTlZ7J1NFUlZFUl9BRERSJ307CglpZigkaW57J3VzZXInfSBlcSAiIikKCXsKCQkkcmVzdWx0IC49ICZCcnV0ZUZvcmNlckZvcm07Cgl9ZWxzZQoJewoJCXVzZSBOZXQ6OkZUUDsgCgkJQHVzZXI9IHNwbGl0KC9cbi8sICRpbnsndXNlcid9KTsKCQlAcGFzcz0gc3BsaXQoL1xuLywgJGlueydwYXNzJ30pOwoJCWNob21wKEB1c2VyKTsKCQljaG9tcChAcGFzcyk7CgkJJHJlc3VsdCAuPSAiPGJyPjxicj5bK10gVHJ5aW5nIGJydXRlICRTZXJ2ZXJOYW1lPGJyPj09PT09PT09PT09PT09PT09PT09Pj4+Pj4+Pj4+Pj4+PDw8PDw8PDw8PD09PT09PT09PT09PT09PT09PT09PGJyPjxicj5cbiI7CgkJZm9yZWFjaCAkdXNlcm5hbWUgKEB1c2VyKQoJCXsKCQkJaWYoISgkdXNlcm5hbWUgZXEgIiIpKQoJCQl7CgkJCQlmb3JlYWNoICRwYXNzd29yZCAoQHBhc3MpCgkJCQl7CgkJCQkJJGZ0cCA9IE5ldDo6RlRQLT5uZXcoJFNlcnZlcikgb3IgZGllICJDb3VsZCBub3QgY29ubmVjdCB0byAkU2VydmVyTmFtZVxuIjsgCgkJCQkJaWYoJGZ0cC0+bG9naW4oIiR1c2VybmFtZSIsIiRwYXNzd29yZCIpKQoJCQkJCXsKCQkJCQkJJHJlc3VsdCAuPSAiPGEgdGFyZ2V0PSdfYmxhbmsnIGhyZWY9J2Z0cDovLyR1c2VybmFtZTokcGFzc3dvcmRcQCRTZXJ2ZXInPlsrXSBmdHA6Ly8kdXNlcm5hbWU6JHBhc3N3b3JkXEAkU2VydmVyPC9hPjxicj5cbiI7CgkJCQkJCSRmdHAtPnF1aXQoKTsKCQkJCQkJYnJlYWs7CgkJCQkJfQoJCQkJCWlmKCEoJGlueydzbGVlcCd9IGVxICIwIikpCgkJCQkJewoJCQkJCQlzbGVlcChpbnQoJGlueydzbGVlcCd9KSk7CgkJCQkJfQoJCQkJCSRmdHAtPnF1aXQoKTsKCQkJCX0KCQkJfQoJCX0KCQkkcmVzdWx0IC49ICJcbjxicj49PT09PT09PT09Pj4+Pj4+Pj4+PiBGaW5pc2hlZCA8PDw8PDw8PDw8PT09PT09PT09PTxicj5cbiI7Cgl9CglyZXR1cm4gJHJlc3VsdDsKfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQmFja2Nvbm5lY3QgRm9ybQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBCYWNrQmluZEZvcm0KewoJcmV0dXJuIDw8RU5EOwoJPGJyPjxicj4KCgk8dGFibGU+Cgk8dHI+Cgk8Zm9ybSBuYW1lPSJmIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4KCTx0ZD5CYWNrQ29ubmVjdDogPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImJhY2tiaW5kIj48L3RkPgoJPHRkPiBIb3N0OiA8aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iMjAiIG5hbWU9ImNsaWVudGFkZHIiIHZhbHVlPSIkRU5WeydSRU1PVEVfQUREUid9Ij4KCSBQb3J0OiA8aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iNyIgbmFtZT0iY2xpZW50cG9ydCIgdmFsdWU9IjY3ODkiIG9ua2V5dXA9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYScpLmlubmVySFRNTD10aGlzLnZhbHVlOyI+PC90ZD4KCgk8dGQ+PGlucHV0IG5hbWU9InMiIGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0IiB2YWx1ZT0iQ29ubmVjdCI+PC90ZD4KCTwvZm9ybT4KCTwvdHI+Cgk8dHI+Cgk8dGQgY29sc3Bhbj0zPjxmb250IGNvbG9yPSNGRkZGRkY+WytdIENsaWVudCBsaXN0ZW4gYmVmb3JlIGNvbm5lY3QgYmFjayEKCTxicj5bK10gVHJ5IGNoZWNrIHlvdXIgUG9ydCB3aXRoICRFTlZ7J1NFUlZFUl9OQU1FJ308L2E+Cgk8YnI+WytdIENsaWVudCBsaXN0ZW4gd2l0aCBjb21tYW5kOiA8cnVuPm5jIC12diAtbCAtcCA8c3BhbiBpZD0iYmEiPjY3ODk8L3NwYW4+PC9ydW4+PC9mb250PjwvdGQ+CgoJPC90cj4KCTwvdGFibGU+CgoJPGJyPjxicj4KCTx0YWJsZT4KCTx0cj4KCTxmb3JtIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPgoJPHRkPkJpbmQgUG9ydDogPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImJhY2tiaW5kIj48L3RkPgoKCTx0ZD4gUG9ydDogPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjE1IiBuYW1lPSJjbGllbnRwb3J0IiB2YWx1ZT0iNjg2OCIgb25rZXl1cD0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JpJykuaW5uZXJIVE1MPXRoaXMudmFsdWU7Ij4KCgkgUGFzc3dvcmQ6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSIxNSIgbmFtZT0iYmluZHBhc3MiIHZhbHVlPSJwYXJrZHJlYW0xIj48L3RkPgoJPHRkPjxpbnB1dCBuYW1lPSJzIiBjbGFzcz0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCIgdmFsdWU9IkJpbmQiPjwvdGQ+Cgk8L2Zvcm0+Cgk8L3RyPgoJPHRyPgoJPHRkIGNvbHNwYW49Mz48Zm9udCBjb2xvcj0jRkZGRkZGPlsrXSBCaW5kIFBvcnQgYmVmb3JlIGNvbm5lY3QgYmFjayEKCTxicj5bK10gVHJ5IGNoZWNrIHlvdXIgUG9ydCB3aXRoICRFTlZ7J1NFUlZFUl9OQU1FJ308L2E+Cgk8YnI+WytdIFRyeSBjb21tYW5kOiA8cnVuPm5jICRFTlZ7J1NFUlZFUl9BRERSJ30gPHNwYW4gaWQ9ImJpIj42ODY4PC9zcGFuPjwvcnVuPjwvZm9udD48L3RkPgoKCTwvdHI+Cgk8L3RhYmxlPjxicj4KRU5ECn0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIEJhY2tjb25uZWN0IHVzZSBwZXJsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIEJhY2tCaW5kCnsKCXVzZSBNSU1FOjpCYXNlNjQ7Cgl1c2UgU29ja2V0OwkKCSRiYWNrcGVybD0iSXlFdmRYTnlMMkpwYmk5d1pYSnNDblZ6WlNCVGIyTnJaWFE3Q2lSamJXUTlJQ0pzZVc1NElqc0tKSE41YzNSbGJUMGdKMlZqYUc4Z0lpSTdDbVZqYUc4Z0lsc3JYU0JOWVhKcGIyNHdNREVnUW1GamF5QkRiMjV1WldOMElGUm9ZVzVvSUVOdmJtY2dJanNLWldOb2J5QWlXeXRkSUVaQ09pQm9kSFJ3Y3pvdkwzZDNkeTVtWVdObFltOXZheTVqYjIwdlVHRnlkSGt1VFdGeWFXOXVNREF4SWpzS1pXTm9ieUFpV3l0ZElFMWhhV3c2SUUxeUxrMWhjbWx2YmpBd01VQm5iV0ZwYkM1amIyMGlPMlZqYUc4Z0lpSTdDbVZqYUc4Z0lsc3RYU0JWYm1GdFpTQXRZVG9pTzJWamFHOGdJbUIxYm1GdFpTQXRZV0FpTzJWamFHOGdJaUk3Q21WamFHOGdJbHN0WFNCcFpEb2lPMlZqYUc4Z0ltQnBaR0FpTzJWamFHOGdJaUk3WldOb2J5QWlXeTFkSUhCM1pEb2lPd3BsWTJodklDSmdjSGRrWUNJN1pXTm9ieUFpSWp0bFkyaHZJQ0piSzEwZ1EyOXRiV0Z1WkNCTllYSnBiMjR3TURFK0lqdGxZMmh2SWlJN0wySnBiaTl6YUNjN0NpUXdQU1JqYldRN0NpUjBZWEpuWlhROUpFRlNSMVpiTUYwN0NpUndiM0owUFNSQlVrZFdXekZkT3dva2FXRmtaSEk5YVc1bGRGOWhkRzl1S0NSMFlYSm5aWFFwSUh4OElHUnBaU2dpUlhKeWIzSTZJQ1FoWEc0aUtUc0tKSEJoWkdSeVBYTnZZMnRoWkdSeVgybHVLQ1J3YjNKMExDQWthV0ZrWkhJcElIeDhJR1JwWlNnaVJYSnliM0k2SUNRaFhHNGlLVHNLSkhCeWIzUnZQV2RsZEhCeWIzUnZZbmx1WVcxbEtDZDBZM0FuS1RzS2MyOWphMlYwS0ZOUFEwdEZWQ3dnVUVaZlNVNUZWQ3dnVTA5RFMxOVRWRkpGUVUwc0lDUndjbTkwYnlrZ2ZId2daR2xsS0NKRmNuSnZjam9nSkNGY2JpSXBPd3BqYjI1dVpXTjBLRk5QUTB0RlZDd2dKSEJoWkdSeUtTQjhmQ0JrYVdVb0lrVnljbTl5T2lBa0lWeHVJaWs3Q205d1pXNG9VMVJFU1U0c0lDSStKbE5QUTB0RlZDSXBPd3B2Y0dWdUtGTlVSRTlWVkN3Z0lqNG1VMDlEUzBWVUlpazdDbTl3Wlc0b1UxUkVSVkpTTENBaVBpWlRUME5MUlZRaUtUc0tjM2x6ZEdWdEtDUnplWE4wWlcwcE93cGpiRzl6WlNoVFZFUkpUaWs3Q21Oc2IzTmxLRk5VUkU5VlZDazdDbU5zYjNObEtGTlVSRVZTVWlrNyI7CgkkYmluZHBlcmw9Ikl5RXZkWE55TDJKcGJpOXdaWEpzRFFwMWMyVWdVMjlqYTJWME93MEtKRUZTUjBNOVFFRlNSMVk3RFFva2NHOXlkQWs5SUNSQlVrZFdXekJkT3cwS0pIQnliM1J2Q1QwZ1oyVjBjSEp2ZEc5aWVXNWhiV1VvSjNSamNDY3BPdzBLSkZOb1pXeHNDVDBnSWk5aWFXNHZZbUZ6YUNJN0RRcHpiMk5yWlhRb1UwVlNWa1ZTTENCUVJsOUpUa1ZVTENCVFQwTkxYMU5VVWtWQlRTd2dKSEJ5YjNSdktXOXlJR1JwWlNBaWMyOWphMlYwT2lRaElqc05Dbk5sZEhOdlkydHZjSFFvVTBWU1ZrVlNMQ0JUVDB4ZlUwOURTMFZVTENCVFQxOVNSVlZUUlVGRVJGSXNJSEJoWTJzb0ltd2lMQ0F4S1NsdmNpQmthV1VnSW5ObGRITnZZMnR2Y0hRNklDUWhJanNOQ21KcGJtUW9VMFZTVmtWU0xDQnpiMk5yWVdSa2NsOXBiaWdrY0c5eWRDd2dTVTVCUkVSU1gwRk9XU2twYjNJZ1pHbGxJQ0ppYVc1a09pQWtJU0k3RFFwc2FYTjBaVzRvVTBWU1ZrVlNMQ0JUVDAxQldFTlBUazRwQ1FsdmNpQmthV1VnSW14cGMzUmxiam9nSkNFaU93MEtabTl5S0RzZ0pIQmhaR1J5SUQwZ1lXTmpaWEIwS0VOTVNVVk9WQ3dnVTBWU1ZrVlNLVHNnWTJ4dmMyVWdRMHhKUlU1VUtRMEtldzBLQ1c5d1pXNG9VMVJFU1U0c0lDSStKa05NU1VWT1ZDSXBPdzBLQ1c5d1pXNG9VMVJFVDFWVUxDQWlQaVpEVEVsRlRsUWlLVHNOQ2dsdmNHVnVLRk5VUkVWU1Vpd2dJajRtUTB4SlJVNVVJaWs3RFFvSmMzbHpkR1Z0S0NKMWJuTmxkQ0JJU1ZOVVJrbE1SVHNnZFc1elpYUWdVMEZXUlVoSlUxUWdPMlZqYUc4Z0oxc3JYU0JUZVhOMFpXMXBibVp2T2lBbk95QjFibUZ0WlNBdFlUdGxZMmh2TzJWamFHOGdKMXNyWFNCVmMyVnlhVzVtYnpvZ0p6c2dhV1E3WldOb2J6dGxZMmh2SUNkYksxMGdSR2x5WldOMGIzSjVPaUFuT3lCd2QyUTdaV05vYnpzZ1pXTm9ieUFuV3l0ZElGTm9aV3hzT2lBbk95UlRhR1ZzYkNJcE93MEtDV05zYjNObEtGTlVSRWxPS1RzTkNnbGpiRzl6WlNoVFZFUlBWVlFwT3cwS0NXTnNiM05sS0ZOVVJFVlNVaWs3RFFwOURRbz0iOwoKCSRDbGllbnRBZGRyID0gJGlueydjbGllbnRhZGRyJ307CgkkQ2xpZW50UG9ydCA9IGludCgkaW57J2NsaWVudHBvcnQnfSk7CglpZigkQ2xpZW50UG9ydCBlcSAwKQoJewoJCXJldHVybiAmQmFja0JpbmRGb3JtOwoJfWVsc2lmKCEkQ2xpZW50QWRkciBlcSAiIikKCXsKCQkkRGF0YT1kZWNvZGVfYmFzZTY0KCRiYWNrcGVybCk7CgkJaWYoLXcgIi90bXAvIikKCQl7CgkJCSRGaWxlPSIvdG1wL2JhY2tjb25uZWN0LnBsIjsJCgkJfWVsc2UKCQl7CgkJCSRGaWxlPSRDdXJyZW50RGlyLiRQYXRoU2VwLiJiYWNrY29ubmVjdC5wbCI7CgkJfQoJCW9wZW4oRklMRSwgIj4kRmlsZSIpOwoJCXByaW50IEZJTEUgJERhdGE7CgkJY2xvc2UgRklMRTsKCQlzeXN0ZW0oInBlcmwgYmFja2Nvbm5lY3QucGwgJENsaWVudEFkZHIgJENsaWVudFBvcnQiKTsKCQl1bmxpbmsoJEZpbGUpOwoJCWV4aXQgMDsKCX1lbHNlCgl7CgkJJERhdGE9ZGVjb2RlX2Jhc2U2NCgkYmluZHBlcmwpOwoJCWlmKC13ICIvdG1wIikKCQl7CgkJCSRGaWxlPSIvdG1wL2JpbmRwb3J0LnBsIjsJCgkJfWVsc2UKCQl7CgkJCSRGaWxlPSRDdXJyZW50RGlyLiRQYXRoU2VwLiJiaW5kcG9ydC5wbCI7CgkJfQoJCW9wZW4oRklMRSwgIj4kRmlsZSIpOwoJCXByaW50IEZJTEUgJERhdGE7CgkJY2xvc2UgRklMRTsKCQlzeXN0ZW0oInBlcmwgYmluZHBvcnQucGwgJENsaWVudFBvcnQiKTsKCQl1bmxpbmsoJEZpbGUpOwoJCWV4aXQgMDsKCX0KfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgIEFycmF5IExpc3QgRGlyZWN0b3J5CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFJtRGlyKCQpIAp7CglteSAkZGlyID0gc2hpZnQ7CiAgICBpZihvcGVuZGlyKERJUiwkZGlyKSkKCXsKCQl3aGlsZSgkZmlsZSA9IHJlYWRkaXIoRElSKSkKCQl7CgkJCWlmKCgkZmlsZSBuZSAiLiIpICYmICgkZmlsZSBuZSAiLi4iKSkKCQkJewoJCQkJJGZpbGU9ICRkaXIuJFBhdGhTZXAuJGZpbGU7CgkJCQlpZigtZCAkZmlsZSkKCQkJCXsKCQkJCQkmUm1EaXIoJGZpbGUpOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCXVubGluaygkZmlsZSk7CgkJCQl9CgkJCX0KCQl9CgkJY2xvc2VkaXIoRElSKTsKCX0KCWlmKCFybWRpcigkZGlyKSkKCXsKCQkKCX0KfQpzdWIgRmlsZU93bmVyKCQpCnsKCW15ICRmaWxlID0gc2hpZnQ7CglpZigtZSAkZmlsZSkKCXsKCQkoJHVpZCwkZ2lkKSA9IChzdGF0KCRmaWxlKSlbNCw1XTsKCQlpZigkV2luTlQpCgkJewoJCQlyZXR1cm4gIj8/PyI7CgkJfQoJCWVsc2UKCQl7CgkJCSRuYW1lPWdldHB3dWlkKCR1aWQpOwoJCQkkZ3JvdXA9Z2V0Z3JnaWQoJGdpZCk7CgkJCXJldHVybiAkbmFtZS4iLyIuJGdyb3VwOwoJCX0KCX0KCXJldHVybiAiPz8/IjsKfQpzdWIgUGFyZW50Rm9sZGVyKCQpCnsKCW15ICRwYXRoID0gc2hpZnQ7CglteSAkQ29tbSA9ICJjZCBcIiRDdXJyZW50RGlyXCIiLiRDbWRTZXAuImNkIC4uIi4kQ21kU2VwLiRDbWRQd2Q7CgljaG9wKCRwYXRoID0gYCRDb21tYCk7CglyZXR1cm4gJHBhdGg7Cn0Kc3ViIEZpbGVQZXJtcygkKQp7CglteSAkZmlsZSA9IHNoaWZ0OwoJbXkgJHVyID0gIi0iOwoJbXkgJHV3ID0gIi0iOwoJaWYoLWUgJGZpbGUpCgl7CgkJaWYoJFdpbk5UKQoJCXsKCQkJaWYoLXIgJGZpbGUpeyAkdXIgPSAiciI7IH0KCQkJaWYoLXcgJGZpbGUpeyAkdXcgPSAidyI7IH0KCQkJcmV0dXJuICR1ciAuICIgLyAiIC4gJHV3OwoJCX1lbHNlCgkJewoJCQkkbW9kZT0oc3RhdCgkZmlsZSkpWzJdOwoJCQkkcmVzdWx0ID0gc3ByaW50ZigiJTA0byIsICRtb2RlICYgMDc3NzcpOwoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CglyZXR1cm4gIjAwMDAiOwp9CnN1YiBGaWxlTGFzdE1vZGlmaWVkKCQpCnsKCW15ICRmaWxlID0gc2hpZnQ7CglpZigtZSAkZmlsZSkKCXsKCQkoJGxhKSA9IChzdGF0KCRmaWxlKSlbOV07CgkJKCRkLCRtLCR5LCRoLCRpKSA9IChsb2NhbHRpbWUoJGxhKSlbMyw0LDUsMiwxXTsKCQkkeSA9ICR5ICsgMTkwMDsKCQlAbW9udGggPSBxdy8xIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMi87CgkJJGxtdGltZSA9IHNwcmludGYoIiUwMmQvJXMvJTRkICUwMmQ6JTAyZCIsJGQsJG1vbnRoWyRtXSwkeSwkaCwkaSk7CgkJcmV0dXJuICRsbXRpbWU7Cgl9CglyZXR1cm4gIj8/PyI7Cn0Kc3ViIEZpbGVTaXplKCQpCnsKCW15ICRmaWxlID0gc2hpZnQ7CglpZigtZiAkZmlsZSkKCXsKCQlyZXR1cm4gLXMgJGZpbGU7Cgl9CglyZXR1cm4gIjAiOwoKfQpzdWIgUGFyc2VGaWxlU2l6ZSgkKQp7CglteSAkc2l6ZSA9IHNoaWZ0OwoJaWYoJHNpemUgPD0gMTAyNCkKCXsKCQlyZXR1cm4gJHNpemUuICIgQiI7Cgl9CgllbHNlCgl7CgkJaWYoJHNpemUgPD0gMTAyNCoxMDI0KSAKCQl7CgkJCSRzaXplID0gc3ByaW50ZigiJS4wMmYiLCRzaXplIC8gMTAyNCk7CgkJCXJldHVybiAkc2l6ZS4iIEtCIjsKCQl9CgkJZWxzZSAKCQl7CgkJCSRzaXplID0gc3ByaW50ZigiJS4yZiIsJHNpemUgLyAxMDI0IC8gMTAyNCk7CgkJCXJldHVybiAkc2l6ZS4iIE1CIjsKCQl9Cgl9Cn0Kc3ViIHRyaW0oJCkKewoJbXkgJHN0cmluZyA9IHNoaWZ0OwoJJHN0cmluZyA9fiBzL15ccysvLzsKCSRzdHJpbmcgPX4gcy9ccyskLy87CglyZXR1cm4gJHN0cmluZzsKfQpzdWIgQWRkU2xhc2hlcygkKQp7CglteSAkc3RyaW5nID0gc2hpZnQ7Cgkkc3RyaW5nPX4gcy9cXC9cXFxcL2c7CglyZXR1cm4gJHN0cmluZzsKfQpzdWIgTGlzdERpcgp7CglteSAkcGF0aCA9ICRDdXJyZW50RGlyLiRQYXRoU2VwOwoJJHBhdGg9fiBzL1xcXFwvXFwvZzsKCW15ICRyZXN1bHQgPSAiPGZvcm0gbmFtZT0nZicgYWN0aW9uPSckU2NyaXB0TG9jYXRpb24nPjxzcGFuIHN0eWxlPSdmb250OiAxMXB0IFZlcmRhbmE7IGZvbnQtd2VpZ2h0OiBib2xkOyc+UGF0aDogWyAiLiZBZGRMaW5rRGlyKCJndWkiKS4iIF0gPC9zcGFuPjxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSdkJyBzaXplPSc0MCcgdmFsdWU9JyRDdXJyZW50RGlyJyAvPjxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2EnIHZhbHVlPSdndWknPjxpbnB1dCBjbGFzcz0nc3VibWl0JyB0eXBlPSdzdWJtaXQnIHZhbHVlPSdDaGFuZ2UnPjwvZm9ybT4iOwoJaWYoLWQgJHBhdGgpCgl7CgkJbXkgQGZuYW1lID0gKCk7CgkJbXkgQGRuYW1lID0gKCk7CgkJaWYob3BlbmRpcihESVIsJHBhdGgpKQoJCXsKCQkJd2hpbGUoJGZpbGUgPSByZWFkZGlyKERJUikpCgkJCXsKCQkJCSRmPSRwYXRoLiRmaWxlOwoJCQkJaWYoLWQgJGYpCgkJCQl7CgkJCQkJcHVzaChAZG5hbWUsJGZpbGUpOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCXB1c2goQGZuYW1lLCRmaWxlKTsKCQkJCX0KCQkJfQoJCQljbG9zZWRpcihESVIpOwoJCX0KCQlAZm5hbWUgPSBzb3J0IHsgbGMoJGEpIGNtcCBsYygkYikgfSBAZm5hbWU7CgkJQGRuYW1lID0gc29ydCB7IGxjKCRhKSBjbXAgbGMoJGIpIH0gQGRuYW1lOwoJCSRyZXN1bHQgLj0gIjxkaXY+PHRhYmxlIHdpZHRoPSc5MCUnIGNsYXNzPSdsaXN0ZGlyJz4KCgkJPHRyIHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiAjM2UzZTNlJz48dGg+RmlsZSBOYW1lPC90aD4KCQk8dGggc3R5bGU9J3dpZHRoOjEwMHB4Oyc+RmlsZSBTaXplPC90aD4KCQk8dGggc3R5bGU9J3dpZHRoOjE1MHB4Oyc+T3duZXI8L3RoPgoJCTx0aCBzdHlsZT0nd2lkdGg6MTAwcHg7Jz5QZXJtaXNzaW9uPC90aD4KCQk8dGggc3R5bGU9J3dpZHRoOjE1MHB4Oyc+TGFzdCBNb2RpZmllZDwvdGg+CgkJPHRoIHN0eWxlPSd3aWR0aDoyNjBweDsnPkFjdGlvbjwvdGg+PC90cj4iOwoJCW15ICRzdHlsZT0ibGluZSI7CgkJbXkgJGk9MDsKCQlmb3JlYWNoIG15ICRkIChAZG5hbWUpCgkJewoJCQkkc3R5bGU9ICgkc3R5bGUgZXEgImxpbmUiKSA/ICJub3RsaW5lIjogImxpbmUiOwoJCQkkZCA9ICZ0cmltKCRkKTsKCQkJJGRpcm5hbWU9JGQ7CgkJCWlmKCRkIGVxICIuLiIpIAoJCQl7CgkJCQkkZCA9ICZQYXJlbnRGb2xkZXIoJHBhdGgpOwoJCQl9CgkJCWVsc2lmKCRkIGVxICIuIikgCgkJCXsKCQkJCSRkID0gJHBhdGg7CgkJCX0KCQkJZWxzZSAKCQkJewoJCQkJJGQgPSAkcGF0aC4kZDsKCQkJfQoJCQkkcmVzdWx0IC49ICI8dHIgY2xhc3M9JyRzdHlsZSc+CgoJCQk8dGQgaWQ9J0ZpbGVfJGknIHN0eWxlPSdmb250OiAxMXB0IFZlcmRhbmE7IGZvbnQtd2VpZ2h0OiBib2xkOyc+PGEgIGhyZWY9Jz9hPWd1aSZkPSIuJGQuIic+WyAiLiRkaXJuYW1lLiIgXTwvYT48L3RkPiI7CgkJCSRyZXN1bHQgLj0gIjx0ZD5ESVI8L3RkPiI7CgkJCSRyZXN1bHQgLj0gIjx0ZCBzdHlsZT0ndGV4dC1hbGlnbjpjZW50ZXI7Jz4iLiZGaWxlT3duZXIoJGQpLiI8L3RkPiI7CgkJCSRyZXN1bHQgLj0gIjx0ZCBpZD0nRmlsZVBlcm1zXyRpJyBzdHlsZT0ndGV4dC1hbGlnbjpjZW50ZXI7JyBvbmRibGNsaWNrPVwicm1fY2htb2RfZm9ybSh0aGlzLCIuJGkuIiwnIi4mRmlsZVBlcm1zKCRkKS4iJywnIi4kZGlybmFtZS4iJylcIiA+PHNwYW4gb25jbGljaz1cImNobW9kX2Zvcm0oIi4kaS4iLCciLiRkaXJuYW1lLiInKVwiID4iLiZGaWxlUGVybXMoJGQpLiI8L3NwYW4+PC90ZD4iOwoJCQkkcmVzdWx0IC49ICI8dGQgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyOyc+Ii4mRmlsZUxhc3RNb2RpZmllZCgkZCkuIjwvdGQ+IjsKCQkJJHJlc3VsdCAuPSAiPHRkIHN0eWxlPSd0ZXh0LWFsaWduOmNlbnRlcjsnPjxhIGhyZWY9J2phdmFzY3JpcHQ6cmV0dXJuIGZhbHNlOycgb25jbGljaz1cInJlbmFtZV9mb3JtKCRpLCckZGlybmFtZScsJyIuJkFkZFNsYXNoZXMoJkFkZFNsYXNoZXMoJGQpKS4iJylcIj5SZW5hbWU8L2E+ICB8IDxhIG9uY2xpY2s9XCJpZighY29uZmlybSgnUmVtb3ZlIGRpcjogJGRpcm5hbWUgPycpKSB7IHJldHVybiBmYWxzZTt9XCIgaHJlZj0nP2E9Z3VpJmQ9JHBhdGgmcmVtb3ZlPSRkaXJuYW1lJz5SZW1vdmU8L2E+PC90ZD4iOwoJCQkkcmVzdWx0IC49ICI8L3RyPiI7CgkJCSRpKys7CgkJfQoJCWZvcmVhY2ggbXkgJGYgKEBmbmFtZSkKCQl7CgkJCSRzdHlsZT0gKCRzdHlsZSBlcSAibGluZSIpID8gIm5vdGxpbmUiOiAibGluZSI7CgkJCSRmaWxlPSRmOwoJCQkkZiA9ICRwYXRoLiRmOwoJCQkkdmlldyA9ICI/ZGlyPSIuJHBhdGguIiZ2aWV3PSIuJGY7CgkJCSRyZXN1bHQgLj0gIjx0ciBjbGFzcz0nJHN0eWxlJz48dGQgaWQ9J0ZpbGVfJGknIHN0eWxlPSdmb250OiAxMXB0IFZlcmRhbmE7Jz48YSBocmVmPSc/YT1jb21tYW5kJmQ9Ii4kcGF0aC4iJmM9ZWRpdCUyMCIuJGZpbGUuIic+Ii4kZmlsZS4iPC9hPjwvdGQ+IjsKCQkJJHJlc3VsdCAuPSAiPHRkPiIuJlBhcnNlRmlsZVNpemUoJkZpbGVTaXplKCRmKSkuIjwvdGQ+IjsKCQkJJHJlc3VsdCAuPSAiPHRkIHN0eWxlPSd0ZXh0LWFsaWduOmNlbnRlcjsnPiIuJkZpbGVPd25lcigkZikuIjwvdGQ+IjsKCQkJJHJlc3VsdCAuPSAiPHRkIGlkPSdGaWxlUGVybXNfJGknIHN0eWxlPSd0ZXh0LWFsaWduOmNlbnRlcjsnIG9uZGJsY2xpY2s9XCJybV9jaG1vZF9mb3JtKHRoaXMsIi4kaS4iLCciLiZGaWxlUGVybXMoJGYpLiInLCciLiRmaWxlLiInKVwiID48c3BhbiBvbmNsaWNrPVwiY2htb2RfZm9ybSgkaSwnJGZpbGUnKVwiID4iLiZGaWxlUGVybXMoJGYpLiI8L3NwYW4+PC90ZD4iOwoJCQkkcmVzdWx0IC49ICI8dGQgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyOyc+Ii4mRmlsZUxhc3RNb2RpZmllZCgkZikuIjwvdGQ+IjsKCQkJJHJlc3VsdCAuPSAiPHRkIHN0eWxlPSd0ZXh0LWFsaWduOmNlbnRlcjsnPjxhIGhyZWY9Jz9hPWNvbW1hbmQmZD0iLiRwYXRoLiImYz1lZGl0JTIwIi4kZmlsZS4iJz5FZGl0PC9hPiB8IDxhIGhyZWY9J2phdmFzY3JpcHQ6cmV0dXJuIGZhbHNlOycgb25jbGljaz1cInJlbmFtZV9mb3JtKCRpLCckZmlsZScsJ2YnKVwiPlJlbmFtZTwvYT4gfCA8YSBocmVmPSc/YT1kb3dubG9hZCZvPWdvJmY9Ii4kZi4iJz5Eb3dubG9hZDwvYT4gfCA8YSBvbmNsaWNrPVwiaWYoIWNvbmZpcm0oJ1JlbW92ZSBmaWxlOiAkZmlsZSA/JykpIHsgcmV0dXJuIGZhbHNlO31cIiBocmVmPSc/YT1ndWkmZD0kcGF0aCZyZW1vdmU9JGZpbGUnPlJlbW92ZTwvYT48L3RkPiI7CgkJCSRyZXN1bHQgLj0gIjwvdHI+IjsKCQkJJGkrKzsKCQl9CgkJJHJlc3VsdCAuPSAiPC90YWJsZT48L2Rpdj4iOwoJfQoJcmV0dXJuICRyZXN1bHQ7Cn0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUcnkgdG8gVmlldyBMaXN0IFVzZXIKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgVmlld0RvbWFpblVzZXIKewoJb3BlbiAoZDBtYWlucywgJy9ldGMvbmFtZWQuY29uZicpIG9yICRlcnI9MTsKCW15IEBjbnpzID0gPGQwbWFpbnM+OwoJY2xvc2UgZDBtYWluczsKCW15ICRzdHlsZT0ibGluZSI7CglteSAkcmVzdWx0PSI8aDM+PGZvbnQgc3R5bGU9J2ZvbnQ6IDE1cHQgVmVyZGFuYTtjb2xvcjogI2ZmOTkwMDsnPkNvcHlyaWdodCAoQykgUGFya2RyZWFtMTwvZm9udD48L2gzPiI7CglpZiAoJGVycikKCXsKCQkkcmVzdWx0IC49ICAoJzxwPkMwdWxkblwndCBCeXBhc3MgaXQgLCBTb3JyeTwvcD4nKTsKCQlyZXR1cm4gJHJlc3VsdDsKCX1lbHNlCgl7CgkJJHJlc3VsdCAuPSAnPHRhYmxlPjx0cj48dGg+RG9tYWluczwvdGg+IDx0aD5Vc2VyPC90aD48L3RyPic7Cgl9Cglmb3JlYWNoIG15ICRvbmUgKEBjbnpzKQoJewoJCWlmKCRvbmUgPX4gbS8uKj96b25lICIoLio/KSIgey8pCgkJewkKCQkJJHN0eWxlPSAoJHN0eWxlIGVxICJsaW5lIikgPyAibm90bGluZSI6ICJsaW5lIjsKCQkJJGZpbGVuYW1lPSAiL2V0Yy92YWxpYXNlcy8iLiQxOwoJCQkkb3duZXIgPSBnZXRwd3VpZCgoc3RhdCgkZmlsZW5hbWUpKVs0XSk7CgkJCSRyZXN1bHQgLj0gJzx0ciBjbGFzcz0iJHN0eWxlIiB3aWR0aD01MCU+PHRkPjxhIGhyZWY9XCdodHRwOi8vJy4kMS4nXCc+Jy4kMS4nIDwvdGQ+PHRkPiAnLiRvd25lci4nPC90ZD48L3RyPic7CgkJfQoJfQoJJHJlc3VsdCAuPSAnPC90YWJsZT4nOwoJcmV0dXJuICRyZXN1bHQ7Cn0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFZpZXcgTG9nCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFZpZXdMb2cKewoJaWYoJFdpbk5UKQoJewoJCXJldHVybiAiPGgyPjxmb250IHN0eWxlPSdmb250OiAyMHB0IFZlcmRhbmE7Y29sb3I6ICNmZjk5MDA7Jz5Eb24ndCBydW4gb24gV2luZG93czwvZm9udD48L2gyPiI7Cgl9CglteSAkcmVzdWx0PSI8dGFibGU+PHRyPjx0aD5QYXRoIExvZzwvdGg+PHRoPlN1Ym1pdDwvdGg+PC90cj4iOwoJbXkgQHBhdGhsb2c9KAoJCQkJJy91c3IvbG9jYWwvYXBhY2hlL2xvZ3MvZXJyb3JfbG9nJywKCQkJCScvdmFyL2xvZy9odHRwZC9lcnJvcl9sb2cnLAoJCQkJJy91c3IvbG9jYWwvYXBhY2hlL2xvZ3MvYWNjZXNzX2xvZycKCQkJCSk7CglteSAkaT0wOwoJbXkgJHBlcm1zOwoJbXkgJHNsOwoJZm9yZWFjaCBteSAkbG9nIChAcGF0aGxvZykKCXsKCQlpZigtdyAkbG9nKQoJCXsKCQkJJHBlcm1zPSJPSyI7CgkJfWVsc2UKCQl7CgkJCWNob3AoJHNsID0gYGxuIC1zICRsb2cgZXJyb3JfbG9nXyRpYCk7CgkJCWlmKCZ0cmltKCRscykgZXEgIiIpCgkJCXsKCQkJCWlmKC1yICRscykKCQkJCXsKCQkJCQkkcGVybXM9Ik9LIjsKCQkJCQkkbG9nPSJlcnJvcl9sb2dfIi4kaTsKCQkJCX0KCQkJfWVsc2UKCQkJewoJCQkJJHBlcm1zPSI8Zm9udCBzdHlsZT0nY29sb3I6IHJlZDsnPkNhbmNlbDxmb250PiI7CgkJCX0KCQl9CgkJJHJlc3VsdCAuPTw8RU5EOwoJCTx0cj4KCgkJCTxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPgoJCQk8dGQ+PGlucHV0IHR5cGU9InRleHQiIG9ua2V5dXA9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2dfJGknKS52YWx1ZT0nbGVzcyAnICsgdGhpcy52YWx1ZTsiIHZhbHVlPSIkbG9nIiBzaXplPSc1MCcvPjwvdGQ+CgkJCTx0ZD48aW5wdXQgY2xhc3M9InN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iVHJ5IiAvPjwvdGQ+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJsb2dfJGkiIG5hbWU9ImMiIHZhbHVlPSJsZXNzICRsb2ciLz4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImNvbW1hbmQiIC8+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImQiIHZhbHVlPSIkQ3VycmVudERpciIgLz4KCQkJPC9mb3JtPgoJCQk8dGQ+JHBlcm1zPC90ZD4KCgkJPC90cj4KRU5ECgkJJGkrKzsKCX0KCSRyZXN1bHQgLj0iPC90YWJsZT4iOwoJcmV0dXJuICRyZXN1bHQ7Cn0Kc3ViIENvbmZpZ01hcmlvbiB7Cm9wZW4gKENyZWF0ZU5ldywiPkNvbmZpZy5Nb25LaXJhIikgb3IgZGllICJLaCYjMjQ0O25nIFRoJiM3ODc1OyBUJiM3ODQxO28gRmlsZSI7CiRjb25maWdtYXJpb24gPSAiSXlFdmRYTnlMMkpwYmk5d1pYSnNJQzFKTDNWemNpOXNiMk5oYkM5aVlXNWtiV2x1Q25CeWFXNTBJQ0pEYjI1MFpXNTBMWFI1Y0dVNklIUmxlSFF2YUhSdGJGeHVYRzRpT3dwd2NtbHVkQ2M4SVVSUFExUlpVRVVnYUhSdGJDQlFWVUpNU1VNZ0lpMHZMMWN6UXk4dlJGUkVJRmhJVkUxTUlERXVNQ0JVY21GdWMybDBhVzl1WVd3dkwwVk9JaUFpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2VkZJdmVHaDBiV3d4TDBSVVJDOTRhSFJ0YkRFdGRISmhibk5wZEdsdmJtRnNMbVIwWkNJK0NqeG9kRzFzSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUwzaG9kRzFzSWo0OGFHVmhaRDQ4YldWMFlTQm9kSFJ3TFdWeGRXbDJQU0pEYjI1MFpXNTBMVXhoYm1kMVlXZGxJaUJqYjI1MFpXNTBQU0psYmkxMWN5SWdMejRLUEcxbGRHRWdhSFIwY0MxbGNYVnBkajBpUTI5dWRHVnVkQzFVZVhCbElpQmpiMjUwWlc1MFBTSjBaWGgwTDJoMGJXdzdJR05vWVhKelpYUTlkWFJtTFRnaUlDOCtQSFJwZEd4bFBrZGxkQ0JCYkd3Z1EyOXVabWxuSUZOb1pXeHNQQzkwYVhSc1pUNEtQSE4wZVd4bElIUjVjR1U5SW5SbGVIUXZZM056SWo0S0xtNWxkMU4wZVd4bE1TQjdDaUJtYjI1MExXWmhiV2xzZVRvZ1ZHRm9iMjFoT3dvZ1ptOXVkQzF6YVhwbE9pQjRMWE50WVd4c093b2dabTl1ZEMxM1pXbG5hSFE2SUdKdmJHUTdDaUJqYjJ4dmNqb2dJMll3TURzS0lDQjBaWGgwTFdGc2FXZHVPaUJqWlc1MFpYSTdDbjBLUEM5emRIbHNaVDQ4TDJobFlXUStKenNLYzNWaUlHeHBiSHNLSUNBZ0lDZ2tkWE5sY2lrZ1BTQkFYenNLSkcxemNpQTlJSEY0ZTNCM1pIMDdDaVJyYjJ4aFBTUnRjM0l1SWk4aUxpUjFjMlZ5T3dva2EyOXNZVDErY3k5Y2JpOHZaenNLYzNsdGJHbHVheWduTDJodmJXVXZKeTRrZFhObGNpNG5MM0IxWW14cFkxOW9kRzFzTDNaaUwybHVZMngxWkdWekwyTnZibVpwWnk1d2FIQW5MQ1JyYjJ4aExpZCtmblpDZFd4c1pYUnBiakV0VFc5dVMybHlZUzUwZUhRbktUc0tjM2x0YkdsdWF5Z25MMmh2YldVdkp5NGtkWE5sY2k0bkwzQjFZbXhwWTE5b2RHMXNMMmx1WTJ4MVpHVnpMMk52Ym1acFp5NXdhSEFuTENScmIyeGhMaWQrZm5aQ2RXeHNaWFJwYmpJdFRXOXVTMmx5WVM1MGVIUW5LVHNLYzNsdGJHbHVheWduTDJodmJXVXZKeTRrZFhObGNpNG5MM0IxWW14cFkxOW9kRzFzTDJadmNuVnRMMmx1WTJ4MVpHVnpMMk52Ym1acFp5NXdhSEFuTENScmIyeGhMaWQrZm5aQ2RXeHNaWFJwYmpNdFRXOXVTMmx5WVM1MGVIUW5LVHNLYzNsdGJHbHVheWduTDJodmJXVXZKeTRrZFhObGNpNG5MM0IxWW14cFkxOW9kRzFzTDJOakwybHVZMngxWkdWekwyTnZibVpwWnk1d2FIQW5MQ1JyYjJ4aExpZCtmblpDZFd4c1pYUnBialF0VFc5dVMybHlZUzUwZUhRbktUc0tjM2x0YkdsdWF5Z25MMmh2YldVdkp5NGtkWE5sY2k0bkwzQjFZbXhwWTE5b2RHMXNMMk52Ym1acFp5NXdhSEFuTENScmIyeGhMaWQrZmxCb2NHSmlNUzFOYjI1TGFYSmhMblI0ZENjcE93cHplVzFzYVc1cktDY3ZhRzl0WlM4bkxpUjFjMlZ5TGljdmNIVmliR2xqWDJoMGJXd3ZabTl5ZFcwdmFXNWpiSFZrWlhNdlkyOXVabWxuTG5Cb2NDY3NKR3R2YkdFdUozNStVR2h3WW1JeUxVMXZia3RwY21FdWRIaDBKeWs3Q25ONWJXeHBibXNvSnk5b2IyMWxMeWN1SkhWelpYSXVKeTl3ZFdKc2FXTmZhSFJ0YkM5M2NDMWpiMjVtYVdjdWNHaHdKeXdrYTI5c1lTNG5mbjVYYjNKa2NISmxjM014TFUxdmJrdHBjbUV1ZEhoMEp5azdDbk41Yld4cGJtc29KeTlvYjIxbEx5Y3VKSFZ6WlhJdUp5OXdkV0pzYVdOZmFIUnRiQzlpYkc5bkwzZHdMV052Ym1acFp5NXdhSEFuTENScmIyeGhMaWQrZmxkdmNtUndjbVZ6Y3pJdFRXOXVTMmx5WVM1MGVIUW5LVHNLYzNsdGJHbHVheWduTDJodmJXVXZKeTRrZFhObGNpNG5MM0IxWW14cFkxOW9kRzFzTDJOdmJtWnBaM1Z5WVhScGIyNHVjR2h3Snl3a2EyOXNZUzRuZm41S2IyOXRiR0V4TFUxdmJrdHBjbUV1ZEhoMEp5azdDbk41Yld4cGJtc29KeTlvYjIxbEx5Y3VKSFZ6WlhJdUp5OXdkV0pzYVdOZmFIUnRiQzlpYkc5bkwyTnZibVpwWjNWeVlYUnBiMjR1Y0dod0p5d2thMjlzWVM0bmZuNUtiMjl0YkdFeUxVMXZia3RwY21FdWRIaDBKeWs3Q25ONWJXeHBibXNvSnk5b2IyMWxMeWN1SkhWelpYSXVKeTl3ZFdKc2FXTmZhSFJ0YkM5cWIyOXRiR0V2WTI5dVptbG5kWEpoZEdsdmJpNXdhSEFuTENScmIyeGhMaWQrZmtwdmIyMXNZVE10VFc5dVMybHlZUzUwZUhRbktUc0tjM2x0YkdsdWF5Z25MMmh2YldVdkp5NGtkWE5sY2k0bkwzQjFZbXhwWTE5b2RHMXNMM2RvYlM5amIyNW1hV2QxY21GMGFXOXVMbkJvY0Njc0pHdHZiR0V1SjM1K1YyaHRNUzFOYjI1TGFYSmhMblI0ZENjcE93cHplVzFzYVc1cktDY3ZhRzl0WlM4bkxpUjFjMlZ5TGljdmNIVmliR2xqWDJoMGJXd3ZkMmh0WXk5amIyNW1hV2QxY21GMGFXOXVMbkJvY0Njc0pHdHZiR0V1SjM1K1YyaHRNaTFOYjI1TGFYSmhMblI0ZENjcE93cHplVzFzYVc1cktDY3ZhRzl0WlM4bkxpUjFjMlZ5TGljdmNIVmliR2xqWDJoMGJXd3ZjM1Z3Y0c5eWRDOWpiMjVtYVdkMWNtRjBhVzl1TG5Cb2NDY3NKR3R2YkdFdUozNStWMmh0TXkxTmIyNUxhWEpoTG5SNGRDY3BPd3B6ZVcxc2FXNXJLQ2N2YUc5dFpTOG5MaVIxYzJWeUxpY3ZjSFZpYkdsalgyaDBiV3d2WTJ4cFpXNTBMMk52Ym1acFozVnlZWFJwYjI0dWNHaHdKeXdrYTI5c1lTNG5mbjVYYUcwMExVMXZia3RwY21FdWRIaDBKeWs3Q25ONWJXeHBibXNvSnk5b2IyMWxMeWN1SkhWelpYSXVKeTl3ZFdKc2FXTmZhSFJ0YkM5aWFXeHNhVzVuY3k5amIyNW1hV2QxY21GMGFXOXVMbkJvY0Njc0pHdHZiR0V1SjM1K1YyaHROUzFOYjI1TGFYSmhMblI0ZENjcE93cHplVzFzYVc1cktDY3ZhRzl0WlM4bkxpUjFjMlZ5TGljdmNIVmliR2xqWDJoMGJXd3ZZbWxzYkdsdVp5OWpiMjVtYVdkMWNtRjBhVzl1TG5Cb2NDY3NKR3R2YkdFdUozNStWMmh0TmkxTmIyNUxhWEpoTG5SNGRDY3BPd3B6ZVcxc2FXNXJLQ2N2YUc5dFpTOG5MaVIxYzJWeUxpY3ZjSFZpYkdsalgyaDBiV3d2WTJ4cFpXNTBjeTlqYjI1bWFXZDFjbUYwYVc5dUxuQm9jQ2NzSkd0dmJHRXVKMzUrVjJodE55MU5iMjVMYVhKaExuUjRkQ2NwT3dwemVXMXNhVzVyS0NjdmFHOXRaUzhuTGlSMWMyVnlMaWN2Y0hWaWJHbGpYMmgwYld3dmQyaHRZM012WTI5dVptbG5kWEpoZEdsdmJpNXdhSEFuTENScmIyeGhMaWQrZmxkb2JUZ3RUVzl1UzJseVlTNTBlSFFuS1RzS2MzbHRiR2x1YXlnbkwyaHZiV1V2Snk0a2RYTmxjaTRuTDNCMVlteHBZMTlvZEcxc0wyOXlaR1Z5TDJOdmJtWnBaM1Z5WVhScGIyNHVjR2h3Snl3a2EyOXNZUzRuZm41WGFHMDVMVTF2Ymt0cGNtRXVkSGgwSnlrN0NuTjViV3hwYm1zb0p5OW9iMjFsTHljdUpIVnpaWEl1Snk5d2RXSnNhV05mYUhSdGJDOWhaRzFwYmk5amIyNW1MbkJvY0Njc0pHdHZiR0V1SjM1K05TMU5iMjVMYVhKaExuUjRkQ2NwT3dwemVXMXNhVzVyS0NjdmFHOXRaUzhuTGlSMWMyVnlMaWN2Y0hWaWJHbGpYMmgwYld3dllXUnRhVzR2WTI5dVptbG5MbkJvY0Njc0pHdHZiR0V1SjM1K05DMU5iMjVMYVhKaExuUjRkQ2NwT3dwemVXMXNhVzVyS0NjdmFHOXRaUzhuTGlSMWMyVnlMaWN2Y0hWaWJHbGpYMmgwYld3dlkyOXVabDluYkc5aVlXd3VjR2h3Snl3a2EyOXNZUzRuZm41cGJuWnBjMmx2TFUxdmJrdHBjbUV1ZEhoMEp5azdDbk41Yld4cGJtc29KeTlvYjIxbEx5Y3VKSFZ6WlhJdUp5OXdkV0pzYVdOZmFIUnRiQzlwYm1Oc2RXUmxMMlJpTG5Cb2NDY3NKR3R2YkdFdUozNStOeTFOYjI1TGFYSmhMblI0ZENjcE93cHplVzFzYVc1cktDY3ZhRzl0WlM4bkxpUjFjMlZ5TGljdmNIVmliR2xqWDJoMGJXd3ZZMjl1Ym1WamRDNXdhSEFuTENScmIyeGhMaWQrZmpndFRXOXVTMmx5WVM1MGVIUW5LVHNLYzNsdGJHbHVheWduTDJodmJXVXZKeTRrZFhObGNpNG5MM0IxWW14cFkxOW9kRzFzTDIxclgyTnZibVl1Y0dod0p5d2thMjlzWVM0bmZuNXRheTF3YjNKMFlXeGxNUzFOYjI1TGFYSmhMblI0ZENjcE93cHplVzFzYVc1cktDY3ZhRzl0WlM4bkxpUjFjMlZ5TGljdmNIVmliR2xqWDJoMGJXd3ZhVzVqYkhWa1pTOWpiMjVtYVdjdWNHaHdKeXdrYTI5c1lTNG5mbjR4TWkxTmIyNUxhWEpoTG5SNGRDY3BPd3B6ZVcxc2FXNXJLQ2N2YUc5dFpTOG5MaVIxYzJWeUxpY3ZjSFZpYkdsalgyaDBiV3d2YzJWMGRHbHVaM011Y0dod0p5d2thMjlzWVM0bmZuNVRiV1l0VFc5dVMybHlZUzUwZUhRbktUc0tjM2x0YkdsdWF5Z25MMmh2YldVdkp5NGtkWE5sY2k0bkwzQjFZbXhwWTE5b2RHMXNMMmx1WTJ4MVpHVnpMMloxYm1OMGFXOXVjeTV3YUhBbkxDUnJiMnhoTGlkK2ZuQm9jR0ppTXkxTmIyNUxhWEpoTG5SNGRDY3BPd3B6ZVcxc2FXNXJLQ2N2YUc5dFpTOG5MaVIxYzJWeUxpY3ZjSFZpYkdsalgyaDBiV3d2YVc1amJIVmtaUzlrWWk1d2FIQW5MQ1JyYjJ4aExpZCtmbWx1Wm1sdWFYUjVMVTF2Ymt0cGNtRXVkSGgwSnlrN0NuTjViV3hwYm1zb0p5OW9iMjFsTWk4bkxpUjFjMlZ5TGljdmNIVmliR2xqWDJoMGJXd3ZkbUl2YVc1amJIVmtaWE12WTI5dVptbG5MbkJvY0Njc0pHdHZiR0V1SjM1K2RrSjFiR3hsZEdsdU1TMU5iMjVMYVhKaExuUjRkQ2NwT3dwemVXMXNhVzVyS0NjdmFHOXRaVEl2Snk0a2RYTmxjaTRuTDNCMVlteHBZMTlvZEcxc0wybHVZMngxWkdWekwyTnZibVpwWnk1d2FIQW5MQ1JyYjJ4aExpZCtmblpDZFd4c1pYUnBiakl0VFc5dVMybHlZUzUwZUhRbktUc0tjM2x0YkdsdWF5Z25MMmh2YldVeUx5Y3VKSFZ6WlhJdUp5OXdkV0pzYVdOZmFIUnRiQzltYjNKMWJTOXBibU5zZFdSbGN5OWpiMjVtYVdjdWNHaHdKeXdrYTI5c1lTNG5mbjUyUW5Wc2JHVjBhVzR6TFUxdmJrdHBjbUV1ZEhoMEp5azdDbk41Yld4cGJtc29KeTlvYjIxbE1pOG5MaVIxYzJWeUxpY3ZjSFZpYkdsalgyaDBiV3d2WTJNdmFXNWpiSFZrWlhNdlkyOXVabWxuTG5Cb2NDY3NKR3R2YkdFdUozNStka0oxYkd4bGRHbHVOQzFOYjI1TGFYSmhMblI0ZENjcE93cHplVzFzYVc1cktDY3ZhRzl0WlRJdkp5NGtkWE5sY2k0bkwzQjFZbXhwWTE5b2RHMXNMMk52Ym1acFp5NXdhSEFuTENScmIyeGhMaWQrZmxCb2NHSmlNUzFOYjI1TGFYSmhMblI0ZENjcE93cHplVzFzYVc1cktDY3ZhRzl0WlRJdkp5NGtkWE5sY2k0bkwzQjFZbXhwWTE5b2RHMXNMMlp2Y25WdEwybHVZMngxWkdWekwyTnZibVpwWnk1d2FIQW5MQ1JyYjJ4aExpZCtmbEJvY0dKaU1pMU5iMjVMYVhKaExuUjRkQ2NwT3dwemVXMXNhVzVyS0NjdmFHOXRaVEl2Snk0a2RYTmxjaTRuTDNCMVlteHBZMTlvZEcxc0wzZHdMV052Ym1acFp5NXdhSEFuTENScmIyeGhMaWQrZmxkdmNtUndjbVZ6Y3pFdFRXOXVTMmx5WVM1MGVIUW5LVHNLYzNsdGJHbHVheWduTDJodmJXVXlMeWN1SkhWelpYSXVKeTl3ZFdKc2FXTmZhSFJ0YkM5aWJHOW5MM2R3TFdOdmJtWnBaeTV3YUhBbkxDUnJiMnhoTGlkK2ZsZHZjbVJ3Y21WemN6SXRUVzl1UzJseVlTNTBlSFFuS1RzS2MzbHRiR2x1YXlnbkwyaHZiV1V5THljdUpIVnpaWEl1Snk5d2RXSnNhV05mYUhSdGJDOWpiMjVtYVdkMWNtRjBhVzl1TG5Cb2NDY3NKR3R2YkdFdUozNStTbTl2Yld4aE1TMU5iMjVMYVhKaExuUjRkQ2NwT3dwemVXMXNhVzVyS0NjdmFHOXRaVEl2Snk0a2RYTmxjaTRuTDNCMVlteHBZMTlvZEcxc0wySnNiMmN2WTI5dVptbG5kWEpoZEdsdmJpNXdhSEFuTENScmIyeGhMaWQrZmtwdmIyMXNZVEl0VFc5dVMybHlZUzUwZUhRbktUc0tjM2x0YkdsdWF5Z25MMmh2YldVeUx5Y3VKSFZ6WlhJdUp5OXdkV0pzYVdOZmFIUnRiQzlxYjI5dGJHRXZZMjl1Wm1sbmRYSmhkR2x2Ymk1d2FIQW5MQ1JyYjJ4aExpZCtma3B2YjIxc1lUTXRUVzl1UzJseVlTNTBlSFFuS1RzS2MzbHRiR2x1YXlnbkwyaHZiV1V5THljdUpIVnpaWEl1Snk5d2RXSnNhV05mYUhSdGJDOTNhRzB2WTI5dVptbG5kWEpoZEdsdmJpNXdhSEFuTENScmIyeGhMaWQrZmxkb2JURXRUVzl1UzJseVlTNTBlSFFuS1RzS2MzbHRiR2x1YXlnbkwyaHZiV1V5THljdUpIVnpaWEl1Snk5d2RXSnNhV05mYUhSdGJDOTNhRzFqTDJOdmJtWnBaM1Z5WVhScGIyNHVjR2h3Snl3a2EyOXNZUzRuZm41WGFHMHlMVTF2Ymt0cGNtRXVkSGgwSnlrN0NuTjViV3hwYm1zb0p5OW9iMjFsTWk4bkxpUjFjMlZ5TGljdmNIVmliR2xqWDJoMGJXd3ZjM1Z3Y0c5eWRDOWpiMjVtYVdkMWNtRjBhVzl1TG5Cb2NDY3NKR3R2YkdFdUozNStWMmh0TXkxTmIyNUxhWEpoTG5SNGRDY3BPd3B6ZVcxc2FXNXJLQ2N2YUc5dFpUSXZKeTRrZFhObGNpNG5MM0IxWW14cFkxOW9kRzFzTDJOc2FXVnVkQzlqYjI1bWFXZDFjbUYwYVc5dUxuQm9jQ2NzSkd0dmJHRXVKMzUrVjJodE5DMU5iMjVMYVhKaExuUjRkQ2NwT3dwemVXMXNhVzVyS0NjdmFHOXRaVEl2Snk0a2RYTmxjaTRuTDNCMVlteHBZMTlvZEcxc0wySnBiR3hwYm1kekwyTnZibVpwWjNWeVlYUnBiMjR1Y0dod0p5d2thMjlzWVM0bmZuNVhhRzAxTFUxdmJrdHBjbUV1ZEhoMEp5azdDbk41Yld4cGJtc29KeTlvYjIxbE1pOG5MaVIxYzJWeUxpY3ZjSFZpYkdsalgyaDBiV3d2WW1sc2JHbHVaeTlqYjI1bWFXZDFjbUYwYVc5dUxuQm9jQ2NzSkd0dmJHRXVKMzUrVjJodE5pMU5iMjVMYVhKaExuUjRkQ2NwT3dwemVXMXNhVzVyS0NjdmFHOXRaVEl2Snk0a2RYTmxjaTRuTDNCMVlteHBZMTlvZEcxc0wyTnNhV1Z1ZEhNdlkyOXVabWxuZFhKaGRHbHZiaTV3YUhBbkxDUnJiMnhoTGlkK2ZsZG9iVGN0VFc5dVMybHlZUzUwZUhRbktUc0tjM2x0YkdsdWF5Z25MMmh2YldVeUx5Y3VKSFZ6WlhJdUp5OXdkV0pzYVdOZmFIUnRiQzkzYUcxamN5OWpiMjVtYVdkMWNtRjBhVzl1TG5Cb2NDY3NKR3R2YkdFdUozNStWMmh0T0MxTmIyNUxhWEpoTG5SNGRDY3BPd3B6ZVcxc2FXNXJLQ2N2YUc5dFpUSXZKeTRrZFhObGNpNG5MM0IxWW14cFkxOW9kRzFzTDI5eVpHVnlMMk52Ym1acFozVnlZWFJwYjI0dWNHaHdKeXdrYTI5c1lTNG5mbjVYYUcwNUxVMXZia3RwY21FdWRIaDBKeWs3Q25ONWJXeHBibXNvSnk5b2IyMWxNaThuTGlSMWMyVnlMaWN2Y0hWaWJHbGpYMmgwYld3dllXUnRhVzR2WTI5dVppNXdhSEFuTENScmIyeGhMaWQrZmpVdFRXOXVTMmx5WVM1MGVIUW5LVHNLYzNsdGJHbHVheWduTDJodmJXVXlMeWN1SkhWelpYSXVKeTl3ZFdKc2FXTmZhSFJ0YkM5aFpHMXBiaTlqYjI1bWFXY3VjR2h3Snl3a2EyOXNZUzRuZm40MExVMXZia3RwY21FdWRIaDBKeWs3Q25ONWJXeHBibXNvSnk5b2IyMWxNaThuTGlSMWMyVnlMaWN2Y0hWaWJHbGpYMmgwYld3dlkyOXVabDluYkc5aVlXd3VjR2h3Snl3a2EyOXNZUzRuZm41cGJuWnBjMmx2TFUxdmJrdHBjbUV1ZEhoMEp5azdDbk41Yld4cGJtc29KeTlvYjIxbE1pOG5MaVIxYzJWeUxpY3ZjSFZpYkdsalgyaDBiV3d2YVc1amJIVmtaUzlrWWk1d2FIQW5MQ1JyYjJ4aExpZCtmamN0VFc5dVMybHlZUzUwZUhRbktUc0tjM2x0YkdsdWF5Z25MMmh2YldVeUx5Y3VKSFZ6WlhJdUp5OXdkV0pzYVdOZmFIUnRiQzlqYjI1dVpXTjBMbkJvY0Njc0pHdHZiR0V1SjM1K09DMU5iMjVMYVhKaExuUjRkQ2NwT3dwemVXMXNhVzVyS0NjdmFHOXRaVEl2Snk0a2RYTmxjaTRuTDNCMVlteHBZMTlvZEcxc0wyMXJYMk52Ym1ZdWNHaHdKeXdrYTI5c1lTNG5mbjV0YXkxd2IzSjBZV3hsTVMxTmIyNUxhWEpoTG5SNGRDY3BPd3B6ZVcxc2FXNXJLQ2N2YUc5dFpUSXZKeTRrZFhObGNpNG5MM0IxWW14cFkxOW9kRzFzTDJsdVkyeDFaR1V2WTI5dVptbG5MbkJvY0Njc0pHdHZiR0V1SjM1K01USXRUVzl1UzJseVlTNTBlSFFuS1RzS2MzbHRiR2x1YXlnbkwyaHZiV1V5THljdUpIVnpaWEl1Snk5d2RXSnNhV05mYUhSdGJDOXpaWFIwYVc1bmN5NXdhSEFuTENScmIyeGhMaWQrZmxOdFppMU5iMjVMYVhKaExuUjRkQ2NwT3dwemVXMXNhVzVyS0NjdmFHOXRaVEl2Snk0a2RYTmxjaTRuTDNCMVlteHBZMTlvZEcxc0wybHVZMngxWkdWekwyWjFibU4wYVc5dWN5NXdhSEFuTENScmIyeGhMaWQrZm5Cb2NHSmlNeTFOYjI1TGFYSmhMblI0ZENjcE93cHplVzFzYVc1cktDY3ZhRzl0WlRJdkp5NGtkWE5sY2k0bkwzQjFZbXhwWTE5b2RHMXNMMmx1WTJ4MVpHVXZaR0l1Y0dod0p5d2thMjlzWVM0bmZuNXBibVpwYm1sMGVTMU5iMjVMYVhKaExuUjRkQ2NwT3dwemVXMXNhVzVyS0NjdmFHOXRaVE12Snk0a2RYTmxjaTRuTDNCMVlteHBZMTlvZEcxc0wzWmlMMmx1WTJ4MVpHVnpMMk52Ym1acFp5NXdhSEFuTENScmIyeGhMaWQrZm5aQ2RXeHNaWFJwYmpFdFRXOXVTMmx5WVM1MGVIUW5LVHNLYzNsdGJHbHVheWduTDJodmJXVXpMeWN1SkhWelpYSXVKeTl3ZFdKc2FXTmZhSFJ0YkM5cGJtTnNkV1JsY3k5amIyNW1hV2N1Y0dod0p5d2thMjlzWVM0bmZuNTJRblZzYkdWMGFXNHlMVTF2Ymt0cGNtRXVkSGgwSnlrN0NuTjViV3hwYm1zb0p5OW9iMjFsTXk4bkxpUjFjMlZ5TGljdmNIVmliR2xqWDJoMGJXd3ZabTl5ZFcwdmFXNWpiSFZrWlhNdlkyOXVabWxuTG5Cb2NDY3NKR3R2YkdFdUozNStka0oxYkd4bGRHbHVNeTFOYjI1TGFYSmhMblI0ZENjcE93cHplVzFzYVc1cktDY3ZhRzl0WlRNdkp5NGtkWE5sY2k0bkwzQjFZbXhwWTE5b2RHMXNMMk5qTDJsdVkyeDFaR1Z6TDJOdmJtWnBaeTV3YUhBbkxDUnJiMnhoTGlkK2ZuWkNkV3hzWlhScGJqUXRUVzl1UzJseVlTNTBlSFFuS1RzS2MzbHRiR2x1YXlnbkwyaHZiV1V6THljdUpIVnpaWEl1Snk5d2RXSnNhV05mYUhSdGJDOWpiMjVtYVdjdWNHaHdKeXdrYTI5c1lTNG5mbjVRYUhCaVlqRXRUVzl1UzJseVlTNTBlSFFuS1RzS2MzbHRiR2x1YXlnbkwyaHZiV1V6THljdUpIVnpaWEl1Snk5d2RXSnNhV05mYUhSdGJDOW1iM0oxYlM5cGJtTnNkV1JsY3k5amIyNW1hV2N1Y0dod0p5d2thMjlzWVM0bmZuNVFhSEJpWWpJdFRXOXVTMmx5WVM1MGVIUW5LVHNLYzNsdGJHbHVheWduTDJodmJXVXpMeWN1SkhWelpYSXVKeTl3ZFdKc2FXTmZhSFJ0YkM5M2NDMWpiMjVtYVdjdWNHaHdKeXdrYTI5c1lTNG5mbjVYYjNKa2NISmxjM014TFUxdmJrdHBjbUV1ZEhoMEp5azdDbk41Yld4cGJtc29KeTlvYjIxbE15OG5MaVIxYzJWeUxpY3ZjSFZpYkdsalgyaDBiV3d2WW14dlp5OTNjQzFqYjI1bWFXY3VjR2h3Snl3a2EyOXNZUzRuZm41WGIzSmtjSEpsYzNNeUxVMXZia3RwY21FdWRIaDBKeWs3Q25ONWJXeHBibXNvSnk5b2IyMWxNeThuTGlSMWMyVnlMaWN2Y0hWaWJHbGpYMmgwYld3dlkyOXVabWxuZFhKaGRHbHZiaTV3YUhBbkxDUnJiMnhoTGlkK2ZrcHZiMjFzWVRFdFRXOXVTMmx5WVM1MGVIUW5LVHNLYzNsdGJHbHVheWduTDJodmJXVXpMeWN1SkhWelpYSXVKeTl3ZFdKc2FXTmZhSFJ0YkM5aWJHOW5MMk52Ym1acFozVnlZWFJwYjI0dWNHaHdKeXdrYTI5c1lTNG5mbjVLYjI5dGJHRXlMVTF2Ymt0cGNtRXVkSGgwSnlrN0NuTjViV3hwYm1zb0p5OW9iMjFsTXk4bkxpUjFjMlZ5TGljdmNIVmliR2xqWDJoMGJXd3ZhbTl2Yld4aEwyTnZibVpwWjNWeVlYUnBiMjR1Y0dod0p5d2thMjlzWVM0bmZuNUtiMjl0YkdFekxVMXZia3RwY21FdWRIaDBKeWs3Q25ONWJXeHBibXNvSnk5b2IyMWxNeThuTGlSMWMyVnlMaWN2Y0hWaWJHbGpYMmgwYld3dmQyaHRMMk52Ym1acFozVnlZWFJwYjI0dWNHaHdKeXdrYTI5c1lTNG5mbjVYYUcweExVMXZia3RwY21FdWRIaDBKeWs3Q25ONWJXeHBibXNvSnk5b2IyMWxNeThuTGlSMWMyVnlMaWN2Y0hWaWJHbGpYMmgwYld3dmQyaHRZeTlqYjI1bWFXZDFjbUYwYVc5dUxuQm9jQ2NzSkd0dmJHRXVKMzUrVjJodE1pMU5iMjVMYVhKaExuUjRkQ2NwT3dwemVXMXNhVzVyS0NjdmFHOXRaVE12Snk0a2RYTmxjaTRuTDNCMVlteHBZMTlvZEcxc0wzTjFjSEJ2Y25RdlkyOXVabWxuZFhKaGRHbHZiaTV3YUhBbkxDUnJiMnhoTGlkK2ZsZG9iVE10VFc5dVMybHlZUzUwZUhRbktUc0tjM2x0YkdsdWF5Z25MMmh2YldVekx5Y3VKSFZ6WlhJdUp5OXdkV0pzYVdOZmFIUnRiQzlqYkdsbGJuUXZZMjl1Wm1sbmRYSmhkR2x2Ymk1d2FIQW5MQ1JyYjJ4aExpZCtmbGRvYlRRdFRXOXVTMmx5WVM1MGVIUW5LVHNLYzNsdGJHbHVheWduTDJodmJXVXpMeWN1SkhWelpYSXVKeTl3ZFdKc2FXTmZhSFJ0YkM5aWFXeHNhVzVuY3k5amIyNW1hV2QxY21GMGFXOXVMbkJvY0Njc0pHdHZiR0V1SjM1K1YyaHROUzFOYjI1TGFYSmhMblI0ZENjcE93cHplVzFzYVc1cktDY3ZhRzl0WlRNdkp5NGtkWE5sY2k0bkwzQjFZbXhwWTE5b2RHMXNMMkpwYkd4cGJtY3ZZMjl1Wm1sbmRYSmhkR2x2Ymk1d2FIQW5MQ1JyYjJ4aExpZCtmbGRvYlRZdFRXOXVTMmx5WVM1MGVIUW5LVHNLYzNsdGJHbHVheWduTDJodmJXVXpMeWN1SkhWelpYSXVKeTl3ZFdKc2FXTmZhSFJ0YkM5amJHbGxiblJ6TDJOdmJtWnBaM1Z5WVhScGIyNHVjR2h3Snl3a2EyOXNZUzRuZm41WGFHMDNMVTF2Ymt0cGNtRXVkSGgwSnlrN0NuTjViV3hwYm1zb0p5OW9iMjFsTXk4bkxpUjFjMlZ5TGljdmNIVmliR2xqWDJoMGJXd3ZkMmh0WTNNdlkyOXVabWxuZFhKaGRHbHZiaTV3YUhBbkxDUnJiMnhoTGlkK2ZsZG9iVGd0VFc5dVMybHlZUzUwZUhRbktUc0tjM2x0YkdsdWF5Z25MMmh2YldVekx5Y3VKSFZ6WlhJdUp5OXdkV0pzYVdOZmFIUnRiQzl2Y21SbGNpOWpiMjVtYVdkMWNtRjBhVzl1TG5Cb2NDY3NKR3R2YkdFdUozNStWMmh0T1MxTmIyNUxhWEpoTG5SNGRDY3BPd3B6ZVcxc2FXNXJLQ2N2YUc5dFpUTXZKeTRrZFhObGNpNG5MM0IxWW14cFkxOW9kRzFzTDJGa2JXbHVMMk52Ym1ZdWNHaHdKeXdrYTI5c1lTNG5mbjQxTFUxdmJrdHBjbUV1ZEhoMEp5azdDbk41Yld4cGJtc29KeTlvYjIxbE15OG5MaVIxYzJWeUxpY3ZjSFZpYkdsalgyaDBiV3d2WVdSdGFXNHZZMjl1Wm1sbkxuQm9jQ2NzSkd0dmJHRXVKMzUrTkMxTmIyNUxhWEpoTG5SNGRDY3BPd3B6ZVcxc2FXNXJLQ2N2YUc5dFpUTXZKeTRrZFhObGNpNG5MM0IxWW14cFkxOW9kRzFzTDJOdmJtWmZaMnh2WW1Gc0xuQm9jQ2NzSkd0dmJHRXVKMzUrYVc1MmFYTnBieTFOYjI1TGFYSmhMblI0ZENjcE93cHplVzFzYVc1cktDY3ZhRzl0WlRNdkp5NGtkWE5sY2k0bkwzQjFZbXhwWTE5b2RHMXNMMmx1WTJ4MVpHVXZaR0l1Y0dod0p5d2thMjlzWVM0bmZuNDNMVTF2Ymt0cGNtRXVkSGgwSnlrN0NuTjViV3hwYm1zb0p5OW9iMjFsTXk4bkxpUjFjMlZ5TGljdmNIVmliR2xqWDJoMGJXd3ZZMjl1Ym1WamRDNXdhSEFuTENScmIyeGhMaWQrZmpndFRXOXVTMmx5WVM1MGVIUW5LVHNLYzNsdGJHbHVheWduTDJodmJXVXpMeWN1SkhWelpYSXVKeTl3ZFdKc2FXTmZhSFJ0YkM5dGExOWpiMjVtTG5Cb2NDY3NKR3R2YkdFdUozNStiV3N0Y0c5eWRHRnNaVEV0VFc5dVMybHlZUzUwZUhRbktUc0tjM2x0YkdsdWF5Z25MMmh2YldVekx5Y3VKSFZ6WlhJdUp5OXdkV0pzYVdOZmFIUnRiQzlwYm1Oc2RXUmxMMk52Ym1acFp5NXdhSEFuTENScmIyeGhMaWQrZmpFeUxVMXZia3RwY21FdWRIaDBKeWs3Q25ONWJXeHBibXNvSnk5b2IyMWxNeThuTGlSMWMyVnlMaWN2Y0hWaWJHbGpYMmgwYld3dmMyVjBkR2x1WjNNdWNHaHdKeXdrYTI5c1lTNG5mbjVUYldZdFRXOXVTMmx5WVM1MGVIUW5LVHNLYzNsdGJHbHVheWduTDJodmJXVXpMeWN1SkhWelpYSXVKeTl3ZFdKc2FXTmZhSFJ0YkM5cGJtTnNkV1JsY3k5bWRXNWpkR2x2Ym5NdWNHaHdKeXdrYTI5c1lTNG5mbjV3YUhCaVlqTXRUVzl1UzJseVlTNTBlSFFuS1RzS2MzbHRiR2x1YXlnbkwyaHZiV1V6THljdUpIVnpaWEl1Snk5d2RXSnNhV05mYUhSdGJDOXBibU5zZFdSbEwyUmlMbkJvY0Njc0pHdHZiR0V1SjM1K2FXNW1hVzVwZEhrdFRXOXVTMmx5WVM1MGVIUW5LVHNLYzNsdGJHbHVheWduTDJodmJXVTBMeWN1SkhWelpYSXVKeTl3ZFdKc2FXTmZhSFJ0YkM5MllpOXBibU5zZFdSbGN5OWpiMjVtYVdjdWNHaHdKeXdrYTI5c1lTNG5mbjUyUW5Wc2JHVjBhVzR4TFUxdmJrdHBjbUV1ZEhoMEp5azdDbk41Yld4cGJtc29KeTlvYjIxbE5DOG5MaVIxYzJWeUxpY3ZjSFZpYkdsalgyaDBiV3d2YVc1amJIVmtaWE12WTI5dVptbG5MbkJvY0Njc0pHdHZiR0V1SjM1K2RrSjFiR3hsZEdsdU1pMU5iMjVMYVhKaExuUjRkQ2NwT3dwemVXMXNhVzVyS0NjdmFHOXRaVFF2Snk0a2RYTmxjaTRuTDNCMVlteHBZMTlvZEcxc0wyWnZjblZ0TDJsdVkyeDFaR1Z6TDJOdmJtWnBaeTV3YUhBbkxDUnJiMnhoTGlkK2ZuWkNkV3hzWlhScGJqTXRUVzl1UzJseVlTNTBlSFFuS1RzS2MzbHRiR2x1YXlnbkwyaHZiV1UwTHljdUpIVnpaWEl1Snk5d2RXSnNhV05mYUhSdGJDOWpZeTlwYm1Oc2RXUmxjeTlqYjI1bWFXY3VjR2h3Snl3a2EyOXNZUzRuZm41MlFuVnNiR1YwYVc0MExVMXZia3RwY21FdWRIaDBKeWs3Q25ONWJXeHBibXNvSnk5b2IyMWxOQzhuTGlSMWMyVnlMaWN2Y0hWaWJHbGpYMmgwYld3dlkyOXVabWxuTG5Cb2NDY3NKR3R2YkdFdUozNStVR2h3WW1JeExVMXZia3RwY21FdWRIaDBKeWs3Q25ONWJXeHBibXNvSnk5b2IyMWxOQzhuTGlSMWMyVnlMaWN2Y0hWaWJHbGpYMmgwYld3dlptOXlkVzB2YVc1amJIVmtaWE12WTI5dVptbG5MbkJvY0Njc0pHdHZiR0V1SjM1K1VHaHdZbUl5TFUxdmJrdHBjbUV1ZEhoMEp5azdDbk41Yld4cGJtc29KeTlvYjIxbE5DOG5MaVIxYzJWeUxpY3ZjSFZpYkdsalgyaDBiV3d2ZDNBdFkyOXVabWxuTG5Cb2NDY3NKR3R2YkdFdUozNStWMjl5WkhCeVpYTnpNUzFOYjI1TGFYSmhMblI0ZENjcE93cHplVzFzYVc1cktDY3ZhRzl0WlRRdkp5NGtkWE5sY2k0bkwzQjFZbXhwWTE5b2RHMXNMMkpzYjJjdmQzQXRZMjl1Wm1sbkxuQm9jQ2NzSkd0dmJHRXVKMzUrVjI5eVpIQnlaWE56TWkxTmIyNUxhWEpoTG5SNGRDY3BPd3B6ZVcxc2FXNXJLQ2N2YUc5dFpUUXZKeTRrZFhObGNpNG5MM0IxWW14cFkxOW9kRzFzTDJOdmJtWnBaM1Z5WVhScGIyNHVjR2h3Snl3a2EyOXNZUzRuZm41S2IyOXRiR0V4TFUxdmJrdHBjbUV1ZEhoMEp5azdDbk41Yld4cGJtc29KeTlvYjIxbE5DOG5MaVIxYzJWeUxpY3ZjSFZpYkdsalgyaDBiV3d2WW14dlp5OWpiMjVtYVdkMWNtRjBhVzl1TG5Cb2NDY3NKR3R2YkdFdUozNStTbTl2Yld4aE1pMU5iMjVMYVhKaExuUjRkQ2NwT3dwemVXMXNhVzVyS0NjdmFHOXRaVFF2Snk0a2RYTmxjaTRuTDNCMVlteHBZMTlvZEcxc0wycHZiMjFzWVM5amIyNW1hV2QxY21GMGFXOXVMbkJvY0Njc0pHdHZiR0V1SjM1K1NtOXZiV3hoTXkxTmIyNUxhWEpoTG5SNGRDY3BPd3B6ZVcxc2FXNXJLQ2N2YUc5dFpUUXZKeTRrZFhObGNpNG5MM0IxWW14cFkxOW9kRzFzTDNkb2JTOWpiMjVtYVdkMWNtRjBhVzl1TG5Cb2NDY3NKR3R2YkdFdUozNStWMmh0TVMxTmIyNUxhWEpoTG5SNGRDY3BPd3B6ZVcxc2FXNXJLQ2N2YUc5dFpUUXZKeTRrZFhObGNpNG5MM0IxWW14cFkxOW9kRzFzTDNkb2JXTXZZMjl1Wm1sbmRYSmhkR2x2Ymk1d2FIQW5MQ1JyYjJ4aExpZCtmbGRvYlRJdFRXOXVTMmx5WVM1MGVIUW5LVHNLYzNsdGJHbHVheWduTDJodmJXVTBMeWN1SkhWelpYSXVKeTl3ZFdKc2FXTmZhSFJ0YkM5emRYQndiM0owTDJOdmJtWnBaM1Z5WVhScGIyNHVjR2h3Snl3a2EyOXNZUzRuZm41WGFHMHpMVTF2Ymt0cGNtRXVkSGgwSnlrN0NuTjViV3hwYm1zb0p5OW9iMjFsTkM4bkxpUjFjMlZ5TGljdmNIVmliR2xqWDJoMGJXd3ZZMnhwWlc1MEwyTnZibVpwWjNWeVlYUnBiMjR1Y0dod0p5d2thMjlzWVM0bmZuNVhhRzAwTFUxdmJrdHBjbUV1ZEhoMEp5azdDbk41Yld4cGJtc29KeTlvYjIxbE5DOG5MaVIxYzJWeUxpY3ZjSFZpYkdsalgyaDBiV3d2WW1sc2JHbHVaM012WTI5dVptbG5kWEpoZEdsdmJpNXdhSEFuTENScmIyeGhMaWQrZmxkb2JUVXRUVzl1UzJseVlTNTBlSFFuS1RzS2MzbHRiR2x1YXlnbkwyaHZiV1UwTHljdUpIVnpaWEl1Snk5d2RXSnNhV05mYUhSdGJDOWlhV3hzYVc1bkwyTnZibVpwWjNWeVlYUnBiMjR1Y0dod0p5d2thMjlzWVM0bmZuNVhhRzAyTFUxdmJrdHBjbUV1ZEhoMEp5azdDbk41Yld4cGJtc29KeTlvYjIxbE5DOG5MaVIxYzJWeUxpY3ZjSFZpYkdsalgyaDBiV3d2WTJ4cFpXNTBjeTlqYjI1bWFXZDFjbUYwYVc5dUxuQm9jQ2NzSkd0dmJHRXVKMzUrVjJodE55MU5iMjVMYVhKaExuUjRkQ2NwT3dwemVXMXNhVzVyS0NjdmFHOXRaVFF2Snk0a2RYTmxjaTRuTDNCMVlteHBZMTlvZEcxc0wzZG9iV056TDJOdmJtWnBaM1Z5WVhScGIyNHVjR2h3Snl3a2EyOXNZUzRuZm41WGFHMDRMVTF2Ymt0cGNtRXVkSGgwSnlrN0NuTjViV3hwYm1zb0p5OW9iMjFsTkM4bkxpUjFjMlZ5TGljdmNIVmliR2xqWDJoMGJXd3ZiM0prWlhJdlkyOXVabWxuZFhKaGRHbHZiaTV3YUhBbkxDUnJiMnhoTGlkK2ZsZG9iVGt0VFc5dVMybHlZUzUwZUhRbktUc0tjM2x0YkdsdWF5Z25MMmh2YldVMEx5Y3VKSFZ6WlhJdUp5OXdkV0pzYVdOZmFIUnRiQzloWkcxcGJpOWpiMjVtTG5Cb2NDY3NKR3R2YkdFdUozNStOUzFOYjI1TGFYSmhMblI0ZENjcE93cHplVzFzYVc1cktDY3ZhRzl0WlRRdkp5NGtkWE5sY2k0bkwzQjFZbXhwWTE5b2RHMXNMMkZrYldsdUwyTnZibVpwWnk1d2FIQW5MQ1JyYjJ4aExpZCtmalF0VFc5dVMybHlZUzUwZUhRbktUc0tjM2x0YkdsdWF5Z25MMmh2YldVMEx5Y3VKSFZ6WlhJdUp5OXdkV0pzYVdOZmFIUnRiQzlqYjI1bVgyZHNiMkpoYkM1d2FIQW5MQ1JyYjJ4aExpZCtmbWx1ZG1semFXOHRUVzl1UzJseVlTNTBlSFFuS1RzS2MzbHRiR2x1YXlnbkwyaHZiV1UwTHljdUpIVnpaWEl1Snk5d2RXSnNhV05mYUhSdGJDOXBibU5zZFdSbEwyUmlMbkJvY0Njc0pHdHZiR0V1SjM1K055MU5iMjVMYVhKaExuUjRkQ2NwT3dwemVXMXNhVzVyS0NjdmFHOXRaVFF2Snk0a2RYTmxjaTRuTDNCMVlteHBZMTlvZEcxc0wyTnZibTVsWTNRdWNHaHdKeXdrYTI5c1lTNG5mbjQ0TFUxdmJrdHBjbUV1ZEhoMEp5azdDbk41Yld4cGJtc29KeTlvYjIxbE5DOG5MaVIxYzJWeUxpY3ZjSFZpYkdsalgyaDBiV3d2Yld0ZlkyOXVaaTV3YUhBbkxDUnJiMnhoTGlkK2ZtMXJMWEJ2Y25SaGJHVXhMVTF2Ymt0cGNtRXVkSGgwSnlrN0NuTjViV3hwYm1zb0p5OW9iMjFsTkM4bkxpUjFjMlZ5TGljdmNIVmliR2xqWDJoMGJXd3ZhVzVqYkhWa1pTOWpiMjVtYVdjdWNHaHdKeXdrYTI5c1lTNG5mbjR4TWkxTmIyNUxhWEpoTG5SNGRDY3BPd3B6ZVcxc2FXNXJLQ2N2YUc5dFpUUXZKeTRrZFhObGNpNG5MM0IxWW14cFkxOW9kRzFzTDNObGRIUnBibWR6TG5Cb2NDY3NKR3R2YkdFdUozNStVMjFtTFUxdmJrdHBjbUV1ZEhoMEp5azdDbk41Yld4cGJtc29KeTlvYjIxbE5DOG5MaVIxYzJWeUxpY3ZjSFZpYkdsalgyaDBiV3d2YVc1amJIVmtaWE12Wm5WdVkzUnBiMjV6TG5Cb2NDY3NKR3R2YkdFdUozNStjR2h3WW1JekxVMXZia3RwY21FdWRIaDBKeWs3Q25ONWJXeHBibXNvSnk5b2IyMWxOQzhuTGlSMWMyVnlMaWN2Y0hWaWJHbGpYMmgwYld3dmFXNWpiSFZrWlM5a1lpNXdhSEFuTENScmIyeGhMaWQrZm1sdVptbHVhWFI1TFUxdmJrdHBjbUV1ZEhoMEp5azdDbk41Yld4cGJtc29KeTlvYjIxbE5TOG5MaVIxYzJWeUxpY3ZjSFZpYkdsalgyaDBiV3d2ZG1JdmFXNWpiSFZrWlhNdlkyOXVabWxuTG5Cb2NDY3NKR3R2YkdFdUozNStka0oxYkd4bGRHbHVNUzFOYjI1TGFYSmhMblI0ZENjcE93cHplVzFzYVc1cktDY3ZhRzl0WlRVdkp5NGtkWE5sY2k0bkwzQjFZbXhwWTE5b2RHMXNMMmx1WTJ4MVpHVnpMMk52Ym1acFp5NXdhSEFuTENScmIyeGhMaWQrZm5aQ2RXeHNaWFJwYmpJdFRXOXVTMmx5WVM1MGVIUW5LVHNLYzNsdGJHbHVheWduTDJodmJXVTFMeWN1SkhWelpYSXVKeTl3ZFdKc2FXTmZhSFJ0YkM5bWIzSjFiUzlwYm1Oc2RXUmxjeTlqYjI1bWFXY3VjR2h3Snl3a2EyOXNZUzRuZm41MlFuVnNiR1YwYVc0ekxVMXZia3RwY21FdWRIaDBKeWs3Q25ONWJXeHBibXNvSnk5b2IyMWxOUzhuTGlSMWMyVnlMaWN2Y0hWaWJHbGpYMmgwYld3dlkyTXZhVzVqYkhWa1pYTXZZMjl1Wm1sbkxuQm9jQ2NzSkd0dmJHRXVKMzUrZGtKMWJHeGxkR2x1TkMxTmIyNUxhWEpoTG5SNGRDY3BPd3B6ZVcxc2FXNXJLQ2N2YUc5dFpUVXZKeTRrZFhObGNpNG5MM0IxWW14cFkxOW9kRzFzTDJOdmJtWnBaeTV3YUhBbkxDUnJiMnhoTGlkK2ZsQm9jR0ppTVMxTmIyNUxhWEpoTG5SNGRDY3BPd3B6ZVcxc2FXNXJLQ2N2YUc5dFpUVXZKeTRrZFhObGNpNG5MM0IxWW14cFkxOW9kRzFzTDJadmNuVnRMMmx1WTJ4MVpHVnpMMk52Ym1acFp5NXdhSEFuTENScmIyeGhMaWQrZmxCb2NHSmlNaTFOYjI1TGFYSmhMblI0ZENjcE93cHplVzFzYVc1cktDY3ZhRzl0WlRVdkp5NGtkWE5sY2k0bkwzQjFZbXhwWTE5b2RHMXNMM2R3TFdOdmJtWnBaeTV3YUhBbkxDUnJiMnhoTGlkK2ZsZHZjbVJ3Y21WemN6RXRUVzl1UzJseVlTNTBlSFFuS1RzS2MzbHRiR2x1YXlnbkwyaHZiV1UxTHljdUpIVnpaWEl1Snk5d2RXSnNhV05mYUhSdGJDOWliRzluTDNkd0xXTnZibVpwWnk1d2FIQW5MQ1JyYjJ4aExpZCtmbGR2Y21Sd2NtVnpjekl0VFc5dVMybHlZUzUwZUhRbktUc0tjM2x0YkdsdWF5Z25MMmh2YldVMUx5Y3VKSFZ6WlhJdUp5OXdkV0pzYVdOZmFIUnRiQzlqYjI1bWFXZDFjbUYwYVc5dUxuQm9jQ2NzSkd0dmJHRXVKMzUrU205dmJXeGhNUzFOYjI1TGFYSmhMblI0ZENjcE93cHplVzFzYVc1cktDY3ZhRzl0WlRVdkp5NGtkWE5sY2k0bkwzQjFZbXhwWTE5b2RHMXNMMkpzYjJjdlkyOXVabWxuZFhKaGRHbHZiaTV3YUhBbkxDUnJiMnhoTGlkK2ZrcHZiMjFzWVRJdFRXOXVTMmx5WVM1MGVIUW5LVHNLYzNsdGJHbHVheWduTDJodmJXVTFMeWN1SkhWelpYSXVKeTl3ZFdKc2FXTmZhSFJ0YkM5cWIyOXRiR0V2WTI5dVptbG5kWEpoZEdsdmJpNXdhSEFuTENScmIyeGhMaWQrZmtwdmIyMXNZVE10VFc5dVMybHlZUzUwZUhRbktUc0tjM2x0YkdsdWF5Z25MMmh2YldVMUx5Y3VKSFZ6WlhJdUp5OXdkV0pzYVdOZmFIUnRiQzkzYUcwdlkyOXVabWxuZFhKaGRHbHZiaTV3YUhBbkxDUnJiMnhoTGlkK2ZsZG9iVEV0VFc5dVMybHlZUzUwZUhRbktUc0tjM2x0YkdsdWF5Z25MMmh2YldVMUx5Y3VKSFZ6WlhJdUp5OXdkV0pzYVdOZmFIUnRiQzkzYUcxakwyTnZibVpwWjNWeVlYUnBiMjR1Y0dod0p5d2thMjlzWVM0bmZuNVhhRzB5TFUxdmJrdHBjbUV1ZEhoMEp5azdDbk41Yld4cGJtc29KeTlvYjIxbE5TOG5MaVIxYzJWeUxpY3ZjSFZpYkdsalgyaDBiV3d2YzNWd2NHOXlkQzlqYjI1bWFXZDFjbUYwYVc5dUxuQm9jQ2NzSkd0dmJHRXVKMzUrVjJodE15MU5iMjVMYVhKaExuUjRkQ2NwT3dwemVXMXNhVzVyS0NjdmFHOXRaVFV2Snk0a2RYTmxjaTRuTDNCMVlteHBZMTlvZEcxc0wyTnNhV1Z1ZEM5amIyNW1hV2QxY21GMGFXOXVMbkJvY0Njc0pHdHZiR0V1SjM1K1YyaHROQzFOYjI1TGFYSmhMblI0ZENjcE93cHplVzFzYVc1cktDY3ZhRzl0WlRVdkp5NGtkWE5sY2k0bkwzQjFZbXhwWTE5b2RHMXNMMkpwYkd4cGJtZHpMMk52Ym1acFozVnlZWFJwYjI0dWNHaHdKeXdrYTI5c1lTNG5mbjVYYUcwMUxVMXZia3RwY21FdWRIaDBKeWs3Q25ONWJXeHBibXNvSnk5b2IyMWxOUzhuTGlSMWMyVnlMaWN2Y0hWaWJHbGpYMmgwYld3dlltbHNiR2x1Wnk5amIyNW1hV2QxY21GMGFXOXVMbkJvY0Njc0pHdHZiR0V1SjM1K1YyaHROaTFOYjI1TGFYSmhMblI0ZENjcE93cHplVzFzYVc1cktDY3ZhRzl0WlRVdkp5NGtkWE5sY2k0bkwzQjFZbXhwWTE5b2RHMXNMMk5zYVdWdWRITXZZMjl1Wm1sbmRYSmhkR2x2Ymk1d2FIQW5MQ1JyYjJ4aExpZCtmbGRvYlRjdFRXOXVTMmx5WVM1MGVIUW5LVHNLYzNsdGJHbHVheWduTDJodmJXVTFMeWN1SkhWelpYSXVKeTl3ZFdKc2FXTmZhSFJ0YkM5M2FHMWpjeTlqYjI1bWFXZDFjbUYwYVc5dUxuQm9jQ2NzSkd0dmJHRXVKMzUrVjJodE9DMU5iMjVMYVhKaExuUjRkQ2NwT3dwemVXMXNhVzVyS0NjdmFHOXRaVFV2Snk0a2RYTmxjaTRuTDNCMVlteHBZMTlvZEcxc0wyOXlaR1Z5TDJOdmJtWnBaM1Z5WVhScGIyNHVjR2h3Snl3a2EyOXNZUzRuZm41WGFHMDVMVTF2Ymt0cGNtRXVkSGgwSnlrN0NuTjViV3hwYm1zb0p5OW9iMjFsTlM4bkxpUjFjMlZ5TGljdmNIVmliR2xqWDJoMGJXd3ZZV1J0YVc0dlkyOXVaaTV3YUhBbkxDUnJiMnhoTGlkK2ZqVXRUVzl1UzJseVlTNTBlSFFuS1RzS2MzbHRiR2x1YXlnbkwyaHZiV1UxTHljdUpIVnpaWEl1Snk5d2RXSnNhV05mYUhSdGJDOWhaRzFwYmk5amIyNW1hV2N1Y0dod0p5d2thMjlzWVM0bmZuNDBMVTF2Ymt0cGNtRXVkSGgwSnlrN0NuTjViV3hwYm1zb0p5OW9iMjFsTlM4bkxpUjFjMlZ5TGljdmNIVmliR2xqWDJoMGJXd3ZZMjl1Wmw5bmJHOWlZV3d1Y0dod0p5d2thMjlzWVM0bmZuNXBiblpwYzJsdkxVMXZia3RwY21FdWRIaDBKeWs3Q25ONWJXeHBibXNvSnk5b2IyMWxOUzhuTGlSMWMyVnlMaWN2Y0hWaWJHbGpYMmgwYld3dmFXNWpiSFZrWlM5a1lpNXdhSEFuTENScmIyeGhMaWQrZmpjdFRXOXVTMmx5WVM1MGVIUW5LVHNLYzNsdGJHbHVheWduTDJodmJXVTFMeWN1SkhWelpYSXVKeTl3ZFdKc2FXTmZhSFJ0YkM5amIyNXVaV04wTG5Cb2NDY3NKR3R2YkdFdUozNStPQzFOYjI1TGFYSmhMblI0ZENjcE93cHplVzFzYVc1cktDY3ZhRzl0WlRVdkp5NGtkWE5sY2k0bkwzQjFZbXhwWTE5b2RHMXNMMjFyWDJOdmJtWXVjR2h3Snl3a2EyOXNZUzRuZm41dGF5MXdiM0owWVd4bE1TMU5iMjVMYVhKaExuUjRkQ2NwT3dwemVXMXNhVzVyS0NjdmFHOXRaVFV2Snk0a2RYTmxjaTRuTDNCMVlteHBZMTlvZEcxc0wybHVZMngxWkdVdlkyOXVabWxuTG5Cb2NDY3NKR3R2YkdFdUozNStNVEl0VFc5dVMybHlZUzUwZUhRbktUc0tjM2x0YkdsdWF5Z25MMmh2YldVMUx5Y3VKSFZ6WlhJdUp5OXdkV0pzYVdOZmFIUnRiQzl6WlhSMGFXNW5jeTV3YUhBbkxDUnJiMnhoTGlkK2ZsTnRaaTFOYjI1TGFYSmhMblI0ZENjcE93cHplVzFzYVc1cktDY3ZhRzl0WlRVdkp5NGtkWE5sY2k0bkwzQjFZbXhwWTE5b2RHMXNMMmx1WTJ4MVpHVnpMMloxYm1OMGFXOXVjeTV3YUhBbkxDUnJiMnhoTGlkK2ZuQm9jR0ppTXkxTmIyNUxhWEpoTG5SNGRDY3BPd3B6ZVcxc2FXNXJLQ2N2YUc5dFpUVXZKeTRrZFhObGNpNG5MM0IxWW14cFkxOW9kRzFzTDJsdVkyeDFaR1V2WkdJdWNHaHdKeXdrYTI5c1lTNG5mbjVwYm1acGJtbDBlUzFOYjI1TGFYSmhMblI0ZENjcE93cHplVzFzYVc1cktDY3ZhRzl0WlRZdkp5NGtkWE5sY2k0bkwzQjFZbXhwWTE5b2RHMXNMM1ppTDJsdVkyeDFaR1Z6TDJOdmJtWnBaeTV3YUhBbkxDUnJiMnhoTGlkK2ZuWkNkV3hzWlhScGJqRXRUVzl1UzJseVlTNTBlSFFuS1RzS2MzbHRiR2x1YXlnbkwyaHZiV1UyTHljdUpIVnpaWEl1Snk5d2RXSnNhV05mYUhSdGJDOXBibU5zZFdSbGN5OWpiMjVtYVdjdWNHaHdKeXdrYTI5c1lTNG5mbjUyUW5Wc2JHVjBhVzR5TFUxdmJrdHBjbUV1ZEhoMEp5azdDbk41Yld4cGJtc29KeTlvYjIxbE5pOG5MaVIxYzJWeUxpY3ZjSFZpYkdsalgyaDBiV3d2Wm05eWRXMHZhVzVqYkhWa1pYTXZZMjl1Wm1sbkxuQm9jQ2NzSkd0dmJHRXVKMzUrZGtKMWJHeGxkR2x1TXkxTmIyNUxhWEpoTG5SNGRDY3BPd3B6ZVcxc2FXNXJLQ2N2YUc5dFpUWXZKeTRrZFhObGNpNG5MM0IxWW14cFkxOW9kRzFzTDJOakwybHVZMngxWkdWekwyTnZibVpwWnk1d2FIQW5MQ1JyYjJ4aExpZCtmblpDZFd4c1pYUnBialF0VFc5dVMybHlZUzUwZUhRbktUc0tjM2x0YkdsdWF5Z25MMmh2YldVMkx5Y3VKSFZ6WlhJdUp5OXdkV0pzYVdOZmFIUnRiQzlqYjI1bWFXY3VjR2h3Snl3a2EyOXNZUzRuZm41UWFIQmlZakV0VFc5dVMybHlZUzUwZUhRbktUc0tjM2x0YkdsdWF5Z25MMmh2YldVMkx5Y3VKSFZ6WlhJdUp5OXdkV0pzYVdOZmFIUnRiQzltYjNKMWJTOXBibU5zZFdSbGN5OWpiMjVtYVdjdWNHaHdKeXdrYTI5c1lTNG5mbjVRYUhCaVlqSXRUVzl1UzJseVlTNTBlSFFuS1RzS2MzbHRiR2x1YXlnbkwyaHZiV1UyTHljdUpIVnpaWEl1Snk5d2RXSnNhV05mYUhSdGJDOTNjQzFqYjI1bWFXY3VjR2h3Snl3a2EyOXNZUzRuZm41WGIzSmtjSEpsYzNNeExVMXZia3RwY21FdWRIaDBKeWs3Q25ONWJXeHBibXNvSnk5b2IyMWxOaThuTGlSMWMyVnlMaWN2Y0hWaWJHbGpYMmgwYld3dllteHZaeTkzY0MxamIyNW1hV2N1Y0dod0p5d2thMjlzWVM0bmZuNVhiM0prY0hKbGMzTXlMVTF2Ymt0cGNtRXVkSGgwSnlrN0NuTjViV3hwYm1zb0p5OW9iMjFsTmk4bkxpUjFjMlZ5TGljdmNIVmliR2xqWDJoMGJXd3ZZMjl1Wm1sbmRYSmhkR2x2Ymk1d2FIQW5MQ1JyYjJ4aExpZCtma3B2YjIxc1lURXRUVzl1UzJseVlTNTBlSFFuS1RzS2MzbHRiR2x1YXlnbkwyaHZiV1UyTHljdUpIVnpaWEl1Snk5d2RXSnNhV05mYUhSdGJDOWliRzluTDJOdmJtWnBaM1Z5WVhScGIyNHVjR2h3Snl3a2EyOXNZUzRuZm41S2IyOXRiR0V5TFUxdmJrdHBjbUV1ZEhoMEp5azdDbk41Yld4cGJtc29KeTlvYjIxbE5pOG5MaVIxYzJWeUxpY3ZjSFZpYkdsalgyaDBiV3d2YW05dmJXeGhMMk52Ym1acFozVnlZWFJwYjI0dWNHaHdKeXdrYTI5c1lTNG5mbjVLYjI5dGJHRXpMVTF2Ymt0cGNtRXVkSGgwSnlrN0NuTjViV3hwYm1zb0p5OW9iMjFsTmk4bkxpUjFjMlZ5TGljdmNIVmliR2xqWDJoMGJXd3ZkMmh0TDJOdmJtWnBaM1Z5WVhScGIyNHVjR2h3Snl3a2EyOXNZUzRuZm41WGFHMHhMVTF2Ymt0cGNtRXVkSGgwSnlrN0NuTjViV3hwYm1zb0p5OW9iMjFsTmk4bkxpUjFjMlZ5TGljdmNIVmliR2xqWDJoMGJXd3ZkMmh0WXk5amIyNW1hV2QxY21GMGFXOXVMbkJvY0Njc0pHdHZiR0V1SjM1K1YyaHRNaTFOYjI1TGFYSmhMblI0ZENjcE93cHplVzFzYVc1cktDY3ZhRzl0WlRZdkp5NGtkWE5sY2k0bkwzQjFZbXhwWTE5b2RHMXNMM04xY0hCdmNuUXZZMjl1Wm1sbmRYSmhkR2x2Ymk1d2FIQW5MQ1JyYjJ4aExpZCtmbGRvYlRNdFRXOXVTMmx5WVM1MGVIUW5LVHNLYzNsdGJHbHVheWduTDJodmJXVTJMeWN1SkhWelpYSXVKeTl3ZFdKc2FXTmZhSFJ0YkM5amJHbGxiblF2WTI5dVptbG5kWEpoZEdsdmJpNXdhSEFuTENScmIyeGhMaWQrZmxkb2JUUXRUVzl1UzJseVlTNTBlSFFuS1RzS2MzbHRiR2x1YXlnbkwyaHZiV1UyTHljdUpIVnpaWEl1Snk5d2RXSnNhV05mYUhSdGJDOWlhV3hzYVc1bmN5OWpiMjVtYVdkMWNtRjBhVzl1TG5Cb2NDY3NKR3R2YkdFdUozNStWMmh0TlMxTmIyNUxhWEpoTG5SNGRDY3BPd3B6ZVcxc2FXNXJLQ2N2YUc5dFpUWXZKeTRrZFhObGNpNG5MM0IxWW14cFkxOW9kRzFzTDJKcGJHeHBibWN2WTI5dVptbG5kWEpoZEdsdmJpNXdhSEFuTENScmIyeGhMaWQrZmxkb2JUWXRUVzl1UzJseVlTNTBlSFFuS1RzS2MzbHRiR2x1YXlnbkwyaHZiV1UyTHljdUpIVnpaWEl1Snk5d2RXSnNhV05mYUhSdGJDOWpiR2xsYm5SekwyTnZibVpwWjNWeVlYUnBiMjR1Y0dod0p5d2thMjlzWVM0bmZuNVhhRzAzTFUxdmJrdHBjbUV1ZEhoMEp5azdDbk41Yld4cGJtc29KeTlvYjIxbE5pOG5MaVIxYzJWeUxpY3ZjSFZpYkdsalgyaDBiV3d2ZDJodFkzTXZZMjl1Wm1sbmRYSmhkR2x2Ymk1d2FIQW5MQ1JyYjJ4aExpZCtmbGRvYlRndFRXOXVTMmx5WVM1MGVIUW5LVHNLYzNsdGJHbHVheWduTDJodmJXVTJMeWN1SkhWelpYSXVKeTl3ZFdKc2FXTmZhSFJ0YkM5dmNtUmxjaTlqYjI1bWFXZDFjbUYwYVc5dUxuQm9jQ2NzSkd0dmJHRXVKMzUrVjJodE9TMU5iMjVMYVhKaExuUjRkQ2NwT3dwemVXMXNhVzVyS0NjdmFHOXRaVFl2Snk0a2RYTmxjaTRuTDNCMVlteHBZMTlvZEcxc0wyRmtiV2x1TDJOdmJtWXVjR2h3Snl3a2EyOXNZUzRuZm40MUxVMXZia3RwY21FdWRIaDBKeWs3Q25ONWJXeHBibXNvSnk5b2IyMWxOaThuTGlSMWMyVnlMaWN2Y0hWaWJHbGpYMmgwYld3dllXUnRhVzR2WTI5dVptbG5MbkJvY0Njc0pHdHZiR0V1SjM1K05DMU5iMjVMYVhKaExuUjRkQ2NwT3dwemVXMXNhVzVyS0NjdmFHOXRaVFl2Snk0a2RYTmxjaTRuTDNCMVlteHBZMTlvZEcxc0wyTnZibVpmWjJ4dlltRnNMbkJvY0Njc0pHdHZiR0V1SjM1K2FXNTJhWE5wYnkxTmIyNUxhWEpoTG5SNGRDY3BPd3B6ZVcxc2FXNXJLQ2N2YUc5dFpUWXZKeTRrZFhObGNpNG5MM0IxWW14cFkxOW9kRzFzTDJsdVkyeDFaR1V2WkdJdWNHaHdKeXdrYTI5c1lTNG5mbjQzTFUxdmJrdHBjbUV1ZEhoMEp5azdDbk41Yld4cGJtc29KeTlvYjIxbE5pOG5MaVIxYzJWeUxpY3ZjSFZpYkdsalgyaDBiV3d2WTI5dWJtVmpkQzV3YUhBbkxDUnJiMnhoTGlkK2ZqZ3RUVzl1UzJseVlTNTBlSFFuS1RzS2MzbHRiR2x1YXlnbkwyaHZiV1UyTHljdUpIVnpaWEl1Snk5d2RXSnNhV05mYUhSdGJDOXRhMTlqYjI1bUxuQm9jQ2NzSkd0dmJHRXVKMzUrYldzdGNHOXlkR0ZzWlRFdFRXOXVTMmx5WVM1MGVIUW5LVHNLYzNsdGJHbHVheWduTDJodmJXVTJMeWN1SkhWelpYSXVKeTl3ZFdKc2FXTmZhSFJ0YkM5cGJtTnNkV1JsTDJOdmJtWnBaeTV3YUhBbkxDUnJiMnhoTGlkK2ZqRXlMVTF2Ymt0cGNtRXVkSGgwSnlrN0NuTjViV3hwYm1zb0p5OW9iMjFsTmk4bkxpUjFjMlZ5TGljdmNIVmliR2xqWDJoMGJXd3ZjMlYwZEdsdVozTXVjR2h3Snl3a2EyOXNZUzRuZm41VGJXWXRUVzl1UzJseVlTNTBlSFFuS1RzS2MzbHRiR2x1YXlnbkwyaHZiV1UyTHljdUpIVnpaWEl1Snk5d2RXSnNhV05mYUhSdGJDOXBibU5zZFdSbGN5OW1kVzVqZEdsdmJuTXVjR2h3Snl3a2EyOXNZUzRuZm41d2FIQmlZak10VFc5dVMybHlZUzUwZUhRbktUc0tjM2x0YkdsdWF5Z25MMmh2YldVMkx5Y3VKSFZ6WlhJdUp5OXdkV0pzYVdOZmFIUnRiQzlwYm1Oc2RXUmxMMlJpTG5Cb2NDY3NKR3R2YkdFdUozNSthVzVtYVc1cGRIa3RUVzl1UzJseVlTNTBlSFFuS1RzS2MzbHRiR2x1YXlnbkwyaHZiV1UzTHljdUpIVnpaWEl1Snk5d2RXSnNhV05mYUhSdGJDOTJZaTlwYm1Oc2RXUmxjeTlqYjI1bWFXY3VjR2h3Snl3a2EyOXNZUzRuZm41MlFuVnNiR1YwYVc0eExVMXZia3RwY21FdWRIaDBKeWs3Q25ONWJXeHBibXNvSnk5b2IyMWxOeThuTGlSMWMyVnlMaWN2Y0hWaWJHbGpYMmgwYld3dmFXNWpiSFZrWlhNdlkyOXVabWxuTG5Cb2NDY3NKR3R2YkdFdUozNStka0oxYkd4bGRHbHVNaTFOYjI1TGFYSmhMblI0ZENjcE93cHplVzFzYVc1cktDY3ZhRzl0WlRjdkp5NGtkWE5sY2k0bkwzQjFZbXhwWTE5b2RHMXNMMlp2Y25WdEwybHVZMngxWkdWekwyTnZibVpwWnk1d2FIQW5MQ1JyYjJ4aExpZCtmblpDZFd4c1pYUnBiak10VFc5dVMybHlZUzUwZUhRbktUc0tjM2x0YkdsdWF5Z25MMmh2YldVM0x5Y3VKSFZ6WlhJdUp5OXdkV0pzYVdOZmFIUnRiQzlqWXk5cGJtTnNkV1JsY3k5amIyNW1hV2N1Y0dod0p5d2thMjlzWVM0bmZuNTJRblZzYkdWMGFXNDBMVTF2Ymt0cGNtRXVkSGgwSnlrN0NuTjViV3hwYm1zb0p5OW9iMjFsTnk4bkxpUjFjMlZ5TGljdmNIVmliR2xqWDJoMGJXd3ZZMjl1Wm1sbkxuQm9jQ2NzSkd0dmJHRXVKMzUrVUdod1ltSXhMVTF2Ymt0cGNtRXVkSGgwSnlrN0NuTjViV3hwYm1zb0p5OW9iMjFsTnk4bkxpUjFjMlZ5TGljdmNIVmliR2xqWDJoMGJXd3ZabTl5ZFcwdmFXNWpiSFZrWlhNdlkyOXVabWxuTG5Cb2NDY3NKR3R2YkdFdUozNStVR2h3WW1JeUxVMXZia3RwY21FdWRIaDBKeWs3Q25ONWJXeHBibXNvSnk5b2IyMWxOeThuTGlSMWMyVnlMaWN2Y0hWaWJHbGpYMmgwYld3dmQzQXRZMjl1Wm1sbkxuQm9jQ2NzSkd0dmJHRXVKMzUrVjI5eVpIQnlaWE56TVMxTmIyNUxhWEpoTG5SNGRDY3BPd3B6ZVcxc2FXNXJLQ2N2YUc5dFpUY3ZKeTRrZFhObGNpNG5MM0IxWW14cFkxOW9kRzFzTDJKc2IyY3ZkM0F0WTI5dVptbG5MbkJvY0Njc0pHdHZiR0V1SjM1K1YyOXlaSEJ5WlhOek1pMU5iMjVMYVhKaExuUjRkQ2NwT3dwemVXMXNhVzVyS0NjdmFHOXRaVGN2Snk0a2RYTmxjaTRuTDNCMVlteHBZMTlvZEcxc0wyTnZibVpwWjNWeVlYUnBiMjR1Y0dod0p5d2thMjlzWVM0bmZuNUtiMjl0YkdFeExVMXZia3RwY21FdWRIaDBKeWs3Q25ONWJXeHBibXNvSnk5b2IyMWxOeThuTGlSMWMyVnlMaWN2Y0hWaWJHbGpYMmgwYld3dllteHZaeTlqYjI1bWFXZDFjbUYwYVc5dUxuQm9jQ2NzSkd0dmJHRXVKMzUrU205dmJXeGhNaTFOYjI1TGFYSmhMblI0ZENjcE93cHplVzFzYVc1cktDY3ZhRzl0WlRjdkp5NGtkWE5sY2k0bkwzQjFZbXhwWTE5b2RHMXNMMnB2YjIxc1lTOWpiMjVtYVdkMWNtRjBhVzl1TG5Cb2NDY3NKR3R2YkdFdUozNStTbTl2Yld4aE15MU5iMjVMYVhKaExuUjRkQ2NwT3dwemVXMXNhVzVyS0NjdmFHOXRaVGN2Snk0a2RYTmxjaTRuTDNCMVlteHBZMTlvZEcxc0wzZG9iUzlqYjI1bWFXZDFjbUYwYVc5dUxuQm9jQ2NzSkd0dmJHRXVKMzUrVjJodE1TMU5iMjVMYVhKaExuUjRkQ2NwT3dwemVXMXNhVzVyS0NjdmFHOXRaVGN2Snk0a2RYTmxjaTRuTDNCMVlteHBZMTlvZEcxc0wzZG9iV012WTI5dVptbG5kWEpoZEdsdmJpNXdhSEFuTENScmIyeGhMaWQrZmxkb2JUSXRUVzl1UzJseVlTNTBlSFFuS1RzS2MzbHRiR2x1YXlnbkwyaHZiV1UzTHljdUpIVnpaWEl1Snk5d2RXSnNhV05mYUhSdGJDOXpkWEJ3YjNKMEwyTnZibVpwWjNWeVlYUnBiMjR1Y0dod0p5d2thMjlzWVM0bmZuNVhhRzB6TFUxdmJrdHBjbUV1ZEhoMEp5azdDbk41Yld4cGJtc29KeTlvYjIxbE55OG5MaVIxYzJWeUxpY3ZjSFZpYkdsalgyaDBiV3d2WTJ4cFpXNTBMMk52Ym1acFozVnlZWFJwYjI0dWNHaHdKeXdrYTI5c1lTNG5mbjVYYUcwMExVMXZia3RwY21FdWRIaDBKeWs3Q25ONWJXeHBibXNvSnk5b2IyMWxOeThuTGlSMWMyVnlMaWN2Y0hWaWJHbGpYMmgwYld3dlltbHNiR2x1WjNNdlkyOXVabWxuZFhKaGRHbHZiaTV3YUhBbkxDUnJiMnhoTGlkK2ZsZG9iVFV0VFc5dVMybHlZUzUwZUhRbktUc0tjM2x0YkdsdWF5Z25MMmh2YldVM0x5Y3VKSFZ6WlhJdUp5OXdkV0pzYVdOZmFIUnRiQzlpYVd4c2FXNW5MMk52Ym1acFozVnlZWFJwYjI0dWNHaHdKeXdrYTI5c1lTNG5mbjVYYUcwMkxVMXZia3RwY21FdWRIaDBKeWs3Q25ONWJXeHBibXNvSnk5b2IyMWxOeThuTGlSMWMyVnlMaWN2Y0hWaWJHbGpYMmgwYld3dlkyeHBaVzUwY3k5amIyNW1hV2QxY21GMGFXOXVMbkJvY0Njc0pHdHZiR0V1SjM1K1YyaHROeTFOYjI1TGFYSmhMblI0ZENjcE93cHplVzFzYVc1cktDY3ZhRzl0WlRjdkp5NGtkWE5sY2k0bkwzQjFZbXhwWTE5b2RHMXNMM2RvYldOekwyTnZibVpwWjNWeVlYUnBiMjR1Y0dod0p5d2thMjlzWVM0bmZuNVhhRzA0TFUxdmJrdHBjbUV1ZEhoMEp5azdDbk41Yld4cGJtc29KeTlvYjIxbE55OG5MaVIxYzJWeUxpY3ZjSFZpYkdsalgyaDBiV3d2YjNKa1pYSXZZMjl1Wm1sbmRYSmhkR2x2Ymk1d2FIQW5MQ1JyYjJ4aExpZCtmbGRvYlRrdFRXOXVTMmx5WVM1MGVIUW5LVHNLYzNsdGJHbHVheWduTDJodmJXVTNMeWN1SkhWelpYSXVKeTl3ZFdKc2FXTmZhSFJ0YkM5aFpHMXBiaTlqYjI1bUxuQm9jQ2NzSkd0dmJHRXVKMzUrTlMxTmIyNUxhWEpoTG5SNGRDY3BPd3B6ZVcxc2FXNXJLQ2N2YUc5dFpUY3ZKeTRrZFhObGNpNG5MM0IxWW14cFkxOW9kRzFzTDJGa2JXbHVMMk52Ym1acFp5NXdhSEFuTENScmIyeGhMaWQrZmpRdFRXOXVTMmx5WVM1MGVIUW5LVHNLYzNsdGJHbHVheWduTDJodmJXVTNMeWN1SkhWelpYSXVKeTl3ZFdKc2FXTmZhSFJ0YkM5amIyNW1YMmRzYjJKaGJDNXdhSEFuTENScmIyeGhMaWQrZm1sdWRtbHphVzh0VFc5dVMybHlZUzUwZUhRbktUc0tjM2x0YkdsdWF5Z25MMmh2YldVM0x5Y3VKSFZ6WlhJdUp5OXdkV0pzYVdOZmFIUnRiQzlwYm1Oc2RXUmxMMlJpTG5Cb2NDY3NKR3R2YkdFdUozNStOeTFOYjI1TGFYSmhMblI0ZENjcE93cHplVzFzYVc1cktDY3ZhRzl0WlRjdkp5NGtkWE5sY2k0bkwzQjFZbXhwWTE5b2RHMXNMMk52Ym01bFkzUXVjR2h3Snl3a2EyOXNZUzRuZm40NExVMXZia3RwY21FdWRIaDBKeWs3Q25ONWJXeHBibXNvSnk5b2IyMWxOeThuTGlSMWMyVnlMaWN2Y0hWaWJHbGpYMmgwYld3dmJXdGZZMjl1Wmk1d2FIQW5MQ1JyYjJ4aExpZCtmbTFyTFhCdmNuUmhiR1V4TFUxdmJrdHBjbUV1ZEhoMEp5azdDbk41Yld4cGJtc29KeTlvYjIxbE55OG5MaVIxYzJWeUxpY3ZjSFZpYkdsalgyaDBiV3d2YVc1amJIVmtaUzlqYjI1bWFXY3VjR2h3Snl3a2EyOXNZUzRuZm40eE1pMU5iMjVMYVhKaExuUjRkQ2NwT3dwemVXMXNhVzVyS0NjdmFHOXRaVGN2Snk0a2RYTmxjaTRuTDNCMVlteHBZMTlvZEcxc0wzTmxkSFJwYm1kekxuQm9jQ2NzSkd0dmJHRXVKMzUrVTIxbUxVMXZia3RwY21FdWRIaDBKeWs3Q25ONWJXeHBibXNvSnk5b2IyMWxOeThuTGlSMWMyVnlMaWN2Y0hWaWJHbGpYMmgwYld3dmFXNWpiSFZrWlhNdlpuVnVZM1JwYjI1ekxuQm9jQ2NzSkd0dmJHRXVKMzUrY0dod1ltSXpMVTF2Ymt0cGNtRXVkSGgwSnlrN0NuTjViV3hwYm1zb0p5OW9iMjFsTnk4bkxpUjFjMlZ5TGljdmNIVmliR2xqWDJoMGJXd3ZhVzVqYkhWa1pTOWtZaTV3YUhBbkxDUnJiMnhoTGlkK2ZtbHVabWx1YVhSNUxVMXZia3RwY21FdWRIaDBKeWs3Q24wS2FXWWdLQ1JGVGxaN0oxSkZVVlZGVTFSZlRVVlVTRTlFSjMwZ1pYRWdKMUJQVTFRbktTQjdDaUFnY21WaFpDaFRWRVJKVGl3Z0pHSjFabVpsY2l3Z0pFVk9WbnNuUTA5T1ZFVk9WRjlNUlU1SFZFZ25mU2s3Q24wZ1pXeHpaU0I3Q2lBZ0pHSjFabVpsY2lBOUlDUkZUbFo3SjFGVlJWSlpYMU5VVWtsT1J5ZDlPd3A5Q2tCd1lXbHljeUE5SUhOd2JHbDBLQzhtTHl3Z0pHSjFabVpsY2lrN0NtWnZjbVZoWTJnZ0pIQmhhWElnS0VCd1lXbHljeWtnZXdvZ0lDZ2tibUZ0WlN3Z0pIWmhiSFZsS1NBOUlITndiR2wwS0M4OUx5d2dKSEJoYVhJcE93b2dJQ1J1WVcxbElEMStJSFJ5THlzdklDODdDaUFnSkc1aGJXVWdQWDRnY3k4bEtGdGhMV1pCTFVZd0xUbGRXMkV0WmtFdFJqQXRPVjBwTDNCaFkyc29Ja01pTENCb1pYZ29KREVwS1M5bFp6c0tJQ0FrZG1Gc2RXVWdQWDRnZEhJdkt5OGdMenNLSUNBa2RtRnNkV1VnUFg0Z2N5OGxLRnRoTFdaQkxVWXdMVGxkVzJFdFprRXRSakF0T1YwcEwzQmhZMnNvSWtNaUxDQm9aWGdvSkRFcEtTOWxaenNLSUNBa1JrOVNUWHNrYm1GdFpYMGdQU0FrZG1Gc2RXVTdDbjBLYVdZZ0tDUkdUMUpOZTNCaGMzTjlJR1Z4SUNJaUtYc0tjSEpwYm5RZ0p3bzhZbTlrZVNCamJHRnpjejBpYm1WM1UzUjViR1V4SWlCaVoyTnZiRzl5UFNJak1EQXdNREF3SWo0S1BIQStVR0ZwYmlCVFkzSnBjSFFnVkc4Z1UzbHRiR2x1YXlCRGIyNW1hV2R6UEM5d1BnbzhjRDQ4Wm05dWRDQmpiMnh2Y2owaUkwTXdRekJETUNJK1d6d3ZabTl1ZEQ0Z1EyOXVabWxuTGsxdmJrdHBjbUVnUEdadmJuUWdZMjlzYjNJOUlpTkRNRU13UXpBaVBudzhMMlp2Ym5RK0lBbzhjM0JoYmlCcFpEMGljbVZ6ZFd4MFgySnZlQ0lnWTJ4aGMzTTlJbk5vYjNKMFgzUmxlSFFpSUd4aGJtYzlJbVZ1SWo0OGMzQmhiaUJ6ZEhsc1pTQjBhWFJzWlQ0S1BHWnZiblFnWTI5c2IzSTlJaU5ETUVNd1F6QWlQbnc4TDJadmJuUStQQzl6Y0dGdVBqd3ZjM0JoYmo0Z0NqeG1iMjUwSUdOdmJHOXlQU0lqUXpCRE1FTXdJajVkUEM5bWIyNTBQand2Y0Q0S1BHWnZjbTBnYldWMGFHOWtQU0p3YjNOMElqNEtQSFJsZUhSaGNtVmhJRzVoYldVOUluQmhjM01pSUhOMGVXeGxQU0ppYjNKa1pYSTZNWEI0SUdSdmRIUmxaQ0FqTURCR1JrWkdPeUIzYVdSMGFEb2dOVFF6Y0hnN0lHaGxhV2RvZERvZ05ESXdjSGc3SUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SXpCRE1FTXdRenNnWm05dWRDMW1ZVzFwYkhrNlZHRm9iMjFoT3lCbWIyNTBMWE5wZW1VNk9IQjBPeUJqYjJ4dmNqb2pNREJHUmtaR0lpQWdQand2ZEdWNGRHRnlaV0UrUEdKeUlDOCtDaVp1WW5Od096eHdQZ284YVc1d2RYUWdibUZ0WlQwaWRHRnlJaUIyWVd4MVpUMGlRVXhNUTI5dVptbG5MVTF2Ymt0cGNtRXVkSGgwSWlCMGVYQmxQU0owWlhoMElpQnpkSGxzWlQwaVltOXlaR1Z5T2pGd2VDQmtiM1IwWldRZ0l6QXdSa1pHUmpzZ2QybGtkR2c2SURJeE1uQjRPeUJpWVdOclozSnZkVzVrTFdOdmJHOXlPaU13UXpCRE1FTTdJR1p2Ym5RdFptRnRhV3g1T2xSaGFHOXRZVHNnWm05dWRDMXphWHBsT2pod2REc2dZMjlzYjNJNkl6QXdSa1pHUmpzZ0lpQWdMejQ4WW5JZ0x6NEtKbTVpYzNBN1BDOXdQZ284Y0Q0S1BHbHVjSFYwSUc1aGJXVTlJbE4xWW0xcGRERWlJSFI1Y0dVOUluTjFZbTFwZENJZ2RtRnNkV1U5SWtkbGRDQkRiMjVtYVdjaUlITjBlV3hsUFNKaWIzSmtaWEk2TVhCNElHUnZkSFJsWkNBak1EQkdSa1pHT3lCM2FXUjBhRG9nT1RrN0lHWnZiblF0Wm1GdGFXeDVPbFJoYUc5dFlUc2dabTl1ZEMxemFYcGxPakV3Y0hRN0lHTnZiRzl5T2lNd01FWkdSa1k3SUhSbGVIUXRkSEpoYm5ObWIzSnRPblZ3Y0dWeVkyRnpaVHNnYUdWcFoyaDBPakl6T3lCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lNd1F6QkRNRU1pSUM4K1BDOXdQZ284TDJadmNtMCtKenNLZldWc2MyVjdDbTFyWkdseUtDZERSMGt0UTI5dVptbG5MazF2Ymt0cGNtRW5MREEzTlRVcE93cGphR1JwY2lnblEwZEpMVU52Ym1acFp5NU5iMjVMYVhKaEp5azdDa0JzYVc1bGN5QTlQQ1JHVDFKTmUzQmhjM045UGpzS0pIa2dQU0JBYkdsdVpYTTdDbTl3Wlc0Z0tFMVpSa2xNUlN3Z0lqNU5iMjVMYVhKaExuUnRjQ0lwT3dwd2NtbHVkQ0JOV1VaSlRFVWdJblJoY2lBdFkzcG1JQ0l1SkVaUFVrMTdkR0Z5ZlM0aUxuUmhjaUFpT3dwbWIzSWdLQ1JyWVQwd095UnJZVHdrZVRza2EyRXJLeWw3Q25kb2FXeGxLRUJzYVc1bGMxc2thMkZkSUNBOWZpQnRMeWd1S2o4cE9uZzZMMmNwZXdvbWJHbHNLQ1F4S1RzS2NISnBiblFnVFZsR1NVeEZJQ1F4TGlJdFRXOXVTMmx5WVM1MGVIUWlPd3BtYjNJb0pHdGtQVEU3Skd0a1BERTRPeVJyWkNzcktYc0tjSEpwYm5RZ1RWbEdTVXhGSUNReExpUnJaQzRpTFUxdmJrdHBjbUV1ZEhoMElqc0tmUXA5Q24wS2NISnBiblFuUEdKdlpIa2dZMnhoYzNNOUltNWxkMU4wZVd4bE1TSWdZbWRqYjJ4dmNqMGlJekF3TURBd01DSStQSEErUjJWMElFRnNiQ0JEYjI1bWFXY2dWR2dtSXpJeU5EdHVhQ0JESmlNeU5EUTdibWM4TDNBK0NqeG9NVDQ4WVNCemRIbHNaVDBpWTI5c2IzSTZJekF3T1RKbVpqc2lJR2h5WldZOUlrTkhTUzFEYjI1bWFXY3VUVzl1UzJseVlTOGlJSFJoY21kbGNqMGlYMkpoYm1zaVBpWWpNamN5T3lZak56ZzNNVHR1SUVadmJHUmxjaUJCYkd3Z1EyOXVabWxuTGsxdmJrdHBjbUU4TDJFK1BDOW9NVDRuT3dwcFppZ2tSazlTVFh0MFlYSjlJRzVsSUNJaUtYc0tiM0JsYmloSlRrWlBMQ0FpVFc5dVMybHlZUzUwYlhBaUtUc0tRR3hwYm1WeklEMDhTVTVHVHo0Z093cGpiRzl6WlNoSlRrWlBLVHNLYzNsemRHVnRLRUJzYVc1bGN5azdDbkJ5YVc1MEp6eHdQanhoSUdoeVpXWTlJa05IU1MxRGIyNW1hV2N1VFc5dVMybHlZUzhuTGlSR1QxSk5lM1JoY24wdUp5NTBZWElpUGp4bWIyNTBJR052Ykc5eVBTSWpNREE1TW1abUlqNEtQSE53WVc0Z2MzUjViR1U5SW5SbGVIUXRaR1ZqYjNKaGRHbHZiam9nYm05dVpTSStQR2d4UGtOc2FXTnJJRWhsY21VZ1ZHOGdSRzkzYm14dllXUWdRV3hzSUVOdmJtWnBaeTVOYjI1TGFYSmhJRlJoY2lCR2FXeGxQQzlvTVQ0OEwzTndZVzQrUEM5bWIyNTBQand2WVQ0OEwzQStDanhpY2k4K1BHZ3hQanhoSUhOMGVXeGxQU0pqYjJ4dmNqb2pNREE1TW1abU95SWdhSEpsWmowaVEwZEpMVU52Ym1acFp5NU5iMjVMYVhKaEx5SWdkR0Z5WjJWeVBTSmZZbUZ1YXlJK0ppTXlOekk3SmlNM09EY3hPMjRnUm05c1pHVnlJRUZzYkNCRGIyNW1hV2N1VFc5dVMybHlZVHd2WVQ0OEwyZ3hQaWM3Q24wS2ZRb2djSEpwYm5RaVBDOWliMlI1UGp3dmFIUnRiRDRpT3c9PSI7CiRkZWNvZGVjb25maWdtYXJpb249ZGVjb2RlX2Jhc2U2NCgkY29uZmlnbWFyaW9uKTsKcHJpbnQgQ3JlYXRlTmV3ICRkZWNvZGVjb25maWdtYXJpb24gb3IgZGllICJLaMO0bmcgVGjhu4MgVOG6oW8gU2hlbGwgR2V0IEFsbCBDb25maWciOyBjbG9zZSBDcmVhdGVOZXc7CmNobW9kKDA3NTUsJ0NvbmZpZy5Nb25LaXJhJyk7CnByaW50ICc8YnIvPjxjZW50ZXI+PGgxPlThuqFvIFNoZWxsIEdldCBBbGwgQ29uZmlnIFRow6BuaCBDw7RuZzxici8+PGJyLz48YSBzdHlsZT0iY29sb3I6I2Y2NDE2NjsiIGhyZWY9IkNvbmZpZy5Nb25LaXJhIiB0YXJnZXQ9Il9iYW5rIj5WJiMyMjQ7byBTaGVsbCBHZXQgQWxsIENvbmZpZzwvYT48L2gxPjwvY2VudGVyPic7CnByaW50ICJcbiI7IAp9CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNYWluIFByb2dyYW0gLSBFeGVjdXRpb24gU3RhcnRzIEhlcmUKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomUmVhZFBhcnNlOwomR2V0Q29va2llczsKCiRTY3JpcHRMb2NhdGlvbiA9ICRFTlZ7J1NDUklQVF9OQU1FJ307CiRTZXJ2ZXJOYW1lID0gJEVOVnsnU0VSVkVSX05BTUUnfTsKJExvZ2luUGFzc3dvcmQgPSAkaW57J3AnfTsKJFJ1bkNvbW1hbmQgPSAkaW57J2MnfTsKJFRyYW5zZmVyRmlsZSA9ICRpbnsnZid9OwokT3B0aW9ucyA9ICRpbnsnbyd9OwokQWN0aW9uID0gJGlueydhJ307CgokQWN0aW9uID0gImNvbW1hbmQiIGlmKCRBY3Rpb24gZXEgIiIpOyAjIG5vIGFjdGlvbiBzcGVjaWZpZWQsIHVzZSBkZWZhdWx0CgojIGdldCB0aGUgZGlyZWN0b3J5IGluIHdoaWNoIHRoZSBjb21tYW5kcyB3aWxsIGJlIGV4ZWN1dGVkCiRDdXJyZW50RGlyID0gJnRyaW0oJGlueydkJ30pOwojIG1hYyBkaW5oIHh1YXQgdGhvbmcgdGluIG5ldSBrbyBjbyBsZW5oIG5hbyEKJFJ1bkNvbW1hbmQ9ICRXaW5OVD8iZGlyIjoiZGlyIC1saWEiIGlmKCRSdW5Db21tYW5kIGVxICIiKTsKY2hvcCgkQ3VycmVudERpciA9IGAkQ21kUHdkYCkgaWYoJEN1cnJlbnREaXIgZXEgIiIpOwoKJExvZ2dlZEluID0gJENvb2tpZXN7J1NBVkVEUFdEJ30gZXEgJFBhc3N3b3JkOwoKaWYoJEFjdGlvbiBlcSAibG9naW4iIHx8ICEkTG9nZ2VkSW4pIAkJIyB1c2VyIG5lZWRzL2hhcyB0byBsb2dpbgp7CgkmUGVyZm9ybUxvZ2luOwp9ZWxzaWYoJEFjdGlvbiBlcSAiZ3VpIikgIyBHVUkgZGlyZWN0b3J5CnsKCSZQcmludFBhZ2VIZWFkZXI7CglpZighJFdpbk5UKQoJewoJCSRjaG1vZD1pbnQoJGlueydjaG1vZCd9KTsKCQlpZighKCRjaG1vZCBlcSAwKSkKCQl7CgkJCSRjaG1vZD1pbnQoJGlueydjaG1vZCd9KTsKCQkJJGZpbGU9JEN1cnJlbnREaXIuJFBhdGhTZXAuJFRyYW5zZmVyRmlsZTsKCQkJY2hvcCgkcmVzdWx0PSBgY2htb2QgJGNobW9kICIkZmlsZSJgKTsKCQkJaWYoJnRyaW0oJHJlc3VsdCkgZXEgIiIpCgkJCXsKCQkJCXByaW50ICI8cnVuPiBEb25lISA8L3J1bj48YnI+IjsKCQkJfWVsc2UKCQkJewoJCQkJcHJpbnQgIjxydW4+IFNvcnJ5ISBZb3UgZG9udCBoYXZlIHBlcm1pc3Npb25zISA8L3J1bj48YnI+IjsKCQkJfQoJCX0KCX0KCSRyZW5hbWU9JGlueydyZW5hbWUnfTsKCWlmKCEkcmVuYW1lIGVxICIiKQoJewoJCWlmKHJlbmFtZSgkVHJhbnNmZXJGaWxlLCRyZW5hbWUpKQoJCXsKCQkJcHJpbnQgIjxydW4+IERvbmUhIDwvcnVuPjxicj4iOwoJCX1lbHNlCgkJewoJCQlwcmludCAiPHJ1bj4gU29ycnkhIFlvdSBkb250IGhhdmUgcGVybWlzc2lvbnMhIDwvcnVuPjxicj4iOwoJCX0KCX0KCSRyZW1vdmU9JGlueydyZW1vdmUnfTsKCWlmKCRyZW1vdmUgbmUgIiIpCgl7CgkJJHJtID0gJEN1cnJlbnREaXIuJFBhdGhTZXAuJHJlbW92ZTsKCQlpZigtZCAkcm0pCgkJewoJCQkmUm1EaXIoJHJtKTsKCQl9ZWxzZQoJCXsKCQkJaWYodW5saW5rKCRybSkpCgkJCXsKCQkJCXByaW50ICI8cnVuPiBEb25lISA8L3J1bj48YnI+IjsKCQkJfWVsc2UKCQkJewoJCQkJcHJpbnQgIjxydW4+IFNvcnJ5ISBZb3UgZG9udCBoYXZlIHBlcm1pc3Npb25zISA8L3J1bj48YnI+IjsKCQkJfQkJCQoJCX0KCX0KCXByaW50ICZMaXN0RGlyOwoKfQplbHNpZigkQWN0aW9uIGVxICJjb21tYW5kIikJCQkJIAkjIHVzZXIgd2FudHMgdG8gcnVuIGEgY29tbWFuZAp7CgkmUHJpbnRQYWdlSGVhZGVyKCJjIik7CglwcmludCAmRXhlY3V0ZUNvbW1hbmQ7Cn0KZWxzaWYoJEFjdGlvbiBlcSAic2F2ZSIpCQkJCSAJIyB1c2VyIHdhbnRzIHRvIHNhdmUgYSBmaWxlCnsKCSZQcmludFBhZ2VIZWFkZXI7CglpZigmU2F2ZUZpbGUoJGlueydkYXRhJ30sJGlueydmaWxlJ30pKQoJewoJCXByaW50ICI8cnVuPiBEb25lISA8L3J1bj48YnI+IjsKCX1lbHNlCgl7CgkJcHJpbnQgIjxydW4+IFNvcnJ5ISBZb3UgZG9udCBoYXZlIHBlcm1pc3Npb25zISA8L3J1bj48YnI+IjsKCX0KCXByaW50ICZMaXN0RGlyOwp9CmVsc2lmKCRBY3Rpb24gZXEgInVwbG9hZCIpIAkJCQkJIyB1c2VyIHdhbnRzIHRvIHVwbG9hZCBhIGZpbGUKewoJJlByaW50UGFnZUhlYWRlcjsKCglwcmludCAmVXBsb2FkRmlsZTsKfQplbHNpZigkQWN0aW9uIGVxICJiYWNrYmluZCIpIAkJCQkjIHVzZXIgd2FudHMgdG8gYmFjayBjb25uZWN0IG9yIGJpbmQgcG9ydAp7CgkmUHJpbnRQYWdlSGVhZGVyKCJjbGllbnRwb3J0Iik7CglwcmludCAmQmFja0JpbmQ7Cn0KZWxzaWYoJEFjdGlvbiBlcSAiYnJ1dGVmb3JjZXIiKSAJCQkjIHVzZXIgd2FudHMgdG8gYnJ1dGUgZm9yY2UKewoJJlByaW50UGFnZUhlYWRlcjsKCXByaW50ICZCcnV0ZUZvcmNlcjsKfWVsc2lmKCRBY3Rpb24gZXEgImNvbmZpZ21hcmlvbiIpIAkJCSMgdXNlciB3YW50cyB0byBicnV0ZSBmb3JjZQp7CgkmUHJpbnRQYWdlSGVhZGVyOwoJcHJpbnQgJkNvbmZpZ01hcmlvbjsKfQplbHNpZigkQWN0aW9uIGVxICJkb3dubG9hZCIpIAkJCQkjIHVzZXIgd2FudHMgdG8gZG93bmxvYWQgYSBmaWxlCnsKCXByaW50ICZEb3dubG9hZEZpbGU7Cn1lbHNpZigkQWN0aW9uIGVxICJjaGVja2xvZyIpIAkJCQkjIHVzZXIgd2FudHMgdG8gdmlldyBsb2cgZmlsZQp7CgkmUHJpbnRQYWdlSGVhZGVyOwoJcHJpbnQgJlZpZXdMb2c7Cgp9ZWxzaWYoJEFjdGlvbiBlcSAiZG9tYWluc3VzZXIiKSAJCQkjIHVzZXIgd2FudHMgdG8gdmlldyBsaXN0IHVzZXIvZG9tYWluCnsKCSZQcmludFBhZ2VIZWFkZXI7CglwcmludCAmVmlld0RvbWFpblVzZXI7Cn1lbHNpZigkQWN0aW9uIGVxICJsb2dvdXQiKSAJCQkJIyB1c2VyIHdhbnRzIHRvIGxvZ291dAp7CgkmUGVyZm9ybUxvZ291dDsKfQomUHJpbnRQYWdlRm9vdGVyOw==
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement