<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>35697</bug_id>
          
          <creation_ts>2010-03-03 13:02:01 -0800</creation_ts>
          <short_desc>[V8] Clean up CodeGeneratorV8.pm</short_desc>
          <delta_ts>2010-03-05 10:07:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nate Chapin">japhet</reporter>
          <assigned_to name="Nate Chapin">japhet</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>195722</commentid>
    <comment_count>0</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-03-03 13:02:01 -0800</bug_when>
    <thetext>To start with:
1. Remove some of the unused subroutines
2. Make GetInternalFields less hard-coded (though it will still need some special cases).
3. Make the generated code (mostly) match the WebKit style guide.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195725</commentid>
    <comment_count>1</comment_count>
      <attachid>49936</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-03-03 13:07:14 -0800</bug_when>
    <thetext>Created attachment 49936
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196256</commentid>
    <comment_count>2</comment_count>
      <attachid>49936</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-03-04 16:09:58 -0800</bug_when>
    <thetext>Comment on attachment 49936
patch

why do you keep removing code? what has it done to you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196531</commentid>
    <comment_count>3</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-03-05 10:07:19 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/55586</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49936</attachid>
            <date>2010-03-03 13:07:14 -0800</date>
            <delta_ts>2010-03-04 16:09:57 -0800</delta_ts>
            <desc>patch</desc>
            <filename>generator.txt</filename>
            <type>text/plain</type>
            <size>58250</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NTQ3MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTAtMDMtMDMgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBb
