# upm_image v.0.6.1 # More powerful image display. # Mary Fredborg # http://utterplush.com/txp-plugins/upm-image # .......................................................................... # A plugin for Textpattern # http://textpattern.com/ # # Adding Plugins to Your Textpattern Installation # http://textpattern.net/wiki/index.php?title=Intermediate_Weblog_Model#Adding_Plugins_to_Your_Textpattern_Installation # .......................................................................... YToxMTp7czo0OiJuYW1lIjtzOjk6InVwbV9pbWFnZSI7czoxMToiZGVzY3JpcHRpb24iO3M6 Mjg6Ik1vcmUgcG93ZXJmdWwgaW1hZ2UgZGlzcGxheS4iO3M6NzoidmVyc2lvbiI7czo1OiIw LjYuMSI7czo0OiJ0eXBlIjtpOjE7czo2OiJhdXRob3IiO3M6MTM6Ik1hcnkgRnJlZGJvcmci O3M6MTA6ImF1dGhvcl91cmkiO3M6NDM6Imh0dHA6Ly91dHRlcnBsdXNoLmNvbS90eHAtcGx1 Z2lucy91cG0taW1hZ2UiO3M6NDoiY29kZSI7czoyNTAwNjoidXBtX2ltYWdlX2luc3RhbGwo KTsKCglpZiAodHhwaW50ZXJmYWNlID09ICdhZG1pbicpCgl7CgkJYWRkX3ByaXZzKCd1cG1f aW1hZ2VfcHJlZnMnLCAnMSwyJyk7CgkJcmVnaXN0ZXJfdGFiKCdleHRlbnNpb25zJywgJ3Vw bV9pbWFnZV9wcmVmcycsICd1cG1faW1hZ2UnKTsKCQlyZWdpc3Rlcl9jYWxsYmFjaygndXBt X2ltYWdlX3ByZWZzJywgJ3VwbV9pbWFnZV9wcmVmcycpOwoJfQoKCWVsc2UKCXsKCQlpZiAo Z3BzKCdqcycpID09ICd1cG1faW1hZ2UnKQoJCXsKCQkJd2hpbGUgKEBvYl9lbmRfY2xlYW4o KSk7CgoJCQl1cG1faW1hZ2VfanMoKTsKCQl9CgoJCWVsc2UKCQl7CgkJCXVwbV9pbWFnZV9j aGVja19sb2FkKCk7CgkJfQoJfQoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCWZ1bmN0aW9uIHVwbV9hcnRpY2xl X2ltYWdlKCRhdHRzID0gYXJyYXkoKSwgJHRoaW5nID0gTlVMTCkKCXsKCQlnbG9iYWwgJHBy ZWZzLCAkdGhpc2FydGljbGU7CgoJCSRhdHRzID0gbEF0dHMoYXJyYXkoCgkJCSdicmVhaycJ CQkJPT4gJycsCgkJCSdicmVha19jbGFzcycgPT4gJycsCgkJCSdjbGFzcycJCQkJPT4gJycs CgkJCSdmb3JtJwkJCQk9PiAnJywKCQkJJ2lkJwkJCQkJPT4gJycsCgkJCSdsaW1pdCcJCQkJ PT4gJycsCgkJCSdvZmZzZXQnCQkJPT4gMCwKCQkJJ3Nob3dfd2lkdGgnCT0+ICd5ZXMnLAoJ CQknc2hvd19oZWlnaHQnID0+ICd5ZXMnLAoJCQknc2hvd19hbHQnCQk9PiAneWVzJywKCQkJ J3Nob3dfdGl0bGUnCT0+ICd5ZXMnLAoJCQkndHlwZScJCQkJPT4gJ2ltYWdlJywKCQkJJ3Vy bCcJCQkJCT0+ICcnLAoJCQknd3JhcGZvcm0nCQk9PiAnJywKCQkJJ3dyYXB0YWcnCQkJPT4g JycsCgkJCSd4aHRtbCcJCQkJPT4gJ3llcycKCQkpLCAkYXR0cyk7CgoJCWV4dHJhY3QoJGF0 dHMpOwoKCQkkYXJ0aWNsZV9pbWFnZSA9ICR0aGlzYXJ0aWNsZVsnYXJ0aWNsZV9pbWFnZSdd OwoKCQlpZiAoZW1wdHkoJGFydGljbGVfaW1hZ2UpKQoJCXsKCQkJcmV0dXJuOwoJCX0KCgkJ JGltYWdlX3VybCA9IHJhd3VybGVuY29kZSgkYXJ0aWNsZV9pbWFnZSk7CgoJCWlmIChmaWxl X2V4aXN0cygkaW1hZ2VfdXJsKSkKCQl7CgkJCSR3ID0gJyc7CgkJCSRoID0gJyc7CgoJCQlp ZiAoJHNob3dfd2lkdGggb3IgJHNob3dfaGVpZ2h0KQoJCQl7CgkJCQkkZm9wZW4gPSBnZXRf Y2ZnX3ZhcignYWxsb3dfdXJsX2ZvcGVuJykgPyB0cnVlIDogZmFsc2U7CgoJCQkJaWYgKCRm b3BlbikKCQkJCXsKCQkJCQlsaXN0KCR3LCAkaCkgPSBnZXRpbWFnZXNpemUoJGltYWdlX3Vy bCk7CgkJCQl9CgkJCX0KCgkJCSRvdXQgPSAnPGltZyBzcmM9IicuJGltYWdlX3VybC4nIicu CgkJCQkoICgkaWQgYW5kICEkd3JhcHRhZykgPyAnIGlkPSInLiRpZC4nIicgOiAnJykuCgkJ CQkoICgkY2xhc3MgYW5kICEkd3JhcHRhZykgPyAnIGNsYXNzPSInLiRjbGFzcy4nIicgOiAn JykuCgkJCQkoICgkdyBhbmQgKCRzaG93X3dpZHRoID09ICd5ZXMnKSkgPyAnIHdpZHRoPSIn LiR3LiciJyA6ICcnICkuCgkJCQkoICgkaCBhbmQgKCRzaG93X2hlaWdodCA9PSAneWVzJykp ID8gJyBoZWlnaHQ9IicuJGguJyInIDogJycgKS4KCQkJCScgYWx0PSIiJy4KCQkJCSgkeGh0 bWwgPT0gJ3llcycgPyAnIC8+JyA6ICc+Jyk7CgoJCQlpZiAoJHVybCkKCQkJewoJCQkJJG91 dCA9IGlzX251bWVyaWMoJHVybCkgPyBocmVmKCRvdXQsIHBlcm1saW5rdXJsX2lkKCR1cmwp KSA6CWhyZWYoJG91dCwgJHVybCk7CgkJCX0KCgkJCXJldHVybiAoJHdyYXB0YWcpID8gZG9U YWcoJG91dCwgJHdyYXB0YWcsICRjbGFzcywgJycsICRpZCkgOiAkb3V0OwoJCX0KCgkJaWYg KHN0cnN0cigkYXJ0aWNsZV9pbWFnZSwgJywnKSkKCQl7CgkJCWlmICgkbGltaXQgPT0gMSkK CQkJewoJCQkJJGFydGljbGVfaW1hZ2UgPSBqb2luKCcnLCBhcnJheV9zbGljZShleHBsb2Rl KCcsJywgJGFydGljbGVfaW1hZ2UpLCAkb2Zmc2V0LCAxKSk7CgkJCX0KCgkJCWVsc2UKCQkJ ewoJCQkJcmV0dXJuIHVwbV9hcnRpY2xlX2ltYWdlX2xpc3QoJGFydGljbGVfaW1hZ2UsICRh dHRzLCAkdGhpbmcpOwoJCQl9CgkJfQoKCQlpZiAoaXNfbnVtZXJpYygkYXJ0aWNsZV9pbWFn ZSkpCgkJewoJCQkkaW1hZ2VfaWQgPSBkb1NsYXNoKCRhcnRpY2xlX2ltYWdlKTsKCgkJCSRy cyA9IHNhZmVfcm93KCcqJywgJ3R4cF9pbWFnZScsICJpZCA9ICckaW1hZ2VfaWQnIGxpbWl0 IDAsIDEiKTsKCgkJCWlmICghJHJzKQoJCQl7CgkJCQlyZXR1cm4gKCRwcmVmc1sncHJvZHVj dGlvbl9zdGF0dXMnXSAhPSAnbGl2ZScpID8KCQkJCQl1cG1faW1hZ2VfZ1R4dCgnbm90X2Zv dW5kJywgYXJyYXkoJ3tpbWFnZX0nID0+ICRpbWFnZV9pZCkpIDoKCQkJCQknJzsKCQkJfQoJ CX0KCgkJZWxzZQoJCXsKCQkJJGltYWdlX25hbWUgPSBkb1NsYXNoKCRhcnRpY2xlX2ltYWdl KTsKCgkJCSRycyA9IHNhZmVfcm93KCcqJywgJ3R4cF9pbWFnZScsICJuYW1lID0gJyRpbWFn ZV9uYW1lJyBsaW1pdCAwLCAxIik7CgoJCQlpZiAoISRycykKCQkJewoJCQkJcmV0dXJuICgk cHJlZnNbJ3Byb2R1Y3Rpb25fc3RhdHVzJ10gIT0gJ2xpdmUnKSA/CgkJCQkJdXBtX2ltYWdl X2dUeHQoJ25vdF9mb3VuZCcsIGFycmF5KCd7aW1hZ2V9JyA9PiAkaW1hZ2VfbmFtZSkpIDoK CQkJCQknJzsKCQkJfQoJCX0KCgkJaWYgKCRmb3JtIG9yICR0aGluZykKCQl7CgkJCXJldHVy biB1cG1faW1nX2N1c3RvbSgkcnMsICRhdHRzLCAkZm9ybSwgJHRoaW5nKTsKCQl9CgoJCWVs c2UKCQl7CgkJCXJldHVybiB1cG1faW1nX2RlZmF1bHQoJHJzLCAkYXR0cyk7CgkJfQoJfQoK Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQovLyBQYXJ0cyBmcm9tIHplbV9hcnRpY2xlX2ltYWdlCi8vIGh0dHA6Ly90 aHJlc2hvbGRzdGF0ZS5jb20vCi8vIGh0dHA6Ly92aWdpbGFudC50di8KLy8gVGhhbmtzIEFs ZXguCgoJZnVuY3Rpb24gdXBtX2FydGljbGVfaW1hZ2VfbGlzdCgkYXJ0aWNsZV9pbWFnZSwg JGF0dHMsICR0aGluZyA9IE5VTEwpCgl7CgkJZ2xvYmFsICRwcmVmczsKCgkJZXh0cmFjdCgk YXR0cyk7CgoJCSRvdXQgPSBhcnJheSgpOwoKCQlpZiAoJGxpbWl0KQoJCXsKCQkJJGltYWdl cyA9IGFycmF5X3NsaWNlKGV4cGxvZGUoJywnLCAkYXJ0aWNsZV9pbWFnZSksICRvZmZzZXQs ICRsaW1pdCk7CgkJfQoKCQllbHNlCgkJewoJCQkkaW1hZ2VzID0gYXJyYXlfc2xpY2UoZXhw bG9kZSgnLCcsICRhcnRpY2xlX2ltYWdlKSwgJG9mZnNldCk7CgkJfQoKCQlmb3IgKCRpID0g MDsgJGkgPCBjb3VudCgkaW1hZ2VzKTsgJGkrKykKCQl7CgkJCWlmIChlbXB0eSgkaW1hZ2Vz WyRpXSkpCgkJCXsKCQkJCXVuc2V0KCRpbWFnZXNbJGldKTsKCQkJfQoJCX0KCgkJJGlkc19y ZXF1ZXN0ZWQgPSAkaW1hZ2VzOwoKCQkkaW1hZ2VzID0gZG9TbGFzaChqb2luKCcsJywgJGlt YWdlcykpOwoKCQkkcnMgPSBzYWZlX3Jvd3MoJyonLCAndHhwX2ltYWdlJywgImlkIGluKCRp bWFnZXMpIG9yZGVyIGJ5IGZpZWxkKGlkLCAkaW1hZ2VzKSIpOwoKCQlpZiAoJHJzKQoJCXsK CQkJJGlkc19mb3VuZCA9IGFycmF5KCk7CgoJCQlmb3JlYWNoICgkcnMgYXMgJHJvdykKCQkJ ewoJCQkJJGlkc19mb3VuZFtdID0gJHJvd1snaWQnXTsKCgkJCQlpZiAoJGZvcm0gb3IgJHRo aW5nKQoJCQkJewoJCQkJCSRvdXRbXSA9IHVwbV9pbWdfY3VzdG9tKCRyb3csICRhdHRzLCAk Zm9ybSwgJHRoaW5nKTsKCQkJCX0KCgkJCQllbHNlCgkJCQl7CgkJCQkJJGltZ191cmwgPSBo dS4kcHJlZnNbJ2ltZ19kaXInXS4nLyc7CgkJCQkJJGltZyA9ICRyb3dbJ2lkJ10uJHJvd1sn ZXh0J107CgoJCQkJCWlmIChpbl9hcnJheSgkdHlwZSwgYXJyYXkoJ3BvcHVwJywgJ3RodW1i JywgJ3RodW1ibmFpbCcpKSkKCQkJCQl7CgkJCQkJCSRpbWdfcGF0aCA9ICRwcmVmc1sncGF0 aF90b19zaXRlJ10uRFMuJHByZWZzWydpbWdfZGlyJ10uRFM7CgkJCQkJCSR0aHVtYiA9ICRy b3dbJ2lkJ10uJ3QnLiRyb3dbJ2V4dCddOwoKCQkJCQkJJHRodW1iX2V4aXN0cyA9IGZhbHNl OwoKCQkJCQkJaWYgKCRyb3dbJ3RodW1ibmFpbCddIGFuZCBmaWxlX2V4aXN0cygkaW1nX3Bh dGguJHRodW1iKSkKCQkJCQkJewoJCQkJCQkJJHRodW1iX2V4aXN0cyA9IHRydWU7CgoJCQkJ CQkJbGlzdCgkdGh1bWJfdywgJHRodW1iX2gpID0gZ2V0aW1hZ2VzaXplKCRpbWdfcGF0aC4k dGh1bWIpOwoJCQkJCQl9CgkJCQkJfQoKCQkJCQlzd2l0Y2ggKCR0eXBlKQoJCQkJCXsKCQkJ CQkJY2FzZSAncG9wdXAnOgoJCQkJCQkJaWYgKCR0aHVtYl9leGlzdHMpCgkJCQkJCQl7CgkJ CQkJCQkJJG91dFtdID0gJzxhIGhyZWY9IicuJGltZ191cmwuJGltZy4nIicuCgkJCQkJCQkJ CSggKCRyb3dbJ2NhcHRpb24nXSBhbmQgKCRzaG93X3RpdGxlID09ICd5ZXMnKSkgPyAnIHRp dGxlPSInLiRyb3dbJ2NhcHRpb24nXS4nIicgOiAnJyApLgoJCQkJCQkJCQknIG9uY2xpY2s9 InVwbV9wb3BfaW1nKHRoaXMuaHJlZiwgXCcnLiRyb3dbJ3cnXS4nXCcsIFwnJy4kcm93Wydo J10uJ1wnLCBcJycuJHJvd1snbmFtZSddLidcJywgdGhpcy50aXRsZSk7IHJldHVybiBmYWxz ZTsiPicuCgkJCQkJCQkJCSc8aW1nIHNyYz0iJy4kaW1nX3VybC4kdGh1bWIuJyInLgoJCQkJ CQkJCQkoJHNob3dfd2lkdGggPT0gJ3llcycgPyAnIHdpZHRoPSInLiR0aHVtYl93LiciJyA6 ICcnKS4KCQkJCQkJCQkJKCRzaG93X2hlaWdodCA9PSAneWVzJyA/ICcgaGVpZ2h0PSInLiR0 aHVtYl9oLiciJyA6ICcnKS4KCQkJCQkJCQkJKCAoJHJvd1snYWx0J10gYW5kICgkc2hvd19h bHQgPT0gJ3llcycpKSA/ICcgYWx0PSInLmh0bWxzcGVjaWFsY2hhcnMoJHJvd1snYWx0J10p LiciIHRpdGxlPSIiJyA6ICcgYWx0PSIiJyApLgoJCQkJCQkJCQkoJHhodG1sID09ICd5ZXMn ID8gJyAvPicgOiAnPicpLgoJCQkJCQkJCQknPC9hPic7CgkJCQkJCQl9CgoJCQkJCQkJZWxz ZWlmICgkcHJlZnNbJ3Byb2R1Y3Rpb25fc3RhdHVzJ10gIT0gJ2xpdmUnKQoJCQkJCQkJewoJ CQkJCQkJCSRvdXRbXSA9IHVwbV9pbWFnZV9nVHh0KCdub190aHVtYicsIGFycmF5KCd7aW1h Z2V9JyA9PiAkcm93WydpZCddKSk7CgkJCQkJCQl9CgkJCQkJCWJyZWFrOwoKCQkJCQkJY2Fz ZSAndGh1bWJuYWlsJzoKCQkJCQkJY2FzZSAndGh1bWInOgoJCQkJCQkJaWYgKCR0aHVtYl9l eGlzdHMpCgkJCQkJCQl7CgkJCQkJCQkJJG91dFtdID0gJzxpbWcgc3JjPSInLiRpbWdfdXJs LiR0aHVtYi4nIicuCgkJCQkJCQkJCSgkc2hvd193aWR0aCA9PSAneWVzJyA/ICcgd2lkdGg9 IicuJHRodW1iX3cuJyInIDogJycpLgoJCQkJCQkJCQkoJHNob3dfaGVpZ2h0ID09ICd5ZXMn ID8gJyBoZWlnaHQ9IicuJHRodW1iX2guJyInIDogJycpLgoJCQkJCQkJCQkoICgkcm93Wydh bHQnXSBhbmQgKCRzaG93X2FsdCA9PSAneWVzJykpID8gJyBhbHQ9IicuJHJvd1snYWx0J10u JyInIDogJyBhbHQ9IiInKS4KCQkJCQkJCQkJKCAoJHJvd1snY2FwdGlvbiddIGFuZCAoJHNo b3dfdGl0bGUgPT0gJ3llcycpKSA/ICcgdGl0bGU9IicuaHRtbHNwZWNpYWxjaGFycygkcm93 WydjYXB0aW9uJ10pLiciJyA6ICcnKS4KCQkJCQkJCQkJKCR4aHRtbCA9PSAneWVzJyA/ICcg Lz4nIDogJz4nKTsKCQkJCQkJCX0KCgkJCQkJCQllbHNlaWYgKCRwcmVmc1sncHJvZHVjdGlv bl9zdGF0dXMnXSAhPSAnbGl2ZScpCgkJCQkJCQl7CgkJCQkJCQkJJG91dFtdID0gdXBtX2lt YWdlX2dUeHQoJ25vX3RodW1iJywgYXJyYXkoJ3tpbWFnZX0nID0+ICRyb3dbJ2lkJ10pKTsK CQkJCQkJCX0KCQkJCQkJYnJlYWs7CgoJCQkJCQlkZWZhdWx0OgoJCQkJCQkJJHRlbXAgPSAn PGltZyBzcmM9IicuJGltZ191cmwuJGltZy4nIicuCgkJCQkJCQkJKCRzaG93X3dpZHRoID09 ICd5ZXMnID8gJyB3aWR0aD0iJy4kcm93Wyd3J10uJyInIDogJycpLgoJCQkJCQkJCSgkc2hv d19oZWlnaHQgPT0gJ3llcycgPyAnIGhlaWdodD0iJy4kcm93WydoJ10uJyInIDogJycpLgoJ CQkJCQkJCSggKCRyb3dbJ2FsdCddIGFuZCAoJHNob3dfYWx0ID09ICd5ZXMnKSkgPyAnIGFs dD0iJy4kcm93WydhbHQnXS4nIicgOiAnJyApLgoJCQkJCQkJCSggKCRyb3dbJ2NhcHRpb24n XSBhbmQgKCRzaG93X3RpdGxlID09ICd5ZXMnKSkgPyAnIHRpdGxlPSInLmh0bWxzcGVjaWFs Y2hhcnMoJHJvd1snY2FwdGlvbiddKS4nIicgOiAnJyApLgoJCQkJCQkJCSgkeGh0bWwgPT0g J3llcycgPyAnIC8+JyA6ICc+Jyk7CgoJCQkJCQkJaWYgKCR1cmwpCgkJCQkJCQl7CgkJCQkJ CQkJJHRlbXAgPSBpc19udW1lcmljKCR1cmwpID8KCQkJCQkJCQkJaHJlZigkdGVtcCwgcGVy bWxpbmt1cmxfaWQoJHVybCkpIDoKCQkJCQkJCQkJaHJlZigkdGVtcCwgJHVybCk7CgkJCQkJ CQl9CgoJCQkJCQkJJG91dFtdID0gJHRlbXA7CgkJCQkJCWJyZWFrOwoJCQkJCX0KCQkJCX0K CQkJfQoKCQkJJGlkc19yZXF1ZXN0ZWQgPSBhcnJheV91bmlxdWUoJGlkc19yZXF1ZXN0ZWQp OwoKCQkJaWYgKCR3cmFwZm9ybSkKCQkJewoJCQkJJHVwbV9pbWdfY3VzdG9tWydsaXN0J10g PSBqb2luKCcnLCAkb3V0KTsKCgkJCQkkdGVtcCA9IHBhcnNlKGZldGNoX2Zvcm0oJHdyYXBm b3JtKSk7CgkJCX0KCgkJCWVsc2UKCQkJewoJCQkJJGF0dHMgPSAoJGlkKSA/ICcgaWQ9Iicu JGlkLiciJyA6ICcnOwoKCQkJCSR0ZW1wID0gKCR3cmFwdGFnKSA/IGRvV3JhcCgkb3V0LCAk d3JhcHRhZywgJGJyZWFrLCAkY2xhc3MsICRicmVha19jbGFzcywgJGF0dHMpIDogam9pbihu LCAkb3V0KTsKCQkJfQoKCQkJaWYgKCRwcmVmc1sncHJvZHVjdGlvbl9zdGF0dXMnXSAhPSAn bGl2ZScgJiYgKCRpZHNfcmVxdWVzdGVkICE9ICRpZHNfZm91bmQpKQoJCQl7CgkJCQkkaWRz X21pc3NpbmcgPSBhcnJheV9kaWZmKCRpZHNfcmVxdWVzdGVkLCAkaWRzX2ZvdW5kKTsKCgkJ CQlyZXR1cm4gJHRlbXAudXBtX2ltYWdlX2dUeHQoJ25vdF9mb3VuZF9saXN0JywgYXJyYXko J3tsaXN0fScgPT4gam9pbignLCAnLCAkaWRzX21pc3NpbmcpKSk7CgkJCX0KCgkJCWVsc2UK CQkJewoJCQkJcmV0dXJuICR0ZW1wOwoJCQl9CgkJfQoKCQlyZXR1cm4gKCRwcmVmc1sncHJv ZHVjdGlvbl9zdGF0dXMnXSAhPSAnbGl2ZScpID8KCQkJdXBtX2ltYWdlX2dUeHQoJ25vdF9m b3VuZF9saXN0JywgYXJyYXkoJ3tsaXN0fScgPT4gam9pbignLCAnLCAkaW1hZ2VzKSkpCgkJ CTogJyc7Cgl9CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIGlmIG9uZSBvciBtb3JlIGFydGljbGUgaW1hZ2Vz IGV4aXN0CgoJZnVuY3Rpb24gdXBtX2lmX2FydGljbGVfaW1hZ2UoJGF0dHMgPSBhcnJheSgp LCAkdGhpbmcgPSBOVUxMKQoJewoJCWdsb2JhbCAkdGhpc2FydGljbGU7CgoJCWFzc2VydF9h cnRpY2xlKCk7CgoJCSRjb25kaXRpb24gPSAoICFlbXB0eSgkdGhpc2FydGljbGVbJ2FydGlj bGVfaW1hZ2UnXSkgKTsKCgkJcmV0dXJuIHBhcnNlKEV2YWxFbHNlKCR0aGluZywgJGNvbmRp dGlvbikpOwoJfQoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBpZiBtb3JlIHRoYW4gb25lIGFydGljbGUgaW1h Z2UgZXhpc3RzCgoJZnVuY3Rpb24gdXBtX2lmX2FydGljbGVfaW1hZ2VfbGlzdCgkYXR0cyA9 IGFycmF5KCksICR0aGluZyA9IE5VTEwpCgl7CgkJZ2xvYmFsICR0aGlzYXJ0aWNsZTsKCgkJ YXNzZXJ0X2FydGljbGUoKTsKCgkJJGNvbmRpdGlvbiA9ICggIWVtcHR5KCR0aGlzYXJ0aWNs ZVsnYXJ0aWNsZV9pbWFnZSddKSBhbmQgc3Ryc3RyKCR0aGlzYXJ0aWNsZVsnYXJ0aWNsZV9p bWFnZSddLCAnLCcpICk7CgoJCXJldHVybiBwYXJzZShFdmFsRWxzZSgkdGhpbmcsICRjb25k aXRpb24pKTsKCX0KCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglmdW5jdGlvbiB1cG1faW1hZ2UoJGF0dHMgPSBh cnJheSgpLCAkdGhpbmcgPSBOVUxMKQoJewoJCWdsb2JhbCAkcHJlZnM7CgoJCSRhdHRzID0g bEF0dHMoYXJyYXkoCgkJCSdjbGFzcycJCQkJPT4gJycsCgkJCSdmb3JtJwkJCQk9PiAnJywK CQkJJ2lkJwkJCQkJPT4gJycsCgkJCSdpbWFnZV9pZCcJCT0+ICcnLAoJCQknaW1hZ2VfbmFt ZScJPT4gJycsCgkJCSdpbWFnZV91cmwnCQk9PiAnJywKCQkJJ3Nob3dfd2lkdGgnCT0+ICd5 ZXMnLAoJCQknc2hvd19oZWlnaHQnID0+ICd5ZXMnLAoJCQknc2hvd19hbHQnCQk9PiAneWVz JywKCQkJJ3Nob3dfdGl0bGUnCT0+ICd5ZXMnLAoJCQkndHlwZScJCQkJPT4gJ2ltYWdlJywK CQkJJ3VybCcJCQkJCT0+ICcnLAoJCQknd3JhcHRhZycJCQk9PiAnJywKCQkJJ3hodG1sJwkJ CQk9PiAneWVzJwoJCSksICRhdHRzKTsKCgkJZXh0cmFjdCgkYXR0cyk7CgoJCWlmICgkdHlw ZSA9PSAnYXJ0aWNsZScpCgkJewoJCQlyZXR1cm4gdXBtX2FydGljbGVfaW1hZ2UoJGF0dHMs ICR0aGluZyk7CgkJfQoKCQlpZiAoJGltYWdlX3VybCkKCQl7CgkJCSRpbWFnZV91cmwgPSBy YXd1cmxlbmNvZGUoJGltYWdlX3VybCk7CgoJCQlpZiAoZmlsZV9leGlzdHMoJGltYWdlX3Vy bCkpCgkJCXsKCQkJCSR3ID0gJyc7CgkJCQkkaCA9ICcnOwoKCQkJCSRmb3BlbiA9IGdldF9j ZmdfdmFyKCdhbGxvd191cmxfZm9wZW4nKSA/IHRydWUgOiBmYWxzZTsKCgkJCQlpZiAoJGZv cGVuKQoJCQkJewoJCQkJCWxpc3QoJHcsICRoKSA9IGdldGltYWdlc2l6ZSgkaW1hZ2VfdXJs KTsKCQkJCX0KCgkJCQkkb3V0ID0gJzxpbWcgc3JjPSInLiRpbWFnZV91cmwuJyInLgoJCQkJ CSggKCRpZCBhbmQgISR3cmFwdGFnKSA/ICcgaWQ9IicuJGlkLiciJyA6ICcnKS4KCQkJCQko ICgkY2xhc3MgYW5kICEkd3JhcHRhZykgPyAnIGNsYXNzPSInLiRjbGFzcy4nIicgOiAnJyku CgkJCQkJKCAoJHcgYW5kICgkc2hvd193aWR0aCA9PSAneWVzJykpID8gJyB3aWR0aD0iJy4k dy4nIicgOiAnJyApLgoJCQkJCSggKCRoIGFuZCAoJHNob3dfaGVpZ2h0ID09ICd5ZXMnKSkg PyAnIGhlaWdodD0iJy4kaC4nIicgOiAnJyApLgoJCQkJCScgYWx0PSIiJy4KCQkJCQkoJHho dG1sID09ICd5ZXMnID8gJyAvPicgOiAnPicpOwoKCQkJCWlmICgkdXJsKQoJCQkJewoJCQkJ CSRvdXQgPSBpc19udW1lcmljKCR1cmwpID8KCQkJCQkJaHJlZigkb3V0LCBwZXJtbGlua3Vy bF9pZCgkdXJsKSkgOgoJCQkJCQlocmVmKCRvdXQsICR1cmwpOwoJCQkJfQoKCQkJCXJldHVy biAoJHdyYXB0YWcpID8gZG9UYWcoJG91dCwgJHdyYXB0YWcsICRjbGFzcywgJycsICRpZCkg OiAkb3V0OwoJCQl9CgoJCQlyZXR1cm4gKCRwcmVmc1sncHJvZHVjdGlvbl9zdGF0dXMnXSAh PSAnbGl2ZScpID8KCQkJCXVwbV9pbWFnZV9nVHh0KCdub3RfZm91bmQnLCBhcnJheSgne2lt YWdlfScgPT4gJGltYWdlX3VybCkpIDoKCQkJCScnOwoJCX0KCgkJZWxzZWlmICgkaW1hZ2Vf aWQpCgkJewoJCQlpZiAoIWlzX251bWVyaWMoJGltYWdlX2lkKSkKCQkJewoJCQkJcmV0dXJu IHVwbV9pbWFnZV9nVHh0KCdpbnZhbGlkX2lkJyk7CgkJCX0KCgkJCSRpbWFnZV9pZCA9IGRv U2xhc2goJGltYWdlX2lkKTsKCgkJCSRycyA9IHNhZmVfcm93KCcqJywgJ3R4cF9pbWFnZScs ICJpZCA9ICckaW1hZ2VfaWQnIGxpbWl0IDAsIDEiKTsKCgkJCWlmICghJHJzKQoJCQl7CgkJ CQlyZXR1cm4gKCRwcmVmc1sncHJvZHVjdGlvbl9zdGF0dXMnXSAhPSAnbGl2ZScpID8KCQkJ CQl1cG1faW1hZ2VfZ1R4dCgnbm90X2ZvdW5kJywgYXJyYXkoJ3tpbWFnZX0nID0+ICRpbWFn ZV9pZCkpIDoKCQkJCQknJzsKCQkJfQoJCX0KCgkJZWxzZWlmICgkaW1hZ2VfbmFtZSAhPSAn JykKCQl7CgkJCSRpbWFnZV9uYW1lID0gZG9TbGFzaCgkaW1hZ2VfbmFtZSk7CgoJCQkkcnMg PSBzYWZlX3JvdygnKicsICd0eHBfaW1hZ2UnLCAibmFtZSA9ICckaW1hZ2VfbmFtZScgbGlt aXQgMCwgMSIpOwoKCQkJaWYgKCEkcnMpCgkJCXsKCQkJCXJldHVybiAoJHByZWZzWydwcm9k dWN0aW9uX3N0YXR1cyddICE9ICdsaXZlJykgPwoJCQkJCXVwbV9pbWFnZV9nVHh0KCdub3Rf Zm91bmQnLCBhcnJheSgne2ltYWdlfScgPT4gJGltYWdlX25hbWUpKSA6CgkJCQkJJyc7CgkJ CX0KCQl9CgoJCWVsc2UKCQl7CgkJCXJldHVybiAoJHByZWZzWydwcm9kdWN0aW9uX3N0YXR1 cyddICE9ICdsaXZlJykgPwoJCQkJdXBtX2ltYWdlX2dUeHQoJ25vdGhpbmdfcmVxdWVzdGVk JykgOgoJCQkJJyc7CgkJfQoKCQlpZiAoJGZvcm0gb3IgJHRoaW5nKQoJCXsKCQkJcmV0dXJu IHVwbV9pbWdfY3VzdG9tKCRycywgJGF0dHMsICRmb3JtLCAkdGhpbmcpOwoJCX0KCgkJZWxz ZQoJCXsKCQkJcmV0dXJuIHVwbV9pbWdfZGVmYXVsdCgkcnMsICRhdHRzKTsKCQl9Cgl9Cgov LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCgoJZnVuY3Rpb24gdXBtX2ltZ19jdXN0b20oJHJvdywgJGF0dHMsICRmb3Jt ID0gJycsICR0aGluZyA9IE5VTEwpCgl7CgkJZ2xvYmFsICRwcmVmcywgJHVwbV9pbWdfY3Vz dG9tOwoKCQlpZiAoJGZvcm0pCgkJewoJCQkkd2hhdCA9IGZldGNoX2Zvcm0oJGZvcm0pOwoJ CX0KCgkJZWxzZWlmICgkdGhpbmcpCgkJewoJCQkkd2hhdCA9ICR0aGluZzsKCQl9CgoJCWVs c2UKCQl7CgkJCXJldHVybjsKCQl9CgoJCSRpbWdfdXJsID0gaHUuJHByZWZzWydpbWdfZGly J10uJy8nOwoJCSRpbWdfcGF0aCA9ICRwcmVmc1sncGF0aF90b19zaXRlJ10uRFMuJHByZWZz WydpbWdfZGlyJ10uRFM7CgoJCSR1cG1faW1nX2N1c3RvbSA9IGFycmF5KAoJCQknYWx0JwkJ CQkJID0+ICRyb3dbJ2FsdCddLAoJCQknYXV0aG9yJwkJCSA9PiAkcm93WydhdXRob3InXSwK CQkJJ2NhcHRpb24nCQkJID0+ICRyb3dbJ2NhcHRpb24nXSwKCQkJJ2NhdGVnb3J5JwkJID0+ ICRyb3dbJ2NhdGVnb3J5J10sCgkJCSdkYXRlJwkJCQkgPT4gJHJvd1snZGF0ZSddLAoJCQkn ZnVsbF9oZWlnaHQnCSA9PiAkcm93WydoJ10sCgkJCSdmdWxsX3VybCcJCSA9PiAkaW1nX3Vy bC4kcm93WydpZCddLiRyb3dbJ2V4dCddLAoJCQknZnVsbF93aWR0aCcJID0+ICRyb3dbJ3cn XSwKCQkJJ2hyZWYnCQkJCSA9PiAkYXR0c1sndXJsJ10sCgkJCSdpZCcJCQkJCSA9PiAkcm93 WydpZCddLAoJCQknbGlzdCcJCQkJID0+ICcnLAoJCQknbmFtZScJCQkJID0+ICRyb3dbJ25h bWUnXSwKCQkJJ3RodW1iX3VybCcJCSA9PiAnJywKCQkJJ3RodW1iX2hlaWdodCcgPT4gJycs CgkJCSd0aHVtYl93aWR0aCcJID0+ICcnLAoJCSk7CgoJCSR0aHVtYiA9ICRyb3dbJ2lkJ10u J3QnLiRyb3dbJ2V4dCddOwoKCQlpZiAoJHJvd1sndGh1bWJuYWlsJ10gYW5kIGZpbGVfZXhp c3RzKCRpbWdfcGF0aC4kdGh1bWIpKQoJCXsKCQkJbGlzdCgkdywgJGgpID0gZ2V0aW1hZ2Vz aXplKCRpbWdfcGF0aC4kdGh1bWIpOwoKCQkJJHVwbV9pbWdfY3VzdG9tWyd0aHVtYl9oZWln aHQnXSA9ICRoOwoJCQkkdXBtX2ltZ19jdXN0b21bJ3RodW1iX3VybCddCQk9ICRpbWdfdXJs LiR0aHVtYjsKCQkJJHVwbV9pbWdfY3VzdG9tWyd0aHVtYl93aWR0aCddCT0gJHc7CgkJfQoK CQlyZXR1cm4gcGFyc2UoJHdoYXQpOwoJfQoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCWZ1bmN0aW9uIHVwbV9p bWdfY3VzdG9tX2Fzc2VydCgpCgl7CgkJZ2xvYmFsICR1cG1faW1nX2N1c3RvbTsKCgkJaWYg KGVtcHR5KCR1cG1faW1nX2N1c3RvbSkpCgkJewoJCQl0cmlnZ2VyX2Vycm9yKHVwbV9pbWFn ZV9nVHh0KCdlcnJvcl9jb250ZXh0JykpOwoJCX0KCX0KCi8vIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglmdW5jdGlv biB1cG1faW1nX2FsdCgkYXR0cyA9IGFycmF5KCkpCgl7CgkJZ2xvYmFsICR1cG1faW1nX2N1 c3RvbTsKCgkJdXBtX2ltZ19jdXN0b21fYXNzZXJ0KCk7CgoJCWV4dHJhY3QobEF0dHMoYXJy YXkoCgkJCSdlc2NhcGUnID0+ICdodG1sJwoJCSksICRhdHRzKSk7CgoJCXJldHVybiAoJGVz Y2FwZSA9PSAnaHRtbCcpID8KCQkJaHRtbHNwZWNpYWxjaGFycygkdXBtX2ltZ19jdXN0b21b J2FsdCddKSA6CgkJCSR1cG1faW1nX2N1c3RvbVsnYWx0J107Cgl9CgovLyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJ ZnVuY3Rpb24gdXBtX2ltZ19hdXRob3IoJGF0dHMgPSBhcnJheSgpKQoJewoJCWdsb2JhbCAk dXBtX2ltZ19jdXN0b207CgoJCXVwbV9pbWdfY3VzdG9tX2Fzc2VydCgpOwoKCQlyZXR1cm4g Z2V0X2F1dGhvcl9uYW1lKCR0aGlzYXJ0aWNsZVsnYXV0aG9yaWQnXSk7Cgl9CgovLyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCgoJZnVuY3Rpb24gdXBtX2ltZ19jYXB0aW9uKCRhdHRzID0gYXJyYXkoKSkKCXsKCQln bG9iYWwgJHVwbV9pbWdfY3VzdG9tOwoKCQl1cG1faW1nX2N1c3RvbV9hc3NlcnQoKTsKCgkJ ZXh0cmFjdChsQXR0cyhhcnJheSgKCQkJJ2NsYXNzJwkJID0+ICcnLAoJCQknZXNjYXBlJwkg PT4gJ2h0bWwnLAoJCQknbGFiZWwnCQkgPT4gJycsCgkJCSdsYWJlbHRhZycgPT4gJycsCgkJ CSd3cmFwdGFnJwkgPT4gJycKCQkpLCAkYXR0cykpOwoKCQlpZiAoJHVwbV9pbWdfY3VzdG9t WydjYXB0aW9uJ10pCgkJewoJCQkkY2FwdGlvbiA9ICgkZXNjYXBlID09ICdodG1sJykgPwoJ CQkJaHRtbHNwZWNpYWxjaGFycygkdXBtX2ltZ19jdXN0b21bJ2NhcHRpb24nXSkgOgoJCQkJ JHVwbV9pbWdfY3VzdG9tWydjYXB0aW9uJ107CgoJCQlyZXR1cm4gZG9MYWJlbCgkbGFiZWws ICRsYWJlbHRhZykuZG9UYWcoJGNhcHRpb24sICR3cmFwdGFnLCAkY2xhc3MpOwoJCX0KCX0K Ci8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KCglmdW5jdGlvbiB1cG1faW1nX2NhdGVnb3J5KCRhdHRzID0gYXJyYXko KSkKCXsKCQlnbG9iYWwgJHVwbV9pbWdfY3VzdG9tOwoKCQl1cG1faW1nX2N1c3RvbV9hc3Nl cnQoKTsKCgkJZXh0cmFjdChsQXR0cyhhcnJheSgKCQkJJ2NsYXNzJwkJID0+ICcnLAoJCQkn bGFiZWwnCQkgPT4gJycsCgkJCSdsYWJlbHRhZycgPT4gJycsCgkJCSd0aXRsZScJCSA9PiAn MCcsCgkJCSd3cmFwdGFnJwkgPT4gJycsCgkJKSwgJGF0dHMpKTsKCgkJaWYgKCR1cG1faW1n X2N1c3RvbVsnY2F0ZWdvcnknXSkKCQl7CgkJCSRjYXRlZ29yeSA9ICgkdGl0bGUpID8KCQkJ CWZldGNoX2NhdGVnb3J5X3RpdGxlKCR1cG1faW1nX2N1c3RvbVsnY2F0ZWdvcnknXSwgJ2lt YWdlJykgOgoJCQkJJHVwbV9pbWdfY3VzdG9tWydjYXRlZ29yeSddOwoKCQkJcmV0dXJuIGRv TGFiZWwoJGxhYmVsLCAkbGFiZWx0YWcpLmRvVGFnKCRjYXRlZ29yeSwgJHdyYXB0YWcsICRj bGFzcyk7CgkJfQoJfQoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCWZ1bmN0aW9uIHVwbV9pbWdfZGF0ZSgkYXR0 cyA9IGFycmF5KCkpCgl7CgkJZ2xvYmFsICR1cG1faW1nX2N1c3RvbSwgJHByZWZzOwoKCQl1 cG1faW1nX2N1c3RvbV9hc3NlcnQoKTsKCgkJZXh0cmFjdChsQXR0cyhhcnJheSgKCQkJJ2Zv cm1hdCcJPT4gJHByZWZzWydkYXRlZm9ybWF0J10sCgkJCSdnbXQnCQkJPT4gJycsCgkJCSds YW5nJwkJPT4gJycsCgkJKSwgJGF0dHMpKTsKCgkJaWYgKCRmb3JtYXQpCgkJewoJCQlyZXR1 cm4gc2FmZV9zdHJmdGltZSgkZm9ybWF0LCAkdXBtX2ltZ19jdXN0b21bJ2RhdGUnXSwgJGdt dCwgJGxhbmcpOwoJCX0KCX0KCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglmdW5jdGlvbiB1cG1faW1nX2Z1bGxf aGVpZ2h0KCRhdHRzID0gYXJyYXkoKSkKCXsKCQlnbG9iYWwgJHVwbV9pbWdfY3VzdG9tOwoK CQl1cG1faW1nX2N1c3RvbV9hc3NlcnQoKTsKCgkJcmV0dXJuICR1cG1faW1nX2N1c3RvbVsn ZnVsbF9oZWlnaHQnXTsKCX0KCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglmdW5jdGlvbiB1cG1faW1nX2Z1bGxf dXJsKCRhdHRzID0gYXJyYXkoKSkKCXsKCQlnbG9iYWwgJHVwbV9pbWdfY3VzdG9tOwoKCQl1 cG1faW1nX2N1c3RvbV9hc3NlcnQoKTsKCgkJcmV0dXJuICR1cG1faW1nX2N1c3RvbVsnZnVs bF91cmwnXTsKCX0KCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglmdW5jdGlvbiB1cG1faW1nX2Z1bGxfd2lkdGgo JGF0dHMgPSBhcnJheSgpKQoJewoJCWdsb2JhbCAkdXBtX2ltZ19jdXN0b207CgoJCXVwbV9p bWdfY3VzdG9tX2Fzc2VydCgpOwoKCQlyZXR1cm4gJHVwbV9pbWdfY3VzdG9tWydmdWxsX3dp ZHRoJ107Cgl9CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJZnVuY3Rpb24gdXBtX2ltZ19ocmVmKCRhdHRzID0g YXJyYXkoKSwgJHRoaW5nID0gTlVMTCkKCXsKCQlnbG9iYWwgJHVwbV9pbWdfY3VzdG9tOwoK CQl1cG1faW1nX2N1c3RvbV9hc3NlcnQoKTsKCgkJZXh0cmFjdChsQXR0cyhhcnJheSgKCQkJ J2NsYXNzJwkJID0+ICcnLAoJCQknZXNjYXBlJwkgPT4gJycsCgkJCSdsYWJlbCcJCSA9PiAn JywKCQkJJ2xhYmVsdGFnJyA9PiAnJywKCQkJJ3dyYXB0YWcnCSA9PiAnJywKCQkpLCAkYXR0 cykpOwoKCQlpZiAoJHVwbV9pbWdfY3VzdG9tWydocmVmJ10pCgkJewoJCQkkaHJlZiA9ICgk ZXNjYXBlID09ICdodG1sJykgPwoJCQkJaHRtbHNwZWNpYWxjaGFycygkdXBtX2ltZ19jdXN0 b21bJ2hyZWYnXSkgOgoJCQkJJHVwbV9pbWdfY3VzdG9tWydocmVmJ107CgoJCQkkaHJlZiA9 ICgkdGhpbmcpID8gaHJlZihwYXJzZSgkdGhpbmcpLCAkaHJlZikgOiAkaHJlZjsKCgkJCXJl dHVybiBkb0xhYmVsKCRsYWJlbCwgJGxhYmVsdGFnKS5kb1RhZygkaHJlZiwgJHdyYXB0YWcs ICRjbGFzcyk7CgkJfQoJfQoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCWZ1bmN0aW9uIHVwbV9pbWdfaWQoJGF0 dHMgPSBhcnJheSgpKQoJewoJCWdsb2JhbCAkdXBtX2ltZ19jdXN0b207CgoJCXVwbV9pbWdf Y3VzdG9tX2Fzc2VydCgpOwoKCQlyZXR1cm4gJHVwbV9pbWdfY3VzdG9tWydpZCddOwoJfQoK Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQoKCWZ1bmN0aW9uIHVwbV9pbWdfbGlzdCgkYXR0cyA9IGFycmF5KCkpCgl7 CgkJZ2xvYmFsICR1cG1faW1nX2N1c3RvbTsKCgkJdXBtX2ltZ19jdXN0b21fYXNzZXJ0KCk7 CgoJCXJldHVybiAkdXBtX2ltZ19jdXN0b21bJ2xpc3QnXTsKCX0KCi8vIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglm dW5jdGlvbiB1cG1faW1nX25hbWUoJGF0dHMgPSBhcnJheSgpKQoJewoJCWdsb2JhbCAkdXBt X2ltZ19jdXN0b207CgoJCXVwbV9pbWdfY3VzdG9tX2Fzc2VydCgpOwoKCQlyZXR1cm4gJHVw bV9pbWdfY3VzdG9tWyduYW1lJ107Cgl9CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJZnVuY3Rpb24gdXBtX2lt Z190aHVtYl9oZWlnaHQoJGF0dHMgPSBhcnJheSgpKQoJewoJCWdsb2JhbCAkdXBtX2ltZ19j dXN0b207CgoJCXVwbV9pbWdfY3VzdG9tX2Fzc2VydCgpOwoKCQlyZXR1cm4gJHVwbV9pbWdf Y3VzdG9tWyd0aHVtYl9oZWlnaHQnXTsKCX0KCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglmdW5jdGlvbiB1cG1f aW1nX3RodW1iX3VybCgkYXR0cyA9IGFycmF5KCkpCgl7CgkJZ2xvYmFsICR1cG1faW1nX2N1 c3RvbTsKCgkJdXBtX2ltZ19jdXN0b21fYXNzZXJ0KCk7CgoJCXJldHVybiAkdXBtX2ltZ19j dXN0b21bJ3RodW1iX3VybCddOwoJfQoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCWZ1bmN0aW9uIHVwbV9pbWdf dGh1bWJfd2lkdGgoJGF0dHMgPSBhcnJheSgpKQoJewoJCWdsb2JhbCAkdXBtX2ltZ19jdXN0 b207CgoJCXVwbV9pbWdfY3VzdG9tX2Fzc2VydCgpOwoKCQlyZXR1cm4gJHVwbV9pbWdfY3Vz dG9tWyd0aHVtYl93aWR0aCddOwoJfQoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCWZ1bmN0aW9uIHVwbV9pbWdf ZGVmYXVsdCgkcm93LCAkYXR0cykKCXsKCQlnbG9iYWwgJHByZWZzOwoKCQlleHRyYWN0KCRh dHRzKTsKCgkJJGltZ191cmwgPSBodS4kcHJlZnNbJ2ltZ19kaXInXS4nLyc7CgkJJGltZyA9 ICRyb3dbJ2lkJ10uJHJvd1snZXh0J107CgoJCWlmIChpbl9hcnJheSgkdHlwZSwgYXJyYXko J3BvcHVwJywgJ3RodW1iJywgJ3RodW1ibmFpbCcpKSkKCQl7CgkJCSRpbWdfcGF0aCA9ICRw cmVmc1sncGF0aF90b19zaXRlJ10uRFMuJHByZWZzWydpbWdfZGlyJ10uRFM7CgkJCSR0aHVt YiA9ICRyb3dbJ2lkJ10uJ3QnLiRyb3dbJ2V4dCddOwoKCQkJJHRodW1iX2V4aXN0cyA9IGZh bHNlOwoKCQkJaWYgKCRyb3dbJ3RodW1ibmFpbCddIGFuZCBmaWxlX2V4aXN0cygkaW1nX3Bh dGguJHRodW1iKSkKCQkJewoJCQkJJHRodW1iX2V4aXN0cyA9IHRydWU7CgoJCQkJbGlzdCgk dGh1bWJfdywgJHRodW1iX2gpID0gZ2V0aW1hZ2VzaXplKCRpbWdfcGF0aC4kdGh1bWIpOwoJ CQl9CgkJfQoKCQlzd2l0Y2ggKCR0eXBlKQoJCXsKCQkJY2FzZSAncG9wdXAnOgoJCQkJaWYg KCR0aHVtYl9leGlzdHMpCgkJCQl7CgkJCQkJJG91dCA9ICc8YSBocmVmPSInLiRpbWdfdXJs LiRpbWcuJyInLgoJCQkJCQkoICgkaWQgYW5kICEkd3JhcHRhZykgPyAnIGlkPSInLiRpZC4n IicgOiAnJykuCgkJCQkJCSggKCRjbGFzcyBhbmQgISR3cmFwdGFnKSA/ICcgY2xhc3M9Iicu JGNsYXNzLiciJyA6ICcnKS4KCQkJCQkJKCAoJHJvd1snY2FwdGlvbiddIGFuZCAoJHNob3df dGl0bGUgPT0gJ3llcycpKSA/ICcgdGl0bGU9IicuJHJvd1snY2FwdGlvbiddLiciJyA6ICcn ICkuCgkJCQkJCScgb25jbGljaz0idXBtX3BvcF9pbWcodGhpcy5ocmVmLCAnLmNocigzOSku JHJvd1sndyddLmNocigzOSkuJywgJy5jaHIoMzkpLiRyb3dbJ2gnXS5jaHIoMzkpLicsICcu Y2hyKDM5KS4kcm93WyduYW1lJ10uY2hyKDM5KS4nLCB0aGlzLnRpdGxlKTsgcmV0dXJuIGZh bHNlOyI+Jy4KCQkJCQkJJzxpbWcgc3JjPSInLiRpbWdfdXJsLiR0aHVtYi4nIicuCgkJCQkJ CSgkc2hvd193aWR0aCA9PSAneWVzJyA/ICcgd2lkdGg9IicuJHRodW1iX3cuJyInIDogJycp LgoJCQkJCQkoJHNob3dfaGVpZ2h0ID09ICd5ZXMnID8gJyBoZWlnaHQ9IicuJHRodW1iX2gu JyInIDogJycpLgoJCQkJCQkoICgkcm93WydhbHQnXSBhbmQgKCRzaG93X2FsdCA9PSAneWVz JykpID8gJyBhbHQ9IicuaHRtbHNwZWNpYWxjaGFycygkcm93WydhbHQnXSkuJyIgdGl0bGU9 IiInIDogJyBhbHQ9IiInICkuCgkJCQkJCSgkeGh0bWwgPT0gJ3llcycgPyAnIC8+JyA6ICc+ JykuCgkJCQkJCSc8L2E+JzsKCgkJCQkJcmV0dXJuICgkd3JhcHRhZykgPyBkb1RhZygkb3V0 LCAkd3JhcHRhZywgJGNsYXNzLCAnJywgJGlkKSA6ICRvdXQ7CgkJCQl9CgoJCQkJZWxzZWlm ICgkcHJlZnNbJ3Byb2R1Y3Rpb25fc3RhdHVzJ10gIT0gJ2xpdmUnKQoJCQkJewoJCQkJCXJl dHVybiB1cG1faW1hZ2VfZ1R4dCgnbm9fdGh1bWInLCBhcnJheSgne2ltYWdlfScgPT4gJHJv d1snaWQnXSkpOwoJCQkJfQoJCQlicmVhazsKCgkJCWNhc2UgJ3RodW1ibmFpbCc6CgkJCWNh c2UgJ3RodW1iJzoKCQkJCWlmICgkdGh1bWJfZXhpc3RzKQoJCQkJewoJCQkJCSRvdXQgPSAn PGltZyBzcmM9IicuJGltZ191cmwuJHRodW1iLiciJy4KCQkJCQkJKCAoJGlkIGFuZCAhJHdy YXB0YWcpID8gJyBpZD0iJy4kaWQuJyInIDogJycpLgoJCQkJCQkoICgkY2xhc3MgYW5kICEk d3JhcHRhZykgPyAnIGNsYXNzPSInLiRjbGFzcy4nIicgOiAnJykuCgkJCQkJCSgkc2hvd193 aWR0aCA9PSAneWVzJyA/ICcgd2lkdGg9IicuJHRodW1iX3cuJyInIDogJycpLgoJCQkJCQko JHNob3dfaGVpZ2h0ID09ICd5ZXMnID8gJyBoZWlnaHQ9IicuJHRodW1iX2guJyInIDogJycp LgoJCQkJCQkoICgkcm93WydhbHQnXSBhbmQgKCRzaG93X2FsdCA9PSAneWVzJykpID8gJyBh bHQ9IicuaHRtbHNwZWNpYWxjaGFycygkcm93WydhbHQnXSkuJyInIDogJyBhbHQ9IiInICku CgkJCQkJCSggKCRyb3dbJ2NhcHRpb24nXSBhbmQgKCRzaG93X3RpdGxlID09ICd5ZXMnKSkg PyAnIHRpdGxlPSInLmh0bWxzcGVjaWFsY2hhcnMoJHJvd1snY2FwdGlvbiddKS4nIicgOiAn JyApLgoJCQkJCQkoJHhodG1sID09ICd5ZXMnID8gJyAvPicgOiAnPicpOwoKCQkJCQlpZiAo JHVybCkKCQkJCQl7CgkJCQkJCSRvdXQgPSBpc19udW1lcmljKCR1cmwpID8gaHJlZigkb3V0 LCBwZXJtbGlua3VybF9pZCgkdXJsKSkgOiBocmVmKCRvdXQsICR1cmwpOwoJCQkJCX0KCgkJ CQkJcmV0dXJuICgkd3JhcHRhZykgPyBkb1RhZygkb3V0LCAkd3JhcHRhZywgJGNsYXNzLCAn JywgJGlkKSA6ICRvdXQ7CgkJCQl9CgoJCQkJZWxzZWlmICgkcHJlZnNbJ3Byb2R1Y3Rpb25f c3RhdHVzJ10gIT0gJ2xpdmUnKQoJCQkJewoJCQkJCXJldHVybiB1cG1faW1hZ2VfZ1R4dCgn bm9fdGh1bWInLCBhcnJheSgne2ltYWdlfScgPT4gJHJvd1snaWQnXSkpOwoJCQkJfQoJCQli cmVhazsKCgkJCWNhc2UgJ2ltYWdlJzoKCQkJZGVmYXVsdDoKCQkJCSRvdXQgPSAnPGltZyBz cmM9IicuJGltZ191cmwuJGltZy4nIicuCgkJCQkJKCAoJGlkIGFuZCAhJHdyYXB0YWcpID8g JyBpZD0iJy4kaWQuJyInIDogJycpLgoJCQkJCSggKCRjbGFzcyBhbmQgISR3cmFwdGFnKSA/ ICcgY2xhc3M9IicuJGNsYXNzLiciJyA6ICcnKS4KCQkJCQkoJHNob3dfd2lkdGggPT0gJ3ll cycgPyAnIHdpZHRoPSInLiRyb3dbJ3cnXS4nIicgOiAnJykuCgkJCQkJKCRzaG93X2hlaWdo dCA9PSAneWVzJyA/ICcgaGVpZ2h0PSInLiRyb3dbJ2gnXS4nIicgOiAnJykuCgkJCQkJKCAo JHJvd1snYWx0J10gYW5kICgkc2hvd19hbHQgPT0gJ3llcycpKSA/ICcgYWx0PSInLmh0bWxz cGVjaWFsY2hhcnMoJHJvd1snYWx0J10pLiciJyA6ICcgYWx0PSIiJyApLgoJCQkJCSggKCRy b3dbJ2NhcHRpb24nXSBhbmQgKCRzaG93X3RpdGxlID09ICd5ZXMnKSkgPyAnIHRpdGxlPSIn Lmh0bWxzcGVjaWFsY2hhcnMoJHJvd1snY2FwdGlvbiddKS4nIicgOiAnJyApLgoJCQkJCSgk eGh0bWwgPT0gJ3llcycgPyAnIC8+JyA6ICc+Jyk7CgoJCQkJaWYgKCR1cmwpCgkJCQl7CgkJ CQkJJG91dCA9IGlzX251bWVyaWMoJHVybCkgPyBocmVmKCRvdXQsIHBlcm1saW5rdXJsX2lk KCR1cmwpKSA6IGhyZWYoJG91dCwgJHVybCk7CgkJCQl9CgoJCQkJcmV0dXJuICgkd3JhcHRh ZykgPyBkb1RhZygkb3V0LCAkd3JhcHRhZywgJGNsYXNzLCAnJywgJGlkKSA6ICRvdXQ7CgkJ CWJyZWFrOwoJCX0KCX0KCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglmdW5jdGlvbiB1cG1faW1hZ2VfY2hlY2tf bG9hZCgpCgl7CgkJZ2xvYmFsICRwcmVmczsKCgkJaWYgKCRwcmVmc1sndXBtX2ltYWdlX2xv YWRfc2NyaXB0J10gPT0gMSkKCQl7CgkJCW9iX3N0YXJ0KCd1cG1faW1hZ2VfbGluaycpOwoJ CX0KCX0KCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KCglmdW5jdGlvbiB1cG1faW1hZ2VfbGluaygkYnVmZmVyKQoJ ewoJCSRmaW5kID0gJzwvaGVhZD4nOwoJCSRyZXBsYWNlID0gbi50Lic8c2NyaXB0IHR5cGU9 InRleHQvamF2YXNjcmlwdCIgc3JjPSInLmh1LidpbmRleC5waHA/anM9dXBtX2ltYWdlIj48 L3NjcmlwdD4nLm4uJGZpbmQ7CgoJCXJldHVybiBzdHJfcmVwbGFjZSgkZmluZCwgJHJlcGxh Y2UsICRidWZmZXIpOwoJfQoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCWZ1bmN0aW9uIHVwbV9pbWFnZV9qcygp Cgl7CgkJaGVhZGVyKCJDb250ZW50LXR5cGU6IHRleHQvamF2YXNjcmlwdCIpOwoKCQllY2hv IDw8PGpzCmZ1bmN0aW9uIHVwbV9wb3BfaW1nKHNyYywgdywgaCwgbmFtZSwgdGl0bGUpCnsK CXZhciB3dyA9IHBhcnNlSW50KHcpOwoJdmFyIHdoID0gcGFyc2VJbnQoaCk7CgoJaWYgKHd3 IDwgMTAwKQoJewoJCXd3ID0gMTI1OwoJfQoKCWlmICh3aCA8IDEwMCkKCXsKCQl3aCA9IDEy NTsKCgkJd3cgKz0gNzU7Cgl9CgoJdmFyIHNjcm9sbCA9IGZhbHNlOwoKCWlmIChzY3JlZW4u d2lkdGggJiYgKHNjcmVlbi53aWR0aCA8IHd3KSkKCXsKCQlzY3JvbGwgPSAneWVzJzsKCQl3 dyA9IHNjcmVlbi53aWR0aDsKCX0KCglpZiAoc2NyZWVuLmhlaWdodCAmJiAoc2NyZWVuLmhl aWdodCA8IHdoKSkKCXsKCQlzY3JvbGwgPSAneWVzJzsKCQl3aCA9IHNjcmVlbi5oZWlnaHQ7 Cgl9CgoJaWYgKCF0aXRsZSkKCXsKCQl0aXRsZSA9IG5hbWU7Cgl9CgoJdmFyIHQgPSAoc2Ny ZWVuLmhlaWdodCkgPyAoc2NyZWVuLmhlaWdodCAtIHdoKSAvIDIgOiAwOwoJdmFyIGwgPSAo c2NyZWVuLndpZHRoKSA/IChzY3JlZW4ud2lkdGggLSB3dykgLyAyIDogMDsKCgl2YXIgdXBt X3BvcF93aW4gPSB3aW5kb3cub3BlbignJywgJ3VwbV9wb3Bfd2luJywgJ3RvcCA9ICcrdCsn LCBsZWZ0ID0gJytsKycsIHdpZHRoID0gJyt3dysnLCBoZWlnaHQgPSAnK3doKycsIHRvb2xi YXIgPSBubywgbG9jYXRpb24gPSBubywgZGlyZWN0b3JpZXMgPSBubywgc3RhdHVzID0gbm8s IG1lbnViYXIgPSBubywgc2Nyb2xsYmFycyA9ICcrc2Nyb2xsKycsIGNvcHloaXN0b3J5ID0g bm8sIHJlc2l6YWJsZSA9IHllcycpOwoKCXVwbV9wb3Bfd2luLmRvY3VtZW50LndyaXRlbG4o JzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiIgImh0 dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L3N0cmljdC5kdGQiPicpOwoJdXBtX3BvcF93aW4u ZG9jdW1lbnQud3JpdGVsbignPGh0bWw+Jyk7Cgl1cG1fcG9wX3dpbi5kb2N1bWVudC53cml0 ZWxuKCc8aGVhZD4nKTsKCXVwbV9wb3Bfd2luLmRvY3VtZW50LndyaXRlbG4oJzxtZXRhIGh0 dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0 Zi04Ij4nKTsKCXVwbV9wb3Bfd2luLmRvY3VtZW50LndyaXRlbG4oJzxtZXRhIGh0dHAtZXF1 aXY9ImltYWdldG9vbGJhciIgY29udGVudD0ibm8iPicpOwoJdXBtX3BvcF93aW4uZG9jdW1l bnQud3JpdGVsbignPHRpdGxlPicrdGl0bGUrJzwvdGl0bGU+Jyk7Cgl1cG1fcG9wX3dpbi5k b2N1bWVudC53cml0ZWxuKCc8c3R5bGUgdHlwZT0idGV4dC9jc3MiPicpOwoJdXBtX3BvcF93 aW4uZG9jdW1lbnQud3JpdGVsbignPCEtLScpOwoJdXBtX3BvcF93aW4uZG9jdW1lbnQud3Jp dGVsbignYm9keSB7Jyk7Cgl1cG1fcG9wX3dpbi5kb2N1bWVudC53cml0ZWxuKCdtYXJnaW46 IDA7Jyk7Cgl1cG1fcG9wX3dpbi5kb2N1bWVudC53cml0ZWxuKCdwYWRkaW5nOiAwOycpOwoJ dXBtX3BvcF93aW4uZG9jdW1lbnQud3JpdGVsbignY29sb3I6ICMwMDA7Jyk7Cgl1cG1fcG9w X3dpbi5kb2N1bWVudC53cml0ZWxuKCdiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOycpOwoJdXBt X3BvcF93aW4uZG9jdW1lbnQud3JpdGVsbigndGV4dC1hbGlnbjogY2VudGVyOycpOwoKCWlm IChzY3JvbGwgPT0gZmFsc2UpCgl7CgkJdXBtX3BvcF93aW4uZG9jdW1lbnQud3JpdGVsbign b3ZlcmZsb3c6IGhpZGRlbjsnKTsKCX0KCgl1cG1fcG9wX3dpbi5kb2N1bWVudC53cml0ZWxu KCd9Jyk7CgoJdXBtX3BvcF93aW4uZG9jdW1lbnQud3JpdGVsbignJyk7Cgl1cG1fcG9wX3dp bi5kb2N1bWVudC53cml0ZWxuKCdpbWcgeycpOwoJdXBtX3BvcF93aW4uZG9jdW1lbnQud3Jp dGVsbignbWFyZ2luOiAwIGF1dG87Jyk7Cgl1cG1fcG9wX3dpbi5kb2N1bWVudC53cml0ZWxu KCdwYWRkaW5nOiAwOycpOwoJdXBtX3BvcF93aW4uZG9jdW1lbnQud3JpdGVsbignYm9yZGVy OiBub25lOycpOwoKCWlmICh3aCA9PSAxMjUpCgl7CgkJdXBtX3BvcF93aW4uZG9jdW1lbnQu d3JpdGVsbignbWFyZ2luLXRvcDogJyArIE1hdGguZmxvb3IoNTAtKGgvMikpICsgJ3B4Oycp OwoJfQoKCXVwbV9wb3Bfd2luLmRvY3VtZW50LndyaXRlbG4oJ30nKTsKCgl1cG1fcG9wX3dp bi5kb2N1bWVudC53cml0ZWxuKCctLT4nKTsKCXVwbV9wb3Bfd2luLmRvY3VtZW50LndyaXRl bG4oJzwvc3R5bGU+Jyk7Cgl1cG1fcG9wX3dpbi5kb2N1bWVudC53cml0ZWxuKCc8L2hlYWQ+ Jyk7Cgl1cG1fcG9wX3dpbi5kb2N1bWVudC53cml0ZWxuKCc8Ym9keT4nKTsKCXVwbV9wb3Bf d2luLmRvY3VtZW50LndyaXRlbG4oJzxkaXYgaWQ9InVwbS1pbWFnZS12aWV3Ij4nKTsKCXVw bV9wb3Bfd2luLmRvY3VtZW50LndyaXRlbG4oJzxpbWcgc3JjPSInK3NyYysnIiB3aWR0aD0i Jyt3KyciIGhlaWdodD0iJytoKyciIGFsdD0iIj4nKTsKCXVwbV9wb3Bfd2luLmRvY3VtZW50 LndyaXRlbG4oJzwvZGl2PicpOwoJdXBtX3BvcF93aW4uZG9jdW1lbnQud3JpdGVsbignPC9i b2R5PicpOwoJdXBtX3BvcF93aW4uZG9jdW1lbnQud3JpdGUoJzwvaHRtbD4nKTsKCgl1cG1f cG9wX3dpbi5kb2N1bWVudC5jbG9zZSgpOwoKCXVwbV9wb3Bfd2luLmZvY3VzKCk7CgoJcmV0 dXJuIGZhbHNlOwp9CmpzOwoKCQlleGl0KDApOwoJfQoKLy8gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCWZ1bmN0aW9u IHVwbV9pbWFnZV9wcmVmcygkZXZlbnQsICRzdGVwKQoJewoJCWdsb2JhbCAkcHJlZnM7CgoJ CXBhZ2V0b3AodXBtX2ltYWdlX2dUeHQoJ3ByZWZzJyksICgkc3RlcCA9PSAndXBkYXRlJyA/ IGdUeHQoJ3ByZWZlcmVuY2VzX3NhdmVkJykgOiAnJykpOwoKCQlpZiAoJHN0ZXAgPT0gJ3Vw ZGF0ZScpCgkJewoJCQkkbG9hZF9zY3JpcHQgPSBkb1NsYXNoKHBzKCdsb2FkX3NjcmlwdCcp KTsKCgkJCXNhZmVfdXBkYXRlKCd0eHBfcHJlZnMnLCAidmFsID0gJyRsb2FkX3NjcmlwdCci LCAibmFtZSA9ICd1cG1faW1hZ2VfbG9hZF9zY3JpcHQnIik7CgoJCQkkcHJlZnMgPSBnZXRf cHJlZnMoKTsKCQl9CgoJCWVjaG8gbi5uLic8ZGl2IHN0eWxlPSJtYXJnaW46IDNlbSBhdXRv IGF1dG8gYXV0bzsgd2lkdGg6IDE2ZW07Ij4nLgoKCQkJbi5uLmhlZCh1cG1faW1hZ2VfZ1R4 dCgncHJlZnMnKSwgJzEnKS4KCgkJCW4ubi5mb3JtKAoJCQkJbi5lSW5wdXQoJ3VwbV9pbWFn ZV9wcmVmcycpLgoJCQkJbi5zSW5wdXQoJ3VwZGF0ZScpLgoKCQkJCW4ubi5ncmFmKAoJCQkJ CXVwbV9pbWFnZV9nVHh0KCdsb2FkX3NjcmlwdCcpLmJyLgoJCQkJCW4ueWVzbm9SYWRpbygn bG9hZF9zY3JpcHQnLCAkcHJlZnNbJ3VwbV9pbWFnZV9sb2FkX3NjcmlwdCddKQoJCQkJKS4K CgkJCQluLm4uZklucHV0KCdzdWJtaXQnLCAndXBkYXRlJywgJ1VwZGF0ZScsICdzbWFsbGVy Ym94JykKCQkJKS5uLm4uJzwvZGl2Pic7Cgl9CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJZnVuY3Rpb24gdXBt X2ltYWdlX2luc3RhbGwoKQoJewoJCWdsb2JhbCAkcHJlZnM7CgoJCWlmICghaXNzZXQoJHBy ZWZzWyd1cG1faW1hZ2VfbG9hZF9zY3JpcHQnXSkpCgkJewoJCQlzYWZlX2luc2VydCgndHhw X3ByZWZzJywgIgoJCQkJbmFtZSA9ICd1cG1faW1hZ2VfbG9hZF9zY3JpcHQnLAoJCQkJdmFs ID0gJzEnLAoJCQkJaHRtbCA9ICd5ZXNub3JhZGlvJywKCQkJCXByZWZzX2lkID0gMSwKCQkJ CXR5cGUgPSAyLAoJCQkJZXZlbnQgPSAnYWRtaW4nLAoJCQkJcG9zaXRpb24gPSAwCgkJCSIp OwoKCQkJJEdMT0JBTFNbJ3ByZWZzJ10gPSBnZXRfcHJlZnMoKTsKCQl9Cgl9CgovLyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCgoJZnVuY3Rpb24gdXBtX2ltYWdlX2dUeHQoJHdoYXQsICRhdHRzID0gYXJyYXkoKSkK CXsKCQkkbGFuZyA9IGFycmF5KAoJCQknZXJyb3JfY29udGV4dCcJCQk9PiAndXBtX2ltYWdl OiBpbnZhbGlkIGNvbnRleHQsIHRhZyBtdXN0IGJlIHVzZWQgd2l0aGluIHRoZSB0YWcgYXMg YSB3cmFwcGVyIG9yIGZyb20gaXRzIG93biBmb3JtIGNhbGxlZCBieSB0aGUgdGFnLicsCgkJ CSdpbnZhbGlkX2lkJwkJCQk9PiAndXBtX2ltYWdlOiBzdXBwbGllZCBpbWFnZSBpZCBpcyBp bnZhbGlkLCBpdCBtdXN0IGJlIGEgc2luZ2xlIG51bWVyaWMgdmFsdWUuJywKCQkJJ2xvYWRf c2NyaXB0JwkJCQk9PiAnQXV0by1sb2FkIEphdmFTY3JpcHQ/JywKCQkJJ25vX3RodW1iJwkJ CQkJPT4gJ3VwbV9pbWFnZTogaW1hZ2UgJiM4MjIwO3tpbWFnZX0mIzgyMjE7IGRvZXMgbm90 IGhhdmUgYSB0aHVtYm5haWwuJywKCQkJJ25vdF9mb3VuZCcJCQkJCT0+ICd1cG1faW1hZ2U6 IHJlcXVlc3RlZCBpbWFnZSBjb3VsZCBub3QgYmUgZm91bmQ6ICYjODIyMDt7aW1hZ2V9JiM4 MjIxOycsCgkJCSdub3RfZm91bmRfbGlzdCcJCT0+ICd1cG1faW1hZ2U6IHJlcXVlc3RlZCBp bWFnZXMgY291bGQgbm90IGJlIGZvdW5kOiAmIzgyMjA7e2xpc3R9JiM4MjIxOycsCgkJCSdu b3RoaW5nX3JlcXVlc3RlZCcgPT4gJ3VwbV9pbWFnZTogbm8gaW1hZ2Ugd2FzIHJlcXVlc3Rl ZC4nLAoJCQkncHJlZnMnCQkJCQkJCT0+ICd1cG1faW1hZ2UgUHJlZmVyZW5jZXMnCgkJKTsK CgkJcmV0dXJuIHN0cnRyKCRsYW5nWyR3aGF0XSwgJGF0dHMpOwoJfSI7czo0OiJoZWxwIjtz OjE3NDY4OiI8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4scHJvamVjdGlv biI+CjwhLS0KcHJlLCBjb2RlIHsKYmFja2dyb3VuZC1jb2xvcjogI2VlZTsKfQoKaDMgY29k ZSB7CmZvbnQtZmFtaWx5OiBpbmhlcml0OwpiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVu dDsKfQotLT4KPC9zdHlsZT4KCjxoMT51cG1faW1hZ2U8L2gxPgoKPG9sIGlkPSJzdGFydCI+ Cgk8bGk+PGEgaHJlZj0iI2ludHJvLXNlY3Rpb24iPkludHJvPC9hPjwvbGk+Cgk8bGk+PGEg aHJlZj0iI3RhZy1zZWN0aW9uIj5OZXcgSW1hZ2UgVGFnczwvYT48L2xpPgoJPGxpPjxhIGhy ZWY9IiNjdXN0b20tc2VjdGlvbiI+Q3VzdG9taXppbmcgT3V0cHV0PC9hPjwvbGk+Cgk8bGk+ PGEgaHJlZj0iI2NyZWRpdC1zZWN0aW9uIj5DcmVkaXQgYW5kIERldmVsb3BlciBOb3Rlczwv YT48L2xpPgo8L29sPgoKCjxoMiBpZD0iaW50cm8tc2VjdGlvbiI+SW50cm88L2gyPgoKPHA+ VGV4dHBhdHRlcm4gY29tZXMgd2l0aCBpdHMgb3duIGltYWdlIHRhZ3MsIGJ1dCBhcyBJIHdv cmtlZCBvbiB0aGlzIHBsdWdpbiwgSSBkZWNpZGVkIHRvCmNyZWF0ZSBleHRlbmRlZCB2ZXJz aW9ucywgdG8gYWxsb3cgYSBsb3QgbW9yZSBjdXN0b21pemF0aW9uLiBUaGlzIHBsdWdpbiB3 b24mIzgyMTc7dAphdXRvbWF0aWNhbGx5IGNyZWF0ZSB2YXN0LCBjb21wbGljYXRlZCBnYWxs ZXJpZXMsIGJ1dCB5b3UgY291bGQgY2VydGFpbmx5IHVzZSBpdCB0bwpjcmVhdGUgYSBtaW5p LWdhbGxlcnkgb2Ygc29ydHMuIDxhIGhyZWY9IiNzdGFydCIgdGl0bGU9Ikp1bXAgYmFjayBj b250ZW50cyBsaXN0Ij4mIzg2MTc7PC9hPjwvcD4KCgo8aDIgaWQ9InRhZy1zZWN0aW9uIj5O ZXcgSW1hZ2UgVGFnczwvaDI+Cgo8cD5UaGlzIHBsdWdpbiBwcm92aWRlcyB5b3Ugd2l0aCB0 d28gbmV3IGltYWdlIHRhZ3MuPC9wPgoKPGgzPjxjb2RlPiZsdDt0eHA6dXBtX2ltYWdlIC8m Z3Q7PC9jb2RlPjwvaDM+Cgo8ZGw+Cgk8ZHQ+PGNvZGU+PGI+Y2xhc3M9IjwvYj48ZW0+Y2xh c3MgbmFtZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5UaGUgKFgpSFRNTC9DU1Mg Y2xhc3MgdG8gYXBwbHkgdG8gdGhlIGltYWdlLjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwv ZGQ+Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVlczogYW55IHZhbGlkIChYKUhUTUwvQ1NTIGNsYXNz IG5hbWUuPC9kZD4KCTxkZD5EZWZhdWx0IHZhbHVlOiB1bnNldC48L2RkPgoKCTxkdD48Y29k ZT48Yj5mb3JtPSI8L2I+PGVtPmZvcm0gbmFtZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4K CTxkZD5DdXN0b21pemUgdGhlIGltYWdlIGRldGFpbHMgb3V0cHV0LCBmb3IgdHlwZSA8Y29k ZT48Yj5pbWFnZTwvYj48L2NvZGU+LjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+Cgk8 ZGQ+QXZhaWxhYmxlIHZhbHVlczogYW55IGV4aXN0aW5nIGZvcm0mIzgyMTc7cyBuYW1lLjwv ZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogdW5zZXQuPC9kZD4KCgk8ZHQ+PGNvZGU+PGI+aWQ9 IjwvYj48ZW0+dmFsdWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+VGhlIChYKUhU TUwvQ1NTIGlkIHRvIGFwcGx5IHRvIHRoZSBpbWFnZS48L2RkPgoJPGRkPlJlcXVpcmVkOiBO by48L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6IGFueSB2YWxpZCAoWClIVE1ML0NTUyBp ZC48L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6IHVuc2V0LjwvZGQ+CgoJPGR0Pjxjb2RlPjxi PmltYWdlX2lkPSI8L2I+PGVtPnZhbHVlPC9lbT48Yj4iPC9iPjwvY29kZT4gb3IgPGNvZGU+ PGI+aW1hZ2VfbmFtZT0iPC9iPjxlbT52YWx1ZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4K CTxkZD5UaGUgaW1hZ2UgdG8gZGlzcGxheS48L2RkPgoJPGRkPlJlcXVpcmVkOiBZZXMuPC9k ZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVzOiB0aGUgaW1hZ2UgaWQjIG9yIGltYWdlIG5hbWUs IGFzIGxpc3RlZCBpbiB0aGUgaW1hZ2UgdGFiLjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTog dW5zZXQuPC9kZD4KCgk8ZHQ+PGNvZGU+PGI+c2hvd19hbHQ9IjwvYj48ZW0+dmFsdWU8L2Vt PjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+V2hldGhlciB0byBzaG93IHRoZSBhbHRlcm5h dGUgdGV4dCBhcyBsaXN0ZWQgaW4gdGhlIGltYWdlIHRhYi48L2RkPgoJPGRkPlJlcXVpcmVk OiBOby48L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6IDxjb2RlPjxiPnllczwvYj48L2Nv ZGU+IG9yIDxjb2RlPjxiPm5vPC9iPjwvY29kZT4uPC9kZD4KCTxkZD5EZWZhdWx0IHZhbHVl OiA8Y29kZT48Yj55ZXM8L2I+PC9jb2RlPi48L2RkPgoKCTxkdD48Y29kZT48Yj5zaG93X3Rp dGxlPSI8L2I+PGVtPnZhbHVlPC9lbT48Yj4iPC9iPjwvY29kZT48L2R0PgoJPGRkPldoZXRo ZXIgdG8gc2hvdyB0aGUgY2FwdGlvbiwgYXMgbGlzdGVkIGluIHRoZSBpbWFnZSB0YWIsIGFz IHRoZSBpbWFnZSYjODIxNztzIHRpdGxlLjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+ Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVlczogPGNvZGU+PGI+eWVzPC9iPjwvY29kZT4gb3IgPGNv ZGU+PGI+bm88L2I+PC9jb2RlPi48L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6IDxjb2RlPjxi PnllczwvYj48L2NvZGU+LjwvZGQ+CgoJPGR0Pjxjb2RlPjxiPnR5cGU9IjwvYj48ZW0+aW1h Z2UgdHlwZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5UaGUga2luZCBvZiBpbWFn ZSB0byBkaXNwbGF5LjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+Cgk8ZGQ+QXZhaWxh YmxlIHZhbHVlczogPGNvZGU+PGI+aW1hZ2U8L2I+PC9jb2RlPiAoZGVmYXVsdCksCgk8Y29k ZT48Yj50aHVtYm5haWw8L2I+PC9jb2RlPiwgYW5kIDxjb2RlPjxiPnBvcHVwPC9iPjwvY29k ZT4uIFRoZSBwYXJhbWV0ZXIKCTxjb2RlPjxiPmFydGljbGU8L2I+PC9jb2RlPiBoYXMgYmVl biBkZXByZWNhdGVkLjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogdW5zZXQuPC9kZD4KCgk8 ZHQ+PGNvZGU+PGI+dXJsPSI8L2I+PGVtPndlYnBhZ2UgdXJsPC9lbT48Yj4iPC9iPjwvY29k ZT48L2R0PgoJPGRkPldlYnNpdGUgdXJsLCBvciBhcnRpY2xlIGlkIywgdG8gbWFrZSB0aGUg aW1hZ2UgbGluayB0by48L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48L2RkPgoJPGRkPkF2YWls YWJsZSB2YWx1ZXM6IHVybCBhZGRyZXNzIG9yIGFydGljbGUgaWQjLjwvZGQ+Cgk8ZGQ+RGVm YXVsdCB2YWx1ZTogdW5zZXQuPC9kZD4KCgk8ZHQ+PGNvZGU+PGI+d3JhcHRhZz0iPC9iPjxl bT52YWx1ZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5UaGUgKFgpSFRNTCB0YWcg dG8gd3JhcCBhcm91bmQgdGhlIGltYWdlIChvciB0aGUgbGlzdCwgaWYgdXNpbmcgbXVsdGlw bGUgaW1hZ2VzKS48L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48L2RkPgoJPGRkPkF2YWlsYWJs ZSB2YWx1ZXM6IGFueSB2YWxpZCAoWClIVE1MIGVsZW1lbnQgbmFtZS4gRm9yIGV4YW1wbGU6 IDxjb2RlPjxiPnA8L2I+PC9jb2RlPi48L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6IHVuc2V0 LjwvZGQ+CgoJPGR0Pjxjb2RlPjxiPnhodG1sPSI8L2I+PGVtPnZhbHVlPC9lbT48Yj4iPC9i PjwvY29kZT48L2R0PgoJPGRkPldoZXRoZXIgdGhlIHRhZyBvdXRwdXRzIHhodG1sIG9yIGh0 bWwuPC9kZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9kZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVz OiA8Y29kZT48Yj55ZXM8L2I+PC9jb2RlPiBvciA8Y29kZT48Yj5ubzwvYj48L2NvZGU+Ljwv ZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogPGNvZGU+PGI+eWVzPC9iPjwvY29kZT4uPC9kZD4K PC9kbD4KCjwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+Cgo8aDM+PGNvZGU+Jmx0O3R4cDp1cG1fYXJ0aWNs ZV9pbWFnZSAvJmd0OzwvY29kZT48L2gzPgoKPGRsPgoJPGR0Pjxjb2RlPjxiPmJyZWFrPSI8 L2I+PGVtPnZhbHVlPC9lbT48Yj4iPC9iPjwvY29kZT48L2R0PgoJPGRkPklmIHVzaW5nIG11 bHRpcGxlIGltYWdlcyBhbmQgdGhlIHdyYXB0YWcgcGFyYW1ldGVyLCB0aGUgKFgpSFRNTCB0 YWcgdG8gc2VwYXJhdGUKCQlpbWFnZXMgd2l0aC48L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48 L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6IGFueSB2YWxpZCAoWClIVE1MIGVsZW1lbnQg bmFtZSwgZm9yIGV4YW1wbGUsIDxjb2RlPjxiPmJyPC9iPjwvY29kZT4uPC9kZD4KCTxkZD5E ZWZhdWx0IHZhbHVlOiB1bnNldC48L2RkPgoKCTxkdD48Y29kZT48Yj5icmVha19jbGFzcz0i PC9iPjxlbT52YWx1ZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5JZiB1c2luZyBt dWx0aXBsZSBpbWFnZXMgYW5kIHRoZSB3cmFwdGFnIHBhcmFtZXRlciwgdGhlIChYKUhUTUwv Q1NTIGNsYXNzIHRvIGFwcGx5IHRvIHRoZQoJYnJlYWt0YWcuPC9kZD4KCTxkZD5SZXF1aXJl ZDogTm8uPC9kZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVzOiBhbnkgdmFsaWQgKFgpSFRNTC9D U1MgY2xhc3MgbmFtZS48L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6IHVuc2V0LjwvZGQ+CgoJ PGR0Pjxjb2RlPjxiPmNsYXNzPSI8L2I+PGVtPmNsYXNzIG5hbWU8L2VtPjxiPiI8L2I+PC9j b2RlPjwvZHQ+Cgk8ZGQ+VGhlIChYKUhUTUwvQ1NTIGNsYXNzIHRvIGFwcGx5IHRvIHRoZSBp bWFnZSBvciB0aGUgaW1hZ2UmIzgyMTc7cyB3cmFwdGFnLiBJZiBhIGxpc3QKCQlvZiBhcnRp Y2xlIGltYWdlcywgdGhlbiB0aGUgY2xhc3MgdG8gYXBwbHkgdG8gdGhlIGxpc3QmIzgyMTc7 cyB3cmFwdGFnLjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+Cgk8ZGQ+QXZhaWxhYmxl IHZhbHVlczogYW55IHZhbGlkIChYKUhUTUwvQ1NTIGNsYXNzIG5hbWUuPC9kZD4KCTxkZD5E ZWZhdWx0IHZhbHVlOiB1bnNldC48L2RkPgoKCTxkdD48Y29kZT48Yj5mb3JtPSI8L2I+PGVt PmZvcm0gbmFtZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5DdXN0b21pemUgdGhl IGltYWdlIGRldGFpbHMgb3V0cHV0LCBmb3IgdHlwZSA8Y29kZT48Yj5pbWFnZTwvYj48L2Nv ZGU+LjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVl czogYW55IGV4aXN0aW5nIGZvcm0mIzgyMTc7cyBuYW1lLjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2 YWx1ZTogdW5zZXQuPC9kZD4KCgk8ZHQ+PGNvZGU+PGI+d3JhcGZvcm09IjwvYj48ZW0+Zm9y bSBuYW1lPC9lbT48Yj4iPC9iPjwvY29kZT48L2R0PgoJPGRkPkN1c3RvbWl6ZSB0aGUgYWRk aXRpb25hbCBvdXRwdXQgZm9yIGFydGljbGUgaW1hZ2UgbGlzdHMgKHVzZSB3aXRoIHVwbV9p bWdfbGlzdCkuPC9kZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9kZD4KCTxkZD5BdmFpbGFibGUg dmFsdWVzOiBhbnkgZXhpc3RpbmcgZm9ybSYjODIxNztzIG5hbWUuPC9kZD4KCTxkZD5EZWZh dWx0IHZhbHVlOiB1bnNldC48L2RkPgoKCTxkdD48Y29kZT48Yj5pZD0iPC9iPjxlbT52YWx1 ZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5UaGUgKFgpSFRNTC9DU1MgaWQgdG8g YXBwbHkgdG8gdGhlIGltYWdlLjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+Cgk8ZGQ+ QXZhaWxhYmxlIHZhbHVlczogYW55IHZhbGlkIChYKUhUTUwvQ1NTIGlkLjwvZGQ+Cgk8ZGQ+ RGVmYXVsdCB2YWx1ZTogdW5zZXQuPC9kZD4KCgk8ZHQ+PGNvZGU+PGI+bGltaXQ9IjwvYj48 ZW0+dmFsdWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+SWYgdXNpbmcgbXVsdGlw bGUgaW1hZ2VzLCB0aGUgbWF4aW11bSBudW1iZXIgb2YgaW1hZ2VzIHRvIHNob3cuPC9kZD4K CTxkZD5SZXF1aXJlZDogTm8uPC9kZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVzOiBhbnkgd2hv bGUgbnVtYmVyLjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogPGNvZGU+PGI+MDwvYj48L2Nv ZGU+LjwvZGQ+CgoJPGR0Pjxjb2RlPjxiPm9mZnNldD0iPC9iPjxlbT5pbnRlZ2VyPC9lbT48 Yj4iPC9iPjwvY29kZT48L2R0PgoJPGRkPklmIHVzaW5nIG11bHRpcGxlIGltYWdlcywgdGhl IG51bWJlciBvZiBpbWFnZXMgdG8gc2tpcCAobm90IGRpc3BsYXkpIGluIHRoZSBsaXN0Ljwv ZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVlczogYW55 IHdob2xlIG51bWJlci48L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6IDxjb2RlPjxiPjA8L2I+ PC9jb2RlPi48L2RkPgoKCTxkdD48Y29kZT48Yj5zaG93X2FsdD0iPC9iPjxlbT52YWx1ZTwv ZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5XaGV0aGVyIHRvIHNob3cgdGhlIGFsdGVy bmF0ZSB0ZXh0IGFzIGxpc3RlZCBpbiB0aGUgaW1hZ2UgdGFiLjwvZGQ+Cgk8ZGQ+UmVxdWly ZWQ6IE5vLjwvZGQ+Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVlczogPGNvZGU+PGI+eWVzPC9iPjwv Y29kZT4gb3IgPGNvZGU+PGI+bm88L2I+PC9jb2RlPi48L2RkPgoJPGRkPkRlZmF1bHQgdmFs dWU6IDxjb2RlPjxiPnllczwvYj48L2NvZGU+LjwvZGQ+CgoJPGR0Pjxjb2RlPjxiPnNob3df aGVpZ2h0PSI8L2I+PGVtPnZhbHVlPC9lbT48Yj4iPC9iPjwvY29kZT48L2R0PgoJPGRkPldo ZXRoZXIgdG8gaW5jbHVkZSB0aGUgaW1hZ2UgaGVpZ2h0IGluIHRoZSBpbWFnZSB0YWcgcmV0 dXJuZWQuPC9kZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9kZD4KCTxkZD5BdmFpbGFibGUgdmFs dWVzOiA8Y29kZT48Yj55ZXM8L2I+PC9jb2RlPiBvciA8Y29kZT48Yj5ubzwvYj48L2NvZGU+ LjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogPGNvZGU+PGI+eWVzPC9iPjwvY29kZT4uPC9k ZD4KCgk8ZHQ+PGNvZGU+PGI+c2hvd190aXRsZT0iPC9iPjxlbT52YWx1ZTwvZW0+PGI+Ijwv Yj48L2NvZGU+PC9kdD4KCTxkZD5XaGV0aGVyIHRvIHNob3cgdGhlIGNhcHRpb24sIGFzIGxp c3RlZCBpbiB0aGUgaW1hZ2UgdGFiLCBhcyB0aGUgaW1hZ2UmIzgyMTc7cyAoWClIVE1MIHRp dGxlIGF0dHJpYnV0ZS48L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48L2RkPgoJPGRkPkF2YWls YWJsZSB2YWx1ZXM6IDxjb2RlPjxiPnllczwvYj48L2NvZGU+IG9yIDxjb2RlPjxiPm5vPC9i PjwvY29kZT4uPC9kZD4KCTxkZD5EZWZhdWx0IHZhbHVlOiA8Y29kZT48Yj55ZXM8L2I+PC9j b2RlPi48L2RkPgoKCTxkdD48Y29kZT48Yj5zaG93X3dpZHRoPSI8L2I+PGVtPnZhbHVlPC9l bT48Yj4iPC9iPjwvY29kZT48L2R0PgoJPGRkPldoZXRoZXIgdG8gaW5jbHVkZSB0aGUgaW1h Z2Ugd2lkdGggaW4gdGhlIGltYWdlIHRhZyByZXR1cm5lZC48L2RkPgoJPGRkPlJlcXVpcmVk OiBOby48L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6IDxjb2RlPjxiPnllczwvYj48L2Nv ZGU+IG9yIDxjb2RlPjxiPm5vPC9iPjwvY29kZT4uPC9kZD4KCTxkZD5EZWZhdWx0IHZhbHVl OiA8Y29kZT48Yj55ZXM8L2I+PC9jb2RlPi48L2RkPgoKCTxkdD48Y29kZT48Yj50eXBlPSI8 L2I+PGVtPmltYWdlIHR5cGU8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+VGhlIGtp bmQgb2YgaW1hZ2UgdG8gZGlzcGxheS48L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48L2RkPgoJ PGRkPkF2YWlsYWJsZSB2YWx1ZXM6IDxjb2RlPjxiPmltYWdlPC9iPjwvY29kZT4sCgk8Y29k ZT48Yj50aHVtYm5haWw8L2I+PC9jb2RlPiwgYW5kIDxjb2RlPjxiPnBvcHVwPC9iPjwvY29k ZT4uPC9kZD4KCTxkZD5EZWZhdWx0IHZhbHVlOiA8Y29kZT48Yj5pbWFnZTwvYj48L2NvZGU+ LjwvZGQ+CgoJPGR0Pjxjb2RlPjxiPnVybD0iPC9iPjxlbT53ZWJwYWdlIHVybDwvZW0+PGI+ IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5XZWJzaXRlIHVybCwgb3IgYXJ0aWNsZSBpZCMsIHRv IG1ha2UgdGhlIGltYWdlIGxpbmsgdG8uPC9kZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9kZD4K CTxkZD5BdmFpbGFibGUgdmFsdWVzOiB1cmwgYWRkcmVzcyBvciBhcnRpY2xlIGlkIy48L2Rk PgoJPGRkPkRlZmF1bHQgdmFsdWU6IHVuc2V0LjwvZGQ+CgoJPGR0Pjxjb2RlPjxiPndyYXB0 YWc9IjwvYj48ZW0+dmFsdWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+VGhlIChY KUhUTUwgdGFnIHRvIHdyYXAgYXJvdW5kIHRoZSBpbWFnZSAob3IgdGhlIGxpc3QsIGlmIHVz aW5nIG11bHRpcGxlIGltYWdlcykuPC9kZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9kZD4KCTxk ZD5BdmFpbGFibGUgdmFsdWVzOiBhbnkgdmFsaWQgKFgpSFRNTCBlbGVtZW50IG5hbWUsIGZv ciBleGFtcGxlLCA8Y29kZT48Yj5wPC9iPjwvY29kZT4uPC9kZD4KCTxkZD5EZWZhdWx0IHZh bHVlOiB1bnNldC48L2RkPgoKCTxkdD48Y29kZT48Yj54aHRtbD0iPC9iPjxlbT52YWx1ZTwv ZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5XaGV0aGVyIHRoZSB0YWcgb3V0cHV0cyBY SFRNTCBvciBIVE1MLjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+Cgk8ZGQ+QXZhaWxh YmxlIHZhbHVlczogPGNvZGU+PGI+eWVzPC9iPjwvY29kZT4gb3IgPGNvZGU+PGI+bm88L2I+ PC9jb2RlPi48L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6IDxjb2RlPjxiPnllczwvYj48L2Nv ZGU+LjwvZGQ+CjwvZGw+Cgo8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPgoKPGgzPjxjb2RlPiZsdDt0eHA6 dXBtX2lmX2FydGljbGVfaW1hZ2UgLyZndDs8L2NvZGU+PC9oMz4KCjx1bD4KCTxsaT5EZXRl cm1pbmUgd2hldGhlciBhbiBhcnRpY2xlIGltYWdlIGhhcyBiZWVuIGRlZmluZWQuPC9saT4K CTxsaT5Db25kaXRpb25hbCB3cmFwcGluZyB0YWcsIG5vIGF0dHJpYnV0ZXMuPC9saT4KPC91 bD4KCgo8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tPgoKPGgzPjxjb2RlPiZsdDt0eHA6dXBtX2lmX2FydGlj bGVfaW1hZ2VfbGlzdCAvJmd0OzwvY29kZT48L2gzPgoKPHVsPgoJPGxpPkRldGVybWluZSB3 aGV0aGVyIG11bHRpcGxlIGFydGljbGUgaW1hZ2VzIGhhdmUgYmVlbiBkZWZpbmVkLjwvbGk+ Cgk8bGk+Q29uZGl0aW9uYWwgd3JhcHBpbmcgdGFnLCBubyBhdHRyaWJ1dGVzLjwvbGk+Cjwv dWw+CgoKPHA+PGEgaHJlZj0iI3N0YXJ0IiB0aXRsZT0iSnVtcCBiYWNrIGNvbnRlbnRzIGxp c3QiPiYjODYxNzs8L2E+PC9wPgoKCgo8aDIgaWQ9ImN1c3RvbS1zZWN0aW9uIj5DdXN0b21p emluZyBPdXRwdXQ8L2gyPgoKPHA+U3VwcGx5IHRoZSBpbWFnZSBpZCBvciBuYW1lLCBhbmQg dGhlIGZvcm0gdG8gYmUgdXNlZC4gQWx0ZXJuYXRlbHkgeW91IG1heSB1c2UgdGhlIHRhZ3Mg YXMKY29udGFpbmluZyBvciB3cmFwcGluZyB0YWdzLiBGb3IgZXhhbXBsZTo8L3A+Cgo8cD48 Y29kZT4mbHQ7dHhwOnVwbV9pbWFnZSB0eXBlPSJpbWFnZSImZ3Q7Jmx0O3R4cDp1cG1faW1n X2NhcHRpb24gLyZndDsmbHQ7L3R4cDp1cG1faW1hZ2UmZ3Q7PC9jb2RlPjwvcD4KCjxwPlRo ZSB0YWdzIGF2YWlsYWJsZSB0byB5b3UgZnJvbSB3aXRoaW4gYSBmb3JtL3dyYXBwaW5nIHRh ZyBhcmUgZmFpcmx5IHNlbGYtZXhwbGFuYXRvcnkuPC9wPgoKPCEtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4K CjxoMz48Y29kZT4mbHQ7dHhwOnVwbV9pbWdfYWx0IC8mZ3Q7PC9jb2RlPjwvaDM+Cgo8cD5E ZXNjcmlwdGlvbjogaW1hZ2UgYWx0ZXJuYXRlIHRleHQuPC9wPgoKPGRsPgoJPGR0Pjxjb2Rl PjxiPmVzY2FwZT0iPC9iPjxlbT52YWx1ZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxk ZD5XaGV0aGVyIHRvIGVzY2FwZSB0aGUgcmVzdWx0IHRvIG91dHB1dCB2YWxpZCBtYXJrdXAu PC9kZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9kZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVzOiA8 Y29kZT48Yj5odG1sPC9iPjwvY29kZT4gb3IgdW5zZXQuPC9kZD4KCTxkZD5EZWZhdWx0IHZh bHVlOiB1bnNldC48L2RkPgo8L2RsPgoKPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4KCjxoMz48Y29kZT4m bHQ7dHhwOnVwbV9pbWdfY2FwdGlvbiAvJmd0OzwvY29kZT48L2gzPgoKPHA+RGVzY3JpcHRp b246IGltYWdlIGNhcHRpb24uPC9wPgoKPGRsPgoJPGR0Pjxjb2RlPjxiPmNsYXNzPSI8L2I+ PGVtPnZhbHVlPC9lbT48Yj4iPC9iPjwvY29kZT48L2R0PgoJPGRkPlRoZSAoWClIVE1ML0NT UyBjbGFzcyB0byBhcHBseSB0byB0aGUgd3JhcHRhZy48L2RkPgoJPGRkPlJlcXVpcmVkOiBO by48L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6IGFueSB2YWxpZCBDU1MgY2xhc3MgbmFt ZSBvciB1bnNldC48L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6IHVuc2V0LjwvZGQ+CgoJPGR0 Pjxjb2RlPjxiPmVzY2FwZT0iPC9iPjxlbT52YWx1ZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9k dD4KCTxkZD5XaGV0aGVyIHRvIGVzY2FwZSB0aGUgcmVzdWx0IHRvIG91dHB1dCB2YWxpZCBt YXJrdXAuPC9kZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9kZD4KCTxkZD5BdmFpbGFibGUgdmFs dWVzOiA8Y29kZT48Yj5odG1sPC9iPjwvY29kZT4gb3IgdW5zZXQuPC9kZD4KCTxkZD5EZWZh dWx0IHZhbHVlOiB1bnNldC48L2RkPgoKCTxkdD48Y29kZT48Yj5sYWJlbD0iPC9iPjxlbT52 YWx1ZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5UaGlzIHN0cmluZyB3aWxsIGJl IHByZXBlbmRlZCB0byB0aGUgY2FwdGlvbi48L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48L2Rk PgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6IGFueSB0ZXh0IG9yIHVuc2V0LjwvZGQ+Cgk8ZGQ+ RGVmYXVsdCB2YWx1ZTogdW5zZXQuPC9kZD4KCgk8ZHQ+PGNvZGU+PGI+bGFiZWx0YWc9Ijwv Yj48ZW0+dmFsdWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+VGhlIChYKUhUTUwg dGFnIHRvIGVuY2xvc2UgdGhlIGxhYmVsLjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+ Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVlczogYW55IHZhbGlkIChYKUhUTUwgdGFnIG9yIHVuc2V0 LjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogdW5zZXQuPC9kZD4KCgk8ZHQ+PGNvZGU+PGI+ d3JhcHRhZz0iPC9iPjxlbT52YWx1ZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5U aGUgKFgpSFRNTCB0YWcgdG8gZW5jbG9zZSB0aGUgY2FwdGlvbi48L2RkPgoJPGRkPlJlcXVp cmVkOiBOby48L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6IGFueSB2YWxpZCAoWClIVE1M IHRhZyBvciB1bnNldC48L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6IHVuc2V0LjwvZGQ+Cjwv ZGw+Cgo8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tPgoKPGgzPjxjb2RlPiZsdDt0eHA6dXBtX2ltZ19jYXRl Z29yeSAvJmd0OzwvY29kZT48L2gzPgoKPHA+RGVzY3JpcHRpb246IHRoZSBjYXRlZ29yeSB0 aGUgaW1hZ2UgYmVsb25ncyB0by48L3A+Cgo8ZGw+Cgk8ZHQ+PGNvZGU+PGI+Y2xhc3M9Ijwv Yj48ZW0+dmFsdWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+VGhlIChYKUhUTUwv Q1NTIGNsYXNzIHRvIGFwcGx5IHRvIHRoZSB3cmFwdGFnLjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6 IE5vLjwvZGQ+Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVlczogYW55IHZhbGlkIENTUyBjbGFzcyBu YW1lIG9yIHVuc2V0LjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogdW5zZXQuPC9kZD4KCgk8 ZHQ+PGNvZGU+PGI+bGFiZWw9IjwvYj48ZW0+dmFsdWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwv ZHQ+Cgk8ZGQ+VGhpcyBzdHJpbmcgd2lsbCBiZSBwcmVwZW5kZWQgdG8gdGhlIGNhcHRpb24u PC9kZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9kZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVzOiBh bnkgdGV4dCBvciB1bnNldC48L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6IHVuc2V0LjwvZGQ+ CgoJPGR0Pjxjb2RlPjxiPmxhYmVsdGFnPSI8L2I+PGVtPnZhbHVlPC9lbT48Yj4iPC9iPjwv Y29kZT48L2R0PgoJPGRkPlRoZSAoWClIVE1MIHRhZyB0byBlbmNsb3NlIHRoZSBsYWJlbC48 L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6IGFu eSB2YWxpZCAoWClIVE1MIHRhZyBvciB1bnNldC48L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6 IHVuc2V0LjwvZGQ+CgoJPGR0Pjxjb2RlPjxiPnRpdGxlPSI8L2I+PGVtPnZhbHVlPC9lbT48 Yj4iPC9iPjwvY29kZT48L2R0PgoJPGRkPlRoZSAoWClIVE1MIHRhZyB0byBlbmNsb3NlIHRo ZSBsYWJlbC48L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48L2RkPgoJPGRkPkF2YWlsYWJsZSB2 YWx1ZXM6IDxjb2RlPjxiPjA8L2I+PC9jb2RlPiAoemVyby9vZmYpIG9yIDxjb2RlPjxiPjE8 L2I+PC9jb2RlPiAob25lL29uKS48L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6IDxjb2RlPjxi PjA8L2I+PC9jb2RlPi48L2RkPgoKCTxkdD48Y29kZT48Yj53cmFwdGFnPSI8L2I+PGVtPnZh bHVlPC9lbT48Yj4iPC9iPjwvY29kZT48L2R0PgoJPGRkPlRoZSAoWClIVE1MIHRhZyB0byBl bmNsb3NlIHRoZSBjYXB0aW9uLjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+Cgk8ZGQ+ QXZhaWxhYmxlIHZhbHVlczogYW55IHZhbGlkIChYKUhUTUwgdGFnIG9yIHVuc2V0LjwvZGQ+ Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogdW5zZXQuPC9kZD4KPC9kbD4KCjwhLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0+Cgo8aDM+PGNvZGU+Jmx0O3R4cDp1cG1faW1nX2RhdGUgLyZndDs8L2NvZGU+PC9oMz4K CjxwPkRlc2NyaXB0aW9uOiB0aGUgZGF0ZSB0aGUgaW1hZ2Ugd2FzIHVwbG9hZGVkLjwvcD4K CjxkbD4KCTxkdD48Y29kZT48Yj5mb3JtYXQ9IjwvYj48ZW0+dmFsdWU8L2VtPjxiPiI8L2I+ PC9jb2RlPjwvZHQ+Cgk8ZGQ+PC9kZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9kZD4KCTxkZD5B dmFpbGFibGUgdmFsdWVzOiBhbnkgdmFsaWQgPGEgaHJlZj0iaHR0cDovL3BocC5uZXQvc3Ry ZnRpbWUiPnN0cmZ0aW1lKCk8L2E+IHN0cmluZyBvciA8Y29kZT48Yj5zaW5jZTwvYj48L2Nv ZGU+LjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogdW5zZXQgKHVzZSAiRGF0ZSBmb3JtYXQi IHByZWZlcmVuY2UpLjwvZGQ+CgoJPGR0Pjxjb2RlPjxiPmdtdD0iPC9iPjxlbT52YWx1ZTwv ZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5XaGV0aGVyIHRvIGZvcm1hdCBkYXRldGlt ZSBhY2NvcmRpbmcgR01UIHRpbWUuPC9kZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9kZD4KCTxk ZD5BdmFpbGFibGUgdmFsdWVzOiA8Y29kZT48Yj4wPC9iPjwvY29kZT4gKG5vLCB1c2UgIlRp bWUgWm9uZSIgcHJlZmVyZW5jZSkgb3IgPGNvZGU+PGI+MTwvYj48L2NvZGU+ICh5ZXMpLjwv ZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogPGNvZGU+PGI+MDwvYj48L2NvZGU+IChubyk8L2Rk PgoKCTxkdD48Y29kZT48Yj5sYW5nPSI8L2I+PGVtPnZhbHVlPC9lbT48Yj4iPC9iPjwvY29k ZT48L2R0PgoJPGRkPkZvcm1hdCB0aW1lIHN0cmluZyBhY2NvcmRpbmcgdG8gc3BlY2lmaWVk IGxhbmd1YWdlIGxvY2FsZS48L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48L2RkPgoJPGRkPkF2 YWlsYWJsZSB2YWx1ZXM6IGFueSB2YWxpZCA8L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6IHVu c2V0ICh1c2UgIkxhbmd1YWdlIiBsb2NhbGUgcHJlZmVyZW5jZSkuPC9kZD4KPC9kbD4KCjwh LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0+Cgo8aDM+PGNvZGU+Jmx0O3R4cDp1cG1faW1nX2Z1bGxfaGVpZ2h0 IC8mZ3Q7PC9jb2RlPjwvaDM+Cgo8cD5EZXNjcmlwdGlvbjogZnVsbC1zaXplIGltYWdlIGhl aWdodC48L3A+Cgo8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPgoKPGgzPjxjb2RlPiZsdDt0eHA6dXBtX2lt Z19mdWxsX3VybCAvJmd0OzwvY29kZT48L2gzPgoKPHA+RGVzY3JpcHRpb246IGZ1bGwtc2l6 ZSBpbWFnZSB1cmwuPC9wPgoKPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4KCjxoMz48Y29kZT4mbHQ7dHhw OnVwbV9pbWdfZnVsbF93aWR0aCAvJmd0OzwvY29kZT48L2gzPgoKPHA+RGVzY3JpcHRpb246 IGZ1bGwtc2l6ZSBpbWFnZSB3aWR0aC48L3A+Cgo8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPgoKPGgzPjxj b2RlPiZsdDt0eHA6dXBtX2ltZ19ocmVmIC8mZ3Q7PC9jb2RlPjwvaDM+Cgo8cD5EZXNjcmlw dGlvbjogd2Vic2l0ZSB1cmwgdG8gbWFrZSB0aGUgaW1hZ2UgbGluayB0bywgYXMgcGFzc2Vk IGJ5IHRoZSB1cmwgcGFyYW1ldGVyLjwvcD4KCjxwPklmIHVzZWQgYXMgYSB3cmFwcGluZyB0 YWcsIGl0IHdpbGwgdHVybiB3aGF0ZXZlciBpdCBzdXJyb3VuZHMgaW50byBhIGxpbmsuPC9w PgoKPGRsPgoJPGR0Pjxjb2RlPjxiPmNsYXNzPSI8L2I+PGVtPnZhbHVlPC9lbT48Yj4iPC9i PjwvY29kZT48L2R0PgoJPGRkPlRoZSAoWClIVE1ML0NTUyBjbGFzcyB0byBhcHBseSB0byB0 aGUgd3JhcHRhZy48L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48L2RkPgoJPGRkPkF2YWlsYWJs ZSB2YWx1ZXM6IGFueSB2YWxpZCBDU1MgY2xhc3MgbmFtZSBvciB1bnNldC48L2RkPgoJPGRk PkRlZmF1bHQgdmFsdWU6IHVuc2V0LjwvZGQ+CgoJPGR0Pjxjb2RlPjxiPmVzY2FwZT0iPC9i PjxlbT52YWx1ZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5XaGV0aGVyIHRvIGVz Y2FwZSB0aGUgcmVzdWx0IHRvIG91dHB1dCB2YWxpZCBtYXJrdXAuPC9kZD4KCTxkZD5SZXF1 aXJlZDogTm8uPC9kZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVzOiA8Y29kZT48Yj5odG1sPC9i PjwvY29kZT4gb3IgdW5zZXQuPC9kZD4KCTxkZD5EZWZhdWx0IHZhbHVlOiB1bnNldC48L2Rk PgoKCTxkdD48Y29kZT48Yj5sYWJlbD0iPC9iPjxlbT52YWx1ZTwvZW0+PGI+IjwvYj48L2Nv ZGU+PC9kdD4KCTxkZD5UaGlzIHN0cmluZyB3aWxsIGJlIHByZXBlbmRlZCB0byB0aGUgY2Fw dGlvbi48L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1 ZXM6IGFueSB0ZXh0IG9yIHVuc2V0LjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogdW5zZXQu PC9kZD4KCgk8ZHQ+PGNvZGU+PGI+bGFiZWx0YWc9IjwvYj48ZW0+dmFsdWU8L2VtPjxiPiI8 L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+VGhlIChYKUhUTUwgdGFnIHRvIGVuY2xvc2UgdGhlIGxh YmVsLjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVl czogYW55IHZhbGlkIChYKUhUTUwgdGFnIG9yIHVuc2V0LjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2 YWx1ZTogdW5zZXQuPC9kZD4KCgk8ZHQ+PGNvZGU+PGI+d3JhcHRhZz0iPC9iPjxlbT52YWx1 ZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5UaGUgKFgpSFRNTCB0YWcgdG8gZW5j bG9zZSB0aGUgY2FwdGlvbi48L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48L2RkPgoJPGRkPkF2 YWlsYWJsZSB2YWx1ZXM6IGFueSB2YWxpZCAoWClIVE1MIHRhZyBvciB1bnNldC48L2RkPgoJ PGRkPkRlZmF1bHQgdmFsdWU6IHVuc2V0LjwvZGQ+CjwvZGw+Cgo8IS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t PgoKPGgzPjxjb2RlPiZsdDt0eHA6dXBtX2ltZ19pZCAvJmd0OzwvY29kZT48L2gzPgoKPHA+ RGVzY3JpcHRpb246IGltYWdlIGlkIG51bWJlci48L3A+Cgo8IS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPgoK PGgzPjxjb2RlPiZsdDt0eHA6dXBtX2ltZ19saXN0IC8mZ3Q7PC9jb2RlPjwvaDM+Cgo8cD5E ZXNjcmlwdGlvbjogYXJ0aWNsZSBpbWFnZSBsaXN0LiA8c3Ryb25nPk9ubHkgYXZhaWxhYmxl IHRvCgk8Y29kZT4mbHQ7dHhwOnVwbV9hcnRpY2xlX2ltYWdlIC8mZ3Q7PC9jb2RlPiYjODIx NztzIDxjb2RlPndyYXBmb3JtPC9jb2RlPjwvc3Ryb25nPi48L3A+Cgo8IS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tPgoKPGgzPjxjb2RlPiZsdDt0eHA6dXBtX2ltZ19uYW1lIC8mZ3Q7PC9jb2RlPjwvaDM+ Cgo8cD5EZXNjcmlwdGlvbjogaW1hZ2UgbmFtZS48L3A+Cgo8IS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPgoK PGgzPjxjb2RlPiZsdDt0eHA6dXBtX2ltZ190aHVtYl9oZWlnaHQgLyZndDs8L2NvZGU+PC9o Mz4KCjxwPkRlc2NyaXB0aW9uOiB0aHVtYm5haWwgaW1hZ2UgaGVpZ2h0LjwvcD4KCjwhLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0+Cgo8aDM+PGNvZGU+Jmx0O3R4cDp1cG1faW1nX3RodW1iX3VybCAvJmd0 OzwvY29kZT48L2gzPgoKPHA+RGVzY3JpcHRpb246IHRodW1ibmFpbCBpbWFnZSB1cmwuPC9w PgoKPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLT4KCjxoMz48Y29kZT4mbHQ7dHhwOnVwbV9pbWdfdGh1bWJf d2lkdGggLyZndDs8L2NvZGU+PC9oMz4KCjxwPkRlc2NyaXB0aW9uOiB0aHVtYm5haWwgaW1h Z2Ugd2lkdGguPC9wPgoKPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4KCjxwPjxhIGhyZWY9IiNzdGFydCIg dGl0bGU9Ikp1bXAgYmFjayBjb250ZW50cyBsaXN0Ij4mIzg2MTc7PC9hPjwvcD4KCgoKPGgy IGlkPSJjcmVkaXQtc2VjdGlvbiI+Q3JlZGl0IGFuZCBEZXZlbG9wZXIgTm90ZXM8L2gyPgoK PHA+VGhlIGNvZGUgZnJvbSB0aGlzIHBsdWdpbiBpcyBub3QgZW50aXJlbHkgJiM4MjIwO2Zy b20gc2NyYXRjaCYjODIyMTs6IEkgbWFkZSB1c2Ugb2YgY29kZQphbHJlYWR5IGV4aXN0aW5n IGluIFRleHRwYXR0ZXJuLiBUaGlzIG1hZGUgaXQgYSBsb3QgZWFzaWVyIGZvciBtZSB0byBj cmVhdGUgd2hhdCBJIGhvcGUgaXMKYSBuZWFyLXNlYW1sZXNzIHBsdWdpbi4gSSBkb24mIzgy MTc7dCBrbm93IGZvciBjZXJ0YWluIHdob20gd3JvdGUgdGhlIHBhcnRzIEkgdXNlZCwKdGhv dWdoIEkgc3VzcGVjdCBpdCBpcyBsYXJnZWx5IDxhIGhyZWY9Imh0dHA6Ly90ZXh0aXNtLmNv bS8iPkRlYW48L2E+J3Mgd29yay48L3A+Cgo8cD5QYXJ0IG9mIHRoZSBtdWx0aXBsZSBhcnRp Y2xlIGltYWdlcyBzdXBwb3J0IHdhcyBvcmlnaW5hbGx5IGJvcnJvd2VkIGZyb20KPGEgaHJl Zj0iaHR0cDovL3RocmVzaG9sZHN0YXRlLmNvbS9zb2Z0d2FyZS8zNjk5L3plbV9hcnRpY2xl X2ltYWdlIj56ZW1fYXJ0aWNsZV9pbWFnZTwvYT4uPC9wPiI7czo4OiJoZWxwX3JhdyI7czox NzQ2ODoiPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuLHByb2plY3Rpb24i Pgo8IS0tCnByZSwgY29kZSB7CmJhY2tncm91bmQtY29sb3I6ICNlZWU7Cn0KCmgzIGNvZGUg ewpmb250LWZhbWlseTogaW5oZXJpdDsKYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7 Cn0KLS0+Cjwvc3R5bGU+Cgo8aDE+dXBtX2ltYWdlPC9oMT4KCjxvbCBpZD0ic3RhcnQiPgoJ PGxpPjxhIGhyZWY9IiNpbnRyby1zZWN0aW9uIj5JbnRybzwvYT48L2xpPgoJPGxpPjxhIGhy ZWY9IiN0YWctc2VjdGlvbiI+TmV3IEltYWdlIFRhZ3M8L2E+PC9saT4KCTxsaT48YSBocmVm PSIjY3VzdG9tLXNlY3Rpb24iPkN1c3RvbWl6aW5nIE91dHB1dDwvYT48L2xpPgoJPGxpPjxh IGhyZWY9IiNjcmVkaXQtc2VjdGlvbiI+Q3JlZGl0IGFuZCBEZXZlbG9wZXIgTm90ZXM8L2E+ PC9saT4KPC9vbD4KCgo8aDIgaWQ9ImludHJvLXNlY3Rpb24iPkludHJvPC9oMj4KCjxwPlRl eHRwYXR0ZXJuIGNvbWVzIHdpdGggaXRzIG93biBpbWFnZSB0YWdzLCBidXQgYXMgSSB3b3Jr ZWQgb24gdGhpcyBwbHVnaW4sIEkgZGVjaWRlZCB0bwpjcmVhdGUgZXh0ZW5kZWQgdmVyc2lv bnMsIHRvIGFsbG93IGEgbG90IG1vcmUgY3VzdG9taXphdGlvbi4gVGhpcyBwbHVnaW4gd29u JiM4MjE3O3QKYXV0b21hdGljYWxseSBjcmVhdGUgdmFzdCwgY29tcGxpY2F0ZWQgZ2FsbGVy aWVzLCBidXQgeW91IGNvdWxkIGNlcnRhaW5seSB1c2UgaXQgdG8KY3JlYXRlIGEgbWluaS1n YWxsZXJ5IG9mIHNvcnRzLiA8YSBocmVmPSIjc3RhcnQiIHRpdGxlPSJKdW1wIGJhY2sgY29u dGVudHMgbGlzdCI+JiM4NjE3OzwvYT48L3A+CgoKPGgyIGlkPSJ0YWctc2VjdGlvbiI+TmV3 IEltYWdlIFRhZ3M8L2gyPgoKPHA+VGhpcyBwbHVnaW4gcHJvdmlkZXMgeW91IHdpdGggdHdv IG5ldyBpbWFnZSB0YWdzLjwvcD4KCjxoMz48Y29kZT4mbHQ7dHhwOnVwbV9pbWFnZSAvJmd0 OzwvY29kZT48L2gzPgoKPGRsPgoJPGR0Pjxjb2RlPjxiPmNsYXNzPSI8L2I+PGVtPmNsYXNz IG5hbWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+VGhlIChYKUhUTUwvQ1NTIGNs YXNzIHRvIGFwcGx5IHRvIHRoZSBpbWFnZS48L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48L2Rk PgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6IGFueSB2YWxpZCAoWClIVE1ML0NTUyBjbGFzcyBu YW1lLjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogdW5zZXQuPC9kZD4KCgk8ZHQ+PGNvZGU+ PGI+Zm9ybT0iPC9iPjxlbT5mb3JtIG5hbWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8 ZGQ+Q3VzdG9taXplIHRoZSBpbWFnZSBkZXRhaWxzIG91dHB1dCwgZm9yIHR5cGUgPGNvZGU+ PGI+aW1hZ2U8L2I+PC9jb2RlPi48L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48L2RkPgoJPGRk PkF2YWlsYWJsZSB2YWx1ZXM6IGFueSBleGlzdGluZyBmb3JtJiM4MjE3O3MgbmFtZS48L2Rk PgoJPGRkPkRlZmF1bHQgdmFsdWU6IHVuc2V0LjwvZGQ+CgoJPGR0Pjxjb2RlPjxiPmlkPSI8 L2I+PGVtPnZhbHVlPC9lbT48Yj4iPC9iPjwvY29kZT48L2R0PgoJPGRkPlRoZSAoWClIVE1M L0NTUyBpZCB0byBhcHBseSB0byB0aGUgaW1hZ2UuPC9kZD4KCTxkZD5SZXF1aXJlZDogTm8u PC9kZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVzOiBhbnkgdmFsaWQgKFgpSFRNTC9DU1MgaWQu PC9kZD4KCTxkZD5EZWZhdWx0IHZhbHVlOiB1bnNldC48L2RkPgoKCTxkdD48Y29kZT48Yj5p bWFnZV9pZD0iPC9iPjxlbT52YWx1ZTwvZW0+PGI+IjwvYj48L2NvZGU+IG9yIDxjb2RlPjxi PmltYWdlX25hbWU9IjwvYj48ZW0+dmFsdWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8 ZGQ+VGhlIGltYWdlIHRvIGRpc3BsYXkuPC9kZD4KCTxkZD5SZXF1aXJlZDogWWVzLjwvZGQ+ Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVlczogdGhlIGltYWdlIGlkIyBvciBpbWFnZSBuYW1lLCBh cyBsaXN0ZWQgaW4gdGhlIGltYWdlIHRhYi48L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6IHVu c2V0LjwvZGQ+CgoJPGR0Pjxjb2RlPjxiPnNob3dfYWx0PSI8L2I+PGVtPnZhbHVlPC9lbT48 Yj4iPC9iPjwvY29kZT48L2R0PgoJPGRkPldoZXRoZXIgdG8gc2hvdyB0aGUgYWx0ZXJuYXRl IHRleHQgYXMgbGlzdGVkIGluIHRoZSBpbWFnZSB0YWIuPC9kZD4KCTxkZD5SZXF1aXJlZDog Tm8uPC9kZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVzOiA8Y29kZT48Yj55ZXM8L2I+PC9jb2Rl PiBvciA8Y29kZT48Yj5ubzwvYj48L2NvZGU+LjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTog PGNvZGU+PGI+eWVzPC9iPjwvY29kZT4uPC9kZD4KCgk8ZHQ+PGNvZGU+PGI+c2hvd190aXRs ZT0iPC9iPjxlbT52YWx1ZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5XaGV0aGVy IHRvIHNob3cgdGhlIGNhcHRpb24sIGFzIGxpc3RlZCBpbiB0aGUgaW1hZ2UgdGFiLCBhcyB0 aGUgaW1hZ2UmIzgyMTc7cyB0aXRsZS48L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48L2RkPgoJ PGRkPkF2YWlsYWJsZSB2YWx1ZXM6IDxjb2RlPjxiPnllczwvYj48L2NvZGU+IG9yIDxjb2Rl PjxiPm5vPC9iPjwvY29kZT4uPC9kZD4KCTxkZD5EZWZhdWx0IHZhbHVlOiA8Y29kZT48Yj55 ZXM8L2I+PC9jb2RlPi48L2RkPgoKCTxkdD48Y29kZT48Yj50eXBlPSI8L2I+PGVtPmltYWdl IHR5cGU8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+VGhlIGtpbmQgb2YgaW1hZ2Ug dG8gZGlzcGxheS48L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48L2RkPgoJPGRkPkF2YWlsYWJs ZSB2YWx1ZXM6IDxjb2RlPjxiPmltYWdlPC9iPjwvY29kZT4gKGRlZmF1bHQpLAoJPGNvZGU+ PGI+dGh1bWJuYWlsPC9iPjwvY29kZT4sIGFuZCA8Y29kZT48Yj5wb3B1cDwvYj48L2NvZGU+ LiBUaGUgcGFyYW1ldGVyCgk8Y29kZT48Yj5hcnRpY2xlPC9iPjwvY29kZT4gaGFzIGJlZW4g ZGVwcmVjYXRlZC48L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6IHVuc2V0LjwvZGQ+CgoJPGR0 Pjxjb2RlPjxiPnVybD0iPC9iPjxlbT53ZWJwYWdlIHVybDwvZW0+PGI+IjwvYj48L2NvZGU+ PC9kdD4KCTxkZD5XZWJzaXRlIHVybCwgb3IgYXJ0aWNsZSBpZCMsIHRvIG1ha2UgdGhlIGlt YWdlIGxpbmsgdG8uPC9kZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9kZD4KCTxkZD5BdmFpbGFi bGUgdmFsdWVzOiB1cmwgYWRkcmVzcyBvciBhcnRpY2xlIGlkIy48L2RkPgoJPGRkPkRlZmF1 bHQgdmFsdWU6IHVuc2V0LjwvZGQ+CgoJPGR0Pjxjb2RlPjxiPndyYXB0YWc9IjwvYj48ZW0+ dmFsdWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+VGhlIChYKUhUTUwgdGFnIHRv IHdyYXAgYXJvdW5kIHRoZSBpbWFnZSAob3IgdGhlIGxpc3QsIGlmIHVzaW5nIG11bHRpcGxl IGltYWdlcykuPC9kZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9kZD4KCTxkZD5BdmFpbGFibGUg dmFsdWVzOiBhbnkgdmFsaWQgKFgpSFRNTCBlbGVtZW50IG5hbWUuIEZvciBleGFtcGxlOiA8 Y29kZT48Yj5wPC9iPjwvY29kZT4uPC9kZD4KCTxkZD5EZWZhdWx0IHZhbHVlOiB1bnNldC48 L2RkPgoKCTxkdD48Y29kZT48Yj54aHRtbD0iPC9iPjxlbT52YWx1ZTwvZW0+PGI+IjwvYj48 L2NvZGU+PC9kdD4KCTxkZD5XaGV0aGVyIHRoZSB0YWcgb3V0cHV0cyB4aHRtbCBvciBodG1s LjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVlczog PGNvZGU+PGI+eWVzPC9iPjwvY29kZT4gb3IgPGNvZGU+PGI+bm88L2I+PC9jb2RlPi48L2Rk PgoJPGRkPkRlZmF1bHQgdmFsdWU6IDxjb2RlPjxiPnllczwvYj48L2NvZGU+LjwvZGQ+Cjwv ZGw+Cgo8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tPgoKPGgzPjxjb2RlPiZsdDt0eHA6dXBtX2FydGljbGVf aW1hZ2UgLyZndDs8L2NvZGU+PC9oMz4KCjxkbD4KCTxkdD48Y29kZT48Yj5icmVhaz0iPC9i PjxlbT52YWx1ZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5JZiB1c2luZyBtdWx0 aXBsZSBpbWFnZXMgYW5kIHRoZSB3cmFwdGFnIHBhcmFtZXRlciwgdGhlIChYKUhUTUwgdGFn IHRvIHNlcGFyYXRlCgkJaW1hZ2VzIHdpdGguPC9kZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9k ZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVzOiBhbnkgdmFsaWQgKFgpSFRNTCBlbGVtZW50IG5h bWUsIGZvciBleGFtcGxlLCA8Y29kZT48Yj5icjwvYj48L2NvZGU+LjwvZGQ+Cgk8ZGQ+RGVm YXVsdCB2YWx1ZTogdW5zZXQuPC9kZD4KCgk8ZHQ+PGNvZGU+PGI+YnJlYWtfY2xhc3M9Ijwv Yj48ZW0+dmFsdWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+SWYgdXNpbmcgbXVs dGlwbGUgaW1hZ2VzIGFuZCB0aGUgd3JhcHRhZyBwYXJhbWV0ZXIsIHRoZSAoWClIVE1ML0NT UyBjbGFzcyB0byBhcHBseSB0byB0aGUKCWJyZWFrdGFnLjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6 IE5vLjwvZGQ+Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVlczogYW55IHZhbGlkIChYKUhUTUwvQ1NT IGNsYXNzIG5hbWUuPC9kZD4KCTxkZD5EZWZhdWx0IHZhbHVlOiB1bnNldC48L2RkPgoKCTxk dD48Y29kZT48Yj5jbGFzcz0iPC9iPjxlbT5jbGFzcyBuYW1lPC9lbT48Yj4iPC9iPjwvY29k ZT48L2R0PgoJPGRkPlRoZSAoWClIVE1ML0NTUyBjbGFzcyB0byBhcHBseSB0byB0aGUgaW1h Z2Ugb3IgdGhlIGltYWdlJiM4MjE3O3Mgd3JhcHRhZy4gSWYgYSBsaXN0CgkJb2YgYXJ0aWNs ZSBpbWFnZXMsIHRoZW4gdGhlIGNsYXNzIHRvIGFwcGx5IHRvIHRoZSBsaXN0JiM4MjE3O3Mg d3JhcHRhZy48L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48L2RkPgoJPGRkPkF2YWlsYWJsZSB2 YWx1ZXM6IGFueSB2YWxpZCAoWClIVE1ML0NTUyBjbGFzcyBuYW1lLjwvZGQ+Cgk8ZGQ+RGVm YXVsdCB2YWx1ZTogdW5zZXQuPC9kZD4KCgk8ZHQ+PGNvZGU+PGI+Zm9ybT0iPC9iPjxlbT5m b3JtIG5hbWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+Q3VzdG9taXplIHRoZSBp bWFnZSBkZXRhaWxzIG91dHB1dCwgZm9yIHR5cGUgPGNvZGU+PGI+aW1hZ2U8L2I+PC9jb2Rl Pi48L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6 IGFueSBleGlzdGluZyBmb3JtJiM4MjE3O3MgbmFtZS48L2RkPgoJPGRkPkRlZmF1bHQgdmFs dWU6IHVuc2V0LjwvZGQ+CgoJPGR0Pjxjb2RlPjxiPndyYXBmb3JtPSI8L2I+PGVtPmZvcm0g bmFtZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5DdXN0b21pemUgdGhlIGFkZGl0 aW9uYWwgb3V0cHV0IGZvciBhcnRpY2xlIGltYWdlIGxpc3RzICh1c2Ugd2l0aCB1cG1faW1n X2xpc3QpLjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+Cgk8ZGQ+QXZhaWxhYmxlIHZh bHVlczogYW55IGV4aXN0aW5nIGZvcm0mIzgyMTc7cyBuYW1lLjwvZGQ+Cgk8ZGQ+RGVmYXVs dCB2YWx1ZTogdW5zZXQuPC9kZD4KCgk8ZHQ+PGNvZGU+PGI+aWQ9IjwvYj48ZW0+dmFsdWU8 L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+VGhlIChYKUhUTUwvQ1NTIGlkIHRvIGFw cGx5IHRvIHRoZSBpbWFnZS48L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48L2RkPgoJPGRkPkF2 YWlsYWJsZSB2YWx1ZXM6IGFueSB2YWxpZCAoWClIVE1ML0NTUyBpZC48L2RkPgoJPGRkPkRl ZmF1bHQgdmFsdWU6IHVuc2V0LjwvZGQ+CgoJPGR0Pjxjb2RlPjxiPmxpbWl0PSI8L2I+PGVt PnZhbHVlPC9lbT48Yj4iPC9iPjwvY29kZT48L2R0PgoJPGRkPklmIHVzaW5nIG11bHRpcGxl IGltYWdlcywgdGhlIG1heGltdW0gbnVtYmVyIG9mIGltYWdlcyB0byBzaG93LjwvZGQ+Cgk8 ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVlczogYW55IHdob2xl IG51bWJlci48L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6IDxjb2RlPjxiPjA8L2I+PC9jb2Rl Pi48L2RkPgoKCTxkdD48Y29kZT48Yj5vZmZzZXQ9IjwvYj48ZW0+aW50ZWdlcjwvZW0+PGI+ IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5JZiB1c2luZyBtdWx0aXBsZSBpbWFnZXMsIHRoZSBu dW1iZXIgb2YgaW1hZ2VzIHRvIHNraXAgKG5vdCBkaXNwbGF5KSBpbiB0aGUgbGlzdC48L2Rk PgoJPGRkPlJlcXVpcmVkOiBOby48L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6IGFueSB3 aG9sZSBudW1iZXIuPC9kZD4KCTxkZD5EZWZhdWx0IHZhbHVlOiA8Y29kZT48Yj4wPC9iPjwv Y29kZT4uPC9kZD4KCgk8ZHQ+PGNvZGU+PGI+c2hvd19hbHQ9IjwvYj48ZW0+dmFsdWU8L2Vt PjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+V2hldGhlciB0byBzaG93IHRoZSBhbHRlcm5h dGUgdGV4dCBhcyBsaXN0ZWQgaW4gdGhlIGltYWdlIHRhYi48L2RkPgoJPGRkPlJlcXVpcmVk OiBOby48L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6IDxjb2RlPjxiPnllczwvYj48L2Nv ZGU+IG9yIDxjb2RlPjxiPm5vPC9iPjwvY29kZT4uPC9kZD4KCTxkZD5EZWZhdWx0IHZhbHVl OiA8Y29kZT48Yj55ZXM8L2I+PC9jb2RlPi48L2RkPgoKCTxkdD48Y29kZT48Yj5zaG93X2hl aWdodD0iPC9iPjxlbT52YWx1ZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5XaGV0 aGVyIHRvIGluY2x1ZGUgdGhlIGltYWdlIGhlaWdodCBpbiB0aGUgaW1hZ2UgdGFnIHJldHVy bmVkLjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVl czogPGNvZGU+PGI+eWVzPC9iPjwvY29kZT4gb3IgPGNvZGU+PGI+bm88L2I+PC9jb2RlPi48 L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6IDxjb2RlPjxiPnllczwvYj48L2NvZGU+LjwvZGQ+ CgoJPGR0Pjxjb2RlPjxiPnNob3dfdGl0bGU9IjwvYj48ZW0+dmFsdWU8L2VtPjxiPiI8L2I+ PC9jb2RlPjwvZHQ+Cgk8ZGQ+V2hldGhlciB0byBzaG93IHRoZSBjYXB0aW9uLCBhcyBsaXN0 ZWQgaW4gdGhlIGltYWdlIHRhYiwgYXMgdGhlIGltYWdlJiM4MjE3O3MgKFgpSFRNTCB0aXRs ZSBhdHRyaWJ1dGUuPC9kZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9kZD4KCTxkZD5BdmFpbGFi bGUgdmFsdWVzOiA8Y29kZT48Yj55ZXM8L2I+PC9jb2RlPiBvciA8Y29kZT48Yj5ubzwvYj48 L2NvZGU+LjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogPGNvZGU+PGI+eWVzPC9iPjwvY29k ZT4uPC9kZD4KCgk8ZHQ+PGNvZGU+PGI+c2hvd193aWR0aD0iPC9iPjxlbT52YWx1ZTwvZW0+ PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5XaGV0aGVyIHRvIGluY2x1ZGUgdGhlIGltYWdl IHdpZHRoIGluIHRoZSBpbWFnZSB0YWcgcmV0dXJuZWQuPC9kZD4KCTxkZD5SZXF1aXJlZDog Tm8uPC9kZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVzOiA8Y29kZT48Yj55ZXM8L2I+PC9jb2Rl PiBvciA8Y29kZT48Yj5ubzwvYj48L2NvZGU+LjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTog PGNvZGU+PGI+eWVzPC9iPjwvY29kZT4uPC9kZD4KCgk8ZHQ+PGNvZGU+PGI+dHlwZT0iPC9i PjxlbT5pbWFnZSB0eXBlPC9lbT48Yj4iPC9iPjwvY29kZT48L2R0PgoJPGRkPlRoZSBraW5k IG9mIGltYWdlIHRvIGRpc3BsYXkuPC9kZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9kZD4KCTxk ZD5BdmFpbGFibGUgdmFsdWVzOiA8Y29kZT48Yj5pbWFnZTwvYj48L2NvZGU+LAoJPGNvZGU+ PGI+dGh1bWJuYWlsPC9iPjwvY29kZT4sIGFuZCA8Y29kZT48Yj5wb3B1cDwvYj48L2NvZGU+ LjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogPGNvZGU+PGI+aW1hZ2U8L2I+PC9jb2RlPi48 L2RkPgoKCTxkdD48Y29kZT48Yj51cmw9IjwvYj48ZW0+d2VicGFnZSB1cmw8L2VtPjxiPiI8 L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+V2Vic2l0ZSB1cmwsIG9yIGFydGljbGUgaWQjLCB0byBt YWtlIHRoZSBpbWFnZSBsaW5rIHRvLjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+Cgk8 ZGQ+QXZhaWxhYmxlIHZhbHVlczogdXJsIGFkZHJlc3Mgb3IgYXJ0aWNsZSBpZCMuPC9kZD4K CTxkZD5EZWZhdWx0IHZhbHVlOiB1bnNldC48L2RkPgoKCTxkdD48Y29kZT48Yj53cmFwdGFn PSI8L2I+PGVtPnZhbHVlPC9lbT48Yj4iPC9iPjwvY29kZT48L2R0PgoJPGRkPlRoZSAoWClI VE1MIHRhZyB0byB3cmFwIGFyb3VuZCB0aGUgaW1hZ2UgKG9yIHRoZSBsaXN0LCBpZiB1c2lu ZyBtdWx0aXBsZSBpbWFnZXMpLjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+Cgk8ZGQ+ QXZhaWxhYmxlIHZhbHVlczogYW55IHZhbGlkIChYKUhUTUwgZWxlbWVudCBuYW1lLCBmb3Ig ZXhhbXBsZSwgPGNvZGU+PGI+cDwvYj48L2NvZGU+LjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1 ZTogdW5zZXQuPC9kZD4KCgk8ZHQ+PGNvZGU+PGI+eGh0bWw9IjwvYj48ZW0+dmFsdWU8L2Vt PjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+V2hldGhlciB0aGUgdGFnIG91dHB1dHMgWEhU TUwgb3IgSFRNTC48L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48L2RkPgoJPGRkPkF2YWlsYWJs ZSB2YWx1ZXM6IDxjb2RlPjxiPnllczwvYj48L2NvZGU+IG9yIDxjb2RlPjxiPm5vPC9iPjwv Y29kZT4uPC9kZD4KCTxkZD5EZWZhdWx0IHZhbHVlOiA8Y29kZT48Yj55ZXM8L2I+PC9jb2Rl Pi48L2RkPgo8L2RsPgoKPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4KCjxoMz48Y29kZT4mbHQ7dHhwOnVw bV9pZl9hcnRpY2xlX2ltYWdlIC8mZ3Q7PC9jb2RlPjwvaDM+Cgo8dWw+Cgk8bGk+RGV0ZXJt aW5lIHdoZXRoZXIgYW4gYXJ0aWNsZSBpbWFnZSBoYXMgYmVlbiBkZWZpbmVkLjwvbGk+Cgk8 bGk+Q29uZGl0aW9uYWwgd3JhcHBpbmcgdGFnLCBubyBhdHRyaWJ1dGVzLjwvbGk+CjwvdWw+ CgoKPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLT4KCjxoMz48Y29kZT4mbHQ7dHhwOnVwbV9pZl9hcnRpY2xl X2ltYWdlX2xpc3QgLyZndDs8L2NvZGU+PC9oMz4KCjx1bD4KCTxsaT5EZXRlcm1pbmUgd2hl dGhlciBtdWx0aXBsZSBhcnRpY2xlIGltYWdlcyBoYXZlIGJlZW4gZGVmaW5lZC48L2xpPgoJ PGxpPkNvbmRpdGlvbmFsIHdyYXBwaW5nIHRhZywgbm8gYXR0cmlidXRlcy48L2xpPgo8L3Vs PgoKCjxwPjxhIGhyZWY9IiNzdGFydCIgdGl0bGU9Ikp1bXAgYmFjayBjb250ZW50cyBsaXN0 Ij4mIzg2MTc7PC9hPjwvcD4KCgoKPGgyIGlkPSJjdXN0b20tc2VjdGlvbiI+Q3VzdG9taXpp bmcgT3V0cHV0PC9oMj4KCjxwPlN1cHBseSB0aGUgaW1hZ2UgaWQgb3IgbmFtZSwgYW5kIHRo ZSBmb3JtIHRvIGJlIHVzZWQuIEFsdGVybmF0ZWx5IHlvdSBtYXkgdXNlIHRoZSB0YWdzIGFz CmNvbnRhaW5pbmcgb3Igd3JhcHBpbmcgdGFncy4gRm9yIGV4YW1wbGU6PC9wPgoKPHA+PGNv ZGU+Jmx0O3R4cDp1cG1faW1hZ2UgdHlwZT0iaW1hZ2UiJmd0OyZsdDt0eHA6dXBtX2ltZ19j YXB0aW9uIC8mZ3Q7Jmx0Oy90eHA6dXBtX2ltYWdlJmd0OzwvY29kZT48L3A+Cgo8cD5UaGUg dGFncyBhdmFpbGFibGUgdG8geW91IGZyb20gd2l0aGluIGEgZm9ybS93cmFwcGluZyB0YWcg YXJlIGZhaXJseSBzZWxmLWV4cGxhbmF0b3J5LjwvcD4KCjwhLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+Cgo8 aDM+PGNvZGU+Jmx0O3R4cDp1cG1faW1nX2FsdCAvJmd0OzwvY29kZT48L2gzPgoKPHA+RGVz Y3JpcHRpb246IGltYWdlIGFsdGVybmF0ZSB0ZXh0LjwvcD4KCjxkbD4KCTxkdD48Y29kZT48 Yj5lc2NhcGU9IjwvYj48ZW0+dmFsdWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+ V2hldGhlciB0byBlc2NhcGUgdGhlIHJlc3VsdCB0byBvdXRwdXQgdmFsaWQgbWFya3VwLjwv ZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVlczogPGNv ZGU+PGI+aHRtbDwvYj48L2NvZGU+IG9yIHVuc2V0LjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1 ZTogdW5zZXQuPC9kZD4KPC9kbD4KCjwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+Cgo8aDM+PGNvZGU+Jmx0 O3R4cDp1cG1faW1nX2NhcHRpb24gLyZndDs8L2NvZGU+PC9oMz4KCjxwPkRlc2NyaXB0aW9u OiBpbWFnZSBjYXB0aW9uLjwvcD4KCjxkbD4KCTxkdD48Y29kZT48Yj5jbGFzcz0iPC9iPjxl bT52YWx1ZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5UaGUgKFgpSFRNTC9DU1Mg Y2xhc3MgdG8gYXBwbHkgdG8gdGhlIHdyYXB0YWcuPC9kZD4KCTxkZD5SZXF1aXJlZDogTm8u PC9kZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVzOiBhbnkgdmFsaWQgQ1NTIGNsYXNzIG5hbWUg b3IgdW5zZXQuPC9kZD4KCTxkZD5EZWZhdWx0IHZhbHVlOiB1bnNldC48L2RkPgoKCTxkdD48 Y29kZT48Yj5lc2NhcGU9IjwvYj48ZW0+dmFsdWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+ Cgk8ZGQ+V2hldGhlciB0byBlc2NhcGUgdGhlIHJlc3VsdCB0byBvdXRwdXQgdmFsaWQgbWFy a3VwLjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVl czogPGNvZGU+PGI+aHRtbDwvYj48L2NvZGU+IG9yIHVuc2V0LjwvZGQ+Cgk8ZGQ+RGVmYXVs dCB2YWx1ZTogdW5zZXQuPC9kZD4KCgk8ZHQ+PGNvZGU+PGI+bGFiZWw9IjwvYj48ZW0+dmFs dWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+VGhpcyBzdHJpbmcgd2lsbCBiZSBw cmVwZW5kZWQgdG8gdGhlIGNhcHRpb24uPC9kZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9kZD4K CTxkZD5BdmFpbGFibGUgdmFsdWVzOiBhbnkgdGV4dCBvciB1bnNldC48L2RkPgoJPGRkPkRl ZmF1bHQgdmFsdWU6IHVuc2V0LjwvZGQ+CgoJPGR0Pjxjb2RlPjxiPmxhYmVsdGFnPSI8L2I+ PGVtPnZhbHVlPC9lbT48Yj4iPC9iPjwvY29kZT48L2R0PgoJPGRkPlRoZSAoWClIVE1MIHRh ZyB0byBlbmNsb3NlIHRoZSBsYWJlbC48L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48L2RkPgoJ PGRkPkF2YWlsYWJsZSB2YWx1ZXM6IGFueSB2YWxpZCAoWClIVE1MIHRhZyBvciB1bnNldC48 L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6IHVuc2V0LjwvZGQ+CgoJPGR0Pjxjb2RlPjxiPndy YXB0YWc9IjwvYj48ZW0+dmFsdWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+VGhl IChYKUhUTUwgdGFnIHRvIGVuY2xvc2UgdGhlIGNhcHRpb24uPC9kZD4KCTxkZD5SZXF1aXJl ZDogTm8uPC9kZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVzOiBhbnkgdmFsaWQgKFgpSFRNTCB0 YWcgb3IgdW5zZXQuPC9kZD4KCTxkZD5EZWZhdWx0IHZhbHVlOiB1bnNldC48L2RkPgo8L2Rs PgoKPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLT4KCjxoMz48Y29kZT4mbHQ7dHhwOnVwbV9pbWdfY2F0ZWdv cnkgLyZndDs8L2NvZGU+PC9oMz4KCjxwPkRlc2NyaXB0aW9uOiB0aGUgY2F0ZWdvcnkgdGhl IGltYWdlIGJlbG9uZ3MgdG8uPC9wPgoKPGRsPgoJPGR0Pjxjb2RlPjxiPmNsYXNzPSI8L2I+ PGVtPnZhbHVlPC9lbT48Yj4iPC9iPjwvY29kZT48L2R0PgoJPGRkPlRoZSAoWClIVE1ML0NT UyBjbGFzcyB0byBhcHBseSB0byB0aGUgd3JhcHRhZy48L2RkPgoJPGRkPlJlcXVpcmVkOiBO by48L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6IGFueSB2YWxpZCBDU1MgY2xhc3MgbmFt ZSBvciB1bnNldC48L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6IHVuc2V0LjwvZGQ+CgoJPGR0 Pjxjb2RlPjxiPmxhYmVsPSI8L2I+PGVtPnZhbHVlPC9lbT48Yj4iPC9iPjwvY29kZT48L2R0 PgoJPGRkPlRoaXMgc3RyaW5nIHdpbGwgYmUgcHJlcGVuZGVkIHRvIHRoZSBjYXB0aW9uLjwv ZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVlczogYW55 IHRleHQgb3IgdW5zZXQuPC9kZD4KCTxkZD5EZWZhdWx0IHZhbHVlOiB1bnNldC48L2RkPgoK CTxkdD48Y29kZT48Yj5sYWJlbHRhZz0iPC9iPjxlbT52YWx1ZTwvZW0+PGI+IjwvYj48L2Nv ZGU+PC9kdD4KCTxkZD5UaGUgKFgpSFRNTCB0YWcgdG8gZW5jbG9zZSB0aGUgbGFiZWwuPC9k ZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9kZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVzOiBhbnkg dmFsaWQgKFgpSFRNTCB0YWcgb3IgdW5zZXQuPC9kZD4KCTxkZD5EZWZhdWx0IHZhbHVlOiB1 bnNldC48L2RkPgoKCTxkdD48Y29kZT48Yj50aXRsZT0iPC9iPjxlbT52YWx1ZTwvZW0+PGI+ IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5UaGUgKFgpSFRNTCB0YWcgdG8gZW5jbG9zZSB0aGUg bGFiZWwuPC9kZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9kZD4KCTxkZD5BdmFpbGFibGUgdmFs dWVzOiA8Y29kZT48Yj4wPC9iPjwvY29kZT4gKHplcm8vb2ZmKSBvciA8Y29kZT48Yj4xPC9i PjwvY29kZT4gKG9uZS9vbikuPC9kZD4KCTxkZD5EZWZhdWx0IHZhbHVlOiA8Y29kZT48Yj4w PC9iPjwvY29kZT4uPC9kZD4KCgk8ZHQ+PGNvZGU+PGI+d3JhcHRhZz0iPC9iPjxlbT52YWx1 ZTwvZW0+PGI+IjwvYj48L2NvZGU+PC9kdD4KCTxkZD5UaGUgKFgpSFRNTCB0YWcgdG8gZW5j bG9zZSB0aGUgY2FwdGlvbi48L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48L2RkPgoJPGRkPkF2 YWlsYWJsZSB2YWx1ZXM6IGFueSB2YWxpZCAoWClIVE1MIHRhZyBvciB1bnNldC48L2RkPgoJ PGRkPkRlZmF1bHQgdmFsdWU6IHVuc2V0LjwvZGQ+CjwvZGw+Cgo8IS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t PgoKPGgzPjxjb2RlPiZsdDt0eHA6dXBtX2ltZ19kYXRlIC8mZ3Q7PC9jb2RlPjwvaDM+Cgo8 cD5EZXNjcmlwdGlvbjogdGhlIGRhdGUgdGhlIGltYWdlIHdhcyB1cGxvYWRlZC48L3A+Cgo8 ZGw+Cgk8ZHQ+PGNvZGU+PGI+Zm9ybWF0PSI8L2I+PGVtPnZhbHVlPC9lbT48Yj4iPC9iPjwv Y29kZT48L2R0PgoJPGRkPjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+Cgk8ZGQ+QXZh aWxhYmxlIHZhbHVlczogYW55IHZhbGlkIDxhIGhyZWY9Imh0dHA6Ly9waHAubmV0L3N0cmZ0 aW1lIj5zdHJmdGltZSgpPC9hPiBzdHJpbmcgb3IgPGNvZGU+PGI+c2luY2U8L2I+PC9jb2Rl Pi48L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6IHVuc2V0ICh1c2UgIkRhdGUgZm9ybWF0IiBw cmVmZXJlbmNlKS48L2RkPgoKCTxkdD48Y29kZT48Yj5nbXQ9IjwvYj48ZW0+dmFsdWU8L2Vt PjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+V2hldGhlciB0byBmb3JtYXQgZGF0ZXRpbWUg YWNjb3JkaW5nIEdNVCB0aW1lLjwvZGQ+Cgk8ZGQ+UmVxdWlyZWQ6IE5vLjwvZGQ+Cgk8ZGQ+ QXZhaWxhYmxlIHZhbHVlczogPGNvZGU+PGI+MDwvYj48L2NvZGU+IChubywgdXNlICJUaW1l IFpvbmUiIHByZWZlcmVuY2UpIG9yIDxjb2RlPjxiPjE8L2I+PC9jb2RlPiAoeWVzKS48L2Rk PgoJPGRkPkRlZmF1bHQgdmFsdWU6IDxjb2RlPjxiPjA8L2I+PC9jb2RlPiAobm8pPC9kZD4K Cgk8ZHQ+PGNvZGU+PGI+bGFuZz0iPC9iPjxlbT52YWx1ZTwvZW0+PGI+IjwvYj48L2NvZGU+ PC9kdD4KCTxkZD5Gb3JtYXQgdGltZSBzdHJpbmcgYWNjb3JkaW5nIHRvIHNwZWNpZmllZCBs YW5ndWFnZSBsb2NhbGUuPC9kZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9kZD4KCTxkZD5BdmFp bGFibGUgdmFsdWVzOiBhbnkgdmFsaWQgPC9kZD4KCTxkZD5EZWZhdWx0IHZhbHVlOiB1bnNl dCAodXNlICJMYW5ndWFnZSIgbG9jYWxlIHByZWZlcmVuY2UpLjwvZGQ+CjwvZGw+Cgo8IS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tPgoKPGgzPjxjb2RlPiZsdDt0eHA6dXBtX2ltZ19mdWxsX2hlaWdodCAv Jmd0OzwvY29kZT48L2gzPgoKPHA+RGVzY3JpcHRpb246IGZ1bGwtc2l6ZSBpbWFnZSBoZWln aHQuPC9wPgoKPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4KCjxoMz48Y29kZT4mbHQ7dHhwOnVwbV9pbWdf ZnVsbF91cmwgLyZndDs8L2NvZGU+PC9oMz4KCjxwPkRlc2NyaXB0aW9uOiBmdWxsLXNpemUg aW1hZ2UgdXJsLjwvcD4KCjwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+Cgo8aDM+PGNvZGU+Jmx0O3R4cDp1 cG1faW1nX2Z1bGxfd2lkdGggLyZndDs8L2NvZGU+PC9oMz4KCjxwPkRlc2NyaXB0aW9uOiBm dWxsLXNpemUgaW1hZ2Ugd2lkdGguPC9wPgoKPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4KCjxoMz48Y29k ZT4mbHQ7dHhwOnVwbV9pbWdfaHJlZiAvJmd0OzwvY29kZT48L2gzPgoKPHA+RGVzY3JpcHRp b246IHdlYnNpdGUgdXJsIHRvIG1ha2UgdGhlIGltYWdlIGxpbmsgdG8sIGFzIHBhc3NlZCBi eSB0aGUgdXJsIHBhcmFtZXRlci48L3A+Cgo8cD5JZiB1c2VkIGFzIGEgd3JhcHBpbmcgdGFn LCBpdCB3aWxsIHR1cm4gd2hhdGV2ZXIgaXQgc3Vycm91bmRzIGludG8gYSBsaW5rLjwvcD4K CjxkbD4KCTxkdD48Y29kZT48Yj5jbGFzcz0iPC9iPjxlbT52YWx1ZTwvZW0+PGI+IjwvYj48 L2NvZGU+PC9kdD4KCTxkZD5UaGUgKFgpSFRNTC9DU1MgY2xhc3MgdG8gYXBwbHkgdG8gdGhl IHdyYXB0YWcuPC9kZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9kZD4KCTxkZD5BdmFpbGFibGUg dmFsdWVzOiBhbnkgdmFsaWQgQ1NTIGNsYXNzIG5hbWUgb3IgdW5zZXQuPC9kZD4KCTxkZD5E ZWZhdWx0IHZhbHVlOiB1bnNldC48L2RkPgoKCTxkdD48Y29kZT48Yj5lc2NhcGU9IjwvYj48 ZW0+dmFsdWU8L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+V2hldGhlciB0byBlc2Nh cGUgdGhlIHJlc3VsdCB0byBvdXRwdXQgdmFsaWQgbWFya3VwLjwvZGQ+Cgk8ZGQ+UmVxdWly ZWQ6IE5vLjwvZGQ+Cgk8ZGQ+QXZhaWxhYmxlIHZhbHVlczogPGNvZGU+PGI+aHRtbDwvYj48 L2NvZGU+IG9yIHVuc2V0LjwvZGQ+Cgk8ZGQ+RGVmYXVsdCB2YWx1ZTogdW5zZXQuPC9kZD4K Cgk8ZHQ+PGNvZGU+PGI+bGFiZWw9IjwvYj48ZW0+dmFsdWU8L2VtPjxiPiI8L2I+PC9jb2Rl PjwvZHQ+Cgk8ZGQ+VGhpcyBzdHJpbmcgd2lsbCBiZSBwcmVwZW5kZWQgdG8gdGhlIGNhcHRp b24uPC9kZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9kZD4KCTxkZD5BdmFpbGFibGUgdmFsdWVz OiBhbnkgdGV4dCBvciB1bnNldC48L2RkPgoJPGRkPkRlZmF1bHQgdmFsdWU6IHVuc2V0Ljwv ZGQ+CgoJPGR0Pjxjb2RlPjxiPmxhYmVsdGFnPSI8L2I+PGVtPnZhbHVlPC9lbT48Yj4iPC9i PjwvY29kZT48L2R0PgoJPGRkPlRoZSAoWClIVE1MIHRhZyB0byBlbmNsb3NlIHRoZSBsYWJl bC48L2RkPgoJPGRkPlJlcXVpcmVkOiBOby48L2RkPgoJPGRkPkF2YWlsYWJsZSB2YWx1ZXM6 IGFueSB2YWxpZCAoWClIVE1MIHRhZyBvciB1bnNldC48L2RkPgoJPGRkPkRlZmF1bHQgdmFs dWU6IHVuc2V0LjwvZGQ+CgoJPGR0Pjxjb2RlPjxiPndyYXB0YWc9IjwvYj48ZW0+dmFsdWU8 L2VtPjxiPiI8L2I+PC9jb2RlPjwvZHQ+Cgk8ZGQ+VGhlIChYKUhUTUwgdGFnIHRvIGVuY2xv c2UgdGhlIGNhcHRpb24uPC9kZD4KCTxkZD5SZXF1aXJlZDogTm8uPC9kZD4KCTxkZD5BdmFp bGFibGUgdmFsdWVzOiBhbnkgdmFsaWQgKFgpSFRNTCB0YWcgb3IgdW5zZXQuPC9kZD4KCTxk ZD5EZWZhdWx0IHZhbHVlOiB1bnNldC48L2RkPgo8L2RsPgoKPCEtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4K CjxoMz48Y29kZT4mbHQ7dHhwOnVwbV9pbWdfaWQgLyZndDs8L2NvZGU+PC9oMz4KCjxwPkRl c2NyaXB0aW9uOiBpbWFnZSBpZCBudW1iZXIuPC9wPgoKPCEtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4KCjxo Mz48Y29kZT4mbHQ7dHhwOnVwbV9pbWdfbGlzdCAvJmd0OzwvY29kZT48L2gzPgoKPHA+RGVz Y3JpcHRpb246IGFydGljbGUgaW1hZ2UgbGlzdC4gPHN0cm9uZz5Pbmx5IGF2YWlsYWJsZSB0 bwoJPGNvZGU+Jmx0O3R4cDp1cG1fYXJ0aWNsZV9pbWFnZSAvJmd0OzwvY29kZT4mIzgyMTc7 cyA8Y29kZT53cmFwZm9ybTwvY29kZT48L3N0cm9uZz4uPC9wPgoKPCEtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LT4KCjxoMz48Y29kZT4mbHQ7dHhwOnVwbV9pbWdfbmFtZSAvJmd0OzwvY29kZT48L2gzPgoK PHA+RGVzY3JpcHRpb246IGltYWdlIG5hbWUuPC9wPgoKPCEtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4KCjxo Mz48Y29kZT4mbHQ7dHhwOnVwbV9pbWdfdGh1bWJfaGVpZ2h0IC8mZ3Q7PC9jb2RlPjwvaDM+ Cgo8cD5EZXNjcmlwdGlvbjogdGh1bWJuYWlsIGltYWdlIGhlaWdodC48L3A+Cgo8IS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tPgoKPGgzPjxjb2RlPiZsdDt0eHA6dXBtX2ltZ190aHVtYl91cmwgLyZndDs8 L2NvZGU+PC9oMz4KCjxwPkRlc2NyaXB0aW9uOiB0aHVtYm5haWwgaW1hZ2UgdXJsLjwvcD4K CjwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0+Cgo8aDM+PGNvZGU+Jmx0O3R4cDp1cG1faW1nX3RodW1iX3dp ZHRoIC8mZ3Q7PC9jb2RlPjwvaDM+Cgo8cD5EZXNjcmlwdGlvbjogdGh1bWJuYWlsIGltYWdl IHdpZHRoLjwvcD4KCjwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+Cgo8cD48YSBocmVmPSIjc3RhcnQiIHRp dGxlPSJKdW1wIGJhY2sgY29udGVudHMgbGlzdCI+JiM4NjE3OzwvYT48L3A+CgoKCjxoMiBp ZD0iY3JlZGl0LXNlY3Rpb24iPkNyZWRpdCBhbmQgRGV2ZWxvcGVyIE5vdGVzPC9oMj4KCjxw PlRoZSBjb2RlIGZyb20gdGhpcyBwbHVnaW4gaXMgbm90IGVudGlyZWx5ICYjODIyMDtmcm9t IHNjcmF0Y2gmIzgyMjE7OiBJIG1hZGUgdXNlIG9mIGNvZGUKYWxyZWFkeSBleGlzdGluZyBp biBUZXh0cGF0dGVybi4gVGhpcyBtYWRlIGl0IGEgbG90IGVhc2llciBmb3IgbWUgdG8gY3Jl YXRlIHdoYXQgSSBob3BlIGlzCmEgbmVhci1zZWFtbGVzcyBwbHVnaW4uIEkgZG9uJiM4MjE3 O3Qga25vdyBmb3IgY2VydGFpbiB3aG9tIHdyb3RlIHRoZSBwYXJ0cyBJIHVzZWQsCnRob3Vn aCBJIHN1c3BlY3QgaXQgaXMgbGFyZ2VseSA8YSBocmVmPSJodHRwOi8vdGV4dGlzbS5jb20v Ij5EZWFuPC9hPidzIHdvcmsuPC9wPgoKPHA+UGFydCBvZiB0aGUgbXVsdGlwbGUgYXJ0aWNs ZSBpbWFnZXMgc3VwcG9ydCB3YXMgb3JpZ2luYWxseSBib3Jyb3dlZCBmcm9tCjxhIGhyZWY9 Imh0dHA6Ly90aHJlc2hvbGRzdGF0ZS5jb20vc29mdHdhcmUvMzY5OS96ZW1fYXJ0aWNsZV9p bWFnZSI+emVtX2FydGljbGVfaW1hZ2U8L2E+LjwvcD4iO3M6MTU6ImFsbG93X2h0bWxfaGVs cCI7aToxO3M6MzoibWQ1IjtzOjMyOiI3YTlkOWM1MjRjNzI0MjQ1NzM5ODlhYWRhMmNlZmYz YSI7fQ==