<?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>37367</bug_id>
          
          <creation_ts>2010-04-09 15:29:56 -0700</creation_ts>
          <short_desc>Make Generated V8 code adhere to webkit style</short_desc>
          <delta_ts>2010-04-20 20:53:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit 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="Yaar Schnitman">yaar</reporter>
          <assigned_to name="Nate Chapin">japhet</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>210970</commentid>
    <comment_count>0</comment_count>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2010-04-09 15:29:56 -0700</bug_when>
    <thetext>I almost adheres, but there are a few things it doesn&apos;t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215034</commentid>
    <comment_count>1</comment_count>
      <attachid>53901</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-04-20 15:58:32 -0700</bug_when>
    <thetext>Created attachment 53901
patch

This also fixes a bunch of style violations the TestObj.idl doesn&apos;t trigger.  I ran check-webkit-style over the entire generated bindings, and there now is only a single violation (in V8DOMWindow.cpp), which would be non-trivial to resolve and probably cause the script to become substantially less readable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215040</commentid>
    <comment_count>2</comment_count>
      <attachid>53901</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-20 16:05:54 -0700</bug_when>
    <thetext>Comment on attachment 53901
patch

awesome. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215051</commentid>
    <comment_count>3</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-04-20 16:29:07 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/57936</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215124</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-20 20:53:39 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/57936 might have broken Qt Windows 32-bit Debug
The following changes are on the blame list:
http://trac.webkit.org/changeset/57936
http://trac.webkit.org/changeset/57937
http://trac.webkit.org/changeset/57938
http://trac.webkit.org/changeset/57939
http://trac.webkit.org/changeset/57940
http://trac.webkit.org/changeset/57941
http://trac.webkit.org/changeset/57942
http://trac.webkit.org/changeset/57943
http://trac.webkit.org/changeset/57944
http://trac.webkit.org/changeset/57945
http://trac.webkit.org/changeset/57946</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53901</attachid>
            <date>2010-04-20 15:58:32 -0700</date>
            <delta_ts>2010-04-20 16:05:54 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>51781</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzkyMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTAtMDQtMjAgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzczNjcKKworICAgICAgICBG
