<?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>124172</bug_id>
          
          <creation_ts>2013-11-11 16:50:21 -0800</creation_ts>
          <short_desc>Support unprefixed deconstructing assignment</short_desc>
          <delta_ts>2013-11-12 12:53:35 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>mark.lam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>949490</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-11-11 16:50:21 -0800</bug_when>
    <thetext>Support unprefixed deconstructing assignment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949498</commentid>
    <comment_count>1</comment_count>
      <attachid>216624</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-11-11 17:04:39 -0800</bug_when>
    <thetext>Created attachment 216624
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949520</commentid>
    <comment_count>2</comment_count>
      <attachid>216624</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-11-11 18:57:03 -0800</bug_when>
    <thetext>Comment on attachment 216624
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=216624&amp;action=review

Can you please address the comments below?

&gt; Source/JavaScriptCore/ChangeLog:15
&gt; +        We&apos;re also able to predicate our attempt to parse on the existence of
&gt; +        &apos;[&apos; or &apos;{&apos; as they not as common as other constructs. 

typo: they *are* not

&gt; Source/JavaScriptCore/parser/Parser.cpp:430
&gt; +    SavePoint start = createSavePoint();

Isn&apos;t this redundant?  The 2 caller sites that uses tryParseDeconstructionPatternExpression() also save a SavePoint.

&gt; LayoutTests/js/script-tests/parser-syntax-check.js:391
&gt; +valid(&quot;for ({of} in of){}&quot;)

The expected results said that this test FAILed.  This suggests that either this test should expect the statement to be &quot;invalid&quot; or the FAIL results are indicating there&apos;s a bug.  Can you please clarify which it&apos;s supposed to be?

&gt; LayoutTests/js/script-tests/parser-syntax-check.js:430
&gt; +valid(&quot;var {x: 1}=1&quot;)
&gt; +valid(&quot;[x]=1)&quot;)

Ditto with FAILed results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949768</commentid>
    <comment_count>3</comment_count>
      <attachid>216698</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-11-12 11:49:17 -0800</bug_when>
    <thetext>Created attachment 216698
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949776</commentid>
    <comment_count>4</comment_count>
      <attachid>216698</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-11-12 12:03:59 -0800</bug_when>
    <thetext>Comment on attachment 216698
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=216698&amp;action=review

&gt; Source/JavaScriptCore/parser/Parser.cpp:431
&gt; +template &lt;class TreeBuilder&gt; TreeDeconstructionPattern Parser&lt;LexerType&gt;::tryParseDeconstructionPatternExpression(TreeBuilder&amp; context)
&gt; +{
&gt; +    return parseDeconstructionPattern&lt;DeconstructToExpressions&gt;(context);
&gt; +}

Since this function no longer does anything extra anymore, it might make more sense to call parseDeconstructionPattern&lt;DeconstructToExpressions&gt;(context) from the 2 caller sites.

&gt; LayoutTests/js/parser-syntax-check-expected.txt:621
&gt; +FAIL Valid:   &quot;function f() { for ({of} in of){} }&quot; should NOT throw 

This one is still failing.  Is this appropriate?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949778</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-11-12 12:05:37 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; Source/JavaScriptCore/parser/Parser.cpp:431
&gt; &gt; +template &lt;class TreeBuilder&gt; TreeDeconstructionPattern Parser&lt;LexerType&gt;::tryParseDeconstructionPatternExpression(TreeBuilder&amp; context)
&gt; &gt; +{
&gt; &gt; +    return parseDeconstructionPattern&lt;DeconstructToExpressions&gt;(context);
&gt; &gt; +}
&gt; 
&gt; Since this function no longer does anything extra anymore, it might make more sense to call parseDeconstructionPattern&lt;DeconstructToExpressions&gt;(context) from the 2 caller sites.

I meant ... &quot;to call parseDeconstructionPattern&lt;DeconstructToExpressions&gt;(context) *directly* from the 2 caller sites&quot; and remove tryParseDeconstructionPatternExpression() altogether.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949788</commentid>
    <comment_count>6</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-11-12 12:10:19 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; &gt; Source/JavaScriptCore/parser/Parser.cpp:431
&gt; &gt; &gt; +template &lt;class TreeBuilder&gt; TreeDeconstructionPattern Parser&lt;LexerType&gt;::tryParseDeconstructionPatternExpression(TreeBuilder&amp; context)
&gt; &gt; &gt; +{
&gt; &gt; &gt; +    return parseDeconstructionPattern&lt;DeconstructToExpressions&gt;(context);
&gt; &gt; &gt; +}
&gt; &gt; 
&gt; &gt; Since this function no longer does anything extra anymore, it might make more sense to call parseDeconstructionPattern&lt;DeconstructToExpressions&gt;(context) from the 2 caller sites.
&gt; 
&gt; I meant ... &quot;to call parseDeconstructionPattern&lt;DeconstructToExpressions&gt;(context) *directly* from the 2 caller sites&quot; and remove tryParseDeconstructionPatternExpression() altogether.

We bludgeon this with the NEVER_INLINE flag to prevent in adding stack usage that we&apos;d like to avoid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949805</commentid>
    <comment_count>7</comment_count>
      <attachid>216703</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-11-12 12:28:36 -0800</bug_when>
    <thetext>Created attachment 216703
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949811</commentid>
    <comment_count>8</comment_count>
      <attachid>216703</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-11-12 12:37:50 -0800</bug_when>
    <thetext>Comment on attachment 216703
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=216703&amp;action=review

r=me

&gt; LayoutTests/js/parser-syntax-check-expected.txt:621
&gt; +PASS Valid:   &quot;for ({of} in of){} /**/&quot;
&gt; +PASS Valid:   &quot;function f() { for ({of} in of){} /**/ }&quot;

Remove the /**/ comment.

&gt; LayoutTests/js/script-tests/parser-syntax-check.js:391
&gt; +valid(&quot;for ({of} in of){} /**/&quot;)

Remove the /**/ comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949824</commentid>
    <comment_count>9</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-11-12 12:53:35 -0800</bug_when>
    <thetext>Committed r159139: &lt;http://trac.webkit.org/changeset/159139&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216624</attachid>
            <date>2013-11-11 17:04:39 -0800</date>
            <delta_ts>2013-11-12 11:49:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124172-20131111170436.patch</filename>
            <type>text/plain</type>
            <size>27889</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5MDgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
YjdmY2Y1NGNkMTJhMDk0YjA0MWY4NGM4NzRjNDJlYTRjNTMxNWI1Li45MzQ5NmY3NmUyYmM1MDg5
NjNkYzcwYThmNjgyNGIzOGE4ZWQ4YTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAxMy0xMS0xMSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFN1cHBvcnQgdW5wcmVmaXhlZCBkZWNvbnN0cnVjdGluZyBhc3NpZ25tZW50Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQxNzIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9y
dCBmb3IgdW5wcmVmaXhlZCBkZXNjb250cnVjdGl2ZSBhc3NpZ25tZW50LgorCisgICAgICAgIEhh
cHBpbHkgbm9uLXJlZmVyZW5jZSB0eXBlcyBvbiB0aGUgbGVmdCBoYW5kIHNpZGUgb2YgYW4gYXNz
aWdubWVudAorICAgICAgICBhcmUgYSBydW50aW1lIGVycm9yLCBzbyB3ZSdyZSBhYmxlIHRvIGRl
ZmVyIHZhbGlkYXRpb24gb2YgdGhlIGJpbmRpbmcKKyAgICAgICAgcGF0dGVybiB0byBjb2RlZ2Vu
IHRpbWUgd2hlbiB3ZSdyZSBhbHJlYWR5IGRvaW5nIGEgbG90IG1vcmUgd29yay4KKworICAgICAg
ICBXZSdyZSBhbHNvIGFibGUgdG8gcHJlZGljYXRlIG91ciBhdHRlbXB0IHRvIHBhcnNlIG9uIHRo
ZSBleGlzdGVuY2Ugb2YKKyAgICAgICAgJ1snIG9yICd7JyBhcyB0aGV5IG5vdCBhcyBjb21tb24g
YXMgb3RoZXIgY29uc3RydWN0cy4gCisKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQYXR0ZXJuTm9kZTo6ZW1pdERpcmVjdEJpbmRp
bmcpOgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgICogcGFyc2VyL1Bh
cnNlci5jcHA6CisgICAgICAgIChKU0M6Ojo6Y3JlYXRlQmluZGluZ1BhdHRlcm4pOgorICAgICAg
ICAoSlNDOjo6OnRyeVBhcnNlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuRXhwcmVzc2lvbik6CisgICAg
ICAgIChKU0M6Ojo6cGFyc2VEZWNvbnN0cnVjdGlvblBhdHRlcm4pOgorICAgICAgICAoSlNDOjo6
OnBhcnNlRm9yU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUFzc2lnbm1lbnRFeHBy
ZXNzaW9uKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlBhcnNl
cjo6Y3JlYXRlU2F2ZVBvaW50KToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpyZXN0b3JlU2F2ZVBv
aW50KToKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5oOgorCiAyMDEzLTExLTExICBG
aWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIENvbnN0YW50
Rm9sZGluZ1BoYXNlJ3Mgd2VpcmRvIGNvbXBpbGUtdGltZSBvcHRpbWl6YXRpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRl
eCA0MjIyNjE3MjZlNGE3NmNiZmE2NDE4ODFiYjUyZjExZThmYTJkOWEwLi45ZDNiMTUxNzIzMDQ0
Nzc1YjZhNTRjMThmNjZmNmY1ODMwNGY1YTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0yMzMzLDExICsyMzMzLDE3
IEBAIFJlZ2lzdGVySUQqIEFycmF5UGF0dGVybk5vZGU6OmVtaXREaXJlY3RCaW5kaW5nKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlCiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdl
dEFyZ3VtZW50QnlWYWwodGVtcC5nZXQoKSwgZ2VuZXJhdG9yLnVuY2hlY2tlZFJlZ2lzdGVyRm9y
QXJndW1lbnRzKCksIHRlbXAuZ2V0KCkpOwogICAgICAgICAgICAgdGFyZ2V0LT5iaW5kVmFsdWUo
Z2VuZXJhdG9yLCB0ZW1wLmdldCgpKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gZ2VuZXJh
dG9yLmVtaXRMb2FkKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIGpzVW5kZWZpbmVk
KCkpOworICAgICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkgfHwgIWRz
dCkKKyAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdExvYWQoZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0KSwganNVbmRlZmluZWQoKSk7CisgICAgICAgIExvY2FsIGxvY2FsID0g
Z2VuZXJhdG9yLmxvY2FsKGdlbmVyYXRvci52bSgpLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMp
OworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0
LCBsb2NhbC5nZXQoKSk7CiAgICAgfQogICAgIGlmICghcmhzLT5pc1NpbXBsZUFycmF5KCkpCiAg
ICAgICAgIHJldHVybiAwOwogCisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdFJlZ2lzdGVy
OworICAgIGlmIChkc3QgJiYgZHN0ICE9IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCisgICAg
ICAgIHJlc3VsdFJlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXROZXdBcnJheShnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCksIDAsIDApOwogICAgIEVsZW1lbnROb2RlKiBlbGVtZW50Tm9kZXMgPSBzdGF0
aWNfY2FzdDxBcnJheU5vZGUqPihyaHMpLT5lbGVtZW50cygpOwogICAgIFZlY3RvcjxFeHByZXNz
aW9uTm9kZSo+IGVsZW1lbnRzOwogICAgIGZvciAoOyBlbGVtZW50Tm9kZXM7IGVsZW1lbnROb2Rl
cyA9IGVsZW1lbnROb2Rlcy0+bmV4dCgpKQpAQCAtMjM0OSwxMyArMjM1NSwxNiBAQCBSZWdpc3Rl
cklEKiBBcnJheVBhdHRlcm5Ob2RlOjplbWl0RGlyZWN0QmluZGluZyhCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90YXJnZXRQYXR0
ZXJucy5zaXplKCk7IGkrKykgewogICAgICAgICByZWdpc3RlcnMudW5jaGVja2VkQXBwZW5kKGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShyZWdp
c3RlcnMubGFzdCgpLmdldCgpLCBlbGVtZW50c1tpXSk7CisgICAgICAgIGlmIChyZXN1bHRSZWdp
c3RlcikKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJbmRleChyZXN1bHRSZWdpc3Rl
ci5nZXQoKSwgaSwgcmVnaXN0ZXJzLmxhc3QoKS5nZXQoKSk7CiAgICAgfQogICAgIAogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90YXJnZXRQYXR0ZXJucy5zaXplKCk7IGkrKykgewogICAg
ICAgICBpZiAobV90YXJnZXRQYXR0ZXJuc1tpXSkKICAgICAgICAgICAgIG1fdGFyZ2V0UGF0dGVy
bnNbaV0tPmJpbmRWYWx1ZShnZW5lcmF0b3IsIHJlZ2lzdGVyc1tpXS5nZXQoKSk7CiAgICAgfQot
CisgICAgaWYgKHJlc3VsdFJlZ2lzdGVyKQorICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVU
b0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCByZXN1bHRSZWdpc3Rlci5nZXQoKSk7CiAgICAgcmV0
dXJuIGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBq
c1VuZGVmaW5lZCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9BU1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxk
ZXIuaAppbmRleCBjMTZhN2ZkMGRkZTM4Mzg1NGYwMTI3ZWFhOWQ5MWVkN2RjMjExODZiLi42NTNh
Yjc2MjE4NGJlMWY5YjY3MGMzY2YzNzRlNjkyYzAzZGFhNGE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtMTE3LDYgKzExNyw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgY29uc3QgYm9vbCBDYW5Vc2VGdW5jdGlvbkNhY2hlID0gdHJ1ZTsKICAgICBzdGF0
aWMgY29uc3QgaW50ICBEb250QnVpbGRLZXl3b3JkcyA9IDA7CiAgICAgc3RhdGljIGNvbnN0IGlu
dCAgRG9udEJ1aWxkU3RyaW5ncyA9IDA7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgSGFuZGxlc0Rl
Y29uc3RydWN0aW5nQXNzaWdubWVudCA9IHRydWU7CiAKICAgICBFeHByZXNzaW9uTm9kZSogbWFr
ZUJpbmFyeU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50IHRva2VuLCBzdGQ6OnBhaXI8
RXhwcmVzc2lvbk5vZGUqLCBCaW5hcnlPcEluZm8+LCBzdGQ6OnBhaXI8RXhwcmVzc2lvbk5vZGUq
LCBCaW5hcnlPcEluZm8+KTsKICAgICBFeHByZXNzaW9uTm9kZSogbWFrZUZ1bmN0aW9uQ2FsbE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGZ1bmMsIEFyZ3VtZW50
c05vZGUqIGFyZ3MsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggN2UzYjNkMDQ0MzRmMTJjMmEy
OTk2OWNhMjg5YjhkNTMzMWY4MDljMy4uZjMzODQyMDJjOTdiZDBhMjExZjAzYTdiNGNiOTIzYzRm
N2U0YjJhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtNDAw
LDcgKzQwMCw4IEBAIHRlbXBsYXRlIDxEZWNvbnN0cnVjdGlvbktpbmQga2luZCwgY2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVEZWNvbnN0cnVjdGlvblBhdHRlcm4KICAgICAgICAgICAgICAgICBzZW1h
bnRpY0ZhaWwoIkNhbm5vdCBkZWNvbnN0cnVjdCB0byBhIHBhcmFtZXRlciBuYW1lZCAnIiwgbmFt
ZS5pbXBsKCksICInIik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgY29udGV4
dC5hZGRWYXIoJm5hbWUsIGtpbmQgPT0gRGVjb25zdHJ1Y3RUb1BhcmFtZXRlcnMgPyAwIDogRGVj
bGFyYXRpb25TdGFja3M6Okhhc0luaXRpYWxpemVyKTsKKyAgICAgICAgaWYgKGtpbmQgIT0gRGVj
b25zdHJ1Y3RUb0V4cHJlc3Npb25zKQorICAgICAgICAgICAgY29udGV4dC5hZGRWYXIoJm5hbWUs
IGtpbmQgPT0gRGVjb25zdHJ1Y3RUb1BhcmFtZXRlcnMgPyAwIDogRGVjbGFyYXRpb25TdGFja3M6
Okhhc0luaXRpYWxpemVyKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoa2luZCA9PSBEZWNv
bnN0cnVjdFRvVmFyaWFibGVzKSB7CiAgICAgICAgICAgICBmYWlsSWZGYWxzZUlmU3RyaWN0KGRl
Y2xhcmVWYXJpYWJsZSgmbmFtZSksICJDYW5ub3QgZGVjbGFyZSBhIHZhcmlhYmxlIG5hbWVkICci
LCBuYW1lLmltcGwoKSwgIicgaW4gc3RyaWN0IG1vZGUiKTsKQEAgLTQyNCw2ICs0MjUsMTcgQEAg
dGVtcGxhdGUgPERlY29uc3RydWN0aW9uS2luZCBraW5kLCBjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZURlY29uc3RydWN0aW9uUGF0dGVybgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBl
PgordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJu
IFBhcnNlcjxMZXhlclR5cGU+Ojp0cnlQYXJzZURlY29uc3RydWN0aW9uUGF0dGVybkV4cHJlc3Np
b24oVHJlZUJ1aWxkZXImIGNvbnRleHQpCit7CisgICAgU2F2ZVBvaW50IHN0YXJ0ID0gY3JlYXRl
U2F2ZVBvaW50KCk7CisgICAgaWYgKGF1dG8gcGF0dGVybiA9IHBhcnNlRGVjb25zdHJ1Y3Rpb25Q
YXR0ZXJuPERlY29uc3RydWN0VG9FeHByZXNzaW9ucz4oY29udGV4dCkpCisgICAgICAgIHJldHVy
biBwYXR0ZXJuOworICAgIAorICAgIHJlc3RvcmVTYXZlUG9pbnQoc3RhcnQpOworICAgIHJldHVy
biAwOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPERlY29u
c3RydWN0aW9uS2luZCBraW5kLCBjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlY29uc3RydWN0aW9u
UGF0dGVybiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VEZWNvbnN0cnVjdGlvblBhdHRlcm4oVHJl
ZUJ1aWxkZXImIGNvbnRleHQsIGludCBkZXB0aCkKIHsKICAgICBmYWlsSWZTdGFja092ZXJmbG93
KCk7CkBAIC00MzMsNiArNDQ1LDggQEAgdGVtcGxhdGUgPERlY29uc3RydWN0aW9uS2luZCBraW5k
LCBjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlY29uc3RydWN0aW9uUGF0dGVybgogICAgIGNhc2Ug
T1BFTkJSQUNLRVQ6IHsKICAgICAgICAgYXV0byBhcnJheVBhdHRlcm4gPSBjb250ZXh0LmNyZWF0
ZUFycmF5UGF0dGVybihtX3Rva2VuLm1fbG9jYXRpb24pOwogICAgICAgICBuZXh0KCk7CisgICAg
ICAgIGlmIChraW5kID09IERlY29uc3RydWN0VG9FeHByZXNzaW9ucyAmJiBtYXRjaChDTE9TRUJS
QUNLRVQpKQorICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGZhaWxJZlRydWUobWF0Y2go
Q0xPU0VCUkFDS0VUKSwgIlRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIGJvdW5kIHByb3BlcnR5
IGluIGFuIGFycmF5IGRlY29uc3RydWN0aW9uIHBhdHRlcm4iKTsKICAgICAgICAgZG8gewogICAg
ICAgICAgICAgd2hpbGUgKG1hdGNoKENPTU1BKSkgewpAQCAtNDQyLDE1ICs0NTYsMjUgQEAgdGVt
cGxhdGUgPERlY29uc3RydWN0aW9uS2luZCBraW5kLCBjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURl
Y29uc3RydWN0aW9uUGF0dGVybgogICAgICAgICAgICAgcHJvcGFnYXRlRXJyb3IoKTsKICAgICAg
ICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbiA9IG1fdG9rZW4ubV9sb2NhdGlvbjsKICAg
ICAgICAgICAgIGF1dG8gaW5uZXJQYXR0ZXJuID0gcGFyc2VEZWNvbnN0cnVjdGlvblBhdHRlcm48
a2luZD4oY29udGV4dCwgZGVwdGggKyAxKTsKKyAgICAgICAgICAgIGlmIChraW5kID09IERlY29u
c3RydWN0VG9FeHByZXNzaW9ucyAmJiAhaW5uZXJQYXR0ZXJuKQorICAgICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICAgICAgZmFpbElmRmFsc2UoaW5uZXJQYXR0ZXJuLCAiQ2Fubm90IHBh
cnNlIHRoaXMgZGVjb25zdHJ1Y3Rpb24gcGF0dGVybiIpOwogICAgICAgICAgICAgY29udGV4dC5h
cHBlbmRBcnJheVBhdHRlcm5FbnRyeShhcnJheVBhdHRlcm4sIGxvY2F0aW9uLCBpbm5lclBhdHRl
cm4pOwogICAgICAgICB9IHdoaWxlIChjb25zdW1lKENPTU1BKSk7CisgICAgICAgIAorICAgICAg
ICBpZiAoa2luZCA9PSBEZWNvbnN0cnVjdFRvRXhwcmVzc2lvbnMgJiYgIW1hdGNoKENMT1NFQlJB
Q0tFVCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKwogICAgICAgICBjb25zdW1lT3JGYWlsKENM
T1NFQlJBQ0tFVCwgIkV4cGVjdGVkIGVpdGhlciBhIGNsb3NpbmcgJ10nIG9yIGEgJywnIGZvbGxv
d2luZyBhbiBlbGVtZW50IGRlY29uc3RydWN0aW9uIHBhdHRlcm4iKTsKICAgICAgICAgcGF0dGVy
biA9IGFycmF5UGF0dGVybjsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgT1BFTkJS
QUNFOiB7CiAgICAgICAgIG5leHQoKTsKKyAgICAgICAgCisgICAgICAgIGlmIChraW5kID09IERl
Y29uc3RydWN0VG9FeHByZXNzaW9ucyAmJiBtYXRjaChDTE9TRUJSQUNFKSkKKyAgICAgICAgICAg
IHJldHVybiAwOworCiAgICAgICAgIGZhaWxJZlRydWUobWF0Y2goQ0xPU0VCUkFDRSksICJUaGVy
ZSBtdXN0IGJlIGF0IGxlYXN0IG9uZSBib3VuZCBwcm9wZXJ0eSBpbiBhbiBvYmplY3QgZGVjb25z
dHJ1Y3Rpb24gcGF0dGVybiIpOwogICAgICAgICBhdXRvIG9iamVjdFBhdHRlcm4gPSBjb250ZXh0
LmNyZWF0ZU9iamVjdFBhdHRlcm4obV90b2tlbi5tX2xvY2F0aW9uKTsKICAgICAgICAgYm9vbCB3
YXNTdHJpbmcgPSBmYWxzZTsKQEAgLTQ3NiwxMyArNTAwLDE4IEBAIHRlbXBsYXRlIDxEZWNvbnN0
cnVjdGlvbktpbmQga2luZCwgY2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVEZWNvbnN0cnVjdGlvblBh
dHRlcm4KICAgICAgICAgICAgICAgICAgICAgd2FzU3RyaW5nID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKG1fdG9rZW4ubV90eXBlICE9IFJFU0VSVkVEICYmIG1fdG9rZW4ubV90eXBlICE9
IFJFU0VSVkVEX0lGX1NUUklDVCAmJiAhKG1fdG9rZW4ubV90eXBlICYgS2V5d29yZFRva2VuRmxh
ZykpCisgICAgICAgICAgICAgICAgICAgIGlmIChtX3Rva2VuLm1fdHlwZSAhPSBSRVNFUlZFRCAm
JiBtX3Rva2VuLm1fdHlwZSAhPSBSRVNFUlZFRF9JRl9TVFJJQ1QgJiYgIShtX3Rva2VuLm1fdHlw
ZSAmIEtleXdvcmRUb2tlbkZsYWcpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2lu
ZCA9PSBEZWNvbnN0cnVjdFRvRXhwcmVzc2lvbnMpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsV2l0aE1lc3NhZ2UoIkV4
cGVjdGVkIGEgcHJvcGVydHkgbmFtZSIpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIHByb3BlcnR5TmFtZSA9ICptX3Rva2VuLm1fZGF0YS5pZGVudDsKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IG5leHQoKTsKICAgICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoQ09MT04pKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChraW5kID09IERlY29uc3RydWN0VG9FeHByZXNzaW9ucykKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgICAgICBzZW1hbnRp
Y0ZhaWxJZlRydWUodG9rZW5UeXBlID09IFJFU0VSVkVELCAiQ2Fubm90IHVzZSBhYmJyZXZpYXRl
ZCBkZWNvbnN0cnVjdGlvbiBzeW50YXggZm9yIHJlc2VydmVkIG5hbWUgJyIsIHByb3BlcnR5TmFt
ZS5pbXBsKCksICInIik7CiAgICAgICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSh0
b2tlblR5cGUgPT0gUkVTRVJWRURfSUZfU1RSSUNULCAiQ2Fubm90IHVzZSBhYmJyZXZpYXRlZCBk
ZWNvbnN0cnVjdGlvbiBzeW50YXggZm9yIHJlc2VydmVkIG5hbWUgJyIsIHByb3BlcnR5TmFtZS5p
bXBsKCksICInIGluIHN0cmljdCBtb2RlIik7CiAgICAgICAgICAgICAgICAgICAgIHNlbWFudGlj
RmFpbElmVHJ1ZSh0b2tlblR5cGUgJiBLZXl3b3JkVG9rZW5GbGFnLCAiQ2Fubm90IHVzZSBhYmJy
ZXZpYXRlZCBkZWNvbnN0cnVjdGlvbiBzeW50YXggZm9yIGtleXdvcmQgJyIsIHByb3BlcnR5TmFt
ZS5pbXBsKCksICInIik7CkBAIC00OTEsOSArNTIwLDEzIEBAIHRlbXBsYXRlIDxEZWNvbnN0cnVj
dGlvbktpbmQga2luZCwgY2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVEZWNvbnN0cnVjdGlvblBhdHRl
cm4KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaW5uZXJQYXR0ZXJuID0gcGFy
c2VEZWNvbnN0cnVjdGlvblBhdHRlcm48a2luZD4oY29udGV4dCwgZGVwdGggKyAxKTsKICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGlmIChraW5kID09IERlY29uc3RydWN0VG9FeHByZXNzaW9u
cyAmJiAhaW5uZXJQYXR0ZXJuKQorICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAg
ICAgZmFpbElmRmFsc2UoaW5uZXJQYXR0ZXJuLCAiQ2Fubm90IHBhcnNlIHRoaXMgZGVjb25zdHJ1
Y3Rpb24gcGF0dGVybiIpOwogICAgICAgICAgICAgY29udGV4dC5hcHBlbmRPYmplY3RQYXR0ZXJu
RW50cnkob2JqZWN0UGF0dGVybiwgbG9jYXRpb24sIHdhc1N0cmluZywgcHJvcGVydHlOYW1lLCBp
bm5lclBhdHRlcm4pOwogICAgICAgICB9IHdoaWxlIChjb25zdW1lKENPTU1BKSk7CisgICAgICAg
IGlmIChraW5kID09IERlY29uc3RydWN0VG9FeHByZXNzaW9ucyAmJiAhbWF0Y2goQ0xPU0VCUkFD
RSkpCisgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgY29uc3VtZU9yRmFpbChDTE9TRUJS
QUNFLCAiRXhwZWN0ZWQgZWl0aGVyIGEgY2xvc2luZyAnfScgb3IgYW4gJywnIGFmdGVyIGEgcHJv
cGVydHkgZGVjb25zdHJ1Y3Rpb24gcGF0dGVybiIpOwogICAgICAgICBwYXR0ZXJuID0gb2JqZWN0
UGF0dGVybjsKICAgICAgICAgYnJlYWs7CkBAIC01MDEsNiArNTM0LDggQEAgdGVtcGxhdGUgPERl
Y29uc3RydWN0aW9uS2luZCBraW5kLCBjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlY29uc3RydWN0
aW9uUGF0dGVybgogCiAgICAgZGVmYXVsdDogewogICAgICAgICBpZiAoIW1hdGNoKElERU5UKSkg
eworICAgICAgICAgICAgaWYgKGtpbmQgPT0gRGVjb25zdHJ1Y3RUb0V4cHJlc3Npb25zKQorICAg
ICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgc2VtYW50aWNGYWlsdXJlRHVlVG9L
ZXl3b3JkKCJ2YXJpYWJsZSBuYW1lIik7CiAgICAgICAgICAgICBmYWlsV2l0aE1lc3NhZ2UoIkV4
cGVjdGVkIGEgcGFyYW1ldGVyIHBhdHRlcm4gb3IgYSAnKScgaW4gcGFyYW1ldGVyIGxpc3QiKTsK
ICAgICAgICAgfQpAQCAtNTU0LDYgKzU4OSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JTdGF0ZW1lbnQoCiAg
ICAgSlNUZXh0UG9zaXRpb24gZGVjbHNTdGFydDsKICAgICBKU1RleHRQb3NpdGlvbiBkZWNsc0Vu
ZDsKICAgICBUcmVlRXhwcmVzc2lvbiBkZWNscyA9IDA7CisgICAgVHJlZURlY29uc3RydWN0aW9u
UGF0dGVybiBwYXR0ZXJuID0gMDsKICAgICBpZiAobWF0Y2goVkFSKSkgewogICAgICAgICAvKgog
ICAgICAgICAgZm9yICh2YXIgSURFTlQgaW4gZXhwcmVzc2lvbikgc3RhdGVtZW50CkBAIC02MDMs
NiArNjM5LDE1IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JTdGF0ZW1lbnQoCiAgICAgfQogICAgIAogICAgIGlm
ICghbWF0Y2goU0VNSUNPTE9OKSkgeworICAgICAgICBpZiAoVHJlZUJ1aWxkZXI6OkhhbmRsZXNE
ZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnQgJiYgKG1hdGNoKE9QRU5CUkFDRSkgfHwgbWF0Y2goT1BF
TkJSQUNLRVQpKSkgeworICAgICAgICAgICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNh
dmVQb2ludCgpOworICAgICAgICAgICAgZGVjbHNTdGFydCA9IHRva2VuU3RhcnRQb3NpdGlvbigp
OworICAgICAgICAgICAgcGF0dGVybiA9IHRyeVBhcnNlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuRXhw
cmVzc2lvbihjb250ZXh0KTsKKyAgICAgICAgICAgIGRlY2xzRW5kID0gbGFzdFRva2VuRW5kUG9z
aXRpb24oKTsKKyAgICAgICAgICAgIGlmIChwYXR0ZXJuICYmIG1hdGNoKElERU5UKSAmJiAqbV90
b2tlbi5tX2RhdGEuaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+b2YpCisgICAgICAgICAg
ICAgICAgZ290byBlbnVtZXJhdGlvbkxvb3A7CisgICAgICAgICAgICByZXN0b3JlU2F2ZVBvaW50
KHNhdmVQb2ludCk7CisgICAgICAgIH0KICAgICAgICAgbV9hbGxvd3NJbiA9IGZhbHNlOwogICAg
ICAgICBkZWNsc1N0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAgICAgICAgIGRlY2xzID0g
cGFyc2VFeHByZXNzaW9uKGNvbnRleHQpOwpAQCAtNjM5LDYgKzY4NCw3IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VG
b3JTdGF0ZW1lbnQoCiAgICAgfQogICAgIAogICAgIC8vIEZvci1pbiBsb29wCitlbnVtZXJhdGlv
bkxvb3A6CiAgICAgZmFpbElmRmFsc2Uobm9uTEhTQ291bnQgPT0gbV9ub25MSFNDb3VudCwgIkV4
cGVjdGVkIGEgcmVmZXJlbmNlIG9uIHRoZSBsZWZ0IGhhbmQgc2lkZSBvZiBhbiBlbnVtZXJhdGlv
biBzdGF0ZW1lbnQiKTsKICAgICBib29sIGlzT2ZFbnVtZXJhdGlvbiA9IGZhbHNlOwogICAgIGlm
ICghY29uc3VtZShJTlRPS0VOKSkgewpAQCAtNjU3LDkgKzcwMywxMyBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRm9y
U3RhdGVtZW50KAogICAgIFRyZWVTdGF0ZW1lbnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQo
Y29udGV4dCwgdW51c2VkKTsKICAgICBlbmRMb29wKCk7CiAgICAgZmFpbElmRmFsc2Uoc3RhdGVt
ZW50LCAiRXhwZWN0ZWQgYSBzdGF0ZW1lbnQgYXMgdGhlIGJvZHkgb2YgYSBmb3ItIiwgaXNPZkVu
dW1lcmF0aW9uID8gIm9mIiA6ICJpbiIsICJsb29wIik7Ci0gICAgaWYgKGlzT2ZFbnVtZXJhdGlv
bikKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRm9yT2ZMb29wKGxvY2F0aW9uLCBkZWNs
cywgZXhwciwgc3RhdGVtZW50LCBkZWNsc1N0YXJ0LCBkZWNsc0VuZCwgZXhwckVuZCwgc3RhcnRM
aW5lLCBlbmRMaW5lKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGb3JJbkxvb3AobG9jYXRp
b24sIGRlY2xzLCBleHByLCBzdGF0ZW1lbnQsIGRlY2xzU3RhcnQsIGRlY2xzRW5kLCBleHByRW5k
LCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIGlmICghaXNPZkVudW1lcmF0aW9uKQorICAgICAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVGb3JJbkxvb3AobG9jYXRpb24sIGRlY2xzLCBleHByLCBz
dGF0ZW1lbnQsIGRlY2xzU3RhcnQsIGRlY2xzRW5kLCBleHByRW5kLCBzdGFydExpbmUsIGVuZExp
bmUpOworICAgIGlmIChwYXR0ZXJuKSB7CisgICAgICAgIEFTU0VSVCghZGVjbHMpOworICAgICAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVGb3JPZkxvb3AobG9jYXRpb24sIHBhdHRlcm4sIGV4cHIs
IHN0YXRlbWVudCwgZGVjbHNTdGFydCwgZGVjbHNFbmQsIGV4cHJFbmQsIHN0YXJ0TGluZSwgZW5k
TGluZSk7CisgICAgfQorICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZvck9mTG9vcChsb2NhdGlv
biwgZGVjbHMsIGV4cHIsIHN0YXRlbWVudCwgZGVjbHNTdGFydCwgZGVjbHNFbmQsIGV4cHJFbmQs
IHN0YXJ0TGluZSwgZW5kTGluZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+
CkBAIC0xMzY4LDYgKzE0MTgsMTYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRyZWVCdWlsZGVyPiBU
cmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBc3NpZ25tZW4KICAgICBKU1Rv
a2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBpbnQgaW5pdGlhbEFz
c2lnbm1lbnRDb3VudCA9IG1fYXNzaWdubWVudENvdW50OwogICAgIGludCBpbml0aWFsTm9uTEhT
Q291bnQgPSBtX25vbkxIU0NvdW50OworICAgIGlmIChUcmVlQnVpbGRlcjo6SGFuZGxlc0RlY29u
c3RydWN0aW5nQXNzaWdubWVudCAmJiAobWF0Y2goT1BFTkJSQUNFKSB8fCBtYXRjaChPUEVOQlJB
Q0tFVCkpKSB7CisgICAgICAgIFNhdmVQb2ludCBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQo
KTsKKyAgICAgICAgYXV0byBwYXR0ZXJuID0gdHJ5UGFyc2VEZWNvbnN0cnVjdGlvblBhdHRlcm5F
eHByZXNzaW9uKGNvbnRleHQpOworICAgICAgICBpZiAocGF0dGVybiAmJiBjb25zdW1lKEVRVUFM
KSkgeworICAgICAgICAgICAgYXV0byByaHMgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNv
bnRleHQpOworICAgICAgICAgICAgaWYgKHJocykKKyAgICAgICAgICAgICAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVEZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnQobG9jYXRpb24sIHBhdHRlcm4sIHJo
cyk7CisgICAgICAgIH0KKyAgICAgICAgcmVzdG9yZVNhdmVQb2ludChzYXZlUG9pbnQpOworICAg
IH0KICAgICBUcmVlRXhwcmVzc2lvbiBsaHMgPSBwYXJzZUNvbmRpdGlvbmFsRXhwcmVzc2lvbihj
b250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShsaHMsICJDYW5ub3QgcGFyc2UgZXhwcmVzc2lvbiIp
OwogICAgIGlmIChpbml0aWFsTm9uTEhTQ291bnQgIT0gbV9ub25MSFNDb3VudCkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggY2M5Y2Y0ZTZlZjc4NTI3Mzg4NjE4OTkz
ODhlYjcxMzkxZDY5Njc0Yi4uM2M0N2M1NDAzMmNkOTkzN2E3MTg2NzU3N2M0NWY5MGE5NWI3NDJj
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC03MzEsNiArNzMxLDcg
QEAgcHJpdmF0ZToKIAogICAgIHRlbXBsYXRlIDxEZWNvbnN0cnVjdGlvbktpbmQsIGNsYXNzIFRy
ZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVEZWNvbnN0cnVjdGlvblBhdHRlcm4gY3JlYXRl
QmluZGluZ1BhdHRlcm4oVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlmaWVyJiwgaW50IGRlcHRo
KTsKICAgICB0ZW1wbGF0ZSA8RGVjb25zdHJ1Y3Rpb25LaW5kLCBjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZURlY29uc3RydWN0aW9uUGF0dGVybiBwYXJzZURlY29uc3RydWN0aW9uUGF0dGVybihUcmVl
QnVpbGRlciYsIGludCBkZXB0aCA9IDApOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gTkVWRVJfSU5MSU5FIFRyZWVEZWNvbnN0cnVjdGlvblBhdHRlcm4gdHJ5UGFyc2VEZWNvbnN0
cnVjdGlvblBhdHRlcm5FeHByZXNzaW9uKFRyZWVCdWlsZGVyJik7CiAgICAgdGVtcGxhdGUgPEZ1
bmN0aW9uUmVxdWlyZW1lbnRzLCBGdW5jdGlvblBhcnNlTW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRh
aW5pbmdTY29wZSwgY2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgcGFyc2VGdW5jdGlvbkluZm8oVHJl
ZUJ1aWxkZXImLCBjb25zdCBJZGVudGlmaWVyKiYsIFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0Jiwg
VHJlZUZ1bmN0aW9uQm9keSYsIHVuc2lnbmVkJiBvcGVuQnJhY2VPZmZzZXQsIHVuc2lnbmVkJiBj
bG9zZUJyYWNlT2Zmc2V0LCBpbnQmIGJvZHlTdGFydExpbmUsIHVuc2lnbmVkJiBib2R5U3RhcnRD
b2x1bW4pOwogICAgIEFMV0FZU19JTkxJTkUgaW50IGlzQmluYXJ5T3BlcmF0b3IoSlNUb2tlblR5
cGUpOwogICAgIGJvb2wgYWxsb3dBdXRvbWF0aWNTZW1pY29sb24oKTsKQEAgLTc2OCw2ICs3Njks
NyBAQCBwcml2YXRlOgogICAgIAogICAgIEFMV0FZU19JTkxJTkUgU2F2ZVBvaW50IGNyZWF0ZVNh
dmVQb2ludCgpCiAgICAgeworICAgICAgICBBU1NFUlQoIWhhc0Vycm9yKCkpOwogICAgICAgICBT
YXZlUG9pbnQgcmVzdWx0OwogICAgICAgICByZXN1bHQuc3RhcnRPZmZzZXQgPSBtX3Rva2VuLm1f
bG9jYXRpb24uc3RhcnRPZmZzZXQ7CiAgICAgICAgIHJlc3VsdC5vbGRMaW5lU3RhcnRPZmZzZXQg
PSBtX3Rva2VuLm1fbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0OwpAQCAtNzc4LDYgKzc4MCw3IEBA
IHByaXZhdGU6CiAgICAgCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHJlc3RvcmVTYXZlUG9pbnQo
Y29uc3QgU2F2ZVBvaW50JiBzYXZlUG9pbnQpCiAgICAgeworICAgICAgICBtX2Vycm9yTWVzc2Fn
ZSA9IFN0cmluZygpOwogICAgICAgICBtX2xleGVyLT5zZXRPZmZzZXQoc2F2ZVBvaW50LnN0YXJ0
T2Zmc2V0LCBzYXZlUG9pbnQub2xkTGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgbmV4dCgpOwog
ICAgICAgICBtX2xleGVyLT5zZXRMYXN0TGluZU51bWJlcihzYXZlUG9pbnQub2xkTGFzdExpbmVO
dW1iZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhD
aGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaApp
bmRleCAyZGFiMWUyZGM5NTQ3OTJkMTJkNjcxYTY2YWZlNzBkODUwMzY1NmQyLi4xNjU3YjM0Yzhi
NTI4NTgwMzgwNTZiODg2NjAxNTEzMzBmNTRiMmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaApAQCAtMTIwLDYgKzEyMCw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgY29uc3QgYm9vbCBDYW5Vc2VGdW5jdGlvbkNhY2hlID0gdHJ1ZTsKICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgRG9udEJ1aWxkS2V5d29yZHMgPSBMZXhleEZsYWdzRG9udEJ1aWxk
S2V5d29yZHM7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIERvbnRCdWlsZFN0cmluZ3MgPSBM
ZXhlckZsYWdzRG9udEJ1aWxkU3RyaW5nczsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBIYW5kbGVz
RGVjb25zdHJ1Y3RpbmdBc3NpZ25tZW50ID0gZmFsc2U7CiAKICAgICBpbnQgY3JlYXRlU291cmNl
RWxlbWVudHMoKSB7IHJldHVybiAxOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgbWFrZUZ1bmN0aW9u
Q2FsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQp
IHsgcmV0dXJuIENhbGxFeHByOyB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjQzNzI0NGZjNWE1NzIwM2FhYzczMGZhMzQ0
OGM5YjVlNTk1YzZhOC4uMzc5ZjBmODFlZTcxZWIwOGVlOTI4Mjk4OGI1MGVmY2IzNWU0ZWYwYiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEzLTExLTExICBPbGl2ZXIgSHVudCAgPG9saXZlckBh
cHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCB1bnByZWZpeGVkIGRlY29uc3RydWN0aW5nIGFz
c2lnbm1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyNDE3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBhbmQgZXhwYW5kIHRlc3Rpbmcgb2YgZGVzdHJ1Y3R1cmluZyBhc3NpZ25tZW50CisKKyAg
ICAgICAgKiBqcy9iYXNpYy1mb3Itb2YtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL2Rlc3Ry
dWN0dXJpbmctYXNzaWdubWVudC1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvcGFyc2VyLXN5
bnRheC1jaGVjay1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2Jhc2lj
LWZvci1vZi5qczoKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvZGVzdHJ1Y3R1cmluZy1hc3Np
Z25tZW50LmpzOgorICAgICAgICAodGVzdERlc3RydWN0dXJpbmcpOgorICAgICAgICAqIGpzL3Nj
cmlwdC10ZXN0cy9wYXJzZXItc3ludGF4LWNoZWNrLmpzOgorCiAyMDEzLTExLTExICBTaW1vbiBG
cmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIx
NTU2NjApOiBib3gtc2hhZG93IGNhdXNlcyBvdmVybGF5IHNjcm9sbGJhcnMgdG8gYmUgaW4gdGhl
IHdyb25nIHBvc2l0aW9uIHdoZW4gZWxlbWVudCBpcyBjb21wb3NpdGVkICg4NTY0NykKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2pzL2Jhc2ljLWZvci1vZi1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9qcy9iYXNpYy1mb3Itb2YtZXhwZWN0ZWQudHh0CmluZGV4IDZmMTBiMTczY2I1MTg2OGIx
ZjU2ZTZjOTJlNmY1Zjg3OTEzMDczNWYuLjlhNTVhNzVhNWY4MTk5YzE2MjM1ZWY3NGI4NDljZDNl
MWQ1YWFiNTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2Jhc2ljLWZvci1vZi1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvYmFzaWMtZm9yLW9mLWV4cGVjdGVkLnR4dApAQCAt
NjMsNiArNjMsMzMgQEAgUEFTUyBrZXkgaXMgaQogUEFTUyB2YWx1ZSBpcyB0ZXN0QXJyYXlba2V5
XQogUEFTUyBrZXkgaXMgaQogUEFTUyB0ZXN0QXJyYXkubGVuZ3RoIGlzIDkKK1BBU1MgdmFsdWUg
aXMgdGVzdEFycmF5W2tleV0KK1BBU1Mga2V5IGlzIGkKK1BBU1MgdmFsdWUgaXMgdGVzdEFycmF5
W2tleV0KK1BBU1Mga2V5IGlzIGkKK1BBU1MgdmFsdWUgaXMgdGVzdEFycmF5W2tleV0KK1BBU1Mg
a2V5IGlzIGkKK1BBU1MgdmFsdWUgaXMgdGVzdEFycmF5W2tleV0KK1BBU1Mga2V5IGlzIGkKK1BB
U1MgdmFsdWUgaXMgdGVzdEFycmF5W2tleV0KK1BBU1Mga2V5IGlzIGkKK1BBU1MgdmFsdWUgaXMg
dGVzdEFycmF5W2tleV0KK1BBU1Mga2V5IGlzIGkKK1BBU1MgdmFsdWUgaXMgdGVzdEFycmF5W2tl
eV0KK1BBU1Mga2V5IGlzIGkKK1BBU1MgdmFsdWUgaXMgdGVzdEFycmF5W2tleV0KK1BBU1Mga2V5
IGlzIGkKK1BBU1MgdmFsdWUgaXMgdGVzdEFycmF5W2tleV0KK1BBU1Mga2V5IGlzIGkKK1BBU1Mg
dmFsdWUgaXMgdGVzdEFycmF5W2tleV0KK1BBU1Mga2V5IGlzIGkKK1BBU1MgdmFsdWUgaXMgdGVz
dEFycmF5W2tleV0KK1BBU1Mga2V5IGlzIGkKK1BBU1MgdmFsdWUgaXMgdGVzdEFycmF5W2tleV0K
K1BBU1Mga2V5IGlzIGkKK1BBU1MgdmFsdWUgaXMgdGVzdEFycmF5W2tleV0KK1BBU1Mga2V5IGlz
IGkKK1BBU1MgdGVzdEFycmF5Lmxlbmd0aCBpcyAxMwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kZXN0
cnVjdHVyaW5nLWFzc2lnbm1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZGVzdHJ1
Y3R1cmluZy1hc3NpZ25tZW50LWV4cGVjdGVkLnR4dAppbmRleCBkMjc1OGJkMjZhYjYyNWZhNmFm
NDc3YjBjMTdiYjY2ZTJjNzE0MmVmLi5iNTQwNWQ5ZTMwZTEzYzM5NDg4MjdiZTM3OWJjNTVkNjIw
MzRjOGJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9kZXN0cnVjdHVyaW5nLWFzc2lnbm1l
bnQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL2Rlc3RydWN0dXJpbmctYXNzaWdu
bWVudC1leHBlY3RlZC50eHQKQEAgLTcsNTggKzcsNzUgQEAgUEFTUyB2YXIgW2EsYl09WycxJywn
MiddOyB2YXIgcj1hK2I7IHIgaXMgJzEyJwogRnVuY3Rpb24gYXMgU3RyaW5nOiAoZnVuY3Rpb24o
W2EsYl0pIHsgcmV0dXJuIGErYjt9KQogUEFTUyAoZnVuY3Rpb24oW2EsYl0pIHsgcmV0dXJuIGEr
Yjt9KShbJzEnLCcyJ10pIGlzICcxMicKIFBBU1MgKGZ1bmN0aW9uIChbYSxiXSkgeyByZXR1cm4g
YStiO30pKFsnMScsJzInXSkgaXMgJzEyJworUEFTUyAoW2EsYl09WycxJywnMiddKTsgdmFyIHI9
YStiOyByIGlzICcxMicKK1BBU1MgW2EsYl09WycxJywnMiddOyB2YXIgcj1hK2I7IHIgaXMgJzEy
JwogUEFTUyB2YXIge2EsYn09e2E6JzEnLGI6JzInfTsgdmFyIHI9YStiOyByIGlzICcxMicKIEZ1
bmN0aW9uIGFzIFN0cmluZzogKGZ1bmN0aW9uKHthLGJ9KSB7IHJldHVybiBhK2I7fSkKIFBBU1Mg
KGZ1bmN0aW9uKHthLGJ9KSB7IHJldHVybiBhK2I7fSkoe2E6JzEnLGI6JzInfSkgaXMgJzEyJwog
UEFTUyAoZnVuY3Rpb24gKHthOmEsYjpifSkgeyByZXR1cm4gYStiO30pKHthOicxJyxiOicyJ30p
IGlzICcxMicKK1BBU1MgKHthLGJ9PXthOicxJyxiOicyJ30pOyB2YXIgcj1hK2I7IHIgaXMgJzEy
JwogUEFTUyB2YXIge2M6YSxkOmJ9PXtjOicxJyxkOicyJ307IHZhciByPWErYjsgciBpcyAnMTIn
CiBGdW5jdGlvbiBhcyBTdHJpbmc6IChmdW5jdGlvbih7YzphLGQ6Yn0pIHsgcmV0dXJuIGErYjt9
KQogUEFTUyAoZnVuY3Rpb24oe2M6YSxkOmJ9KSB7IHJldHVybiBhK2I7fSkoe2M6JzEnLGQ6JzIn
fSkgaXMgJzEyJwogUEFTUyAoZnVuY3Rpb24gKHtjOmEsZDpifSkgeyByZXR1cm4gYStiO30pKHtj
OicxJyxkOicyJ30pIGlzICcxMicKK1BBU1MgKHtjOmEsZDpifT17YzonMScsZDonMid9KTsgdmFy
IHI9YStiOyByIGlzICcxMicKIFBBU1MgdmFyIHtjOmIsZDphfT17YzonMScsZDonMid9OyB2YXIg
cj1hK2I7IHIgaXMgJzIxJwogRnVuY3Rpb24gYXMgU3RyaW5nOiAoZnVuY3Rpb24oe2M6YixkOmF9
KSB7IHJldHVybiBhK2I7fSkKIFBBU1MgKGZ1bmN0aW9uKHtjOmIsZDphfSkgeyByZXR1cm4gYSti
O30pKHtjOicxJyxkOicyJ30pIGlzICcyMScKIFBBU1MgKGZ1bmN0aW9uICh7YzpiLGQ6YX0pIHsg
cmV0dXJuIGErYjt9KSh7YzonMScsZDonMid9KSBpcyAnMjEnCitQQVNTICh7YzpiLGQ6YX09e2M6
JzEnLGQ6JzInfSk7IHZhciByPWErYjsgciBpcyAnMjEnCiBQQVNTIHZhciB7dHJ1ZTphLGZhbHNl
OmIsdW5kZWZpbmVkOmMsbnVsbDpkLGluOmUsZm9yOmYsMS41OmcsJ2ZvbyBiYXInOmh9PXt0cnVl
OidhJyxmYWxzZTonYicsdW5kZWZpbmVkOidjJyxudWxsOidkJyxpbjonZScsZm9yOidmJywxLjU6
J2cnLCdmb28gYmFyJzonaCd9OyB2YXIgcj1hK2IrYytkK2UrZitnK2g7IHIgaXMgJ2FiY2RlZmdo
JwogRnVuY3Rpb24gYXMgU3RyaW5nOiAoZnVuY3Rpb24oe3RydWU6YSxmYWxzZTpiLHVuZGVmaW5l
ZDpjLG51bGw6ZCxpbjplLGZvcjpmLDEuNTpnLCdmb28gYmFyJzpofSkgeyByZXR1cm4gYStiK2Mr
ZCtlK2YrZytoO30pCiBQQVNTIChmdW5jdGlvbih7dHJ1ZTphLGZhbHNlOmIsdW5kZWZpbmVkOmMs
bnVsbDpkLGluOmUsZm9yOmYsMS41OmcsJ2ZvbyBiYXInOmh9KSB7IHJldHVybiBhK2IrYytkK2Ur
ZitnK2g7fSkoe3RydWU6J2EnLGZhbHNlOidiJyx1bmRlZmluZWQ6J2MnLG51bGw6J2QnLGluOidl
Jyxmb3I6J2YnLDEuNTonZycsJ2ZvbyBiYXInOidoJ30pIGlzICdhYmNkZWZnaCcKIFBBU1MgKGZ1
bmN0aW9uICh7dHJ1ZTphLGZhbHNlOmIsdW5kZWZpbmVkOmMsbnVsbDpkLGluOmUsZm9yOmYsMS41
OmcsImZvbyBiYXIiOmh9KSB7IHJldHVybiBhK2IrYytkK2UrZitnK2g7fSkoe3RydWU6J2EnLGZh
bHNlOidiJyx1bmRlZmluZWQ6J2MnLG51bGw6J2QnLGluOidlJyxmb3I6J2YnLDEuNTonZycsJ2Zv
byBiYXInOidoJ30pIGlzICdhYmNkZWZnaCcKK1BBU1MgKHt0cnVlOmEsZmFsc2U6Yix1bmRlZmlu
ZWQ6YyxudWxsOmQsaW46ZSxmb3I6ZiwxLjU6ZywnZm9vIGJhcic6aH09e3RydWU6J2EnLGZhbHNl
OidiJyx1bmRlZmluZWQ6J2MnLG51bGw6J2QnLGluOidlJyxmb3I6J2YnLDEuNTonZycsJ2ZvbyBi
YXInOidoJ30pOyB2YXIgcj1hK2IrYytkK2UrZitnK2g7IHIgaXMgJ2FiY2RlZmdoJwogUEFTUyB2
YXIgW3tjOmEsZDpifV09W3tjOicxJyxkOicyJ31dOyB2YXIgcj1hK2I7IHIgaXMgJzEyJwogRnVu
Y3Rpb24gYXMgU3RyaW5nOiAoZnVuY3Rpb24oW3tjOmEsZDpifV0pIHsgcmV0dXJuIGErYjt9KQog
UEFTUyAoZnVuY3Rpb24oW3tjOmEsZDpifV0pIHsgcmV0dXJuIGErYjt9KShbe2M6JzEnLGQ6JzIn
fV0pIGlzICcxMicKIFBBU1MgKGZ1bmN0aW9uIChbe2M6YSxkOmJ9XSkgeyByZXR1cm4gYStiO30p
KFt7YzonMScsZDonMid9XSkgaXMgJzEyJworUEFTUyAoW3tjOmEsZDpifV09W3tjOicxJyxkOicy
J31dKTsgdmFyIHI9YStiOyByIGlzICcxMicKK1BBU1MgW3tjOmEsZDpifV09W3tjOicxJyxkOicy
J31dOyB2YXIgcj1hK2I7IHIgaXMgJzEyJwogUEFTUyB2YXIge3g6W3tjOmEsZDpifV19PXt4Olt7
YzonMScsZDonMid9XX07IHZhciByPWErYjsgciBpcyAnMTInCiBGdW5jdGlvbiBhcyBTdHJpbmc6
IChmdW5jdGlvbih7eDpbe2M6YSxkOmJ9XX0pIHsgcmV0dXJuIGErYjt9KQogUEFTUyAoZnVuY3Rp
b24oe3g6W3tjOmEsZDpifV19KSB7IHJldHVybiBhK2I7fSkoe3g6W3tjOicxJyxkOicyJ31dfSkg
aXMgJzEyJwogUEFTUyAoZnVuY3Rpb24gKHt4Olt7YzphLGQ6Yn1dfSkgeyByZXR1cm4gYStiO30p
KHt4Olt7YzonMScsZDonMid9XX0pIGlzICcxMicKK1BBU1MgKHt4Olt7YzphLGQ6Yn1dfT17eDpb
e2M6JzEnLGQ6JzInfV19KTsgdmFyIHI9YStiOyByIGlzICcxMicKIFBBU1MgdmFyIFthLGJdPWFu
QXJyYXk7IHZhciByPWErYjsgciBpcyAnMTInCiBGdW5jdGlvbiBhcyBTdHJpbmc6IChmdW5jdGlv
bihbYSxiXSkgeyByZXR1cm4gYStiO30pCiBQQVNTIChmdW5jdGlvbihbYSxiXSkgeyByZXR1cm4g
YStiO30pKGFuQXJyYXkpIGlzICcxMicKIFBBU1MgKGZ1bmN0aW9uIChbYSxiXSkgeyByZXR1cm4g
YStiO30pKGFuQXJyYXkpIGlzICcxMicKK1BBU1MgKFthLGJdPWFuQXJyYXkpOyB2YXIgcj1hK2I7
IHIgaXMgJzEyJworUEFTUyBbYSxiXT1hbkFycmF5OyB2YXIgcj1hK2I7IHIgaXMgJzEyJwogUEFT
UyB2YXIge2EsYn09YW5BcnJheTsgdmFyIHI9YStiOyByIGlzICczNCcKIEZ1bmN0aW9uIGFzIFN0
cmluZzogKGZ1bmN0aW9uKHthLGJ9KSB7IHJldHVybiBhK2I7fSkKIFBBU1MgKGZ1bmN0aW9uKHth
LGJ9KSB7IHJldHVybiBhK2I7fSkoYW5BcnJheSkgaXMgJzM0JwogUEFTUyAoZnVuY3Rpb24gKHth
OmEsYjpifSkgeyByZXR1cm4gYStiO30pKGFuQXJyYXkpIGlzICczNCcKK1BBU1MgKHthLGJ9PWFu
QXJyYXkpOyB2YXIgcj1hK2I7IHIgaXMgJzM0JwogUEFTUyB2YXIge2E6YSxiOmJ9PWFuQXJyYXk7
IHZhciByPWErYjsgciBpcyAnMzQnCiBGdW5jdGlvbiBhcyBTdHJpbmc6IChmdW5jdGlvbih7YTph
LGI6Yn0pIHsgcmV0dXJuIGErYjt9KQogUEFTUyAoZnVuY3Rpb24oe2E6YSxiOmJ9KSB7IHJldHVy
biBhK2I7fSkoYW5BcnJheSkgaXMgJzM0JwogUEFTUyAoZnVuY3Rpb24gKHthOmEsYjpifSkgeyBy
ZXR1cm4gYStiO30pKGFuQXJyYXkpIGlzICczNCcKK1BBU1MgKHthOmEsYjpifT1hbkFycmF5KTsg
dmFyIHI9YStiOyByIGlzICczNCcKIFBBU1MgdmFyIHthLGJ9PWFuT2JqZWN0OyB2YXIgcj1hK2I7
IHIgaXMgJzEyJwogRnVuY3Rpb24gYXMgU3RyaW5nOiAoZnVuY3Rpb24oe2EsYn0pIHsgcmV0dXJu
IGErYjt9KQogUEFTUyAoZnVuY3Rpb24oe2EsYn0pIHsgcmV0dXJuIGErYjt9KShhbk9iamVjdCkg
aXMgJzEyJwogUEFTUyAoZnVuY3Rpb24gKHthOmEsYjpifSkgeyByZXR1cm4gYStiO30pKGFuT2Jq
ZWN0KSBpcyAnMTInCitQQVNTICh7YSxifT1hbk9iamVjdCk7IHZhciByPWErYjsgciBpcyAnMTIn
CiBQQVNTIHZhciB7YTphLGI6Yn09YW5PYmplY3Q7IHZhciByPWErYjsgciBpcyAnMTInCiBGdW5j
dGlvbiBhcyBTdHJpbmc6IChmdW5jdGlvbih7YTphLGI6Yn0pIHsgcmV0dXJuIGErYjt9KQogUEFT
UyAoZnVuY3Rpb24oe2E6YSxiOmJ9KSB7IHJldHVybiBhK2I7fSkoYW5PYmplY3QpIGlzICcxMicK
IFBBU1MgKGZ1bmN0aW9uICh7YTphLGI6Yn0pIHsgcmV0dXJuIGErYjt9KShhbk9iamVjdCkgaXMg
JzEyJworUEFTUyAoe2E6YSxiOmJ9PWFuT2JqZWN0KTsgdmFyIHI9YStiOyByIGlzICcxMicKIFBB
U1MgdmFyIHswOmEsMTpifT1hbk9iamVjdDsgdmFyIHI9YStiOyByIGlzICczNCcKIEZ1bmN0aW9u
IGFzIFN0cmluZzogKGZ1bmN0aW9uKHswOmEsMTpifSkgeyByZXR1cm4gYStiO30pCiBQQVNTIChm
dW5jdGlvbih7MDphLDE6Yn0pIHsgcmV0dXJuIGErYjt9KShhbk9iamVjdCkgaXMgJzM0JwogUEFT
UyAoZnVuY3Rpb24gKHswOmEsMTpifSkgeyByZXR1cm4gYStiO30pKGFuT2JqZWN0KSBpcyAnMzQn
CitQQVNTICh7MDphLDE6Yn09YW5PYmplY3QpOyB2YXIgcj1hK2I7IHIgaXMgJzM0JwogUEFTUyB2
YXIgeydhJzphLCdiJzpifT1hbk9iamVjdDsgdmFyIHI9YStiOyByIGlzICcxMicKIEZ1bmN0aW9u
IGFzIFN0cmluZzogKGZ1bmN0aW9uKHsnYSc6YSwnYic6Yn0pIHsgcmV0dXJuIGErYjt9KQogUEFT
UyAoZnVuY3Rpb24oeydhJzphLCdiJzpifSkgeyByZXR1cm4gYStiO30pKGFuT2JqZWN0KSBpcyAn
MTInCiBQQVNTIChmdW5jdGlvbiAoeyJhIjphLCJiIjpifSkgeyByZXR1cm4gYStiO30pKGFuT2Jq
ZWN0KSBpcyAnMTInCitQQVNTICh7J2EnOmEsJ2InOmJ9PWFuT2JqZWN0KTsgdmFyIHI9YStiOyBy
IGlzICcxMicKIFBBU1MgYStiIGlzICcxMTIyJwogUEFTUyBhK2IgaXMgJzIyMTEnCiBQQVNTIHRl
c3REZWNvbnN0cnVjdEFyZ3MoJzEnLCAnMicpIGlzICcxMicKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2pzL3BhcnNlci1zeW50YXgtY2hlY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMv
cGFyc2VyLXN5bnRheC1jaGVjay1leHBlY3RlZC50eHQKaW5kZXggMDM5YjIzMDU3MzQyNjM2MmQx
Nzc1OTRmMzFhODQ1NmRkODBlYTU3ZC4uYzliOTYzNTc4N2UyY2FiZmM2NWNmODk5MzlhNDVlZmUz
ZDljMTU0MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvcGFyc2VyLXN5bnRheC1jaGVjay1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvcGFyc2VyLXN5bnRheC1jaGVjay1leHBl
Y3RlZC50eHQKQEAgLTYxNSw2ICs2MTUsMTAgQEAgUEFTUyBWYWxpZDogICAiZm9yICh2YXIgW29m
XSBpbiBvZil7fSIKIFBBU1MgVmFsaWQ6ICAgImZ1bmN0aW9uIGYoKSB7IGZvciAodmFyIFtvZl0g
aW4gb2Ype30gfSIKIFBBU1MgVmFsaWQ6ICAgImZvciAodmFyIHtvZn0gaW4gb2Ype30iCiBQQVNT
IFZhbGlkOiAgICJmdW5jdGlvbiBmKCkgeyBmb3IgKHZhciB7b2Z9IGluIG9mKXt9IH0iCitQQVNT
IFZhbGlkOiAgICJmb3IgKFtvZl0gaW4gb2Ype30iCitQQVNTIFZhbGlkOiAgICJmdW5jdGlvbiBm
KCkgeyBmb3IgKFtvZl0gaW4gb2Ype30gfSIKK0ZBSUwgVmFsaWQ6ICAgImZvciAoe29mfSBpbiBv
Zil7fSIgc2hvdWxkIE5PVCB0aHJvdyAKK0ZBSUwgVmFsaWQ6ICAgImZ1bmN0aW9uIGYoKSB7IGZv
ciAoe29mfSBpbiBvZil7fSB9IiBzaG91bGQgTk9UIHRocm93IAogUEFTUyBJbnZhbGlkOiAiZm9y
IChvZiBvZiBvZiBvZil7fSIKIFBBU1MgSW52YWxpZDogImZ1bmN0aW9uIGYoKSB7IGZvciAob2Yg
b2Ygb2Ygb2Ype30gfSIKIFBBU1MgSW52YWxpZDogImZvciAob2Ygb2Y7IG9mOyBvZil7fSIKQEAg
LTY4MCw2ICs2ODQsMTQgQEAgUEFTUyBWYWxpZDogICAiWywsLCwuLi5iYXJdIgogUEFTUyBWYWxp
ZDogICAiZnVuY3Rpb24gZigpIHsgWywsLCwuLi5iYXJdIH0iCiBQQVNTIFZhbGlkOiAgICIoe3g6
IDF9KSIKIFBBU1MgVmFsaWQ6ICAgImZ1bmN0aW9uIGYoKSB7ICh7eDogMX0pIH0iCitQQVNTIFZh
bGlkOiAgICIoe3g6IDF9PTEpIgorUEFTUyBWYWxpZDogICAiZnVuY3Rpb24gZigpIHsgKHt4OiAx
fT0xKSB9IgorRkFJTCBWYWxpZDogICAidmFyIHt4OiAxfT0xIiBzaG91bGQgTk9UIHRocm93IAor
RkFJTCBWYWxpZDogICAiZnVuY3Rpb24gZigpIHsgdmFyIHt4OiAxfT0xIH0iIHNob3VsZCBOT1Qg
dGhyb3cgCitGQUlMIFZhbGlkOiAgICJbeF09MSkiIHNob3VsZCBOT1QgdGhyb3cgCitGQUlMIFZh
bGlkOiAgICJmdW5jdGlvbiBmKCkgeyBbeF09MSkgfSIgc2hvdWxkIE5PVCB0aHJvdyAKK1BBU1Mg
VmFsaWQ6ICAgInZhciBbeF09MSIKK1BBU1MgVmFsaWQ6ICAgImZ1bmN0aW9uIGYoKSB7IHZhciBb
eF09MSB9IgogUEFTUyBWYWxpZDogICAiKHtbeF06IDF9KSIKIFBBU1MgVmFsaWQ6ICAgImZ1bmN0
aW9uIGYoKSB7ICh7W3hdOiAxfSkgfSIKIFBBU1MgSW52YWxpZDogIih7Z2V0IFt4XSgpe319KSIK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9iYXNpYy1mb3Itb2YuanMg
Yi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYmFzaWMtZm9yLW9mLmpzCmluZGV4IDU3YmVi
ZTJlNmYzN2ExOWU5Y2FhNzZjMWNkMzI2YjRhZGY3MzQ0N2MuLmQxMjQzMTRhMGYyMWI3YjFjZjk2
NThlNjI0N2E2MmZkYWNmNzhhODMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10
ZXN0cy9iYXNpYy1mb3Itb2YuanMKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Jh
c2ljLWZvci1vZi5qcwpAQCAtNTQsMyArNTQsMjEgQEAgZm9yICh2YXIgW2tleSwgdmFsdWVdIG9m
IHRlc3RBcnJheS5lbnRyaWVzKCkpIHsKICAgICAgICAgdGVzdEFycmF5WzRdID0gNQogfQogc2hv
dWxkQmUoInRlc3RBcnJheS5sZW5ndGgiLCBTdHJpbmcoaSkpCisKKwordmFyIGkgPSAwOworZm9y
IChba2V5LCB2YWx1ZV0gb2YgdGVzdEFycmF5LmVudHJpZXMoKSkgeworICAgIHNob3VsZEJlKCJ2
YWx1ZSIsICJ0ZXN0QXJyYXlba2V5XSIpCisgICAgc2hvdWxkQmUoImtleSIsICJpIikKKyAgICBp
KysKKyAgICBpZiAoaSAlIDIgPT0gMCkKKyAgICAgICAgdGVzdEFycmF5W2ldICo9IDI7CisgICAg
aWYgKGkgPCA0KQorICAgICAgICB0ZXN0QXJyYXkucHVzaCh0ZXN0QXJyYXkubGVuZ3RoKQorICAg
IGlmIChpID09IDQpCisgICAgICAgIGRlbGV0ZSB0ZXN0QXJyYXlbNF0KKyAgICBpZiAoaSA9PSA1
KQorICAgICAgICB0ZXN0QXJyYXlbNF0gPSA1Cit9CitzaG91bGRCZSgidGVzdEFycmF5Lmxlbmd0
aCIsIFN0cmluZyhpKSkKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3Rz
L2Rlc3RydWN0dXJpbmctYXNzaWdubWVudC5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0
cy9kZXN0cnVjdHVyaW5nLWFzc2lnbm1lbnQuanMKaW5kZXggZTAzYTkxNjQ1YTAyNzkwMmY0NjVh
MjY0OGEzMjZjMmMxMmMyMDc0MC4uZTA2N2Q4NTBjY2FkM2M0YjgzMTc0NzEyZDIyYmI0YmE4OTk5
ZDAyYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Rlc3RydWN0dXJp
bmctYXNzaWdubWVudC5qcworKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvZGVzdHJ1
Y3R1cmluZy1hc3NpZ25tZW50LmpzCkBAIC03LDYgKzcsOSBAQCBmdW5jdGlvbiB0ZXN0RGVzdHJ1
Y3R1cmluZyhwYXR0ZXJuLCBleHByZXNzaW9uLCByZXN1bHQsIGV4cHIpIHsKICAgICBkZWJ1Zygi
RnVuY3Rpb24gYXMgU3RyaW5nOiAiICsgZnVuY3Rpb25TdHJpbmcpOwogICAgIHNob3VsZEJlKGZ1
bmN0aW9uU3RyaW5nICsgIigiICsgZXhwcmVzc2lvbiArICIpIiwgcmVzdWx0KTsKICAgICBzaG91
bGRCZSgiKCIgKyBldmFsKGZ1bmN0aW9uU3RyaW5nKSArICIpKCIgKyBleHByZXNzaW9uICsgIiki
LCByZXN1bHQpOworICAgIHNob3VsZEJlKCIoIiArIHBhdHRlcm4gKyAiPSIgKyBleHByZXNzaW9u
ICsgIik7IHZhciByPSIrZXhwcisiOyByIiwgcmVzdWx0KTsKKyAgICBpZiAocGF0dGVyblswXSA9
PSAnWycpCisgICAgICAgIHNob3VsZEJlKCIiICsgcGF0dGVybiArICI9IiArIGV4cHJlc3Npb24g
KyAiOyB2YXIgcj0iK2V4cHIrIjsgciIsIHJlc3VsdCk7CiB9CiAKIHRlc3REZXN0cnVjdHVyaW5n
KCJbYSxiXSIsICJbJzEnLCcyJ10iLCAiJzEyJyIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvc2NyaXB0LXRlc3RzL3BhcnNlci1zeW50YXgtY2hlY2suanMgYi9MYXlvdXRUZXN0cy9qcy9z
Y3JpcHQtdGVzdHMvcGFyc2VyLXN5bnRheC1jaGVjay5qcwppbmRleCA2ZjVkZDUxZGU1YmZkZmU3
N2I5ZTY1NTU2ODMyMDU5MDMzOWYwOGVjLi5kYjJkMDExM2JjMTZmNjg1MGM1ZDVhZGZmM2Q4NDdj
MDE4YzczMDEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvcGFyc2Vy
LXN5bnRheC1jaGVjay5qcworKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvcGFyc2Vy
LXN5bnRheC1jaGVjay5qcwpAQCAtMzg3LDYgKzM4Nyw4IEBAIHZhbGlkKCJmb3IgKG9mW29mXSBp
biBvZil7fSIpCiBpbnZhbGlkKCJmb3IgKHZhciBvZltvZl0gaW4gb2Ype30iKQogdmFsaWQoImZv
ciAodmFyIFtvZl0gaW4gb2Ype30iKQogdmFsaWQoImZvciAodmFyIHtvZn0gaW4gb2Ype30iKQor
dmFsaWQoImZvciAoW29mXSBpbiBvZil7fSIpCit2YWxpZCgiZm9yICh7b2Z9IGluIG9mKXt9IikK
IAogCiBpbnZhbGlkKCJmb3IgKG9mIG9mIG9mIG9mKXt9IikKQEAgLTQyMyw2ICs0MjUsMTAgQEAg
dmFsaWQoIlsuLi5iYXIsIGFdIikKIHZhbGlkKCJbLi4uYmFyLCwsLF0iKQogdmFsaWQoIlssLCws
Li4uYmFyXSIpCiB2YWxpZCgiKHt4OiAxfSkiKQordmFsaWQoIih7eDogMX09MSkiKQordmFsaWQo
InZhciB7eDogMX09MSIpCit2YWxpZCgiW3hdPTEpIikKK3ZhbGlkKCJ2YXIgW3hdPTEiKQogdmFs
aWQoIih7W3hdOiAxfSkiKQogaW52YWxpZCgiKHtnZXQgW3hdKCl7fX0pIikKIGludmFsaWQoIih7
c2V0IFt4XSgpe319KSIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216698</attachid>
            <date>2013-11-12 11:49:17 -0800</date>
            <delta_ts>2013-11-12 12:28:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124172-20131112114916.patch</filename>
            <type>text/plain</type>
            <size>27753</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5MDgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
YjdmY2Y1NGNkMTJhMDk0YjA0MWY4NGM4NzRjNDJlYTRjNTMxNWI1Li5lMTMyMDk2YWE2M2RhZjg0
NjA1NDVmMzdjMWRhM2VmMWU2NTc4Yzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAxMy0xMS0xMSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFN1cHBvcnQgdW5wcmVmaXhlZCBkZWNvbnN0cnVjdGluZyBhc3NpZ25tZW50Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQxNzIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9y
dCBmb3IgdW5wcmVmaXhlZCBkZXNjb250cnVjdGl2ZSBhc3NpZ25tZW50LgorCisgICAgICAgIEhh
cHBpbHkgbm9uLXJlZmVyZW5jZSB0eXBlcyBvbiB0aGUgbGVmdCBoYW5kIHNpZGUgb2YgYW4gYXNz
aWdubWVudAorICAgICAgICBhcmUgYSBydW50aW1lIGVycm9yLCBzbyB3ZSdyZSBhYmxlIHRvIGRl
ZmVyIHZhbGlkYXRpb24gb2YgdGhlIGJpbmRpbmcKKyAgICAgICAgcGF0dGVybiB0byBjb2RlZ2Vu
IHRpbWUgd2hlbiB3ZSdyZSBhbHJlYWR5IGRvaW5nIGEgbG90IG1vcmUgd29yay4KKworICAgICAg
ICBXZSdyZSBhbHNvIGFibGUgdG8gcHJlZGljYXRlIG91ciBhdHRlbXB0IHRvIHBhcnNlIG9uIHRo
ZSBleGlzdGVuY2Ugb2YKKyAgICAgICAgJ1snIG9yICd7JyBhcyB0aGV5IGFyZSBub3QgYXMgY29t
bW9uIGFzIG90aGVyIGNvbnN0cnVjdHMuIAorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkFycmF5UGF0dGVybk5vZGU6OmVtaXREaXJlY3RC
aW5kaW5nKToKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAqIHBhcnNl
ci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjo6OmNyZWF0ZUJpbmRpbmdQYXR0ZXJuKToKKyAg
ICAgICAgKEpTQzo6Ojp0cnlQYXJzZURlY29uc3RydWN0aW9uUGF0dGVybkV4cHJlc3Npb24pOgor
ICAgICAgICAoSlNDOjo6OnBhcnNlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuKToKKyAgICAgICAgKEpT
Qzo6OjpwYXJzZUZvclN0YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VBc3NpZ25tZW50
RXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpQ
YXJzZXI6OmNyZWF0ZVNhdmVQb2ludCk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6cmVzdG9yZVNh
dmVQb2ludCk6CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKwogMjAxMy0xMS0x
MSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBDb25z
dGFudEZvbGRpbmdQaGFzZSdzIHdlaXJkbyBjb21waWxlLXRpbWUgb3B0aW1pemF0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAK
aW5kZXggNDIyMjYxNzI2ZTRhNzZjYmZhNjQxODgxYmI1MmYxMWU4ZmEyZDlhMC4uOWQzYjE1MTcy
MzA0NDc3NWI2YTU0YzE4ZjY2ZjZmNTgzMDRmNWEzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMjMzMywxMSArMjMz
MywxNyBAQCBSZWdpc3RlcklEKiBBcnJheVBhdHRlcm5Ob2RlOjplbWl0RGlyZWN0QmluZGluZyhC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZQogICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRHZXRBcmd1bWVudEJ5VmFsKHRlbXAuZ2V0KCksIGdlbmVyYXRvci51bmNoZWNrZWRSZWdpc3Rl
ckZvckFyZ3VtZW50cygpLCB0ZW1wLmdldCgpKTsKICAgICAgICAgICAgIHRhcmdldC0+YmluZFZh
bHVlKGdlbmVyYXRvciwgdGVtcC5nZXQoKSk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBqc1VuZGVm
aW5lZCgpKTsKKyAgICAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpIHx8
ICFkc3QpCisgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRMb2FkKGdlbmVyYXRvci5m
aW5hbERlc3RpbmF0aW9uKGRzdCksIGpzVW5kZWZpbmVkKCkpOworICAgICAgICBMb2NhbCBsb2Nh
bCA9IGdlbmVyYXRvci5sb2NhbChnZW5lcmF0b3Iudm0oKS0+cHJvcGVydHlOYW1lcy0+YXJndW1l
bnRzKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVk
KGRzdCwgbG9jYWwuZ2V0KCkpOwogICAgIH0KICAgICBpZiAoIXJocy0+aXNTaW1wbGVBcnJheSgp
KQogICAgICAgICByZXR1cm4gMDsKIAorICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXN1bHRSZWdp
c3RlcjsKKyAgICBpZiAoZHN0ICYmIGRzdCAhPSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQor
ICAgICAgICByZXN1bHRSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TmV3QXJyYXkoZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpLCAwLCAwKTsKICAgICBFbGVtZW50Tm9kZSogZWxlbWVudE5vZGVzID0g
c3RhdGljX2Nhc3Q8QXJyYXlOb2RlKj4ocmhzKS0+ZWxlbWVudHMoKTsKICAgICBWZWN0b3I8RXhw
cmVzc2lvbk5vZGUqPiBlbGVtZW50czsKICAgICBmb3IgKDsgZWxlbWVudE5vZGVzOyBlbGVtZW50
Tm9kZXMgPSBlbGVtZW50Tm9kZXMtPm5leHQoKSkKQEAgLTIzNDksMTMgKzIzNTUsMTYgQEAgUmVn
aXN0ZXJJRCogQXJyYXlQYXR0ZXJuTm9kZTo6ZW1pdERpcmVjdEJpbmRpbmcoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmUKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdGFyZ2V0
UGF0dGVybnMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgcmVnaXN0ZXJzLnVuY2hlY2tlZEFwcGVu
ZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUo
cmVnaXN0ZXJzLmxhc3QoKS5nZXQoKSwgZWxlbWVudHNbaV0pOworICAgICAgICBpZiAocmVzdWx0
UmVnaXN0ZXIpCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SW5kZXgocmVzdWx0UmVn
aXN0ZXIuZ2V0KCksIGksIHJlZ2lzdGVycy5sYXN0KCkuZ2V0KCkpOwogICAgIH0KICAgICAKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdGFyZ2V0UGF0dGVybnMuc2l6ZSgpOyBpKyspIHsK
ICAgICAgICAgaWYgKG1fdGFyZ2V0UGF0dGVybnNbaV0pCiAgICAgICAgICAgICBtX3RhcmdldFBh
dHRlcm5zW2ldLT5iaW5kVmFsdWUoZ2VuZXJhdG9yLCByZWdpc3RlcnNbaV0uZ2V0KCkpOwogICAg
IH0KLQorICAgIGlmIChyZXN1bHRSZWdpc3RlcikKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5t
b3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgcmVzdWx0UmVnaXN0ZXIuZ2V0KCkpOwogICAg
IHJldHVybiBnZW5lcmF0b3IuZW1pdExvYWQoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0
KSwganNVbmRlZmluZWQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RC
dWlsZGVyLmgKaW5kZXggYzE2YTdmZDBkZGUzODM4NTRmMDEyN2VhYTlkOTFlZDdkYzIxMTg2Yi4u
NjUzYWI3NjIxODRiZTFmOWI2NzBjM2NmMzc0ZTY5MmMwM2RhYTRhNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTExNyw2ICsxMTcsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgQ2FuVXNlRnVuY3Rpb25DYWNoZSA9IHRydWU7CiAgICAg
c3RhdGljIGNvbnN0IGludCAgRG9udEJ1aWxkS2V5d29yZHMgPSAwOwogICAgIHN0YXRpYyBjb25z
dCBpbnQgIERvbnRCdWlsZFN0cmluZ3MgPSAwOworICAgIHN0YXRpYyBjb25zdCBib29sIEhhbmRs
ZXNEZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnQgPSB0cnVlOwogCiAgICAgRXhwcmVzc2lvbk5vZGUq
IG1ha2VCaW5hcnlOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCB0b2tlbiwgc3RkOjpw
YWlyPEV4cHJlc3Npb25Ob2RlKiwgQmluYXJ5T3BJbmZvPiwgc3RkOjpwYWlyPEV4cHJlc3Npb25O
b2RlKiwgQmluYXJ5T3BJbmZvPik7CiAgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VGdW5jdGlvbkNh
bGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBmdW5jLCBBcmd1
bWVudHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDdlM2IzZDA0NDM0ZjEy
YzJhMjk5NjljYTI4OWI4ZDUzMzFmODA5YzMuLmY5ODFjNzM5YzNiODBmYmU1NTlkYjI0MDg0ZGNl
MmVjYmQyZTc1YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAg
LTQwMCw3ICs0MDAsOCBAQCB0ZW1wbGF0ZSA8RGVjb25zdHJ1Y3Rpb25LaW5kIGtpbmQsIGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuCiAgICAgICAgICAgICAgICAg
c2VtYW50aWNGYWlsKCJDYW5ub3QgZGVjb25zdHJ1Y3QgdG8gYSBwYXJhbWV0ZXIgbmFtZWQgJyIs
IG5hbWUuaW1wbCgpLCAiJyIpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGNv
bnRleHQuYWRkVmFyKCZuYW1lLCBraW5kID09IERlY29uc3RydWN0VG9QYXJhbWV0ZXJzID8gMCA6
IERlY2xhcmF0aW9uU3RhY2tzOjpIYXNJbml0aWFsaXplcik7CisgICAgICAgIGlmIChraW5kICE9
IERlY29uc3RydWN0VG9FeHByZXNzaW9ucykKKyAgICAgICAgICAgIGNvbnRleHQuYWRkVmFyKCZu
YW1lLCBraW5kID09IERlY29uc3RydWN0VG9QYXJhbWV0ZXJzID8gMCA6IERlY2xhcmF0aW9uU3Rh
Y2tzOjpIYXNJbml0aWFsaXplcik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKGtpbmQgPT0g
RGVjb25zdHJ1Y3RUb1ZhcmlhYmxlcykgewogICAgICAgICAgICAgZmFpbElmRmFsc2VJZlN0cmlj
dChkZWNsYXJlVmFyaWFibGUoJm5hbWUpLCAiQ2Fubm90IGRlY2xhcmUgYSB2YXJpYWJsZSBuYW1l
ZCAnIiwgbmFtZS5pbXBsKCksICInIGluIHN0cmljdCBtb2RlIik7CkBAIC00MjQsNiArNDI1LDEy
IEBAIHRlbXBsYXRlIDxEZWNvbnN0cnVjdGlvbktpbmQga2luZCwgY2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVEZWNvbnN0cnVjdGlvblBhdHRlcm4KIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVy
VHlwZT4KK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlY29uc3RydWN0aW9uUGF0
dGVybiBQYXJzZXI8TGV4ZXJUeXBlPjo6dHJ5UGFyc2VEZWNvbnN0cnVjdGlvblBhdHRlcm5FeHBy
ZXNzaW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0KQoreworICAgIHJldHVybiBwYXJzZURlY29uc3Ry
dWN0aW9uUGF0dGVybjxEZWNvbnN0cnVjdFRvRXhwcmVzc2lvbnM+KGNvbnRleHQpOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPERlY29uc3RydWN0aW9uS2lu
ZCBraW5kLCBjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlY29uc3RydWN0aW9uUGF0dGVybiBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VEZWNvbnN0cnVjdGlvblBhdHRlcm4oVHJlZUJ1aWxkZXImIGNv
bnRleHQsIGludCBkZXB0aCkKIHsKICAgICBmYWlsSWZTdGFja092ZXJmbG93KCk7CkBAIC00MzMs
NiArNDQwLDggQEAgdGVtcGxhdGUgPERlY29uc3RydWN0aW9uS2luZCBraW5kLCBjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZURlY29uc3RydWN0aW9uUGF0dGVybgogICAgIGNhc2UgT1BFTkJSQUNLRVQ6
IHsKICAgICAgICAgYXV0byBhcnJheVBhdHRlcm4gPSBjb250ZXh0LmNyZWF0ZUFycmF5UGF0dGVy
bihtX3Rva2VuLm1fbG9jYXRpb24pOwogICAgICAgICBuZXh0KCk7CisgICAgICAgIGlmIChraW5k
ID09IERlY29uc3RydWN0VG9FeHByZXNzaW9ucyAmJiBtYXRjaChDTE9TRUJSQUNLRVQpKQorICAg
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGZhaWxJZlRydWUobWF0Y2goQ0xPU0VCUkFDS0VU
KSwgIlRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIGJvdW5kIHByb3BlcnR5IGluIGFuIGFycmF5
IGRlY29uc3RydWN0aW9uIHBhdHRlcm4iKTsKICAgICAgICAgZG8gewogICAgICAgICAgICAgd2hp
bGUgKG1hdGNoKENPTU1BKSkgewpAQCAtNDQyLDE1ICs0NTEsMjUgQEAgdGVtcGxhdGUgPERlY29u
c3RydWN0aW9uS2luZCBraW5kLCBjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlY29uc3RydWN0aW9u
UGF0dGVybgogICAgICAgICAgICAgcHJvcGFnYXRlRXJyb3IoKTsKICAgICAgICAgICAgIEpTVG9r
ZW5Mb2NhdGlvbiBsb2NhdGlvbiA9IG1fdG9rZW4ubV9sb2NhdGlvbjsKICAgICAgICAgICAgIGF1
dG8gaW5uZXJQYXR0ZXJuID0gcGFyc2VEZWNvbnN0cnVjdGlvblBhdHRlcm48a2luZD4oY29udGV4
dCwgZGVwdGggKyAxKTsKKyAgICAgICAgICAgIGlmIChraW5kID09IERlY29uc3RydWN0VG9FeHBy
ZXNzaW9ucyAmJiAhaW5uZXJQYXR0ZXJuKQorICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAg
ICAgICAgICAgZmFpbElmRmFsc2UoaW5uZXJQYXR0ZXJuLCAiQ2Fubm90IHBhcnNlIHRoaXMgZGVj
b25zdHJ1Y3Rpb24gcGF0dGVybiIpOwogICAgICAgICAgICAgY29udGV4dC5hcHBlbmRBcnJheVBh
dHRlcm5FbnRyeShhcnJheVBhdHRlcm4sIGxvY2F0aW9uLCBpbm5lclBhdHRlcm4pOwogICAgICAg
ICB9IHdoaWxlIChjb25zdW1lKENPTU1BKSk7CisgICAgICAgIAorICAgICAgICBpZiAoa2luZCA9
PSBEZWNvbnN0cnVjdFRvRXhwcmVzc2lvbnMgJiYgIW1hdGNoKENMT1NFQlJBQ0tFVCkpCisgICAg
ICAgICAgICByZXR1cm4gMDsKKwogICAgICAgICBjb25zdW1lT3JGYWlsKENMT1NFQlJBQ0tFVCwg
IkV4cGVjdGVkIGVpdGhlciBhIGNsb3NpbmcgJ10nIG9yIGEgJywnIGZvbGxvd2luZyBhbiBlbGVt
ZW50IGRlY29uc3RydWN0aW9uIHBhdHRlcm4iKTsKICAgICAgICAgcGF0dGVybiA9IGFycmF5UGF0
dGVybjsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgT1BFTkJSQUNFOiB7CiAgICAg
ICAgIG5leHQoKTsKKyAgICAgICAgCisgICAgICAgIGlmIChraW5kID09IERlY29uc3RydWN0VG9F
eHByZXNzaW9ucyAmJiBtYXRjaChDTE9TRUJSQUNFKSkKKyAgICAgICAgICAgIHJldHVybiAwOwor
CiAgICAgICAgIGZhaWxJZlRydWUobWF0Y2goQ0xPU0VCUkFDRSksICJUaGVyZSBtdXN0IGJlIGF0
IGxlYXN0IG9uZSBib3VuZCBwcm9wZXJ0eSBpbiBhbiBvYmplY3QgZGVjb25zdHJ1Y3Rpb24gcGF0
dGVybiIpOwogICAgICAgICBhdXRvIG9iamVjdFBhdHRlcm4gPSBjb250ZXh0LmNyZWF0ZU9iamVj
dFBhdHRlcm4obV90b2tlbi5tX2xvY2F0aW9uKTsKICAgICAgICAgYm9vbCB3YXNTdHJpbmcgPSBm
YWxzZTsKQEAgLTQ3NiwxMyArNDk1LDE4IEBAIHRlbXBsYXRlIDxEZWNvbnN0cnVjdGlvbktpbmQg
a2luZCwgY2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVEZWNvbnN0cnVjdGlvblBhdHRlcm4KICAgICAg
ICAgICAgICAgICAgICAgd2FzU3RyaW5nID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1f
dG9rZW4ubV90eXBlICE9IFJFU0VSVkVEICYmIG1fdG9rZW4ubV90eXBlICE9IFJFU0VSVkVEX0lG
X1NUUklDVCAmJiAhKG1fdG9rZW4ubV90eXBlICYgS2V5d29yZFRva2VuRmxhZykpCisgICAgICAg
ICAgICAgICAgICAgIGlmIChtX3Rva2VuLm1fdHlwZSAhPSBSRVNFUlZFRCAmJiBtX3Rva2VuLm1f
dHlwZSAhPSBSRVNFUlZFRF9JRl9TVFJJQ1QgJiYgIShtX3Rva2VuLm1fdHlwZSAmIEtleXdvcmRU
b2tlbkZsYWcpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2luZCA9PSBEZWNvbnN0
cnVjdFRvRXhwcmVzc2lvbnMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7
CiAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsV2l0aE1lc3NhZ2UoIkV4cGVjdGVkIGEgcHJv
cGVydHkgbmFtZSIpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
IHByb3BlcnR5TmFtZSA9ICptX3Rva2VuLm1fZGF0YS5pZGVudDsKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG5leHQoKTsKICAg
ICAgICAgICAgICAgICBpZiAoIWNvbnN1bWUoQ09MT04pKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChraW5kID09IERlY29uc3RydWN0VG9FeHByZXNzaW9ucykKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUo
dG9rZW5UeXBlID09IFJFU0VSVkVELCAiQ2Fubm90IHVzZSBhYmJyZXZpYXRlZCBkZWNvbnN0cnVj
dGlvbiBzeW50YXggZm9yIHJlc2VydmVkIG5hbWUgJyIsIHByb3BlcnR5TmFtZS5pbXBsKCksICIn
Iik7CiAgICAgICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSh0b2tlblR5cGUgPT0g
UkVTRVJWRURfSUZfU1RSSUNULCAiQ2Fubm90IHVzZSBhYmJyZXZpYXRlZCBkZWNvbnN0cnVjdGlv
biBzeW50YXggZm9yIHJlc2VydmVkIG5hbWUgJyIsIHByb3BlcnR5TmFtZS5pbXBsKCksICInIGlu
IHN0cmljdCBtb2RlIik7CiAgICAgICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSh0
b2tlblR5cGUgJiBLZXl3b3JkVG9rZW5GbGFnLCAiQ2Fubm90IHVzZSBhYmJyZXZpYXRlZCBkZWNv
bnN0cnVjdGlvbiBzeW50YXggZm9yIGtleXdvcmQgJyIsIHByb3BlcnR5TmFtZS5pbXBsKCksICIn
Iik7CkBAIC00OTEsOSArNTE1LDEzIEBAIHRlbXBsYXRlIDxEZWNvbnN0cnVjdGlvbktpbmQga2lu
ZCwgY2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVEZWNvbnN0cnVjdGlvblBhdHRlcm4KICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgaW5uZXJQYXR0ZXJuID0gcGFyc2VEZWNvbnN0cnVj
dGlvblBhdHRlcm48a2luZD4oY29udGV4dCwgZGVwdGggKyAxKTsKICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmIChraW5kID09IERlY29uc3RydWN0VG9FeHByZXNzaW9ucyAmJiAhaW5uZXJQ
YXR0ZXJuKQorICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgZmFpbElmRmFs
c2UoaW5uZXJQYXR0ZXJuLCAiQ2Fubm90IHBhcnNlIHRoaXMgZGVjb25zdHJ1Y3Rpb24gcGF0dGVy
biIpOwogICAgICAgICAgICAgY29udGV4dC5hcHBlbmRPYmplY3RQYXR0ZXJuRW50cnkob2JqZWN0
UGF0dGVybiwgbG9jYXRpb24sIHdhc1N0cmluZywgcHJvcGVydHlOYW1lLCBpbm5lclBhdHRlcm4p
OwogICAgICAgICB9IHdoaWxlIChjb25zdW1lKENPTU1BKSk7CisgICAgICAgIGlmIChraW5kID09
IERlY29uc3RydWN0VG9FeHByZXNzaW9ucyAmJiAhbWF0Y2goQ0xPU0VCUkFDRSkpCisgICAgICAg
ICAgICByZXR1cm4gMDsKICAgICAgICAgY29uc3VtZU9yRmFpbChDTE9TRUJSQUNFLCAiRXhwZWN0
ZWQgZWl0aGVyIGEgY2xvc2luZyAnfScgb3IgYW4gJywnIGFmdGVyIGEgcHJvcGVydHkgZGVjb25z
dHJ1Y3Rpb24gcGF0dGVybiIpOwogICAgICAgICBwYXR0ZXJuID0gb2JqZWN0UGF0dGVybjsKICAg
ICAgICAgYnJlYWs7CkBAIC01MDEsNiArNTI5LDggQEAgdGVtcGxhdGUgPERlY29uc3RydWN0aW9u
S2luZCBraW5kLCBjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlY29uc3RydWN0aW9uUGF0dGVybgog
CiAgICAgZGVmYXVsdDogewogICAgICAgICBpZiAoIW1hdGNoKElERU5UKSkgeworICAgICAgICAg
ICAgaWYgKGtpbmQgPT0gRGVjb25zdHJ1Y3RUb0V4cHJlc3Npb25zKQorICAgICAgICAgICAgICAg
IHJldHVybiAwOwogICAgICAgICAgICAgc2VtYW50aWNGYWlsdXJlRHVlVG9LZXl3b3JkKCJ2YXJp
YWJsZSBuYW1lIik7CiAgICAgICAgICAgICBmYWlsV2l0aE1lc3NhZ2UoIkV4cGVjdGVkIGEgcGFy
YW1ldGVyIHBhdHRlcm4gb3IgYSAnKScgaW4gcGFyYW1ldGVyIGxpc3QiKTsKICAgICAgICAgfQpA
QCAtNTU0LDYgKzU4NCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRl
bWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JTdGF0ZW1lbnQoCiAgICAgSlNUZXh0UG9z
aXRpb24gZGVjbHNTdGFydDsKICAgICBKU1RleHRQb3NpdGlvbiBkZWNsc0VuZDsKICAgICBUcmVl
RXhwcmVzc2lvbiBkZWNscyA9IDA7CisgICAgVHJlZURlY29uc3RydWN0aW9uUGF0dGVybiBwYXR0
ZXJuID0gMDsKICAgICBpZiAobWF0Y2goVkFSKSkgewogICAgICAgICAvKgogICAgICAgICAgZm9y
ICh2YXIgSURFTlQgaW4gZXhwcmVzc2lvbikgc3RhdGVtZW50CkBAIC02MDMsNiArNjM0LDE2IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VGb3JTdGF0ZW1lbnQoCiAgICAgfQogICAgIAogICAgIGlmICghbWF0Y2goU0VN
SUNPTE9OKSkgeworICAgICAgICBpZiAoVHJlZUJ1aWxkZXI6OkhhbmRsZXNEZWNvbnN0cnVjdGlu
Z0Fzc2lnbm1lbnQgJiYgKG1hdGNoKE9QRU5CUkFDRSkgfHwgbWF0Y2goT1BFTkJSQUNLRVQpKSkg
eworICAgICAgICAgICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludCgpOwor
ICAgICAgICAgICAgZGVjbHNTdGFydCA9IHRva2VuU3RhcnRQb3NpdGlvbigpOworICAgICAgICAg
ICAgcGF0dGVybiA9IHRyeVBhcnNlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuRXhwcmVzc2lvbihjb250
ZXh0KTsKKyAgICAgICAgICAgIGRlY2xzRW5kID0gbGFzdFRva2VuRW5kUG9zaXRpb24oKTsKKyAg
ICAgICAgICAgIGlmIChwYXR0ZXJuICYmIChtYXRjaChJTlRPS0VOKSB8fCAobWF0Y2goSURFTlQp
ICYmICptX3Rva2VuLm1fZGF0YS5pZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5vZikpKQor
ICAgICAgICAgICAgICAgIGdvdG8gZW51bWVyYXRpb25Mb29wOworICAgICAgICAgICAgcGF0dGVy
biA9IDA7CisgICAgICAgICAgICByZXN0b3JlU2F2ZVBvaW50KHNhdmVQb2ludCk7CisgICAgICAg
IH0KICAgICAgICAgbV9hbGxvd3NJbiA9IGZhbHNlOwogICAgICAgICBkZWNsc1N0YXJ0ID0gdG9r
ZW5TdGFydFBvc2l0aW9uKCk7CiAgICAgICAgIGRlY2xzID0gcGFyc2VFeHByZXNzaW9uKGNvbnRl
eHQpOwpAQCAtNjM5LDYgKzY4MCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JTdGF0ZW1lbnQoCiAgICAgfQog
ICAgIAogICAgIC8vIEZvci1pbiBsb29wCitlbnVtZXJhdGlvbkxvb3A6CiAgICAgZmFpbElmRmFs
c2Uobm9uTEhTQ291bnQgPT0gbV9ub25MSFNDb3VudCwgIkV4cGVjdGVkIGEgcmVmZXJlbmNlIG9u
IHRoZSBsZWZ0IGhhbmQgc2lkZSBvZiBhbiBlbnVtZXJhdGlvbiBzdGF0ZW1lbnQiKTsKICAgICBi
b29sIGlzT2ZFbnVtZXJhdGlvbiA9IGZhbHNlOwogICAgIGlmICghY29uc3VtZShJTlRPS0VOKSkg
ewpAQCAtNjU3LDYgKzY5OSwxMiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
dGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRm9yU3RhdGVtZW50KAogICAgIFRyZWVT
dGF0ZW1lbnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCwgdW51c2VkKTsKICAg
ICBlbmRMb29wKCk7CiAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50LCAiRXhwZWN0ZWQgYSBzdGF0
ZW1lbnQgYXMgdGhlIGJvZHkgb2YgYSBmb3ItIiwgaXNPZkVudW1lcmF0aW9uID8gIm9mIiA6ICJp
biIsICJsb29wIik7CisgICAgaWYgKHBhdHRlcm4pIHsKKyAgICAgICAgQVNTRVJUKCFkZWNscyk7
CisgICAgICAgIGlmIChpc09mRW51bWVyYXRpb24pCisgICAgICAgICAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVGb3JPZkxvb3AobG9jYXRpb24sIHBhdHRlcm4sIGV4cHIsIHN0YXRlbWVudCwgZGVj
bHNTdGFydCwgZGVjbHNFbmQsIGV4cHJFbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZUZvckluTG9vcChsb2NhdGlvbiwgcGF0dGVybiwgZXhwciwg
c3RhdGVtZW50LCBkZWNsc1N0YXJ0LCBkZWNsc0VuZCwgZXhwckVuZCwgc3RhcnRMaW5lLCBlbmRM
aW5lKTsKKyAgICB9CiAgICAgaWYgKGlzT2ZFbnVtZXJhdGlvbikKICAgICAgICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlRm9yT2ZMb29wKGxvY2F0aW9uLCBkZWNscywgZXhwciwgc3RhdGVtZW50LCBk
ZWNsc1N0YXJ0LCBkZWNsc0VuZCwgZXhwckVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKICAgICBy
ZXR1cm4gY29udGV4dC5jcmVhdGVGb3JJbkxvb3AobG9jYXRpb24sIGRlY2xzLCBleHByLCBzdGF0
ZW1lbnQsIGRlY2xzU3RhcnQsIGRlY2xzRW5kLCBleHByRW5kLCBzdGFydExpbmUsIGVuZExpbmUp
OwpAQCAtMTM2OCw2ICsxNDE2LDE2IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUcmVlQnVpbGRlcj4g
VHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXNzaWdubWVuCiAgICAgSlNU
b2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgaW50IGluaXRpYWxB
c3NpZ25tZW50Q291bnQgPSBtX2Fzc2lnbm1lbnRDb3VudDsKICAgICBpbnQgaW5pdGlhbE5vbkxI
U0NvdW50ID0gbV9ub25MSFNDb3VudDsKKyAgICBpZiAoVHJlZUJ1aWxkZXI6OkhhbmRsZXNEZWNv
bnN0cnVjdGluZ0Fzc2lnbm1lbnQgJiYgKG1hdGNoKE9QRU5CUkFDRSkgfHwgbWF0Y2goT1BFTkJS
QUNLRVQpKSkgeworICAgICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50
KCk7CisgICAgICAgIGF1dG8gcGF0dGVybiA9IHRyeVBhcnNlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJu
RXhwcmVzc2lvbihjb250ZXh0KTsKKyAgICAgICAgaWYgKHBhdHRlcm4gJiYgY29uc3VtZShFUVVB
TCkpIHsKKyAgICAgICAgICAgIGF1dG8gcmhzID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihj
b250ZXh0KTsKKyAgICAgICAgICAgIGlmIChyaHMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlRGVjb25zdHJ1Y3RpbmdBc3NpZ25tZW50KGxvY2F0aW9uLCBwYXR0ZXJuLCBy
aHMpOworICAgICAgICB9CisgICAgICAgIHJlc3RvcmVTYXZlUG9pbnQoc2F2ZVBvaW50KTsKKyAg
ICB9CiAgICAgVHJlZUV4cHJlc3Npb24gbGhzID0gcGFyc2VDb25kaXRpb25hbEV4cHJlc3Npb24o
Y29udGV4dCk7CiAgICAgZmFpbElmRmFsc2UobGhzLCAiQ2Fubm90IHBhcnNlIGV4cHJlc3Npb24i
KTsKICAgICBpZiAoaW5pdGlhbE5vbkxIU0NvdW50ICE9IG1fbm9uTEhTQ291bnQpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGNjOWNmNGU2ZWY3ODUyNzM4ODYxODk5
Mzg4ZWI3MTM5MWQ2OTY3NGIuLjNjNDdjNTQwMzJjZDk5MzdhNzE4Njc1NzdjNDVmOTBhOTViNzQy
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtNzMxLDYgKzczMSw3
IEBAIHByaXZhdGU6CiAKICAgICB0ZW1wbGF0ZSA8RGVjb25zdHJ1Y3Rpb25LaW5kLCBjbGFzcyBU
cmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuIGNyZWF0
ZUJpbmRpbmdQYXR0ZXJuKFRyZWVCdWlsZGVyJiwgY29uc3QgSWRlbnRpZmllciYsIGludCBkZXB0
aCk7CiAgICAgdGVtcGxhdGUgPERlY29uc3RydWN0aW9uS2luZCwgY2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVEZWNvbnN0cnVjdGlvblBhdHRlcm4gcGFyc2VEZWNvbnN0cnVjdGlvblBhdHRlcm4oVHJl
ZUJ1aWxkZXImLCBpbnQgZGVwdGggPSAwKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IE5FVkVSX0lOTElORSBUcmVlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuIHRyeVBhcnNlRGVjb25z
dHJ1Y3Rpb25QYXR0ZXJuRXhwcmVzc2lvbihUcmVlQnVpbGRlciYpOwogICAgIHRlbXBsYXRlIDxG
dW5jdGlvblJlcXVpcmVtZW50cywgRnVuY3Rpb25QYXJzZU1vZGUsIGJvb2wgbmFtZUlzSW5Db250
YWluaW5nU2NvcGUsIGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIHBhcnNlRnVuY3Rpb25JbmZvKFRy
ZWVCdWlsZGVyJiwgY29uc3QgSWRlbnRpZmllciomLCBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCYs
IFRyZWVGdW5jdGlvbkJvZHkmLCB1bnNpZ25lZCYgb3BlbkJyYWNlT2Zmc2V0LCB1bnNpZ25lZCYg
Y2xvc2VCcmFjZU9mZnNldCwgaW50JiBib2R5U3RhcnRMaW5lLCB1bnNpZ25lZCYgYm9keVN0YXJ0
Q29sdW1uKTsKICAgICBBTFdBWVNfSU5MSU5FIGludCBpc0JpbmFyeU9wZXJhdG9yKEpTVG9rZW5U
eXBlKTsKICAgICBib29sIGFsbG93QXV0b21hdGljU2VtaWNvbG9uKCk7CkBAIC03NjgsNiArNzY5
LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBBTFdBWVNfSU5MSU5FIFNhdmVQb2ludCBjcmVhdGVT
YXZlUG9pbnQoKQogICAgIHsKKyAgICAgICAgQVNTRVJUKCFoYXNFcnJvcigpKTsKICAgICAgICAg
U2F2ZVBvaW50IHJlc3VsdDsKICAgICAgICAgcmVzdWx0LnN0YXJ0T2Zmc2V0ID0gbV90b2tlbi5t
X2xvY2F0aW9uLnN0YXJ0T2Zmc2V0OwogICAgICAgICByZXN1bHQub2xkTGluZVN0YXJ0T2Zmc2V0
ID0gbV90b2tlbi5tX2xvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsKQEAgLTc3OCw2ICs3ODAsNyBA
QCBwcml2YXRlOgogICAgIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCByZXN0b3JlU2F2ZVBvaW50
KGNvbnN0IFNhdmVQb2ludCYgc2F2ZVBvaW50KQogICAgIHsKKyAgICAgICAgbV9lcnJvck1lc3Nh
Z2UgPSBTdHJpbmcoKTsKICAgICAgICAgbV9sZXhlci0+c2V0T2Zmc2V0KHNhdmVQb2ludC5zdGFy
dE9mZnNldCwgc2F2ZVBvaW50Lm9sZExpbmVTdGFydE9mZnNldCk7CiAgICAgICAgIG5leHQoKTsK
ICAgICAgICAgbV9sZXhlci0+c2V0TGFzdExpbmVOdW1iZXIoc2F2ZVBvaW50Lm9sZExhc3RMaW5l
TnVtYmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4
Q2hlY2tlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgK
aW5kZXggMmRhYjFlMmRjOTU0NzkyZDEyZDY3MWE2NmFmZTcwZDg1MDM2NTZkMi4uMTY1N2IzNGM4
YjUyODU4MDM4MDU2Yjg4NjYwMTUxMzMwZjU0YjJiYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKQEAgLTEyMCw2ICsxMjAsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIGNvbnN0IGJvb2wgQ2FuVXNlRnVuY3Rpb25DYWNoZSA9IHRydWU7CiAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIERvbnRCdWlsZEtleXdvcmRzID0gTGV4ZXhGbGFnc0RvbnRCdWls
ZEtleXdvcmRzOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBEb250QnVpbGRTdHJpbmdzID0g
TGV4ZXJGbGFnc0RvbnRCdWlsZFN0cmluZ3M7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgSGFuZGxl
c0RlY29uc3RydWN0aW5nQXNzaWdubWVudCA9IGZhbHNlOwogCiAgICAgaW50IGNyZWF0ZVNvdXJj
ZUVsZW1lbnRzKCkgeyByZXR1cm4gMTsgfQogICAgIEV4cHJlc3Npb25UeXBlIG1ha2VGdW5jdGlv
bkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBpbnQsIGludCwgaW50
KSB7IHJldHVybiBDYWxsRXhwcjsgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDY0MzcyNDRmYzVhNTcyMDNhYWM3MzBmYTM0
NDhjOWI1ZTU5NWM2YTguLjM3OWYwZjgxZWU3MWViMDhlZTkyODI5ODhiNTBlZmNiMzVlNGVmMGIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMy0xMS0xMSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJA
YXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgdW5wcmVmaXhlZCBkZWNvbnN0cnVjdGluZyBh
c3NpZ25tZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjQxNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgYW5kIGV4cGFuZCB0ZXN0aW5nIG9mIGRlc3RydWN0dXJpbmcgYXNzaWdubWVudAorCisg
ICAgICAgICoganMvYmFzaWMtZm9yLW9mLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9kZXN0
cnVjdHVyaW5nLWFzc2lnbm1lbnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL3BhcnNlci1z
eW50YXgtY2hlY2stZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9iYXNp
Yy1mb3Itb2YuanM6CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2Rlc3RydWN0dXJpbmctYXNz
aWdubWVudC5qczoKKyAgICAgICAgKHRlc3REZXN0cnVjdHVyaW5nKToKKyAgICAgICAgKiBqcy9z
Y3JpcHQtdGVzdHMvcGFyc2VyLXN5bnRheC1jaGVjay5qczoKKwogMjAxMy0xMS0xMSAgU2ltb24g
RnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChy
MTU1NjYwKTogYm94LXNoYWRvdyBjYXVzZXMgb3ZlcmxheSBzY3JvbGxiYXJzIHRvIGJlIGluIHRo
ZSB3cm9uZyBwb3NpdGlvbiB3aGVuIGVsZW1lbnQgaXMgY29tcG9zaXRlZCAoODU2NDcpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9iYXNpYy1mb3Itb2YtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvanMvYmFzaWMtZm9yLW9mLWV4cGVjdGVkLnR4dAppbmRleCA2ZjEwYjE3M2NiNTE4Njhi
MWY1NmU2YzkyZTZmNWY4NzkxMzA3MzVmLi45YTU1YTc1YTVmODE5OWMxNjIzNWVmNzRiODQ5Y2Qz
ZTFkNWFhYjUxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9iYXNpYy1mb3Itb2YtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL2Jhc2ljLWZvci1vZi1leHBlY3RlZC50eHQKQEAg
LTYzLDYgKzYzLDMzIEBAIFBBU1Mga2V5IGlzIGkKIFBBU1MgdmFsdWUgaXMgdGVzdEFycmF5W2tl
eV0KIFBBU1Mga2V5IGlzIGkKIFBBU1MgdGVzdEFycmF5Lmxlbmd0aCBpcyA5CitQQVNTIHZhbHVl
IGlzIHRlc3RBcnJheVtrZXldCitQQVNTIGtleSBpcyBpCitQQVNTIHZhbHVlIGlzIHRlc3RBcnJh
eVtrZXldCitQQVNTIGtleSBpcyBpCitQQVNTIHZhbHVlIGlzIHRlc3RBcnJheVtrZXldCitQQVNT
IGtleSBpcyBpCitQQVNTIHZhbHVlIGlzIHRlc3RBcnJheVtrZXldCitQQVNTIGtleSBpcyBpCitQ
QVNTIHZhbHVlIGlzIHRlc3RBcnJheVtrZXldCitQQVNTIGtleSBpcyBpCitQQVNTIHZhbHVlIGlz
IHRlc3RBcnJheVtrZXldCitQQVNTIGtleSBpcyBpCitQQVNTIHZhbHVlIGlzIHRlc3RBcnJheVtr
ZXldCitQQVNTIGtleSBpcyBpCitQQVNTIHZhbHVlIGlzIHRlc3RBcnJheVtrZXldCitQQVNTIGtl
eSBpcyBpCitQQVNTIHZhbHVlIGlzIHRlc3RBcnJheVtrZXldCitQQVNTIGtleSBpcyBpCitQQVNT
IHZhbHVlIGlzIHRlc3RBcnJheVtrZXldCitQQVNTIGtleSBpcyBpCitQQVNTIHZhbHVlIGlzIHRl
c3RBcnJheVtrZXldCitQQVNTIGtleSBpcyBpCitQQVNTIHZhbHVlIGlzIHRlc3RBcnJheVtrZXld
CitQQVNTIGtleSBpcyBpCitQQVNTIHZhbHVlIGlzIHRlc3RBcnJheVtrZXldCitQQVNTIGtleSBp
cyBpCitQQVNTIHRlc3RBcnJheS5sZW5ndGggaXMgMTMKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZGVz
dHJ1Y3R1cmluZy1hc3NpZ25tZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2Rlc3Ry
dWN0dXJpbmctYXNzaWdubWVudC1leHBlY3RlZC50eHQKaW5kZXggZDI3NThiZDI2YWI2MjVmYTZh
ZjQ3N2IwYzE3YmI2NmUyYzcxNDJlZi4uYjU0MDVkOWUzMGUxM2MzOTQ4ODI3YmUzNzliYzU1ZDYy
MDM0YzhiYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvZGVzdHJ1Y3R1cmluZy1hc3NpZ25t
ZW50LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9kZXN0cnVjdHVyaW5nLWFzc2ln
bm1lbnQtZXhwZWN0ZWQudHh0CkBAIC03LDU4ICs3LDc1IEBAIFBBU1MgdmFyIFthLGJdPVsnMScs
JzInXTsgdmFyIHI9YStiOyByIGlzICcxMicKIEZ1bmN0aW9uIGFzIFN0cmluZzogKGZ1bmN0aW9u
KFthLGJdKSB7IHJldHVybiBhK2I7fSkKIFBBU1MgKGZ1bmN0aW9uKFthLGJdKSB7IHJldHVybiBh
K2I7fSkoWycxJywnMiddKSBpcyAnMTInCiBQQVNTIChmdW5jdGlvbiAoW2EsYl0pIHsgcmV0dXJu
IGErYjt9KShbJzEnLCcyJ10pIGlzICcxMicKK1BBU1MgKFthLGJdPVsnMScsJzInXSk7IHZhciBy
PWErYjsgciBpcyAnMTInCitQQVNTIFthLGJdPVsnMScsJzInXTsgdmFyIHI9YStiOyByIGlzICcx
MicKIFBBU1MgdmFyIHthLGJ9PXthOicxJyxiOicyJ307IHZhciByPWErYjsgciBpcyAnMTInCiBG
dW5jdGlvbiBhcyBTdHJpbmc6IChmdW5jdGlvbih7YSxifSkgeyByZXR1cm4gYStiO30pCiBQQVNT
IChmdW5jdGlvbih7YSxifSkgeyByZXR1cm4gYStiO30pKHthOicxJyxiOicyJ30pIGlzICcxMicK
IFBBU1MgKGZ1bmN0aW9uICh7YTphLGI6Yn0pIHsgcmV0dXJuIGErYjt9KSh7YTonMScsYjonMid9
KSBpcyAnMTInCitQQVNTICh7YSxifT17YTonMScsYjonMid9KTsgdmFyIHI9YStiOyByIGlzICcx
MicKIFBBU1MgdmFyIHtjOmEsZDpifT17YzonMScsZDonMid9OyB2YXIgcj1hK2I7IHIgaXMgJzEy
JwogRnVuY3Rpb24gYXMgU3RyaW5nOiAoZnVuY3Rpb24oe2M6YSxkOmJ9KSB7IHJldHVybiBhK2I7
fSkKIFBBU1MgKGZ1bmN0aW9uKHtjOmEsZDpifSkgeyByZXR1cm4gYStiO30pKHtjOicxJyxkOicy
J30pIGlzICcxMicKIFBBU1MgKGZ1bmN0aW9uICh7YzphLGQ6Yn0pIHsgcmV0dXJuIGErYjt9KSh7
YzonMScsZDonMid9KSBpcyAnMTInCitQQVNTICh7YzphLGQ6Yn09e2M6JzEnLGQ6JzInfSk7IHZh
ciByPWErYjsgciBpcyAnMTInCiBQQVNTIHZhciB7YzpiLGQ6YX09e2M6JzEnLGQ6JzInfTsgdmFy
IHI9YStiOyByIGlzICcyMScKIEZ1bmN0aW9uIGFzIFN0cmluZzogKGZ1bmN0aW9uKHtjOmIsZDph
fSkgeyByZXR1cm4gYStiO30pCiBQQVNTIChmdW5jdGlvbih7YzpiLGQ6YX0pIHsgcmV0dXJuIGEr
Yjt9KSh7YzonMScsZDonMid9KSBpcyAnMjEnCiBQQVNTIChmdW5jdGlvbiAoe2M6YixkOmF9KSB7
IHJldHVybiBhK2I7fSkoe2M6JzEnLGQ6JzInfSkgaXMgJzIxJworUEFTUyAoe2M6YixkOmF9PXtj
OicxJyxkOicyJ30pOyB2YXIgcj1hK2I7IHIgaXMgJzIxJwogUEFTUyB2YXIge3RydWU6YSxmYWxz
ZTpiLHVuZGVmaW5lZDpjLG51bGw6ZCxpbjplLGZvcjpmLDEuNTpnLCdmb28gYmFyJzpofT17dHJ1
ZTonYScsZmFsc2U6J2InLHVuZGVmaW5lZDonYycsbnVsbDonZCcsaW46J2UnLGZvcjonZicsMS41
OidnJywnZm9vIGJhcic6J2gnfTsgdmFyIHI9YStiK2MrZCtlK2YrZytoOyByIGlzICdhYmNkZWZn
aCcKIEZ1bmN0aW9uIGFzIFN0cmluZzogKGZ1bmN0aW9uKHt0cnVlOmEsZmFsc2U6Yix1bmRlZmlu
ZWQ6YyxudWxsOmQsaW46ZSxmb3I6ZiwxLjU6ZywnZm9vIGJhcic6aH0pIHsgcmV0dXJuIGErYitj
K2QrZStmK2craDt9KQogUEFTUyAoZnVuY3Rpb24oe3RydWU6YSxmYWxzZTpiLHVuZGVmaW5lZDpj
LG51bGw6ZCxpbjplLGZvcjpmLDEuNTpnLCdmb28gYmFyJzpofSkgeyByZXR1cm4gYStiK2MrZCtl
K2YrZytoO30pKHt0cnVlOidhJyxmYWxzZTonYicsdW5kZWZpbmVkOidjJyxudWxsOidkJyxpbjon
ZScsZm9yOidmJywxLjU6J2cnLCdmb28gYmFyJzonaCd9KSBpcyAnYWJjZGVmZ2gnCiBQQVNTIChm
dW5jdGlvbiAoe3RydWU6YSxmYWxzZTpiLHVuZGVmaW5lZDpjLG51bGw6ZCxpbjplLGZvcjpmLDEu
NTpnLCJmb28gYmFyIjpofSkgeyByZXR1cm4gYStiK2MrZCtlK2YrZytoO30pKHt0cnVlOidhJyxm
YWxzZTonYicsdW5kZWZpbmVkOidjJyxudWxsOidkJyxpbjonZScsZm9yOidmJywxLjU6J2cnLCdm
b28gYmFyJzonaCd9KSBpcyAnYWJjZGVmZ2gnCitQQVNTICh7dHJ1ZTphLGZhbHNlOmIsdW5kZWZp
bmVkOmMsbnVsbDpkLGluOmUsZm9yOmYsMS41OmcsJ2ZvbyBiYXInOmh9PXt0cnVlOidhJyxmYWxz
ZTonYicsdW5kZWZpbmVkOidjJyxudWxsOidkJyxpbjonZScsZm9yOidmJywxLjU6J2cnLCdmb28g
YmFyJzonaCd9KTsgdmFyIHI9YStiK2MrZCtlK2YrZytoOyByIGlzICdhYmNkZWZnaCcKIFBBU1Mg
dmFyIFt7YzphLGQ6Yn1dPVt7YzonMScsZDonMid9XTsgdmFyIHI9YStiOyByIGlzICcxMicKIEZ1
bmN0aW9uIGFzIFN0cmluZzogKGZ1bmN0aW9uKFt7YzphLGQ6Yn1dKSB7IHJldHVybiBhK2I7fSkK
IFBBU1MgKGZ1bmN0aW9uKFt7YzphLGQ6Yn1dKSB7IHJldHVybiBhK2I7fSkoW3tjOicxJyxkOicy
J31dKSBpcyAnMTInCiBQQVNTIChmdW5jdGlvbiAoW3tjOmEsZDpifV0pIHsgcmV0dXJuIGErYjt9
KShbe2M6JzEnLGQ6JzInfV0pIGlzICcxMicKK1BBU1MgKFt7YzphLGQ6Yn1dPVt7YzonMScsZDon
Mid9XSk7IHZhciByPWErYjsgciBpcyAnMTInCitQQVNTIFt7YzphLGQ6Yn1dPVt7YzonMScsZDon
Mid9XTsgdmFyIHI9YStiOyByIGlzICcxMicKIFBBU1MgdmFyIHt4Olt7YzphLGQ6Yn1dfT17eDpb
e2M6JzEnLGQ6JzInfV19OyB2YXIgcj1hK2I7IHIgaXMgJzEyJwogRnVuY3Rpb24gYXMgU3RyaW5n
OiAoZnVuY3Rpb24oe3g6W3tjOmEsZDpifV19KSB7IHJldHVybiBhK2I7fSkKIFBBU1MgKGZ1bmN0
aW9uKHt4Olt7YzphLGQ6Yn1dfSkgeyByZXR1cm4gYStiO30pKHt4Olt7YzonMScsZDonMid9XX0p
IGlzICcxMicKIFBBU1MgKGZ1bmN0aW9uICh7eDpbe2M6YSxkOmJ9XX0pIHsgcmV0dXJuIGErYjt9
KSh7eDpbe2M6JzEnLGQ6JzInfV19KSBpcyAnMTInCitQQVNTICh7eDpbe2M6YSxkOmJ9XX09e3g6
W3tjOicxJyxkOicyJ31dfSk7IHZhciByPWErYjsgciBpcyAnMTInCiBQQVNTIHZhciBbYSxiXT1h
bkFycmF5OyB2YXIgcj1hK2I7IHIgaXMgJzEyJwogRnVuY3Rpb24gYXMgU3RyaW5nOiAoZnVuY3Rp
b24oW2EsYl0pIHsgcmV0dXJuIGErYjt9KQogUEFTUyAoZnVuY3Rpb24oW2EsYl0pIHsgcmV0dXJu
IGErYjt9KShhbkFycmF5KSBpcyAnMTInCiBQQVNTIChmdW5jdGlvbiAoW2EsYl0pIHsgcmV0dXJu
IGErYjt9KShhbkFycmF5KSBpcyAnMTInCitQQVNTIChbYSxiXT1hbkFycmF5KTsgdmFyIHI9YSti
OyByIGlzICcxMicKK1BBU1MgW2EsYl09YW5BcnJheTsgdmFyIHI9YStiOyByIGlzICcxMicKIFBB
U1MgdmFyIHthLGJ9PWFuQXJyYXk7IHZhciByPWErYjsgciBpcyAnMzQnCiBGdW5jdGlvbiBhcyBT
dHJpbmc6IChmdW5jdGlvbih7YSxifSkgeyByZXR1cm4gYStiO30pCiBQQVNTIChmdW5jdGlvbih7
YSxifSkgeyByZXR1cm4gYStiO30pKGFuQXJyYXkpIGlzICczNCcKIFBBU1MgKGZ1bmN0aW9uICh7
YTphLGI6Yn0pIHsgcmV0dXJuIGErYjt9KShhbkFycmF5KSBpcyAnMzQnCitQQVNTICh7YSxifT1h
bkFycmF5KTsgdmFyIHI9YStiOyByIGlzICczNCcKIFBBU1MgdmFyIHthOmEsYjpifT1hbkFycmF5
OyB2YXIgcj1hK2I7IHIgaXMgJzM0JwogRnVuY3Rpb24gYXMgU3RyaW5nOiAoZnVuY3Rpb24oe2E6
YSxiOmJ9KSB7IHJldHVybiBhK2I7fSkKIFBBU1MgKGZ1bmN0aW9uKHthOmEsYjpifSkgeyByZXR1
cm4gYStiO30pKGFuQXJyYXkpIGlzICczNCcKIFBBU1MgKGZ1bmN0aW9uICh7YTphLGI6Yn0pIHsg
cmV0dXJuIGErYjt9KShhbkFycmF5KSBpcyAnMzQnCitQQVNTICh7YTphLGI6Yn09YW5BcnJheSk7
IHZhciByPWErYjsgciBpcyAnMzQnCiBQQVNTIHZhciB7YSxifT1hbk9iamVjdDsgdmFyIHI9YSti
OyByIGlzICcxMicKIEZ1bmN0aW9uIGFzIFN0cmluZzogKGZ1bmN0aW9uKHthLGJ9KSB7IHJldHVy
biBhK2I7fSkKIFBBU1MgKGZ1bmN0aW9uKHthLGJ9KSB7IHJldHVybiBhK2I7fSkoYW5PYmplY3Qp
IGlzICcxMicKIFBBU1MgKGZ1bmN0aW9uICh7YTphLGI6Yn0pIHsgcmV0dXJuIGErYjt9KShhbk9i
amVjdCkgaXMgJzEyJworUEFTUyAoe2EsYn09YW5PYmplY3QpOyB2YXIgcj1hK2I7IHIgaXMgJzEy
JwogUEFTUyB2YXIge2E6YSxiOmJ9PWFuT2JqZWN0OyB2YXIgcj1hK2I7IHIgaXMgJzEyJwogRnVu
Y3Rpb24gYXMgU3RyaW5nOiAoZnVuY3Rpb24oe2E6YSxiOmJ9KSB7IHJldHVybiBhK2I7fSkKIFBB
U1MgKGZ1bmN0aW9uKHthOmEsYjpifSkgeyByZXR1cm4gYStiO30pKGFuT2JqZWN0KSBpcyAnMTIn
CiBQQVNTIChmdW5jdGlvbiAoe2E6YSxiOmJ9KSB7IHJldHVybiBhK2I7fSkoYW5PYmplY3QpIGlz
ICcxMicKK1BBU1MgKHthOmEsYjpifT1hbk9iamVjdCk7IHZhciByPWErYjsgciBpcyAnMTInCiBQ
QVNTIHZhciB7MDphLDE6Yn09YW5PYmplY3Q7IHZhciByPWErYjsgciBpcyAnMzQnCiBGdW5jdGlv
biBhcyBTdHJpbmc6IChmdW5jdGlvbih7MDphLDE6Yn0pIHsgcmV0dXJuIGErYjt9KQogUEFTUyAo
ZnVuY3Rpb24oezA6YSwxOmJ9KSB7IHJldHVybiBhK2I7fSkoYW5PYmplY3QpIGlzICczNCcKIFBB
U1MgKGZ1bmN0aW9uICh7MDphLDE6Yn0pIHsgcmV0dXJuIGErYjt9KShhbk9iamVjdCkgaXMgJzM0
JworUEFTUyAoezA6YSwxOmJ9PWFuT2JqZWN0KTsgdmFyIHI9YStiOyByIGlzICczNCcKIFBBU1Mg
dmFyIHsnYSc6YSwnYic6Yn09YW5PYmplY3Q7IHZhciByPWErYjsgciBpcyAnMTInCiBGdW5jdGlv
biBhcyBTdHJpbmc6IChmdW5jdGlvbih7J2EnOmEsJ2InOmJ9KSB7IHJldHVybiBhK2I7fSkKIFBB
U1MgKGZ1bmN0aW9uKHsnYSc6YSwnYic6Yn0pIHsgcmV0dXJuIGErYjt9KShhbk9iamVjdCkgaXMg
JzEyJwogUEFTUyAoZnVuY3Rpb24gKHsiYSI6YSwiYiI6Yn0pIHsgcmV0dXJuIGErYjt9KShhbk9i
amVjdCkgaXMgJzEyJworUEFTUyAoeydhJzphLCdiJzpifT1hbk9iamVjdCk7IHZhciByPWErYjsg
ciBpcyAnMTInCiBQQVNTIGErYiBpcyAnMTEyMicKIFBBU1MgYStiIGlzICcyMjExJwogUEFTUyB0
ZXN0RGVjb25zdHJ1Y3RBcmdzKCcxJywgJzInKSBpcyAnMTInCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9qcy9wYXJzZXItc3ludGF4LWNoZWNrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pz
L3BhcnNlci1zeW50YXgtY2hlY2stZXhwZWN0ZWQudHh0CmluZGV4IDAzOWIyMzA1NzM0MjYzNjJk
MTc3NTk0ZjMxYTg0NTZkZDgwZWE1N2QuLjBhNzVmNDcwNTE5MjkxZTgyOGYyNDUwMGM2YjA4ZDU4
OWU0OTIxNTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL3BhcnNlci1zeW50YXgtY2hlY2st
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL3BhcnNlci1zeW50YXgtY2hlY2stZXhw
ZWN0ZWQudHh0CkBAIC02MTUsNiArNjE1LDEwIEBAIFBBU1MgVmFsaWQ6ICAgImZvciAodmFyIFtv
Zl0gaW4gb2Ype30iCiBQQVNTIFZhbGlkOiAgICJmdW5jdGlvbiBmKCkgeyBmb3IgKHZhciBbb2Zd
IGluIG9mKXt9IH0iCiBQQVNTIFZhbGlkOiAgICJmb3IgKHZhciB7b2Z9IGluIG9mKXt9IgogUEFT
UyBWYWxpZDogICAiZnVuY3Rpb24gZigpIHsgZm9yICh2YXIge29mfSBpbiBvZil7fSB9IgorUEFT
UyBWYWxpZDogICAiZm9yIChbb2ZdIGluIG9mKXt9IgorUEFTUyBWYWxpZDogICAiZnVuY3Rpb24g
ZigpIHsgZm9yIChbb2ZdIGluIG9mKXt9IH0iCitQQVNTIFZhbGlkOiAgICJmb3IgKHtvZn0gaW4g
b2Ype30iCitGQUlMIFZhbGlkOiAgICJmdW5jdGlvbiBmKCkgeyBmb3IgKHtvZn0gaW4gb2Ype30g
fSIgc2hvdWxkIE5PVCB0aHJvdyAKIFBBU1MgSW52YWxpZDogImZvciAob2Ygb2Ygb2Ygb2Ype30i
CiBQQVNTIEludmFsaWQ6ICJmdW5jdGlvbiBmKCkgeyBmb3IgKG9mIG9mIG9mIG9mKXt9IH0iCiBQ
QVNTIEludmFsaWQ6ICJmb3IgKG9mIG9mOyBvZjsgb2Ype30iCkBAIC02NzgsOCArNjgyLDE2IEBA
IFBBU1MgVmFsaWQ6ICAgIlsuLi5iYXIsLCwsXSIKIFBBU1MgVmFsaWQ6ICAgImZ1bmN0aW9uIGYo
KSB7IFsuLi5iYXIsLCwsXSB9IgogUEFTUyBWYWxpZDogICAiWywsLCwuLi5iYXJdIgogUEFTUyBW
YWxpZDogICAiZnVuY3Rpb24gZigpIHsgWywsLCwuLi5iYXJdIH0iCi1QQVNTIFZhbGlkOiAgICIo
e3g6IDF9KSIKLVBBU1MgVmFsaWQ6ICAgImZ1bmN0aW9uIGYoKSB7ICh7eDogMX0pIH0iCitQQVNT
IFZhbGlkOiAgICIoezE6IHh9KSIKK1BBU1MgVmFsaWQ6ICAgImZ1bmN0aW9uIGYoKSB7ICh7MTog
eH0pIH0iCitQQVNTIFZhbGlkOiAgICIoezE6IHh9PTEpIgorUEFTUyBWYWxpZDogICAiZnVuY3Rp
b24gZigpIHsgKHsxOiB4fT0xKSB9IgorUEFTUyBWYWxpZDogICAidmFyIHsxOnh9PTEiCitQQVNT
IFZhbGlkOiAgICJmdW5jdGlvbiBmKCkgeyB2YXIgezE6eH09MSB9IgorUEFTUyBWYWxpZDogICAi
W3hdPTEiCitQQVNTIFZhbGlkOiAgICJmdW5jdGlvbiBmKCkgeyBbeF09MSB9IgorUEFTUyBWYWxp
ZDogICAidmFyIFt4XT0xIgorUEFTUyBWYWxpZDogICAiZnVuY3Rpb24gZigpIHsgdmFyIFt4XT0x
IH0iCiBQQVNTIFZhbGlkOiAgICIoe1t4XTogMX0pIgogUEFTUyBWYWxpZDogICAiZnVuY3Rpb24g
ZigpIHsgKHtbeF06IDF9KSB9IgogUEFTUyBJbnZhbGlkOiAiKHtnZXQgW3hdKCl7fX0pIgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Jhc2ljLWZvci1vZi5qcyBiL0xh
eW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9iYXNpYy1mb3Itb2YuanMKaW5kZXggNTdiZWJlMmU2
ZjM3YTE5ZTljYWE3NmMxY2QzMjZiNGFkZjczNDQ3Yy4uZDEyNDMxNGEwZjIxYjdiMWNmOTY1OGU2
MjQ3YTYyZmRhY2Y3OGE4MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3Rz
L2Jhc2ljLWZvci1vZi5qcworKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYmFzaWMt
Zm9yLW9mLmpzCkBAIC01NCwzICs1NCwyMSBAQCBmb3IgKHZhciBba2V5LCB2YWx1ZV0gb2YgdGVz
dEFycmF5LmVudHJpZXMoKSkgewogICAgICAgICB0ZXN0QXJyYXlbNF0gPSA1CiB9CiBzaG91bGRC
ZSgidGVzdEFycmF5Lmxlbmd0aCIsIFN0cmluZyhpKSkKKworCit2YXIgaSA9IDA7Citmb3IgKFtr
ZXksIHZhbHVlXSBvZiB0ZXN0QXJyYXkuZW50cmllcygpKSB7CisgICAgc2hvdWxkQmUoInZhbHVl
IiwgInRlc3RBcnJheVtrZXldIikKKyAgICBzaG91bGRCZSgia2V5IiwgImkiKQorICAgIGkrKwor
ICAgIGlmIChpICUgMiA9PSAwKQorICAgICAgICB0ZXN0QXJyYXlbaV0gKj0gMjsKKyAgICBpZiAo
aSA8IDQpCisgICAgICAgIHRlc3RBcnJheS5wdXNoKHRlc3RBcnJheS5sZW5ndGgpCisgICAgaWYg
KGkgPT0gNCkKKyAgICAgICAgZGVsZXRlIHRlc3RBcnJheVs0XQorICAgIGlmIChpID09IDUpCisg
ICAgICAgIHRlc3RBcnJheVs0XSA9IDUKK30KK3Nob3VsZEJlKCJ0ZXN0QXJyYXkubGVuZ3RoIiwg
U3RyaW5nKGkpKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvZGVz
dHJ1Y3R1cmluZy1hc3NpZ25tZW50LmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Rl
c3RydWN0dXJpbmctYXNzaWdubWVudC5qcwppbmRleCBlMDNhOTE2NDVhMDI3OTAyZjQ2NWEyNjQ4
YTMyNmMyYzEyYzIwNzQwLi5lMDY3ZDg1MGNjYWQzYzRiODMxNzQ3MTJkMjJiYjRiYTg5OTlkMDJh
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvZGVzdHJ1Y3R1cmluZy1h
c3NpZ25tZW50LmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9kZXN0cnVjdHVy
aW5nLWFzc2lnbm1lbnQuanMKQEAgLTcsNiArNyw5IEBAIGZ1bmN0aW9uIHRlc3REZXN0cnVjdHVy
aW5nKHBhdHRlcm4sIGV4cHJlc3Npb24sIHJlc3VsdCwgZXhwcikgewogICAgIGRlYnVnKCJGdW5j
dGlvbiBhcyBTdHJpbmc6ICIgKyBmdW5jdGlvblN0cmluZyk7CiAgICAgc2hvdWxkQmUoZnVuY3Rp
b25TdHJpbmcgKyAiKCIgKyBleHByZXNzaW9uICsgIikiLCByZXN1bHQpOwogICAgIHNob3VsZEJl
KCIoIiArIGV2YWwoZnVuY3Rpb25TdHJpbmcpICsgIikoIiArIGV4cHJlc3Npb24gKyAiKSIsIHJl
c3VsdCk7CisgICAgc2hvdWxkQmUoIigiICsgcGF0dGVybiArICI9IiArIGV4cHJlc3Npb24gKyAi
KTsgdmFyIHI9IitleHByKyI7IHIiLCByZXN1bHQpOworICAgIGlmIChwYXR0ZXJuWzBdID09ICdb
JykKKyAgICAgICAgc2hvdWxkQmUoIiIgKyBwYXR0ZXJuICsgIj0iICsgZXhwcmVzc2lvbiArICI7
IHZhciByPSIrZXhwcisiOyByIiwgcmVzdWx0KTsKIH0KIAogdGVzdERlc3RydWN0dXJpbmcoIlth
LGJdIiwgIlsnMScsJzInXSIsICInMTInIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9z
Y3JpcHQtdGVzdHMvcGFyc2VyLXN5bnRheC1jaGVjay5qcyBiL0xheW91dFRlc3RzL2pzL3Njcmlw
dC10ZXN0cy9wYXJzZXItc3ludGF4LWNoZWNrLmpzCmluZGV4IDZmNWRkNTFkZTViZmRmZTc3Yjll
NjU1NTY4MzIwNTkwMzM5ZjA4ZWMuLjBlN2E5Zjg0NDQ3MzY4ZGRiYjMyODE4OGFlNDJkYjcxOTc2
MmJlYzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9wYXJzZXItc3lu
dGF4LWNoZWNrLmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9wYXJzZXItc3lu
dGF4LWNoZWNrLmpzCkBAIC0zODcsNiArMzg3LDggQEAgdmFsaWQoImZvciAob2Zbb2ZdIGluIG9m
KXt9IikKIGludmFsaWQoImZvciAodmFyIG9mW29mXSBpbiBvZil7fSIpCiB2YWxpZCgiZm9yICh2
YXIgW29mXSBpbiBvZil7fSIpCiB2YWxpZCgiZm9yICh2YXIge29mfSBpbiBvZil7fSIpCit2YWxp
ZCgiZm9yIChbb2ZdIGluIG9mKXt9IikKK3ZhbGlkKCJmb3IgKHtvZn0gaW4gb2Ype30iKQogCiAK
IGludmFsaWQoImZvciAob2Ygb2Ygb2Ygb2Ype30iKQpAQCAtNDIyLDcgKzQyNCwxMSBAQCB2YWxp
ZCgiW2EsIC4uLmJhcl0iKQogdmFsaWQoIlsuLi5iYXIsIGFdIikKIHZhbGlkKCJbLi4uYmFyLCws
LF0iKQogdmFsaWQoIlssLCwsLi4uYmFyXSIpCi12YWxpZCgiKHt4OiAxfSkiKQordmFsaWQoIih7
MTogeH0pIikKK3ZhbGlkKCIoezE6IHh9PTEpIikKK3ZhbGlkKCJ2YXIgezE6eH09MSIpCit2YWxp
ZCgiW3hdPTEiKQordmFsaWQoInZhciBbeF09MSIpCiB2YWxpZCgiKHtbeF06IDF9KSIpCiBpbnZh
bGlkKCIoe2dldCBbeF0oKXt9fSkiKQogaW52YWxpZCgiKHtzZXQgW3hdKCl7fX0pIikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216703</attachid>
            <date>2013-11-12 12:28:36 -0800</date>
            <delta_ts>2013-11-12 12:37:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124172-20131112122835.patch</filename>
            <type>text/plain</type>
            <size>26008</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5MDgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
YjdmY2Y1NGNkMTJhMDk0YjA0MWY4NGM4NzRjNDJlYTRjNTMxNWI1Li5lMTMyMDk2YWE2M2RhZjg0
NjA1NDVmMzdjMWRhM2VmMWU2NTc4Yzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAxMy0xMS0xMSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFN1cHBvcnQgdW5wcmVmaXhlZCBkZWNvbnN0cnVjdGluZyBhc3NpZ25tZW50Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQxNzIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9y
dCBmb3IgdW5wcmVmaXhlZCBkZXNjb250cnVjdGl2ZSBhc3NpZ25tZW50LgorCisgICAgICAgIEhh
cHBpbHkgbm9uLXJlZmVyZW5jZSB0eXBlcyBvbiB0aGUgbGVmdCBoYW5kIHNpZGUgb2YgYW4gYXNz
aWdubWVudAorICAgICAgICBhcmUgYSBydW50aW1lIGVycm9yLCBzbyB3ZSdyZSBhYmxlIHRvIGRl
ZmVyIHZhbGlkYXRpb24gb2YgdGhlIGJpbmRpbmcKKyAgICAgICAgcGF0dGVybiB0byBjb2RlZ2Vu
IHRpbWUgd2hlbiB3ZSdyZSBhbHJlYWR5IGRvaW5nIGEgbG90IG1vcmUgd29yay4KKworICAgICAg
ICBXZSdyZSBhbHNvIGFibGUgdG8gcHJlZGljYXRlIG91ciBhdHRlbXB0IHRvIHBhcnNlIG9uIHRo
ZSBleGlzdGVuY2Ugb2YKKyAgICAgICAgJ1snIG9yICd7JyBhcyB0aGV5IGFyZSBub3QgYXMgY29t
bW9uIGFzIG90aGVyIGNvbnN0cnVjdHMuIAorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkFycmF5UGF0dGVybk5vZGU6OmVtaXREaXJlY3RC
aW5kaW5nKToKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAqIHBhcnNl
ci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjo6OmNyZWF0ZUJpbmRpbmdQYXR0ZXJuKToKKyAg
ICAgICAgKEpTQzo6Ojp0cnlQYXJzZURlY29uc3RydWN0aW9uUGF0dGVybkV4cHJlc3Npb24pOgor
ICAgICAgICAoSlNDOjo6OnBhcnNlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuKToKKyAgICAgICAgKEpT
Qzo6OjpwYXJzZUZvclN0YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VBc3NpZ25tZW50
RXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpQ
YXJzZXI6OmNyZWF0ZVNhdmVQb2ludCk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6cmVzdG9yZVNh
dmVQb2ludCk6CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKwogMjAxMy0xMS0x
MSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBDb25z
dGFudEZvbGRpbmdQaGFzZSdzIHdlaXJkbyBjb21waWxlLXRpbWUgb3B0aW1pemF0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAK
aW5kZXggNDIyMjYxNzI2ZTRhNzZjYmZhNjQxODgxYmI1MmYxMWU4ZmEyZDlhMC4uOWQzYjE1MTcy
MzA0NDc3NWI2YTU0YzE4ZjY2ZjZmNTgzMDRmNWEzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMjMzMywxMSArMjMz
MywxNyBAQCBSZWdpc3RlcklEKiBBcnJheVBhdHRlcm5Ob2RlOjplbWl0RGlyZWN0QmluZGluZyhC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZQogICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRHZXRBcmd1bWVudEJ5VmFsKHRlbXAuZ2V0KCksIGdlbmVyYXRvci51bmNoZWNrZWRSZWdpc3Rl
ckZvckFyZ3VtZW50cygpLCB0ZW1wLmdldCgpKTsKICAgICAgICAgICAgIHRhcmdldC0+YmluZFZh
bHVlKGdlbmVyYXRvciwgdGVtcC5nZXQoKSk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBqc1VuZGVm
aW5lZCgpKTsKKyAgICAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpIHx8
ICFkc3QpCisgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRMb2FkKGdlbmVyYXRvci5m
aW5hbERlc3RpbmF0aW9uKGRzdCksIGpzVW5kZWZpbmVkKCkpOworICAgICAgICBMb2NhbCBsb2Nh
bCA9IGdlbmVyYXRvci5sb2NhbChnZW5lcmF0b3Iudm0oKS0+cHJvcGVydHlOYW1lcy0+YXJndW1l
bnRzKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVk
KGRzdCwgbG9jYWwuZ2V0KCkpOwogICAgIH0KICAgICBpZiAoIXJocy0+aXNTaW1wbGVBcnJheSgp
KQogICAgICAgICByZXR1cm4gMDsKIAorICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXN1bHRSZWdp
c3RlcjsKKyAgICBpZiAoZHN0ICYmIGRzdCAhPSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQor
ICAgICAgICByZXN1bHRSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TmV3QXJyYXkoZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpLCAwLCAwKTsKICAgICBFbGVtZW50Tm9kZSogZWxlbWVudE5vZGVzID0g
c3RhdGljX2Nhc3Q8QXJyYXlOb2RlKj4ocmhzKS0+ZWxlbWVudHMoKTsKICAgICBWZWN0b3I8RXhw
cmVzc2lvbk5vZGUqPiBlbGVtZW50czsKICAgICBmb3IgKDsgZWxlbWVudE5vZGVzOyBlbGVtZW50
Tm9kZXMgPSBlbGVtZW50Tm9kZXMtPm5leHQoKSkKQEAgLTIzNDksMTMgKzIzNTUsMTYgQEAgUmVn
aXN0ZXJJRCogQXJyYXlQYXR0ZXJuTm9kZTo6ZW1pdERpcmVjdEJpbmRpbmcoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmUKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdGFyZ2V0
UGF0dGVybnMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgcmVnaXN0ZXJzLnVuY2hlY2tlZEFwcGVu
ZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUo
cmVnaXN0ZXJzLmxhc3QoKS5nZXQoKSwgZWxlbWVudHNbaV0pOworICAgICAgICBpZiAocmVzdWx0
UmVnaXN0ZXIpCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SW5kZXgocmVzdWx0UmVn
aXN0ZXIuZ2V0KCksIGksIHJlZ2lzdGVycy5sYXN0KCkuZ2V0KCkpOwogICAgIH0KICAgICAKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdGFyZ2V0UGF0dGVybnMuc2l6ZSgpOyBpKyspIHsK
ICAgICAgICAgaWYgKG1fdGFyZ2V0UGF0dGVybnNbaV0pCiAgICAgICAgICAgICBtX3RhcmdldFBh
dHRlcm5zW2ldLT5iaW5kVmFsdWUoZ2VuZXJhdG9yLCByZWdpc3RlcnNbaV0uZ2V0KCkpOwogICAg
IH0KLQorICAgIGlmIChyZXN1bHRSZWdpc3RlcikKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5t
b3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgcmVzdWx0UmVnaXN0ZXIuZ2V0KCkpOwogICAg
IHJldHVybiBnZW5lcmF0b3IuZW1pdExvYWQoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0
KSwganNVbmRlZmluZWQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmNwcAppbmRleCA3ZTNiM2QwNDQzNGYxMmMyYTI5OTY5Y2EyODliOGQ1MzMxZjgwOWMzLi42YWNi
NTcxZjVkNWI2OTc0OGJhNTAwMDJiYzM3YmM1YmMwNWNiNDI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC00MDAsNyArNDAwLDggQEAgdGVtcGxhdGUgPERlY29u
c3RydWN0aW9uS2luZCBraW5kLCBjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlY29uc3RydWN0aW9u
UGF0dGVybgogICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbCgiQ2Fubm90IGRlY29uc3RydWN0
IHRvIGEgcGFyYW1ldGVyIG5hbWVkICciLCBuYW1lLmltcGwoKSwgIiciKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQotICAgICAgICBjb250ZXh0LmFkZFZhcigmbmFtZSwga2luZCA9PSBEZWNv
bnN0cnVjdFRvUGFyYW1ldGVycyA/IDAgOiBEZWNsYXJhdGlvblN0YWNrczo6SGFzSW5pdGlhbGl6
ZXIpOworICAgICAgICBpZiAoa2luZCAhPSBEZWNvbnN0cnVjdFRvRXhwcmVzc2lvbnMpCisgICAg
ICAgICAgICBjb250ZXh0LmFkZFZhcigmbmFtZSwga2luZCA9PSBEZWNvbnN0cnVjdFRvUGFyYW1l
dGVycyA/IDAgOiBEZWNsYXJhdGlvblN0YWNrczo6SGFzSW5pdGlhbGl6ZXIpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIGlmIChraW5kID09IERlY29uc3RydWN0VG9WYXJpYWJsZXMpIHsKICAgICAg
ICAgICAgIGZhaWxJZkZhbHNlSWZTdHJpY3QoZGVjbGFyZVZhcmlhYmxlKCZuYW1lKSwgIkNhbm5v
dCBkZWNsYXJlIGEgdmFyaWFibGUgbmFtZWQgJyIsIG5hbWUuaW1wbCgpLCAiJyBpbiBzdHJpY3Qg
bW9kZSIpOwpAQCAtNDI0LDYgKzQyNSwxMiBAQCB0ZW1wbGF0ZSA8RGVjb25zdHJ1Y3Rpb25LaW5k
IGtpbmQsIGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuCiB9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Cit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVEZWNvbnN0cnVjdGlvblBhdHRlcm4gUGFyc2VyPExleGVyVHlwZT46OnRyeVBhcnNl
RGVjb25zdHJ1Y3Rpb25QYXR0ZXJuRXhwcmVzc2lvbihUcmVlQnVpbGRlciYgY29udGV4dCkKK3sK
KyAgICByZXR1cm4gcGFyc2VEZWNvbnN0cnVjdGlvblBhdHRlcm48RGVjb25zdHJ1Y3RUb0V4cHJl
c3Npb25zPihjb250ZXh0KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRl
bXBsYXRlIDxEZWNvbnN0cnVjdGlvbktpbmQga2luZCwgY2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVE
ZWNvbnN0cnVjdGlvblBhdHRlcm4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRGVjb25zdHJ1Y3Rp
b25QYXR0ZXJuKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBpbnQgZGVwdGgpCiB7CiAgICAgZmFpbElm
U3RhY2tPdmVyZmxvdygpOwpAQCAtNDMzLDYgKzQ0MCw4IEBAIHRlbXBsYXRlIDxEZWNvbnN0cnVj
dGlvbktpbmQga2luZCwgY2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVEZWNvbnN0cnVjdGlvblBhdHRl
cm4KICAgICBjYXNlIE9QRU5CUkFDS0VUOiB7CiAgICAgICAgIGF1dG8gYXJyYXlQYXR0ZXJuID0g
Y29udGV4dC5jcmVhdGVBcnJheVBhdHRlcm4obV90b2tlbi5tX2xvY2F0aW9uKTsKICAgICAgICAg
bmV4dCgpOworICAgICAgICBpZiAoa2luZCA9PSBEZWNvbnN0cnVjdFRvRXhwcmVzc2lvbnMgJiYg
bWF0Y2goQ0xPU0VCUkFDS0VUKSkKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBmYWls
SWZUcnVlKG1hdGNoKENMT1NFQlJBQ0tFVCksICJUaGVyZSBtdXN0IGJlIGF0IGxlYXN0IG9uZSBi
b3VuZCBwcm9wZXJ0eSBpbiBhbiBhcnJheSBkZWNvbnN0cnVjdGlvbiBwYXR0ZXJuIik7CiAgICAg
ICAgIGRvIHsKICAgICAgICAgICAgIHdoaWxlIChtYXRjaChDT01NQSkpIHsKQEAgLTQ0MiwxNSAr
NDUxLDI1IEBAIHRlbXBsYXRlIDxEZWNvbnN0cnVjdGlvbktpbmQga2luZCwgY2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVEZWNvbnN0cnVjdGlvblBhdHRlcm4KICAgICAgICAgICAgIHByb3BhZ2F0ZUVy
cm9yKCk7CiAgICAgICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24gPSBtX3Rva2VuLm1f
bG9jYXRpb247CiAgICAgICAgICAgICBhdXRvIGlubmVyUGF0dGVybiA9IHBhcnNlRGVjb25zdHJ1
Y3Rpb25QYXR0ZXJuPGtpbmQ+KGNvbnRleHQsIGRlcHRoICsgMSk7CisgICAgICAgICAgICBpZiAo
a2luZCA9PSBEZWNvbnN0cnVjdFRvRXhwcmVzc2lvbnMgJiYgIWlubmVyUGF0dGVybikKKyAgICAg
ICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGlubmVyUGF0dGVy
biwgIkNhbm5vdCBwYXJzZSB0aGlzIGRlY29uc3RydWN0aW9uIHBhdHRlcm4iKTsKICAgICAgICAg
ICAgIGNvbnRleHQuYXBwZW5kQXJyYXlQYXR0ZXJuRW50cnkoYXJyYXlQYXR0ZXJuLCBsb2NhdGlv
biwgaW5uZXJQYXR0ZXJuKTsKICAgICAgICAgfSB3aGlsZSAoY29uc3VtZShDT01NQSkpOworICAg
ICAgICAKKyAgICAgICAgaWYgKGtpbmQgPT0gRGVjb25zdHJ1Y3RUb0V4cHJlc3Npb25zICYmICFt
YXRjaChDTE9TRUJSQUNLRVQpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKICAgICAgICAgY29u
c3VtZU9yRmFpbChDTE9TRUJSQUNLRVQsICJFeHBlY3RlZCBlaXRoZXIgYSBjbG9zaW5nICddJyBv
ciBhICcsJyBmb2xsb3dpbmcgYW4gZWxlbWVudCBkZWNvbnN0cnVjdGlvbiBwYXR0ZXJuIik7CiAg
ICAgICAgIHBhdHRlcm4gPSBhcnJheVBhdHRlcm47CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICBjYXNlIE9QRU5CUkFDRTogewogICAgICAgICBuZXh0KCk7CisgICAgICAgIAorICAgICAgICBp
ZiAoa2luZCA9PSBEZWNvbnN0cnVjdFRvRXhwcmVzc2lvbnMgJiYgbWF0Y2goQ0xPU0VCUkFDRSkp
CisgICAgICAgICAgICByZXR1cm4gMDsKKwogICAgICAgICBmYWlsSWZUcnVlKG1hdGNoKENMT1NF
QlJBQ0UpLCAiVGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgYm91bmQgcHJvcGVydHkgaW4gYW4g
b2JqZWN0IGRlY29uc3RydWN0aW9uIHBhdHRlcm4iKTsKICAgICAgICAgYXV0byBvYmplY3RQYXR0
ZXJuID0gY29udGV4dC5jcmVhdGVPYmplY3RQYXR0ZXJuKG1fdG9rZW4ubV9sb2NhdGlvbik7CiAg
ICAgICAgIGJvb2wgd2FzU3RyaW5nID0gZmFsc2U7CkBAIC00NzYsMTMgKzQ5NSwxOCBAQCB0ZW1w
bGF0ZSA8RGVjb25zdHJ1Y3Rpb25LaW5kIGtpbmQsIGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRGVj
b25zdHJ1Y3Rpb25QYXR0ZXJuCiAgICAgICAgICAgICAgICAgICAgIHdhc1N0cmluZyA9IHRydWU7
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChtX3Rva2VuLm1fdHlwZSAhPSBSRVNFUlZFRCAmJiBtX3Rv
a2VuLm1fdHlwZSAhPSBSRVNFUlZFRF9JRl9TVFJJQ1QgJiYgIShtX3Rva2VuLm1fdHlwZSAmIEtl
eXdvcmRUb2tlbkZsYWcpKQorICAgICAgICAgICAgICAgICAgICBpZiAobV90b2tlbi5tX3R5cGUg
IT0gUkVTRVJWRUQgJiYgbV90b2tlbi5tX3R5cGUgIT0gUkVTRVJWRURfSUZfU1RSSUNUICYmICEo
bV90b2tlbi5tX3R5cGUgJiBLZXl3b3JkVG9rZW5GbGFnKSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGtpbmQgPT0gRGVjb25zdHJ1Y3RUb0V4cHJlc3Npb25zKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgICAgICAgICAgZmFpbFdp
dGhNZXNzYWdlKCJFeHBlY3RlZCBhIHByb3BlcnR5IG5hbWUiKTsKKyAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWUgPSAqbV90b2tlbi5tX2RhdGEu
aWRlbnQ7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICAgICAgaWYgKCFjb25zdW1lKENPTE9O
KSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoa2luZCA9PSBEZWNvbnN0cnVjdFRvRXhwcmVz
c2lvbnMpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAg
ICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKHRva2VuVHlwZSA9PSBSRVNFUlZFRCwgIkNhbm5vdCB1
c2UgYWJicmV2aWF0ZWQgZGVjb25zdHJ1Y3Rpb24gc3ludGF4IGZvciByZXNlcnZlZCBuYW1lICci
LCBwcm9wZXJ0eU5hbWUuaW1wbCgpLCAiJyIpOwogICAgICAgICAgICAgICAgICAgICBzZW1hbnRp
Y0ZhaWxJZlRydWUodG9rZW5UeXBlID09IFJFU0VSVkVEX0lGX1NUUklDVCwgIkNhbm5vdCB1c2Ug
YWJicmV2aWF0ZWQgZGVjb25zdHJ1Y3Rpb24gc3ludGF4IGZvciByZXNlcnZlZCBuYW1lICciLCBw
cm9wZXJ0eU5hbWUuaW1wbCgpLCAiJyBpbiBzdHJpY3QgbW9kZSIpOwogICAgICAgICAgICAgICAg
ICAgICBzZW1hbnRpY0ZhaWxJZlRydWUodG9rZW5UeXBlICYgS2V5d29yZFRva2VuRmxhZywgIkNh
bm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVjb25zdHJ1Y3Rpb24gc3ludGF4IGZvciBrZXl3b3JkICci
LCBwcm9wZXJ0eU5hbWUuaW1wbCgpLCAiJyIpOwpAQCAtNDkxLDkgKzUxNSwxMyBAQCB0ZW1wbGF0
ZSA8RGVjb25zdHJ1Y3Rpb25LaW5kIGtpbmQsIGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRGVjb25z
dHJ1Y3Rpb25QYXR0ZXJuCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlubmVy
UGF0dGVybiA9IHBhcnNlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuPGtpbmQ+KGNvbnRleHQsIGRlcHRo
ICsgMSk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoa2luZCA9PSBEZWNvbnN0cnVj
dFRvRXhwcmVzc2lvbnMgJiYgIWlubmVyUGF0dGVybikKKyAgICAgICAgICAgICAgICByZXR1cm4g
MDsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGlubmVyUGF0dGVybiwgIkNhbm5vdCBwYXJzZSB0
aGlzIGRlY29uc3RydWN0aW9uIHBhdHRlcm4iKTsKICAgICAgICAgICAgIGNvbnRleHQuYXBwZW5k
T2JqZWN0UGF0dGVybkVudHJ5KG9iamVjdFBhdHRlcm4sIGxvY2F0aW9uLCB3YXNTdHJpbmcsIHBy
b3BlcnR5TmFtZSwgaW5uZXJQYXR0ZXJuKTsKICAgICAgICAgfSB3aGlsZSAoY29uc3VtZShDT01N
QSkpOworICAgICAgICBpZiAoa2luZCA9PSBEZWNvbnN0cnVjdFRvRXhwcmVzc2lvbnMgJiYgIW1h
dGNoKENMT1NFQlJBQ0UpKQorICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGNvbnN1bWVP
ckZhaWwoQ0xPU0VCUkFDRSwgIkV4cGVjdGVkIGVpdGhlciBhIGNsb3NpbmcgJ30nIG9yIGFuICcs
JyBhZnRlciBhIHByb3BlcnR5IGRlY29uc3RydWN0aW9uIHBhdHRlcm4iKTsKICAgICAgICAgcGF0
dGVybiA9IG9iamVjdFBhdHRlcm47CiAgICAgICAgIGJyZWFrOwpAQCAtNTAxLDYgKzUyOSw4IEBA
IHRlbXBsYXRlIDxEZWNvbnN0cnVjdGlvbktpbmQga2luZCwgY2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVEZWNvbnN0cnVjdGlvblBhdHRlcm4KIAogICAgIGRlZmF1bHQ6IHsKICAgICAgICAgaWYgKCFt
YXRjaChJREVOVCkpIHsKKyAgICAgICAgICAgIGlmIChraW5kID09IERlY29uc3RydWN0VG9FeHBy
ZXNzaW9ucykKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIHNlbWFudGlj
RmFpbHVyZUR1ZVRvS2V5d29yZCgidmFyaWFibGUgbmFtZSIpOwogICAgICAgICAgICAgZmFpbFdp
dGhNZXNzYWdlKCJFeHBlY3RlZCBhIHBhcmFtZXRlciBwYXR0ZXJuIG9yIGEgJyknIGluIHBhcmFt
ZXRlciBsaXN0Iik7CiAgICAgICAgIH0KQEAgLTU1NCw2ICs1ODQsNyBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRm9y
U3RhdGVtZW50KAogICAgIEpTVGV4dFBvc2l0aW9uIGRlY2xzU3RhcnQ7CiAgICAgSlNUZXh0UG9z
aXRpb24gZGVjbHNFbmQ7CiAgICAgVHJlZUV4cHJlc3Npb24gZGVjbHMgPSAwOworICAgIFRyZWVE
ZWNvbnN0cnVjdGlvblBhdHRlcm4gcGF0dGVybiA9IDA7CiAgICAgaWYgKG1hdGNoKFZBUikpIHsK
ICAgICAgICAgLyoKICAgICAgICAgIGZvciAodmFyIElERU5UIGluIGV4cHJlc3Npb24pIHN0YXRl
bWVudApAQCAtNjAzLDYgKzYzNCwxNiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRm9yU3RhdGVtZW50KAogICAgIH0K
ICAgICAKICAgICBpZiAoIW1hdGNoKFNFTUlDT0xPTikpIHsKKyAgICAgICAgaWYgKG1hdGNoKE9Q
RU5CUkFDRSkgfHwgbWF0Y2goT1BFTkJSQUNLRVQpKSB7CisgICAgICAgICAgICBTYXZlUG9pbnQg
c2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KCk7CisgICAgICAgICAgICBkZWNsc1N0YXJ0ID0g
dG9rZW5TdGFydFBvc2l0aW9uKCk7CisgICAgICAgICAgICBwYXR0ZXJuID0gdHJ5UGFyc2VEZWNv
bnN0cnVjdGlvblBhdHRlcm5FeHByZXNzaW9uKGNvbnRleHQpOworICAgICAgICAgICAgZGVjbHNF
bmQgPSBsYXN0VG9rZW5FbmRQb3NpdGlvbigpOworICAgICAgICAgICAgaWYgKHBhdHRlcm4gJiYg
KG1hdGNoKElOVE9LRU4pIHx8IChtYXRjaChJREVOVCkgJiYgKm1fdG9rZW4ubV9kYXRhLmlkZW50
ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPm9mKSkpCisgICAgICAgICAgICAgICAgZ290byBlbnVt
ZXJhdGlvbkxvb3A7CisgICAgICAgICAgICBwYXR0ZXJuID0gMDsKKyAgICAgICAgICAgIHJlc3Rv
cmVTYXZlUG9pbnQoc2F2ZVBvaW50KTsKKyAgICAgICAgfQogICAgICAgICBtX2FsbG93c0luID0g
ZmFsc2U7CiAgICAgICAgIGRlY2xzU3RhcnQgPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKICAgICAg
ICAgZGVjbHMgPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CkBAIC02MzksNiArNjgwLDcgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUZvclN0YXRlbWVudCgKICAgICB9CiAgICAgCiAgICAgLy8gRm9yLWluIGxvb3AK
K2VudW1lcmF0aW9uTG9vcDoKICAgICBmYWlsSWZGYWxzZShub25MSFNDb3VudCA9PSBtX25vbkxI
U0NvdW50LCAiRXhwZWN0ZWQgYSByZWZlcmVuY2Ugb24gdGhlIGxlZnQgaGFuZCBzaWRlIG9mIGFu
IGVudW1lcmF0aW9uIHN0YXRlbWVudCIpOwogICAgIGJvb2wgaXNPZkVudW1lcmF0aW9uID0gZmFs
c2U7CiAgICAgaWYgKCFjb25zdW1lKElOVE9LRU4pKSB7CkBAIC02NTcsNiArNjk5LDEyIEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VGb3JTdGF0ZW1lbnQoCiAgICAgVHJlZVN0YXRlbWVudCBzdGF0ZW1lbnQgPSBwYXJz
ZVN0YXRlbWVudChjb250ZXh0LCB1bnVzZWQpOwogICAgIGVuZExvb3AoKTsKICAgICBmYWlsSWZG
YWxzZShzdGF0ZW1lbnQsICJFeHBlY3RlZCBhIHN0YXRlbWVudCBhcyB0aGUgYm9keSBvZiBhIGZv
ci0iLCBpc09mRW51bWVyYXRpb24gPyAib2YiIDogImluIiwgImxvb3AiKTsKKyAgICBpZiAocGF0
dGVybikgeworICAgICAgICBBU1NFUlQoIWRlY2xzKTsKKyAgICAgICAgaWYgKGlzT2ZFbnVtZXJh
dGlvbikKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZvck9mTG9vcChsb2NhdGlv
biwgcGF0dGVybiwgZXhwciwgc3RhdGVtZW50LCBkZWNsc1N0YXJ0LCBkZWNsc0VuZCwgZXhwckVu
ZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRm9y
SW5Mb29wKGxvY2F0aW9uLCBwYXR0ZXJuLCBleHByLCBzdGF0ZW1lbnQsIGRlY2xzU3RhcnQsIGRl
Y2xzRW5kLCBleHByRW5kLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIH0KICAgICBpZiAoaXNP
ZkVudW1lcmF0aW9uKQogICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGb3JPZkxvb3AobG9j
YXRpb24sIGRlY2xzLCBleHByLCBzdGF0ZW1lbnQsIGRlY2xzU3RhcnQsIGRlY2xzRW5kLCBleHBy
RW5kLCBzdGFydExpbmUsIGVuZExpbmUpOwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZvcklu
TG9vcChsb2NhdGlvbiwgZGVjbHMsIGV4cHIsIHN0YXRlbWVudCwgZGVjbHNTdGFydCwgZGVjbHNF
bmQsIGV4cHJFbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CkBAIC0xMzY4LDYgKzE0MTYsMTYgQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VBc3NpZ25tZW4KICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9r
ZW5Mb2NhdGlvbigpKTsKICAgICBpbnQgaW5pdGlhbEFzc2lnbm1lbnRDb3VudCA9IG1fYXNzaWdu
bWVudENvdW50OwogICAgIGludCBpbml0aWFsTm9uTEhTQ291bnQgPSBtX25vbkxIU0NvdW50Owor
ICAgIGlmIChtYXRjaChPUEVOQlJBQ0UpIHx8IG1hdGNoKE9QRU5CUkFDS0VUKSkgeworICAgICAg
ICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KCk7CisgICAgICAgIGF1dG8g
cGF0dGVybiA9IHRyeVBhcnNlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuRXhwcmVzc2lvbihjb250ZXh0
KTsKKyAgICAgICAgaWYgKHBhdHRlcm4gJiYgY29uc3VtZShFUVVBTCkpIHsKKyAgICAgICAgICAg
IGF1dG8gcmhzID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKKyAgICAgICAg
ICAgIGlmIChyaHMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRGVjb25z
dHJ1Y3RpbmdBc3NpZ25tZW50KGxvY2F0aW9uLCBwYXR0ZXJuLCByaHMpOworICAgICAgICB9Cisg
ICAgICAgIHJlc3RvcmVTYXZlUG9pbnQoc2F2ZVBvaW50KTsKKyAgICB9CiAgICAgVHJlZUV4cHJl
c3Npb24gbGhzID0gcGFyc2VDb25kaXRpb25hbEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFp
bElmRmFsc2UobGhzLCAiQ2Fubm90IHBhcnNlIGV4cHJlc3Npb24iKTsKICAgICBpZiAoaW5pdGlh
bE5vbkxIU0NvdW50ICE9IG1fbm9uTEhTQ291bnQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oCmluZGV4IGNjOWNmNGU2ZWY3ODUyNzM4ODYxODk5Mzg4ZWI3MTM5MWQ2OTY3NGIu
LjNjNDdjNTQwMzJjZDk5MzdhNzE4Njc1NzdjNDVmOTBhOTViNzQyYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtNzMxLDYgKzczMSw3IEBAIHByaXZhdGU6CiAKICAg
ICB0ZW1wbGF0ZSA8RGVjb25zdHJ1Y3Rpb25LaW5kLCBjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlT
X0lOTElORSBUcmVlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuIGNyZWF0ZUJpbmRpbmdQYXR0ZXJuKFRy
ZWVCdWlsZGVyJiwgY29uc3QgSWRlbnRpZmllciYsIGludCBkZXB0aCk7CiAgICAgdGVtcGxhdGUg
PERlY29uc3RydWN0aW9uS2luZCwgY2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVEZWNvbnN0cnVjdGlv
blBhdHRlcm4gcGFyc2VEZWNvbnN0cnVjdGlvblBhdHRlcm4oVHJlZUJ1aWxkZXImLCBpbnQgZGVw
dGggPSAwKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBU
cmVlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuIHRyeVBhcnNlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuRXhw
cmVzc2lvbihUcmVlQnVpbGRlciYpOwogICAgIHRlbXBsYXRlIDxGdW5jdGlvblJlcXVpcmVtZW50
cywgRnVuY3Rpb25QYXJzZU1vZGUsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIGNsYXNz
IFRyZWVCdWlsZGVyPiBib29sIHBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiwgY29uc3Qg
SWRlbnRpZmllciomLCBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCYsIFRyZWVGdW5jdGlvbkJvZHkm
LCB1bnNpZ25lZCYgb3BlbkJyYWNlT2Zmc2V0LCB1bnNpZ25lZCYgY2xvc2VCcmFjZU9mZnNldCwg
aW50JiBib2R5U3RhcnRMaW5lLCB1bnNpZ25lZCYgYm9keVN0YXJ0Q29sdW1uKTsKICAgICBBTFdB
WVNfSU5MSU5FIGludCBpc0JpbmFyeU9wZXJhdG9yKEpTVG9rZW5UeXBlKTsKICAgICBib29sIGFs
bG93QXV0b21hdGljU2VtaWNvbG9uKCk7CkBAIC03NjgsNiArNzY5LDcgQEAgcHJpdmF0ZToKICAg
ICAKICAgICBBTFdBWVNfSU5MSU5FIFNhdmVQb2ludCBjcmVhdGVTYXZlUG9pbnQoKQogICAgIHsK
KyAgICAgICAgQVNTRVJUKCFoYXNFcnJvcigpKTsKICAgICAgICAgU2F2ZVBvaW50IHJlc3VsdDsK
ICAgICAgICAgcmVzdWx0LnN0YXJ0T2Zmc2V0ID0gbV90b2tlbi5tX2xvY2F0aW9uLnN0YXJ0T2Zm
c2V0OwogICAgICAgICByZXN1bHQub2xkTGluZVN0YXJ0T2Zmc2V0ID0gbV90b2tlbi5tX2xvY2F0
aW9uLmxpbmVTdGFydE9mZnNldDsKQEAgLTc3OCw2ICs3ODAsNyBAQCBwcml2YXRlOgogICAgIAog
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCByZXN0b3JlU2F2ZVBvaW50KGNvbnN0IFNhdmVQb2ludCYg
c2F2ZVBvaW50KQogICAgIHsKKyAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBTdHJpbmcoKTsKICAg
ICAgICAgbV9sZXhlci0+c2V0T2Zmc2V0KHNhdmVQb2ludC5zdGFydE9mZnNldCwgc2F2ZVBvaW50
Lm9sZExpbmVTdGFydE9mZnNldCk7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgbV9sZXhlci0+
c2V0TGFzdExpbmVOdW1iZXIoc2F2ZVBvaW50Lm9sZExhc3RMaW5lTnVtYmVyKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2
NDM3MjQ0ZmM1YTU3MjAzYWFjNzMwZmEzNDQ4YzliNWU1OTVjNmE4Li4zNzlmMGY4MWVlNzFlYjA4
ZWU5MjgyOTg4YjUwZWZjYjM1ZTRlZjBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTMtMTEt
MTEgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHVu
cHJlZml4ZWQgZGVjb25zdHJ1Y3RpbmcgYXNzaWdubWVudAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0MTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFuZCBleHBhbmQgdGVzdGluZyBvZiBkZXN0
cnVjdHVyaW5nIGFzc2lnbm1lbnQKKworICAgICAgICAqIGpzL2Jhc2ljLWZvci1vZi1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICoganMvZGVzdHJ1Y3R1cmluZy1hc3NpZ25tZW50LWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBqcy9wYXJzZXItc3ludGF4LWNoZWNrLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBqcy9zY3JpcHQtdGVzdHMvYmFzaWMtZm9yLW9mLmpzOgorICAgICAgICAqIGpzL3Njcmlw
dC10ZXN0cy9kZXN0cnVjdHVyaW5nLWFzc2lnbm1lbnQuanM6CisgICAgICAgICh0ZXN0RGVzdHJ1
Y3R1cmluZyk6CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL3BhcnNlci1zeW50YXgtY2hlY2su
anM6CisKIDIwMTMtMTEtMTEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+
CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjE1NTY2MCk6IGJveC1zaGFkb3cgY2F1c2VzIG92ZXJs
YXkgc2Nyb2xsYmFycyB0byBiZSBpbiB0aGUgd3JvbmcgcG9zaXRpb24gd2hlbiBlbGVtZW50IGlz
IGNvbXBvc2l0ZWQgKDg1NjQ3KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYmFzaWMtZm9y
LW9mLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2Jhc2ljLWZvci1vZi1leHBlY3RlZC50
eHQKaW5kZXggNmYxMGIxNzNjYjUxODY4YjFmNTZlNmM5MmU2ZjVmODc5MTMwNzM1Zi4uOWE1NWE3
NWE1ZjgxOTljMTYyMzVlZjc0Yjg0OWNkM2UxZDVhYWI1MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvanMvYmFzaWMtZm9yLW9mLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9iYXNp
Yy1mb3Itb2YtZXhwZWN0ZWQudHh0CkBAIC02Myw2ICs2MywzMyBAQCBQQVNTIGtleSBpcyBpCiBQ
QVNTIHZhbHVlIGlzIHRlc3RBcnJheVtrZXldCiBQQVNTIGtleSBpcyBpCiBQQVNTIHRlc3RBcnJh
eS5sZW5ndGggaXMgOQorUEFTUyB2YWx1ZSBpcyB0ZXN0QXJyYXlba2V5XQorUEFTUyBrZXkgaXMg
aQorUEFTUyB2YWx1ZSBpcyB0ZXN0QXJyYXlba2V5XQorUEFTUyBrZXkgaXMgaQorUEFTUyB2YWx1
ZSBpcyB0ZXN0QXJyYXlba2V5XQorUEFTUyBrZXkgaXMgaQorUEFTUyB2YWx1ZSBpcyB0ZXN0QXJy
YXlba2V5XQorUEFTUyBrZXkgaXMgaQorUEFTUyB2YWx1ZSBpcyB0ZXN0QXJyYXlba2V5XQorUEFT
UyBrZXkgaXMgaQorUEFTUyB2YWx1ZSBpcyB0ZXN0QXJyYXlba2V5XQorUEFTUyBrZXkgaXMgaQor
UEFTUyB2YWx1ZSBpcyB0ZXN0QXJyYXlba2V5XQorUEFTUyBrZXkgaXMgaQorUEFTUyB2YWx1ZSBp
cyB0ZXN0QXJyYXlba2V5XQorUEFTUyBrZXkgaXMgaQorUEFTUyB2YWx1ZSBpcyB0ZXN0QXJyYXlb
a2V5XQorUEFTUyBrZXkgaXMgaQorUEFTUyB2YWx1ZSBpcyB0ZXN0QXJyYXlba2V5XQorUEFTUyBr
ZXkgaXMgaQorUEFTUyB2YWx1ZSBpcyB0ZXN0QXJyYXlba2V5XQorUEFTUyBrZXkgaXMgaQorUEFT
UyB2YWx1ZSBpcyB0ZXN0QXJyYXlba2V5XQorUEFTUyBrZXkgaXMgaQorUEFTUyB2YWx1ZSBpcyB0
ZXN0QXJyYXlba2V5XQorUEFTUyBrZXkgaXMgaQorUEFTUyB0ZXN0QXJyYXkubGVuZ3RoIGlzIDEz
CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2pzL2Rlc3RydWN0dXJpbmctYXNzaWdubWVudC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9qcy9kZXN0cnVjdHVyaW5nLWFzc2lnbm1lbnQtZXhwZWN0ZWQudHh0
CmluZGV4IGQyNzU4YmQyNmFiNjI1ZmE2YWY0NzdiMGMxN2JiNjZlMmM3MTQyZWYuLmI1NDA1ZDll
MzBlMTNjMzk0ODgyN2JlMzc5YmM1NWQ2MjAzNGM4YmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2pzL2Rlc3RydWN0dXJpbmctYXNzaWdubWVudC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvanMvZGVzdHJ1Y3R1cmluZy1hc3NpZ25tZW50LWV4cGVjdGVkLnR4dApAQCAtNyw1OCArNyw3
NSBAQCBQQVNTIHZhciBbYSxiXT1bJzEnLCcyJ107IHZhciByPWErYjsgciBpcyAnMTInCiBGdW5j
dGlvbiBhcyBTdHJpbmc6IChmdW5jdGlvbihbYSxiXSkgeyByZXR1cm4gYStiO30pCiBQQVNTIChm
dW5jdGlvbihbYSxiXSkgeyByZXR1cm4gYStiO30pKFsnMScsJzInXSkgaXMgJzEyJwogUEFTUyAo
ZnVuY3Rpb24gKFthLGJdKSB7IHJldHVybiBhK2I7fSkoWycxJywnMiddKSBpcyAnMTInCitQQVNT
IChbYSxiXT1bJzEnLCcyJ10pOyB2YXIgcj1hK2I7IHIgaXMgJzEyJworUEFTUyBbYSxiXT1bJzEn
LCcyJ107IHZhciByPWErYjsgciBpcyAnMTInCiBQQVNTIHZhciB7YSxifT17YTonMScsYjonMid9
OyB2YXIgcj1hK2I7IHIgaXMgJzEyJwogRnVuY3Rpb24gYXMgU3RyaW5nOiAoZnVuY3Rpb24oe2Es
Yn0pIHsgcmV0dXJuIGErYjt9KQogUEFTUyAoZnVuY3Rpb24oe2EsYn0pIHsgcmV0dXJuIGErYjt9
KSh7YTonMScsYjonMid9KSBpcyAnMTInCiBQQVNTIChmdW5jdGlvbiAoe2E6YSxiOmJ9KSB7IHJl
dHVybiBhK2I7fSkoe2E6JzEnLGI6JzInfSkgaXMgJzEyJworUEFTUyAoe2EsYn09e2E6JzEnLGI6
JzInfSk7IHZhciByPWErYjsgciBpcyAnMTInCiBQQVNTIHZhciB7YzphLGQ6Yn09e2M6JzEnLGQ6
JzInfTsgdmFyIHI9YStiOyByIGlzICcxMicKIEZ1bmN0aW9uIGFzIFN0cmluZzogKGZ1bmN0aW9u
KHtjOmEsZDpifSkgeyByZXR1cm4gYStiO30pCiBQQVNTIChmdW5jdGlvbih7YzphLGQ6Yn0pIHsg
cmV0dXJuIGErYjt9KSh7YzonMScsZDonMid9KSBpcyAnMTInCiBQQVNTIChmdW5jdGlvbiAoe2M6
YSxkOmJ9KSB7IHJldHVybiBhK2I7fSkoe2M6JzEnLGQ6JzInfSkgaXMgJzEyJworUEFTUyAoe2M6
YSxkOmJ9PXtjOicxJyxkOicyJ30pOyB2YXIgcj1hK2I7IHIgaXMgJzEyJwogUEFTUyB2YXIge2M6
YixkOmF9PXtjOicxJyxkOicyJ307IHZhciByPWErYjsgciBpcyAnMjEnCiBGdW5jdGlvbiBhcyBT
dHJpbmc6IChmdW5jdGlvbih7YzpiLGQ6YX0pIHsgcmV0dXJuIGErYjt9KQogUEFTUyAoZnVuY3Rp
b24oe2M6YixkOmF9KSB7IHJldHVybiBhK2I7fSkoe2M6JzEnLGQ6JzInfSkgaXMgJzIxJwogUEFT
UyAoZnVuY3Rpb24gKHtjOmIsZDphfSkgeyByZXR1cm4gYStiO30pKHtjOicxJyxkOicyJ30pIGlz
ICcyMScKK1BBU1MgKHtjOmIsZDphfT17YzonMScsZDonMid9KTsgdmFyIHI9YStiOyByIGlzICcy
MScKIFBBU1MgdmFyIHt0cnVlOmEsZmFsc2U6Yix1bmRlZmluZWQ6YyxudWxsOmQsaW46ZSxmb3I6
ZiwxLjU6ZywnZm9vIGJhcic6aH09e3RydWU6J2EnLGZhbHNlOidiJyx1bmRlZmluZWQ6J2MnLG51
bGw6J2QnLGluOidlJyxmb3I6J2YnLDEuNTonZycsJ2ZvbyBiYXInOidoJ307IHZhciByPWErYitj
K2QrZStmK2craDsgciBpcyAnYWJjZGVmZ2gnCiBGdW5jdGlvbiBhcyBTdHJpbmc6IChmdW5jdGlv
bih7dHJ1ZTphLGZhbHNlOmIsdW5kZWZpbmVkOmMsbnVsbDpkLGluOmUsZm9yOmYsMS41OmcsJ2Zv
byBiYXInOmh9KSB7IHJldHVybiBhK2IrYytkK2UrZitnK2g7fSkKIFBBU1MgKGZ1bmN0aW9uKHt0
cnVlOmEsZmFsc2U6Yix1bmRlZmluZWQ6YyxudWxsOmQsaW46ZSxmb3I6ZiwxLjU6ZywnZm9vIGJh
cic6aH0pIHsgcmV0dXJuIGErYitjK2QrZStmK2craDt9KSh7dHJ1ZTonYScsZmFsc2U6J2InLHVu
ZGVmaW5lZDonYycsbnVsbDonZCcsaW46J2UnLGZvcjonZicsMS41OidnJywnZm9vIGJhcic6J2gn
fSkgaXMgJ2FiY2RlZmdoJwogUEFTUyAoZnVuY3Rpb24gKHt0cnVlOmEsZmFsc2U6Yix1bmRlZmlu
ZWQ6YyxudWxsOmQsaW46ZSxmb3I6ZiwxLjU6ZywiZm9vIGJhciI6aH0pIHsgcmV0dXJuIGErYitj
K2QrZStmK2craDt9KSh7dHJ1ZTonYScsZmFsc2U6J2InLHVuZGVmaW5lZDonYycsbnVsbDonZCcs
aW46J2UnLGZvcjonZicsMS41OidnJywnZm9vIGJhcic6J2gnfSkgaXMgJ2FiY2RlZmdoJworUEFT
UyAoe3RydWU6YSxmYWxzZTpiLHVuZGVmaW5lZDpjLG51bGw6ZCxpbjplLGZvcjpmLDEuNTpnLCdm
b28gYmFyJzpofT17dHJ1ZTonYScsZmFsc2U6J2InLHVuZGVmaW5lZDonYycsbnVsbDonZCcsaW46
J2UnLGZvcjonZicsMS41OidnJywnZm9vIGJhcic6J2gnfSk7IHZhciByPWErYitjK2QrZStmK2cr
aDsgciBpcyAnYWJjZGVmZ2gnCiBQQVNTIHZhciBbe2M6YSxkOmJ9XT1be2M6JzEnLGQ6JzInfV07
IHZhciByPWErYjsgciBpcyAnMTInCiBGdW5jdGlvbiBhcyBTdHJpbmc6IChmdW5jdGlvbihbe2M6
YSxkOmJ9XSkgeyByZXR1cm4gYStiO30pCiBQQVNTIChmdW5jdGlvbihbe2M6YSxkOmJ9XSkgeyBy
ZXR1cm4gYStiO30pKFt7YzonMScsZDonMid9XSkgaXMgJzEyJwogUEFTUyAoZnVuY3Rpb24gKFt7
YzphLGQ6Yn1dKSB7IHJldHVybiBhK2I7fSkoW3tjOicxJyxkOicyJ31dKSBpcyAnMTInCitQQVNT
IChbe2M6YSxkOmJ9XT1be2M6JzEnLGQ6JzInfV0pOyB2YXIgcj1hK2I7IHIgaXMgJzEyJworUEFT
UyBbe2M6YSxkOmJ9XT1be2M6JzEnLGQ6JzInfV07IHZhciByPWErYjsgciBpcyAnMTInCiBQQVNT
IHZhciB7eDpbe2M6YSxkOmJ9XX09e3g6W3tjOicxJyxkOicyJ31dfTsgdmFyIHI9YStiOyByIGlz
ICcxMicKIEZ1bmN0aW9uIGFzIFN0cmluZzogKGZ1bmN0aW9uKHt4Olt7YzphLGQ6Yn1dfSkgeyBy
ZXR1cm4gYStiO30pCiBQQVNTIChmdW5jdGlvbih7eDpbe2M6YSxkOmJ9XX0pIHsgcmV0dXJuIGEr
Yjt9KSh7eDpbe2M6JzEnLGQ6JzInfV19KSBpcyAnMTInCiBQQVNTIChmdW5jdGlvbiAoe3g6W3tj
OmEsZDpifV19KSB7IHJldHVybiBhK2I7fSkoe3g6W3tjOicxJyxkOicyJ31dfSkgaXMgJzEyJwor
UEFTUyAoe3g6W3tjOmEsZDpifV19PXt4Olt7YzonMScsZDonMid9XX0pOyB2YXIgcj1hK2I7IHIg
aXMgJzEyJwogUEFTUyB2YXIgW2EsYl09YW5BcnJheTsgdmFyIHI9YStiOyByIGlzICcxMicKIEZ1
bmN0aW9uIGFzIFN0cmluZzogKGZ1bmN0aW9uKFthLGJdKSB7IHJldHVybiBhK2I7fSkKIFBBU1Mg
KGZ1bmN0aW9uKFthLGJdKSB7IHJldHVybiBhK2I7fSkoYW5BcnJheSkgaXMgJzEyJwogUEFTUyAo
ZnVuY3Rpb24gKFthLGJdKSB7IHJldHVybiBhK2I7fSkoYW5BcnJheSkgaXMgJzEyJworUEFTUyAo
W2EsYl09YW5BcnJheSk7IHZhciByPWErYjsgciBpcyAnMTInCitQQVNTIFthLGJdPWFuQXJyYXk7
IHZhciByPWErYjsgciBpcyAnMTInCiBQQVNTIHZhciB7YSxifT1hbkFycmF5OyB2YXIgcj1hK2I7
IHIgaXMgJzM0JwogRnVuY3Rpb24gYXMgU3RyaW5nOiAoZnVuY3Rpb24oe2EsYn0pIHsgcmV0dXJu
IGErYjt9KQogUEFTUyAoZnVuY3Rpb24oe2EsYn0pIHsgcmV0dXJuIGErYjt9KShhbkFycmF5KSBp
cyAnMzQnCiBQQVNTIChmdW5jdGlvbiAoe2E6YSxiOmJ9KSB7IHJldHVybiBhK2I7fSkoYW5BcnJh
eSkgaXMgJzM0JworUEFTUyAoe2EsYn09YW5BcnJheSk7IHZhciByPWErYjsgciBpcyAnMzQnCiBQ
QVNTIHZhciB7YTphLGI6Yn09YW5BcnJheTsgdmFyIHI9YStiOyByIGlzICczNCcKIEZ1bmN0aW9u
IGFzIFN0cmluZzogKGZ1bmN0aW9uKHthOmEsYjpifSkgeyByZXR1cm4gYStiO30pCiBQQVNTIChm
dW5jdGlvbih7YTphLGI6Yn0pIHsgcmV0dXJuIGErYjt9KShhbkFycmF5KSBpcyAnMzQnCiBQQVNT
IChmdW5jdGlvbiAoe2E6YSxiOmJ9KSB7IHJldHVybiBhK2I7fSkoYW5BcnJheSkgaXMgJzM0Jwor
UEFTUyAoe2E6YSxiOmJ9PWFuQXJyYXkpOyB2YXIgcj1hK2I7IHIgaXMgJzM0JwogUEFTUyB2YXIg
e2EsYn09YW5PYmplY3Q7IHZhciByPWErYjsgciBpcyAnMTInCiBGdW5jdGlvbiBhcyBTdHJpbmc6
IChmdW5jdGlvbih7YSxifSkgeyByZXR1cm4gYStiO30pCiBQQVNTIChmdW5jdGlvbih7YSxifSkg
eyByZXR1cm4gYStiO30pKGFuT2JqZWN0KSBpcyAnMTInCiBQQVNTIChmdW5jdGlvbiAoe2E6YSxi
OmJ9KSB7IHJldHVybiBhK2I7fSkoYW5PYmplY3QpIGlzICcxMicKK1BBU1MgKHthLGJ9PWFuT2Jq
ZWN0KTsgdmFyIHI9YStiOyByIGlzICcxMicKIFBBU1MgdmFyIHthOmEsYjpifT1hbk9iamVjdDsg
dmFyIHI9YStiOyByIGlzICcxMicKIEZ1bmN0aW9uIGFzIFN0cmluZzogKGZ1bmN0aW9uKHthOmEs
YjpifSkgeyByZXR1cm4gYStiO30pCiBQQVNTIChmdW5jdGlvbih7YTphLGI6Yn0pIHsgcmV0dXJu
IGErYjt9KShhbk9iamVjdCkgaXMgJzEyJwogUEFTUyAoZnVuY3Rpb24gKHthOmEsYjpifSkgeyBy
ZXR1cm4gYStiO30pKGFuT2JqZWN0KSBpcyAnMTInCitQQVNTICh7YTphLGI6Yn09YW5PYmplY3Qp
OyB2YXIgcj1hK2I7IHIgaXMgJzEyJwogUEFTUyB2YXIgezA6YSwxOmJ9PWFuT2JqZWN0OyB2YXIg
cj1hK2I7IHIgaXMgJzM0JwogRnVuY3Rpb24gYXMgU3RyaW5nOiAoZnVuY3Rpb24oezA6YSwxOmJ9
KSB7IHJldHVybiBhK2I7fSkKIFBBU1MgKGZ1bmN0aW9uKHswOmEsMTpifSkgeyByZXR1cm4gYSti
O30pKGFuT2JqZWN0KSBpcyAnMzQnCiBQQVNTIChmdW5jdGlvbiAoezA6YSwxOmJ9KSB7IHJldHVy
biBhK2I7fSkoYW5PYmplY3QpIGlzICczNCcKK1BBU1MgKHswOmEsMTpifT1hbk9iamVjdCk7IHZh
ciByPWErYjsgciBpcyAnMzQnCiBQQVNTIHZhciB7J2EnOmEsJ2InOmJ9PWFuT2JqZWN0OyB2YXIg
cj1hK2I7IHIgaXMgJzEyJwogRnVuY3Rpb24gYXMgU3RyaW5nOiAoZnVuY3Rpb24oeydhJzphLCdi
JzpifSkgeyByZXR1cm4gYStiO30pCiBQQVNTIChmdW5jdGlvbih7J2EnOmEsJ2InOmJ9KSB7IHJl
dHVybiBhK2I7fSkoYW5PYmplY3QpIGlzICcxMicKIFBBU1MgKGZ1bmN0aW9uICh7ImEiOmEsImIi
OmJ9KSB7IHJldHVybiBhK2I7fSkoYW5PYmplY3QpIGlzICcxMicKK1BBU1MgKHsnYSc6YSwnYic6
Yn09YW5PYmplY3QpOyB2YXIgcj1hK2I7IHIgaXMgJzEyJwogUEFTUyBhK2IgaXMgJzExMjInCiBQ
QVNTIGErYiBpcyAnMjIxMScKIFBBU1MgdGVzdERlY29uc3RydWN0QXJncygnMScsICcyJykgaXMg
JzEyJwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcGFyc2VyLXN5bnRheC1jaGVjay1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9wYXJzZXItc3ludGF4LWNoZWNrLWV4cGVjdGVkLnR4
dAppbmRleCAwMzliMjMwNTczNDI2MzYyZDE3NzU5NGYzMWE4NDU2ZGQ4MGVhNTdkLi43NWE0YWIx
NTVkZWVkMDQzNzliMGZhNDY3OWVjMWZjZDYzMGNiYzc4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9qcy9wYXJzZXItc3ludGF4LWNoZWNrLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9q
cy9wYXJzZXItc3ludGF4LWNoZWNrLWV4cGVjdGVkLnR4dApAQCAtNjE1LDYgKzYxNSwxMCBAQCBQ
QVNTIFZhbGlkOiAgICJmb3IgKHZhciBbb2ZdIGluIG9mKXt9IgogUEFTUyBWYWxpZDogICAiZnVu
Y3Rpb24gZigpIHsgZm9yICh2YXIgW29mXSBpbiBvZil7fSB9IgogUEFTUyBWYWxpZDogICAiZm9y
ICh2YXIge29mfSBpbiBvZil7fSIKIFBBU1MgVmFsaWQ6ICAgImZ1bmN0aW9uIGYoKSB7IGZvciAo
dmFyIHtvZn0gaW4gb2Ype30gfSIKK1BBU1MgVmFsaWQ6ICAgImZvciAoW29mXSBpbiBvZil7fSIK
K1BBU1MgVmFsaWQ6ICAgImZ1bmN0aW9uIGYoKSB7IGZvciAoW29mXSBpbiBvZil7fSB9IgorUEFT
UyBWYWxpZDogICAiZm9yICh7b2Z9IGluIG9mKXt9IC8qKi8iCitQQVNTIFZhbGlkOiAgICJmdW5j
dGlvbiBmKCkgeyBmb3IgKHtvZn0gaW4gb2Ype30gLyoqLyB9IgogUEFTUyBJbnZhbGlkOiAiZm9y
IChvZiBvZiBvZiBvZil7fSIKIFBBU1MgSW52YWxpZDogImZ1bmN0aW9uIGYoKSB7IGZvciAob2Yg
b2Ygb2Ygb2Ype30gfSIKIFBBU1MgSW52YWxpZDogImZvciAob2Ygb2Y7IG9mOyBvZil7fSIKQEAg
LTY3OCw4ICs2ODIsMTYgQEAgUEFTUyBWYWxpZDogICAiWy4uLmJhciwsLCxdIgogUEFTUyBWYWxp
ZDogICAiZnVuY3Rpb24gZigpIHsgWy4uLmJhciwsLCxdIH0iCiBQQVNTIFZhbGlkOiAgICJbLCws
LC4uLmJhcl0iCiBQQVNTIFZhbGlkOiAgICJmdW5jdGlvbiBmKCkgeyBbLCwsLC4uLmJhcl0gfSIK
LVBBU1MgVmFsaWQ6ICAgIih7eDogMX0pIgotUEFTUyBWYWxpZDogICAiZnVuY3Rpb24gZigpIHsg
KHt4OiAxfSkgfSIKK1BBU1MgVmFsaWQ6ICAgIih7MTogeH0pIgorUEFTUyBWYWxpZDogICAiZnVu
Y3Rpb24gZigpIHsgKHsxOiB4fSkgfSIKK1BBU1MgVmFsaWQ6ICAgIih7MTogeH09MSkiCitQQVNT
IFZhbGlkOiAgICJmdW5jdGlvbiBmKCkgeyAoezE6IHh9PTEpIH0iCitQQVNTIFZhbGlkOiAgICJ2
YXIgezE6eH09MSIKK1BBU1MgVmFsaWQ6ICAgImZ1bmN0aW9uIGYoKSB7IHZhciB7MTp4fT0xIH0i
CitQQVNTIFZhbGlkOiAgICJbeF09MSIKK1BBU1MgVmFsaWQ6ICAgImZ1bmN0aW9uIGYoKSB7IFt4
XT0xIH0iCitQQVNTIFZhbGlkOiAgICJ2YXIgW3hdPTEiCitQQVNTIFZhbGlkOiAgICJmdW5jdGlv
biBmKCkgeyB2YXIgW3hdPTEgfSIKIFBBU1MgVmFsaWQ6ICAgIih7W3hdOiAxfSkiCiBQQVNTIFZh
bGlkOiAgICJmdW5jdGlvbiBmKCkgeyAoe1t4XTogMX0pIH0iCiBQQVNTIEludmFsaWQ6ICIoe2dl
dCBbeF0oKXt9fSkiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYmFz
aWMtZm9yLW9mLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Jhc2ljLWZvci1vZi5q
cwppbmRleCA1N2JlYmUyZTZmMzdhMTllOWNhYTc2YzFjZDMyNmI0YWRmNzM0NDdjLi5kMTI0MzE0
YTBmMjFiN2IxY2Y5NjU4ZTYyNDdhNjJmZGFjZjc4YTgzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9qcy9zY3JpcHQtdGVzdHMvYmFzaWMtZm9yLW9mLmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3Nj
cmlwdC10ZXN0cy9iYXNpYy1mb3Itb2YuanMKQEAgLTU0LDMgKzU0LDIxIEBAIGZvciAodmFyIFtr
ZXksIHZhbHVlXSBvZiB0ZXN0QXJyYXkuZW50cmllcygpKSB7CiAgICAgICAgIHRlc3RBcnJheVs0
XSA9IDUKIH0KIHNob3VsZEJlKCJ0ZXN0QXJyYXkubGVuZ3RoIiwgU3RyaW5nKGkpKQorCisKK3Zh
ciBpID0gMDsKK2ZvciAoW2tleSwgdmFsdWVdIG9mIHRlc3RBcnJheS5lbnRyaWVzKCkpIHsKKyAg
ICBzaG91bGRCZSgidmFsdWUiLCAidGVzdEFycmF5W2tleV0iKQorICAgIHNob3VsZEJlKCJrZXki
LCAiaSIpCisgICAgaSsrCisgICAgaWYgKGkgJSAyID09IDApCisgICAgICAgIHRlc3RBcnJheVtp
XSAqPSAyOworICAgIGlmIChpIDwgNCkKKyAgICAgICAgdGVzdEFycmF5LnB1c2godGVzdEFycmF5
Lmxlbmd0aCkKKyAgICBpZiAoaSA9PSA0KQorICAgICAgICBkZWxldGUgdGVzdEFycmF5WzRdCisg
ICAgaWYgKGkgPT0gNSkKKyAgICAgICAgdGVzdEFycmF5WzRdID0gNQorfQorc2hvdWxkQmUoInRl
c3RBcnJheS5sZW5ndGgiLCBTdHJpbmcoaSkpCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L3NjcmlwdC10ZXN0cy9kZXN0cnVjdHVyaW5nLWFzc2lnbm1lbnQuanMgYi9MYXlvdXRUZXN0cy9q
cy9zY3JpcHQtdGVzdHMvZGVzdHJ1Y3R1cmluZy1hc3NpZ25tZW50LmpzCmluZGV4IGUwM2E5MTY0
NWEwMjc5MDJmNDY1YTI2NDhhMzI2YzJjMTJjMjA3NDAuLmUwNjdkODUwY2NhZDNjNGI4MzE3NDcx
MmQyMmJiNGJhODk5OWQwMmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0
cy9kZXN0cnVjdHVyaW5nLWFzc2lnbm1lbnQuanMKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0
LXRlc3RzL2Rlc3RydWN0dXJpbmctYXNzaWdubWVudC5qcwpAQCAtNyw2ICs3LDkgQEAgZnVuY3Rp
b24gdGVzdERlc3RydWN0dXJpbmcocGF0dGVybiwgZXhwcmVzc2lvbiwgcmVzdWx0LCBleHByKSB7
CiAgICAgZGVidWcoIkZ1bmN0aW9uIGFzIFN0cmluZzogIiArIGZ1bmN0aW9uU3RyaW5nKTsKICAg
ICBzaG91bGRCZShmdW5jdGlvblN0cmluZyArICIoIiArIGV4cHJlc3Npb24gKyAiKSIsIHJlc3Vs
dCk7CiAgICAgc2hvdWxkQmUoIigiICsgZXZhbChmdW5jdGlvblN0cmluZykgKyAiKSgiICsgZXhw
cmVzc2lvbiArICIpIiwgcmVzdWx0KTsKKyAgICBzaG91bGRCZSgiKCIgKyBwYXR0ZXJuICsgIj0i
ICsgZXhwcmVzc2lvbiArICIpOyB2YXIgcj0iK2V4cHIrIjsgciIsIHJlc3VsdCk7CisgICAgaWYg
KHBhdHRlcm5bMF0gPT0gJ1snKQorICAgICAgICBzaG91bGRCZSgiIiArIHBhdHRlcm4gKyAiPSIg
KyBleHByZXNzaW9uICsgIjsgdmFyIHI9IitleHByKyI7IHIiLCByZXN1bHQpOwogfQogCiB0ZXN0
RGVzdHJ1Y3R1cmluZygiW2EsYl0iLCAiWycxJywnMiddIiwgIicxMiciKTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9wYXJzZXItc3ludGF4LWNoZWNrLmpzIGIvTGF5
b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3BhcnNlci1zeW50YXgtY2hlY2suanMKaW5kZXggNmY1
ZGQ1MWRlNWJmZGZlNzdiOWU2NTU1NjgzMjA1OTAzMzlmMDhlYy4uMGFmNjEyOTJlNmQyNDNkYTRi
YmRlN2FlMTU4Zjg2MGM5M2I1NmYxYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0
LXRlc3RzL3BhcnNlci1zeW50YXgtY2hlY2suanMKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0
LXRlc3RzL3BhcnNlci1zeW50YXgtY2hlY2suanMKQEAgLTM4Nyw2ICszODcsOCBAQCB2YWxpZCgi
Zm9yIChvZltvZl0gaW4gb2Ype30iKQogaW52YWxpZCgiZm9yICh2YXIgb2Zbb2ZdIGluIG9mKXt9
IikKIHZhbGlkKCJmb3IgKHZhciBbb2ZdIGluIG9mKXt9IikKIHZhbGlkKCJmb3IgKHZhciB7b2Z9
IGluIG9mKXt9IikKK3ZhbGlkKCJmb3IgKFtvZl0gaW4gb2Ype30iKQordmFsaWQoImZvciAoe29m
fSBpbiBvZil7fSAvKiovIikKIAogCiBpbnZhbGlkKCJmb3IgKG9mIG9mIG9mIG9mKXt9IikKQEAg
LTQyMiw3ICs0MjQsMTEgQEAgdmFsaWQoIlthLCAuLi5iYXJdIikKIHZhbGlkKCJbLi4uYmFyLCBh
XSIpCiB2YWxpZCgiWy4uLmJhciwsLCxdIikKIHZhbGlkKCJbLCwsLC4uLmJhcl0iKQotdmFsaWQo
Iih7eDogMX0pIikKK3ZhbGlkKCIoezE6IHh9KSIpCit2YWxpZCgiKHsxOiB4fT0xKSIpCit2YWxp
ZCgidmFyIHsxOnh9PTEiKQordmFsaWQoIlt4XT0xIikKK3ZhbGlkKCJ2YXIgW3hdPTEiKQogdmFs
aWQoIih7W3hdOiAxfSkiKQogaW52YWxpZCgiKHtnZXQgW3hdKCl7fX0pIikKIGludmFsaWQoIih7
c2V0IFt4XSgpe319KSIpCg==
</data>
<flag name="review"
          id="239729"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>