VjhdIEdpdmUgQ29kZUdlbmVyYXRvclY4LnBtIGEgbXVjaC1uZWVkZWQgc3ByaW5nIGNsZWFuaW5n
LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTY5
NworCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06IFJlbW92
ZSB1bnVzZWQgY29kZSwgZml4IHN0eWxlIGlzc3VlcywgbWFrZSBsZXNzIGhhcmQtY29kZWQuCisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OnJlbW92ZUV2ZW50TGlzdGVuZXJDYWxsYmFjayk6
CisKIDIwMTAtMDMtMDMgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCShyZXZpc2lvbiA1NTQ3MSkKKysrIFdl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0JKHdvcmtpbmcgY29weSkK
QEAgLTg0LDExICs4NCw2IEBACiAgICAgJG9iamVjdC0+V3JpdGVEYXRhKCk7CiB9CiAKLXN1YiBs
ZWZ0U2hpZnQoJCQpIHsKLSAgICBteSAoJHZhbHVlLCAkZGlzdGFuY2UpID0gQF87Ci0gICAgcmV0
dXJuICgoJHZhbHVlIDw8ICRkaXN0YW5jZSkgJiAweEZGRkZGRkZGKTsKLX0KLQogIyBXb3JrYXJv
dW5kIGZvciBWOCBiaW5kaW5ncyBkaWZmZXJlbmNlIHdoZXJlIFJHQkNvbG9yIGlzIG5vdCBhIFBP
RCB0eXBlLgogc3ViIElzUG9kVHlwZQogewpAQCAtMTI2LDEzICsxMjEsNiBAQAogICAgICRtb2R1
bGUgPSAkZGF0YU5vZGUtPm1vZHVsZTsKIH0KIAotc3ViIEdldExlZ2FjeUhlYWRlckluY2x1ZGVz
Ci17Ci0gICAgbXkgJGxlZ2FjeVBhcmVudCA9IHNoaWZ0OwotCi0gICAgZGllICJEb24ndCBrbm93
IHdoYXQgaGVhZGVycyB0byBpbmNsdWRlIGZvciBtb2R1bGUgJG1vZHVsZSI7Ci19Ci0KIHN1YiBB
dm9pZEluY2x1c2lvbk9mVHlwZQogewogICAgIG15ICR0eXBlID0gc2hpZnQ7CkBAIC0xNDIsMTQg
KzEzMCw2IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLXN1YiBVc2VzTWFudWFsVG9KU0ltcGxlbWVu
dGF0aW9uCi17Ci0gICAgbXkgJHR5cGUgPSBzaGlmdDsKLQotICAgIHJldHVybiAxIGlmICR0eXBl
IGVxICJTVkdQYXRoU2VnIjsKLSAgICByZXR1cm4gMDsKLX0KLQogc3ViIEFkZEluY2x1ZGVzRm9y
VHlwZQogewogICAgIG15ICR0eXBlID0gJGNvZGVHZW5lcmF0b3ItPlN0cmlwTW9kdWxlKHNoaWZ0
KTsKQEAgLTIwMywxNCArMTgzLDYgQEAKICAgICAkaW1wbEluY2x1ZGVzeyJTVkdBbmltYXRlZFRl
bXBsYXRlLmgifSA9IDE7CiB9CiAKLXN1YiBBZGRDbGFzc0ZvcndhcmRJZk5lZWRlZAotewotICAg
IG15ICRpbXBsQ2xhc3NOYW1lID0gc2hpZnQ7Ci0KLSAgICAjIFNWR0FuaW1hdGVkTGVuZ3RoL051
bWJlci9ldGMuLiBhcmUgdHlwZWRlZnMgdG8gU1ZHQW5pbXRhdGVkVGVtcGxhdGUsIHNvIGRvbid0
IHVzZSBjbGFzcyBmb3J3YXJkcyBmb3IgdGhlbSEKLSAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
Y2xhc3MgJGltcGxDbGFzc05hbWU7XG5cbiIpIHVubGVzcyAkY29kZUdlbmVyYXRvci0+SXNTVkdB
bmltYXRlZFR5cGUoJGltcGxDbGFzc05hbWUpOwotfQotCiAjIElmIHRoZSBub2RlIGhhcyBhIFtD
b25kaXRpb25hbD1YWFhdIGF0dHJpYnV0ZSwgcmV0dXJucyBhbiAiRU5BQkxFKFhYWCkiIHN0cmlu
ZyBmb3IgdXNlIGluIGFuICNpZi4KIHN1YiBHZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nCiB7CkBA
IC0yNjksMTcgKzI0MSwxNyBAQAogICAgIG15ICRmb3JjZU5ld09iamVjdFBhcmFtZXRlciA9IElz
RE9NTm9kZVR5cGUoJGludGVyZmFjZU5hbWUpID8gIiwgYm9vbCBmb3JjZU5ld09iamVjdCA9IGZh
bHNlIiA6ICIiOwogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKIAotIHB1YmxpYzoK
LSAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlKTsK
LSAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRSYXdUZW1w
bGF0ZSgpOwotICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdl
dFRlbXBsYXRlKCk7Ci0gIHN0YXRpYyAke25hdGl2ZVR5cGV9KiB0b05hdGl2ZSh2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+KTsKLSAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcCgke25h
dGl2ZVR5cGV9KiR7Zm9yY2VOZXdPYmplY3RQYXJhbWV0ZXJ9KTsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUpOworICAgIHN0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0UmF3VGVtcGxhdGUo
KTsKKyAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRl
bXBsYXRlKCk7CisgICAgc3RhdGljICR7bmF0aXZlVHlwZX0qIHRvTmF0aXZlKHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4pOworICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoJHtu
YXRpdmVUeXBlfSoke2ZvcmNlTmV3T2JqZWN0UGFyYW1ldGVyfSk7CiBFTkQKIAogICAgIGlmICgk
aW1wbENsYXNzTmFtZSBlcSAiRE9NV2luZG93IikgewogICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgPDxFTkQpOwotICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdFRlbXBsYXRlPiBH
ZXRTaGFkb3dPYmplY3RUZW1wbGF0ZSgpOworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6
T2JqZWN0VGVtcGxhdGU+IEdldFNoYWRvd09iamVjdFRlbXBsYXRlKCk7CiBFTkQKICAgICB9CiAK
QEAgLTI5MSw3ICsyNjMsNyBAQAogICAgICAgICAjIEZJWE1FOiBXZSBzaG91bGQgb25seSBiZSBn
ZW5lcmF0aW5nIGNhbGxiYWNrIGRlY2xhcmF0aW9ucyBmb3IgZnVuY3Rpb25zIGxhYmVsZWQgW0N1
c3RvbV0gb3IgW1Y4Q3VzdG9tXSwKICAgICAgICAgIyBidXQgd2UgY2FuJ3QgZG8gdGhhdCBkdWUg
dG8gc29tZSBtaXNsYWJlbGVkIGZ1bmN0aW9ucyBpbiB0aGUgaWRsJ3MgKGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzA2NikuCiAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsIDw8RU5EKTsKLSAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke25hbWV9Q2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYpOworICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gJHtuYW1lfUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKIEVORAogICAgICAg
ICBpZiAoJGF0dHJFeHQtPnsiRW5hYmxlZEF0UnVudGltZSJ9KSB7CiAgICAgICAgICAgICBwdXNo
KEBlbmFibGVkQXRSdW50aW1lLCAkZnVuY3Rpb24pOwpAQCAtMzAwLDcgKzI3Miw3IEBACiAKICAg
ICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ29uc3RydWN0b3Ii
fSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYW5CZUNvbnN0cnVjdGVkIn0p
IHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwotICBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncyk7CisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RvckNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpOwogRU5ECiAgICAgfQogCkBAIC0zMTAsMTMg
KzI4MiwxMyBAQAogICAgICAgICBpZiAoJGF0dHJFeHQtPnsiVjhDdXN0b21HZXR0ZXIifSB8fCAk
YXR0ckV4dC0+eyJDdXN0b21HZXR0ZXIifQogICAgICAgICAgICAgfHwgJGF0dHJFeHQtPnsiVjhD
dXN0b20ifSB8fCAkYXR0ckV4dC0+eyJDdXN0b20ifSkgewogICAgICAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgPDxFTkQpOwotICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+ICR7bmFt
ZX1BY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbyk7CisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke25h
bWV9QWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pOwogRU5ECiAgICAgICAgIH0KICAgICAgICAgaWYgKCRhdHRyRXh0
LT57IlY4Q3VzdG9tU2V0dGVyIn0gfHwgJGF0dHJFeHQtPnsiQ3VzdG9tU2V0dGVyIn0KICAgICAg
ICAgICAgIHx8ICRhdHRyRXh0LT57IlY4Q3VzdG9tIn0gfHwgJGF0dHJFeHQtPnsiQ3VzdG9tIn0p
IHsKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKLSAgc3RhdGljIHZv
aWQgJHtuYW1lfUFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6
TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbyk7Cisg
ICAgc3RhdGljIHZvaWQgJHtuYW1lfUFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbyk7CiBFTkQKICAgICAgICAgfQogICAgICAgICBpZiAoJGF0dHJFeHQtPnsiRW5hYmxl
ZEF0UnVudGltZSJ9KSB7CkBAIC0zMzAsMTkgKzMwMiwxOSBAQAogCiAgICAgaWYgKCRkYXRhTm9k
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrRG9tYWluU2VjdXJpdHkifSkgewogICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7Ci0gIHN0YXRpYyBib29sIG5hbWVkU2VjdXJp
dHlDaGVjayh2ODo6TG9jYWw8djg6Ok9iamVjdD4gaG9zdCwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
a2V5LCB2ODo6QWNjZXNzVHlwZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gZGF0YSk7Ci0gIHN0YXRp
YyBib29sIGluZGV4ZWRTZWN1cml0eUNoZWNrKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBob3N0LCB1
aW50MzJfdCBpbmRleCwgdjg6OkFjY2Vzc1R5cGUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGRhdGEp
OworICAgIHN0YXRpYyBib29sIG5hbWVkU2VjdXJpdHlDaGVjayh2ODo6TG9jYWw8djg6Ok9iamVj
dD4gaG9zdCwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4ga2V5LCB2ODo6QWNjZXNzVHlwZSwgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gZGF0YSk7CisgICAgc3RhdGljIGJvb2wgaW5kZXhlZFNlY3VyaXR5Q2hl
Y2sodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGhvc3QsIHVpbnQzMl90IGluZGV4LCB2ODo6QWNjZXNz
VHlwZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gZGF0YSk7CiBFTkQKICAgICB9CiAKICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCA8PEVORCk7CiB9OwogCi0gIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0
b1Y4KCR7bmF0aXZlVHlwZX0qJHtmb3JjZU5ld09iamVjdFBhcmFtZXRlcn0pOworICAgIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB0b1Y4KCR7bmF0aXZlVHlwZX0qJHtmb3JjZU5ld09iamVjdFBhcmFt
ZXRlcn0pOwogRU5ECiAgICAgaWYgKElzUmVmUHRyVHlwZSgkaW1wbENsYXNzTmFtZSkpIHsKICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwotICB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOChQYXNzUmVmUHRyPCR7bmF0aXZlVHlwZX0gPiR7Zm9yY2VOZXdPYmplY3RQYXJhbWV0
ZXJ9KTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChQYXNzUmVmUHRyPCR7bmF0aXZl
VHlwZX0gPiR7Zm9yY2VOZXdPYmplY3RQYXJhbWV0ZXJ9KTsKIEVORAogICAgIH0KIApAQCAtMzU2
LDMzICszMjgsMzEgQEAKIHsKICAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKICAgICBteSAkbmFt
ZSA9ICRkYXRhTm9kZS0+bmFtZTsKKyAgICAKKyAgICBteSBAY3VzdG9tSW50ZXJuYWxGaWVsZHMg
PSAoKTsKKyAKKyAgICAjIFdlIGNhbid0IGFzayB3aGV0aGVyIGEgcGFyZW50IHR5cGUgaGFzIGEg
Z2l2ZW4gZXh0ZW5kZWRBdHRyaWJ1dGUsIHNvIHNwZWNpYWwtY2FzZSBOb2RlLCBBYnN0cmFjdFdv
cmtlciBhbmQgV29ya2VyQ29udGV4dCB0byBpbmNsdWRlIGFsbCBzdWItdHlwZXMuCisgICAgIyBG
SVhNRTogU1ZHRWxlbWVudEluc3RhbmNlIHNob3VsZCBwcm9iYWJseSBoYXZlIHRoZSBFdmVudFRh
cmdldCBleHRlbmRlZCBhdHRyaWJ1dGUsIGJ1dCBkb2Vzbid0LgorICAgIGlmICgkZGF0YU5vZGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFdmVudFRhcmdldCJ9IHx8IElzTm9kZVN1YlR5cGUoJGRh
dGFOb2RlKSB8fCBJc1N1YlR5cGUoJGRhdGFOb2RlLCAiQWJzdHJhY3RXb3JrZXIiKSB8fCBJc1N1
YlR5cGUoJGRhdGFOb2RlLCAiV29ya2VyQ29udGV4dCIpCisgICAgICAgIHx8ICRuYW1lIGVxICJT
VkdFbGVtZW50SW5zdGFuY2UiKSB7CisgICAgICAgIHB1c2goQGN1c3RvbUludGVybmFsRmllbGRz
LCAiZXZlbnRMaXN0ZW5lckNhY2hlSW5kZXgiKTsKKyAgICB9CiAKLSAgICAjIEZJWE1FOiBJIGFt
IGhpZGVvdXMgYW5kIGhhcmQtY29kZWQuICBNYWtlIG1lIGJlYXV0aWZ1bC4KLSAgICByZXR1cm4g
KCJjYWNoZUluZGV4IiwgImltcGxlbWVudGF0aW9uSW5kZXgiKSBpZiAoJG5hbWUgZXEgIkRvY3Vt
ZW50IikgfHwgKCRuYW1lIGVxICJTVkdEb2N1bWVudCIpOwotICAgIHJldHVybiAoImNhY2hlSW5k
ZXgiLCAiaW1wbGVtZW50YXRpb25JbmRleCIsICJtYXJrZXJJbmRleCIsICJzaGFkb3dJbmRleCIp
IGlmICRuYW1lIGVxICJIVE1MRG9jdW1lbnQiOwotICAgIHJldHVybiAoImNhY2hlSW5kZXgiKSBp
ZiBJc05vZGVTdWJUeXBlKCRkYXRhTm9kZSk7Ci0gICAgcmV0dXJuICgiY2FjaGVJbmRleCIpIGlm
ICRuYW1lIGVxICJFdmVudFNvdXJjZSI7Ci0gICAgcmV0dXJuICgiY2FjaGVJbmRleCIpIGlmICRu
YW1lIGVxICJYTUxIdHRwUmVxdWVzdCI7Ci0gICAgcmV0dXJuICgiY2FjaGVJbmRleCIpIGlmICRu
YW1lIGVxICJYTUxIdHRwUmVxdWVzdFVwbG9hZCI7Ci0gICAgcmV0dXJuICgiY2FjaGVJbmRleCIp
IGlmICRuYW1lIGVxICJNZXNzYWdlUG9ydCI7Ci0gICAgcmV0dXJuICgicG9ydDFJbmRleCIsICJw
b3J0MkluZGV4IikgaWYgKCRuYW1lIGVxICJNZXNzYWdlQ2hhbm5lbCIpOwotICAgIHJldHVybiAo
ImNhY2hlSW5kZXgiKSBpZiAkbmFtZSBlcSAiQWJzdHJhY3RXb3JrZXIiOwotICAgIHJldHVybiAo
ImFic3RyYWN0V29ya2VyQ2FjaGVJbmRleCIsICJjYWNoZUluZGV4IikgaWYgJG5hbWUgZXEgIldv
cmtlciI7Ci0gICAgcmV0dXJuICgiYWJzdHJhY3RXb3JrZXJDYWNoZUluZGV4IiwgImNhY2hlSW5k
ZXgiKSBpZiAkbmFtZSBlcSAiV29ya2VyQ29udGV4dCI7Ci0gICAgcmV0dXJuICgiYWJzdHJhY3RX
b3JrZXJDYWNoZUluZGV4IiwgIndvcmtlckNvbnRleHRDYWNoZUluZGV4IiwgImNhY2hlSW5kZXgi
KSBpZiAkbmFtZSBlcSAiRGVkaWNhdGVkV29ya2VyQ29udGV4dCI7Ci0gICAgcmV0dXJuICgiYWJz
dHJhY3RXb3JrZXJDYWNoZUluZGV4IiwgImNhY2hlSW5kZXgiKSBpZiAkbmFtZSBlcSAiU2hhcmVk
V29ya2VyIjsKLSAgICByZXR1cm4gKCJhYnN0cmFjdFdvcmtlckNhY2hlSW5kZXgiLCAid29ya2Vy
Q29udGV4dENhY2hlSW5kZXgiLCAiY2FjaGVJbmRleCIpIGlmICRuYW1lIGVxICJTaGFyZWRXb3Jr
ZXJDb250ZXh0IjsKLSAgICByZXR1cm4gKCJjYWNoZUluZGV4IikgaWYgJG5hbWUgZXEgIk5vdGlm
aWNhdGlvbiI7Ci0gICAgcmV0dXJuICgiY2FjaGVJbmRleCIpIGlmICRuYW1lIGVxICJJREJSZXF1
ZXN0IjsKLSAgICByZXR1cm4gKCJjYWNoZUluZGV4IikgaWYgJG5hbWUgZXEgIlNWR0VsZW1lbnRJ
bnN0YW5jZSI7Ci0gICAgcmV0dXJuICgiY29uc29sZUluZGV4IiwgImhpc3RvcnlJbmRleCIsICJs
b2NhdGlvbmJhckluZGV4IiwgIm1lbnViYXJJbmRleCIsICJuYXZpZ2F0b3JJbmRleCIsICJwZXJz
b25hbGJhckluZGV4IiwKLSAgICAgICAgInNjcmVlbkluZGV4IiwgInNjcm9sbGJhcnNJbmRleCIs
ICJzZWxlY3Rpb25JbmRleCIsICJzdGF0dXNiYXJJbmRleCIsICJ0b29sYmFySW5kZXgiLCAibG9j
YXRpb25JbmRleCIsCi0gICAgICAgICJkb21TZWxlY3Rpb25JbmRleCIsICJjYWNoZUluZGV4Iiwg
ImVudGVyZWRJc29sYXRlZFdvcmxkSW5kZXgiKSBpZiAkbmFtZSBlcSAiRE9NV2luZG93IjsKLSAg
ICByZXR1cm4gKCJjYWNoZUluZGV4IikgaWYgJG5hbWUgZXEgIkRPTUFwcGxpY2F0aW9uQ2FjaGUi
OwotICAgIHJldHVybiAoImNhY2hlSW5kZXgiKSBpZiAkbmFtZSBlcSAiV2ViU29ja2V0IjsKLSAg
ICByZXR1cm4gKCJvd25lck5vZGVJbmRleCIpIGlmICgkbmFtZSBlcSAiU3R5bGVTaGVldCIpIHx8
ICgkbmFtZSBlcSAiQ1NTU3R5bGVTaGVldCIpOwotICAgIHJldHVybiAoIm93bmVyTm9kZUluZGV4
IikgaWYgKCRuYW1lIGVxICJOYW1lZE5vZGVNYXAiKTsKLSAgICByZXR1cm4gKCk7CisgICAgaWYg
KElzU3ViVHlwZSgkZGF0YU5vZGUsICJEb2N1bWVudCIpKSB7CisgICAgICAgIHB1c2goQGN1c3Rv
bUludGVybmFsRmllbGRzLCAiaW1wbGVtZW50YXRpb25JbmRleCIpOworICAgICAgICBpZiAoJG5h
bWUgZXEgIkhUTUxEb2N1bWVudCIpIHsKKyAgICAgICAgICAgIHB1c2goQGN1c3RvbUludGVybmFs
RmllbGRzLCAoIm1hcmtlckluZGV4IiwgInNoYWRvd0luZGV4IikpOworICAgICAgICB9CisgICAg
fSBlbHNpZiAoSXNTdWJUeXBlKCRkYXRhTm9kZSwgIlN0eWxlU2hlZXQiKSB8fCAkbmFtZSBlcSAi
TmFtZWROb2RlTWFwIikgeworICAgICAgICBwdXNoKEBjdXN0b21JbnRlcm5hbEZpZWxkcywgIm93
bmVyTm9kZUluZGV4Iik7CisgICAgfSBlbHNpZiAoJG5hbWUgZXEgIk1lc3NhZ2VDaGFubmVsIikg
eworICAgICAgICBwdXNoKEBjdXN0b21JbnRlcm5hbEZpZWxkcywgKCJwb3J0MUluZGV4IiwgInBv
cnQySW5kZXgiKSk7CisgICAgfSBlbHNpZiAoJG5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKKyAgICAg
ICAgcHVzaChAY3VzdG9tSW50ZXJuYWxGaWVsZHMsICgiY29uc29sZUluZGV4IiwgImhpc3RvcnlJ
bmRleCIsICJsb2NhdGlvbmJhckluZGV4IiwgIm1lbnViYXJJbmRleCIsICJuYXZpZ2F0b3JJbmRl
eCIsIAorICAgICAgICAgICAgInBlcnNvbmFsYmFySW5kZXgiLCAic2NyZWVuSW5kZXgiLCAic2Ny
b2xsYmFyc0luZGV4IiwgInNlbGVjdGlvbkluZGV4IiwgInN0YXR1c2JhckluZGV4IiwgInRvb2xi
YXJJbmRleCIsICJsb2NhdGlvbkluZGV4IiwKKyAgICAgICAgICAgICJkb21TZWxlY3Rpb25JbmRl
eCIsICJlbnRlcmVkSXNvbGF0ZWRXb3JsZEluZGV4IikpOworICAgIH0KKyAgICByZXR1cm4gQGN1
c3RvbUludGVybmFsRmllbGRzOwogfQogCiBzdWIgR2V0SGVhZGVyQ2xhc3NJbmNsdWRlCkBAIC00
MDMsMTIgKzM3MywxMiBAQAogICAgIG15ICRjdXN0b21GaWVsZENvdW50ZXIgPSAwOwogICAgIGZv
cmVhY2ggbXkgJGN1c3RvbUludGVybmFsRmllbGQgKEBjdXN0b21JbnRlcm5hbEZpZWxkcykgewog
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7Ci0gIHN0YXRpYyBjb25zdCBpbnQg
JHtjdXN0b21JbnRlcm5hbEZpZWxkfSA9IHY4RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291
bnQgKyAke2N1c3RvbUZpZWxkQ291bnRlcn07CisgICAgc3RhdGljIGNvbnN0IGludCAke2N1c3Rv
bUludGVybmFsRmllbGR9ID0gdjhEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArICR7
Y3VzdG9tRmllbGRDb3VudGVyfTsKIEVORAogICAgICAgICAkY3VzdG9tRmllbGRDb3VudGVyKys7
CiAgICAgfQogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKLSAgc3RhdGljIGNvbnN0
IGludCBpbnRlcm5hbEZpZWxkQ291bnQgPSB2OERlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENv
dW50ICsgJHtjdXN0b21GaWVsZENvdW50ZXJ9OworICAgIHN0YXRpYyBjb25zdCBpbnQgaW50ZXJu
YWxGaWVsZENvdW50ID0gdjhEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArICR7Y3Vz
dG9tRmllbGRDb3VudGVyfTsKIEVORAogfQogCkBAIC00NDYsMzggKzQxNiwzOCBAQAogCiAgICAg
aWYgKCRoYXNDdXN0b21JbmRleGVkR2V0dGVyIHx8ICRpc0luZGV4ZXJTcGVjaWFsQ2FzZSkgewog
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7Ci0gIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gaW5kZXhlZFByb3BlcnR5R2V0dGVyKHVpbnQzMl90IGluZGV4LCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKTsKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGluZGV4ZWRQcm9wZXJ0eUdldHRlcih1aW50MzJfdCBpbmRleCwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbyk7CiBFTkQKICAgICB9CiAKICAgICBpZiAoJGlzSW5kZXhlclNwZWNpYWxDYXNl
IHx8ICRoYXNDdXN0b21JbmRleGVkU2V0dGVyKSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsIDw8RU5EKTsKLSAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBpbmRleGVkUHJvcGVy
dHlTZXR0ZXIodWludDMyX3QgaW5kZXgsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKTsKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGluZGV4ZWRQcm9wZXJ0eVNldHRlcih1aW50MzJfdCBpbmRleCwgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pOwogRU5ECiAgICAgfQog
ICAgIGlmICgkaGFzQ3VzdG9tRGVsZXRlcnMpIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgPDxFTkQpOwotICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6Qm9vbGVhbj4gaW5kZXhlZFByb3Bl
cnR5RGVsZXRlcih1aW50MzJfdCBpbmRleCwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbyk7
CisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OkJvb2xlYW4+IGluZGV4ZWRQcm9wZXJ0eURlbGV0
ZXIodWludDMyX3QgaW5kZXgsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pOwogRU5ECiAg
ICAgfQogICAgIGlmICgkaGFzQ3VzdG9tTmFtZWRHZXR0ZXIpIHsKICAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgPDxFTkQpOwotICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG5hbWVk
UHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pOworICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbmFtZWRQ
cm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbyk7CiBFTkQKICAgICB9CiAgICAgaWYgKCRoYXNDdXN0b21OYW1lZFNldHRl
cikgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7Ci0gIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gbmFtZWRQcm9wZXJ0eVNldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pOworICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbmFtZWRQcm9wZXJ0
eVNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
dmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pOwogRU5ECiAgICAgfQogICAgIGlm
ICgkaGFzQ3VzdG9tRGVsZXRlcnMgfHwgJGludGVyZmFjZU5hbWUgZXEgIkhUTUxEb2N1bWVudCIp
IHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwotICBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6Qm9vbGVhbj4gbmFtZWRQcm9wZXJ0eURlbGV0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pOworICAgIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpCb29sZWFuPiBuYW1lZFByb3BlcnR5RGVsZXRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbyk7CiBFTkQKICAgICB9CiAg
ICAgaWYgKCRoYXNDdXN0b21FbnVtZXJhdG9yKSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsIDw8RU5EKTsKLSAgc3RhdGljIHY4OjpIYW5kbGU8djg6OkFycmF5PiBuYW1lZFByb3BlcnR5
RW51bWVyYXRvcihjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKTsKKyAgICBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6QXJyYXk+IG5hbWVkUHJvcGVydHlFbnVtZXJhdG9yKGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pOwogRU5ECiAgICAgfQogfQpAQCAtNDg3LDE2ICs0NTcsMTYgQEAKICAg
ICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKIAogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJDdXN0b21DYWxsIn0pIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjYWxsQXNGdW5jdGlvbkNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2FsbEFzRnVuY3Rpb25DYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJik7XG4iKTsKICAgICB9CiAgICAgaWYgKCRkYXRhTm9kZS0+bmFt
ZSBlcSAiRXZlbnQiKSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGF0YVRyYW5zZmVyQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pO1xuIik7Ci0g
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgIHN0YXRpYyB2b2lkIHZhbHVlQWNjZXNzb3JT
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZh
bHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKTtcbiIpOworICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGF0YVRyYW5z
ZmVyQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgc3RhdGljIHZvaWQgdmFsdWVBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pO1xuIik7CiAgICAgfQogICAgIGlmICgkZGF0YU5vZGUtPm5hbWUgZXEgIkxvY2F0aW9u
IikgewotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGFzc2lnbkFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKTtcbiIpOwotICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlbG9hZEFjY2Vzc29y
R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKTtcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHJlcGxhY2VBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbyk7XG4iKTsKKyAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFz
c2lnbkFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVsb2FkQWNjZXNzb3JHZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pO1xu
Iik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiByZXBsYWNlQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pO1xuIik7CiAgICAgfQogfQogCkBAIC01
MzEsMTkgKzUwMSwxMiBAQAogICAgIHJldHVybiBJc1N1YlR5cGUoJGRhdGFOb2RlLCAiTm9kZSIp
OwogfQogCi1zdWIgSXNFdmVudFN1YlR5cGUKLXsKLSAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsK
LSAgICByZXR1cm4gSXNTdWJUeXBlKCRkYXRhTm9kZSwgIkV2ZW50Iik7Ci19Ci0KIHN1YiBHZW5l
cmF0ZURvbWFpblNhZmVGdW5jdGlvbkdldHRlcgogewogICAgIG15ICRmdW5jdGlvbiA9IHNoaWZ0
OwotICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OwogICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gc2hp
ZnQ7CiAKLSAgICBteSAkY2xhc3NOYW1lID0gIlY4IiAuICRkYXRhTm9kZS0+bmFtZTsKKyAgICBt
eSAkY2xhc3NOYW1lID0gIlY4IiAuICRpbXBsQ2xhc3NOYW1lOwogICAgIG15ICRmdW5jTmFtZSA9
ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOwogCiAgICAgbXkgJHNpZ25hdHVyZSA9ICJ2ODo6
U2lnbmF0dXJlOjpOZXcoIiAuICRjbGFzc05hbWUgLiAiOjpHZXRSYXdUZW1wbGF0ZSgpKSI7CkBA
IC01NTEsMjkgKzUxNCwyNiBAQAogICAgICAgICAkc2lnbmF0dXJlID0gInY4OjpMb2NhbDx2ODo6
U2lnbmF0dXJlPigpIjsKICAgICB9CiAKLSAgICBteSAkbmV3VGVtcGxhdGVTdHJpbmcgPSBHZW5l
cmF0ZU5ld0Z1bmN0aW9uVGVtcGxhdGUoJGZ1bmN0aW9uLCAkZGF0YU5vZGUsICRzaWduYXR1cmUp
OworICAgIG15ICRuZXdUZW1wbGF0ZVN0cmluZyA9IEdlbmVyYXRlTmV3RnVuY3Rpb25UZW1wbGF0
ZSgkZnVuY3Rpb24sICRpbXBsQ2xhc3NOYW1lLCAkc2lnbmF0dXJlKTsKIAogICAgIHB1c2goQGlt
cGxDb250ZW50RGVjbHMsIDw8RU5EKTsKLSAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAk
e2Z1bmNOYW1lfUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pIHsKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtm
dW5jTmFtZX1BdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQorewogICAgIElOQ19TVEFUUyhcIkRPTS4kaW1wbENsYXNzTmFt
ZS4kZnVuY05hbWUuX2dldFwiKTsKLSAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IHByaXZhdGVfdGVtcGxhdGUgPQotICAgICAgICB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldygkbmV3VGVtcGxhdGVTdHJpbmcpOworICAgIHN0YXRp
YyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZV90ZW1wbGF0ZSA9
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KCRuZXdUZW1wbGF0ZVN0
cmluZyk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBWOERPTVdyYXBwZXI6
Omxvb2t1cERPTVdyYXBwZXIoJHtjbGFzc05hbWV9OjpHZXRUZW1wbGF0ZSgpLCBpbmZvLlRoaXMo
KSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpIHsKLSAgICAgIC8vIGNhbiBvbmx5IHJlYWNo
IGhlcmUgYnkgJ29iamVjdC5fX3Byb3RvX18uZnVuYycsIGFuZCBpdCBzaG91bGQgcGFzc2VkCi0g
ICAgICAvLyBkb21haW4gc2VjdXJpdHkgY2hlY2sgYWxyZWFkeQotICAgICAgcmV0dXJuIHByaXZh
dGVfdGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CisgICAgICAgIC8vIGNhbiBvbmx5IHJlYWNoIGhl
cmUgYnkgJ29iamVjdC5fX3Byb3RvX18uZnVuYycsIGFuZCBpdCBzaG91bGQgcGFzc2VkCisgICAg
ICAgIC8vIGRvbWFpbiBzZWN1cml0eSBjaGVjayBhbHJlYWR5CisgICAgICAgIHJldHVybiBwcml2
YXRlX3RlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwogICAgIH0KICAgICAke2ltcGxDbGFzc05hbWV9
KiBpbXAgPSAke2NsYXNzTmFtZX06OnRvTmF0aXZlKGhvbGRlcik7CiAgICAgaWYgKCFWOEJpbmRp
bmdTZWN1cml0eTo6Y2FuQWNjZXNzRnJhbWUoVjhCaW5kaW5nU3RhdGU6Ok9ubHkoKSwgaW1wLT5m
cmFtZSgpLCBmYWxzZSkpIHsKLSAgICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gc2hhcmVkX3RlbXBsYXRlID0KLSAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoJG5ld1RlbXBsYXRlU3RyaW5nKTsKLSAgICAgIHJldHVy
biBzaGFyZWRfdGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7Ci0KLSAgICB9IGVsc2UgewotICAgICAg
cmV0dXJuIHByaXZhdGVfdGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CisgICAgICAgIHN0YXRpYyB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc2hhcmVkX3RlbXBsYXRlID0gdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoJG5ld1RlbXBsYXRlU3RyaW5n
KTsKKyAgICAgICAgcmV0dXJuIHNoYXJlZF90ZW1wbGF0ZS0+R2V0RnVuY3Rpb24oKTsKICAgICB9
Ci0gIH0KKyAgICByZXR1cm4gcHJpdmF0ZV90ZW1wbGF0ZS0+R2V0RnVuY3Rpb24oKTsKK30KIAog
RU5ECiB9CkBAIC01ODEsMjQgKzU0MSwyMyBAQAogc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JHZXR0
ZXIKIHsKICAgICBteSAkaW1wbENsYXNzTmFtZSA9IHNoaWZ0OwotICAgIG15ICRjbGFzc0luZGV4
ID0gc2hpZnQ7CiAKICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7Ci0gIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtpbXBsQ2xhc3NOYW1lfUNvbnN0cnVjdG9yR2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KSB7CitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+ICR7aW1wbENsYXNzTmFtZX1Db25zdHJ1
Y3RvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykgewogICAgIElOQ19TVEFUUyhcIkRPTS4kaW1wbENsYXNzTmFtZS5jb25zdHJ1
Y3RvcnMuX2dldFwiKTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGF0YSA9IGluZm8uRGF0
YSgpOwogICAgIEFTU0VSVChkYXRhLT5Jc051bWJlcigpKTsKICAgICBWOENsYXNzSW5kZXg6OlY4
V3JhcHBlclR5cGUgdHlwZSA9IFY4Q2xhc3NJbmRleDo6RnJvbUludChkYXRhLT5JbnQzMlZhbHVl
KCkpOwogRU5ECiAKLSAgICBpZiAoJGNsYXNzSW5kZXggZXEgIkRPTVdJTkRPVyIpIHsKKyAgICBp
ZiAoJGltcGxDbGFzc05hbWUgZXEgIkRPTVdpbmRvdyIpIHsKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgPDxFTkQpOwogICAgIC8vIEdldCB0aGUgcHJveHkgY29ycmVzcG9uZGluZyB0
byB0aGUgRE9NV2luZG93IGlmIHBvc3NpYmxlIHRvCiAgICAgLy8gbWFrZSBzdXJlIHRoYXQgdGhl
IGNvbnN0cnVjdG9yIGZ1bmN0aW9uIGlzIGNvbnN0cnVjdGVkIGluIHRoZQogICAgIC8vIGNvbnRl
eHQgb2YgdGhlIERPTVdpbmRvdyBhbmQgbm90IGluIHRoZSBjb250ZXh0IG9mIHRoZSBjYWxsZXIu
CiAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Z2V0Q29uc3RydWN0b3IodHlwZSwgVjhET01XaW5k
b3c6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpKTsKIEVORAotICAgIH0gZWxzaWYgKCRjbGFzc0lu
ZGV4IGVxICJERURJQ0FURURXT1JLRVJDT05URVhUIiBvciAkY2xhc3NJbmRleCBlcSAiV09SS0VS
Q09OVEVYVCIgb3IgJGNsYXNzSW5kZXggZXEgIlNIQVJFRFdPUktFUkNPTlRFWFQiKSB7CisgICAg
fSBlbHNpZiAoJGltcGxDbGFzc05hbWUgZXEgIkRlZGljYXRlZFdvcmtlckNvbnRleHQiIG9yICRp
bXBsQ2xhc3NOYW1lIGVxICJXb3JrZXJDb250ZXh0IiBvciAkaW1wbENsYXNzTmFtZSBlcSAiU2hh
cmVkV29ya2VyQ29udGV4dCIpIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgPDxF
TkQpOwogICAgIHJldHVybiBWOERPTVdyYXBwZXI6OmdldENvbnN0cnVjdG9yKHR5cGUsIFY4V29y
a2VyQ29udGV4dDo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSkpOwogRU5ECkBAIC02MDcsOSArNTY2
LDggQEAKICAgICB9CiAKICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7Cit9CiAK
LSAgICB9Ci0KIEVORAogfQogCkBAIC02MzEsNyArNTg5LDYgQEAKICAgICBteSAkaXNQb2RUeXBl
ID0gSXNQb2RUeXBlKCRpbXBsQ2xhc3NOYW1lKTsKICAgICBteSAkc2tpcENvbnRleHQgPSAwOwog
Ci0KICAgICBpZiAoJGlzUG9kVHlwZSkgewogICAgICAgICAkaW1wbENsYXNzTmFtZSA9IEdldE5h
dGl2ZVR5cGUoJGltcGxDbGFzc05hbWUpOwogICAgICAgICAkaW1wbEluY2x1ZGVzeyJWOFNWR1BP
RFR5cGVXcmFwcGVyLmgifSA9IDE7CkBAIC02NTgsNyArNjE1LDggQEAKIAogICAjIEdldHRlcgog
ICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKLSAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiAke2F0dHJOYW1lfUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pIHsKK3N0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gJHthdHRyTmFtZX1BdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorewogICAgIElOQ19TVEFUUyhcIkRPTS4k
aW1wbENsYXNzTmFtZS4kYXR0ck5hbWUuX2dldFwiKTsKIEVORAogCkBAIC02NzQsMTggKzYzMiwx
OCBAQAogICAgICAgICB9CiAKICAgICB9IGVsc2lmICgkYXR0ckV4dC0+eyJ2OE9uUHJvdG8ifSB8
fCAkYXR0ckV4dC0+eyJWOERpc2FsbG93U2hhZG93aW5nIn0pIHsKLSAgICAgIGlmICgkaW50ZXJm
YWNlTmFtZSBlcSAiRE9NV2luZG93IikgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xz
LCA8PEVORCk7CisgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93Iikgewor
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOwogICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5Ib2xkZXIoKTsKIEVORAotICAgICAgfSBlbHNl
IHsKLSAgICAgICAgIyBwZXJmb3JtIGxvb2t1cCBmaXJzdAotICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudERlY2xzLCA8PEVORCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAjIHBlcmZv
cm0gbG9va3VwIGZpcnN0CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVO
RCk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBWOERPTVdyYXBwZXI6Omxv
b2t1cERPTVdyYXBwZXIoVjgke2ludGVyZmFjZU5hbWV9OjpHZXRUZW1wbGF0ZSgpLCBpbmZvLlRo
aXMoKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpIHJldHVybiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4oKTsKIEVORAotICAgICAgfQotICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5E
KTsKKyAgICAgICAgfQorICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CiAg
ICAgJHtpbXBsQ2xhc3NOYW1lfSogaW1wID0gVjgke2ltcGxDbGFzc05hbWV9Ojp0b05hdGl2ZSho
b2xkZXIpOwogRU5ECiAgICAgfSBlbHNlIHsKQEAgLTY5Niw3ICs2NTQsNyBAQAogICAgICAgICAg
ICAgbXkgJG5hbWVzcGFjZSA9ICRjb2RlR2VuZXJhdG9yLT5OYW1lc3BhY2VGb3JBdHRyaWJ1dGVO
YW1lKCRpbnRlcmZhY2VOYW1lLCAkY29udGVudEF0dHJpYnV0ZU5hbWUpOwogICAgICAgICAgICAg
JGltcGxJbmNsdWRlc3siJHtuYW1lc3BhY2V9LmgifSA9IDE7CiAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudERlY2xzLCAiICAgIHJldHVybiBnZXRFbGVtZW50U3RyaW5nQXR0cihpbmZvLCAk
e25hbWVzcGFjZX06OiR7Y29udGVudEF0dHJpYnV0ZU5hbWV9QXR0cik7XG4iKTsKLSAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgIH1cblxuIik7CisgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudERlY2xzLCAifVxuXG4iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgICMgU2tpcCB0aGUgcmVzdCBvZiB0aGUgZnVuY3Rpb24hCiAgICAgICAgIH0KQEAgLTc5
MCw3ICs3NDgsNyBAQAogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPnR5cGUgZXEgIkV2ZW50TGlzdGVuZXIiICYmICRkYXRhTm9kZS0+bmFtZSBlcSAiRE9N
V2luZG93IikgewogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBpZiAo
IWltcC0+ZG9jdW1lbnQoKSlcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNs
cywgIiAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTtcbiIpOworICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6
OlZhbHVlPigpO1xuIik7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoJHVzZUV4Y2VwdGlvbnMp
IHsKQEAgLTgyNCwyNyArNzgyLDkgQEAKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywg
IiAgICAiIC4gUmV0dXJuTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgJHJl
c3VsdCwgIiAgICAiKS4iO1xuIik7CiAgICAgfQogCi0gICAgcHVzaChAaW1wbENvbnRlbnREZWNs
cywgIiAgfVxuXG4iKTsgICMgZW5kIG9mIGdldHRlcgorICAgIHB1c2goQGltcGxDb250ZW50RGVj
bHMsICJ9XG5cbiIpOyAgIyBlbmQgb2YgZ2V0dGVyCiB9CiAKLQotc3ViIEdlbmVyYXRlUmVwbGFj
ZWFibGVBdHRyU2V0dGVyCi17Ci0gICAgbXkgJGltcGxDbGFzc05hbWUgPSBzaGlmdDsKLQotICAg
IHB1c2goQGltcGxDb250ZW50RGVjbHMsCi0gICAgICAgIiAgc3RhdGljIHZvaWQgJHthdHRyTmFt
ZX1BdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCIgLgotICAgICAgICIgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pIHtc
biIpOwotCi0gICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBJTkNfU1RBVFMoXCJET00u
JGltcGxDbGFzc05hbWUuJGF0dHJOYW1lLl9zZXRcIik7XG4iKTsKLQotICAgIHB1c2goQGltcGxD
b250ZW50RGVjbHMsICIgICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+ICR7YXR0ck5hbWV9X3N0cmlu
ZyA9IHY4OjpTdHJpbmc6Ok5ldyhcIiR7YXR0ck5hbWV9XCIpO1xuIik7Ci0gICAgcHVzaChAaW1w
bENvbnRlbnREZWNscywgIiAgICBpbmZvLkhvbGRlcigpLT5EZWxldGUoJHthdHRyTmFtZX1fc3Ry
aW5nKTtcbiIpOwotICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgaW5mby5UaGlzKCkt
PlNldCgke2F0dHJOYW1lfV9zdHJpbmcsIHZhbHVlKTtcbiIpOwotICAgIHB1c2goQGltcGxDb250
ZW50RGVjbHMsICIgIH1cblxuIik7Ci19Ci0KLQogc3ViIEdlbmVyYXRlTm9ybWFsQXR0clNldHRl
cgogewogICAgIG15ICRhdHRyaWJ1dGUgPSBzaGlmdDsKQEAgLTg1NCwxMCArNzk0LDcgQEAKIAog
ICAgIG15ICRhdHRyRXh0ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXM7CiAKLSAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLAotICAgICAgICIgIHN0YXRpYyB2b2lk
ICR7YXR0ck5hbWV9QXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwiIC4KLSAg
ICAgICAiIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKSB7XG4iKTsKLQorICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICJzdGF0aWMgdm9p
ZCAke2F0dHJOYW1lfUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKVxue1xu
Iik7CiAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBJTkNfU1RBVFMoXCJET00uJGlt
cGxDbGFzc05hbWUuJGF0dHJOYW1lLl9zZXRcIik7XG4iKTsKIAogICAgIG15ICRpc1BvZFR5cGUg
PSBJc1BvZFR5cGUoJGltcGxDbGFzc05hbWUpOwpAQCAtODk0LDcgKzgzMSw3IEBACiAgICAgICAg
ICAgICBteSAkbmFtZXNwYWNlID0gJGNvZGVHZW5lcmF0b3ItPk5hbWVzcGFjZUZvckF0dHJpYnV0
ZU5hbWUoJGludGVyZmFjZU5hbWUsICRjb250ZW50QXR0cmlidXRlTmFtZSk7CiAgICAgICAgICAg
ICAkaW1wbEluY2x1ZGVzeyIke25hbWVzcGFjZX0uaCJ9ID0gMTsKICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50RGVjbHMsICIgICAgc2V0RWxlbWVudFN0cmluZ0F0dHIoaW5mbywgJHtuYW1l
c3BhY2V9Ojoke2NvbnRlbnRBdHRyaWJ1dGVOYW1lfUF0dHIsIHZhbHVlKTtcbiIpOwotICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgfVxuXG4iKTsKKyAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50RGVjbHMsICJ9XG5cbiIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgIyBTa2lwIHRoZSByZXN0IG9mIHRoZSBmdW5jdGlvbiEKICAgICAgICAgfQpAQCAt
OTA4LDcgKzg0NSw3IEBACiAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSBlcSAi
RXZlbnRMaXN0ZW5lciIpIHsKICAgICAgICAgaWYgKCRkYXRhTm9kZS0+bmFtZSBlcSAiRE9NV2lu
ZG93IikgewogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBpZiAoIWlt
cC0+ZG9jdW1lbnQoKSlcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywg
IiAgICAgIHJldHVybjtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywg
IiAgICAgICAgcmV0dXJuO1xuIik7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICRuYXRpdmVUeXBlIHYgPSAiIC4gSlNWYWx1ZVRv
TmF0aXZlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgInZhbHVlIikgLiAiO1xuIik7CkBAIC05NDcs
NyArODg0LDcgQEAKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgaW1w
LT5zZXRBdHRyaWJ1dGUoJHtuYW1lc3BhY2V9Ojoke2NvbnRlbnRBdHRyaWJ1dGVOYW1lfUF0dHIs
ICRyZXN1bHQiKTsKICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBl
IGVxICJFdmVudExpc3RlbmVyIikgewogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siVjhBYnN0
cmFjdEV2ZW50TGlzdGVuZXIuaCJ9ID0gMTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
RGVjbHMsICIgICAgdHJhbnNmZXJIaWRkZW5EZXBlbmRlbmN5KGluZm8uSG9sZGVyKCksIGltcC0+
JGF0dHJOYW1lKCksIHZhbHVlLCBWOCR7aW50ZXJmYWNlTmFtZX06OmNhY2hlSW5kZXgpO1xuIik7
CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIHRyYW5zZmVySGlkZGVu
RGVwZW5kZW5jeShpbmZvLkhvbGRlcigpLCBpbXAtPiRhdHRyTmFtZSgpLCB2YWx1ZSwgVjgke2lu
dGVyZmFjZU5hbWV9OjpldmVudExpc3RlbmVyQ2FjaGVJbmRleCk7XG4iKTsKICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgaW1wLT5zZXQkaW1wbFNldHRlckZ1bmN0aW9u
TmFtZShWOERPTVdyYXBwZXI6OmdldEV2ZW50TGlzdGVuZXIodmFsdWUsIHRydWUsIExpc3RlbmVy
RmluZE9yQ3JlYXRlKSIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnREZWNscywgIiAgICBpbXAtPnNldCRpbXBsU2V0dGVyRnVuY3Rpb25OYW1lKCRyZXN1
bHQiKTsKQEAgLTk3NywxNSArOTE0LDE0IEBACiAgICAgfQogCiAgICAgcHVzaChAaW1wbENvbnRl
bnREZWNscywgIiAgICByZXR1cm47XG4iKTsKLSAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAi
ICB9XG5cbiIpOyAgIyBlbmQgb2Ygc2V0dGVyCisgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywg
In1cblxuIik7ICAjIGVuZCBvZiBzZXR0ZXIKIH0KIAogc3ViIEdldEZ1bmN0aW9uVGVtcGxhdGVD
YWxsYmFja05hbWUKIHsKICAgICAkZnVuY3Rpb24gPSBzaGlmdDsKLSAgICAkZGF0YU5vZGUgPSBz
aGlmdDsKKyAgICAkaW50ZXJmYWNlTmFtZSA9IHNoaWZ0OwogCi0gICAgbXkgJGludGVyZmFjZU5h
bWUgPSAkZGF0YU5vZGUtPm5hbWU7CiAgICAgbXkgJG5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVy
ZS0+bmFtZTsKIAogICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkN1c3RvbSJ9IHx8CkBAIC0xMDAzLDEwICs5MzksMTAgQEAKIHN1YiBHZW5lcmF0ZU5l
d0Z1bmN0aW9uVGVtcGxhdGUKIHsKICAgICAkZnVuY3Rpb24gPSBzaGlmdDsKLSAgICAkZGF0YU5v
ZGUgPSBzaGlmdDsKKyAgICAkaW50ZXJmYWNlTmFtZSA9IHNoaWZ0OwogICAgICRzaWduYXR1cmUg
PSBzaGlmdDsKIAotICAgIG15ICRjYWxsYmFjayA9IEdldEZ1bmN0aW9uVGVtcGxhdGVDYWxsYmFj
a05hbWUoJGZ1bmN0aW9uLCAkZGF0YU5vZGUpOworICAgIG15ICRjYWxsYmFjayA9IEdldEZ1bmN0
aW9uVGVtcGxhdGVDYWxsYmFja05hbWUoJGZ1bmN0aW9uLCAkaW50ZXJmYWNlTmFtZSk7CiAgICAg
cmV0dXJuICJ2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KCRjYWxsYmFjaywgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+KCksICRzaWduYXR1cmUpIjsKIH0KIApAQCAtMTAxOSwxNiArOTU1LDE2IEBACiAg
ICAgbXkgJGhpZGRlbkRlcGVuZGVuY3lBY3Rpb24gPSAoJGZ1bmN0aW9uTmFtZSBlcSAiYWRkIikg
PyAiY3JlYXRlIiA6ICJyZW1vdmUiOwogIAogICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8
RU5EKTsKLSAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+ICR7ZnVuY3Rpb25OYW1lfUV2
ZW50TGlzdGVuZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQotICAgIHsKLSAg
ICAgICAgSU5DX1NUQVRTKCJET00uJHtpbXBsQ2xhc3NOYW1lfS4ke2Z1bmN0aW9uTmFtZX1FdmVu
dExpc3RlbmVyKCkiKTsKLSAgICAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0g
VjhET01XcmFwcGVyOjpnZXRFdmVudExpc3RlbmVyKGFyZ3NbMV0sIGZhbHNlLCBMaXN0ZW5lckZp
bmQke2xvb2t1cFR5cGV9KTsKLSAgICAgICAgaWYgKGxpc3RlbmVyKSB7Ci0gICAgICAgICAgICBW
OCR7aW1wbENsYXNzTmFtZX06OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpLT4ke2Z1bmN0aW9uTmFt
ZX1FdmVudExpc3RlbmVyKHY4VmFsdWVUb0F0b21pY1dlYkNvcmVTdHJpbmcoYXJnc1swXSksIGxp
c3RlbmVyJHtwYXNzUmVmUHRySGFuZGxpbmd9LCBhcmdzWzJdLT5Cb29sZWFuVmFsdWUoKSk7Ci0g
ICAgICAgICAgICAke2hpZGRlbkRlcGVuZGVuY3lBY3Rpb259SGlkZGVuRGVwZW5kZW5jeShhcmdz
LkhvbGRlcigpLCBhcmdzWzFdLCBWOCR7aW1wbENsYXNzTmFtZX06OmNhY2hlSW5kZXgpOwotICAg
ICAgICB9Ci0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CitzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+ICR7ZnVuY3Rpb25OYW1lfUV2ZW50TGlzdGVuZXJDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLiR7aW1wbENsYXNzTmFt
ZX0uJHtmdW5jdGlvbk5hbWV9RXZlbnRMaXN0ZW5lcigpIik7CisgICAgUmVmUHRyPEV2ZW50TGlz
dGVuZXI+IGxpc3RlbmVyID0gVjhET01XcmFwcGVyOjpnZXRFdmVudExpc3RlbmVyKGFyZ3NbMV0s
IGZhbHNlLCBMaXN0ZW5lckZpbmQke2xvb2t1cFR5cGV9KTsKKyAgICBpZiAobGlzdGVuZXIpIHsK
KyAgICAgICAgVjgke2ltcGxDbGFzc05hbWV9Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKS0+JHtm
dW5jdGlvbk5hbWV9RXZlbnRMaXN0ZW5lcih2OFZhbHVlVG9BdG9taWNXZWJDb3JlU3RyaW5nKGFy
Z3NbMF0pLCBsaXN0ZW5lciR7cGFzc1JlZlB0ckhhbmRsaW5nfSwgYXJnc1syXS0+Qm9vbGVhblZh
bHVlKCkpOworICAgICAgICAke2hpZGRlbkRlcGVuZGVuY3lBY3Rpb259SGlkZGVuRGVwZW5kZW5j
eShhcmdzLkhvbGRlcigpLCBhcmdzWzFdLCBWOCR7aW1wbENsYXNzTmFtZX06OmV2ZW50TGlzdGVu
ZXJDYWNoZUluZGV4KTsKICAgICB9CisgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKK30KIAog
RU5ECiB9CkBAIC0xMDU0LDE1ICs5OTAsMTUgQEAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsCi0iICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+ICR7bmFtZX1DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKSB7XG4iIC4KLSIg
ICAgSU5DX1NUQVRTKFwiRE9NLiRpbXBsQ2xhc3NOYW1lLiRuYW1lXCIpO1xuIik7CisgICAgcHVz
aChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiAke25hbWV9Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykgeworICAgIElOQ19T
VEFUUyhcIkRPTS4kaW1wbENsYXNzTmFtZS4kbmFtZVwiKTsKK0VORAogCiAgICAgbXkgJG51bVBh
cmFtZXRlcnMgPSBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc307CiAKICAgICBpZiAoJGZ1bmN0aW9u
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZXF1aXJlc0FsbEFyZ3VtZW50cyJ9
KSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsCi0gICAgICAgICAgICAiICAgIGlm
IChhcmdzLkxlbmd0aCgpIDwgJG51bVBhcmFtZXRlcnMpIHJldHVybiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4oKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGlmIChh
cmdzLkxlbmd0aCgpIDwgJG51bVBhcmFtZXRlcnMpIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4oKTtcbiIpOwogICAgIH0KIAogICAgIGlmIChJc1BvZFR5cGUoJGltcGxDbGFzc05hbWUpKSB7
CkBAIC0xMDgxLDEwICsxMDE3LDEwIEBACiAgICAgICAgfHwgJGludGVyZmFjZU5hbWUgZXEgIkRP
TVdpbmRvdyIpCiAgICAgICAgJiYgISRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiRG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5In0pIHsKICAgICAjIFdlIGhhdmUgbm90
IGZpbmQgcmVhbCB1c2UgY2FzZXMgeWV0LgotICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsCi0i
ICAgIGlmICghVjhCaW5kaW5nU2VjdXJpdHk6OmNhbkFjY2Vzc0ZyYW1lKFY4QmluZGluZ1N0YXRl
OjpPbmx5KCksIGltcC0+ZnJhbWUoKSwgdHJ1ZSkpIHtcbiIuCi0iICAgICAgcmV0dXJuIHY4OjpI
YW5kbGU8djg6OlZhbHVlPigpO1xuIiAuCi0iICAgIH1cbiIpOworICAgIHB1c2goQGltcGxDb250
ZW50RGVjbHMsIDw8RU5EKTsKKyAgICBpZiAoIVY4QmluZGluZ1NlY3VyaXR5OjpjYW5BY2Nlc3NG
cmFtZShWOEJpbmRpbmdTdGF0ZTo6T25seSgpLCBpbXAtPmZyYW1lKCksIHRydWUpKQorICAgICAg
ICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CitFTkQKICAgICB9CiAKICAgICBteSAk
cmFpc2VzRXhjZXB0aW9ucyA9IEB7JGZ1bmN0aW9uLT5yYWlzZXNFeGNlcHRpb25zfTsKQEAgLTEx
MDYsMTYgKzEwNDIsMTggQEAKICAgICB9CiAKICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Bcmd1bWVudEhhbmRsaW5nIn0pIHsKLSAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnREZWNscywKLSIgICAgT3duUHRyPFNjcmlwdENhbGxTdGFjaz4g
Y2FsbFN0YWNrKFNjcmlwdENhbGxTdGFjazo6Y3JlYXRlKGFyZ3MsICRudW1QYXJhbWV0ZXJzKSk7
XG4iLgotIiAgICBpZiAoIWNhbGxTdGFjaylcbiIuCi0iICAgICAgICByZXR1cm4gdjg6OlVuZGVm
aW5lZCgpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKKyAg
ICBPd25QdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soU2NyaXB0Q2FsbFN0YWNrOjpjcmVh
dGUoYXJncywgJG51bVBhcmFtZXRlcnMpKTsKKyAgICBpZiAoIWNhbGxTdGFjaykKKyAgICAgICAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKK0VORAogICAgICAgICAkaW1wbEluY2x1ZGVzeyJTY3Jp
cHRDYWxsU3RhY2suaCJ9ID0gMTsKICAgICB9CiAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiU1ZHQ2hlY2tTZWN1cml0eURvY3VtZW50In0pIHsKLSAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywKLSIgICAgaWYgKCFWOEJpbmRpbmdTZWN1cml0
eTo6Y2hlY2tOb2RlU2VjdXJpdHkoVjhCaW5kaW5nU3RhdGU6Ok9ubHkoKSwgaW1wLT5nZXRTVkdE
b2N1bWVudChlYykpKVxuIiAuCi0iICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigp
O1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKKyAgICBpZiAo
IVY4QmluZGluZ1NlY3VyaXR5OjpjaGVja05vZGVTZWN1cml0eShWOEJpbmRpbmdTdGF0ZTo6T25s
eSgpLCBpbXAtPmdldFNWR0RvY3VtZW50KGVjKSkpCisgICAgICAgIHJldHVybiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4oKTsKK0VORAogICAgIH0KIAogICAgIG15ICRwYXJhbUluZGV4ID0gMDsKQEAg
LTExNDQsOCArMTA4Miw4IEBACiAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJFeGNlcHRpb25D
b2RlLmgifSA9IDE7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLAogIiAgICBp
ZiAoVU5MSUtFTFkoISRwYXJhbWV0ZXJOYW1lIiAuIChCYXNpY1R5cGVDYW5GYWlsQ29udmVyc2lv
bigkcGFyYW1ldGVyKSA/ICJPayIgOiAiIikgLiAiKSkge1xuIiAuCi0iICAgICAgZWMgPSBUWVBF
X01JU01BVENIX0VSUjtcbiIgLgotIiAgICAgIGdvdG8gZmFpbDtcbiIgLgorIiAgICAgICAgZWMg
PSBUWVBFX01JU01BVENIX0VSUjtcbiIgLgorIiAgICAgICAgZ290byBmYWlsO1xuIiAuCiAiICAg
IH1cbiIpOwogICAgICAgICB9CiAKQEAgLTExNTMsOCArMTA5MSw4IEBACiAgICAgICAgICAgICAk
aW1wbEluY2x1ZGVzeyJFeGNlcHRpb25Db2RlLmgifSA9IDE7CiAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudERlY2xzLAogIiAgICBpZiAoVU5MSUtFTFkoJHBhcmFtZXRlck5hbWUgPCAwKSkg
e1xuIiAuCi0iICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjtcbiIgLgotIiAgICAgIGdvdG8gZmFp
bDtcbiIgLgorIiAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjtcbiIgLgorIiAgICAgICAgZ290
byBmYWlsO1xuIiAuCiAiICAgIH1cbiIpOwogICAgICAgICB9CiAKQEAgLTExNjcsMTIgKzExMDUs
MTIgQEAKIAogICAgIGlmICgkcmFpc2VzRXhjZXB0aW9ucykgewogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudERlY2xzLCAiICAgIH1cbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xz
LCAiICBmYWlsOlxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgZmFp
bDpcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIFY4UHJveHk6OnNl
dERPTUV4Y2VwdGlvbihlYyk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywg
IiAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7XG4iKTsKICAgICB9CiAKLSAgICBw
dXNoKEBpbXBsQ29udGVudERlY2xzLCAiICB9XG5cbiIpOworICAgIHB1c2goQGltcGxDb250ZW50
RGVjbHMsICJ9XG5cbiIpOwogfQogCiBzdWIgR2VuZXJhdGVCYXRjaGVkQXR0cmlidXRlRGF0YQpA
QCAtMTM2MCwxNyArMTI5OCwxNyBAQAogICAgICAgICAgICAgbXkgJGNvbnZlcnNpb24gPSAkaW5k
ZXhlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnZlcnROdWxsU3RyaW5nVG8ifTsKICAgICAg
ICAgICAgIGlmICgkY29udmVyc2lvbiAmJiAkY29udmVyc2lvbiBlcSAiTnVsbCIpIHsKICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwotICBzZXRDb2xsZWN0aW9uU3Ry
aW5nT3JOdWxsSW5kZXhlZEdldHRlcjwke2ludGVyZmFjZU5hbWV9PihkZXNjKTsKKyAgICBzZXRD
b2xsZWN0aW9uU3RyaW5nT3JOdWxsSW5kZXhlZEdldHRlcjwke2ludGVyZmFjZU5hbWV9PihkZXNj
KTsKIEVORAogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgPDxFTkQpOwotICBzZXRDb2xsZWN0aW9uU3RyaW5nSW5kZXhlZEdldHRlcjwke2lu
dGVyZmFjZU5hbWV9PihkZXNjKTsKKyAgICBzZXRDb2xsZWN0aW9uU3RyaW5nSW5kZXhlZEdldHRl
cjwke2ludGVyZmFjZU5hbWV9PihkZXNjKTsKIEVORAogICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgbXkgJGluZGV4ZXJDbGFzc0luZGV4ID0gdWMoJGluZGV4ZXJU
eXBlKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci0gIHNldENvbGxl
Y3Rpb25JbmRleGVkR2V0dGVyPCR7aW50ZXJmYWNlTmFtZX0sICR7aW5kZXhlclR5cGV9PihkZXNj
LCBWOENsYXNzSW5kZXg6OiR7aW5kZXhlckNsYXNzSW5kZXh9KTsKKyAgICBzZXRDb2xsZWN0aW9u
SW5kZXhlZEdldHRlcjwke2ludGVyZmFjZU5hbWV9LCAke2luZGV4ZXJUeXBlfT4oZGVzYywgVjhD
bGFzc0luZGV4Ojoke2luZGV4ZXJDbGFzc0luZGV4fSk7CiBFTkQKICAgICAgICAgICAgICMgSW5j
bHVkZSB0aGUgaGVhZGVyIGZvciB0aGlzIGluZGV4ZXIgdHlwZSwgYmVjYXVzZSBzZXRDb2xsZWN0
aW9uSW5kZXhlZEdldHRlcigpIHJlcXVpcmVzIHRvVjgoKSBmb3IgdGhpcyB0eXBlLgogICAgICAg
ICAgICAgJGltcGxJbmNsdWRlc3siVjgke2luZGV4ZXJUeXBlfS5oIn0gPSAxOwpAQCAtMTM5Miw3
ICsxMzMwLDcgQEAKICAgICAgICAgJGhhc0RlbGV0ZXIgPSAwOwogICAgIH0KIAotICAgIHB1c2go
QGltcGxDb250ZW50LCAiICBkZXNjLT4ke3NldE9ufVRlbXBsYXRlKCktPlNldEluZGV4ZWRQcm9w
ZXJ0eUhhbmRsZXIoVjgke2ludGVyZmFjZU5hbWV9OjppbmRleGVkUHJvcGVydHlHZXR0ZXIiKTsK
KyAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBkZXNjLT4ke3NldE9ufVRlbXBsYXRlKCktPlNl
dEluZGV4ZWRQcm9wZXJ0eUhhbmRsZXIoVjgke2ludGVyZmFjZU5hbWV9OjppbmRleGVkUHJvcGVy
dHlHZXR0ZXIiKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGhhc0N1c3RvbVNldHRlciA/ICIs
IFY4JHtpbnRlcmZhY2VOYW1lfTo6aW5kZXhlZFByb3BlcnR5U2V0dGVyIiA6ICIsIDAiKTsKICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiwgMCIpOyAjIEluZGV4ZWRQcm9wZXJ0eVF1ZXJ5IC0tIG5v
dCBiZWluZyB1c2VkIGF0IHRoZSBtb21lbnQuCiAgICAgcHVzaChAaW1wbENvbnRlbnQsICRoYXNE
ZWxldGVyID8gIiwgVjgke2ludGVyZmFjZU5hbWV9OjppbmRleGVkUHJvcGVydHlEZWxldGVyIiA6
ICIsIDAiKTsKQEAgLTE0MjgsNyArMTM2Niw3IEBACiAgICAgICAgIG15ICR0eXBlID0gJG5hbWVk
UHJvcGVydHlHZXR0ZXItPnR5cGU7CiAgICAgICAgIG15ICRjbGFzc0luZGV4ID0gdWMoJHR5cGUp
OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwotICBzZXRDb2xsZWN0aW9uTmFt
ZWRHZXR0ZXI8JHtpbnRlcmZhY2VOYW1lfSwgJHt0eXBlfT4oZGVzYywgVjhDbGFzc0luZGV4Ojok
e2NsYXNzSW5kZXh9KTsKKyAgICBzZXRDb2xsZWN0aW9uTmFtZWRHZXR0ZXI8JHtpbnRlcmZhY2VO
YW1lfSwgJHt0eXBlfT4oZGVzYywgVjhDbGFzc0luZGV4Ojoke2NsYXNzSW5kZXh9KTsKIEVORAog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTQ0OSw3ICsxMzg3LDcgQEAKICAgICAgICAgJGhh
c0VudW1lcmF0b3IgPSAwOwogICAgIH0KIAotICAgIHB1c2goQGltcGxDb250ZW50LCAiICBkZXNj
LT4ke3NldE9ufVRlbXBsYXRlKCktPlNldE5hbWVkUHJvcGVydHlIYW5kbGVyKFY4JHtpbnRlcmZh
Y2VOYW1lfTo6bmFtZWRQcm9wZXJ0eUdldHRlciwgIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgZGVzYy0+JHtzZXRPbn1UZW1wbGF0ZSgpLT5TZXROYW1lZFByb3BlcnR5SGFuZGxlcihW
OCR7aW50ZXJmYWNlTmFtZX06Om5hbWVkUHJvcGVydHlHZXR0ZXIsICIpOwogICAgIHB1c2goQGlt
cGxDb250ZW50LCAkaGFzU2V0dGVyID8gIlY4JHtpbnRlcmZhY2VOYW1lfTo6bmFtZWRQcm9wZXJ0
eVNldHRlciwgIiA6ICIwLCAiKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIjAsICIpOyAjIE5h
bWVkUHJvcGVydHlRdWVyeSAtLSBub3QgYmVpbmcgdXNlZCBhdCB0aGUgbW9tZW50LgogICAgIHB1
c2goQGltcGxDb250ZW50LCAkaGFzRGVsZXRlciA/ICJWOCR7aW50ZXJmYWNlTmFtZX06Om5hbWVk
UHJvcGVydHlEZWxldGVyLCAiIDogIjAsICIpOwpAQCAtMTQ3MCw3ICsxNDA4LDcgQEAKICAgICB9
CiAKICAgICBpZiAoJGhhc0N1c3RvbUNhbGwpIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgIGRlc2MtPkluc3RhbmNlVGVtcGxhdGUoKS0+U2V0Q2FsbEFzRnVuY3Rpb25IYW5kbGVyKFY4
JHtpbnRlcmZhY2VOYW1lfTo6Y2FsbEFzRnVuY3Rpb25DYWxsYmFjayk7XG4iKTsKKyAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgZGVzYy0+SW5zdGFuY2VUZW1wbGF0ZSgpLT5TZXRDYWxs
QXNGdW5jdGlvbkhhbmRsZXIoVjgke2ludGVyZmFjZU5hbWV9OjpjYWxsQXNGdW5jdGlvbkNhbGxi
YWNrKTtcbiIpOwogICAgIH0KIH0KIApAQCAtMTQ3OSw3ICsxNDE3LDcgQEAKICAgICBteSAkZGF0
YU5vZGUgPSBzaGlmdDsKICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCJ9KQogICAgIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgIGRlc2MtPkluc3RhbmNlVGVtcGxhdGUoKS0+TWFya0FzVW5kZXRlY3RhYmxlKCk7XG4i
KTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgZGVzYy0+SW5zdGFuY2VUZW1wbGF0
ZSgpLT5NYXJrQXNVbmRldGVjdGFibGUoKTtcbiIpOwogICAgIH0KIH0KIApAQCAtMTU1NiwyNyAr
MTQ5NCwyMyBAQAogICAgICAgICAgICAgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiVjhDdXN0b21HZXR0ZXIifSkpIHsKICAgICAgICAgICAgIEdlbmVyYXRlTm9y
bWFsQXR0ckdldHRlcigkYXR0cmlidXRlLCAkZGF0YU5vZGUsICRpbXBsQ2xhc3NOYW1lLCAkaW50
ZXJmYWNlTmFtZSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCEoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tU2V0dGVyIn0gfHwKLSAgICAgICAgICAg
ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3VzdG9tU2V0
dGVyIn0pKSB7Ci0gICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiUmVwbGFjZWFibGUifSkgewotICAgICAgICAgICAgICAgICRkYXRhTm9k
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkV4dGVuZHNET01HbG9iYWxPYmplY3QifSB8fCBkaWUg
IlJlcGxhY2VhYmxlIGF0dHJpYnV0ZSBjYW4gb25seSBiZSB1c2VkIGluIGludGVyZmFjZSB0aGF0
IGRlZmluZXMgRXh0ZW5kc0RPTUdsb2JhbE9iamVjdCBhdHRyaWJ1dGUhIjsKLSAgICAgICAgICAg
ICAgICAjIEdlbmVyYXRlUmVwbGFjZWFibGVBdHRyU2V0dGVyKCRpbXBsQ2xhc3NOYW1lKTsKLSAg
ICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnR5cGUgIX4gL15yZWFkb25seS8gJiYgISRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4UmVhZE9ubHkifSkg
ewotICAgICAgICAgICAgICAgIEdlbmVyYXRlTm9ybWFsQXR0clNldHRlcigkYXR0cmlidXRlLCAk
ZGF0YU5vZGUsICRpbXBsQ2xhc3NOYW1lLCAkaW50ZXJmYWNlTmFtZSk7Ci0gICAgICAgICAgICB9
CisgICAgICAgIGlmICghJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ3VzdG9tU2V0dGVyIn0gJiYKKyAgICAgICAgICAgICEkYXR0cmlidXRlLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOEN1c3RvbVNldHRlciJ9ICYmCisgICAgICAgICAgICAh
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVwbGFjZWFibGUi
fSAmJgorICAgICAgICAgICAgJGF0dHJpYnV0ZS0+dHlwZSAhfiAvXnJlYWRvbmx5LyAmJgorICAg
ICAgICAgICAgISRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4
UmVhZE9ubHkifSkgeworICAgICAgICAgICAgR2VuZXJhdGVOb3JtYWxBdHRyU2V0dGVyKCRhdHRy
aWJ1dGUsICRkYXRhTm9kZSwgJGltcGxDbGFzc05hbWUsICRpbnRlcmZhY2VOYW1lKTsKICAgICAg
ICAgfQogICAgIH0KIAogICAgIGlmICgkaGFzQ29uc3RydWN0b3JzKSB7Ci0gICAgICAgIEdlbmVy
YXRlQ29uc3RydWN0b3JHZXR0ZXIoJGltcGxDbGFzc05hbWUsICRjbGFzc0luZGV4KTsKKyAgICAg
ICAgR2VuZXJhdGVDb25zdHJ1Y3RvckdldHRlcigkaW1wbENsYXNzTmFtZSk7CiAgICAgfQogCiAg
ICAgbXkgJGluZGV4ZXI7CiAgICAgbXkgJG5hbWVkUHJvcGVydHlHZXR0ZXI7CiAgICAgIyBHZW5l
cmF0ZSBtZXRob2RzIGZvciBmdW5jdGlvbnMuCiAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7
JGRhdGFOb2RlLT5mdW5jdGlvbnN9KSB7Ci0gICAgICAgICMgaGFjayBmb3IgYWRkRXZlbnRMaXN0
ZW5lci9SZW1vdmVFdmVudExpc3RlbmVyCi0gICAgICAgICMgRklYTUU6IGF2b2lkIG5hbWluZyBj
b25mbGljdAogICAgICAgICBpZiAoISgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkN1c3RvbSJ9IHx8ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiVjhDdXN0b20ifSkpIHsKICAgICAgICAgICAgIEdlbmVyYXRlRnVuY3Rpb25DYWxs
YmFjaygkZnVuY3Rpb24sICRkYXRhTm9kZSwgJGNsYXNzSW5kZXgsICRpbXBsQ2xhc3NOYW1lKTsK
ICAgICAgICAgfQpAQCAtMTU5Myw3ICsxNTI3LDcgQEAKICAgICAgICAgIyBnZW5lcmF0ZSBhbiBh
Y2Nlc3MgZ2V0dGVyIHRoYXQgcmV0dXJucyBkaWZmZXJlbnQgZnVuY3Rpb24gb2JqZWN0cwogICAg
ICAgICAjIGZvciBkaWZmZXJlbnQgY2FsbGluZyBjb250ZXh0LgogICAgICAgICBpZiAoKCRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrRG9tYWluU2VjdXJpdHkifSB8fCAoJGlu
dGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpKSAmJiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkRvTm90Q2hlY2tEb21haW5TZWN1cml0eSJ9KSB7Ci0gICAgICAg
ICAgICBHZW5lcmF0ZURvbWFpblNhZmVGdW5jdGlvbkdldHRlcigkZnVuY3Rpb24sICRkYXRhTm9k
ZSwgJGltcGxDbGFzc05hbWUpOworICAgICAgICAgICAgR2VuZXJhdGVEb21haW5TYWZlRnVuY3Rp
b25HZXR0ZXIoJGZ1bmN0aW9uLCAkaW1wbENsYXNzTmFtZSk7CiAgICAgICAgIH0KICAgICB9CiAK
QEAgLTE2NTYsNyArMTU5MCw3IEBACiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0
YXRpYyBjb25zdCBCYXRjaGVkQ2FsbGJhY2sgJHtpbnRlcmZhY2VOYW1lfV9jYWxsYmFja3NbXSA9
IHtcbiIpOwogICAgICAgICB9CiAgICAgICAgIG15ICRuYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1
cmUtPm5hbWU7Ci0gICAgICAgIG15ICRjYWxsYmFjayA9IEdldEZ1bmN0aW9uVGVtcGxhdGVDYWxs
YmFja05hbWUoJGZ1bmN0aW9uLCAkZGF0YU5vZGUpOworICAgICAgICBteSAkY2FsbGJhY2sgPSBH
ZXRGdW5jdGlvblRlbXBsYXRlQ2FsbGJhY2tOYW1lKCRmdW5jdGlvbiwgJGludGVyZmFjZU5hbWUp
OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwogICB7IiRuYW1lIiwgJGNhbGxi
YWNrfSwKIEVORApAQCAtMTY4OSwxMSArMTYyMywxMSBAQAogICAgICMgSW4gbmFtZXNwYWNlIFdl
YkNvcmUsIGFkZCBnZW5lcmF0ZWQgaW1wbGVtZW50YXRpb24gZm9yICdDYW5CZUNvbnN0cnVjdGVk
Jy4KICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FuQmVDb25zdHJ1
Y3RlZCJ9ICYmICEkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Db25zdHJ1
Y3RvciJ9KSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci0gdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+ICR7Y2xhc3NOYW1lfTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQotICB7Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtjbGFzc05hbWV9
Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CiAgICAg
SU5DX1NUQVRTKCJET00uJHtpbnRlcmZhY2VOYW1lfS5Db250cnVjdG9yIik7CiAgICAgcmV0dXJu
IFY4UHJveHk6OmNvbnN0cnVjdERPTU9iamVjdDxWOENsYXNzSW5kZXg6OiR7Y2xhc3NJbmRleH0s
ICRpbnRlcmZhY2VOYW1lPihhcmdzKTsKLSAgfQorfQogRU5ECiAgICB9CiAKQEAgLTE3MDYsMTYg
KzE2NDAsMTQgQEAKICAgICAjIGNvbmZpZ3VyYXRpb24gbWV0aG9kLgogICAgIGlmICgkaW1wbENs
YXNzTmFtZSBlcSAiRE9NV2luZG93IikgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxF
TkQpOwotc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3RUZW1wbGF0ZT4gQ29uZmlndXJl
U2hhZG93T2JqZWN0VGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdFRlbXBsYXRlPiB0
ZW1wbCkgewotICBiYXRjaENvbmZpZ3VyZUF0dHJpYnV0ZXModGVtcGwsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4oKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNoYWRvd19hdHRycywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVvZihzaGFkb3dfYXR0cnMpL3NpemVvZigqc2hhZG93X2F0dHJzKSk7CitzdGF0aWMg
djg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdFRlbXBsYXRlPiBDb25maWd1cmVTaGFkb3dPYmplY3RU
ZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0VGVtcGxhdGU+IHRlbXBsKQoreworICAg
IGJhdGNoQ29uZmlndXJlQXR0cmlidXRlcyh0ZW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVt
cGxhdGU+KCksIHNoYWRvd19hdHRycywgc2l6ZW9mKHNoYWRvd19hdHRycykvc2l6ZW9mKCpzaGFk
b3dfYXR0cnMpKTsKIAotICAvLyBJbnN0YWxsIGEgc2VjdXJpdHkgaGFuZGxlciB3aXRoIFY4Lgot
ICB0ZW1wbC0+U2V0QWNjZXNzQ2hlY2tDYWxsYmFja3MoVjhET01XaW5kb3c6Om5hbWVkU2VjdXJp
dHlDaGVjaywgVjhET01XaW5kb3c6OmluZGV4ZWRTZWN1cml0eUNoZWNrLCB2ODo6SW50ZWdlcjo6
TmV3KFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XKSk7Ci0gIHRlbXBsLT5TZXRJbnRlcm5hbEZpZWxk
Q291bnQoVjhET01XaW5kb3c6OmludGVybmFsRmllbGRDb3VudCk7Ci0gIHJldHVybiB0ZW1wbDsK
KyAgICAvLyBJbnN0YWxsIGEgc2VjdXJpdHkgaGFuZGxlciB3aXRoIFY4LgorICAgIHRlbXBsLT5T
ZXRBY2Nlc3NDaGVja0NhbGxiYWNrcyhWOERPTVdpbmRvdzo6bmFtZWRTZWN1cml0eUNoZWNrLCBW
OERPTVdpbmRvdzo6aW5kZXhlZFNlY3VyaXR5Q2hlY2ssIHY4OjpJbnRlZ2VyOjpOZXcoVjhDbGFz
c0luZGV4OjpET01XSU5ET1cpKTsKKyAgICB0ZW1wbC0+U2V0SW50ZXJuYWxGaWVsZENvdW50KFY4
RE9NV2luZG93OjppbnRlcm5hbEZpZWxkQ291bnQpOworICAgIHJldHVybiB0ZW1wbDsKIH0KIEVO
RAogICAgIH0KQEAgLTE3MzUsNDEgKzE2NjcsNDEgQEAKIAogICAgICMgR2VuZXJhdGUgdGhlIHRl
bXBsYXRlIGNvbmZpZ3VyYXRpb24gbWV0aG9kCiAgICAgcHVzaChAaW1wbENvbnRlbnQsICA8PEVO
RCk7Ci1zdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3Vy
ZSR7Y2xhc3NOYW1lfVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBkZXNjKSB7Ci0gIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0X3NpZ25hdHVyZSA9
IGNvbmZpZ3VyZVRlbXBsYXRlKGRlc2MsIFwiJHt2aXNpYmxlSW50ZXJmYWNlTmFtZX1cIiwKLSAg
ICAgICRwYXJlbnRDbGFzc1RlbXBsYXRlLCBWOCR7aW50ZXJmYWNlTmFtZX06OmludGVybmFsRmll
bGRDb3VudCwKK3N0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29u
ZmlndXJlJHtjbGFzc05hbWV9VGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IGRlc2MpCit7CisgICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1bHRfc2ln
bmF0dXJlID0gY29uZmlndXJlVGVtcGxhdGUoZGVzYywgXCIke3Zpc2libGVJbnRlcmZhY2VOYW1l
fVwiLCAkcGFyZW50Q2xhc3NUZW1wbGF0ZSwgVjgke2ludGVyZmFjZU5hbWV9OjppbnRlcm5hbEZp
ZWxkQ291bnQsCiBFTkQKICAgICAjIFNldCB1cCBvdXIgYXR0cmlidXRlcyBpZiB3ZSBoYXZlIHRo
ZW0KICAgICBpZiAoJGhhc19hdHRyaWJ1dGVzKSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCA8PEVORCk7Ci0gICAgICAke2ludGVyZmFjZU5hbWV9X2F0dHJzLCBzaXplb2YoJHtpbnRlcmZh
Y2VOYW1lfV9hdHRycykvc2l6ZW9mKCoke2ludGVyZmFjZU5hbWV9X2F0dHJzKSwKKyAgICAgICAg
JHtpbnRlcmZhY2VOYW1lfV9hdHRycywgc2l6ZW9mKCR7aW50ZXJmYWNlTmFtZX1fYXR0cnMpL3Np
emVvZigqJHtpbnRlcmZhY2VOYW1lfV9hdHRycyksCiBFTkQKICAgICB9IGVsc2UgewogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwotICAgICAgTlVMTCwgMCwKKyAgICAgICAgTlVM
TCwgMCwKIEVORAogICAgIH0KIAogICAgIGlmICgkaGFzX2NhbGxiYWNrcykgewogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwotICAgICAgJHtpbnRlcmZhY2VOYW1lfV9jYWxsYmFj
a3MsIHNpemVvZigke2ludGVyZmFjZU5hbWV9X2NhbGxiYWNrcykvc2l6ZW9mKCoke2ludGVyZmFj
ZU5hbWV9X2NhbGxiYWNrcykpOworICAgICAgICAke2ludGVyZmFjZU5hbWV9X2NhbGxiYWNrcywg
c2l6ZW9mKCR7aW50ZXJmYWNlTmFtZX1fY2FsbGJhY2tzKS9zaXplb2YoKiR7aW50ZXJmYWNlTmFt
ZX1fY2FsbGJhY2tzKSk7CiBFTkQKICAgICB9IGVsc2UgewogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgPDxFTkQpOwotICAgICAgTlVMTCwgMCk7CisgICAgICAgIE5VTEwsIDApOwogRU5ECiAg
ICAgfQogCiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNv
bnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FuQmVDb25z
dHJ1Y3RlZCJ9KSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci0gICAgICBk
ZXNjLT5TZXRDYWxsSGFuZGxlcihWOCR7aW50ZXJmYWNlTmFtZX06OmNvbnN0cnVjdG9yQ2FsbGJh
Y2spOworICAgICAgICBkZXNjLT5TZXRDYWxsSGFuZGxlcihWOCR7aW50ZXJmYWNlTmFtZX06OmNv
bnN0cnVjdG9yQ2FsbGJhY2spOwogRU5ECiAgICAgfQogCiAgICAgaWYgKCRhY2Nlc3NfY2hlY2sg
b3IgQGVuYWJsZWRBdFJ1bnRpbWUgb3IgQHskZGF0YU5vZGUtPmZ1bmN0aW9uc30gb3IgJGhhc19j
b25zdGFudHMpIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICA8PEVORCk7Ci0gIHY4OjpM
b2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlID0gZGVzYy0+SW5zdGFuY2VUZW1wbGF0
ZSgpOwotICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBwcm90byA9IGRlc2MtPlByb3Rv
dHlwZVRlbXBsYXRlKCk7CisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3RUZW1wbGF0ZT4gaW5zdGFu
Y2UgPSBkZXNjLT5JbnN0YW5jZVRlbXBsYXRlKCk7CisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3RU
ZW1wbGF0ZT4gcHJvdG8gPSBkZXNjLT5Qcm90b3R5cGVUZW1wbGF0ZSgpOwogRU5ECiAgICAgfQog
CkBAIC0xODIyLDcgKzE3NTQsNyBAQAogICAgICAgICBpZiAoJGF0dHJFeHQtPnsiRW5hYmxlZEF0
UnVudGltZSJ9KSB7CiAgICAgICAgICAgICAjIE9ubHkgY2FsbCBTZXQoKS9TZXRBY2Nlc3Nvcigp
IGlmIHRoaXMgbWV0aG9kIHNob3VsZCBiZSBlbmFibGVkCiAgICAgICAgICAgICAkZW5hYmxlX2Z1
bmN0aW9uID0gIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OiIgLiAkY29kZUdlbmVyYXRvci0+V0tf
bGNmaXJzdCgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSkgLiAiRW5hYmxlZCI7Ci0gICAgICAg
ICAgICAkY29uZGl0aW9uYWwgPSAiaWYgKCR7ZW5hYmxlX2Z1bmN0aW9ufSgpKVxuIjsKKyAgICAg
ICAgICAgICRjb25kaXRpb25hbCA9ICJpZiAoJHtlbmFibGVfZnVuY3Rpb259KCkpXG4gICAgICAg
ICI7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoJGF0dHJFeHQtPnsiRG9Ob3RDaGVja0RvbWFp
blNlY3VyaXR5In0gJiYKQEAgLTE4NDQsMzEgKzE3NzYsMjUgQEAKICAgICAgICAgICAgICRwcm9w
ZXJ0eV9hdHRyaWJ1dGVzIC49ICJ8djg6OlJlYWRPbmx5IjsKICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCA8PEVORCk7CiAKLSAgLy8gJGNvbW1lbnRJbmZvCi0gICRjb25kaXRpb25hbCAk
dGVtcGxhdGUtPlNldEFjY2Vzc29yKAotICAgICAgdjg6OlN0cmluZzo6TmV3KCIkbmFtZSIpLAot
ICAgICAgJHtpbnRlcmZhY2VOYW1lfUludGVybmFsOjoke25hbWV9QXR0ckdldHRlciwKLSAgICAg
IDAsCi0gICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSwKLSAgICAgIHY4OjpBTExfQ0FOX1JF
QUQsCi0gICAgICBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KCRwcm9wZXJ0eV9h
dHRyaWJ1dGVzKSk7CisgICAgLy8gJGNvbW1lbnRJbmZvCisgICAgJHtjb25kaXRpb25hbH0kdGVt
cGxhdGUtPlNldEFjY2Vzc29yKHY4OjpTdHJpbmc6Ok5ldygiJG5hbWUiKSwgJHtpbnRlcmZhY2VO
YW1lfUludGVybmFsOjoke25hbWV9QXR0ckdldHRlciwgMCwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
KCksIHY4OjpBTExfQ0FOX1JFQUQsIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4o
JHByb3BlcnR5X2F0dHJpYnV0ZXMpKTsKIEVORAogICAgICAgICAgICRudW1fY2FsbGJhY2tzKys7
CiAgICAgICAgICAgbmV4dDsKICAgICAgIH0KIAogICAgICAgbXkgJHNpZ25hdHVyZSA9ICJkZWZh
dWx0X3NpZ25hdHVyZSI7Ci0gICAgICBpZiAoJGF0dHJFeHQtPnsiVjhEb05vdENoZWNrU2lnbmF0
dXJlIn0peworICAgICAgaWYgKCRhdHRyRXh0LT57IlY4RG9Ob3RDaGVja1NpZ25hdHVyZSJ9KSB7
CiAgICAgICAgICAgJHNpZ25hdHVyZSA9ICJ2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4oKSI7CiAg
ICAgICB9CiAKICAgICAgIGlmIChSZXF1aXJlc0N1c3RvbVNpZ25hdHVyZSgkZnVuY3Rpb24pKSB7
CiAgICAgICAgICAgJHNpZ25hdHVyZSA9ICIke25hbWV9X3NpZ25hdHVyZSI7Ci0gICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJcbiAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnJG5hbWUnXG4iLCBD
cmVhdGVDdXN0b21TaWduYXR1cmUoJGZ1bmN0aW9uKSk7CisgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJcbiAgICAvLyBDdXN0b20gU2lnbmF0dXJlICckbmFtZSdcbiIsIENyZWF0ZUN1c3Rv
bVNpZ25hdHVyZSgkZnVuY3Rpb24pKTsKICAgICAgIH0KIAogICAgICAgIyBOb3JtYWwgZnVuY3Rp
b24gY2FsbCBpcyBhIHRlbXBsYXRlCi0gICAgICBteSAkY2FsbGJhY2sgPSBHZXRGdW5jdGlvblRl
bXBsYXRlQ2FsbGJhY2tOYW1lKCRmdW5jdGlvbiwgJGRhdGFOb2RlKTsKKyAgICAgIG15ICRjYWxs
YmFjayA9IEdldEZ1bmN0aW9uVGVtcGxhdGVDYWxsYmFja05hbWUoJGZ1bmN0aW9uLCAkaW50ZXJm
YWNlTmFtZSk7CiAKICAgICAgIGlmICgkcHJvcGVydHlfYXR0cmlidXRlcyBlcSAidjg6OkRvbnRE
ZWxldGUiKSB7CiAgICAgICAgICAgJHByb3BlcnR5X2F0dHJpYnV0ZXMgPSAiIjsKQEAgLTE4ODIs
NyArMTgwOCw3IEBACiAgICAgICB9CiAKICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7
Ci0gICR7Y29uZGl0aW9uYWx9JHRlbXBsYXRlLT5TZXQodjg6OlN0cmluZzo6TmV3KCIkbmFtZSIp
LCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KCRjYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+KCksICR7c2lnbmF0dXJlfSkkcHJvcGVydHlfYXR0cmlidXRlcyk7CisgICAgJHtjb25kaXRp
b25hbH0kdGVtcGxhdGUtPlNldCh2ODo6U3RyaW5nOjpOZXcoIiRuYW1lIiksIHY4OjpGdW5jdGlv
blRlbXBsYXRlOjpOZXcoJGNhbGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSwgJHtzaWdu
YXR1cmV9KSRwcm9wZXJ0eV9hdHRyaWJ1dGVzKTsKIEVORAogICAgICAgJG51bV9jYWxsYmFja3Mr
KzsKICAgICB9CkBAIC0xODkxLDcgKzE4MTcsNyBAQAogCiAgICAgaWYgKCRoYXNfY29uc3RhbnRz
KSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci0gIGJhdGNoQ29uZmlndXJl
Q29uc3RhbnRzKGRlc2MsIHByb3RvLCAke2ludGVyZmFjZU5hbWV9X2NvbnN0cywgc2l6ZW9mKCR7
aW50ZXJmYWNlTmFtZX1fY29uc3RzKS9zaXplb2YoKiR7aW50ZXJmYWNlTmFtZX1fY29uc3RzKSk7
CisgICAgYmF0Y2hDb25maWd1cmVDb25zdGFudHMoZGVzYywgcHJvdG8sICR7aW50ZXJmYWNlTmFt
ZX1fY29uc3RzLCBzaXplb2YoJHtpbnRlcmZhY2VOYW1lfV9jb25zdHMpL3NpemVvZigqJHtpbnRl
cmZhY2VOYW1lfV9jb25zdHMpKTsKIEVORAogICAgIH0KIApAQCAtMTg5OSwyMyArMTgyNSwyMyBA
QAogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IikgewogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgPDxFTkQpOwogCi0gIHByb3RvLT5TZXRJbnRlcm5hbEZpZWxkQ291bnQo
VjhET01XaW5kb3c6OmludGVybmFsRmllbGRDb3VudCk7Ci0gIGRlc2MtPlNldEhpZGRlblByb3Rv
dHlwZSh0cnVlKTsKLSAgaW5zdGFuY2UtPlNldEludGVybmFsRmllbGRDb3VudChWOERPTVdpbmRv
dzo6aW50ZXJuYWxGaWVsZENvdW50KTsKLSAgLy8gU2V0IGFjY2VzcyBjaGVjayBjYWxsYmFja3Ms
IGJ1dCB0dXJuZWQgb2ZmIGluaXRpYWxseS4KLSAgLy8gV2hlbiBhIGNvbnRleHQgaXMgZGV0YWNo
ZWQgZnJvbSBhIGZyYW1lLCB0dXJuIG9uIHRoZSBhY2Nlc3MgY2hlY2suCi0gIC8vIFR1cm5pbmcg
b24gY2hlY2tzIGFsc28gaW52YWxpZGF0ZXMgaW5saW5lIGNhY2hlcyBvZiB0aGUgb2JqZWN0Lgot
ICBpbnN0YW5jZS0+U2V0QWNjZXNzQ2hlY2tDYWxsYmFja3MoVjhET01XaW5kb3c6Om5hbWVkU2Vj
dXJpdHlDaGVjaywgVjhET01XaW5kb3c6OmluZGV4ZWRTZWN1cml0eUNoZWNrLCB2ODo6SW50ZWdl
cjo6TmV3KFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XKSwgZmFsc2UpOworICAgIHByb3RvLT5TZXRJ
bnRlcm5hbEZpZWxkQ291bnQoVjhET01XaW5kb3c6OmludGVybmFsRmllbGRDb3VudCk7CisgICAg
ZGVzYy0+U2V0SGlkZGVuUHJvdG90eXBlKHRydWUpOworICAgIGluc3RhbmNlLT5TZXRJbnRlcm5h
bEZpZWxkQ291bnQoVjhET01XaW5kb3c6OmludGVybmFsRmllbGRDb3VudCk7CisgICAgLy8gU2V0
IGFjY2VzcyBjaGVjayBjYWxsYmFja3MsIGJ1dCB0dXJuZWQgb2ZmIGluaXRpYWxseS4KKyAgICAv
LyBXaGVuIGEgY29udGV4dCBpcyBkZXRhY2hlZCBmcm9tIGEgZnJhbWUsIHR1cm4gb24gdGhlIGFj
Y2VzcyBjaGVjay4KKyAgICAvLyBUdXJuaW5nIG9uIGNoZWNrcyBhbHNvIGludmFsaWRhdGVzIGlu
bGluZSBjYWNoZXMgb2YgdGhlIG9iamVjdC4KKyAgICBpbnN0YW5jZS0+U2V0QWNjZXNzQ2hlY2tD
YWxsYmFja3MoVjhET01XaW5kb3c6Om5hbWVkU2VjdXJpdHlDaGVjaywgVjhET01XaW5kb3c6Omlu
ZGV4ZWRTZWN1cml0eUNoZWNrLCB2ODo6SW50ZWdlcjo6TmV3KFY4Q2xhc3NJbmRleDo6RE9NV0lO
RE9XKSwgZmFsc2UpOwogRU5ECiAgICAgfQogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiTG9j
YXRpb24iKSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAKLSAgLy8gRm9y
IHNlY3VyaXR5IHJlYXNvbnMsIHRoZXNlIGZ1bmN0aW9ucyBhcmUgb24gdGhlIGluc3RhbmNlIGlu
c3RlYWQKLSAgLy8gb2Ygb24gdGhlIHByb3RvdHlwZSBvYmplY3QgdG8gaW5zdXJlIHRoYXQgdGhl
eSBjYW5ub3QgYmUgb3ZlcndyaXR0ZW4uCi0gIGluc3RhbmNlLT5TZXRBY2Nlc3Nvcih2ODo6U3Ry
aW5nOjpOZXcoInJlbG9hZCIpLCBWOExvY2F0aW9uOjpyZWxvYWRBY2Nlc3NvckdldHRlciwgMCwg
djg6OkhhbmRsZTx2ODo6VmFsdWU+KCksIHY4OjpBTExfQ0FOX1JFQUQsIHN0YXRpY19jYXN0PHY4
OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6OkRvbnREZWxldGUgfCB2ODo6UmVhZE9ubHkpKTsKLSAg
aW5zdGFuY2UtPlNldEFjY2Vzc29yKHY4OjpTdHJpbmc6Ok5ldygicmVwbGFjZSIpLCBWOExvY2F0
aW9uOjpyZXBsYWNlQWNjZXNzb3JHZXR0ZXIsIDAsIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpLCB2
ODo6QUxMX0NBTl9SRUFELCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpE
b250RGVsZXRlIHwgdjg6OlJlYWRPbmx5KSk7Ci0gIGluc3RhbmNlLT5TZXRBY2Nlc3Nvcih2ODo6
U3RyaW5nOjpOZXcoImFzc2lnbiIpLCBWOExvY2F0aW9uOjphc3NpZ25BY2Nlc3NvckdldHRlciwg
MCwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCksIHY4OjpBTExfQ0FOX1JFQUQsIHN0YXRpY19jYXN0
PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6OkRvbnREZWxldGUgfCB2ODo6UmVhZE9ubHkpKTsK
KyAgICAvLyBGb3Igc2VjdXJpdHkgcmVhc29ucywgdGhlc2UgZnVuY3Rpb25zIGFyZSBvbiB0aGUg
aW5zdGFuY2UgaW5zdGVhZAorICAgIC8vIG9mIG9uIHRoZSBwcm90b3R5cGUgb2JqZWN0IHRvIGVu
c3VyZSB0aGF0IHRoZXkgY2Fubm90IGJlIG92ZXJ3cml0dGVuLgorICAgIGluc3RhbmNlLT5TZXRB
Y2Nlc3Nvcih2ODo6U3RyaW5nOjpOZXcoInJlbG9hZCIpLCBWOExvY2F0aW9uOjpyZWxvYWRBY2Nl
c3NvckdldHRlciwgMCwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCksIHY4OjpBTExfQ0FOX1JFQUQs
IHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6OkRvbnREZWxldGUgfCB2ODo6
UmVhZE9ubHkpKTsKKyAgICBpbnN0YW5jZS0+U2V0QWNjZXNzb3Iodjg6OlN0cmluZzo6TmV3KCJy
ZXBsYWNlIiksIFY4TG9jYXRpb246OnJlcGxhY2VBY2Nlc3NvckdldHRlciwgMCwgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+KCksIHY4OjpBTExfQ0FOX1JFQUQsIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0
eUF0dHJpYnV0ZT4odjg6OkRvbnREZWxldGUgfCB2ODo6UmVhZE9ubHkpKTsKKyAgICBpbnN0YW5j
ZS0+U2V0QWNjZXNzb3Iodjg6OlN0cmluZzo6TmV3KCJhc3NpZ24iKSwgVjhMb2NhdGlvbjo6YXNz
aWduQWNjZXNzb3JHZXR0ZXIsIDAsIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpLCB2ODo6QUxMX0NB
Tl9SRUFELCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpEb250RGVsZXRl
IHwgdjg6OlJlYWRPbmx5KSk7CiBFTkQKICAgICB9CiAKQEAgLTE5MjUsNDAgKzE4NTEsNDUgQEAK
ICAgICB9CiAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKIAotICAvLyBDdXN0b20gdG9T
dHJpbmcgdGVtcGxhdGUKLSAgZGVzYy0+U2V0KGdldFRvU3RyaW5nTmFtZSgpLCBnZXRUb1N0cmlu
Z1RlbXBsYXRlKCkpOwotICByZXR1cm4gZGVzYzsKKyAgICAvLyBDdXN0b20gdG9TdHJpbmcgdGVt
cGxhdGUKKyAgICBkZXNjLT5TZXQoZ2V0VG9TdHJpbmdOYW1lKCksIGdldFRvU3RyaW5nVGVtcGxh
dGUoKSk7CisgICAgcmV0dXJuIGRlc2M7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiAke2NsYXNzTmFtZX06OkdldFJhd1RlbXBsYXRlKCkgewotICBzdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7Y2xhc3NOYW1lfV9yYXdfY2FjaGVf
ID0gY3JlYXRlUmF3VGVtcGxhdGUoKTsKLSAgcmV0dXJuICR7Y2xhc3NOYW1lfV9yYXdfY2FjaGVf
Owordjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7Y2xhc3NOYW1lfTo6R2V0
UmF3VGVtcGxhdGUoKQoreworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gJHtjbGFzc05hbWV9X3Jhd19jYWNoZV8gPSBjcmVhdGVSYXdUZW1wbGF0ZSgpOwor
ICAgIHJldHVybiAke2NsYXNzTmFtZX1fcmF3X2NhY2hlXzsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7Y2xhc3NOYW1lfTo6R2V0VGVtcGxhdGUoKSB7Ci0gIHN0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHtjbGFzc05hbWV9X2Nh
Y2hlXyA9IENvbmZpZ3VyZSR7Y2xhc3NOYW1lfVRlbXBsYXRlKEdldFJhd1RlbXBsYXRlKCkpOwot
ICByZXR1cm4gJHtjbGFzc05hbWV9X2NhY2hlXzsKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiAke2NsYXNzTmFtZX06OkdldFRlbXBsYXRlKClcCit7CisgICAgc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAke2NsYXNzTmFtZX1fY2FjaGVfID0g
Q29uZmlndXJlJHtjbGFzc05hbWV9VGVtcGxhdGUoR2V0UmF3VGVtcGxhdGUoKSk7CisgICAgcmV0
dXJuICR7Y2xhc3NOYW1lfV9jYWNoZV87CiB9CiAKLSR7bmF0aXZlVHlwZX0qICR7Y2xhc3NOYW1l
fTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpIHsKLSAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8JHtuYXRpdmVUeXBlfSo+KG9iamVjdC0+R2V0UG9pbnRlckZyb21JbnRl
cm5hbEZpZWxkKHY4RE9NV3JhcHBlck9iamVjdEluZGV4KSk7Ciske25hdGl2ZVR5cGV9KiAke2Ns
YXNzTmFtZX06OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQoreworICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PCR7bmF0aXZlVHlwZX0qPihvYmplY3QtPkdldFBvaW50
ZXJGcm9tSW50ZXJuYWxGaWVsZCh2OERPTVdyYXBwZXJPYmplY3RJbmRleCkpOwogfQogCi1ib29s
ICR7Y2xhc3NOYW1lfTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlKSB7
Ci0gIHJldHVybiBHZXRSYXdUZW1wbGF0ZSgpLT5IYXNJbnN0YW5jZSh2YWx1ZSk7Citib29sICR7
Y2xhc3NOYW1lfTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlKQorewor
ICAgIHJldHVybiBHZXRSYXdUZW1wbGF0ZSgpLT5IYXNJbnN0YW5jZSh2YWx1ZSk7CiB9CiAKIEVO
RAogCiAgICAgaWYgKCRpbXBsQ2xhc3NOYW1lIGVxICJET01XaW5kb3ciKSB7CiAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci12ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0VGVtcGxh
dGU+IFY4RE9NV2luZG93OjpHZXRTaGFkb3dPYmplY3RUZW1wbGF0ZSgpIHsKLSAgc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpPYmplY3RUZW1wbGF0ZT4gVjhET01XaW5kb3dTaGFkb3dPYmplY3Rf
Y2FjaGVfOwotICBpZiAoVjhET01XaW5kb3dTaGFkb3dPYmplY3RfY2FjaGVfLklzRW1wdHkoKSkg
ewotICAgIFY4RE9NV2luZG93U2hhZG93T2JqZWN0X2NhY2hlXyA9IHY4OjpQZXJzaXN0ZW50PHY4
OjpPYmplY3RUZW1wbGF0ZT46Ok5ldyh2ODo6T2JqZWN0VGVtcGxhdGU6Ok5ldygpKTsKLSAgICBD
b25maWd1cmVTaGFkb3dPYmplY3RUZW1wbGF0ZShWOERPTVdpbmRvd1NoYWRvd09iamVjdF9jYWNo
ZV8pOwotICB9Ci0gIHJldHVybiBWOERPTVdpbmRvd1NoYWRvd09iamVjdF9jYWNoZV87Cit2ODo6
UGVyc2lzdGVudDx2ODo6T2JqZWN0VGVtcGxhdGU+IFY4RE9NV2luZG93OjpHZXRTaGFkb3dPYmpl
Y3RUZW1wbGF0ZSgpCit7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3RUZW1w
bGF0ZT4gVjhET01XaW5kb3dTaGFkb3dPYmplY3RfY2FjaGVfOworICAgIGlmIChWOERPTVdpbmRv
d1NoYWRvd09iamVjdF9jYWNoZV8uSXNFbXB0eSgpKSB7CisgICAgICAgIFY4RE9NV2luZG93U2hh
ZG93T2JqZWN0X2NhY2hlXyA9IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3RUZW1wbGF0ZT46Ok5l
dyh2ODo6T2JqZWN0VGVtcGxhdGU6Ok5ldygpKTsKKyAgICAgICAgQ29uZmlndXJlU2hhZG93T2Jq
ZWN0VGVtcGxhdGUoVjhET01XaW5kb3dTaGFkb3dPYmplY3RfY2FjaGVfKTsKKyAgICB9CisgICAg
cmV0dXJuIFY4RE9NV2luZG93U2hhZG93T2JqZWN0X2NhY2hlXzsKIH0KIEVORAogICAgIH0KQEAg
LTE5ODYsMTggKzE5MTcsMTkgQEAKIAogICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAK
LXY4OjpIYW5kbGU8djg6Ok9iamVjdD4gJHtjbGFzc05hbWV9Ojp3cmFwKCR7bmF0aXZlVHlwZX0q
IGltcGwke2ZvcmNlTmV3T2JqZWN0SW5wdXR9KSB7Ci0gIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcHBlcjsKLSAgVjhQcm94eSogcHJveHkgPSAwOwordjg6OkhhbmRsZTx2ODo6T2JqZWN0PiAk
e2NsYXNzTmFtZX06OndyYXAoJHtuYXRpdmVUeXBlfSogaW1wbCR7Zm9yY2VOZXdPYmplY3RJbnB1
dH0pCit7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyOworICAgIFY4UHJveHkq
IHByb3h5ID0gMDsKIEVORAogCiAgICAgaWYgKElzTm9kZVN1YlR5cGUoJGRhdGFOb2RlKSkgewog
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwotICBpZiAoaW1wbC0+ZG9jdW1lbnQo
KSkgewotICAgIHByb3h5ID0gVjhQcm94eTo6cmV0cmlldmUoaW1wbC0+ZG9jdW1lbnQoKS0+ZnJh
bWUoKSk7Ci0gICAgaWYgKHByb3h5ICYmIHN0YXRpY19jYXN0PE5vZGUqPihpbXBsLT5kb2N1bWVu
dCgpKSA9PSBzdGF0aWNfY2FzdDxOb2RlKj4oaW1wbCkpCi0gICAgICBwcm94eS0+d2luZG93U2hl
bGwoKS0+aW5pdENvbnRleHRJZk5lZWRlZCgpOwotICB9CisgICAgaWYgKGltcGwtPmRvY3VtZW50
KCkpIHsKKyAgICAgICAgcHJveHkgPSBWOFByb3h5OjpyZXRyaWV2ZShpbXBsLT5kb2N1bWVudCgp
LT5mcmFtZSgpKTsKKyAgICAgICAgaWYgKHByb3h5ICYmIHN0YXRpY19jYXN0PE5vZGUqPihpbXBs
LT5kb2N1bWVudCgpKSA9PSBzdGF0aWNfY2FzdDxOb2RlKj4oaW1wbCkpCisgICAgICAgICAgICBw
cm94eS0+d2luZG93U2hlbGwoKS0+aW5pdENvbnRleHRJZk5lZWRlZCgpOworICAgIH0KIAogRU5E
CiAgICAgfQpAQCAtMjAwNSw2MyArMTkzNyw2NCBAQAogICAgIGlmICgkZG9tTWFwRnVuY3Rpb24p
IHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgIGlmICghZm9yY2VOZXdPYmplY3QpIHtc
biIpIGlmIElzRE9NTm9kZVR5cGUoJGludGVyZmFjZU5hbWUpOwogICAgICAgICBpZiAoSXNOb2Rl
U3ViVHlwZSgkZGF0YU5vZGUpKSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
d3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6Z2V0V3JhcHBlcihpbXBsKTtcbiIpOworICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6Z2V0V3Jh
cHBlcihpbXBsKTtcbiIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgIHdyYXBwZXIgPSAke2RvbU1hcEZ1bmN0aW9ufS5nZXQoaW1wbCk7XG4iKTsK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHdyYXBwZXIgPSAke2RvbU1hcEZ1
bmN0aW9ufS5nZXQoaW1wbCk7XG4iKTsKICAgICAgICAgfQogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgPDxFTkQpOwotICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQotICAgIHJldHVybiB3cmFw
cGVyOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB3cmFwcGVy
OwogRU5ECi0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICB9XG4iKSBpZiBJc0RPTU5vZGVU
eXBlKCRpbnRlcmZhY2VOYW1lKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxu
IikgaWYgSXNET01Ob2RlVHlwZSgkaW50ZXJmYWNlTmFtZSk7CiAgICAgfQogICAgIGlmIChJc05v
ZGVTdWJUeXBlKCRkYXRhTm9kZSkpIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5E
KTsKIAotICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0OwotICBpZiAocHJveHkpCi0g
ICAgY29udGV4dCA9IHByb3h5LT5jb250ZXh0KCk7CisgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4
dD4gY29udGV4dDsKKyAgICBpZiAocHJveHkpCisgICAgICAgIGNvbnRleHQgPSBwcm94eS0+Y29u
dGV4dCgpOwogCi0gIC8vIEVudGVyIHRoZSBub2RlJ3MgY29udGV4dCBhbmQgY3JlYXRlIHRoZSB3
cmFwcGVyIGluIHRoYXQgY29udGV4dC4KLSAgaWYgKCFjb250ZXh0LklzRW1wdHkoKSkKLSAgICBj
b250ZXh0LT5FbnRlcigpOworICAgIC8vIEVudGVyIHRoZSBub2RlJ3MgY29udGV4dCBhbmQgY3Jl
YXRlIHRoZSB3cmFwcGVyIGluIHRoYXQgY29udGV4dC4KKyAgICBpZiAoIWNvbnRleHQuSXNFbXB0
eSgpKQorICAgICAgICBjb250ZXh0LT5FbnRlcigpOwogRU5ECiAgICAgfQogCiAgICAgcHVzaChA
aW1wbENvbnRlbnQsIDw8RU5EKTsKLSAgd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6aW5zdGFudGlh
dGVWOE9iamVjdChwcm94eSwgJHt3cmFwcGVyVHlwZX0sIGltcGwpOworICAgIHdyYXBwZXIgPSBW
OERPTVdyYXBwZXI6Omluc3RhbnRpYXRlVjhPYmplY3QocHJveHksICR7d3JhcHBlclR5cGV9LCBp
bXBsKTsKIEVORAogCiAgICAgaWYgKElzTm9kZVN1YlR5cGUoJGRhdGFOb2RlKSkgewogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwotICAvLyBFeGl0IHRoZSBub2RlJ3MgY29udGV4
dCBpZiBpdCB3YXMgZW50ZXJlZC4KLSAgaWYgKCFjb250ZXh0LklzRW1wdHkoKSkKLSAgICBjb250
ZXh0LT5FeGl0KCk7CisgICAgLy8gRXhpdCB0aGUgbm9kZSdzIGNvbnRleHQgaWYgaXQgd2FzIGVu
dGVyZWQuCisgICAgaWYgKCFjb250ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgY29udGV4dC0+RXhp
dCgpOwogRU5ECiAgICAgfQogCiAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKLSAgaWYg
KHdyYXBwZXIuSXNFbXB0eSgpKQotICAgIHJldHVybiB3cmFwcGVyOworICAgIGlmICh3cmFwcGVy
LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiBFTkQKLSAgICBwdXNoKEBpbXBs
Q29udGVudCwgIlxuICBpbXBsLT5yZWYoKTtcbiIpIGlmIElzUmVmUHRyVHlwZSgkaW50ZXJmYWNl
TmFtZSk7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiAgICBpbXBsLT5yZWYoKTtcbiIpIGlm
IElzUmVmUHRyVHlwZSgkaW50ZXJmYWNlTmFtZSk7CiAKICAgICBpZiAoJGRvbU1hcEZ1bmN0aW9u
KSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci0gICR7ZG9tTWFwRnVuY3Rp
b259LnNldChpbXBsLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KHdyYXBwZXIpKTsK
KyAgICAke2RvbU1hcEZ1bmN0aW9ufS5zZXQoaW1wbCwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVj
dD46Ok5ldyh3cmFwcGVyKSk7CiBFTkQKICAgICB9CiAKICAgICBwdXNoKEBpbXBsQ29udGVudCwg
PDxFTkQpOwotICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcHBlcjsKIH0KIEVORAog
CiAgICAgaWYgKElzUmVmUHRyVHlwZSgkaW50ZXJmYWNlTmFtZSkpIHsKICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsIDw8RU5EKTsKIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoUGFzc1Jl
ZlB0cjwke25hdGl2ZVR5cGV9ID4gaW1wbCR7Zm9yY2VOZXdPYmplY3RJbnB1dH0pIHsKLSAgcmV0
dXJuIHRvVjgoaW1wbC5nZXQoKSR7Zm9yY2VOZXdPYmplY3RDYWxsfSk7Cit2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdG9WOChQYXNzUmVmUHRyPCR7bmF0aXZlVHlwZX0gPiBpbXBsJHtmb3JjZU5ld09i
amVjdElucHV0fSkKK3sKKyAgICByZXR1cm4gdG9WOChpbXBsLmdldCgpJHtmb3JjZU5ld09iamVj
dENhbGx9KTsKIH0KIEVORAogICAgIH0KQEAgLTIwNjksMTAgKzIwMDIsMTEgQEAKICAgICBpZiAo
IUhhc0N1c3RvbVRvVjhJbXBsZW1lbnRhdGlvbigkZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1lKSkg
ewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwogCi12ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdG9WOCgke25hdGl2ZVR5cGV9KiBpbXBsJHtmb3JjZU5ld09iamVjdElucHV0fSkgewot
ICBpZiAoIWltcGwpCi0gICAgcmV0dXJuIHY4OjpOdWxsKCk7Ci0gIHJldHVybiAke2NsYXNzTmFt
ZX06OndyYXAoaW1wbCR7Zm9yY2VOZXdPYmplY3RDYWxsfSk7Cit2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOCgke25hdGl2ZVR5cGV9KiBpbXBsJHtmb3JjZU5ld09iamVjdElucHV0fSkKK3sKKyAg
ICBpZiAoIWltcGwpCisgICAgICAgIHJldHVybiB2ODo6TnVsbCgpOworICAgIHJldHVybiAke2Ns
YXNzTmFtZX06OndyYXAoaW1wbCR7Zm9yY2VOZXdPYmplY3RDYWxsfSk7CiB9CiBFTkQKICAgICB9
CkBAIC0yMjQwLDkgKzIxNzQsNyBAQAogICAgIGlmICgkcmV0dXJuVHlwZSBlcSAidm9pZCIpIHsK
ICAgICAgICAgJHJlc3VsdCAuPSAkaW5kZW50IC4gIiRmdW5jdGlvblN0cmluZztcbiI7CiAgICAg
fSBlbHNpZiAoJGNvcHlGaXJzdCkgewotICAgICAgICAkcmVzdWx0IC49Ci0gICAgICAgICAgICAk
aW5kZW50IC4gR2V0TmF0aXZlVHlwZSgkcmV0dXJuVHlwZSwgMCkgLiAiIHJlc3VsdCA9ICppbXA7
XG4iIC4KLSAgICAgICAgICAgICRpbmRlbnQgLiAiJGZ1bmN0aW9uU3RyaW5nO1xuIjsKKyAgICAg
ICAgJHJlc3VsdCAuPSAkaW5kZW50IC4gR2V0TmF0aXZlVHlwZSgkcmV0dXJuVHlwZSwgMCkgLiAi
IHJlc3VsdCA9ICppbXA7XG4iIC4gJGluZGVudCAuICIkZnVuY3Rpb25TdHJpbmc7XG4iOwogICAg
IH0gZWxzaWYgKCRyZXR1cm5zTGlzdEl0ZW1Qb2RUeXBlKSB7CiAgICAgICAgICRyZXN1bHQgLj0g
JGluZGVudCAuICJSZWZQdHI8U1ZHUE9ETGlzdEl0ZW08JG5hdGl2ZVJldHVyblR5cGU+ID4gcmVz
dWx0ID0gJGZ1bmN0aW9uU3RyaW5nO1xuIjsKICAgICB9IGVsc2lmIChAeyRmdW5jdGlvbi0+cmFp
c2VzRXhjZXB0aW9uc30gb3IgJHJldHVybnNQb2RUeXBlIG9yICRpc1BvZFR5cGUgb3IgSXNTVkdU
eXBlTmVlZGluZ0NvbnRleHRQYXJhbWV0ZXIoJHJldHVyblR5cGUpKSB7CkBAIC0yNDA5LDc1ICsy
MzQxLDYgQEAKICAgICByZXR1cm4gIiR7dHlwZX0qIjsKIH0KIAotCi1teSAldHlwZUNhbkZhaWxD
b252ZXJzaW9uID0gKAotICAgICJBdHRyIiA9PiAxLAotICAgICJXZWJHTEFycmF5IiA9PiAwLAot
ICAgICJXZWJHTEJ1ZmZlciIgPT4gMCwKLSAgICAiV2ViR0xCeXRlQXJyYXkiID0+IDAsCi0gICAg
IldlYkdMVW5zaWduZWRCeXRlQXJyYXkiID0+IDAsCi0gICAgIldlYkdMQ29udGV4dEF0dHJpYnV0
ZXMiID0+IDAsCi0gICAgIldlYkdMRmxvYXRBcnJheSIgPT4gMCwKLSAgICAiV2ViR0xGcmFtZWJ1
ZmZlciIgPT4gMCwKLSAgICAiQ2FudmFzR3JhZGllbnQiID0+IDAsCi0gICAgIldlYkdMSW50QXJy
YXkiID0+IDAsCi0gICAgIkNhbnZhc1BpeGVsQXJyYXkiID0+IDAsCi0gICAgIldlYkdMUHJvZ3Jh
bSIgPT4gMCwKLSAgICAiV2ViR0xSZW5kZXJidWZmZXIiID0+IDAsCi0gICAgIldlYkdMU2hhZGVy
IiA9PiAwLAotICAgICJXZWJHTFNob3J0QXJyYXkiID0+IDAsCi0gICAgIldlYkdMVGV4dHVyZSIg
PT4gMCwKLSAgICAiV2ViR0xVbmlmb3JtTG9jYXRpb24iID0+IDAsCi0gICAgIkNvbXBhcmVIb3ci
ID0+IDAsCi0gICAgIkRhdGFHcmlkQ29sdW1uIiA9PiAwLAotICAgICJET01TdHJpbmciID0+IDAs
Ci0gICAgIkRPTVdpbmRvdyIgPT4gMCwKLSAgICAiRG9jdW1lbnRUeXBlIiA9PiAwLAotICAgICJF
bGVtZW50IiA9PiAwLAotICAgICJFdmVudCIgPT4gMCwKLSAgICAiRXZlbnRMaXN0ZW5lciIgPT4g
MCwKLSAgICAiRXZlbnRUYXJnZXQiID0+IDAsCi0gICAgIkhUTUxDYW52YXNFbGVtZW50IiA9PiAw
LAotICAgICJIVE1MRWxlbWVudCIgPT4gMCwKLSAgICAiSFRNTEltYWdlRWxlbWVudCIgPT4gMCwK
LSAgICAiSFRNTE9wdGlvbkVsZW1lbnQiID0+IDAsCi0gICAgIkhUTUxWaWRlb0VsZW1lbnQiID0+
IDAsCi0gICAgIk5vZGUiID0+IDAsCi0gICAgIk5vZGVGaWx0ZXIiID0+IDAsCi0gICAgIk1lc3Nh
Z2VQb3J0IiA9PiAwLAotICAgICJOU1Jlc29sdmVyIiA9PiAwLAotICAgICJSYW5nZSIgPT4gMCwK
LSAgICAiU1FMUmVzdWx0U2V0IiA9PiAwLAotICAgICJTdG9yYWdlIiA9PiAwLAotICAgICJTVkdB
bmdsZSIgPT4gMSwKLSAgICAiU1ZHRWxlbWVudCIgPT4gMCwKLSAgICAiU1ZHTGVuZ3RoIiA9PiAx
LAotICAgICJTVkdNYXRyaXgiID0+IDEsCi0gICAgIlNWR051bWJlciIgPT4gMCwKLSAgICAiU1ZH
UGFpbnRUeXBlIiA9PiAwLAotICAgICJTVkdQYXRoU2VnIiA9PiAwLAotICAgICJTVkdQb2ludCIg
PT4gMSwKLSAgICAiU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyIgPT4gMSwKLSAgICAiU1ZHUmVjdCIg
PT4gMSwKLSAgICAiU1ZHVHJhbnNmb3JtIiA9PiAxLAotICAgICJUb3VjaExpc3QiID0+IDAsCi0g
ICAgIlZvaWRDYWxsYmFjayIgPT4gMSwKLSAgICAiV2ViS2l0Q1NTTWF0cml4IiA9PiAwLAotICAg
ICJXZWJLaXRQb2ludCIgPT4gMCwKLSAgICAiWFBhdGhFdmFsdWF0b3IiID0+IDAsCi0gICAgIlhQ
YXRoTlNSZXNvbHZlciIgPT4gMCwKLSAgICAiWFBhdGhSZXN1bHQiID0+IDAsCi0gICAgImJvb2xl
YW4iID0+IDAsCi0gICAgImRvdWJsZSIgPT4gMCwKLSAgICAiZmxvYXQiID0+IDAsCi0gICAgImxv
bmciID0+IDAsCi0gICAgInVuc2lnbmVkIGxvbmciID0+IDAsCi0gICAgInVuc2lnbmVkIHNob3J0
IiA9PiAwLAotICAgICJsb25nIGxvbmciID0+IDAsCi0gICAgInVuc2lnbmVkIGxvbmcgbG9uZyIg
PT4gMAotKTsKLQotCiBzdWIgVHJhbnNsYXRlUGFyYW1ldGVyCiB7CiAgICAgbXkgJHNpZ25hdHVy
ZSA9IHNoaWZ0OwpAQCAtMjUxMCwxMCArMjM3Myw5IEBACiAgICAgbXkgJHR5cGUgPSBHZXRUeXBl
RnJvbVNpZ25hdHVyZSgkc2lnbmF0dXJlKTsKIAogICAgICRpbXBsSW5jbHVkZXN7IkV4Y2VwdGlv
bkNvZGUuaCJ9ID0gMSBpZiAkdHlwZSBlcSAiQXR0ciI7Ci0KLSAgICByZXR1cm4gJHR5cGVDYW5G
YWlsQ29udmVyc2lvbnskdHlwZX0gaWYgZXhpc3RzICR0eXBlQ2FuRmFpbENvbnZlcnNpb257JHR5
cGV9OwotCi0gICAgZGllICJEb24ndCBrbm93IHdoZXRoZXIgYSBKUyB2YWx1ZSBjYW4gZmFpbCBj
b252ZXJzaW9uIHRvIHR5cGUgJHR5cGUuIjsKKyAgICByZXR1cm4gMSBpZiAkdHlwZSBlcSAiQXR0
ciI7CisgICAgcmV0dXJuIDEgaWYgJHR5cGUgZXEgIlZvaWRDYWxsYmFjayI7CisgICAgcmV0dXJu
IEJhc2ljVHlwZUNhbkZhaWxDb252ZXJzaW9uKCRzaWduYXR1cmUpOwogfQogCiBzdWIgSlNWYWx1
ZVRvTmF0aXZlCkBAIC0yNTk5LDcgKzI0NjEsNiBAQAogICAgIH0KIH0KIAotCiBzdWIgR2V0VjhI
ZWFkZXJOYW1lCiB7CiAgICAgbXkgJHR5cGUgPSBzaGlmdDsKQEAgLTI2MTAsMTQgKzI0NzEsMTMg
QEAKICAgICByZXR1cm4gIlY4JHt0eXBlfS5oIjsKIH0KIAotCiBzdWIgQ3JlYXRlQ3VzdG9tU2ln
bmF0dXJlCiB7CiAgICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7CiAgICAgbXkgJGNvdW50ID0gQHsk
ZnVuY3Rpb24tPnBhcmFtZXRlcnN9OwogICAgIG15ICRuYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1
cmUtPm5hbWU7Ci0gICAgbXkgJHJlc3VsdCA9ICIgIGNvbnN0IGludCAke25hbWV9X2FyZ2MgPSAk
e2NvdW50fTtcbiIgLgotICAgICAgIiAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
JHtuYW1lfV9hcmd2WyR7bmFtZX1fYXJnY10gPSB7ICI7CisgICAgbXkgJHJlc3VsdCA9ICIgICAg
Y29uc3QgaW50ICR7bmFtZX1fYXJnYyA9ICR7Y291bnR9O1xuIiAuCisgICAgICAiICAgIHY4OjpI
YW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7bmFtZX1fYXJndlske25hbWV9X2FyZ2NdID0g
eyAiOwogICAgIG15ICRmaXJzdCA9IDE7CiAgICAgZm9yZWFjaCBteSAkcGFyYW1ldGVyIChAeyRm
dW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKICAgICAgICAgaWYgKCRmaXJzdCkgeyAkZmlyc3QgPSAw
OyB9CkBAIC0yNjM4LDcgKzI0OTgsNyBAQAogICAgICAgICB9CiAgICAgfQogICAgICRyZXN1bHQg
Lj0gIiB9O1xuIjsKLSAgICAkcmVzdWx0IC49ICIgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4g
JHtuYW1lfV9zaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgJHtuYW1lfV9hcmdj
LCAke25hbWV9X2FyZ3YpO1xuIjsKKyAgICAkcmVzdWx0IC49ICIgICAgdjg6OkhhbmRsZTx2ODo6
U2lnbmF0dXJlPiAke25hbWV9X3NpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCAk
e25hbWV9X2FyZ2MsICR7bmFtZX1fYXJndik7XG4iOwogICAgIHJldHVybiAkcmVzdWx0OwogfQog
CkBAIC0yNjUzLDkgKzI1MTMsOSBAQAogICAgIH0KIAogICAgIGZvcmVhY2ggbXkgJHBhcmFtZXRl
ciAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSB7Ci0gICAgICBpZiAoSXNXcmFwcGVyVHlwZSgk
cGFyYW1ldGVyLT50eXBlKSkgewotICAgICAgICAgIHJldHVybiAxOwotICAgICAgfQorICAgICAg
ICBpZiAoSXNXcmFwcGVyVHlwZSgkcGFyYW1ldGVyLT50eXBlKSkgeworICAgICAgICAgICAgcmV0
dXJuIDE7CisgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lv
biA1NTQ3MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9t
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAxLDcgKzMwMSw3IEBACiAKICAgICBpZiAobGlzdGVu
ZXIpIHsKICAgICAgICAgaW1wLT5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIs
IHVzZUNhcHR1cmUpOwotICAgICAgICBjcmVhdGVIaWRkZW5EZXBlbmRlbmN5KGFyZ3MuSG9sZGVy
KCksIGFyZ3NbMV0sIGNhY2hlSW5kZXgpOworICAgICAgICBjcmVhdGVIaWRkZW5EZXBlbmRlbmN5
KGFyZ3MuSG9sZGVyKCksIGFyZ3NbMV0sIGV2ZW50TGlzdGVuZXJDYWNoZUluZGV4KTsKICAgICB9
CiAKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwpAQCAtMzMzLDcgKzMzMyw3IEBACiAKICAg
ICBpZiAobGlzdGVuZXIpIHsKICAgICAgICAgaW1wLT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50
VHlwZSwgbGlzdGVuZXIuZ2V0KCksIHVzZUNhcHR1cmUpOwotICAgICAgICByZW1vdmVIaWRkZW5E
ZXBlbmRlbmN5KGFyZ3MuSG9sZGVyKCksIGFyZ3NbMV0sIGNhY2hlSW5kZXgpOworICAgICAgICBy
ZW1vdmVIaWRkZW5EZXBlbmRlbmN5KGFyZ3MuSG9sZGVyKCksIGFyZ3NbMV0sIGV2ZW50TGlzdGVu
ZXJDYWNoZUluZGV4KTsKICAgICB9CiAKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwo=
</data>
<flag name="review"
          id="32938"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
      

    </bug>

</bugzilla>