aXggc3R5bGUgdmlvbGF0aW9ucyBpbiBjb2RlIGdlbmVyYXRlZCBieSBDb2RlR2VuZXJhdG9yVjgu
cG0uCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC90ZXN0L1Y4VGVzdE9iai5jcHA6CisgICAgICAgICogYmluZGlu
Z3MvdjgvdGVzdC9WOFRlc3RPYmouaDoKKwogMjAxMC0wNC0yMCAgVGltb3RoeSBIYXRjaGVyICA8
dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IG1hdGNoaW5nIG9mICJmaWxlOi8vLyoi
IHBhdHRlcm5zIGJ5IG5vdCB0cnlpbmcgdG8gY29tcGFyZSB0aGUgaG9zdC4gVGhlIGhvc3QgaXMK
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQkocmV2
aXNpb24gNTc5MjEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4
LnBtCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIsMTkgKzIzMiwyNiBAQAogICAgIEBoZWFkZXJDb250
ZW50ID0gc3BsaXQoIlxyIiwgJGhlYWRlclRlbXBsYXRlKTsKIAogICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICJcbiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuXG4iKSBpZiAkY29uZGl0aW9uYWxT
dHJpbmc7Ci0gICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxuI2lmbmRlZiAkY2xhc3NOYW1lIiAu
ICJfSCIpOwotICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbiNkZWZpbmUgJGNsYXNzTmFtZSIg
LiAiX0hcblxuIik7CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxuI2lmbmRlZiAkY2xhc3NO
YW1lIiAuICJfaCIpOworICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbiNkZWZpbmUgJGNsYXNz
TmFtZSIgLiAiX2hcblxuIik7CiAKICAgICAjIEdldCBjb3JyZWN0IHBhc3Mvc3RvcmUgdHlwZXMg
cmVzcGVjdGluZyBQT0RUeXBlIGZsYWcKICAgICBteSAkcG9kVHlwZSA9ICRkYXRhTm9kZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IlBPRFR5cGUifTsKIAotICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIjaW5jbHVkZSBcIiRwb2RUeXBlLmhcIlxuIikgaWYgJHBvZFR5cGUgYW5kICgkcG9kVHlwZSBu
ZSAiZG91YmxlIiBhbmQgJHBvZFR5cGUgbmUgImZsb2F0IiBhbmQgJHBvZFR5cGUgbmUgIlJHQkEz
MiIpOworICAgIG15ICVoZWFkZXJJbmNsdWVzID0gKCk7CisgICAgJGhlYWRlckluY2x1ZGVzeyIk
cG9kVHlwZS5oIn0gPSAxIGlmICRwb2RUeXBlIGFuZCAoJHBvZFR5cGUgbmUgImRvdWJsZSIgYW5k
ICRwb2RUeXBlIG5lICJmbG9hdCIgYW5kICRwb2RUeXBlIG5lICJSR0JBMzIiKTsKKyAgICAkaGVh
ZGVySW5jbHVkZXN7IlN0cmluZ0hhc2guaCJ9ID0gMTsKKyAgICAkaGVhZGVySW5jbHVkZXN7Ildy
YXBwZXJUeXBlSW5mby5oIn0gPSAxOworICAgIG15ICRoZWFkZXJDbGFzc0luY2x1ZGUgPSBHZXRI
ZWFkZXJDbGFzc0luY2x1ZGUoJGltcGxDbGFzc05hbWUpOworICAgICRoZWFkZXJJbmNsdWRlc3sk
aGVhZGVyQ2xhc3NJbmNsdWRlfSA9IDEgaWYgJGhlYWRlckNsYXNzSW5jbHVkZSBuZSAiIjsKIAor
ICAgIGZvcmVhY2ggbXkgJGhlYWRlckluY2x1ZGUgKHNvcnQga2V5cyglaGVhZGVySW5jbHVkZXMp
KSB7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjaW5jbHVkZSBcIiR7aGVhZGVySW5j
bHVkZX1cIlxuIik7CisgICAgfQorCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNpbmNsdWRl
IDx2OC5oPlxuIik7CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPlxuIik7Ci0gICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNpbmNsdWRlIFwiU3RyaW5n
SGFzaC5oXCJcbiIpOwotICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjaW5jbHVkZSBcIldyYXBw
ZXJUeXBlSW5mby5oXCJcbiIpOwotICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIEdldEhlYWRlckNs
YXNzSW5jbHVkZSgkaW1wbENsYXNzTmFtZSkpOworICAgIAogICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICJcbm5hbWVzcGFjZSBXZWJDb3JlIHtcbiIpOwogICAgIGlmICgkcG9kVHlwZSkgewogICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG50ZW1wbGF0ZTx0eXBlbmFtZSBQT0RUeXBlPiBj
bGFzcyBWOFNWR1BPRFR5cGVXcmFwcGVyO1xuIik7CkBAIC0zMzMsMTYgKzM0MCwxNiBAQAogICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKIH07CiAKLSAgICB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdG9WOCgke25hdGl2ZVR5cGV9KiR7Zm9yY2VOZXdPYmplY3RQYXJhbWV0ZXJ9KTsKK3Y4
OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KCR7bmF0aXZlVHlwZX0qJHtmb3JjZU5ld09iamVjdFBh
cmFtZXRlcn0pOwogRU5ECiAgICAgaWYgKElzUmVmUHRyVHlwZSgkaW1wbENsYXNzTmFtZSkpIHsK
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwotICAgIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB0b1Y4KFBhc3NSZWZQdHI8JHtuYXRpdmVUeXBlfSA+JHtmb3JjZU5ld09iamVjdFBh
cmFtZXRlcn0pOwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoUGFzc1JlZlB0cjwke25hdGl2
ZVR5cGV9ID4ke2ZvcmNlTmV3T2JqZWN0UGFyYW1ldGVyfSk7CiBFTkQKICAgICB9CiAKICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAifVxuXG4iKTsKLSAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
I2VuZGlmIC8vICRjbGFzc05hbWUiIC4gIl9IXG4iKTsKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiI2VuZGlmIC8vICRjbGFzc05hbWUiIC4gIl9oXG4iKTsKIAogICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIjZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cblxuIikgaWYgJGNvbmRpdGlv
bmFsU3RyaW5nOwogfQpAQCAtMzc5LDggKzM4Niw4IEBACiAgICAgICAgICRjbGFzc05hbWUgPX4g
cy9BYnN8UmVsLy87CiAgICAgfQogICAgIHJldHVybiAiIiBpZiAoQXZvaWRJbmNsdXNpb25PZlR5
cGUoJGNsYXNzTmFtZSkpOwotICAgIHJldHVybiAiI2luY2x1ZGUgXCJTVkdBbmltYXRlZFRlbXBs
YXRlLmhcIlxuIiBpZiAoJGNvZGVHZW5lcmF0b3ItPklzU1ZHQW5pbWF0ZWRUeXBlKCRjbGFzc05h
bWUpKTsKLSAgICByZXR1cm4gIiNpbmNsdWRlIFwiJHtjbGFzc05hbWV9LmhcIlxuIjsKKyAgICBy
ZXR1cm4gIlNWR0FuaW1hdGVkVGVtcGxhdGUuaCIgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1NWR0Fu
aW1hdGVkVHlwZSgkY2xhc3NOYW1lKSk7CisgICAgcmV0dXJuICIke2NsYXNzTmFtZX0uaCI7CiB9
CiAKIHN1YiBHZW5lcmF0ZUhlYWRlckN1c3RvbUludGVybmFsRmllbGRJbmRpY2VzCkBAIC01Mzcs
MTkgKzU0NCwxOSBAQAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke2Z1bmNOYW1lfUF0
dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCiB7CiAgICAgSU5DX1NUQVRTKFwiRE9NLiRpbXBsQ2xhc3NOYW1lLiRmdW5jTmFt
ZS5fZ2V0XCIpOwotICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gcHJpdmF0ZV90ZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
Pjo6TmV3KCRuZXdUZW1wbGF0ZVN0cmluZyk7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldygkbmV3VGVtcGxhdGVTdHJpbmcpOwogICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gaG9sZGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKCR7
Y2xhc3NOYW1lfTo6R2V0VGVtcGxhdGUoKSwgaW5mby5UaGlzKCkpOwogICAgIGlmIChob2xkZXIu
SXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIGNhbiBvbmx5IHJlYWNoIGhlcmUgYnkgJ29iamVjdC5f
X3Byb3RvX18uZnVuYycsIGFuZCBpdCBzaG91bGQgcGFzc2VkCiAgICAgICAgIC8vIGRvbWFpbiBz
ZWN1cml0eSBjaGVjayBhbHJlYWR5Ci0gICAgICAgIHJldHVybiBwcml2YXRlX3RlbXBsYXRlLT5H
ZXRGdW5jdGlvbigpOworICAgICAgICByZXR1cm4gcHJpdmF0ZVRlbXBsYXRlLT5HZXRGdW5jdGlv
bigpOwogICAgIH0KICAgICAke2ltcGxDbGFzc05hbWV9KiBpbXAgPSAke2NsYXNzTmFtZX06OnRv
TmF0aXZlKGhvbGRlcik7CiAgICAgaWYgKCFWOEJpbmRpbmdTZWN1cml0eTo6Y2FuQWNjZXNzRnJh
bWUoVjhCaW5kaW5nU3RhdGU6Ok9ubHkoKSwgaW1wLT5mcmFtZSgpLCBmYWxzZSkpIHsKLSAgICAg
ICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzaGFyZWRfdGVt
cGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldygkbmV3VGVt
cGxhdGVTdHJpbmcpOwotICAgICAgICByZXR1cm4gc2hhcmVkX3RlbXBsYXRlLT5HZXRGdW5jdGlv
bigpOworICAgICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IHNoYXJlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpO
ZXcoJG5ld1RlbXBsYXRlU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIHNoYXJlZFRlbXBsYXRlLT5H
ZXRGdW5jdGlvbigpOwogICAgIH0KLSAgICByZXR1cm4gcHJpdmF0ZV90ZW1wbGF0ZS0+R2V0RnVu
Y3Rpb24oKTsKKyAgICByZXR1cm4gcHJpdmF0ZVRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwogfQog
CiBFTkQKQEAgLTU2MCw3ICs1NjcsOCBAQAogICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gc2hpZnQ7
CiAKICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7Ci1zdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+ICR7aW1wbENsYXNzTmFtZX1Db25zdHJ1Y3RvckdldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykgeworc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke2ltcGxDbGFzc05hbWV9Q29uc3RydWN0b3JHZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
Cit7CiAgICAgSU5DX1NUQVRTKFwiRE9NLiRpbXBsQ2xhc3NOYW1lLmNvbnN0cnVjdG9ycy5fZ2V0
XCIpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBkYXRhID0gaW5mby5EYXRhKCk7CiAgICAg
QVNTRVJUKGRhdGEtPklzRXh0ZXJuYWwoKSB8fCBkYXRhLT5Jc051bWJlcigpKTsKQEAgLTYzOSwx
MiArNjQ3LDEyIEBACiAKICAgICBpZiAoJGlzUG9kVHlwZSkgewogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudERlY2xzLCA8PEVORCk7Ci0gICAgVjhTVkdQT0RUeXBlV3JhcHBlcjwkaW1wbENsYXNz
TmFtZT4qIGltcF93cmFwcGVyID0gVjhTVkdQT0RUeXBlV3JhcHBlcjwkaW1wbENsYXNzTmFtZT46
OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAgICRpbXBsQ2xhc3NOYW1lIGltcF9pbnN0YW5j
ZSA9ICppbXBfd3JhcHBlcjsKKyAgICBWOFNWR1BPRFR5cGVXcmFwcGVyPCRpbXBsQ2xhc3NOYW1l
PiogaW1wV3JhcHBlciA9IFY4U1ZHUE9EVHlwZVdyYXBwZXI8JGltcGxDbGFzc05hbWU+Ojp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICAkaW1wbENsYXNzTmFtZSBpbXBJbnN0YW5jZSA9ICpp
bXBXcmFwcGVyOwogRU5ECiAgICAgICAgIGlmICgkZ2V0dGVyU3RyaW5nVXNlc0ltcCkgewogICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOwotICAgICRpbXBsQ2xhc3NO
YW1lKiBpbXAgPSAmaW1wX2luc3RhbmNlOworICAgICRpbXBsQ2xhc3NOYW1lKiBpbXAgPSAmaW1w
SW5zdGFuY2U7CiBFTkQKICAgICAgICAgfQogCkBAIC02NTcsNyArNjY1LDggQEAKICAgICAgICAg
ICAgICMgcGVyZm9ybSBsb29rdXAgZmlyc3QKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
RGVjbHMsIDw8RU5EKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IFY4RE9N
V3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOCR7aW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRl
KCksIGluZm8uVGhpcygpKTsKLSAgICBpZiAoaG9sZGVyLklzRW1wdHkoKSkgcmV0dXJuIHY4OjpI
YW5kbGU8djg6OlZhbHVlPigpOworICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CiBFTkQKICAgICAgICAgfQogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CkBAIC02ODIsOSArNjkxLDkgQEAKIAogICAg
ICMgR2VuZXJhdGUgc2VjdXJpdHkgY2hlY2tzIGlmIG5lY2Vzc2FyeQogICAgIGlmICgkYXR0cmli
dXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja05vZGVTZWN1cml0eSJ9
KSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgaWYgKCFWOEJpbmRpbmdT
ZWN1cml0eTo6Y2hlY2tOb2RlU2VjdXJpdHkoVjhCaW5kaW5nU3RhdGU6Ok9ubHkoKSwgaW1wLT4k
YXR0ck5hbWUoKSkpIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTtcblxuIik7CisgICAg
ICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgaWYgKCFWOEJpbmRpbmdTZWN1cml0eTo6
Y2hlY2tOb2RlU2VjdXJpdHkoVjhCaW5kaW5nU3RhdGU6Ok9ubHkoKSwgaW1wLT4kYXR0ck5hbWUo
KSkpXG4gICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpO1xuXG4iKTsKICAgICB9IGVs
c2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja0Zy
YW1lU2VjdXJpdHkifSkgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGlm
ICghVjhCaW5kaW5nU2VjdXJpdHk6OmNoZWNrTm9kZVNlY3VyaXR5KFY4QmluZGluZ1N0YXRlOjpP
bmx5KCksIGltcC0+Y29udGVudERvY3VtZW50KCkpKSByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFs
dWU+KCk7XG5cbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGlmICgh
VjhCaW5kaW5nU2VjdXJpdHk6OmNoZWNrTm9kZVNlY3VyaXR5KFY4QmluZGluZ1N0YXRlOjpPbmx5
KCksIGltcC0+Y29udGVudERvY3VtZW50KCkpKVxuICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4oKTtcblxuIik7CiAgICAgfQogCiAgICAgbXkgJHVzZUV4Y2VwdGlvbnMgPSAxIGlmIEB7
JGF0dHJpYnV0ZS0+Z2V0dGVyRXhjZXB0aW9uc30gYW5kICEoJGlzUG9kVHlwZSk7CkBAIC03MjYs
NyArNzM1LDcgQEAKICAgICAgICAgICAgICRnZXR0ZXJTdHJpbmcgLj0gIi50b0ludCgpIjsKICAg
ICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgICRnZXR0ZXJTdHJpbmcgPSAiaW1wX2luc3Rh
bmNlIjsKKyAgICAgICAgJGdldHRlclN0cmluZyA9ICJpbXBJbnN0YW5jZSI7CiAgICAgfQogCiAg
ICAgbXkgJHJlc3VsdDsKQEAgLTc0Myw3ICs3NTIsNyBAQAogICAgICAgICBteSAkaW1wbENsYXNz
SXNBbmltYXRlZFR5cGUgPSAkY29kZUdlbmVyYXRvci0+SXNTVkdBbmltYXRlZFR5cGUoJGltcGxD
bGFzc05hbWUpOwogICAgICAgICBpZiAobm90ICRpbXBsQ2xhc3NJc0FuaW1hdGVkVHlwZSBhbmQg
JGNvZGVHZW5lcmF0b3ItPklzUG9kVHlwZVdpdGhXcml0ZWFibGVQcm9wZXJ0aWVzKCRhdHRyVHlw
ZSkgYW5kIG5vdCBkZWZpbmVkICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkltbXV0YWJsZSJ9KSB7CiAgICAgICAgICAgICBpZiAoSXNQb2RUeXBlKCRpbXBsQ2xh
c3NOYW1lKSkgewotICAgICAgICAgICAgICAgIG15ICR3cmFwcGVyID0gIlY4U1ZHU3RhdGljUE9E
VHlwZVdyYXBwZXJXaXRoUE9EVHlwZVBhcmVudDwkbmF0aXZlVHlwZSwgJGltcGxDbGFzc05hbWU+
OjpjcmVhdGUoJGdldHRlclN0cmluZywgaW1wX3dyYXBwZXIpIjsKKyAgICAgICAgICAgICAgICBt
eSAkd3JhcHBlciA9ICJWOFNWR1N0YXRpY1BPRFR5cGVXcmFwcGVyV2l0aFBPRFR5cGVQYXJlbnQ8
JG5hdGl2ZVR5cGUsICRpbXBsQ2xhc3NOYW1lPjo6Y3JlYXRlKCRnZXR0ZXJTdHJpbmcsIGltcFdy
YXBwZXIpIjsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIFJl
ZlB0cjxWOFNWR1N0YXRpY1BPRFR5cGVXcmFwcGVyV2l0aFBPRFR5cGVQYXJlbnQ8JG5hdGl2ZVR5
cGUsICRpbXBsQ2xhc3NOYW1lPiA+IHdyYXBwZXIgPSAkd3JhcHBlcjtcbiIpOwogICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBteSAkd3JhcHBlciA9ICJWOFNWR1N0YXRpY1BP
RFR5cGVXcmFwcGVyV2l0aFBhcmVudDwkbmF0aXZlVHlwZSwgJGltcGxDbGFzc05hbWU+OjpjcmVh
dGUoaW1wLCAmJHtpbXBsQ2xhc3NOYW1lfTo6JGdldHRlciwgJiR7aW1wbENsYXNzTmFtZX06OiRz
ZXR0ZXIpIjsKQEAgLTg0Niw4ICs4NTUsOCBAQAogICAgICAgICAkaW1wbENsYXNzTmFtZSA9IEdl
dE5hdGl2ZVR5cGUoJGltcGxDbGFzc05hbWUpOwogICAgICAgICAkaW1wbEluY2x1ZGVzeyJWOFNW
R1BPRFR5cGVXcmFwcGVyLmgifSA9IDE7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMs
ICIgICAgVjhTVkdQT0RUeXBlV3JhcHBlcjwkaW1wbENsYXNzTmFtZT4qIHdyYXBwZXIgPSBWOFNW
R1BPRFR5cGVXcmFwcGVyPCRpbXBsQ2xhc3NOYW1lPjo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7
XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAkaW1wbENsYXNzTmFt
ZSBpbXBfaW5zdGFuY2UgPSAqd3JhcHBlcjtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dERlY2xzLCAiICAgICRpbXBsQ2xhc3NOYW1lKiBpbXAgPSAmaW1wX2luc3RhbmNlO1xuIik7Cisg
ICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgJGltcGxDbGFzc05hbWUgaW1wSW5z
dGFuY2UgPSAqd3JhcHBlcjtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAi
ICAgICRpbXBsQ2xhc3NOYW1lKiBpbXAgPSAmaW1wSW5zdGFuY2U7XG4iKTsKIAogICAgIH0gZWxz
aWYgKCRhdHRyRXh0LT57InY4T25Qcm90byJ9KSB7CiAgICAgICBpZiAoJGludGVyZmFjZU5hbWUg
ZXEgIkRPTVdpbmRvdyIpIHsKQEAgLTg1OCw3ICs4NjcsOCBAQAogICAgICAgICAjIHBlcmZvcm0g
bG9va3VwIGZpcnN0CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKICAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9N
V3JhcHBlcihWOCR7aW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKCksIGluZm8uVGhpcygpKTsK
LSAgICBpZiAoaG9sZGVyLklzRW1wdHkoKSkgcmV0dXJuOworICAgIGlmIChob2xkZXIuSXNFbXB0
eSgpKQorICAgICAgICByZXR1cm47CiBFTkQKICAgICAgIH0KICAgICBwdXNoKEBpbXBsQ29udGVu
dERlY2xzLCA8PEVORCk7CkBAIC05NTcsOSArOTY3LDggQEAKICAgICAgICAgICAgICRjdXJyZW50
T2JqZWN0ID0gIndyYXBwZXIiOwogICAgICAgICB9CiAKLSAgICAgICAgcHVzaChAaW1wbENvbnRl
bnREZWNscywgIiAgICBpZiAoU1ZHRWxlbWVudCogY29udGV4dCA9IFY4UHJveHk6OnN2Z0NvbnRl
eHQoJGN1cnJlbnRPYmplY3QpKSB7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNs
cywgIiAgICBpZiAoU1ZHRWxlbWVudCogY29udGV4dCA9IFY4UHJveHk6OnN2Z0NvbnRleHQoJGN1
cnJlbnRPYmplY3QpKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAg
ICAgIGNvbnRleHQtPnN2Z0F0dHJpYnV0ZUNoYW5nZWQoaW1wLT5hc3NvY2lhdGVkQXR0cmlidXRl
TmFtZSgpKTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIH1cbiIp
OwogICAgIH0KIAogICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgcmV0dXJuO1xuIik7
CkBAIC0xMDc1LDI0ICsxMDg0LDE5IEBACiAKICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbi0+c2ln
bmF0dXJlLT5uYW1lOwogICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKLXN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtuYW1lfUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpIHsKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtuYW1lfUNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CiAgICAgSU5DX1NUQVRTKFwiRE9NLiRpbXBs
Q2xhc3NOYW1lLiRuYW1lXCIpOwogRU5ECiAKICAgICBmb3JlYWNoIG15ICRvdmVybG9hZCAoQHsk
ZnVuY3Rpb24tPntvdmVybG9hZHN9fSkgewogICAgICAgICBteSAkcGFyYW1ldGVyc0NoZWNrID0g
R2VuZXJhdGVGdW5jdGlvblBhcmFtZXRlcnNDaGVjaygkb3ZlcmxvYWQpOwotICAgICAgICBpZiAo
JG92ZXJsb2FkLT57b3ZlcmxvYWRJbmRleH0gPT0gMSkgewotICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnREZWNscywgIiAgICBpZiAoJHBhcmFtZXRlcnNDaGVjaykge1xuIik7Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIH0gZWxz
ZSBpZiAoJHBhcmFtZXRlcnNDaGVjaykge1xuIik7Ci0gICAgICAgIH0KKyAgICAgICAgcHVzaChA
aW1wbENvbnRlbnREZWNscywgIiAgICBpZiAoJHBhcmFtZXRlcnNDaGVjaylcbiIpOwogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICAgICByZXR1cm4gJHtuYW1lfSRvdmVybG9h
ZC0+e292ZXJsb2FkSW5kZXh9Q2FsbGJhY2soYXJncyk7XG4iKTsKICAgICB9CiAgICAgcHVzaChA
aW1wbENvbnRlbnREZWNscywgPDxFTkQpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFY4UHJveHk6
OnNldERPTUV4Y2VwdGlvbihTWU5UQVhfRVJSKTsKLSAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRC
eUludGVyY2VwdG9yKCk7Ci0gICAgfQorICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihTWU5U
QVhfRVJSKTsKKyAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKIEVORAogICAg
IHB1c2goQGltcGxDb250ZW50RGVjbHMsICJ9XG5cbiIpOwogfQpAQCAtMTEyMywyMSArMTEyNywy
MiBAQAogICAgIH0KIAogICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKLXN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtuYW1lfUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpIHsKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtuYW1lfUNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CiAgICAgSU5DX1NUQVRTKFwiRE9NLiRpbXBs
Q2xhc3NOYW1lLiRuYW1lXCIpOwogRU5ECiAKICAgICBteSAkbnVtUGFyYW1ldGVycyA9IEB7JGZ1
bmN0aW9uLT5wYXJhbWV0ZXJzfTsKIAogICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IlJlcXVpcmVzQWxsQXJndW1lbnRzIn0pIHsKLSAgICAgICAgcHVz
aChAaW1wbENvbnRlbnREZWNscywgIiAgICBpZiAoYXJncy5MZW5ndGgoKSA8ICRudW1QYXJhbWV0
ZXJzKSByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7XG4iKTsKKyAgICAgICAgcHVzaChA
aW1wbENvbnRlbnREZWNscywgIiAgICBpZiAoYXJncy5MZW5ndGgoKSA8ICRudW1QYXJhbWV0ZXJz
KVxuICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTtcbiIpOwogICAgIH0KIAogICAg
IGlmIChJc1BvZFR5cGUoJGltcGxDbGFzc05hbWUpKSB7CiAgICAgICAgIG15ICRuYXRpdmVDbGFz
c05hbWUgPSBHZXROYXRpdmVUeXBlKCRpbXBsQ2xhc3NOYW1lKTsKLSAgICAgICAgcHVzaChAaW1w
bENvbnRlbnREZWNscywgIiAgICBWOFNWR1BPRFR5cGVXcmFwcGVyPCRuYXRpdmVDbGFzc05hbWU+
KiBpbXBfd3JhcHBlciA9IFY4U1ZHUE9EVHlwZVdyYXBwZXI8JG5hdGl2ZUNsYXNzTmFtZT46OnRv
TmF0aXZlKGFyZ3MuSG9sZGVyKCkpO1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50RGVj
bHMsICIgICAgJG5hdGl2ZUNsYXNzTmFtZSBpbXBfaW5zdGFuY2UgPSAqaW1wX3dyYXBwZXI7XG4i
KTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAkbmF0aXZlQ2xhc3NOYW1l
KiBpbXAgPSAmaW1wX2luc3RhbmNlO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVj
bHMsICIgICAgVjhTVkdQT0RUeXBlV3JhcHBlcjwkbmF0aXZlQ2xhc3NOYW1lPiogaW1wV3JhcHBl
ciA9IFY4U1ZHUE9EVHlwZVdyYXBwZXI8JG5hdGl2ZUNsYXNzTmFtZT46OnRvTmF0aXZlKGFyZ3Mu
SG9sZGVyKCkpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgJG5h
dGl2ZUNsYXNzTmFtZSBpbXBJbnN0YW5jZSA9ICppbXBXcmFwcGVyO1xuIik7CisgICAgICAgIHB1
c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgJG5hdGl2ZUNsYXNzTmFtZSogaW1wID0gJmltcElu
c3RhbmNlO1xuIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNs
cywgPDxFTkQpOwogICAgICR7aW1wbENsYXNzTmFtZX0qIGltcCA9IFY4JHtpbXBsQ2xhc3NOYW1l
fTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CkBAIC0xMjg5LDExICsxMjk0LDExIEBACiAgICAg
fSBlbHNpZiAoJGF0dHJFeHQtPnsiRG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5In0pIHsKICAgICAg
ICAgJGFjY2Vzc0NvbnRyb2wgPSAidjg6OkFMTF9DQU5fUkVBRCI7CiAgICAgICAgIGlmICghKCRh
dHRyaWJ1dGUtPnR5cGUgPX4gL15yZWFkb25seS8pICYmICEoJGF0dHJFeHQtPnsiVjhSZWFkT25s
eSJ9KSkgewotICAgICAgICAgICAgJGFjY2Vzc0NvbnRyb2wgLj0gInx2ODo6QUxMX0NBTl9XUklU
RSI7CisgICAgICAgICAgICAkYWNjZXNzQ29udHJvbCAuPSAiIHwgdjg6OkFMTF9DQU5fV1JJVEUi
OwogICAgICAgICB9CiAgICAgfQogICAgIGlmICgkYXR0ckV4dC0+eyJWOERpc2FsbG93U2hhZG93
aW5nIn0pIHsKLSAgICAgICAgJGFjY2Vzc0NvbnRyb2wgLj0gInx2ODo6UFJPSElCSVRTX09WRVJX
UklUSU5HIjsKKyAgICAgICAgJGFjY2Vzc0NvbnRyb2wgLj0gIiB8IHY4OjpQUk9ISUJJVFNfT1ZF
UldSSVRJTkciOwogICAgIH0KICAgICAkYWNjZXNzQ29udHJvbCA9ICJzdGF0aWNfY2FzdDx2ODo6
QWNjZXNzQ29udHJvbD4oIiAuICRhY2Nlc3NDb250cm9sIC4gIikiOwogCkBAIC0xMzE3LDEwICsx
MzIyLDEwIEBACiAKICAgICAjIENoZWNrIGF0dHJpYnV0ZXMuCiAgICAgaWYgKCRhdHRyRXh0LT57
IkRvbnRFbnVtIn0pIHsKLSAgICAgICAgJHByb3BBdHRyIC49ICJ8djg6OkRvbnRFbnVtIjsKKyAg
ICAgICAgJHByb3BBdHRyIC49ICIgfCB2ODo6RG9udEVudW0iOwogICAgIH0KICAgICBpZiAoJGF0
dHJFeHQtPnsiVjhEaXNhbGxvd1NoYWRvd2luZyJ9KSB7Ci0gICAgICAgICRwcm9wQXR0ciAuPSAi
fHY4OjpEb250RGVsZXRlIjsKKyAgICAgICAgJHByb3BBdHRyIC49ICIgfCB2ODo6RG9udERlbGV0
ZSI7CiAgICAgfQogCiAgICAgbXkgJG9uX3Byb3RvID0gIjAgLyogb24gaW5zdGFuY2UgKi8iOwpA
QCAtMTM2NCw3ICsxMzY5LDcgQEAKICAgICAgICAgIyBGSVhNRTogSW52ZXN0aWdhdGUgd2hldGhl
ciB3ZSBjb3VsZCB0cmVhdCB3aW5kb3cudG9wIGFzIHJlcGxhY2VhYmxlCiAgICAgICAgICMgYW5k
IGFsbG93IHNoYWRvd2luZyB3aXRob3V0IGl0IGJlaW5nIGEgc2VjdXJpdHkgaG9sZS4KICAgICAg
ICAgaWYgKCEoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIgYW5kICRhdHRyTmFtZSBlcSAi
dG9wIikpIHsKLSAgICAgICAgICAgICRwcm9wQXR0ciAuPSAifHY4OjpSZWFkT25seSI7CisgICAg
ICAgICAgICAkcHJvcEF0dHIgLj0gIiB8IHY4OjpSZWFkT25seSI7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTEzODEsMTcgKzEzODYsOCBAQAogICAgIG15ICRjb21tZW50SW5mbyA9ICJBdHRyaWJ1
dGUgJyRhdHRyTmFtZScgKFR5cGU6ICciIC4gJGF0dHJpYnV0ZS0+dHlwZSAuCiAgICAgICAgICAg
ICAgICAgICAgICAgIicgRXh0QXR0cjogJyIgLiBqb2luKCcgJywga2V5cygleyRhdHRyRXh0fSkp
IC4gIicpIjsKIAotICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gIiAgICB7XG4iKTsK
LSAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICIgICAgICAgIFwvXC8gJGNvbW1lbnRJ
bmZvXG4iKTsKLSAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICIgICAgICAgIFwiJGF0
dHJOYW1lXCIsXG4iKTsKLSAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICIgICAgICAg
ICRnZXR0ZXIsXG4iKTsKLSAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICIgICAgICAg
ICRzZXR0ZXIsXG4iKTsKLSAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICIgICAgICAg
ICRkYXRhLFxuIik7Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiICAgICAgICAk
YWNjZXNzQ29udHJvbCxcbiIpOwotICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gIiAg
ICAgICAgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPigkcHJvcEF0dHIpLFxuIik7
Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiICAgICAgICAkb25fcHJvdG9cbiIp
OwotICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gIiAgICB9IiAuICRkZWxpbWl0ZXIg
LiAiXG4iKTsKLUVORAorICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gIiAgICBcL1wv
ICRjb21tZW50SW5mb1xuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiICAg
IHtcIiRhdHRyTmFtZVwiLCAkZ2V0dGVyLCAkc2V0dGVyLCAkZGF0YSwgJGFjY2Vzc0NvbnRyb2ws
IHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4oJHByb3BBdHRyKSwgJG9uX3Byb3Rv
fSIgLiAkZGVsaW1pdGVyIC4gIlxuIik7CiB9CiAKIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9u
SW5kZXhlcgpAQCAtMTU4MCwyMyArMTU3NiwyMiBAQAogICAgIEBpbXBsQ29udGVudEhlYWRlciA9
IHNwbGl0KCJcciIsICRoZWFkZXJUZW1wbGF0ZSk7CiAKICAgICBwdXNoKEBpbXBsRml4ZWRIZWFk
ZXIsCi0gICAgICAgICAiI2luY2x1ZGUgXCJjb25maWcuaFwiXG4iIC4KLSAgICAgICAgICIjaW5j
bHVkZSBcIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaFwiXG4iIC4KLSAgICAgICAgICIjaW5jbHVk
ZSBcIlY4UHJveHkuaFwiXG4iIC4KLSAgICAgICAgICIjaW5jbHVkZSBcIlY4QmluZGluZy5oXCJc
biIgLgotICAgICAgICAgIiNpbmNsdWRlIFwiVjhCaW5kaW5nU3RhdGUuaFwiXG4iIC4KLSAgICAg
ICAgICIjaW5jbHVkZSBcIlY4RE9NV3JhcHBlci5oXCJcbiIgLgotICAgICAgICAgIiNpbmNsdWRl
IFwiVjhJc29sYXRlZENvbnRleHQuaFwiXG5cbiIgLgotICAgICAgICAgIiN1bmRlZiBMT0dcblxu
Iik7CisgICAgICAgICAiXG4jaW5jbHVkZSBcImNvbmZpZy5oXCJcbiIgLgorICAgICAgICAgIiNp
bmNsdWRlIFwiJHtjbGFzc05hbWV9LmhcIlxuXG4iKTsKIAogICAgIHB1c2goQGltcGxGaXhlZEhl
YWRlciwgIlxuI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRjb25kaXRpb25hbFN0
cmluZzsKKyAgICAgICAgIAorICAgICRpbXBsSW5jbHVkZXN7IlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXMuaCJ9ID0gMTsKKyAgICAkaW1wbEluY2x1ZGVzeyJWOFByb3h5LmgifSA9IDE7CisgICAgJGlt
cGxJbmNsdWRlc3siVjhCaW5kaW5nLmgifSA9IDE7CisgICAgJGltcGxJbmNsdWRlc3siVjhCaW5k
aW5nU3RhdGUuaCJ9ID0gMTsKKyAgICAkaW1wbEluY2x1ZGVzeyJWOERPTVdyYXBwZXIuaCJ9ID0g
MTsKKyAgICAkaW1wbEluY2x1ZGVzeyJWOElzb2xhdGVkQ29udGV4dC5oIn0gPSAxOwogCiAgICAg
aWYgKCRjbGFzc05hbWUgPX4gL15WOFNWR0FuaW1hdGVkLykgewogICAgICAgICBBZGRJbmNsdWRl
c0ZvclNWR0FuaW1hdGVkVHlwZSgkaW50ZXJmYWNlTmFtZSk7CiAgICAgfQogCi0gICAgJGltcGxJ
bmNsdWRlc3siJHtjbGFzc05hbWV9LmgifSA9IDE7Ci0KICAgICBBZGRJbmNsdWRlc0ZvclR5cGUo
JGludGVyZmFjZU5hbWUpOwogCiAgICAgbXkgJHRvQWN0aXZlID0gSXNBY3RpdmVEb21UeXBlKCRp
bnRlcmZhY2VOYW1lKSA/ICIke2NsYXNzTmFtZX06OnRvQWN0aXZlRE9NT2JqZWN0IiA6ICIwIjsK
QEAgLTE3MTMsNyArMTcwOCw3IEBACiAgICAgJGF0dHJpYnV0ZXMgPSBcQG5vcm1hbDsKICAgICAj
IFB1dCB0aGUgYXR0cmlidXRlcyB0aGF0IGRpc2FsbG93IHNoYWRvd2luZyBvbiB0aGUgc2hhZG93
IG9iamVjdC4KICAgICBpZiAoQGRpc2FsbG93c1NoYWRvd2luZykgewotICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgInN0YXRpYyBjb25zdCBCYXRjaGVkQXR0cmlidXRlIHNoYWRvd19hdHRyc1td
ID0ge1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAic3RhdGljIGNvbnN0IEJhdGNo
ZWRBdHRyaWJ1dGUgc2hhZG93QXR0cnNbXSA9IHtcbiIpOwogICAgICAgICBHZW5lcmF0ZUJhdGNo
ZWRBdHRyaWJ1dGVEYXRhKCRkYXRhTm9kZSwgXEBkaXNhbGxvd3NTaGFkb3dpbmcpOwogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIn07XG4iKTsKICAgICB9CkBAIC0xNzIxLDcgKzE3MTYsNyBA
QAogICAgIG15ICRoYXNfYXR0cmlidXRlcyA9IDA7CiAgICAgaWYgKEAkYXR0cmlidXRlcykgewog
ICAgICAgICAkaGFzX2F0dHJpYnV0ZXMgPSAxOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
InN0YXRpYyBjb25zdCBCYXRjaGVkQXR0cmlidXRlICR7aW50ZXJmYWNlTmFtZX1fYXR0cnNbXSA9
IHtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0YXRpYyBjb25zdCBCYXRjaGVk
QXR0cmlidXRlICR7aW50ZXJmYWNlTmFtZX1BdHRyc1tdID0ge1xuIik7CiAgICAgICAgIEdlbmVy
YXRlQmF0Y2hlZEF0dHJpYnV0ZURhdGEoJGRhdGFOb2RlLCAkYXR0cmlidXRlcyk7CiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAifTtcbiIpOwogICAgIH0KQEAgLTE3NTAsMTIgKzE3NDUsMTIg
QEAKICAgICAgICAgfQogICAgICAgICBpZiAoISRoYXNfY2FsbGJhY2tzKSB7CiAgICAgICAgICAg
ICAkaGFzX2NhbGxiYWNrcyA9IDE7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0
YXRpYyBjb25zdCBCYXRjaGVkQ2FsbGJhY2sgJHtpbnRlcmZhY2VOYW1lfV9jYWxsYmFja3NbXSA9
IHtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgY29uc3QgQmF0
Y2hlZENhbGxiYWNrICR7aW50ZXJmYWNlTmFtZX1DYWxsYmFja3NbXSA9IHtcbiIpOwogICAgICAg
ICB9CiAgICAgICAgIG15ICRuYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7CiAgICAg
ICAgIG15ICRjYWxsYmFjayA9IEdldEZ1bmN0aW9uVGVtcGxhdGVDYWxsYmFja05hbWUoJGZ1bmN0
aW9uLCAkaW50ZXJmYWNlTmFtZSk7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7
Ci0gIHsiJG5hbWUiLCAkY2FsbGJhY2t9LAorICAgIHsiJG5hbWUiLCAkY2FsbGJhY2t9LAogRU5E
CiAgICAgICAgICRudW1fY2FsbGJhY2tzKys7CiAgICAgfQpAQCAtMTc2NSw3ICsxNzYwLDcgQEAK
ICAgICBteSAkaGFzX2NvbnN0YW50cyA9IDA7CiAgICAgaWYgKEB7JGRhdGFOb2RlLT5jb25zdGFu
dHN9KSB7CiAgICAgICAgICRoYXNfY29uc3RhbnRzID0gMTsKLSAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJzdGF0aWMgY29uc3QgQmF0Y2hlZENvbnN0YW50ICR7aW50ZXJmYWNlTmFtZX1fY29u
c3RzW10gPSB7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgY29uc3Qg
QmF0Y2hlZENvbnN0YW50ICR7aW50ZXJmYWNlTmFtZX1Db25zdHNbXSA9IHtcbiIpOwogICAgIH0K
ICAgICBmb3JlYWNoIG15ICRjb25zdGFudCAoQHskZGF0YU5vZGUtPmNvbnN0YW50c30pIHsKICAg
ICAgICAgbXkgJG5hbWUgPSAkY29uc3RhbnQtPm5hbWU7CkBAIC0xNzc0LDcgKzE3NjksNyBAQAog
ICAgICAgICAjIGRlZmluZXMgImNvbnN0IHVuc2lnbmVkIGxvbmcgU0hPV19BTEwgPSAweEZGRkZG
RkZGIi4gIEl0IHdvdWxkIGJlIGJldHRlciBpZiB3ZQogICAgICAgICAjIGhhbmRsZWQgdGhpcyBo
ZXJlLCBhbmQgY29udmVydGVkIGl0IHRvIGEgLTEgY29uc3RhbnQgaW4gdGhlIGMrKyBvdXRwdXQu
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci0gIHsgIiR7bmFtZX0iLCBzdGF0
aWNfY2FzdDxzaWduZWQgaW50PigkdmFsdWUpIH0sCisgICAgeyIke25hbWV9Iiwgc3RhdGljX2Nh
c3Q8c2lnbmVkIGludD4oJHZhbHVlKX0sCiBFTkQKICAgICB9CiAgICAgaWYgKCRoYXNfY29uc3Rh
bnRzKSB7CkBAIC0xODA1LDcgKzE4MDAsNyBAQAogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
PDxFTkQpOwogc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3RUZW1wbGF0ZT4gQ29uZmln
dXJlU2hhZG93T2JqZWN0VGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdFRlbXBsYXRl
PiB0ZW1wbCkKIHsKLSAgICBiYXRjaENvbmZpZ3VyZUF0dHJpYnV0ZXModGVtcGwsIHY4OjpIYW5k
bGU8djg6Ok9iamVjdFRlbXBsYXRlPigpLCBzaGFkb3dfYXR0cnMsIHNpemVvZihzaGFkb3dfYXR0
cnMpL3NpemVvZigqc2hhZG93X2F0dHJzKSk7CisgICAgYmF0Y2hDb25maWd1cmVBdHRyaWJ1dGVz
KHRlbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4oKSwgc2hhZG93QXR0cnMsIHNp
emVvZihzaGFkb3dBdHRycykgLyBzaXplb2YoKnNoYWRvd0F0dHJzKSk7CiAKICAgICAvLyBJbnN0
YWxsIGEgc2VjdXJpdHkgaGFuZGxlciB3aXRoIFY4LgogICAgIHRlbXBsLT5TZXRBY2Nlc3NDaGVj
a0NhbGxiYWNrcyhWOERPTVdpbmRvdzo6bmFtZWRTZWN1cml0eUNoZWNrLCBWOERPTVdpbmRvdzo6
aW5kZXhlZFNlY3VyaXR5Q2hlY2ssIHY4OjpFeHRlcm5hbDo6V3JhcCgmVjhET01XaW5kb3c6Omlu
Zm8pKTsKQEAgLTE4MzIsMjYgKzE4MjcsMjYgQEAKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIDw8
RU5EKTsKIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmln
dXJlJHtjbGFzc05hbWV9VGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IGRlc2MpCiB7Ci0gICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1bHRfc2lnbmF0
dXJlID0gY29uZmlndXJlVGVtcGxhdGUoZGVzYywgXCIke3Zpc2libGVJbnRlcmZhY2VOYW1lfVwi
LCAkcGFyZW50Q2xhc3NUZW1wbGF0ZSwgVjgke2ludGVyZmFjZU5hbWV9OjppbnRlcm5hbEZpZWxk
Q291bnQsCisgICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1cmUgPSBj
b25maWd1cmVUZW1wbGF0ZShkZXNjLCBcIiR7dmlzaWJsZUludGVyZmFjZU5hbWV9XCIsICRwYXJl
bnRDbGFzc1RlbXBsYXRlLCBWOCR7aW50ZXJmYWNlTmFtZX06OmludGVybmFsRmllbGRDb3VudCwK
IEVORAogICAgICMgU2V0IHVwIG91ciBhdHRyaWJ1dGVzIGlmIHdlIGhhdmUgdGhlbQogICAgIGlm
ICgkaGFzX2F0dHJpYnV0ZXMpIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsK
LSAgICAgICAgJHtpbnRlcmZhY2VOYW1lfV9hdHRycywgc2l6ZW9mKCR7aW50ZXJmYWNlTmFtZX1f
YXR0cnMpL3NpemVvZigqJHtpbnRlcmZhY2VOYW1lfV9hdHRycyksCisgICAgICAgICR7aW50ZXJm
YWNlTmFtZX1BdHRycywgc2l6ZW9mKCR7aW50ZXJmYWNlTmFtZX1BdHRycykgLyBzaXplb2YoKiR7
aW50ZXJmYWNlTmFtZX1BdHRycyksCiBFTkQKICAgICB9IGVsc2UgewogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgPDxFTkQpOwotICAgICAgICBOVUxMLCAwLAorICAgICAgICAwLCAwLAogRU5E
CiAgICAgfQogCiAgICAgaWYgKCRoYXNfY2FsbGJhY2tzKSB7CiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCA8PEVORCk7Ci0gICAgICAgICR7aW50ZXJmYWNlTmFtZX1fY2FsbGJhY2tzLCBzaXpl
b2YoJHtpbnRlcmZhY2VOYW1lfV9jYWxsYmFja3MpL3NpemVvZigqJHtpbnRlcmZhY2VOYW1lfV9j
YWxsYmFja3MpKTsKKyAgICAgICAgJHtpbnRlcmZhY2VOYW1lfUNhbGxiYWNrcywgc2l6ZW9mKCR7
aW50ZXJmYWNlTmFtZX1DYWxsYmFja3MpIC8gc2l6ZW9mKCoke2ludGVyZmFjZU5hbWV9Q2FsbGJh
Y2tzKSk7CiBFTkQKICAgICB9IGVsc2UgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxF
TkQpOwotICAgICAgICBOVUxMLCAwKTsKKyAgICAgICAgMCwgMCk7CiBFTkQKICAgICB9CiAKQEAg
LTE5MDMsMTAgKzE4OTgsMTAgQEAKIAogICAgICAgICBteSAkcHJvcGVydHlfYXR0cmlidXRlcyA9
ICJ2ODo6RG9udERlbGV0ZSI7CiAgICAgICAgIGlmICgkYXR0ckV4dC0+eyJEb250RW51bSJ9KSB7
Ci0gICAgICAgICAgICAkcHJvcGVydHlfYXR0cmlidXRlcyAuPSAifHY4OjpEb250RW51bSI7Cisg
ICAgICAgICAgICAkcHJvcGVydHlfYXR0cmlidXRlcyAuPSAiIHwgdjg6OkRvbnRFbnVtIjsKICAg
ICAgICAgfQogICAgICAgICBpZiAoJGF0dHJFeHQtPnsiVjhSZWFkT25seSJ9KSB7Ci0gICAgICAg
ICAgICAkcHJvcGVydHlfYXR0cmlidXRlcyAuPSAifHY4OjpSZWFkT25seSI7CisgICAgICAgICAg
ICAkcHJvcGVydHlfYXR0cmlidXRlcyAuPSAiIHwgdjg6OlJlYWRPbmx5IjsKICAgICAgICAgfQog
CiAgICAgICAgIG15ICRjb21tZW50SW5mbyA9ICJGdW5jdGlvbiAnJG5hbWUnIChFeHRBdHRyOiAn
IiAuIGpvaW4oJyAnLCBrZXlzKCV7JGF0dHJFeHR9KSkgLiAiJykiOwpAQCAtMTkzOSw3ICsxOTM0
LDcgQEAKICAgICAgICAgICAgICMKICAgICAgICAgICAgICMgVGhlIHNvbHV0aW9uIGlzIHZlcnkg
aGFja3kgYW5kIGZyYWdpbGUsIGl0IHJlYWxseSBuZWVkcyB0byBiZSByZXBsYWNlZAogICAgICAg
ICAgICAgIyBieSBhIGJldHRlciBzb2x1dGlvbi4KLSAgICAgICAgICAgICRwcm9wZXJ0eV9hdHRy
aWJ1dGVzIC49ICJ8djg6OlJlYWRPbmx5IjsKKyAgICAgICAgICAgICRwcm9wZXJ0eV9hdHRyaWJ1
dGVzIC49ICIgfCB2ODo6UmVhZE9ubHkiOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
IDw8RU5EKTsKIAogICAgIC8vICRjb21tZW50SW5mbwpAQCAtMTk0OSwxMyArMTk0NCwxMyBAQAog
ICAgICAgICAgIG5leHQ7CiAgICAgICB9CiAKLSAgICAgIG15ICRzaWduYXR1cmUgPSAiZGVmYXVs
dF9zaWduYXR1cmUiOworICAgICAgbXkgJHNpZ25hdHVyZSA9ICJkZWZhdWx0U2lnbmF0dXJlIjsK
ICAgICAgIGlmICgkYXR0ckV4dC0+eyJWOERvTm90Q2hlY2tTaWduYXR1cmUifSkgewogICAgICAg
ICAgICRzaWduYXR1cmUgPSAidjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+KCkiOwogICAgICAgfQog
CiAgICAgICBpZiAoUmVxdWlyZXNDdXN0b21TaWduYXR1cmUoJGZ1bmN0aW9uKSkgewotICAgICAg
ICAgICRzaWduYXR1cmUgPSAiJHtuYW1lfV9zaWduYXR1cmUiOworICAgICAgICAgICRzaWduYXR1
cmUgPSAiJHtuYW1lfVNpZ25hdHVyZSI7CiAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJc
biAgICAvLyBDdXN0b20gU2lnbmF0dXJlICckbmFtZSdcbiIsIENyZWF0ZUN1c3RvbVNpZ25hdHVy
ZSgkZnVuY3Rpb24pKTsKICAgICAgIH0KIApAQCAtMTk2OCw3ICsxOTYzLDcgQEAKICAgICAgICAg
ICAkcHJvcGVydHlfYXR0cmlidXRlcyA9ICIsIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJp
YnV0ZT4oJHByb3BlcnR5X2F0dHJpYnV0ZXMpIjsKICAgICAgIH0KIAotICAgICAgaWYgKCR0ZW1w
bGF0ZSBlcSAicHJvdG8iICYmICRjb25kaXRpb25hbCBlcSAiIiAmJiAkc2lnbmF0dXJlIGVxICJk
ZWZhdWx0X3NpZ25hdHVyZSIgJiYgJHByb3BlcnR5X2F0dHJpYnV0ZXMgZXEgIiIpIHsKKyAgICAg
IGlmICgkdGVtcGxhdGUgZXEgInByb3RvIiAmJiAkY29uZGl0aW9uYWwgZXEgIiIgJiYgJHNpZ25h
dHVyZSBlcSAiZGVmYXVsdFNpZ25hdHVyZSIgJiYgJHByb3BlcnR5X2F0dHJpYnV0ZXMgZXEgIiIp
IHsKICAgICAgICAgICAjIFN0YW5kYXJkIHR5cGUgb2YgY2FsbGJhY2ssIGFscmVhZHkgY3JlYXRl
ZCBpbiB0aGUgYmF0Y2gsIHNvIHNraXAgaXQgaGVyZS4KICAgICAgICAgICBuZXh0OwogICAgICAg
fQpAQCAtMTk4Myw3ICsxOTc4LDcgQEAKIAogICAgIGlmICgkaGFzX2NvbnN0YW50cykgewogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwotICAgIGJhdGNoQ29uZmlndXJlQ29uc3Rh
bnRzKGRlc2MsIHByb3RvLCAke2ludGVyZmFjZU5hbWV9X2NvbnN0cywgc2l6ZW9mKCR7aW50ZXJm
YWNlTmFtZX1fY29uc3RzKS9zaXplb2YoKiR7aW50ZXJmYWNlTmFtZX1fY29uc3RzKSk7CisgICAg
YmF0Y2hDb25maWd1cmVDb25zdGFudHMoZGVzYywgcHJvdG8sICR7aW50ZXJmYWNlTmFtZX1Db25z
dHMsIHNpemVvZigke2ludGVyZmFjZU5hbWV9Q29uc3RzKSAvIHNpemVvZigqJHtpbnRlcmZhY2VO
YW1lfUNvbnN0cykpOwogRU5ECiAgICAgfQogCkBAIC0yMDI0LDE0ICsyMDE5LDE0IEBACiAKIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAke2NsYXNzTmFtZX06OkdldFJhd1Rl
bXBsYXRlKCkKIHsKLSAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+ICR7Y2xhc3NOYW1lfV9yYXdfY2FjaGVfID0gY3JlYXRlUmF3VGVtcGxhdGUoKTsKLSAgICBy
ZXR1cm4gJHtjbGFzc05hbWV9X3Jhd19jYWNoZV87CisgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAke2NsYXNzTmFtZX1SYXdDYWNoZSA9IGNyZWF0ZVJhd1Rl
bXBsYXRlKCk7CisgICAgcmV0dXJuICR7Y2xhc3NOYW1lfVJhd0NhY2hlOwogfQogCiB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHtjbGFzc05hbWV9OjpHZXRUZW1wbGF0ZSgp
XAogewotICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHtj
bGFzc05hbWV9X2NhY2hlXyA9IENvbmZpZ3VyZSR7Y2xhc3NOYW1lfVRlbXBsYXRlKEdldFJhd1Rl
bXBsYXRlKCkpOwotICAgIHJldHVybiAke2NsYXNzTmFtZX1fY2FjaGVfOworICAgIHN0YXRpYyB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHtjbGFzc05hbWV9Q2FjaGUgPSBD
b25maWd1cmUke2NsYXNzTmFtZX1UZW1wbGF0ZShHZXRSYXdUZW1wbGF0ZSgpKTsKKyAgICByZXR1
cm4gJHtjbGFzc05hbWV9Q2FjaGU7CiB9CiAKICR7bmF0aXZlVHlwZX0qICR7Y2xhc3NOYW1lfTo6
dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCkBAIC0yMDYyLDEyICsyMDU3
LDEyIEBACiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiB2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0VGVtcGxhdGU+IFY4RE9NV2luZG93OjpHZXRTaGFkb3dPYmplY3RUZW1wbGF0
ZSgpCiB7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3RUZW1wbGF0ZT4gVjhE
T01XaW5kb3dTaGFkb3dPYmplY3RfY2FjaGVfOwotICAgIGlmIChWOERPTVdpbmRvd1NoYWRvd09i
amVjdF9jYWNoZV8uSXNFbXB0eSgpKSB7Ci0gICAgICAgIFY4RE9NV2luZG93U2hhZG93T2JqZWN0
X2NhY2hlXyA9IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3RUZW1wbGF0ZT46Ok5ldyh2ODo6T2Jq
ZWN0VGVtcGxhdGU6Ok5ldygpKTsKLSAgICAgICAgQ29uZmlndXJlU2hhZG93T2JqZWN0VGVtcGxh
dGUoVjhET01XaW5kb3dTaGFkb3dPYmplY3RfY2FjaGVfKTsKKyAgICBzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6Ok9iamVjdFRlbXBsYXRlPiBWOERPTVdpbmRvd1NoYWRvd09iamVjdENhY2hlOwor
ICAgIGlmIChWOERPTVdpbmRvd1NoYWRvd09iamVjdENhY2hlLklzRW1wdHkoKSkgeworICAgICAg
ICBWOERPTVdpbmRvd1NoYWRvd09iamVjdENhY2hlID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVj
dFRlbXBsYXRlPjo6TmV3KHY4OjpPYmplY3RUZW1wbGF0ZTo6TmV3KCkpOworICAgICAgICBDb25m
aWd1cmVTaGFkb3dPYmplY3RUZW1wbGF0ZShWOERPTVdpbmRvd1NoYWRvd09iamVjdENhY2hlKTsK
ICAgICB9Ci0gICAgcmV0dXJuIFY4RE9NV2luZG93U2hhZG93T2JqZWN0X2NhY2hlXzsKKyAgICBy
ZXR1cm4gVjhET01XaW5kb3dTaGFkb3dPYmplY3RDYWNoZTsKIH0KIEVORAogICAgIH0KQEAgLTIw
OTMsNiArMjA4OCwxMCBAQAogRU5ECiAKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuI2VuZGlm
IC8vICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CisgICAg
CisgICAgIyBXZSd2ZSBhbHJlYWR5IGFkZGVkIHRoZSBoZWFkZXIgZm9yIHRoaXMgZmlsZSBpbiBp
bXBsRml4ZWRIZWFkZXIsIHNvIHJlbW92ZQorICAgICMgaXQgZnJvbSBpbXBsSW5jbHVkZXMgdG8g
ZW5zdXJlIHdlIGRvbid0ICNpbmNsdWRlIGl0IHR3aWNlLgorICAgIGRlbGV0ZSAkaW1wbEluY2x1
ZGVzeyIke2NsYXNzTmFtZX0uaCJ9OwogfQogCiBzdWIgR2VuZXJhdGVUb1Y4Q29udmVydGVycwpA
QCAtMjEyNywxNSArMjEyNiwxNSBAQAogICAgIH0KIAogICAgIGlmICgkZG9tTWFwRnVuY3Rpb24p
IHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgIGlmICghZm9yY2VOZXdPYmplY3QpIHtc
biIpIGlmIElzRE9NTm9kZVR5cGUoJGludGVyZmFjZU5hbWUpOworICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBpZiAoIWZvcmNlTmV3T2JqZWN0KSB7XG4iKSBpZiBJc0RPTU5vZGVUeXBl
KCRpbnRlcmZhY2VOYW1lKTsKICAgICAgICAgaWYgKElzTm9kZVN1YlR5cGUoJGRhdGFOb2RlKSkg
ewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgd3JhcHBlciA9IFY4RE9NV3Jh
cHBlcjo6Z2V0V3JhcHBlcihpbXBsKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6OmdldFdyYXBwZXIoaW1wbCk7XG4i
KTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHdyYXBwZXIgPSAke2RvbU1hcEZ1bmN0aW9ufS5nZXQoaW1wbCk7XG4iKTsKKyAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICB3cmFwcGVyID0gJHtkb21NYXBGdW5jdGlvbn0u
Z2V0KGltcGwpO1xuIik7CiAgICAgICAgIH0KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8
RU5EKTsKLSAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gd3JhcHBl
cjsKKyAgICAgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiB3
cmFwcGVyOwogRU5ECiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpIGlmIElz
RE9NTm9kZVR5cGUoJGludGVyZmFjZU5hbWUpOwogICAgIH0KQEAgLTIzOTAsNyArMjM4OSw3IEBA
CiAgICAgfQogCiAgICAgaWYgKEB7JGZ1bmN0aW9uLT5yYWlzZXNFeGNlcHRpb25zfSkgewotICAg
ICAgICAkcmVzdWx0IC49ICRpbmRlbnQgLiAiaWYgKFVOTElLRUxZKGVjKSkgZ290byBmYWlsO1xu
IjsKKyAgICAgICAgJHJlc3VsdCAuPSAkaW5kZW50IC4gImlmIChVTkxJS0VMWShlYykpXG4iIC4g
JGluZGVudCAuICIgICAgZ290byBmYWlsO1xuIjsKICAgICB9CiAKICAgICAjIElmIHRoZSByZXR1
cm4gdHlwZSBpcyBhIFBPRCB0eXBlLCBzZXBhcmF0ZSBvdXQgdGhlIHdyYXBwZXIgZ2VuZXJhdGlv
bgpAQCAtMjQyOCw3ICsyNDI3LDcgQEAKICAgICAgICAgICAgICRnZW5lcmF0ZWRTVkdDb250ZXh0
UmV0cmlldmFsID0gMTsKICAgICAgICAgfQogCi0gICAgICAgICRyZXN1bHQgLj0gJGluZGVudCAu
ICJpbXBfd3JhcHBlci0+Y29tbWl0Q2hhbmdlKGltcF9pbnN0YW5jZSwgY29udGV4dCk7XG4iOwor
ICAgICAgICAkcmVzdWx0IC49ICRpbmRlbnQgLiAiaW1wV3JhcHBlci0+Y29tbWl0Q2hhbmdlKGlt
cEluc3RhbmNlLCBjb250ZXh0KTtcbiI7CiAgICAgfQogCiAgICAgaWYgKCRyZXR1cm5zUG9kVHlw
ZSkgewpAQCAtMjY4MCw4ICsyNjc5LDggQEAKICAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKICAg
ICBteSAkY291bnQgPSBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc307CiAgICAgbXkgJG5hbWUgPSAk
ZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKLSAgICBteSAkcmVzdWx0ID0gIiAgICBjb25zdCBp
bnQgJHtuYW1lfV9hcmdjID0gJHtjb3VudH07XG4iIC4KLSAgICAgICIgICAgdjg6OkhhbmRsZTx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHtuYW1lfV9hcmd2WyR7bmFtZX1fYXJnY10gPSB7ICI7Cisg
ICAgbXkgJHJlc3VsdCA9ICIgICAgY29uc3QgaW50ICR7bmFtZX1BcmdjID0gJHtjb3VudH07XG4i
IC4KKyAgICAgICIgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHtuYW1lfUFy
Z3ZbJHtuYW1lfUFyZ2NdID0geyAiOwogICAgIG15ICRmaXJzdCA9IDE7CiAgICAgZm9yZWFjaCBt
eSAkcGFyYW1ldGVyIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKICAgICAgICAgaWYgKCRm
aXJzdCkgeyAkZmlyc3QgPSAwOyB9CkBAIC0yNzAyLDcgKzI3MDEsNyBAQAogICAgICAgICB9CiAg
ICAgfQogICAgICRyZXN1bHQgLj0gIiB9O1xuIjsKLSAgICAkcmVzdWx0IC49ICIgICAgdjg6Okhh
bmRsZTx2ODo6U2lnbmF0dXJlPiAke25hbWV9X3NpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5l
dyhkZXNjLCAke25hbWV9X2FyZ2MsICR7bmFtZX1fYXJndik7XG4iOworICAgICRyZXN1bHQgLj0g
IiAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+ICR7bmFtZX1TaWduYXR1cmUgPSB2ODo6U2ln
bmF0dXJlOjpOZXcoZGVzYywgJHtuYW1lfUFyZ2MsICR7bmFtZX1Bcmd2KTtcbiI7CiAgICAgcmV0
dXJuICRyZXN1bHQ7CiB9CiAKQEAgLTI4MjAsNyArMjgxOSw3IEBACiAgICAgcmV0dXJuICJyZXR1
cm4gdjg6OkludGVnZXI6Ok5ldygkdmFsdWUpIiBpZiAkbmF0aXZlVHlwZSBlcSAiaW50IjsKICAg
ICByZXR1cm4gInJldHVybiB2ODo6SW50ZWdlcjo6TmV3RnJvbVVuc2lnbmVkKCR2YWx1ZSkiIGlm
ICRuYXRpdmVUeXBlIGVxICJ1bnNpZ25lZCI7CiAKLSAgICByZXR1cm4gInJldHVybiB2OERhdGVP
ck51bGwoJHZhbHVlKTsiIGlmICR0eXBlIGVxICJEYXRlIjsKKyAgICByZXR1cm4gInJldHVybiB2
OERhdGVPck51bGwoJHZhbHVlKSIgaWYgJHR5cGUgZXEgIkRhdGUiOwogICAgIHJldHVybiAicmV0
dXJuIHY4OjpOdW1iZXI6Ok5ldygkdmFsdWUpIiBpZiAkY29kZUdlbmVyYXRvci0+SXNQcmltaXRp
dmVUeXBlKCR0eXBlKSBvciAkdHlwZSBlcSAiU1ZHUGFpbnRUeXBlIjsKICAgICByZXR1cm4gInJl
dHVybiAkdmFsdWUudjhWYWx1ZSgpIiBpZiAkbmF0aXZlVHlwZSBlcSAiU2NyaXB0VmFsdWUiOwog
CkBAIC0yODkyLDcgKzI4OTEsMTEgQEAKICAgICAgICAgICAgIG15ICRjaGVja1R5cGUgPSAkaW1w
bEluY2x1ZGU7CiAgICAgICAgICAgICAkY2hlY2tUeXBlID1+IHMvXC5oLy87CiAKLSAgICAgICAg
ICAgIHByaW50ICRJTVBMICIjaW5jbHVkZSBcIiRpbXBsSW5jbHVkZVwiXG4iIHVubGVzcyAkY29k
ZUdlbmVyYXRvci0+SXNTVkdBbmltYXRlZFR5cGUoJGNoZWNrVHlwZSk7CisgICAgICAgICAgICBp
ZiAoJGltcGxJbmNsdWRlID1+IC93dGYvKSB7CisgICAgICAgICAgICAgICAgcHJpbnQgJElNUEwg
IiNpbmNsdWRlIFw8JGltcGxJbmNsdWRlXD5cbiI7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIHByaW50ICRJTVBMICIjaW5jbHVkZSBcIiRpbXBsSW5jbHVkZVwiXG4iIHVu
bGVzcyAkY29kZUdlbmVyYXRvci0+SXNTVkdBbmltYXRlZFR5cGUoJGNoZWNrVHlwZSk7CisgICAg
ICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBwcmludCAkSU1QTCAiXG4iOwpAQCAtMjk1
MCw3ICsyOTUzLDcgQEAKIAogICAgIG15ICRzcmNPYmplY3QgPSAiaW1wIjsKICAgICBpZiAoJHNy
Y0lzUG9kVHlwZSkgewotICAgICAgICAkc3JjT2JqZWN0ID0gImltcF93cmFwcGVyIjsKKyAgICAg
ICAgJHNyY09iamVjdCA9ICJpbXBXcmFwcGVyIjsKICAgICB9CiAKICAgICBteSAkY29udGV4dERl
Y2w7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L3Rlc3QvVjhUZXN0T2JqLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L3Rlc3QvVjhUZXN0T2JqLmNwcAkocmV2aXNpb24g
NTc5MjEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L3Rlc3QvVjhUZXN0T2JqLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTcsMjIgKzE3LDIxIEBACiAgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAogICAgIEJvc3RvbiwgTUEg
MDIxMTEtMTMwNywgVVNBLgogKi8KKwogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlY4
VGVzdE9iai5oIgorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMuaCIKLSNpbmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSAiVjhC
aW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nU3RhdGUuaCIKICNpbmNsdWRlICJWOERPTVdy
YXBwZXIuaCIKICNpbmNsdWRlICJWOElzb2xhdGVkQ29udGV4dC5oIgorI2luY2x1ZGUgIlY4UHJv
eHkuaCIKKyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKLSN1bmRlZiBMT0cKLQotI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJWOFRlc3RPYmouaCIKLSNpbmNsdWRlICJ3dGYvR2V0
UHRyLmgiCi0jaW5jbHVkZSAid3RmL1JlZkNvdW50ZWQuaCIKLSNpbmNsdWRlICJ3dGYvUmVmUHRy
LmgiCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV3JhcHBlclR5cGVJbmZvIFY4VGVzdE9iajo6
aW5mbyA9IHsgVjhUZXN0T2JqOjpHZXRUZW1wbGF0ZSwgVjhUZXN0T2JqOjpkZXJlZk9iamVjdCwg
MCB9OwpAQCAtMTY1LDE0ICsxNjQsMTYgQEAKICAgICByZXR1cm47CiB9CiAKLXN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdm9pZE1ldGhvZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpIHsKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdm9pZE1ldGhvZENhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9i
ai52b2lkTWV0aG9kIik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShh
cmdzLkhvbGRlcigpKTsKICAgICBpbXAtPnZvaWRNZXRob2QoKTsKICAgICByZXR1cm4gdjg6Okhh
bmRsZTx2ODo6VmFsdWU+KCk7CiB9CiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdm9p
ZE1ldGhvZFdpdGhBcmdzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykgeworc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2b2lkTWV0aG9kV2l0aEFyZ3NDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQorewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoudm9p
ZE1ldGhvZFdpdGhBcmdzIik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2
ZShhcmdzLkhvbGRlcigpKTsKICAgICBpbnQgaW50QXJnID0gdG9JbnQzMihhcmdzWzBdKTsKQEAg
LTE4MiwxMyArMTgzLDE1IEBACiAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwog
fQogCi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGludE1ldGhvZENhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpIHsKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaW50
TWV0aG9kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKICAgICBJTkNfU1RB
VFMoIkRPTS5UZXN0T2JqLmludE1ldGhvZCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9i
ajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIHY4OjpJbnRlZ2VyOjpOZXco
aW1wLT5pbnRNZXRob2QoKSk7CiB9CiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaW50
TWV0aG9kV2l0aEFyZ3NDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKSB7CitzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGludE1ldGhvZFdpdGhBcmdzQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKK3sKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLmludE1l
dGhvZFdpdGhBcmdzIik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShh
cmdzLkhvbGRlcigpKTsKICAgICBpbnQgaW50QXJnID0gdG9JbnQzMihhcmdzWzBdKTsKQEAgLTE5
NywxMyArMjAwLDE1IEBACiAgICAgcmV0dXJuIHY4OjpJbnRlZ2VyOjpOZXcoaW1wLT5pbnRNZXRo
b2RXaXRoQXJncyhpbnRBcmcsIHN0ckFyZywgb2JqQXJnKSk7CiB9CiAKLXN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gb2JqTWV0aG9kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykgeworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvYmpNZXRob2RDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQorewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoub2Jq
TWV0aG9kIik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhv
bGRlcigpKTsKICAgICByZXR1cm4gdG9WOChpbXAtPm9iak1ldGhvZCgpKTsKIH0KIAotc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvYmpNZXRob2RXaXRoQXJnc0NhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpIHsKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb2JqTWV0
aG9kV2l0aEFyZ3NDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQorewogICAgIElO
Q19TVEFUUygiRE9NLlRlc3RPYmoub2JqTWV0aG9kV2l0aEFyZ3MiKTsKICAgICBUZXN0T2JqKiBp
bXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIGludCBpbnRBcmcg
PSB0b0ludDMyKGFyZ3NbMF0pOwpAQCAtMjEyLDEzICsyMTcsMTUgQEAKICAgICByZXR1cm4gdG9W
OChpbXAtPm9iak1ldGhvZFdpdGhBcmdzKGludEFyZywgc3RyQXJnLCBvYmpBcmcpKTsKIH0KIAot
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RXaXRoRXhjZXB0aW9uQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykgeworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBtZXRob2RXaXRoRXhjZXB0aW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
K3sKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLm1ldGhvZFdpdGhFeGNlcHRpb24iKTsKICAg
ICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHsKICAgICBpbXAtPm1ldGhvZFdpdGhFeGNlcHRp
b24oZWMpOwotICAgIGlmIChVTkxJS0VMWShlYykpIGdvdG8gZmFpbDsKKyAgICBpZiAoVU5MSUtF
TFkoZWMpKQorICAgICAgICBnb3RvIGZhaWw7CiAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZh
bHVlPigpOwogICAgIH0KICAgICBmYWlsOgpAQCAtMjI2LDcgKzIzMyw4IEBACiAgICAgcmV0dXJu
IHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwogfQogCi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IG1ldGhvZFdpdGhPcHRpb25hbEFyZ0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpIHsKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kV2l0aE9wdGlvbmFsQXJn
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKICAgICBJTkNfU1RBVFMoIkRP
TS5UZXN0T2JqLm1ldGhvZFdpdGhPcHRpb25hbEFyZyIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4
VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkg
PD0gMCkgewpAQCAtMjM4LDcgKzI0Niw4IEBACiAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZh
bHVlPigpOwogfQogCi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFdpdGhOb25P
cHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykgeworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RXaXRoTm9uT3B0aW9uYWxB
cmdBbmRPcHRpb25hbEFyZ0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CiAg
ICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5tZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRp
b25hbEFyZyIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5I
b2xkZXIoKSk7CiAgICAgaW50IG5vbk9wdCA9IHRvSW50MzIoYXJnc1swXSk7CkBAIC0yNTEsNyAr
MjYwLDggQEAKICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CiB9CiAKLXN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0
aW9uYWxBcmdzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykgeworc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25h
bEFyZ3NDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQorewogICAgIElOQ19TVEFU
UygiRE9NLlRlc3RPYmoubWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdz
Iik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KTsKICAgICBpbnQgbm9uT3B0ID0gdG9JbnQzMihhcmdzWzBdKTsKQEAgLTI2NSw3ICsyNzUsOCBA
QAogICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKIH0KIAotc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kMUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpIHsKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3ZlcmxvYWRlZE1l
dGhvZDFDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQorewogICAgIElOQ19TVEFU
UygiRE9NLlRlc3RPYmoub3ZlcmxvYWRlZE1ldGhvZDEiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIFRlc3RPYmoqIG9iakFyZyA9
IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UoYXJnc1swXSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMDsKQEAgLTI3NCw3ICsyODUs
OCBAQAogICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKIH0KIAotc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kMkNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpIHsKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3ZlcmxvYWRl
ZE1ldGhvZDJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQorewogICAgIElOQ19T
VEFUUygiRE9NLlRlc3RPYmoub3ZlcmxvYWRlZE1ldGhvZDIiKTsKICAgICBUZXN0T2JqKiBpbXAg
PSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIFRlc3RPYmoqIG9iakFy
ZyA9IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UoYXJnc1swXSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZl
KHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMDsKQEAgLTI4Nyw3ICsy
OTksOCBAQAogICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKIH0KIAotc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kM0NhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpIHsKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3Zlcmxv
YWRlZE1ldGhvZDNDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQorewogICAgIElO
Q19TVEFUUygiRE9NLlRlc3RPYmoub3ZlcmxvYWRlZE1ldGhvZDMiKTsKICAgICBUZXN0T2JqKiBp
bXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIFY4UGFyYW1ldGVy
PD4gc3RyQXJnID0gYXJnc1swXTsKQEAgLTI5NSw3ICszMDgsOCBAQAogICAgIHJldHVybiB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4oKTsKIH0KIAotc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBv
dmVybG9hZGVkTWV0aG9kNENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpIHsKK3N0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3ZlcmxvYWRlZE1ldGhvZDRDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQorewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoub3Zl
cmxvYWRlZE1ldGhvZDQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZl
KGFyZ3MuSG9sZGVyKCkpOwogICAgIGludCBpbnRBcmcgPSB0b0ludDMyKGFyZ3NbMF0pOwpAQCAt
MzAzLDE2NCArMzE3LDgzIEBACiAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwog
fQogCi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRob2RDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKSB7CitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IG92ZXJsb2FkZWRNZXRob2RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQor
ewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoub3ZlcmxvYWRlZE1ldGhvZCIpOwotICAgIGlm
ICgoYXJncy5MZW5ndGgoKSA9PSAyICYmIChhcmdzWzBdLT5Jc051bGwoKSB8fCBWOFRlc3RPYmo6
Okhhc0luc3RhbmNlKGFyZ3NbMF0pKSAmJiAoYXJnc1sxXS0+SXNOdWxsKCkgfHwgYXJnc1sxXS0+
SXNVbmRlZmluZWQoKSB8fCBhcmdzWzFdLT5Jc1N0cmluZygpIHx8IGFyZ3NbMV0tPklzT2JqZWN0
KCkpKSkgeworICAgIGlmICgoYXJncy5MZW5ndGgoKSA9PSAyICYmIChhcmdzWzBdLT5Jc051bGwo
KSB8fCBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKGFyZ3NbMF0pKSAmJiAoYXJnc1sxXS0+SXNOdWxs
KCkgfHwgYXJnc1sxXS0+SXNVbmRlZmluZWQoKSB8fCBhcmdzWzFdLT5Jc1N0cmluZygpIHx8IGFy
Z3NbMV0tPklzT2JqZWN0KCkpKSkKICAgICAgICAgcmV0dXJuIG92ZXJsb2FkZWRNZXRob2QxQ2Fs
bGJhY2soYXJncyk7Ci0gICAgfSBlbHNlIGlmICgoYXJncy5MZW5ndGgoKSA9PSAxICYmIChhcmdz
WzBdLT5Jc051bGwoKSB8fCBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKGFyZ3NbMF0pKSkgfHwgKGFy
Z3MuTGVuZ3RoKCkgPT0gMiAmJiAoYXJnc1swXS0+SXNOdWxsKCkgfHwgVjhUZXN0T2JqOjpIYXNJ
bnN0YW5jZShhcmdzWzBdKSkpKSB7CisgICAgaWYgKChhcmdzLkxlbmd0aCgpID09IDEgJiYgKGFy
Z3NbMF0tPklzTnVsbCgpIHx8IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UoYXJnc1swXSkpKSB8fCAo
YXJncy5MZW5ndGgoKSA9PSAyICYmIChhcmdzWzBdLT5Jc051bGwoKSB8fCBWOFRlc3RPYmo6Okhh
c0luc3RhbmNlKGFyZ3NbMF0pKSkpCiAgICAgICAgIHJldHVybiBvdmVybG9hZGVkTWV0aG9kMkNh
bGxiYWNrKGFyZ3MpOwotICAgIH0gZWxzZSBpZiAoKGFyZ3MuTGVuZ3RoKCkgPT0gMSAmJiAoYXJn
c1swXS0+SXNOdWxsKCkgfHwgYXJnc1swXS0+SXNVbmRlZmluZWQoKSB8fCBhcmdzWzBdLT5Jc1N0
cmluZygpIHx8IGFyZ3NbMF0tPklzT2JqZWN0KCkpKSkgeworICAgIGlmICgoYXJncy5MZW5ndGgo
KSA9PSAxICYmIChhcmdzWzBdLT5Jc051bGwoKSB8fCBhcmdzWzBdLT5Jc1VuZGVmaW5lZCgpIHx8
IGFyZ3NbMF0tPklzU3RyaW5nKCkgfHwgYXJnc1swXS0+SXNPYmplY3QoKSkpKQogICAgICAgICBy
ZXR1cm4gb3ZlcmxvYWRlZE1ldGhvZDNDYWxsYmFjayhhcmdzKTsKLSAgICB9IGVsc2UgaWYgKGFy
Z3MuTGVuZ3RoKCkgPT0gMSkgeworICAgIGlmIChhcmdzLkxlbmd0aCgpID09IDEpCiAgICAgICAg
IHJldHVybiBvdmVybG9hZGVkTWV0aG9kNENhbGxiYWNrKGFyZ3MpOwotICAgIH0gZWxzZSB7Ci0g
ICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihTWU5UQVhfRVJSKTsKLSAgICAgICAgcmV0
dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7Ci0gICAgfQorICAgIFY4UHJveHk6OnNldERP
TUV4Y2VwdGlvbihTWU5UQVhfRVJSKTsKKyAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0
b3IoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgVGVzdE9iakludGVybmFsCiAKLXN0YXRpYyBjb25z
dCBCYXRjaGVkQXR0cmlidXRlIFRlc3RPYmpfYXR0cnNbXSA9IHsKLSAgICB7Ci0gICAgICAgIC8v
IEF0dHJpYnV0ZSAncmVhZE9ubHlJbnRBdHRyJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScg
RXh0QXR0cjogJycpCi0gICAgICAgICJyZWFkT25seUludEF0dHIiLAotICAgICAgICBUZXN0T2Jq
SW50ZXJuYWw6OnJlYWRPbmx5SW50QXR0ckF0dHJHZXR0ZXIsCi0gICAgICAgIDAsCi0gICAgICAg
IDAgLyogbm8gZGF0YSAqLywKLSAgICAgICAgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+
KHY4OjpERUZBVUxUKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRl
Pih2ODo6Tm9uZSksCi0gICAgICAgIDAgLyogb24gaW5zdGFuY2UgKi8KLSAgICB9LAotICAgIHsK
LSAgICAgICAgLy8gQXR0cmlidXRlICdyZWFkT25seVN0cmluZ0F0dHInIChUeXBlOiAncmVhZG9u
bHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICAgICAgInJlYWRPbmx5U3RyaW5nQXR0ciIs
Ci0gICAgICAgIFRlc3RPYmpJbnRlcm5hbDo6cmVhZE9ubHlTdHJpbmdBdHRyQXR0ckdldHRlciwK
LSAgICAgICAgMCwKLSAgICAgICAgMCAvKiBubyBkYXRhICovLAotICAgICAgICBzdGF0aWNfY2Fz
dDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLAotICAgICAgICBzdGF0aWNfY2FzdDx2
ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwKLSAgICAgICAgMCAvKiBvbiBpbnN0YW5j
ZSAqLwotICAgIH0sCi0gICAgewotICAgICAgICAvLyBBdHRyaWJ1dGUgJ3JlYWRPbmx5VGVzdE9i
akF0dHInIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICAgICAg
InJlYWRPbmx5VGVzdE9iakF0dHIiLAotICAgICAgICBUZXN0T2JqSW50ZXJuYWw6OnJlYWRPbmx5
VGVzdE9iakF0dHJBdHRyR2V0dGVyLAotICAgICAgICAwLAotICAgICAgICAwIC8qIG5vIGRhdGEg
Ki8sCi0gICAgICAgIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCks
Ci0gICAgICAgIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLAot
ICAgICAgICAwIC8qIG9uIGluc3RhbmNlICovCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIC8vIEF0
dHJpYnV0ZSAnaW50QXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgICAg
ICAiaW50QXR0ciIsCi0gICAgICAgIFRlc3RPYmpJbnRlcm5hbDo6aW50QXR0ckF0dHJHZXR0ZXIs
Ci0gICAgICAgIFRlc3RPYmpJbnRlcm5hbDo6aW50QXR0ckF0dHJTZXR0ZXIsCi0gICAgICAgIDAg
Lyogbm8gZGF0YSAqLywKLSAgICAgICAgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4
OjpERUZBVUxUKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2
ODo6Tm9uZSksCi0gICAgICAgIDAgLyogb24gaW5zdGFuY2UgKi8KLSAgICB9LAotICAgIHsKLSAg
ICAgICAgLy8gQXR0cmlidXRlICdzdHJpbmdBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0
cjogJycpCi0gICAgICAgICJzdHJpbmdBdHRyIiwKLSAgICAgICAgVGVzdE9iakludGVybmFsOjpz
dHJpbmdBdHRyQXR0ckdldHRlciwKLSAgICAgICAgVGVzdE9iakludGVybmFsOjpzdHJpbmdBdHRy
QXR0clNldHRlciwKLSAgICAgICAgMCAvKiBubyBkYXRhICovLAotICAgICAgICBzdGF0aWNfY2Fz
dDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLAotICAgICAgICBzdGF0aWNfY2FzdDx2
ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwKLSAgICAgICAgMCAvKiBvbiBpbnN0YW5j
ZSAqLwotICAgIH0sCi0gICAgewotICAgICAgICAvLyBBdHRyaWJ1dGUgJ3Rlc3RPYmpBdHRyJyAo
VHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgICAgICJ0ZXN0T2JqQXR0ciIsCi0g
ICAgICAgIFRlc3RPYmpJbnRlcm5hbDo6dGVzdE9iakF0dHJBdHRyR2V0dGVyLAotICAgICAgICBU
ZXN0T2JqSW50ZXJuYWw6OnRlc3RPYmpBdHRyQXR0clNldHRlciwKLSAgICAgICAgMCAvKiBubyBk
YXRhICovLAotICAgICAgICBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFV
TFQpLAotICAgICAgICBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25l
KSwKLSAgICAgICAgMCAvKiBvbiBpbnN0YW5jZSAqLwotICAgIH0sCi0gICAgewotICAgICAgICAv
LyBBdHRyaWJ1dGUgJ2F0dHJXaXRoRXhjZXB0aW9uJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0
cjogJycpCi0gICAgICAgICJhdHRyV2l0aEV4Y2VwdGlvbiIsCi0gICAgICAgIFRlc3RPYmpJbnRl
cm5hbDo6YXR0cldpdGhFeGNlcHRpb25BdHRyR2V0dGVyLAotICAgICAgICBUZXN0T2JqSW50ZXJu
YWw6OmF0dHJXaXRoRXhjZXB0aW9uQXR0clNldHRlciwKLSAgICAgICAgMCAvKiBubyBkYXRhICov
LAotICAgICAgICBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLAot
ICAgICAgICBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwKLSAg
ICAgICAgMCAvKiBvbiBpbnN0YW5jZSAqLwotICAgIH0sCi0gICAgewotICAgICAgICAvLyBBdHRy
aWJ1dGUgJ2F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0
cjogJycpCi0gICAgICAgICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIsCi0gICAgICAgIFRlc3RP
YmpJbnRlcm5hbDo6YXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyLAotICAgICAgICBU
ZXN0T2JqSW50ZXJuYWw6OmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlciwKLSAgICAg
ICAgMCAvKiBubyBkYXRhICovLAotICAgICAgICBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJv
bD4odjg6OkRFRkFVTFQpLAotICAgICAgICBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1
dGU+KHY4OjpOb25lKSwKLSAgICAgICAgMCAvKiBvbiBpbnN0YW5jZSAqLwotICAgIH0sCi0gICAg
ewotICAgICAgICAvLyBBdHRyaWJ1dGUgJ2F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uJyAoVHlwZTog
J2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgICAgICJhdHRyV2l0aEdldHRlckV4Y2VwdGlv
biIsCi0gICAgICAgIFRlc3RPYmpJbnRlcm5hbDo6YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRy
R2V0dGVyLAotICAgICAgICBUZXN0T2JqSW50ZXJuYWw6OmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9u
QXR0clNldHRlciwKLSAgICAgICAgMCAvKiBubyBkYXRhICovLAotICAgICAgICBzdGF0aWNfY2Fz
dDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLAotICAgICAgICBzdGF0aWNfY2FzdDx2
ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwKLSAgICAgICAgMCAvKiBvbiBpbnN0YW5j
ZSAqLwotICAgIH0sCi0gICAgewotICAgICAgICAvLyBBdHRyaWJ1dGUgJ2N1c3RvbUF0dHInIChU
eXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ3VzdG9tJykKLSAgICAgICAgImN1c3RvbUF0dHIi
LAotICAgICAgICBWOFRlc3RPYmo6OmN1c3RvbUF0dHJBY2Nlc3NvckdldHRlciwKLSAgICAgICAg
VjhUZXN0T2JqOjpjdXN0b21BdHRyQWNjZXNzb3JTZXR0ZXIsCi0gICAgICAgIDAgLyogbm8gZGF0
YSAqLywKLSAgICAgICAgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxU
KSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSks
Ci0gICAgICAgIDAgLyogb24gaW5zdGFuY2UgKi8KLSAgICB9LAorc3RhdGljIGNvbnN0IEJhdGNo
ZWRBdHRyaWJ1dGUgVGVzdE9iakF0dHJzW10gPSB7CisgICAgLy8gQXR0cmlidXRlICdyZWFkT25s
eUludEF0dHInIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKKyAgICB7
InJlYWRPbmx5SW50QXR0ciIsIFRlc3RPYmpJbnRlcm5hbDo6cmVhZE9ubHlJbnRBdHRyQXR0ckdl
dHRlciwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4o
djg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25l
KSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRlICdyZWFkT25seVN0cmlu
Z0F0dHInIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKKyAgICB7InJl
YWRPbmx5U3RyaW5nQXR0ciIsIFRlc3RPYmpJbnRlcm5hbDo6cmVhZE9ubHlTdHJpbmdBdHRyQXR0
ckdldHRlciwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJv
bD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpO
b25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRlICdyZWFkT25seVRl
c3RPYmpBdHRyJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJycpCisgICAg
eyJyZWFkT25seVRlc3RPYmpBdHRyIiwgVGVzdE9iakludGVybmFsOjpyZWFkT25seVRlc3RPYmpB
dHRyQXR0ckdldHRlciwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNz
Q29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+
KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRlICdpbnRB
dHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCisgICAgeyJpbnRBdHRyIiwgVGVz
dE9iakludGVybmFsOjppbnRBdHRyQXR0ckdldHRlciwgVGVzdE9iakludGVybmFsOjppbnRBdHRy
QXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJv
bD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpO
b25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRlICdzdHJpbmdBdHRy
JyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCisgICAgeyJzdHJpbmdBdHRyIiwgVGVz
dE9iakludGVybmFsOjpzdHJpbmdBdHRyQXR0ckdldHRlciwgVGVzdE9iakludGVybmFsOjpzdHJp
bmdBdHRyQXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNz
Q29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+
KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRlICd0ZXN0
T2JqQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQorICAgIHsidGVzdE9iakF0
dHIiLCBUZXN0T2JqSW50ZXJuYWw6OnRlc3RPYmpBdHRyQXR0ckdldHRlciwgVGVzdE9iakludGVy
bmFsOjp0ZXN0T2JqQXR0ckF0dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8
djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5
QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIC8vIEF0dHJp
YnV0ZSAnYXR0cldpdGhFeGNlcHRpb24nIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykK
KyAgICB7ImF0dHJXaXRoRXhjZXB0aW9uIiwgVGVzdE9iakludGVybmFsOjphdHRyV2l0aEV4Y2Vw
dGlvbkF0dHJHZXR0ZXIsIFRlc3RPYmpJbnRlcm5hbDo6YXR0cldpdGhFeGNlcHRpb25BdHRyU2V0
dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ2F0dHJXaXRoU2V0dGVyRXhj
ZXB0aW9uJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCisgICAgeyJhdHRyV2l0aFNl
dHRlckV4Y2VwdGlvbiIsIFRlc3RPYmpJbnRlcm5hbDo6YXR0cldpdGhTZXR0ZXJFeGNlcHRpb25B
dHRyR2V0dGVyLCBUZXN0T2JqSW50ZXJuYWw6OmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNl
dHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6
OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwg
MCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRlICdhdHRyV2l0aEdldHRlckV4
Y2VwdGlvbicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQorICAgIHsiYXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb24iLCBUZXN0T2JqSW50ZXJuYWw6OmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9u
QXR0ckdldHRlciwgVGVzdE9iakludGVybmFsOjphdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJT
ZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4
OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSks
IDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAnY3VzdG9tQXR0cicgKFR5
cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDdXN0b20nKQorICAgIHsiY3VzdG9tQXR0ciIsIFY4
VGVzdE9iajo6Y3VzdG9tQXR0ckFjY2Vzc29yR2V0dGVyLCBWOFRlc3RPYmo6OmN1c3RvbUF0dHJB
Y2Nlc3NvclNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29u
dHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4
OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiB9Owotc3RhdGljIGNvbnN0IEJhdGNoZWRD
YWxsYmFjayBUZXN0T2JqX2NhbGxiYWNrc1tdID0gewotICB7InZvaWRNZXRob2QiLCBUZXN0T2Jq
SW50ZXJuYWw6OnZvaWRNZXRob2RDYWxsYmFja30sCi0gIHsiaW50TWV0aG9kIiwgVGVzdE9iaklu
dGVybmFsOjppbnRNZXRob2RDYWxsYmFja30sCi0gIHsib2JqTWV0aG9kIiwgVGVzdE9iakludGVy
bmFsOjpvYmpNZXRob2RDYWxsYmFja30sCi0gIHsibWV0aG9kV2l0aEV4Y2VwdGlvbiIsIFRlc3RP
YmpJbnRlcm5hbDo6bWV0aG9kV2l0aEV4Y2VwdGlvbkNhbGxiYWNrfSwKLSAgeyJjdXN0b21NZXRo
b2QiLCBWOFRlc3RPYmo6OmN1c3RvbU1ldGhvZENhbGxiYWNrfSwKLSAgeyJjdXN0b21NZXRob2RX
aXRoQXJncyIsIFY4VGVzdE9iajo6Y3VzdG9tTWV0aG9kV2l0aEFyZ3NDYWxsYmFja30sCi0gIHsi
bWV0aG9kV2l0aE9wdGlvbmFsQXJnIiwgVGVzdE9iakludGVybmFsOjptZXRob2RXaXRoT3B0aW9u
YWxBcmdDYWxsYmFja30sCi0gIHsibWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxB
cmciLCBUZXN0T2JqSW50ZXJuYWw6Om1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFs
QXJnQ2FsbGJhY2t9LAotICB7Im1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFs
QXJncyIsIFRlc3RPYmpJbnRlcm5hbDo6bWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0
aW9uYWxBcmdzQ2FsbGJhY2t9LAotICB7Im92ZXJsb2FkZWRNZXRob2QiLCBUZXN0T2JqSW50ZXJu
YWw6Om92ZXJsb2FkZWRNZXRob2RDYWxsYmFja30sCitzdGF0aWMgY29uc3QgQmF0Y2hlZENhbGxi
YWNrIFRlc3RPYmpDYWxsYmFja3NbXSA9IHsKKyAgICB7InZvaWRNZXRob2QiLCBUZXN0T2JqSW50
ZXJuYWw6OnZvaWRNZXRob2RDYWxsYmFja30sCisgICAgeyJpbnRNZXRob2QiLCBUZXN0T2JqSW50
ZXJuYWw6OmludE1ldGhvZENhbGxiYWNrfSwKKyAgICB7Im9iak1ldGhvZCIsIFRlc3RPYmpJbnRl
cm5hbDo6b2JqTWV0aG9kQ2FsbGJhY2t9LAorICAgIHsibWV0aG9kV2l0aEV4Y2VwdGlvbiIsIFRl
c3RPYmpJbnRlcm5hbDo6bWV0aG9kV2l0aEV4Y2VwdGlvbkNhbGxiYWNrfSwKKyAgICB7ImN1c3Rv
bU1ldGhvZCIsIFY4VGVzdE9iajo6Y3VzdG9tTWV0aG9kQ2FsbGJhY2t9LAorICAgIHsiY3VzdG9t
TWV0aG9kV2l0aEFyZ3MiLCBWOFRlc3RPYmo6OmN1c3RvbU1ldGhvZFdpdGhBcmdzQ2FsbGJhY2t9
LAorICAgIHsibWV0aG9kV2l0aE9wdGlvbmFsQXJnIiwgVGVzdE9iakludGVybmFsOjptZXRob2RX
aXRoT3B0aW9uYWxBcmdDYWxsYmFja30sCisgICAgeyJtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdB
bmRPcHRpb25hbEFyZyIsIFRlc3RPYmpJbnRlcm5hbDo6bWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJn
QW5kT3B0aW9uYWxBcmdDYWxsYmFja30sCisgICAgeyJtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdB
bmRUd29PcHRpb25hbEFyZ3MiLCBUZXN0T2JqSW50ZXJuYWw6Om1ldGhvZFdpdGhOb25PcHRpb25h
bEFyZ0FuZFR3b09wdGlvbmFsQXJnc0NhbGxiYWNrfSwKKyAgICB7Im92ZXJsb2FkZWRNZXRob2Qi
LCBUZXN0T2JqSW50ZXJuYWw6Om92ZXJsb2FkZWRNZXRob2RDYWxsYmFja30sCiB9Owogc3RhdGlj
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RPYmpU
ZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYykKIHsKLSAg
ICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdF9zaWduYXR1cmUgPSBjb25maWd1cmVU
ZW1wbGF0ZShkZXNjLCAiVGVzdE9iaiIsIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPigpLCBWOFRlc3RPYmo6OmludGVybmFsRmllbGRDb3VudCwKLSAgICAgICAgVGVzdE9ial9h
dHRycywgc2l6ZW9mKFRlc3RPYmpfYXR0cnMpL3NpemVvZigqVGVzdE9ial9hdHRycyksCi0gICAg
ICAgIFRlc3RPYmpfY2FsbGJhY2tzLCBzaXplb2YoVGVzdE9ial9jYWxsYmFja3MpL3NpemVvZigq
VGVzdE9ial9jYWxsYmFja3MpKTsKKyAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVs
dFNpZ25hdHVyZSA9IGNvbmZpZ3VyZVRlbXBsYXRlKGRlc2MsICJUZXN0T2JqIiwgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4VGVzdE9iajo6aW50ZXJuYWxGaWVsZENv
dW50LAorICAgICAgICBUZXN0T2JqQXR0cnMsIHNpemVvZihUZXN0T2JqQXR0cnMpIC8gc2l6ZW9m
KCpUZXN0T2JqQXR0cnMpLAorICAgICAgICBUZXN0T2JqQ2FsbGJhY2tzLCBzaXplb2YoVGVzdE9i
akNhbGxiYWNrcykgLyBzaXplb2YoKlRlc3RPYmpDYWxsYmFja3MpKTsKICAgICB2ODo6TG9jYWw8
djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZSA9IGRlc2MtPkluc3RhbmNlVGVtcGxhdGUoKTsK
ICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBwcm90byA9IGRlc2MtPlByb3RvdHlw
ZVRlbXBsYXRlKCk7CiAgICAgCiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICd2b2lkTWV0aG9k
V2l0aEFyZ3MnCi0gICAgY29uc3QgaW50IHZvaWRNZXRob2RXaXRoQXJnc19hcmdjID0gMzsKLSAg
ICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiB2b2lkTWV0aG9kV2l0aEFyZ3NfYXJn
dlt2b2lkTWV0aG9kV2l0aEFyZ3NfYXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+KCksIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4VGVzdE9iajo6
R2V0UmF3VGVtcGxhdGUoKSB9OwotICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gdm9pZE1l
dGhvZFdpdGhBcmdzX3NpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCB2b2lkTWV0
aG9kV2l0aEFyZ3NfYXJnYywgdm9pZE1ldGhvZFdpdGhBcmdzX2FyZ3YpOwotICAgIHByb3RvLT5T
ZXQodjg6OlN0cmluZzo6TmV3KCJ2b2lkTWV0aG9kV2l0aEFyZ3MiKSwgdjg6OkZ1bmN0aW9uVGVt
cGxhdGU6Ok5ldyhUZXN0T2JqSW50ZXJuYWw6OnZvaWRNZXRob2RXaXRoQXJnc0NhbGxiYWNrLCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSwgdm9pZE1ldGhvZFdpdGhBcmdzX3NpZ25hdHVyZSkpOwor
ICAgIGNvbnN0IGludCB2b2lkTWV0aG9kV2l0aEFyZ3NBcmdjID0gMzsKKyAgICB2ODo6SGFuZGxl
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB2b2lkTWV0aG9kV2l0aEFyZ3NBcmd2W3ZvaWRNZXRob2RX
aXRoQXJnc0FyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCB2ODo6
SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RPYmo6OkdldFJhd1RlbXBsYXRl
KCkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IHZvaWRNZXRob2RXaXRoQXJnc1Np
Z25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCB2b2lkTWV0aG9kV2l0aEFyZ3NBcmdj
LCB2b2lkTWV0aG9kV2l0aEFyZ3NBcmd2KTsKKyAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5l
dygidm9pZE1ldGhvZFdpdGhBcmdzIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9i
akludGVybmFsOjp2b2lkTWV0aG9kV2l0aEFyZ3NDYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+KCksIHZvaWRNZXRob2RXaXRoQXJnc1NpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNp
Z25hdHVyZSAnaW50TWV0aG9kV2l0aEFyZ3MnCi0gICAgY29uc3QgaW50IGludE1ldGhvZFdpdGhB
cmdzX2FyZ2MgPSAzOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGludE1l
dGhvZFdpdGhBcmdzX2FyZ3ZbaW50TWV0aG9kV2l0aEFyZ3NfYXJnY10gPSB7IHY4OjpIYW5kbGU8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
KCksIFY4VGVzdE9iajo6R2V0UmF3VGVtcGxhdGUoKSB9OwotICAgIHY4OjpIYW5kbGU8djg6OlNp
Z25hdHVyZT4gaW50TWV0aG9kV2l0aEFyZ3Nfc2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3
KGRlc2MsIGludE1ldGhvZFdpdGhBcmdzX2FyZ2MsIGludE1ldGhvZFdpdGhBcmdzX2FyZ3YpOwot
ICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3KCJpbnRNZXRob2RXaXRoQXJncyIpLCB2ODo6
RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpJbnRlcm5hbDo6aW50TWV0aG9kV2l0aEFyZ3ND
YWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCksIGludE1ldGhvZFdpdGhBcmdzX3NpZ25h
dHVyZSkpOworICAgIGNvbnN0IGludCBpbnRNZXRob2RXaXRoQXJnc0FyZ2MgPSAzOworICAgIHY4
OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGludE1ldGhvZFdpdGhBcmdzQXJndltpbnRN
ZXRob2RXaXRoQXJnc0FyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigp
LCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RPYmo6OkdldFJhd1Rl
bXBsYXRlKCkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IGludE1ldGhvZFdpdGhB
cmdzU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGludE1ldGhvZFdpdGhBcmdz
QXJnYywgaW50TWV0aG9kV2l0aEFyZ3NBcmd2KTsKKyAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6
Ok5ldygiaW50TWV0aG9kV2l0aEFyZ3MiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0
T2JqSW50ZXJuYWw6OmludE1ldGhvZFdpdGhBcmdzQ2FsbGJhY2ssIHY4OjpIYW5kbGU8djg6OlZh
bHVlPigpLCBpbnRNZXRob2RXaXRoQXJnc1NpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNp
Z25hdHVyZSAnb2JqTWV0aG9kV2l0aEFyZ3MnCi0gICAgY29uc3QgaW50IG9iak1ldGhvZFdpdGhB
cmdzX2FyZ2MgPSAzOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG9iak1l
dGhvZFdpdGhBcmdzX2FyZ3Zbb2JqTWV0aG9kV2l0aEFyZ3NfYXJnY10gPSB7IHY4OjpIYW5kbGU8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
KCksIFY4VGVzdE9iajo6R2V0UmF3VGVtcGxhdGUoKSB9OwotICAgIHY4OjpIYW5kbGU8djg6OlNp
Z25hdHVyZT4gb2JqTWV0aG9kV2l0aEFyZ3Nfc2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3
KGRlc2MsIG9iak1ldGhvZFdpdGhBcmdzX2FyZ2MsIG9iak1ldGhvZFdpdGhBcmdzX2FyZ3YpOwot
ICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3KCJvYmpNZXRob2RXaXRoQXJncyIpLCB2ODo6
RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpJbnRlcm5hbDo6b2JqTWV0aG9kV2l0aEFyZ3ND
YWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCksIG9iak1ldGhvZFdpdGhBcmdzX3NpZ25h
dHVyZSkpOworICAgIGNvbnN0IGludCBvYmpNZXRob2RXaXRoQXJnc0FyZ2MgPSAzOworICAgIHY4
OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG9iak1ldGhvZFdpdGhBcmdzQXJndltvYmpN
ZXRob2RXaXRoQXJnc0FyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigp
LCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RPYmo6OkdldFJhd1Rl
bXBsYXRlKCkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IG9iak1ldGhvZFdpdGhB
cmdzU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIG9iak1ldGhvZFdpdGhBcmdz
QXJnYywgb2JqTWV0aG9kV2l0aEFyZ3NBcmd2KTsKKyAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6
Ok5ldygib2JqTWV0aG9kV2l0aEFyZ3MiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0
T2JqSW50ZXJuYWw6Om9iak1ldGhvZFdpdGhBcmdzQ2FsbGJhY2ssIHY4OjpIYW5kbGU8djg6OlZh
bHVlPigpLCBvYmpNZXRob2RXaXRoQXJnc1NpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIHRv
U3RyaW5nIHRlbXBsYXRlCiAgICAgZGVzYy0+U2V0KGdldFRvU3RyaW5nTmFtZSgpLCBnZXRUb1N0
cmluZ1RlbXBsYXRlKCkpOwpAQCAtNDY5LDE0ICs0MDIsMTQgQEAKIAogdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE9iajo6R2V0UmF3VGVtcGxhdGUoKQogewotICAg
IHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0T2JqX3Jh
d19jYWNoZV8gPSBjcmVhdGVSYXdUZW1wbGF0ZSgpOwotICAgIHJldHVybiBWOFRlc3RPYmpfcmF3
X2NhY2hlXzsKKyAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IFY4VGVzdE9ialJhd0NhY2hlID0gY3JlYXRlUmF3VGVtcGxhdGUoKTsKKyAgICByZXR1cm4gVjhU
ZXN0T2JqUmF3Q2FjaGU7CiB9CiAKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBWOFRlc3RPYmo6OkdldFRlbXBsYXRlKCkKIHsKLSAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE9ial9jYWNoZV8gPSBDb25maWd1cmVWOFRlc3RP
YmpUZW1wbGF0ZShHZXRSYXdUZW1wbGF0ZSgpKTsKLSAgICByZXR1cm4gVjhUZXN0T2JqX2NhY2hl
XzsKKyAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVz
dE9iakNhY2hlID0gQ29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUoR2V0UmF3VGVtcGxhdGUoKSk7
CisgICAgcmV0dXJuIFY4VGVzdE9iakNhY2hlOwogfQogCiBUZXN0T2JqKiBWOFRlc3RPYmo6OnRv
TmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQpAQCAtNDk0LDkgKzQyNyw5IEBA
CiB7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyOwogICAgIFY4UHJveHkqIHBy
b3h5ID0gMDsKLSAgICB3cmFwcGVyID0gZ2V0RE9NT2JqZWN0TWFwKCkuZ2V0KGltcGwpOwotICAg
IGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB3cmFwcGVyOworICAgICAg
ICB3cmFwcGVyID0gZ2V0RE9NT2JqZWN0TWFwKCkuZ2V0KGltcGwpOworICAgICAgICBpZiAoIXdy
YXBwZXIuSXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgd3JhcHBl
ciA9IFY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9iamVjdChwcm94eSwgJmluZm8sIGltcGwp
OwogICAgIGlmICh3cmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7Cklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L3Rlc3QvVjhUZXN0T2JqLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy92OC90ZXN0L1Y4VGVzdE9iai5oCShyZXZpc2lvbiA1NzkyMSkKKysr
IFdlYkNvcmUvYmluZGluZ3MvdjgvdGVzdC9WOFRlc3RPYmouaAkod29ya2luZyBjb3B5KQpAQCAt
MTgsMTQgKzE4LDE0IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAqLwogCi0j
aWZuZGVmIFY4VGVzdE9ial9ICi0jZGVmaW5lIFY4VGVzdE9ial9ICisjaWZuZGVmIFY4VGVzdE9i
al9oCisjZGVmaW5lIFY4VGVzdE9ial9oCiAKKyNpbmNsdWRlICJTdHJpbmdIYXNoLmgiCisjaW5j
bHVkZSAiVGVzdE9iai5oIgorI2luY2x1ZGUgIldyYXBwZXJUeXBlSW5mby5oIgogI2luY2x1ZGUg
PHY4Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlICJTdHJpbmdIYXNoLmgi
Ci0jaW5jbHVkZSAiV3JhcHBlclR5cGVJbmZvLmgiCi0jaW5jbHVkZSAiVGVzdE9iai5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ2LDggKzQ2LDggQEAKICAgICBzdGF0aWMgY29uc3Qg
aW50IGludGVybmFsRmllbGRDb3VudCA9IHY4RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291
bnQgKyAwOwogfTsKIAotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RPYmoqKTsK
LSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChQYXNzUmVmUHRyPFRlc3RPYmogPik7Cit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0T2JqKik7Cit2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOChQYXNzUmVmUHRyPFRlc3RPYmogPik7CiB9CiAKLSNlbmRpZiAvLyBWOFRlc3RPYmpf
SAorI2VuZGlmIC8vIFY4VGVzdE9ial9oCg==
</data>
<flag name="review"
          id="37730"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
      

    </bug>

</bugzilla>