# Name: smd_bio v0.50 # Type: Admin/Public/AJAX plugin # Customisable user biographies / profile info. # Author: Stef Dawson # URL: http://stefdawson.com/ # 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: # ..................................................................... YToxMjp7czo0OiJuYW1lIjtzOjc6InNtZF9iaW8iO3M6NjoiYXV0aG9yIjtzOjExOiJTdGVm IERhd3NvbiI7czoxMDoiYXV0aG9yX3VyaSI7czoyMjoiaHR0cDovL3N0ZWZkYXdzb24uY29t LyI7czo3OiJ2ZXJzaW9uIjtzOjQ6IjAuNTAiO3M6MTE6ImRlc2NyaXB0aW9uIjtzOjQ1OiJD dXN0b21pc2FibGUgdXNlciBiaW9ncmFwaGllcyAvIHByb2ZpbGUgaW5mby4iO3M6NDoiY29k ZSI7czo5MDgyNzoiLyoqCiAqIHNtZF9iaW8KICoKICogQSBUZXh0cGF0dGVybiBDTVMgcGx1 Z2luIGZvciBzdG9yaW5nIGFkZGl0aW9uYWwgYmlvZ3JhcGhpY2FsIGF1dGhvciBkYXRhOgog KiAgLT4gQ3JlYXRlIGNoZWNrYm94ZXMsIHNlbGVjdCBsaXN0cywgcmFkaW8gYnV0dG9ucywg dGV4dCBpbnB1dCwgaW1hZ2UsIGV0YyBmaWVsZHMKICogIC0+IERhdGEgaXMgY2FwdHVyZWQg YW5kIHN0b3JlZCB3aGVuIGEgdXNlciBpcyBjcmVhdGVkCiAqICAtPiBBbGxvdyBwZW9wbGUg dG8gbWFuYWdlIHRoZWlyIG93biBwcm9maWxlcyB2aWEgc21kX3VzZXJfbWFuYWdlcgogKgog KiBAYXV0aG9yIFN0ZWYgRGF3c29uCiAqIEBsaW5rICAgaHR0cDovL3N0ZWZkYXdzb24uY29t LwogKgogKiBAdG9kbyBTdG9wIHNtZF9iaW9faXRlcmF0ZSBmcm9tIHRyYXNoaW5nIHRoZSBi aW8gZGF0YSBmb3IgZnV0dXJlIGZpZWxkcyBvZiB0aGUgc2FtZSBuYW1lLgogKiBAdG9kbyBB dHRlbXB0IHRhYmxlIHJlcGFpciBpZiBiaW8vYmlvX21ldGEgZ2V0IG91dCBvZiBzeW5jLgog KiBAdG9kbyBBYmlsaXR5IHRvIHNwZWNpZnkgd2lsZGNhcmRzL21hdGNoZXMgZm9yIGZpZWxk cy9hdXRob3JzIGluIHRoZSBjbGllbnQgdGFnLgogKiBAdG9kbyBTcGVjaWZ5IHRvb2x0aXAg ZXh0ZW5kZWQgYmlvIGluZm9ybWF0aW9uIGluIHByZWZzIChjZi4gd2hhdCB0byBkbyBhYm91 dCB0b3VjaCBkZXZpY2VzKS4KICovCmlmICh0eHBpbnRlcmZhY2UgPT09ICdhZG1pbicpIHsK ICAgIGFkZF9wcml2cygnc21kX2JpbycsICcxJyk7CiAgICByZWdpc3Rlcl90YWIoJ2V4dGVu c2lvbnMnLCAnc21kX2JpbycsIGdUeHQoJ3NtZF9iaW9fYWRtaW5fdGFiJykpOwogICAgcmVn aXN0ZXJfY2FsbGJhY2soJ3NtZF9iaW9fZGlzcGF0Y2hlcicsICdzbWRfYmlvJyk7CiAgICBy ZWdpc3Rlcl9jYWxsYmFjaygnc21kX2Jpb19maWVsZHMnLCAnYXV0aG9yX3VpJywgJ2V4dGVu ZF9kZXRhaWxfZm9ybScpOwogICAgcmVnaXN0ZXJfY2FsbGJhY2soJ3NtZF9iaW9fYWRtaW5f anMnLCAnYWRtaW5fc2lkZScsICdoZWFkX2VuZCcpOwoKICAgIC8vIE5vdGUgdGhlc2UgYXJl IGFsbCBwcmUgVHhwJ3MgaW52b2x2ZW1lbnQKICAgIHJlZ2lzdGVyX2NhbGxiYWNrKCdzbWRf YmlvX3NhdmUnLCAnYWRtaW4nLCAnYXV0aG9yX3NhdmUnLCAxKTsKICAgIHJlZ2lzdGVyX2Nh bGxiYWNrKCdzbWRfYmlvX3NhdmUnLCAnYWRtaW4nLCAnYXV0aG9yX3NhdmVfbmV3JywgMSk7 CiAgICByZWdpc3Rlcl9jYWxsYmFjaygnc21kX2Jpb19kZWxldGUnLCAnYWRtaW4nLCAnYWRt aW5fbXVsdGlfZWRpdCcsIDEpOwogICAgcmVnaXN0ZXJfY2FsbGJhY2soJ3NtZF9iaW9fd2Vs Y29tZScsICdwbHVnaW5fbGlmZWN5Y2xlLnNtZF9iaW8nKTsKCiAgICAvLyBEb2Vzbid0IGh1 cnQgbXVjaCB0byBhZGQgdGhlc2UgaWYgdGhlIHBsdWdpbidzIG5vdCBpbnN0YWxsZWQuCiAg ICAvLyBTaW5jZSBwbHVnaW5zIGFyZSBsb2FkZWQgaW4gbG9hZF9vcmRlciBhbmQgdGhlbiBh bHBoYWJldGljYWwsCiAgICAvLyBhdCB0aGlzIHBvaW50IHNtZF91c2VyX21hbmFnZXIgZG9l c24ndCAnZXhpc3QnIChiIDwgdSkKICAgIHJlZ2lzdGVyX2NhbGxiYWNrKCdzbWRfYmlvX3Nh dmUnLCAnc21kX3VtJywgJ3NtZF91bV9zYXZlJywgMSk7CiAgICByZWdpc3Rlcl9jYWxsYmFj aygnc21kX2Jpb19zYXZlJywgJ3NtZF91bScsICdzbWRfdW1fc2F2ZV9uZXcnLCAxKTsKICAg IHJlZ2lzdGVyX2NhbGxiYWNrKCdzbWRfYmlvX2RlbGV0ZScsICdzbWRfdW0nLCAnc21kX3Vt X211bHRpX2VkaXQnLCAxKTsKfSBlbHNlaWYgKHR4cGludGVyZmFjZSA9PT0gJ3B1YmxpYycp IHsKICAgIGlmIChjbGFzc19leGlzdHMoJ1xUZXh0cGF0dGVyblxUYWdcUmVnaXN0cnknKSkg ewogICAgICAgIFR4cDo6Z2V0KCdcVGV4dHBhdHRlcm5cVGFnXFJlZ2lzdHJ5JykKICAgICAg ICAgICAgLT5yZWdpc3Rlcignc21kX2Jpb19hdXRob3InKQogICAgICAgICAgICAtPnJlZ2lz dGVyKCdzbWRfYmlvX2luZm8nKQogICAgICAgICAgICAtPnJlZ2lzdGVyKCdzbWRfYmlvX2Rh dGEnKQogICAgICAgICAgICAtPnJlZ2lzdGVyKCdzbWRfYmlvX2l0ZXJhdGUnKQogICAgICAg ICAgICAtPnJlZ2lzdGVyKCdzbWRfYmlvX2FydGljbGVzJykKICAgICAgICAgICAgLT5yZWdp c3Rlcignc21kX2lmX2JpbycpCiAgICAgICAgICAgIC0+cmVnaXN0ZXIoJ3NtZF9pZl9iaW9f aXMnKQogICAgICAgICAgICAtPnJlZ2lzdGVyKCdzbWRfaWZfYmlvX2ZpcnN0X2F1dGhvcicp CiAgICAgICAgICAgIC0+cmVnaXN0ZXIoJ3NtZF9pZl9iaW9fbGFzdF9hdXRob3InKTsKICAg IH0KfQoKcmVnaXN0ZXJfY2FsbGJhY2soJ3NtZF9iaW9fZm9ybV9zdWJtaXQnLCAnbWVtX2Zv cm0uc3VibWl0Jyk7CgovLyBJbnRlcmNlcHQgaW1hZ2UgYW5kIGV4dGVuZGVkIGJpbyBkaXNw bGF5IG9uIEFkbWluLT5Vc2VycyBwYW5lbAokc21kX2Jpb19zdGVwID0gZ3BzKCdzbWRfYmlv X3N0ZXAnKTsKaWYgKCRzbWRfYmlvX3N0ZXAgPT0gJ3NtZF9iaW9fZ2V0X2ltYWdlJykgewog ICAgc21kX2Jpb19nZXRfaW1hZ2UoKTsKfQppZiAoJHNtZF9iaW9fc3RlcCA9PSAnc21kX2Jp b19nZXRfZWJpbycpIHsKICAgIHNtZF9iaW9fZ2V0X2ViaW8oKTsKfQoKaWYgKCFkZWZpbmVk KCdTTURfQklPJykpIHsKICAgIGRlZmluZSgiU01EX0JJTyIsICdzbWRfYmlvJyk7Cn0KaWYg KCFkZWZpbmVkKCdTTURfQklPX01FVEEnKSkgewogICAgZGVmaW5lKCJTTURfQklPX01FVEEi LCAnc21kX2Jpb19tZXRhJyk7Cn0KCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZnVuY3Rpb24gc21kX2Jpb19nZXRf c3R5bGVzKCkgewogICAgJHNtZF9iaW9fc3R5bGVzID0gYXJyYXkoCiAgICAgICAgJ21ldGEn ID0+CiAgICAgICAgICcuc21kX2Jpb190b2dnbGVyIHsgZGlzcGxheTpub25lOyB9JywKICAg ICAgICAndG9vbHRpcCcgPT4KICAgICAgICAgJyN0b29sdGlwIHsgcG9zaXRpb246YWJzb2x1 dGU7IGJvcmRlcjoxcHggc29saWQgIzMzMzsgYmFja2dyb3VuZDojZjdmNWQxOyBwYWRkaW5n OjEwcHggMTVweDsgb3BhY2l0eTouOTsgY29sb3I6IzMzMzsgZGlzcGxheTpub25lOyBtYXgt d2lkdGg6NjAlOyB9JywKICAgICk7CiAgICByZXR1cm4gJHNtZF9iaW9fc3R5bGVzOwp9Cgov LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCi8vIEluc3RhbGwvdW5pbnN0YWxsIGp1bXBvZmYgcG9pbnQKZnVuY3Rpb24g c21kX2Jpb193ZWxjb21lKCRldnQsICRzdHApIHsKICAgICRtc2cgPSAnJzsKICAgIHN3aXRj aCAoJHN0cCkgewogICAgICAgIGNhc2UgJ2luc3RhbGxlZCc6CiAgICAgICAgICAgIHNtZF9i aW9fdGFibGVfaW5zdGFsbCgwKTsKICAgICAgICAgICAgJG1zZyA9ICdQaW1wIHlvdXIgdXNl cnMnOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdkZWxldGVkJzoKICAgICAg ICAgICAgc21kX2Jpb190YWJsZV9yZW1vdmUoMCk7CiAgICAgICAgICAgIGJyZWFrOwogICAg fQogICAgcmV0dXJuICRtc2c7Cn0KCi8vICoqKioqKioqKioqKioqKioqKioqKioqKgovLyBC SU8gQ09ORklHVVJBVElPTgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZnVuY3Rpb24g c21kX2Jpb19kaXNwYXRjaGVyKCRldnQsICRzdHApIHsKICAgICRhdmFpbGFibGVfc3RlcHMg PSBhcnJheSgKICAgICAgICAnc21kX2Jpb19jb25maWcnICAgICAgICAgID0+IGZhbHNlLAog ICAgICAgICdzbWRfYmlvX3RhYmxlX2luc3RhbGwnICAgPT4gZmFsc2UsCiAgICAgICAgJ3Nt ZF9iaW9fdGFibGVfcmVtb3ZlJyAgICA9PiBmYWxzZSwKICAgICAgICAnc21kX2Jpb19tZXRh X2FkZCcgICAgICAgID0+IHRydWUsCiAgICAgICAgJ3NtZF9iaW9fbXVsdGlfZWRpdCcgICAg ICA9PiB0cnVlLAogICAgICAgICdzbWRfYmlvX21ldGFfc2F2ZScgICAgICAgPT4gdHJ1ZSwK ICAgICAgICAnc21kX2Jpb19zYXZlX3BhbmVfc3RhdGUnID0+IHRydWUsCiAgICApOwoKICAg IGlmICghJHN0cCBvciAhYm91bmNlcigkc3RwLCAkYXZhaWxhYmxlX3N0ZXBzKSkgewogICAg ICAgICRzdHAgPSAnc21kX2Jpb19jb25maWcnOwogICAgfQogICAgJHN0cCgpOwp9CgovLyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gVGhlIEV4dGVuc2lvbnMtPkJpbyBjb25maWcg cGFuZWwsIG1hZGUgdXAgb2YgdHdvIGFyZWFzOiB0aGUgZWRpdCBwYW5lIGFuZCB0aGUgbGlz dCBwYW5lCmZ1bmN0aW9uIHNtZF9iaW9fY29uZmlnKCRtc2c9JycpIHsKICAgIHNtZF9iaW9f dGFibGVfaW5zdGFsbCgwKTsKCiAgICBwYWdldG9wKGdUeHQoJ3NtZF9iaW9fYWRtaW5fdGFi JyksICRtc2cpOwoKICAgIGVjaG8gbi4nPGRpdiBpZD0ic21kX2Jpb19jb250YWluZXIiIGNs YXNzPSJ0eHAtY29udGFpbmVyIj4nLgogICAgICAgIG4uc21kX2Jpb19tZXRhX2VkaXQoKS4K ICAgICAgICBuLnNtZF9iaW9fbWV0YV9saXN0KCkuCiAgICAgICAgbi4nPC9kaXY+JzsKfQoK Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmZ1bmN0aW9uIHNtZF9iaW9fbWV0YV9lZGl0 KCkgewogICAgJHNtZF9iaW9fdHlwZXMgPSBzbWRfYmlvX2dldF90eXBlcygpOwogICAgJHNt ZF9iaW9fY29sdHlwZXMgPSBzbWRfYmlvX2dldF9jb2x0eXBlcygpOwoKICAgICR2YXJzID0g YXJyYXkoJ3N0ZXAnLCAnaWQnLCAndGl0bGUnLCAnbmFtZScsICd0eXBlJywgJ2NvbHR5cGUn LCAnY29sc2l6ZScsICdzaXplJywgJ3ZhbCcsICdwb3NpdGlvbicpOwogICAgJHJzID0gYXJy YXkoKTsKCiAgICBleHRyYWN0KGdwc2EoJHZhcnMpKTsKICAgICRjb2xzaXplID0gKGludCkk Y29sc2l6ZTsKCiAgICBpZiAoJGlkICYmICRzdGVwID09ICdtZXRhX2VkaXQnKSB7CiAgICAg ICAgJGlkID0gYXNzZXJ0X2ludCgkaWQpOwogICAgICAgICRycyA9IHNhZmVfcm93KCcqJywg U01EX0JJT19NRVRBLCAiaWQgPSAkaWQiKTsKICAgICAgICBleHRyYWN0KCRycyk7CiAgICB9 CgogICAgaWYgKCRzdGVwID09ICdzbWRfYmlvX21ldGFfc2F2ZScgfHwgJHN0ZXAgPT0gJ3Nt ZF9iaW9fbWV0YV9hZGQnIHx8ICRzdGVwID09ICdzbWRfYmlvX211bHRpX2VkaXQnKSB7CiAg ICAgICAgZm9yZWFjaCAoJHZhcnMgYXMgJHZhcikgewogICAgICAgICAgICAkJHZhciA9ICcn OwogICAgICAgIH0KICAgIH0KCiAgICAkY2FwdGlvbiA9IGdUeHQoKCRzdGVwID09ICdtZXRh X2VkaXQnKSA/ICdzbWRfYmlvX21ldGFfZWRpdCcgOiAnc21kX2Jpb19tZXRhX2FkZCcpOwoK ICAgIC8vIE1ha2UgdGhlIG5hbWUvdmFsIHBhaXJzIGZvciB0aGUgdHlwZSBzZWxlY3RJbnB1 dAogICAgJHNlbHYgPSBhcnJheSgpOwogICAgZm9yZWFjaCAoJHNtZF9iaW9fdHlwZXMgYXMg JHdpZHggPT4gJHd2YWwpIHsKICAgICAgICAkc2Vsdlskd2lkeF0gPSAkd3ZhbFsnbmFtZSdd OwogICAgfQoKICAgIC8vIE1ha2UgdGhlIG5hbWUvdmFsIHBhaXJzIGZvciB0aGUgY29sdHlw ZSBzZWxlY3RJbnB1dAogICAgZm9yZWFjaCgkc21kX2Jpb19jb2x0eXBlcyBhcyAkY3R5cGUg PT4gJGNkYXRhKSB7CiAgICAgICAgJGNvbHR5cGVzWyRjdHlwZV0gPSAkY2RhdGFbJ3RpdGxl J107CiAgICB9CgogICAgJHRvZ2dsZVN0YXRlID0gZ2V0X3ByZWYoJ3BhbmVfc21kX2Jpb19j b2x0eXBlX3Zpc2libGUnKSA/IHRydWUgOiBmYWxzZTsKCiAgICByZXR1cm4gaGVkKCRjYXB0 aW9uLCAxLCAnIGNsYXNzPSJ0eHAtaGVhZGluZyInKS4KICAgICAgICBmb3JtKAogICAgICAg ICAgICAnPGRpdiBjbGFzcz0idHhwLWVkaXQiPicuCiAgICAgICAgICAgIGlucHV0TGFiZWwo J25hbWUnLCAoJGlkICYmICRzdGVwID09ICdtZXRhX2VkaXQnID8gc3Ryb25nKCRuYW1lKSA6 IGZJbnB1dCgndGV4dCcsICduYW1lJywgJG5hbWUsICcnLCAnJywgJycsICcnLCAnJywgJ25h bWUnKSksICduYW1lJykuCiAgICAgICAgICAgIGlucHV0TGFiZWwoJ3RpdGxlJywgZklucHV0 KCd0ZXh0JywgJ3RpdGxlJywgJHRpdGxlLCAnJywgJycsICcnLCAnJywgJycsICd0aXRsZScp LCAndGl0bGUnKS4KICAgICAgICAgICAgaW5wdXRMYWJlbCgnc21kX2Jpb193aWRnZXRfdHlw ZScsIHNlbGVjdElucHV0KCd0eXBlJywgJHNlbHYsICR0eXBlLCBmYWxzZSwgJycsICdzbWRf YmlvX3dpZGdldF90eXBlJykgLnNwLiAnPGEgaWQ9InNtZF9iaW9fY29sZ3JvdXAiIGNsYXNz PSJ0eHAtc3VtbWFyeSBsZXZlcicuKCgkdG9nZ2xlU3RhdGUpID8gJyBleHBhbmRlZCcgOiAn JykuJyIgaHJlZj0iIyI+Jy5nVHh0KCdzbWRfYmlvX21vcmUnKS4nPC9hPicsICd0eXBlJyku CiAgICAgICAgICAgIGlucHV0TGFiZWwoJ3NtZF9iaW9fY29sdHlwZScsIHNlbGVjdElucHV0 KCdjb2x0eXBlJywgJGNvbHR5cGVzLCAkY29sdHlwZSwgZmFsc2UsICcnLCAnc21kX2Jpb19j b2x0eXBlJyksICdzbWRfYmlvX2NvbHR5cGUnLCAnJywgJ3R4cC1mb3JtLWZpZWxkIHNtZF9i aW9fY29sdHlwZSAnLigoJHRvZ2dsZVN0YXRlKSA/ICcnIDogJyBzbWRfYmlvX3RvZ2dsZXIn KSkuCiAgICAgICAgICAgIGlucHV0TGFiZWwoJ3NtZF9iaW9fY29sc2l6ZScsIGZJbnB1dCgn bnVtYmVyJywgJ2NvbHNpemUnLCAkY29sc2l6ZSwgJycsICcnLCAnJywgJycsICcnLCAnc21k X2Jpb19jb2xzaXplJyksICdzbWRfYmlvX2NvbHNpemUnLCAnJywgJ3R4cC1mb3JtLWZpZWxk IHNtZF9iaW9fY29sdHlwZSAnLigoJHRvZ2dsZVN0YXRlKSA/ICcnIDogJyBzbWRfYmlvX3Rv Z2dsZXInKSkuCiAgICAgICAgICAgIGlucHV0TGFiZWwoJ3NtZF9iaW9fc2l6ZScsIGZJbnB1 dCgndGV4dCcsICdzaXplJywgJHNpemUsICcnLCAnJywgJycsICcnLCAnJywgJ3NtZF9iaW9f c2l6ZScpLCAnc21kX2Jpb19zaXplJywgJ3NtZF9iaW9fc2l6ZScpLgogICAgICAgICAgICBp bnB1dExhYmVsKCdzbWRfYmlvX3ZhbHVlJywgdGV4dF9hcmVhKCd2YWwnLCAnMTAwJywgJzMw MCcsICR2YWwsICdzbWRfYmlvX3ZhbHVlJyksICdzbWRfYmlvX3ZhbHVlJywgJ3NtZF9iaW9f dmFsJykuCiAgICAgICAgICAgIGlucHV0TGFiZWwoJ3NtZF9iaW9fcG9zaXRpb24nLCBmSW5w dXQoJ3RleHQnLCAncG9zaXRpb24nLCAkcG9zaXRpb24sICcnLCAnJywgJycsICcnLCAnJywg J3NtZF9iaW9fcG9zaXRpb24nKSwgJ3NtZF9iaW9fcG9zaXRpb24nKS4KICAgICAgICAgICAg Z3JhZigKICAgICAgICAgICAgICAgIGZJbnB1dCgnc3VibWl0JywgJ3NhdmUnLCBnVHh0KCdz YXZlJyksICdwdWJsaXNoJykKICAgICAgICAgICAgKS4KCiAgICAgICAgICAgIGVJbnB1dCgn c21kX2JpbycpLgogICAgICAgICAgICAoJGlkID8gaElucHV0KCdpZCcsICRpZCkuaElucHV0 KCduYW1lJywgJG5hbWUpLnNJbnB1dCgnc21kX2Jpb19tZXRhX3NhdmUnKSA6IHNJbnB1dCgn c21kX2Jpb19tZXRhX2FkZCcpKS4KICAgICAgICAgICAgdGFnKCcgJywgJ3NwYW4nLCAnIGlk PSJzbWRfYmlvX3NpemVfaGVscF90ZXh0IiB0aXRsZT0iJy5nVHh0KCdzbWRfYmlvX3NpemVo ZWxwX3RleHQnKS4nIicpLgogICAgICAgICAgICB0YWcoJyAnLCAnc3BhbicsICcgaWQ9InNt ZF9iaW9fc2l6ZV9oZWxwX251bWJlciIgdGl0bGU9IicuZ1R4dCgnc21kX2Jpb19zaXplaGVs cF9udW1yYW5nZScpLiciJykuCiAgICAgICAgICAgIHRhZygnICcsICdzcGFuJywgJyBpZD0i c21kX2Jpb19zaXplX2hlbHBfcmFuZ2UiIHRpdGxlPSInLmdUeHQoJ3NtZF9iaW9fc2l6ZWhl bHBfbnVtcmFuZ2UnKS4nIicpLgogICAgICAgICAgICB0YWcoJyAnLCAnc3BhbicsICcgaWQ9 InNtZF9iaW9fc2l6ZV9oZWxwX2xpc3QiIHRpdGxlPSInLmdUeHQoJ3NtZF9iaW9faGVscF91 bnVzZWQnKS4nIicpLgogICAgICAgICAgICB0YWcoJyAnLCAnc3BhbicsICcgaWQ9InNtZF9i aW9fc2l6ZV9oZWxwX211bHRpbGlzdCIgdGl0bGU9IicuZ1R4dCgnc21kX2Jpb19oZWxwX3Vu dXNlZCcpLiciJykuCiAgICAgICAgICAgIHRhZygnICcsICdzcGFuJywgJyBpZD0ic21kX2Jp b19zaXplX2hlbHBfcmFkaW8iIHRpdGxlPSInLmdUeHQoJ3NtZF9iaW9faGVscF91bnVzZWQn KS4nIicpLgogICAgICAgICAgICB0YWcoJyAnLCAnc3BhbicsICcgaWQ9InNtZF9iaW9fc2l6 ZV9oZWxwX3llc25vcmFkaW8iIHRpdGxlPSInLmdUeHQoJ3NtZF9iaW9faGVscF91bnVzZWQn KS4nIicpLgogICAgICAgICAgICB0YWcoJyAnLCAnc3BhbicsICcgaWQ9InNtZF9iaW9fc2l6 ZV9oZWxwX2NoZWNrYm94IiB0aXRsZT0iJy5nVHh0KCdzbWRfYmlvX2hlbHBfdW51c2VkJyku JyInKS4KICAgICAgICAgICAgdGFnKCcgJywgJ3NwYW4nLCAnIGlkPSJzbWRfYmlvX3NpemVf aGVscF90ZXh0YXJlYSIgdGl0bGU9IicuZ1R4dCgnc21kX2Jpb19zaXplaGVscF90ZXh0YXJl YScpLiciJykuCiAgICAgICAgICAgIHRhZygnICcsICdzcGFuJywgJyBpZD0ic21kX2Jpb19z aXplX2hlbHBfaW1hZ2UiIHRpdGxlPSInLmdUeHQoJ3NtZF9iaW9fc2l6ZWhlbHBfaW1hZ2Un KS4nIicpLgogICAgICAgICAgICB0YWcoJyAnLCAnc3BhbicsICcgaWQ9InNtZF9iaW9fc2l6 ZV9oZWxwX2VtYWlsIiB0aXRsZT0iJy5nVHh0KCdzbWRfYmlvX3NpemVoZWxwX3RleHQnKS4n IicpLgogICAgICAgICAgICB0YWcoJyAnLCAnc3BhbicsICcgaWQ9InNtZF9iaW9fc2l6ZV9o ZWxwX3VybCIgdGl0bGU9IicuZ1R4dCgnc21kX2Jpb19zaXplaGVscF90ZXh0JykuJyInKS4K ICAgICAgICAgICAgdGFnKCcgJywgJ3NwYW4nLCAnIGlkPSJzbWRfYmlvX3NpemVfaGVscF9k YXRldGltZSIgdGl0bGU9IicuZ1R4dCgnc21kX2Jpb19zaXplaGVscF90ZXh0JykuJyInKS4K ICAgICAgICAgICAgdGFnKCcgJywgJ3NwYW4nLCAnIGlkPSJzbWRfYmlvX3NpemVfaGVscF9k YXRlIiB0aXRsZT0iJy5nVHh0KCdzbWRfYmlvX3NpemVoZWxwX3RleHQnKS4nIicpLgogICAg ICAgICAgICB0YWcoJyAnLCAnc3BhbicsICcgaWQ9InNtZF9iaW9fc2l6ZV9oZWxwX21vbnRo IiB0aXRsZT0iJy5nVHh0KCdzbWRfYmlvX3NpemVoZWxwX3RleHQnKS4nIicpLgogICAgICAg ICAgICB0YWcoJyAnLCAnc3BhbicsICcgaWQ9InNtZF9iaW9fc2l6ZV9oZWxwX3dlZWsiIHRp dGxlPSInLmdUeHQoJ3NtZF9iaW9fc2l6ZWhlbHBfdGV4dCcpLiciJykuCiAgICAgICAgICAg IHRhZygnICcsICdzcGFuJywgJyBpZD0ic21kX2Jpb19zaXplX2hlbHBfdGltZSIgdGl0bGU9 IicuZ1R4dCgnc21kX2Jpb19zaXplaGVscF90ZXh0JykuJyInKS4KCiAgICAgICAgICAgIHRh ZygnICcsICdzcGFuJywgJyBpZD0ic21kX2Jpb192YWxfaGVscF90ZXh0IiB0aXRsZT0iJy5n VHh0KCdzbWRfYmlvX3ZhbGhlbHBfdGV4dCcpLiciJykuCiAgICAgICAgICAgIHRhZygnICcs ICdzcGFuJywgJyBpZD0ic21kX2Jpb192YWxfaGVscF9udW1iZXIiIHRpdGxlPSInLmdUeHQo J3NtZF9iaW9fdmFsaGVscF90ZXh0JykuJyInKS4KICAgICAgICAgICAgdGFnKCcgJywgJ3Nw YW4nLCAnIGlkPSJzbWRfYmlvX3ZhbF9oZWxwX3JhbmdlIiB0aXRsZT0iJy5nVHh0KCdzbWRf YmlvX3ZhbGhlbHBfdGV4dCcpLiciJykuCiAgICAgICAgICAgIHRhZygnICcsICdzcGFuJywg JyBpZD0ic21kX2Jpb192YWxfaGVscF9saXN0IiB0aXRsZT0iJy5nVHh0KCdzbWRfYmlvX3Zh bGhlbHBfbHJjJykuJyInKS4KICAgICAgICAgICAgdGFnKCcgJywgJ3NwYW4nLCAnIGlkPSJz bWRfYmlvX3ZhbF9oZWxwX211bHRpbGlzdCIgdGl0bGU9IicuZ1R4dCgnc21kX2Jpb192YWxo ZWxwX2xyYycpLiciJykuCiAgICAgICAgICAgIHRhZygnICcsICdzcGFuJywgJyBpZD0ic21k X2Jpb192YWxfaGVscF9yYWRpbyIgdGl0bGU9IicuZ1R4dCgnc21kX2Jpb192YWxoZWxwX2xy YycpLiciJykuCiAgICAgICAgICAgIHRhZygnICcsICdzcGFuJywgJyBpZD0ic21kX2Jpb192 YWxfaGVscF95ZXNub3JhZGlvIiB0aXRsZT0iJy5nVHh0KCdzbWRfYmlvX3ZhbGhlbHBfeW5y JykuJyInKS4KICAgICAgICAgICAgdGFnKCcgJywgJ3NwYW4nLCAnIGlkPSJzbWRfYmlvX3Zh bF9oZWxwX2NoZWNrYm94IiB0aXRsZT0iJy5nVHh0KCdzbWRfYmlvX3ZhbGhlbHBfbHJjJyku JyInKS4KICAgICAgICAgICAgdGFnKCcgJywgJ3NwYW4nLCAnIGlkPSJzbWRfYmlvX3ZhbF9o ZWxwX3RleHRhcmVhIiB0aXRsZT0iJy5nVHh0KCdzbWRfYmlvX3ZhbGhlbHBfdGV4dCcpLici JykuCiAgICAgICAgICAgIHRhZygnICcsICdzcGFuJywgJyBpZD0ic21kX2Jpb192YWxfaGVs cF9pbWFnZSIgdGl0bGU9IicuZ1R4dCgnc21kX2Jpb192YWxoZWxwX2ltYWdlJykuJyInKS4K ICAgICAgICAgICAgdGFnKCcgJywgJ3NwYW4nLCAnIGlkPSJzbWRfYmlvX3ZhbF9oZWxwX2Vt YWlsIiB0aXRsZT0iJy5nVHh0KCdzbWRfYmlvX3ZhbGhlbHBfdGV4dCcpLiciJykuCiAgICAg ICAgICAgIHRhZygnICcsICdzcGFuJywgJyBpZD0ic21kX2Jpb192YWxfaGVscF91cmwiIHRp dGxlPSInLmdUeHQoJ3NtZF9iaW9fdmFsaGVscF90ZXh0JykuJyInKS4KICAgICAgICAgICAg dGFnKCcgJywgJ3NwYW4nLCAnIGlkPSJzbWRfYmlvX3ZhbF9oZWxwX2RhdGV0aW1lIiB0aXRs ZT0iJy5nVHh0KCdzbWRfYmlvX3ZhbGhlbHBfdGV4dCcpLiciJykuCiAgICAgICAgICAgIHRh ZygnICcsICdzcGFuJywgJyBpZD0ic21kX2Jpb192YWxfaGVscF9kYXRlIiB0aXRsZT0iJy5n VHh0KCdzbWRfYmlvX3ZhbGhlbHBfdGV4dCcpLiciJykuCiAgICAgICAgICAgIHRhZygnICcs ICdzcGFuJywgJyBpZD0ic21kX2Jpb192YWxfaGVscF9tb250aCIgdGl0bGU9IicuZ1R4dCgn c21kX2Jpb192YWxoZWxwX3RleHQnKS4nIicpLgogICAgICAgICAgICB0YWcoJyAnLCAnc3Bh bicsICcgaWQ9InNtZF9iaW9fdmFsX2hlbHBfd2VlayIgdGl0bGU9IicuZ1R4dCgnc21kX2Jp b192YWxoZWxwX3RleHQnKS4nIicpLgogICAgICAgICAgICB0YWcoJyAnLCAnc3BhbicsICcg aWQ9InNtZF9iaW9fdmFsX2hlbHBfdGltZSIgdGl0bGU9IicuZ1R4dCgnc21kX2Jpb192YWxo ZWxwX3RleHQnKS4nIicpLgogICAgICAgICc8L2Rpdj4nCiAgICApOwp9CgovLyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KZnVuY3Rpb24gc21kX2Jpb19tZXRhX2xpc3QoKSB7CgogICAg JHNtZF9iaW9fdHlwZXMgPSBzbWRfYmlvX2dldF90eXBlcygpOwoKICAgIGV4dHJhY3QoZ3Bz YShhcnJheSgnc29ydCcsICdkaXInLCAnY3JpdCcsICdzZWFyY2hfbWV0aG9kJykpKTsKICAg IGlmICgkc29ydCA9PT0gJycpICRzb3J0ID0gZ2V0X3ByZWYoJ3NtZF9iaW9fbWV0YV9zb3J0 X2NvbHVtbicsICduYW1lJyk7CiAgICBpZiAoJGRpciA9PT0gJycpICRkaXIgPSBnZXRfcHJl Zignc21kX2Jpb19tZXRhX3NvcnRfZGlyJywgJ2FzYycpOwogICAgJGRpciA9ICgkZGlyID09 ICdkZXNjJykgPyAnZGVzYycgOiAnYXNjJzsKCiAgICBpZiAoIWluX2FycmF5KCRzb3J0LCBh cnJheSgnbmFtZScsICd0aXRsZScsICd0eXBlJywgJ3NpemUnLCAndmFsJywgJ3Bvc2l0aW9u JykpKSAkc29ydCA9ICdwb3NpdGlvbic7CgogICAgJHNvcnRfc3FsICAgPSAkc29ydC4nICcu JGRpcjsKCiAgICBzZXRfcHJlZignc21kX2Jpb19tZXRhX3NvcnRfY29sdW1uJywgJHNvcnQs ICdzbWRfYmlvJywgMiwgJycsIDAsIFBSRUZfUFJJVkFURSk7CiAgICBzZXRfcHJlZignc21k X2Jpb19tZXRhX3NvcnRfZGlyJywgJGRpciwgJ3NtZF9iaW8nLCAyLCAnJywgMCwgUFJFRl9Q UklWQVRFKTsKCiAgICAkc3dpdGNoX2RpciA9ICgkZGlyID09ICdkZXNjJykgPyAnYXNjJyA6 ICdkZXNjJzsKCiAgICAkcnMgPSBzYWZlX3Jvd3Nfc3RhcnQoJyonLCBTTURfQklPX01FVEEs ICcxPTEgT1JERVIgQlkgJy4kc29ydF9zcWwpOwogICAgJG91dCA9IGFycmF5KCk7CgogICAg aWYgKCRycykgewogICAgICAgICRvdXRbXSA9CiAgICAgICAgbi4gJzxmb3JtIGlkPSJzbWRf YmlvX2Zvcm0iIGFjdGlvbj0iaW5kZXgucGhwIiBtZXRob2Q9InBvc3QiIG5hbWU9Imxvbmdm b3JtIiBjbGFzcz0ibXVsdGlfZWRpdF9mb3JtIj4nLgoKICAgICAgICBuLic8ZGl2IGNsYXNz PSJ0eHAtbGlzdHRhYmxlcyI+Jy4KICAgICAgICBzdGFydFRhYmxlKCcnLCAnJywgJ3R4cC1s aXN0JykuCiAgICAgICAgbi4nPHRoZWFkPicuCiAgICAgICAgdHIoCiAgICAgICAgICAgIGhD ZWxsKGZJbnB1dCgnY2hlY2tib3gnLCAnc2VsZWN0X2FsbCcsIDAsICcnLCAnJywgJycsICcn LCAnJywgJ3NlbGVjdF9hbGwnKSwgJycsICcgc2NvcGU9ImNvbCIgdGl0bGU9IicuZ1R4dCgn dG9nZ2xlX2FsbF9zZWxlY3RlZCcpLiciIGNsYXNzPSJtdWx0aS1lZGl0IicpLgogICAgICAg ICAgICBjb2x1bW5faGVhZCgnbmFtZScsICduYW1lJywgJ3NtZF9iaW8nLCB0cnVlLCAkc3dp dGNoX2RpciwgJycsICcnLCAoJ25hbWUnID09ICRzb3J0KSA/ICRkaXIgOiAnJykuCiAgICAg ICAgICAgIGNvbHVtbl9oZWFkKCd0aXRsZScsICd0aXRsZScsICdzbWRfYmlvJywgdHJ1ZSwg JHN3aXRjaF9kaXIsICcnLCAnJywgKCd0aXRsZScgPT0gJHNvcnQpID8gJGRpciA6ICcnKS4K ICAgICAgICAgICAgY29sdW1uX2hlYWQoJ3R5cGUnLCAndHlwZScsICdzbWRfYmlvJywgdHJ1 ZSwgJHN3aXRjaF9kaXIsICcnLCAnJywgKCd0eXBlJyA9PSAkc29ydCkgPyAkZGlyIDogJycp LgogICAgICAgICAgICBjb2x1bW5faGVhZChnVHh0KCdzbWRfYmlvX3NpemUnKSwgJ3NpemUn LCAnc21kX2JpbycsIHRydWUsICRzd2l0Y2hfZGlyLCAnJywgJycsICgnc2l6ZScgPT0gJHNv cnQpID8gJGRpciA6ICcnKS4KICAgICAgICAgICAgY29sdW1uX2hlYWQoJ3ZhbHVlJywgJ3Zh bCcsICdzbWRfYmlvJywgdHJ1ZSwgJHN3aXRjaF9kaXIsICcnLCAnJywgKCd2YWwnID09ICRz b3J0KSA/ICRkaXIgOiAnJykuCiAgICAgICAgICAgIGNvbHVtbl9oZWFkKGdUeHQoJ3NtZF9i aW9fcG9zaXRpb24nKSwgJ3Bvc2l0aW9uJywgJ3NtZF9iaW8nLCB0cnVlLCAkc3dpdGNoX2Rp ciwgJycsICcnLCAoJ3Bvc2l0aW9uJyA9PSAkc29ydCkgPyAkZGlyIDogJycpCiAgICAgICAg KS4KICAgICAgICBuLic8L3RoZWFkPicuCiAgICAgICAgbi4nPHRib2R5Pic7CgogICAgICAg IHdoaWxlICgkYSA9IG5leHRSb3coJHJzKSkgewogICAgICAgICAgICBleHRyYWN0KGRvU3Bl Y2lhbCgkYSkpOwoKICAgICAgICAgICAgJG91dFtdID0gdHIoCiAgICAgICAgICAgICAgICB0 ZChmSW5wdXQoJ2NoZWNrYm94JywgJ3NlbGVjdGVkW10nLCAkbmFtZSkpLgogICAgICAgICAg ICAgICAgdGQoZUxpbmsoJ3NtZF9iaW8nLCAnbWV0YV9lZGl0JywgJ2lkJywgJGlkLCAkbmFt ZSkpLgogICAgICAgICAgICAgICAgdGQoJHRpdGxlKS4KICAgICAgICAgICAgICAgIHRkKCRz bWRfYmlvX3R5cGVzWyR0eXBlXVsnbmFtZSddKS4KICAgICAgICAgICAgICAgIHRkKCRzaXpl KS4KICAgICAgICAgICAgICAgIHRkKCR2YWwpLgogICAgICAgICAgICAgICAgdGQoJHBvc2l0 aW9uKQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJG91dFtdID0gJzwvdGJv ZHk+Jy4KICAgICAgICAgICAgZW5kVGFibGUoKS4KICAgICAgICAgICAgbi4nPC9kaXY+Jy4K ICAgICAgICAgICAgc21kX2Jpb19tdWx0aWVkaXRfZm9ybSgnJywgJHNvcnQsICRkaXIsICRj cml0LCAkc2VhcmNoX21ldGhvZCkuCiAgICAgICAgICAgIHRJbnB1dCgpLgogICAgICAgICAg ICAnPC9mb3JtPic7CiAgICB9CiAgICByZXR1cm4gam9pbihuLCAkb3V0KTsKfQoKLy8gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCmZ1bmN0aW9uIHNtZF9iaW9fbXVsdGllZGl0X2Zvcm0o JHBhZ2UsICRzb3J0LCAkZGlyLCAkY3JpdCwgJHNlYXJjaF9tZXRob2QpIHsKCiAgICAkbWV0 aG9kcyA9IGFycmF5KAogICAgICAgICdkZWxldGUnID0+IGdUeHQoJ2RlbGV0ZScpLAogICAg KTsKCiAgICByZXR1cm4gbXVsdGlfZWRpdCgkbWV0aG9kcywgJ3NtZF9iaW8nLCAnc21kX2Jp b19tdWx0aV9lZGl0JywgJHBhZ2UsICRzb3J0LCAkZGlyLCAkY3JpdCwgJHNlYXJjaF9tZXRo b2QpOwp9CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZnVuY3Rpb24gc21kX2Jpb19t dWx0aV9lZGl0KCkKewogICAgJHNlbGVjdGVkID0gcHMoJ3NlbGVjdGVkJyk7CgogICAgaWYg KCEkc2VsZWN0ZWQgb3IgIWlzX2FycmF5KCRzZWxlY3RlZCkpCiAgICB7CiAgICAgICAgc21k X2JpbygpOwogICAgfQoKICAgICRzZWxlY3RlZCA9IGFycmF5X21hcCgnYXNzZXJ0X3N0cmlu ZycsICRzZWxlY3RlZCk7CiAgICAkbWV0aG9kICAgPSBwcygnZWRpdF9tZXRob2QnKTsKICAg ICRjaGFuZ2VkICA9IGFycmF5KCk7CiAgICAka2V5ID0gJyc7CgogICAgc3dpdGNoICgkbWV0 aG9kKQogICAgewogICAgICAgIGNhc2UgJ2RlbGV0ZSc6CiAgICAgICAgICAgIHJldHVybiBz bWRfYmlvX21ldGFfZGVsKCRzZWxlY3RlZCk7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAg ICBkZWZhdWx0OgogICAgICAgICAgICAka2V5ID0gJyc7CiAgICAgICAgICAgICR2YWwgPSAn JzsKICAgICAgICAgICAgYnJlYWs7CiAgICB9CgogICAgc21kX2JpbygpOwp9CgovLyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KZnVuY3Rpb24gc21kX2Jpb19tZXRhX21ha2VfbGlzdCgk dmFsKSB7CgogICAgaWYgKHN0cnBvcyhzdHJ0b2xvd2VyKCR2YWwpLCAnc21kX2Jpb19mbicp ICE9PSBmYWxzZSkgewogICAgICAgIC8vIFNwZWNpYWwgZnVuY3Rpb24gc3ludGF4IHNvIGNh bGwgdGhlIGRlc2lnbmF0ZWQKICAgICAgICAvLyBmdW5jdGlvbiB0byByZXRyaWV2ZSB0aGUg dmFsdWUocykKICAgICAgICAkcGFyYW1zID0gZG9fbGlzdCgkdmFsLCAnfCcpOwogICAgICAg IGFycmF5X3NoaWZ0KCRwYXJhbXMpOyAvLyBSZW1vdmUgU01EX0JJT19GTgogICAgICAgICRm biA9IGFycmF5X3NoaWZ0KCRwYXJhbXMpOwoKICAgICAgICAkZm5iaXRzID0gZG9fbGlzdCgk Zm4sICc6OicpOwogICAgICAgICRmbmNhbGwgPSAoaXNzZXQoJGZuYml0c1sxXSkpID8gYXJy YXkoJGZuYml0c1swXSwgJGZuYml0c1sxXSkgOiAkZm5iaXRzWzBdOwogICAgICAgICR2YWwg PSBjYWxsX3VzZXJfZnVuY19hcnJheSgkZm5jYWxsLCAkcGFyYW1zKTsKCiAgICAgICAgaWYg KGlzX2FycmF5KCR2YWwpKSB7CiAgICAgICAgICAgIC8vIEZha2UgYSBzdHJpbmcgbGlzdCBv ZiBuYW1lID0+IHZhbCBwYWlycwogICAgICAgICAgICAkb3V0ID0gYXJyYXkoKTsKICAgICAg ICAgICAgZm9yZWFjaCAoJHZhbCBhcyAkaWR4ID0+ICRpdGVtKSB7CiAgICAgICAgICAgICAg ICAkb3V0W10gPSBzdHJfcmVwbGFjZSgnLCcsICcmIzQ0OycsICRpZHggLiAnID0+ICcgLiAk aXRlbSk7IC8vIFByZXNlcnZlIGNvbW1hcyBieSBlbmNvZGluZyB0aGVtCiAgICAgICAgICAg IH0KICAgICAgICAgICAgJHZhbCA9IGpvaW4oJywgJywgJG91dCk7CiAgICAgICAgfQogICAg fQoKICAgIC8vIFBhcnNlIHRoZSB2YWx1ZXMKICAgICR3dmFscyA9IGRvX2xpc3QoJHZhbCwg J1xyXG4nKTsKICAgIGlmIChjb3VudCgkd3ZhbHMpID09IDEpIHsKICAgICAgICAkd3ZhbHMg PSBkb19saXN0KCR2YWwpOwogICAgfQogICAgcmV0dXJuIGpvaW4oJywgJywgZG9BcnJheSgk d3ZhbHMsICd0cmltJykpOwp9CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZnVuY3Rp b24gc21kX2Jpb19tZXRhX3NhdmUoKSB7CiAgICAkc21kX2Jpb19jb2x0eXBlcyA9IHNtZF9i aW9fZ2V0X2NvbHR5cGVzKCk7CiAgICAkc21kX2Jpb191bnVzZWQgPSBzbWRfYmlvX2dldF91 bnVzZWQoKTsKCiAgICBleHRyYWN0KGRvU2xhc2gocHNhKGFycmF5KCdpZCcsICduYW1lJywg J3RpdGxlJywgJ3R5cGUnLCAnY29sdHlwZScsICdjb2xzaXplJywgJ3NpemUnLCAncG9zaXRp b24nKSkpKTsKICAgICR2YWwgPSBwcygndmFsJyk7IC8vIERlZmVyIGRvU2xhc2goKSB1bnRp bCBsYXRlcgoKICAgICRpZCA9IGFzc2VydF9pbnQoJGlkKTsKICAgICR2YWwgPSBkb1NsYXNo KHNtZF9iaW9fbWV0YV9tYWtlX2xpc3QoJHZhbCkpOwogICAgJGhhc0RlZmF1bHQgPSAkc21k X2Jpb19jb2x0eXBlc1skY29sdHlwZV1bJ2hhc19kZWZhdWx0J107CgogICAgLy8gVmFsaWRh dGUgdGhlIGlucHV0IHRvIGVuc3VyZSBpdGVtcyBhcmUgZW1wdGllZCBmb3IgdHlwZXMgd2hl cmUgdGhleSdyZSB1bnVzZWQKICAgIGZvcmVhY2ggKCRzbWRfYmlvX3VudXNlZCBhcyAkdW51 c2VkID0+ICRleGNsdWRlcykgewogICAgICAgIGlmIChpbl9hcnJheSgkdHlwZSwgJGV4Y2x1 ZGVzKSkgewogICAgICAgICAgICAkJHVudXNlZCA9ICcnOwogICAgICAgIH0KICAgIH0KCiAg ICAvLyBWYWxpZGF0ZSB0aGUgaW5wdXQgdG8gZW5zdXJlIGl0ZW1zIHRoYXQgcmVxdWlyZSBh IGNvbHVtbiBzaXplIGhhdmUgb25lLi4uCiAgICBpZiAoZW1wdHkoJGNvbHNpemUpICYmICRz bWRfYmlvX2NvbHR5cGVzWyRjb2x0eXBlXVsnc2l6ZV9yZXEnXSAhPT0gZmFsc2UpIHsKICAg ICAgICAkY29sc2l6ZSA9ICRzbWRfYmlvX2NvbHR5cGVzWyRjb2x0eXBlXVsnc2l6ZV9yZXEn XTsKICAgIH0KCiAgICAvLyAuLi4gYW5kIHRoYXQgb25lcyB0aGF0IGRvbid0IHJlcXVpcmUg b25lIGFyZSByZW1vdmVkCiAgICBpZiAoJHNtZF9iaW9fY29sdHlwZXNbJGNvbHR5cGVdWydz aXplX3JlcSddID09PSBmYWxzZSkgewogICAgICAgICRjb2xzaXplID0gbnVsbDsKICAgIH0K CiAgICAvLyBUcnkgdG8gYWRqdXN0IGNvbHVtbiB0eXBlL3NpemUgaWYgYXBwbGljYWJsZQog ICAgJHJzID0gc2FmZV9hbHRlcihTTURfQklPLCAiQ0hBTkdFIGAkbmFtZWAgYCRuYW1lYCAk Y29sdHlwZSIgLiAoKCRjb2xzaXplKSA/ICIoJGNvbHNpemUpIiA6ICcnKSAuICIgTlVMTCIg LiAoKCRoYXNEZWZhdWx0KSA/ICIgREVGQVVMVCBOVUxMIiA6ICcnKSk7CgogICAgaWYgKCRy cykgewogICAgICAgICRycyA9IHNhZmVfdXBkYXRlKFNNRF9CSU9fTUVUQSwgIgogICAgICAg ICAgICB0aXRsZSA9ICckdGl0bGUnLAogICAgICAgICAgICB0eXBlID0gJyR0eXBlJywKICAg ICAgICAgICAgc2l6ZSA9ICckc2l6ZScsCiAgICAgICAgICAgIGNvbHR5cGUgPSAnJGNvbHR5 cGUnLAogICAgICAgICAgICAiIC4gKCgkY29sc2l6ZSkgPyAiY29sc2l6ZSA9ICRjb2xzaXpl LCIgOiAnJykgLiAiCiAgICAgICAgICAgIHZhbCA9ICckdmFsJywKICAgICAgICAgICAgcG9z aXRpb24gPSAnJHBvc2l0aW9uJyIsCiAgICAgICAgICAgICJpZCA9ICRpZCIKICAgICAgICAp OwoKICAgICAgICBpZiAoJHJzKSB7CiAgICAgICAgICAgICRtc2cgPSBnVHh0KCdzbWRfYmlv X21ldGFfdXBkYXRlZCcsIGFycmF5KCd7bmFtZX0nID0+ICRuYW1lKSk7CiAgICAgICAgfSBl bHNlIHsKICAgICAgICAgICAgJG1zZyA9IGFycmF5KGdUeHQoJ3NtZF9iaW9fbWV0YV91cGRh dGVfcGFydGlhbCcsIGFycmF5KCd7bmFtZX0nID0+ICRuYW1lKSksIEVfV0FSTklORyk7CiAg ICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICAkbXNnID0gYXJyYXkoZ1R4dCgnc21kX2Jp b19tZXRhX3VwZGF0ZV9mYWlsZWQnLCBhcnJheSgne25hbWV9JyA9PiAkbmFtZSkpLCBFX1dB Uk5JTkcpOwogICAgfQoKICAgIHNtZF9iaW9fY29uZmlnKCRtc2cpOwp9CgovLyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KZnVuY3Rpb24gc21kX2Jpb19tZXRhX2FkZCgpIHsKICAgICRz bWRfYmlvX2NvbHR5cGVzID0gc21kX2Jpb19nZXRfY29sdHlwZXMoKTsKICAgICRzbWRfYmlv X3VudXNlZCA9IHNtZF9iaW9fZ2V0X3VudXNlZCgpOwoKICAgIGV4dHJhY3QoZG9TbGFzaChw c2EoYXJyYXkoJ25hbWUnLCAndGl0bGUnLCAndHlwZScsICdjb2x0eXBlJywgJ2NvbHNpemUn LCAnc2l6ZScsICdwb3NpdGlvbicpKSkpOwogICAgJHZhbCA9IHBzKCd2YWwnKTsgLy8gRGVm ZXIgZG9TbGFzaCgpIHVudGlsIGxhdGVyCgogICAgLy8gVXNlIHRoZSB0aXRsZSBhcyBuYW1l IGlmIGl0J3Mgb21pdHRlZAogICAgaWYgKCRuYW1lID09PSAnJyAmJiAkdGl0bGUgIT09ICcn KSB7CiAgICAgICAgJG5hbWUgPSAkdGl0bGU7CiAgICB9CgogICAgJG5hbWUgPSBzbWRfYmlv X3Nhbml0aXplKCRuYW1lKTsKCiAgICBpZiAoIWVtcHR5KCRuYW1lKSAmJiBzbWRfYmlvX21l dGFfY2hlY2soJG5hbWUpKSB7CiAgICAgICAgJHNpemUgPSAoZW1wdHkoJHNpemUpKSA/IDI1 IDogJHNpemU7CiAgICAgICAgJGhhc0RlZmF1bHQgPSAkc21kX2Jpb19jb2x0eXBlc1skY29s dHlwZV1bJ2hhc19kZWZhdWx0J107CgogICAgICAgIC8vIFZhbGlkYXRlIHRoZSBpbnB1dCB0 byBlbnN1cmUgaXRlbXMgYXJlIGVtcHRpZWQgZm9yIHR5cGVzIHdoZXJlIHRoZXkncmUgdW51 c2VkCiAgICAgICAgZm9yZWFjaCAoJHNtZF9iaW9fdW51c2VkIGFzICR1bnVzZWQgPT4gJGV4 Y2x1ZGVzKSB7CiAgICAgICAgICAgIGlmIChpbl9hcnJheSgkdHlwZSwgJGV4Y2x1ZGVzKSkg ewogICAgICAgICAgICAgICAgJCR1bnVzZWQgPSAnJzsKICAgICAgICAgICAgfQogICAgICAg IH0KCiAgICAgICAgLy8gVmFsaWRhdGUgdGhlIGlucHV0IHRvIGVuc3VyZSBpdGVtcyB0aGF0 IHJlcXVpcmUgYSBjb2x1bW4gc2l6ZSBoYXZlIG9uZS4uLgogICAgICAgIGlmIChlbXB0eSgk Y29sc2l6ZSkgJiYgJHNtZF9iaW9fY29sdHlwZXNbJGNvbHR5cGVdWydzaXplX3JlcSddICE9 PSBmYWxzZSkgewogICAgICAgICAgICAkY29sc2l6ZSA9ICRzbWRfYmlvX2NvbHR5cGVzWyRj b2x0eXBlXVsnc2l6ZV9yZXEnXTsKICAgICAgICB9CiAgICAgICAgLy8gLi4uIGFuZCB0aGF0 IG9uZXMgdGhhdCBkb24ndCByZXF1aXJlIG9uZSBhcmUgcmVtb3ZlZAogICAgICAgIGlmICgk c21kX2Jpb19jb2x0eXBlc1skY29sdHlwZV1bJ3NpemVfcmVxJ10gPT09IGZhbHNlKSB7CiAg ICAgICAgICAgICRjb2xzaXplID0gbnVsbDsKICAgICAgICB9CgogICAgICAgICRyZXQgPSBz YWZlX2FsdGVyKFNNRF9CSU8sICJBREQgYCRuYW1lYCAkY29sdHlwZSIgLiAoKCRjb2xzaXpl KSA/ICIoJGNvbHNpemUpIiA6ICcnKSAuICIgTlVMTCIgLiAoKCRoYXNEZWZhdWx0KSA/ICIg REVGQVVMVCBOVUxMIiA6ICcnKSk7CiAgICAgICAgJHZhbCA9IGRvU2xhc2goc21kX2Jpb19t ZXRhX21ha2VfbGlzdCgkdmFsKSk7CgogICAgICAgIGlmICgkcmV0KSB7CiAgICAgICAgICAg ICRycyA9IHNhZmVfaW5zZXJ0KFNNRF9CSU9fTUVUQSwgIgogICAgICAgICAgICAgICAgbmFt ZSA9ICckbmFtZScsCiAgICAgICAgICAgICAgICB0aXRsZSA9ICckdGl0bGUnLAogICAgICAg ICAgICAgICAgdHlwZSA9ICckdHlwZScsCiAgICAgICAgICAgICAgICBzaXplID0gJyRzaXpl JywKICAgICAgICAgICAgICAgIGNvbHR5cGUgPSAnJGNvbHR5cGUnLAogICAgICAgICAgICAg ICAgIiAuICgoJGNvbHNpemUpID8gImNvbHNpemUgPSAkY29sc2l6ZSwiIDogJycpIC4gIgog ICAgICAgICAgICAgICAgdmFsID0gJyR2YWwnLAogICAgICAgICAgICAgICAgcG9zaXRpb24g PSAnJHBvc2l0aW9uJwogICAgICAgICAgICAiKTsKCiAgICAgICAgICAgIGlmICgkcnMpIHsK ICAgICAgICAgICAgICAgIHNtZF9iaW9fY29uZmlnKGdUeHQoJ3NtZF9iaW9fbWV0YV9hZGRl ZCcpKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0K ICAgIH0KCiAgICBzbWRfYmlvX2NvbmZpZyhhcnJheShnVHh0KCdzbWRfYmlvX21ldGFfbm90 X2FkZGVkJyksIEVfRVJST1IpKTsKfQoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmZ1 bmN0aW9uIHNtZF9iaW9fbWV0YV9kZWwoJG5hbWVzKSB7CgogICAgJGNoYW5nZWQgPSBhcnJh eSgpOwoKICAgICRuYW1lcyAgPSAkbmFtZXMgPyBhcnJheV9tYXAoJ2Fzc2VydF9zdHJpbmcn LCAkbmFtZXMpIDogYXJyYXkoYXNzZXJ0X3N0cmluZyhwcygnbmFtZScpKSk7CiAgICAkbWVz c2FnZSA9ICcnOwoKICAgIGZvcmVhY2ggKCRuYW1lcyBhcyAkbmFtZSkgewogICAgICAgICRl eGlzdHMgPSBzbWRfYmlvX21ldGFfY2hlY2soJG5hbWUpOwogICAgICAgICRyZXQgPSBAc2Fm ZV9hbHRlcihTTURfQklPLCAiRFJPUCBDT0xVTU4gYCRuYW1lYCIpOwogICAgICAgIGlmICgk cmV0IHx8ICRleGlzdHMpIHsKICAgICAgICAgICAgJHJldCA9IHNhZmVfZGVsZXRlKFNNRF9C SU9fTUVUQSwgIm5hbWU9JyRuYW1lJyIpOwogICAgICAgICAgICAkY2hhbmdlZFtdID0gJG5h bWU7CiAgICAgICAgfQogICAgfQogICAgc21kX2Jpb19jb25maWcoZ1R4dCgnc21kX2Jpb19t ZXRhX2RlbGV0ZWQnLCBhcnJheSgne2FmZmVjdGVkfScgPT4gam9pbignLCAnLCAkY2hhbmdl ZCkpKSk7Cn0KCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpmdW5jdGlvbiBzbWRfYmlv X21ldGFfY2hlY2soJGNvbCkgewogICAgJHVjb2xzID0gZ2V0VGhpbmdzKCdkZXNjcmliZSBg Jy5QRlguJ3R4cF91c2Vyc2AnKTsKICAgICRiY29scyA9IGdldFRoaW5ncygnZGVzY3JpYmUg YCcuUEZYLlNNRF9CSU8uJ2AnKTsKICAgICRjb2xzID0gYXJyYXlfbWVyZ2UoJHVjb2xzLCAk YmNvbHMpOwogICAgcmV0dXJuICghaW5fYXJyYXkoJGNvbCwgJGNvbHMpKTsKfQoKLy8gKioq KioqKioqKioqKioqKioqKioqKioqCi8vIEFETUlOIC0+IFVTRVJTIFBBTkVMCi8vIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQpmdW5jdGlvbiBzbWRfYmlvX2ZpZWxkcygkZXZ0LCAkc3Rw LCAkbXQsICRkYXRhKSB7CiAgICBnbG9iYWwgJHNtZF91bV9ldmVudCwgJHR4cF91c2VyOwoK ICAgICRvdXQgPSAkdmFscyA9IGFycmF5KCk7CgogICAgJHJzdGVwID0gZ3BzKCdzdGVwJyk7 CiAgICBpZihzbWRfYmlvX3RhYmxlX2V4aXN0KCkpIHsKICAgICAgICBpZiAoaW5fYXJyYXko JHJzdGVwLCBhcnJheSgnJywgJ2F1dGhvcl9lZGl0JywgJ3NtZF91bV9lZGl0JywgJ3NtZF91 bV9zYXZlJywgJ3NtZF91bV9jaGFuZ2VfcGFzcycpKSkgewogICAgICAgICAgICBleHRyYWN0 KGdwc2EoYXJyYXkoJ3VzZXJfaWQnKSkpOwoKICAgICAgICAgICAgaWYgKGVtcHR5KCR1c2Vy X2lkKSAmJiAhaGFzX3ByaXZzKCdzbWRfdW0udXNyLmNyZWF0ZScpKSB7CiAgICAgICAgICAg ICAgICAvLyBUaGlzIGlzIGEgc2VsZi1lZGl0IGZyb20gc21kX3VzZXJfbWFuYWdlciwgdGh1 cyB0aGUgdXNlcl9pZCBoYXMgbm90IGJlZW4gc2VudAogICAgICAgICAgICAgICAgJHVzZXJf aWQgPSBzYWZlX2ZpZWxkKCd1c2VyX2lkJywndHhwX3VzZXJzJywibmFtZSA9ICciLmRvU2xh c2goJHR4cF91c2VyKS4iJyIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIFNoYW1l IHdlIGhhdmUgdG8gZG91YmxlIGRlLWNsdXRjaCBoZXJlIGJ1dCB3ZSBjYW4ndCBpbmRleCBv biB1c2VyX2lkIHVuZm9ydHVuYXRlbHkgKCdjb3Mgd2hlbgogICAgICAgICAgICAvLyBpbnNl cnRpbmcgbmV3IHVzZXJzLCB0aGUgYmlvIGZ1bmN0aW9ucyBydW4gX0JFRk9SRV8gYW4gYXV0 b19pbmNyZW1lbnQgSUQgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IFR4cCkKICAgICAgICAgICAg JHVuYW1lID0gc2FmZV9maWVsZCgnbmFtZScsJ3R4cF91c2VycycsInVzZXJfaWQgPSAnIi5k b1NsYXNoKCR1c2VyX2lkKS4iJyIpOwogICAgICAgICAgICAkdmFscyA9IHNhZmVfcm93KCcq JywgU01EX0JJTywgInVzZXJfcmVmPSciLmRvU2xhc2goJHVuYW1lKS4iJyIpOwogICAgICAg IH0KCiAgICAgICAgJHdpZGdldHMgPSBzYWZlX3Jvd3MoJyonLCBTTURfQklPX01FVEEsICcx PTEgT1JERVIgQlkgcG9zaXRpb24nKTsKICAgICAgICAkdGRhY19pbWFnZSA9ICcgY2xhc3M9 InNtZF9iaW9faW1hZ2VfY2VsbCInOwogICAgICAgIGZvcmVhY2ggKCR3aWRnZXRzIGFzICR3 aWRnZXQpIHsKICAgICAgICAgICAgJHZhbCA9ICgkdmFscyAmJiBpc3NldCgkdmFsc1skd2lk Z2V0WyduYW1lJ11dKSkgPyAkdmFsc1skd2lkZ2V0WyduYW1lJ11dIDogJHdpZGdldFsndmFs J107CiAgICAgICAgICAgICR0aXRsZSA9ICgkd2lkZ2V0Wyd0aXRsZSddKSA/ICR3aWRnZXRb J3RpdGxlJ10gOiAkd2lkZ2V0WyduYW1lJ107CiAgICAgICAgICAgICRzaXplb3B0cyA9IGRv X2xpc3QoJHdpZGdldFsnc2l6ZSddKTsKICAgICAgICAgICAgJHNpemUxID0gJHNpemVvcHRz WzBdOwogICAgICAgICAgICAkc2l6ZTIgPSAoaXNzZXQoJHNpemVvcHRzWzFdKSkgPyAkc2l6 ZW9wdHNbMV0gOiAnJzsKICAgICAgICAgICAgJHNpemUzID0gKGlzc2V0KCRzaXplb3B0c1sy XSkpID8gJHNpemVvcHRzWzJdIDogJyc7CiAgICAgICAgICAgICRuYW1lID0gJ3NtZF9iaW9f Jy4kd2lkZ2V0WyduYW1lJ107CiAgICAgICAgICAgIHN3aXRjaCgkd2lkZ2V0Wyd0eXBlJ10p IHsKICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3QnOgogICAgICAgICAgICAgICAgICAgICRz ZWx2ID0gc21kX2Jpb19zcGxpdHZhbCgkd2lkZ2V0Wyd2YWwnXSk7CiAgICAgICAgICAgICAg ICAgICAgbGlzdCgkc2VsdiwgJGRmbHQpID0gc21kX2Jpb19nZXRfZGVmYXVsdCgkc2Vsdiwg JHZhbCk7CiAgICAgICAgICAgICAgICAgICAgJG91dFtdID0gaW5wdXRMYWJlbCgKICAgICAg ICAgICAgICAgICAgICAgICAgJG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVj dElucHV0KCRuYW1lLCAkc2VsdiwgJGRmbHQsIGZhbHNlLCAnJywgJG5hbWUpLAogICAgICAg ICAgICAgICAgICAgICAgICAkdGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICcnLAog ICAgICAgICAgICAgICAgICAgICAgICAndHhwLWZvcm0tZmllbGQgc21kX2Jpb19zZWxlY3Qg Jy4kbmFtZQogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgYnJl YWs7CiAgICAgICAgICAgICAgICBjYXNlICdtdWx0aWxpc3QnOgogICAgICAgICAgICAgICAg ICAgICR2YWwgPSAoJHZhbHMgJiYgaXNzZXQoJHZhbHNbJHdpZGdldFsnbmFtZSddXSkpID8g JHZhbHNbJHdpZGdldFsnbmFtZSddXSA6ICcnOwogICAgICAgICAgICAgICAgICAgICRzZWx2 ID0gc21kX2Jpb19zcGxpdHZhbCgkd2lkZ2V0Wyd2YWwnXSk7CiAgICAgICAgICAgICAgICAg ICAgbGlzdCgkc2VsdiwgJGRmbHQpID0gc21kX2Jpb19nZXRfZGVmYXVsdCgkc2VsdiwgJHZh bCk7CiAgICAgICAgICAgICAgICAgICAgJHVzZV92YWwgPSAoaXNzZXQoJHZhbHNbJHdpZGdl dFsnbmFtZSddXSkgJiYgKCR2YWxzWyR3aWRnZXRbJ25hbWUnXV0gIT09ICcnIHx8ICR2YWxz WyR3aWRnZXRbJ25hbWUnXV0gIT09IG51bGwpKSA/ICR2YWwgOiAkZGZsdDsgLy8gRG9uJ3Qg dXNlIGRlZmF1bHRzIGlmIHRoaXMgZmllbGQgaGFzIGJlZW4gcHJldmlvdXNseSBzYXZlZAog ICAgICAgICAgICAgICAgICAgICRzZWxlY3RlZFZhbHMgPSBkb19saXN0KCR1c2VfdmFsKTsK ICAgICAgICAgICAgICAgICAgICAkaXRlbXMgPSBhcnJheSgpOwogICAgICAgICAgICAgICAg ICAgICRpdGVtc1tdID0gJzxzZWxlY3QgbmFtZT0iJy4kbmFtZS4nIiBjbGFzcz0ibGlzdCBt dWx0aXBsZSIgbXVsdGlwbGU9Im11bHRpcGxlIiBvbmNoYW5nZT0ic21kX2Jpb19tdWx0aXNl bChcJycuJG5hbWUuJ1wnKTsiPic7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJHNl bHYgYXMgJGlkeCA9PiAkbGJsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdCB1 c2luZyBzZWxlY3RJbnB1dCgpIGJlY2F1c2UgaXQgZG9lc24ndCBzdXBwb3J0IG11bHRpcGxl cwogICAgICAgICAgICAgICAgICAgICAgICAkaXRlbXNbXSA9ICc8b3B0aW9uIHZhbHVlPSJt c18nLiRpZHguJyIgJy4oKGluX2FycmF5KCRpZHgsICRzZWxlY3RlZFZhbHMpKSA/ICcgc2Vs ZWN0ZWQ9InNlbGVjdGVkIicgOiAnJykgLiAnPicgLiAkbGJsIC4gJzwvb3B0aW9uPic7CiAg ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRpdGVtc1tdID0gJzwv c2VsZWN0Pic7CiAgICAgICAgICAgICAgICAgICAgJG91dFtdID0gaW5wdXRMYWJlbCgKICAg ICAgICAgICAgICAgICAgICAgICAgJG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIGpv aW4obiwkaXRlbXMpLmZJbnB1dCgnaGlkZGVuJywkbmFtZSwkdXNlX3ZhbCwnJywnJywnJywn JywnJywkbmFtZSksCiAgICAgICAgICAgICAgICAgICAgICAgICR0aXRsZSwKICAgICAgICAg ICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAgICAgICAgICd0eHAtZm9ybS1m aWVsZCBzbWRfYmlvX3NlbGVjdCAnLiRuYW1lCiAgICAgICAgICAgICAgICAgICAgKTsKICAg ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ3JhZGlvJzoK ICAgICAgICAgICAgICAgICAgICAkc2VsdiA9IHNtZF9iaW9fc3BsaXR2YWwoJHdpZGdldFsn dmFsJ10pOwogICAgICAgICAgICAgICAgICAgIGxpc3QoJHNlbHYsICRkZmx0KSA9IHNtZF9i aW9fZ2V0X2RlZmF1bHQoJHNlbHYsICR2YWwpOwogICAgICAgICAgICAgICAgICAgICRvdXRb XSA9IGlucHV0TGFiZWwoCiAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lLAogICAgICAg ICAgICAgICAgICAgICAgICByYWRpb1NldCgkc2VsdiwgJG5hbWUsICRkZmx0KSwKICAgICAg ICAgICAgICAgICAgICAgICAgJHRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAnJywK ICAgICAgICAgICAgICAgICAgICAgICAgJ3R4cC1mb3JtLWZpZWxkIHNtZF9iaW9fcmFkaW8g Jy4kbmFtZQogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgYnJl YWs7CiAgICAgICAgICAgICAgICBjYXNlICd5ZXNub3JhZGlvJzoKICAgICAgICAgICAgICAg ICAgICAkb3V0W10gPSBpbnB1dExhYmVsKAogICAgICAgICAgICAgICAgICAgICAgICAkbmFt ZSwKICAgICAgICAgICAgICAgICAgICAgICAgeWVzbm9SYWRpbygkbmFtZSwgJHZhbCksCiAg ICAgICAgICAgICAgICAgICAgICAgICR0aXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAg JycsCiAgICAgICAgICAgICAgICAgICAgICAgICd0eHAtZm9ybS1maWVsZCBzbWRfYmlvX3Jh ZGlvICcuJG5hbWUKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAg IGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnY2hlY2tib3gnOgogICAgICAgICAgICAg ICAgICAgICR2YWwgPSAoJHZhbHMgJiYgaXNzZXQoJHZhbHNbJHdpZGdldFsnbmFtZSddXSkp ID8gJHZhbHNbJHdpZGdldFsnbmFtZSddXSA6ICcnOwogICAgICAgICAgICAgICAgICAgICRz ZWx2ID0gc21kX2Jpb19zcGxpdHZhbCgkd2lkZ2V0Wyd2YWwnXSk7CiAgICAgICAgICAgICAg ICAgICAgbGlzdCgkc2VsdiwgJGRmbHQpID0gc21kX2Jpb19nZXRfZGVmYXVsdCgkc2Vsdiwg JHZhbCk7CiAgICAgICAgICAgICAgICAgICAgJHVzZV92YWwgPSAoaXNzZXQoJHZhbHNbJHdp ZGdldFsnbmFtZSddXSkgJiYgKCR2YWxzWyR3aWRnZXRbJ25hbWUnXV0gIT09ICcnIHx8ICR2 YWxzWyR3aWRnZXRbJ25hbWUnXV0gIT09IG51bGwpKSA/ICR2YWwgOiAkZGZsdDsgLy8gRG9u J3QgdXNlIGRlZmF1bHRzIGlmIHRoaXMgZmllbGQgaGFzIGJlZW4gcHJldmlvdXNseSBzYXZl ZAogICAgICAgICAgICAgICAgICAgICRjaGVja2VkVmFscyA9IGRvX2xpc3QoJHVzZV92YWwp OwogICAgICAgICAgICAgICAgICAgICRpdGVtcyA9IGFycmF5KCk7CiAgICAgICAgICAgICAg ICAgICAgZm9yZWFjaCAoJHNlbHYgYXMgJGlkeCA9PiAkbGJsKSB7CiAgICAgICAgICAgICAg ICAgICAgICAgIC8vIE5vdCB1c2luZyBjaGVja2JveCgpIGJlY2F1c2UgaXQgZG9lc24ndCBz dXBwb3J0IG9uY2xpY2sgaW4gNC41LngKICAgICAgICAgICAgICAgICAgICAgICAgJGl0ZW1z W10gPSAnPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJjYl8nLiRuYW1lLiciIHZhbHVl PSInLiRpZHguJyInLigoaW5fYXJyYXkoJGlkeCwgJGNoZWNrZWRWYWxzKSkgPyAnIGNoZWNr ZWQ9ImNoZWNrZWQiJyA6ICcnKSAuICcgY2xhc3M9ImNoZWNrYm94IiBvbmNsaWNrPSJzbWRf YmlvX2NoZWNrYm94KFwnJy4kbmFtZS4nXCcpOyIgLz4nLiRsYmw7CiAgICAgICAgICAgICAg ICAgICAgfQogICAgICAgICAgICAgICAgICAgICRvdXRbXSA9IGlucHV0TGFiZWwoCiAgICAg ICAgICAgICAgICAgICAgICAgICRuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBqb2lu KCcnLCAkaXRlbXMpLmZJbnB1dCgnaGlkZGVuJywkbmFtZSwkdXNlX3ZhbCwnJywnJywnJywn JywnJywkbmFtZSksCiAgICAgICAgICAgICAgICAgICAgICAgICR0aXRsZSwKICAgICAgICAg ICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAgICAgICAgICd0eHAtZm9ybS1m aWVsZCBzbWRfYmlvX2NoZWNrYm94ICcuJG5hbWUKICAgICAgICAgICAgICAgICAgICApOwog ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAndGV4dGFy ZWEnOgogICAgICAgICAgICAgICAgICAgIC8vIE5vdCB1c2luZyB0ZXh0X2FyZWEoKSBiZWNh dXNlIGl0IGRvZXNuJ3QgaGF2ZSBjbGFzcyBhdHRyaWJ1dGUgaW4gNC41LngKICAgICAgICAg ICAgICAgICAgICAkc2l6ZTEgPSAoJHNpemUxID09ICcnIHx8ICRzaXplMSA9PSAwKSA/IDQw IDogJHNpemUxOwogICAgICAgICAgICAgICAgICAgICRzaXplMiA9ICgkc2l6ZTIgPT0gJycg fHwgJHNpemUyID09IDApID8gNSA6ICRzaXplMjsKICAgICAgICAgICAgICAgICAgICAkb3V0 W10gPSBpbnB1dExhYmVsKAogICAgICAgICAgICAgICAgICAgICAgICAkbmFtZSwKICAgICAg ICAgICAgICAgICAgICAgICAgJzx0ZXh0YXJlYSBpZD0iJy4kbmFtZS4nIiBuYW1lPSInLiRu YW1lLiciIGNsYXNzPSJzbWRfYmlvX3RleHRhcmVhIiBjb2xzPSInLiRzaXplMS4nIiByb3dz PSInLiRzaXplMi4nIj4nLnR4cHNwZWNpYWxjaGFycygkdmFsKS4nPC90ZXh0YXJlYT4nLAog ICAgICAgICAgICAgICAgICAgICAgICAkdGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAg ICcnLAogICAgICAgICAgICAgICAgICAgICAgICAndHhwLWZvcm0tZmllbGQgdHhwLWZvcm0t ZmllbGQtdGV4dGFyZWEgc21kX2Jpb190ZXh0YXJlYSAnLiRuYW1lCiAgICAgICAgICAgICAg ICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNh c2UgJ2ltYWdlJzoKICAgICAgICAgICAgICAgICAgICAkcGFyZW50ID0gJHdpZGdldFsndmFs J107CiAgICAgICAgICAgICAgICAgICAgJHZhbCA9ICgkdmFscyAmJiBpc3NldCgkdmFsc1sk d2lkZ2V0WyduYW1lJ11dKSkgPyAkdmFsc1skd2lkZ2V0WyduYW1lJ11dIDogJyc7CiAgICAg ICAgICAgICAgICAgICAgJHdoZXJlID0gKCRwYXJlbnQpID8gImNhdGVnb3J5PSciLmRvU2xh c2goJHBhcmVudCkuIiciIDogJzE9MSc7CiAgICAgICAgICAgICAgICAgICAgJHRyZWUgPSBz YWZlX3Jvd3MoJyonLCAndHhwX2ltYWdlJywgJHdoZXJlLiAnIE9SREVSIEJZIG5hbWUnKTsK ICAgICAgICAgICAgICAgICAgICAkc2VsdiA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICAg ICAgZm9yZWFjaCAoJHRyZWUgYXMgJHJvdykgewogICAgICAgICAgICAgICAgICAgICAgICAk c2Vsdlskcm93WydpZCddXSA9ICRyb3dbJ25hbWUnXTsKICAgICAgICAgICAgICAgICAgICB9 CiAgICAgICAgICAgICAgICAgICAgJG91dFtdID0gaW5wdXRMYWJlbCgKICAgICAgICAgICAg ICAgICAgICAgICAgJG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICc8aW5wdXQgdHlw ZT0idGV4dCIgdmFsdWU9IicudHhwc3BlY2lhbGNoYXJzKCR2YWwpLiciIGlkPSInLiRuYW1l LiciIG5hbWU9IicuJG5hbWUuJyIgc2l6ZT0nLklOUFVUX1hTTUFMTC4nIGNsYXNzPSJzbWRf YmlvX2ltYWdlX2lkIGlucHV0X3hzbWFsbCIgLz4nLnNlbGVjdElucHV0KCRuYW1lLidfbGlz dCcsICRzZWx2LCAkdmFsLCB0cnVlLCAnJykuJzxzcGFuIGNsYXNzPSJzbWRfYmlvX2ltYWdl Ij48L3NwYW4+PHNwYW4gY2xhc3M9InNtZF9iaW9faW1hZ2VfZGF0YSIgdGl0bGU9IicuKCgk c2l6ZTEpID8gJHNpemUxIDogJycpLicsJy4oKCRzaXplMikgPyAkc2l6ZTIgOiAkc2l6ZTEp LiciPjwvc3Bhbj4nLAogICAgICAgICAgICAgICAgICAgICAgICAkdGl0bGUsCiAgICAgICAg ICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgICAgICAgICAndHhwLWZvcm0t ZmllbGQgc21kX2Jpb19pbWFnZV9jZWxsICcuJG5hbWUKICAgICAgICAgICAgICAgICAgICAp OwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnbnVt YmVyJzoKICAgICAgICAgICAgICAgIGNhc2UgJ3JhbmdlJzoKICAgICAgICAgICAgICAgICAg ICAkbWluID0gKCRzaXplMSA9PSAnJykgPyAnJyA6ICIgbWluPXskc2l6ZTF9IjsKICAgICAg ICAgICAgICAgICAgICAkbWF4ID0gKCRzaXplMiA9PSAnJykgPyAnJyA6ICIgbWF4PXskc2l6 ZTJ9IjsKICAgICAgICAgICAgICAgICAgICAkam1wID0gKCRzaXplMyA9PSAnJykgPyAnJyA6 ICIgc3RlcD17JHNpemUzfSI7CiAgICAgICAgICAgICAgICAgICAgJG91dFtdID0gaW5wdXRM YWJlbCgKICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUsCiAgICAgICAgICAgICAgICAg ICAgICAgICc8aW5wdXQgdHlwZT0iJy4kd2lkZ2V0Wyd0eXBlJ10uJyIgdmFsdWU9IicudHhw c3BlY2lhbGNoYXJzKCR2YWwpLiciIG5hbWU9IicuJG5hbWUuJyIgaWQ9IicuJG5hbWUuJyIn LiRtaW4uJG1heC4kam1wLiciIGNsYXNzPSJzbWRfYmlvXycuJHdpZGdldFsndHlwZSddLici IC8+JywKICAgICAgICAgICAgICAgICAgICAgICAgJHRpdGxlLAogICAgICAgICAgICAgICAg ICAgICAgICAnJywKICAgICAgICAgICAgICAgICAgICAgICAgJ3R4cC1mb3JtLWZpZWxkIHNt ZF9iaW9fJy4kd2lkZ2V0Wyd0eXBlJ10uJyAnLiRuYW1lCiAgICAgICAgICAgICAgICAgICAg KTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ2Rh dGUnOgogICAgICAgICAgICAgICAgY2FzZSAnbW9udGgnOgogICAgICAgICAgICAgICAgY2Fz ZSAnd2Vlayc6CiAgICAgICAgICAgICAgICBjYXNlICd0aW1lJzoKICAgICAgICAgICAgICAg IGNhc2UgJ2RhdGV0aW1lJzoKICAgICAgICAgICAgICAgIGNhc2UgJ2VtYWlsJzoKICAgICAg ICAgICAgICAgIGNhc2UgJ3VybCc6CiAgICAgICAgICAgICAgICBjYXNlICd0ZXh0JzoKICAg ICAgICAgICAgICAgICAgICAvLyBOb3QgdXNpbmcgZklucHV0KCkgYmVjYXVzZSBpdCBoYXMg bm8gTUFYTEVOR1RIIHByb3BlcnR5IGFuZCBkb2Vzbid0IHN1cHBvcnQgSFRNTCA1IGVsZW1l bnRzCiAgICAgICAgICAgICAgICAgICAgJHNpemUxID0gKCRzaXplMSA9PSAnJyB8fCAkc2l6 ZTEgPT0gMCkgPyAyNSA6ICRzaXplMTsKICAgICAgICAgICAgICAgICAgICAkc2l6ZTIgPSAo JHNpemUyID09ICcnIHx8ICRzaXplMiA9PSAwKSA/ICRzaXplMSA6ICRzaXplMjsKICAgICAg ICAgICAgICAgICAgICAkb3V0W10gPSBpbnB1dExhYmVsKAogICAgICAgICAgICAgICAgICAg ICAgICAkbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgJzxpbnB1dCB0eXBlPSInLiR3 aWRnZXRbJ3R5cGUnXS4nIiB2YWx1ZT0iJy50eHBzcGVjaWFsY2hhcnMoJHZhbCkuJyIgbmFt ZT0iJy4kbmFtZS4nIiBpZD0iJy4kbmFtZS4nIiBzaXplPSInLiRzaXplMS4nIiBtYXhsZW5n dGg9IicuJHNpemUyLiciIGNsYXNzPSJzbWRfYmlvXycuJHdpZGdldFsndHlwZSddLiciIC8+ JywKICAgICAgICAgICAgICAgICAgICAgICAgJHRpdGxlLAogICAgICAgICAgICAgICAgICAg ICAgICAnJywKICAgICAgICAgICAgICAgICAgICAgICAgJ3R4cC1mb3JtLWZpZWxkIHNtZF9i aW9fJy4kd2lkZ2V0Wyd0eXBlJ10uJyAnLiRuYW1lCiAgICAgICAgICAgICAgICAgICAgKTsK ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAg IH0KICAgIHJldHVybiBqb2luKCcnLCAkb3V0KTsKfQoKLy8gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCi8vIFJlYWQgYSBuYW1lL3ZhbCBhcnJheSBhbmQgcmVtb3ZlIGFueSBbKl0gbWFy a2VyIHdoaWNoIGluZGljYXRlcyBhIGRlZmF1bHQgaXRlbQpmdW5jdGlvbiBzbWRfYmlvX2dl dF9kZWZhdWx0KCRsaXN0LCAkY3VycikgewogICAgJG91dCA9IGFycmF5KCk7CiAgICAkZGZs dCA9ICcnOwogICAgJG5ld19kZmx0ID0gYXJyYXkoKTsKICAgIGZvcmVhY2ggKCRsaXN0IGFz ICRpdGVtID0+ICR2YWx1ZSkgewogICAgICAgICR2YWx1ZSA9IHN0cl9yZXBsYWNlKCcmIzQ0 OycsICcsJywgJHZhbHVlKTsgLy8gUmV2ZXJ0IGVuY29kZWQgY29tbWFzIHRvIHJlYWwgbGl0 ZXJhbHMgQHNlZSBzbWRfYmlvX21ldGFfbWFrZV9saXN0CiAgICAgICAgaWYgKCgkcG9zID0g c3RycG9zKCR2YWx1ZSwgJ1sqXScpKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgJG91dFsk aXRlbV0gPSBzdWJzdHIoJHZhbHVlLCAwLCAkcG9zKTsKICAgICAgICAgICAgJG5ld19kZmx0 W10gPSAkaXRlbTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkb3V0WyRpdGVtXSA9 ICR2YWx1ZTsKICAgICAgICB9CiAgICAgICAgaWYgKCRpdGVtID09ICRjdXJyKSB7CiAgICAg ICAgICAgICRkZmx0ID0gJGl0ZW07CiAgICAgICAgfQogICAgfQogICAgJGRmbHQgPSAoJGRm bHQpID8gJGRmbHQgOiBqb2luKCcsJywgJG5ld19kZmx0KTsKCiAgICByZXR1cm4gYXJyYXko JG91dCwgJGRmbHQpOwp9CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gQUpBWCBj YWxscwpmdW5jdGlvbiBzbWRfYmlvX2dldF9pbWFnZSgpIHsKICAgIGdsb2JhbCAkaW1nX2Rp cjsKCiAgICAkaWQgPSBncHMoJ2lkJyk7CiAgICBpZiAoJGlkKSB7CiAgICAgICAgJHJzID0g c2FmZV9yb3coJyonLCAndHhwX2ltYWdlJywgImlkID0gJyIuZG9TbGFzaCgkaWQpLiInIik7 CiAgICAgICAgZXh0cmFjdCgkcnMpOwogICAgICAgICRvdXQgPSBhcnJheSgpOwogICAgICAg ICRvdXRbJ3RodW1iJ10gPSAoJHRodW1ibmFpbCkgPyBodS4kaW1nX2Rpci4nLycuJGlkLid0 Jy4kZXh0IDogJyc7CiAgICAgICAgJG91dFsnaW1hZ2UnXSA9IGh1LiRpbWdfZGlyLicvJy4k aWQuJGV4dDsKICAgICAgICAkb3V0Wyd3J10gPSAkdzsKICAgICAgICAkb3V0WydoJ10gPSAk aDsKICAgICAgICAkb3V0Wyd0aHcnXSA9ICgkdGh1bWJfdykgPyAkdGh1bWJfdyA6ICcnOwog ICAgICAgICRvdXRbJ3RoaCddID0gKCR0aHVtYl9oKSA/ICR0aHVtYl9oIDogJyc7CiAgICAg ICAgc2VuZF94bWxfcmVzcG9uc2UoJG91dCk7CiAgICB9IGVsc2UgewogICAgICAgIHNlbmRf eG1sX3Jlc3BvbnNlKCk7CiAgICB9CiAgICBleGl0Owp9CgovLyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KLy8gSU1QT1JUQU5UOiBjb25zdGFudHMgTk9UIHVzZWQgZm9yIHRhYmxlIG5h bWVzCmZ1bmN0aW9uIHNtZF9iaW9fZ2V0X2ViaW8oKSB7CiAgICBpbmNsdWRlX29uY2UgdHhw YXRoLicvcHVibGlzaC90YWdoYW5kbGVycy5waHAnOwoKICAgICRpZCA9IGdwcygnaWQnKTsK ICAgICRjb3JlID0gYXJyYXkoJ3VzZXJfcmVmJyk7CiAgICAkcnMgPSBzYWZlX3JvdygnKics ICdzbWRfYmlvJywgInVzZXJfcmVmID0gJyIuZG9TbGFzaCgkaWQpLiInIik7CiAgICAkbWV0 YSA9IHNhZmVfcm93cygnKicsICdzbWRfYmlvX21ldGEnLCAiMT0xIik7Ci8vICAkaW5jbHVk ZSA9IGFycmF5X21lcmdlKCRjb3JlLCBhcnJheSgnbXVnJywgJ2NlbGwnLCAnZGVwYXJ0bWVu dCcpKTsgLy8gVE9ETzogZ2V0IHRoZXNlIGZyb20gcHJlZnMvbWV0YSB0YWJsZQogICAgJGFs bG93ZWRfdHlwZXMgPSBhcnJheSgndGV4dCcsICd0ZXh0YXJlYScsICdlbWFpbCcsICd1cmwn LCAnZGF0ZScsICdtb250aCcsICd3ZWVrJywgJ3RpbWUnLCAnZGF0ZXRpbWUnLCAnbnVtYmVy JywgJ3JhbmdlJyk7CiAgICAkb3V0ID0gYXJyYXkoKTsKICAgIGZvcmVhY2ggKCRycyBhcyAk aWR4ID0+ICR2YWwpIHsKLy8gICAgICBpZiAoaW5fYXJyYXkoJGlkeCwgJGluY2x1ZGUpKSB7 CiAgICAgICAgICAgIGlmIChpbl9hcnJheSgkaWR4LCAkY29yZSkpIHsKICAgICAgICAgICAg ICAgICRvdXRbJGlkeF0gPSBkb1NsYXNoKCR2YWwpOwogICAgICAgICAgICB9IGVsc2Ugewog ICAgICAgICAgICAgICAgZm9yZWFjaCgkbWV0YSBhcyAkcm93KSB7CiAgICAgICAgICAgICAg ICAgICAgaWYgKCRyb3dbJ25hbWUnXSA9PSAkaWR4KSB7CiAgICAgICAgICAgICAgICAgICAg ICAgIGlmICgkcm93Wyd0eXBlJ10gPT0gImltYWdlIikgewogICAgICAgICAgICAgICAgICAg ICAgICAgICAgLy8gQ3J1ZGUgc3RyX3JlcGxhY2UoKSB0byByZW1vdmUgamF2YXNjcmlwdC1i cmVha2luZyBzaW5nbGUgcXVvdGVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb3V0 WyRpZHhdID0gJ3NtZF9pbWFnZTo6Jy5zdHJfcmVwbGFjZSgiJyIsICcnLCB0aHVtYm5haWwo YXJyYXkoJ2lkJz0+ICR2YWwpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBp ZiAoaW5fYXJyYXkoJHJvd1sndHlwZSddLCAkYWxsb3dlZF90eXBlcykpIHsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICRvdXRbJGlkeF0gPSAkcm93Wyd0aXRsZSddLic6OicudHhw c3BlY2lhbGNoYXJzKHN0cmlwX3RhZ3MoJHZhbCksIEVOVF9RVU9URVMpOwogICAgICAgICAg ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQovLyAgICAg IH0KICAgIH0KICAgIHNlbmRfeG1sX3Jlc3BvbnNlKCRvdXQpOwogICAgZXhpdDsKfQoKLy8g SW5qZWN0IGFkbWluLXNpZGUgamF2YXNjcmlwdAovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KZnVuY3Rpb24gc21kX2Jpb19hZG1pbl9qcygkZXZ0LCAkc3RwKSB7CiAgICBnbG9iYWwg JGV2ZW50LCAkc3RlcDsKCiAgICAkc21kX2Jpb19zdHlsZXMgPSBzbWRfYmlvX2dldF9zdHls ZXMoKTsKCiAgICAkcnVub24gPSBhcnJheSgKICAgICAgICAnYWRtaW4nID0+IGFycmF5KAog ICAgICAgICAgICAnZXZ0JyA9PiBhcnJheSgnYWRtaW4nLCAnc21kX3VtJyksCiAgICAgICAg ICAgICdzdHAnID0+IGFycmF5KCcnLCAnc21kX3VtJywgJ3NtZF91bV9lZGl0JywgJ3NtZF91 bV9lZGl0JywgJ3NtZF91bV9zYXZlJywgJ3NtZF91bV9zYXZlX25ldycsICdzbWRfdW1fY2hh bmdlX3Bhc3MnLCAnYXV0aG9yX2VkaXQnLCAnYXV0aG9yX3NhdmUnLCAnYXV0aG9yX3NhdmVf bmV3JyksCiAgICAgICAgKSwKICAgICAgICAnYmlvJyA9PiBhcnJheSgKICAgICAgICAgICAg J2V2dCcgPT4gYXJyYXkoJ3NtZF9iaW8nKSwKICAgICAgICApLAogICAgKTsKCiAgICAvLyAq KioqKioqKgogICAgLy8ganMrY3NzIGZvciBBZG1pbi0+VXNlcnMgdGFiCiAgICAvLyAqKioq KioqKgogICAgaWYgKGluX2FycmF5KCRldmVudCwgJHJ1bm9uWydhZG1pbiddWydldnQnXSkg IT09IGZhbHNlICYmIGluX2FycmF5KCRzdGVwLCAkcnVub25bJ2FkbWluJ11bJ3N0cCddKSAh PT0gZmFsc2UpIHsKICAgICAgICAkY3NzX2N1c3RvbSA9IHNhZmVfZmllbGQoJ2NzcycsICd0 eHBfY3NzJywgIm5hbWU9J3NtZF9iaW8nIik7CiAgICAgICAgJGNzcyA9ICc8c3R5bGUgdHlw ZT0idGV4dC9jc3MiPicgLiAkY3NzX2N1c3RvbSAubi4gJHNtZF9iaW9fc3R5bGVzWyd0b29s dGlwJ10gLiAnPC9zdHlsZT4nOwoKICAgIGVjaG8gPDw8RU9KUwo8c2NyaXB0IHR5cGU9InRl eHQvamF2YXNjcmlwdCI+Ci8vPCFbQ0RBVEFbCgovLyBDb25jYXRlbmF0ZSBjaGVja2JveCBv cHRpb25zIGZvciBzdG9yYWdlCmZ1bmN0aW9uIHNtZF9iaW9fY2hlY2tib3goZGVzdCkgewog ICAgdmFyIG91dCA9IFtdOwogICAgalF1ZXJ5KCIjdXNlcl9lZGl0IDpjaGVja2JveCIpLmVh Y2goZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGl0ZW0gPSBqUXVlcnkodGhpcyk7CiAgICAg ICAgaWYgKGl0ZW0uYXR0cignbmFtZScpLnJlcGxhY2UoJ2NiXycsJycpID09IGRlc3QpIHsK ICAgICAgICAgICAgaWYgKGl0ZW0ucHJvcCgnY2hlY2tlZCcpID09IHRydWUpIHsKICAgICAg ICAgICAgICAgIG91dC5wdXNoKGl0ZW0udmFsKCkpOwogICAgICAgICAgICB9CiAgICAgICAg fQogICAgfSk7CiAgICBqUXVlcnkoJyMnK2Rlc3QpLnZhbChvdXQuam9pbignLCcpKTsKfQov LyBDb25jYXRlbmF0ZSBtdWx0aSBzZWxlY3QgbGlzdCBvcHRpb25zIGZvciBzdG9yYWdlCmZ1 bmN0aW9uIHNtZF9iaW9fbXVsdGlzZWwoZGVzdCkgewogICAgdmFyIG91dCA9IFtdOwogICAg alF1ZXJ5KCIjdXNlcl9lZGl0IHNlbGVjdC5tdWx0aXBsZSIpLmVhY2goZnVuY3Rpb24oKSB7 CiAgICAgICAgdmFyIGl0ZW0gPSBqUXVlcnkodGhpcyk7CiAgICAgICAgaWYgKGl0ZW0uYXR0 cignbmFtZScpID09IGRlc3QpIHsKICAgICAgICAgICAgLy8gWW91J3JlIHRoZSBvbmUgdGhh dCBJIHdhbnQsIG9vaCBvb2ggb29vb2hoaAogICAgICAgICAgICBqUXVlcnkoaXRlbSkuY2hp bGRyZW4oIjpzZWxlY3RlZCIpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBv dXQucHVzaChqUXVlcnkodGhpcykudmFsKCkucmVwbGFjZSgnbXNfJywnJykpOwogICAgICAg ICAgICB9KTsKICAgICAgICB9CiAgICB9KTsKICAgIGpRdWVyeSgnIycrZGVzdCkudmFsKG91 dC5qb2luKCcsJykpOwp9CmpRdWVyeShmdW5jdGlvbigpIHsKICAgIC8vIEdyYWIgaW1hZ2Vz IGZyb20gdGhlIHNlcnZlciB3aGVuIHRoZSBzZWxlY3QvdGV4dGJveCBjaGFuZ2UKICAgIGpR dWVyeSgiLnNtZF9iaW9faW1hZ2VfaWQiKS5ibHVyKGZ1bmN0aW9uKCkgewogICAgICAgIGlk ID0galF1ZXJ5KHRoaXMpLmF0dHIoJ2lkJyk7CiAgICAgICAgdmFsID0galF1ZXJ5KHRoaXMp LnZhbCgpOwogICAgICAgIHNtZF9iaW9fZ2V0X2ltYWdlKGlkLCB2YWwpOwogICAgfSkuYmx1 cigpOwogICAgalF1ZXJ5KCIuc21kX2Jpb19pbWFnZV9jZWxsIHNlbGVjdCIpLmNoYW5nZShm dW5jdGlvbigpIHsKICAgICAgICBpZCA9IGpRdWVyeSh0aGlzKS5wYXJlbnQoKS5maW5kKCcu c21kX2Jpb19pbWFnZV9pZCcpLmF0dHIoJ2lkJyk7CiAgICAgICAgdmFsID0galF1ZXJ5KHRo aXMpLnZhbCgpOwogICAgICAgIHNtZF9iaW9fZ2V0X2ltYWdlKGlkLCB2YWwpOwogICAgfSk7 CiAgICBmdW5jdGlvbiBzbWRfYmlvX2dldF9pbWFnZShpZCwgdmFsKSB7CiAgICAgICAgalF1 ZXJ5KCIjIiArIGlkICsgIiB+IHNlbGVjdCBvcHRpb25bdmFsdWU9JyIrdmFsKyInXSIpLnBy b3AoInNlbGVjdGVkIiwgdHJ1ZSk7CiAgICAgICAgalF1ZXJ5KCIjIiArIGlkKS52YWwodmFs KTsKICAgICAgICB2YXIgZGltcyA9IGpRdWVyeSgiIyIgKyBpZCArICIgfiAuc21kX2Jpb19p bWFnZV9kYXRhIikuYXR0cigndGl0bGUnKTsKICAgICAgICB2YXIgc2l6ZSA9IG5ldyBBcnJh eSgpOwogICAgICAgIGlmIChkaW1zKSB7CiAgICAgICAgICAgIHNpemUgPSBkaW1zLnNwbGl0 KCIsIik7CiAgICAgICAgfQogICAgICAgIHNlbmRBc3luY0V2ZW50KHsKICAgICAgICAgICAg ICAgIGV2ZW50OiB0ZXh0cGF0dGVybi5ldmVudCwKICAgICAgICAgICAgICAgIHNtZF9iaW9f c3RlcDogJ3NtZF9iaW9fZ2V0X2ltYWdlJywKICAgICAgICAgICAgICAgIGlkOiB2YWwKICAg ICAgICAgICAgfSwgZnVuY3Rpb24oZGF0YSkgewogICAgICAgICAgICAgICAgZGF0YSA9IGpR dWVyeShkYXRhKTsKICAgICAgICAgICAgICAgIGlmIChkYXRhKSB7CiAgICAgICAgICAgICAg ICAgICAgdmFyIGZ1bGwgPSAwOwogICAgICAgICAgICAgICAgICAgIHZhciBpbWdMaW5rID0g ZGF0YS5maW5kKCd0aHVtYicpLmF0dHIoJ3ZhbHVlJyk7CiAgICAgICAgICAgICAgICAgICAg aWYgKGltZ0xpbmsgPT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZnVsbCA9IDE7 CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpbWdMaW5rID0gZGF0YS5maW5kKCdpbWFn ZScpLmF0dHIoJ3ZhbHVlJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg ICAgICAgIGlmIChpbWdMaW5rKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzaXpl WzBdID09ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZnVsbCA9PSAx KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZVswXSA9IGRhdGEuZmlu ZCgndycpLmF0dHIoJ3ZhbHVlJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVs c2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVbMF0gPSBkYXRhLmZp bmQoJ3RodycpLmF0dHIoJ3ZhbHVlJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9 CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYg KHNpemVbMV0gPT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmdWxs ID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplWzFdID0gZGF0 YS5maW5kKCdoJykuYXR0cigndmFsdWUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZVsxXSA9IGRh dGEuZmluZCgndGhoJykuYXR0cigndmFsdWUnKTsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAg ICBqUXVlcnkoIiMiICsgaWQgKyAiIH4gLnNtZF9iaW9faW1hZ2UiKS5mYWRlSW4oKS5odG1s KCc8aW1nIHNyYz0iJytpbWdMaW5rKyciIHdpZHRoPSInK3NpemVbMF0rJyIgaGVpZ2h0PSIn K3NpemVbMV0rJyIgLz4nKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg ICAgICAgICAgICAgICAgICBqUXVlcnkoIiMiICsgaWQgKyAiIH4gLnNtZF9iaW9faW1hZ2Ui KS5mYWRlT3V0KCkuZW1wdHkoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGpRdWVyeSgiIyIgKyBpZCArICIg fiAuc21kX2Jpb19pbWFnZSIpLmZhZGVPdXQoKS5lbXB0eSgpOwogICAgICAgICAgICAgICAg fQogICAgICAgICAgICB9CiAgICAgICAgKTsKICAgIH0KCiAgICAvLyBHcmFiIHRoZSBleHRl bmRlZCBpbmZvIHdoZW4gaG92ZXJpbmcgYW4gYXV0aG9yIGluIHRoZSBsaXN0CiAgICBqUXVl cnkoIiN1c2Vyc19mb3JtIHRib2R5IHRyLCAjc21kX3VtX2Zvcm0gdGJvZHkgdHIiKS5ob3Zl cihmdW5jdGlvbihlKSB7CiAgICAgICAgdmFyIHR0ID0gJyc7CiAgICAgICAgdmFyIHJvdyA9 IGpRdWVyeSh0aGlzKTsKICAgICAgICB2YXIgaG92SXRlbSA9IHJvdy5maW5kKCIubG9naW4t bmFtZSIpOwoKICAgICAgICBpZiAocm93LmRhdGEoJ3Rvb2x0aXAnKSA9PSB1bmRlZmluZWQp IHsKICAgICAgICAgICAgdmFyIHBlcnNvbiA9IHJvdy5maW5kKCIubG9naW4tbmFtZSIpLnRl eHQoKTsKCiAgICAgICAgICAgIHNlbmRBc3luY0V2ZW50KHsKICAgICAgICAgICAgICAgICAg ICBldmVudDogdGV4dHBhdHRlcm4uZXZlbnQsCiAgICAgICAgICAgICAgICAgICAgc21kX2Jp b19zdGVwOiAnc21kX2Jpb19nZXRfZWJpbycsCiAgICAgICAgICAgICAgICAgICAgaWQ6IHBl cnNvbgogICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZGF0YSkgewogICAgICAgICAgICAg ICAgICAgIGRhdGEgPSBqUXVlcnkoZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZh ciBlbnRyeSA9IGRhdGEuZmluZCgndXNlcl9yZWYnKTsKICAgICAgICAgICAgICAgICAgICAg ICAgb3V0ID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5Lm5leHRBbGwoKS5l YWNoKGZ1bmN0aW9uKGl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUg PSBqUXVlcnkodGhpcykuY29udGV4dC5ub2RlTmFtZTsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlmIChub2RlICE9ICdodHRwLXN0YXR1cycpIHsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB2YWxsID0galF1ZXJ5KHRoaXMpLmF0dHIoJ3ZhbHVlJyk7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbGwpIHsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdnNwbGl0ID0gdmFsbC5zcGxpdCgnOjonKTsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZzcGxpdFswXS5pbmRleE9mKCdz bWRfaW1hZ2UnKSA8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG91dCArPSAoKHZzcGxpdC5sZW5ndGg+MSkgPyB2c3BsaXRbMF0gOiBub2RlKSArICc6 ICc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdmFsbCA9ICgodnNwbGl0Lmxlbmd0aD4xKSA/IHZz cGxpdFsxXSA6IHZzcGxpdFswXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG91dCArPSB2YWxsICsgJzxici8+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQg Kz0gbm9kZSsnOiAnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAg ICAgICAgICAgICAgICAgICAgICAgIHJvdy5kYXRhKCd0b29sdGlwJywgb3V0KTsKLy8gICAg ICAgICAgICAgICAgICAgICAgaG92SXRlbS50cmlnZ2VyKCdtb3VzZW92ZXInKTsgLy8gVHJp Z2dlciB0aGUgaG92ZXIgc3RhdGUgd2hlbiB0aGUgZGF0YSBpcyBsb2FkZWQKICAgICAgICAg ICAgICAgICAgICB9CiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICB4T2Zmc2V0 ID0gMzA7CiAgICAgICAgeU9mZnNldCA9IDI1OwogICAgICAgIGhvdkl0ZW0uaG92ZXIoZnVu Y3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdHQgPSBqUXVlcnkodGhpcykucGFyZW50KCku ZGF0YSgndG9vbHRpcCcpOwogICAgICAgICAgICBpZiAodHQgIT0gJycpIHsKICAgICAgICAg ICAgICAgIGpRdWVyeSgiYm9keSIpLmFwcGVuZCgiPHAgaWQ9J3Rvb2x0aXAnPiIrIHR0ICsi PC9wPiIpOwogICAgICAgICAgICAgICAgalF1ZXJ5KCIjdG9vbHRpcCIpCiAgICAgICAgICAg ICAgICAgICAgLmNzcygidG9wIiwoZS5wYWdlWSAtIHhPZmZzZXQpICsgInB4IikKICAgICAg ICAgICAgICAgICAgICAuY3NzKCJsZWZ0IiwoZS5wYWdlWCArIHlPZmZzZXQpICsgInB4IikK ICAgICAgICAgICAgICAgICAgICAuZmFkZUluKCJmYXN0Iik7CiAgICAgICAgICAgIH0KICAg ICAgICB9LAogICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICBqUXVlcnkoIiN0b29s dGlwIikucmVtb3ZlKCk7CiAgICAgICAgfSk7CiAgICAgICAgaG92SXRlbS5tb3VzZW1vdmUo ZnVuY3Rpb24oZSkgewogICAgICAgICAgICBqUXVlcnkoIiN0b29sdGlwIikKICAgICAgICAg ICAgICAgIC5jc3MoInRvcCIsKGUucGFnZVkgLSB4T2Zmc2V0KSArICJweCIpCiAgICAgICAg ICAgICAgICAuY3NzKCJsZWZ0IiwoZS5wYWdlWCArIHlPZmZzZXQpICsgInB4Iik7CiAgICAg ICAgfSk7CiAgICB9KTsKfSk7Ci8vXV0+Cjwvc2NyaXB0Pgp7JGNzc30KRU9KUzsKICAgIH0K CiAgICAvLyAqKioqKioqKgogICAgLy8ganMgZm9yIEV4dGVuc2lvbnMtPkJpbyBjb25maWcg dGFiCiAgICAvLyAqKioqKioqKgogICAgaWYgKGluX2FycmF5KCRldmVudCwgJHJ1bm9uWydi aW8nXVsnZXZ0J10pKSB7CiAgICAgICAgJHNtZF9iaW9fdHlwZXMgPSBzbWRfYmlvX2dldF90 eXBlcygpOwogICAgICAgICRzbWRfYmlvX3VudXNlZCA9IHNtZF9iaW9fZ2V0X3VudXNlZCgp OwoKICAgICAgICAkY3NzID0gJzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+JyAuICRzbWRfYmlv X3N0eWxlc1snbWV0YSddIC4gJzwvc3R5bGU+JzsKICAgICAgICAkanNfdW51c2VkID0gam9p bignLCcsIGRvQXJyYXkoJHNtZF9iaW9fdW51c2VkWydzaXplJ10sICdkb1F1b3RlJykpOwoK ICAgICAgICBmb3JlYWNoICgkc21kX2Jpb190eXBlcyBhcyAkdHlwZSA9PiAkZGF0YSkgewog ICAgICAgICAgICAkdHlwZV9qc29uW10gPSAnc21kX2Jpb190eXBlc1siJy4kdHlwZS4nIl0g PSB7ICJkZmx0X3R5cGUiOiAiJy4kZGF0YVsnY29sdHlwZSddLiciLCAiZGZsdF9zaXplIjog IicuJGRhdGFbJ2NvbHNpemUnXS4nIiwgImZpeGVkIjogIicuJGRhdGFbJ2ZpeGVkJ10uJyIg fTsnOwogICAgICAgIH0KICAgICAgICAkdHlwZV9qc29uID0gam9pbihuLCAkdHlwZV9qc29u KTsKCiAgICAgICAgZWNobyA8PDxFT0pTCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0 Ij4KLy88IVtDREFUQVsKdmFyIHNtZF9iaW9fdW51c2VkID0gW3skanNfdW51c2VkfV07CnZh ciBzbWRfYmlvX3R5cGVzID0gW107CnZhciBkZXN0Q29sdHlwZSA9ICIjcGFnZS1zbWRfYmlv IHNlbGVjdFtuYW1lPSdjb2x0eXBlJ10iOwp2YXIgZGVzdENvbHNpemUgPSAiI3BhZ2Utc21k X2JpbyBpbnB1dFtuYW1lPSdjb2xzaXplJ10iOwp7JHR5cGVfanNvbn0KCmpRdWVyeShmdW5j dGlvbigpIHsKICAgIC8vIFBlcmZvcm0gYWN0aW9ucyB3aGVuIHRoZSBUeXBlIGlzIGNoYW5n ZWQKICAgIC8vIEFjdGlvbiAjMTogc2l6ZSBib3guIEF1dG8tdXBkYXRlIHRoaXMgd2hlbiBF ZGl0IGNsaWNrZWQgYXMgd2VsbCBhcyB3aGVuIHNlbGVjdCBsaXN0IGlzIGFsdGVyZWQKICAg IGpRdWVyeSgiI3NtZF9iaW9fd2lkZ2V0X3R5cGUiKS5jaGFuZ2UoZnVuY3Rpb24oKSB7CiAg ICAgICAgdmFyIHRoZVR5cGUgPSBqUXVlcnkoIiNzbWRfYmlvX3dpZGdldF90eXBlIG9wdGlv bjpzZWxlY3RlZCIpLnZhbCgpOwogICAgICAgIHZhciBkZXN0U2l6ZSA9ICIjcGFnZS1zbWRf YmlvIGlucHV0W25hbWU9J3NpemUnXSI7CgogICAgICAgIC8vIEdyZXkgb3V0IHRoZSBTaXpl IGJveCBmb3IgdGhvc2UgaXRlbXMgdGhhdCBkb24ndCB1c2UgaXQKICAgICAgICBpZiAoalF1 ZXJ5LmluQXJyYXkodGhlVHlwZSwgc21kX2Jpb191bnVzZWQpID4gLTEpIHsKICAgICAgICAg ICAgalF1ZXJ5KGRlc3RTaXplKS5wcm9wKCJkaXNhYmxlZCIsIHRydWUpOwogICAgICAgICAg ICBqUXVlcnkoZGVzdFNpemUpLnBhcmVudCgpLnByZXYoKS5jc3MoImNvbG9yIiwgJyM5OTkn KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBqUXVlcnkoZGVzdFNpemUpLnByb3Ao ImRpc2FibGVkIiwgZmFsc2UpOwogICAgICAgICAgICBqUXVlcnkoZGVzdFNpemUpLnBhcmVu dCgpLnByZXYoKS5jc3MoImNvbG9yIiwgJycpOwogICAgICAgIH0KICAgIH0pLmNoYW5nZSgp OwoKICAgIC8vIEFjdGlvbiAjMjogY29sdHlwZS9jb2xzaXplLiBDYW4ndCBhbWFsZ2FtYXRl IHRoZXNlIHdpdGggdGhlICdzaXplJyBvbmNoYW5nZSBiZWNhdXNlCiAgICAvLyB0aGlzIG9u bHkgY2hhbmdlcyB3aGVuIHNlbGVjdCBsaXN0IGNoYW5nZWQgKGkuZS4gbm90IHdoZW4gRWRp dCBmaXJzdCBjbGlja2VkKQogICAgalF1ZXJ5KCIjc21kX2Jpb193aWRnZXRfdHlwZSIpLmNo YW5nZShmdW5jdGlvbigpIHsKICAgICAgICB2YXIgdGhlVHlwZSA9IGpRdWVyeSgiI3NtZF9i aW9fd2lkZ2V0X3R5cGUgb3B0aW9uOnNlbGVjdGVkIikudmFsKCk7CgogICAgICAgIC8vIFBy ZXNlbGVjdCB0aGUgY29sdHlwZSArIGNvbHNpemUgYmFzZWQgb24gdGhlIGRlZmF1bHRzCiAg ICAgICAgalF1ZXJ5KGRlc3RDb2x0eXBlICsgIiBvcHRpb25bdmFsdWU9JyIrc21kX2Jpb190 eXBlc1t0aGVUeXBlXS5kZmx0X3R5cGUrIiddIikucHJvcCgnc2VsZWN0ZWQnLCB0cnVlKTsK ICAgICAgICBqUXVlcnkoZGVzdENvbHNpemUpLnZhbChzbWRfYmlvX3R5cGVzW3RoZVR5cGVd LmRmbHRfc2l6ZSk7CgogICAgICAgIGlmIChzbWRfYmlvX3R5cGVzW3RoZVR5cGVdLmZpeGVk ID09ICcnKSB7CiAgICAgICAgICAgIGpRdWVyeShkZXN0Q29sdHlwZSkucHJvcCgiZGlzYWJs ZWQiLCBmYWxzZSk7CiAgICAgICAgICAgIGpRdWVyeShkZXN0Q29sc2l6ZSkucHJvcCgiZGlz YWJsZWQiLCBmYWxzZSk7CiAgICAgICAgICAgIGpRdWVyeShkZXN0Q29sdHlwZSkucGFyZW50 KCkucHJldigpLmNzcygiY29sb3IiLCAnJyk7CiAgICAgICAgICAgIGpRdWVyeShkZXN0Q29s c2l6ZSkucGFyZW50KCkucHJldigpLmNzcygiY29sb3IiLCAnJyk7CiAgICAgICAgfSBlbHNl IHsKICAgICAgICAgICAgalF1ZXJ5KGRlc3RDb2x0eXBlKS5wcm9wKCJkaXNhYmxlZCIsIHRy dWUpOwogICAgICAgICAgICBqUXVlcnkoZGVzdENvbHNpemUpLnByb3AoImRpc2FibGVkIiwg dHJ1ZSk7CiAgICAgICAgICAgIGpRdWVyeShkZXN0Q29sdHlwZSkucGFyZW50KCkucHJldigp LmNzcygiY29sb3IiLCAnIzk5OScpOwogICAgICAgICAgICBqUXVlcnkoZGVzdENvbHNpemUp LnBhcmVudCgpLnByZXYoKS5jc3MoImNvbG9yIiwgJyM5OTknKTsKICAgICAgICB9CiAgICB9 KTsKCiAgICAvLyBGb3JjZSB0aGUgYXV0by1jaGFuZ2UgaWYgdGhlIHR5cGUgaXMgb2YgYSBm aXhlZCB2YXJpZXR5CiAgICB0aGVUeXBlID0galF1ZXJ5KCIjc21kX2Jpb193aWRnZXRfdHlw ZSBvcHRpb246c2VsZWN0ZWQiKS52YWwoKTsKICAgIGlmIChzbWRfYmlvX3R5cGVzW3RoZVR5 cGVdLmZpeGVkICE9ICcnKSB7CiAgICAgICAgalF1ZXJ5KCIjc21kX2Jpb193aWRnZXRfdHlw ZSIpLmNoYW5nZSgpOwogICAgfQoKICAgIC8vIFdoZW4gY2xpY2tpbmcgU2F2ZSwgZW5hYmxl IHRoZSBjb2x0eXBlL2NvbHNpemUgYm94ZXMgc28gdGhlIHZhbHVlcyBhcmUgdHJhbnNtaXR0 ZWQgaW4gdGhlIF9QT1NUIGFycmF5CiAgICBqUXVlcnkoIiNwYWdlLXNtZF9iaW8gaW5wdXRb bmFtZT0nc2F2ZSddIikuY2xpY2soZnVuY3Rpb24oKSB7CiAgICAgICAgalF1ZXJ5KGRlc3RD b2x0eXBlKS5wcm9wKCJkaXNhYmxlZCIsIGZhbHNlKTsKICAgICAgICBqUXVlcnkoZGVzdENv bHNpemUpLnByb3AoImRpc2FibGVkIiwgZmFsc2UpOwogICAgfSk7CgogICAgLy8gUG9wIHVw IHRoZSBoZWxwIHRvb2x0aXBzIGJhc2VkIG9uIHRoZSBjdXJyZW50IFR5cGUKICAgIGpRdWVy eSgiLmVkaXQtc21kLWJpby1zaXplIC5wb3BoZWxwIikuaG92ZXIoCiAgICAgICAgZnVuY3Rp b24oZSkgewogICAgICAgICAgICB2YXIgdGhlVHlwZSA9IGpRdWVyeSgiI3NtZF9iaW9fd2lk Z2V0X3R5cGUgb3B0aW9uOnNlbGVjdGVkIikudmFsKCk7CiAgICAgICAgICAgIHNwYW5pZCA9 ICdzcGFuI3NtZF9iaW9fc2l6ZV9oZWxwXycrdGhlVHlwZTsKICAgICAgICAgICAgdGhpcy50 aXRsZSA9IGpRdWVyeShzcGFuaWQpLmF0dHIoInRpdGxlIik7CiAgICAgICAgfSwgZnVuY3Rp b24oZSkgewogICAgICAgICAgICB0aGlzLnRpdGxlID0gJyc7CiAgICAgICAgfSk7CiAgICBq UXVlcnkoIi5lZGl0LXNtZC1iaW8tdmFsdWUgLnBvcGhlbHAiKS5ob3ZlcigKICAgICAgICBm dW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB0aGVUeXBlID0galF1ZXJ5KCIjc21kX2Jp b193aWRnZXRfdHlwZSBvcHRpb246c2VsZWN0ZWQiKS52YWwoKTsKICAgICAgICAgICAgc3Bh bmlkID0gJ3NwYW4jc21kX2Jpb192YWxfaGVscF8nK3RoZVR5cGU7CiAgICAgICAgICAgIHRo aXMudGl0bGUgPSBqUXVlcnkoc3BhbmlkKS5hdHRyKCJ0aXRsZSIpOwogICAgICAgIH0sIGZ1 bmN0aW9uKGUpIHsKICAgICAgICAgICAgdGhpcy50aXRsZSA9ICcnOwogICAgICAgIH0pOwoK ICAgIC8vIEhhbmRsZSBvcGVuaW5nL2Nsb3NpbmcgdGhlIGNvbHR5cGUgYXJlYQogICAgalF1 ZXJ5KCcjc21kX2Jpb19jb2xncm91cCcpLmNsaWNrKGZ1bmN0aW9uKGV2KSB7CiAgICAgICAg ZXYucHJldmVudERlZmF1bHQoKTsKICAgICAgICBqUXVlcnkodGhpcykudG9nZ2xlQ2xhc3Mo J2V4cGFuZGVkJyk7CiAgICAgICAgalF1ZXJ5KCcuc21kX2Jpb19jb2x0eXBlJykudG9nZ2xl KCk7CgogICAgICAgIHNlbmRBc3luY0V2ZW50KAogICAgICAgICAgICB7CiAgICAgICAgICAg ICAgICBldmVudDogdGV4dHBhdHRlcm4uZXZlbnQsCiAgICAgICAgICAgICAgICBzdGVwOiAn c21kX2Jpb19zYXZlX3BhbmVfc3RhdGUnLAogICAgICAgICAgICAgICAgcGFuZTogJ2NvbHR5 cGUnLAogICAgICAgICAgICAgICAgdmlzaWJsZTogKGpRdWVyeSh0aGlzKS5oYXNDbGFzcygn ZXhwYW5kZWQnKSkKICAgICAgICAgICAgfQogICAgICAgICk7CiAgICB9KTsKfSk7Ci8vXV0+ Cjwvc2NyaXB0Pgp7JGNzc30KRU9KUzsKICAgIH0KfQoKLy8gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCi8vIE1ha2UgdGhlIG5hbWUvdmFsIHBhaXJzIGZvciBzZWxlY3RJbnB1dCAvIHJh ZGlvIC8gY2hlY2tib3ggc2V0cwpmdW5jdGlvbiBzbWRfYmlvX3NwbGl0dmFsKCR2YWwpIHsK ICAgICRzZWx2ID0gYXJyYXkoKTsKCiAgICAkd3ZhbHMgPSBwcmVnX3NwbGl0KCIvW1xyXG4s XSsvIiwgJHZhbCwgLTEsIFBSRUdfU1BMSVRfTk9fRU1QVFkpOwogICAgZm9yZWFjaCAoJHd2 YWxzIGFzICR3dmFsKSB7CiAgICAgICAgJHBydHMgPSBleHBsb2RlKCc9PicsICR3dmFsKTsK ICAgICAgICBpZiAoY291bnQoJHBydHMpID09IDEpIHsKICAgICAgICAgICAgJHBydHNbMV0g PSAkcHJ0c1swXTsKICAgICAgICAgICAgJHBydHNbMF0gPSBzbWRfYmlvX3Nhbml0aXplKCRw cnRzWzBdKTsKICAgICAgICB9CiAgICAgICAgJHNlbHZbdHJpbSgkcHJ0c1swXSldID0gdHJp bSgkcHJ0c1sxXSk7CiAgICB9CiAgICByZXR1cm4gJHNlbHY7Cn0KCi8vIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQovLyBTdXBlci1zYW5pdGl6ZSB0aGUgcGFzc2VkIHZhbHVlIHNvIHdl IGNhbiBtYWtlIHZhcmlhYmxlIG5hbWVzIGZyb20gdGhlIHJldHVybmVkIHN0cmluZwpmdW5j dGlvbiBzbWRfYmlvX3Nhbml0aXplKCR2YWwpIHsKICAgIHJldHVybiBzdHJ0b2xvd2VyKHN0 cl9yZXBsYWNlKCItIiwgIl8iLCBzYW5pdGl6ZUZvclVybCgkdmFsKSkpOwp9CgovLyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KZnVuY3Rpb24gc21kX2Jpb19zYXZlKCRldnQsICRzdHAp IHsKICAgIGdsb2JhbCAkcHJlZnM7CgogICAgaWYgKHNtZF9iaW9fdGFibGVfZXhpc3QoKSkg ewogICAgICAgICR0YXJnZXR2YXJzID0gYXJyYXkoKTsKICAgICAgICBleHRyYWN0KGRvU2xh c2gocHNhKGFycmF5KCdwcml2cycsICduYW1lJywgJ2VtYWlsJywgJ1JlYWxOYW1lJywgJ3Vz ZXJfaWQnKSkpKTsKICAgICAgICBpZiAoZ2V0X3ByZWYoJ3NtZF9iaW9fc2FuaXRpemVfbmFt ZScsIDApID4gMCkgewogICAgICAgICAgICAvLyBTYW5pdGl6ZSBhbmQgcGFzcyB0aGUgbmV3 IG5hbWUgZm9yd2FyZCB0byB0aGUgYWN0dWFsIHR4cF91c2VyIHNhdmUgcm91dGluZQogICAg ICAgICAgICAkbmFtZSA9IHN0cnRvbG93ZXIoc2FuaXRpemVGb3JVcmwoJG5hbWUpKTsKICAg ICAgICAgICAgJF9QT1NUWyduYW1lJ10gPSAkbmFtZTsKICAgICAgICB9CiAgICAgICAgJGxl bmd0aCA9IGZ1bmN0aW9uX2V4aXN0cygnbWJfc3RybGVuJykgPyBtYl9zdHJsZW4oJG5hbWUs ICc4Yml0JykgOiBzdHJsZW4oJG5hbWUpOwoKICAgICAgICBpZiAoKCR1c2VyX2lkIHx8ICRu YW1lKSBhbmQgJGxlbmd0aCA8PSA2NCBhbmQgaXNfdmFsaWRfZW1haWwoJGVtYWlsKSkgewog ICAgICAgICAgICBmb3JlYWNoICgkX1BPU1QgYXMgJGlkeCA9PiAkaXRlbSkgewogICAgICAg ICAgICAgICAgaWYgKHN0cnBvcygkaWR4LCAnc21kX2Jpb18nKSA9PT0gMCkgewogICAgICAg ICAgICAgICAgICAgICR0YXJnZXR2YXJzW10gPSAkaWR4OwogICAgICAgICAgICAgICAgfQog ICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBEb3VibGUgZGUtY2x1dGNoIGFnYWluLi4u IGRhbW1pdCA6LSgKICAgICAgICAgICAgJHVzZXJfaWQgPSBncHMoJ3VzZXJfaWQnKTsKICAg ICAgICAgICAgaWYgKCR1c2VyX2lkKSB7CiAgICAgICAgICAgICAgICAkdXNlcl9yZWYgPSBz YWZlX2ZpZWxkKCduYW1lJywndHhwX3VzZXJzJywidXNlcl9pZCA9ICckdXNlcl9pZCciKTsK ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR1c2VyX3JlZiA9ICRuYW1l OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGV4dHJhY3QoZ3BzYSgkdGFyZ2V0dmFycykp OwogICAgICAgICAgICAkYmNvbHMgPSBnZXRUaGluZ3MoJ2Rlc2NyaWJlIGAnLlBGWC5TTURf QklPLidgJyk7CiAgICAgICAgICAgICRzcWxTZXQgPSBhcnJheSgpOwogICAgICAgICAgICBm b3JlYWNoICgkdGFyZ2V0dmFycyBhcyAkdmFyKSB7CiAgICAgICAgICAgICAgICAkY29sbmFt ZSA9IHN0cl9yZXBsYWNlKCdzbWRfYmlvXycsICcnLCAkdmFyKTsKICAgICAgICAgICAgICAg IGlmIChpbl9hcnJheSgkY29sbmFtZSwgJGJjb2xzKSkgewogICAgICAgICAgICAgICAgICAg ICRzcWxTZXRbXSA9ICJgJGNvbG5hbWVgID0gJyIuZG9TbGFzaCgkJHZhcikuIiciOwogICAg ICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkc3FsU2V0KSB7 CiAgICAgICAgICAgICAgICAkcnMgPSBzYWZlX3Vwc2VydChTTURfQklPLCBqb2luKCcsJywg JHNxbFNldCksICJgdXNlcl9yZWZgID0gJyIuZG9TbGFzaCgkdXNlcl9yZWYpLiInIik7CiAg ICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQpmdW5jdGlvbiBzbWRfYmlvX2RlbGV0ZSgkZXZ0LCAkc3RwKSB7CiAgICBnbG9iYWwg JHR4cF91c2VyOwoKICAgIGlmIChzbWRfYmlvX3RhYmxlX2V4aXN0KCkpIHsKICAgICAgICAv LyBTaW5jZSB3ZSBhcmUgZXhlY3V0aW5nICdwcmUnIGRlbGV0ZSB3ZSBuZWVkIHRvIHVuZm9y dHVuYXRlbHkgZHVwbGljYXRlIHNvbWUgb2YgdGhlIGNoZWNrcwogICAgICAgIC8vIGZyb20g dHhwX2FkbWluLnBocCBzbyB3ZSBtaW5pbWlzZSB0aGUgb3Bwb3J0dW5pdHkgdG8gZGVsZXRl IHNvbWVvbmUgYnkgbWlzdGFrZQogICAgICAgICRzZWxlY3RlZCA9IHBzKCdzZWxlY3RlZCcp OwogICAgICAgICRtZXRob2QgPSBwcygnZWRpdF9tZXRob2QnKTsKICAgICAgICBpZiAoISRz ZWxlY3RlZCBvciAhaXNfYXJyYXkoJHNlbGVjdGVkKSkgewogICAgICAgICAgICByZXR1cm47 CiAgICAgICAgfQogICAgICAgIGlmICgkbWV0aG9kICE9ICdkZWxldGUnKSB7CiAgICAgICAg ICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRuYW1lcyA9IHNhZmVfY29sdW1uKCdu YW1lJywgJ3R4cF91c2VycycsICJuYW1lIElOICgnIi5qb2luKCInLCciLCBkb1NsYXNoKCRz ZWxlY3RlZCkpLiInKSBBTkQgbmFtZSAhPSAnIi5kb1NsYXNoKCR0eHBfdXNlcikuIiciKTsK ICAgICAgICBpZiAoISRuYW1lcykgcmV0dXJuOwoKICAgICAgICAkYXNzaWduX2Fzc2V0cyA9 IHBzKCdhc3NpZ25fYXNzZXRzJyk7CiAgICAgICAgaWYgKCRhc3NpZ25fYXNzZXRzID09PSAn JykgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfSBlbHNlaWYgKGluX2FycmF5KCRh c3NpZ25fYXNzZXRzLCAkbmFtZXMpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9 IGVsc2UgewogICAgICAgICAgICAvLyBBbGwgdGhlIGNoZWNrcyBwYXNzZWQgLS0gZG8gaXQK ICAgICAgICAgICAgc2FmZV9kZWxldGUoU01EX0JJTywgInVzZXJfcmVmIElOICgnIi5qb2lu KCInLCciLCBkb1NsYXNoKCRuYW1lcykpLiInKSIpOwogICAgICAgIH0KICAgIH0KfQoKLy8g LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQpmdW5jdGlvbiBzbWRfYmlvX3NhdmVfcGFuZV9zdGF0ZSgpIHsKICAgIGdsb2Jh bCAkZXZlbnQ7CiAgICAkcGFuZXMgPSBhcnJheSgnY29sdHlwZScpOwogICAgJHBhbmUgPSBn cHMoJ3BhbmUnKTsKICAgIGlmIChpbl9hcnJheSgkcGFuZSwgJHBhbmVzKSkgewogICAgICAg IHNldF9wcmVmKCJwYW5lX3NtZF9iaW9feyRwYW5lfV92aXNpYmxlIiwgKGdwcygndmlzaWJs ZScpID09ICd0cnVlJyA/ICcxJyA6ICcwJyksICRldmVudCwgUFJFRl9ISURERU4sICd5ZXNu b3JhZGlvJywgMCwgUFJFRl9QUklWQVRFKTsKICAgICAgICBzZW5kX3htbF9yZXNwb25zZSgp OwogICAgfSBlbHNlIHsKICAgICAgICBzZW5kX3htbF9yZXNwb25zZShhcnJheSgnaHR0cC1z dGF0dXMnID0+ICc0MDAgQmFkIFJlcXVlc3QnKSk7CiAgICB9Cn0KCi8vIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZnVu Y3Rpb24gc21kX2Jpb19mb3JtX3N1Ym1pdCgpIHsKICAgIGdsb2JhbCAkbWVtX2Zvcm1fdHlw ZTsKCiAgICBpZiAoIWluX2FycmF5KCRtZW1fZm9ybV90eXBlLCBhcnJheSgnc21kX2Jpbycs ICdtZW1fc2VsZl9yZWdpc3RlcicsICdtZW1fc2VsZl91c2VyX2VkaXQnKSkpIHJldHVybjsK CiAgICAkYXV0aG9yID0gc21kX2Jpb19maW5kX2F1dGhvcigpOwoKICAgIGlmICgkYXV0aG9y KSB7CiAgICAgICAgJGNvcmVfY29scyA9IHNtZF9iaW9fY29yZV9jb2xzKCk7CiAgICAgICAg JG1ldGFfY29scyA9IHNhZmVfY29sdW1uKCduYW1lJywgU01EX0JJT19NRVRBLCAnMT0xJyk7 CiAgICAgICAgJHF1ZXJ5X3BhcmFtcyA9IGFycmF5KAogICAgICAgICAgICAnY29yZScgPT4g YXJyYXkoCiAgICAgICAgICAgICAgICAndGJsJyA9PiAndHhwX3VzZXJzJywKICAgICAgICAg ICAgICAgICdyZWYnID0+ICduYW1lJywKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJ2Jp bycgPT4gYXJyYXkoCiAgICAgICAgICAgICAgICAndGJsJyA9PiBTTURfQklPLAogICAgICAg ICAgICAgICAgJ3JlZicgPT4gJ3VzZXJfcmVmJywKICAgICAgICAgICAgKQogICAgICAgICk7 CgogICAgICAgIGZvcmVhY2ggKHN0cmlwUG9zdCgpIGFzICRrZXkgPT4gJHZhbCkgewogICAg ICAgICAgICAvLyBPbmx5IGNhcmUgYWJvdXQgc21kX2Jpb18gcHJlZml4ZWQgZW50cmllcyBp biAkX1BPU1QKICAgICAgICAgICAgaWYgKHN0cnBvcygka2V5LCAnc21kX2Jpb18nKSAhPT0g ZmFsc2UpIHsKICAgICAgICAgICAgICAgIC8vIFN0cmlwIG9mZiB0aGUga25vd24gcHJlZml4 CiAgICAgICAgICAgICAgICAkcmF3X2tleSA9IHN0cl9yZXBsYWNlKCdzbWRfYmlvXycsICcn LCAka2V5KTsKICAgICAgICAgICAgICAgIGlmIChpbl9hcnJheSgkcmF3X2tleSwgJGNvcmVf Y29scykpIHsKICAgICAgICAgICAgICAgICAgICAkcXVlcnlfcGFyYW1zWydjb3JlJ11bJ2Nv bHMnXVtdID0gZG9TbGFzaCgkcmF3X2tleSkgLiAnPScuIGRvUXVvdGUoZG9TbGFzaCgkdmFs KSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGluX2FycmF5KCRyYXdfa2V5LCAkbWV0 YV9jb2xzKSkgewogICAgICAgICAgICAgICAgICAgICRxdWVyeV9wYXJhbXNbJ2JpbyddWydj b2xzJ11bXSA9IGRvU2xhc2goJHJhd19rZXkpIC4gJz0nLiBkb1F1b3RlKGRvU2xhc2goJHZh bCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAg ICAvLyBJZiB0aGVyZSBhcmUgc29tZSBjb2xzIHNldCB3ZSdyZSBnb29kIHRvIHVwZGF0ZS9p bnNlcnQgZGVwZW5kaW5nIGlmICRhdXRob3IgZXhpc3RzIG9yIG5vdAogICAgICAgIGZvcmVh Y2ggKCRxdWVyeV9wYXJhbXMgYXMgJHR5cGUgPT4gJGRhdGEpIHsKICAgICAgICAgICAgaWYg KGlzc2V0KCRkYXRhWydjb2xzJ10pKSB7CiAgICAgICAgICAgICAgICAkcGFyYW1zID0gam9p bignLCAnLCAkZGF0YVsnY29scyddKTsKICAgICAgICAgICAgICAgIHNhZmVfdXBzZXJ0KCRk YXRhWyd0YmwnXSwgJHBhcmFtcywgJGRhdGFbJ3JlZiddIC4nPScuIGRvUXVvdGUoZG9TbGFz aCgkYXV0aG9yKSkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CgovLyBUcnkg c29tZSBvZiB0aGUgdXN1YWwgc3VzcGVjdHMgZm9yIGxvY2F0aW5nIGF1dGhvcnNoaXAKZnVu Y3Rpb24gc21kX2Jpb19maW5kX2F1dGhvcigkYXV0aG9yX2luPScnLCAkcGxhY2VzPWFycmF5 KCdiaW90YWcnLCAndHhwdXNlcicsICdpbGknLCAncHJvZmlsZScsICdzZWxmcmVnJywgJ2xp c3QnLCAnYXJ0aWNsZScsICdpbWFnZScsICdmaWxlJywgJ2xpbmsnKSApIHsKICAgIGdsb2Jh bCAkc21kX2Jpb19hdXRob3IsICR0eHBfdXNlciwgJG1lbV9mb3JtX3R5cGUsICRtZW1fcHJv ZmlsZSwgJHByZXRleHQsICR0aGlzYXJ0aWNsZSwgJHRoaXNpbWFnZSwgJHRoaXNmaWxlLCAk dGhpc2xpbms7CiAgICBzdGF0aWMgJHNtZF9iaW9faWxpID0gMDsKCiAgICAkcGxhY2VzID0g aXNfYXJyYXkoJHBsYWNlcykgPyAkcGxhY2VzIDogZG9fbGlzdCgkcGxhY2VzKTsKCiAgICAv LyBDaGVjayBmb3IgYW55IHBhc3NlZC1pbiBhdXRob3IgZmlyc3QKICAgICRhdXRob3IgPSAk YXV0aG9yX2luOwoKICAgIGZvcmVhY2ggKCRwbGFjZXMgYXMgJHBsYWNlKSB7CiAgICAgICAg aWYgKCRhdXRob3IgIT0gJycpIGJyZWFrOwogICAgICAgIHN3aXRjaCAoJHBsYWNlKSB7CiAg ICAgICAgICAgIGNhc2UgJ2Jpb3RhZyc6CiAgICAgICAgICAgICAgICAvLyBGcm9tIHNtZF9i aW9fYXV0aG9yIHRhZwogICAgICAgICAgICAgICAgJGF1dGhvciA9ICgkc21kX2Jpb19hdXRo b3IgIT0gJycpID8gJHNtZF9iaW9fYXV0aG9yIDogJGF1dGhvcjsKICAgICAgICAgICAgYnJl YWs7CiAgICAgICAgICAgIGNhc2UgJ3R4cHVzZXInOgogICAgICAgICAgICAgICAgLy8gRnJv bSBnbG9iYWwgdXNlciB2YXJpYWJsZQogICAgICAgICAgICAgICAgJGF1dGhvciA9ICgkdHhw X3VzZXIgIT0gJycpID8gJHR4cF91c2VyIDogJGF1dGhvcjsKICAgICAgICAgICAgYnJlYWs7 CiAgICAgICAgICAgIGNhc2UgJ2lsaSc6CiAgICAgICAgICAgICAgICAvLyBGcm9tIGN1cnJl bnRseSBsb2dnZWQtaW4gdXNlcgogICAgICAgICAgICAgICAgJHNtZF9iaW9faWxpID0gKCRz bWRfYmlvX2lsaSA9PT0gMCkgPyBpc19sb2dnZWRfaW4oKSA6ICRzbWRfYmlvX2lsaTsKICAg ICAgICAgICAgICAgIGlmICgkc21kX2Jpb19pbGkpIHsKICAgICAgICAgICAgICAgICAgICAk YXV0aG9yID0gJHNtZF9iaW9faWxpWyduYW1lJ107CiAgICAgICAgICAgICAgICB9CiAgICAg ICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdwcm9maWxlJzoKICAgICAgICAgICAg ICAgIC8vIEZyb20gY3VycmVudCBzZWxmLWVkaXQgdXNlciBwcm9maWxlCiAgICAgICAgICAg ICAgICAkYXV0aG9yID0gKGlzc2V0KCRtZW1fcHJvZmlsZVsnbmFtZSddKSkgPyAkbWVtX3By b2ZpbGVbJ25hbWUnXSA6ICRhdXRob3I7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg ICBjYXNlICdzZWxmcmVnJzoKICAgICAgICAgICAgICAgIC8vIE5ldyBhdXRob3IgZnJvbSBt ZW1fc2VsZl9yZWc/CiAgICAgICAgICAgICAgICAkYW5hbWUgPSBwcygnbmFtZScpOwogICAg ICAgICAgICAgICAgaWYgKCRhbmFtZSA9PSAnJykgewogICAgICAgICAgICAgICAgICAgIC8v IE5ldyBhdXRob3IgZnJvbSBjdXN0b20gbWVtX2Zvcm0/CiAgICAgICAgICAgICAgICAgICAg JGFuYW1lID0gcHMoJ3NtZF9iaW9fbmFtZScpOwogICAgICAgICAgICAgICAgfQogICAgICAg ICAgICAgICAgaWYgKCAoJG1lbV9mb3JtX3R5cGUgPT0gJ21lbV9zZWxmX3JlZ2lzdGVyJyB8 fCAkbWVtX2Zvcm1fdHlwZSA9PSAnc21kX2JpbycpICYmICgkYW5hbWUgIT0gJycpICkgewog ICAgICAgICAgICAgICAgICAgIC8vIEFzIGxvbmcgYXMgJGFuYW1lIGRvZXNuJ3QgZXhpc3Qs IGxldCB0aGlzIG5ldyBhdXRob3IgaW4KICAgICAgICAgICAgICAgICAgICAvL1RPRE86IENh Y2hlIHRoaXM/CiAgICAgICAgICAgICAgICAgICAgJGV4aXN0cyA9IHNhZmVfcm93KCcqJywg J3R4cF91c2VyJywgIm5hbWU9JyIuZG9TbGFzaCgkYW5hbWUpLiInIik7CiAgICAgICAgICAg ICAgICAgICAgaWYgKCEkZXhpc3RzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRhdXRo b3IgPSAkYW5hbWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQog ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnbGlzdCc6CiAgICAgICAgICAg ICAgICAkYXV0aG9yID0gKGlzc2V0KCRwcmV0ZXh0WydhdXRob3InXSkpID8gJHByZXRleHRb J2F1dGhvciddIDogJGF1dGhvcjsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNh c2UgJ2FydGljbGUnOgogICAgICAgICAgICAgICAgJGF1dGhvciA9IChpc3NldCgkdGhpc2Fy dGljbGVbJ2F1dGhvcmlkJ10pKSA/ICR0aGlzYXJ0aWNsZVsnYXV0aG9yaWQnXSA6ICRhdXRo b3I7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdpbWFnZSc6CiAgICAg ICAgICAgICAgICAkYXV0aG9yID0gKGlzc2V0KCR0aGlzaW1hZ2VbJ2F1dGhvciddKSkgPyAk dGhpc2ltYWdlWydhdXRob3InXSA6ICRhdXRob3I7CiAgICAgICAgICAgIGJyZWFrOwogICAg ICAgICAgICBjYXNlICdmaWxlJzoKICAgICAgICAgICAgICAgICRhdXRob3IgPSAoaXNzZXQo JHRoaXNmaWxlWydhdXRob3InXSkpID8gJHRoaXNmaWxlWydhdXRob3InXSA6ICRhdXRob3I7 CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdsaW5rJzoKICAgICAgICAg ICAgICAgICRhdXRob3IgPSAoaXNzZXQoJHRoaXNsaW5rWydhdXRob3InXSkpID8gJHRoaXNs aW5rWydhdXRob3InXSA6ICRhdXRob3I7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0K ICAgIH0KCiAgICByZXR1cm4gJGF1dGhvcjsKfQoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBSZXR1cm4gYSBs aXN0IG9mIGNvcmUgY29sdW1ucyBpbiB0aGUgdHhwX3VzZXJzIHRhYmxlLgovLyBUaGlzIGNv dWxkIGJlIGRvbmUgcHJvZ3JhbW1hdGljYWxseSBidXQgaXNuJ3Q6IHNhdmUgYQovLyBxdWVy eSwgc2F2ZSB0aGUgd29ybGQKZnVuY3Rpb24gc21kX2Jpb19jb3JlX2NvbHMoKSB7CiAgICAv LyBUaGUgaW5kaWNlcyBhcmUgdGhlIGdUeHQoKSBuYW1lcyBmb3IgdGhlIGFzc29jaWF0ZWQg ZmllbGQKICAgIHJldHVybiBhcnJheSgKICAgICAgICAnaWQnICAgICAgICAgPT4gJ3VzZXJf aWQnLAogICAgICAgICduYW1lJyAgICAgICA9PiAnbmFtZScsCiAgICAgICAgJ3JlYWxfbmFt ZScgID0+ICdSZWFsTmFtZScsCiAgICAgICAgJ2VtYWlsJyAgICAgID0+ICdlbWFpbCcsCiAg ICAgICAgJ3ByaXZpbGVnZXMnID0+ICdwcml2cycsCiAgICAgICAgJ2RhdGUnICAgICAgID0+ ICdsYXN0X2FjY2VzcycKICAgICk7Cn0KCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gSW4gYWxwaGFiZXRpY2Fs IG9yZGVyIG9yIHNvcnRpbmcgb24gdGhlIGFkbWluIHBhbmVsIGdldHMgc2NyZXd5CmZ1bmN0 aW9uIHNtZF9iaW9fZ2V0X3R5cGVzKCkgewogICAgJHNtZF9iaW9fdHlwZXMgPSBhcnJheSgK ICAgICAgICAnY2hlY2tib3gnID0+IGFycmF5KAogICAgICAgICAgICAgICAgJ25hbWUnICAg ID0+ICdDaGVja2JveChlcyknLAogICAgICAgICAgICAgICAgJ2NvbHR5cGUnID0+ICd2YXJj aGFyJywKICAgICAgICAgICAgICAgICdjb2xzaXplJyA9PiAyNTUsCiAgICAgICAgICAgICAg ICAnZml4ZWQnICAgPT4gdHJ1ZSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgJ2RhdGUn ID0+IGFycmF5KAogICAgICAgICAgICAgICAgJ25hbWUnICAgID0+ICdEYXRlJywKICAgICAg ICAgICAgICAgICdjb2x0eXBlJyA9PiAnZGF0ZScsCiAgICAgICAgICAgICAgICAnY29sc2l6 ZScgPT4gbnVsbCwKICAgICAgICAgICAgICAgICdmaXhlZCcgICA9PiBmYWxzZSwKICAgICAg ICAgICAgICAgICksCiAgICAgICAgJ2RhdGV0aW1lJyA9PiBhcnJheSgKICAgICAgICAgICAg ICAgICduYW1lJyAgICA9PiAnRGF0ZS9UaW1lJywKICAgICAgICAgICAgICAgICdjb2x0eXBl JyA9PiAnZGF0ZXRpbWUnLAogICAgICAgICAgICAgICAgJ2NvbHNpemUnID0+IG51bGwsCiAg ICAgICAgICAgICAgICAnZml4ZWQnICAgPT4gZmFsc2UsCiAgICAgICAgICAgICAgICApLAog ICAgICAgICdlbWFpbCcgPT4gYXJyYXkoCiAgICAgICAgICAgICAgICAnbmFtZScgICAgPT4g J0UtbWFpbCcsCiAgICAgICAgICAgICAgICAnY29sdHlwZScgPT4gJ3ZhcmNoYXInLAogICAg ICAgICAgICAgICAgJ2NvbHNpemUnID0+IDI1NCwKICAgICAgICAgICAgICAgICdmaXhlZCcg ICA9PiBmYWxzZSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgJ2ltYWdlJyA9PiBhcnJh eSgKICAgICAgICAgICAgICAgICduYW1lJyAgICA9PiAnSW1hZ2UnLAogICAgICAgICAgICAg ICAgJ2NvbHR5cGUnID0+ICdpbnQnLAogICAgICAgICAgICAgICAgJ2NvbHNpemUnID0+IDEx LAogICAgICAgICAgICAgICAgJ2ZpeGVkJyAgID0+IHRydWUsCiAgICAgICAgICAgICAgICAp LAogICAgICAgICdsaXN0JyA9PiBhcnJheSgKICAgICAgICAgICAgICAgICduYW1lJyAgICA9 PiAnU2VsZWN0IGxpc3QnLAogICAgICAgICAgICAgICAgJ2NvbHR5cGUnID0+ICd2YXJjaGFy JywKICAgICAgICAgICAgICAgICdjb2xzaXplJyA9PiAyNTUsCiAgICAgICAgICAgICAgICAn Zml4ZWQnICAgPT4gdHJ1ZSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgJ21vbnRoJyA9 PiBhcnJheSgKICAgICAgICAgICAgICAgICduYW1lJyAgICA9PiAnTW9udGgnLAogICAgICAg ICAgICAgICAgJ2NvbHR5cGUnID0+ICd2YXJjaGFyJywKICAgICAgICAgICAgICAgICdjb2xz aXplJyA9PiAyNTUsCiAgICAgICAgICAgICAgICAnZml4ZWQnICAgPT4gZmFsc2UsCiAgICAg ICAgICAgICAgICApLAogICAgICAgICdtdWx0aWxpc3QnID0+IGFycmF5KAogICAgICAgICAg ICAgICAgJ25hbWUnICAgID0+ICdNdWx0aSBzZWxlY3QgbGlzdCcsCiAgICAgICAgICAgICAg ICAnY29sdHlwZScgPT4gJ3ZhcmNoYXInLAogICAgICAgICAgICAgICAgJ2NvbHNpemUnID0+ IDI1NSwKICAgICAgICAgICAgICAgICdmaXhlZCcgICA9PiB0cnVlLAogICAgICAgICAgICAg ICAgKSwKICAgICAgICAnbnVtYmVyJyA9PiBhcnJheSgKICAgICAgICAgICAgICAgICduYW1l JyAgICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgICdjb2x0eXBlJyA9PiAnaW50JywK ICAgICAgICAgICAgICAgICdjb2xzaXplJyA9PiAxMSwKICAgICAgICAgICAgICAgICdmaXhl ZCcgICA9PiBmYWxzZSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgJ3JhZGlvJyA9PiBh cnJheSgKICAgICAgICAgICAgICAgICduYW1lJyAgICA9PiAnUmFkaW8gc2V0JywKICAgICAg ICAgICAgICAgICdjb2x0eXBlJyA9PiAndmFyY2hhcicsCiAgICAgICAgICAgICAgICAnY29s c2l6ZScgPT4gMjU1LAogICAgICAgICAgICAgICAgJ2ZpeGVkJyAgID0+IHRydWUsCiAgICAg ICAgICAgICAgICApLAogICAgICAgICdyYW5nZScgPT4gYXJyYXkoCiAgICAgICAgICAgICAg ICAnbmFtZScgICAgPT4gJ1JhbmdlJywKICAgICAgICAgICAgICAgICdjb2x0eXBlJyA9PiAn aW50JywKICAgICAgICAgICAgICAgICdjb2xzaXplJyA9PiAxMSwKICAgICAgICAgICAgICAg ICdmaXhlZCcgICA9PiBmYWxzZSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgJ3RleHQn ID0+IGFycmF5KAogICAgICAgICAgICAgICAgJ25hbWUnICAgID0+ICdUZXh0IGJveCcsCiAg ICAgICAgICAgICAgICAnY29sdHlwZScgPT4gJ3ZhcmNoYXInLAogICAgICAgICAgICAgICAg J2NvbHNpemUnID0+IDI1NSwKICAgICAgICAgICAgICAgICdmaXhlZCcgICA9PiBmYWxzZSwK ICAgICAgICAgICAgICAgICksCiAgICAgICAgJ3RleHRhcmVhJyA9PiBhcnJheSgKICAgICAg ICAgICAgICAgICduYW1lJyAgICA9PiAnVGV4dCBhcmVhJywKICAgICAgICAgICAgICAgICdj b2x0eXBlJyA9PiAnbWVkaXVtdGV4dCcsCiAgICAgICAgICAgICAgICAnY29sc2l6ZScgPT4g NDA5NiwKICAgICAgICAgICAgICAgICdmaXhlZCcgICA9PiBmYWxzZSwKICAgICAgICAgICAg ICAgICksCiAgICAgICAgJ3RpbWUnID0+IGFycmF5KAogICAgICAgICAgICAgICAgJ25hbWUn ICAgID0+ICdUaW1lJywKICAgICAgICAgICAgICAgICdjb2x0eXBlJyA9PiAndGltZScsCiAg ICAgICAgICAgICAgICAnY29sc2l6ZScgPT4gbnVsbCwKICAgICAgICAgICAgICAgICdmaXhl ZCcgICA9PiBmYWxzZSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgJ3VybCcgPT4gYXJy YXkoCiAgICAgICAgICAgICAgICAnbmFtZScgICAgPT4gJ1VSTCcsCiAgICAgICAgICAgICAg ICAnY29sdHlwZScgPT4gJ3ZhcmNoYXInLAogICAgICAgICAgICAgICAgJ2NvbHNpemUnID0+ IDI1NSwKICAgICAgICAgICAgICAgICdmaXhlZCcgICA9PiBmYWxzZSwKICAgICAgICAgICAg ICAgICksCiAgICAgICAgJ3dlZWsnID0+IGFycmF5KAogICAgICAgICAgICAgICAgJ25hbWUn ICAgID0+ICdXZWVrJywKICAgICAgICAgICAgICAgICdjb2x0eXBlJyA9PiAndmFyY2hhcics CiAgICAgICAgICAgICAgICAnY29sc2l6ZScgPT4gMjU1LAogICAgICAgICAgICAgICAgJ2Zp eGVkJyAgID0+IGZhbHNlLAogICAgICAgICAgICAgICAgKSwKICAgICAgICAneWVzbm9yYWRp bycgPT4gYXJyYXkoCiAgICAgICAgICAgICAgICAnbmFtZScgICAgPT4gJ1llcy9ubyByYWRp bycsCiAgICAgICAgICAgICAgICAnY29sdHlwZScgPT4gJ3ZhcmNoYXInLAogICAgICAgICAg ICAgICAgJ2NvbHNpemUnID0+IDI1NSwKICAgICAgICAgICAgICAgICdmaXhlZCcgICA9PiB0 cnVlLAogICAgICAgICAgICAgICAgKSwKICAgICk7CgogICAgcmV0dXJuICRzbWRfYmlvX3R5 cGVzOwp9CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCi8vIEluIGFscGhhYmV0aWNhbCBvcmRlciBvciBzb3J0aW5n IG9uIHRoZSBhZG1pbiBwYW5lbCBnZXRzIHNjcmV3eQpmdW5jdGlvbiBzbWRfYmlvX2dldF9j b2x0eXBlcygpIHsKICAgICRzbWRfYmlvX2NvbHR5cGVzID0gYXJyYXkoCiAgICAgICAgJ2Rh dGUnID0+IGFycmF5KAogICAgICAgICAgICAndGl0bGUnICAgICAgID0+ICdEYXRlIFtZWVlZ LU1NLUREXScsCiAgICAgICAgICAgICdzaXplX3JlcScgICAgPT4gZmFsc2UsCiAgICAgICAg ICAgICdoYXNfZGVmYXVsdCcgPT4gdHJ1ZSwKICAgICAgICApLAogICAgICAgICdkYXRldGlt ZScgPT4gYXJyYXkoCiAgICAgICAgICAgICd0aXRsZScgICAgICAgPT4gJ0RhdGUgKyB0aW1l IFtZWVlZLU1NLUREIEhIOk1OOlNTXScsCiAgICAgICAgICAgICdzaXplX3JlcScgICAgPT4g ZmFsc2UsCiAgICAgICAgICAgICdoYXNfZGVmYXVsdCcgPT4gdHJ1ZSwKICAgICAgICApLAog ICAgICAgICdkb3VibGUnID0+IGFycmF5KAogICAgICAgICAgICAndGl0bGUnICAgICAgID0+ ICdEb3VibGUgcHJlY2lzaW9uIGZsb2F0JywKICAgICAgICAgICAgJ3NpemVfcmVxJyAgICA9 PiBmYWxzZSwKICAgICAgICAgICAgJ2hhc19kZWZhdWx0JyA9PiB0cnVlLAogICAgICAgICks CiAgICAgICAgJ2Zsb2F0JyA9PiBhcnJheSgKICAgICAgICAgICAgJ3RpdGxlJyAgICAgICA9 PiAnRmxvYXRpbmcgcG9pbnQgbnVtYmVyJywKICAgICAgICAgICAgJ3NpemVfcmVxJyAgICA9 PiBmYWxzZSwKICAgICAgICAgICAgJ2hhc19kZWZhdWx0JyA9PiB0cnVlLAogICAgICAgICks CiAgICAgICAgJ2ludCcgPT4gYXJyYXkoCiAgICAgICAgICAgICd0aXRsZScgICAgICAgPT4g J0ludGVnZXIgW3VwIHRvIDQyOTQ5NjcyOTVdJywKICAgICAgICAgICAgJ3NpemVfcmVxJyAg ICA9PiAnMTEnLAogICAgICAgICAgICAnaGFzX2RlZmF1bHQnID0+IHRydWUsCiAgICAgICAg KSwKICAgICAgICAnbG9uZ3RleHQnID0+IGFycmF5KAogICAgICAgICAgICAndGl0bGUnICAg ICAgID0+ICdMb25nIHRleHQgW3VwIHRvIDRHQl0nLAogICAgICAgICAgICAnc2l6ZV9yZXEn ICAgID0+IGZhbHNlLAogICAgICAgICAgICAnaGFzX2RlZmF1bHQnID0+IGZhbHNlLAogICAg ICAgICksCiAgICAgICAgJ21lZGl1bWludCcgPT4gYXJyYXkoCiAgICAgICAgICAgICd0aXRs ZScgICAgICAgPT4gJ01lZGl1bSBpbnRlZ2VyIFt1cCB0byAxNjc3NzIxNV0nLAogICAgICAg ICAgICAnc2l6ZV9yZXEnICAgID0+ICc4JywKICAgICAgICAgICAgJ2hhc19kZWZhdWx0JyA9 PiB0cnVlLAogICAgICAgICksCiAgICAgICAgJ21lZGl1bXRleHQnID0+IGFycmF5KAogICAg ICAgICAgICAndGl0bGUnICAgICAgID0+ICdNZWRpdW0gdGV4dCBbdXAgdG8gMTZNQl0nLAog ICAgICAgICAgICAnc2l6ZV9yZXEnICAgID0+IGZhbHNlLAogICAgICAgICAgICAnaGFzX2Rl ZmF1bHQnID0+IGZhbHNlLAogICAgICAgICksCiAgICAgICAgJ3NtYWxsaW50JyA9PiBhcnJh eSgKICAgICAgICAgICAgJ3RpdGxlJyAgICAgICA9PiAnU21hbGwgaW50ZWdlciBbdXAgdG8g NjU1MzVdJywKICAgICAgICAgICAgJ3NpemVfcmVxJyAgICA9PiAnNCcsCiAgICAgICAgICAg ICdoYXNfZGVmYXVsdCcgPT4gdHJ1ZSwKICAgICAgICApLAogICAgICAgICd0ZXh0JyA9PiBh cnJheSgKICAgICAgICAgICAgJ3RpdGxlJyAgICAgICA9PiAnVGV4dCBbdXAgdG8gNjRLQiBj aGFyc10nLAogICAgICAgICAgICAnc2l6ZV9yZXEnICAgID0+IGZhbHNlLAogICAgICAgICAg ICAnaGFzX2RlZmF1bHQnID0+IGZhbHNlLAogICAgICAgICksCiAgICAgICAgJ3RpbWUnID0+ IGFycmF5KAogICAgICAgICAgICAndGl0bGUnICAgICAgID0+ICdUaW1lIFtISDpNTjpTU10n LAogICAgICAgICAgICAnc2l6ZV9yZXEnICAgID0+IGZhbHNlLAogICAgICAgICAgICAnaGFz X2RlZmF1bHQnID0+IHRydWUsCiAgICAgICAgKSwKICAgICAgICAndGltZXN0YW1wJyA9PiBh cnJheSgKICAgICAgICAgICAgJ3RpdGxlJyAgICAgICA9PiAnVGltZXN0YW1wIFtzZWNvbmRz IHNpbmNlIFVOSVggZXBvY2hdJywKICAgICAgICAgICAgJ3NpemVfcmVxJyAgICA9PiBmYWxz ZSwKICAgICAgICAgICAgJ2hhc19kZWZhdWx0JyA9PiB0cnVlLAogICAgICAgICksCiAgICAg ICAgJ3RpbnlpbnQnID0+IGFycmF5KAogICAgICAgICAgICAndGl0bGUnICAgICAgID0+ICdU aW55IGludGVnZXIgW3VwIHRvIDI1NV0nLAogICAgICAgICAgICAnc2l6ZV9yZXEnICAgID0+ ICczJywKICAgICAgICAgICAgJ2hhc19kZWZhdWx0JyA9PiB0cnVlLAogICAgICAgICksCiAg ICAgICAgJ3Rpbnl0ZXh0JyA9PiBhcnJheSgKICAgICAgICAgICAgJ3RpdGxlJyAgICAgICA9 PiAnVGlueSB0ZXh0IFt1cCB0byAyNTUgY2hhcnNdJywKICAgICAgICAgICAgJ3NpemVfcmVx JyAgICA9PiBmYWxzZSwKICAgICAgICAgICAgJ2hhc19kZWZhdWx0JyA9PiBmYWxzZSwKICAg ICAgICApLAogICAgICAgICd2YXJiaW5hcnknID0+IGFycmF5KAogICAgICAgICAgICAndGl0 bGUnICAgICAgID0+ICdCaW5hcnkgdmFyY2hhciBbc2l6ZSBzdWJqZWN0IHRvIG1heCByb3cg c2l6ZV0nLAogICAgICAgICAgICAnc2l6ZV9yZXEnICAgID0+ICcyNTUnLAogICAgICAgICAg ICAnaGFzX2RlZmF1bHQnID0+IHRydWUsCiAgICAgICAgKSwKICAgICAgICAndmFyY2hhcicg PT4gYXJyYXkoCiAgICAgICAgICAgICd0aXRsZScgICAgICAgPT4gJ1ZhcmNoYXIgW3NpemUg c3ViamVjdCB0byBtYXggcm93IHNpemVdJywKICAgICAgICAgICAgJ3NpemVfcmVxJyAgICA9 PiAnMjU1JywKICAgICAgICAgICAgJ2hhc19kZWZhdWx0JyA9PiB0cnVlLAogICAgICAgICks CiAgICApOwoKICAgIHJldHVybiAkc21kX2Jpb19jb2x0eXBlczsKfQoKLy8gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpm dW5jdGlvbiBzbWRfYmlvX2dldF91bnVzZWQoKSB7CiAgICAkc21kX2Jpb191bnVzZWQgPSBh cnJheSgKICAgICAgICAnc2l6ZScgPT4gYXJyYXkoJ2xpc3QnLCAnbXVsdGlsaXN0JywgJ3Jh ZGlvJywgJ3llc25vcmFkaW8nLCAnY2hlY2tib3gnKSwKICAgICk7CgogICAgcmV0dXJuICRz bWRfYmlvX3VudXNlZDsKfQoKLy8gKioqKioqKioqKioqKioqKioqKioqKioqCi8vIFRBQkxF IE1BTkFHRU1FTlQKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmZ1bmN0aW9uIHNtZF9i aW9fdGFibGVfZXhpc3QoKSB7CiAgICBzdGF0aWMgJHNtZF9iaW9fdGFibGVfb2sgPSBhcnJh eSgpOwoKICAgIGlmIChpc3NldCgkc21kX2Jpb190YWJsZV9va1snbWV0YSddKSkgewogICAg ICAgIHJldHVybiAoJHNtZF9iaW9fdGFibGVfb2tbJ21ldGEnXSA9PT0gJHNtZF9iaW9fdGFi bGVfb2tbJ2ZpZWxkJ10pOwogICAgfQoKICAgICRtZXRhID0gc2FmZV9jb3VudChTTURfQklP X01FVEEsICcxPTEnKTsKICAgICRmbGRzID0gQHNhZmVfc2hvdygnY29sdW1ucycsIFNNRF9C SU8pOwoKICAgICRzbWRfYmlvX3RhYmxlX29rWydtZXRhJ10gPSAoaW50KSRtZXRhOwogICAg JHNtZF9iaW9fdGFibGVfb2tbJ2ZpZWxkJ10gPSAoaW50KWNvdW50KCRmbGRzKSAtIDE7IC8v IFN1YnRyYWN0IHRoZSB1c2VyX3JlZiBjb2x1bW4gYXMgaXQncyBhbHdheXMgcHJlc2VudAoK ICAgIHJldHVybigkc21kX2Jpb190YWJsZV9va1snbWV0YSddID09PSAkc21kX2Jpb190YWJs ZV9va1snZmllbGQnXSk7Cn0KCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpmdW5jdGlv biBzbWRfYmlvX3RhYmxlX2luc3RhbGwoJHNob3dwYW5lPTEpIHsKICAgIGdsb2JhbCAkREI7 CgogICAgJHNtZF9iaW9fdHlwZXMgPSBzbWRfYmlvX2dldF90eXBlcygpOwogICAgJHNtZF9i aW9fY29sdHlwZXMgPSBzbWRfYmlvX2dldF9jb2x0eXBlcygpOwoKICAgICRHTE9CQUxTWyd0 eHBfZXJyX2NvdW50J10gPSAwOwogICAgJG1zZyA9ICcnOwogICAgJGRlYnVnID0gZ3BzKCdk ZWJ1ZycpOwoKICAgICRyZXQgPSAnJzsKICAgICRzcWwgPSBhcnJheSgpOwogICAgJHNxbFtd ID0gIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGAiLlBGWC5TTURfQklPLiJgICgKICAg ICAgICBgdXNlcl9yZWZgIHZhcmNoYXIoNjQpIE5PVCBOVUxMIGRlZmF1bHQgJycsCiAgICAg ICAgVU5JUVVFIEtFWSBgdXNlcl9yZWZgIChgdXNlcl9yZWZgKQogICAgKSBFTkdJTkU9TXlJ U0FNLCBDSEFSQUNURVIgU0VUPXV0ZjgsIFBBQ0tfS0VZUz0xIjsKCiAgICAkc3FsW10gPSAi Q1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYCIuUEZYLlNNRF9CSU9fTUVUQS4iYCAoCiAg ICAgICAgYGlkYCBpbnQoNCkgTk9UIE5VTEwgYXV0b19pbmNyZW1lbnQsCiAgICAgICAgYHRp dGxlYCB2YXJjaGFyKDY0KSBOVUxMIGRlZmF1bHQgJycgQ09MTEFURSB1dGY4X2dlbmVyYWxf Y2ksCiAgICAgICAgYG5hbWVgIHZhcmNoYXIoNjQpIE5PVCBOVUxMIGRlZmF1bHQgJycgQ09M TEFURSB1dGY4X2dlbmVyYWxfY2ksCiAgICAgICAgYHR5cGVgIHNldCgiLmRvUXVvdGUoam9p bigiJywnIiwgYXJyYXlfa2V5cygkc21kX2Jpb190eXBlcykpKS4iKSBOT1QgTlVMTCBkZWZh dWx0ICd0ZXh0JywKICAgICAgICBgc2l6ZWAgdmFyY2hhcigxMCkgTlVMTCBkZWZhdWx0IDAs CiAgICAgICAgYGNvbHR5cGVgIHNldCgiLmRvUXVvdGUoam9pbigiJywnIiwgYXJyYXlfa2V5 cygkc21kX2Jpb19jb2x0eXBlcykpKS4iKSBOT1QgTlVMTCBkZWZhdWx0ICd2YXJjaGFyJywK ICAgICAgICBgY29sc2l6ZWAgc21hbGxpbnQoNCkgTlVMTCBkZWZhdWx0IDAsCiAgICAgICAg YHZhbGAgdGV4dCBOVUxMIENPTExBVEUgdXRmOF9nZW5lcmFsX2NpLAogICAgICAgIGBwb3Np dGlvbmAgdmFyY2hhcigxNikgTlVMTCBkZWZhdWx0ICcnLAogICAgICAgIFBSSU1BUlkgS0VZ IChgaWRgKSwKICAgICAgICBVTklRVUUgS0VZIChgbmFtZWApCiAgICApIEVOR0lORT1NeUlT QU0sIENIQVJBQ1RFUiBTRVQ9dXRmOCwgQVVUT19JTkNSRU1FTlQ9MSI7CgogICAgaWYgKCRk ZWJ1ZykgewogICAgICAgIGRtcCgkc3FsKTsKICAgIH0KICAgIGZvcmVhY2ggKCRzcWwgYXMg JHFyeSkgewogICAgICAgICRyZXQgPSBzYWZlX3F1ZXJ5KCRxcnkpOwogICAgICAgIGlmICgk cmV0PT09ZmFsc2UpIHsKICAgICAgICAgICAgJEdMT0JBTFNbJ3R4cF9lcnJfY291bnQnXSsr OwogICAgICAgICAgICBlY2hvICI8Yj4iLiRHTE9CQUxTWyd0eHBfZXJyX2NvdW50J10uIi48 L2I+ICIubXlzcWxfZXJyb3IoKS4iPGJyIC8+XG4iOwogICAgICAgICAgICBlY2hvICI8IS0t XG4gJHFyeSBcbi0tPlxuIjsKICAgICAgICB9CiAgICB9CgogICAgLy8gSGFuZGxlIHVwZ3Jh ZGVzIGZyb20gdjAuM3ggdG8gdjAuNDAuCiAgICAvLyBVcGdyYWRlIHRhYmxlIGNvbGxhdGlv biBpZiBuZWNlc3NhcnkKICAgICRyZXQgPSBnZXRSb3dzKCJTSE9XIFRBQkxFIFNUQVRVUyBX SEVSRSBuYW1lIElOICgnIi5QRlguU01EX0JJTy4iJywgJyIuUEZYLlNNRF9CSU9fTUVUQS4i JykiKTsKICAgIGlmICgkcmV0WzBdWydDb2xsYXRpb24nXSAhPSAndXRmOF9nZW5lcmFsX2Np JykgewogICAgICAgICRyZXQgPSBzYWZlX2FsdGVyKFNNRF9CSU9fTUVUQSwgJ0NPTlZFUlQg VE8gQ0hBUkFDVEVSIFNFVCB1dGY4IENPTExBVEUgdXRmOF9nZW5lcmFsX2NpJyk7CiAgICB9 CiAgICBpZiAoJHJldFsxXVsnQ29sbGF0aW9uJ10gIT0gJ3V0ZjhfZ2VuZXJhbF9jaScpIHsK ICAgICAgICAkcmV0ID0gc2FmZV9hbHRlcihTTURfQklPLCAnQ09OVkVSVCBUTyBDSEFSQUNU RVIgU0VUIHV0ZjggQ09MTEFURSB1dGY4X2dlbmVyYWxfY2knKTsKICAgIH0KCiAgICAvLyBB bHRlciB0aGUgcG9zaXRpb24gZmllbGQgZnJvbSBpbnQgdG8gdmFyY2hhciBzbyBwb3NpdGlv bmluZyBjYW4gYmUgbm9uLW51bWVyaWMKICAgICRyZXQgPSBAc2FmZV9maWVsZCgiREFUQV9U WVBFIiwgIklORk9STUFUSU9OX1NDSEVNQS5DT0xVTU5TIiwgInRhYmxlX25hbWUgPSAnIi5Q RlguU01EX0JJT19NRVRBLiInIEFORCB0YWJsZV9zY2hlbWEgPSAnIiAuICREQi0+ZGIgLiAi JyBBTkQgY29sdW1uX25hbWUgPSAncG9zaXRpb24nIik7CiAgICBpZiAoJHJldCAhPSAndmFy Y2hhcicpIHsKICAgICAgICBzYWZlX2FsdGVyKFNNRF9CSU9fTUVUQSwgIkNIQU5HRSBgcG9z aXRpb25gIGBwb3NpdGlvbmAgVkFSQ0hBUiggMTYgKSBOVUxMIERFRkFVTFQgJyciLCAkZGVi dWcpOwogICAgfQogICAgLy8gQWRkIHRoZSBjb2x0eXBlIGFuZCBjb2xzaXplIGNvbHVtbnMK ICAgICRmbGRzID0gZ2V0VGhpbmdzKCdTSE9XIENPTFVNTlMgRlJPTSBgJy5QRlguU01EX0JJ T19NRVRBLidgJyk7CiAgICBpZiAoIWluX2FycmF5KCdjb2x0eXBlJywgJGZsZHMpKSB7CiAg ICAgICAgc2FmZV9hbHRlcihTTURfQklPX01FVEEsICJBREQgYGNvbHR5cGVgIFNFVCgiLmRv UXVvdGUoam9pbigiJywnIiwgYXJyYXlfa2V5cygkc21kX2Jpb19jb2x0eXBlcykpKS4iKSBO T1QgTlVMTCBkZWZhdWx0ICcnIGFmdGVyIGBzaXplYCIsICRkZWJ1Zyk7CiAgICAgICAgc2Fm ZV9hbHRlcihTTURfQklPX01FVEEsICJBREQgYGNvbHNpemVgIFNNQUxMSU5UKDQpIE5VTEwg ZGVmYXVsdCAwIGFmdGVyIGBjb2x0eXBlYCIsICRkZWJ1Zyk7CiAgICB9CiAgICAvLyBBZGQg bXVsdGlwbGUgc2VsZWN0IGxpc3QgJiBkYXRlIGZsYXZvdXIgc3VwcG9ydCB0byB0aGUgJ3R5 cGUnIHNldCwgYW5kIHJlbmFtZSAndGV4dF9pbnB1dCcgdG8ganVzdCAndGV4dCcKICAgICR0 b0NoYW5nZSA9IHNhZmVfY29sdW1uKCdpZCcsIFNNRF9CSU9fTUVUQSwgJ3R5cGU9InRleHRf aW5wdXQiJyk7CiAgICAkZmxkID0gZ2V0Um93cygiU0hPVyBGVUxMIENPTFVNTlMgRlJPTSBg Ii5QRlguU01EX0JJT19NRVRBLiJgIExJS0UgJ3R5cGUnIik7CiAgICAkZnQgPSAkZmxkWzBd WydUeXBlJ107CiAgICBpZiAoIChzdHJwb3MoJGZ0LCAnbXVsdGlsaXN0JykgPT09IGZhbHNl KSB8fCAoc3RycG9zKCRmdCwgJ3RleHRfaW5wdXQnKSAhPT0gZmFsc2UpIHx8IChzdHJwb3Mo JGZ0LCAnbW9udGgnKSA9PT0gZmFsc2UpICkgewogICAgICAgIHNhZmVfYWx0ZXIoU01EX0JJ T19NRVRBLCAiQ0hBTkdFIGB0eXBlYCBgdHlwZWAgU0VUKCIuZG9RdW90ZShqb2luKCInLCci LCBhcnJheV9rZXlzKCRzbWRfYmlvX3R5cGVzKSkpLiIpIiwgJGRlYnVnKTsKICAgIH0KICAg IGlmICgkdG9DaGFuZ2UpIHsKICAgICAgICBzYWZlX3VwZGF0ZShTTURfQklPX01FVEEsICd0 eXBlPSJ0ZXh0IicsICJpZCBpbiAoJyIuIGpvaW4oIicsJyIsICR0b0NoYW5nZSkgLiInKSIs ICRkZWJ1Zyk7CiAgICB9CgogICAgaWYgKCRHTE9CQUxTWyd0eHBfZXJyX2NvdW50J10gPT0g MCkgewogICAgICAgICRtc2cgPSBnVHh0KCdzbWRfYmlvX3RibF9pbnN0YWxsZWQnKTsKICAg IH0gZWxzZSB7CiAgICAgICAgJG1zZyA9IGdUeHQoJ3NtZF9iaW9fdGJsX25vdF9pbnN0YWxs ZWQnKTsKICAgIH0KCiAgICBpZiAoJHNob3dwYW5lKSB7CiAgICAgICAgc21kX2Jpb19jb25m aWcoJG1zZyk7CiAgICB9Cn0KCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBEcm9w IHRhYmxlIGlmIGluIGRhdGFiYXNlCmZ1bmN0aW9uIHNtZF9iaW9fdGFibGVfcmVtb3ZlKCRz aG93cGFuZT0xKSB7CiAgICAkcmV0ID0gJG1zZyA9ICcnOwogICAgJHNxbCA9IGFycmF5KCk7 CiAgICAkR0xPQkFMU1sndHhwX2Vycl9jb3VudCddID0gMDsKICAgICRzcWxbXSA9ICJEUk9Q IFRBQkxFIElGIEVYSVNUUyAiIC5QRlguU01EX0JJTy4gIjsgIjsKICAgICRzcWxbXSA9ICJE Uk9QIFRBQkxFIElGIEVYSVNUUyAiIC5QRlguU01EX0JJT19NRVRBLiAiOyAiOwogICAgaWYo Z3BzKCdkZWJ1ZycpKSB7CiAgICAgICAgZG1wKCRzcWwpOwogICAgfQogICAgZm9yZWFjaCAo JHNxbCBhcyAkcXJ5KSB7CiAgICAgICAgJHJldCA9IHNhZmVfcXVlcnkoJHFyeSk7CiAgICAg ICAgaWYgKCRyZXQ9PT1mYWxzZSkgewogICAgICAgICAgICAkR0xPQkFMU1sndHhwX2Vycl9j b3VudCddKys7CiAgICAgICAgICAgIGVjaG8gIjxiPiIuJEdMT0JBTFNbJ3R4cF9lcnJfY291 bnQnXS4iLjwvYj4gIi5teXNxbF9lcnJvcigpLiI8YnIgLz5cbiI7CiAgICAgICAgICAgIGVj aG8gIjwhLS1cbiAkcXJ5IFxuLS0+XG4iOwogICAgICAgIH0KICAgIH0KICAgIGlmICgkR0xP QkFMU1sndHhwX2Vycl9jb3VudCddID09IDApIHsKICAgICAgICAkbXNnID0gZ1R4dCgnc21k X2Jpb190YmxfcmVtb3ZlZCcpOwogICAgfSBlbHNlIHsKICAgICAgICAkbXNnID0gZ1R4dCgn c21kX2Jpb190Ymxfbm90X3JlbW92ZWQnKTsKICAgIH0KCiAgICBpZiAoJHNob3dwYW5lKSB7 CiAgICAgICAgc21kX2Jpb19jb25maWcoJG1zZyk7CiAgICB9Cn0KCi8vICoqKioqKioqKioq KioqKioqKioqKioqKgovLyBQVUJMSUMtU0lERSBUQUdTCi8vIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQovLyBXcmFwcGVyIHRvIHBlcm1pdCBiaW8gaW5mbyB0byBiZSBkaXNwbGF5ZWQg Zm9yIG11bHRpcGxlIGF1dGhvcnMKZnVuY3Rpb24gc21kX2Jpb19hdXRob3IoJGF0dHMsICR0 aGluZyA9IG51bGwpIHsKICAgIGdsb2JhbCAkc21kX2Jpb19hdXRob3IsICRzbWRfYmlvX21l dGFfZGF0YTsKCiAgICBleHRyYWN0KGxBdHRzKGFycmF5KAogICAgICAgICdhdXRob3InICAg ICAgPT4gJycsCiAgICAgICAgJ2Zvcm0nICAgICAgICA9PiAnJywKICAgICAgICAnc29ydCcg ICAgICAgID0+ICdSZWFsTmFtZSBhc2MnLAogICAgICAgICd3cmFwdGFnJyAgICAgPT4gJycs CiAgICAgICAgJ2JyZWFrJyAgICAgICA9PiAnJywKICAgICAgICAnYnJlYWtjbGFzcycgID0+ ICcnLAogICAgICAgICdjbGFzcycgICAgICAgPT4gJycsCiAgICAgICAgJ2xhYmVsJyAgICAg ICA9PiAnJywKICAgICAgICAnbGFiZWx0YWcnICAgID0+ICcnLAogICAgICAgICdhdXRvX2Rl dGVjdCcgPT4gJ3Byb2ZpbGUsIGxpc3QsIGFydGljbGUsIGltYWdlLCBmaWxlLCBsaW5rJywK ICAgICksICRhdHRzKSk7CgogICAgJGF1dGhvciA9IHNtZF9iaW9fZmluZF9hdXRob3IoJGF1 dGhvciwgJGF1dG9fZGV0ZWN0KTsKICAgICRhdXRob3IgPSBkb19saXN0KCRhdXRob3IpOwog ICAgJGF1dGhvcnMgPSBhcnJheSgpOwogICAgJHRoaW5nID0gKGVtcHR5KCRmb3JtKSkgPyAk dGhpbmcgOiBmZXRjaF9mb3JtKCRmb3JtKTsKCiAgICAvLyBTZXQgdXAgYW55IHNvcnRpbmcg Y2xhdXNlCiAgICBpZiAoJHNvcnQgIT0gJycpIHsKICAgICAgICAkc29ydCA9IGRvX2xpc3Qo JHNvcnQpOwogICAgICAgICRzb3J0b3V0ID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoICgk c29ydCBhcyAkc2l0ZW1zKSB7CiAgICAgICAgICAgICRzb3J0Yml0cyA9IGRvX2xpc3QoJHNp dGVtcywgJyAnKTsKICAgICAgICAgICAgJHNvcnRfY29sID0gJHNvcnRiaXRzWzBdOwogICAg ICAgICAgICAkc29ydF9vcmQgPSAoaXNzZXQoJHNvcnRiaXRzWzFdKSAmJiBpbl9hcnJheSgk c29ydGJpdHNbMV0sIGFycmF5KCdhc2MnLCAnZGVzYycpKSkgPyAkc29ydGJpdHNbMV0gOiAn YXNjJzsKICAgICAgICAgICAgaWYgKCRzb3J0X2NvbCkgewogICAgICAgICAgICAgICAgJHNv cnRvdXRbXSA9ICdgJyAuICRzb3J0X2NvbCAuICdgICcgLiAkc29ydF9vcmQ7CiAgICAgICAg ICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCRzb3J0b3V0KSB7CiAgICAgICAgICAgICRz b3J0ID0gJyBPUkRFUiBCWSAnLmpvaW4oJywnLCAkc29ydG91dCk7CiAgICAgICAgfQogICAg fQoKICAgIC8vIEV4cGFuZCBhbnkgcHJpdiBsZXZlbHMKICAgIGZvcmVhY2ggKCRhdXRob3Ig YXMgJHVzZXIpIHsKICAgICAgICBpZiAoc3RycG9zKHN0cnRvbG93ZXIoJHVzZXIpLCAic21k X3ByaXZzIikgPT09IDApIHsKICAgICAgICAgICAgJGFwcml2cyA9IGV4cGxvZGUoJzonLCAk dXNlcik7CiAgICAgICAgICAgIGFycmF5X3NoaWZ0KCRhcHJpdnMpOyAvLyBSZW1vdmUgc21k X3ByaXZzIHRva2VuIGZyb20gdGhlIGFycmF5CiAgICAgICAgICAgICRyb3dzID0gc2FmZV9x dWVyeSgnU0VMRUNUIHR4cHUubmFtZSBGUk9NICcgLiBQRlggLiAndHhwX3VzZXJzIEFTIHR4 cHUgTEVGVCBKT0lOICcgLiBQRlguU01EX0JJTyAuICcgQVMgc21kYiBPTiB0eHB1Lm5hbWUg PSBzbWRiLnVzZXJfcmVmIFdIRVJFIHByaXZzIGluICgnIC4gZG9RdW90ZShqb2luKCInLCci LCAkYXByaXZzKSkgLiAnKScuJHNvcnQpOwogICAgICAgICAgICBpZiAoJHJvd3MpIHsKICAg ICAgICAgICAgICAgIHdoaWxlICgkYSA9IG5leHRSb3coJHJvd3MpKSB7CiAgICAgICAgICAg ICAgICAgICAgJGF1dGhvcnNbXSA9ICRhWyduYW1lJ107CiAgICAgICAgICAgICAgICB9CiAg ICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgaWYgKHN0cnBvcyhzdHJ0b2xvd2VyKCR1c2Vy KSwgInNtZF9hbGwiKSA9PT0gMCkgewogICAgICAgICAgICAkcm93cyA9IHNhZmVfcXVlcnko J1NFTEVDVCB0eHB1Lm5hbWUgRlJPTSAnIC4gUEZYIC4gJ3R4cF91c2VycyBBUyB0eHB1IExF RlQgSk9JTiAnIC4gUEZYLlNNRF9CSU8gLiAnIEFTIHNtZGIgT04gdHhwdS5uYW1lID0gc21k Yi51c2VyX3JlZiBXSEVSRSAxPTEnLiRzb3J0KTsKICAgICAgICAgICAgaWYgKCRyb3dzKSB7 CiAgICAgICAgICAgICAgICB3aGlsZSAoJGEgPSBuZXh0Um93KCRyb3dzKSkgewogICAgICAg ICAgICAgICAgICAgICRhdXRob3JzW10gPSAkYVsnbmFtZSddOwogICAgICAgICAgICAgICAg fQogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGF1dGhvcnNb XSA9ICR1c2VyOwogICAgICAgIH0KICAgIH0KCiAgICAvLyBQYXJzZSBjb250ZW50IGZvciBl YWNoIGF1dGhvcjogaW5qZWN0IGN1cnJlbnQgYXV0aG9yIGludG8gZ2xvYmFsCiAgICAkb3V0 ID0gYXJyYXkoKTsKICAgICRhdXRob3JfY291bnQgPSBjb3VudCgkYXV0aG9ycykgLSAxOwog ICAgZm9yZWFjaCAoJGF1dGhvcnMgYXMgJGlkeCA9PiAkc21kX2Jpb19hdXRob3IpIHsKICAg ICAgICAkc21kX2Jpb19tZXRhX2RhdGFbJ2F1dGhvciddWydmaXJzdCddID0gKCRpZHggPT09 IDApOwogICAgICAgICRzbWRfYmlvX21ldGFfZGF0YVsnYXV0aG9yJ11bJ2xhc3QnXSA9ICgk aWR4ID09PSAkYXV0aG9yX2NvdW50KTsKICAgICAgICAkdG9QYXJzZSA9IChlbXB0eSgkdGhp bmcpKSA/ICRzbWRfYmlvX2F1dGhvciA6ICR0aGluZzsKICAgICAgICAkb3V0W10gPSBwYXJz ZSgkdG9QYXJzZSk7CiAgICB9CgogICAgcmV0dXJuIGRvTGFiZWwoJGxhYmVsLCAkbGFiZWx0 YWcpLmRvV3JhcCgkb3V0LCAkd3JhcHRhZywgJGJyZWFrLCAkY2xhc3MsICRicmVha2NsYXNz KTsKfQoKLy8gRGlzcGxheSBiaW9ncmFwaGljYWwgZmllbGQgZGF0YSBmcm9tIGEgZ2l2ZW4g dXNlcidzIHByb2ZpbGUKZnVuY3Rpb24gc21kX2Jpb19pbmZvKCRhdHRzLCAkdGhpbmcgPSBu dWxsKSB7CiAgICBnbG9iYWwgJHNtZF9iaW9fZGF0YSwgJHNtZF9iaW9fb3B0aW9uX2RhdGE7 CgogICAgLy8gRGF0YSBjYWNoZQogICAgc3RhdGljICRiaW9faW5mbyA9IGFycmF5KCk7CiAg ICBzdGF0aWMgJG1ldGEgPSBhcnJheSgpOwogICAgc3RhdGljICRjbWV0YSA9IGFycmF5KCk7 CiAgICBzdGF0aWMgJG1ldGFjb2xzID0gYXJyYXkoKTsKCiAgICBleHRyYWN0KGxBdHRzKGFy cmF5KAogICAgICAgICdhdXRob3InICAgICAgPT4gJycsIC8vIERlcHJlY2F0ZWQ6IHVzZSBz bWRfYmlvX2F1dGhvciB0YWcgYXMgYSB3cmFwcGVyIGluc3RlYWQKICAgICAgICAnZmllbGRz JyAgICAgID0+ICdTTURfQUxMJywKICAgICAgICAnaXRlbXMnICAgICAgID0+ICdTTURfQUxM JywgLy8gRGVwcmVjYXRlZDogdXNlIGZpZWxkcyBpbnN0ZWFkCiAgICAgICAgJ2V4Y2x1ZGUn ICAgICA9PiAnJywKICAgICAgICAnZm9ybScgICAgICAgID0+ICcnLAogICAgICAgICd3cmFw dGFnJyAgICAgPT4gJycsCiAgICAgICAgJ2JyZWFrJyAgICAgICA9PiAnJywKICAgICAgICAn Y2xhc3MnICAgICAgID0+ICcnLAogICAgICAgICdsYWJlbCcgICAgICAgPT4gJzEnLAogICAg ICAgICdsYWJlbHRhZycgICAgPT4gJycsCiAgICAgICAgJ2xhYmVsY2xhc3MnICA9PiAnU01E X0RGTFQnLCAvLyBEZXByZWNhdGVkCiAgICAgICAgJ2l0ZW13cmFwdGFnJyA9PiAnJywgLy8g RGVwcmVjYXRlZDogdXNlIGJyZWFrCiAgICAgICAgJ2l0ZW1jbGFzcycgICA9PiAnU01EX0RG TFQnLCAvLyBEZXByZWNhdGVkOiB1c2UgYnJlYWtjbGFzcwogICAgICAgICdicmVha2NsYXNz JyAgPT4gJ1NNRF9ERkxUJywKICAgICAgICAnc2hvd19lbXB0eScgID0+IDAsCiAgICAgICAg J3ByZWZpeCcgICAgICA9PiAnc21kX2Jpb18nLCAvLyBPbmx5IGZvciByZXBsYWNlbWVudCB2 YXJpYWJsZXMKICAgICAgICAnYXV0b19kZXRlY3QnID0+ICdiaW90YWcsIGxpc3QsIGFydGlj bGUsIGltYWdlLCBmaWxlLCBsaW5rJywKICAgICAgICAnZGVidWcnICAgICAgID0+IDAsCiAg ICApLCAkYXR0cykpOwoKICAgIGlmIChpc3NldCgkYXR0c1snYXV0aG9yJ10pKSB7CiAgICAg ICAgdHJpZ2dlcl9lcnJvcihnVHh0KCdkZXByZWNhdGVkX2F0dHJpYnV0ZScsIGFycmF5KCd7 bmFtZX0nID0+ICdhdXRob3InKSkgLiAnLiBVc2UgdGhlIHNtZF9iaW9fYXV0aG9yIHRhZyBh cyBhIHdyYXBwZXIgaW5zdGVhZC4nLCBFX1VTRVJfTk9USUNFKTsKICAgICAgICB1bnNldCgk YXV0aG9yKTsKICAgIH0KICAgIGlmIChpc3NldCgkYXR0c1snaXRlbXMnXSkpIHsKICAgICAg ICB0cmlnZ2VyX2Vycm9yKGdUeHQoJ2RlcHJlY2F0ZWRfYXR0cmlidXRlJywgYXJyYXkoJ3tu YW1lfScgPT4gJ2l0ZW1zJykpIC4gJy4gVXNlIGZpZWxkcyBpbnN0ZWFkLicsIEVfVVNFUl9O T1RJQ0UpOwogICAgICAgICRmaWVsZHMgPSAkaXRlbXM7CiAgICAgICAgdW5zZXQoJGl0ZW1z KTsKICAgIH0KICAgIGlmIChpc3NldCgkYXR0c1snaXRlbXdyYXB0YWcnXSkpIHsKICAgICAg ICB0cmlnZ2VyX2Vycm9yKGdUeHQoJ2RlcHJlY2F0ZWRfYXR0cmlidXRlJywgYXJyYXkoJ3tu YW1lfScgPT4gJ2l0ZW13cmFwdGFnJykpIC4gJy4gVXNlIGJyZWFrIGluc3RlYWQuJywgRV9V U0VSX05PVElDRSk7CiAgICAgICAgJGJyZWFrID0gJGl0ZW13cmFwdGFnOwogICAgICAgIHVu c2V0KCRpdGVtd3JhcHRhZyk7CiAgICB9CiAgICBpZiAoaXNzZXQoJGF0dHNbJ2l0ZW1jbGFz cyddKSkgewogICAgICAgIHRyaWdnZXJfZXJyb3IoZ1R4dCgnZGVwcmVjYXRlZF9hdHRyaWJ1 dGUnLCBhcnJheSgne25hbWV9JyA9PiAnaXRlbWNsYXNzJykpIC4gJy4gVXNlIGJyZWFrY2xh c3MgaW5zdGVhZC4nLCBFX1VTRVJfTk9USUNFKTsKICAgICAgICAkYnJlYWtjbGFzcyA9ICRp dGVtY2xhc3M7CiAgICAgICAgdW5zZXQoJGl0ZW1jbGFzcyk7CiAgICB9CiAgICBpZiAoaXNz ZXQoJGF0dHNbJ2xhYmVsY2xhc3MnXSkpIHsKICAgICAgICB0cmlnZ2VyX2Vycm9yKGdUeHQo J2RlcHJlY2F0ZWRfYXR0cmlidXRlJywgYXJyYXkoJ3tuYW1lfScgPT4gJ2xhYmVsY2xhc3Mn KSksIEVfVVNFUl9OT1RJQ0UpOwogICAgICAgIHVuc2V0KCRsYWJlbGNsYXNzKTsKICAgIH0K CiAgICAkYXV0aG9yID0gc21kX2Jpb19maW5kX2F1dGhvcignJywgJGF1dG9fZGV0ZWN0KTsK CiAgICAkdGhpbmcgPSAoZW1wdHkoJGZvcm0pKSA/ICR0aGluZyA6IGZldGNoX2Zvcm0oJGZv cm0pOwogICAgJHNtZF9iaW9fZGF0YSA9ICRzbWRfYmlvX29wdGlvbl9kYXRhID0gYXJyYXko KTsKICAgICRiaW9fdHlwZXMgPSBhcnJheV9rZXlzKHNtZF9iaW9fZ2V0X3R5cGVzKCkpOwoK ICAgICRmaWVsZHMgPSBkb19saXN0KCRmaWVsZHMpOwogICAgJGV4Y2x1ZGUgPSBkb19saXN0 KCRleGNsdWRlKTsKICAgICRmaW5hbCA9ICcnOwoKICAgICRjb3JlQ29scyA9IHNtZF9iaW9f Y29yZV9jb2xzKCk7CiAgICAkbGlzdF90eXBlcyA9IGFycmF5KCdjaGVja2JveCcsICdyYWRp bycsICd5ZXNub3JhZGlvJywgJ2xpc3QnLCAnbXVsdGlsaXN0Jyk7CiAgICAkbW1fdHlwZXMg PSBhcnJheSgnbnVtYmVyJywgJ3JhbmdlJyk7CgogICAgaWYgKCRhdXRob3IpIHsKICAgICAg ICAkbWV0YSA9IChlbXB0eSgkbWV0YSkpID8gc2FmZV9yb3dzKCcqJywgU01EX0JJT19NRVRB LCAnMT0xJykgOiAkbWV0YTsKICAgICAgICAkY21ldGEgPSAoZW1wdHkoJGNtZXRhKSkgPyBz YWZlX3Nob3coJ2NvbHVtbnMnLCAndHhwX3VzZXJzJykgOiAkY21ldGE7CiAgICAgICAgJG1l dGFjb2xzID0gKGVtcHR5KCRtZXRhY29scykpID8gc2FmZV9jb2x1bW4oJ25hbWUnLCBTTURf QklPX01FVEEsICcxPTEnKSA6ICRtZXRhY29sczsKICAgICAgICAkbnVtID0gY291bnQoJG1l dGEpOwoKICAgICAgICBmb3JlYWNoKCRjbWV0YSBhcyAkaW5mbykgewogICAgICAgICAgICBp ZiAoIWluX2FycmF5KCRpbmZvWydGaWVsZCddLCAkY29yZUNvbHMpKSBjb250aW51ZTsKICAg ICAgICAgICAgJG1ldGFbJG51bV1bJ25hbWUnXSA9ICRpbmZvWydGaWVsZCddOwogICAgICAg ICAgICAkdEZpZWxkID0gam9pbignJywgYXJyYXlfa2V5cygkY29yZUNvbHMsICRpbmZvWydG aWVsZCddKSk7CiAgICAgICAgICAgICRtZXRhWyRudW1dWyd0aXRsZSddID0gKChnVHh0KCR0 RmllbGQpID09ICR0RmllbGQpID8gZ1R4dCgnc21kX2Jpb18nLiR0RmllbGQpIDogZ1R4dCgk dEZpZWxkKSk7CiAgICAgICAgICAgICRsZW5ndGggPSAoKCRvZmYgPSBzdHJwb3MoJGluZm9b J1R5cGUnXSwgJygnKSkgIT09IGZhbHNlKSA/ICRvZmYgOiBzdHJsZW4oJGluZm9bJ1R5cGUn XSk7IC8vIEZpbmQgdGhlIGZpcnN0IG9wZW4gYnJhY2tldCBvciBlbmQgb2Ygc3RyaW5nCiAg ICAgICAgICAgICRjbXR5cGUgPSBzdWJzdHIoJGluZm9bJ1R5cGUnXSwgMCwgJGxlbmd0aCk7 CiAgICAgICAgICAgICRjbXR5cGUgPSBpbl9hcnJheSgkY210eXBlLCAkYmlvX3R5cGVzKT8g JGNtdHlwZSA6ICd0ZXh0JzsKICAgICAgICAgICAgJG1ldGFbJG51bV1bJ3R5cGUnXSA9ICRj bXR5cGU7CiAgICAgICAgICAgICRudW0rKzsKICAgICAgICB9CiAgICAgICAgaWYgKCRkZWJ1 ZyA+IDEpIHsKICAgICAgICAgICAgZWNobyAnKysgTUVUQSBEQVRBICsrJzsKICAgICAgICAg ICAgZG1wKCRtZXRhKTsKICAgICAgICB9CgogICAgICAgIC8vIEV4Y2x1c2lvbnMgb3ZlcnJp ZGUgZ2l2ZW4gZmllbGRzCiAgICAgICAgaWYgKCRleGNsdWRlWzBdICE9ICcnIHx8IGluX2Fy cmF5KCdTTURfQUxMJywgJGZpZWxkcykpIHsKICAgICAgICAgICAgJGZpZWxkcyA9ICRtZXRh Y29sczsKICAgICAgICAgICAgJGZpZWxkcyA9IGFycmF5X21lcmdlKCRmaWVsZHMsICRjb3Jl Q29scyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJGJpb19pbmZvWyRhdXRob3Jd KSkgewogICAgICAgICAgICAkY2JpbyA9ICRiaW9faW5mb1skYXV0aG9yXVsnY2JpbyddOwog ICAgICAgICAgICAkZWJpbyA9ICRiaW9faW5mb1skYXV0aG9yXVsnZWJpbyddOwogICAgICAg IH0gZWxzZSB7CiAgICAgICAgICAgICRjYmlvID0gJGJpb19pbmZvWyRhdXRob3JdWydjYmlv J10gPSBzYWZlX3JvdygnKicsICd0eHBfdXNlcnMnLCAibmFtZT0nIi5kb1NsYXNoKCRhdXRo b3IpLiInIik7CiAgICAgICAgICAgICRlYmlvID0gJGJpb19pbmZvWyRhdXRob3JdWydlYmlv J10gPSBzYWZlX3JvdygnKicsIFNNRF9CSU8sICJ1c2VyX3JlZj0nIi5kb1NsYXNoKCRhdXRo b3IpLiInIik7CiAgICAgICAgfQoKICAgICAgICAkcmVwbGFjZW1lbnRzID0gJG91dCA9ICR0 b1BhcnNlID0gYXJyYXkoKTsKICAgICAgICAkaXNTaW5nbGUgPSAoJHRoaW5nID09PSBudWxs KSA/IHRydWUgOiBmYWxzZTsKICAgICAgICAkbnVtRmllbGRzID0gY291bnQoJGZpZWxkcyk7 CgogICAgICAgIGZvcmVhY2ggKCRmaWVsZHMgYXMgJGlyZWYgPT4gJHdoYXRub3QpIHsKICAg ICAgICAgICAgJGlkeCA9IC0xOwogICAgICAgICAgICBpZiAoaW5fYXJyYXkoJHdoYXRub3Qs ICRleGNsdWRlKSkgY29udGludWU7CgogICAgICAgICAgICAvLyBGaW5kIHRoZSBtZXRhIHJv dwogICAgICAgICAgICBmb3JlYWNoICgkbWV0YSBhcyAkbnVtID0+ICRkYXRhKSB7CiAgICAg ICAgICAgICAgICBpZiAoJGRhdGFbJ25hbWUnXSA9PSAkd2hhdG5vdCkgewogICAgICAgICAg ICAgICAgICAgICRpZHggPSAkbnVtOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg ICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJGlkeCA+IC0x KSB7CiAgICAgICAgICAgICAgICBpZiAoaW5fYXJyYXkoJHdoYXRub3QsICRjb3JlQ29scykp IHsKICAgICAgICAgICAgICAgICAgICAkZmllbGQgPSBpc3NldCgkY2Jpb1skd2hhdG5vdF0p ID8gJGNiaW9bJHdoYXRub3RdIDogJyc7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAg ICAgICAgICAgICAgICAgICRmaWVsZCA9IGlzc2V0KCRlYmlvWyR3aGF0bm90XSkgPyAkZWJp b1skd2hhdG5vdF0gOiAnJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAk dGhlTmFtZSA9ICRtZXRhWyRpZHhdWyduYW1lJ107CiAgICAgICAgICAgICAgICAkdGhlVGl0 bGUgPSAkbWV0YVskaWR4XVsndGl0bGUnXTsKICAgICAgICAgICAgICAgICRwcmVmaXhlZE5h bWUgPSAkcHJlZml4LiR0aGVOYW1lOwogICAgICAgICAgICAgICAgJGZpeGVkTmFtZSA9ICdz bWRfYmlvXycuJHRoZU5hbWU7IC8vIFVzZWQgZm9yIHdpZGdldCBuYW1lcyBzbyB3ZSBrbm93 IHRoZSBpbmRpY2VzIGluIHRoZSAkX1BPU1QgYXJyYXkKICAgICAgICAgICAgICAgICR0aGVD bGFzcyA9ICgkYnJlYWtjbGFzcz09J1NNRF9ERkxUJykgPyAkcHJlZml4ZWROYW1lIDogKCgk YnJlYWtjbGFzcykgPyAkYnJlYWtjbGFzcyA6ICcnKTsKICAgICAgICAgICAgICAgICRyZXBs YWNlbWVudHNbJ3snLiRwcmVmaXhlZE5hbWUuJ19uYW1lfSddID0gJHRoZU5hbWU7CiAgICAg ICAgICAgICAgICAkcmVwbGFjZW1lbnRzWyd7Jy4kcHJlZml4ZWROYW1lLidfdGl0bGV9J10g PSAkdGhlVGl0bGU7CiAgICAgICAgICAgICAgICAkcmVwbGFjZW1lbnRzWyd7Jy4kcHJlZml4 ZWROYW1lLidfY2xhc3N9J10gPSAkdGhlQ2xhc3M7CiAgICAgICAgICAgICAgICAkcmVwbGFj ZW1lbnRzWyd7Jy4kcHJlZml4ZWROYW1lLidfdHlwZX0nXSA9ICRtZXRhWyRpZHhdWyd0eXBl J107CiAgICAgICAgICAgICAgICAkc21kX2Jpb19kYXRhWyR0aGVOYW1lXVsnbmFtZSddID0g JHRoZU5hbWU7CiAgICAgICAgICAgICAgICAkc21kX2Jpb19kYXRhWyR0aGVOYW1lXVsndGl0 bGUnXSA9ICR0aGVUaXRsZTsKICAgICAgICAgICAgICAgICRzbWRfYmlvX2RhdGFbJHRoZU5h bWVdWydjbGFzcyddID0gJHRoZUNsYXNzOwogICAgICAgICAgICAgICAgJHNtZF9iaW9fZGF0 YVskdGhlTmFtZV1bJ3R5cGUnXSA9ICRtZXRhWyRpZHhdWyd0eXBlJ107CiAgICAgICAgICAg ICAgICBpZiAoIWluX2FycmF5KCRtZXRhWyRpZHhdWyd0eXBlJ10sICRsaXN0X3R5cGVzKSAm JiBpc3NldCgkbWV0YVskaWR4XVsndmFsJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgJHNt ZF9iaW9fZGF0YVskdGhlTmFtZV1bJ2RlZmF1bHQnXSA9ICRtZXRhWyRpZHhdWyd2YWwnXTsK ICAgICAgICAgICAgICAgICAgICAkcmVwbGFjZW1lbnRzWyd7Jy4kcHJlZml4ZWROYW1lLidf ZGVmYXVsdH0nXSA9ICRtZXRhWyRpZHhdWyd2YWwnXTsKICAgICAgICAgICAgICAgIH0KICAg ICAgICAgICAgICAgICR3aWRnZXQgPSAnJzsKCiAgICAgICAgICAgICAgICBpZiAoJGZpZWxk IHx8ICRzaG93X2VtcHR5KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGluX2FycmF5KCRt ZXRhWyRpZHhdWyd0eXBlJ10sICRsaXN0X3R5cGVzKSkgewogICAgICAgICAgICAgICAgICAg ICAgICAkZmllbGQgPSBkb19saXN0KCRmaWVsZCk7CiAgICAgICAgICAgICAgICAgICAgICAg ICRmaWVsZCA9IGpvaW4oJywgJywkZmllbGQpOwogICAgICAgICAgICAgICAgICAgIH0KCiAg ICAgICAgICAgICAgICAgICAgJGZpZWxkQ29udGVudCA9ICgkbWV0YVskaWR4XVsndHlwZSdd ID09ICd0ZXh0YXJlYScpID8gbmwyYnIoJGZpZWxkKSA6ICRmaWVsZDsKICAgICAgICAgICAg ICAgICAgICAkcmVwbGFjZW1lbnRzWyd7Jy4kcHJlZml4ZWROYW1lLid9J10gPSAkZmllbGRD b250ZW50OwogICAgICAgICAgICAgICAgICAgICRzbWRfYmlvX2RhdGFbJHRoZU5hbWVdWyd2 YWx1ZSddID0gJGZpZWxkQ29udGVudDsKCiAgICAgICAgICAgICAgICAgICAgLy8gRm9yIGJh Y2t3YXJkcyBjb21wYXRpYmlsaXR5KGlzaCkgd2l0aCB2MC4zeAogICAgICAgICAgICAgICAg ICAgIGlmICgkbnVtRmllbGRzID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHJl cGxhY2VtZW50c1sneycuJHByZWZpeC4naW5mb19pdGVtfSddID0gJGZpZWxkQ29udGVudDsg Ly8gRGVwcmVjYXRlZCwgdXNlIGluZm9fdmFsdWUgaW5zdGVhZAogICAgICAgICAgICAgICAg ICAgICAgICAkcmVwbGFjZW1lbnRzWyd7Jy4kcHJlZml4LidpbmZvX3ZhbHVlfSddID0gJGZp ZWxkQ29udGVudDsKICAgICAgICAgICAgICAgICAgICAgICAgJHJlcGxhY2VtZW50c1sneycu JHByZWZpeC4naW5mb19uYW1lfSddID0gJHRoZU5hbWU7CiAgICAgICAgICAgICAgICAgICAg ICAgICRyZXBsYWNlbWVudHNbJ3snLiRwcmVmaXguJ2luZm9fdGl0bGV9J10gPSAkdGhlVGl0 bGU7CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXBsYWNlbWVudHNbJ3snLiRwcmVmaXgu J2luZm9faXRlbWNsYXNzfSddID0gJHRoZUNsYXNzOyAvLyBEZXByZWNhdGVkOiB1c2UgaW5m b19jbGFzcyBpbnN0ZWFkCiAgICAgICAgICAgICAgICAgICAgICAgICRyZXBsYWNlbWVudHNb J3snLiRwcmVmaXguJ2luZm9fY2xhc3N9J10gPSAkdGhlQ2xhc3M7CiAgICAgICAgICAgICAg ICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoaW5fYXJyYXkoJG1ldGFbJGlkeF1b J3R5cGUnXSwgJGxpc3RfdHlwZXMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjaG9z ZW5zID0gZG9fbGlzdCgkZmllbGQpOwogICAgICAgICAgICAgICAgICAgICAgICAkbnYgPSBz bWRfYmlvX3NwbGl0dmFsKCRtZXRhWyRpZHhdWyd2YWwnXSk7CiAgICAgICAgICAgICAgICAg ICAgICAgIGxpc3QoJG52LCAkZGZsdCkgPSBzbWRfYmlvX2dldF9kZWZhdWx0KCRudiwgJGZp ZWxkKTsKICAgICAgICAgICAgICAgICAgICAgICAgJGRmbHRzID0gZG9fbGlzdCgkZGZsdCk7 CiAgICAgICAgICAgICAgICAgICAgICAgICRsaXN0Y3RyPTE7CiAgICAgICAgICAgICAgICAg ICAgICAgICRjaG9zZW5jdHI9MDsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCgk bnYgYXMgJGxpc3RpdGVtID0+ICRsaXN0bGFiZWwpIHsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICRyZXBsYWNlbWVudHNbJ3snLiRwcmVmaXhlZE5hbWUuJ19vcHRpb25fJy4kbGlz dGN0ci4nfSddID0gJGxpc3RpdGVtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJl cGxhY2VtZW50c1sneycuJHByZWZpeGVkTmFtZS4nX3RpdGxlXycuJGxpc3RjdHIuJ30nXSA9 ICRsaXN0bGFiZWw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc21kX2Jpb19kYXRh WyR0aGVOYW1lXVsnb3B0aW9uXycuJGxpc3RjdHJdID0gJGxpc3RpdGVtOwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgJHNtZF9iaW9fZGF0YVskdGhlTmFtZV1bJ3RpdGxlXycuJGxp c3RjdHJdID0gJGxpc3RsYWJlbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChp bl9hcnJheSgkbGlzdGl0ZW0sICRjaG9zZW5zKSkgewogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICRjaG9zZW5jdHIrKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAkcmVwbGFjZW1lbnRzWyd7Jy4kcHJlZml4ZWROYW1lLidfY2hvc2VuX29wdGlvbl8nLiRj aG9zZW5jdHIuJ30nXSA9ICRsaXN0aXRlbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAkcmVwbGFjZW1lbnRzWyd7Jy4kcHJlZml4ZWROYW1lLidfY2hvc2VuX3RpdGxlXycu JGNob3NlbmN0ci4nfSddID0gJGxpc3RsYWJlbDsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAkc21kX2Jpb19kYXRhWyR0aGVOYW1lXVsnY2hvc2VuX29wdGlvbl8nLiRjaG9z ZW5jdHJdID0gJGxpc3RpdGVtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRz bWRfYmlvX2RhdGFbJHRoZU5hbWVdWydjaG9zZW5fdGl0bGVfJy4kY2hvc2VuY3RyXSA9ICRs aXN0bGFiZWw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAkbGlzdGN0cisrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAg ICAgICAgICAgICAgICAgICAgICAgICRkZmx0Y3RyID0gMTsKICAgICAgICAgICAgICAgICAg ICAgICAgZm9yZWFjaCgkZGZsdHMgYXMgJGRmbHRpdGVtKSB7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAkcmVwbGFjZW1lbnRzWyd7Jy4kcHJlZml4ZWROYW1lLidfZGVmYXVsdF9v cHRpb25fJy4kZGZsdGN0ci4nfSddID0gJGRmbHRpdGVtOwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgJHNtZF9iaW9fZGF0YVskdGhlTmFtZV1bJ2RlZmF1bHRfb3B0aW9uXycuJGRm bHRjdHJdID0gJGRmbHRpdGVtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRmbHRj dHIrKzsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAg ICAgLy8gVE9ETzogbWF5YmUgaGFuZC1jb2RlIGFsbCBpbnB1dCB0eXBlcyBzbyB0aGV5IGNh biBoYXZlIGNsYXNzZXMgYWRkZWQKICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICgk bWV0YVskaWR4XVsndHlwZSddKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNl ICdjaGVja2JveCc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNpdGVtcyA9 IGFycmF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJG52 IGFzICRpZHggPT4gJGxibCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAkY2l0ZW1zW10gPSBjaGVja2JveCgkZml4ZWROYW1lLCAnY2JfJy4kaWR4LCAoaW5fYXJy YXkoJGlkeCwgJGRmbHRzKSA/ICcxJyA6ICcwJykpIC4gJGxibDsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHdp ZGdldCA9IGpvaW4obiwgJGNpdGVtcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBi cmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3llc25vcmFkaW8nOgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aWRnZXQgPSB5ZXNub1JhZGlvKCRm aXhlZE5hbWUsICRkZmx0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncmFkaW8nOgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICR3aWRnZXQgPSByYWRpb1NldCgkbnYsICRmaXhlZE5hbWUs ICRkZmx0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgY2FzZSAnbGlzdCc6CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJHdpZGdldCA9IHNlbGVjdElucHV0KCRmaXhlZE5hbWUsICRudiwgJGRmbHQs IGZhbHNlLCAnJywgJHByZWZpeGVkTmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ211bHRpbGlzdCc6 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG1pdGVtcyA9IGFycmF5KCk7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG1pdGVtc1tdID0gJzxzZWxlY3QgbmFt ZT0iJy4kZml4ZWROYW1lLiciIGNsYXNzPSJsaXN0IG11bHRpcGxlICcuJHRoZUNsYXNzLici IG11bHRpcGxlPSJtdWx0aXBsZSI+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmb3JlYWNoICgkbnYgYXMgJGlkeCA9PiAkbGJsKSB7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC8vIE5vdCB1c2luZyBzZWxlY3RJbnB1dCgpIGJlY2F1c2UgaXQg ZG9lc24ndCBzdXBwb3J0IG11bHRpcGxlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAkbWl0ZW1zW10gPSAnPG9wdGlvbiB2YWx1ZT0ibXNfJy4kaWR4LiciICcuKChp bl9hcnJheSgkaWR4LCAkZGZsdHMpKSA/ICcgc2VsZWN0ZWQ9InNlbGVjdGVkIicgOiAnJykg LiAnPicgLiAkbGJsIC4gJzwvb3B0aW9uPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRtaXRlbXNbXSA9ICc8 L3NlbGVjdD4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aWRnZXQgPSBq b2luKG4sICRtaXRlbXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg ICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICRyZXBs YWNlbWVudHNbJ3snLiRwcmVmaXhlZE5hbWUuJ19vcHRpb25fY291bnR9J10gPSAkbGlzdGN0 ci0xOwogICAgICAgICAgICAgICAgICAgICAgICAkcmVwbGFjZW1lbnRzWyd7Jy4kcHJlZml4 ZWROYW1lLidfY2hvc2VuX2NvdW50fSddID0gJGNob3NlbmN0cjsKICAgICAgICAgICAgICAg ICAgICAgICAgJHJlcGxhY2VtZW50c1sneycuJHByZWZpeGVkTmFtZS4nX2RlZmF1bHRfY291 bnR9J10gPSAkZGZsdGN0ci0xOwogICAgICAgICAgICAgICAgICAgICAgICAkc21kX2Jpb19k YXRhWyR0aGVOYW1lXVsnb3B0aW9uX2NvdW50J10gPSAkbGlzdGN0ci0xOwogICAgICAgICAg ICAgICAgICAgICAgICAkc21kX2Jpb19kYXRhWyR0aGVOYW1lXVsnY2hvc2VuX2NvdW50J10g PSAkY2hvc2VuY3RyOwogICAgICAgICAgICAgICAgICAgICAgICAkc21kX2Jpb19kYXRhWyR0 aGVOYW1lXVsnZGVmYXVsdF9jb3VudCddID0gJGRmbHRjdHItMTsKICAgICAgICAgICAgICAg ICAgICB9IGVsc2UgaWYgKGluX2FycmF5KCRtZXRhWyRpZHhdWyd0eXBlJ10sICRtbV90eXBl cykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHNpemVzID0gZG9fbGlzdCgkbWV0YVsk aWR4XVsnc2l6ZSddKTsKICAgICAgICAgICAgICAgICAgICAgICAgJG1pbiA9ICgkc2l6ZXNb MF0gPT09ICcnKSA/ICcnIDogJyBtaW49IicgLiAkc2l6ZXNbMF0gLiAnIic7CiAgICAgICAg ICAgICAgICAgICAgICAgICRtYXggPSAoaXNzZXQoJHNpemVzWzFdKSAmJiAkc2l6ZXNbMV0g IT09ICcnKSA/ICcgbWF4PSInIC4gJHNpemVzWzFdIC4gJyInIDogJyc7CiAgICAgICAgICAg ICAgICAgICAgICAgICRqbXAgPSAoaXNzZXQoJHNpemVzWzJdKSAmJiAkc2l6ZXNbMl0gIT09 ICcnKSA/ICcgc3RlcD0iJyAuICRzaXplc1syXSAuICciJzogJyc7CiAgICAgICAgICAgICAg ICAgICAgICAgICRjbHMgPSAoJHRoZUNsYXNzKSA/ICcgY2xhc3M9IicuJHRoZUNsYXNzLici JyA6ICcnOwogICAgICAgICAgICAgICAgICAgICAgICAkd2lkZ2V0ID0gJzxpbnB1dCB0eXBl PSInLiRtZXRhWyRpZHhdWyd0eXBlJ10uJyIgdmFsdWU9IicuJGZpZWxkLiciIG5hbWU9Iicu JGZpeGVkTmFtZS4nIicuJGNscy4kbWluLiRtYXguJGptcC4nIC8+JzsKICAgICAgICAgICAg ICAgICAgICB9IGVsc2UgaWYgKCRtZXRhWyRpZHhdWyd0eXBlJ10gPT0gJ3RleHRhcmVhJykg ewogICAgICAgICAgICAgICAgICAgICAgICAkc2l6ZXMgPSBkb19saXN0KCRtZXRhWyRpZHhd WydzaXplJ10pOwogICAgICAgICAgICAgICAgICAgICAgICAkdyA9ICgkc2l6ZXNbMF0gPT09 ICcnKSA/ICcnIDogJyBjb2xzPSInIC4gJHNpemVzWzBdIC4gJyInOwogICAgICAgICAgICAg ICAgICAgICAgICAkaCA9IChpc3NldCgkc2l6ZXNbMV0pICYmICRzaXplc1sxXSAhPT0gJycp ID8gJyByb3dzPSInIC4gJHNpemVzWzFdIC4gJyInOiAnJzsKICAgICAgICAgICAgICAgICAg ICAgICAgJGNscyA9ICgkdGhlQ2xhc3MpID8gJyBjbGFzcz0iJy4kdGhlQ2xhc3MuJyInIDog Jyc7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IG1heWJlIHVzZSB0ZXh0X2Fy ZWEoKSB3aGVuIDQuNi4wIHJlbGVhc2VkIGFzIGl0IG1heSBzdXBwb3J0IGNsYXNzZXMKICAg ICAgICAgICAgICAgICAgICAgICAgJHdpZGdldCA9ICc8dGV4dGFyZWEgbmFtZT0iJyAuICRm aXhlZE5hbWUgLiAnIiBpZD0iJyAuICRwcmVmaXhlZE5hbWUgLiAnIicuICRjbHMuJHcuJGgu Jz4nLiRmaWVsZC4nPC90ZXh0YXJlYT4nOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBp ZiAoJG1ldGFbJGlkeF1bJ3R5cGUnXSA9PSAnaW1hZ2UnKSB7CiAgICAgICAgICAgICAgICAg ICAgICAgICR3aWRnZXQgPSBmSW5wdXQoJ3RleHQnLCAkZml4ZWROYW1lLCAkZmllbGQsICR0 aGVDbGFzcywgJycsICcnLCAnJywgJycsICRwcmVmaXhlZE5hbWUpOwogICAgICAgICAgICAg ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR3aWRnZXQgPSBmSW5w dXQoJG1ldGFbJGlkeF1bJ3R5cGUnXSwgJGZpeGVkTmFtZSwgJGZpZWxkLCAkdGhlQ2xhc3Ms ICcnLCAnJywgJycsICcnLCAkcHJlZml4ZWROYW1lKTsKICAgICAgICAgICAgICAgICAgICB9 CgogICAgICAgICAgICAgICAgICAgICRzbWRfYmlvX2RhdGFbJHRoZU5hbWVdWyd3aWRnZXQn XSA9ICR3aWRnZXQ7CiAgICAgICAgICAgICAgICAgICAgJHJlcGxhY2VtZW50c1sneycuJHBy ZWZpeGVkTmFtZS4nX3dpZGdldH0nXSA9ICR3aWRnZXQ7CgogICAgICAgICAgICAgICAgICAg IC8vIFdpdGhvdXQgY29udGFpbmVyL2Zvcm0sIGJ1aWxkIHVwIGdlbmVyaWMgb3V0cHV0CiAg ICAgICAgICAgICAgICAgICAgaWYgKCRpc1NpbmdsZSkgewogICAgICAgICAgICAgICAgICAg ICAgICAkdGFnbGFiID0gKCgkbGFiZWw9PTEpID8gJHRoZVRpdGxlIDogKCgkbGFiZWw9PScn KSA/ICcnIDogKCgkbGFiZWwpID8gJGxhYmVsIDogJHRoZU5hbWUpKSk7CiAgICAgICAgICAg ICAgICAgICAgICAgICR0b1BhcnNlW10gPSBkb0xhYmVsKCR0YWdsYWIsICRsYWJlbHRhZykg LiAoKCRicmVhaykgPyBkb1RhZygkZmllbGQsICRicmVhaywgJHRoZUNsYXNzKSA6ICRmaWVs ZCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAg ICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJGRlYnVnKSB7CiAgICAgICAgICAgIGVjaG8g JysrIEJJTyBSRVBMQUNFTUVOVFMgRk9SICcgLiRhdXRob3IuICcgKysnOwogICAgICAgICAg ICBkbXAoJHJlcGxhY2VtZW50cyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoISRpc1Npbmds ZSkgewogICAgICAgICAgICAkdG9QYXJzZVtdID0gJHRoaW5nOwogICAgICAgIH0KCiAgICAg ICAgJG91dFtdID0gcGFyc2Uoc3RydHIoam9pbihuLCAkdG9QYXJzZSksICRyZXBsYWNlbWVu dHMpKTsKICAgICAgICAkZmluYWwgPSBkb1dyYXAoJG91dCwgJHdyYXB0YWcsICcnLCAkY2xh c3MpOwogICAgfQogICAgcmV0dXJuICRmaW5hbDsKfQoKLy8gT3V0cHV0IGRhdGEKZnVuY3Rp b24gc21kX2Jpb19kYXRhKCRhdHRzLCAkdGhpbmcgPSBudWxsKSB7CiAgICBnbG9iYWwgJHNt ZF9iaW9fZGF0YSwgJHNtZF9iaW9fb3B0aW9uX2RhdGE7CgogICAgZXh0cmFjdChsQXR0cyhh cnJheSgKICAgICAgICAnZmllbGQnICAgPT4gJycsCiAgICAgICAgJ2l0ZW0nICAgID0+ICd2 YWx1ZScsCiAgICAgICAgJ3dyYXB0YWcnID0+ICcnLAogICAgICAgICdicmVhaycgICA9PiAn JywKICAgICAgICAnY2xhc3MnICAgPT4gJycsCiAgICAgICAgJ2RlYnVnJyAgID0+IDAsCiAg ICApLCAkYXR0cykpOwoKICAgICRiZGF0YSA9IGlzX2FycmF5KCRzbWRfYmlvX2RhdGEpID8g JHNtZF9iaW9fZGF0YSA6IGFycmF5KCk7CiAgICAkaWRhdGEgPSBpc19hcnJheSgkc21kX2Jp b19vcHRpb25fZGF0YSkgPyAkc21kX2Jpb19vcHRpb25fZGF0YSA6IGFycmF5KCk7CiAgICAk ZGF0YXBvb2wgPSBhcnJheV9tZXJnZSgkYmRhdGEsICRpZGF0YSk7CgogICAgaWYgKCRkZWJ1 ZykgewogICAgICAgIGVjaG8gJysrIEFWQUlMQUJMRSBCSU8gREFUQSArKyc7CiAgICAgICAg ZG1wKCRkYXRhcG9vbCk7CiAgICB9CgogICAgJGl0ZW1zID0gZG9fbGlzdCgkaXRlbSk7CiAg ICAkb3V0ID0gYXJyYXkoKTsKICAgIGZvcmVhY2ggKCRpdGVtcyBhcyAkaXQpIHsKICAgICAg ICBpZiAoaXNzZXQoJGRhdGFwb29sWyRmaWVsZF1bJGl0XSkpIHsKICAgICAgICAgICAgJG91 dFtdID0gJGRhdGFwb29sWyRmaWVsZF1bJGl0XTsKICAgICAgICB9CiAgICB9CgogICAgcmV0 dXJuIGRvV3JhcCgkb3V0LCAkd3JhcHRhZywgJGJyZWFrLCAkY2xhc3MpOwp9CgovLyBJdGVy YXRlIG92ZXIgTiBtdWx0aS1pdGVtcwpmdW5jdGlvbiBzbWRfYmlvX2l0ZXJhdGUoJGF0dHMs ICR0aGluZyA9IG51bGwpIHsKICAgIGdsb2JhbCAkc21kX2Jpb19kYXRhLCAkc21kX2Jpb19v cHRpb25fZGF0YTsKCiAgICBleHRyYWN0KGxBdHRzKGFycmF5KAogICAgICAgICdmaWVsZCcg ICAgICA9PiAnJywKICAgICAgICAndXNpbmcnICAgICAgPT4gJ2Nob3NlbicsIC8vIGNob3Nl biwgZGVmYXVsdCwgYWxsCiAgICAgICAgJ2Rpc3BsYXknICAgID0+ICd0aXRsZScsIC8vIG9w dGlvbiwgdGl0bGUKICAgICAgICAncHJlZml4JyAgICAgPT4gJ3NtZF9iaW9fJywgLy8gT25s eSBmb3IgcmVwbGFjZW1lbnQgdmFyaWFibGVzCiAgICAgICAgJ3dyYXB0YWcnICAgID0+ICcn LAogICAgICAgICdjbGFzcycgICAgICA9PiAnJywKICAgICAgICAnYnJlYWsnICAgICAgPT4g JycsCiAgICAgICAgJ2Zvcm0nICAgICAgID0+ICcnLAogICAgICAgICdsaW1pdCcgICAgICA9 PiAwLAogICAgICAgICdvZmZzZXQnICAgICA9PiAwLAogICAgICAgICdkZWJ1ZycgICAgICA9 PiAwLAogICAgKSwgJGF0dHMpKTsKCiAgICBpZiAoJGRlYnVnID4gMSkgewogICAgICAgIGVj aG8gJysrIEFWQUlMQUJMRSBCSU8gREFUQSArKyc7CiAgICAgICAgZG1wKCRzbWRfYmlvX2Rh dGEpOwogICAgfQoKICAgIC8vIFZhbGlkYXRpb24gMQogICAgaWYgKCFpc3NldCgkc21kX2Jp b19kYXRhWyRmaWVsZF0pKSB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIC8vIFZhbGlk YXRpb24gMgogICAgJHVzaW5nTWFwID0gYXJyYXkoJ2FsbCcgPT4gJycsICdjaG9zZW4nID0+ ICdjaG9zZW4nLCAnZGVmYXVsdCcgPT4gJ2RlZmF1bHQnKTsKICAgICR1c2luZyA9IGlzc2V0 KCR1c2luZ01hcFskdXNpbmddKSA/ICR1c2luZyA6ICdjaG9zZW4nOwoKICAgIC8vIFZhbGlk YXRpb24gMwogICAgJGRpc3BsYXlNYXAgPSBhcnJheSgnb3B0aW9uJyA9PiAnb3B0aW9uJywg J3RpdGxlJyA9PiAndGl0bGUnKTsKICAgICRkaXNwbGF5ID0gaXNzZXQoJGRpc3BsYXlNYXBb JGRpc3BsYXldKSA/ICRkaXNwbGF5IDogJ3RpdGxlJzsKCiAgICBzd2l0Y2ggKCR1c2luZykg ewogICAgICAgIGNhc2UgJ2Nob3Nlbic6CiAgICAgICAgY2FzZSAnZGVmYXVsdCc6CiAgICAg ICAgICAgICRjb3VudFR5cGUgPSAkdXNpbmcuJ19jb3VudCc7CiAgICAgICAgICAgIGJyZWFr OwogICAgICAgIGNhc2UgJ2FsbCc6CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgJGNv dW50VHlwZSA9ICdvcHRpb25fY291bnQnOwogICAgICAgIGJyZWFrOwogICAgfQoKICAgICRv dXQgPSAkcmVwcyA9ICRzdGFzaCA9IGFycmF5KCk7CgogICAgLy8gV2hpcCB0aHJvdWdoIHRo ZSBsaXN0cyB0byBnYXRoZXIgdGhlIGluZm8gZm9yIGxhdGVyLgogICAgaWYgKGlzc2V0KCRz bWRfYmlvX2RhdGFbJGZpZWxkXVsnb3B0aW9uX2NvdW50J10pKSB7CiAgICAgICAgZm9yICgk aWR4ID0gMTsgJGlkeCA8PSAkc21kX2Jpb19kYXRhWyRmaWVsZF1bJ29wdGlvbl9jb3VudCdd OyAkaWR4KyspIHsKICAgICAgICAgICAgJG9wdCA9ICRzbWRfYmlvX2RhdGFbJGZpZWxkXVsn b3B0aW9uXycuJGlkeF07CiAgICAgICAgICAgICR0dGwgPSAkc21kX2Jpb19kYXRhWyRmaWVs ZF1bJ3RpdGxlXycuJGlkeF07CiAgICAgICAgICAgICRzdGFzaFsnb3B0aW9uJ11bJG9wdF0g PSAkdHRsOwogICAgICAgIH0KICAgIH0KICAgIGlmIChpc3NldCgkc21kX2Jpb19kYXRhWyRm aWVsZF1bJ2Nob3Nlbl9jb3VudCddKSkgewogICAgICAgIGZvciAoJGlkeCA9IDE7ICRpZHgg PD0gJHNtZF9iaW9fZGF0YVskZmllbGRdWydjaG9zZW5fY291bnQnXTsgJGlkeCsrKSB7CiAg ICAgICAgICAgICRvcHQgPSAkc21kX2Jpb19kYXRhWyRmaWVsZF1bJ2Nob3Nlbl9vcHRpb25f Jy4kaWR4XTsKICAgICAgICAgICAgJHR0bCA9ICRzbWRfYmlvX2RhdGFbJGZpZWxkXVsnY2hv c2VuX3RpdGxlXycuJGlkeF07CiAgICAgICAgICAgICRzdGFzaFsnY2hvc2VuJ11bJG9wdF0g PSAkdHRsOwogICAgICAgIH0KICAgIH0KICAgIGlmIChpc3NldCgkc21kX2Jpb19kYXRhWyRm aWVsZF1bJ2RlZmF1bHRfY291bnQnXSkpIHsKICAgICAgICBmb3IgKCRpZHggPSAxOyAkaWR4 IDw9ICRzbWRfYmlvX2RhdGFbJGZpZWxkXVsnZGVmYXVsdF9jb3VudCddOyAkaWR4KyspIHsK ICAgICAgICAgICAgJG9wdCA9ICRzbWRfYmlvX2RhdGFbJGZpZWxkXVsnZGVmYXVsdF9vcHRp b25fJy4kaWR4XTsKICAgICAgICAgICAgJHN0YXNoWydkZWZhdWx0J11bXSA9ICRvcHQ7CiAg ICAgICAgfQogICAgfQoKICAgICRjaGVja2VkX3R5cGVzID0gYXJyYXkoJ2NoZWNrYm94Jywg J3JhZGlvJywgJ3llc25vcmFkaW8nKTsKICAgICRzZWxlY3RlZF90eXBlcyA9IGFycmF5KCds aXN0JywgJ211bHRpbGlzdCcpOwoKICAgIC8vIERvIHRoZSBpdGVyYXRpb24gZm9yIHJlYWwg bm93LCB0YWtpbmcgbGltaXQgYW5kIG9mZnNldCBpbnRvIGFjY291bnQuCiAgICAvLyBDYW4g b25seSBpdGVyYXRlIG92ZXIgaXRlbXMgdGhhdCBoYXZlIGEgY291bnQuCiAgICBpZiAoaXNz ZXQoJHNtZF9iaW9fZGF0YVskZmllbGRdWyRjb3VudFR5cGVdKSkgewogICAgICAgIGZvciAo JGlkeCA9IDE7ICRpZHggPD0gJHNtZF9iaW9fZGF0YVskZmllbGRdWyRjb3VudFR5cGVdOyAk aWR4KyspIHsKICAgICAgICAgICAgaWYgKCggKCRpZHgtMSkgPj0gJG9mZnNldCApICYmICgg JGxpbWl0ID09IDAgfHwgKCgkaWR4LTEpIDwgJGxpbWl0KyRvZmZzZXQpICkpIHsKICAgICAg ICAgICAgICAgICRrZXkgPSAoKCR1c2luZ01hcFskdXNpbmddKSA/ICR1c2luZ01hcFskdXNp bmddLiAnXycgOiAnJykgLiAoJHVzaW5nID09PSAnZGVmYXVsdCcgJiYgJGRpc3BsYXkgPT09 ICd0aXRsZSc/ICdvcHRpb24nIDogJGRpc3BsYXlNYXBbJGRpc3BsYXldKSAuICdfJyAuICRp ZHg7CiAgICAgICAgICAgICAgICAkdXZhbCA9ICR1c2luZ01hcFskdXNpbmddID8gJHVzaW5n TWFwWyR1c2luZ10uJ18nIDogJyc7CiAgICAgICAgICAgICAgICAkb3B0ID0gJHNtZF9iaW9f ZGF0YVskZmllbGRdWyR1dmFsIC4gJ29wdGlvbl8nLiRpZHhdOwoKICAgICAgICAgICAgICAg IC8vIE5vIHRpdGxlIGluIHNtZF9iaW9fZGF0YSBmb3IgZGVmYXVsdCwgc28gZnVkZ2UgaXQK ICAgICAgICAgICAgICAgIGlmICgkdXNpbmcgPT09ICdkZWZhdWx0JykgewogICAgICAgICAg ICAgICAgICAgICR0dGwgPSAkc3Rhc2hbJ29wdGlvbiddWyRvcHRdOwogICAgICAgICAgICAg ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkdHRsID0gJHNtZF9iaW9fZGF0YVsk ZmllbGRdWyR1dmFsIC4gJ3RpdGxlXycuJGlkeF07CiAgICAgICAgICAgICAgICB9CgogICAg ICAgICAgICAgICAgJHJlcHMgPSBhcnJheSgKICAgICAgICAgICAgICAgICAgICAneycuJHBy ZWZpeC4naXRlcmF0ZV9vcHRpb259JyA9PiAkb3B0LAogICAgICAgICAgICAgICAgICAgICd7 Jy4kcHJlZml4LidpdGVyYXRlX3RpdGxlfScgPT4gJHR0bCwKICAgICAgICAgICAgICAgICAg ICAneycuJHByZWZpeC4naXRlcmF0ZV9jb3VudH0nID0+ICRpZHgsCiAgICAgICAgICAgICAg ICApOwoKICAgICAgICAgICAgICAgIC8vIFdoZW4gaXRlcmF0aW5nIGFsbCBvcHRpb25zLCBp bmRpY2F0ZSB3aGljaCBhcmUgZGVmYXVsdCBhbmQgd2hpY2ggYXJlIGNob3NlbgogICAgICAg ICAgICAgICAgaWYgKCR1c2luZyA9PT0gJ2FsbCcpIHsKICAgICAgICAgICAgICAgICAgICBp ZiAoaXNzZXQoJHN0YXNoWydkZWZhdWx0J10pICYmIGluX2FycmF5KCRvcHQsICRzdGFzaFsn ZGVmYXVsdCddKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkcmVwc1sneycuJHByZWZp eC4naXRlcmF0ZV9pc19kZWZhdWx0fSddID0gJzEnOwogICAgICAgICAgICAgICAgICAgICAg ICAkc21kX2Jpb19vcHRpb25fZGF0YVskZmllbGRdWydpdGVyYXRlX2lzX2RlZmF1bHQnXSA9 ICcxJzsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAg ICAgICAkcmVwc1sneycuJHByZWZpeC4naXRlcmF0ZV9pc19kZWZhdWx0fSddID0gJzAnOwog ICAgICAgICAgICAgICAgICAgICAgICAkc21kX2Jpb19vcHRpb25fZGF0YVskZmllbGRdWydp dGVyYXRlX2lzX2RlZmF1bHQnXSA9ICcwJzsKICAgICAgICAgICAgICAgICAgICB9CgogICAg ICAgICAgICAgICAgICAgIGlmIChpc3NldCgkc3Rhc2hbJ2Nob3NlbiddKSAmJiBhcnJheV9r ZXlfZXhpc3RzKCRvcHQsICRzdGFzaFsnY2hvc2VuJ10pKSB7CiAgICAgICAgICAgICAgICAg ICAgICAgICRmbGF2b3VyID0gJHNtZF9iaW9fZGF0YVskZmllbGRdWyd0eXBlJ107CiAgICAg ICAgICAgICAgICAgICAgICAgICRodG1sX3NlbCA9IChpbl9hcnJheSgkZmxhdm91ciwgJGNo ZWNrZWRfdHlwZXMpKSA/ICdjaGVja2VkJyA6ICgoaW5fYXJyYXkoJGZsYXZvdXIsICRzZWxl Y3RlZF90eXBlcykpID8gJ3NlbGVjdGVkJyA6ICcxJyk7CiAgICAgICAgICAgICAgICAgICAg ICAgICRyZXBzWyd7Jy4kcHJlZml4LidpdGVyYXRlX2lzX2Nob3Nlbn0nXSA9ICRodG1sX3Nl bDsKICAgICAgICAgICAgICAgICAgICAgICAgJHNtZF9iaW9fb3B0aW9uX2RhdGFbJGZpZWxk XVsnaXRlcmF0ZV9pc19jaG9zZW4nXSA9ICRodG1sX3NlbDsKICAgICAgICAgICAgICAgICAg ICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkcmVwc1sneycuJHByZWZpeC4n aXRlcmF0ZV9pc19jaG9zZW59J10gPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgJHNt ZF9iaW9fb3B0aW9uX2RhdGFbJGZpZWxkXVsnaXRlcmF0ZV9pc19jaG9zZW4nXSA9ICcnOwog ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAg ICAkc21kX2Jpb19vcHRpb25fZGF0YVskZmllbGRdWydpdGVyYXRlX29wdGlvbiddID0gJG9w dDsKICAgICAgICAgICAgICAgICRzbWRfYmlvX29wdGlvbl9kYXRhWyRmaWVsZF1bJ2l0ZXJh dGVfdGl0bGUnXSA9ICR0dGw7CiAgICAgICAgICAgICAgICAkc21kX2Jpb19vcHRpb25fZGF0 YVskZmllbGRdWydpdGVyYXRlX2NvdW50J10gPSAkaWR4OwogICAgICAgICAgICAgICAgaWYg KCRkZWJ1ZykgewogICAgICAgICAgICAgICAgICAgIGVjaG8gJysrIElURVJBVE9SIFJFUExB Q0VNRU5UUyArKyc7CiAgICAgICAgICAgICAgICAgICAgZG1wKCRyZXBzKTsKICAgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgICAgICRvdXRbXSA9ICgkdGhpbmcgIT09IG51bGwpID8g cGFyc2Uoc3RydHIoJHRoaW5nLCAkcmVwcykpIDogKCAoJGZvcm0gIT09ICcnKSA/IHBhcnNl X2Zvcm0oc3RydHIoJGZvcm0sICRyZXBzKSkgOiAkc21kX2Jpb19kYXRhWyRmaWVsZF1bJGtl eV0gKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gZG9XcmFw KCRvdXQsICR3cmFwdGFnLCAkYnJlYWssICRjbGFzcyk7Cn0KCi8vIENvbnZlbmllbmNlIGNv bmRpdGlvbmFsIHRvIHRlc3QgYSBmaWVsZC9pdGVtLiBVc2Ugc21kX2lmIGZvciBtb3JlIGFk dmFuY2VkIGNvbmRpdGlvbmFsIGxvZ2ljCmZ1bmN0aW9uIHNtZF9pZl9iaW8oJGF0dHMsICR0 aGluZyA9IG51bGwpIHsKICAgIGdsb2JhbCAkc21kX2Jpb19kYXRhLCAkc21kX2Jpb19vcHRp b25fZGF0YTsKCiAgICBleHRyYWN0KGxBdHRzKGFycmF5KAogICAgICAgICdmaWVsZCcgICAg ICAgICAgPT4gJycsCiAgICAgICAgJ2l0ZW0nICAgICAgICAgICA9PiAndmFsdWUnLAogICAg ICAgICd2YWx1ZScgICAgICAgICAgPT4gbnVsbCwKICAgICAgICAnY2FzZV9zZW5zaXRpdmUn ID0+IDEsCiAgICAgICAgJ2RlYnVnJyAgICAgICAgICA9PiAwLAogICAgKSwgJGF0dHMpKTsK CiAgICAkYmRhdGEgPSBpc19hcnJheSgkc21kX2Jpb19kYXRhKSA/ICRzbWRfYmlvX2RhdGEg OiBhcnJheSgpOwogICAgJGlkYXRhID0gaXNfYXJyYXkoJHNtZF9iaW9fb3B0aW9uX2RhdGEp ID8gJHNtZF9iaW9fb3B0aW9uX2RhdGEgOiBhcnJheSgpOwogICAgJGRhdGFwb29sID0gYXJy YXlfbWVyZ2UoJGJkYXRhLCAkaWRhdGEpOwogICAgaWYgKCRkZWJ1ZykgewogICAgICAgIGVj aG8gJysrIEFWQUlMQUJMRSBCSU8gREFUQSArKyc7CiAgICAgICAgZG1wKCRkYXRhcG9vbCk7 CiAgICB9CgogICAgJHJlc3VsdCA9IGZhbHNlOwoKICAgIGlmIChpc3NldCgkZGF0YXBvb2xb JGZpZWxkXVskaXRlbV0pKSB7CiAgICAgICAgaWYgKCR2YWx1ZSAhPT0gbnVsbCkgewogICAg ICAgICAgICAkY3ZhbCA9ICgkY2FzZV9zZW5zaXRpdmUpID8gJHZhbHVlIDogc3RydG9sb3dl cigkdmFsdWUpOwogICAgICAgICAgICAkY2l0bSA9ICgkY2FzZV9zZW5zaXRpdmUpID8gJGRh dGFwb29sWyRmaWVsZF1bJGl0ZW1dIDogc3RydG9sb3dlcigkZGF0YXBvb2xbJGZpZWxkXVsk aXRlbV0pOwogICAgICAgICAgICAkcmVzdWx0ID0gKChzdHJpbmcpJGNpdG0gPT09IChzdHJp bmcpJGN2YWwpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRyZXN1bHQgPSAoJGRh dGFwb29sWyRmaWVsZF1bJGl0ZW1dICE9PSAnJyk7CiAgICAgICAgfQogICAgfQoKICAgIHJl dHVybiBwYXJzZShFdmFsRWxzZSgkdGhpbmcsICRyZXN1bHQpKTsKfQoKLy8gQ29uZGl0aW9u YWwgdG8gdGVzdCBiaW8gbWV0YSBkYXRhCmZ1bmN0aW9uIHNtZF9pZl9iaW9faXMoJGF0dHMs ICR0aGluZyA9IG51bGwpIHsKICAgIGdsb2JhbCAkc21kX2Jpb19tZXRhX2RhdGE7CgogICAg ZXh0cmFjdChsQXR0cyhhcnJheSgKICAgICAgICAndHlwZScgID0+ICdhdXRob3InLCAvLyBh dXRob3IsIGZpZWxkCiAgICAgICAgJ2l0ZW0nICA9PiAnZmlyc3QnLCAvLyBmaXJzdCwgbGFz dAogICAgICAgICdkZWJ1ZycgPT4gMCwKICAgICksICRhdHRzKSk7CgogICAgJGRhdGFwb29s ID0gaXNfYXJyYXkoJHNtZF9iaW9fbWV0YV9kYXRhKSA/ICRzbWRfYmlvX21ldGFfZGF0YSA6 IGFycmF5KCk7CiAgICBpZiAoJGRlYnVnKSB7CiAgICAgICAgZWNobyAnKysgQVZBSUxBQkxF IEJJTyBNRVRBIERBVEEgKysnOwogICAgICAgIGRtcCgkZGF0YXBvb2wpOwogICAgfQoKICAg ICRyZXN1bHQgPSBmYWxzZTsKCiAgICBpZiAoaXNzZXQoJGRhdGFwb29sWyR0eXBlXVskaXRl bV0pKSB7CiAgICAgICAgJHJlc3VsdCA9ICRkYXRhcG9vbFskdHlwZV1bJGl0ZW1dOwogICAg fQoKICAgIHJldHVybiBwYXJzZShFdmFsRWxzZSgkdGhpbmcsICRyZXN1bHQpKTsKfQoKLy8g Q29udmVuaWVuY2UgY29uZGl0aW9uYWwKZnVuY3Rpb24gc21kX2lmX2Jpb19maXJzdF9hdXRo b3IoJGF0dHMsICR0aGluZyA9IG51bGwpIHsKICAgIHJldHVybiBzbWRfaWZfYmlvX2lzKGFy cmF5KCd0eXBlJyA9PiAnYXV0aG9yJywgJ2l0ZW0nID0+ICdmaXJzdCcpLCAkdGhpbmcpOwp9 Ci8vIENvbnZlbmllbmNlIGNvbmRpdGlvbmFsCmZ1bmN0aW9uIHNtZF9pZl9iaW9fbGFzdF9h dXRob3IoJGF0dHMsICR0aGluZyA9IG51bGwpIHsKICAgIHJldHVybiBzbWRfaWZfYmlvX2lz KGFycmF5KCd0eXBlJyA9PiAnYXV0aG9yJywgJ2l0ZW0nID0+ICdsYXN0JyksICR0aGluZyk7 Cn0KCgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gQSB3cmFwcGVyIHRvIGFydGlj bGVfY3VzdG9tIHRoYXQgYXV0byBzZXRzIHRoZSB1c2VyIHRvIHRoZSBvbmUgc3BlY2lmaWVk Ci8vIG9yIHRoZSBjdXJyZW50IGFydGljbGUncyBhdXRob3IuCi8vIE5PVEU6IGxBdHRzKCkg aXMgTk9UIHVzZWQgYmVjYXVzZSB0aGF0IGxpbWl0cyB0aGUgcGx1Z2luIGF0dHJpYnV0ZXMu CmZ1bmN0aW9uIHNtZF9iaW9fYXJ0aWNsZXMoJGF0dHMsICR0aGluZyA9IG51bGwpIHsKICAg IGdsb2JhbCAkdGhpc2FydGljbGU7CgogICAgJGF1dGhvciA9IChpc3NldCgkYXR0c1snYXV0 aG9yJ10pKSA/ICRhdHRzWydhdXRob3InXSA6IChpc3NldCgkdGhpc2FydGljbGVbJ2F1dGhv cmlkJ10pID8gJHRoaXNhcnRpY2xlWydhdXRob3JpZCddIDogJycpOwogICAgJGF0dHNbJ2F1 dGhvciddID0gJGF1dGhvcjsKICAgIHJldHVybiBwYXJzZUFydGljbGVzKCRhdHRzLCAnMScs ICR0aGluZyk7Cn0iO3M6NDoidHlwZSI7czoxOiI1IjtzOjU6Im9yZGVyIjtzOjE6IjUiO3M6 NToiZmxhZ3MiO3M6MToiMiI7czo0OiJoZWxwIjtzOjM4OTI5OiI8aDE+c21kX2JpbzwvaDE+ Cgo8cD5Db25maWd1cmUgYWRkaXRpb25hbCB1c2VyIGJpb2dyYXBoaWNhbCBpbmZvcm1hdGlv biB0byBiZSBjb2xsZWN0ZWQgd2hlbiBhdXRob3JzIGFyZSBjcmVhdGVkLCB0aGVuIHNob3cg dGhhdCBpbmZvIGFzIGJ5bGluZXMgYWdhaW5zdCB5b3VyIGFydGljbGVzLiBMaWtlIGN1c3Rv bSBmaWVsZHMgZm9yIHVzZXIgaW5mby48L3A+Cgo8aDI+RmVhdHVyZXM8L2gyPgoKPHVsPgoJ PGxpPkRlZmluZSBvbmx5IHRoZSBpbmZvIHlvdSByZXF1aXJlIHRvIGJlIGNvbGxlY3RlZCBh Ym91dCB5b3VyIHVzZXJzICYjODIxMjsgdG90YWxseSBjdXN0b21pc2FibGUuPC9saT4KCTxs aT5JbmZvIGlzIGVudGVyZWQvZWRpdGVkIG9uIHRoZSA8ZW0+QWRtaW4tJmd0O1VzZXJzPC9l bT4gdGFiIGJlbmVhdGggdGhlIGV4aXN0aW5nIHVzZXIgaW5mbyAoaS5lLiBQdWJsaXNoZXJz IG9ubHkpIGJ1dCBhbHNvIGludGVncmF0ZXMgd2l0aCBzbWRfdXNlcl9tYW5hZ2VyLjwvbGk+ Cgk8bGk+Q2hvb3NlIGZyb20gYSB2YXJpZXR5IG9mIHR5cGVzIG9mIGNvbnRlbnQ6IHRleHQs IHJhZGlvIGJ1dHRvbnMsIHNlbGVjdCBsaXN0cywgY2hlY2tib3hlcywgaW1hZ2VzJiM4MjMw OzwvbGk+Cgk8bGk+T3V0cHV0IGFueSBwaWVjZXMgb2YgYmlvZ3JhcGhpY2FsIGluZm8gaW4g eW91ciBhcnRpY2xlIGZsb3cgaW4gYSB2YXJpZXR5IG9mIHdheXMuPC9saT4KCTxsaT5JbWFn ZSB0aHVtYm5haWwgcHJldmlldy9zZWxlY3Rpb24gb24gdGhlIDxlbT5BZG1pbi0mZ3Q7VXNl cnM8L2VtPiB0YWIuPC9saT4KCTxsaT5PcHRpb25hbCA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NT PC9zcGFuPiB0byBtb2RpZnkgdGhlIGxheW91dCBvZiB0aGUgPGVtPkFkbWluLSZndDtVc2Vy czwvZW0+IHRhYi48L2xpPgo8L3VsPgoKPGgyPkluc3RhbGxhdGlvbiAvIFVuaW5zdGFsbGF0 aW9uPC9oMj4KCjxwIGNsYXNzPSJpbXBvcnRhbnQiPlJlcXVpcmVzIFRleHRwYXR0ZXJuIDQu NSs8L3A+Cgo8cD5Eb3dubG9hZCB0aGUgcGx1Z2luIGZyb20gZWl0aGVyIDxhIGhyZWY9Imh0 dHA6Ly90ZXh0cGF0dGVybi5vcmcvcGx1Z2lucy8xMTE2L3NtZF9iaW8iPnRleHRwYXR0ZXJu Lm9yZzwvYT4sIG9yIHRoZSA8YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vc3ciPnNv ZnR3YXJlIHBhZ2U8L2E+LCBwYXN0ZSB0aGUgY29kZSBpbnRvIHRoZSBUZXh0cGF0dGVybiA8 ZW0+QWRtaW4tJmd0O1BsdWdpbnM8L2VtPiBwYW5lLCBpbnN0YWxsIGFuZCBlbmFibGUgdGhl IHBsdWdpbi4gVGhlIHBsdWdpbiYjODIxNztzIHRhYmxlcyB3aWxsIGJlIGluc3RhbGxlZCBh dXRvbWF0aWNhbGx5LiBWaXNpdCB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0 ZXJuLmNvbS92aWV3dG9waWMucGhwP2lkPTMxNDk2Ij5mb3J1bSB0aHJlYWQ8L2E+IGZvciBt b3JlIGluZm8gb3IgdG8gcmVwb3J0IG9uIHRoZSBzdWNjZXNzIG9yIG90aGVyd2lzZSBvZiB0 aGUgcGx1Z2luLjwvcD4KCjxwPldoZW4geW91IHZpc2l0IHRoZSA8ZW0+RXh0ZW5zaW9ucy0m Z3Q7QmlvIGNvbmZpZzwvZW0+IHBhZ2UsIHRoZSBwbHVnaW4mIzgyMTc7cyB0YWJsZXMgd2ls bCBiZSBjaGVja2VkIGFuZCBpbnN0YWxsZWQvdXBncmFkZWQgYXV0b21hdGljYWxseSBpZiBu b3QgcHJlc2VudCBhbHJlYWR5LiBUaGlzIGlzIGEgY29udmVuaWVuY2UgZm9yIHBlb3BsZSB3 aG8gcnVuIHRoZSBwbHVnaW4gZnJvbSB0aGUgY2FjaGUgZGlyZWN0b3J5LjwvcD4KCjxwPlRv IHVuaW5zdGFsbCwgZGVsZXRlIHRoZSBwbHVnaW4gZnJvbSB0aGUgPGVtPkFkbWluLSZndDtQ bHVnaW5zPC9lbT4gcGFnZS4gPHN0cm9uZz5BbGwgYWRkaXRpb25hbCB1c2VyIHRhYmxlcyBh bmQgYmlvIGluZm9ybWF0aW9uIHdpbGwgYmUgcmVtb3ZlZDwvc3Ryb25nPiBzbyBiZSBzdXJl IHlvdSBoYXZlIGJhY2tlZCBldmVyeXRoaW5nIHVwIGZpcnN0LjwvcD4KCjxoMiBpZD0ic21k X2Jpb19jb25maWciPkNvbmZpZ3VyaW5nIGJpbyBmaWVsZHM8L2gyPgoKPHA+VmlzaXQgdGhl IDxlbT5FeHRlbnNpb25zLSZndDtCaW8gY29uZmlnPC9lbT4gdGFiLiBBZGQgYmlvIGZpZWxk cyBzdWNoIGFzIGNlbGwvd29yay9mYXggbnVtYmVycywgZGVwYXJ0bWVudCwgbXVnc2hvdCwg cG9zdGFsIGFkZHJlc3MsIGpvYiB0aXRsZSwgd2hhdGV2ZXIgeW91IHdpc2guIEp1c3QgYWRk IG9uZSBhdCBhIHRpbWUgYW5kIGhpdCBTYXZlIGluIGJldHdlZW4uIFRoZSBmaWVsZHMgd2ls bCBiZSBsaXN0ZWQgYmVsb3cgdGhlIGZvcm0sIGFuZCBjYW4gYmUgc29ydGVkIGF0IHdpbGwu IEVhY2ggZmllbGQgY29tcHJpc2VzOjwvcD4KCjxkbD4KCTxkdD48c3Ryb25nPk5hbWU8L3N0 cm9uZz48L2R0PgoJPGRkPkFuIGludGVybmFsIG5hbWUgd2l0aCB3aGljaCB5b3Ugd2lzaCB0 byByZWZlciB0byB5b3VyIGJpbyBmaWVsZC4gQXZvaWQgY2hhcmFjdGVycyBzdWNoIGFzIHNw YWNlcyBhbmQgJiM4MjE2O3dlaXJkJiM4MjE3OyBjaGFyYWN0ZXJzIGhlcmUuIDxzdHJvbmc+ VGhpcyBjYW5ub3QgYmUgY2hhbmdlZCwgb25jZSBzZXQ8L3N0cm9uZz48L2RkPgoJPGR0Pjxz dHJvbmc+VGl0bGU8L3N0cm9uZz48L2R0PgoJPGRkPkEgaHVtYW4tZnJpZW5kbHkgbmFtZSBm b3IgeW91ciBiaW8gZmllbGQuIFRoaXMgaXMgZGlzcGxheWVkIHRvIHRoZSBsZWZ0IG9mIHRo ZSBpbnB1dCBjb250cm9sIG9uIHRoZSA8ZW0+QWRtaW4tJmd0O1VzZXJzPC9lbT4gcGFuZWws IGFuZCBhcyBhIGxhYmVsIG9uIHlvdXIgYXJ0aWNsZSBwYWdlcy48L2RkPgoJPGRkPklmIHlv dSBvbWl0IHRoZSA8c3Ryb25nPk5hbWU8L3N0cm9uZz4gdGhlbiB0aGlzIFRpdGxlIHdpbGwg YmUgJiM4MjIwO2R1bWJlZCBkb3duJiM4MjIxOyB0byB2YWxpZCBjaGFyYWN0ZXJzIGFuZCB1 c2VkIGFzIHRoZSBOYW1lLjwvZGQ+Cgk8ZHQ+PHN0cm9uZz5UeXBlPC9zdHJvbmc+PC9kdD4K CTxkZD5UaGUgdHlwZSBvZiBkYXRhIHlvdSB3aXNoIHRvIGNvbGxlY3QuIFRoaXMgd2lsbCBi ZSB0aGUgZmxhdm91ciBvZiBpbnB1dCBjb250cm9sIHlvdSBzZWUgb24gdGhlIDxlbT5BZG1p bi0mZ3Q7VXNlcnM8L2VtPiBwYW5lbDwvZGQ+Cgk8ZHQ+PHN0cm9uZz5Db2x1bW4gdHlwZTwv c3Ryb25nPiAoY2xpY2sgJiM4MjE2O01vcmUmIzgyMTc7IHRvIHRvZ2dsZSk8L2R0PgoJPGRk PlRoZSBkYXRhYmFzZSBjb2x1bW4gdHlwZSB0aGF0IGlzIGNyZWF0ZWQuIElmIHlvdSBkb24m IzgyMTc7dCBrbm93IHdoYXQgdGhpcyBpcywganVzdCBhY2NlcHQgdGhlIGRlZmF1bHQsIG90 aGVyd2lzZSBzcGVjaWZ5IHdoaWNoIHR5cGUgb2YgZGF0YSB0aGlzIGNvbHVtbiBpcyB0byBo b2xkPC9kZD4KCTxkZD5Ob3RlIHRoYXQgc29tZSB0eXBlcyBvZiBiaW9ncmFwaGljYWwgaW5m b3JtYXRpb24gKGUuZy4gaW1hZ2VzKSBhcmUgZm9yY2VkIHRvIGJlIG9mIGEgY2VydGFpbiBj b2x1bW4gdHlwZTwvZGQ+Cgk8ZGQ+PHNwYW4gY2xhc3M9ImNhcHMiPklNUE9SVEFOVDwvc3Bh bj46IGlmIHlvdSBhbHRlciB0aGlzIGFmdGVyIGl0IGhhcyBiZWVuIGNyZWF0ZWQsIGFueSBl eGlzdGluZyBiaW8gZGF0YSBpbiB0aGUgZmllbGQgd2lsbCBiZSBhbHRlcmVkIHRvIHN1aXQg YW5kIDxzdHJvbmc+eW91IG1heSBsb3NlIGluZm9ybWF0aW9uPC9zdHJvbmc+LiBQbGVhc2Ug YmFja3VwIGZpcnN0PC9kZD4KCTxkdD48c3Ryb25nPkNvbHVtbiBzaXplPC9zdHJvbmc+IChj bGljayAmIzgyMTY7TW9yZSYjODIxNzsgdG8gdG9nZ2xlKTwvZHQ+Cgk8ZGQ+U29tZSBjb2x1 bW4gdHlwZXMgJiM4MjEyOyBtb3N0IG5vdGFibHkgdGhlIHZhcmNoYXIgdHlwZXMgJiM4MjEy OyByZXF1aXJlIGEgY29sdW1uIHdpZHRoIChvciBkaXNwbGF5IHdpZHRoKSB0byBiZSBzcGVj aWZpZWQuIFB1dCBhIHZhbHVlIGhlcmUgaWYgeW91IHdpc2ggdG8gdXNlIGEgc2l6ZSBvdGhl ciB0aGFuIHRoZSBkZWZhdWx0LiBJZiB5b3UgZG9uJiM4MjE3O3Qga25vdyB3aGF0IHRoaXMg aXMsIGp1c3QgYWNjZXB0IHRoZSBkZWZhdWx0PC9kZD4KCTxkZD5Ob3RlIHRoYXQgbW9zdCBj b2x1bW4gdHlwZXMgZG8gbm90IHJlcXVpcmUgYSBzaXplIHNvIGlmIHlvdSBkbyBzcGVjaWZ5 IG9uZSBpdCB3aWxsIGJlIGlnbm9yZWQ8L2RkPgoJPGRkPjxzcGFuIGNsYXNzPSJjYXBzIj5J TVBPUlRBTlQ8L3NwYW4+OiBpZiB5b3UgYWx0ZXIgdGhpcyBhZnRlciBpdCBoYXMgYmVlbiBj cmVhdGVkLCBhbnkgZXhpc3RpbmcgYmlvIGRhdGEgaW4gdGhlIGZpZWxkIHdpbGwgYmUgYWx0 ZXJlZCB0byBzdWl0IGFuZCA8c3Ryb25nPnlvdSBtYXkgbG9zZSBpbmZvcm1hdGlvbjwvc3Ry b25nPi4gUGxlYXNlIGJhY2t1cCBmaXJzdDwvZGQ+Cgk8ZHQ+PHN0cm9uZz5TaXplPC9zdHJv bmc+PC9kdD4KCTxkZD5UaGUgZGltZW5zaW9ucyBvZiB0aGUgY2hvc2VuIGlucHV0IGNvbnRy b2wuIFRha2VzIG9uZSBvciB0d28gY29tbWEtc2VwYXJhdGVkIHZhbHVlcywgdGhlIGludGVy cHJldGF0aW9uIG9mIHdoaWNoIGRlcGVuZHMgb24gdGhlIGZpZWxkIDxlbT5UeXBlPC9lbT46 Cgk8ZGw+CgkJPGRkPkZvciB0ZXh0LWJhc2VkIGlucHV0IGZpZWxkcywgdGhlIGZpcnN0IGlz IHRoZSB3aWR0aCBvZiB0aGUgYm94IChpbiBjaGFyYWN0ZXJzKSBhbmQgdGhlIHNlY29uZCBp cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyBhIHVzZXIgY2FuIHR5cGUgKDAg PSBsZWF2ZSBhdCBkZWZhdWx0KTwvZGQ+CgkJPGRkPkZvciBudW1lcmljLWJhc2VkIGlucHV0 IGZpZWxkcywgdGhlIHZhbHVlcyBhcmUgdGhlIG1pbmltdW0gcGVybWl0dGVkIHZhbHVlLCB0 aGUgbWF4aW11bSBwZXJtaXR0ZWQgdmFsdWUsIGFuZCB0aGUgYWNjZXB0YWJsZSBpbnRlcnZh bCAoc3RlcCkgdGhhdCB2YWx1ZSBjYW4gdGFrZTwvZGQ+CgkJPGRkPkZvciB0ZXh0YXJlYXMs IGl0IGlzIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSBib3ggaW4gY2hhcmFjdGVycywg cmVzcGVjdGl2ZWx5PC9kZD4KCQk8ZGQ+Rm9yIGltYWdlcywgdGhlIHR3byB2YWx1ZXMgYXJl IHRoZSB4IGFuZCB5IGRpbWVuc2lvbnMgb2YgdGhlIGltYWdlL3RodW1ibmFpbCBvbiB0aGUg PGVtPkFkbWluLSZndDtVc2VyczwvZW0+IHRhYi4gSWYgb25seSBvbmUgdmFsdWUgaXMgZ2l2 ZW4sIHRoZSBpbWFnZSB3aWxsIGJlIHNxdWFyZS4gSWYgZWl0aGVyIHZhbHVlIGlzIG9taXR0 ZWQsIHRoZSBpbWFnZSBvciB0aHVtYm5haWwgZGltZW5zaW9ucyAoYXMgc3RvcmVkIGluIHRo ZSBkYXRhYmFzZSkgYXJlIHVzZWQgaW5zdGVhZDwvZGQ+CgkJPGRkPkZvciBvdGhlciB0eXBl cywgdGhlIFNpemUgaXMgY3VycmVudGx5IHVudXNlZDwvZGQ+Cgk8L2RsPjwvZGQ+Cgk8ZHQ+ PHN0cm9uZz5WYWx1ZTwvc3Ryb25nPjwvZHQ+Cgk8ZGQ+RGVwZW5kcyBvbiB0aGUgZmllbGQg PGVtPlR5cGU8L2VtPjoKCTxkbD4KCQk8ZGQ+Rm9yIHRleHQtIGFuZCBudW1iZXItYmFzZWQg ZmllbGRzLCB0aGlzIGlzIHRoZSBkZWZhdWx0IHZhbHVlIHRoYXQgd2lsbCBiZSBwbGFjZWQg aW4gdGhlIHRleHQgYm94LiBZb3UgY2FuIHVzZSB0aGlzIHRvIGluaXRpYWxpc2UgYW4gZW50 cnksIG9yIG9mZmVyIGluc3RydWN0aW9ucyBsaWtlICYjODIyMDtUeXBlIHlvdXIgam9iIGRl c2NyaXB0aW9uIGhlcmUmIzgyMjE7PC9kZD4KCQk8ZGQ+Rm9yIGltYWdlcywgaXQgY2FuIGJl IHVzZWQgdG8gc3BlY2lmeSB0aGUgcGFyZW50IGNhdGVnb3J5IG5hbWUgdW5kZXIgd2hpY2gg dGhlIGRlc2lyZWQgaW1hZ2VzIGFyZSBzdG9yZWQuIElmIG9taXR0ZWQsIGFsbCBpbWFnZXMg YXJlIGF2YWlsYWJsZSBpbiB0aGUgaW1hZ2Ugc2VsZWN0IGxpc3Q8L2RkPgoJCTxkZD5Gb3Ig bGlzdCwgcmFkaW8gYW5kIGNoZWNrYm94IHR5cGVzLCB0aGlzIGlzIHVzZWQgdG8gY29uZmln dXJlIHRoZSBhdmFpbGFibGUgb3B0aW9uczoKCQk8ZGw+CgkJCTxkZD5FaXRoZXIgcHV0IG9u ZSBvcHRpb24gcGVyIGxpbmUgb3IgdXNlIGEgY29tbWEgdG8gc2VwYXJhdGUgZWFjaCBvcHRp b24uPC9kZD4KCQkJPGRkPklmIHlvdSBqdXN0IGxpc3Qgb3B0aW9ucywgdGhleSB3aWxsIGJl IHVzZWQgYXMgbGFiZWxzIGV4YWN0bHkgYXMgeW91IGRlZmluZSB0aGVtLiBXaGVuIHJlZmVy cmluZyB0byB0aGVtIHdpdGggdGhlIHB1YmxpYyB0YWdzLCB0aGUgZmllbGQgPGVtPm5hbWVz PC9lbT4gd2lsbCBiZSBhbGwgbG93ZXIgY2FzZSwgaGF2ZSAmIzgyMTY7bm9uLXdlYi1zYWZl JiM4MjE3OyBjaGFyYWN0ZXJzIHJlbW92ZWQsIGFuZCB3aWxsIGhhdmUgc3BhY2VzIGNvbnZl cnRlZCB0byB1bmRlcnNjb3Jlcy4gU2VlIHRoZSA8YSBocmVmPSIjc21kX2Jpb19saXN0X2V4 YW1wbGUiPmV4YW1wbGU8L2E+IGZvciBmdXJ0aGVyIGRldGFpbHMuPC9kZD4KCQkJPGRkPklu IHNlbGVjdCBsaXN0cywgeW91IG1heSBwdXQgYW4gZW1wdHkgb3B0aW9uIGF0IHRoZSB0b3Ag aWYgeW91IHdpc2ggYnkgYmVnaW5uaW5nIHRoZSBsaXN0IHdpdGggYSBjb21tYS48L2RkPgoJ CQk8ZGQ+SW4gc2VsZWN0IGxpc3RzLCBjaGVja2JveCBhbmQgcmFkaW8gc2V0cyB5b3UgbWF5 IGFsc28gbWFyayBsYWJlbChzKSB3aXRoIDxjb2RlPlsqXTwvY29kZT4gdG8gaW5kaWNhdGUg aXQgaXMgYSBkZWZhdWx0IGNoZWNrZWQvc2VsZWN0ZWQgdmFsdWUuIFJhZGlvIHNldHMgYW5k IHNpbmdsZS1zZWxlY3QgbGlzdHMgb25seSBwZXJtaXQgb25lIG1hcmtlci48L2RkPgoJCTwv ZGw+PC9kZD4KCQk8L2RsPjwvZGQ+Cgk8ZHQ+PHN0cm9uZz5Qb3NpdGlvbjwvc3Ryb25nPjwv ZHQ+Cgk8ZGQ+VGhlIG9yZGVyIGluIHdoaWNoIHRoZSBmaWVsZHMgYXBwZWFyIG9uIHRoZSA8 aT5BZG1pbi0mZ3Q7VXNlcnM8L2k+IHRhYjwvZGQ+Cgk8ZGQ+WW91IGNhbiB1c2UgYW55IGFs cGhhbnVtZXJpYyBzeXN0ZW0gdG8gc29ydCwgZS5nIDxjb2RlPjEwLCAyMCwgMzAsLi4uPC9j b2RlPiBvciA8Y29kZT5hLCBiLCBjLi4uPC9jb2RlPi4gVGhlIGxvd2VyIHRoZSB2YWx1ZSB0 aGUgaGlnaGVyIHVwIHRoZSBzY3JlZW4gaXQgd2lsbCBiZTwvZGQ+CjwvZGw+Cgo8aDMgaWQ9 InNtZF9iaW9fbGlzdF9leGFtcGxlIj5EZWZpbmluZyB5b3VyIG93biBsaXN0czwvaDM+Cgo8 cD5UaGVyZSBhcmUgYSBmZXcgb2Ygd2F5cyB0byBkZWZpbmUgeW91ciBvd24gbmFtZXMgYW5k L29yIGxhYmVscyBmb3IgdXNlIGluIHNlbGVjdCBsaXN0cywgcmFkaW8gc2V0cyBhbmQgY2hl Y2tib3ggZ3JvdXBzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZT5sYWJlbF8xCmxh YmVsXzIKbGFiZWxfMwouLi48L2NvZGU+PC9wcmU+Cgo8cD5vcjwvcD4KCjxwcmUgY2xhc3M9 ImJsb2NrIj48Y29kZT5sYWJlbF8xLCBsYWJlbF8yLCBsYWJlbF8zLCAuLi48L2NvZGU+PC9w cmU+Cgo8cD5vcjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZT5uYW1lXzEgPSZndDsg bGFiZWxfMSwgbmFtZV8yID0mZ3Q7IGxhYmVsXzIsIG5hbWVfMy4uLjwvY29kZT48L3ByZT4K CjxwPih5b3UgbWF5IGFsc28gcHV0IGVhY2ggbmFtZS1sYWJlbCBwYWlyIG9uIGEgc2VwYXJh dGUgbGluZSBpZiB5b3Ugd2lzaCkuIEhlcmUmIzgyMTc7cyBhbiBleGFtcGxlIGZvciBhIGRy b3Bkb3duIGxpc3Qgb2YgRGVwYXJ0bWVudHM6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxj b2RlPnNhbGVzID0mZ3Q7IFNhbGVzCm1rdGcgPSZndDsgTWFya2V0aW5nCmVuZyA9Jmd0OyBF bmdpbmVlcmluZwpxdWFsID0mZ3Q7IFF1YWxpdHkgYXNzdXJhbmNlCml0ID0mZ3Q7IFRlY2gg c3VwcG9ydDwvY29kZT48L3ByZT4KCjxwPklmIHlvdSBkZWZpbmVkIHRoZSBsaXN0IGFzIGFi b3ZlLCB5b3VyIGZpZWxkIG5hbWVzIHdvdWxkIGJlIDxjb2RlPnNhbGVzPC9jb2RlPiwgPGNv ZGU+bWt0ZzwvY29kZT4sIDxjb2RlPmVuZzwvY29kZT4sIDxjb2RlPnF1YWw8L2NvZGU+IGFu ZCA8Y29kZT5pdDwvY29kZT4sIHJlc3BlY3RpdmVseS48L3A+Cgo8cD5JZiwgaG93ZXZlciwg eW91IG9taXQgdGhlIGZpZWxkIG5hbWVzLCB2aXo6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2si Pjxjb2RlPlNhbGVzCk1hcmtldGluZwpFbmdpbmVlcmluZwpRdWFsaXR5IGFzc3VyYW5jZQpU ZWNoIHN1cHBvcnQ8L2NvZGU+PC9wcmU+Cgo8cD50aGVuIHlvdSB3b3VsZCByZWZlciB0byB0 aGUgZmllbGRzIHdpdGg6IDxjb2RlPnNhbGVzPC9jb2RlPiwgPGNvZGU+bWFya2V0aW5nPC9j b2RlPiwgPGNvZGU+ZW5naW5lZXJpbmc8L2NvZGU+LCA8Y29kZT5xdWFsaXR5X2Fzc3VyYW5j ZTwvY29kZT4sIGFuZCA8Y29kZT50ZWNoX3N1cHBvcnQ8L2NvZGU+LCByZXNwZWN0aXZlbHku PC9wPgoKPHA+Rm9yIG11bHRpcGxlIHNlbGVjdCBsaXN0cyBhbmQgY2hlY2tib3ggZ3JvdXBz IHlvdSBjYW4gb3B0aW9uYWxseSBkZWZpbmUgc29tZSBvZiB0aGUgZW50cmllcyBhcyBkZWZh dWx0cy4gRm9yIGV4YW1wbGUgaW4geW91ciA8Y29kZT5zdWJzY3JpcHRpb25zPC9jb2RlPiBj aGVja2JveCBncm91cDo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGU+S2VycmFuZwpG dXR1cmUgTXVzaWNbKl0KTk1FClNvdW5kIG9uIFNvdW5kWypdPC9jb2RlPjwvcHJlPgoKPHA+ VGhlIHNhbWUgc3lzdGVtIGFwcGxpZXMgdG8gc2luZ2xlIG9yIG11bHRpcGxlIHNlbGVjdCBs aXN0cyBhbmQgcmFkaW8gc2V0cywgYWx0aG91Z2ggZm9yIHNpbmdsZSBzZWxlY3RzIGFuZCBy YWRpbyBzZXRzLCBvbmx5IG9uZSBlbGVtZW50IG1heSBiZSBzdGFycmVkIChpZiB5b3Ugc3Rh ciBtb3JlLCBvbmx5IG9uZSBvZiB0aGUgZGVmYXVsdHMgd2lsbCBwcmV2YWlsKS48L3A+Cgo8 cD5UaGVyZSBpcyBvbmUgZnVydGhlciBtZXRob2Qgb2YgZW50ZXJpbmcgZGF0YSwgYW5kIHRo YXQgaXMgdG8gY2FsbCBhbm90aGVyIDxzcGFuIGNsYXNzPSJjYXBzIj5QSFA8L3NwYW4+IGZ1 bmN0aW9uLiBQZXJoYXBzIHlvdSB3YW50IHRvIG9mZmVyIGEgc2VsZWN0IGxpc3Qgb2YgYWxs IGNvdW50cmllcyBvZiB0aGUgd29ybGQuIFlvdSBjb3VsZCB0eXBlIHRoZW0gaW4gb3IgY29w eSBhbmQgcGFzdGUgdGhlbSBmcm9tIHRoZSBJbnRlcm5ldCBhcyBsb25nIGFzIHRoZXkgd2Vy ZSBpbiB0aGUgY29ycmVjdCA8Y29kZT5rZXkgPSZndDsgdmFsdWU8L2NvZGU+IG9yIGNvbW1h LXNlcGFyYXRlZCBmb3JtYXQuIEFsdGVybmF0aXZlbHkgeW91IGNvdWxkIHB1dCB0aGlzIGlu IHRoZSA8ZW0+VmFsdWU8L2VtPiBib3g6PC9wPgoKPHByZT48Y29kZT5TTURfQklPX0ZOfGZ1 bmN0aW9uX25hbWV8cGFyYW1fMXxwYXJhbV8yfC4uLjwvY29kZT48L3ByZT4KCjxwPkFzIGxv bmcgYXMgdGhhdCBuYW1lZCBmdW5jdGlvbiByZXR1cm5zIGEgc3RhbmRhcmQgPHNwYW4gY2xh c3M9ImNhcHMiPlBIUDwvc3Bhbj4gYXJyYXksIHRoZSB2YWx1ZXMgYW5kIGFueSBrZXlzIHJl dHVybmVkIHdpbGwgYmUgaW5qZWN0ZWQgaW50byB0aGUgPGVtPlZhbHVlPC9lbT4gYm94IGF1 dG9tYXRpY2FsbHkuPC9wPgoKPGgyPkVudGVyaW5nIHVzZXIgZGF0YTogPGVtPkFkbWluLSZn dDtVc2VyczwvZW0+PC9oMj4KCjxwPllvdXIgY29uZmlndXJlZCBmaWVsZHMgd2lsbCBhcHBl YXIgb24gdGhlIDxlbT5BZG1pbi0mZ3Q7VXNlcnM8L2VtPiBwYW5lbCwgYmVuZWF0aCB0aGUg dXN1YWwgY3JvcCBvZiBkYXRhIGlucHV0IGZpZWxkcy4gU2ltcGx5IGVudGVyIGRhdGEgaW4g dGhlbSBhbmQgaXQgd2lsbCBiZSBzYXZlZCBhbG9uZyB3aXRoIHRoZSBleGlzdGluZyB1c2Vy IGRhdGEuIEhpdCA8ZW0+RWRpdDwvZW0+IGFuZCBhbnkgY29uZmlndXJlZCBpbmZvIHdpbGwg YmUgcmV0cmlldmVkIGZvciBlZGl0aW5nLjwvcD4KCjxwPldoZW4gY2hvb3NpbmcgYW4gaW1h Z2UsIHlvdSBjYW4gZWl0aGVyIHR5cGUgaXRzIElEIGluIHRoZSBib3ggb3IgdXNlIHRoZSBk cm9wZG93biBzZWxlY3QgbGlzdCB0byBjaG9vc2UgYW4gaW1hZ2UuIFRoZSBjaG9zZW4gaW1h Z2Ugd2lsbCBhcHBlYXIgYmVsb3cgdGhlIGlucHV0IGNvbnRyb2xzLjwvcD4KCjxwPklmIHlv dSB3aXNoIHRvIGFsdGVyIHRoZSBsYXlvdXQgb2YgdGhlIGlucHV0IGNvbnRyb2xzLCB5b3Ug bWF5IGNyZWF0ZSBhIHN0YW5kYXJkIHN0eWxlc2hlZXQgaW4gPGVtPlByZXNlbnRhdGlvbi0m Z3Q7U3R5bGU8L2VtPiBhbmQgbmFtZSBpdCA8Y29kZT5zbWRfYmlvPC9jb2RlPi4gSXQgd2ls bCBiZSBsb2FkZWQgYXV0b21hdGljYWxseSB3aGVuIHlvdSB2aXNpdCB0aGUgPGVtPkFkbWlu LSZndDtVc2VyczwvZW0+IHBhbmVsLjwvcD4KCjxwPlRvIHF1aWNrbHkgdmlldyB0aGUgZXh0 ZW5kZWQgYmlvIGluZm9ybWF0aW9uIGZvciBhIHVzZXIsIGhvdmVyIG92ZXIgdGhlIHVzZXIm IzgyMTc7cyBsb2dpbiBuYW1lIGxpbmsgaW4gdGhlIGxpc3Q7IGEgdG9vbHRpcCB3aWxsIGFw cGVhciBzaG93aW5nIHNvbWUgb2YgdGhlIGV4dGVuZGVkIGJpby4gVGhlIGRhdGEgaXMgZmV0 Y2hlZCBmcm9tIHRoZSBzZXJ2ZXIgd2hlbiB5b3UgZmlyc3QgaG92ZXIgb3ZlciB0aGUgcm93 IHNvIGl0IG1heSB0YWtlIGEgZmV3IHNlY29uZHMgdG8gbG9hZCAoYW5kIG1heSByZXF1aXJl IHlvdSB0byB3aWdnbGUgdGhlIG1vdXNlIGFyb3VuZCBhIGJpdCB0byBnZXQgaXQgdG8gZGlz cGxheSwgc29ycnkhKTwvcD4KCjxoMj5FbnRlcmluZyB1c2VyIGRhdGE6IDxlbT5BZG1pbi0m Z3Q7VXNlciBtYW5hZ2VyPC9lbT48L2gyPgoKPHA+SWYgeW91IGhhdmUgdGhlIHNtZF91c2Vy X21hbmFnZXIgcGx1Z2luIGluc3RhbGxlZCwgc21kX2JpbyB3aWxsIGhvb2sgaW50byB0aGF0 IHBsdWdpbi4gV2hlbiB5b3UgaG92ZXIgb3ZlciB0aGUgbG9naW4gbmFtZSBvZiBhbiBlbnRy eSBpbiB0aGUgVXNlciBsaXN0LCBkZXRhaWxlZCBiaW8gaW5mb3JtYXRpb24gaXMgcmV0cmll dmVkIGFuZCBkaXNwbGF5ZWQgYXMgYSB0b29sdGlwLiBFZGl0aW5nIGEgdXNlciB3aWxsIGFs c28gcGVybWl0IEJpbyBpbmZvcm1hdGlvbiB0byBiZSBlbnRlcmVkLjwvcD4KCjxoMj5EaXNw bGF5aW5nIHVzZXIgYmlvIGluZm8gb24geW91ciBzaXRlPC9oMj4KCjxwPldoZW4geW91IGNy ZWF0ZSBhIG5ldyA8ZW0+ZmllbGQ8L2VtPiBpbiB0aGUgPGEgaHJlZj0iI3NtZF9iaW9fY29u ZmlnIj5CaW8gQ29uZmlnPC9hPiBwYW5lLCBpdCBoYXMgdmFyaW91cyBhdHRyaWJ1dGVzIGxp a2UgbmFtZSwgdGl0bGUsIHNpemUsIHZhbHVlLCBldGMuIFRoZSA8Y29kZT5uYW1lPC9jb2Rl PiBpcyB0aGUga2V5OiB0aGF0IGlzIGhvdyB5b3UgcmVmZXIgdG8gdGhlIGZpZWxkIHVzaW5n IHRoZSA8Y29kZT5maWVsZDwvY29kZT4gb3IgPGNvZGU+ZmllbGRzPC9jb2RlPiBhdHRyaWJ1 dGVzIGluIHRoZSB2YXJpb3VzIHRhZ3MgKGJlbG93KS48L3A+Cgo8cD5FYWNoIGZpZWxkIGhh cyBhIHZhcmlldHkgb2YgcGllY2VzIG9mIGRhdGEgdGhhdCB5b3UgbWF5IGRpc3BsYXkuIFRo ZXNlIGFyZSBrbm93biBhcyA8Y29kZT5pdGVtczwvY29kZT4gYW5kIHRoZSBwcmltYXJ5IG9u ZXMgYXJlOjwvcD4KCjxvbD4KCTxsaT48Y29kZT52YWx1ZTwvY29kZT4gOiB0aGUgY3VycmVu dCB2YWx1ZSBvZiB0aGUgZmllbGQgdGhhdCBoYXMgYmVlbiBzZWxlY3RlZCAvIHR5cGVkIGJ5 IHRoZSB1c2VyIGluIHRoZWlyIHByb2ZpbGUuPC9saT4KCTxsaT48Y29kZT50aXRsZTwvY29k ZT4gOiB0aGUgaHVtYW4gZnJpZW5kbHkgdGl0bGUgKGEuay5hLiA8ZW0+bGFiZWw8L2VtPikg dGhhdCB5b3UgaGF2ZSBhc3NpZ25lZCB0byB5b3VyIGZpZWxkIGluIHRoZSBCaW8gQ29uZmln IHNjcmVlbiAmIzgyMTI7IHRoaXMgaXMgaGFuZHkgaWYgeW91IHdhbnQgdG8gcHJpbnQgb3V0 IHRoZSB0aXRsZSBhbG9uZ3NpZGUgdGhlIGRhdGEgdmFsdWUgaXRzZWxmLCBlLmcuIERlcGFy dG1lbnQ6IHNhbGVzLjwvbGk+Cgk8bGk+PGNvZGU+bmFtZTwvY29kZT4gOiB0aGUgZmllbGQm IzgyMTc7cyBrZXkgKHNob3duIGluIHRoZSAmIzgyMTY7TmFtZSYjODIxNzsgY29sdW1uIG9u IHRoZSBCaW8gQ29uZmlnIHBhbmVsKS4gVGhpcyBpcyBvZiBsZXNzIGV2ZXJ5ZGF5IHVzZSwg YnV0IHdoZW4gYnVpbGRpbmcgeW91ciBvd24gaW5wdXQgc2NyZWVucyBmb3IgY2FwdHVyaW5n IGJpbyBkYXRhLCBpdCBiZWNvbWVzIGhhbmR5IHNvIHlvdSBjYW4gdGVsbCBtZW1fZm9ybSB0 aGUgbmFtZSBvZiB0aGUgZmllbGQgaXQgbmVlZHMgdG8gc3RvcmUgdGhlIGJpbyBkYXRhIGl0 ZW0gaW4uPC9saT4KPC9vbD4KCjxwPlRoZXJlIGFyZSBvdGhlciBpdGVtcyB1c2VmdWwgZm9y IGRpc3BsYXlpbmcgdGhlIGZpZWxkIHR5cGUsIHZhcmlvdXMgY291bnRlcnMsIG9yIGZvciBk aXZpbmcgZGVlcGVyIGludG8gdGhlIGF2YWlsYWJsZSBvcHRpb25zIGluIGxpc3RzLCByYWRp byBzZXRzLCBjaGVja2JveGVzLCBldGMsIGJ1dCB0aGUgbW9zdCBpbXBvcnRhbnQgY29uY2Vw dCBpcyB0aGF0IGEgPGNvZGU+ZmllbGQ8L2NvZGU+IGlzIHlvdXIgYmlvIHRoaW5nYW15Ym9i IChpdCYjODIxNztzIE5hbWUgLyBLZXkpLCBhbmQgYW4gPGNvZGU+aXRlbTwvY29kZT4gaXMg dGhlIHBhcnQgb2YgdGhpbmdhbXlib2IgeW91IHdhbnQgdG8gZGlzcGxheTogaXRzIHZhbHVl LCB0aXRsZSwgbmFtZSAoYS5rLmEuIGtleSksIHR5cGUsIGRlZmF1bHQgdmFsdWVzLCBhbmQg c28gb24uPC9wPgoKPGgyIGlkPSJzbWRfYmlvX2luZm8iPlRhZzogPGNvZGU+Jmx0O3R4cDpz bWRfYmlvX2luZm8mZ3Q7PC9jb2RlPjwvaDI+Cgo8cD5Vc2UgdGhpcyB0YWcgdG8gZGlzcGxh eSBwaWVjZXMgb2YgaW5mbyBmcm9tIGEgdXNlciYjODIxNztzIGJpb2dyYXBoeS4gT25lIG9y IG1vcmUgb2YgdGhlc2UgdGFncyBjYW4gYmUgZW1wbG95ZWQgZGVwZW5kaW5nIG9uIGhvdyB5 b3UgcHJlZmVyIHRvIHdvcmsuIEl0IG1heSBhbHNvIGJlIHVzZWQgYXMgYSBjb250YWluZXIg KG9yIHZpYSB0aGUgPGNvZGU+Zm9ybTwvY29kZT4gYXR0cmlidXRlKSB0byBhbGxvdyB5b3Ug dG8gZW1iZWQgb3RoZXIgVGV4dHBhdHRlcm4gdGFncy48L3A+Cgo8cD5UaGlzIHRhZyByZXF1 aXJlcyBhcnRpY2xlIGNvbnRleHQgc28geW91IG5vcm1hbGx5IHVzZSBpdCBpbnNpZGUgPGNv ZGU+Jmx0O3R4cDppZl9pbmRpdmlkdWFsX2FydGljbGUmZ3Q7PC9jb2RlPiB0YWdzLiBCeSBk ZWZhdWx0IGl0IHdpbGwgbG9vayB1cCB0aGUgYXV0aG9yIG9mIHRoZSBjdXJyZW50bHkgdmll d2VkIGFydGljbGUgYW5kIGRpc3BsYXkgdGhlIGdpdmVuIGJpbyBmaWVsZHMgZnJvbSB0aGF0 IGF1dGhvci48L3A+Cgo8cD5JZiB5b3UmIzgyMTc7cmUgdHJ5aW5nIHRvIGRpc3BsYXkgYmlv IGluZm8gaW4gYSBzaWRlYmFyIG9yIG9uIGEgbGlzdCBwYWdlIHRoYXQgZG9lcyBub3QgbmVj ZXNzYXJpbHkgaGF2ZSBhcnRpY2xlIGNvbnRleHQsIHlvdSBuZWVkIHRvIHNwZWNpZnkgdGhl IGF1dGhvcihzKSB0aGF0IHlvdSB3aXNoIHRvIGRpc3BsYXkgYmlvIGluZm8gZnJvbS4gSW4g djAuM3ggeW91IGRpZCB0aGF0IHdpdGggdGhlIDxjb2RlPmF1dGhvcnM8L2NvZGU+IGF0dHJp YnV0ZTsgaW4gdjAuNHggeW91IHdyYXAgeW91ciA8Y29kZT4mbHQ7dHhwOnNtZF9iaW9faW5m byZndDs8L2NvZGU+IHRhZyBpbiBhbiA8YSBocmVmPSIjc21kX2Jpb19hdXRob3IiPnNtZF9i aW9fYXV0aG9yPC9hPiB0YWcuPC9wPgoKPHA+VXNlIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRl cyB0byB0d2VhayB0aGlzIHRhZyYjODIxNztzIG91dHB1dC4gVGhlIGRlZmF1bHQgdmFsdWUg aXMgdW5zZXQgdW5sZXNzIG90aGVyd2lzZSBub3RlZDo8L3A+Cgo8ZGw+Cgk8ZHQ+PHN0cm9u Zz5maWVsZHM8L3N0cm9uZz48L2R0PgoJPGRkPkxpc3Qgb2YgYmlvIGZpZWxkIDxlbT5uYW1l czwvZW0+IHlvdSB3aXNoIHRvIGRpc3BsYXksIGluIHRoZSBvcmRlciB5b3Ugd2lzaCB0byBk aXNwbGF5IHRoZW0uPC9kZD4KCTxkZD5Ob3RlIHlvdSBjYW4gYWxzbyBkaXNwbGF5IGJpbyBp bmZvcm1hdGlvbiBmcm9tIHRoZSBzdGFuZGFyZCBUZXh0cGF0dGVybiB1c2VyIHRhYmxlLCBp LmUuIHlvdSBjYW4gdXNlIGFueSBvZiB0aGUgZm9sbG93aW5nLCAoY2FzZSBzZW5zaXRpdmUp IDogPGNvZGU+dXNlcl9pZDwvY29kZT4sIDxjb2RlPm5hbWU8L2NvZGU+IChsb2dpbiBuYW1l KSwgPGNvZGU+UmVhbE5hbWU8L2NvZGU+LCA8Y29kZT5lbWFpbDwvY29kZT4sIDxjb2RlPnBy aXZzPC9jb2RlPiwgPGNvZGU+bGFzdF9hY2Nlc3M8L2NvZGU+PC9kZD4KCTxkZD5EZWZhdWx0 OiB1bnNldCAoaS5lLiBhbGwgZmllbGRzKTwvZGQ+Cgk8ZHQ+PHN0cm9uZz5leGNsdWRlPC9z dHJvbmc+PC9kdD4KCTxkZD5MaXN0IG9mIGJpbyBmaWVsZCA8ZW0+bmFtZXM8L2VtPiB5b3Ug ZG8gPHN0cm9uZz5ub3Q8L3N0cm9uZz4gd2lzaCB0byBkaXNwbGF5LiBUaGlzIG92ZXJyaWRl cyA8Y29kZT5maWVsZHM8L2NvZGU+PC9kZD4KCTxkdD48c3Ryb25nPmZvcm08L3N0cm9uZz48 L2R0PgoJPGRkPlRoZSBuYW1lIG9mIGEgVHhwIEZvcm0gd2l0aCB3aGljaCB0byBwcm9jZXNz IGVhY2ggcmVjb3JkLjwvZGQ+Cgk8ZGQ+SWYgbm90IHNwZWNpZmllZCwgdGhlIHRhZyYjODIx NztzIGNvbnRhaW5lciB3aWxsIGJlIHVzZWQuPC9kZD4KCTxkZD5JZiB0aGUgY29udGFpbmVy IGlzIGVtcHR5LCBkZWZhdWx0IG91dHB1dCBpcyB1c2VkIChsYWJlbCBhbmQgZmllbGQgY29u dGVudHMpLjwvZGQ+Cgk8ZHQ+PHN0cm9uZz53cmFwdGFnPC9zdHJvbmc+PC9kdD4KCTxkZD48 c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gdGFnICh3aXRob3V0IGFuZ2xlIGJyYWNr ZXRzKSB0byB3cmFwIGFyb3VuZCBlYWNoIHJlY29yZC48L2RkPgoJPGR0PjxzdHJvbmc+Y2xh c3M8L3N0cm9uZz48L2R0PgoJPGRkPkZpeGVkIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3Nw YW4+IGNsYXNzIG5hbWUgdG8gYWRkIHRvIGVhY2ggcmVjb3JkJiM4MjE3O3Mgd3JhcHRhZy48 L2RkPgoJPGR0PjxzdHJvbmc+YnJlYWs8L3N0cm9uZz48L2R0PgoJPGRkPjxzcGFuIGNsYXNz PSJjYXBzIj5IVE1MPC9zcGFuPiB0YWcgdG8gcHV0IGJldHdlZW4gZWFjaCBmaWVsZC48L2Rk PgoJPGR0PjxzdHJvbmc+YnJlYWtjbGFzczwvc3Ryb25nPjwvZHQ+Cgk8ZGQ+PHNwYW4gY2xh c3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgbmFtZSB0byBhZGQgdG8gZWFjaCBmaWVsZCYj ODIxNztzIHdyYXB0YWcuPC9kZD4KCTxkZD5UaGUgZGVmYXVsdCBpcyB0byBhdXRvbWF0aWNh bGx5IGFzc2lnbiA8Y29kZT5zbWRfYmlvXypuYW1lX29mX2ZpZWxkKjwvY29kZT4gKGUuZy4g c21kX2Jpb19jZWxsLCBzbWRfYmlvX2RlcHQsIGV0YykuPC9kZD4KCTxkdD48c3Ryb25nPmxh YmVsdGFnPC9zdHJvbmc+PC9kdD4KCTxkZD48c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bh bj4gdGFnICh3aXRob3V0IGFuZ2xlIGJyYWNrZXRzKSB0byB3cmFwIGFyb3VuZCB0aGUgZmll bGQmIzgyMTc7cyBsYWJlbC48L2RkPgoJPGR0PjxzdHJvbmc+bGFiZWw8L3N0cm9uZz48L2R0 PgoJPGRkPldoZXRoZXIgdG8gZGlzcGxheSBhIGxhYmVsIG9yIG5vdCBmb3IgZWFjaCBmaWVs ZC4gQ2hvb3NlIGZyb206Cgk8ZGw+CgkJPGRkPjxzdHJvbmc+MTwvc3Ryb25nPiA6IChkZWZh dWx0KSBEaXNwbGF5IHRoZSBUaXRsZSBvZiB0aGUgZmllbGQ8L2RkPgoJCTxkZD48c3Ryb25n PjA8L3N0cm9uZz4gOiBEaXNwbGF5IHRoZSBOYW1lIG9mIHRoZSBmaWVsZDwvZGQ+CgkJPGRk PjxzdHJvbmc+c29tZSBsYWJlbDwvc3Ryb25nPiA6IERpc3BsYXkgdGhlIGdpdmVuIHRleHQg YXMgYSBsYWJlbDwvZGQ+Cgk8L2RsPjwvZGQ+Cgk8L2RsPgo6OiAmIzgyMjA7JiM4MjIxOyAo aS5lLiBlbXB0eSkgOiBEbyBub3QgZGlzcGxheSBhbnkgbGFiZWw8YnIgLz4KPGRsPgoJPGR0 PjxzdHJvbmc+c2hvd19lbXB0eTwvc3Ryb25nPjwvZHQ+Cgk8ZGQ+Q2hvb3NlIGlmIHlvdSB3 aXNoIHRvIGhpZGUgKDApIG9yIHNob3cgKDEpIGFueSBmaWVsZHMgdGhhdCBoYXZlIG5vIGRh dGEgYXNzaWduZWQgdG8gdGhlbS48L2RkPgoJPGRkPkRlZmF1bHQ6IDA8L2RkPgo8L2RsPgoK PGgyIGlkPSJzbWRfYmlvX2F1dGhvciI+VGFnOiA8Y29kZT4mbHQ7dHhwOnNtZF9iaW9fYXV0 aG9yJmd0OzwvY29kZT48L2gyPgoKPHA+V3JhcCB0aGlzIHRhZyBhcm91bmQgPGNvZGU+Jmx0 O3R4cDpzbWRfYmlvX2luZm8mZ3Q7PC9jb2RlPiB0YWdzIHRvIGRpc3BsYXkgaW5mb3JtYXRp b24gZnJvbSBtb3JlIHRoYW4gb25lIHVzZXIuIFRoZSBjb250YWluZWQgY29udGVudCB3aWxs IGJlIGRpc3BsYXllZCBmb3IgZWFjaCBhdXRob3IuPC9wPgoKPGRsPgoJPGR0PjxzdHJvbmc+ YXV0aG9yPC9zdHJvbmc+PC9kdD4KCTxkZD5Db21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBhdXRo b3IgbG9naW4gbmFtZXMgZnJvbSB3aGljaCB5b3Ugd2lzaCB0byBkaXNwbGF5IGluZm8uPC9k ZD4KCTxkZD5JZiBvbWl0dGVkLCB0aGUgY3VycmVudCAoaW5kaXZpZHVhbCBhcnRpY2xlKSBh dXRob3Igd2lsbCBiZSB1c2VkICYjODIxMjsgZnVuY3Rpb25hbGx5IHRoZSBzYW1lIGFzIGlm IHlvdSBqdXN0IHVzZWQgPGNvZGU+Jmx0O3R4cDpzbWRfYmlvX2luZm8gLyZndDs8L2NvZGU+ IHdpdGhvdXQgdGhlIGF1dGhvciB3cmFwcGVyIHRhZy48L2RkPgoJPGRkPllvdSBtYXkgc3Bl Y2lmeSBhbnkgb2YgeW91ciBjb21tYS1zZXBhcmF0ZWQgZW50cmllcyBhcyA8Y29kZT5TTURf UFJJVlM6PC9jb2RlPiBhbmQgdGhlbiBjb2xvbi1zZXBhcmF0ZSB0aGUgcHJpdiBudW1iZXJz LiBBbnkgdXNlcnMgd2l0aCB0aG9zZSBtYXRjaGluZyBsZXZlbChzKSB3aWxsIGJlIGRpc3Bs YXllZC48L2RkPgoJPGRkPllvdSBtYXkgYWxzbyB1c2UgPGNvZGU+U01EX0FMTDwvY29kZT4g dG8gcmV0dXJuIGFsbCBkZWZpbmVkIGF1dGhvcnMuPC9kZD4KCTxkdD48c3Ryb25nPnNvcnQ8 L3N0cm9uZz48L2R0PgoJPGRkPk9yZGVyIHRoZSBhdXRob3JzIGJ5IHRoZSBnaXZlbiBjb21t YS1zZXBhcmF0ZWQgbGlzdCBvZiBjb2x1bW5zIGFuZCBzb3J0IGRpcmVjdGlvbnMuIFlvdSBj YW4gb3JkZXIgdGhlIHJlc3VsdHMgYnkgYW55IG9mIHRoZSBidWlsdC1pbiB1c2VyIGNvbHVt bnMgKFJlYWxOYW1lLCBuYW1lLCB1c2VyX2lkLCBlbWFpbCwgbGFzdF9hY2Nlc3MsIHByaXZz KSBvciB5b3VyIG93biBiaW8gZmllbGRzLjwvZGQ+Cgk8ZGQ+Rm9yIHRoZSBzb3J0IG9yZGVy IHlvdSBjYW4gY2hvb3NlIGZyb206Cgk8ZGw+CgkJPGRkPjxzdHJvbmc+YXNjPC9zdHJvbmc+ OiBhc2NlbmRpbmcgb3JkZXI8L2RkPgoJCTxkZD48c3Ryb25nPmRlc2M8L3N0cm9uZz46IGRl c2NlbmRpbmcgb3JkZXI8L2RkPgoJPC9kbD48L2RkPgoJPGRkPkRlZmF1bHQ6IDxjb2RlPlJl YWxOYW1lIGFzYzwvY29kZT48L2RkPgoJPGR0PjxzdHJvbmc+Zm9ybTwvc3Ryb25nPjwvZHQ+ Cgk8ZGQ+VGhlIG5hbWUgb2YgYSBUeHAgRm9ybSB3aXRoIHdoaWNoIHRvIHByb2Nlc3MgZWFj aCBhdXRob3IuPC9kZD4KCTxkZD5JZiBub3Qgc3BlY2lmaWVkLCB0aGUgdGFnJiM4MjE3O3Mg Y29udGFpbmVyIHdpbGwgYmUgdXNlZC48L2RkPgoJPGRkPklmIHRoZSBjb250YWluZXIgaXMg ZW1wdHksIHRoZSBuYW1lIG9mIHRoZSBhdXRob3IgaXMgZGlzcGxheWVkLjwvZGQ+Cgk8ZHQ+ PHN0cm9uZz53cmFwdGFnPC9zdHJvbmc+PC9kdD4KCTxkZD48c3BhbiBjbGFzcz0iY2FwcyI+ SFRNTDwvc3Bhbj4gdGFnICh3aXRob3V0IGFuZ2xlIGJyYWNrZXRzKSB0byB3cmFwIGFyb3Vu ZCB0aGUgZW50aXJlIG91dHB1dC48L2RkPgoJPGR0PjxzdHJvbmc+Y2xhc3M8L3N0cm9uZz48 L2R0PgoJPGRkPjxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5hbWUgdG8g YWRkIHRvIHRoZSB3cmFwdGFnLjwvZGQ+Cgk8ZHQ+PHN0cm9uZz5icmVhazwvc3Ryb25nPjwv ZHQ+Cgk8ZGQ+PHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IHRhZyAod2l0aG91dCBh bmdsZSBicmFja2V0cykgdG8gd3JhcCBhcm91bmQgZWFjaCBhdXRob3IgcmVjb3JkLjwvZGQ+ Cgk8ZHQ+PHN0cm9uZz5icmVha2NsYXNzPC9zdHJvbmc+PC9kdD4KCTxkZD48c3BhbiBjbGFz cz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFzcyBuYW1lIHRvIGFwcGx5IHRvIGVhY2ggYnJlYWsg dGFnLjwvZGQ+Cgk8ZHQ+PHN0cm9uZz5sYWJlbHRhZzwvc3Ryb25nPjwvZHQ+Cgk8ZGQ+PHNw YW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IHRhZyAod2l0aG91dCBhbmdsZSBicmFja2V0 cykgdG8gd3JhcCBhcm91bmQgdGhlIGxhYmVsLjwvZGQ+Cgk8ZHQ+PHN0cm9uZz5sYWJlbDwv c3Ryb25nPjwvZHQ+Cgk8ZGQ+VGhlIGxhYmVsIHRleHQgdG8gZGlzcGxheSBhYm92ZSBhbGwg YXV0aG9yIGluZm8uPC9kZD4KPC9kbD4KCjxoMiBpZD0ic21kX2Jpb19kYXRhIj5UYWc6IDxj b2RlPiZsdDt0eHA6c21kX2Jpb19kYXRhJmd0OzwvY29kZT4gPHN1cD4oZm9ybWVybHkgPGEg aHJlZj0iI3NtZF9iaW9fcmVwa2V5cyI+cmVwbGFjZW1lbnQga2V5czwvYT4pPC9zdXA+PC9o Mj4KCjxwPkluc2lkZSB5b3VyIDxhIGhyZWY9IiNzbWRfYmlvX2luZm8iPnNtZF9iaW9faW5m bzwvYT4gZm9ybSBvciBjb250YWluZXIgeW91IGNhbiBkaXNwbGF5IGJpb2dyYXBoaWNhbCBp bmZvcm1hdGlvbiB1c2luZyB0aGlzIHRhZy4gVGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzIHNl bGVjdCB3aGljaCBwaWVjZSBvZiBpbmZvcm1hdGlvbiB0byBkaXNwbGF5OjwvcD4KCjxkbD4K CTxkdD48c3Ryb25nPmZpZWxkPC9zdHJvbmc+PC9kdD4KCTxkZD5UaGUgYmlvIGZpZWxkIGZy b20geW91IHdpc2ggdG8gZGlzcGxheSBzb21lIGluZm9ybWF0aW9uIChlLmcuIGNlbGwsIHBo b25lLCBhZGRyZXNzLCBkZXBhcnRtZW50LCAmIzgyMzA7KS48L2RkPgoJPGR0PjxzdHJvbmc+ aXRlbTwvc3Ryb25nPjwvZHQ+Cgk8ZGQ+Q29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgYWN0dWFs IHBpZWNlKHMpIG9mIGluZm9ybWF0aW9uIHlvdSBuZWVkIGFib3V0IHRoZSBmaWVsZC4gQ2hv b3NlIGZyb206Cgk8ZGw+CgkJPGRkPjxzdHJvbmc+dmFsdWU8L3N0cm9uZz4gOiB0aGUgZmll bGQmIzgyMTc7cyBjb250ZW50LiBGdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB0byA8Y29kZT57 c21kX2Jpb18qZmllbGQqfTwvY29kZT4uPC9kZD4KCQk8ZGQ+PHN0cm9uZz5uYW1lPC9zdHJv bmc+IDogdGhlIGZpZWxkJiM4MjE3O3MgbmFtZSwgYXMgZGVmaW5lZCBvbiB0aGUgQmlvIENv bmZpZyB0YWIuIEVxdWl2YWxlbnQgdG8gPGNvZGU+e3NtZF9iaW9fKmZpZWxkKl9uYW1lfTwv Y29kZT4uPC9kZD4KCQk8ZGQ+PHN0cm9uZz50aXRsZTwvc3Ryb25nPiA6IHRoZSBmaWVsZCYj ODIxNztzICYjODIyMDtodW1hbiBmcmllbmRseSYjODIyMTsgdGl0bGUsIGFzIGRlZmluZWQg b24gdGhlIEJpbyBDb25maWcgdGFiLiBFcXVpdmFsZW50IHRvIDxjb2RlPntzbWRfYmlvXypm aWVsZCpfdGl0bGV9PC9jb2RlPi48L2RkPgoJCTxkZD48c3Ryb25nPnR5cGU8L3N0cm9uZz4g OiB0aGUgZmllbGQmIzgyMTc7cyBkYXRhIHR5cGUgKHRleHQsIHRleHRhcmVhLCBjaGVja2Jv eCwgc2VsZWN0IGxpc3QsIGV0YykuIE5vdGUgdGhhdCB0aGVyZSBpcyBubyBkaXN0aW5jdGlv biBiZXR3ZWVuIGEgc2luZ2xlIGNoZWNrYm94IGFuZCBhIGdyb3VwIG9mIHRoZW07IHRoZXkg YXJlIGFsbCBkZXNpZ25hdGVkIDxjb2RlPmNoZWNrYm94PC9jb2RlPi48L2RkPgoJCTxkZD48 c3Ryb25nPmRlZmF1bHQ8L3N0cm9uZz4gOiB0aGUgZmllbGQmIzgyMTc7cyBwcmUtaW5pdGlh bGl6ZWQsIG9yIGRlZmF1bHQgdmFsdWUuIFRoaXMgaXMgb25seSBzZXQgZm9yIG5vbi1saXN0 IGZpZWxkIHR5cGVzOiBsaXN0IGZpZWxkcyBoYXZlIGluZGl2aWR1YWwgJiM4MjE2O2RlZmF1 bHRfb3B0aW9uX04mIzgyMTc7IGVudHJpZXMgaW5zdGVhZCAoc2VlIGJlbG93KS48L2RkPgoJ CTxkZD48c3Ryb25nPm9wdGlvbl9OPC9zdHJvbmc+IDogdGhlIG5hbWUgKGtleSkgb2YgdGhl IE50aCBvcHRpb24gaW4gYSBsaXN0IChzZWxlY3QsIHJhZGlvLCBjaGVja2JveCBncm91cCku PC9kZD4KCQk8ZGQ+PHN0cm9uZz50aXRsZV9OPC9zdHJvbmc+IDogdGhlIHRpdGxlIG9mIHRo ZSBOdGggb3B0aW9uIGluIGEgbGlzdC48L2RkPgoJCTxkZD48c3Ryb25nPmNob3Nlbl9vcHRp b25fTjwvc3Ryb25nPiA6IHRoZSBuYW1lIChrZXkpIG9mIHRoZSBOdGggc2VsZWN0ZWQgb3B0 aW9uIGluIGEgbGlzdCAgKHNlbGVjdCwgcmFkaW8sIGNoZWNrYm94IGdyb3VwKS48L2RkPgoJ CTxkZD48c3Ryb25nPmNob3Nlbl90aXRsZV9OPC9zdHJvbmc+IDogdGhlIGxhYmVsIG9mIHRo ZSBOdGggc2VsZWN0ZWQgb3B0aW9uIGluIGEgbGlzdC48L2RkPgoJCTxkZD48c3Ryb25nPmRl ZmF1bHRfb3B0aW9uX048L3N0cm9uZz4gOiB0aGUgbmFtZSAoa2V5KSBvZiB0aGUgTnRoIGRl ZmF1bHQgb3B0aW9uPC9kZD4KCQk8ZGQ+PHN0cm9uZz5vcHRpb25fY291bnQ8L3N0cm9uZz4g OiB0aGUgdG90YWwgbnVtYmVyIG9mIGxpc3Qgb3B0aW9ucy48L2RkPgoJCTxkZD48c3Ryb25n PmNob3Nlbl9jb3VudDwvc3Ryb25nPiA6IHRoZSB0b3RhbCBudW1iZXIgb2Ygc2VsZWN0ZWQg bGlzdCBlbnRyaWVzLjwvZGQ+CgkJPGRkPjxzdHJvbmc+ZGVmYXVsdF9jb3VudDwvc3Ryb25n PiA6IHRoZSB0b3RhbCBudW1iZXIgb2YgZGVmYXVsdCBsaXN0IGVudHJpZXMuPC9kZD4KCQk8 ZGQ+PHN0cm9uZz5pdGVyYXRlX29wdGlvbjwvc3Ryb25nPiA6IHRoZSBuYW1lIG9mIHRoZSBj dXJyZW50IG9wdGlvbiBiZWluZyBpdGVyYXRlZCAoc2VlIDxhIGhyZWY9IiNzbWRfYmlvX2l0 ZXJhdGUiPnNtZF9iaW9faXRlcmF0ZTwvYT4pLjwvZGQ+CgkJPGRkPjxzdHJvbmc+aXRlcmF0 ZV90aXRsZTwvc3Ryb25nPjogdGhlIGh1bWFuLWZyaWVuZGx5IHRpdGxlIG9mIHRoZSBjdXJy ZW50IG9wdGlvbiBiZWluZyBpdGVyYXRlZC48L2RkPgoJCTxkZD48c3Ryb25nPml0ZXJhdGVf Y291bnQ8L3N0cm9uZz4gOiBUaGUgb3B0aW9uIG51bWJlciBjb3VudCAoc3RhcnRpbmcgZnJv bSAxKS48L2RkPgoJCTxkZD48c3Ryb25nPml0ZXJhdGVfaXNfZGVmYXVsdDwvc3Ryb25nPiA6 IGlmIHlvdSBhcmUgaXRlcmF0aW5nIG92ZXIgPGNvZGU+YWxsPC9jb2RlPiBvcHRpb25zLCB0 aGlzIHdpbGwgYmUgc2V0IHRvIDEgaWYgdGhlIG9wdGlvbiBpcyBvbmUgb2YgdGhlIG9wdGlv bnMgdGhhdCBzaG91bGQgYmUgc2V0IGJ5IGRlZmF1bHQgaWYgbm90aGluZyBoYXMgYWxyZWFk eSBiZWVuIGNob3Nlbi4gMCBvdGhlcndpc2UuPC9kZD4KCQk8ZGQ+PHN0cm9uZz5pdGVyYXRl X2lzX2Nob3Nlbjwvc3Ryb25nPiA6IGlmIHlvdSBhcmUgaXRlcmF0aW5nIG92ZXIgPGNvZGU+ YWxsPC9jb2RlPiBvcHRpb25zLCB0aGlzIHdpbGwgYmUgc2V0IHRvIGVpdGhlciA8Y29kZT5j aGVja2VkPC9jb2RlPiBvciA8Y29kZT5zZWxlY3RlZDwvY29kZT4gKGRlcGVuZGluZyBvbiB0 aGUgZmllbGQmIzgyMTc7cyB0eXBlKSBpZiB0aGUgY3VycmVudCBvcHRpb24gaXMgY2hvc2Vu LjwvZGQ+CgkJPGRkPjxzdHJvbmc+d2lkZ2V0PC9zdHJvbmc+IDogYW4gPHNwYW4gY2xhc3M9 ImNhcHMiPkhUTUw8L3NwYW4+IGlucHV0IGNvbnRyb2wgb2YgdGhlIGNvcnJlY3QgdHlwZSBm b3IgdGhpcyBmaWVsZC4gTXVsdGkgc2VsZWN0IG9wdGlvbnMgYXJlIHByZWZpeGVkIHdpdGgg PGNvZGU+bXNfPC9jb2RlPiBhbmQgZWFjaCBjaGVja2JveCB2YWx1ZSBpbiBhIGdyb3VwIGlz IHByZWZpeGVkIHdpdGggPGNvZGU+Y2JfPC9jb2RlPiB3aGVuIHN1Ym1pdHRlZC4gTm90ZSBh bHNvIHRoYXQgJiM4MjE2O2ltYWdlJiM4MjE3OyBmaWVsZHMgcmVuZGVyIGEgc2ltcGxlIHRl eHQgaW5wdXQgZmllbGQgYmVjYXVzZSB0aGV5IG9ubHkgc3RvcmUgYSBzdGFuZGFyZCBUZXh0 cGF0dGVybiBpbWFnZSBJRDsgaWYgeW91IHdhbnQgdG8gZG8gYW55dGhpbmcgbW9yZSBlbGFi b3JhdGUgeW91IHdpbGwgaGF2ZSB0byByb2xsIGl0IHlvdXJzZWxmLiBVc2Ugd2lkZ2V0cyBp bnNpZGUgb25lIG9mIHRoZSBmb2xsb3dpbmcgY29uc3RydWN0cyB0byBhbGxvdyB1cGRhdGlu ZyBvZiBiaW8gZmllbGRzIGZyb20gdGhlIHB1YmxpYyBzaXRlIC8gZGFzaGJvYXJkczoKCQk8 ZGw+CgkJCTxkZD48Y29kZT4mbHQ7dHhwOm1lbV9mb3JtIHR5cGU9JnF1b3Q7c21kX2JpbyZx dW90OyZndDs8L2NvZGU+PC9kZD4KCQkJPGRkPjxjb2RlPiZsdDt0eHA6bWVtX3NlbGZfcmVn aXN0ZXImZ3Q7PC9jb2RlPjwvZGQ+CgkJCTxkZD48Y29kZT4mbHQ7dHhwOm1lbV9zZWxmX3Vz ZXJfZWRpdCZndDs8L2NvZGU+PC9kZD4KCQk8L2RsPjwvZGQ+CgkJPC9kbD48L2RkPgoJPGRk PkRlZmF1bHQ6IDxjb2RlPnZhbHVlPC9jb2RlPjwvZGQ+Cgk8ZHQ+PHN0cm9uZz53cmFwdGFn PC9zdHJvbmc+PC9kdD4KCTxkZD48c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gdGFn ICh3aXRob3V0IGFuZ2xlIGJyYWNrZXRzKSB0byB3cmFwIGFyb3VuZCB0aGUgZW50aXJlIG91 dHB1dC48L2RkPgoJPGR0PjxzdHJvbmc+Y2xhc3M8L3N0cm9uZz48L2R0PgoJPGRkPkZpeGVk IDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5hbWUgdG8gYWRkIHRvIHRo ZSB3cmFwdGFnLjwvZGQ+Cgk8ZHQ+PHN0cm9uZz5icmVhazwvc3Ryb25nPjwvZHQ+Cgk8ZGQ+ PHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IHRhZyBvciBjaGFyYWN0ZXJzIHRvIHB1 dCBiZXR3ZWVuIGVhY2ggaXRlbS48L2RkPgo8L2RsPgoKPHA+SWYgeW91IHdpc2ggdG8gc2Vl IGFuIGVudGlyZSBsaXN0IG9mIGF2YWlsYWJsZSBkYXRhLCBhZGQgPGNvZGU+ZGVidWc9JnF1 b3Q7MSZxdW90OzwvY29kZT4gdG8gdGhlIHN1cnJvdW5kaW5nIHNtZF9iaW9faW5mbyB0YWcu PC9wPgoKPGgzIGlkPSJzbWRfYmlvX3JlcGtleXMiPjxjb2RlPiZsdDt0eHA6c21kX2Jpb19p bmZvJmd0OzwvY29kZT4gcmVwbGFjZW1lbnQga2V5cyA8c3VwPig8c3Ryb25nPmRlcHJlY2F0 ZWQ8L3N0cm9uZz4pPC9zdXA+PC9oMz4KCjxwPlRoZSA8YSBocmVmPSIjc21kX2Jpb19kYXRh Ij5zbWRfYmlvX2RhdGE8L2E+IHRhZyB3aWxsIGJlIGFibGUgdG8gZml0IGFsbCB5b3VyIGJp byBkaXNwbGF5IG5lZWRzLiBUaGVyZSBpcywgaG93ZXZlciwgYSBsZWdhY3kgbWV0aG9kIG9m IGRpc3BsYXlpbmcgZGF0YSB1c2luZyA8aT5yZXBsYWNlbWVudCBrZXlzPC9pPi4gVGhlc2Ug c2hvdWxkIGJlIGNvbnNpZGVyZWQgZGVwcmVjYXRlZCBhbmQgdGhlaXIgdXNlIGRpc2NvdXJh Z2VkIGluIGZhdm91ciBvZiB0aGUgc21kX2Jpb19kYXRhIHRhZy4gVGhleSBtYXkgYmUgcmVt b3ZlZCBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgdGhlIHBsdWdpbi48L3A+Cgo8cD5UaGUgbWFp biByZXBsYWNlbWVudCBrZXlzIGFyZTo8L3A+Cgo8ZGw+Cgk8ZHQ+PGNvZGU+e3NtZF9iaW9f KmZpZWxkKn08L2NvZGU+PC9kdD4KCTxkZD5UaGUgdmFsdWUgb2YgdGhlIG5hbWVkIGZpZWxk IChlLmcuIDxjb2RlPnNtZF9iaW9fY2VsbDwvY29kZT4sIDxjb2RlPnNtZF9iaW9fZGVwYXJ0 bWVudDwvY29kZT4sIGV0YykuPC9kZD4KCTxkdD48Y29kZT57c21kX2Jpb18qZmllbGQqX25h bWV9PC9jb2RlPjwvZHQ+Cgk8ZGQ+U2FuaXRpemVkIG5hbWUgb2YgdGhlIGNvbHVtbiBjb3Jy ZXNwb25kaW5nIHRvIHRoaXMgbmFtZWQgZmllbGQuPC9kZD4KCTxkdD48Y29kZT57c21kX2Jp b18qZmllbGQqX3RpdGxlfTwvY29kZT48L2R0PgoJPGRkPkh1bWFuLWZyaWVuZGx5IHRpdGxl IHlvdSBhc3NpZ25lZCB0aGlzIG5hbWVkIGZpZWxkLjwvZGQ+Cgk8ZHQ+PGNvZGU+e3NtZF9i aW9fKmZpZWxkKl9jbGFzc308L2NvZGU+PC9kdD4KCTxkZD5OYW1lIG9mIHRoZSBjbGFzcyBh c3NvY2lhdGVkIHdpdGggdGhpcyBuYW1lZCBmaWVsZC48L2RkPgo8L2RsPgoKPHA+SWYgeW91 IGhhdmUgZWxlY3RlZCB0byBleHRyYWN0IGEgbGlzdCBpdGVtIHN1Y2ggYXMgcmFkaW8sIGxp c3Qgb3IgY2hlY2tib3ggeW91IHdpbGwgaGF2ZSBzb21lIG1vcmUgcmVwbGFjZW1lbnQga2V5 cyBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdDo8L3A+Cgo8ZGw+Cgk8ZHQ+PGNvZGU+e3NtZF9i aW9fKmZpZWxkKl9vcHRpb25fTn08L2NvZGU+PC9kdD4KCTxkZD5UaGUgdmFsdWUgb2YgZWFj aCBuYW1lZCBvcHRpb24gaW4gdHVybiwgd2hlcmUgTiBzdGFydHMgYXQgMSBhbmQgaW5jcmVt ZW50cy48L2RkPgoJPGR0Pjxjb2RlPntzbWRfYmlvXypmaWVsZCpfdGl0bGVfTn08L2NvZGU+ PC9kdD4KCTxkZD5UaGUgdmFsdWUgb2YgZWFjaCBuYW1lZCBvcHRpb24mIzgyMTc7cyB0aXRs ZSBpbiB0dXJuLiBBZ2FpbiwgTiBzdGFydHMgYXQgMSBhbmQgY291bnRzIHVwIGZvciBldmVy eSBvcHRpb24gaW4geW91ciBsaXN0LjwvZGQ+Cgk8ZHQ+PGNvZGU+e3NtZF9iaW9fKmZpZWxk Kl9jaG9zZW5fb3B0aW9uX059PC9jb2RlPjwvZHQ+Cgk8ZGQ+VGhlIHZhbHVlIG9mIGVhY2gg c2VsZWN0ZWQgb3B0aW9uIGluIHR1cm4sIHdoZXJlIE4gc3RhcnRzIGF0IDEgYW5kIGluY3Jl bWVudHMuPC9kZD4KCTxkZD5Gb3Igc2VsZWN0IGFuZCByYWRpbyBsaXN0cyB0aGVyZSB3aWxs IGJlIG9ubHkgb25lOyBmb3IgY2hlY2tib3ggZ3JvdXBzIHRoZXJlIG1heSBiZSBtb3JlLjwv ZGQ+Cgk8ZHQ+PGNvZGU+e3NtZF9iaW9fKmZpZWxkKl9jaG9zZW5fdGl0bGVfTn08L2NvZGU+ PC9kdD4KCTxkZD5UaGUgdmFsdWUgb2YgZWFjaCBzZWxlY3RlZCBvcHRpb24mIzgyMTc7cyBs YWJlbCBpbiB0dXJuLCB3aGVyZSBOIHN0YXJ0cyBhdCAxIGFuZCBpbmNyZW1lbnRzLjwvZGQ+ Cgk8ZHQ+PGNvZGU+e3NtZF9iaW9fKmZpZWxkKl9vcHRpb25fY291bnR9PC9jb2RlPjwvZHQ+ Cgk8ZGQ+VGhlIHRvdGFsIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgbmFtZWQgbGlzdC48 L2RkPgoJPGR0Pjxjb2RlPntzbWRfYmlvXypmaWVsZCpfY2hvc2VuX2NvdW50fTwvY29kZT48 L2R0PgoJPGRkPlRoZSB0b3RhbCBudW1iZXIgb2Ygc2VsZWN0ZWQgZWxlbWVudHMgaW4gdGhl IG5hbWVkIGxpc3QuPC9kZD4KPC9kbD4KCjxwPkZ1cnRoZXIsIGlmIHlvdSBhcmUgZGlzcGxh eWluZyBqdXN0IGEgc2luZ2xlIDxjb2RlPmZpZWxkPC9jb2RlPiwgdGhlc2UgcmVwbGFjZW1l bnRzIChiYWNrd2FyZHMgY29tcGF0aWJsZSB3aXRoIHNtZF9iaW8gdjAuM3gpIGFyZSBwcmVz ZW50OjwvcD4KCjxkbD4KCTxkdD48Y29kZT57c21kX2Jpb19pbmZvX2l0ZW19PC9jb2RlPjwv ZHQ+Cgk8ZGQ+VGhlIHZhbHVlIG9mIHRoZSBjdXJyZW50IGZpZWxkICYjODIxMjsgRGVwcmVj YXRlZDogdXNlIDxjb2RlPntzbWRfYmlvX2luZm9fdmFsdWV9PC9jb2RlPiBpbnN0ZWFkLjwv ZGQ+Cgk8ZHQ+PGNvZGU+e3NtZF9iaW9faW5mb19uYW1lfTwvY29kZT48L2R0PgoJPGRkPlRo ZSBzYW5pdGl6ZWQgbmFtZSBvZiB0aGUgY29sdW1uIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZp ZWxkLjwvZGQ+Cgk8ZHQ+PGNvZGU+e3NtZF9iaW9faW5mb190aXRsZX08L2NvZGU+PC9kdD4K CTxkZD5UaGUgaHVtYW4tZnJpZW5kbHkgdGl0bGUgeW91IGFzc2lnbmVkIHRoZSBmaWVsZC48 L2RkPgoJPGR0Pjxjb2RlPntzbWRfYmlvX2luZm9faXRlbWNsYXNzfTwvY29kZT48L2R0PgoJ PGRkPlRoZSBuYW1lIG9mIHRoaXMgZmllbGQmIzgyMTc7cyBjbGFzcyAmIzgyMTI7IERlcHJl Y2F0ZWQ6IHVzZSA8Y29kZT57c21kX2Jpb19pbmZvX2NsYXNzfTwvY29kZT4gaW5zdGVhZC48 L2RkPgo8L2RsPgoKPGgyIGlkPSJzbWRfaWZfYmlvIj5UYWc6IDxjb2RlPiZsdDt0eHA6c21k X2lmX2JpbyZndDs8L2NvZGU+PC9oMj4KCjxwPkEgc2ltcGxlIGNvbmRpdGlvbmFsIGZvciB0 ZXN0aW5nIGEgZmllbGQgLyBpdGVtLiBNdXN0IGJlIHVzZWQgaW5zaWRlIGEgPGNvZGU+Jmx0 O3R4cDpzbWRfYmlvX2luZm8gLyZndDs8L2NvZGU+IHRhZyB0byB0ZXN0IGZvciB0aGUgZXhp c3RlbmNlL3ZhbHVlIG9mIG9uZSBvZiB5b3VyIGNob3NlbiBiaW8gaXRlbXMuIFVzZSBzbWRf aWYgZm9yIG1vcmUgY29tcGxleCBjb25kaXRpb25hbCBsb2dpYy4gU3VwcG9ydHMgPGNvZGU+ Jmx0O3R4cDplbHNlIC8mZ3Q7PC9jb2RlPi48L3A+Cgo8ZGw+Cgk8ZHQ+PHN0cm9uZz5maWVs ZDwvc3Ryb25nPjwvZHQ+Cgk8ZGQ+VGhlIGJpbyBmaWVsZCBmcm9tIHlvdSB3aXNoIHRvIGNo ZWNrIChlLmcuIGRlcGFydG1lbnQsIHByZWZlcnJlZF9jb250YWN0LCBwaG9uZV9udW1iZXIs JiM4MjMwOyk8L2RkPgoJPGR0PjxzdHJvbmc+aXRlbTwvc3Ryb25nPjwvZHQ+Cgk8ZGQ+VGhl IGFjdHVhbCBwaWVjZSBvZiBpbmZvcm1hdGlvbiB5b3Ugd2FudCB0byBjb21wYXJlIGZyb20g dGhlIGZpZWxkLiBDaG9vc2UgZnJvbSB0aGUgc2FtZSBpdGVtcyBhcyBkZWZpbmVkIGluIHRo ZSA8Y29kZT5pdGVtPC9jb2RlPiBhdHRyaWJ1dGUgZm9yIHRoZSA8YSBocmVmPSIjc21kX2Jp b19kYXRhIj5zbWRfYmlvX2RhdGE8L2E+IHRhZy48L2RkPgoJPGRkPkRlZmF1bHQ6IDxjb2Rl PnZhbHVlPC9jb2RlPjwvZGQ+Cgk8ZHQ+PHN0cm9uZz52YWx1ZTwvc3Ryb25nPjwvZHQ+Cgk8 ZGQ+VGhlIHZhbHVlIHlvdSB3aXNoIHRvIGNvbXBhcmUgdGhlIGZpZWxkL2l0ZW0gYWdhaW5z dC48L2RkPgoJPGRkPklmIG9taXR0ZWQsIHRoZSB0YWcgd2lsbCBqdXN0IGNoZWNrIGZvciB0 aGUgZXhpc3RlbmNlIG9mIHRoZSBnaXZlbiBmaWVsZC9pdGVtPC9kZD4KPC9kbD4KCjxoMiBp ZD0ic21kX2lmX2Jpb19maXJzdF9hdXRob3IiPlRhZzogPGNvZGU+Jmx0O3R4cDpzbWRfaWZf YmlvX2ZpcnN0X2F1dGhvciZndDs8L2NvZGU+PC9oMj4KCjxwPlBhcnNlcyB0aGUgY29udGFp bmVyIGlmIHRoZSBjdXJyZW50IGF1dGhvciBpcyB0aGUgZmlyc3QgaW4gdGhlIGxpc3QuIE11 c3QgYmUgdXNlZCBpbnNpZGUgYSA8Y29kZT4mbHQ7dHhwOnNtZF9iaW9faW5mbyAvJmd0Ozwv Y29kZT4gdGFnLCBhbmQgc3VwcG9ydHMgPGNvZGU+Jmx0O3R4cDplbHNlIC8mZ3Q7PC9jb2Rl Pi48L3A+Cgo8aDIgaWQ9InNtZF9pZl9iaW9fbGFzdF9hdXRob3IiPlRhZzogPGNvZGU+Jmx0 O3R4cDpzbWRfaWZfYmlvX2xhc3RfYXV0aG9yJmd0OzwvY29kZT48L2gyPgoKPHA+UGFyc2Vz IHRoZSBjb250YWluZXIgaWYgdGhlIGN1cnJlbnQgYXV0aG9yIGlzIHRoZSBsYXN0IGluIHRo ZSBsaXN0LiBNdXN0IGJlIHVzZWQgaW5zaWRlIGEgPGNvZGU+Jmx0O3R4cDpzbWRfYmlvX2lu Zm8gLyZndDs8L2NvZGU+IHRhZywgYW5kIHN1cHBvcnRzIDxjb2RlPiZsdDt0eHA6ZWxzZSAv Jmd0OzwvY29kZT4uPC9wPgoKPGgyIGlkPSJzbWRfYmlvX2l0ZXJhdGUiPlRhZzogPGNvZGU+ Jmx0O3R4cDpzbWRfYmlvX2l0ZXJhdGUmZ3Q7PC9jb2RlPjwvaDI+Cgo8cD5TdGVwIHRocm91 Z2ggc2VsZWN0IGxpc3QsIGNoZWNrYm94LCBhbmQgcmFkaW8gc2V0cyB3aXRoIHRoaXMgdGFn LCBkaXNwbGF5aW5nIGluZm8gYWJvdXQgZWFjaCBvcHRpb24gYXMgeW91IGdvLiBVc2VmdWwg aWYgeW91IHdhbnQgdG8gcm9sbCB5b3VyIG93biB3aWRnZXRzIG9yIGRvIHNvbWUgY3VzdG9t IGludGVyYWN0aW9uLjwvcD4KCjxkbD4KCTxkdD48c3Ryb25nPmZpZWxkPC9zdHJvbmc+PC9k dD4KCTxkZD5UaGUgYmlvIGZpZWxkIG92ZXIgd2hpY2ggeW91IHdpc2ggdG8gaXRlcmF0ZSAo ZS5nLiBwcmVmZXJyZWRfY29udGFjdCwgc3Vic2NyaXB0aW9uLCBmYXZvdXJpdGVfcm9ja3N0 YXIsICYjODIzMDspLiBNdXN0IGJlIGEgJiM4MjE2O2xpc3QmIzgyMTc7IG9yICYjODIxNjtn cm91cCYjODIxNzsgZmllbGQuPC9kZD4KCTxkdD48c3Ryb25nPnVzaW5nPC9zdHJvbmc+PC9k dD4KCTxkZD5UaGUgdHlwZSBvZiBpbmZvIHlvdSB3YW50IHRvIGl0ZXJhdGUgb3Zlci4gQ2hv b3NlIGZyb206Cgk8ZGw+CgkJPGRkPjxjb2RlPmNob3NlbjwvY29kZT46IHN0ZXAgb3ZlciBj aG9zZW4gKHNlbGVjdGVkLCBjaGVja2VkKSBvcHRpb25zLjwvZGQ+CgkJPGRkPjxjb2RlPmRl ZmF1bHQ8L2NvZGU+OiBzdGVwIG92ZXIgZGVmYXVsdCAocHJlLXNlbGVjdGVkKSBvcHRpb25z LjwvZGQ+CgkJPGRkPjxjb2RlPmFsbDwvY29kZT46IHN0ZXAgb3ZlciBhbGwgaXRlbXMgaW4g dGhlIGdyb3VwLCB3aGV0aGVyIHNlbGVjdGVkIG9yIG5vdC48L2RkPgoJPC9kbD48L2RkPgoJ PGRkPkRlZmF1bHQ6IDxjb2RlPmNob3NlbjwvY29kZT48L2RkPgoJPGR0PjxzdHJvbmc+ZGlz cGxheTwvc3Ryb25nPjwvZHQ+Cgk8ZGQ+VGhlIHBpZWNlIG9mIGluZm9ybWF0aW9uIHlvdSB3 aXNoIHRvIG91dHB1dCBmcm9tIHRoZSBvcHRpb24uIFRoaXMgYXR0cmlidXRlIGlzIGlnbm9y ZWQgaWYgeW91IHVzZSBhIDxjb2RlPmZvcm08L2NvZGU+IG9yIHRoZSBjb250YWluZXIuIENo b29zZSBmcm9tOgoJPGRsPgoJCTxkZD48Y29kZT5vcHRpb248L2NvZGU+OiB0aGUgaW50ZXJu YWwgbmFtZSBvZiB0aGUgb3B0aW9uPC9kZD4KCQk8ZGQ+PGNvZGU+dGl0bGU8L2NvZGU+OiB0 aGUgb3B0aW9uJiM4MjE3O3MgaHVtYW4tZnJpZW5kbHkgdGl0bGU8L2RkPgoJPC9kbD48L2Rk PgoJPGRkPkRlZmF1bHQ6IDxjb2RlPnRpdGxlPC9jb2RlPjwvZGQ+Cgk8ZHQ+PHN0cm9uZz5m b3JtPC9zdHJvbmc+PC9kdD4KCTxkZD5UaGUgbmFtZSBvZiBhIFRleHRwYXR0ZXJuIEZvcm0g d2l0aCB3aGljaCB0byBwcm9jZXNzIGVhY2ggb3B0aW9uLjwvZGQ+Cgk8ZGQ+SWYgbm90IHNw ZWNpZmllZCwgdGhlIHRhZyYjODIxNztzIGNvbnRhaW5lciB3aWxsIGJlIHVzZWQuPC9kZD4K CTxkZD5JZiB0aGUgY29udGFpbmVyIGlzIGVtcHR5LCBkZWZhdWx0IG91dHB1dCBpcyB1c2Vk ICh0aGUgb3B0aW9uJiM4MjE3O3MgdmFsdWUpLjwvZGQ+Cgk8ZHQ+PHN0cm9uZz53cmFwdGFn PC9zdHJvbmc+PC9kdD4KCTxkZD48c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gdGFn ICh3aXRob3V0IGFuZ2xlIGJyYWNrZXRzKSB0byB3cmFwIGFyb3VuZCB0aGUgZ3JvdXAuPC9k ZD4KCTxkdD48c3Ryb25nPmNsYXNzPC9zdHJvbmc+PC9kdD4KCTxkZD5GaXhlZCA8c3BhbiBj bGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFzcyBuYW1lIHRvIGFkZCB0byB0aGUgZ3JvdXAm IzgyMTc7cyB3cmFwdGFnLjwvZGQ+Cgk8ZHQ+PHN0cm9uZz5icmVhazwvc3Ryb25nPjwvZHQ+ Cgk8ZGQ+PHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IHRhZyB0byBwdXQgYmV0d2Vl biBlYWNoIG9wdGlvbi48L2RkPgoJPGR0PjxzdHJvbmc+YnJlYWtjbGFzczwvc3Ryb25nPjwv ZHQ+Cgk8ZGQ+PHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgbmFtZSB0byBh ZGQgdG8gZWFjaCBvcHRpb24mIzgyMTc7cyB3cmFwdGFnLjwvZGQ+Cgk8ZHQ+PHN0cm9uZz5s aW1pdDwvc3Ryb25nPjwvZHQ+Cgk8ZGQ+VGhlIG1heGltdW0gbnVtYmVyIG9mIG9wdGlvbnMg dG8gaXRlcmF0ZSBvdmVyLjwvZGQ+Cgk8ZGQ+RGVmYXVsdDogMCAoaS5lLiBhbGwgb2YgdGhl bSk8L2RkPgoJPGR0PjxzdHJvbmc+b2Zmc2V0PC9zdHJvbmc+PC9kdD4KCTxkZD5UaGUgbnVt YmVyIG9mIG9wdGlvbnMgdG8gc2tpcCBiZWZvcmUgc3RhcnRpbmcgdG8gZGlzcGxheSBvcHRp b25zLjwvZGQ+Cgk8ZGQ+RGVmYXVsdDogMDwvZGQ+CjwvZGw+Cgo8cD5TZWUgdGhlIDxhIGhy ZWY9IiNzbWRfYmlvX2RhdGEiPnNtZF9iaW9fZGF0YTwvYT4gdGFnIGZvciBkZXRhaWxzIG9m IHdoYXQgeW91IGNhbiBkaXNwbGF5IC8gdGVzdCBpbnNpZGUgdGhpcyB0YWcmIzgyMTc7cyBj b250YWluZXIuPC9wPgoKPGgyIGlkPSJzbWRfYmlvX2FydGljbGVzIj5UYWc6IDxjb2RlPiZs dDt0eHA6c21kX2Jpb19hcnRpY2xlcyZndDs8L2NvZGU+PC9oMj4KCjxwPkEgc2ltcGxlIGNv bnZlbmllbmNlIHdyYXBwZXIgZm9yIDxjb2RlPiZsdDt0eHA6YXJ0aWNsZV9jdXN0b20gLyZn dDs8L2NvZGU+IHRoYXQgc2V0cyB0aGUgPGNvZGU+YXV0aG9yPC9jb2RlPiBhdHRyaWJ1dGUg dG8gdGhlIHBlcnNvbiB3aG8gd3JvdGUgdGhlIGN1cnJlbnQgYXJ0aWNsZS4gSWYgeW91IHNw ZWNpZnkgYW4gYXV0aG9yLCB0aGF0IHBlcnNvbiB3aWxsIGJlIHVzZWQgaW5zdGVhZC4gSW4g YWxsIG90aGVyIHJlZ2FyZHMsIHRoZSB0YWcgZnVuY3Rpb25zIGlkZW50aWNhbGx5IHRvIDxh IGhyZWY9Imh0dHA6Ly90ZXh0cGF0dGVybi5uZXQvd2lraS9pbmRleC5waHA/dGl0bGU9YXJ0 aWNsZV9jdXN0b20iPmFydGljbGVfY3VzdG9tPC9hPiBhbmQgY2FuIGJlIHVzZWQgYXMgYSBj b250YWluZXIgaWYgeW91IHdpc2guPC9wPgoKPHAgY2xhc3M9ImltcG9ydGFudCI+PHNwYW4g Y2xhc3M9ImNhcHMiPklNUE9SVEFOVDwvc3Bhbj46IHRha2UgY2FyZSB3aGVuIHVzaW5nIHRo aXMgdGFnIGluc2lkZSB5b3VyIGRlZmF1bHQgZm9ybS4gSWYgeW91IGRvIG5vdCBzcGVjaWZ5 IHlvdXIgb3duIGNvbnRhaW5lciBvciBhIGRlZGljYXRlZCA8Y29kZT5mb3JtPC9jb2RlPiwg eW91IHdpbGwgcmVjZWl2ZSBhIDxlbT5jaXJjdWxhciByZWZlcmVuY2UgZXJyb3I8L2VtPiBm cm9tIFRleHRwYXR0ZXJuIGFzIGl0IHRyaWVzIHRvIGNhbGwgdGhlIGRlZmF1bHQgZm9ybSwg d2hpY2ggY2FsbHMgdGhlIGRlZmF1bHQgZm9ybSwgd2hpY2ggY2FsbHMgdGhlIGRlZmF1bHQg Zm9ybSYjODIzMDs8L3A+Cgo8aDMgaWQ9InNtZF9iaW9fZXhhbXBsZXMiPkV4YW1wbGVzPC9o Mz4KCjxoMiBpZD0ic21kX2Jpb19lZzEiPkV4YW1wbGUgMTogTGlzdCBiaW8gZmllbGRzIGZy b20gYXV0aG9yIG9mIGN1cnJlbnQgYXJ0aWNsZTwvaDI+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6 c21kX2Jpb19pbmZvCiAgICAgZmllbGRzPSZxdW90O2pvYnRpdGxlLCBleHRlbnNpb24sIGNl bGwsIGRlcGFydG1lbnQmcXVvdDsKICAgICBsYWJlbHRhZz0mcXVvdDtkdCZxdW90OyB3cmFw dGFnPSZxdW90O2RsJnF1b3Q7CiAgICAgYnJlYWs9JnF1b3Q7ZGQmcXVvdDsgY2xhc3M9JnF1 b3Q7cHJvZmlsZSZxdW90OyAvJmd0OzwvY29kZT48L3ByZT4KCjxwPlNob3dzIHRoZSBqb2Ig dGl0bGUsIHdvcmsmIzgyMTc7cyBleHRlbnNpb24gbnVtYmVyLCBjZWxsIHBob25lIG51bWJl ciBhbmQgZGVwYXJ0bWVudCBvZiB0aGUgY3VycmVudCBhdXRob3IsIGFzIGEgZGVmaW5pdGlv biBsaXN0IHdpdGggY2xhc3MgPGNvZGU+cHJvZmlsZTwvY29kZT4uPC9wPgoKPGgyIGlkPSJz bWRfYmlvX2VnMiI+RXhhbXBsZSAyOiBMaXN0IHByb2ZpbGVzIGZvciBuYW1lZCArIHByaXYg bGV2ZWwgdXNlcnM8L2gyPgoKPHByZT48Y29kZT4mbHQ7dHhwOnNtZF9iaW9fYXV0aG9yIHdy YXB0YWc9JnF1b3Q7ZGl2JnF1b3Q7IGNsYXNzPSZxdW90O2F1dGhvcnMmcXVvdDsKICAgICBh dXRob3I9JnF1b3Q7bXJfcHViLCBTTURfUFJJVlM6NDozJnF1b3Q7Jmd0OwogICAmbHQ7dHhw OnNtZF9iaW9faW5mbwogICAgIGZpZWxkcz0mcXVvdDtuYW1lLCBSZWFsTmFtZSwgZGVwYXJ0 bWVudCZxdW90OwogICAgIGxhYmVsdGFnPSZxdW90O2R0JnF1b3Q7IHdyYXB0YWc9JnF1b3Q7 ZGwmcXVvdDsKICAgICBicmVhaz0mcXVvdDtkZCZxdW90OyAvJmd0OwombHQ7L3R4cDpzbWRf YmlvX2F1dGhvciZndDs8L2NvZGU+PC9wcmU+Cgo8cD5TaG93cyB0aGUgbmFtZSwgcmVhbCBu YW1lIGFuZCBkZXBhcnRtZW50IG9mIGFsbCA8ZW0+Q29weSBFZGl0b3JzPC9lbT4gKDMpIGFu ZCA8ZW0+U3RhZmYgV3JpdGVyczwvZW0+ICg0KSBhbmQgdGhlIHVzZXIgJiM4MjE2O21yX3B1 YiYjODIxNzsuPC9wPgoKPGgyIGlkPSJzbWRfYmlvX2VnMyI+RXhhbXBsZSAzOiBVc2luZyBz bWRfYmlvX2FydGljbGVzIGFuZCBzbWRfYmlvX2luZm8gYXMgYSBjb250YWluZXI8L2gyPgoK PHByZT48Y29kZT4mbHQ7dHhwOnNtZF9iaW9faW5mbyBmaWVsZHM9JnF1b3Q7cGhvdG8sIGRl cGFydG1lbnQsIFJlYWxOYW1lJnF1b3Q7Jmd0OwogICAmbHQ7dHhwOmltYWdlIGlkPSYjMzk7 Jmx0O3R4cDpzbWRfYmlvX2RhdGEgZmllbGQ9JnF1b3Q7cGhvdG8mcXVvdDsgLyZndDsmIzM5 OyAvJmd0OwogICBSZWNlbnQgYXJ0aWNsZXMgYnkKICAgJmx0O2EgaHJlZj0mcXVvdDsvZGVz a3MvJmx0O3R4cDpzbWRfYmlvX2RhdGEgZmllbGQ9JnF1b3Q7ZGVwYXJ0bWVudCZxdW90OyAv Jmd0OyZxdW90OyZndDsKICAgICAgJmx0O3R4cDpzbWRfYmlvX2RhdGEgZmllbGQ9JnF1b3Q7 UmVhbE5hbWUmcXVvdDsgLyZndDsKICAgJmx0Oy9hJmd0OzoKJmx0Oy90eHA6c21kX2Jpb19p bmZvJmd0OwombHQ7dHhwOnNtZF9iaW9fYXJ0aWNsZXMgbGltaXQ9JnF1b3Q7NiZxdW90Owog ICAgIHdyYXB0YWc9JnF1b3Q7dWwmcXVvdDsgYnJlYWs9JnF1b3Q7bGkmcXVvdDsmZ3Q7CiAg ICZsdDt0eHA6cGVybWxpbmsmZ3Q7Jmx0O3R4cDp0aXRsZSAvJmd0OyZsdDsvdHhwOnBlcm1s aW5rJmd0OwombHQ7L3R4cDpzbWRfYmlvX2FydGljbGVzJmd0OzwvY29kZT48L3ByZT4KCjxw PkRpc3BsYXlzIHRoZSBhdXRob3IgcGhvdG8sIHRoZSBhdXRob3ImIzgyMTc7cyBSZWFsTmFt ZSBsaW5rZWQgdG8gdGhlIHNlY3Rpb24gdGhhdCBleHBsYWlucyBhYm91dCB0aGUgZGVwYXJ0 bWVudCB0byB3aGljaCBzaGUgYmVsb25ncywgdGhlbiBsaXN0cyB0aGUgNiBtb3N0IHJlY2Vu dCBhcnRpY2xlcyBieSBoZXIuIE5vdGUgdGhlIHVzZSBvZiA8Y29kZT4mbHQ7dHhwOnNtZF9i aW9fZGF0YSAvJmd0OzwvY29kZT4gdG8gZmVlZCA8Y29kZT4mbHQ7dHhwOmltYWdlIC8mZ3Q7 PC9jb2RlPiB3aXRoIHRoZSBJRCBvZiB0aGUgc2VsZWN0ZWQgcGhvdG8uPC9wPgoKPGgyIGlk PSJzbWRfYmlvX2VnNCI+RXhhbXBsZSA0OiBjaGVja2JveGVzLCBsaXN0cyBhbmQgcmFkaW9z PC9oMj4KCjxwcmU+PGNvZGU+Jmx0O3R4cDpzbWRfYmlvX2F1dGhvcj0mcXVvdDtTTURfUFJJ VlM6NSZxdW90OyZndDsKICAgJmx0O3R4cDpzbWRfYmlvX2luZm8gZmllbGRzPSZxdW90O25h bWUsIGltYWdlLCBjb250YWN0X2J5LAogICAgICBzdWJzY3JpYmVkLCBkZXBhcnRtZW50JnF1 b3Q7Jmd0OwogICAgICAmbHQ7YSBjbGFzcz0mcXVvdDtpbWFnZSZxdW90OwogICAgICAgIGhy ZWY9JnF1b3Q7L2Jsb2cvJmx0O3R4cDpzbWRfYmlvX2RhdGEgZmllbGQ9JnF1b3Q7bmFtZSZx dW90OyAvJmd0OyZxdW90OwogICAgICAgIHRpdGxlPSZxdW90O2Jyb3dzZSBvdGhlciBwb3N0 cyBieSB0aGlzIGF1dGhvciZxdW90OyZndDsKICAgICAgICAgJmx0O2ltZyBjbGFzcz0mcXVv dDt0aHVtYiZxdW90OwogICAgICAgICAgIHNyYz0mcXVvdDsvaW1hZ2VzLyZsdDt0eHA6c21k X2Jpb19kYXRhIGZpZWxkPSZxdW90O2ltYWdlJnF1b3Q7IC8mZ3Q7LmpwZyZxdW90OyAvJmd0 OwogICAgICAmbHQ7L2EmZ3Q7CiAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7c3VtbWFyeSZx dW90OyZndDsKICAgICAgICAgJmx0O2gzJmd0O0RlcGFydG1lbnQmbHQ7L2gzJmd0OyZsdDt0 eHA6c21kX2Jpb19kYXRhIGZpZWxkPSZxdW90O2RlcGFydG1lbnQmcXVvdDsgLyZndDsKICAg ICAgICAgJmx0O2gzJmd0O0JpbyZsdDsvaDMmZ3Q7Jmx0O3R4cDpzbWRfYmlvX2RhdGEgZmll bGQ9JnF1b3Q7cHJvZmlsZSZxdW90OyAvJmd0OwogICAgICAgICAmbHQ7aDMmZ3Q7UHJlZmVy cmVkIGNvbnRhY3QgbWV0aG9kJmx0Oy9oMyZndDsmbHQ7dHhwOnNtZF9iaW9fZGF0YSBmaWVs ZD0mcXVvdDtjb250YWN0X2J5JnF1b3Q7IC8mZ3Q7CiAgICAgICAgICZsdDtoMyZndDtTdWJz Y3JpYmVkIHRvJmx0Oy9oMyZndDsmbHQ7dHhwOnNtZF9iaW9fZGF0YSBmaWVsZD0mcXVvdDtz dWJzY3JpYmVkJnF1b3Q7IC8mZ3Q7CiAgICAgICZsdDsvZGl2Jmd0OwogICAmbHQ7L3R4cDpz bWRfYmlvX2luZm8mZ3Q7CiZsdDsvdHhwOnNtZF9iaW9fYXV0aG9yJmd0OzwvY29kZT48L3By ZT4KCjxoMiBpZD0ic21kX2Jpb19lZzUiPkV4YW1wbGUgNTogdGVsZXBob25lIGRpcmVjdG9y eSBvZiB1c2VyczwvaDI+Cgo8cD5JZiB5b3UgaGF2ZSBzb21lIGJpbyBmaWVsZHMgc3VjaCBh cyBzdXJuYW1lLCBmb3JlbmFtZSwgZGVwYXJ0bWVudCwgcGhvbmUsIGF2YXRhciwgYW5kIHNv IGZvcnRoIHlvdSBjb3VsZCBkaXNwbGF5IGEgcXVpY2sgZGlyZWN0b3J5IG9mIGFsbCB5b3Vy IHVzZXJzIGFzIGZvbGxvd3MuIFRoZSBzbmlwcGV0IG9mIDxzcGFuIGNsYXNzPSJjYXBzIj5Q SFA8L3NwYW4+IGlzIGp1c3QgYSBxdWljayB3YXkgb2YgZ2V0dGluZyB0aGUgZmlyc3QgbGV0 dGVyIG9mIHRoZSBzdXJuYW1lOyB5b3UgY291bGQgYmUgZmFyIG1vcmUgY3JlYXRpdmUgaGVy ZSBhbmQgbGluayB0byBhIGZ1bGwgYmlvIG9yIGZpbHRlciBieSBsZXR0ZXIsIGFuZCBzbyBv bi48L3A+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6c21kX2Jpb19hdXRob3IgYXV0aG9yPSZxdW90 O1NNRF9BTEwmcXVvdDsgc29ydD0mcXVvdDtzdXJuYW1lIGFzYyZxdW90OyZndDsKCiAgICZs dDt0eHA6c21kX2Jpb19pbmZvIHdyYXB0YWc9JnF1b3Q7ZGwmcXVvdDsmZ3Q7CiAgICAgICZs dDt0eHA6cGhwJmd0OwogICAgICAgICBnbG9iYWwgJHZhcmlhYmxlOwogICAgICAgICAkdmFy aWFibGVbJiMzOTtpbml0aWFsJiMzOTtdID0gc3Vic3RyKAogICAgICAgICAgICBzbWRfYmlv X2RhdGEoYXJyYXkoJiMzOTtmaWVsZCYjMzk7ID0mZ3Q7ICYjMzk7c3VybmFtZSYjMzk7KSks CiAgICAgICAgICAgIDAsIDEpOwogICAgICAmbHQ7L3R4cDpwaHAmZ3Q7CgogICAgICAmbHQ7 dHhwOmlmX2RpZmZlcmVudCZndDsmbHQ7ZHQmZ3Q7Jmx0O3R4cDp2YXJpYWJsZSBuYW1lPSZx dW90O2luaXRpYWwmcXVvdDsgLyZndDsmbHQ7L2R0Jmd0OyZsdDsvdHhwOmlmX2RpZmZlcmVu dCZndDsKCiAgICAgICZsdDtkZCBjbGFzcz0mcXVvdDtuYW1lJnF1b3Q7Jmd0OwogICAgICAg ICAmbHQ7dHhwOnNtZF9iaW9fZGF0YSBmaWVsZD0mcXVvdDtzdXJuYW1lJnF1b3Q7IC8mZ3Q7 LAogICAgICAgICAmbHQ7dHhwOnNtZF9iaW9fZGF0YSBmaWVsZD0mcXVvdDtmb3JlbmFtZSZx dW90OyAvJmd0OwogICAgICAmbHQ7L2RkJmd0OwoKICAgICAgJmx0O3R4cDpzbWRfaWZfYmlv IGZpZWxkPSZxdW90O2RlcGFydG1lbnQmcXVvdDsmZ3Q7CiAgICAgICAgICZsdDt0eHA6c21k X2Jpb19kYXRhIGZpZWxkPSZxdW90O2RlcGFydG1lbnQmcXVvdDsKICAgICAgICAgICAgaXRl bT0mcXVvdDt0aXRsZSwgdmFsdWUmcXVvdDsgYnJlYWs9JnF1b3Q7OiAmcXVvdDsgIHdyYXB0 YWc9JnF1b3Q7ZGQmcXVvdDsgLyZndDsKICAgICAgJmx0Oy90eHA6c21kX2lmX2JpbyZndDsK CiAgICAgICZsdDt0eHA6c21kX2lmX2JpbyBmaWVsZD0mcXVvdDtwaG9uZSZxdW90OyZndDsK ICAgICAgICAgJmx0O3R4cDpzbWRfYmlvX2RhdGEgZmllbGQ9JnF1b3Q7cGhvbmUmcXVvdDsK ICAgICAgICAgICAgaXRlbT0mcXVvdDt0aXRsZSwgdmFsdWUmcXVvdDsgYnJlYWs9JnF1b3Q7 OiAmcXVvdDsgIHdyYXB0YWc9JnF1b3Q7ZGQmcXVvdDsgLyZndDsKICAgICAgJmx0Oy90eHA6 c21kX2lmX2JpbyZndDsKICAgJmx0Oy90eHA6c21kX2Jpb19pbmZvJmd0OwoKJmx0Oy90eHA6 c21kX2Jpb19hdXRob3ImZ3Q7PC9jb2RlPjwvcHJlPgoKPGgyIGlkPSJzbWRfYmlvX2VnNiI+ RXhhbXBsZSA2OiB1cGRhdGluZyBhIHByb2ZpbGUgZnJvbSB0aGUgcHVibGljIHNpZGU8L2gy PgoKPHA+V2l0aCBtZW1fZm9ybSBpbnN0YWxsZWQgYW5kIHNvbWUgc3VpdGFibGUgcHJpdmls ZWdlIHdyYXBwZXIgcGx1Z2luIHN1Y2ggYXMgcnZtX3ByaXZpbGVnZWQgb3IgY2JlX2Zyb3Vu dGF1dGggeW91IGNhbiBwcmVzZW50IGEgcHVibGljIHByb2ZpbGUgZm9yIHlvdXIgdXNlcnMg dG8gbWFpbnRhaW4uIFRoaXMgZXhhbXBsZSB1c2VzIDxjb2RlPiZsdDt0eHA6bWVtX2Zvcm0m Z3Q7PC9jb2RlPiB3aXRoIHRoZSA8Y29kZT50eXBlPSZxdW90O3NtZF9iaW8mcXVvdDs8L2Nv ZGU+IGF0dHJpYnV0ZSBidXQgdGhlIHBsdWdpbiBpcyBlcXVhbGx5IGF0IGhvbWUgd2l0aGlu IDxjb2RlPiZsdDt0eHA6bWVtX3NlbGZfcmVnaXN0ZXImZ3Q7PC9jb2RlPiAoc28geW91IGNh biBjYXB0dXJlIGV4dGVuZGVkIGJpbyBpbmZvcm1hdGlvbiBhdCBzaWduLXVwIHRpbWUpIG9y IGluc2lkZSA8Y29kZT4mbHQ7dHhwOm1lbV9zZWxmX3VzZXJfZWRpdF9mb3JtJmd0OzwvY29k ZT4uPC9wPgoKPHByZT48Y29kZT4mbHQ7dHhwOm1lbV9mb3JtIHR5cGU9JnF1b3Q7c21kX2Jp byZxdW90OyZndDsKCiZsdDt0eHA6c21kX2Jpb19pbmZvIHNob3dfZW1wdHk9JnF1b3Q7MSZx dW90OyZndDsKICAgJmx0O2JyIC8mZ3Q7Jmx0O3R4cDpzbWRfYmlvX2RhdGEgZmllbGQ9JnF1 b3Q7bmFtZSZxdW90OyBpdGVtPSZxdW90O3RpdGxlLCB3aWRnZXQmcXVvdDsgYnJlYWs9JnF1 b3Q7OiAmcXVvdDsgLyZndDsKICAgJmx0O2JyIC8mZ3Q7Jmx0O3R4cDpzbWRfYmlvX2RhdGEg ZmllbGQ9JnF1b3Q7UmVhbE5hbWUmcXVvdDsgaXRlbT0mcXVvdDt0aXRsZSwgd2lkZ2V0JnF1 b3Q7IGJyZWFrPSZxdW90OzogJnF1b3Q7IC8mZ3Q7CiAgICZsdDticiAvJmd0OyZsdDt0eHA6 c21kX2Jpb19kYXRhIGZpZWxkPSZxdW90O2VtYWlsJnF1b3Q7IGl0ZW09JnF1b3Q7dGl0bGUs IHdpZGdldCZxdW90OyBicmVhaz0mcXVvdDs6ICZxdW90OyAvJmd0OwogICAmbHQ7YnIgLyZn dDsmbHQ7dHhwOnNtZF9iaW9fZGF0YSBmaWVsZD0mcXVvdDthdmF0YXImcXVvdDsgaXRlbT0m cXVvdDt0aXRsZSwgd2lkZ2V0JnF1b3Q7IGJyZWFrPSZxdW90OzogJnF1b3Q7IC8mZ3Q7CiAg ICZsdDticiAvJmd0OyZsdDt0eHA6c21kX2Jpb19kYXRhIGZpZWxkPSZxdW90O21pbmlfYmlv JnF1b3Q7IGl0ZW09JnF1b3Q7dGl0bGUsIHZhbHVlJnF1b3Q7IGJyZWFrPSZxdW90OzogJnF1 b3Q7IC8mZ3Q7CiAgICZsdDticiAvJmd0OyZsdDt0eHA6c21kX2Jpb19kYXRhIGZpZWxkPSZx dW90O3Bob25lX2hvbWUmcXVvdDsgaXRlbT0mcXVvdDt0aXRsZSwgd2lkZ2V0JnF1b3Q7IGJy ZWFrPSZxdW90OzogJnF1b3Q7IC8mZ3Q7CiAgICZsdDticiAvJmd0OyZsdDt0eHA6c21kX2Jp b19kYXRhIGZpZWxkPSZxdW90O3Bob25lX3dvcmsmcXVvdDsgaXRlbT0mcXVvdDt0aXRsZSwg d2lkZ2V0JnF1b3Q7IGJyZWFrPSZxdW90OzogJnF1b3Q7IC8mZ3Q7CiAgICZsdDticiAvJmd0 OyZsdDt0eHA6c21kX2Jpb19kYXRhIGZpZWxkPSZxdW90O21hcmtldGluZ19wcmVmZXJlbmNl JnF1b3Q7IGl0ZW09JnF1b3Q7dGl0bGUsIHdpZGdldCZxdW90OyBicmVhaz0mcXVvdDs6ICZx dW90OyAvJmd0OwombHQ7L3R4cDpzbWRfYmlvX2luZm8mZ3Q7CiZsdDt0eHA6bWVtX3N1Ym1p dCAvJmd0OwoKJmx0Oy90eHA6bWVtX2Zvcm0mZ3Q7PC9jb2RlPjwvcHJlPgoKPGgyPkF1dGhv ciAvIENyZWRpdHM8L2gyPgoKPHA+PGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL2Nv bnRhY3QiPlN0ZWYgRGF3c29uPC9hPi4gVGhlIHBsdWdpbiBpcyBhIGxvZ2ljYWwgZXh0ZW5z aW9uIG9mIHB2Y191c2Vyc19pbmZvIGJ5IFBldGVyIFYuIENvb2sgKHRoZSBzbWRfYmlvX2Fy dGljbGVzIHRhZyBpcyBlc3NlbnRpYWxseSB0aGUgc2FtZSBhcyBwdmNfYXV0aG9yX2FydGlj bGVzKS4gVGhhbmtzIGFsc28gdG8gcGllbWFuIGZvciBzZXR0aW5nIHRoZSB3aGVlbHMgaW4g bW90aW9uIGFuZCBuZXQtY2FydmVyIGZvciBoaXMgaW5pbWl0YWJsZSBrbmFjayBvZiBtYWtp bmcgdGhpbmdzIGJldHRlci48L3A+Cgo8aDI+Q2hhbmdlbG9nPC9oMj4KCjx1bD4KCTxsaT4y MyBPY3QgMjAxNCB8IDAuNDEgfCBGaXhlZCBhcnJheS10by1zdHJpbmcgY29udmVyc2lvbiBp biBqYXZhc2NyaXB0IGNvbW1lbnQgKHRoYW5rcyBhc2xzdzY2KTwvbGk+Cgk8bGk+MjUgRmVi IDIwMTMgfCAwLjQwIHwgSW1wcm92ZWQgcGVyZm9ybWFuY2UgYW5kIHJlZHVjZWQgc2VydmVy IGxvYWQgYnkgdXAgdG8gOTAlICh0aGFua3MgamFrb2IpOyBwbHVnaW4gbGlmZWN5Y2xlIGF3 YXJlOyBwZXJtaXR0ZWQgY29uZmlndXJhYmxlIGRhdGFiYXNlIGNvbHVtbiB0eXBlcy9zaXpl cyBhbmQgaW50ZXJuYXRpb25hbCBjaGFyYWN0ZXJzOyByZW1vdmVkIGJhc2U2NCBjc3M7IGFk ZGVkIHNtZF9iaW9fYXV0aG9yLCBzbWRfYmlvX2RhdGEsIHNtZF9iaW9faXRlcmF0ZSwgc21k X2lmX2Jpbywgc21kX2lmX2Jpb19maXJzdF9hdXRob3IgYW5kIHNtZF9pZl9iaW9fbGFzdF9h dXRob3IgdGFnczsgYWRkZWQgPGNvZGU+c2hvd19lbXB0eTwvY29kZT4gYXR0cmlidXRlOyBk ZXByZWNhdGVkIDxjb2RlPmF1dGhvcjwvY29kZT4sIDxjb2RlPml0ZW1zPC9jb2RlPiAobm93 IDxjb2RlPmZpZWxkczwvY29kZT4pLCA8Y29kZT5sYWJlbGNsYXNzPC9jb2RlPiwgPGNvZGU+ aXRlbXdyYXB0YWc8L2NvZGU+IChub3cgPGNvZGU+YnJlYWs8L2NvZGU+KSBhbmQgPGNvZGU+ aXRlbWNsYXNzPC9jb2RlPiAobm93IDxjb2RlPmJyZWFrY2xhc3M8L2NvZGU+KTsgYWx0ZXJl ZCByZXBsYWNlbWVudCBrZXkgbmFtZXM7IGZpeGVkIGFuZCBpbXByb3ZlZCBob3ZlciB0b29s dGlwcyBvbiA8ZW0+QWRtaW4tJmd0O1VzZXJzPC9lbT4gdGFiOyBpbmNyZWFzZWQgZGVmYXVs dCB2YXJjaGFyIHNpemUgdG8gMjU1ICh0aGFua3MgaGFibGFibG93KTsgYWRkZWQgbXVsdGkt c2VsZWN0IGxpc3RzIGFuZCBwZXJtaXR0ZWQgY2hlY2tib3hlcyB0byBiZSBtYXJrZWQgYXMg ZGVmYXVsdDsgYWRkZWQgbW9yZSBmaWVsZCB0eXBlcyBmb3IgPHNwYW4gY2xhc3M9ImNhcHMi PkhUTUw8L3NwYW4+IDUgd2lkZ2V0czsgZW5hYmxlZCA8Y29kZT5TTURfQklPX0ZOfGZ1bmN0 aW9ufHBhcmFtfHBhcmFtfC4uLjwvY29kZT4gc3VwcG9ydCB3aGVuIGRlZmluaW5nIGZpZWxk cyB0byBjYWxsIGFyYml0cmFyeSBmdW5jdGlvbnM7IGV4cGVyaW1lbnRhbCBzdXBwb3J0IGZv ciBpdGVtPSYjODIyMDt3aWRnZXQmIzgyMjE7IHRvIGRpc3BsYXkgYW4gaW5wdXQgY29udHJv bCBmb3IgdGhlIGdpdmVuIGZpZWxkPC9saT4KCTxsaT4wOCBKdW4gMjAxMCB8IDAuMzEgfCBK YXZhc2NyaXB0IG9ubHkgYXBwZWFycyBvbiBhZG1pbiB0YWIgKHRoYW5rcyByZWRib3QvR29j b20pPC9saT4KCTxsaT4zMSBBdWcgMjAwOSB8IDAuMzAgfCBSZW1vdmVkIDxjb2RlPml0ZW08 L2NvZGU+IGF0dHJpYnV0ZTsgZml4ZWQgd2FybmluZyBtZXNzYWdlIGlmIHVzaW5nIHNpbmds ZSBpdGVtczsgaGlkZGVuIHByZWYgPGNvZGU+c21kX2Jpb19zYW5pdGl6ZV9uYW1lPC9jb2Rl PiBmb3JjZXMgc2FuaXRpemVkIGxvZ2luIG5hbWVzPC9saT4KCTxsaT4yMSBBdWcgMjAwOSB8 IDAuMjAgfCBGaXJzdCBwdWJsaWMgcmVsZWFzZTsgbm8gaW1hZ2UvdGh1bWIgb3V0cHV0OyBl eHBlcmltZW50YWwgPGNvZGU+b3B0aW9uczwvY29kZT4gYXR0cmlidXRlIHJlbW92ZWQ7IGNv bnRhaW5lci9mb3JtIGFjY2VwdHMgVHhwIHRhZ3M7IGZpeGVkIHRleHRib3ggc2l6ZSBsaW1p dCAodGhhbmtzIE1hdHREKTwvbGk+Cgk8bGk+MTQgSnVsIDIwMDkgfCAwLjEwIHwgSW5pdGlh bCAobm9uLXB1YmxpYykgcmVsZWFzZTwvbGk+CjwvdWw+IjtzOjM6Im1kNSI7czozMjoiOGE1 NmI4YTMxMTljNTcwNzI1MGQ2ZDcyNjA2NmVkZTMiO3M6ODoidGV4dHBhY2siO3M6MjIwMjoi I0BzbWRfYmlvCnNtZF9iaW9fYWRtaW5fdGFiID0+IEJpbyBjb25maWcKc21kX2Jpb19jb2xz aXplID0+IENvbHVtbiBzaXplCnNtZF9iaW9fY29sdHlwZSA9PiBDb2x1bW4gdHlwZQpzbWRf YmlvX2hlbHAgPT4gPwpzbWRfYmlvX2hlbHBfdW51c2VkID0+IFVudXNlZCBmb3IgdGhpcyBU eXBlCnNtZF9iaW9fbWV0YV9hZGQgPT4gQWRkIGJpbyBmaWVsZApzbWRfYmlvX21ldGFfYWRk ZWQgPT4gQmlvIGZpZWxkIGFkZGVkCnNtZF9iaW9fbWV0YV9kZWxldGVkID0+IEJpbyBmaWVs ZCBhbmQgYWxsIGRhdGEgZGVsZXRlZCBmcm9tIHthZmZlY3RlZH0Kc21kX2Jpb19tZXRhX2Vk aXQgPT4gRWRpdCBiaW8gZmllbGQKc21kX2Jpb19tZXRhX25vdF9hZGRlZCA9PiBQcm9ibGVt IGFkZGluZyBiaW8gZmllbGQ6IGNoZWNrIG5hbWUgaXMgbm90IGFscmVhZHkgdXNlZApzbWRf YmlvX21ldGFfbm90X2RlbGV0ZWQgPT4gUHJvYmxlbSBkZWxldGluZyBiaW8gZmllbGQ6IGl0 IG1heSBzdGlsbCBleGlzdApzbWRfYmlvX21ldGFfdXBkYXRlZCA9PiBCaW8gZmllbGQgIntu YW1lfSIgdXBkYXRlZApzbWRfYmlvX21ldGFfdXBkYXRlX2ZhaWxlZCA9PiBGYWlsZWQgdG8g c2F2ZSBiaW8gZmllbGQgIntuYW1lfSIKc21kX2Jpb19tZXRhX3VwZGF0ZV9wYXJ0aWFsID0+ IFBhcnRpYWxseSBzYXZlZCBiaW8gZmllbGQgIntuYW1lfSIKc21kX2Jpb19tb3JlID0+IE1v cmUKc21kX2Jpb19wb3NpdGlvbiA9PiBQb3NpdGlvbgpzbWRfYmlvX3NpemUgPT4gU2l6ZQpz bWRfYmlvX3NpemVoZWxwX2ltYWdlID0+IFRoZSB4LHkgZGltZW5zaW9ucyBvZiB0aGUgaW1h Z2UvdGh1bWJuYWlsIG9uIHRoZSBBZG1pbi0+VXNlcnMgdGFiLiBJZiBvbmx5IG9uZSB2YWx1 ZSBpcyBnaXZlbiwgdGhlIGltYWdlIHdpbGwgYmUgc3F1YXJlLiBJZiBlaXRoZXIgdmFsdWUg aXMgb21pdHRlZCwgdGhlIGRpbWVuc2lvbnMgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSB3aWxs IGJlIHVzZWQKc21kX2Jpb19zaXplaGVscF9udW1yYW5nZSA9PiBVcCB0byB0aHJlZSBjb21t YS1zZXBhcmF0ZWQgdmFsdWVzIHNwZWNpZnlpbmcgdGhlOiAxKSBtaW5pbXVtLCAyKSBtYXhp bXVtLCAzKSBwZXJtaXR0ZWQgc3RlcCBvZiB0aGUgaW5wdXQKc21kX2Jpb19zaXplaGVscF90 ZXh0ID0+IFVwIHRvIHR3byBjb21tYS1zZXBhcmF0ZWQgdmFsdWVzIHNwZWNpZnlpbmcgdGhl IG51bWJlciBvZiBjaGFyYWN0ZXJzOiAxKSBvZiB0aGUgaW5wdXQgYm94IG9uIHRoZSBBZG1p bi0+VXNlcnMgdGFiLCAyKSB0aGUgdXNlciBpcyBhbGxvd2VkIHRvIGVudGVyCnNtZF9iaW9f c2l6ZWhlbHBfdGV4dGFyZWEgPT4gVXAgdG8gdHdvIGNvbW1hLXNlcGFyYXRlZCB2YWx1ZXMg c3BlY2lmeWluZyB0aGUgZGltZW5zaW9ucyBvZiB0aGUgdGV4dGFyZWEgaW4gY2hhcmFjdGVy czogMSkgV2lkdGgsIDIpIEhlaWdodApzbWRfYmlvX3RibF9pbnN0YWxsZWQgPT4gVGFibGVz IGluc3RhbGxlZC4Kc21kX2Jpb190Ymxfbm90X2luc3RhbGxlZCA9PiBUYWJsZXMgTk9UIGlu c3RhbGxlZC4Kc21kX2Jpb190Ymxfbm90X3JlbW92ZWQgPT4gVGFibGVzIE5PVCByZW1vdmVk LgpzbWRfYmlvX3RibF9yZW1vdmVkID0+IFRhYmxlcyByZW1vdmVkLgpzbWRfYmlvX3ZhbGhl bHBfaW1hZ2UgPT4gTGltaXQgdGhlIGltYWdlcyBpbiB0aGUgZHJvcGRvd24gdG8gdGhlIG9u ZXMgaW4gdGhpcyBnaXZlbiBwYXJlbnQgaW1hZ2UgY2F0ZWdvcnkuIElmIG9taXR0ZWQsIGFs bCBpbWFnZXMgYXJlIGF2YWlsYWJsZQpzbWRfYmlvX3ZhbGhlbHBfbHJjID0+IENvbW1hLSBv ciBuZXdsaW5lLXNlcGFyYXRlZCBsaXN0IG9mIGF2YWlsYWJsZSBvcHRpb25zIGluIHRoZSBz ZXQuIElmIHlvdSBsaXN0IG9ubHkgaXRlbSBsYWJlbHMsIHRoZSBuYW1lcyB3aWxsIGJlIGF1 dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIChsb3dlciBjYXNlLCBubyBzcGFjZXMpLiBZb3UgbWF5 IHNwZWNpZnkgeW91ciBvd24gbmFtZXMgdXNpbmc6IG5hbWUxID0+IExhYmVsIDEsIG5hbWUy IC0+IExhYmVsIDIsIC4uLgpzbWRfYmlvX3ZhbGhlbHBfdGV4dCA9PiBUaGUgZGVmYXVsdCB2 YWx1ZSB0aGF0IHdpbGwgYXBwZWFyIGluIHRoZSB0ZXh0IGJveApzbWRfYmlvX3ZhbGhlbHBf eW5yID0+IERlZmF1bHQgdmFsdWUgb2YgdGhlIFllcy9ObyBjaGVja2JveC4gMCAob3Igb21p dHRlZCkgPSBObzsgMSA9IFllcwpzbWRfYmlvX3ZhbHVlID0+IFZhbHVlIjt9