# Name: smd_gallery v0.3 # Type: Client side plugin # A(nother) thumbnail gallery/slideshow creator with unreal flexibility # Author: Stef Dawson # URL: http://stefdawson.com/ # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YTo5OntzOjQ6Im5hbWUiO3M6MTE6InNtZF9nYWxsZXJ5IjtzOjY6ImF1dGhvciI7czoxMToi U3RlZiBEYXdzb24iO3M6MTA6ImF1dGhvcl91cmkiO3M6MjI6Imh0dHA6Ly9zdGVmZGF3c29u LmNvbS8iO3M6NzoidmVyc2lvbiI7czozOiIwLjMiO3M6MTE6ImRlc2NyaXB0aW9uIjtzOjY5 OiJBKG5vdGhlcikgdGh1bWJuYWlsIGdhbGxlcnkvc2xpZGVzaG93IGNyZWF0b3Igd2l0aCB1 bnJlYWwgZmxleGliaWxpdHkiO3M6NDoiY29kZSI7czoyNDExODoiZnVuY3Rpb24gc21kX2dh bGxlcnkoJGF0dHMsICR0aGluZz0nJykgew0KCWdsb2JhbCAkcHJldGV4dCwgJHRoaXNhcnRp Y2xlLCAkaW1nX2RpcjsNCg0KCS8vICoqIExPT0tVUCBUQUJMRQ0KCS8vIEhvbGRzIGRhdGFi YXNlIGZpZWxkIGFzIGtleSBpbmRleCBhbmQgcGx1Z2luIG9wdGlvbiBuYW1lcyBhcyB2YWx1 ZS4NCgkvLyBVc2UgYXJyYXlfc2VhcmNoIHRvIGZpbmQgaWYgdmFsdWUgZXhpc3RzIGFuZCBy ZXR1cm4gY29ycmVjdCBrZXkgZm9yIHVzZSBpbiBkYiBjYWxscy9hcnJheSByZWZzLg0KCSRm aWVsZE1hcCA9IGFycmF5KA0KCQkibmFtZSIgPT4gIm5hbWUiLA0KCQkiaWQiID0+ICJpZCIs DQoJCSJhbHQiID0+ICJhbHQiLA0KCQkiY2FwdGlvbiIgPT4gImNhcHRpb24iLA0KCQkiY2F0 ZWdvcnkiID0+ICJjYXRlZ29yeSIsDQoJCSJhdXRob3IiID0+ICJhdXRob3IiLA0KCQkiZGF0 ZSIgPT4gImRhdGUiLA0KCQkiZXh0IiA9PiAiZXh0IiwNCgkJInciID0+ICJ3aWR0aCIsDQoJ CSJoIiA9PiAiaGVpZ2h0IiwNCgkpOw0KDQoJLy8gUGx1Z2luIG9wdGlvbnMNCglleHRyYWN0 KGxBdHRzKGFycmF5KA0KCQkndHlwZScgPT4gJ2ltYWdlJywNCgkJJ2RlbGltJyA9PiAnLCcs DQoJCSdwYXJhbWRlbGltJyA9PiAnOicsDQoJCSdmb3JtJyA9PiAnJywNCgkJJ2lkJyA9PiAn JywNCgkJJ2NhdGVnb3J5JyA9PiAnJywNCgkJJ2RpcmVjdG9yeScgPT4gJycsDQoJCSdtYXRj aCcgPT4gJycsDQoJCSdzdWJsZXZlbCcgPT4gJzAnLA0KCQknc29ydCcgPT4gJ2NhdGVnb3J5 JywNCgkJJ29mZnNldCcgPT4gJzAnLA0KCQknbGltaXQnID0+ICcwJywNCgkJJ21heGxpbWl0 JyA9PiAnOTk5OTknLA0KCQkndGh1bWJsaW1pdCcgPT4gJzk5OTk5JywNCgkJJ3RodW1ib2Zm c2V0JyA9PiAnMCcsDQoJCSd0aHVtYicgPT4gJzAnLA0KCQkndGh1bWJzaXplJyA9PiAnJywN CgkJJ3RleHQnID0+ICcnLA0KCQknY29sbGF0ZScgPT4gJycsDQoJCSdjb21ibycgPT4gJycs DQoJCSdwYWdlZm9ybScgPT4gJycsDQoJCSduYXZ3cmFwdGFnJyA9PiAndWwnLA0KCQknbmF2 YnJlYWsnID0+ICdsaScsDQoJCSduYXZjbGFzcycgPT4gJ3NtZF9nYWxsZXJ5X25hdicsDQoJ CSdnYWxsZXJ5aWQnID0+ICc/NDo2JywNCgkJJ3dyYXB0YWcnID0+ICcnLA0KCQknYnJlYWsn ID0+ICcnLA0KCQknY2xhc3MnID0+ICcnLA0KCQknZGVidWcnID0+ICcwJywNCgkpLCAkYXR0 cykpOw0KDQoJLy8gQ2F0ZWdvcnkgcmVsaWVzIG9uIHdoZXRoZXIgaWQgaGFzIGJlZW4gc3Bl Y2lmaWVkIG9yIG5vdC4NCgkvLyBsQXR0cygpIHdvbid0IGxldCB1cyBoYW5kbGUgdGhpcyBs b2dpYyBzbyBpdCBoYXMgdG8gYmUgZG9uZSBtYW51YWxseQ0KCSRhdHRlbXB0TWF0Y2ggPSAo ZW1wdHkoJGNhdGVnb3J5KSAmJiBlbXB0eSgkaWQpKSA/IGZhbHNlIDogdHJ1ZTsNCgkkY2F0 ZWdvcnkgPSBpc3NldCgkY2F0ZWdvcnkpID8gZG9TbGFzaCgkY2F0ZWdvcnkpIDogKCgkaWQ9 PScnKSA/ICRwcmV0ZXh0WydjJ106ICcnKTsNCg0KCS8vIEhhbmRsZSBmb3JtcyBhbmQgc2V0 IGEgZGVmYXVsdCB0YWcgaWYgbm9uZSBzcGVjaWZpZWQNCgkkdGhpbmcgPSAoZW1wdHkoJGZv cm0pKSA/ICR0aGluZyA6IGZldGNoX2Zvcm0oJGZvcm0pOw0KCSR0aGluZyA9IChlbXB0eSgk dGhpbmcpKSA/ICc8YSBocmVmPSJ7dXJsfSIgYWx0PSJ7YWx0fSI+PHR4cDppbWFnZSBpZD0i e2lkfSIgLz48L2E+JyA6ICR0aGluZzsNCg0KCS8vIFBhZ2luZyBpbml0DQoJJHBhZ2luZyA9 IDA7DQoJaWYgKCRwYWdlZm9ybSkgew0KCQkkcGFnaW5nID0gMTsNCgkJJHBhZ2Vmb3JtID0g ZmV0Y2hfZm9ybSgkcGFnZWZvcm0pOw0KCX0NCg0KCS8vIFRoZSBnYWxsZXJ5IGlkZW50aWZp ZXIgaXMgdXNlZCBmb3Iga2VlcGluZyB0cmFjayBvZiBuZXh0L3ByZXYgdGh1bWJuYWlsIHBh Z2UgbGlua3MNCgkkZ2FsbElEID0gJyc7DQoJaWYgKCRnYWxsZXJ5aWQgPT0gJycgfHwgc3Vi c3RyKCRnYWxsZXJ5aWQsMCwxKSA9PSAiPyIpIHsNCgkJLy8gR2VuZXJhdGUgYSAoZmFpcmx5 IGxpa2VseSkgdW5pcXVlIElEIGZvciB0aGlzIGdhbGxlcnkgaW5zdGFuY2UNCgkJJGdhbGxU bXAgPSBtZDUoJGNhdGVnb3J5LiRpZC4kZGlyZWN0b3J5LiRtYXRjaC4kc3VibGV2ZWwuJHNv cnQuJGxpbWl0LiRtYXhsaW1pdCk7DQoJCWxpc3QoJGdhbGxMZW4sICRnYWxsU2tpcCkgPSBl eHBsb2RlKCI6Iiwgc3Vic3RyKCRnYWxsZXJ5aWQsMSkpOw0KCQkkZ2FsbExlbiA9ICAoZW1w dHkoJGdhbGxMZW4pKSA/ICI0IiA6ICRnYWxsTGVuOw0KCQkkZ2FsbFNraXAgPSAgKGVtcHR5 KCRnYWxsU2tpcCkpID8gIjEiIDogJGdhbGxTa2lwOw0KCQlmb3IgKCRpZHggPSAwLCAkY250 ID0gMDsgJGNudCA8ICRnYWxsTGVuOyAkY250KyssICRpZHggPSAoKCRpZHgrJGdhbGxTa2lw KSAlIHN0cmxlbigkZ2FsbFRtcCkpKSB7DQoJCQkkZ2FsbElEIC49ICRnYWxsVG1wWyRpZHhd Ow0KCQl9DQoJfSBlbHNlIHsNCgkJJGdhbGxJRCA9ICRnYWxsZXJ5aWQ7DQoJfQ0KCSRnYWxs SUQgPSAic21kX2dscnlfIi4kZ2FsbElEOyAvLyBBdm9pZCAoYWxyZWFkeSBpbmNyZWRpYmx5 IHVubGlrZWx5KSBuYW1lc3BhY2UgY2xhc2hlcw0KDQoJLy8gVGhlIG1hbm5lciBvZiBvYnRh aW5pbmcgZmlsZXMgZGlmZmVycyBpZiB1c2luZyBkaXJlY3RvcnkgdnMgY2F0ZWdvcnkvaWQN CglpZiAoJGRpcmVjdG9yeSkgew0KCQkkcnMgPSBhcnJheSgpOw0KCQkkcnNhbGwgPSBzbWRf ZG9EaXJlY3RvcnkoJGRpcmVjdG9yeSwgMCwgJHN1YmxldmVsLCAkbWF0Y2gsICRkZWxpbSk7 DQoJCWxpc3QoJG51bVBhZ2VzLCAkdGh1bVBhZ2UsICRvZmZzZXQpID0gc21kX2dldFBhZ2Uo JHJzYWxsLCAkZ2FsbElELCAkbGltaXQsICRvZmZzZXQsICRwYWdpbmcpOw0KCQkkZGlybGlt aXQgPSAoJGxpbWl0PT0wKSA/ICRtYXhsaW1pdCA6ICRsaW1pdDsNCgkJJHJzID0gYXJyYXlf c2xpY2UoJHJzYWxsLCAkb2Zmc2V0LCAkZGlybGltaXQpOw0KCQkkcG9zdE9yZGVyID0gYXJy YXkoKTsNCgkJJGZpeGVkT3JkZXIgPSAwOw0KCX0gZWxzZSB7DQoJCS8vIFByb2Nlc3MgY2F0 ZWdvcmllcy9JRHMgYW5kIG1ha2UgdXAgdGhlIGNydXggb2YgdGhlIHdoZXJlIGNsYXVzZS4N CgkJLy8gQ2xhdXNlIG9yZGVyID0gSURzIE9SIGNhdHMgQU5EICFjYXRzIEFORCAhSURzDQoJ CSRjbGF1c2VbXSA9ICcxPTEnOw0KCQkkY2xhdXNlT1IgPSBhcnJheSgpOw0KDQoJCS8vIFN1 cnJvdW5kIGVhY2ggZW50cnkgaW4gdGhlIElEIGxpc3Qgd2l0aCBxdW90ZXMgYW5kIG1ha2Ug YW4gU1FMICJpbiIgbGlzdA0KCQkkc3ViaW5mbyA9ICgkc3VibGV2ZWwpID8gImltYWdlOiIu JHN1YmxldmVsIDogJyc7DQoJCWxpc3QoJGlkaW5jLCAkaWRleGMpID0gc21kX2RvTGlzdCgk aWQsIHRydWUsICcnLCB0cnVlLCAkZGVsaW0pOw0KCQlsaXN0KCRjYXRpbmMsICRjYXRleGMp ID0gc21kX2RvTGlzdCgkY2F0ZWdvcnksIGZhbHNlLCAkc3ViaW5mbywgdHJ1ZSwgJGRlbGlt KTsNCgkJaWYgKCRpZGluYykgew0KCQkJJGNsYXVzZU9SW10gPSAnaWQgSU4gKCcuaW1wbG9k ZSgiLCIsICRpZGluYykuJyknOw0KCQl9DQoJCWlmICgkY2F0aW5jKSB7DQoJCQkkY2xhdXNl T1JbXSA9ICdjYXRlZ29yeSBJTiAoJy5pbXBsb2RlKCIsIiwgJGNhdGluYykuJyknOw0KCQl9 DQoJCWlmICghZW1wdHkoJGNsYXVzZU9SKSkgew0KCQkJJGNsYXVzZVtdID0gaW1wbG9kZSgi IE9SICIsICRjbGF1c2VPUik7DQoJCX0NCg0KCQkkY2xhdXNlID0gaW1wbG9kZSgiIEFORCAi LCAkY2xhdXNlKTsNCgkJJGNsYXVzZSAuPSAoJGNhdGV4YykgPyAnIEFORCBjYXRlZ29yeSBO T1QgSU4gKCcuaW1wbG9kZSgiLCIsICRjYXRleGMpLicpJyA6ICcnOw0KCQkkY2xhdXNlIC49 ICgkaWRleGMpID8gJyBBTkQgaWQgTk9UIElOICgnLmltcGxvZGUoIiwiLCAkaWRleGMpLicp JyA6ICcnOw0KDQoJCS8vIElmIGEgY2F0ZWdvcnkvaWQgb3B0aW9uIHdhcyBjaG9zZW4gYW5k IHRoZXkgbWF0Y2hlZCBub3RoaW5nLCB1c2UgYSBib2d1cyBjYXRlZ29yeSB0aGF0IHNob3Vs ZCBub3QgZXhpc3QuDQoJCS8vIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBwbHVnaW4gZG9lcyB0 aGUgZXhwZWN0ZWQgdGhpbmcgb2YgbWF0Y2hpbmcgbm90aGluZyBpbiB0aGUgZXZlbnQgaXQg ZmluZHMgbm90aGluZy4NCgkJaWYgKCRjbGF1c2UgPT0gIjE9MSIgJiYgJGF0dGVtcHRNYXRj aCkgew0KCSAgCQkkY2xhdXNlID0gJ2NhdGVnb3J5ID0gInNtZF8nIC5tdF9yYW5kKCkuICci JzsNCgkJfQ0KDQoJCWlmICgkZGVidWcgPiAxKSB7DQoJCQllY2hvICIrKyBJTkNMVURFRC9F WENMVURFRCBJRHMgQU5EIENBVHMgKysiOw0KCQkJZG1wKCRpZGluYyk7DQoJCQlkbXAoJGlk ZXhjKTsNCgkJCWRtcCgkY2F0aW5jKTsNCgkJCWRtcCgkY2F0ZXhjKTsNCgkJfQ0KDQoJCS8v IENvbnZlcnQgdGhlIHNvcnQgaW50byBhIHZhbGlkIHNvcnRpbmcgaGllcmFyY2h5Lg0KCQkv LyBOb3RlIHRoYXQgcmFuZG9tIGlzIGEgc3BlY2lhbCBjYXNlIGFuZCB0aGUgZm9sbG93aW5n IHJ1bGVzIGFwcGx5Og0KCQkvLyAgMSkgQW55dGhpbmcgYXBwZWFyaW5nIGJlZm9yZSByYW5k b20gaXMgcGFzc2VkIHRvIHRoZSBkYXRhYmFzZSBxdWVyeSBmb3Igb3JkZXJpbmcNCgkJLy8g IDIpIEFzIHNvb24gYXMgcmFuZG9tIGlzIGVuY291bnRlcmVkLCB0aGUgcmVzdCBvZiB0aGUg c29ydCBzdHJpbmcgaXMgaWdub3JlZC4NCgkJLy8gICAgIFRoZSByZXN1bHRzZXQgd2lsbCBi ZSBzb3J0ZWQgcmFuZG9tbHkgaW5zdGVhZA0KCQkvLyAgMykgSWYgcmFuZG9tIGFwcGVhcnMg Zmlyc3QgaW4gdGhlIGxpc3QsIHRoZSBkYXRhIGlzIHJldHJpZXZlZCByYW5kb21seSB0aGVu IHRoZQ0KCQkvLyAgICAgcmVtYWluaW5nIG9wdGlvbnMgc29ydCB0aGUgcmVzdWx0c2V0DQoJ CSRjbGF1c2VTb3J0ID0gYXJyYXkoKTsNCgkJJHBvc3RPcmRlciA9IGFycmF5KCk7DQoJCSRy dWxlID0gInNxbCI7DQoJCSRwb3N0UHJlZml4ID0gIlNPUlRfIjsNCgkJJGZpeGVkT3JkZXIg PSAkcmFuZHNvcnQgPSBmYWxzZTsNCgkJJHNvcnQgPSBkb19saXN0KCRzb3J0LCAkZGVsaW0p Ow0KCQlmb3IgKCRpZHggPSAwOyAkaWR4IDwgY291bnQoJHNvcnQpOyAkaWR4KyspIHsNCgkJ CSRzb3J0X2RpciA9IGV4cGxvZGUoJyAnLCAkc29ydFskaWR4XSk7DQoJCQkkZGlyZWN0aW9u ID0gJGNvbFJlZiA9ICcnOw0KCQkJaWYgKGNvdW50KCRzb3J0X2RpcikgPD0gMSkgew0KCQkJ CSRzb3J0X2RpclsxXSA9ICJhc2MiOw0KCQkJfQ0KCQkJaWYgKCRydWxlID09ICJzcWwiKSB7 DQoJCQkJJGRpcmVjdGlvbiA9ICgkc29ydF9kaXJbMV0gPT0gImRlc2MiKSA/ICcgZGVzYycg OiAnIGFzYyc7DQoJCQl9IGVsc2Ugew0KCQkJCSRkaXJlY3Rpb24gPSAoJHNvcnRfZGlyWzFd ID09ICJkZXNjIikgPyAkcG9zdFByZWZpeC4nREVTQycgOiAkcG9zdFByZWZpeC4nQVNDJzsN CgkJCX0NCg0KCQkJc3dpdGNoICgkc29ydF9kaXJbMF0pIHsNCgkJCQljYXNlICdyYW5kb20n Og0KCQkJCQkkcnVsZSA9ICJwb3N0IjsNCgkJCQkJaWYgKCRpZHggPT0gMCkgew0KCQkJCQkJ JGNsYXVzZVNvcnRbXSA9ICdyYW5kKCknOw0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJJHJhbmRz b3J0ID0gdHJ1ZTsNCgkJCQkJfQ0KCQkJCQlicmVhazsNCgkJCQljYXNlICdmaXhlZCc6DQoJ CQkJCS8vICdmaXhlZCcgb25seSB3b3JrcyBvbiBpZHMNCgkJCQkJJGZpeGVkT3JkZXIgPSAo JGlkID09ICcnKSA/IGZhbHNlIDogdHJ1ZTsNCgkJCQkJYnJlYWs7DQoJCQkJZGVmYXVsdDoN CgkJCQkJJGNvbFJlZiA9IGFycmF5X3NlYXJjaCgkc29ydF9kaXJbMF0sICRmaWVsZE1hcCk7 DQoJCQkJCWJyZWFrOw0KCQkJfQ0KCQkJaWYgKCRydWxlID09ICJzcWwiKSB7DQoJCQkJaWYg KCRjb2xSZWYgIT0gJycpIHsNCgkJCQkJJGNsYXVzZVNvcnRbXSA9ICRjb2xSZWYuJGRpcmVj dGlvbjsNCgkJCQl9DQoJCQl9IGVsc2Ugew0KCQkJCWlmICghJHJhbmRzb3J0KSB7DQoJCQkJ CWlmICgkY29sUmVmICE9ICcnKSB7DQoJCQkJCQkkcG9zdE9yZGVyW10gPSBhcnJheSgiY29s IiA9PiAkY29sUmVmLCAic29ydCIgPT4gJGRpcmVjdGlvbik7DQoJCQkJCX0NCgkJCQl9DQoJ CQl9DQoJCX0NCg0KCQlpZiAoY291bnQoJGNsYXVzZVNvcnQpID4gMCkgew0KCQkJJGNsYXVz ZSAuPSAnIE9SREVSIEJZICcgLiBpbXBsb2RlKCIsIiwkY2xhdXNlU29ydCk7DQoJCX0NCgkJ aWYgKCRkZWJ1ZyA+IDApIHsNCgkJCWVjaG8gIisrIFdIRVJFIENMQVVTRSArKyI7DQoJCQlk bXAoJGNsYXVzZSk7DQoJCX0NCgkJLy8gVGhlIGRhdGFiYXNlIGZpZWxkcyByZXF1aXJlZA0K CQkkZmllbGRzID0gaW1wbG9kZSgiLCIsIGFycmF5X2tleXMoJGZpZWxkTWFwKSk7DQoNCgkJ Ly8gVGltZSB0byBncmFiIHRoZSBtYXRjaGluZyByb3dzIGZyb20gdGhlIGRhdGFiYXNlDQoJ CSRyc2FsbCA9IHNhZmVfcm93cygkZmllbGRzLCAndHhwX2ltYWdlJywgJGNsYXVzZSAuJyBM SU1JVCAnLiRvZmZzZXQuJywnLiRtYXhsaW1pdCk7DQoJCWxpc3QoJG51bVBhZ2VzLCAkdGh1 bVBhZ2UsICRvZmZzZXQpID0gc21kX2dldFBhZ2UoJHJzYWxsLCAkZ2FsbElELCAkbGltaXQs ICRvZmZzZXQsICRwYWdpbmcpOw0KCQkkcnMgPSBzYWZlX3Jvd3MoJGZpZWxkcywgJ3R4cF9p bWFnZScsICRjbGF1c2UgLicgTElNSVQgJyAuJG9mZnNldC4gJywnLiAoKCRsaW1pdD09MCkg PyAkbWF4bGltaXQgOiAkbGltaXQpKTsNCgl9DQoNCgkvLyBJcyBwb3N0LW9yZGVyaW5nIHJl cXVpcmVkPyBEbyBpdA0KCWlmICgkcmFuZHNvcnQpIHsNCgkJc2h1ZmZsZSgkcnMpOw0KCX0g ZWxzZSBpZiAoY291bnQoJHBvc3RPcmRlcikgPiAwKSB7DQoJCS8vIFRyYW5zbGF0ZSB0aGUg cm93cyBpbnRvIGNvbHVtbnMgdGhhdCBjYW4gYmUgc29ydGVkDQoJCWZvcmVhY2goJHJzIGFz ICRrZXkgPT4gJHJvdykgew0KCQkJJGNvbF9pZFska2V5XSA9ICRyb3dbJ2lkJ107DQoJCQkk Y29sX25hbWVbJGtleV0gPSAkcm93WyduYW1lJ107DQoJCQkkY29sX2NhcHRpb25bJGtleV0g PSAkcm93WydjYXB0aW9uJ107DQoJCQkkY29sX2FsdFska2V5XSA9ICRyb3dbJ2FsdCddOw0K CQkJJGNvbF9jYXRlZ29yeVska2V5XSA9ICRyb3dbJ2NhdGVnb3J5J107DQoJCQkkY29sX2Rh dGVbJGtleV0gPSAkcm93WydkYXRlJ107DQoJCQkkY29sX2V4dFska2V5XSA9ICRyb3dbJ2V4 dCddOw0KCQkJJGNvbF9hdXRob3JbJGtleV0gPSAkcm93WydhdXRob3InXTsNCgkJCSRjb2xf d1ska2V5XSA9ICRyb3dbJ3cnXTsNCgkJCSRjb2xfaFska2V5XSA9ICRyb3dbJ2gnXTsNCgkJ fQ0KCQkvLyBNYWtlIHVwIGFuIGFycmF5X211bHRpc29ydCBhcmcgbGlzdCBhbmQgZXhlY3V0 ZSBpdA0KCQlmb3IgKCRpZHggPSAwOyAkaWR4IDwgY291bnQoJHBvc3RPcmRlcik7ICRpZHgr Kykgew0KCQkJJHNvcnRhcmdzW10gPSAnJGNvbF8nLiRwb3N0T3JkZXJbJGlkeF1bJ2NvbCdd Ow0KCQkJJHNvcnRhcmdzW10gPSAkcG9zdE9yZGVyWyRpZHhdWydzb3J0J107DQoJCX0NCgkJ JHNvcnRpdCA9ICdhcnJheV9tdWx0aXNvcnQoJy5pbXBsb2RlKCIsICIsJHNvcnRhcmdzKS4n LCAkcnMpOyc7DQoJCWV2YWwoJHNvcnRpdCk7DQoJfQ0KDQoJLy8gSXMgZml4ZWQtb3JkZXIg b3V0cHV0IGRlc2lyZWQ/IElmIHNvLCByZS1vcmRlciB0aGUgJHJzDQoJaWYgKCRmaXhlZE9y ZGVyKSB7DQoJCSRvcmRlcmVkUlMgPSBBcnJheSgpOw0KCQkkaWdub3JlTGlzdCA9IEFycmF5 KCk7DQoJCSRyZW1haW5pbmdSUyA9IEFycmF5KCk7DQoJCS8vIFN1Y2sgb3V0IHRoZSBmaXhl ZCBpdGVtcyBmaXJzdA0KCQlmb3IgKCRpZHggPSAwOyAkaWR4IDwgY291bnQoJGlkaW5jKTsg JGlkeCsrKSB7DQoJCQlmb3JlYWNoKCRycyBhcyAkcm93KSB7DQoJCQkJaWYgKCInIi4kcm93 WydpZCddLiInIiA9PSAkaWRpbmNbJGlkeF0pIHsNCgkJCQkJJG9yZGVyZWRSU1tdID0gJHJv dzsNCgkJCQkJJGlnbm9yZUxpc3RbXSA9ICRyb3dbJ2lkJ107DQoJCQkJfQ0KCQkJfQ0KCQl9 DQoJCS8vIFRhY2sgb24gdGhlIHJlbWFpbmluZyByb3dzDQoJCWZvcmVhY2goJHJzIGFzICRy b3cpIHsNCgkJCWlmICghaW5fYXJyYXkoJHJvd1snaWQnXSwgJGlnbm9yZUxpc3QpKSB7DQoJ CQkJJHJlbWFpbmluZ1JTW10gPSAkcm93Ow0KCQkJfQ0KCQl9DQoJCSRycyA9IGFycmF5X21l cmdlKCRvcmRlcmVkUlMsICRyZW1haW5pbmdSUyk7DQoJfQ0KDQoJLy8gSGFuZGxlIHRodW1i c2l6ZSAtIG9mIGxpbWl0ZWQgdXNlIG5vdyBidXQgc3RpbGwgYXZhaWxhYmxlDQoJJHRodW1i V2lkdGggPSAkdGh1bWJIZWlnaHQgPSAnJzsNCgkkdGh1bWJXVW5pdHMgPSAkdGh1bWJIVW5p dHMgPSAnJzsNCglpZiAoJHRodW1ic2l6ZSkgew0KCQkkdGh1bWJTaXplcyA9IHNtZF9zcGxp dCgkdGh1bWJzaXplLCBmYWxzZSwgIixccyIsIDApOw0KCQlpZiAoY291bnQoJHRodW1iU2l6 ZXMpID09IDEpIHsNCgkJCSR0aHVtYldpZHRoID0gJHRodW1iSGVpZ2h0ID0gZXJlZ19yZXBs YWNlKCJbXjAtOV0iLCAnJywgJHRodW1iU2l6ZXNbMF0pOw0KCQkJJHVuaXRzID0gZXJlZ19y ZXBsYWNlKCJbMC05XSIsICcnLCAkdGh1bWJTaXplc1swXSk7DQoJCQkkdGh1bWJXVW5pdHMg PSAkdGh1bWJIVW5pdHMgPSAoJHVuaXRzID09ICcnKSA/ICR0aHVtYldVbml0cyA6ICR1bml0 czsNCgkJfSBlbHNlIHsNCgkJCSR0aHVtYldpZHRoID0gZXJlZ19yZXBsYWNlKCJbXjAtOV0i LCAnJywgJHRodW1iU2l6ZXNbMF0pOw0KCQkJJHRodW1iSGVpZ2h0ID0gZXJlZ19yZXBsYWNl KCJbXjAtOV0iLCAnJywgJHRodW1iU2l6ZXNbMV0pOw0KCQkJJHVuaXRzID0gZXJlZ19yZXBs YWNlKCJbMC05XSIsICcnLCAkdGh1bWJTaXplc1swXSk7DQoJCQkkdGh1bWJXVW5pdHMgPSAo JHVuaXRzID09ICcnICYmICR0aHVtYldpZHRoICE9ICcnKSA/ICR0aHVtYldVbml0cyA6ICR1 bml0czsNCgkJCSR1bml0cyA9IGVyZWdfcmVwbGFjZSgiWzAtOV0iLCAnJywgJHRodW1iU2l6 ZXNbMV0pOw0KCQkJJHRodW1iSFVuaXRzID0gKCR1bml0cyA9PSAnJyAmJiAkdGh1bWJIZWln aHQgIT0gJycpID8gJHRodW1iSFVuaXRzIDogJHVuaXRzOw0KCQl9DQoJfQ0KDQoJLy8gQ29s bGF0aW9uIGRlZmVycyBwYXJzaW5nIHRoZSBmb3JtIGZvciBlYWNoIHJldHVybmVkIGl0ZW0u DQoJLy8gSW5zdGVhZCBpdCBvdXRwdXRzIHRoZSBkYXRhIGFzIGEgbGlzdCBhdCB0aGUgZW5k IChpdGVtcyBtYXkgYmUgaW5kaXZpZHVhbGx5IHF1b3RlZCBvciBleHRyYWN0ZWQgaWYgcmVx dWlyZWQpDQoJLy9UT0RPIDogQWRkIEFMV0FZUyBzd2l0Y2ggYXMgYSBzaG9ydGN1dCB0byBz cGVjaWZ5IHRoYXQgYWxsIG1hdGNoaW5nIGl0ZW1zIChyZWdhcmRsZXNzIG9mICMxLCAjMiwg IzMgZXRjKSBhcmUgdG8gYmUgcXVvdGVkDQoJaWYgKCRjb2xsYXRlKSB7DQoJCSRkYmxRdW90 ZSA9ICRzZ2xRdW90ZSA9IGFycmF5KCdTTUROT05FJyk7DQoJCSRjb2xsYXRlT3B0cyA9IGRv X2xpc3QoJGNvbGxhdGUsICRkZWxpbSk7DQoJCWZvcmVhY2ggKCRjb2xsYXRlT3B0cyBhcyAk b3B0aW9uKSB7DQoJCQkkaW5kZXhlcyA9IGRvX2xpc3QoJG9wdGlvbiwgJHBhcmFtZGVsaW0p Ow0KCQkJJGNvbFR5cGUgPSBhcnJheV9zaGlmdCgkaW5kZXhlcyk7DQoJCQkvLyBTdXBwbHlp bmcgJ3F1b3RlJyBvbiBpdHMgb3duIHdpbGwgZW1wdHkgdGhlIHJlbGV2YW50IGFycmF5LCBp bXBseWluZyAiQUxMIiBmaWVsZHMgYXJlIHRvIGJlIHF1b3RlZA0KCQkJc3dpdGNoICgkY29s VHlwZSkgew0KCQkJCWNhc2UgInNnbHF1b3RlIjoNCgkJCQkJJHNnbFF1b3RlID0gJGluZGV4 ZXM7DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgImRibHF1b3RlIjoNCgkJCQljYXNlICJxdW90 ZSI6DQoJCQkJCSRkYmxRdW90ZSA9ICRpbmRleGVzOw0KCQkJCQlicmVhazsNCgkJCX0NCgkJ fQ0KCX0NCg0KCS8vIENvbWJvcyBhcmUgdXNlci1kZWZpbmVkIGNvbWJpbmF0aW9ucyBvZiBy ZXBsYWNlbWVudCBtb2RpZmllcnMgKGUuZy4gaWRleHQ6IHtpZH17ZXh0fSwgLi4uDQoJJGNv bWJvcyA9IGFycmF5KCk7DQoJaWYgKCRjb21ibykgew0KCQkkY29tYm8gPSBkb19saXN0KCRj b21ibywgJGRlbGltKTsNCgkJZm9yZWFjaCAoJGNvbWJvIGFzICRuZXdEZWYpIHsNCgkJCWxp c3QoJGRlZlBhcnRzLCAkdW53YW50ZWQpID0gc21kX2RvTGlzdCgkbmV3RGVmLCBmYWxzZSwg JycsIGZhbHNlLCAkcGFyYW1kZWxpbSk7DQoJCQkkZGVmTmFtZSA9ICJ7Ii5hcnJheV9zaGlm dCgkZGVmUGFydHMpLiJ9IjsNCgkJCSRjb21ib3NbJGRlZk5hbWVdID0gJGRlZlBhcnRzWzBd Ow0KCQl9DQoJfQ0KCWlmICgkZGVidWcgPiAxKSB7DQoJCWVjaG8gIisrIENPTUJPcyArKyI7 DQoJCWRtcCgkY29tYm9zKTsNCgl9DQoJLy8gQ29uc3RydWN0IHRoZSBvdXRwdXQNCgkkb3V0 ID0gYXJyYXkoKTsNCgkkY29sbGF0aW9ucyA9IGFycmF5KCk7DQoJaWYgKCRkZWJ1ZyA+IDIp IHsNCgkJZWNobyAiKysgUkVDT1JEIFNFVCArKyI7DQoJCWRtcCgkcnMpOw0KCX0NCglpZiAo JGRlYnVnID4gMykgew0KCQllY2hvICIrKyBBVkFJTEFCTEUgJz8nIFZBUlMgKysiOw0KCQlk bXAoJHByZXRleHQpOw0KCQlkbXAoJHRoaXNhcnRpY2xlKTsNCgl9DQoNCglpZigkcnMpIHsN CgkJJGlkeCA9IDA7DQoJCSRjdHIgPSAxOw0KCQkkbnVtSW1hZ2VzID0gY291bnQoJHJzKTsN CgkJZm9yZWFjaCgkcnMgYXMgJHJvdykgew0KCQkJaWYgKCRkaXJlY3RvcnkpIHsNCgkJCQkk dXJsUGF0aCA9ICRyb3dbJ3BhdGgnXS5EUzsNCgkJCX0gZWxzZSB7DQoJCQkJJHVybFBhdGgg PSBodS4kaW1nX2Rpci5EUzsNCgkJCX0NCgkJCSR0aGVUaHVtYiA9ICR1cmxQYXRoIC4gJHJv d1snaWQnXSAuICd0JyAuICRyb3dbJ2V4dCddOw0KCQkJJGZ1bGxTaXplID0gJHVybFBhdGgg LiAkcm93WydpZCddIC4gKCgkdGh1bWIpID8gInQiIDogJycpIC4kcm93WydleHQnXTsNCg0K CQkJLy8gSXMgYSB0aHVtYi90ZXh0IG9iamVjdCByZXF1aXJlZCB0aGlzIHRpbWU/DQoJCQkk b2JqZWN0ID0gJyc7DQoJCQlpZiAoJGlkeCA+PSAkdGh1bWJvZmZzZXQgJiYgJGlkeCA8ICR0 aHVtYm9mZnNldCskdGh1bWJsaW1pdCkgew0KCQkJCXN3aXRjaCAoJHR5cGUpIHsNCgkJCQkJ Y2FzZSBpbWFnZToNCgkJCQkJCSRvYmplY3QgPSAoJHRleHQpID8gJHRleHQgOiAnPGltZyBz cmM9IicuJHRoZVRodW1iLiciJyAuKCgkcm93WydhbHQnXSkgPyAnIGFsdD0iJy4kcm93Wydh bHQnXS4nIicgOiAnJykgLigoJHRodW1iV2lkdGgpID8gJyB3aWR0aD0iJy4kdGh1bWJXaWR0 aC4kdGh1bWJXVW5pdHMuJyInIDogJycpIC4oKCR0aHVtYkhlaWdodCkgPyAnIGhlaWdodD0i Jy4kdGh1bWJIZWlnaHQuJHRodW1iSFVuaXRzLiciJyA6ICcnKSAuJyAvPic7DQoJCQkJCQli cmVhazsNCgkJCQl9DQoJCQl9DQoNCgkJCS8vIENvbnN0cnVjdCB0aGUgcmVwbGFjZW1lbnQg YXJyYXkNCgkJCSRyZXBsYWNlbWVudHMgPSBhcnJheSgNCgkJCQkJJ3tpZH0nID0+ICRyb3db J2lkJ10sDQoJCQkJCSd7bmFtZX0nID0+ICRyb3dbJ25hbWUnXSwNCgkJCQkJJ3tleHR9JyA9 PiAkcm93WydleHQnXSwNCgkJCQkJJ3tjYXRlZ29yeX0nID0+ICRyb3dbJ2NhdGVnb3J5J10s DQoJCQkJCSd7YXV0aG9yfScgPT4gJHJvd1snYXV0aG9yJ10sDQoJCQkJCSd7aGFzdGh1bWJ9 JyA9PiAkcm93Wyd0aHVtYm5haWwnXSwNCgkJCQkJJ3t1cmx9JyA9PiAkZnVsbFNpemUsDQoJ CQkJCSd7dGh1bWJ1cmx9JyA9PiAkdGhlVGh1bWIsDQoJCQkJCSd7aW1hZ2VwYXRofScgPT4g JHVybFBhdGgsDQoJCQkJCSd7aW1hZ2VkZWZ9JyA9PiBiYXNlbmFtZSgkZnVsbFNpemUpLA0K CQkJCQkne3RodW1iZGVmfScgPT4gYmFzZW5hbWUoJHRoZVRodW1iKSwNCgkJCQkJJ3thbHR9 JyA9PiAkcm93WydhbHQnXSwNCgkJCQkJJ3t0aXRsZX0nID0+ICRyb3dbJ2NhcHRpb24nXSwN CgkJCQkJJ3t0aHVtYndpZHRofScgPT4gJHRodW1iV2lkdGgsDQoJCQkJCSd7dGh1bWJoZWln aHR9JyA9PiAkdGh1bWJIZWlnaHQsDQoJCQkJCSd7dGh1bWJ3dW5pdHN9JyA9PiAkdGh1bWJX VW5pdHMsDQoJCQkJCSd7dGh1bWJodW5pdHN9JyA9PiAkdGh1bWJIVW5pdHMsDQoJCQkJCSd7 d2lkdGh9JyA9PiAkcm93Wyd3J10sDQoJCQkJCSd7aGVpZ2h0fScgPT4gJHJvd1snaCddLA0K CQkJCQkne2RhdGV9JyA9PiAkcm93WydkYXRlJ10sDQoJCQkJCSd7b2JqZWN0fScgPT4gJG9i amVjdCwNCgkJCQkJJ3tnYWxsZXJ5aWR9JyA9PiAkZ2FsbElELA0KCQkJCQkne2luZGV4fScg PT4gJGlkeCwNCgkJCQkJJ3tjb3VudGVyfScgPT4gJGN0ciwNCgkJCQkJJ3t0b3RhbGltYWdl c30nID0+ICRudW1JbWFnZXMsDQoJCQkJKTsNCg0KCQkJLy8gQXBwZW5kIGFueSBjb21ib3MN CgkJCWZvcmVhY2ggKCRjb21ib3MgYXMgJGRlZk5hbWUgPT4gJG5ld0RlZikgew0KCQkJCWlm ICghYXJyYXlfa2V5X2V4aXN0cygkZGVmTmFtZSwgJHJlcGxhY2VtZW50cykpIHsNCgkJCQkJ JHJlcGxhY2VtZW50c1skZGVmTmFtZV0gPSBzdHJ0cigkbmV3RGVmLCAkcmVwbGFjZW1lbnRz KTsNCgkJCQl9DQoJCQl9DQoNCgkJCS8vIFNvbG9zIGFyZSBpdGVtcyBpbiB0aGUgb3V0cHV0 IGZvcm0gdGhhdCByZXF1aXJlIGRldGFpbHMgZnJvbSBhIHNwZWNpZmljIHJvdy4gVXNlZnVs IG9ubHkgaW4gY29sbGF0aW9uDQoJCQkvLyBtb2RlLCB0aGV5IGFyZSBhZGRlZCB0byB0aGUg cmVwbGFjZW1lbnRzIGFycmF5IG9uIGFuIGFzLW5lZWRlZCBiYXNpcyB0byBzYXZlIHNwYWNl L3RpbWUNCgkJCSRzb2xvUkUgPSAnL1x7KFthLXowLTldKykjJy4kY3RyLidcfS8nOw0KCQkJ JG51bVNvbG9zID0gcHJlZ19tYXRjaF9hbGwoJHNvbG9SRSwgJHRoaW5nLCAkc29sb3MpOw0K CQkJZm9yICgkc29sb0N0ciA9IDA7ICRzb2xvQ3RyIDwgJG51bVNvbG9zOyAkc29sb0N0cisr KSB7DQoJCQkJJGZpZWxkbmFtZSA9ICd7Jy4kc29sb3NbMV1bJHNvbG9DdHJdLicjJy4kY3Ry Lid9JzsNCgkJCQkkZ3JhYmZpZWxkID0gJ3snLiRzb2xvc1sxXVskc29sb0N0cl0uJ30nOw0K CQkJCSRyZXBsYWNlbWVudHNbJGZpZWxkbmFtZV0gPSAkcmVwbGFjZW1lbnRzWyRncmFiZmll bGRdOw0KCQkJfQ0KDQoJCQlpZiAoJGRlYnVnID4gMCkgew0KCQkJCWVjaG8gIisrIFJFUExB Q0VNRU5UUyA6IElNQUdFICIuJGN0ci4iICsrIjsNCgkJCQlkbXAoJHJlcGxhY2VtZW50cyk7 DQoJCQl9DQoNCgkJCS8vIEluIGNvbGxhdGUgbW9kZSB0aGUgZm9ybSBpcyBvbmx5IHBhcnNl ZCBhdCB0aGUgZW5kOiBidWlsZCBhIGNvbGxvc2FsIG11bHRpLWRpbWVuc2lvbiBhcnJheSBv ZiBhbGwgaXRlbXMgaGVyZQ0KCQkJaWYgKCRjb2xsYXRlKSB7DQoJCQkJZm9yZWFjaCAoJHJl cGxhY2VtZW50cyBhcyAkZGVmTmFtZSA9PiAkZGVmVmFsKSB7DQoJCQkJCSRjb2xsYXRpb25z WyRkZWZOYW1lXVtdID0gJGRlZlZhbDsNCgkJCQl9DQoJCQl9IGVsc2Ugew0KCQkJCSRvdXRb XSA9IHBhcnNlKHN0cnRyKCR0aGluZywgJHJlcGxhY2VtZW50cykpOw0KCQkJfQ0KDQoJCQkk aWR4Kys7DQoJCQkkY3RyKys7DQoJCX0NCgkJaWYgKCRjb2xsYXRlKSB7DQoJCQlmb3JlYWNo ICgkY29sbGF0aW9ucyBhcyAkaXRlbSA9PiAkbGlzdCkgew0KCQkJCS8vIFF1b3RlIHRoZSBs aXN0cyBpZiByZXF1aXJlZA0KCQkJCSRsaXN0ID0gKGVtcHR5KCRkYmxRdW90ZSkgfHwgaW5f YXJyYXkoJGl0ZW0sICRkYmxRdW90ZSkpID8gZG9BcnJheSgkbGlzdCwgJ3NtZF9kb0RibFF1 b3RlJykgOiAkbGlzdDsNCgkJCQkkbGlzdCA9IChlbXB0eSgkc2dsUXVvdGUpIHx8IGluX2Fy cmF5KCRpdGVtLCAkc2dsUXVvdGUpKSA/IGRvQXJyYXkoJGxpc3QsICdkb1F1b3RlJykgOiAk bGlzdDsNCgkJCQkkY29sbGF0aW9uc1skaXRlbV0gPSBpbXBsb2RlKCRkZWxpbSwgJGxpc3Qp Ow0KCQkJfQ0KCQkJaWYgKCRkZWJ1ZyA+IDApIHsNCgkJCQllY2hvICIrKyBDT0xMQVRJT05T ICsrIjsNCgkJCQlkbXAoJGNvbGxhdGlvbnMpOw0KCQkJfQ0KCQkJJG91dFtdID0gcGFyc2Uo c3RydHIoJHRoaW5nLCAkY29sbGF0aW9ucykpOw0KCQl9DQoNCgkJLy8gQWRkIHRoZSBwYWdp bmcgZmVhdHVyZXMgaWYgcmVxdWlyZWQNCgkJaWYgKCgkbGltaXQgPiAwKSAmJiAkcGFnaW5n KSB7DQoJCQkkbmF2b3V0ID0gYXJyYXkoKTsNCgkJCSRuZXh0ID0gKCRudW1QYWdlcyA+IDEg JiYgJHRodW1QYWdlICE9ICRudW1QYWdlcyk7DQoJCQkkcHJldiA9ICgkbnVtUGFnZXMgPiAx ICYmICR0aHVtUGFnZSA+IDEpOw0KDQoJCQkvLyBSZXBsYWNlIGFueSBwYWdpbmcgaW5mbyBp biB0aGUgcXVlcnkgc3RyaW5nDQoJCQkkcHJldlBhZ2UgPSBzbWRfYWRkUVNWYXIoJHByZXRl eHRbJ3JlcXVlc3RfdXJpJ10sICRnYWxsSUQsICR0aHVtUGFnZS0xKTsNCgkJCSRuZXh0UGFn ZSA9IHNtZF9hZGRRU1ZhcigkcHJldGV4dFsncmVxdWVzdF91cmknXSwgJGdhbGxJRCwgJHRo dW1QYWdlKzEpOw0KCQkJJHRoaXNQYWdlID0gc21kX2FkZFFTVmFyKCRwcmV0ZXh0WydyZXF1 ZXN0X3VyaSddLCAkZ2FsbElELCAkdGh1bVBhZ2UpOw0KCQkJJGZpcnN0UGFnZSA9IHNtZF9h ZGRRU1ZhcigkcHJldGV4dFsncmVxdWVzdF91cmknXSwgJGdhbGxJRCwgMSk7DQoJCQkkbGFz dFBhZ2UgPSBzbWRfYWRkUVNWYXIoJHByZXRleHRbJ3JlcXVlc3RfdXJpJ10sICRnYWxsSUQs ICRudW1QYWdlcyk7DQoNCgkJCS8vIExhYmVscyBjYW4gYmUgc3BlY2lmaWVkIGluIHRoZSBy ZXBsYWNlbWVudCB0YWcgYWZ0ZXIgYSBwYXJhbWRlbGltLg0KCQkJLy8gJ2VhcmxpZXInIGFu ZCAnbGF0ZXInIGRvbid0IGhhdmUgbGFiZWxzLiBBbnl0aGluZyBzcGVjaWZpZWQgYWZ0ZXIg cGFyYW1kZWxpbSBpcyB0aGUgbWF4IG51bWJlciBvZiBwYWdlcyB0byBzaG93OyBlbXB0eSA9 IGFsbCBwYWdlcw0KCQkJJGxhYmVsID0gYXJyYXkoDQoJCQkJCSd7bmF2Zmlyc3R9JyA9PiAn Rmlyc3QnLA0KCQkJCQkne25hdnByZXZ9JyA9PiAnJmxhcXVvOycsDQoJCQkJCSd7bmF2ZWFy bGllcn0nID0+ICcnLA0KCQkJCQkne25hdnRoaXN9JyA9PiAkdGh1bVBhZ2UsDQoJCQkJCSd7 bmF2dGhpc3VybH0nID0+ICR0aHVtUGFnZSwNCgkJCQkJJ3tuYXZsYXRlcn0nID0+ICcnLA0K CQkJCQkne25hdm5leHR9JyA9PiAnJnJhcXVvOycsDQoJCQkJCSd7bmF2bGFzdH0nID0+ICdM YXN0JywNCgkJCQkpOw0KDQoJCQkkbGFiZWxSRSA9ICcvXHsobmF2W2Etel0rKScuJHBhcmFt ZGVsaW0uJyguKz8pXH0vJzsNCgkJCSRudW1MYWJlbHMgPSBwcmVnX21hdGNoX2FsbCgkbGFi ZWxSRSwgJHBhZ2Vmb3JtLCAkbGFiZWxzKTsNCg0KCQkJZm9yICgkbGFiZWxDdHIgPSAwOyAk bGFiZWxDdHIgPCAkbnVtTGFiZWxzOyAkbGFiZWxDdHIrKykgew0KCQkJCSRmaWVsZG5hbWUg PSAneycuJGxhYmVsc1sxXVskbGFiZWxDdHJdLid9JzsNCgkJCQkkbGFiZWxbJGZpZWxkbmFt ZV0gPSAkbGFiZWxzWzJdWyRsYWJlbEN0cl07DQoJCQkJJHBhZ2Vmb3JtID0gc3RyX3JlcGxh Y2UoJGxhYmVsc1swXVskbGFiZWxDdHJdLCAneycuJGxhYmVsc1sxXVskbGFiZWxDdHJdLid9 JywgJHBhZ2Vmb3JtKTsNCgkJCX0NCg0KCQkJaWYgKCRkZWJ1ZyA+IDEpIHsNCgkJCQllY2hv ICIrKyBQQUdJTkcgTEFCRUxTICsrIjsNCgkJCQlkbXAoJGxhYmVsKTsNCgkJCX0NCg0KCQkJ Ly8gR2VuZXJhdGUgJ2VhcmxpZXInIGFuZCAnbGF0ZXInIGxpc3RzDQoJCQkkbnVtRWFybGll ciA9IGludHZhbCgkbGFiZWxbJ3tuYXZlYXJsaWVyfSddKTsNCgkJCSRudW1MYXRlciA9IGlu dHZhbCgkbGFiZWxbJ3tuYXZsYXRlcn0nXSk7DQoJCQkkbnVtRWFybGllciA9ICgkbnVtRWFy bGllciAmJiAoJHRodW1QYWdlLSRudW1FYXJsaWVyID4gMSkpID8gJG51bUVhcmxpZXIgOiAk dGh1bVBhZ2UtMTsNCgkJCSRudW1MYXRlciA9ICgkbnVtTGF0ZXIgJiYgKCR0aHVtUGFnZSsk bnVtTGF0ZXIgPCAkbnVtUGFnZXMpKSA/ICRudW1MYXRlciA6ICRudW1QYWdlcy0kdGh1bVBh Z2U7DQoJCQkkbmF2RWFybGllciA9ICRuYXZMYXRlciA9IGFycmF5KCk7DQoJCQlmb3IgKCRp ZHggPSAkdGh1bVBhZ2UtJG51bUVhcmxpZXI7ICRpZHggPCAkdGh1bVBhZ2U7ICRpZHgrKykg ew0KCQkJCSRuYXZFYXJsaWVyW10gPSAnPGEgaHJlZj0iJy5zbWRfYWRkUVNWYXIoJHByZXRl eHRbJ3JlcXVlc3RfdXJpJ10sICRnYWxsSUQsICRpZHgpLiciPicuJGlkeC4nPC9hPic7DQoJ CQl9DQoJCQlmb3IgKCRpZHggPSAkdGh1bVBhZ2UrMTsgJGlkeCA8PSAkdGh1bVBhZ2UrJG51 bUxhdGVyOyAkaWR4KyspIHsNCgkJCQkkbmF2TGF0ZXJbXSA9ICc8YSBocmVmPSInLnNtZF9h ZGRRU1ZhcigkcHJldGV4dFsncmVxdWVzdF91cmknXSwgJGdhbGxJRCwgJGlkeCkuJyI+Jy4k aWR4Lic8L2E+JzsNCgkJCX0NCgkJCSRuYXZFYXJsaWVyID0gZG9XcmFwKCRuYXZFYXJsaWVy LCAnJywgJG5hdmJyZWFrLCAnJyk7DQoJCQkkbmF2TGF0ZXIgPSBkb1dyYXAoJG5hdkxhdGVy LCAnJywgJG5hdmJyZWFrLCAnJyk7DQoNCgkJCS8vIE1ha2UgdXAgdGhlIHJlcGxhY2VtZW50 cyBhcnJheSBmb3IgcGFnZWZvcm0NCgkJCSRyZXBsYWNlbWVudHMgPSBhcnJheSgNCgkJCQkJ J3tuYXZmaXJzdH0nID0+ICgoJHByZXYpID8gZG9UYWcoJzxhIGhyZWY9IicuJGZpcnN0UGFn ZS4nIj4nLiRsYWJlbFsne25hdmZpcnN0fSddLic8L2E+JywgJG5hdmJyZWFrKSA6IGRvVGFn KCRsYWJlbFsne25hdmZpcnN0fSddLCAkbmF2YnJlYWspKSwNCgkJCQkJJ3tuYXZwcmV2fScg PT4gKCgkcHJldikgPyBkb1RhZygnPGEgaHJlZj0iJy4kcHJldlBhZ2UuJyI+Jy4kbGFiZWxb J3tuYXZwcmV2fSddLic8L2E+JywgJG5hdmJyZWFrKSA6IGRvVGFnKCRsYWJlbFsne25hdnBy ZXZ9J10sICRuYXZicmVhaykpLA0KCQkJCQkne25hdmVhcmxpZXJ9JyA9PiAkbmF2RWFybGll ciwNCgkJCQkJJ3tuYXZ0aGlzfScgPT4gZG9UYWcoJGxhYmVsWyd7bmF2dGhpc30nXSwgJG5h dmJyZWFrLCAnY3VycmVudCcpLA0KCQkJCQkne25hdnRoaXN1cmx9JyA9PiBkb1RhZygnPGEg aHJlZj0iJy4kdGhpc1BhZ2UuJyI+Jy4kbGFiZWxbJ3tuYXZ0aGlzdXJsfSddLic8L2E+Jywg JG5hdmJyZWFrLCAnY3VycmVudCcpLA0KCQkJCQkne25hdmxhdGVyfScgPT4gJG5hdkxhdGVy LA0KCQkJCQkne25hdm5leHR9JyA9PiAoKCRuZXh0KSA/IGRvVGFnKCc8YSBocmVmPSInLiRu ZXh0UGFnZS4nIj4nLiRsYWJlbFsne25hdm5leHR9J10uJzwvYT4nLCAkbmF2YnJlYWspIDog ZG9UYWcoJGxhYmVsWyd7bmF2bmV4dH0nXSwgJG5hdmJyZWFrKSksDQoJCQkJCSd7bmF2bGFz dH0nID0+ICgoJG5leHQpID8gZG9UYWcoJzxhIGhyZWY9IicuJGxhc3RQYWdlLiciPicuJGxh YmVsWyd7bmF2bGFzdH0nXS4nPC9hPicsICRuYXZicmVhaykgOiBkb1RhZygkbGFiZWxbJ3tu YXZsYXN0fSddLCAkbmF2YnJlYWspKSwNCgkJCQkJJ3t0b3RhbGltYWdlc30nID0+ICRudW1J bWFnZXMsDQoJCQkJCSd7dG90YWxwYWdlc30nID0+ICRudW1QYWdlcywNCgkJCQkpOw0KDQoJ CQlpZiAoJGRlYnVnID4gMCkgew0KCQkJCWVjaG8gIisrIFBBR0lORyBSRVBMQUNFTUVOVFMg KysiOw0KCQkJCWRtcCgkcmVwbGFjZW1lbnRzKTsNCgkJCX0NCgkJCS8vIFBlcmZvcm0gYWxs IHN1YnN0aXR1dGlvbnMgYW5kIHdyYXAgdGhlIGVudGlyZSBsb3QgaWYgcmVxdWlyZWQNCgkJ CSRuYXZvdXRbXSA9IHBhcnNlKHN0cnRyKCRwYWdlZm9ybSwgJHJlcGxhY2VtZW50cykpOw0K CQkJJG91dFtdID0gZG9XcmFwKCRuYXZvdXQsICRuYXZ3cmFwdGFnLCAnJywgJG5hdmNsYXNz KTsNCgkJfQ0KCQlpZiAoJGRlYnVnID4gMikgew0KCQkJZWNobyAiKysgRklOQUwgT1VUUFVU ICsrIjsNCgkJCWRtcCgkb3V0KTsNCgkJfQ0KCX0NCg0KCXJldHVybiBkb1dyYXAoJG91dCwg JHdyYXB0YWcsICRicmVhaywgJGNsYXNzKTsNCn0NCg0KLy8gUmV0dXJuIGFuIGV4cGFuZGVk IGxpc3Qgb2YgaXRlbXM6DQovLyAxKSBBbnl0aGluZyBjb250YWluaW5nICc/JyBvciAnIScg aXMgY2hlY2tlZCBmb3IgYSBtYXRjaCB3aXRoIGEgVFhQIGZpZWxkDQovLyAyKSBBbnkgcmFu Z2VzIG9mIGl0ZW1zIGFyZSBleHBhbmRlZCAoZS5nLiA0LTcgPSA0LDUsNiw3KQ0KLy8gMykg VFhQIGZpZWxkcyBtYXkgdGhlbXNlbHZlcyBiZSBsaXN0cyBvciByYW5nZXMNCi8vIDQpIEFu eXRoaW5nIHRoYXQgaXMgbm90IGEgVFhQIGZpZWxkIGlzIHVzZWQgdmVyYmF0aW0NCi8vIDUp IFRoZSBpdGVtcyBhcmUgcmV0dXJuZWQgYXMgMiBsaXN0czsgaW5jbHVzaW9uIGFuZCBleGNs dXNpb24NCi8vIEFyZ3M6DQovLyAgbHN0ID0gdGhlIGxpc3QgYXMgYSBkZWxpbWl0ZWQgc3Ry aW5nDQovLyAgcm5nID0gd2hldGhlciB0byBhbGxvdyByYW5nZXMgb3Igbm90IChib29sKQ0K Ly8gIHN1YiA9IHRoZSB0eXBlIG9mIHN1YmNhdGVnb3J5IHRvIHRyYXZlcnNlIChpbWFnZSwg ZmlsZSwgbGluaywgYXJ0aWNsZSwgbm9uZT0iIikgYW5kIGhvdyBtYW55IGxldmVscyB0byBn byBkb3duIChlLmcuIGltYWdlOjIpDQovLyAgcXRlID0gd2hldGhlciB0byBxdW90ZSBlYWNo IGl0ZW0gaW4gdGhlIGFycmF5IG9yIG5vdCAoYm9vbCkNCi8vICBkbG0gPSB0aGUgZGVsaW1p dGVyIChzdHJpbmcpDQppZiAoIWZ1bmN0aW9uX2V4aXN0cygic21kX2RvTGlzdCIpKSB7DQpm dW5jdGlvbiBzbWRfZG9MaXN0KCRsc3QsICRybmc9dHJ1ZSwgJHN1Yj0iIiwgJHF0ZT10cnVl LCAkZGxtPSIsIikgew0KCWdsb2JhbCAkdGhpc2FydGljbGUsICRwcmV0ZXh0Ow0KDQoJJGlu YyA9ICRleGMgPSBhcnJheSgpOw0KCSRsc3QgPSBkb19saXN0KCRsc3QsICRkbG0pOw0KCSRt b2RSRSA9ICcvKFw/fFwhKShbQS1aYS16MC05X1wtIF0rKS8nOw0KCWZvcmVhY2ggKCRsc3Qg YXMgJGl0ZW0pIHsNCgkJJG1vZCA9IDA7IC8vIDAgPSBpbmNsdWRlLCAxID0gZXhjbHVkZQ0K CQkkbnVtTW9kcyA9IHByZWdfbWF0Y2hfYWxsKCRtb2RSRSwgJGl0ZW0sICRtb2RzKTsNCg0K CQlmb3IgKCRtb2RDdHIgPSAwOyAkbW9kQ3RyIDwgJG51bU1vZHM7ICRtb2RDdHIrKykgew0K CQkJLy8gbW9kICJ0eXBlIiBpcyBnb3Zlcm5lZCBieSB0aGUgZmlyc3Qgb25lIGZvdW5kIG9u bHkuIGkuZS4gaWYgImFydGljbGUtP2MhcyIgd2FzIHVzZWQgaW4gb25lIGZpZWxkDQoJCQkv LyBpdCB3b3VsZCBiZSBhbiAiaW5jbHVkZSIgb2YgdGhlIHdvcmQgImFydGljbGUtIiBwbHVz IHRoZSBjYXRlZ29yeSBhbmQgc2VjdGlvbiBjb25jYXRlbmF0ZWQNCgkJCSRtb2QgPSAoJG1v ZHNbMV1bMF0gPT09ICIhIikgPyAxIDogMDsNCgkJCSRtb2RDaGFyID0gJG1vZHNbMV1bJG1v ZEN0cl07DQoJCQkkbW9kSXRlbSA9IHRyaW0oJG1vZHNbMl1bJG1vZEN0cl0pOw0KCQkJJGxv d2l0ZW0gPSBzdHJ0b2xvd2VyKCRtb2RJdGVtKTsNCgkJCWlmIChhcnJheV9rZXlfZXhpc3Rz KCRsb3dpdGVtLCAkcHJldGV4dCkpIHsNCgkJCQkkaXRlbSA9IHN0cl9yZXBsYWNlKCRtb2RD aGFyLiRtb2RJdGVtLCAkcHJldGV4dFskbG93aXRlbV0sICRpdGVtKTsNCgkJCX0gZWxzZSBp ZiAoaXNzZXQoJHRoaXNhcnRpY2xlWyRsb3dpdGVtXSkpIHsNCgkJCQkkaXRlbSA9IHN0cl9y ZXBsYWNlKCRtb2RDaGFyLiRtb2RJdGVtLCAkdGhpc2FydGljbGVbJGxvd2l0ZW1dLCAkaXRl bSk7DQoJCQl9IGVsc2Ugew0KCQkJCSRpdGVtID0gc3RyX3JlcGxhY2UoJG1vZENoYXIuJG1v ZEl0ZW0sICRtb2RJdGVtLCAkaXRlbSk7DQoJCQl9DQoJCX0NCg0KCQkvLyBIYW5kbGUgcmFu Z2VzIG9mIHZhbHVlcw0KCQlpZiAoJHJuZyAmJiBwcmVnX21hdGNoKCcvXihcZCspXC0oXGQr KSQvJywgJGl0ZW0pKSB7DQoJCQlsaXN0KCRsbywgJGhpKSA9IGV4cGxvZGUoIi0iLCAkaXRl bSwgMik7DQoJCQkkaXRlbSA9IGltcGxvZGUoJGRsbSwgcmFuZ2UoJGxvLCAkaGkpKTsNCgkJ fQ0KDQoJCS8vIEl0ZW0gbWF5IGJlIGVtcHR5OyBpZ25vcmUgaXQgaWYgc28NCgkJaWYgKCRp dGVtKSB7DQoJCQkkaXRlbSA9IGRvX2xpc3QoJGl0ZW0sICRkbG0pOw0KCQkJLy8gSGFuZGxl IHN1Yi1jYXRlZ29yaWVzDQoJCQlpZiAoJHN1Yikgew0KCQkJCWxpc3QoJHN1YnR5cGUsICRs ZXZlbCkgPSBleHBsb2RlKCI6IiwgJHN1Yik7DQoJCQkJJGxldmVsID0gKGVtcHR5KCRsZXZl bCkpID8gMCA6ICRsZXZlbDsNCgkJCQkkbGV2ZWwgPSAoc3RydG9sb3dlcigkbGV2ZWwpPT0i YWxsIikgPyA5OTk5OSA6ICRsZXZlbDsNCgkJCQlmb3JlYWNoICgkaXRlbSBhcyAkY2F0KSB7 DQoJCQkJCSRjYXRzID0gZ2V0VHJlZShkb3NsYXNoKCRjYXQpLCAkc3VidHlwZSk7DQoJCQkJ CWZvcmVhY2ggKCRjYXRzIGFzICRqZHggPT4gJHZhbCkgew0KCQkJCQkJaWYgKCRjYXRzWyRq ZHhdWydsZXZlbCddIDw9ICRsZXZlbCkgew0KCQkJCQkJCSRpdGVtW10gPSAkY2F0c1skamR4 XVsnbmFtZSddOw0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KDQoJCQkvLyBRdW90 ZSBpZiBhc2tlZA0KCQkJJGl0ZW0gPSAoJHF0ZSkgPyBkb0FycmF5KCRpdGVtLCAnZG9RdW90 ZScpIDogJGl0ZW07DQoJCQlpZiAoJG1vZCA9PT0gMCkgew0KCQkJCSRpbmMgPSBhcnJheV91 bmlxdWUoYXJyYXlfbWVyZ2UoJGluYywgJGl0ZW0pKTsNCgkJCX0gZWxzZSB7DQoJCQkJJGV4 YyA9IGFycmF5X3VuaXF1ZShhcnJheV9tZXJnZSgkZXhjLCAkaXRlbSkpOw0KCQkJfQ0KCQl9 DQoJfQ0KCXJldHVybiBhcnJheSgkaW5jLCAkZXhjKTsNCn0NCn0NCg0KLy8gQWx0ZXJuYXRp dmUgdG8gdGhlIGNvcmUncyBkb1F1b3RlKCkuIFRoaXMgb25lIGRibC1xdW90ZXMgaW5zdGVh ZCBvZiBzZ2wtcXVvdGVzDQppZiAoIWZ1bmN0aW9uX2V4aXN0cygic21kX2RvRGJsUXVvdGUi KSkgew0KZnVuY3Rpb24gc21kX2RvRGJsUXVvdGUoJHZhbCkgew0KCXJldHVybiAnIicuJHZh bC4nIic7DQp9DQp9DQoNCi8vIFdvcmsgb3V0IHdoaWNoIHBhZ2UgdGhpcyBnYWxsZXJ5IGlz IG9uIGFuZCByZXR1cm4gdGhlIHJlbGV2YW50IGluZm8NCmZ1bmN0aW9uIHNtZF9nZXRQYWdl KCRycywgJGdhbGxJRCwgJGxpbWl0LCAkb2Zmc2V0LCAkcGFnaW5nKSB7DQoJaWYgKCgkbGlt aXQgPiAwKSAmJiAkcGFnaW5nKSB7DQoJCSRudW1UaHVtcyA9IGNvdW50KCRycyk7DQoJCSRu dW1QYWdlcyA9ICgkbnVtVGh1bXMgPiAwKSA/IGNlaWwoJG51bVRodW1zLyRsaW1pdCkgOiAx Ow0KCQkkdGh1bVBhZ2UgPSAoIWdwcygkZ2FsbElEKSkgPyAxIDogZ3BzKCRnYWxsSUQpOw0K CQkkb2Zmc2V0ID0gKCR0aHVtUGFnZSAtIDEpICogJGxpbWl0Ow0KCX0gZWxzZSB7DQoJCS8v IE5vIHBhZ2luZyByZXF1aXJlZA0KCQkkbnVtUGFnZXMgPSAxOw0KCQkkdGh1bVBhZ2UgPSAx Ow0KCX0NCglyZXR1cm4gYXJyYXkoJG51bVBhZ2VzLCAkdGh1bVBhZ2UsICRvZmZzZXQpOw0K fQ0KDQovLyBSZWFkIHRoZSBnaXZlbiBkZWxpbWl0ZWQgZGlyZWN0b3JpZXMgYW5kIGdldCBh bGwgZmlsZXMgdGhhdCBtYXRjaC4NCi8vIEdvIGRvd24gYXMgbWFueSBzdWJkaXIgbGV2ZWxz IGFzIGdpdmVuIGluIHRoZSAkc3ViIHBhcmFtZXRlcg0KZnVuY3Rpb24gc21kX2RvRGlyZWN0 b3J5KCRsc3QsICRsdmw9MCwgJHN1Yj0wLCAkbWF0Y2g9IiIsICRkbG09IiwiLCAkY3RyPTAp IHsNCglsaXN0KCRkaXJpbmMsICRkaXJleGMpID0gc21kX2RvTGlzdCgkbHN0LCBmYWxzZSwg JHN1YiwgZmFsc2UsICRkbG0pOw0KCWxpc3QoJG1hdGNoaW5jLCAkbWF0Y2hleGMpID0gc21k X2RvTGlzdCgkbWF0Y2gsIGZhbHNlLCAnJywgZmFsc2UsICRkbG0pOw0KCSRtYXRjaGluYyA9 ICIuKiIgLigoJG1hdGNoaW5jKSA/ICIoIiAuaW1wbG9kZSgifCIsJG1hdGNoaW5jKS4iKSsu KiIgOiAiIik7DQoJJG1hdGNoZXhjID0gKCRtYXRjaGV4YykgPyAiLiooIiAuaW1wbG9kZSgi fCIsJG1hdGNoZXhjKS4iKSsuKiIgOiAic21kX2dscnlfIi5tdF9yYW5kKCk7DQoNCgkkc3Vi ID0gKGVtcHR5KCRzdWIpKSA/IDAgOiAkc3ViOw0KCSRzdWIgPSAoc3RydG9sb3dlcigkc3Vi KT09ImFsbCIpID8gOTk5OTkgOiAkc3ViOw0KCSRmaWxlTGlzdCA9IGFycmF5KCk7DQoJZm9y ZWFjaCAoJGRpcmluYyBhcyAkZGlyKSB7DQoJCWlmICgkaGFuZGxlID0gQG9wZW5kaXIoJGRp cikpIHsNCgkJCXdoaWxlICgoJGZpbGUgPSBAcmVhZGRpcigkaGFuZGxlKSkgIT09IGZhbHNl KSB7DQoJCQkJJGZ1bGxwYXRoID0gJGRpci5EUy4kZmlsZTsNCgkJCQlpZiAocHJlZ19tYXRj aCgiLyIuJG1hdGNoaW5jLiIvIiwgJGZ1bGxwYXRoKSAmJiAhcHJlZ19tYXRjaCgiLyIuJG1h dGNoZXhjLiIvIiwgJGZ1bGxwYXRoKSkgew0KCQkJCQlpZiAoaXNfZGlyKCRmdWxscGF0aCkp IHsNCgkJCQkJCWlmICgoJGZpbGUgPT0gIi4iKSB8fCAoJGZpbGU9PSAiLi4iKSB8fCAoaW5f YXJyYXkoJGZpbGUsICRkaXJleGMpKSB8fCAoJGx2bCA+PSAkc3ViKSkgew0KCQkJCQkJCWNv bnRpbnVlOw0KCQkJCQkJfSBlbHNlIHsNCgkJCQkJCQkvLyBSZWN1cnNlIHRoZSBzdWJkaXIu IE5vdGUgdGhhdCB0aGUgJyEnIGlzIHRlbXBvcmFyaWx5IGFkZGVkIGJhY2sgdG8gZWFjaCBk aXJleGMgaXRlbQ0KCQkJCQkJCSR0bXAgPSAkZGlyZXhjOyAvLyBEb24ndCBvdmVyd3JpdGUg dGhlIG9yaWdpbmFsIGFycmF5DQoJCQkJCQkJYXJyYXlfdW5zaGlmdCgkdG1wLCAkZnVsbHBh dGgpOw0KCQkJCQkJCSRzdWJGaWxlcyA9IHNtZF9kb0RpcmVjdG9yeShpbXBsb2RlKCRkbG0u IiEiLCAkdG1wKSwgJGx2bCsxLCAkc3ViLCAkbWF0Y2gsICRkbG0sICRjdHIpOw0KCQkJCQkJ CSRmaWxlTGlzdCA9IGFycmF5X21lcmdlKCRmaWxlTGlzdCwgJHN1YkZpbGVzKTsNCgkJCQkJ CQkkY3RyICs9IGNvdW50KCRzdWJGaWxlcyk7DQoJCQkJCQkJY29udGludWU7DQoJCQkJCQl9 DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQkkZmlsZXN0YXQgPSBzdGF0KCRmdWxscGF0aCk7DQoJ CQkJCQkkaW1nc2l6ZSA9IGdldGltYWdlc2l6ZSgkZnVsbHBhdGgpOw0KCQkJCQkJJGZpbGVM aXN0WyRjdHJdWydwYXRoJ10gPSAkZGlyOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWyduYW1l J10gPSBiYXNlbmFtZSgkZnVsbHBhdGgpOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWydpZCdd ID0gcHJlZ19yZXBsYWNlKCcvXC4uKyQvJywgJycsICRmaWxlKTsNCgkJCQkJCSRmaWxlTGlz dFskY3RyXVsnYWx0J10gPSAnJzsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnY2FwdGlvbidd ID0gJyc7DQoJCQkJCQkkcGFydHMgPSBleHBsb2RlKERTLCAkZGlyKTsNCgkJCQkJCSRmaWxl TGlzdFskY3RyXVsnY2F0ZWdvcnknXSA9IChjb3VudCgkcGFydHMpID4gMSkgPyBlbmQoJHBh cnRzKSA6ICcnOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWydhdXRob3InXSA9IHN0cnZhbCgk ZmlsZXN0YXRbJ3VpZCddKTsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnZGF0ZSddID0gc3Ry ZnRpbWUoIiVZLSVtLSVkICVIOiVNOiVTIiwgJGZpbGVzdGF0WydjdGltZSddKTsNCgkJCQkJ CSRwYXJ0cyA9IGV4cGxvZGUoIi4iLCAkZmlsZSk7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1b J2V4dCddID0gKGNvdW50KCRwYXJ0cykgPiAxKSA/ICIuIi5lbmQoJHBhcnRzKSA6ICcnOw0K CQkJCQkJJGZpbGVMaXN0WyRjdHJdWyd3J10gPSAoaXNfYXJyYXkoJGltZ3NpemUpKSA/IHN0 cnZhbCgkaW1nc2l6ZVswXSkgOiAnJzsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnaCddID0g KGlzX2FycmF5KCRpbWdzaXplKSkgPyBzdHJ2YWwoJGltZ3NpemVbMV0pIDogJyc7DQoJCQkJ CX0NCgkJCQkJJGN0cisrOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQlpZiAoJGhhbmRsZSkgew0K CQkJQGNsb3NlZGlyKCRoYW5kbGUpOw0KCQl9DQoJfQ0KCXJldHVybiAkZmlsZUxpc3Q7DQp9 DQoNCmlmICghZnVuY3Rpb25fZXhpc3RzKCJzbWRfcmVtb3ZlUVNWYXIiKSkgew0KZnVuY3Rp b24gc21kX3JlbW92ZVFTVmFyKCR1cmwsICRrZXkpIHsNCgkkdXJsID0gcHJlZ19yZXBsYWNl KCcvKC4qKShcP3wmKScgLiAka2V5IC4gJz1bXiZdKz8oJikoLiopL2knLCAnJDEkMiQ0Jywg JHVybCAuICcmJyk7DQoJJHVybCA9IHN1YnN0cigkdXJsLCAwLCAtMSk7DQoJcmV0dXJuICgk dXJsKTsNCn0NCn0NCg0KaWYgKCFmdW5jdGlvbl9leGlzdHMoInNtZF9hZGRRU1ZhciIpKSB7 DQpmdW5jdGlvbiBzbWRfYWRkUVNWYXIoJHVybCwgJGtleSwgJHZhbHVlKSB7DQoJJHVybCA9 IHNtZF9yZW1vdmVRU1ZhcigkdXJsLCAka2V5KTsNCglpZiAoc3RycG9zKCR1cmwsICc/Jykg PT09IGZhbHNlKSB7DQoJCXJldHVybiAoJHVybCAuICc/JyAuICRrZXkgLiAnPScgLiAkdmFs dWUpOw0KCX0gZWxzZSB7DQoJCXJldHVybiAoJHVybCAuICcmJyAuICRrZXkgLiAnPScgLiAk dmFsdWUpOw0KCX0NCn0NCn0NCiI7czo0OiJ0eXBlIjtzOjE6IjAiO3M6NDoiaGVscCI7czoz NTg4ODoiCTxwPjxkaXYgaWQ9InNtZF9oZWxwIj48L3A+CgoJPGgxIGlkPSJ0b3AiPnNtZF9n YWxsZXJ5PC9oMT4KCgk8aDIgaWQ9ImNvbnRlbnRzIj5Db250ZW50czwvaDI+CgoJPHVsPgoJ CTxsaT48YSBocmVmPSIjZmVhdHVyZXMiPkZlYXR1cmVzPC9hPjwvbGk+CgkJPGxpPjxhIGhy ZWY9IiNhdXRob3IiPkF1dGhvcjwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjaW5zdGFsbCI+ SW5zdGFsbGF0aW9uIC8gVW5pbnN0YWxsYXRpb248L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0i I3VzYWdlIj5UYWcgdXNhZ2U8L2E+Cgk8dWw+CgkJPGxpPjxhIGhyZWY9IiNzbWRfZ2FsbGVy eSI+c21kX2dhbGxlcnk8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI2dhbGxlcnlfZm9ybSI+ R2FsbGVyeSBmb3JtPC9hPgoJPHVsPgoJCTxsaT48YSBocmVmPSIjcmVwX2dhbGxlcnkiPlJl cGxhY2VtZW50IHRhZ3M8L2E+PC9saT4KCTwvdWw+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3Bh Z2luZ19mb3JtIj5QYWdpbmcgZm9ybTwvYT4KCTx1bD4KCQk8bGk+PGEgaHJlZj0iI3JlcF9w YWdpbmciPlJlcGxhY2VtZW50IHRhZ3M8L2E+PC9saT4KCTwvdWw+PC9saT4KCQk8bGk+PGEg aHJlZj0iI2NvbWJvcyI+Q29tYm9zPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNjb2xsYXRl X21vZGUiPkNvbGxhdGUgbW9kZTwvYT48L2xpPgoJPC91bD48L2xpPgoJCTxsaT48YSBocmVm PSIjZXhhbXBsZXMiPkV4YW1wbGVzPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNjaGFuZ2Vs b2ciPkNoYW5nZWxvZzwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjY3JlZGl0cyI+Q3JlZGl0 czwvYT48L2xpPgoJPC91bD4KCgk8aDIgaWQ9ImZlYXR1cmVzIj5GZWF0dXJlczwvaDI+CgoJ PHVsPgoJCTxsaT5TdXBwb3J0cyBhbGwgY3VycmVudCBhbmQgKHByb2JhYmx5KSBmdXR1cmUg Z2FsbGVyeSBzY3JpcHRzIGluY2x1ZGluZyB0aHVtYnBvcCwgcm9sbG92ZXIsIHRvb2x0aXAs IGxpZ2h0Ym94LCBsaXRlYm94LCBzbGltYm94LCBtb29uYm94LCB0aGlja2JveCwgc2xpZGVz aG93LCBmYW5jeXpvb20sIGV0YzwvbGk+CgkJPGxpPlB1bGwgaW1hZ2VzIGZyb20gdGhlIDxz cGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGRhdGFiYXNlIChvciBvcHRpb25hbGx5IGEg bGlzdCBvZiBkaXJlY3RvcmllcykgdGhhdCBtYXRjaCBjYXRlZ29yaWVzIG9yIElEczwvbGk+ CgkJPGxpPlVzZSBhcnRpY2xlIGZpZWxkcyB0byBob2xkIGxpc3RzIG9mIGltYWdlIGNhdGVn b3JpZXMvSURzIGZvciBhcnRpY2xlLXNwZWNpZmljIGdhbGxlcmllczwvbGk+CgkJPGxpPk11 bHRpLWxldmVsIHN1Yi1jYXRlZ29yeSBzdXBwb3J0PC9saT4KCQk8bGk+R2FsbGVyeSBsYXlv dXQgaXMgZGVmaW5lZCBpbiBhIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZvcm08 L2xpPgoJCTxsaT5EaXJlY3QtYWNjZXNzIHBhZ2luYXRpb24gaXMgc3VwcG9ydGVkIGFuZCB0 aGUgbGF5b3V0IG9mIHBhZ2luZyBmZWF0dXJlcyBpcyBjb250cm9sbGVkIGJ5IGEgc2Vjb25k IGZvcm08L2xpPgoJCTxsaT5Vc2VzIGEgdGFnLXJlcGxhY2VtZW50IHN5c3RlbSBsaWtlIHRo ZSB3ZXRfZm9yX2VhY2hfaW1hZ2UgcGx1Z2luPC9saT4KCTwvdWw+CgoJPGgyIGlkPSJhdXRo b3IiPkF1dGhvcjwvaDI+CgoJPHA+PGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL2Nv bW1lbnRGb3JtIj5TdGVmIERhd3NvbjwvYT4uIEZvciBvdGhlciBzb2Z0d2FyZSBieSBtZSwg b3IgdG8gbWFrZSBhIGRvbmF0aW9uLCBzZWUgdGhlIDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3 c29uLmNvbS9zdyI+c29mdHdhcmUgcGFnZTwvYT4uPC9wPgoKCTxoMiBpZD0iaW5zdGFsbCI+ SW5zdGFsbGF0aW9uIC8gVW5pbnN0YWxsYXRpb248L2gyPgoKCTxwPkRvd25sb2FkIHRoZSBw bHVnaW4gZnJvbSBlaXRoZXIgPGEgaHJlZj0iaHR0cDovL3RleHRwYXR0ZXJuLm9yZy9wbHVn aW5zLzk1Ny9zbWRfZ2FsbGVyeSI+dGV4dHBhdHRlcm4ub3JnPC9hPiwgb3IgdGhlIDxhIGhy ZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9zdyI+c29mdHdhcmUgcGFnZTwvYT4sIHBhc3Rl IHRoZSBjb2RlIGludG8gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IEFkbWlu IC0mZ3Q7IFBsdWdpbnMgcGFuZSwgaW5zdGFsbCBhbmQgZW5hYmxlIHRoZSBwbHVnaW4uIFZp c2l0IHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3Bp Yy5waHA/aWQ9MjY0ODIiPmZvcnVtIHRocmVhZDwvYT4gZm9yIG1vcmUgaW5mbyBvciB0byBy ZXBvcnQgb24gdGhlIHN1Y2Nlc3Mgb3Igb3RoZXJ3aXNlIG9mIHRoZSBwbHVnaW4uPC9wPgoK CTxwPlRvIHJlbW92ZSB0aGUgcGx1Z2luLCBzaW1wbHkgZGVsZXRlIGl0IGZyb20gdGhlIEFk bWluLSZndDtQbHVnaW5zIHRhYi48L3A+CgoJPGgyIGlkPSJ1c2FnZSI+VXNhZ2U8L2gyPgoK CTxwPkZvciBzb21lIGlkZWFzIG9uIHVzYWdlIHNjZW5hcmlvcywgc2VlIHRoZSA8YSBocmVm PSIjZXhhbXBsZXMiPmV4YW1wbGVzPC9hPi48L3A+CgoJPHA+VGhlIGdlbmVyYWwgaWRlYSBp cyB0aGF0IHRoaXMgcGx1Z2luIGFjdHMgYXMgYSBmbGV4aWJsZSBpbWFnZSBmaWx0ZXI7IG5v dGhpbmcgbW9yZS4gVGhlIHBsdWdpbiBvcHRpb25zIGdvdmVybiB3aGF0IGltYWdlcyBhcmUg cHVsbGVkIG91dCBvZiB0aGUgZGF0YWJhc2UgYW5kIHRoZXkgYXJlIHNvcnRlZCBpbnRvIHdo YXRldmVyIG9yZGVyIHlvdSBsaWtlLjwvcD4KCgk8cD5BZnRlciB0aGF0LCBlYWNoIGltYWdl ICYjODIxMjsgb25lIGJ5IG9uZSAmIzgyMTI7IGhhcyBhbGwgaXRzIGF0dHJpYnV0ZXMgcGFz c2VkIHRvIHRoZSA8Y29kZT5mb3JtPC9jb2RlPiBvZiB5b3VyIGNob2ljZTsgeW91IHNpbXBs eSBjaG9vc2UgdG8gZGlzcGxheSB3aGljaGV2ZXIgaW1hZ2UgYXR0cmlidXRlcyB5b3UgbGlr ZSBpbiB0aGlzIGZvcm0uIFRoaXMgbWVhbnMgYW55IGltYWdlIGF0dHJpYnV0ZXMgY2FuIGJl ICYjODIyMDtpbmplY3RlZCYjODIyMTsgZGlyZWN0bHkgaW50byBhbnkgbWFya3VwOyBpdCBj b3VsZCBiZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiB0YWdzLCBpdCBjb3VsZCBi ZSBjb250ZW50LCBpdCBjb3VsZCBiZSBqYXZhc2NyaXB0LCBvciA8c3BhbiBjbGFzcz0iY2Fw cyI+Q1NTPC9zcGFuPjsgYW55dGhpbmcuIFBhZ2luYXRpb24gd29ya3MgdGhlIHNhbWUgd2F5 LCBhbGxvd2luZyB5b3UgdG8gc3BlY2lmeSBob3cgdXNlcnMgY2FuIHN0ZXAgdGhyb3VnaCB5 b3VyIGltYWdlIGdhbGxlcmllcy48L3A+CgoJPHA+VGhlcmUgaXMgYWxzbyBhIHNwZWNpYWwg bW9kZSBjYWxsZWQgJiM4MjIwO2NvbGxhdGUmIzgyMjE7IHRoYXQgYWxsb3dzIHlvdSB0byBj b2xsZWN0IGFsbCBpbWFnZSBhdHRyaWJ1dGVzIHRvZ2V0aGVyIGludG8gYSBzZXJpZXMgb2Yg YmlnIGxvbmcgbGlzdHMgPGVtPndpdGhvdXQ8L2VtPiBjYWxsaW5nIHRoZSBmb3JtIGV2ZXJ5 IHRpbWUuIFRoZSBmb3JtIGlzIHRoZW4gb25seSBwcm9jZXNzZWQgb25jZSBhdCB0aGUgZW5k LjwvcD4KCgk8cD5CZXR3ZWVuIHRoZXNlIHR3byBtb2RlcyB5b3UgPGVtPnNob3VsZDwvZW0+ IGJlIGFibGUgdG8gcmVhbGlzZSBhbnkgZ2FsbGVyeWluZyBzb2x1dGlvbjsgbm93IGFuZCBp biBmdXR1cmUuPC9wPgoKCTxoMyBjbGFzcz0idGFnICIgaWQ9InNtZF9nYWxsZXJ5Ij5zbWRf Z2FsbGVyeTwvaDM+CgoJPHAgY2xhc3M9InRhZy1zdW1tYXJ5Ij5QbGFjZSBvbmUgb3IgbW9y ZSBzbWRfZ2FsbGVyeSB0YWdzIGluIGFueSBhcnRpY2xlLCBwYWdlIG9yIGZvcm0sIHN1cHBs eSBhbnkgb2YgdGhlIGZvbGxvd2luZyBvcHRpb25zIHRvIGNvbmZpZ3VyZSBpdCBhbmQgdXNl IGEgZm9ybSB0byBkZWZpbmUgaG93IHRoZSBnYWxsZXJ5IGlzIGRpc3BsYXllZC48L3A+CgoJ PGg0IGNsYXNzPSJhdHRzICIgaWQ9ImF0dHJpYnV0ZXMiPkF0dHJpYnV0ZXM8L2g0PgoKCTx1 bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+aWQ8L3NwYW4+ IDogbGlzdCBvZiBpbWFnZSBJRHMgZm9yIGluY2x1c2lvbiBpbiB0aGUgZ2FsbGVyeS4gTWF5 IGJlIGludGVnZXJzIG9yIHJhbmdlcywgZm9yIGV4YW1wbGUgPGNvZGU+aWQ9JnF1b3Q7NSwg NDIsIDgtMTEmcXVvdDs8L2NvZGU+IHdvdWxkIGdyYWIgaW1hZ2VzIDUsIDgsIDksIDEwLCAx MSBhbmQgNDIuIFVzZSBhbiBleGNsYW1hdGlvbiBtYXJrIGluIGZyb250IG9mIGEgbnVtYmVy IG9yIHJhbmdlIHRvIGV4Y2x1ZGUgdGhvc2UgaW1hZ2VzPC9saT4KCTwvdWw+Cgk8dWwgY2xh c3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPmNhdGVnb3J5PC9zcGFu PiA6IGxpc3Qgb2YgaW1hZ2UgY2F0ZWdvcmllcyBmb3IgaW5jbHVzaW9uIGluIHRoZSBnYWxs ZXJ5LiBZb3UgbWF5IHNwZWNpZnkgZml4ZWQtbmFtZSBjYXRlZ29yaWVzIChlLmcuICYjODIy MDthbmltYWxzJiM4MjIxOykgb3IgYSBxdWVzdGlvbiBtYXJrIGZvbGxvd2VkIGJ5IGFuIGFy dGljbGUgZmllbGQgbmFtZS4gZS5nLiA8Y29kZT5jYXRlZ29yeT0mcXVvdDthbmltYWxzLCBh cnQtP2lkJnF1b3Q7PC9jb2RlPiB3b3VsZCBncmFiIGFsbCBpbWFnZXMgZnJvbSB0aGUgY2F0 ZWdvcmllcyBjYWxsZWQgJiM4MjIwO2FuaW1hbHMmIzgyMjE7IGFuZCB0aGUgY2F0ZWdvcnkg Y2FsbGVkICYjODIyMDthcnQtNDImIzgyMjE7IChhc3N1bWluZyB0aGUgY3VycmVudCBhcnRp Y2xlIGhhcyBhbiBpZCBvZiA0MiBvZiBjb3Vyc2UpLiBVc2UgYW4gZXhjbGFtYXRpb24gbWFy ayB0byBleGNsdWRlIHRoZSBnaXZlbiBjYXRlZ29yeSBvciBmaWVsZC4gRmllbGRzIG1heSB0 aGVtc2VsdmVzIGNvbnRhaW4gbGlzdHMgb2YgY2F0ZWdvcmllcy4gVGhlID8gZmllbGQgbmFt ZXMgbWF5IGJlIGNvbWJpbmVkIChlLmcuID9zLT9hcnRpY2xlX2ltYWdlKSBidXQgYmUgYXdh cmUgdGhhdCBmaWVsZCBuYW1lcyBtYXkgY29udGFpbiBzcGFjZXM8L2xpPgoJPC91bD4KCTx1 bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+c3VibGV2ZWw8 L3NwYW4+IDogYW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyBob3cgbWFueSAmIzgyMTY7bGV2 ZWxzJiM4MjE3OyBkb3duIHRvIHRyYXZlcnNlIGVhY2ggbWF0Y2hpbmcgY2F0ZWdvcnkuIHN1 YmxldmVsPSYjODIyMDswJiM4MjIxOyAodGhlIGRlZmF1bHQpIGlzIG9ubHkgdGhlIHRvcC1s ZXZlbDsgMSA9IHRvcC1sZXZlbCBwbHVzIHRoZSAxc3Qgc3ViLWNhdDsgMiA9IHRvcC1sZXZl bCBwbHVzIHRoZSBuZXh0IDIgc3ViLWNhdHMsIGFuZCBzbyBvbi4gc3VibGV2ZWw9JiM4MjIw O2FsbCYjODIyMTsgaXMgYWxsIHN1Yi1jYXRlZ29yaWVzPC9saT4KCTwvdWw+Cgk8dWwgY2xh c3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnNvcnQ8L3NwYW4+IDog cmUtb3JkZXIgdGhlIGltYWdlcyBieSA8Y29kZT5jYXRlZ29yeTwvY29kZT4gKHRoZSBkZWZh dWx0KSwgPGNvZGU+bmFtZTwvY29kZT4sIDxjb2RlPmRhdGU8L2NvZGU+LCA8Y29kZT5pZDwv Y29kZT4sIGZpbGUgPGNvZGU+ZXh0PC9jb2RlPmVuc2lvbiwgPGNvZGU+YWx0PC9jb2RlPiwg PGNvZGU+Y2FwdGlvbjwvY29kZT4sIDxjb2RlPmF1dGhvcjwvY29kZT4sIDxjb2RlPndpZHRo PC9jb2RlPiwgPGNvZGU+aGVpZ2h0PC9jb2RlPiBpbiBlaXRoZXIgPGNvZGU+YXNjPC9jb2Rl PmVuZGluZyBvciA8Y29kZT5kZXNjPC9jb2RlPmVuZGluZyBvcmRlci4gVHdvIHNwZWNpYWwg Y2FzZXMgZXhpc3Q6IDxjb2RlPmZpeGVkPC9jb2RlPiBtYWludGFpbnMgdGhlIG9yZGVyIHlv dSBzcGVjaWZpZWQgaW4gdGhlIGlkIGF0dHJpYnV0ZSwgd2hpbGUgPGNvZGU+cmFuZG9tPC9j b2RlPiBzaHVmZmxlcyB0aGUgb3JkZXIuIE5vdGUgdGhhdCBpZiA8Y29kZT5yYW5kb208L2Nv ZGU+IGFwcGVhcnMgYXMgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3QsIHJhbmRvbSBpbWFn ZXMgd2lsbCBiZSBwdWxsZWQgZnJvbSB0aGUgZGF0YWJhc2UgYW5kIHRoZXkgd2lsbCB0aGVu IGJlIHNvcnRlZCBhY2NvcmRpbmcgdG8gdGhlIG9yZGVyIGxpc3RlZCBhZnRlciBpdC4gSWYg PGNvZGU+cmFuZG9tPC9jb2RlPiBhcHBlYXJzIGFueXdoZXJlIGVsc2UgaW4gdGhlIGxpc3Qs IGFueSBzb3J0IGl0ZW1zIGJlZm9yZSBpdCB3aWxsIGRldGVybWluZSB0aGUgb3JkZXIgb2Yg ZGF0YSBwdWxsZWQgZnJvbSB0aGUgZGF0YWJhc2UsIGFuZCB0aGUgcmVzdWx0cyB3aWxsIHRo ZW4gYmUgb3JkZXJlZCByYW5kb21seSAoaW4gdGhhdCBjYXNlLCBhbnkgaXRlbXMgbGlzdGVk IGFmdGVyIHJhbmRvbSB3aWxsIGJlIGlnbm9yZWQuIDxjb2RlPmZpeGVkPC9jb2RlPiBpcywg aG93ZXZlciwgc3RpbGwgaG9ub3VyZWQpPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMi PgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPmxpbWl0PC9zcGFuPiA6IHRoZSBtYXhp bXVtIG51bWJlciBvZiBpbWFnZXMgdG8gc2hvdyA8ZW0+cGVyIHBhZ2U8L2VtPi4gMCBvciBv bWl0dGVkID0gdW5saW1pdGVkPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxs aT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPm1heGxpbWl0PC9zcGFuPiA6IHRoZSBhYnNvbHV0 ZSBtYXhpbXVtIG51bWJlciBvZiB0aHVtYm5haWxzIHRvIHB1bGwgZnJvbSB0aGUgZGF0YWJh c2UuIDAgb3Igb21pdHRlZCA9IHVubGltaXRlZDwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJh dHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5vZmZzZXQ8L3NwYW4+IDogc2tp cCB0aGlzIG1hbnkgaW1hZ2VzIGFuZCBzdGFydCBjb3VudGluZyB0aGVyZWFmdGVyPC9saT4K CTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUi PnRodW1ibGltaXQ8L3NwYW4+IDogdGhlIG1heGltdW0gbnVtYmVyIG9mIHRodW1ibmFpbHMg dG8gc2hvdy4gMCBvciBvbWl0dGVkID0gYWxsIHRodW1icy4gTm90ZSB0aGF0IHRoaXMgZGlm ZmVycyBmcm9tIGxpbWl0OyB5b3UgY2FuIGxhdW5jaCBhIDIwLWltYWdlIGdhbGxlcnkgYnV0 IG9ubHkgc2hvdyAxIHRodW1ibmFpbCBvbiB0aGUgcGFnZTwvbGk+Cgk8L3VsPgoJPHVsIGNs YXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj50aHVtYm9mZnNldDwv c3Bhbj4gOiBza2lwIHRoaXMgbWFueSB0aHVtYnMgYmVmb3JlIGRpc3BsYXlpbmcgPGNvZGU+ dGh1bWJsaW1pdDwvY29kZT4gdGh1bWJuYWlsczwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJh dHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj50ZXh0PC9zcGFuPiA6IGRpc3Bs YXkgdGhlIGdpdmVuIHRleHQgaW5zdGVhZCBvZiB0aHVtYm5haWxzLiBUaGUgdGV4dCBjYW4g Y29udGFpbiA/IGFydGljbGUgZmllbGRzIGxpa2UgPGNvZGU+Y2F0ZWdvcnk8L2NvZGU+PC9s aT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5h bWUiPnRodW1iPC9zcGFuPiA6IGRpc3BsYXlzIHRoZSBmdWxsc2l6ZSBwaWMgYXMgYSB0aHVt Ym5haWwgaW5zdGVhZCBvZiBhIGZ1bGxzaXplIHBpYyghKTwvbGk+Cgk8L3VsPgoJPHVsIGNs YXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj50aHVtYnNpemU8L3Nw YW4+IDogdGFrZXMgb25lIG9yIHR3byBjb21tYS1zZXBhcmF0ZWQgcGFyYW1ldGVycyB0byBz cGVjaWZ5IHdpZHRoIGFuZC9vciBoZWlnaHQgb2YgYWxsIHlvdXIgZ2FsbGVyeSB0aHVtYm5h aWxzLiBUaGUgZGVmYXVsdCBpcyBpbiBwaXhlbHMgaWYgeW91IGRvbiYjODIxNzt0IHNwZWNp ZnkgdW5pdHMuIE1pc3Npbmcgb3V0IG9uZSBvciB0aGUgb3RoZXIgcGFyYW1ldGVyIChpLmUu IGhhdmluZyBhbiAmIzgyMjA7ZW1wdHkmIzgyMjE7IHBhcmFtZXRlciBiZWZvcmUgb3IgYWZ0 ZXIgdGhlIGNvbW1hKSB3aWxsIG9ubHkgc2V0IG9uZSBvZiB0aGUgZGltZW5zaW9ucy4gVXNp bmcgb25seSBvbmUgdmFsdWUsIGJvdGggd2lkdGggYW5kIGhlaWdodCB3aWxsIGJlIHNldCB0 byB0aGUgc2FtZSB2YWx1ZTwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5mb3JtPC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0i Y2FwcyI+VFhQPC9zcGFuPiBmb3JtIHVzZWQgdG8gbGF5b3V0IHlvdXIgbWF0Y2hpbmcgaW1h Z2VzPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0i YXR0LW5hbWUiPnBhZ2Vmb3JtPC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQ PC9zcGFuPiBmb3JtIHVzZWQgdG8gc3BlY2lmeSB0aGUgbGF5b3V0IG9mIHlvdXIgcGFnaW5n IG5hdmlnYXRpb248L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdHQtbmFtZSI+Z2FsbGVyeWlkPC9zcGFuPiA6IHVuZGVyIG5vcm1hbCBjaXJj dW1zdGFuY2VzIHlvdSBzaG91bGQgbmV2ZXIgbmVlZCB0aGlzLiBFYWNoIGdhbGxlcnkgaXMg YXNzaWduZWQgYSB1bmlxdWUgSUQgYmFzZWQgb24gdGhlIGF0dHJpYnV0ZXMgeW91IHN1cHBs eS4gSW4gdGhlIHVubGlrZWx5IGV2ZW50IHRoYXQgdHdvIGlkZW50aWNhbCBJRHMgYXJlIGdl bmVyYXRlZCB5b3UgY2FuIG92ZXJyaWRlIHRoZSBJRCBmb3IgYSBnYWxsZXJ5IHdpdGggdGhp cyBhdHRyaWJ1dGUuIFdoYXQgdGhlIHBsdWdpbiBkb2VzIChpbnRlcm5hbGx5KSBpcyBnZW5l cmF0ZSBhIDMyLWNoYXJhY3RlciBoYXNoIHN0cmluZyBmb3IgZWFjaCB0YWcsIHRoZW4gcGlj a3MgYSA0LWNoYXIgY29kZSBmcm9tIHRoaXMgc3RyaW5nIChpdCB0YWtlcyBldmVyeSA2dGgg Y2hhcmFjdGVyIGJ5IGRlZmF1bHQpLiBZb3UgY2FuIHN1cHBseSBhIHVuaXF1ZSBmaXhlZCBz dHJpbmcgKGUuZy4gPGNvZGU+Z2FsbGVyeWlkPSZxdW90O1RoZUdhbGxlcnkyJnF1b3Q7PC9j b2RlPikgb3IgZ2l2ZSBpdCBhIHF1ZXN0aW9uIG1hcmsgYW5kIDIgbnVtYmVycyBzZXBhcmF0 ZWQgYnkgYSBjb2xvbiAoZS5nLiA8c3ViPmdhbGxlcnlpZD0mIzgyMjE7PzU6NCYjODIyMTs8 L3N1Yj4pLiBUaGUgZmlyc3QgbnVtYmVyIGlzIHRoZSBsZW5ndGggb2YgdGhlIGZpbmFsIHN0 cmluZyB0byBnZW5lcmF0ZSwgdGhlIHNlY29uZCBudW1iZXIgaXMgaG93IG1hbnkgY2hhcmFj dGVycyB0byBza2lwIG92ZXIgaW4gdGhlIGZ1bGwgMzItY2hhciBzdHJpbmcgZWFjaCB0aW1l IGl0IHBpY2tzIG9uZS4gU28gaW4gdGhpcyBjYXNlLCBpdCBnZW5lcmF0ZXMgYSA1LWNoYXJh Y3RlciBzdHJpbmcgZnJvbSB0aGUgY2hhcmFjdGVycyBpdCBmaW5kcyBhdCBwb3NpdGlvbnMg MSw1LDksMTMsIGFuZCAxNy4gSWYgeW91IG9taXQgdGhlIDJuZCBudW1iZXIgKGUuZy4gPGNv ZGU+Z2FsbGVyeWlkPSZxdW90Oz82JnF1b3Q7PC9jb2RlPikgaXQgd2lsbCBhc3N1bWUgaXQm IzgyMTc7cyBhbiBpbmNyZW1lbnQgb2YgMSwgc28gaW4gdGhpcyBjYXNlIGl0JiM4MjE3O2xs IHVzZSB0aGUgMXN0IDYgY2hhcmFjdGVyczwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRz Ij4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj53cmFwdGFnPC9zcGFuPiA6IHRoZSAo WClIVE1MIHRhZyB0byBzdXJyb3VuZCB0aGUgZW50aXJlIGdhbGxlcnkuIFNwZWNpZnkgaXQg d2l0aG91dCBhbmdsZSBicmFja2V0cywgZS5nLiA8Y29kZT53cmFwdGFnPSZxdW90O2RpdiZx dW90OzwvY29kZT4uIERlZmF1bHQgaXMgdW5zZXQgKGkuZS4gbm8gdGFnKTwvbGk+Cgk8L3Vs PgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5icmVh azwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgdG8gc3Vycm91bmQgZWFjaCB0aHVtYm5haWwu IERlZmF1bHQgaXMgdW5zZXQgKGkuZS4gbm8gdGFncyk8L2xpPgoJPC91bD4KCTx1bCBjbGFz cz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+Y2xhc3M8L3NwYW4+IDog dGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5hbWUgdG8gYXBwbHkg dG8gdGhlIGVudGlyZSBnYWxsZXJ5LiBEZWZhdWx0IGlzIHVuc2V0IChpLmUuIG5vIGNsYXNz KTwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 dC1uYW1lIj5uYXZ3cmFwdGFnPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRhZyB0byBzdXJyb3Vu ZCB0aGUgZW50aXJlIDxjb2RlPnBhZ2Vmb3JtPC9jb2RlPi4gU3BlY2lmeSBpdCB3aXRob3V0 IGFuZ2xlIGJyYWNrZXRzLCBlLmcuIDxjb2RlPndyYXB0YWc9JnF1b3Q7ZGl2JnF1b3Q7PC9j b2RlPi4gRGVmYXVsdCBpcyAmIzgyMjA7dWwmIzgyMjE7PC9saT4KCTwvdWw+Cgk8dWwgY2xh c3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPm5hdmJyZWFrPC9zcGFu PiA6IHRoZSAoWClIVE1MIHRhZyB0byBzdXJyb3VuZCBlYWNoIGl0ZW0gd2l0aGluIHRoZSA8 Y29kZT5wYWdlZm9ybTwvY29kZT4uIERlZmF1bHQgaXMgJiM4MjIwO2xpJiM4MjIxOzwvbGk+ Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1l Ij5uYXZjbGFzczwvc3Bhbj4gOiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4g Y2xhc3MgbmFtZSB0byBhcHBseSB0byB0aGUgbmF2aWdhdGlvbiB3cmFwdGFnLiBEZWZhdWx0 IGlzICYjODIyMDtzbWRfZ2FsbGVyeV9uYXYmIzgyMjE7PC9saT4KCTwvdWw+Cgk8dWwgY2xh c3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPmRlbGltPC9zcGFuPiA6 IGNoYW5nZSB0aGUgZGVsaW1pdGVyIGZvciBzcGVjaWZ5aW5nIGF0dHJpYnV0ZSBsaXN0cy4g RGVmYXVsdCBpcyBjb21tYSAoLCk8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+cGFyYW1kZWxpbTwvc3Bhbj4gOiBjaGFuZ2Ug dGhlIGRlbGltaXRlciBmb3Igc3BlY2lmeWluZyBpbnRlci1wYXJhbWV0ZXIgYXR0cmlidXRl cy4gRGVmYXVsdCBpcyBjb2xvbiAoOik8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+Y29sbGF0ZTwvc3Bhbj4gOiBzd2l0Y2gg dGhlIHBsdWdpbiBpbnRvIDxhIGhyZWY9IiNjb2xsYXRlX21vZGUiPmNvbGxhdGUgbW9kZTwv YT48L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dHQtbmFtZSI+Y29tYm88L3NwYW4+IDogc3BlY2lmeSB5b3VyIG93biA8YSBocmVmPSIjcmVw X2dhbGxlcnkiPnJlcGxhY2VtZW50IHRhZ3M8L2E+PC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9 ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPmRpcmVjdG9yeTwvc3Bhbj4g OiByZWFkIGltYWdlcyBmcm9tIGEgbGlzdCBvZiBkaXJlY3RvcmllcyAob3IgPHNwYW4gY2xh c3M9ImNhcHMiPlVSTDwvc3Bhbj5zKSBpbnN0ZWFkIG9mIHRoZSA8c3BhbiBjbGFzcz0iY2Fw cyI+VFhQPC9zcGFuPiBkYXRhYmFzZTwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5tYXRjaDwvc3Bhbj4gOiBsaW1pdCB0aGUg aW1hZ2VzIGFuZCBkaXJlY3RvcmllcyBjaG9zZW4gaW4gZGlyZWN0b3J5IG1vZGUuIEdpdmUg aXQgYSBsaXN0IG9mIHdvcmRzIHRvIGluY2x1ZGUgb3IgIWV4Y2x1ZGUgYW5kIGFueSBtYXRj aGluZyBmaWxlcyBvciBkaXJlY3RvcmllcyB3aWxsIGJlIGNob3NlbiBvciBpZ25vcmVkLCBy ZXNwZWN0aXZlbHkuIFRoZSBtYXRjaCB0ZXJtcyBhcmUgYXV0b21hdGljYWxseSBhc3N1bWVk IHRvIGJlICYjODIyMDt3aWxkJiM4MjIxOyBzbyBhbnkgcGFydCBvZiB0aGUgZmlsZSBuYW1l IC8gcGF0aCB3aWxsIHRyaWdnZXIgdGhlIG1hdGNoPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9 ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPmRlYnVnPC9zcGFuPiA6IHR1 cm4gb24gZGlhZ25vc3RpY3MuIFZhcnlpbmcgbGV2ZWxzIG9mIHZlcmJvc2l0eSBmcm9tIDAg KG5vbmUpIHRvIDQgKGEgbG90KTwvbGk+Cgk8L3VsPgoKCTxoMyBpZD0iZ2FsbGVyeV9mb3Jt Ij5HYWxsZXJ5IGZvcm08L2gzPgoKCTxwPlRoZSA8Y29kZT5mb3JtPC9jb2RlPiBpcyB3aGVy ZSB5b3UgZGVzaWduIHdoYXQgZXZlcnkgdGh1bWJuYWlsIHdpbGwgbG9vayBsaWtlIG9uIHRo ZSBzY3JlZW4uIFlvdSBkbyB0aGlzIGJ5IHNwZWNpZnlpbmcgbWFya3VwIG9yIHRhZ3MgYXMg bm9ybWFsLiBJbiBrZXkgcGxhY2VzIHdoZXJlIHlvdSB3YW50LCBzYXksIGFuIGltYWdlIElE IG9yIGFsdCB0YWcgb3IgaW1hZ2Ugd2lkdGggdG8gYmUgZGlzcGxheWVkLCB5b3Ugc3BlY2lm eSBzcGVjaWFsIDxhIGhyZWY9IiNyZXBfZ2FsbGVyeSI+cmVwbGFjZW1lbnQgdGFnczwvYT4u IFRoZXNlIGFyZSByZXBsYWNlZCBmb3IgZWFjaCBpbWFnZSBpbiB0dXJuLCB0aHVzIGJ1aWxk aW5nIHVwIHRoZSBnYWxsZXJ5LjwvcD4KCgk8cD5JbiBjb2xsYXRlIG1vZGUsIHRoZSBpbWFn ZSBkZXRhaWxzIGFyZSBpbnN0ZWFkIG1hZGUgaW50byBsaXN0cy4gVGhlIGZvcm0gaXMgb25s eSBwcm9jZXNzZWQgb25jZSBhbmQgdGhlIHJlcGxhY2VtZW50IHRhZ3Mgb3V0cHV0IHRoZSBl bnRpcmUgbGlzdC48L3A+CgoJPGg0IGNsYXNzPSJhdHRzICIgaWQ9InJlcF9nYWxsZXJ5Ij5S ZXBsYWNlbWVudCB0YWdzOiBnYWxsZXJ5PC9oND4KCgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxs aT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPntpZH08L3NwYW4+IDogdGhlIGltYWdlIElEIChv ciwgaW4gZGlyZWN0b3J5IG1vZGUsIHRoZSBmaWxlbmFtZSB3aXRob3V0IGl0cyBleHRlbnNp b24pPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0i YXR0LW5hbWUiPntuYW1lfTwvc3Bhbj4gOiB0aGUgZnVsbCBpbWFnZSBmaWxlbmFtZSBhcyBk ZWZpbmVkIGluIHRoZSBkYXRhYmFzZSwgdXN1YWxseSBpbmNsdWRpbmcgZXh0ZW5zaW9uPC9s aT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5h bWUiPntleHR9PC9zcGFuPiA6IHRoZSBmaWxlIGV4dGVuc2lvbiBpbmNsdWRpbmcgcGVyaW9k PC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0 LW5hbWUiPntjYXRlZ29yeX08L3NwYW4+IDogdGhlIGltYWdlIGNhdGVnb3J5PC9saT4KCTwv dWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnth dXRob3J9PC9zcGFuPiA6IHdobyB1cGxvYWRlZCB0aGUgaW1hZ2U8L2xpPgoJPC91bD4KCTx1 bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e3VybH08L3Nw YW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IG9mIHRoZSBmdWxsc2l6 ZSBpbWFnZTwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0dC1uYW1lIj57dGh1bWJ1cmx9PC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2Fw cyI+VVJMPC9zcGFuPiBvZiB0aGUgdGh1bWJuYWlsPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9 ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPntpbWFnZXBhdGh9PC9zcGFu PiA6IHRoZSBkaXJlY3RvcnkgdGhlIGltYWdlIGlzIGluPC9saT4KCTwvdWw+Cgk8dWwgY2xh c3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPntpbWFnZWRlZn08L3Nw YW4+IDoganVzdCB0aGUgZmlsZSBuYW1lIHBhcnQgb2YgdGhlIGltYWdlIChlLmcuIDUuanBn KTwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 dC1uYW1lIj57dGh1bWJkZWZ9PC9zcGFuPiA6IGp1c3QgdGhlIGZpbGUgbmFtZSBwYXJ0IG9m IHRoZSB0aHVtYm5haWwgKGUuZy4gNXQuanBnKTwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJh dHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57YWx0fTwvc3Bhbj4gOiB0aGUg YWx0IHRleHQ8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdHQtbmFtZSI+e3RpdGxlfTwvc3Bhbj4gOiB0aGUgY2FwdGlvbjwvbGk+Cgk8L3Vs PgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57ZGF0 ZX08L3NwYW4+IDogaW1hZ2UgdXBsb2FkIGRhdGU8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0i YXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e3dpZHRofTwvc3Bhbj4gOiBp bWFnZSB3aWR0aDwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0dC1uYW1lIj57aGVpZ2h0fTwvc3Bhbj4gOiBpbWFnZSBoZWlnaHQ8L2xpPgoJ PC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+ e3RodW1id2lkdGh9PC9zcGFuPiA6IHRodW1ibmFpbCB3aWR0aCAoaWYgZGVmaW5lZDogc2Vl IHRoZSA8Y29kZT50aHVtYnNpemU8L2NvZGU+IGF0dHJpYnV0ZSk8L2xpPgoJPC91bD4KCTx1 bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e3RodW1oZWln aHR9PC9zcGFuPiA6IHRodW1ibmFpbCBoZWlnaHQgKGRpdHRvKTwvbGk+Cgk8L3VsPgoJPHVs IGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57dGh1bWJ3dW5p dHN9PC9zcGFuPiA6IHRodW1ibmFpbCB3aWR0aCB1bml0cyAoZS5nLiBweCwgJSwgZW0gZXRj LiBPbmx5IGlmIGRlZmluZWQgdmlhIDxjb2RlPnRodW1ic2l6ZTwvY29kZT4pPC9saT4KCTwv dWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnt0 aHVtYmh1bml0c308L3NwYW4+IDogdGh1bWJuYWlsIGhlaWdodCB1bml0cyAoZGl0dG8pPC9s aT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5h bWUiPntoYXN0aHVtYn08L3NwYW4+IDogaWYgdGhlIGltYWdlIGhhcyBhbiBhc3NvY2lhdGVk IHRodW1ibmFpbCBvciBub3QgKHByb2JhYmx5IG5vdCBtdWNoIHVzZSk8L2xpPgoJPC91bD4K CTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e2dhbGxl cnlpZH08L3NwYW4+IDogdGhlIGdhbGxlcnkgaWQgeW91IG9yIHRoZSBwbHVnaW4gYXNzaWdu ZWQ8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dHQtbmFtZSI+e29iamVjdH08L3NwYW4+IDogYSBzcGVjaWFsIGl0ZW0gY29udGFpbmluZyBl aXRoZXIgdGhlIDxjb2RlPnRleHQ8L2NvZGU+IE9SIHRoZSBpbWFnZSB0YWcgb2YgdGhlIGNv cnJlc3BvbmRpbmcgdGh1bWJuYWlsIGJ1dCBvbmx5IGlmIDxjb2RlPnRodW1ibGltaXQ8L2Nv ZGU+IGFsbG93cyBpdC4gZS5nLiBpZiA8Y29kZT50aHVtYmxpbWl0PSZxdW90OzEmcXVvdDs8 L2NvZGU+IHRoaXMgdmFyaWFibGUgaXMgb25seSBzZXQgZm9yIHRoZSBmaXJzdCB0aHVtYm5h aWwgaW4gdGhlIGxpc3QuIEV2ZXJ5IG90aGVyIHRpbWUgaXQgaXMgZW1wdHk8L2xpPgoJPC91 bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e2Nv dW50ZXJ9PC9zcGFuPiA6IGFuIGltYWdlIGNvdW50ZXIsIHN0YXJ0aW5nIGZyb20gMSBhbmQg aW5jcmVtZW50aW5nIGVhY2ggdGltZTwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57aW5kZXh9PC9zcGFuPiA6IGFuIGluZGV4 IGNvdW50ZXIgKHplcm8tYmFzZWQgJiM4MjEyOyBwcm9iYWJseSBub3QgbXVjaCB1c2UpPC9s aT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5h bWUiPnt0b3RhbGltYWdlc308L3NwYW4+IDogdGhlIHRvdGFsIG51bWJlciBvZiBpbWFnZXMg bWF0Y2hlZDwvbGk+Cgk8L3VsPgoKCTxwPklmIHRob3NlIGFyZW4mIzgyMTc7dCBlbm91Z2gs IHlvdSBjYW4gPGEgaHJlZj0iI2NvbWJvcyI+Y3JlYXRlIHlvdXIgb3duPC9hPiBieSBncm91 cGluZyBjb21iaW5hdGlvbnMgb2YgdGhlIGFib3ZlLCBvcHRpb25hbGx5IHdpdGggYXJ0aWNs ZSB2YXJpYWJsZXMgc3VjaCBhcyA8Y29kZT4/ZXhjZXJwdDwvY29kZT4sIDxjb2RlPj9rZXl3 b3JkczwvY29kZT4sIDxjb2RlPj9hcnRpY2xlX2ltYWdlPC9jb2RlPiwgZXRjLjwvcD4KCgk8 aDMgaWQ9InBhZ2luZ19mb3JtIj5QYWdpbmcgZm9ybTwvaDM+CgoJPHA+V2hlbiBhbGwgdGhl IHRodW1ibmFpbHMgaGF2ZSBiZWVuIHByb2Nlc3NlZCwgdGhlIDxjb2RlPnBhZ2Vmb3JtPC9j b2RlPiBpcyBwcm9jZXNzZWQgYW5kIGRpc3BsYXllZC4gSW4gYSBzaW1pbGFyIG1hbm5lciB0 byB0aGUgd2F5IHRoZSA8YSBocmVmPSIjZ2FsbGVyeV9mb3JtIj5nYWxsZXJ5IGZvcm08L2E+ IHdvcmtzLCBhIHNlcmllcyBvZiA8YSBocmVmPSIjcmVwX3BhZ2luZyI+UmVwbGFjZW1lbnQg VGFnczwvYT4gZ292ZXJuIHdoaWNoIGdhbGxlcnkgbmF2aWdhdGlvbiBpdGVtcyBhcmUgYXZh aWxhYmxlLiBGb3IgZXhhbXBsZSB5b3UgY291bGQgY2hvb3NlIHRvIG9ubHkgc2hvdyBuZXh0 L3ByZXYuIE9yIHBlcmhhcHMgMXN0IHBhZ2UvbGFzdCBwYWdlLiBPciBudW1iZXJlZCBwYWdl IGxpbmtzLjwvcD4KCgk8aDQgY2xhc3M9ImF0dHMgIiBpZD0icmVwX3BhZ2luZyI+UmVwbGFj ZW1lbnQgdGFnczogcGFnaW5nPC9oND4KCgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3Bh biBjbGFzcz0iYXR0LW5hbWUiPntuYXZmaXJzdH08L3NwYW4+IDogdGhlIGZpcnN0IHBhZ2Ug KGRlZmF1bHQgbGFiZWw6ICYjODIyMDtGaXJzdCYjODIyMTspPC9saT4KCTwvdWw+Cgk8dWwg Y2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPntuYXZwcmV2fTwv c3Bhbj4gOiB0aGUgcHJldmlvdXMgcGFnZSAoZGVmYXVsdCBsYWJlbDogJiM4MjIwOyZsYXF1 bzsmIzgyMjE7KTwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0dC1uYW1lIj57bmF2ZWFybGllcn08L3NwYW4+IDogYW55IHBhZ2UgbnVtYmVy cyBiZWZvcmUgdGhlIGN1cnJlbnQgcGFnZTwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRz Ij4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57bmF2dGhpc3VybH08L3NwYW4+IDog dGhlIGN1cnJlbnQgcGFnZSB3aXRoIGEgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4g bGluayB0byBpdHNlbGY8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdHQtbmFtZSI+e25hdnRoaXN9PC9zcGFuPiA6IHRoZSBjdXJyZW50IHBh Z2Ugd2l0aG91dCBhIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGxpbms8L2xpPgoJ PC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+ e25hdmxhdGVyfTwvc3Bhbj4gOiBhbnkgcGFnZSBudW1iZXJzIGFmdGVyIHRoZSBjdXJyZW50 IHBhZ2U8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdHQtbmFtZSI+e25hdm5leHR9PC9zcGFuPiA6IHRoZSBwcmV2aW91cyBwYWdlIChkZWZh dWx0IGxhYmVsOiAmIzgyMjA7JnJhcXVvOyYjODIyMTspPC9saT4KCTwvdWw+Cgk8dWwgY2xh c3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPntuYXZsYXN0fTwvc3Bh bj4gOiB0aGUgbGFzdCBwYWdlIChkZWZhdWx0IGxhYmVsOiAmIzgyMjA7TGFzdCYjODIyMTsp PC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0 LW5hbWUiPnt0b3RhbGltYWdlc308L3NwYW4+IDogdGhlIHRvdGFsIG51bWJlciBvZiBpbWFn ZXMgbWF0Y2hlZDwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0dC1uYW1lIj57dG90YWxwYWdlc308L3NwYW4+IDogdGhlIHRvdGFsIG51bWJl ciBvZiBwYWdlcyBpbiB0aGlzIGNvbGxlY3Rpb248L2xpPgoJPC91bD4KCgk8cD5UaGUgY3Vy cmVudCBwYWdlIGhhcyBhIGZpeGVkIGNsYXNzIG9mICYjODIxNjtjdXJyZW50JiM4MjE3OyBh bmQgZWFjaCBpdGVtIGlzLCBieSBkZWZhdWx0LCBhIDxjb2RlPiZsdDtsaSZndDs8L2NvZGU+ IGZvciBlYXN5IHN0eWxpbmcuIFRvIGF2b2lkIGEgemlsbGlvbiBvcHRpb25zLCBjdXN0b20g bGFiZWxzIGFyZSBkZWZpbmVkIGRpcmVjdGx5IGluIHRoZSBmb3JtIGl0c2VsZjo8L3A+CgoJ PHA+PGNvZGU+e25hdmZpcnN0OjFzdH08L2NvZGU+PC9wPgoKCTxwPldvdWxkIGxhYmVsIHRo ZSBsaW5rIHRoYXQgdGFrZXMgdXNlcnMgdG8gdGhlIGZpcnN0IHBhZ2Ugb2YgdGhlIGdhbGxl cnkgYXMgJiM4MjIwOzFzdCYjODIyMTsuIFRoaXMgc3ludGF4IGFsbG93cyB5b3UgdG8gdXNl IDxzcGFuIGNsYXNzPSJjYXBzIj5NTFA8L3NwYW4+IHNuaXBwZXRzLCBlLmcuOjwvcD4KCgk8 cD48Y29kZT57bmF2Zmlyc3Q6IyNmaXJzdExhYmVsIyN9PC9jb2RlPjwvcD4KCgk8cD5Zb3Ug Y2FuIG92ZXJyaWRlIHRoZSBudW1iZXIgb2YgaXRlbXMgZGlzcGxheWVkIGJ5IG5hdmVhcmxp ZXIgYW5kIG5hdmxhdGVyIGJ5IHNwZWNpZnlpbmcgYSBjb2xvbiBhbmQgYSBudW1iZXIuIFNv IHRvIG9ubHkgc2hvdyAyIGl0ZW1zIHRvIHRoZSBsZWZ0IG9mIHRoZSBjdXJyZW50IHBhZ2Ug YW5kIDMgaXRlbXMgdG8gdGhlIHJpZ2h0LCB1c2UgPGNvZGU+e25hdmVhcmxpZXI6Mn0ge25h dmxhdGVyOjN9PC9jb2RlPiBpbiB5b3VyIGZvcm0uIEN1cnJlbnRseSA8Y29kZT57bmF2ZWFy bGllcn08L2NvZGU+IGFuZCA8Y29kZT57bmF2bGF0ZXJ9PC9jb2RlPiBvbmx5IGRpc3BsYXkg YXJhYmljIG51bWVyYWxzLiBBbnkgaWRlYXMgb24gaG93IHRvIG9mZmVyIG90aGVyIGNoYXJh Y3RlciBzZXRzIGdyZWF0bHkgYXBwcmVjaWF0ZWQuPC9wPgoKCTxoMyBpZD0iY29tYm9zIj5D b21ib3M8L2gzPgoKCTxwPklmIHRoZSBidWlsdC1pbiA8YSBocmVmPSIjcmVwX2dhbGxlcnki PnJlcGxhY2VtZW50IHRhZ3M8L2E+IGFyZW4mIzgyMTc7dCBlbm91Z2ggZm9yIHlvdXIgbmVl ZHMgb3IgeW91IGZpbmQgeW91cnNlbGYgcmVwZWF0aW5nIHRoZSBzYW1lIGNvbWJpbmF0aW9u IGFuZCB3YW50IHRvIHNhdmUgeW91cnNlbGYgc29tZSB0eXBpbmcsIHlvdSBjYW4gZGVmaW5l IHlvdXIgb3duIHJlcGxhY2VtZW50IHRhZ3MuIFRoZSBzeW50YXggaXM6PC9wPgoKCTxwPjxj b2RlPmNvbWJvPSZxdW90O25ld3RhZzE6ZGVmaW5pdGlvbiwgbmV3dGFnMjpkZWZpbml0aW9u LCAuLi4mcXVvdDs8L2NvZGU+PC9wPgoKCTxwPiYjODIxNjtkZWZpbml0aW9uJiM4MjE3OyBj YW4gYmUgYW55IGZpeGVkIHRleHQsIGFueSBleGlzdGluZyByZXBsYWNlbWVudCB0YWcsIG9y IGFueSBhcnRpY2xlIHZhcmlhYmxlIHNvIHlvdSBjYW4gZ2V0IHJlYWxseSB3aWxkIGhlcmU6 PC9wPgoKCTxwPjxjb2RlPmNvbWJvPSZxdW90O2ltZ2luOmZvdW5kIGluID9zIFt0YWdnZWQg d2l0aCA/a2V5d29yZHMuIFBob3RvIGJ5IHthdXRob3J9XSZxdW90OzwvY29kZT48L3A+CgoJ PHA+c28gbm93IDxjb2RlPntpbWdpbn08L2NvZGU+IGlzIGF2YWlsYWJsZSB0byB5b3VyIGZv cm0gYW5kIG1pZ2h0IGJlIHJlcGxhY2VkIHdpdGggJiM4MjIwO2ZvdW5kIGluIHpvbyBbdGFn Z2VkIHdpdGggemVicmEsIGFmcmljYSwgc3RyaXBlcy4gUGhvdG8gYnkgQmxva2VdJiM4MjIx Oy4gJHByZXRleHQgaXMgYWxzbyBhdmFpbGFibGUgZm9yIHRob3NlIGdlZWtzIHdobyBrbm93 IHdoYXQmIzgyMTc7cyBpbiBpdCAodXNlIDxjb2RlPmRlYnVnPSZxdW90OzQmcXVvdDs8L2Nv ZGU+IHRvIHZpZXcgYWxsIGF2YWlsYWJsZSBhcnRpY2xlIHZhcmlhYmxlcykuPC9wPgoKCTxw Pk9uZSB0aGluZyB0byB3YXRjaCBvdXQgZm9yIGlzIHRoYXQgdGhlIHNwYWNlIGNoYXJhY3Rl ciBpc24mIzgyMTc7dCBuZWNlc3NhcmlseSBhIGRlbGltaXRlciBmb3IgPGNvZGU+PzwvY29k ZT4gdmFyaWFibGVzIChiZWNhdXNlIGN1c3RvbSBmaWVsZHMgY2FuIGhhdmUgc3BhY2VzIGlu IHRoZW0pLiBTbyA8Y29kZT5jb21ibz0mcXVvdDtkb2Vzbm90d29yazo/cyBpbiA/Y2F0ZWdv cnkxJnF1b3Q7PC9jb2RlPiB3aWxsIGxvb2sgZm9yIGEgdmFyaWFibGUgbGFiZWxsZWQgJiM4 MjIwO3MgaW4mIzgyMjE7IGFuZCBvbmUgY2FsbGVkICYjODIyMDtjYXRlZ29yeTEmIzgyMjE7 LiBPbmx5IG9uZSBvZiB0aG9zZSBleGlzdHMhIENsZXZlciB1c2Ugb2YgcGFyZW50aGVzZXMg b3Igb3RoZXIgcHVuY3R1YXRpb24gY2FuIHdvcmsgcm91bmQgdGhpcy48L3A+CgoJPGgzIGlk PSJjb2xsYXRlX21vZGUiPkNvbGxhdGUgbW9kZTwvaDM+CgoJPHA+SWYgeW91IHdhbnQgdG8g Z2V0IDxlbT5yZWFsbHk8L2VtPiBmdW5reSB5b3UgY2FuIHB1dCB0aGUgcGx1Z2luIGludG8g YSAybmQgbW9kZSBjYWxsZWQgJiM4MjIwO2NvbGxhdGlvbiBtb2RlJiM4MjIxOy4gSW4gdGhp cyBtb2RlIHlvdXIgY2hvc2VuIGZvcm0gaXMgPHN0cm9uZz5ub3Q8L3N0cm9uZz4gZXhlY3V0 ZWQgZm9yIGV2ZXJ5IGltYWdlOyBpdCBpcyBvbmx5IHVzZWQgb25jZSBhdCB0aGUgdmVyeSBl bmQgb2YgdGhlIGxpc3QsIGFmdGVyIGFsbCBpbWFnZXMgaGF2ZSBiZWVuIGludGVybmFsbHkg JiM4MjIwO2NvbGxlY3RlZCYjODIyMTsuIEluIGVmZmVjdCwgdGhlIHBsdWdpbiBidWlsZHMg dXAgYSBnaWFudCBhcnJheSBvZiBhbGwgbWF0Y2hpbmcgaW1hZ2VzIHJlYWR5IGZvciB5b3Ug dG8gb3V0cHV0IHRoZW0gYWxsIGluIG9uZSBnby4gVGhpcyBpcyB2ZXJ5IGhhbmR5IGZvciBk b2luZyBzbGlkZXNob3dzIGFuZCBpcyBiZXN0IGV4cGxhaW5lZCBieSBleGFtcGxlOjwvcD4K Cgk8cD48Y29kZT5jb2xsYXRlPSZxdW90OzEmcXVvdDs8L2NvZGU+PC9wPgoKCTxwPnN3aXRj aGVzIGNvbGxhdGlvbiBtb2RlIG9uLiBJZiB0aGUgcGx1Z2luIG1hdGNoZWQgNCBpbWFnZXMg YW5kIHlvdSB3ZXJlIHRvIHVzZSB0aGUgcmVwbGFjZW1lbnQgdGFnIDxjb2RlPntuYW1lfTwv Y29kZT4gaW4geW91ciBmb3JtIGxpa2UgdGhpczo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+ PGNvZGUgY2xhc3M9ImJsb2NrIj5UaGUgbWF0Y2hpbmcgaW1hZ2VzOiB7bmFtZX0KPC9jb2Rl PjwvcHJlPgoKCTxwPnlvdSBtaWdodCBnZXQgdGhpczo8L3A+Cgo8cHJlIGNsYXNzPSJibG9j ayI+PGNvZGUgY2xhc3M9ImJsb2NrIj5UaGUgbWF0Y2hpbmcgaW1hZ2VzOiBoZXJvbi5qcGcs cGVuZ3Vpbi5qcGcsZW11LmpwZyxwdWZmaW4uanBnCjwvY29kZT48L3ByZT4KCgk8cD5Tb21l dGltZXMgaXQmIzgyMTc7cyB1c2VmdWwgdG8gYmUgYWJsZSB0byBwdXQgcXVvdGVzIGFyb3Vu ZCBlYWNoIGl0ZW0gc28geW91IGNhbiB0ZWxsIGNvbGxhdGUgbW9kZSB0byBkbyB0aGF0IGlu c3RlYWQ6PC9wPgoKCTxwPjxjb2RlPmNvbGxhdGU9JnF1b3Q7cXVvdGU6e25hbWV9JnF1b3Q7 PC9jb2RlPjwvcD4KCgk8cD5Zb3Ugd291bGQgdGhlbiBnZXQ6PC9wPgoKPHByZSBjbGFzcz0i YmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+VGhlIG1hdGNoaW5nIGltYWdlczogJnF1b3Q7 aGVyb24uanBnJnF1b3Q7LCZxdW90O3Blbmd1aW4uanBnJnF1b3Q7LCZxdW90O2VtdS5qcGcm cXVvdDssJnF1b3Q7cHVmZmluLmpwZyZxdW90Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhlIGRl bGltaXRlciAoYSBjb21tYSBpbiB0aGlzIGNhc2UpIGNhbiBiZSBvdmVycmlkZGVuIHdpdGgg dGhlIDxjb2RlPmRlbGltPC9jb2RlPiBhdHRyaWJ1dGUuIFlvdSBtYXkgdXNlIDxjb2RlPnNn bHF1b3RlPC9jb2RlPiB0byB3cmFwIHNpbmdsZSBxdW90ZXMgcm91bmQgdGhlIGl0ZW1zLCBv ciAmIzgyMjA7ZGJscXVvdGUmIzgyMjE7IGFzIGEgc3lub255bSBmb3IgJiM4MjIwO3F1b3Rl JiM4MjIxOyBpZiB5b3UgcHJlZmVyLiBZb3UgY2FuIHF1b3RlIG1vcmUgdGhhbiBvbmUgdGhp bmcgYXQgb25jZSBieSBzcGVjaWZ5aW5nIHRoZSBpdGVtcyBhcyBhIGRlbGltaXRlZCBsaXN0 OjwvcD4KCgk8cD48Y29kZT5jb2xsYXRlPSZxdW90O3F1b3RlOntuYW1lfTp7YWx0fTp7aW1n aW59JnF1b3Q7PC9jb2RlPjwvcD4KCgk8cD5ZZXMsIHlvdSBjYW4gdXNlIGNvbWJvcyEgVGhl IGRlbGltaXRlciB1c2VkIGJldHdlZW4gaXRlbXMgY2FuIGJlIG92ZXJyaWRlbiB3aXRoIHRo ZSA8Y29kZT5wYXJhbWRlbGltPC9jb2RlPiBhdHRyaWJ1dGUuPC9wPgoKCTxwPlRoZSBzZWNv bmQgc3BlY2lhbCBmZWF0dXJlIG9mIGNvbGxhdGlvbiBtb2RlIGlzIHRoYXQgeW91IGRvIG5v dCBoYXZlIHRvIGFsd2F5cyBvdXRwdXQgdGhlIGVudGlyZSBsaXN0LiBZb3UgY2FuIGdyYWIg aW5kaXZpZHVhbCBlbnRpdGllcyBmcm9tIHdpdGhpbiB0aGUgaW50ZXJuYWwgYXJyYXkgYnkg dXNpbmcgdGhlICYjODIxNjsjJiM4MjE3OyBub3RhdGlvbiB0aHVzOjwvcD4KCjxwcmUgY2xh c3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPntuYW1lfSBtaWdodCBvdXRwdXQgJnF1 b3Q7aGVyb24uanBnJnF1b3Q7LCZxdW90O3Blbmd1aW4uanBnJnF1b3Q7LCZxdW90O2VtdS5q cGcmcXVvdDssJnF1b3Q7cHVmZmluLmpwZyZxdW90OyAoYXMgYmVmb3JlKQoobmFtZSMxfSB3 b3VsZCBvbmx5IG91dHB1dCBoZXJvbi5qcGcKKG5hbWUjM30gd291bGQgb25seSBvdXRwdXQg ZW11LmpwZwo8L2NvZGU+PC9wcmU+CgoJPHA+Tm90ZSB0aGF0IHdoZW4gcHVsbGluZyBvdXQg aW5kaXZpZHVhbCBlbnRyaWVzIHRoZXkgPHN0cm9uZz5kbyBub3Q8L3N0cm9uZz4gZ2V0IHF1 b3RlcyBhZGRlZCB0byB0aGVtLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgeW91IHVzZWQgPGNv ZGU+cXVvdGU8L2NvZGU+IG9yIG5vdC4gVGhpcyBpcyBiZWNhdXNlIGl0IGlzIGEgc2luZ2xl IGl0ZW0gc28geW91IGNhbiBlYXNpbHkgcHV0IHRoZSBxdW90ZXMgaW4gdGhlIGZvcm0gaXRz ZWxmICh2aXo6IDxjb2RlPiZxdW90O3tuYW1lfSZxdW90OzwvY29kZT4pPC9wPgoKCTxwPk1l c3NpbmcgYXJvdW5kIHdpdGggcHVsbGluZyBvdXQgaW5kaXZpZHVhbCBpdGVtcyBhbmQgbGlz dHMgY2FuIHlpZWxkIHNvbWUgdmVyeSBpbnRlcmVzdGluZyByZXN1bHRzIGFuZCBhbGxvd3Mg c29tZSBjb21wbGV0ZWx5IHdhY2t5IGdhbGxlcmllcyB0byBiZSBnZW5lcmF0ZWQuIFRyeSBj b21iaW5pbmcgc21kX2dhbGxlcnkgdGFncyB3aXRoIDxjb2RlPiZsdDt0eHA6aWZfZGlmZmVy ZW50Jmd0OzwvY29kZT4gZm9yIGEgcmVhbCBtaW5kIHNjcmFtYmxlIDotKTwvcD4KCgk8aDMg aWQ9ImV4YW1wbGVzIj5FeGFtcGxlczwvaDM+CgoJPHA+VGhlIGV4YW1wbGVzIGFsbCB1c2Ug dGhlIGNsYXNzaWMgem9vIHdlYnNpdGUuIExldCYjODIxNztzIHNwZWNpZnkgc29tZSBwaWN0 dXJlcyB0byBwdWxsIG91dCBvZiB0aGUgZGF0YWJhc2U6PC9wPgoKCTxoNCBpZD0iZWcxIj5F eGFtcGxlIDE6IHNpbXBsZSAvIGxpZ2h0Ym94ZWQgZ2FsbGVyeTwvaDQ+Cgo8cHJlIGNsYXNz PSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9nYWxsZXJ5IGNhdGVn b3J5PSZxdW90O2FuaW1hbHMmcXVvdDsgc3VibGV2ZWw9JnF1b3Q7YWxsJnF1b3Q7IGZvcm09 JnF1b3Q7Z2FsbGVyeSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhhdCBwdWxs cyBvdXQgYWxsIHBpY3R1cmVzIGZyb20gdGhlIGFuaW1hbHMgY2F0ZWdvcnksIGluY2x1ZGlu ZyBhbGwgc3ViLWNhdGVnb3JpZXMsIGFuZCBwYXNzZXMgdGhlbSB0byB0aGUgZm9ybSBjYWxs ZWQgJiM4MjE2O2dhbGxlcnkmIzgyMTc7IGZvciBwcm9jZXNzaW5nLiBUaGUgZm9ybSBjb3Vs ZCBqdXN0IGJlIHRoaXM6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJi bG9jayI+Jmx0O2ltZyBjbGFzcz0mcXVvdDthbmltYWdlJnF1b3Q7IHNyYz0mcXVvdDt7dXJs fSZxdW90OyBhbHQ9JnF1b3Q7e2FsdH0mcXVvdDsgLyZndDsKJmx0O2RpdiBjbGFzcz0mcXVv dDthY2FwdGlvbiZxdW90OyZndDt7dGl0bGV9Jmx0Oy9kaXYmZ3Q7CjwvY29kZT48L3ByZT4K Cgk8cD5UaGF0IG1lYW5zLCBmb3IgZXZlcnkgbWF0Y2hlZCBpbWFnZSwgc3Vic3RpdHV0ZSBp dHMgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4sIGFsdCBhbmQgdGl0bGUgdGFncyBp bnRvIHRoZSByZWxldmFudCBwbGFjZXMuIFRodXMgeW91IGdldCBhIHNlcmllcyBvZiBpbWFn ZXMgb24gdGhlIHBhZ2UsIHdoaWNoIHlvdSBjYW4gc3R5bGUgYWNjb3JkaW5nbHkuPC9wPgoK CTxwPkZvciBhIG1vcmUgZmFuY3kgb3V0cHV0IHVzaW5nLCBzYXksIHNsaW1ib3gsIHlvdSBj b3VsZCBsb2FkIHRoZSByZWxldmFudCBsaWJyYXJpZXMgYW5kIHN0eWxlcyBpbiB0aGUgPGNv ZGU+Jmx0O2hlYWQmZ3Q7PC9jb2RlPiBvZiB5b3VyIHBhZ2U6PC9wPgoKPHByZSBjbGFzcz0i YmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQv amF2YXNjcmlwdCZxdW90OyBzcmM9JnF1b3Q7L2pzL21vb3Rvb2xzLmpzJnF1b3Q7Jmd0OyZs dDsvc2NyaXB0Jmd0OwombHQ7c2NyaXB0IHR5cGU9JnF1b3Q7dGV4dC9qYXZhc2NyaXB0JnF1 b3Q7IHNyYz0mcXVvdDsvanMvc2xpbWJveC5qcyZxdW90OyZndDsmbHQ7L3NjcmlwdCZndDsK Jmx0O2xpbmsgcmVsPSZxdW90O3N0eWxlc2hlZXQmcXVvdDsgdHlwZT0mcXVvdDt0ZXh0L2Nz cyZxdW90OyBocmVmPSZxdW90Oy9jc3Mvc2xpbWJveC5jc3MmcXVvdDsgLyZndDsKPC9jb2Rl PjwvcHJlPgoKCTxwPlRoZW4geW91ciAmIzgyMTY7Z2FsbGVyeSYjODIxNzsgZm9ybSBjb3Vs ZCBiZTo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7 YSByZWw9JnF1b3Q7bGlnaHRib3gte2NhdGVnb3J5fSZxdW90OyBocmVmPSZxdW90O3t1cmx9 JnF1b3Q7IGFsdD0mcXVvdDt7YWx0fSZxdW90OwogICAgIHRpdGxlPSZxdW90O0EgcGljdHVy ZSBvZiB7dGl0bGV9JnF1b3Q7IGhlaWdodD0mcXVvdDt7aGVpZ2h0fSZxdW90OyB3aWR0aD0m cXVvdDt7d2lkdGh9JnF1b3Q7Jmd0OwogJmx0O3R4cDp0aHVtYm5haWwgaWQ9JnF1b3Q7e2lk fSZxdW90OyAvJmd0OwombHQ7L2EmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5Wb2lsYSEgVXNp bmcgdGhlIHNhbWUgc21kX2dhbGxlcnkgdGFnIHlvdSBoYXZlIGNoYW5nZWQgdGhlIHdheSB0 aGUgZ2FsbGVyeSByZW5kZXJzIGZyb20gYSBzaW1wbGUgbGlzdCB0byBhIGZ1bGwtZmVhdHVy ZWQgc2xpbWJveC4gV2l0aCB2aXJ0dWFsbHkgdGhlIHNhbWUgZm9ybSB5b3UgY2FuIHN3aXRj aCB0aGUgb3V0cHV0IHRvIHRoaWNrYm94LCBsaWdodGJveCwgbGl0ZWJveCwgbW9vbmJveCBv ciB3aGF0ZXZlci15b3UtbGlrZS1ib3ggZGVwZW5kaW5nIG9uIHdoaWNoIGxpYnJhcmllcyB5 b3UgbG9hZC4gRm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgZm9yIHlvdXIgZmF2b3VyaXRlIGVm ZmVjdCBhbmQgcGx1ZyBpdCBpbnRvIHNtZF9nYWxsZXJ5LjwvcD4KCgk8aDQgaWQ9ImVnMiI+ RXhhbXBsZSAyOiBsYXVuY2ggZnJvbSBvbmUgaW1hZ2U8L2g0PgoKCTxwPkEgY29tbW9uIHJl cXVlc3QgaXMgdG8gYmUgYWJsZSB0byAmIzgyMjA7bGF1bmNoJiM4MjIxOyBhIHNsaW1ib3gg Z2FsbGVyeSBmcm9tIGEgc2luZ2xlIGltYWdlIG9yIHRleHQgbGluay4gVXNpbmcgYSBzaW5n bGUgaW1hZ2U6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+ Jmx0O3R4cDpzbWRfZ2FsbGVyeSBjYXRlZ29yeT0mcXVvdDthbmltYWxzJnF1b3Q7CiAgICAg aWQ9JnF1b3Q7P2FydGljbGVfaW1hZ2UmcXVvdDsgc3VibGV2ZWw9JnF1b3Q7YWxsJnF1b3Q7 CiAgICAgZm9ybT0mcXVvdDtnYWxsZXJ5JnF1b3Q7IHRodW1ibGltaXQ9JnF1b3Q7MSZxdW90 OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+Tm90ZSB0aGF0IHRoaXMgdGltZSB3ZSBhcmUg YWRkaW5nIHRvIHRoZSBnYWxsZXJ5IHRoZSBpbWFnZShzKSBwdWxsZWQgZnJvbSB0aGUgYXJ0 aWNsZS1pbWFnZSBmaWVsZCBvZiB0aGUgY3VycmVudCBhcnRpY2xlLiBUaGUgZm9ybSB3aWxs IHVzZSB0aGUgc3BlY2lhbCA8Y29kZT57b2JqZWN0fTwvY29kZT4gcmVwbGFjZW1lbnQgdGFn LiBUaGUgcGx1Z2luIG9ubHkgZGlzcGxheXMgdGhpcyBwYXJ0IGlmIHRoZSB2YWx1ZSBvZiB0 aHVtYmxpbWl0IGhhcyA8c3Ryb25nPm5vdDwvc3Ryb25nPiBiZWVuIHJlYWNoZWQ6PC9wPgoK PHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O2EgcmVsPSZxdW90 O2xpZ2h0Ym94LXNtZCZxdW90OyBocmVmPSZxdW90O3t1cmx9JnF1b3Q7IGFsdD0mcXVvdDt7 YWx0fSZxdW90OwogICAgIHRpdGxlPSZxdW90O0EgcGljdHVyZSBvZiB7dGl0bGV9JnF1b3Q7 IGhlaWdodD0mcXVvdDt7aGVpZ2h0fSZxdW90OyB3aWR0aD0mcXVvdDt7d2lkdGh9JnF1b3Q7 Jmd0Owp7b2JqZWN0fQombHQ7L2EmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5DaGFuZ2UgdGhl IHN0YXJ0IGltYWdlIGJ5IHNwZWNpZnlpbmcgPGNvZGU+dGh1bWJvZmZzZXQ8L2NvZGU+ICYj ODIxMjsgbm90ZSB0aGlzIHdpbGwgYWxzbyBzdGFydCB0aGUgbGlnaHRib3ggZWZmZWN0IGZy b20gdGhlIGltYWdlIHlvdSBjaG9vc2UuIElmIHlvdSB3YW50IHRvIHN0YXJ0IG9uIGEgc3Bl Y2lmaWMgaW1hZ2UgaW4gcG9zaXRpb24gMSwgdXNlIHRoZSA8Y29kZT5pZDwvY29kZT4gYXR0 cmlidXRlIHRvIGJyaW5nIGl0IHRvIHRoZSB0b3Agb2YgdGhlIGxpc3QsIG9yIGNoYW5nZSB0 aGUgc29ydCBvcmRlci48L3A+CgoJPHA+SWYgeW91IHdhbnRlZCB0byBsYXVuY2ggdGhlIGdh bGxlcnkgZnJvbSBhIHRleHQgbGluaywgbW9kaWZ5IHRoZSB0YWcgbGlrZSB0aGlzOjwvcD4K CjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2dh bGxlcnkgY2F0ZWdvcnk9JnF1b3Q7YW5pbWFscyZxdW90OwogICAgIGlkPSZxdW90Oz9hcnRp Y2xlX2ltYWdlJnF1b3Q7IHN1YmxldmVsPSZxdW90O2FsbCZxdW90OwogICAgIGZvcm09JnF1 b3Q7Z2FsbGVyeSZxdW90OyB0aHVtYmxpbWl0PSZxdW90OzEmcXVvdDsKICAgICB0ZXh0PSZx dW90O0NsaWNrIHRvIHN0YXJ0IGxpZ2h0Ym94JnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4K Cgk8aDQgaWQ9ImVnMyI+RXhhbXBsZSAzOiBwb3B1cCBnYWxsZXJ5PC9oND4KCgk8cD5UbyBh Y2hpZXZlIGFuIGVmZmVjdCBzaW1pbGFyIHRvIHJzc190aHVtYnBvcCwgYWRkIGFuIGltYWdl IGFuZCBjYXB0aW9uIHBsYWNlaG9sZGVyIG91dHNpZGUgdGhlIGNhbGwgdG8gc21kX2dhbGxl cnksIHRoZW4gaW5jbHVkZSB5b3VyIHNtZF9nYWxsZXJ5IHRhZyBhcyB1c3VhbC4gVGhpcyB0 aW1lIHdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gYWxsIHRoZSBwaWN0dXJlcyBmcm9tIHRo ZSBjYXRlZ29yaWVzIHVwIHRvIHR3byBsZXZlbHMgYmVsb3cgYm90aCAmIzgyMjA7YW5pbWFs cyYjODIyMTsgYW5kIHdoaWNoZXZlciBjYXRlZ29yaWVzIGFyZSBsaXN0ZWQgaW4gPGNvZGU+ bXlfY3VzdG9tX2ZpZWxkPC9jb2RlPjo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUg Y2xhc3M9ImJsb2NrIj4mbHQ7aW1nIGlkPSZxdW90O2Z1bGxzaXplJnF1b3Q7IHNyYz0mcXVv dDsvaW1hZ2VzL2VtcHR5LmpwZyZxdW90OyAvJmd0OwombHQ7c3BhbiBpZD0mcXVvdDtmdWxs Y2FwdGlvbiZxdW90OyZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDt0eHA6c21kX2dhbGxlcnkgc3Vi bGV2ZWw9JnF1b3Q7MiZxdW90OwogICAgIGNhdGVnb3J5PSZxdW90O2FuaW1hbHMsID9teV9j dXN0b21fZmllbGQmcXVvdDsKICAgICBmb3JtPSZxdW90O2dhbGxlcnkmcXVvdDsgLyZndDsK PC9jb2RlPjwvcHJlPgoKCTxwPlRoZSBnYWxsZXJ5IGZvcm0gbG9va3Mgc2NhcnkgYnV0IGlz IG9ubHkgYSB0aHVtYm5haWwgaW1hZ2Ugc3Vycm91bmRlZCBieSBhIHNpbXBsZSBhbmNob3Ig dGFnIHdpdGggdHdvIGFjdGlvbnMgYXNzaWduZWQgdG8gaXQ6IGEgbW91c2VvdmVyIHRvIGNv cHkgdGhlIHBpY3R1cmUgYW5kIGNhcHRpb24gaW50byB0aGUgcGxhY2Vob2xkZXI7IGFuZCBh IG1vdXNlb3V0IHRvIHJlbW92ZSB0aGVtOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29k ZSBjbGFzcz0iYmxvY2siPiZsdDthIGhyZWY9JnF1b3Q7e3VybH0mcXVvdDsgdGl0bGU9JnF1 b3Q7e3RpdGxlfSZxdW90OwogICAgIG9ubW91c2VvdmVyPSZxdW90O2RvY3VtZW50LmdldEVs ZW1lbnRCeUlkKCYjMzk7ZnVsbHNpemUmIzM5Oykuc3JjID0gdGhpcy5ocmVmOwogICAgIGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCYjMzk7ZnVsbGNhcHRpb24mIzM5OykuaW5uZXJIVE1M ID0gdGhpcy50aXRsZTsgcmV0dXJuIGZhbHNlJnF1b3Q7CiAgICAgb25tb3VzZW91dD0mcXVv dDtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgmIzM5O2Z1bGxzaXplJiMzOTspLnNyYyA9ICYj Mzk7L2ltYWdlcy8xNy5qcGcmIzM5OzsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgm IzM5O2Z1bGxjYXB0aW9uJiMzOTspLmlubmVySFRNTCA9ICYjMzk7JiMzOTs7IHJldHVybiBm YWxzZTsmcXVvdDsmZ3Q7CiAgJmx0O2ltZyBzcmM9JnF1b3Q7e3RodW1idXJsfSZxdW90OyBh bHQ9JnF1b3Q7e2FsdH0mcXVvdDsgLyZndDsKJmx0Oy9hJmd0Owo8L2NvZGU+PC9wcmU+CgoJ PHA+Tm90ZSB0aGVyZSBhcmUgbXVjaCBuZWF0ZXIgd2F5cyBvZiBkb2luZyB0aGlzIGFuZCBp dCYjODIxNztzIG5vdCByZWNvbW1lbmRlZCB0byB1c2UgdGhpcyBmb3JtIGluIGEgbGl2ZSBz aXRlLCBidXQgaXQgZ2l2ZXMgYSBmbGF2b3VyIG9mIHdoYXQgaXMgcG9zc2libGUuPC9wPgoK CTxoNCBpZD0iZWc0Ij5FeGFtcGxlIDQ6IHNsaWRlc2hvdzwvaDQ+CgoJPHA+VGhpcyBvbmUg dXNlcyBjb2xsYXRlIG1vZGUgYnV0IGlzIG5vdCBtdWNoIG1vcmUgZGlmZmljdWx0IHRvIHVu ZGVyc3RhbmQuIEluIHlvdXIgPGNvZGU+Jmx0O2hlYWQmZ3Q7PC9jb2RlPiBzZWN0aW9uOjwv cD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtzY3JpcHQg dHlwZT0mcXVvdDt0ZXh0L2phdmFzY3JpcHQmcXVvdDsgc3JjPSZxdW90Oy9qcy9tb290b29s cy5qcyZxdW90OyZndDsmbHQ7L3NjcmlwdCZndDsKJmx0O3NjcmlwdCB0eXBlPSZxdW90O3Rl eHQvamF2YXNjcmlwdCZxdW90OyBzcmM9JnF1b3Q7L2pzL3NsaWRlc2hvdy5qcyZxdW90OyZn dDsmbHQ7L3NjcmlwdCZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoZSB0YWc6PC9wPgoKPHBy ZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZ2FsbGVy eQogIGNhdGVnb3J5PSZxdW90O2JpcmRzLCBmaXNoJnF1b3Q7IGZvcm09JnF1b3Q7Z2FsbGVy eSZxdW90OwogIGNvbWJvPSZxdW90O2ltZ2xpc3Q6e2lkfXtleHR9JnF1b3Q7CiAgY29sbGF0 ZT0mcXVvdDtxdW90ZTp7aW1nbGlzdH06e2FsdH0mcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJl PgoKCTxwPlRoYXQgcHVsbHMgYWxsIHBpY3R1cmVzIGZyb20gdGhlIGJpcmRzIGFuZCBmaXNo IGNhdGVnb3JpZXMuIEFsdGhvdWdoIHRlY2huaWNhbGx5IHVubmVjZXNzYXJ5LCBhIGNvbWJv IGhhcyBiZWVuIGRlZmluZWQgdG8gc2hvdyBob3cgaXQgY2FuIGJlIHVzZWQuIFRoaXMgY29t Ym8gaXMgY2FsbGVkIDxjb2RlPmltZ2xpc3Q8L2NvZGU+IGFuZCBpcyBkZWZpbmVkIGFzIHRo ZSBpbWFnZSYjODIxNztzIElEIG51bWJlciBwbHVzIGl0cyBleHRlbnNpb24uIFdlIHVzZSB0 aGlzIGluIHRoZSBjb2xsYXRlIGF0dHJpYnV0ZSBhbmQgdGVsbCBpdCB0byBwdXQgZG91Ymxl IHF1b3RlcyByb3VuZCBldmVyeSBpdGVtIGluICYjODIxNjtpbWdsaXN0JiM4MjE3OyBhbmQg JiM4MjE2O2FsdCYjODIxNzsuIFRoZW4gd2UgY2FuIHB1dCB0aGVzZSB2YWx1ZXMgaW50byB0 aGUgbmVjZXNzYXJ5IGphdmFzY3JpcHQgdG8gZ2VuZXJhdGUgdGhlIHNsaWRlc2hvdzo8L3A+ Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7ZGl2IGNsYXNz PSZxdW90O3NsaWRlc2hvdyZxdW90OyBpZD0mcXVvdDtzbGlkZXNob3cxJnF1b3Q7Jmd0Owog Jmx0O2ltZyBzcmM9JnF1b3Q7Jmx0O3R4cDpzaXRlX3VybCAvJmd0O2ltYWdlcy97aWQjMX0u anBnJnF1b3Q7CiAgICAgYWx0PSZxdW90O3thbHQjMX0mcXVvdDsgd2lkdGg9JnF1b3Q7e3dp ZHRoIzF9JnF1b3Q7IGhlaWdodD0mcXVvdDt7aGVpZ2h0IzF9JnF1b3Q7IC8mZ3Q7CiZsdDsv ZGl2Jmd0Owo8L2NvZGU+Cjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3NjcmlwdCB0eXBlPSZx dW90O3RleHQvamF2YXNjcmlwdCZxdW90OyZndDsKbXlTaG93MSA9IG5ldyBTbGlkZXNob3co JnF1b3Q7c2xpZGVzaG93MSZxdW90OywKICB7IGh1OiAmcXVvdDsmbHQ7dHhwOnNpdGVfdXJs IC8mZ3Q7aW1hZ2VzLyZxdW90OywKICAgIGltYWdlczogW3tpbWdsaXN0fV0sCiAgICBjYXB0 aW9uczogW3thbHR9XSwKICAgIGNsYXNzZXM6IFsmcXVvdDtwcmV2JnF1b3Q7LCZxdW90O25l eHQmcXVvdDssJnF1b3Q7YWN0aXZlJnF1b3Q7XSwKICAgIHR5cGU6ICZxdW90O2ZhZGUmcXVv dDsKICB9KTsKJmx0Oy9zY3JpcHQmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5Ob3RlIHRoYXQg dGhlIGluaXRpYWwgcG9ydGlvbiAoaW4gdGhlIGRpdiBhbmQgaW1nIHRhZ3MpIHVzZXMgdGhl ICYjODIxNjsjJiM4MjE3OyBub3RhdGlvbiBiZWNhdXNlIHdlIG9ubHkgd2FudCB0byBkaXNw bGF5IG9uZSBpbWFnZSB0byAmIzgyMjA7c3RhcnQmIzgyMjE7IHRoZSBzbGlkZXNob3cuIElu IHRoaXMgY2FzZSB3ZSYjODIxNztyZSB1c2luZyB0aGUgZmlyc3QgaW1hZ2UgaW4gdGhlIGxp c3QsIGJ1dCB5b3UgY2FuIGNoYW5nZSB0aGUgIzEgZm9yICM0MiBpZiB5b3Ugd2FudGVkIHRv IHNob3cgdGhlIGZvcnR5LXNlY29uZCBpbWFnZSBpbnN0ZWFkISBUaGUgcGFydCBpbiB0aGUg c2NyaXB0IHRhZyB1c2VzIHRoZSBmdWxsLCBxdW90ZWQgbGlzdHMgYmVjYXVzZSB0aGF0JiM4 MjE3O3MgdGhlIGZvcm1hdCB0aGUgamF2YXNjcmlwdCByZXF1aXJlcy48L3A+CgoJPGg0IGlk PSJlZzUiPkV4YW1wbGUgNTogcGFnaW5hdGlvbjwvaDQ+CgoJPHA+VG8gYWRkIHBhZ2luZyB0 byBhIGdhbGxlcnkgeW91IHVzZSB0aGUgPGNvZGU+bGltaXQ8L2NvZGU+IGF0dHJpYnV0ZSB0 byBzaG93IGEgbnVtYmVyIG9mIHRodW1icyBwZXIgcGFnZS4gRm9yIGEgcGFnZWQgdGh1bWJw b3AgZ2FsbGVyeSB0aGF0IHNob3dzIGZpdmUgdGh1bWJzIHBlciBwYWdlOjwvcD4KCjxwcmUg Y2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtpbWcgaWQ9JnF1b3Q7ZnVs bHNpemUmcXVvdDsgc3JjPSZxdW90Oy9pbWFnZXMvZW1wdHkuanBnJnF1b3Q7IC8mZ3Q7CiZs dDtzcGFuIGlkPSZxdW90O2Z1bGxjYXB0aW9uJnF1b3Q7Jmd0OyZsdDsvc3BhbiZndDsKJmx0 O3R4cDpzbWRfZ2FsbGVyeSBjYXRlZ29yeT0mcXVvdDthbmltYWxzJnF1b3Q7CiAgZm9ybT0m cXVvdDtnYWxsZXJ5JnF1b3Q7IHBhZ2Vmb3JtPSZxdW90O2dhbGxlcnlfbmF2JnF1b3Q7CiAg bGltaXQ9JnF1b3Q7NSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhlICYjODIx NjtnYWxsZXJ5JiM4MjE3OyBmb3JtIGlzIGlkZW50aWNhbCB0byB0aGUgb25lIGluIDxhIGhy ZWY9IiNlZzQiPmV4YW1wbGUgNDwvYT4sIHdoaWxlIHlvdXIgZ2FsbGVyeV9uYXYgZm9ybSBt aWdodCBsb29rIGxpa2UgdGhpczo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xh c3M9ImJsb2NrIj4mbHQ7ZGl2IGNsYXNzPSZxdW90O3RvdGFsJnF1b3Q7Jmd0OyMgb2YgcGlj czoge3RvdGFsaW1hZ2VzfSZsdDsvZGl2Jmd0OwogICAgIHtuYXZmaXJzdH0ge25hdnByZXZ9 CiAgICAge25hdmVhcmxpZXJ9IHtuYXZ0aGlzfSB7bmF2bGF0ZXJ9CiAgICAge25hdm5leHR9 IHtuYXZsYXN0fQo8L2NvZGU+PC9wcmU+CgoJPHA+VGhhdCBtaWdodCByZW5kZXIgc29tZXRo aW5nIHNpbWlsYXIgdG8gdGhpcyBiZWxvdyB0aGUgdGh1bWJzOjwvcD4KCjxwcmUgY2xhc3M9 ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiMgb2YgcGljczogMzgKICAgICBGaXJzdCAm bHQ7IDEgMiAzIDQgNSA2IDcgOCAmZ3Q7IExhc3QKPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGVz OjwvcD4KCgk8dWw+CgkJPGxpPlVzZSB7bmF2dGhpc3VybH0gaWYgeW91IHdhbnQgdGhlIGN1 cnJlbnQgcGFnZSBoeXBlcmxpbmtlZDwvbGk+CgkJPGxpPlRoZSBjdXJyZW50IGl0ZW0gYWx3 YXlzIGhhcyBhIGNsYXNzIG9mICYjODIyMDtjdXJyZW50JiM4MjIxOzwvbGk+CgkJPGxpPlVz ZSB0aGUgPGNvZGU+bmF2d3JhcHRhZzwvY29kZT4sIDxjb2RlPm5hdmJyZWFrPC9jb2RlPiwg YW5kIDxjb2RlPm5hdmNsYXNzPC9jb2RlPiB0YWcgYXR0cmlidXRlcyB0byBzcGVjaWZ5IGl0 ZW1zIHRvIHdyYXAgYXJvdW5kIHRoZSBlbnRpcmUgcGFnZWZvcm0uIFRoZSBkZWZhdWx0cyBh cmU6IDxjb2RlPnVsPC9jb2RlPiwgPGNvZGU+bGk8L2NvZGU+LCBhbmQgPGNvZGU+c21kX2dh bGxlcnlfbmF2PC9jb2RlPiByZXNwZWN0aXZlbHk8L2xpPgoJCTxsaT5Zb3UgY2FuIGxhYmVs IG5hdmZpcnN0LCBuYXZsYXN0LCBuYXZwcmV2LCBuYXZuZXh0IGFuZCBuYXZ0aGlzIGJ5IHNw ZWNpZnlpbmcgdGhlbSBsaWtlIHRoaXM6IDxjb2RlPntuYXZwcmV2OlByZXZpb3VzfTwvY29k ZT4gKHRoZSAmIzgyMTY7OiYjODIxNzsgZGVsaW1pdGVyIGluIHRoaXMgY2FzZSBpcyB0aGUg aXRlbSBzcGVjaWZpZWQgYnkgcGFyYW1kZWxpbSk8L2xpPgoJCTxsaT5uYXZlYXJsaWVyIGFu ZCBuYXZsYXRlciB3aWxsIGJ5IGRlZmF1bHQgc2hvdyBhbGwgcGFnZXMgYmVmb3JlIGFuZCBh ZnRlciB0aGUgY3VycmVudCBvbmUuIFlvdSBjYW4gb3ZlcnJpZGUgdGhpcyBieSBzcGVjaWZ5 aW5nIHRoZSBudW1iZXIgb2YgcGFnZXMgeW91IHdhbnQgdG8gc2hvdyBlaXRoZXIgc2lkZS4g ZS5nLiBpZiB5b3Ugd2VyZSBvbiBwYWdlIDkgb2YgMTUsIHtuYXZlYXJsaWVyOjR9IHtuYXZs YXRlcjozfSB3b3VsZCBzaG93IDxjb2RlPiZsdDsmbHQ7IDUgNiA3IDggOSAxMCAxMSAxMiAm Z3Q7Jmd0OzwvY29kZT48L2xpPgoJPC91bD4KCgk8aDMgaWQ9ImNoYW5nZWxvZyI+Q2hhbmdl bG9nPC9oMz4KCgk8cD5BbGwgYXZhaWxhYmxlIHZlcnNpb25zIGFuZCBjaGFuZ2VzIGFyZSBs aXN0ZWQgaGVyZS48L3A+CgoJPHA+PHN0cm9uZz5CZXRhPC9zdHJvbmc+PC9wPgoKCTx1bD4K CQk8bGk+MTQgRmViIDA4IHwgPGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL2Rvd25s b2Fkcy9zbWRfZ2FsbGVyeV92MC4xLnR4dCI+MC4xPC9hPiBbIDxhIGhyZWY9Imh0dHA6Ly9z dGVmZGF3c29uLmNvbS9kb3dubG9hZHMvc21kX2dhbGxlcnlfdjAuMV96aXAudHh0Ij5jb21w cmVzc2VkPC9hPiBdIHwgSW5pdGlhbCByZWxlYXNlICYjODIxMTsgSGFwcHkgVmFsZW50aW5l cyBEYXkgOi0pPC9saT4KCQk8bGk+MTkgRmViIDA4IHwgPGEgaHJlZj0iaHR0cDovL3N0ZWZk YXdzb24uY29tL2Rvd25sb2Fkcy9zbWRfZ2FsbGVyeV92MC4yLnR4dCI+MC4yPC9hPiBbIDxh IGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9kb3dubG9hZHMvc21kX2dhbGxlcnlfdjAu Ml96aXAudHh0Ij5jb21wcmVzc2VkPC9hPiBdIHwgQWRkZWQgPGEgaHJlZj0iaHR0cDovL2Zv cnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP3BpZD0xNzI0NTkjcDE3MjQ1OSI+ e2dhbGxlcnlpZH08L2E+ICh0aGFua3MgcmxvYWRlcnJvKSBhbmQgc29tZSBza2VsZXRvbiBk b2NzPC9saT4KCTwvdWw+CgoJPHA+PHN0cm9uZz5PZmZpY2lhbDwvc3Ryb25nPjwvcD4KCgk8 dWw+CgkJPGxpPjExIE1hciAwOCB8IDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9k b3dubG9hZHMvc21kX2dhbGxlcnlfdjAuMy50eHQiPjAuMzwvYT4gWyA8YSBocmVmPSJodHRw Oi8vc3RlZmRhd3Nvbi5jb20vZG93bmxvYWRzL3NtZF9nYWxsZXJ5X3YwLjNfemlwLnR4dCI+ Y29tcHJlc3NlZDwvYT4gXSB8IE9mZmljaWFsIHB1YmxpYyByZWxlYXNlLiBGaXhlZCBzaWxs eSBlbXB0eSBmaWVsZCBidWc7IGFkZGVkIHtjb3VudGVyfSwge2luZGV4fSBhbmQgdGhlIHRv dGFscyAoYWxsIHRoYW5rcyA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29t L3ZpZXd0b3BpYy5waHA/cGlkPTE3MzQ5MCNwMTczNDkwIj5qYWtvYjwvYT4pPC9saT4KCTwv dWw+CgoJPGgzIGlkPSJjcmVkaXRzIj5DcmVkaXRzPC9oMz4KCgk8cD5UaGlzIHBsdWdpbiB3 b3VsZG4mIzgyMTc7dCBoYXZlIGV4aXN0ZWQgd2l0aG91dCB0aGUgYXdlc29tZSBtaW5kIG9m IFJvYmVydCBXZXR6bG1heXIuIEhpcyB3ZXRfZm9yX2VhY2hfaW1hZ2UgcGx1Z2luIGlzIHRy dWUgZ2VuaXVzOyB0aGlzIHNpbXBseSBzdGFuZHMgb24gdGhlIHNob3VsZGVycyBvZiB0aGF0 IGlkZWEgYW5kIHJvbGxzIGluIGEgc291cGVkIHVwIHZlcnNpb24gb2YgdGhlIHRodW1ibmFp bCBnZW5lcmF0aW9uIGVuZ2luZSBmcm9tIHNtZF9zbGltYm94LiBUbyB0aGF0IGVuZCwgdGhl IHBsdWdpbiBpcyBhbHNvIGluZGVidGVkIHRvIGFueW9uZSB3aG8gaGFzIHBvc3RlZCBmZWF0 dXJlcyBvciBidWcgcmVwb3J0cyB0byBtZSBvciB0aGUgc21kX3NsaW1ib3ggdGhyZWFkLiBZ b3UmIzgyMTc7cmUgYWxsIG1hcnZlbGxvdXMuPC9wPgoKCTxwPjwvZGl2PjwvcD4KPCEtLSAt LS0gQkVHSU4gUExVR0lOIENTUyAtLS0gLS0+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiNz bWRfaGVscCB7IGxpbmUtaGVpZ2h0OjEuMyA7fQojc21kX2hlbHAgY29kZSB7IGZvbnQtd2Vp Z2h0OmJvbGQ7IGZvbnQ6IDEwNSUvMTMwJSAiQ291cmllciBOZXciLCBjb3VyaWVyLCBtb25v c3BhY2U7IGJhY2tncm91bmQtY29sb3I6ICNGRkZGQ0M7fQojc21kX2hlbHAgY29kZS5ibG9j ayB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgYm9yZGVyOjFweCBkb3R0ZWQgIzk5OTsgYmFja2dy b3VuZC1jb2xvcjogI2YwZTY4YzsgZGlzcGxheTpibG9jazsgbWFyZ2luOjEwcHggMTBweCAy MHB4OyBwYWRkaW5nOjEwcHg7IH0KI3NtZF9oZWxwIGE6bGluaywgI3NtZF9oZWxwIGE6dmlz aXRlZCB7IGNvbG9yOiBibHVlOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGJvcmRlci1ib3R0 b206IDFweCBzb2xpZCBibHVlOyBwYWRkaW5nLWJvdHRvbToxcHg7fQojc21kX2hlbHAgYTpo b3ZlciwgI3NtZF9oZWxwIGE6YWN0aXZlIHsgY29sb3I6IGJsdWU7IHRleHQtZGVjb3JhdGlv bjogbm9uZTsgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIGJsdWU7IHBhZGRpbmctYm90dG9t OjFweDt9CiNzbWRfaGVscCBoMSB7IGNvbG9yOiAjMzY5OyBmb250OiAyMHB4IEdlb3JnaWEs IHNhbnMtc2VyaWY7IG1hcmdpbjogMDsgdGV4dC1hbGlnbjogY2VudGVyOyB9CiNzbWRfaGVs cCBoMiB7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjazsgcGFkZGluZzoxMHB4IDAg MDsgY29sb3I6ICMzNjk7IGZvbnQ6IDE3cHggR2VvcmdpYSwgc2Fucy1zZXJpZjsgfQojc21k X2hlbHAgaDMgeyBjb2xvcjogIzY5MzsgZm9udDogYm9sZCAxMnB4IEFyaWFsLCBzYW5zLXNl cmlmOyBsZXR0ZXItc3BhY2luZzogMXB4OyBtYXJnaW46IDEwcHggMCAwO3RleHQtdHJhbnNm b3JtOiB1cHBlcmNhc2U7fQojc21kX2hlbHAgaDQgeyBmb250OiBib2xkIDExcHggQXJpYWws IHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAwIDAgO3Rl eHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0KI3NtZF9oZWxwIC5hdHQtbmFtZSB7IGZvbnQt d2VpZ2h0OmJvbGQ7IH0KI3NtZF9oZWxwIC5tYW5kIHsgYmFja2dyb3VuZDojZWVlOyBib3Jk ZXI6MXB4IGRvdHRlZCAjOTk5OyB9CiNzbWRfaGVscCB0YWJsZSB7d2lkdGg6MTAwJTsgdGV4 dC1hbGlnbjpjZW50ZXI7IHBhZGRpbmctYm90dG9tOjFlbTt9CiNzbWRfaGVscCB0ZCwgI3Nt ZF9oZWxwIHRoIHtib3JkZXI6MXB4IHNvbGlkICM5OTk7IHBhZGRpbmc6LjVlbSAwO30KPC9z dHlsZT4KPCEtLSAtLS0gRU5EIFBMVUdJTiBDU1MgLS0tIC0tPgoiO3M6MzoibWQ1IjtzOjMy OiI3NjZhNGI0ZGVlOWVkNzBlNWIzZGE1NGMyMDZkZmI0YyI7fQ==