<?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>146206</bug_id>
          
          <creation_ts>2015-06-22 07:40:12 -0700</creation_ts>
          <short_desc>[ES6] Support rest element in destructuring assignments</short_desc>
          <delta_ts>2015-06-25 20:14:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1103837</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-22 07:40:12 -0700</bug_when>
    <thetext>[ES6] Support rest element in destructuring assignments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104026</commentid>
    <comment_count>1</comment_count>
      <attachid>255394</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-22 23:04:32 -0700</bug_when>
    <thetext>Created attachment 255394
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104027</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-22 23:06:24 -0700</bug_when>
    <thetext>Attachment 255394 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/Nodes.h:1794:  Missing space before {  [whitespace/braces] [5]
Total errors found: 1 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104042</commentid>
    <comment_count>3</comment_count>
      <attachid>255394</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-22 23:49:18 -0700</bug_when>
    <thetext>Comment on attachment 255394
Patch

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

&gt; Source/JavaScriptCore/parser/Nodes.h:1794
&gt; +            m_targetPatterns.append(Entry{ bindingType, node, defaultValue });

Styling warns it, but I think it&apos;s ok. What do you think about it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104043</commentid>
    <comment_count>4</comment_count>
      <attachid>255394</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-06-22 23:51:40 -0700</bug_when>
    <thetext>Comment on attachment 255394
Patch

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

&gt;&gt; Source/JavaScriptCore/parser/Nodes.h:1794
&gt;&gt; +            m_targetPatterns.append(Entry{ bindingType, node, defaultValue });
&gt; 
&gt; Styling warns it, but I think it&apos;s ok. What do you think about it?

I think the style script doesn’t understand the code, but I agree it’s OK. However, we can write this an even better way now that we have improved Vector; the type can be omitted:

    m_targetPatterns.append({ bindingType, node, defaultValue });</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104044</commentid>
    <comment_count>5</comment_count>
      <attachid>255394</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-22 23:52:56 -0700</bug_when>
    <thetext>Comment on attachment 255394
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/parser/Nodes.h:1794
&gt;&gt;&gt; +            m_targetPatterns.append(Entry{ bindingType, node, defaultValue });
&gt;&gt; 
&gt;&gt; Styling warns it, but I think it&apos;s ok. What do you think about it?
&gt; 
&gt; I think the style script doesn’t understand the code, but I agree it’s OK. However, we can write this an even better way now that we have improved Vector; the type can be omitted:
&gt; 
&gt;     m_targetPatterns.append({ bindingType, node, defaultValue });

Looks nice. I&apos;ll update it ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104046</commentid>
    <comment_count>6</comment_count>
      <attachid>255397</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-22 23:54:42 -0700</bug_when>
    <thetext>Created attachment 255397
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104244</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-23 16:55:14 -0700</bug_when>
    <thetext>The patch is ready.
Could anyone take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104839</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-25 19:07:46 -0700</bug_when>
    <thetext>Could you take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104840</commentid>
    <comment_count>9</comment_count>
      <attachid>255397</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2015-06-25 19:12:37 -0700</bug_when>
    <thetext>Comment on attachment 255397
Patch

R=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104842</commentid>
    <comment_count>10</comment_count>
      <attachid>255397</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-25 19:23:45 -0700</bug_when>
    <thetext>Comment on attachment 255397
Patch

Thank you for your review, oliver@!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104855</commentid>
    <comment_count>11</comment_count>
      <attachid>255397</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-25 20:14:16 -0700</bug_when>
    <thetext>Comment on attachment 255397
Patch

Clearing flags on attachment: 255397

Committed r185981: &lt;http://trac.webkit.org/changeset/185981&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104856</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-25 20:14:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255394</attachid>
            <date>2015-06-22 23:04:32 -0700</date>
            <delta_ts>2015-06-22 23:54:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146206-20150623150349.patch</filename>
            <type>text/plain</type>
            <size>23905</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1ODU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
ZDk2ZTg4OWJiMTgwZjdiYmFiZDQ4MjU1N2U4NjEyN2U5NWUzOGRlLi43M2VhOWI3YzY0N2FhOTVl
NmI3NTYwZjAwMzkxMzMwNDhlN2ZlMThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwzOCBAQAogMjAxNS0wNi0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBbRVM2XSBTdXBwb3J0IHJlc3QgZWxlbWVudCBpbiBkZXN0cnVjdHVy
aW5nIGFzc2lnbm1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDYyMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGVuYWJsZXMgcmVzdCBlbGVtZW50ICguLi5yZXN0KSBpbiBhcnJh
eSBiaW5kaW5nIHBhdHRlcm5zLgorICAgICAgICBJdCBnZW5lcmF0ZXMgYXJyYXkgZnJvbSB0aGUg
aXRlcmFibGVzLgorICAgICAgICBJbiB2YXJpYWJsZSBkZWNsYXJhdGlvbnMgYW5kIHBhcmFtZXRl
cnMsIGBbLi4uaWRlbnRpZmllcl1gIGZvcm0gaXMgb25seSBhbGxvd2VkLAorICAgICAgICB3aGls
ZSBleHByZXNzaW9ucyBjYW4gdGFrZSBgWy4uLlsuLi5yZXN0XV1gIHBhdHRlcm4uCisKKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwOgorICAgICAgICAoSlNDOjpBcnJheVBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUpOgorICAgICAg
ICAoSlNDOjpBcnJheVBhdHRlcm5Ob2RlOjp0b1N0cmluZyk6CisgICAgICAgICogcGFyc2VyL0FT
VEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6YXBwZW5kQXJyYXlQYXR0ZXJu
U2tpcEVudHJ5KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6YXBwZW5kQXJyYXlQYXR0ZXJu
RW50cnkpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjphcHBlbmRBcnJheVBhdHRlcm5SZXN0
RW50cnkpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpBcnJheVBh
dHRlcm5Ob2RlOjphcHBlbmRJbmRleCk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZURlY29uc3RydWN0aW9uUGF0dGVy
bik6CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3lu
dGF4Q2hlY2tlcjo6b3BlcmF0b3JTdGFja1BvcCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3Jl
c3QtZWxlbWVudHMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hv
dWxkVGhyb3cpOgorCisyMDE1LTA2LTIyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorCiAgICAgICAgIFtFUzZdIEFsbG93IHRyYWlsaW5nIGNvbW1hIGluIEFycmF5Qmlu
ZGluZ1BhdHRlcm4gYW5kIE9iamVjdEJpbmRpbmdQYXR0ZXJuCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDYxOTIKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRl
eCAxYzg4MTgxNjc2NTJlYWEyNWVjNWE4ZDUwNTk0MzkwZmIzNmE4NzEyLi44MjdkMDVlNGFhMTAy
NDIzNDMwYjY2ODNhZGYwMGM5YWIzNThjOTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMjc4OSwx
OCArMjc4OSw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbihUaHJv
d2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRXhwcmVzc2lvCiAKICAgICAgICAgZW1pdExhYmVs
KHNjb3BlLT5jb250aW51ZVRhcmdldCgpKTsKICAgICAgICAgewotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0ID0gZW1pdEdldEJ5SWQobmV3VGVt
cG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkubmV4dCk7Ci0gICAgICAg
ICAgICAgICAgQ2FsbEFyZ3VtZW50cyBuZXh0QXJndW1lbnRzKCp0aGlzLCBudWxscHRyKTsKLSAg
ICAgICAgICAgICAgICBlbWl0TW92ZShuZXh0QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVy
YXRvci5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgZW1pdENhbGwodmFsdWUuZ2V0KCksIG5leHQu
Z2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgbmV4dEFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwg
bm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IHR5cGVJc09iamVjdCA9
IG5ld0xhYmVsKCk7Ci0gICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0
KG5ld1RlbXBvcmFyeSgpLCB2YWx1ZS5nZXQoKSksIHR5cGVJc09iamVjdC5nZXQoKSk7Ci0gICAg
ICAgICAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgiSXRlcmF0b3IgcmVz
dWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiIpKTsKLSAgICAgICAgICAgICAgICBlbWl0
TGFiZWwodHlwZUlzT2JqZWN0LmdldCgpKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVt
aXRJdGVyYXRvck5leHQodmFsdWUuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCBub2RlKTsKICAgICAg
ICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCB2YWx1ZS5n
ZXQoKSwgcHJvcGVydHlOYW1lcygpLmRvbmUpLCBsb29wRG9uZS5nZXQoKSk7CiAgICAgICAgICAg
ICBlbWl0R2V0QnlJZCh2YWx1ZS5nZXQoKSwgdmFsdWUuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS52
YWx1ZSk7CiAgICAgICAgICAgICBlbWl0SnVtcChsb29wU3RhcnQuZ2V0KCkpOwpAQCAtMjkzMyw2
ICsyOTIyLDIzIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXNVbmRlZmlu
ZWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpCiAgICAgcmV0dXJuIGRzdDsKIH0K
IAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHQoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGEqIG5vZGUpCit7CisgICAgeworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dCA9
IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvciwgcHJvcGVydHlOYW1lcygpLm5l
eHQpOworICAgICAgICBDYWxsQXJndW1lbnRzIG5leHRBcmd1bWVudHMoKnRoaXMsIG51bGxwdHIp
OworICAgICAgICBlbWl0TW92ZShuZXh0QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRv
cik7CisgICAgICAgIGVtaXRDYWxsKGRzdCwgbmV4dC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9u
LCBuZXh0QXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUt
PmRpdm90RW5kKCkpOworICAgIH0KKyAgICB7CisgICAgICAgIFJlZlB0cjxMYWJlbD4gdHlwZUlz
T2JqZWN0ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0
KG5ld1RlbXBvcmFyeSgpLCBkc3QpLCB0eXBlSXNPYmplY3QuZ2V0KCkpOworICAgICAgICBlbWl0
VGhyb3dUeXBlRXJyb3IoQVNDSUlMaXRlcmFsKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlz
IG5vdCBhbiBvYmplY3QuIikpOworICAgICAgICBlbWl0TGFiZWwodHlwZUlzT2JqZWN0LmdldCgp
KTsKKyAgICB9CisgICAgcmV0dXJuIGRzdDsKK30KKwogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEl0ZXJhdG9yQ2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4
cHJlc3Npb25EYXRhKiBub2RlKQogewogICAgIFJlZlB0cjxMYWJlbD4gZG9uZSA9IG5ld0xhYmVs
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKaW5kZXggNWQ3NjhjZjMyODUyNmY1OWFkY2I1NTBmYWZiYmIxOGQzNjhh
YzYyZS4uZjhjZmM3YWQwNjNmZjYzZjQ2MjgzNzYxZjEwMjZmOTFiNDAwZGRjNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaApAQCAtNTQ2LDYgKzU0Niw3IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc09iamVj
dChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYyk7CiAgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRJc1VuZGVmaW5lZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYyk7CiAKKyAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdEl0ZXJhdG9yTmV4dChSZWdpc3RlcklEKiBkc3QsIFJlZ2lz
dGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSk7CiAg
ICAgICAgIHZvaWQgZW1pdEl0ZXJhdG9yQ2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0
IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKTsKIAogICAgICAgICB2b2lkIGVtaXRSZWFk
T25seUV4Y2VwdGlvbklmTmVlZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggODFhNTgxOThhNDZkNmNlN2EzODEx
MGRjNThlZTRhMDEzNWFjYTM0Mi4uOWVlZTMzMmFkODhjMTlmZjU4ZTFkMGU3OTcxNTM5OWZiNTMz
NjcyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcApAQCAtMzE0Niw0MyArMzE0Niw2NiBAQCB2b2lkIEFycmF5UGF0dGVybk5v
ZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBy
aHMpCiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZG9uZTsKICAgICBmb3IgKGF1dG8mIHRhcmdl
dCA6IG1fdGFyZ2V0UGF0dGVybnMpIHsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVl
ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotCi0gICAgICAgIFJlZlB0cjxMYWJlbD4gaXRl
cmF0aW9uU2tpcHBlZCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwotICAgICAgICBpZiAoIWRvbmUp
Ci0gICAgICAgICAgICBkb25lID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICBl
bHNlCisgICAgICAgIHN3aXRjaCAodGFyZ2V0LmJpbmRpbmdUeXBlKSB7CisgICAgICAgIGNhc2Ug
QmluZGluZ1R5cGU6OkVsaXNpb246CisgICAgICAgIGNhc2UgQmluZGluZ1R5cGU6OkVsZW1lbnQ6
IHsKKyAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gaXRlcmF0aW9uU2tpcHBlZCA9IGdlbmVyYXRv
ci5uZXdMYWJlbCgpOworICAgICAgICAgICAgaWYgKCFkb25lKQorICAgICAgICAgICAgICAgIGRv
bmUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGRvbmUuZ2V0KCksIGl0ZXJhdGlvblNr
aXBwZWQuZ2V0KCkpOworCisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEl0ZXJh
dG9yTmV4dCh2YWx1ZS5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHRoaXMpOworICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRHZXRCeUlkKGRvbmUuZ2V0KCksIHZhbHVlLmdldCgpLCBnZW5lcmF0b3Iu
cHJvcGVydHlOYW1lcygpLmRvbmUpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZU
cnVlKGRvbmUuZ2V0KCksIGl0ZXJhdGlvblNraXBwZWQuZ2V0KCkpOworICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRHZXRCeUlkKHZhbHVlLmdldCgpLCB2YWx1ZS5nZXQoKSwgZ2VuZXJhdG9yLnBy
b3BlcnR5TmFtZXMoKS52YWx1ZSk7CiAKLSAgICAgICAgewotICAgICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IG5leHQgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpLCBpdGVyYXRvci5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5uZXh0KTsK
LSAgICAgICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFyZ3VtZW50cyhnZW5lcmF0b3IsIG51bGxw
dHIpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKG5leHRBcmd1bWVudHMudGhpc1Jl
Z2lzdGVyKCksIGl0ZXJhdG9yLmdldCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2Fs
bCh2YWx1ZS5nZXQoKSwgbmV4dC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBuZXh0QXJndW1l
bnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgICAgICB9Ci0gICAg
ICAgIHsKLSAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gdHlwZUlzT2JqZWN0ID0gZ2VuZXJhdG9y
Lm5ld0xhYmVsKCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoZ2VuZXJh
dG9yLmVtaXRJc09iamVjdChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHZhbHVlLmdldCgpKSwg
dHlwZUlzT2JqZWN0LmdldCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0VGhyb3dUeXBl
RXJyb3IoQVNDSUlMaXRlcmFsKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBv
YmplY3QuIikpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbCh0eXBlSXNPYmplY3Qu
Z2V0KCkpOworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gdmFs
dWVJc1NldCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOworICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0SnVtcCh2YWx1ZUlzU2V0LmdldCgpKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdExhYmVsKGl0ZXJhdGlvblNraXBwZWQuZ2V0KCkpOworICAgICAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0TG9hZCh2YWx1ZS5nZXQoKSwganNVbmRlZmluZWQoKSk7CisgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRMYWJlbCh2YWx1ZUlzU2V0LmdldCgpKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKHRhcmdldC5iaW5kaW5nVHlwZSA9PSBCaW5kaW5nVHlwZTo6RWxl
bWVudCkgeworICAgICAgICAgICAgICAgIGlmICh0YXJnZXQuZGVmYXVsdFZhbHVlKQorICAgICAg
ICAgICAgICAgICAgICBhc3NpZ25EZWZhdWx0VmFsdWVJZlVuZGVmaW5lZChnZW5lcmF0b3IsIHZh
bHVlLmdldCgpLCB0YXJnZXQuZGVmYXVsdFZhbHVlKTsKKyAgICAgICAgICAgICAgICB0YXJnZXQu
cGF0dGVybi0+YmluZFZhbHVlKGdlbmVyYXRvciwgdmFsdWUuZ2V0KCkpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICB7CisgICAgICAgIGNh
c2UgQmluZGluZ1R5cGU6OlJlc3RFbGVtZW50OiB7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gYXJyYXkgPSBnZW5lcmF0b3IuZW1pdE5ld0FycmF5KGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKSwgMCwgMCk7CisKKyAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gaXRlcmF0aW9uRG9uZSA9
IGdlbmVyYXRvci5uZXdMYWJlbCgpOworICAgICAgICAgICAgaWYgKCFkb25lKQorICAgICAgICAg
ICAgICAgIGRvbmUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGRvbmUuZ2V0KCksIGl0
ZXJhdGlvbkRvbmUuZ2V0KCkpOworCisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaW5k
ZXggPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dExvYWQoaW5kZXguZ2V0KCksIGpzTnVtYmVyKDApKTsKKyAgICAgICAgICAgIFJlZlB0cjxMYWJl
bD4gbG9vcFN0YXJ0ID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CisgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdExhYmVsKGxvb3BTdGFydC5nZXQoKSk7CisKKyAgICAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0SXRlcmF0b3JOZXh0KHZhbHVlLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgdGhp
cyk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZG9uZS5nZXQoKSwgdmFsdWUu
Z2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuZG9uZSk7Ci0gICAgICAgICAgICBSZWZQ
dHI8TGFiZWw+IHZhbHVlSXNTZXQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKLSAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShkb25lLmdldCgpLCBpdGVyYXRpb25Ta2lwcGVkLmdl
dCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShkb25lLmdldCgpLCBp
dGVyYXRpb25Eb25lLmdldCgpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZCh2
YWx1ZS5nZXQoKSwgdmFsdWUuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkudmFsdWUp
OwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKHZhbHVlSXNTZXQuZ2V0KCkpOwotICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChpdGVyYXRpb25Ta2lwcGVkLmdldCgpKTsKLSAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZCh2YWx1ZS5nZXQoKSwganNVbmRlZmluZWQoKSk7
Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHZhbHVlSXNTZXQuZ2V0KCkpOwotICAg
ICAgICB9CiAKLSAgICAgICAgaWYgKCF0YXJnZXQucGF0dGVybikKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICBpZiAodGFyZ2V0LmRlZmF1bHRWYWx1ZSkKLSAgICAgICAgICAgIGFzc2ln
bkRlZmF1bHRWYWx1ZUlmVW5kZWZpbmVkKGdlbmVyYXRvciwgdmFsdWUuZ2V0KCksIHRhcmdldC5k
ZWZhdWx0VmFsdWUpOwotICAgICAgICB0YXJnZXQucGF0dGVybi0+YmluZFZhbHVlKGdlbmVyYXRv
ciwgdmFsdWUuZ2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeVZh
bChhcnJheS5nZXQoKSwgaW5kZXguZ2V0KCksIHZhbHVlLmdldCgpKTsKKyAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0SW5jKGluZGV4LmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
SnVtcChsb29wU3RhcnQuZ2V0KCkpOworCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVs
KGl0ZXJhdGlvbkRvbmUuZ2V0KCkpOworICAgICAgICAgICAgdGFyZ2V0LnBhdHRlcm4tPmJpbmRW
YWx1ZShnZW5lcmF0b3IsIGFycmF5LmdldCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIH0KICAgICB9CiAKICAgICBSZWZQdHI8TGFiZWw+IGl0ZXJhdG9yQ2xvc2Vk
ID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CkBAIC0zMjI5LDEzICszMjUyLDI0IEBAIHZvaWQgQXJy
YXlQYXR0ZXJuTm9kZTo6dG9TdHJpbmcoU3RyaW5nQnVpbGRlciYgYnVpbGRlcikgY29uc3QKIHsK
ICAgICBidWlsZGVyLmFwcGVuZCgnWycpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90
YXJnZXRQYXR0ZXJucy5zaXplKCk7IGkrKykgewotICAgICAgICBpZiAoIW1fdGFyZ2V0UGF0dGVy
bnNbaV0ucGF0dGVybikgeworICAgICAgICBjb25zdCBhdXRvJiB0YXJnZXQgPSBtX3RhcmdldFBh
dHRlcm5zW2ldOworCisgICAgICAgIHN3aXRjaCAodGFyZ2V0LmJpbmRpbmdUeXBlKSB7CisgICAg
ICAgIGNhc2UgQmluZGluZ1R5cGU6OkVsaXNpb246CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnLCcpOwotICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBjYXNlIEJpbmRpbmdUeXBlOjpFbGVtZW50OgorICAgICAgICAgICAgdGFyZ2V0LnBhdHRl
cm4tPnRvU3RyaW5nKGJ1aWxkZXIpOworICAgICAgICAgICAgaWYgKGkgPCBtX3RhcmdldFBhdHRl
cm5zLnNpemUoKSAtIDEpCisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJywnKTsKKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQmluZGluZ1R5cGU6OlJlc3RFbGVtZW50
OgorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIi4uLiIpOworICAgICAgICAgICAgdGFyZ2V0
LnBhdHRlcm4tPnRvU3RyaW5nKGJ1aWxkZXIpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KLSAgICAgICAgbV90YXJnZXRQYXR0ZXJuc1tpXS5wYXR0ZXJuLT50b1N0cmluZyhidWlsZGVy
KTsKLSAgICAgICAgaWYgKGkgPCBtX3RhcmdldFBhdHRlcm5zLnNpemUoKSAtIDEpCi0gICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZCgnLCcpOwogICAgIH0KICAgICBidWlsZGVyLmFwcGVuZCgnXScp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCBjM2Jl
NjBkYWJlODZlNDk3MmRmMjQxYzgzNDhkZjUwNDliMGY4ZDJkLi40NzE1Yjg2YWJiYTA3ZjAxNjI0
OGRjMWQxZTRjN2UzMjVlZTIzMmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FT
VEJ1aWxkZXIuaApAQCAtNzM3LDEyICs3MzcsMTcgQEAgY2xhc3MgQVNUQnVpbGRlciB7CiAgICAg
CiAgICAgdm9pZCBhcHBlbmRBcnJheVBhdHRlcm5Ta2lwRW50cnkoQXJyYXlQYXR0ZXJuIG5vZGUs
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24pCiAgICAgewotICAgICAgICBub2RlLT5h
cHBlbmRJbmRleChsb2NhdGlvbiwgMCwgbnVsbHB0cik7CisgICAgICAgIG5vZGUtPmFwcGVuZElu
ZGV4KEFycmF5UGF0dGVybk5vZGU6OkJpbmRpbmdUeXBlOjpFbGlzaW9uLCBsb2NhdGlvbiwgMCwg
bnVsbHB0cik7CiAgICAgfQogCiAgICAgdm9pZCBhcHBlbmRBcnJheVBhdHRlcm5FbnRyeShBcnJh
eVBhdHRlcm4gbm9kZSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRGVjb25zdHJ1
Y3Rpb25QYXR0ZXJuIHBhdHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBkZWZhdWx0VmFsdWUpCiAgICAg
ewotICAgICAgICBub2RlLT5hcHBlbmRJbmRleChsb2NhdGlvbiwgcGF0dGVybi5nZXQoKSwgZGVm
YXVsdFZhbHVlKTsKKyAgICAgICAgbm9kZS0+YXBwZW5kSW5kZXgoQXJyYXlQYXR0ZXJuTm9kZTo6
QmluZGluZ1R5cGU6OkVsZW1lbnQsIGxvY2F0aW9uLCBwYXR0ZXJuLmdldCgpLCBkZWZhdWx0VmFs
dWUpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kQXJyYXlQYXR0ZXJuUmVzdEVudHJ5KEFycmF5
UGF0dGVybiBub2RlLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBEZWNvbnN0cnVj
dGlvblBhdHRlcm4gcGF0dGVybikKKyAgICB7CisgICAgICAgIG5vZGUtPmFwcGVuZEluZGV4KEFy
cmF5UGF0dGVybk5vZGU6OkJpbmRpbmdUeXBlOjpSZXN0RWxlbWVudCwgbG9jYXRpb24sIHBhdHRl
cm4uZ2V0KCksIG51bGxwdHIpOwogICAgIH0KIAogICAgIHZvaWQgZmluaXNoQXJyYXlQYXR0ZXJu
KEFycmF5UGF0dGVybiBub2RlLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggNzllMWRjODNkNzc2ZWFmODhk
OWRmMWU0YzU3ODJlYjBmMzhmYzNkYS4uMGNkZDgyYTIyYjY5NmY5M2ZlNmVmNzJkOWM4Y2EwZmNl
ZDAxNWQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTc4MiwxNCAr
MTc4MiwyMSBAQAogCiAgICAgY2xhc3MgQXJyYXlQYXR0ZXJuTm9kZSA6IHB1YmxpYyBEZWNvbnN0
cnVjdGlvblBhdHRlcm5Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAg
IHB1YmxpYzoKKyAgICAgICAgZW51bSBjbGFzcyBCaW5kaW5nVHlwZSB7CisgICAgICAgICAgICBF
bGlzaW9uLAorICAgICAgICAgICAgRWxlbWVudCwKKyAgICAgICAgICAgIFJlc3RFbGVtZW50Cisg
ICAgICAgIH07CisKICAgICAgICAgc3RhdGljIFJlZjxBcnJheVBhdHRlcm5Ob2RlPiBjcmVhdGUo
KTsKLSAgICAgICAgdm9pZCBhcHBlbmRJbmRleChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBEZWNv
bnN0cnVjdGlvblBhdHRlcm5Ob2RlKiBub2RlLCBFeHByZXNzaW9uTm9kZSogZGVmYXVsdFZhbHVl
KQorICAgICAgICB2b2lkIGFwcGVuZEluZGV4KEJpbmRpbmdUeXBlIGJpbmRpbmdUeXBlLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBEZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlKiBub2RlLCBFeHBy
ZXNzaW9uTm9kZSogZGVmYXVsdFZhbHVlKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX3Rhcmdl
dFBhdHRlcm5zLmFwcGVuZChFbnRyeXsgbm9kZSwgZGVmYXVsdFZhbHVlIH0pOworICAgICAgICAg
ICAgbV90YXJnZXRQYXR0ZXJucy5hcHBlbmQoRW50cnl7IGJpbmRpbmdUeXBlLCBub2RlLCBkZWZh
dWx0VmFsdWUgfSk7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIHN0cnVjdCBF
bnRyeSB7CisgICAgICAgICAgICBCaW5kaW5nVHlwZSBiaW5kaW5nVHlwZTsKICAgICAgICAgICAg
IFJlZlB0cjxEZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlPiBwYXR0ZXJuOwogICAgICAgICAgICAg
RXhwcmVzc2lvbk5vZGUqIGRlZmF1bHRWYWx1ZTsKICAgICAgICAgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCBkYWI2YjFhMTRkNzNkNzFmYjdhOGQ2MDU1M2Q4
MDE2ZTQ4ZjAzOWQ5Li40NjhlYjM5M2JiMDk1YzdhYzM5M2UxNGQ5ZDAzZjVjYTkxNjY0ZmFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC02MDEsNiArNjAxLDgg
QEAKICAgICAgICAgYXV0byBhcnJheVBhdHRlcm4gPSBjb250ZXh0LmNyZWF0ZUFycmF5UGF0dGVy
bihtX3Rva2VuLm1fbG9jYXRpb24pOwogICAgICAgICBuZXh0KCk7CiAKKyAgICAgICAgYm9vbCBy
ZXN0RWxlbWVudFdhc0ZvdW5kID0gZmFsc2U7CisKICAgICAgICAgZG8gewogICAgICAgICAgICAg
d2hpbGUgKG1hdGNoKENPTU1BKSkgewogICAgICAgICAgICAgICAgIGNvbnRleHQuYXBwZW5kQXJy
YXlQYXR0ZXJuU2tpcEVudHJ5KGFycmF5UGF0dGVybiwgbV90b2tlbi5tX2xvY2F0aW9uKTsKQEAg
LTYxMSw2ICs2MTMsMjEgQEAKICAgICAgICAgICAgIGlmIChtYXRjaChDTE9TRUJSQUNLRVQpKQog
ICAgICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICBpZiAoVU5MSUtFTFkobWF0Y2go
RE9URE9URE9UKSkpIHsKKyAgICAgICAgICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24g
PSBtX3Rva2VuLm1fbG9jYXRpb247CisgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAg
ICAgICAgIGF1dG8gaW5uZXJQYXR0ZXJuID0gcGFyc2VEZWNvbnN0cnVjdGlvblBhdHRlcm4oY29u
dGV4dCwga2luZCwgZGVwdGggKyAxKTsKKyAgICAgICAgICAgICAgICBpZiAoa2luZCA9PSBEZWNv
bnN0cnVjdFRvRXhwcmVzc2lvbnMgJiYgIWlubmVyUGF0dGVybikKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgZmFpbElmRmFsc2UoaW5uZXJQYXR0ZXJuLCAi
Q2Fubm90IHBhcnNlIHRoaXMgZGVjb25zdHJ1Y3Rpb24gcGF0dGVybiIpOworCisgICAgICAgICAg
ICAgICAgZmFpbElmVHJ1ZShraW5kICE9IERlY29uc3RydWN0VG9FeHByZXNzaW9ucyAmJiAhY29u
dGV4dC5pc0JpbmRpbmdOb2RlKGlubmVyUGF0dGVybiksICAiRXhwZWN0ZWQgaWRlbnRpZmllciBm
b3IgYSByZXN0IGVsZW1lbnQgZGVjb25zdHJ1Y3Rpb24gcGF0dGVybiIpOworCisgICAgICAgICAg
ICAgICAgY29udGV4dC5hcHBlbmRBcnJheVBhdHRlcm5SZXN0RW50cnkoYXJyYXlQYXR0ZXJuLCBs
b2NhdGlvbiwgaW5uZXJQYXR0ZXJuKTsKKyAgICAgICAgICAgICAgICByZXN0RWxlbWVudFdhc0Zv
dW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwogICAg
ICAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uID0gbV90b2tlbi5tX2xvY2F0aW9uOwog
ICAgICAgICAgICAgYXV0byBpbm5lclBhdHRlcm4gPSBwYXJzZURlY29uc3RydWN0aW9uUGF0dGVy
bihjb250ZXh0LCBraW5kLCBkZXB0aCArIDEpOwogICAgICAgICAgICAgaWYgKGtpbmQgPT0gRGVj
b25zdHJ1Y3RUb0V4cHJlc3Npb25zICYmICFpbm5lclBhdHRlcm4pCkBAIC02MjMsNyArNjQwLDcg
QEAKIAogICAgICAgICBpZiAoa2luZCA9PSBEZWNvbnN0cnVjdFRvRXhwcmVzc2lvbnMgJiYgIW1h
dGNoKENMT1NFQlJBQ0tFVCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgY29uc3Vt
ZU9yRmFpbChDTE9TRUJSQUNLRVQsICJFeHBlY3RlZCBlaXRoZXIgYSBjbG9zaW5nICddJyBvciBh
ICcsJyBmb2xsb3dpbmcgYW4gZWxlbWVudCBkZWNvbnN0cnVjdGlvbiBwYXR0ZXJuIik7CisgICAg
ICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VCUkFDS0VULCByZXN0RWxlbWVudFdhc0ZvdW5kID8gIkV4
cGVjdGVkIGEgY2xvc2luZyAnXScgZm9sbG93aW5nIGEgcmVzdCBlbGVtZW50IGRlY29uc3RydWN0
aW9uIHBhdHRlcm4iIDogIkV4cGVjdGVkIGVpdGhlciBhIGNsb3NpbmcgJ10nIG9yIGEgJywnIGZv
bGxvd2luZyBhbiBlbGVtZW50IGRlY29uc3RydWN0aW9uIHBhdHRlcm4iKTsKICAgICAgICAgY29u
dGV4dC5maW5pc2hBcnJheVBhdHRlcm4oYXJyYXlQYXR0ZXJuLCBkaXZvdFN0YXJ0LCBkaXZvdFN0
YXJ0LCBsYXN0VG9rZW5FbmRQb3NpdGlvbigpKTsKICAgICAgICAgcGF0dGVybiA9IGFycmF5UGF0
dGVybjsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3lu
dGF4Q2hlY2tlci5oCmluZGV4IGJlNDYyMWQzN2JjMTdjYWQ1ODk2YjQ4ZDE4NmRmNDA0ZTExYmNj
OWMuLmY1ZDQyNmZlOGMwM2QwYTkyZGQ5M2RkOTNhNzhiYTk5YWNlNTk2MzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC0zMTEsNiArMzExLDkg
QEAgY2xhc3MgU3ludGF4Q2hlY2tlciB7CiAgICAgdm9pZCBhcHBlbmRBcnJheVBhdHRlcm5FbnRy
eShBcnJheVBhdHRlcm4sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIERlY29uc3RydWN0aW9uUGF0
dGVybiwgaW50KQogICAgIHsKICAgICB9CisgICAgdm9pZCBhcHBlbmRBcnJheVBhdHRlcm5SZXN0
RW50cnkoQXJyYXlQYXR0ZXJuLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBEZWNvbnN0cnVjdGlv
blBhdHRlcm4pCisgICAgeworICAgIH0KICAgICB2b2lkIGZpbmlzaEFycmF5UGF0dGVybihBcnJh
eVBhdHRlcm4sIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiwgY29uc3QgSlNUZXh0UG9zaXRpb24mLCBj
b25zdCBKU1RleHRQb3NpdGlvbiYpCiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcmVzdC1lbGVtZW50cy5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcmVzdC1lbGVtZW50cy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOGVj
MjU2MWFlODY5NGQ2OTdjOTU3Y2U1ZTM0NDFkOTRiYmI0M2E4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9yZXN0LWVsZW1lbnRzLmpzCkBAIC0w
LDAgKzEsMjIzIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZh
bHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JN
ZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0g
bnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAg
ICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAg
aWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7
CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworZnVuY3Rpb24g
dGVzdFN5bnRheEVycm9yKHNjcmlwdCwgbWVzc2FnZSkgeworICAgIHZhciBlcnJvciA9IG51bGw7
CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbChzY3JpcHQpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkV4cGVjdGVkIHN5bnRheCBlcnJvciBub3QgdGhyb3duIik7CisKKyAgICBpZiAo
U3RyaW5nKGVycm9yKSAhPT0gbWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQg
ZXJyb3I6ICIgKyBTdHJpbmcoZXJyb3IpKTsKK30KKworKGZ1bmN0aW9uICgpIHsKKyAgICB2YXIg
W2EsIGIsIC4uLmNdID0gIkNvY29hIjsKKyAgICBzaG91bGRCZShhLCAnQycpOworICAgIHNob3Vs
ZEJlKGIsICdvJyk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoYyksIFN0cmluZy5yYXdg
WyJjIiwibyIsImEiXWApOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgW2EsIGIs
IC4uLmNdID0gIkNvIjsKKyAgICBzaG91bGRCZShhLCAnQycpOworICAgIHNob3VsZEJlKGIsICdv
Jyk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoYyksIFN0cmluZy5yYXdgW11gKTsKK30o
KSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgdmFyIFthLCBiLCAuLi5jXSA9ICJDIjsKKyAgICBz
aG91bGRCZShhLCAnQycpOworICAgIHNob3VsZEJlKGIsIHVuZGVmaW5lZCk7CisgICAgc2hvdWxk
QmUoSlNPTi5zdHJpbmdpZnkoYyksIFN0cmluZy5yYXdgW11gKTsKK30oKSk7CisKKyhmdW5jdGlv
biAoKSB7CisgICAgdmFyIGEsIGIsIGM7CisgICAgW2EsIGIsIC4uLmNdID0gIkNvY29hIjsKKyAg
ICBzaG91bGRCZShhLCAnQycpOworICAgIHNob3VsZEJlKGIsICdvJyk7CisgICAgc2hvdWxkQmUo
SlNPTi5zdHJpbmdpZnkoYyksIFN0cmluZy5yYXdgWyJjIiwibyIsImEiXWApOworfSgpKTsKKwor
KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgYSwgYiwgYzsKKyAgICBbYSwgYiwgLi4uY10gPSAiQ28i
OworICAgIHNob3VsZEJlKGEsICdDJyk7CisgICAgc2hvdWxkQmUoYiwgJ28nKTsKKyAgICBzaG91
bGRCZShKU09OLnN0cmluZ2lmeShjKSwgU3RyaW5nLnJhd2BbXWApOworfSgpKTsKKworKGZ1bmN0
aW9uICgpIHsKKyAgICB2YXIgYSwgYiwgYzsKKyAgICBbYSwgYiwgLi4uY10gPSAiQyI7CisgICAg
c2hvdWxkQmUoYSwgJ0MnKTsKKyAgICBzaG91bGRCZShiLCB1bmRlZmluZWQpOworICAgIHNob3Vs
ZEJlKEpTT04uc3RyaW5naWZ5KGMpLCBTdHJpbmcucmF3YFtdYCk7Cit9KCkpOworCisoZnVuY3Rp
b24gKFthLCBiLCAuLi5jXSkgeworICAgIHNob3VsZEJlKGEsICdDJyk7CisgICAgc2hvdWxkQmUo
YiwgJ28nKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShjKSwgU3RyaW5nLnJhd2BbImMi
LCJvIiwiYSJdYCk7Cit9KCJDb2NvYSIpKTsKKworKGZ1bmN0aW9uIChbYSwgYiwgLi4uY10pIHsK
KyAgICBzaG91bGRCZShhLCAnQycpOworICAgIHNob3VsZEJlKGIsICdvJyk7CisgICAgc2hvdWxk
QmUoSlNPTi5zdHJpbmdpZnkoYyksIFN0cmluZy5yYXdgW11gKTsKK30oIkNvIikpOworCisoZnVu
Y3Rpb24gKFthLCBiLCAuLi5jXSkgeworICAgIHNob3VsZEJlKGEsICdDJyk7CisgICAgc2hvdWxk
QmUoYiwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShjKSwgU3RyaW5n
LnJhd2BbXWApOworfSgiQyIpKTsKKwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgdmFyIFth
LCAuLi5iLCBjXSA9IDIwYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tl
biAnLCcuIEV4cGVjdGVkIGEgY2xvc2luZyAnXScgZm9sbG93aW5nIGEgcmVzdCBlbGVtZW50IGRl
Y29uc3RydWN0aW9uIHBhdHRlcm4uYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2B2YXIg
W2EsIC4uLmIsXSA9IDIwYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tl
biAnLCcuIEV4cGVjdGVkIGEgY2xvc2luZyAnXScgZm9sbG93aW5nIGEgcmVzdCBlbGVtZW50IGRl
Y29uc3RydWN0aW9uIHBhdHRlcm4uYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2B2YXIg
W2EsIC4uLmIsLF0gPSAyMGAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9r
ZW4gJywnLiBFeHBlY3RlZCBhIGNsb3NpbmcgJ10nIGZvbGxvd2luZyBhIHJlc3QgZWxlbWVudCBk
ZWNvbnN0cnVjdGlvbiBwYXR0ZXJuLmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgdmFy
IFthLCAuLi5iID0gMjBdID0gMjBgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBVbmV4cGVjdGVk
IHRva2VuICc9Jy4gRXhwZWN0ZWQgYSBjbG9zaW5nICddJyBmb2xsb3dpbmcgYSByZXN0IGVsZW1l
bnQgZGVjb25zdHJ1Y3Rpb24gcGF0dGVybi5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3
YHZhciBbYSwgLi4uW2IsIGNdXSA9IDIwYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogVW5leHBl
Y3RlZCB0b2tlbiAnXScuIEV4cGVjdGVkIGlkZW50aWZpZXIgZm9yIGEgcmVzdCBlbGVtZW50IGRl
Y29uc3RydWN0aW9uIHBhdHRlcm4uYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2B2YXIg
W2EsIC4uLnsgYiwgYyB9XSA9IDIwYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogVW5leHBlY3Rl
ZCB0b2tlbiAnXScuIEV4cGVjdGVkIGlkZW50aWZpZXIgZm9yIGEgcmVzdCBlbGVtZW50IGRlY29u
c3RydWN0aW9uIHBhdHRlcm4uYCk7CisKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5j
dGlvbiAoW2EsIC4uLmIsIGNdKSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogVW5leHBl
Y3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGEgY2xvc2luZyAnXScgZm9sbG93aW5nIGEgcmVzdCBl
bGVtZW50IGRlY29uc3RydWN0aW9uIHBhdHRlcm4uYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5n
LnJhd2AoZnVuY3Rpb24gKFthLCAuLi5iLF0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9y
OiBVbmV4cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0ZWQgYSBjbG9zaW5nICddJyBmb2xsb3dpbmcg
YSByZXN0IGVsZW1lbnQgZGVjb25zdHJ1Y3Rpb24gcGF0dGVybi5gKTsKK3Rlc3RTeW50YXhFcnJv
cihTdHJpbmcucmF3YChmdW5jdGlvbiAoW2EsIC4uLmIsLF0pIHsgfSlgLCBTdHJpbmcucmF3YFN5
bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0ZWQgYSBjbG9zaW5nICddJyBm
b2xsb3dpbmcgYSByZXN0IGVsZW1lbnQgZGVjb25zdHJ1Y3Rpb24gcGF0dGVybi5gKTsKK3Rlc3RT
eW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiAoW2EsIC4uLmIgPSAyMCwsXSkgeyB9KWAs
IFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJz0nLiBFeHBlY3RlZCBh
IGNsb3NpbmcgJ10nIGZvbGxvd2luZyBhIHJlc3QgZWxlbWVudCBkZWNvbnN0cnVjdGlvbiBwYXR0
ZXJuLmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIChbYSwgLi4uW2Is
IGNdXSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJ10n
LiBFeHBlY3RlZCBpZGVudGlmaWVyIGZvciBhIHJlc3QgZWxlbWVudCBkZWNvbnN0cnVjdGlvbiBw
YXR0ZXJuLmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIChbYSwgLi4u
eyBiLCBjIH1dKSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tl
biAnXScuIEV4cGVjdGVkIGlkZW50aWZpZXIgZm9yIGEgcmVzdCBlbGVtZW50IGRlY29uc3RydWN0
aW9uIHBhdHRlcm4uYCk7CisKK3Nob3VsZFRocm93KGZ1bmN0aW9uICgpIHsKKyAgICBbYSwgLi4u
YiwgY10gPSAyMDsKK30sICJSZWZlcmVuY2VFcnJvcjogTGVmdCBzaWRlIG9mIGFzc2lnbm1lbnQg
aXMgbm90IGEgcmVmZXJlbmNlLiIpOworCitzaG91bGRUaHJvdyhmdW5jdGlvbiAoKSB7CisgICAg
W2EsIC4uLmIsXSA9IDIwCit9LCAiUmVmZXJlbmNlRXJyb3I6IExlZnQgc2lkZSBvZiBhc3NpZ25t
ZW50IGlzIG5vdCBhIHJlZmVyZW5jZS4iKTsKKworc2hvdWxkVGhyb3coZnVuY3Rpb24gKCkgewor
ICAgIFthLCAuLi5iLCxdID0gMjAKK30sICJSZWZlcmVuY2VFcnJvcjogTGVmdCBzaWRlIG9mIGFz
c2lnbm1lbnQgaXMgbm90IGEgcmVmZXJlbmNlLiIpOworCitzaG91bGRUaHJvdyhmdW5jdGlvbiAo
KSB7CisgICAgW2EsIC4uLmIgPSAyMF0gPSAyMAorfSwgIlJlZmVyZW5jZUVycm9yOiBMZWZ0IHNp
ZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVuY2UuIik7CisKKyhmdW5jdGlvbiAoKSB7
CisgICAgdmFyIGEsIGIsIGM7CisgICAgW2EsIGIsIC4uLlsuLi5jXV0gPSAiQ29jb2EiOworICAg
IHNob3VsZEJlKGEsICdDJyk7CisgICAgc2hvdWxkQmUoYiwgJ28nKTsKKyAgICBzaG91bGRCZShK
U09OLnN0cmluZ2lmeShjKSwgU3RyaW5nLnJhd2BbImMiLCJvIiwiYSJdYCk7Cit9KCkpOworCiso
ZnVuY3Rpb24gKCkgeworICAgIHZhciBhLCBiLCBjLCBkLCBlLCBmOworICAgIFthLCBiLCAuLi57
IDA6IGMsIDE6IGQsIDI6IGUsIDM6IGYgfV0gPSAiQ29jb2EiOworICAgIHNob3VsZEJlKGEsICdD
Jyk7CisgICAgc2hvdWxkQmUoYiwgJ28nKTsKKyAgICBzaG91bGRCZShjLCAnYycpOworICAgIHNo
b3VsZEJlKGQsICdvJyk7CisgICAgc2hvdWxkQmUoZiwgdW5kZWZpbmVkKTsKK30oKSk7CisKKyhm
dW5jdGlvbiAoKSB7CisgICAgdmFyIGEsIGIsIGMsIGQsIGU7CisgICAgW2EsIGIsIC4uLltjLCBk
LCAuLi5lXV0gPSAiQ29jb2EiOworICAgIHNob3VsZEJlKGEsICdDJyk7CisgICAgc2hvdWxkQmUo
YiwgJ28nKTsKKyAgICBzaG91bGRCZShjLCAnYycpOworICAgIHNob3VsZEJlKGQsICdvJyk7Cisg
ICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZSksIFN0cmluZy5yYXdgWyJhIl1gKTsKK30oKSk7
CisKK2Z1bmN0aW9uIGl0ZXJhdG9yKGFycmF5KSB7CisgICAgdmFyIG5leHRDb3VudCA9IDA7Cisg
ICAgdmFyIHJldHVybkNvdW50ID0gMDsKKyAgICB2YXIgb3JpZ2luYWwgPSAgYXJyYXkudmFsdWVz
KCk7CisgICAgcmV0dXJuIHsKKyAgICAgICAgW1N5bWJvbC5pdGVyYXRvcl0oKSB7CisgICAgICAg
ICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfSwKKworICAgICAgICBuZXh0KCkgeworICAgICAg
ICAgICAgKytuZXh0Q291bnQ7CisgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWwubmV4dCgpOwor
ICAgICAgICB9LAorCisgICAgICAgIHJldHVybigpIHsKKyAgICAgICAgICAgICsrcmV0dXJuQ291
bnQ7CisgICAgICAgICAgICByZXR1cm4geyBkb25lOiB0cnVlIH07CisgICAgICAgIH0sCisKKyAg
ICAgICAgcmVwb3J0TmV4dCgpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXh0Q291bnQ7CisgICAg
ICAgIH0sCisKKyAgICAgICAgcmVwb3J0UmV0dXJuKCkgeworICAgICAgICAgICAgcmV0dXJuIHJl
dHVybkNvdW50OworICAgICAgICB9CisgICAgfTsKK307CisKKyhmdW5jdGlvbiAoKSB7CisgICAg
dmFyIGl0ZXIgPSBpdGVyYXRvcihbMSwgMiwgM10pOworICAgIHZhciBbLi4uYV0gPSBpdGVyOwor
ICAgIHNob3VsZEJlKGl0ZXIucmVwb3J0TmV4dCgpLCA0KTsKKyAgICBzaG91bGRCZShpdGVyLnJl
cG9ydFJldHVybigpLCAwKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShhKSwgU3RyaW5n
LnJhd2BbMSwyLDNdYCk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkgeworICAgIHZhciBpdGVyID0g
aXRlcmF0b3IoWzEsIDIsIDNdKTsKKyAgICB2YXIgW2EsIGIsIC4uLmNdID0gaXRlcjsKKyAgICBz
aG91bGRCZShpdGVyLnJlcG9ydE5leHQoKSwgNCk7CisgICAgc2hvdWxkQmUoaXRlci5yZXBvcnRS
ZXR1cm4oKSwgMCk7CisgICAgc2hvdWxkQmUoYSwgMSk7CisgICAgc2hvdWxkQmUoYiwgMik7Cisg
ICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoYyksIFN0cmluZy5yYXdgWzNdYCk7Cit9KCkpOwor
CisoZnVuY3Rpb24gKCkgeworICAgIHZhciBpdGVyID0gaXRlcmF0b3IoWzEsIDIsIDNdKTsKKyAg
ICB2YXIgW2EsIGIsIGMsIGQsIC4uLmVdID0gaXRlcjsKKyAgICBzaG91bGRCZShpdGVyLnJlcG9y
dE5leHQoKSwgNCk7CisgICAgc2hvdWxkQmUoaXRlci5yZXBvcnRSZXR1cm4oKSwgMCk7CisgICAg
c2hvdWxkQmUoYSwgMSk7CisgICAgc2hvdWxkQmUoYiwgMik7CisgICAgc2hvdWxkQmUoYywgMyk7
CisgICAgc2hvdWxkQmUoZCwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lm
eShlKSwgU3RyaW5nLnJhd2BbXWApOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICB2YXIg
aXRlciA9IGl0ZXJhdG9yKFsxLCAyLCAzXSk7CisgICAgdmFyIGEsIGI7CisgICAgWy4uLlthLCBi
XV0gPSBpdGVyOworICAgIHNob3VsZEJlKGl0ZXIucmVwb3J0TmV4dCgpLCA0KTsKKyAgICBzaG91
bGRCZShpdGVyLnJlcG9ydFJldHVybigpLCAwKTsKKyAgICBzaG91bGRCZShhLCAxKTsKKyAgICBz
aG91bGRCZShiLCAyKTsKK30oKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255397</attachid>
            <date>2015-06-22 23:54:42 -0700</date>
            <delta_ts>2015-06-25 20:14:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146206-20150623155359.patch</filename>
            <type>text/plain</type>
            <size>23900</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1ODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
ZDk2ZTg4OWJiMTgwZjdiYmFiZDQ4MjU1N2U4NjEyN2U5NWUzOGRlLi43M2VhOWI3YzY0N2FhOTVl
NmI3NTYwZjAwMzkxMzMwNDhlN2ZlMThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwzOCBAQAogMjAxNS0wNi0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBbRVM2XSBTdXBwb3J0IHJlc3QgZWxlbWVudCBpbiBkZXN0cnVjdHVy
aW5nIGFzc2lnbm1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDYyMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGVuYWJsZXMgcmVzdCBlbGVtZW50ICguLi5yZXN0KSBpbiBhcnJh
eSBiaW5kaW5nIHBhdHRlcm5zLgorICAgICAgICBJdCBnZW5lcmF0ZXMgYXJyYXkgZnJvbSB0aGUg
aXRlcmFibGVzLgorICAgICAgICBJbiB2YXJpYWJsZSBkZWNsYXJhdGlvbnMgYW5kIHBhcmFtZXRl
cnMsIGBbLi4uaWRlbnRpZmllcl1gIGZvcm0gaXMgb25seSBhbGxvd2VkLAorICAgICAgICB3aGls
ZSBleHByZXNzaW9ucyBjYW4gdGFrZSBgWy4uLlsuLi5yZXN0XV1gIHBhdHRlcm4uCisKKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwOgorICAgICAgICAoSlNDOjpBcnJheVBhdHRlcm5Ob2RlOjpiaW5kVmFsdWUpOgorICAgICAg
ICAoSlNDOjpBcnJheVBhdHRlcm5Ob2RlOjp0b1N0cmluZyk6CisgICAgICAgICogcGFyc2VyL0FT
VEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6YXBwZW5kQXJyYXlQYXR0ZXJu
U2tpcEVudHJ5KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6YXBwZW5kQXJyYXlQYXR0ZXJu
RW50cnkpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjphcHBlbmRBcnJheVBhdHRlcm5SZXN0
RW50cnkpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpBcnJheVBh
dHRlcm5Ob2RlOjphcHBlbmRJbmRleCk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZURlY29uc3RydWN0aW9uUGF0dGVy
bik6CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3lu
dGF4Q2hlY2tlcjo6b3BlcmF0b3JTdGFja1BvcCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3Jl
c3QtZWxlbWVudHMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hv
dWxkVGhyb3cpOgorCisyMDE1LTA2LTIyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorCiAgICAgICAgIFtFUzZdIEFsbG93IHRyYWlsaW5nIGNvbW1hIGluIEFycmF5Qmlu
ZGluZ1BhdHRlcm4gYW5kIE9iamVjdEJpbmRpbmdQYXR0ZXJuCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDYxOTIKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRl
eCAxYzg4MTgxNjc2NTJlYWEyNWVjNWE4ZDUwNTk0MzkwZmIzNmE4NzEyLi44MjdkMDVlNGFhMTAy
NDIzNDMwYjY2ODNhZGYwMGM5YWIzNThjOTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMjc4OSwx
OCArMjc4OSw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbihUaHJv
d2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgRXhwcmVzc2lvCiAKICAgICAgICAgZW1pdExhYmVs
KHNjb3BlLT5jb250aW51ZVRhcmdldCgpKTsKICAgICAgICAgewotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXh0ID0gZW1pdEdldEJ5SWQobmV3VGVt
cG9yYXJ5KCksIGl0ZXJhdG9yLmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkubmV4dCk7Ci0gICAgICAg
ICAgICAgICAgQ2FsbEFyZ3VtZW50cyBuZXh0QXJndW1lbnRzKCp0aGlzLCBudWxscHRyKTsKLSAg
ICAgICAgICAgICAgICBlbWl0TW92ZShuZXh0QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVy
YXRvci5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgZW1pdENhbGwodmFsdWUuZ2V0KCksIG5leHQu
Z2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgbmV4dEFyZ3VtZW50cywgbm9kZS0+ZGl2b3QoKSwg
bm9kZS0+ZGl2b3RTdGFydCgpLCBub2RlLT5kaXZvdEVuZCgpKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8TGFiZWw+IHR5cGVJc09iamVjdCA9
IG5ld0xhYmVsKCk7Ci0gICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0
KG5ld1RlbXBvcmFyeSgpLCB2YWx1ZS5nZXQoKSksIHR5cGVJc09iamVjdC5nZXQoKSk7Ci0gICAg
ICAgICAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKEFTQ0lJTGl0ZXJhbCgiSXRlcmF0b3IgcmVz
dWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiIpKTsKLSAgICAgICAgICAgICAgICBlbWl0
TGFiZWwodHlwZUlzT2JqZWN0LmdldCgpKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVt
aXRJdGVyYXRvck5leHQodmFsdWUuZ2V0KCksIGl0ZXJhdG9yLmdldCgpLCBub2RlKTsKICAgICAg
ICAgICAgIGVtaXRKdW1wSWZUcnVlKGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCB2YWx1ZS5n
ZXQoKSwgcHJvcGVydHlOYW1lcygpLmRvbmUpLCBsb29wRG9uZS5nZXQoKSk7CiAgICAgICAgICAg
ICBlbWl0R2V0QnlJZCh2YWx1ZS5nZXQoKSwgdmFsdWUuZ2V0KCksIHByb3BlcnR5TmFtZXMoKS52
YWx1ZSk7CiAgICAgICAgICAgICBlbWl0SnVtcChsb29wU3RhcnQuZ2V0KCkpOwpAQCAtMjkzMyw2
ICsyOTIyLDIzIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXNVbmRlZmlu
ZWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzcmMpCiAgICAgcmV0dXJuIGRzdDsKIH0K
IAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvck5leHQoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBpdGVyYXRvciwgY29uc3QgVGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGEqIG5vZGUpCit7CisgICAgeworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dCA9
IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBpdGVyYXRvciwgcHJvcGVydHlOYW1lcygpLm5l
eHQpOworICAgICAgICBDYWxsQXJndW1lbnRzIG5leHRBcmd1bWVudHMoKnRoaXMsIG51bGxwdHIp
OworICAgICAgICBlbWl0TW92ZShuZXh0QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBpdGVyYXRv
cik7CisgICAgICAgIGVtaXRDYWxsKGRzdCwgbmV4dC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9u
LCBuZXh0QXJndW1lbnRzLCBub2RlLT5kaXZvdCgpLCBub2RlLT5kaXZvdFN0YXJ0KCksIG5vZGUt
PmRpdm90RW5kKCkpOworICAgIH0KKyAgICB7CisgICAgICAgIFJlZlB0cjxMYWJlbD4gdHlwZUlz
T2JqZWN0ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0
KG5ld1RlbXBvcmFyeSgpLCBkc3QpLCB0eXBlSXNPYmplY3QuZ2V0KCkpOworICAgICAgICBlbWl0
VGhyb3dUeXBlRXJyb3IoQVNDSUlMaXRlcmFsKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlz
IG5vdCBhbiBvYmplY3QuIikpOworICAgICAgICBlbWl0TGFiZWwodHlwZUlzT2JqZWN0LmdldCgp
KTsKKyAgICB9CisgICAgcmV0dXJuIGRzdDsKK30KKwogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEl0ZXJhdG9yQ2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocm93YWJsZUV4
cHJlc3Npb25EYXRhKiBub2RlKQogewogICAgIFJlZlB0cjxMYWJlbD4gZG9uZSA9IG5ld0xhYmVs
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKaW5kZXggNWQ3NjhjZjMyODUyNmY1OWFkY2I1NTBmYWZiYmIxOGQzNjhh
YzYyZS4uZjhjZmM3YWQwNjNmZjYzZjQ2MjgzNzYxZjEwMjZmOTFiNDAwZGRjNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaApAQCAtNTQ2LDYgKzU0Niw3IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJc09iamVj
dChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYyk7CiAgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRJc1VuZGVmaW5lZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYyk7CiAKKyAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdEl0ZXJhdG9yTmV4dChSZWdpc3RlcklEKiBkc3QsIFJlZ2lz
dGVySUQqIGl0ZXJhdG9yLCBjb25zdCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSk7CiAg
ICAgICAgIHZvaWQgZW1pdEl0ZXJhdG9yQ2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0
IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlKTsKIAogICAgICAgICB2b2lkIGVtaXRSZWFk
T25seUV4Y2VwdGlvbklmTmVlZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggODFhNTgxOThhNDZkNmNlN2EzODEx
MGRjNThlZTRhMDEzNWFjYTM0Mi4uOWVlZTMzMmFkODhjMTlmZjU4ZTFkMGU3OTcxNTM5OWZiNTMz
NjcyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcApAQCAtMzE0Niw0MyArMzE0Niw2NiBAQCB2b2lkIEFycmF5UGF0dGVybk5v
ZGU6OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBy
aHMpCiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZG9uZTsKICAgICBmb3IgKGF1dG8mIHRhcmdl
dCA6IG1fdGFyZ2V0UGF0dGVybnMpIHsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVl
ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotCi0gICAgICAgIFJlZlB0cjxMYWJlbD4gaXRl
cmF0aW9uU2tpcHBlZCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwotICAgICAgICBpZiAoIWRvbmUp
Ci0gICAgICAgICAgICBkb25lID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICBl
bHNlCisgICAgICAgIHN3aXRjaCAodGFyZ2V0LmJpbmRpbmdUeXBlKSB7CisgICAgICAgIGNhc2Ug
QmluZGluZ1R5cGU6OkVsaXNpb246CisgICAgICAgIGNhc2UgQmluZGluZ1R5cGU6OkVsZW1lbnQ6
IHsKKyAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gaXRlcmF0aW9uU2tpcHBlZCA9IGdlbmVyYXRv
ci5uZXdMYWJlbCgpOworICAgICAgICAgICAgaWYgKCFkb25lKQorICAgICAgICAgICAgICAgIGRv
bmUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGRvbmUuZ2V0KCksIGl0ZXJhdGlvblNr
aXBwZWQuZ2V0KCkpOworCisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEl0ZXJh
dG9yTmV4dCh2YWx1ZS5nZXQoKSwgaXRlcmF0b3IuZ2V0KCksIHRoaXMpOworICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRHZXRCeUlkKGRvbmUuZ2V0KCksIHZhbHVlLmdldCgpLCBnZW5lcmF0b3Iu
cHJvcGVydHlOYW1lcygpLmRvbmUpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZU
cnVlKGRvbmUuZ2V0KCksIGl0ZXJhdGlvblNraXBwZWQuZ2V0KCkpOworICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRHZXRCeUlkKHZhbHVlLmdldCgpLCB2YWx1ZS5nZXQoKSwgZ2VuZXJhdG9yLnBy
b3BlcnR5TmFtZXMoKS52YWx1ZSk7CiAKLSAgICAgICAgewotICAgICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IG5leHQgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpLCBpdGVyYXRvci5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5uZXh0KTsK
LSAgICAgICAgICAgIENhbGxBcmd1bWVudHMgbmV4dEFyZ3VtZW50cyhnZW5lcmF0b3IsIG51bGxw
dHIpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKG5leHRBcmd1bWVudHMudGhpc1Jl
Z2lzdGVyKCksIGl0ZXJhdG9yLmdldCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2Fs
bCh2YWx1ZS5nZXQoKSwgbmV4dC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBuZXh0QXJndW1l
bnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgICAgICB9Ci0gICAg
ICAgIHsKLSAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gdHlwZUlzT2JqZWN0ID0gZ2VuZXJhdG9y
Lm5ld0xhYmVsKCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoZ2VuZXJh
dG9yLmVtaXRJc09iamVjdChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHZhbHVlLmdldCgpKSwg
dHlwZUlzT2JqZWN0LmdldCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0VGhyb3dUeXBl
RXJyb3IoQVNDSUlMaXRlcmFsKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBv
YmplY3QuIikpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbCh0eXBlSXNPYmplY3Qu
Z2V0KCkpOworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gdmFs
dWVJc1NldCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOworICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0SnVtcCh2YWx1ZUlzU2V0LmdldCgpKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdExhYmVsKGl0ZXJhdGlvblNraXBwZWQuZ2V0KCkpOworICAgICAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0TG9hZCh2YWx1ZS5nZXQoKSwganNVbmRlZmluZWQoKSk7CisgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRMYWJlbCh2YWx1ZUlzU2V0LmdldCgpKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKHRhcmdldC5iaW5kaW5nVHlwZSA9PSBCaW5kaW5nVHlwZTo6RWxl
bWVudCkgeworICAgICAgICAgICAgICAgIGlmICh0YXJnZXQuZGVmYXVsdFZhbHVlKQorICAgICAg
ICAgICAgICAgICAgICBhc3NpZ25EZWZhdWx0VmFsdWVJZlVuZGVmaW5lZChnZW5lcmF0b3IsIHZh
bHVlLmdldCgpLCB0YXJnZXQuZGVmYXVsdFZhbHVlKTsKKyAgICAgICAgICAgICAgICB0YXJnZXQu
cGF0dGVybi0+YmluZFZhbHVlKGdlbmVyYXRvciwgdmFsdWUuZ2V0KCkpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICB7CisgICAgICAgIGNh
c2UgQmluZGluZ1R5cGU6OlJlc3RFbGVtZW50OiB7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gYXJyYXkgPSBnZW5lcmF0b3IuZW1pdE5ld0FycmF5KGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKSwgMCwgMCk7CisKKyAgICAgICAgICAgIFJlZlB0cjxMYWJlbD4gaXRlcmF0aW9uRG9uZSA9
IGdlbmVyYXRvci5uZXdMYWJlbCgpOworICAgICAgICAgICAgaWYgKCFkb25lKQorICAgICAgICAg
ICAgICAgIGRvbmUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGRvbmUuZ2V0KCksIGl0
ZXJhdGlvbkRvbmUuZ2V0KCkpOworCisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaW5k
ZXggPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dExvYWQoaW5kZXguZ2V0KCksIGpzTnVtYmVyKDApKTsKKyAgICAgICAgICAgIFJlZlB0cjxMYWJl
bD4gbG9vcFN0YXJ0ID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CisgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdExhYmVsKGxvb3BTdGFydC5nZXQoKSk7CisKKyAgICAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0SXRlcmF0b3JOZXh0KHZhbHVlLmdldCgpLCBpdGVyYXRvci5nZXQoKSwgdGhp
cyk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZG9uZS5nZXQoKSwgdmFsdWUu
Z2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuZG9uZSk7Ci0gICAgICAgICAgICBSZWZQ
dHI8TGFiZWw+IHZhbHVlSXNTZXQgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKLSAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShkb25lLmdldCgpLCBpdGVyYXRpb25Ta2lwcGVkLmdl
dCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShkb25lLmdldCgpLCBp
dGVyYXRpb25Eb25lLmdldCgpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZCh2
YWx1ZS5nZXQoKSwgdmFsdWUuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkudmFsdWUp
OwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKHZhbHVlSXNTZXQuZ2V0KCkpOwotICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChpdGVyYXRpb25Ta2lwcGVkLmdldCgpKTsKLSAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZCh2YWx1ZS5nZXQoKSwganNVbmRlZmluZWQoKSk7
Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHZhbHVlSXNTZXQuZ2V0KCkpOwotICAg
ICAgICB9CiAKLSAgICAgICAgaWYgKCF0YXJnZXQucGF0dGVybikKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICBpZiAodGFyZ2V0LmRlZmF1bHRWYWx1ZSkKLSAgICAgICAgICAgIGFzc2ln
bkRlZmF1bHRWYWx1ZUlmVW5kZWZpbmVkKGdlbmVyYXRvciwgdmFsdWUuZ2V0KCksIHRhcmdldC5k
ZWZhdWx0VmFsdWUpOwotICAgICAgICB0YXJnZXQucGF0dGVybi0+YmluZFZhbHVlKGdlbmVyYXRv
ciwgdmFsdWUuZ2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeVZh
bChhcnJheS5nZXQoKSwgaW5kZXguZ2V0KCksIHZhbHVlLmdldCgpKTsKKyAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0SW5jKGluZGV4LmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
SnVtcChsb29wU3RhcnQuZ2V0KCkpOworCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVs
KGl0ZXJhdGlvbkRvbmUuZ2V0KCkpOworICAgICAgICAgICAgdGFyZ2V0LnBhdHRlcm4tPmJpbmRW
YWx1ZShnZW5lcmF0b3IsIGFycmF5LmdldCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIH0KICAgICB9CiAKICAgICBSZWZQdHI8TGFiZWw+IGl0ZXJhdG9yQ2xvc2Vk
ID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CkBAIC0zMjI5LDEzICszMjUyLDI0IEBAIHZvaWQgQXJy
YXlQYXR0ZXJuTm9kZTo6dG9TdHJpbmcoU3RyaW5nQnVpbGRlciYgYnVpbGRlcikgY29uc3QKIHsK
ICAgICBidWlsZGVyLmFwcGVuZCgnWycpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90
YXJnZXRQYXR0ZXJucy5zaXplKCk7IGkrKykgewotICAgICAgICBpZiAoIW1fdGFyZ2V0UGF0dGVy
bnNbaV0ucGF0dGVybikgeworICAgICAgICBjb25zdCBhdXRvJiB0YXJnZXQgPSBtX3RhcmdldFBh
dHRlcm5zW2ldOworCisgICAgICAgIHN3aXRjaCAodGFyZ2V0LmJpbmRpbmdUeXBlKSB7CisgICAg
ICAgIGNhc2UgQmluZGluZ1R5cGU6OkVsaXNpb246CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZCgnLCcpOwotICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBjYXNlIEJpbmRpbmdUeXBlOjpFbGVtZW50OgorICAgICAgICAgICAgdGFyZ2V0LnBhdHRl
cm4tPnRvU3RyaW5nKGJ1aWxkZXIpOworICAgICAgICAgICAgaWYgKGkgPCBtX3RhcmdldFBhdHRl
cm5zLnNpemUoKSAtIDEpCisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJywnKTsKKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQmluZGluZ1R5cGU6OlJlc3RFbGVtZW50
OgorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIi4uLiIpOworICAgICAgICAgICAgdGFyZ2V0
LnBhdHRlcm4tPnRvU3RyaW5nKGJ1aWxkZXIpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KLSAgICAgICAgbV90YXJnZXRQYXR0ZXJuc1tpXS5wYXR0ZXJuLT50b1N0cmluZyhidWlsZGVy
KTsKLSAgICAgICAgaWYgKGkgPCBtX3RhcmdldFBhdHRlcm5zLnNpemUoKSAtIDEpCi0gICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZCgnLCcpOwogICAgIH0KICAgICBidWlsZGVyLmFwcGVuZCgnXScp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCBjM2Jl
NjBkYWJlODZlNDk3MmRmMjQxYzgzNDhkZjUwNDliMGY4ZDJkLi40NzE1Yjg2YWJiYTA3ZjAxNjI0
OGRjMWQxZTRjN2UzMjVlZTIzMmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FT
VEJ1aWxkZXIuaApAQCAtNzM3LDEyICs3MzcsMTcgQEAgY2xhc3MgQVNUQnVpbGRlciB7CiAgICAg
CiAgICAgdm9pZCBhcHBlbmRBcnJheVBhdHRlcm5Ta2lwRW50cnkoQXJyYXlQYXR0ZXJuIG5vZGUs
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24pCiAgICAgewotICAgICAgICBub2RlLT5h
cHBlbmRJbmRleChsb2NhdGlvbiwgMCwgbnVsbHB0cik7CisgICAgICAgIG5vZGUtPmFwcGVuZElu
ZGV4KEFycmF5UGF0dGVybk5vZGU6OkJpbmRpbmdUeXBlOjpFbGlzaW9uLCBsb2NhdGlvbiwgMCwg
bnVsbHB0cik7CiAgICAgfQogCiAgICAgdm9pZCBhcHBlbmRBcnJheVBhdHRlcm5FbnRyeShBcnJh
eVBhdHRlcm4gbm9kZSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRGVjb25zdHJ1
Y3Rpb25QYXR0ZXJuIHBhdHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBkZWZhdWx0VmFsdWUpCiAgICAg
ewotICAgICAgICBub2RlLT5hcHBlbmRJbmRleChsb2NhdGlvbiwgcGF0dGVybi5nZXQoKSwgZGVm
YXVsdFZhbHVlKTsKKyAgICAgICAgbm9kZS0+YXBwZW5kSW5kZXgoQXJyYXlQYXR0ZXJuTm9kZTo6
QmluZGluZ1R5cGU6OkVsZW1lbnQsIGxvY2F0aW9uLCBwYXR0ZXJuLmdldCgpLCBkZWZhdWx0VmFs
dWUpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kQXJyYXlQYXR0ZXJuUmVzdEVudHJ5KEFycmF5
UGF0dGVybiBub2RlLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBEZWNvbnN0cnVj
dGlvblBhdHRlcm4gcGF0dGVybikKKyAgICB7CisgICAgICAgIG5vZGUtPmFwcGVuZEluZGV4KEFy
cmF5UGF0dGVybk5vZGU6OkJpbmRpbmdUeXBlOjpSZXN0RWxlbWVudCwgbG9jYXRpb24sIHBhdHRl
cm4uZ2V0KCksIG51bGxwdHIpOwogICAgIH0KIAogICAgIHZvaWQgZmluaXNoQXJyYXlQYXR0ZXJu
KEFycmF5UGF0dGVybiBub2RlLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggNzllMWRjODNkNzc2ZWFmODhk
OWRmMWU0YzU3ODJlYjBmMzhmYzNkYS4uMDhmYzQ4OGFmNTFmYWM5YzhjZDRlNDE5MmZlZjQ3MThm
NjQxOGRiYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTc4MiwxNCAr
MTc4MiwyMSBAQAogCiAgICAgY2xhc3MgQXJyYXlQYXR0ZXJuTm9kZSA6IHB1YmxpYyBEZWNvbnN0
cnVjdGlvblBhdHRlcm5Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAg
IHB1YmxpYzoKKyAgICAgICAgZW51bSBjbGFzcyBCaW5kaW5nVHlwZSB7CisgICAgICAgICAgICBF
bGlzaW9uLAorICAgICAgICAgICAgRWxlbWVudCwKKyAgICAgICAgICAgIFJlc3RFbGVtZW50Cisg
ICAgICAgIH07CisKICAgICAgICAgc3RhdGljIFJlZjxBcnJheVBhdHRlcm5Ob2RlPiBjcmVhdGUo
KTsKLSAgICAgICAgdm9pZCBhcHBlbmRJbmRleChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBEZWNv
bnN0cnVjdGlvblBhdHRlcm5Ob2RlKiBub2RlLCBFeHByZXNzaW9uTm9kZSogZGVmYXVsdFZhbHVl
KQorICAgICAgICB2b2lkIGFwcGVuZEluZGV4KEJpbmRpbmdUeXBlIGJpbmRpbmdUeXBlLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBEZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlKiBub2RlLCBFeHBy
ZXNzaW9uTm9kZSogZGVmYXVsdFZhbHVlKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX3Rhcmdl
dFBhdHRlcm5zLmFwcGVuZChFbnRyeXsgbm9kZSwgZGVmYXVsdFZhbHVlIH0pOworICAgICAgICAg
ICAgbV90YXJnZXRQYXR0ZXJucy5hcHBlbmQoeyBiaW5kaW5nVHlwZSwgbm9kZSwgZGVmYXVsdFZh
bHVlIH0pOwogICAgICAgICB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBzdHJ1Y3QgRW50cnkg
eworICAgICAgICAgICAgQmluZGluZ1R5cGUgYmluZGluZ1R5cGU7CiAgICAgICAgICAgICBSZWZQ
dHI8RGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZT4gcGF0dGVybjsKICAgICAgICAgICAgIEV4cHJl
c3Npb25Ob2RlKiBkZWZhdWx0VmFsdWU7CiAgICAgICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5jcHAKaW5kZXggZGFiNmIxYTE0ZDczZDcxZmI3YThkNjA1NTNkODAxNmU0
OGYwMzlkOS4uNDY4ZWIzOTNiYjA5NWM3YWMzOTNlMTRkOWQwM2Y1Y2E5MTY2NGZhZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtNjAxLDYgKzYwMSw4IEBACiAg
ICAgICAgIGF1dG8gYXJyYXlQYXR0ZXJuID0gY29udGV4dC5jcmVhdGVBcnJheVBhdHRlcm4obV90
b2tlbi5tX2xvY2F0aW9uKTsKICAgICAgICAgbmV4dCgpOwogCisgICAgICAgIGJvb2wgcmVzdEVs
ZW1lbnRXYXNGb3VuZCA9IGZhbHNlOworCiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIHdoaWxl
IChtYXRjaChDT01NQSkpIHsKICAgICAgICAgICAgICAgICBjb250ZXh0LmFwcGVuZEFycmF5UGF0
dGVyblNraXBFbnRyeShhcnJheVBhdHRlcm4sIG1fdG9rZW4ubV9sb2NhdGlvbik7CkBAIC02MTEs
NiArNjEzLDIxIEBACiAgICAgICAgICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDS0VUKSkKICAgICAg
ICAgICAgICAgICBicmVhazsKIAorICAgICAgICAgICAgaWYgKFVOTElLRUxZKG1hdGNoKERPVERP
VERPVCkpKSB7CisgICAgICAgICAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uID0gbV90
b2tlbi5tX2xvY2F0aW9uOworICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgICAg
ICBhdXRvIGlubmVyUGF0dGVybiA9IHBhcnNlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuKGNvbnRleHQs
IGtpbmQsIGRlcHRoICsgMSk7CisgICAgICAgICAgICAgICAgaWYgKGtpbmQgPT0gRGVjb25zdHJ1
Y3RUb0V4cHJlc3Npb25zICYmICFpbm5lclBhdHRlcm4pCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGlubmVyUGF0dGVybiwgIkNhbm5v
dCBwYXJzZSB0aGlzIGRlY29uc3RydWN0aW9uIHBhdHRlcm4iKTsKKworICAgICAgICAgICAgICAg
IGZhaWxJZlRydWUoa2luZCAhPSBEZWNvbnN0cnVjdFRvRXhwcmVzc2lvbnMgJiYgIWNvbnRleHQu
aXNCaW5kaW5nTm9kZShpbm5lclBhdHRlcm4pLCAgIkV4cGVjdGVkIGlkZW50aWZpZXIgZm9yIGEg
cmVzdCBlbGVtZW50IGRlY29uc3RydWN0aW9uIHBhdHRlcm4iKTsKKworICAgICAgICAgICAgICAg
IGNvbnRleHQuYXBwZW5kQXJyYXlQYXR0ZXJuUmVzdEVudHJ5KGFycmF5UGF0dGVybiwgbG9jYXRp
b24sIGlubmVyUGF0dGVybik7CisgICAgICAgICAgICAgICAgcmVzdEVsZW1lbnRXYXNGb3VuZCA9
IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKICAgICAgICAg
ICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbiA9IG1fdG9rZW4ubV9sb2NhdGlvbjsKICAgICAg
ICAgICAgIGF1dG8gaW5uZXJQYXR0ZXJuID0gcGFyc2VEZWNvbnN0cnVjdGlvblBhdHRlcm4oY29u
dGV4dCwga2luZCwgZGVwdGggKyAxKTsKICAgICAgICAgICAgIGlmIChraW5kID09IERlY29uc3Ry
dWN0VG9FeHByZXNzaW9ucyAmJiAhaW5uZXJQYXR0ZXJuKQpAQCAtNjIzLDcgKzY0MCw3IEBACiAK
ICAgICAgICAgaWYgKGtpbmQgPT0gRGVjb25zdHJ1Y3RUb0V4cHJlc3Npb25zICYmICFtYXRjaChD
TE9TRUJSQUNLRVQpKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGNvbnN1bWVPckZh
aWwoQ0xPU0VCUkFDS0VULCAiRXhwZWN0ZWQgZWl0aGVyIGEgY2xvc2luZyAnXScgb3IgYSAnLCcg
Zm9sbG93aW5nIGFuIGVsZW1lbnQgZGVjb25zdHJ1Y3Rpb24gcGF0dGVybiIpOworICAgICAgICBj
b25zdW1lT3JGYWlsKENMT1NFQlJBQ0tFVCwgcmVzdEVsZW1lbnRXYXNGb3VuZCA/ICJFeHBlY3Rl
ZCBhIGNsb3NpbmcgJ10nIGZvbGxvd2luZyBhIHJlc3QgZWxlbWVudCBkZWNvbnN0cnVjdGlvbiBw
YXR0ZXJuIiA6ICJFeHBlY3RlZCBlaXRoZXIgYSBjbG9zaW5nICddJyBvciBhICcsJyBmb2xsb3dp
bmcgYW4gZWxlbWVudCBkZWNvbnN0cnVjdGlvbiBwYXR0ZXJuIik7CiAgICAgICAgIGNvbnRleHQu
ZmluaXNoQXJyYXlQYXR0ZXJuKGFycmF5UGF0dGVybiwgZGl2b3RTdGFydCwgZGl2b3RTdGFydCwg
bGFzdFRva2VuRW5kUG9zaXRpb24oKSk7CiAgICAgICAgIHBhdHRlcm4gPSBhcnJheVBhdHRlcm47
CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9TeW50YXhDaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENo
ZWNrZXIuaAppbmRleCBiZTQ2MjFkMzdiYzE3Y2FkNTg5NmI0OGQxODZkZjQwNGUxMWJjYzljLi5m
NWQ0MjZmZThjMDNkMGE5MmRkOTNkZDkzYTc4YmE5OWFjZTU5NjM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaApAQCAtMzExLDYgKzMxMSw5IEBAIGNs
YXNzIFN5bnRheENoZWNrZXIgewogICAgIHZvaWQgYXBwZW5kQXJyYXlQYXR0ZXJuRW50cnkoQXJy
YXlQYXR0ZXJuLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBEZWNvbnN0cnVjdGlvblBhdHRlcm4s
IGludCkKICAgICB7CiAgICAgfQorICAgIHZvaWQgYXBwZW5kQXJyYXlQYXR0ZXJuUmVzdEVudHJ5
KEFycmF5UGF0dGVybiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRGVjb25zdHJ1Y3Rpb25QYXR0
ZXJuKQorICAgIHsKKyAgICB9CiAgICAgdm9pZCBmaW5pc2hBcnJheVBhdHRlcm4oQXJyYXlQYXR0
ZXJuLCBjb25zdCBKU1RleHRQb3NpdGlvbiYsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mKQogICAgIHsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL3Jlc3QtZWxlbWVudHMuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL3Jlc3QtZWxlbWVudHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDhlYzI1NjFh
ZTg2OTRkNjk3Yzk1N2NlNWUzNDQxZDk0YmJiNDNhOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcmVzdC1lbGVtZW50cy5qcwpAQCAtMCwwICsx
LDIyMyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTog
JyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2Fn
ZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7
CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
ZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICgh
ZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAg
IGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RT
eW50YXhFcnJvcihzY3JpcHQsIG1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAg
IHRyeSB7CisgICAgICAgIGV2YWwoc2NyaXB0KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAg
IGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvcikKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZCBzeW50YXggZXJyb3Igbm90IHRocm93biIpOworCisgICAgaWYgKFN0cmlu
ZyhlcnJvcikgIT09IG1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGVycm9y
OiAiICsgU3RyaW5nKGVycm9yKSk7Cit9CisKKyhmdW5jdGlvbiAoKSB7CisgICAgdmFyIFthLCBi
LCAuLi5jXSA9ICJDb2NvYSI7CisgICAgc2hvdWxkQmUoYSwgJ0MnKTsKKyAgICBzaG91bGRCZShi
LCAnbycpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGMpLCBTdHJpbmcucmF3YFsiYyIs
Im8iLCJhIl1gKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgdmFyIFthLCBiLCAuLi5j
XSA9ICJDbyI7CisgICAgc2hvdWxkQmUoYSwgJ0MnKTsKKyAgICBzaG91bGRCZShiLCAnbycpOwor
ICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KGMpLCBTdHJpbmcucmF3YFtdYCk7Cit9KCkpOwor
CisoZnVuY3Rpb24gKCkgeworICAgIHZhciBbYSwgYiwgLi4uY10gPSAiQyI7CisgICAgc2hvdWxk
QmUoYSwgJ0MnKTsKKyAgICBzaG91bGRCZShiLCB1bmRlZmluZWQpOworICAgIHNob3VsZEJlKEpT
T04uc3RyaW5naWZ5KGMpLCBTdHJpbmcucmF3YFtdYCk7Cit9KCkpOworCisoZnVuY3Rpb24gKCkg
eworICAgIHZhciBhLCBiLCBjOworICAgIFthLCBiLCAuLi5jXSA9ICJDb2NvYSI7CisgICAgc2hv
dWxkQmUoYSwgJ0MnKTsKKyAgICBzaG91bGRCZShiLCAnbycpOworICAgIHNob3VsZEJlKEpTT04u
c3RyaW5naWZ5KGMpLCBTdHJpbmcucmF3YFsiYyIsIm8iLCJhIl1gKTsKK30oKSk7CisKKyhmdW5j
dGlvbiAoKSB7CisgICAgdmFyIGEsIGIsIGM7CisgICAgW2EsIGIsIC4uLmNdID0gIkNvIjsKKyAg
ICBzaG91bGRCZShhLCAnQycpOworICAgIHNob3VsZEJlKGIsICdvJyk7CisgICAgc2hvdWxkQmUo
SlNPTi5zdHJpbmdpZnkoYyksIFN0cmluZy5yYXdgW11gKTsKK30oKSk7CisKKyhmdW5jdGlvbiAo
KSB7CisgICAgdmFyIGEsIGIsIGM7CisgICAgW2EsIGIsIC4uLmNdID0gIkMiOworICAgIHNob3Vs
ZEJlKGEsICdDJyk7CisgICAgc2hvdWxkQmUoYiwgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShK
U09OLnN0cmluZ2lmeShjKSwgU3RyaW5nLnJhd2BbXWApOworfSgpKTsKKworKGZ1bmN0aW9uIChb
YSwgYiwgLi4uY10pIHsKKyAgICBzaG91bGRCZShhLCAnQycpOworICAgIHNob3VsZEJlKGIsICdv
Jyk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoYyksIFN0cmluZy5yYXdgWyJjIiwibyIs
ImEiXWApOworfSgiQ29jb2EiKSk7CisKKyhmdW5jdGlvbiAoW2EsIGIsIC4uLmNdKSB7CisgICAg
c2hvdWxkQmUoYSwgJ0MnKTsKKyAgICBzaG91bGRCZShiLCAnbycpOworICAgIHNob3VsZEJlKEpT
T04uc3RyaW5naWZ5KGMpLCBTdHJpbmcucmF3YFtdYCk7Cit9KCJDbyIpKTsKKworKGZ1bmN0aW9u
IChbYSwgYiwgLi4uY10pIHsKKyAgICBzaG91bGRCZShhLCAnQycpOworICAgIHNob3VsZEJlKGIs
IHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoYyksIFN0cmluZy5yYXdg
W11gKTsKK30oIkMiKSk7CisKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YHZhciBbYSwgLi4u
YiwgY10gPSAyMGAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJywn
LiBFeHBlY3RlZCBhIGNsb3NpbmcgJ10nIGZvbGxvd2luZyBhIHJlc3QgZWxlbWVudCBkZWNvbnN0
cnVjdGlvbiBwYXR0ZXJuLmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgdmFyIFthLCAu
Li5iLF0gPSAyMGAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJywn
LiBFeHBlY3RlZCBhIGNsb3NpbmcgJ10nIGZvbGxvd2luZyBhIHJlc3QgZWxlbWVudCBkZWNvbnN0
cnVjdGlvbiBwYXR0ZXJuLmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgdmFyIFthLCAu
Li5iLCxdID0gMjBgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICcs
Jy4gRXhwZWN0ZWQgYSBjbG9zaW5nICddJyBmb2xsb3dpbmcgYSByZXN0IGVsZW1lbnQgZGVjb25z
dHJ1Y3Rpb24gcGF0dGVybi5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YHZhciBbYSwg
Li4uYiA9IDIwXSA9IDIwYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tl
biAnPScuIEV4cGVjdGVkIGEgY2xvc2luZyAnXScgZm9sbG93aW5nIGEgcmVzdCBlbGVtZW50IGRl
Y29uc3RydWN0aW9uIHBhdHRlcm4uYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2B2YXIg
W2EsIC4uLltiLCBjXV0gPSAyMGAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQg
dG9rZW4gJ10nLiBFeHBlY3RlZCBpZGVudGlmaWVyIGZvciBhIHJlc3QgZWxlbWVudCBkZWNvbnN0
cnVjdGlvbiBwYXR0ZXJuLmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgdmFyIFthLCAu
Li57IGIsIGMgfV0gPSAyMGAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9r
ZW4gJ10nLiBFeHBlY3RlZCBpZGVudGlmaWVyIGZvciBhIHJlc3QgZWxlbWVudCBkZWNvbnN0cnVj
dGlvbiBwYXR0ZXJuLmApOworCit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24g
KFthLCAuLi5iLCBjXSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQg
dG9rZW4gJywnLiBFeHBlY3RlZCBhIGNsb3NpbmcgJ10nIGZvbGxvd2luZyBhIHJlc3QgZWxlbWVu
dCBkZWNvbnN0cnVjdGlvbiBwYXR0ZXJuLmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdg
KGZ1bmN0aW9uIChbYSwgLi4uYixdKSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogVW5l
eHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGEgY2xvc2luZyAnXScgZm9sbG93aW5nIGEgcmVz
dCBlbGVtZW50IGRlY29uc3RydWN0aW9uIHBhdHRlcm4uYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3Ry
aW5nLnJhd2AoZnVuY3Rpb24gKFthLCAuLi5iLCxdKSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhF
cnJvcjogVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGEgY2xvc2luZyAnXScgZm9sbG93
aW5nIGEgcmVzdCBlbGVtZW50IGRlY29uc3RydWN0aW9uIHBhdHRlcm4uYCk7Cit0ZXN0U3ludGF4
RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gKFthLCAuLi5iID0gMjAsLF0pIHsgfSlgLCBTdHJp
bmcucmF3YFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICc9Jy4gRXhwZWN0ZWQgYSBjbG9z
aW5nICddJyBmb2xsb3dpbmcgYSByZXN0IGVsZW1lbnQgZGVjb25zdHJ1Y3Rpb24gcGF0dGVybi5g
KTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiAoW2EsIC4uLltiLCBjXV0p
IHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICddJy4gRXhw
ZWN0ZWQgaWRlbnRpZmllciBmb3IgYSByZXN0IGVsZW1lbnQgZGVjb25zdHJ1Y3Rpb24gcGF0dGVy
bi5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiAoW2EsIC4uLnsgYiwg
YyB9XSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJ10n
LiBFeHBlY3RlZCBpZGVudGlmaWVyIGZvciBhIHJlc3QgZWxlbWVudCBkZWNvbnN0cnVjdGlvbiBw
YXR0ZXJuLmApOworCitzaG91bGRUaHJvdyhmdW5jdGlvbiAoKSB7CisgICAgW2EsIC4uLmIsIGNd
ID0gMjA7Cit9LCAiUmVmZXJlbmNlRXJyb3I6IExlZnQgc2lkZSBvZiBhc3NpZ25tZW50IGlzIG5v
dCBhIHJlZmVyZW5jZS4iKTsKKworc2hvdWxkVGhyb3coZnVuY3Rpb24gKCkgeworICAgIFthLCAu
Li5iLF0gPSAyMAorfSwgIlJlZmVyZW5jZUVycm9yOiBMZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBp
cyBub3QgYSByZWZlcmVuY2UuIik7CisKK3Nob3VsZFRocm93KGZ1bmN0aW9uICgpIHsKKyAgICBb
YSwgLi4uYiwsXSA9IDIwCit9LCAiUmVmZXJlbmNlRXJyb3I6IExlZnQgc2lkZSBvZiBhc3NpZ25t
ZW50IGlzIG5vdCBhIHJlZmVyZW5jZS4iKTsKKworc2hvdWxkVGhyb3coZnVuY3Rpb24gKCkgewor
ICAgIFthLCAuLi5iID0gMjBdID0gMjAKK30sICJSZWZlcmVuY2VFcnJvcjogTGVmdCBzaWRlIG9m
IGFzc2lnbm1lbnQgaXMgbm90IGEgcmVmZXJlbmNlLiIpOworCisoZnVuY3Rpb24gKCkgeworICAg
IHZhciBhLCBiLCBjOworICAgIFthLCBiLCAuLi5bLi4uY11dID0gIkNvY29hIjsKKyAgICBzaG91
bGRCZShhLCAnQycpOworICAgIHNob3VsZEJlKGIsICdvJyk7CisgICAgc2hvdWxkQmUoSlNPTi5z
dHJpbmdpZnkoYyksIFN0cmluZy5yYXdgWyJjIiwibyIsImEiXWApOworfSgpKTsKKworKGZ1bmN0
aW9uICgpIHsKKyAgICB2YXIgYSwgYiwgYywgZCwgZSwgZjsKKyAgICBbYSwgYiwgLi4ueyAwOiBj
LCAxOiBkLCAyOiBlLCAzOiBmIH1dID0gIkNvY29hIjsKKyAgICBzaG91bGRCZShhLCAnQycpOwor
ICAgIHNob3VsZEJlKGIsICdvJyk7CisgICAgc2hvdWxkQmUoYywgJ2MnKTsKKyAgICBzaG91bGRC
ZShkLCAnbycpOworICAgIHNob3VsZEJlKGYsIHVuZGVmaW5lZCk7Cit9KCkpOworCisoZnVuY3Rp
b24gKCkgeworICAgIHZhciBhLCBiLCBjLCBkLCBlOworICAgIFthLCBiLCAuLi5bYywgZCwgLi4u
ZV1dID0gIkNvY29hIjsKKyAgICBzaG91bGRCZShhLCAnQycpOworICAgIHNob3VsZEJlKGIsICdv
Jyk7CisgICAgc2hvdWxkQmUoYywgJ2MnKTsKKyAgICBzaG91bGRCZShkLCAnbycpOworICAgIHNo
b3VsZEJlKEpTT04uc3RyaW5naWZ5KGUpLCBTdHJpbmcucmF3YFsiYSJdYCk7Cit9KCkpOworCitm
dW5jdGlvbiBpdGVyYXRvcihhcnJheSkgeworICAgIHZhciBuZXh0Q291bnQgPSAwOworICAgIHZh
ciByZXR1cm5Db3VudCA9IDA7CisgICAgdmFyIG9yaWdpbmFsID0gIGFycmF5LnZhbHVlcygpOwor
ICAgIHJldHVybiB7CisgICAgICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkgeworICAgICAgICAgICAg
cmV0dXJuIHRoaXM7CisgICAgICAgIH0sCisKKyAgICAgICAgbmV4dCgpIHsKKyAgICAgICAgICAg
ICsrbmV4dENvdW50OworICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsLm5leHQoKTsKKyAgICAg
ICAgfSwKKworICAgICAgICByZXR1cm4oKSB7CisgICAgICAgICAgICArK3JldHVybkNvdW50Owor
ICAgICAgICAgICAgcmV0dXJuIHsgZG9uZTogdHJ1ZSB9OworICAgICAgICB9LAorCisgICAgICAg
IHJlcG9ydE5leHQoKSB7CisgICAgICAgICAgICByZXR1cm4gbmV4dENvdW50OworICAgICAgICB9
LAorCisgICAgICAgIHJlcG9ydFJldHVybigpIHsKKyAgICAgICAgICAgIHJldHVybiByZXR1cm5D
b3VudDsKKyAgICAgICAgfQorICAgIH07Cit9OworCisoZnVuY3Rpb24gKCkgeworICAgIHZhciBp
dGVyID0gaXRlcmF0b3IoWzEsIDIsIDNdKTsKKyAgICB2YXIgWy4uLmFdID0gaXRlcjsKKyAgICBz
aG91bGRCZShpdGVyLnJlcG9ydE5leHQoKSwgNCk7CisgICAgc2hvdWxkQmUoaXRlci5yZXBvcnRS
ZXR1cm4oKSwgMCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoYSksIFN0cmluZy5yYXdg
WzEsMiwzXWApOworfSgpKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgaXRlciA9IGl0ZXJh
dG9yKFsxLCAyLCAzXSk7CisgICAgdmFyIFthLCBiLCAuLi5jXSA9IGl0ZXI7CisgICAgc2hvdWxk
QmUoaXRlci5yZXBvcnROZXh0KCksIDQpOworICAgIHNob3VsZEJlKGl0ZXIucmVwb3J0UmV0dXJu
KCksIDApOworICAgIHNob3VsZEJlKGEsIDEpOworICAgIHNob3VsZEJlKGIsIDIpOworICAgIHNo
b3VsZEJlKEpTT04uc3RyaW5naWZ5KGMpLCBTdHJpbmcucmF3YFszXWApOworfSgpKTsKKworKGZ1
bmN0aW9uICgpIHsKKyAgICB2YXIgaXRlciA9IGl0ZXJhdG9yKFsxLCAyLCAzXSk7CisgICAgdmFy
IFthLCBiLCBjLCBkLCAuLi5lXSA9IGl0ZXI7CisgICAgc2hvdWxkQmUoaXRlci5yZXBvcnROZXh0
KCksIDQpOworICAgIHNob3VsZEJlKGl0ZXIucmVwb3J0UmV0dXJuKCksIDApOworICAgIHNob3Vs
ZEJlKGEsIDEpOworICAgIHNob3VsZEJlKGIsIDIpOworICAgIHNob3VsZEJlKGMsIDMpOworICAg
IHNob3VsZEJlKGQsIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZSks
IFN0cmluZy5yYXdgW11gKTsKK30oKSk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgdmFyIGl0ZXIg
PSBpdGVyYXRvcihbMSwgMiwgM10pOworICAgIHZhciBhLCBiOworICAgIFsuLi5bYSwgYl1dID0g
aXRlcjsKKyAgICBzaG91bGRCZShpdGVyLnJlcG9ydE5leHQoKSwgNCk7CisgICAgc2hvdWxkQmUo
aXRlci5yZXBvcnRSZXR1cm4oKSwgMCk7CisgICAgc2hvdWxkQmUoYSwgMSk7CisgICAgc2hvdWxk
QmUoYiwgMik7Cit9KCkpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>