# Name: etc_pagination v0.4.4 # Type: Public plugin # Google-style pagination # Author: Oleg Loukianov # URL: http://www.iut-fbleau.fr/projet/etc/ # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern CMS - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjE0OiJldGNfcGFnaW5hdGlvbiI7czo2OiJhdXRob3IiO3M6 MTQ6Ik9sZWcgTG91a2lhbm92IjtzOjEwOiJhdXRob3JfdXJpIjtzOjM2OiJodHRwOi8vd3d3 Lml1dC1mYmxlYXUuZnIvcHJvamV0L2V0Yy8iO3M6NzoidmVyc2lvbiI7czo1OiIwLjQuNCI7 czoxMToiZGVzY3JpcHRpb24iO3M6MjM6Ikdvb2dsZS1zdHlsZSBwYWdpbmF0aW9uIjtzOjQ6 ImNvZGUiO3M6MTU0ODM6Ii8vIFRYUCA0LjYgdGFnIHJlZ2lzdHJhdGlvbg0KaWYgKGNsYXNz X2V4aXN0cygnVGV4dHBhdHRlcm5fVGFnX1JlZ2lzdHJ5JykpIHsNCglUeHA6OmdldCgnVGV4 dHBhdHRlcm5fVGFnX1JlZ2lzdHJ5JykNCgkJLT5yZWdpc3RlcignZXRjX3BhZ2luYXRpb24n KQ0KCQktPnJlZ2lzdGVyKCdldGNfbnVtcGFnZXMnKQ0KCQktPnJlZ2lzdGVyKCdldGNfb2Zm c2V0JykNCgk7DQp9DQoNCmZ1bmN0aW9uIGV0Y19wYWdpbmF0aW9uKCRhdHRzLCAkdGhpbmc9 JycpIHsNCglnbG9iYWwgJHRoaXNwYWdlLCAkcHJldGV4dDsNCg0KCWV4dHJhY3QobEF0dHMo YXJyYXkoDQoJCSJyb290Ij0+bnVsbCwNCgkJInF1ZXJ5Ij0+JycsDQoJCSJwYWdlcyI9Pm51 bGwsDQovLwkJImxpbmtzIj0+bnVsbCwNCgkJInBhZ2UiPT5udWxsLA0KCQkicGdjb3VudGVy Ij0+J3BnJywNCgkJIm9mZnNldCI9PjAsDQoJCSJyYW5nZSI9Pi0xLA0KCQkibWFzayI9Pm51 bGwsDQoJCSJsaW5rIj0+J3sqfScsDQoJCSJjdXJyZW50Ij0+JycsDQoJCSJuZXh0Ij0+Jycs DQoJCSJwcmV2Ij0+JycsDQoJCSJmaXJzdCI9Pm51bGwsDQoJCSJsYXN0Ij0+bnVsbCwNCgkJ ImdhcCI9PicmaGVsbGlwOycsDQoJCSJkZWxpbWl0ZXIiPT4nLCcsDQoJCSJ3cmFwdGFnIj0+ JycsDQoJCSJicmVhayI9PicnLA0KCQkiY2xhc3MiPT4nJywNCgkJImh0bWxfaWQiPT4nJywN CgkJImF0dHMiPT4nJywNCgkJInJldmVyc2VudW1iZXJvcmRlciI9PicwJw0KCSksJGF0dHMp KTsNCg0KCSRjcGFnZXMgPSAwOw0KCWlmKCFpc3NldCgkcGFnZXMpKSB7DQoJCSRudW1iZXJP ZlRhYnMgPSBpc3NldCgkdGhpc3BhZ2VbJ251bVBhZ2VzJ10pID8gJHRoaXNwYWdlWydudW1Q YWdlcyddIDogMTsNCgkJJHBhZ2VzID0gJG51bWJlck9mVGFicyA+IDEgPyByYW5nZSgxLCAk bnVtYmVyT2ZUYWJzKSA6IG51bGw7DQoJfQ0KCWVsc2VpZihzdHJwb3MoJHBhZ2VzLCAkZGVs aW1pdGVyKSAhPT0gZmFsc2UpIHsNCgkJJGNwYWdlcyA9IChzdHJwb3MoJHBhZ2VzLCAnOjon KSAhPT0gZmFsc2UgPyAyIDogMSk7DQoJCSRudW1iZXJPZlRhYnMgPSBjb3VudCgkcGFnZXMg PSBkb19saXN0KCRwYWdlcywgJGRlbGltaXRlcikpOw0KCX0NCgllbHNlaWYoc3RycG9zKCRw YWdlcywgJy4uJykgIT09IGZhbHNlKSB7DQoJCSRjcGFnZXMgPSAxOw0KCQlsaXN0KCRzdGFy dCwgJGVuZCkgPSBkb19saXN0KCRwYWdlcywgJy4uJyk7DQoJCSRudW1iZXJPZlRhYnMgPSBj b3VudCgkcGFnZXMgPSByYW5nZSgkc3RhcnQsICRlbmQpKTsNCgl9IGVsc2Ugew0KCQkkbnVt YmVyT2ZUYWJzID0gaW50dmFsKCRwYWdlcyk7DQoJCSRwYWdlcyA9IHJhbmdlKDEsICRudW1i ZXJPZlRhYnMpOw0KCX0NCg0KCWlmKCRudW1iZXJPZlRhYnMgPD0gMSkgcmV0dXJuIHBhcnNl KEV2YWxFbHNlKCR0aGluZywgMCkpOw0KDQoJIyBpZiB3ZSBnb3QgdGFicywgc3RhcnQgdGhl IG91dHB1dHRpbmcNCglpZihpc3NldCgkbGlua3MpKSAkbGlua3MgPSBhcnJheV9wYWQoZG9f bGlzdCgkbGlua3MsICRkZWxpbWl0ZXIpLCAkbnVtYmVyT2ZUYWJzLCAnJyk7DQoJZWxzZWlm KCRjcGFnZXMgPCAyKSBpZigkcmV2ZXJzZW51bWJlcm9yZGVyKSAkbGlua3MgPSBhcnJheV9y ZXZlcnNlKCRwYWdlcyk7IGVsc2UgJGxpbmtzID0gJiRwYWdlczsNCg0KCSRyYW5nZSA9IChp bnQpICRyYW5nZTsNCglpZigkcmFuZ2UgPCAwKSAkcmFuZ2UgPSAkbnVtYmVyT2ZUYWJzOyBl bHNlICRyYW5nZSArPSAxOw0KDQoJJG91dCA9ICRwYXJ0cyA9IGFycmF5KCk7DQoJJGZyYWdt ZW50ID0gJyc7DQoJaWYoJHJvb3QgPT09ICcnKSAkaHUgPSBodTsNCgllbHNlaWYoJHJvb3Qg PT09IG51bGwgfHwgJHJvb3RbMF0gPT09ICcjJykgeyRodSA9IHN0cnRvaygkcHJldGV4dFsn cmVxdWVzdF91cmknXSwgJz8nKTsgJHBhcnRzID0gJF9HRVQ7IGlmKCRyb290KSAkZnJhZ21l bnQgPSAkcm9vdDt9DQoJZWxzZSB7DQoJCSRxcyA9IHBhcnNlX3VybCgkcm9vdCk7DQoJCWlm KGlzc2V0KCRxc1snZnJhZ21lbnQnXSkpICRyb290ID0gc3RyX3JlcGxhY2UoJGZyYWdtZW50 ID0gJyMnLiRxc1snZnJhZ21lbnQnXSwgJycsICRyb290KTsNCgkJaWYoIWVtcHR5KCRxc1sn cXVlcnknXSkpIHBhcnNlX3N0cihzdHJfcmVwbGFjZSgnJmFtcDsnLCAnJicsICRxc1sncXVl cnknXSksICRwYXJ0cyk7DQoJCSRodSA9IHN0cnRvaygkcm9vdCwgJz8nKTsNCgl9DQoNCglp ZigkcXVlcnkpIGZvcmVhY2goZG9fbGlzdCgkcXVlcnksICcmJykgYXMgJHFzKSB7DQoJCUBs aXN0KCRrLCAkdikgPSBleHBsb2RlKCc9JywgJHFzLCAyKTsNCgkJaWYoaXNzZXQoJHYpKSBp ZigkayA9PT0gJyMnKSAkZnJhZ21lbnQgPSAnIycuJHY7IGVsc2UgJHBhcnRzWyRrXSA9ICR2 Ow0KCQllbHNlaWYoJGsgPT09ICc/JykgJHBhcnRzID0gYXJyYXkoKTsNCgkJZWxzZWlmKCRr ID09PSAnIycpICRmcmFnbWVudCA9ICcnOw0KCQllbHNlIHVuc2V0KCRwYXJ0c1ska10pOw0K CX0NCg0KCWlmKGlzc2V0KCRwYWdlKSkNCgkJaWYoISRjcGFnZXMpICRwZ2RlZmF1bHQgPSBp bnR2YWwoJHBhZ2UpOw0KCQllbHNlaWYoJGNwYWdlcyA9PSAxKQ0KCQkJaWYoKCRwZ2RlZmF1 bHQgPSBhcnJheV9zZWFyY2goJHBhZ2UsICRwYWdlcykpICE9PSBmYWxzZSkgJHBnZGVmYXVs dCsrOw0KCQkJZWxzZSAkcGdkZWZhdWx0ID0gMDsNCgkJZWxzZSBmb3IoJHBnZGVmYXVsdCA9 ICRudW1iZXJPZlRhYnM7ICRwZ2RlZmF1bHQgPiAwICYmIHN0cnBvcygkcGFnZXNbJHBnZGVm YXVsdC0xXS4nOjonLCAkcGFnZS4nOjonKSAhPT0gMDsgJHBnZGVmYXVsdC0tKTsNCgllbHNl ICRwZ2RlZmF1bHQgPSAkcmV2ZXJzZW51bWJlcm9yZGVyID8gJG51bWJlck9mVGFicyA6IDE7 DQoJaWYoaXNzZXQoJHBhcnRzWyRwZ2NvdW50ZXJdKSkNCgkJaWYoJGNwYWdlcyA8IDIpDQoJ CQlpZigoJHBhZ2UgPSBhcnJheV9zZWFyY2goJHBhcnRzWyRwZ2NvdW50ZXJdLCAkbGlua3Mp KSAhPT0gZmFsc2UpICRwYWdlKys7DQoJCQllbHNlICRwYWdlID0gMDsNCgkJZWxzZSBmb3Io JHBhZ2UgPSAkbnVtYmVyT2ZUYWJzOyAkcGFnZSA+IDAgJiYgc3RycG9zKCRwYWdlc1skcGFn ZS0xXS4nOjonLCAkcGFydHNbJHBnY291bnRlcl0uJzo6JykgIT09IDA7ICRwYWdlLS0pOw0K CWVsc2UgJHBhZ2UgPSAkcGdkZWZhdWx0Ow0KCSRwYWdlICs9ICRvZmZzZXQ7DQovLwlpZigk cGFnZSA8IDEgfHwgJHBhZ2UgPiAkbnVtYmVyT2ZUYWJzKSByZXR1cm4gcGFyc2UoRXZhbEVs c2UoJHRoaW5nLCAwKSk7DQoNCgl1bnNldCgkcGFydHNbJHBnY291bnRlcl0pOw0KCSRxcyA9 IGFycmF5KCk7Ly9qb2luX3FzKCRwYXJ0cyk7DQoJZm9yZWFjaCgkcGFydHMgYXMgJGsgPT4g JHYpICRxc1tdID0gdXJsZW5jb2RlKCRrKSAuICc9JyAuIHVybGVuY29kZShpc19hcnJheSgk dikgPyBpbXBsb2RlKCcsJywgJHYpIDogJHYpOw0KCSRxcyA9ICc/Jy5pbXBsb2RlKCcmYW1w OycsICRxcyk7DQoJJHBhZ2ViYXNlID0gJHFzICE9PSAnPycgPyAkaHUuJHFzIDogJGh1Ow0K CWlmKCRxcyAhPT0gJz8nKSAkcXMgLj0gJyZhbXA7JzsNCgkkcGFnZXVybCA9ICRwZ2NvdW50 ZXIgPyAkaHUuJHFzLiRwZ2NvdW50ZXIuJz0nIDogJyc7DQoNCgkkY3VycmVudGNsYXNzID0g KGVtcHR5KCR0aGluZykgJiYgJGN1cnJlbnQgJiYgc3RycG9zKCRsaW5rLCAne2N1cnJlbnR9 JykgPT09IGZhbHNlID8gKCRicmVhayA/IDEgOiAtMSkgOiAwKTsNCg0KCUBsaXN0KCRnYXAx LCAkZ2FwMikgPSBleHBsb2RlKCRkZWxpbWl0ZXIsICRnYXApOyBpZighaXNzZXQoJGdhcDIp KSAkZ2FwMiA9ICRnYXAxOw0KCUBsaXN0KCRsaW5rLCAkbGlua18pID0gZXhwbG9kZSgkZGVs aW1pdGVyLCAkbGluaywgMik7IGlmKCFpc3NldCgkbGlua18pKSAkbGlua18gPSAkbGluazsN Cglmb3JlYWNoKGFycmF5KCdmaXJzdCcsICdwcmV2JywgJ25leHQnLCAnbGFzdCcsICdjdXJy ZW50JykgYXMgJGl0ZW0pIGlmKGlzc2V0KCQkaXRlbSkpDQoJCXtAbGlzdCgkJGl0ZW0sICR7 JGl0ZW0uJ18nfSkgPSBleHBsb2RlKCRkZWxpbWl0ZXIsICQkaXRlbSwgMik7IGlmKCFpc3Nl dCgkeyRpdGVtLidfJ30pKSAkeyRpdGVtLidfJ30gPSAnJzt9DQoJaWYoJGN1cnJlbnRjbGFz cykge2lmKCRjdXJyZW50KSAkY3VycmVudCA9ICIgY2xhc3M9JyRjdXJyZW50JyI7IGlmKCRj dXJyZW50XykgJGN1cnJlbnRfID0gIiBjbGFzcz0nJGN1cnJlbnRfJyI7fQ0KDQoJJHNraXAx ID0gJHJhbmdlIDwgMyA/ICRyYW5nZSA6IDEgKyAoJGdhcDEgPyAxIDogMCkgKyAoaXNzZXQo JGZpcnN0KSA/IDAgOiAxKTsNCgkkc2tpcDIgPSAkcmFuZ2UgPCAzID8gJHJhbmdlIDogMSAr ICgkZ2FwMiA/IDEgOiAwKSArIChpc3NldCgkbGFzdCkgPyAwIDogMSk7DQoJaWYoJG51bWJl ck9mVGFicyA8IDIqJHJhbmdlKSB7JGxvb3BTdGFydCA9IDE7ICRsb29wRW5kID0gJG51bWJl ck9mVGFiczt9DQoJZWxzZWlmKCRwYWdlIDw9ICRyYW5nZSkgeyRsb29wU3RhcnQgPSAxOyAk bG9vcEVuZCA9IDIqJHJhbmdlIC0gJHNraXAyO30NCgllbHNlaWYoJHBhZ2UgPiAkbnVtYmVy T2ZUYWJzIC0gJHJhbmdlKSB7JGxvb3BTdGFydCA9ICRudW1iZXJPZlRhYnMgLSAyKiRyYW5n ZSArICRza2lwMSArIDE7ICRsb29wRW5kID0gJG51bWJlck9mVGFiczt9DQoJZWxzZSB7JGxv b3BTdGFydCA9ICRwYWdlIC0gJHJhbmdlICsgJHNraXAxOyAkbG9vcEVuZCA9ICRwYWdlICsg JHJhbmdlIC0gJHNraXAyO30NCg0KDQoJaWYoJGN1c3RvbSA9IGlzc2V0KCRtYXNrKSkgew0K CQlpZihpc3NldCgkdGhpbmcpKSB7JGxpbmsgPSBzdHJfcmVwbGFjZSgne2xpbmt9JywgJGxp bmssICR0aGluZyk7ICRsaW5rXyA9IHN0cl9yZXBsYWNlKCd7bGlua30nLCAkbGlua18sICR0 aGluZyk7fQ0KCQkkdGhpbmcgPSAkbWFzazsNCgl9DQoJZWxzZWlmKCFpc3NldCgkdGhpbmcp KSB7DQoJCWlmKCRsaW5rKSAkbGluayA9ICc8YSBocmVmPSJ7aHJlZn0iIHJlbD0ie3JlbH0i Jy4oJGN1cnJlbnRjbGFzcyA8IDAgPyAne2N1cnJlbnR9JyA6ICcnKS4nPicuJGxpbmsuJzwv YT4nOw0KCQlpZigkbGlua18pICRsaW5rXyA9ICc8c3BhbiBkYXRhLXJlbD0ic2VsZiInLigk Y3VycmVudGNsYXNzIDwgMCA/ICd7Y3VycmVudH0nIDogJycpLic+Jy4kbGlua18uJzwvc3Bh bj4nOw0KCQlmb3JlYWNoKGFycmF5KCdmaXJzdCcsICdwcmV2JywgJ25leHQnLCAnbGFzdCcp IGFzICRpdGVtKSB7DQoJCQlpZighZW1wdHkoJCRpdGVtKSkgJCRpdGVtID0gJzxhIGhyZWY9 IntocmVmfSIgcmVsPSJ7cmVsfSI+Jy4kJGl0ZW0uJzwvYT4nOw0KCQkJaWYoIWVtcHR5KCR7 JGl0ZW0uJ18nfSkpICR7JGl0ZW0uJ18nfSA9ICc8c3BhbiBkYXRhLXJlbD0iJy4kaXRlbS4n Ij4nLiR7JGl0ZW0uJ18nfS4nPC9zcGFuPic7DQoJCX0NCgkJaWYoJGdhcDEpICRnYXAxID0g JzxzcGFuIGRhdGEtcmVsPSJnYXAiPicuJGdhcDEuJzwvc3Bhbj4nOw0KCQlpZigkZ2FwMikg JGdhcDIgPSAnPHNwYW4gZGF0YS1yZWw9ImdhcCI+Jy4kZ2FwMi4nPC9zcGFuPic7DQoJCSR0 aGluZyA9ICd7bGlua30nOy8vJzxhIGhyZWY9IntocmVmfSIgcmVsPSJ7cmVsfSIgZGF0YS1y ZWw9IntyZWx9Ij57bGlua308L2E+JzsNCgl9DQoJZWxzZSAkdGhpbmcgPSBFdmFsRWxzZSgk dGhpbmcsIDEpOw0KCSRyZXBsYWNlbWVudHMgPSBhcnJheV9maWxsX2tleXMoYXJyYXkoJ3sq fScsICd7I30nLCAneyR9JywgJ3tocmVmfScsICd7cmVsfScsICd7bGlua30nKSwgJycpOw0K CSRyZXBsYWNlbWVudHNbJ3twYWdlc30nXSA9ICRudW1iZXJPZlRhYnM7DQoJJHJlcGxhY2Vt ZW50c1sne2N1cnJlbnR9J10gPSAkY3VycmVudF87DQoJJG1hc2sgPSBhcnJheV9maWxsX2tl eXMoYXJyYXkoJ3tsaW5rc30nLCAne2ZpcnN0fScsICd7cHJldn0nLCAne25leHR9JywgJ3ts YXN0fScsICd7PCt9JywgJ3srPn0nKSwgJycpOw0KDQoJJG91dGZpcnN0ID0gJG91dHByZXYg PSAkb3V0Z2FwID0gJyc7DQoJaWYoJHByZXYgfHwgJHByZXZfKSB7DQoJCWlmKCRwYWdlID4g MSkgaWYoJGNwYWdlcyA+IDEpIEBsaXN0KCRyZXBsYWNlbWVudHNbJ3sjfSddLCAkcmVwbGFj ZW1lbnRzWyd7Kn0nXSkgPSBleHBsb2RlKCc6OicsICRwYWdlc1skcGFnZS0yXS4nOjonLiRw YWdlc1skcGFnZS0yXSk7DQoJCQllbHNlIHskcmVwbGFjZW1lbnRzWyd7Kn0nXSA9ICRwYWdl c1skcGFnZS0yXTsgJHJlcGxhY2VtZW50c1sneyN9J10gPSAkbGlua3NbJHBhZ2UtMl07fQ0K CQllbHNlICRyZXBsYWNlbWVudHNbJ3sjfSddID0gJHJlcGxhY2VtZW50c1sneyp9J10gPSAn JzsNCgkJJHJlcGxhY2VtZW50c1sneyR9J10gPSAkcGFnZS0xOw0KLy8JCWlmKCRyZXZlcnNl bnVtYmVyb3JkZXIpICRyZXBsYWNlbWVudHNbJ3skfSddID0gJG51bWJlck9mVGFicy0kcmVw bGFjZW1lbnRzWyd7JH0nXSsxOw0KCQkkcmVwbGFjZW1lbnRzWyd7aHJlZn0nXSA9ICgkcmVw bGFjZW1lbnRzWyd7JH0nXSA9PSAkcGdkZWZhdWx0ID8gJHBhZ2ViYXNlIDogJHBhZ2V1cmwu JHJlcGxhY2VtZW50c1sneyN9J10pLiRmcmFnbWVudDsNCgkJJHJlcGxhY2VtZW50c1sne3Jl bH0nXSA9ICdwcmV2JzsNCgkJJHJlcGxhY2VtZW50c1sne2xpbmt9J10gPSAkbWFza1sne3By ZXZ9J10gPSBzdHJ0cigkcGFnZSA+IDEgPyAkcHJldiA6ICRwcmV2XywgJHJlcGxhY2VtZW50 cyk7DQoJCWlmKCEkY3VzdG9tICYmICRyZXBsYWNlbWVudHNbJ3tsaW5rfSddKSAkb3V0cHJl diA9IHN0cnRyKCR0aGluZywgJHJlcGxhY2VtZW50cyk7DQoJfQ0KDQoJaWYoJGxvb3BTdGFy dCA+IDEgJiYgJHJhbmdlID4gMSB8fCBpc3NldCgkZmlyc3QpKSB7DQoJCWlmKCRjcGFnZXMg PiAxKSBAbGlzdCgkcmVwbGFjZW1lbnRzWyd7I30nXSwgJHJlcGxhY2VtZW50c1sneyp9J10p ID0gZXhwbG9kZSgnOjonLCAkcGFnZXNbMF0uJzo6Jy4kcGFnZXNbMF0pOw0KCQllbHNlIHsk cmVwbGFjZW1lbnRzWyd7Kn0nXSA9ICRwYWdlc1swXTsgJHJlcGxhY2VtZW50c1sneyN9J10g PSAkbGlua3NbMF07fQ0KCQkkcmVwbGFjZW1lbnRzWyd7JH0nXSA9IDE7DQovLwkJaWYoJHJl dmVyc2VudW1iZXJvcmRlcikgJHJlcGxhY2VtZW50c1sneyR9J10gPSAkbnVtYmVyT2ZUYWJz LSRyZXBsYWNlbWVudHNbJ3skfSddKzE7DQoJCSRyZXBsYWNlbWVudHNbJ3tocmVmfSddID0g KCRyZXBsYWNlbWVudHNbJ3skfSddID09ICRwZ2RlZmF1bHQgPyAkcGFnZWJhc2UgOiAkcGFn ZXVybC4kcmVwbGFjZW1lbnRzWyd7I30nXSkuJGZyYWdtZW50Ow0KCQkkcmVwbGFjZW1lbnRz Wyd7cmVsfSddID0gJyc7DQoJCSRyZXBsYWNlbWVudHNbJ3tsaW5rfSddID0gJG1hc2tbJ3tm aXJzdH0nXSA9IHN0cnRyKGlzc2V0KCRmaXJzdCkgPyAoJHBhZ2UgPiAxID8gJGZpcnN0IDog JGZpcnN0XykgOiAkbGluaywgJHJlcGxhY2VtZW50cyk7DQoJCWlmKCEkY3VzdG9tICYmICRy ZXBsYWNlbWVudHNbJ3tsaW5rfSddKSAkb3V0Zmlyc3QgPSBzdHJ0cigkdGhpbmcsICRyZXBs YWNlbWVudHMpOw0KCQlpZigkZ2FwMSAmJiAkbG9vcFN0YXJ0ID4gMSkgDQoJCQlpZigkY3Vz dG9tKSAkbWFza1snezwrfSddID0gJGdhcDE7IGVsc2UgJG91dGdhcCA9ICRnYXAxOw0KCX0N Cg0KCWlmKCRmaXJzdCkgew0KCQlpZigkb3V0Zmlyc3QpICRvdXRbXSA9ICRvdXRmaXJzdDsg aWYoJG91dHByZXYpICRvdXRbXSA9ICRvdXRwcmV2Ow0KCX0gZWxzZSB7DQoJCWlmKCRvdXRw cmV2KSAkb3V0W10gPSAkb3V0cHJldjsgaWYoJG91dGZpcnN0KSAkb3V0W10gPSAkb3V0Zmly c3Q7DQoJfQ0KCWlmKCRvdXRnYXApICRvdXRbXSA9ICRvdXRnYXA7DQoNCglpZigkbGluayB8 fCAkbGlua18pIGZvcigkaT0kbG9vcFN0YXJ0OyAkaTw9JGxvb3BFbmQ7ICRpKyspIHsNCgkJ aWYoJGNwYWdlcyA+IDEpIEBsaXN0KCRyZXBsYWNlbWVudHNbJ3sjfSddLCAkcmVwbGFjZW1l bnRzWyd7Kn0nXSkgPSBleHBsb2RlKCc6OicsICRwYWdlc1skaS0xXS4nOjonLiRwYWdlc1sk aS0xXSk7DQoJCWVsc2UgeyRyZXBsYWNlbWVudHNbJ3sqfSddID0gJHBhZ2VzWyRpLTFdOyAk cmVwbGFjZW1lbnRzWyd7I30nXSA9ICRsaW5rc1skaS0xXTt9DQoJCSRyZXBsYWNlbWVudHNb J3skfSddID0gJGk7DQovLwkJaWYoJHJldmVyc2VudW1iZXJvcmRlcikgJHJlcGxhY2VtZW50 c1sneyR9J10gPSAkbnVtYmVyT2ZUYWJzLSRyZXBsYWNlbWVudHNbJ3skfSddKzE7DQoJCSRy ZXBsYWNlbWVudHNbJ3tocmVmfSddID0gKCRyZXBsYWNlbWVudHNbJ3skfSddID09ICRwZ2Rl ZmF1bHQgPyAkcGFnZWJhc2UgOiAkcGFnZXVybC4kcmVwbGFjZW1lbnRzWyd7I30nXSkuJGZy YWdtZW50Ow0KCQkkc2VsZiA9ICRpID09ICRwYWdlOw0KCQkkcmVwbGFjZW1lbnRzWyd7cmVs fSddID0gJGkgPT0gJHBhZ2UtMSA/ICdwcmV2JyA6ICgkaSA9PSAkcGFnZSsxID8gJ25leHQn IDogJycpOw0KCQkkcmVwbGFjZW1lbnRzWyd7Y3VycmVudH0nXSA9ICRzZWxmID8gJGN1cnJl bnQgOiAkY3VycmVudF87DQoJCWlmKCRyZXBsYWNlbWVudHNbJ3tsaW5rfSddID0gc3RydHIo JHNlbGYgPyAkbGlua18gOiAkbGluaywgJHJlcGxhY2VtZW50cykpDQoJCQlpZigkY3VzdG9t KSAkbWFza1sne2xpbmtzfSddIC49ICRyZXBsYWNlbWVudHNbJ3tsaW5rfSddOw0KCQkJZWxz ZSAkb3V0W10gPSAoJGN1cnJlbnRjbGFzcyA+IDAgPyAoJHNlbGYgPyAne2N1cnJlbnR9JyA6 ICd7Y3VycmVudF99JykgOiAnJykuc3RydHIoJHRoaW5nLCAkcmVwbGFjZW1lbnRzKTsNCgl9 DQoNCgkkb3V0bGFzdCA9ICRvdXRuZXh0ID0gJG91dGdhcCA9ICcnOw0KCSRyZXBsYWNlbWVu dHNbJ3tjdXJyZW50fSddID0gJGN1cnJlbnRfOw0KCWlmKCRsb29wRW5kIDwgJG51bWJlck9m VGFicyAmJiAkcmFuZ2UgPiAxIHx8IGlzc2V0KCRsYXN0KSkgew0KCQlpZigkY3BhZ2VzID4g MSkgQGxpc3QoJHJlcGxhY2VtZW50c1sneyN9J10sICRyZXBsYWNlbWVudHNbJ3sqfSddKSA9 IGV4cGxvZGUoJzo6JywgJHBhZ2VzWyRudW1iZXJPZlRhYnMtMV0uJzo6Jy4kcGFnZXNbJG51 bWJlck9mVGFicy0xXSk7DQoJCWVsc2UgeyRyZXBsYWNlbWVudHNbJ3sqfSddID0gJHBhZ2Vz WyRudW1iZXJPZlRhYnMtMV07ICRyZXBsYWNlbWVudHNbJ3sjfSddID0gJGxpbmtzWyRudW1i ZXJPZlRhYnMtMV07fQ0KCQkkcmVwbGFjZW1lbnRzWyd7JH0nXSA9ICRudW1iZXJPZlRhYnM7 DQovLwkJaWYoJHJldmVyc2VudW1iZXJvcmRlcikgJHJlcGxhY2VtZW50c1sneyR9J10gPSAk bnVtYmVyT2ZUYWJzLSRyZXBsYWNlbWVudHNbJ3skfSddKzE7DQoJCSRyZXBsYWNlbWVudHNb J3tocmVmfSddID0gKCRyZXBsYWNlbWVudHNbJ3skfSddID09ICRwZ2RlZmF1bHQgPyAkcGFn ZWJhc2UgOiAkcGFnZXVybC4kcmVwbGFjZW1lbnRzWyd7I30nXSkuJGZyYWdtZW50Ow0KCQkk cmVwbGFjZW1lbnRzWyd7cmVsfSddID0gJyc7DQoJCSRyZXBsYWNlbWVudHNbJ3tsaW5rfSdd ID0gJG1hc2tbJ3tsYXN0fSddID0gc3RydHIoaXNzZXQoJGxhc3QpID8gKCRwYWdlIDwgJG51 bWJlck9mVGFicyA/ICRsYXN0IDogJGxhc3RfKSA6ICRsaW5rLCAkcmVwbGFjZW1lbnRzKTsN CgkJaWYoJGdhcDIgJiYgJGxvb3BFbmQgPCAkbnVtYmVyT2ZUYWJzKSANCgkJCWlmKCRjdXN0 b20pICRtYXNrWyd7Kz59J10gPSAkZ2FwMjsgZWxzZSAkb3V0Z2FwID0gJGdhcDI7DQoJCWlm KCEkY3VzdG9tICYmICRyZXBsYWNlbWVudHNbJ3tsaW5rfSddKSAkb3V0bGFzdCA9IHN0cnRy KCR0aGluZywgJHJlcGxhY2VtZW50cyk7DQoJfQ0KDQoJaWYoJG5leHQgfHwgJG5leHRfKSB7 DQoJCWlmKCRwYWdlIDwgJG51bWJlck9mVGFicykgaWYoJGNwYWdlcyA+IDEpIEBsaXN0KCRy ZXBsYWNlbWVudHNbJ3sjfSddLCAkcmVwbGFjZW1lbnRzWyd7Kn0nXSkgPSBleHBsb2RlKCc6 OicsICRwYWdlc1skcGFnZV0uJzo6Jy4kcGFnZXNbJHBhZ2VdKTsNCgkJCWVsc2UgeyRyZXBs YWNlbWVudHNbJ3sqfSddID0gJHBhZ2VzWyRwYWdlXTsgJHJlcGxhY2VtZW50c1sneyN9J10g PSAkbGlua3NbJHBhZ2VdO30NCgkJZWxzZSAkcmVwbGFjZW1lbnRzWyd7I30nXSA9ICRyZXBs YWNlbWVudHNbJ3sqfSddID0gJyc7DQoJCSRyZXBsYWNlbWVudHNbJ3skfSddID0gJHBhZ2Ur MTsNCi8vCQlpZigkcmV2ZXJzZW51bWJlcm9yZGVyKSAkcmVwbGFjZW1lbnRzWyd7JH0nXSA9 ICRudW1iZXJPZlRhYnMtJHJlcGxhY2VtZW50c1sneyR9J10rMTsNCgkJJHJlcGxhY2VtZW50 c1sne2hyZWZ9J10gPSAoJHJlcGxhY2VtZW50c1sneyR9J10gPT0gJHBnZGVmYXVsdCA/ICRw YWdlYmFzZSA6ICRwYWdldXJsLiRyZXBsYWNlbWVudHNbJ3sjfSddKS4kZnJhZ21lbnQ7DQoJ CSRyZXBsYWNlbWVudHNbJ3tyZWx9J10gPSAnbmV4dCc7DQoJCSRyZXBsYWNlbWVudHNbJ3ts aW5rfSddID0gJG1hc2tbJ3tuZXh0fSddID0gc3RydHIoJHBhZ2UgPCAkbnVtYmVyT2ZUYWJz ID8gJG5leHQgOiAkbmV4dF8sICRyZXBsYWNlbWVudHMpOw0KCQlpZighJGN1c3RvbSAmJiAk cmVwbGFjZW1lbnRzWyd7bGlua30nXSkgJG91dG5leHQgPSBzdHJ0cigkdGhpbmcsICRyZXBs YWNlbWVudHMpOw0KCX0NCg0KCWlmKCRvdXRnYXApICRvdXRbXSA9ICRvdXRnYXA7DQoJaWYo JGxhc3QpIHsNCgkJaWYoJG91dG5leHQpICRvdXRbXSA9ICRvdXRuZXh0OyBpZigkb3V0bGFz dCkgJG91dFtdID0gJG91dGxhc3Q7DQoJfSBlbHNlIHsNCgkJaWYoJG91dGxhc3QpICRvdXRb XSA9ICRvdXRsYXN0OyBpZigkb3V0bmV4dCkgJG91dFtdID0gJG91dG5leHQ7DQoJfQ0KDQoJ aWYoJGF0dHMpICRhdHRzID0gJyAnLiRhdHRzOw0KCWlmKCRjdXN0b20pICRvdXQgPSBhcnJh eShzdHJ0cigkdGhpbmcsICRtYXNrKSk7DQoJaWYoJHJldmVyc2VudW1iZXJvcmRlcikgJG91 dCA9IGFycmF5X3JldmVyc2UoJG91dCk7DQoJJG91dCA9IGRvV3JhcCgkb3V0LCAkd3JhcHRh ZywgJGJyZWFrLCAkY2xhc3MsICcnLCAkYXR0cywgJycsICRodG1sX2lkKTsNCglpZigkY3Vy cmVudGNsYXNzID4gMCkgJG91dCA9IHN0cl9yZXBsYWNlKGFycmF5KCI8JGJyZWFrPntjdXJy ZW50fSIsICI8JGJyZWFrPntjdXJyZW50X30iKSwgYXJyYXkoIjx7JGJyZWFrfXskY3VycmVu dH0+IiwgIjx7JGJyZWFrfXskY3VycmVudF99PiIpLCAkb3V0KTsNCglyZXR1cm4gcGFyc2Uo JG91dCk7DQp9DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCglmdW5jdGlvbiBldGNfbnVtcGFnZXMoJGF0dHMp DQoJew0KCQlnbG9iYWwgJHByZXRleHQsICRwcmVmcywgJHRoaXNwYWdlLCAkZXRjX3BhZ2lu YXRpb25fdG90YWw7DQoJCWlmKGVtcHR5KCRhdHRzKSAmJiBpc3NldCgkdGhpc3BhZ2UpKSB7 JGV0Y19wYWdpbmF0aW9uX3RvdGFsID0gJHRoaXNwYWdlWyd0b3RhbCddOyByZXR1cm4gZW1w dHkoJHRoaXNwYWdlWydudW1QYWdlcyddKSA/IDEgOiAkdGhpc3BhZ2VbJ251bVBhZ2VzJ107 fQ0KCQlleHRyYWN0KCRwcmV0ZXh0KTsNCgkJaWYoZW1wdHkoJGF0dHNbJ3RhYmxlJ10pICYm ICFpc3NldCgkYXR0c1sndG90YWwnXSkpIHsNCgkJCSRjdXN0b21GaWVsZHMgPSBnZXRDdXN0 b21GaWVsZHMoKTsNCgkJCSRjdXN0b21sQXR0cyA9IGFycmF5X251bGwoYXJyYXlfZmxpcCgk Y3VzdG9tRmllbGRzKSk7DQoJCX0gZWxzZSAkY3VzdG9tRmllbGRzID0gJGN1c3RvbWxBdHRz ID0gYXJyYXkoKTsNCg0KCQkvL2dldHRpbmcgYXR0cmlidXRlcw0KCQlleHRyYWN0KGxBdHRz KGFycmF5KA0KCQkJJ3RhYmxlJyAgICAgICAgID0+ICcnLA0KCQkJJ3RvdGFsJyAgICAgICAg ID0+IG51bGwsDQoJCQknbGltaXQnICAgICAgICAgPT4gMTAsDQoJCQkncGFnZWJ5JyAgICAg ICAgPT4gJycsDQoJCQknY2F0ZWdvcnknICAgICAgPT4gJycsDQoJCQknc2VjdGlvbicgICAg ICAgPT4gJycsDQoJCQknZXhjbHVkZScgICAgICAgPT4gJycsDQoJCQknaW5jbHVkZScgICAg ICAgPT4gJycsDQoJCQknZXhjZXJwdGVkJyAgICAgPT4gJycsDQoJCQknYXV0aG9yJyAgICAg ICAgPT4gJycsDQoJCQkncmVhbG5hbWUnICAgICAgID0+ICcnLA0KCQkJJ21vbnRoJyAgICAg ICAgID0+ICcnLA0KCQkJJ2tleXdvcmRzJyAgICAgID0+ICcnLA0KCQkJJ2V4cGlyZWQnICAg ICAgID0+ICRwcmVmc1sncHVibGlzaF9leHBpcmVkX2FydGljbGVzJ10sDQoJCQknaWQnICAg ICAgICAgICAgPT4gJycsDQoJCQkndGltZScgICAgICAgICAgPT4gJ3Bhc3QnLA0KCQkJJ3N0 YXR1cycgICAgICAgID0+ICc0JywNCgkJCSdvZmZzZXQnICAgICAgICA9PiAwDQoJCSkrJGN1 c3RvbWxBdHRzLCAkYXR0cykpOw0KDQoJCWlmKCEoJHBhZ2VieSA9IGludHZhbChlbXB0eSgk cGFnZWJ5KSA/ICRsaW1pdCA6ICRwYWdlYnkpKSkgcmV0dXJuIDA7DQoJCWlmKGlzc2V0KCR0 b3RhbCkpIHJldHVybiBjZWlsKGludHZhbCgkdG90YWwpLyRwYWdlYnkpOw0KDQoJCSR3aGVy ZSA9IGFycmF5KCIxIik7DQoNCgkJLy9CdWlsZGluZyBxdWVyeSBwYXJ0cw0KCQkkY2F0ZWdv cnkgID0gam9pbigiJywnIiwgZG9TbGFzaChkb19saXN0KCRjYXRlZ29yeSkpKTsNCgkJaWYo JGNhdGVnb3J5KSAkd2hlcmVbXSA9ICEkdGFibGUgPyAiKENhdGVnb3J5MSBJTiAoJyIuJGNh dGVnb3J5LiInKSBvciBDYXRlZ29yeTIgSU4gKCciLiRjYXRlZ29yeS4iJykpIiA6ICJjYXRl Z29yeSBJTiAoJyIuJGNhdGVnb3J5LiInKSI7DQoJCWlmKCRhdXRob3IpICR3aGVyZVtdID0g KCEkdGFibGUgPyAiQXV0aG9ySUQiIDogImF1dGhvciIpLiIgSU4gKCciLmpvaW4oIicsJyIs IGRvU2xhc2goZG9fbGlzdCgkYXV0aG9yKSkpLiInKSI7DQoJCWlmKCRpZCkgJHdoZXJlW10g PSAiSUQgSU4gKCIuam9pbignLCcsIGFycmF5X21hcCgnaW50dmFsJywgZG9fbGlzdCgkaWQp KSkuIikiOw0KCQlpZigkc3RhdHVzICYmICghJHRhYmxlIHx8ICR0YWJsZSA9PSAnZmlsZScp KSAkd2hlcmVbXSA9ICdTdGF0dXMgaW4oJy5pbXBsb2RlKCcsJywgZG9TbGFzaChkb19saXN0 KCRzdGF0dXMpKSkuJyknOw0KCQlpZiAoJHJlYWxuYW1lKSB7DQoJCQkkYXV0aG9ybGlzdCA9 IHNhZmVfY29sdW1uKCduYW1lJywgJ3R4cF91c2VycycsICJSZWFsTmFtZSBJTiAoJyIuIGpv aW4oIicsJyIsIGRvQXJyYXkoZG9TbGFzaChkb19saXN0KCRyZWFsbmFtZSkpLCAndXJsZGVj b2RlJykpIC4iJykiICk7DQoJCQkkd2hlcmVbXSA9ICghJHRhYmxlID8gIkF1dGhvcklEIiA6 ICJhdXRob3IiKS4iIElOICgnIi5qb2luKCInLCciLCBkb1NsYXNoKCRhdXRob3JsaXN0KSku IicpIjsNCgkJfQ0KCQlpZighJHRhYmxlKSB7DQoJCQlpZigkc2VjdGlvbikgJHdoZXJlW10g PSAiU2VjdGlvbiBJTiAoJyIuam9pbigiJywnIiwgZG9TbGFzaChkb19saXN0KCRzZWN0aW9u KSkpLiInKSI7DQoJCQlpZigkbW9udGgpICR3aGVyZVtdID0gIlBvc3RlZCBsaWtlICciLmRv U2xhc2goJG1vbnRoKS4iJSciOw0KCQkJaWYoJGV4Y2VycHRlZD09J3knIHx8ICRleGNlcnB0 ZWQ9PScxJykgJHdoZXJlW10gPSAiRXhjZXJwdCAhPScnIjsNCgkJCXN3aXRjaCAoJHRpbWUp IHsNCgkJCQljYXNlICdwYXN0JzoNCgkJCQkJJHdoZXJlW10gPSAiUG9zdGVkIDw9IG5vdygp IjsgYnJlYWs7DQoJCQkJY2FzZSAnZnV0dXJlJzoNCgkJCQkJJHdoZXJlW10gPSAiUG9zdGVk ID4gbm93KCkiOyBicmVhazsNCgkJCX0NCgkJCWlmICghJGV4cGlyZWQpIHsNCgkJCQkkd2hl cmVbXSA9ICIobm93KCkgPD0gRXhwaXJlcyBvciBFeHBpcmVzID0gIi5OVUxMREFURVRJTUUu IikiOw0KCQkJfQ0KCQkJLy9BbGxvdyBrZXl3b3JkcyBmb3Igbm8tY3VzdG9tIGFydGljbGVz LiBUaGF0IHRhZ2dpbmcgbW9kZSwgeW91IGtub3cNCgkJCWlmICgka2V5d29yZHMpIHsNCgkJ CQkka2V5cyA9IGRvU2xhc2goZG9fbGlzdCgka2V5d29yZHMpKTsNCgkJCQlmb3JlYWNoICgk a2V5cyBhcyAka2V5KSB7DQoJCQkJCSRrZXlwYXJ0c1tdID0gIkZJTkRfSU5fU0VUKCciLiRr ZXkuIicsS2V5d29yZHMpIjsNCgkJCQl9DQoJCQkJJHdoZXJlW10gPSAiKCIgLiBqb2luKCcg b3IgJywka2V5cGFydHMpIC4gIikiOw0KCQkJfQ0KCQl9IGVsc2Ugew0KCQkJaWYoJGluY2x1 ZGUpICR3aGVyZVtdID0gIm5hbWUgSU4gKCciLmpvaW4oIicsJyIsIGRvU2xhc2goZG9fbGlz dCgkaW5jbHVkZSkpKS4iJykiOw0KCQkJaWYoJGV4Y2x1ZGUpICR3aGVyZVtdID0gIm5hbWUg Tk9UIElOICgnIi5qb2luKCInLCciLCBkb1NsYXNoKGRvX2xpc3QoJGV4Y2x1ZGUpKSkuIicp IjsNCgkJfQ0KDQoJCSRjdXN0b21xID0gJyc7DQoJCWlmICgkY3VzdG9tRmllbGRzKSB7DQoJ CQlmb3JlYWNoKCRjdXN0b21GaWVsZHMgYXMgJGNGaWVsZCkgew0KCQkJCWlmIChpc3NldCgk YXR0c1skY0ZpZWxkXSkpDQoJCQkJCSRjdXN0b21QYWlyc1skY0ZpZWxkXSA9ICRhdHRzWyRj RmllbGRdOw0KCQkJfQ0KCQkJaWYoIWVtcHR5KCRjdXN0b21QYWlycykpIHsNCgkJCQkkY3Vz dG9tcSA9IGJ1aWxkQ3VzdG9tU3FsKCRjdXN0b21GaWVsZHMsJGN1c3RvbVBhaXJzKTsNCgkJ CX0NCgkJfQ0KDQovLwkJJHdoZXJlID0gIjE9MSIgLiAkc3RhdHVzcS4gJHRpbWUuICRzZWFy Y2ggLiAkaWQgLiAkY2F0ZWdvcnkgLiAkc2VjdGlvbiAuICRleGNlcnB0ZWQgLiAkbW9udGgg LiAkYXV0aG9yIC4gJGtleXdvcmRzIC4gJGN1c3RvbXE7DQoJCSR3aGVyZSA9IGltcGxvZGUo JyBBTkQgJywgJHdoZXJlKSAuICRjdXN0b21xOw0KDQoJCS8vcGFnaW5hdGUNCgkJJGdyYW5k X3RvdGFsID0gc2FmZV9jb3VudCgkdGFibGUgPyAndHhwXycuJHRhYmxlIDogJ3RleHRwYXR0 ZXJuJywgJHdoZXJlKTsNCgkJJGV0Y19wYWdpbmF0aW9uX3RvdGFsID0gJGdyYW5kX3RvdGFs IC0gJG9mZnNldDsNCgkJcmV0dXJuIGNlaWwoJGV0Y19wYWdpbmF0aW9uX3RvdGFsLyRwYWdl YnkpOw0KCX0NCg0KCWZ1bmN0aW9uIGV0Y19vZmZzZXQoJGF0dHMpDQoJew0KCQkvL2dldHRp bmcgYXR0cmlidXRlcw0KCQlleHRyYWN0KGxBdHRzKGFycmF5KA0KCQkJJ3R5cGUnICAgICAg ICA9PiAnJywNCgkJCSdwYWdlYnknICAgICAgICA9PiAnMTAnLA0KCQkJJ3BnY291bnRlcicg ICAgICAgID0+ICdwZycsDQoJCQknb2Zmc2V0JyAgICAgICAgPT4gJzAnDQoJCSksICRhdHRz KSk7DQoNCgkJZ2xvYmFsICRldGNfcGFnaW5hdGlvbl90b3RhbDsNCgkJJGNvdW50ZXIgPSB1 cmxkZWNvZGUoZ3BzKCRwZ2NvdW50ZXIpKTsNCgkJJHBhZ2UgPSBtYXgoaW50dmFsKCRjb3Vu dGVyKSwgMSkgKyAkb2Zmc2V0Ow0KCQkkbWF4ID0gaXNzZXQoJGV0Y19wYWdpbmF0aW9uX3Rv dGFsKSA/ICRldGNfcGFnaW5hdGlvbl90b3RhbCA6ICRwYWdlKiRwYWdlYnk7DQoJCXN3aXRj aCgkdHlwZSkgew0KCQkJY2FzZSAndmFsdWUnIDogcmV0dXJuIGh0bWxzcGVjaWFsY2hhcnMo JGNvdW50ZXIsIEVOVF9RVU9URVMpOw0KCQkJY2FzZSAncGFnZScgOiByZXR1cm4gJHBhZ2U7 DQoJCQljYXNlICdzdGFydCcgOiByZXR1cm4gbWluKCRtYXgsICgkcGFnZSAtIDEpKiRwYWdl YnkgKyAxKTsNCgkJCWNhc2UgJ2VuZCcgOiByZXR1cm4gbWluKCRtYXgsICRwYWdlKiRwYWdl YnkpOw0KCQkJZGVmYXVsdCA6IHJldHVybiAoJHBhZ2UgLSAxKSokcGFnZWJ5Ow0KCQl9DQoJ fSI7czo0OiJ0eXBlIjtzOjE6IjAiO3M6NToib3JkZXIiO3M6MToiNSI7czo1OiJmbGFncyI7 czoxOiIwIjtzOjQ6ImhlbHAiO3M6OTIyNzoiCTxoMT5ldGNfcGFnaW5hdGlvbjwvaDE+CgoJ PHA+VGhpcyBUZXh0cGF0dGVybiBwbHVnaW4gY3JlYXRlcyBhIHBhZ2luYXRlZCBuYXZpZ2F0 aW9uIGJhciBzaW1pbGFyIHRvIHRob3NlIHNlZW4gb24gR29vZ2xlIHdoZW4geW91IHNlYXJj aCBmb3Igc29tZXRoaW5nLiBJdCBoYXMgYSB3aWRlIHZhcmlldHkgb2YgYXR0cmlidXRlcyAm IzgyMTE7IHNvIHlvdSBhcmUgYWJsZSB0byBjdXN0b21pc2UgaXQgdW50aWwgeW91IGRyb3Ah IEl0IGNhbiBiZSB1c2VkIGFsb25lIGZvciA8Y29kZT4mbHQ7dHhwOmFydGljbGUgLyZndDs8 L2NvZGU+IGFuZCA8Y29kZT4mbHQ7dHhwOmFydGljbGVfY3VzdG9tIC8mZ3Q7PC9jb2RlPiBw YWdpbmF0aW9uLCBidXQgaXQgYWxzbyBoYXMgdGhlIGFiaWxpdHkgdG8gcGFnaW5hdGUgYW55 IGxpc3QsIHdpdGggYSBsaXR0bGUgaGVscCBmcm9tIDxhIGhyZWY9Imh0dHA6Ly93d3cuaXV0 LWZibGVhdS5mci9wcm9qZXQvZXRjL2luZGV4LnBocD9pZD0zIj5ldGNfcXVlcnk8L2E+Ljwv cD4KCgk8cD5QbGVhc2UgcmVwb3J0IGJ1Z3MgYW5kIHByb2JsZW1zIHdpdGggdGhpcyBwbHVn aW4gYXQgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2Jsb2F0d2FyZS9ldGMtcGFnaW5h dGlvbi9pc3N1ZXMiPnRoZSBHaXRIdWIgcHJvamVjdCYjODIxNztzIGlzc3VlcyBwYWdlPC9h Pi48L3A+CgoJPHAgY2xhc3M9ImFsZXJ0LWJsb2NrIGluZm9ybWF0aW9uIj5Ob3RlIHRoYXQg dGhpcyBwbHVnaW4gY3JlYXRlcyBhIGxpc3QgdGhhdCBpcyBtZWFudCB0byBiZSA8ZW0+c3R5 bGVkIGJ5IHlvdTwvZW0+IHVzaW5nIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+Ljwv cD4KCgk8aDI+SW5zdGFsbGF0aW9uLCB1cGdyYWRpbmcgYW5kIHVuaW5zdGFsbGF0aW9uPC9o Mj4KCgk8cD5Eb3dubG9hZCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIHBsdWdpbiBmcm9t IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9ibG9hdHdhcmUvZXRjLXBhZ2luYXRpb24v cmVsZWFzZXMiPnRoZSBHaXRIdWIgcHJvamVjdCBwYWdlPC9hPiwgcGFzdGUgdGhlIGNvZGUg aW50byB0aGUgVGV4dHBhdHRlcm4gQWRtaW4g4oaSIFBsdWdpbnMgcGFuZWwsIGluc3RhbGwg YW5kIGVuYWJsZSB0aGUgcGx1Z2luLiBWaXNpdCB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVt LnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP2lkPTM5MzAyIj5mb3J1bSB0aHJlYWQ8 L2E+IGZvciBtb3JlIGluZm8gb3IgdG8gcmVwb3J0IG9uIHRoZSBzdWNjZXNzIG9yIG90aGVy d2lzZSBvZiB0aGUgcGx1Z2luLjwvcD4KCgk8cD5UbyB1bmluc3RhbGwsIGRlbGV0ZSBmcm9t IHRoZSBBZG1pbiDihpIgUGx1Z2lucyBwYW5lbC48L3A+CgoJPGgyPlVzYWdlPC9oMj4KCgk8 cD48c3BhbiBjbGFzcz0iY2FwcyI+VE9ETzwvc3Bhbj48L3A+CgoJPGgyPlRhZ3M8L2gyPgoK CTxoMz50eHA6ZXRjX3BhZ2luYXRpb248L2gzPgoKPHByZT48Y29kZT4mbHQ7dHhwOmV0Y19w YWdpbmF0aW9uIC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD48c3BhbiBjbGFzcz0iY2FwcyI+ VE9ETzwvc3Bhbj48L3A+CgoJPGg0PkF0dHJpYnV0ZXM8L2g0PgoKCTx1bD4KCQk8bGk+PGNv ZGU+YXR0cz0mcXVvdDt2YWx1ZSZxdW90OzwvY29kZT48YnIgLz4KQWRkaXRpb25hbCBhdHRy aWJ1dGVzIHRvIGFwcGx5IHRvIHRoZSA8Y29kZT53cmFwdGFnPC9jb2RlPiBhdHRyaWJ1dGUg dmFsdWUuPC9saT4KCQk8bGk+PGNvZGU+YnJlYWs9JnF1b3Q7dmFsdWUmcXVvdDs8L2NvZGU+ PGJyIC8+CldoZXJlIHZhbHVlIGlzIGFuIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFu PiBlbGVtZW50LCBzcGVjaWZpZWQgd2l0aG91dCBicmFja2V0cyAoZS5nLiwgPGNvZGU+YnJl YWs9JnF1b3Q7bGkmcXVvdDs8L2NvZGU+KSB0byBzZXBhcmF0ZSBsaXN0IGl0ZW1zLjwvbGk+ CgkJPGxpPjxjb2RlPmNsYXNzPSZxdW90O2NsYXNzIG5hbWUmcXVvdDs8L2NvZGU+PGJyIC8+ CjxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiA8Y29kZT5jbGFzczwvY29kZT4gdG8g YXBwbHkgdG8gdGhlIDxjb2RlPndyYXB0YWc8L2NvZGU+IGF0dHJpYnV0ZSB2YWx1ZS48L2xp PgoJCTxsaT48Y29kZT5jdXJyZW50PSZxdW90O3RleHQmcXVvdDs8L2NvZGU+PGJyIC8+CkEg dGV4dCBhY3RpdmUgb24gdGhlIGN1cnJlbnQgdGFiLjwvbGk+CgkJPGxpPjxjb2RlPmRlbGlt aXRlcj0mcXVvdDt2YWx1ZSZxdW90OzwvY29kZT48YnIgLz4KQSBzdHJpbmcgdG8gdXNlIGFz IGRlbGltaXRlciBpbiA8Y29kZT5nZW5lcmFsLGN1cnJlbnQ8L2NvZGU+IGxpbmsgcGFpcnMs IHNlZSBiZWxvdy4gRGVmYXVsdDogPGNvZGU+LDwvY29kZT4gKGEgY29tbWEpLjwvbGk+CgkJ PGxpPjxjb2RlPmZpcnN0PSZxdW90O3RleHQmcXVvdDs8L2NvZGU+PGJyIC8+CkVuYWJsZXMg eW91IHRvIGFsdGVyIHRoZSB0ZXh0IGluc2lkZSB0aGUgJiM4MjE2O2ZpcnN0JiM4MjE3OyBs aW5rLjwvbGk+CgkJPGxpPjxjb2RlPmdhcD0mcXVvdDt0ZXh0JnF1b3Q7PC9jb2RlPjxiciAv PgpPbmUgb3IgdHdvICpkZWxpbWl0ZXIqLXNlcGFyYXRlZCBzeW1ib2xzIHRoYXQgc3RhdGUg dGhhdCB0aGVyZSBhcmUgbW9yZSB0YWJzIGJlZm9yZSBvciBhZnRlciB0aGUgb25lcyBjdXJy ZW50bHkgdmlld2FibGUuIERlZmF1bHQ6IDxjb2RlPuKApjwvY29kZT4uPC9saT4KCQk8bGk+ PGNvZGU+aHRtbF9pZD0mcXVvdDtpZCZxdW90OzwvY29kZT48YnIgLz4KVGhlIDxzcGFuIGNs YXNzPSJjYXBzIj5IVE1MPC9zcGFuPiA8Y29kZT5pZDwvY29kZT4gYXR0cmlidXRlIGFzc2ln bmVkIHRvIHRoZSA8Y29kZT53cmFwdGFnPC9jb2RlPiBhdHRyaWJ1dGUgdmFsdWUuPC9saT4K CQk8bGk+PGNvZGU+bGFzdD0mcXVvdDt0ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpFbmFibGVz IHlvdSB0byBhbHRlciB0aGUgdGV4dCBpbnNpZGUgdGhlICYjODIxNjtsYXN0JiM4MjE3OyBs aW5rLjwvbGk+CgkJPGxpPjxjb2RlPmxpbms9JnF1b3Q7dGV4dCZxdW90OzwvY29kZT48YnIg Lz4KRW5hYmxlcyB5b3UgdG8gYWx0ZXIgdGhlIHRleHQgaW4gdGhlIHRpdGxlcyBvZiB0aGUg cGFnZSB0YWJzLiBJZiB0d28gKmRlbGltaXRlciotc2VwYXJhdGVkIHN0cmluZ3MgYXJlIGdp dmVuLCB0aGVuIHRoZSBmaXJzdCBvbmUgd2lsbCBiZSB1c2VkIG9uIDxjb2RlPmdlbmVyYWw8 L2NvZGU+IHBhZ2VzLCBhbmQgdGhlIHNlY29uZCBvbmUgb24gdGhlIDxjb2RlPmN1cnJlbnQ8 L2NvZGU+IHBhZ2UuIERlZmF1bHQ6IDxjb2RlPnsqfTwvY29kZT4sIHdoZXJlIDxjb2RlPnsq fTwvY29kZT4gd2lsbCBiZSByZXBsYWNlZCBieSBhcHByb3ByaWF0ZSB0YWIgbnVtYmVycywg c2VlICYjODIxNjtSZXBsYWNlbWVudHMmIzgyMTc7IHNlY3Rpb24gYmVsb3cuPC9saT4KCQk8 bGk+PGNvZGU+bWFzaz0mcXVvdDt2YWx1ZSZxdW90OzwvY29kZT48YnIgLz4KSWYgc2V0LCB0 aGUgd2hvbGUgb3V0cHV0IHdpbGwgYmUgY29uc3RydWN0ZWQgYnkgcmVwbGFjaW5nIHRoZSBw YXR0ZXJucyA8Y29kZT57bGlua3N9PC9jb2RlPiwgPGNvZGU+e2ZpcnN0fTwvY29kZT4sIDxj b2RlPntsYXN0fTwvY29kZT4sIDxjb2RlPntwcmV2fTwvY29kZT4sIDxjb2RlPntuZXh0fTwv Y29kZT4sIDxjb2RlPnsmbHQ7K308L2NvZGU+IChnYXAgYmVmb3JlKSBhbmQgPGNvZGU+eysm Z3Q7fTwvY29kZT4gKGdhcCBhZnRlcikgYnkgY29ycmVzcG9uZGluZyBzdHJpbmdzLiBEZWZh dWx0OiB1bnNldC48L2xpPgoJCTxsaT48Y29kZT5uZXh0PSZxdW90O3RleHQmcXVvdDs8L2Nv ZGU+PGJyIC8+CkVuYWJsZXMgeW91IHRvIGFsdGVyIHRoZSB0ZXh0IGluc2lkZSB0aGUgJiM4 MjE2O25leHQmIzgyMTc7IGxpbmsuPC9saT4KCQk8bGk+PGNvZGU+b2Zmc2V0PSZxdW90O251 bWJlciZxdW90OzwvY29kZT48YnIgLz4KUGFnZSBudW1iZXIgb2Zmc2V0LiBEZWZhdWx0OiA8 Y29kZT4wPC9jb2RlPi48L2xpPgoJCTxsaT48Y29kZT5wYWdlPSZxdW90O251bWJlciZxdW90 OzwvY29kZT48YnIgLz4KQW4gaW50ZWdlciB0byBiZSBjb25zaWRlcmVkIGFzIDxjb2RlPmRl ZmF1bHQ8L2NvZGU+IHBhZ2UgKHR5cGljYWxseSA8Y29kZT4xPC9jb2RlPikuPC9saT4KCQk8 bGk+PGNvZGU+cGFnZXM9JnF1b3Q7dmFsdWUmcXVvdDs8L2NvZGU+PGJyIC8+ClRoZSB0b3Rh bCBudW1iZXIgb2YgcGFnZXMsIG9yIGEgcmFuZ2UgPGNvZGU+c3RhcnQuLmVuZDwvY29kZT4s IG9yIGEgKmRlbGltaXRlciotc2VwYXJhdGVkIGxpc3Qgb2YgPGNvZGU+cGFnZVs6OnRpdGxl XTwvY29kZT4gaXRlbXMuIE5vdCBuZWVkZWQgd2hlbiBwYWdpbmF0aW5nIDxjb2RlPiZsdDt0 eHA6YXJ0aWNsZSAvJmd0OzwvY29kZT4gdGFnIChkZWZhdWx0IHZhbHVlKS48L2xpPgoJCTxs aT48Y29kZT5wZ2NvdW50ZXI9JnF1b3Q7dmFsdWUmcXVvdDs8L2NvZGU+PGJyIC8+ClRoZSA8 c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBwYXJhbWV0ZXIgdG8gZHJpdmUgdGhlIG5h dmlnYXRpb24uIE5vdCBuZWVkZWQgd2hlbiBwYWdpbmF0aW5nIDxjb2RlPiZsdDt0eHA6YXJ0 aWNsZSAvJmd0OzwvY29kZT4gdGFnLiBEZWZhdWx0OiA8Y29kZT5wZzwvY29kZT4uPC9saT4K CQk8bGk+PGNvZGU+cHJldj0mcXVvdDt0ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpFbmFibGVz IHlvdSB0byBhbHRlciB0aGUgdGV4dCBpbnNpZGUgdGhlICYjODIxNjtwcmV2aW91cyYjODIx NzsgbGluay48L2xpPgoJCTxsaT48Y29kZT5yYW5nZT0mcXVvdDtudW1iZXImcXVvdDs8L2Nv ZGU+PGJyIC8+ClRoZSBtYXhpbXVtIG51bWJlciBvZiBsZWZ0L3JpZ2h0IG5laWdoYm91cnMg KGluY2x1ZGluZyBnYXBzKSB0byBkaXNwbGF5LiBJZiBuZWdhdGl2ZSAoZGVmYXVsdCksIGFs bCBwYWdlcyB3aWxsIGJlIGRpc3BsYXllZC4gVGhlIHBsdWdpbiB0cmllcyB0byBhdm9pZCAm IzgyMTY7bm9uc2Vuc2UmIzgyMTc7IGdhcHMgbGlrZSA8Y29kZT4xIOKApiAzIDQ8L2NvZGU+ IGFuZCBhZGp1c3QgdGhlIG91dHB1dCBzbyB0aGF0IHRoZSBudW1iZXIgb2YgZGlzcGxheWVk IHRhYnMgaXMgPGNvZGU+MipyYW5nZSsxPC9jb2RlPi48L2xpPgoJCTxsaT48Y29kZT5yZXZl cnNlbnVtYmVyb3JkZXI9JnF1b3Q7Ym9vbGVhbiZxdW90OzwvY29kZT48YnIgLz4KTWFrZXMg aXQgcG9zc2libGUgdG8gcmV2ZXJzZSB0aGUgbnVtYmVycyBpbiB0aGUgdGFicy4gU2V0dGlu ZyB0byB2YWx1ZSB0byA8Y29kZT4wPC9jb2RlPiAoZGVmYXVsdCkgcmVuZGVycyA8Y29kZT4x LDIsMyBhbmQgc28gb248L2NvZGU+LCBzZXR0aW5nIHZhbHVlIHRvIDxjb2RlPjE8L2NvZGU+ IHJlbmRlcnMgPGNvZGU+MywyLDEgYW5kIHNvIG9uPC9jb2RlPi48L2xpPgoJCTxsaT48Y29k ZT5yb290PSZxdW90O1VSTCZxdW90OzwvY29kZT48YnIgLz4KVGhlIDxzcGFuIGNsYXNzPSJj YXBzIj5VUkw8L3NwYW4+IHRvIGJlIHVzZWQgYXMgYmFzZSBmb3IgbmF2aWdhdGlvbiwgZGVm YXVsdHMgdG8gdGhlIGN1cnJlbnQgcGFnZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFu Pi48L2xpPgoJCTxsaT48Y29kZT53cmFwdGFnPSZxdW90O2VsZW1lbnQmcXVvdDs8L2NvZGU+ PGJyIC8+CjxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBlbGVtZW50IHRvIHdyYXAg KG1hcmt1cCkgYmxvY2ssIHNwZWNpZmllZCB3aXRob3V0IGJyYWNrZXRzIChlLmcuLCA8Y29k ZT53cmFwdGFnPSZxdW90O3VsJnF1b3Q7PC9jb2RlPikuPC9saT4KCTwvdWw+CgoJPGg0PlJl cGxhY2VtZW50czwvaDQ+CgoJPHA+SWYgeW91IGFyZSBub3QgaGFwcHkgd2l0aCB0aGUgZGVm YXVsdCA8Y29kZT4mbHQ7YSZndDs8L2NvZGU+IGxpbmtzLCB1c2UgPGNvZGU+Jmx0O2V0Y19w YWdpbmF0aW9uIC8mZ3Q7PC9jb2RlPiBhcyBjb250YWluZXIgdG8gY29uc3RydWN0IHlvdXIg b3duIGxpbmtzLiBUaGUgZm9sbG93aW5nIHJlcGxhY2VtZW50IHRva2VucyBhcmUgYXZhaWxh YmxlIGluc2lkZSA8Y29kZT5ldGNfcGFnaW5hdGlvbjwvY29kZT46PC9wPgoKCTx1bD4KCQk8 bGk+PGNvZGU+eyR9PC9jb2RlPjxiciAvPgpUaGUgYWJzb2x1dGUgcGFnZSBudW1iZXIuPC9s aT4KCQk8bGk+PGNvZGU+eyN9PC9jb2RlPjxiciAvPgpUaGUgZGlzcGxheWVkIHBhZ2UgbnVt YmVyLjwvbGk+CgkJPGxpPjxjb2RlPnsqfTwvY29kZT48YnIgLz4KVGhlIHBhZ2UgdGl0bGUu PC9saT4KCQk8bGk+PGNvZGU+e2N1cnJlbnR9PC9jb2RlPjxiciAvPgpUaGUgdGV4dCBnaXZl biBieSA8Y29kZT5jdXJyZW50PC9jb2RlPiBhdHRyaWJ1dGUsIGVuYWJsZWQgb25seSBvbiB0 aGUgY3VycmVudCB0YWIuPC9saT4KCQk8bGk+PGNvZGU+e2hyZWZ9PC9jb2RlPjxiciAvPgpU aGUgcGFnZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPi48L2xpPgoJCTxsaT48Y29k ZT57bGlua308L2NvZGU+PGJyIC8+ClRoZSB0ZXh0IGdpdmVuIGJ5IDxjb2RlPmxpbms8L2Nv ZGU+IGF0dHJpYnV0ZSwgcmVwbGFjZWQgYnkgPGNvZGU+Zmlyc3Q8L2NvZGU+LCA8Y29kZT5w cmV2PC9jb2RlPiwgZXRjIHdoZW4gbmVjZXNzYXJ5LjwvbGk+CgkJPGxpPjxjb2RlPntwYWdl c308L2NvZGU+PGJyIC8+ClRoZSB0b3RhbCBwYWdlcyBudW1iZXIuPC9saT4KCQk8bGk+PGNv ZGU+e3JlbH08L2NvZGU+PGJyIC8+ClRoZSBwYWdlIHJlbGF0aW9uICg8Y29kZT5uZXh0PC9j b2RlPiwgPGNvZGU+cHJldjwvY29kZT4pLjwvbGk+Cgk8L3VsPgoKCTxwPkZvciBleGFtcGxl LCB0aGUgZm9sbG93aW5nIHdpbGwgZ2VuZXJhdGUgYSA8Y29kZT5zZWxlY3Q8L2NvZGU+IHBh Z2luYXRpb24gbGlzdDo8L3A+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6ZXRjX3BhZ2luYXRpb24g bGluaz0mcXVvdDtQYWdlIHsqfSZxdW90OyBjdXJyZW50PSZxdW90O3NlbGVjdGVkJnF1b3Q7 CiAgICB3cmFwdGFnPSZxdW90O3NlbGVjdCZxdW90OyBhdHRzPSZxdW90O25hbWU9JiMzOTtw ZyYjMzk7JnF1b3Q7Jmd0OwogICAgJmx0O29wdGlvbiB2YWx1ZT0mIzM5O3sqfSYjMzk7IHtj dXJyZW50fSZndDt7bGlua30mbHQ7L29wdGlvbiZndDsKJmx0Oy90eHA6ZXRjX3BhZ2luYXRp b24mZ3Q7CjwvY29kZT48L3ByZT4KCgk8aDQ+RXhhbXBsZXM8L2g0PgoKCTxoNT5FeGFtcGxl IDE8L2g1PgoKPHByZT48Y29kZT4mbHQ7dHhwOmV0Y19wYWdpbmF0aW9uIHJhbmdlPSZxdW90 OzImcXVvdDsgcHJldj0mcXVvdDtQcmV2aW91cyZxdW90OyBuZXh0PSZxdW90O05leHQmcXVv dDsgIHdyYXB0YWc9JnF1b3Q7dWwmcXVvdDsgYnJlYWs9JnF1b3Q7bGkmcXVvdDsgLyZndDsK PC9jb2RlPjwvcHJlPgoKCTxwPlRoaXMgb3V0cHV0cyBpZiB0aGVyZSBhcmUgdGVuIHBhZ2Vz IGFuZCB3ZSBhcmUgb24gdGhlIHRoaXJkIG9uZSwgbGlrZSBzbzo8L3A+Cgo8cHJlPjxjb2Rl PiZsdDt1bCZndDsKICAgICZsdDtsaSZndDsKICAgICAgICAmbHQ7YSBocmVmPSZxdW90O2h0 dHA6Ly9leGFtcGxlLmNvbS9ibG9nLyZhbXA7cGc9MSZxdW90OyByZWw9JnF1b3Q7cHJldiZx dW90OyZndDtQcmV2aW91cyZsdDsvYSZndDsKICAgICZsdDsvbGkmZ3Q7CiAgICAmbHQ7bGkm Z3Q7CiAgICAgICAgJmx0O2EgaHJlZj0mcXVvdDtodHRwOi8vZXhhbXBsZS5jb20vYmxvZy8m YW1wO3BnPTEmcXVvdDsmZ3Q7MSZsdDsvYSZndDsKICAgICZsdDsvbGkmZ3Q7CiAgICAmbHQ7 bGkmZ3Q7CiAgICAgICAgJmx0O2EgaHJlZj0mcXVvdDtodHRwOi8vZXhhbXBsZS5jb20vYmxv Zy8mYW1wO3BnPTImcXVvdDsmZ3Q7MiZsdDsvYSZndDsKICAgICZsdDsvbGkmZ3Q7CiAgICAm bHQ7bGkmZ3Q7CiAgICAgICAgJmx0O3NwYW4gZGF0YS1yZWw9JnF1b3Q7Y3VycmVudCZxdW90 OyZndDszJmx0Oy9zcGFuJmd0OwogICAgJmx0Oy9saSZndDsKICAgICZsdDtsaSZndDsKICAg ICAgICAmbHQ7c3BhbiBkYXRhLXJlbD0mcXVvdDtnYXAmcXVvdDsmZ3Q74oCmJmx0Oy9zcGFu Jmd0OwogICAgJmx0Oy9saSZndDsKICAgICZsdDtsaSZndDsKICAgICAgICAmbHQ7YSBocmVm PSZxdW90O2h0dHA6Ly9leGFtcGxlLmNvbS9ibG9nLyZhbXA7cGc9MTAmcXVvdDsgcmVsPSZx dW90O2xhc3QmcXVvdDsmZ3Q7MTAmbHQ7L2EmZ3Q7CiAgICAmbHQ7L2xpJmd0OwogICAgJmx0 O2xpJmd0OwogICAgICAgICZsdDthIGhyZWY9JnF1b3Q7aHR0cDovL2V4YW1wbGUuY29tL2Js b2cvJmFtcDtwZz01JnF1b3Q7IHJlbD0mcXVvdDtuZXh0JnF1b3Q7Jmd0O05leHQmbHQ7L2Em Z3Q7CiAgICAmbHQ7L2xpJmd0OwombHQ7L3VsJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhl IDxjb2RlPiZsdDthJmd0OzwvY29kZT4gYW5kIDxjb2RlPiZsdDtzcGFuJmd0OzwvY29kZT4g dGFncyBsaW5raW5nIHRvIDxjb2RlPmZpcnN0PC9jb2RlPiwgPGNvZGU+cHJldjwvY29kZT4s IDxjb2RlPmN1cnJlbnQ8L2NvZGU+LCA8Y29kZT5uZXh0PC9jb2RlPiwgPGNvZGU+bGFzdDwv Y29kZT4sIDxjb2RlPmdhcDwvY29kZT4gcGFnZXMsIHdpbGwgYmUgZ2l2ZW4gdGhlIGNvcnJl c3BvbmRpbmcgdmFsdWUgb2YgPGNvZGU+cmVsPC9jb2RlPiBvciA8Y29kZT5kYXRhLXJlbDwv Y29kZT4gYXR0cmlidXRlcy48L3A+CgoJPGg1PkV4YW1wbGUgMjwvaDU+Cgo8cHJlPjxjb2Rl PiZsdDt0eHA6ZXRjX3BhZ2luYXRpb24gcmFuZ2U9JnF1b3Q7MCZxdW90OyZndDsKICAgICZs dDtwJmd0O1BhZ2Ugeyp9IG9mIHtwYWdlc30mbHQ7L3AmZ3Q7CiZsdDsvdHhwOmV0Y19wYWdp bmF0aW9uJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhpcyBvdXRwdXRzIGlmIHRoZXJlIGFy ZSB0ZW4gcGFnZXMgYW5kIHdlIGFyZSBvbiB0aGUgdGhpcmQgb25lLCBsaWtlIHNvOjwvcD4K CjxwcmU+PGNvZGU+Jmx0O3AmZ3Q7UGFnZSAzIG9mIDEwJmx0Oy9wJmd0Owo8L2NvZGU+PC9w cmU+CgoJPGg1PkV4YW1wbGUgMzwvaDU+CgoJPHA+PHNwYW4gY2xhc3M9ImNhcHMiPlRPRE88 L3NwYW4+PC9wPgoKCTxoMj5IaXN0b3J5PC9oMj4KCgk8cD5QbGVhc2Ugc2VlIHRoZSA8YSBo cmVmPSJodHRwczovL2dpdGh1Yi5jb20vYmxvYXR3YXJlL2V0Yy1wYWdpbmF0aW9uL2Jsb2Iv bWFzdGVyL0NIQU5HRUxPRy50ZXh0aWxlIj5jaGFuZ2Vsb2cgb24gR2l0SHViPC9hPi48L3A+ CgoJPGgyPkF1dGhvcnMvY3JlZGl0czwvaDI+CgoJPHA+V3JpdHRlbiBieSA8YSBocmVmPSJo dHRwOi8vd3d3Lml1dC1mYmxlYXUuZnIvcHJvamV0L2V0Yy8iPk9sZWcgTG91a2lhbm92PC9h Pi4gTWFueSB0aGFua3MgdG8gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2Jsb2F0d2Fy ZS9ldGMtcGFnaW5hdGlvbi9ncmFwaHMvY29udHJpYnV0b3JzIj5hbGwgYWRkaXRpb25hbCBj b250cmlidXRvcnM8L2E+LjwvcD4iO3M6MzoibWQ1IjtzOjMyOiJmMTJiYzgyYTJlNDhkYmMx ZWU3ZDgyMWIzYTQyMDJkZSI7fQ==