<?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>104691</bug_id>
          
          <creation_ts>2012-12-11 11:26:04 -0800</creation_ts>
          <short_desc>[WK2 NetworkProcess] DOM cookie access functions should respect private browsing</short_desc>
          <delta_ts>2012-12-13 14:47:44 -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>WebKit2</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>beidson</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>788627</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-12-11 11:26:04 -0800</bug_when>
    <thetext>DOM cookie access functions should respect private browsing.

&lt;rdar://problem/12838354&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788630</commentid>
    <comment_count>1</comment_count>
      <attachid>178841</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-12-11 11:33:54 -0800</bug_when>
    <thetext>Created attachment 178841
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788632</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-11 11:36:44 -0800</bug_when>
    <thetext>Attachment 178841 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp:160:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 1 in 17 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>788650</commentid>
    <comment_count>3</comment_count>
      <attachid>178841</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-11 12:04:16 -0800</bug_when>
    <thetext>Comment on attachment 178841
proposed patch

Attachment 178841 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15276326</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789016</commentid>
    <comment_count>4</comment_count>
      <attachid>178926</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-12-11 17:17:03 -0800</bug_when>
    <thetext>Created attachment 178926
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789024</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-11 17:22:41 -0800</bug_when>
    <thetext>Attachment 178926 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp:160:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 1 in 10 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>789073</commentid>
    <comment_count>6</comment_count>
      <attachid>178926</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-11 18:06:43 -0800</bug_when>
    <thetext>Comment on attachment 178926
Patch

Attachment 178926 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15282266</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789089</commentid>
    <comment_count>7</comment_count>
      <attachid>178941</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-12-11 18:22:57 -0800</bug_when>
    <thetext>Created attachment 178941
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789092</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-11 18:25:04 -0800</bug_when>
    <thetext>Attachment 178941 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp:160:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 1 in 10 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>789397</commentid>
    <comment_count>9</comment_count>
      <attachid>178941</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-12 02:47:01 -0800</bug_when>
    <thetext>Comment on attachment 178941
Patch

Attachment 178941 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15285236</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790804</commentid>
    <comment_count>10</comment_count>
      <attachid>179312</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-12-13 11:59:55 -0800</bug_when>
    <thetext>Created attachment 179312
proposed patch

Sam&apos;s patch didn&apos;t include WebCore and WebKit1 changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790807</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-13 12:03:16 -0800</bug_when>
    <thetext>Attachment 179312 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp:159:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 1 in 18 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>790825</commentid>
    <comment_count>12</comment_count>
      <attachid>179312</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-13 12:44:51 -0800</bug_when>
    <thetext>Comment on attachment 179312
proposed patch

Attachment 179312 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15309381</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790837</commentid>
    <comment_count>13</comment_count>
      <attachid>179319</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-12-13 12:53:48 -0800</bug_when>
    <thetext>Created attachment 179319
proposed patch

&gt; &apos;WebCore/NotImplemnted.h&apos;: No such file or directory

Indeed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790844</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-13 12:58:48 -0800</bug_when>
    <thetext>Attachment 179319 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebKit2/NetworkProcess/NetworkConnectionToWebProcess.cpp:159:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 1 in 18 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>790860</commentid>
    <comment_count>15</comment_count>
      <attachid>179319</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-13 13:23:01 -0800</bug_when>
    <thetext>Comment on attachment 179319
proposed patch

Attachment 179319 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15319352</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790876</commentid>
    <comment_count>16</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-12-13 13:46:11 -0800</bug_when>
    <thetext>Oooh!!! So WebKit1 and WebKit2 on Windows share WebFrameNetworkingContext - the headers are separate, but since name and namespace are the same, and we have a single DLL, we are pulling the same implementation. Nonsense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790878</commentid>
    <comment_count>17</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-12-13 13:49:19 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/changeset/137647&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790937</commentid>
    <comment_count>18</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-12-13 14:32:20 -0800</bug_when>
    <thetext>Oops, the patch was incomplete!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790941</commentid>
    <comment_count>19</comment_count>
      <attachid>179337</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-12-13 14:36:07 -0800</bug_when>
    <thetext>Created attachment 179337
follow-up</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790965</commentid>
    <comment_count>20</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-12-13 14:47:44 -0800</bug_when>
    <thetext>Follow-up committed &lt;http://trac.webkit.org/changeset/137657&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178841</attachid>
            <date>2012-12-11 11:33:54 -0800</date>
            <delta_ts>2012-12-11 17:17:00 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>PrivateBrowsingForDOMCookies.txt</filename>
            <type>text/plain</type>
            <size>28262</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzMzOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEyLTExICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8x
MjgzODM1ND4gUGVyLVRhYiBXZWJQcm9jZXNzOiBET00gY29va2llIGFjY2VzcyBmdW5jdGlvbnMg
c2hvdWxkIHJlc3BlY3QgcHJpdmF0ZSBicm93c2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NjkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250
ZXh0Lmg6IEFkZGVkIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGN1cnJlbnQKKyAgICAgICAgY29u
dGV4dCB0eXBlLiBJZGVhbGx5LCB3ZSB3b3VsZCB0cmFjayBjb250ZXh0cyBhY3Jvc3MgcHJvY2Vz
c2VzIGluIGEgZ2VuZXJpYyBtYW5uZXIsCisgICAgICAgIGJ1dCB3ZSBvbmx5IGhhdmUgdHdvIG5v
dywgYW5kIGRvbid0IG5lZWQgc3VjaCBjb21wbGljYXRpb25zLgorCiAyMDEyLTEyLTExICBKb25h
dGhvbiBKb25nc21hICA8am9uYXRob24uam9uZ3NtYUBjb2xsYWJvcmEuY28udWs+CiAKICAgICAg
ICAgW0dUS10gU291cCBuZXR3b3JrIGxvZ3MgYXJlIGZyZXF1ZW50bHkgaW50ZXJydXB0ZWQgYnkg
b3RoZXIgbG9nZ2luZyBtZXNzYWdlcwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JraW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvTmV0d29ya2luZ0NvbnRleHQuaAkocmV2aXNpb24gMTM3MjIwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JraW5nQ29udGV4dC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MCw2ICs4MCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQorICAgIHZpcnR1YWwgYm9vbCBpblByaXZhdGVCcm93
c2luZ01vZGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVm
IHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgPSAwOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEzNzMzOCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTEyLTExICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBA
YXBwbGUuY29tPgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjgzODM1ND4gUGVyLVRhYiBX
ZWJQcm9jZXNzOiBET00gY29va2llIGFjY2VzcyBmdW5jdGlvbnMgc2hvdWxkIHJlc3BlY3QgcHJp
dmF0ZSBicm93c2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA0NjkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUGFzcyBwcml2YXRlIGJyb3dzaW5nIHN0YXRlIGZyb20gbG9jYWwgY29udGV4dCB0byBy
ZW1vdGUgb25lLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpuZXR3b3JraW5nQ29udGV4dCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9y
RE9NKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNl
dENvb2tpZXNGcm9tRE9NKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmNvb2tpZXNFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmdldFJhd0Nvb2tpZXMp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRl
Q29va2llKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVBbGxDb29raWVzKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dC5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6
OmluUHJpdmF0ZUJyb3dzaW5nTW9kZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU5ldHdvcmtp
bmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNGb3JET00pOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvb2tpZXNGcm9tRE9NKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFJhd0Nvb2tpZXMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0SG9zdG5hbWVzV2l0aENv
b2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNv
b2tpZXNGb3JIb3N0bmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6ZGVsZXRlQWxsQ29va2llcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW06CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmluUHJpdmF0ZUJyb3dzaW5nTW9k
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VT
ZXNzaW9uKToKKwogMjAxMi0xMi0xMSAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+
CiAKICAgICAgICAgQ29yZUlQQzogQXJndW1lbnRFbmNvZGVyIHNob3VsZCBoYXZlIGFuIGlubGlu
ZSBidWZmZXIuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAx
MzcyMjApCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NCw2MCArMTU0LDcyIEBAIHZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldFMKICAgICBtX3NlcmlhbExvYWRp
bmdFbmFibGVkID0gZW5hYmxlZDsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Y29va2llc0ZvckRPTShjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1
cmwsIFN0cmluZyYgcmVzdWx0KQorc3RhdGljIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0KiBuZXR3
b3JraW5nQ29udGV4dChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCit7CisgICAgLy8gVGhp
cyBuZXR3b3JraW5nIGNvbnRleHQgaXMgb25seSBuZWVkZWQgdG8gZ2V0IHN0b3JhZ2Ugc2Vzc2lv
biBmcm9tLgorICAgIGlmIChwcml2YXRlQnJvd3NpbmdFbmFibGVkKSB7CisgICAgICAgIHN0YXRp
YyBSZW1vdGVOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCA9IFJlbW90ZU5ldHdvcmtpbmdDb250
ZXh0OjpjcmVhdGUoZmFsc2UsIGZhbHNlLCB0cnVlKS5sZWFrUmVmKCk7CisgICAgICAgIHJldHVy
biBjb250ZXh0OworICAgIH0gZWxzZSB7CisgICAgICAgIHN0YXRpYyBSZW1vdGVOZXR3b3JraW5n
Q29udGV4dCogY29udGV4dCA9IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpjcmVhdGUoZmFsc2Us
IGZhbHNlLCBmYWxzZSkubGVha1JlZigpOworICAgICAgICByZXR1cm4gY29udGV4dDsKKyAgICB9
Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00o
Ym9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBLVVJMJiB1cmwsIFN0cmluZyYgcmVzdWx0KQogewogICAgIC8vIEZJWE1FIChOZXR3b3JrUHJv
Y2Vzcyk6IFVzZSBhIGNvcnJlY3Qgc3RvcmFnZSBzZXNzaW9uLgotICAgIHJlc3VsdCA9IFdlYkNv
cmU6OmNvb2tpZXNGb3JET00oUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZShmYWxzZSwg
ZmFsc2UsIGZhbHNlKS5nZXQoKSwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXN1bHQgPSBXZWJD
b3JlOjpjb29raWVzRm9yRE9NKG5ldHdvcmtpbmdDb250ZXh0KHByaXZhdGVCcm93c2luZ0VuYWJs
ZWQpLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zyb21ET00oYm9vbCBwcml2YXRlQnJvd3NpbmdF
bmFibGVkLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgY29va2llU3RyaW5nKQogewogICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6IFVz
ZSBhIGNvcnJlY3Qgc3RvcmFnZSBzZXNzaW9uLgotICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9t
RE9NKFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpjcmVhdGUoZmFsc2UsIGZhbHNlLCBmYWxzZSku
Z2V0KCksIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKKyAgICBXZWJDb3JlOjpzZXRD
b29raWVzRnJvbURPTShuZXR3b3JraW5nQ29udGV4dChwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwg
Zmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRW5hYmxlZChjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBLVVJMJiB1cmwsIGJvb2wmIHJlc3VsdCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmNvb2tpZXNFbmFibGVkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29u
c3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBib29sJiByZXN1bHQpCiB7CiAg
ICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTogVXNlIGEgY29ycmVjdCBzdG9yYWdlIHNlc3Np
b24uCi0gICAgcmVzdWx0ID0gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQ6OmNyZWF0ZShmYWxzZSwgZmFsc2UsIGZhbHNlKS5nZXQoKSwgZmlyc3RQYXJ0eSwg
dXJsKTsKKyAgICByZXN1bHQgPSBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChuZXR3b3JraW5nQ29u
dGV4dChwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBTdHJpbmcmIHJl
c3VsdCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBTdHJpbmcmIHJlc3VsdCkKIHsKICAgICAvLyBG
SVhNRSAoTmV0d29ya1Byb2Nlc3MpOiBVc2UgYSBjb3JyZWN0IHN0b3JhZ2Ugc2Vzc2lvbi4KICAg
ICByZXN1bHQgPSBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSgwLCBmaXJz
dFBhcnR5LCB1cmwpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpn
ZXRSYXdDb29raWVzKGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVj
dG9yPENvb2tpZT4mIHJlc3VsdCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmdldFJhd0Nvb2tpZXMoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByZXN1bHQpCiB7CiAg
ICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTogVXNlIGEgY29ycmVjdCBzdG9yYWdlIHNlc3Np
b24uCi0gICAgV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6
Y3JlYXRlKGZhbHNlLCBmYWxzZSwgZmFsc2UpLmdldCgpLCBmaXJzdFBhcnR5LCB1cmwsIHJlc3Vs
dCk7CisgICAgV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhuZXR3b3JraW5nQ29udGV4dChwcml2YXRl
QnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsLCByZXN1bHQpOwogfQogCi12b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWUoY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpkZWxldGVDb29raWUoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKICAgICAvLyBGSVhNRSAoTmV0
d29ya1Byb2Nlc3MpOiBVc2UgYSBjb3JyZWN0IHN0b3JhZ2Ugc2Vzc2lvbi4KLSAgICBXZWJDb3Jl
OjpkZWxldGVDb29raWUoUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZShmYWxzZSwgZmFs
c2UsIGZhbHNlKS5nZXQoKSwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBXZWJDb3JlOjpkZWxldGVD
b29raWUobmV0d29ya2luZ0NvbnRleHQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIHVybCwgY29v
a2llTmFtZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmdldEhv
c3RuYW1lc1dpdGhDb29raWVzKFZlY3RvcjxTdHJpbmc+JiBob3N0bmFtZXMpCit2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhib29sIHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQsIFZlY3RvcjxTdHJpbmc+JiBob3N0bmFtZXMpCiB7CiAgICAg
Ly8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTogVXNlIGEgY29ycmVjdCBzdG9yYWdlIHNlc3Npb24u
CiAgICAgSGFzaFNldDxTdHJpbmc+IGhvc3RuYW1lc1NldDsKLSAgICBXZWJDb3JlOjpnZXRIb3N0
bmFtZXNXaXRoQ29va2llcyhSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6Y3JlYXRlKGZhbHNlLCBm
YWxzZSwgZmFsc2UpLmdldCgpLCBob3N0bmFtZXNTZXQpOworICAgIFdlYkNvcmU6OmdldEhvc3Ru
YW1lc1dpdGhDb29raWVzKG5ldHdvcmtpbmdDb250ZXh0KHByaXZhdGVCcm93c2luZ0VuYWJsZWQp
LCBob3N0bmFtZXNTZXQpOwogICAgIFdURjo6Y29weVRvVmVjdG9yKGhvc3RuYW1lc1NldCwgaG9z
dG5hbWVzKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRl
Q29va2llc0Zvckhvc3RuYW1lKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoYm9vbCBwcml2
YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewogICAgIC8vIEZJ
WE1FIChOZXR3b3JrUHJvY2Vzcyk6IFVzZSBhIGNvcnJlY3Qgc3RvcmFnZSBzZXNzaW9uLgotICAg
IFdlYkNvcmU6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShSZW1vdGVOZXR3b3JraW5nQ29udGV4
dDo6Y3JlYXRlKGZhbHNlLCBmYWxzZSwgZmFsc2UpLmdldCgpLCBob3N0bmFtZSk7CisgICAgV2Vi
Q29yZTo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKG5ldHdvcmtpbmdDb250ZXh0KHByaXZhdGVC
cm93c2luZ0VuYWJsZWQpLCBob3N0bmFtZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmRlbGV0ZUFsbENvb2tpZXMoKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZGVsZXRlQWxsQ29va2llcyhib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQp
CiB7CiAgICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTogVXNlIGEgY29ycmVjdCBzdG9yYWdl
IHNlc3Npb24uCi0gICAgV2ViQ29yZTo6ZGVsZXRlQWxsQ29va2llcyhSZW1vdGVOZXR3b3JraW5n
Q29udGV4dDo6Y3JlYXRlKGZhbHNlLCBmYWxzZSwgZmFsc2UpLmdldCgpKTsKKyAgICBXZWJDb3Jl
OjpkZWxldGVBbGxDb29raWVzKG5ldHdvcmtpbmdDb250ZXh0KHByaXZhdGVCcm93c2luZ0VuYWJs
ZWQpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgJKHJldmlzaW9uIDEzNzIyMCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTgy
LDE1ICs4MiwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgc3VzcGVuZFBlbmRpbmdSZXF1ZXN0cygp
OwogICAgIHZvaWQgcmVzdW1lUGVuZGluZ1JlcXVlc3RzKCk7CiAgICAgdm9pZCBzZXRTZXJpYWxM
b2FkaW5nRW5hYmxlZChib29sKTsKLSAgICB2b2lkIGNvb2tpZXNGb3JET00oY29uc3QgV2ViQ29y
ZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFN0cmluZyYgcmVzdWx0
KTsKLSAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGNv
b2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OktVUkwmLCBib29sJiByZXN1bHQpOwotICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
S1VSTCYsIFN0cmluZyYgcmVzdWx0KTsKLSAgICB2b2lkIGdldFJhd0Nvb2tpZXMoY29uc3QgV2Vi
Q29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+Jik7Ci0gICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6S1VS
TCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7Ci0gICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRo
Q29va2llcyhWZWN0b3I8U3RyaW5nPiYgaG9zdG5hbWVzKTsKLSAgICB2b2lkIGRlbGV0ZUNvb2tp
ZXNGb3JIb3N0bmFtZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKLSAgICB2b2lkIGRlbGV0ZUFs
bENvb2tpZXMoKTsKKyAgICB2b2lkIGNvb2tpZXNGb3JET00oYm9vbCBwcml2YXRlQnJvd3NpbmdF
bmFibGVkLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpL
VVJMJiwgU3RyaW5nJiByZXN1bHQpOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oYm9vbCBw
cml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBjb29raWVzRW5h
YmxlZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBib29sJiByZXN1bHQpOworICAgIHZvaWQg
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVk
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwg
U3RyaW5nJiByZXN1bHQpOworICAgIHZvaWQgZ2V0UmF3Q29va2llcyhib29sIHByaXZhdGVCcm93
c2luZ0VuYWJsZWQsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOworICAgIHZvaWQgZGVsZXRlQ29v
a2llKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNv
bnN0IFN0cmluZyYgY29va2llTmFtZSk7CisgICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2ll
cyhib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIFZlY3RvcjxTdHJpbmc+JiBob3N0bmFtZXMp
OworICAgIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGJvb2wgcHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7CisgICAgdm9pZCBkZWxldGVBbGxDb29r
aWVzKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7CiAKICAgICBSZWZQdHI8Q29yZUlQQzo6
Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIApJbmRleDogU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDEzNzIyMCkKKysrIFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxNSArMzksMTUgQEAgbWVzc2FnZXMgLT4gTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2NlcwogICAgIAogICAgIFNldFNlcmlhbExvYWRpbmdFbmFi
bGVkKGJvb2wgZW5hYmxlZCkgLT4gKCkKIAotICAgIENvb2tpZXNGb3JET00oV2ViQ29yZTo6S1VS
TCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpLVVJMIHVybCkgLT4gKFdURjo6U3RyaW5nIHJlc3VsdCkK
LSAgICBTZXRDb29raWVzRnJvbURPTShXZWJDb3JlOjpLVVJMIGZpcnN0UGFydHksIFdlYkNvcmU6
OktVUkwgdXJsLCBXVEY6OlN0cmluZyBjb29raWVTdHJpbmcpCi0gICAgQ29va2llc0VuYWJsZWQo
V2ViQ29yZTo6S1VSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpLVVJMIHVybCkgLT4gKGJvb2wgZW5h
YmxlZCkKLSAgICBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShXZWJDb3JlOjpLVVJMIGZp
cnN0UGFydHksIFdlYkNvcmU6OktVUkwgdXJsKSAtPiAoV1RGOjpTdHJpbmcgcmVzdWx0KQotICAg
IEdldFJhd0Nvb2tpZXMoV2ViQ29yZTo6S1VSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpLVVJMIHVy
bCkgLT4gKFdURjo6VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykKLSAgICBEZWxldGVD
b29raWUoV2ViQ29yZTo6S1VSTCB1cmwsIFdURjo6U3RyaW5nIGNvb2tpZU5hbWUpCi0gICAgR2V0
SG9zdG5hbWVzV2l0aENvb2tpZXMoKSAtPiAoV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+IGhvc3Ru
YW1lcykKLSAgICBEZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV1RGOjpTdHJpbmcgaG9zdG5hbWUp
Ci0gICAgRGVsZXRlQWxsQ29va2llcygpCisgICAgQ29va2llc0ZvckRPTShib29sIHByaXZhdGVC
cm93c2luZ0VuYWJsZWQsIFdlYkNvcmU6OktVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6S1VSTCB1
cmwpIC0+IChXVEY6OlN0cmluZyByZXN1bHQpCisgICAgU2V0Q29va2llc0Zyb21ET00oYm9vbCBw
cml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpLVVJMIGZpcnN0UGFydHksIFdlYkNvcmU6
OktVUkwgdXJsLCBXVEY6OlN0cmluZyBjb29raWVTdHJpbmcpCisgICAgQ29va2llc0VuYWJsZWQo
Ym9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpLVVJMIGZpcnN0UGFydHksIFdl
YkNvcmU6OktVUkwgdXJsKSAtPiAoYm9vbCBlbmFibGVkKQorICAgIENvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgV2ViQ29yZTo6S1VSTCBm
aXJzdFBhcnR5LCBXZWJDb3JlOjpLVVJMIHVybCkgLT4gKFdURjo6U3RyaW5nIHJlc3VsdCkKKyAg
ICBHZXRSYXdDb29raWVzKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgV2ViQ29yZTo6S1VS
TCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpLVVJMIHVybCkgLT4gKFdURjo6VmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4gY29va2llcykKKyAgICBEZWxldGVDb29raWUoYm9vbCBwcml2YXRlQnJvd3NpbmdF
bmFibGVkLCBXZWJDb3JlOjpLVVJMIHVybCwgV1RGOjpTdHJpbmcgY29va2llTmFtZSkKKyAgICBH
ZXRIb3N0bmFtZXNXaXRoQ29va2llcyhib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpIC0+IChX
VEY6OlZlY3RvcjxXVEY6OlN0cmluZz4gaG9zdG5hbWVzKQorICAgIERlbGV0ZUNvb2tpZXNGb3JI
b3N0bmFtZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIFdURjo6U3RyaW5nIGhvc3RuYW1l
KQorICAgIERlbGV0ZUFsbENvb2tpZXMoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQogfQog
CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29u
dGV4dC5oCShyZXZpc2lvbiAxMzcyMjApCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiAr
NDksNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIG5lZWRzU2l0ZVNwZWNpZmljUXVp
cmtzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGxvY2FsRmlsZUNvbnRlbnRT
bmlmZmluZ0VuYWJsZWQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaW5Qcml2
YXRlQnJvd3NpbmdNb2RlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBDRlVSTFN0b3Jh
Z2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBOU09wZXJhdGlvblF1ZXVlICpzY2hlZHVsZWRPcGVyYXRpb25RdWV1ZSgpIGNvbnN0IE9WRVJS
SURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgT1ZFUlJJREU7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5l
dHdvcmtpbmdDb250ZXh0Lm1tCShyZXZpc2lvbiAxMzcyMjApCisrKyBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTYzLDkgKzYzLDE0IEBAIGJvb2wgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmxvY2Fs
RmlsZUMKICAgICByZXR1cm4gbV9sb2NhbEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVkOwogfQog
Citib29sIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjppblByaXZhdGVCcm93c2luZ01vZGUoKSBj
b25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGVCcm93c2luZ0VuYWJsZWQ7Cit9CisKIENGVVJM
U3RvcmFnZVNlc3Npb25SZWYgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9u
KCkgY29uc3QKIHsKLSAgICBpZiAobV9wcml2YXRlQnJvd3NpbmdFbmFibGVkKSB7CisgICAgaWYg
KGluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpKSB7CiAgICAgICAgIEFTU0VSVChwcml2YXRlQnJvd3Np
bmdTdG9yYWdlU2Vzc2lvbik7CiAgICAgICAgIHJldHVybiBwcml2YXRlQnJvd3NpbmdTdG9yYWdl
U2Vzc2lvbjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
CShyZXZpc2lvbiAxMzcyMjApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw3
ICsxMjAsNyBAQCBTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yCiAjaWYg
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNl
c05ldHdvcmtQcm9jZXNzKCkpIHsKICAgICAgICAgU3RyaW5nIHJlc3VsdDsKLSAgICAgICAgaWYg
KCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2ll
c0ZvckRPTShmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OkNvb2tpZXNGb3JET006OlJlcGx5KHJlc3VsdCksIDApKQorICAgICAgICBpZiAo
IVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+
c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVz
Rm9yRE9NKGNvbnRleHQtPmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpLCBmaXJzdFBhcnR5LCB1cmwp
LCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET006
OlJlcGx5KHJlc3VsdCksIDApKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6c2V0Q29va2llc0ZyCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsK
LSAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0
Q29va2llc0Zyb21ET00oZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpLCAwKTsKKyAgICAg
ICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q29va2ll
c0Zyb21ET00oY29udGV4dC0+aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCksIGZpcnN0UGFydHksIHVy
bCwgY29va2llU3RyaW5nKSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKQEAg
LTE0Niw3ICsxNDYsNyBAQCBib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0VuYWJs
CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVk
KCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKICAgICAgICAgYm9vbCByZXN1bHQ7Ci0gICAgICAg
IGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlv
bigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNv
b2tpZXNFbmFibGVkKGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Q29va2llc0VuYWJsZWQ6OlJlcGx5KHJlc3VsdCksIDApKQorICAgICAg
ICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rp
b24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpD
b29raWVzRW5hYmxlZChjb250ZXh0LT5pblByaXZhdGVCcm93c2luZ01vZGUoKSwgZmlyc3RQYXJ0
eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVz
RW5hYmxlZDo6UmVwbHkocmVzdWx0KSwgMCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtMTYwLDcgKzE2MCw3IEBAIFN0cmluZyBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZVJlcXUKICNpZiBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3MoKSkg
ewogICAgICAgICBTdHJpbmcgcmVzdWx0OwotICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJl
ZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlOjpSZXBseShyZXN1bHQpLCAwKSkK
KyAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5j
b25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29udGV4dC0+aW5Qcml2YXRlQnJv
d3NpbmdNb2RlKCksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWU6OlJlcGx5KHJlc3Vs
dCksIDApKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KQEAgLTE3Myw3ICsxNzMsNyBAQCBib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Z2V0UmF3Q29va2llCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAo
V2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgaWYg
KCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3
Q29va2llcyhmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OkdldFJhd0Nvb2tpZXM6OlJlcGx5KHJhd0Nvb2tpZXMpLCAwKSkKKyAgICAgICAg
aWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0
UmF3Q29va2llcyhjb250ZXh0LT5pblByaXZhdGVCcm93c2luZ01vZGUoKSwgZmlyc3RQYXJ0eSwg
dXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29r
aWVzOjpSZXBseShyYXdDb29raWVzKSwgMCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lkIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29va2llCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkp
IHsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
RGVsZXRlQ29va2llKHVybCwgY29va2llTmFtZSksIDApOworICAgICAgICBXZWJQcm9jZXNzOjpz
aGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpEZWxldGVDb29raWUoY29udGV4dC0+aW5Q
cml2YXRlQnJvd3NpbmdNb2RlKCksIHVybCwgY29va2llTmFtZSksIDApOwogICAgICAgICByZXR1
cm47CiAgICAgfQogI2VuZGlmCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmdldEhvc3RuYW1lcwogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAg
aWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAg
IFZlY3RvcjxTdHJpbmc+IGhvc3RuYW1lc1ZlY3RvcjsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2hh
cmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldEhvc3RuYW1lc1dpdGhDb29raWVz
KCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0SG9zdG5hbWVz
V2l0aENvb2tpZXM6OlJlcGx5KGhvc3RuYW1lc1ZlY3RvciksIDApOworICAgICAgICBXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5j
KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0SG9zdG5hbWVzV2l0
aENvb2tpZXMoY29udGV4dC0+aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkpLCBNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldEhvc3RuYW1lc1dpdGhDb29raWVzOjpSZXBs
eShob3N0bmFtZXNWZWN0b3IpLCAwKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSAh
PSBob3N0bmFtZXNWZWN0b3Iuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBob3N0bmFtZXMuYWRk
KGhvc3RuYW1lc1ZlY3RvcltpXSk7CiAgICAgICAgIHJldHVybjsKQEAgLTIxMyw3ICsyMTMsNyBA
QCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29va2llCiB7CiAjaWYgRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdv
cmtQcm9jZXNzKCkpIHsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5l
Y3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6RGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGhvc3RuYW1lKSwgMCk7CisgICAg
ICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkRlbGV0ZUNv
b2tpZXNGb3JIb3N0bmFtZShjb250ZXh0LT5pblByaXZhdGVCcm93c2luZ01vZGUoKSwgaG9zdG5h
bWUpLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpAQCAtMjI1LDcgKzIyNSw3
IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWxldGVBbGxDb28KIHsKICNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0
d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29u
bmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpEZWxldGVBbGxDb29raWVzKCksIDApOworICAgICAgICBXZWJQcm9jZXNz
OjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpEZWxldGVBbGxDb29raWVzKGNvbnRl
eHQtPmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpKSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0LmgJKHJldmlzaW9uIDEzNzIyMCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5
KQpAQCAtNDgsNiArNDgsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIG5lZWRzU2l0
ZVNwZWNpZmljUXVpcmtzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGxvY2Fs
RmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGJvb2wgaW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCBXZWJDb3JlOjpTY2hlZHVsZVBhaXJIYXNoU2V0KiBzY2hlZHVsZWRSdW5M
b29wUGFpcnMoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNl
RXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0
IE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0Lm1tCShyZXZpc2lvbiAxMzcyMjApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDMsMTAgKzEwMywxNCBAQCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIFdlYkZy
YW1lTmV0d29ya2luCiAgICAgcmV0dXJuIGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uOwogfQogCiti
b29sIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKSAmJiBmcmFt
ZSgpLT5zZXR0aW5ncygpLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7Cit9CisKIENGVVJMU3Rv
cmFnZVNlc3Npb25SZWYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24o
KSBjb25zdAogewotICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IGZyYW1lKCkgJiYg
ZnJhbWUoKS0+c2V0dGluZ3MoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLT5wcml2YXRlQnJvd3Np
bmdFbmFibGVkKCk7Ci0gICAgaWYgKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpIHsKKyAgICBpZiAo
aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkpIHsKICAgICAgICAgQVNTRVJUKHByaXZhdGVCcm93c2lu
Z1N0b3JhZ2VTZXNzaW9uKTsKICAgICAgICAgcmV0dXJuIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VT
ZXNzaW9uOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzMzOCkKKysr
IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2
IEBACisyMDEyLTEyLTExICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMjgzODM1ND4gUGVyLVRhYiBXZWJQcm9jZXNzOiBET00g
Y29va2llIGFjY2VzcyBmdW5jdGlvbnMgc2hvdWxkIHJlc3BlY3QgcHJpdmF0ZSBicm93c2luZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NjkxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbToKKyAgICAgICAgKFdlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQ6OmluUHJpdmF0ZUJyb3dzaW5nTW9kZSk6CisgICAgICAgIChXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbik6CisgICAgICAgIEltcGxlbWVudGVk
IGluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpLgorCiAyMDEyLTEyLTExICBNaWtlIFdlc3QgIDxta3dz
dEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQ29uc29sZVR5cGVzIHNo
b3VsZCBub3QgZXhwb3NlIE1lc3NhZ2VUeXBlIC0gaXQgc2hvdWxkIGJlIHByaXZhdGUgdG8gaW5z
cGVjdG9yLgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkocmV2aXNpb24gMTM3MjIwKQor
KysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIHByaXZhdGU6CiAKICAgICB2
aXJ0dWFsIGJvb2wgbmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIGJvb2wgbG9jYWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZCgpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpblByaXZhdGVCcm93c2luZ01vZGUoKSBjb25zdCBP
VkVSUklERTsKICAgICB2aXJ0dWFsIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Np
b24oKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlNjaGVkdWxlUGFpckhh
c2hTZXQqIHNjaGVkdWxlZFJ1bkxvb3BQYWlycygpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1
YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JikgY29uc3QgT1ZFUlJJREU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQubW0JKHJldmlzaW9uIDEzNzIyMCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0JKHdvcmtpbmcgY29weSkKQEAgLTk3LDEw
ICs5NywxNCBAQCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIFdlYkZyYW1lTmV0d29ya2luCiAgICAg
cmV0dXJuIGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uOwogfQogCitib29sIFdlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQ6OmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLT5w
cml2YXRlQnJvd3NpbmdFbmFibGVkKCk7Cit9CisKIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogewotICAgIGJv
b2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3Mo
KSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7Ci0gICAg
aWYgKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpIHsKKyAgICBpZiAoaW5Qcml2YXRlQnJvd3NpbmdN
b2RlKCkpIHsKICAgICAgICAgQVNTRVJUKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKTsK
ICAgICAgICAgcmV0dXJuIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uOwogICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzMzOCkKKysrIFNvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEyLTEyLTExICBB
bGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8xMjgzODM1ND4gUGVyLVRhYiBXZWJQcm9jZXNzOiBET00gY29va2llIGFjY2VzcyBmdW5j
dGlvbnMgc2hvdWxkIHJlc3BlY3QgcHJpdmF0ZSBicm93c2luZworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NjkxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6
OmluUHJpdmF0ZUJyb3dzaW5nTW9kZSk6CisgICAgICAgIChXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0OjpzdG9yYWdlU2Vzc2lvbik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAgICBJbXBsZW1lbnRlZCBpblByaXZhdGVCcm93c2lu
Z01vZGUoKS4KKwogMjAxMi0xMi0xMSAgTWlrZSBXZXN0ICA8bWt3c3RAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IENvbnNvbGVUeXBlcyBzaG91bGQgbm90IGV4cG9zZSBN
ZXNzYWdlVHlwZSAtIGl0IHNob3VsZCBiZSBwcml2YXRlIHRvIGluc3BlY3Rvci4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCShyZXZpc2lvbiAxMzcyMjApCisrKyBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTA4LDkgKzEwOCwxNCBAQCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIFdl
YkZyYW1lTmV0d29ya2luCiAgICAgcmV0dXJuIGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uOwogfQog
Citib29sIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKSAmJiBm
cmFtZSgpLT5zZXR0aW5ncygpLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7Cit9CisKIENGVVJM
U3RvcmFnZVNlc3Npb25SZWYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Np
b24oKSBjb25zdAogewotICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IGZyYW1lKCkg
JiYgZnJhbWUoKS0+c2V0dGluZ3MoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLT5wcml2YXRlQnJv
d3NpbmdFbmFibGVkKCk7CisgICAgYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkID0gaW5Qcml2
YXRlQnJvd3NpbmdNb2RlKCk7CiAgICAgaWYgKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpIHsKICAg
ICAgICAgQVNTRVJUKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKTsKICAgICAgICAgcmV0
dXJuIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uOwpJbmRleDogU291cmNlL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQuaAkocmV2aXNpb24gMTM3MjIwKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2
ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBXVEY6OlN0cmluZyB1c2VyQWdlbnQoKSBj
b25zdDsKICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHJlZmVycmVyKCkgY29uc3Q7CiAjaWYgVVNF
KENGTkVUV09SSykKKyAgICB2aXJ0dWFsIGJvb2wgaW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkgY29u
c3Q7CiAgICAgdmlydHVhbCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKCkg
Y29uc3Q7CiAjZW5kaWYKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tl
ZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178926</attachid>
            <date>2012-12-11 17:17:03 -0800</date>
            <delta_ts>2012-12-11 18:22:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104691-20121211171424.patch</filename>
            <type>text/plain</type>
            <size>22431</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzM3NSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTEyLTExICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8x
MjgzODM1ND4gUGVyLVRhYiBXZWJQcm9jZXNzOiBET00gY29va2llIGFjY2VzcyBmdW5jdGlvbnMg
c2hvdWxkIHJlc3BlY3QgcHJpdmF0ZSBicm93c2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NjkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUGFzcyBwcml2YXRlIGJyb3dzaW5nIHN0YXRlIGZyb20g
bG9jYWwgY29udGV4dCB0byByZW1vdGUgb25lLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpuZXR3
b3JraW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpjb29raWVzRm9yRE9NKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFibGVkKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0
bmFtZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpk
ZWxldGVBbGxDb29raWVzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TmV0d29ya2luZ0NvbnRleHQ6OmluUHJpdmF0ZUJyb3dzaW5nTW9kZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNGb3JET00pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvb2tpZXNGcm9tRE9NKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRW5hYmxlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmRlbGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQWxsQ29va2llcyk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQubW06CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6Omlu
UHJpdmF0ZUJyb3dzaW5nTW9kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKToKKwogMjAxMi0xMi0xMSAgR3dhbmcgWW9vbiBId2Fu
ZyAgPHJ5dW1pZWxAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgQ29vcmRpbmF0ZWQgR3JhcGhp
Y3M6IFJlbmFtZSBMYXllclRyZWVDb29yZGluYXRvciB0byBDb29yZGluYXRlZExheWVyVHJlZUhv
c3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDEzNzM3NSkK
KysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDYwICsxNTQsNzIgQEAgdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0UwogICAgIG1fc2VyaWFsTG9hZGluZ0VuYWJs
ZWQgPSBlbmFibGVkOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpj
b29raWVzRm9yRE9NKGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgU3Ry
aW5nJiByZXN1bHQpCitzdGF0aWMgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQqIG5ldHdvcmtpbmdD
b250ZXh0KGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKK3sKKyAgICAvLyBUaGlzIG5ldHdv
cmtpbmcgY29udGV4dCBpcyBvbmx5IG5lZWRlZCB0byBnZXQgc3RvcmFnZSBzZXNzaW9uIGZyb20u
CisgICAgaWYgKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpIHsKKyAgICAgICAgc3RhdGljIFJlbW90
ZU5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0ID0gUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmNy
ZWF0ZShmYWxzZSwgZmFsc2UsIHRydWUpLmxlYWtSZWYoKTsKKyAgICAgICAgcmV0dXJuIGNvbnRl
eHQ7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc3RhdGljIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0
KiBjb250ZXh0ID0gUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZShmYWxzZSwgZmFsc2Us
IGZhbHNlKS5sZWFrUmVmKCk7CisgICAgICAgIHJldHVybiBjb250ZXh0OworICAgIH0KK30KKwor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShib29sIHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwm
IHVybCwgU3RyaW5nJiByZXN1bHQpCiB7CiAgICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTog
VXNlIGEgY29ycmVjdCBzdG9yYWdlIHNlc3Npb24uCi0gICAgcmVzdWx0ID0gV2ViQ29yZTo6Y29v
a2llc0ZvckRPTShSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6Y3JlYXRlKGZhbHNlLCBmYWxzZSwg
ZmFsc2UpLmdldCgpLCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNv
b2tpZXNGb3JET00obmV0d29ya2luZ0NvbnRleHQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIGZp
cnN0UGFydHksIHVybCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQs
IGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBj
b29raWVTdHJpbmcpCiB7CiAgICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTogVXNlIGEgY29y
cmVjdCBzdG9yYWdlIHNlc3Npb24uCi0gICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oUmVt
b3RlTmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZShmYWxzZSwgZmFsc2UsIGZhbHNlKS5nZXQoKSwg
Zmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOworICAgIFdlYkNvcmU6OnNldENvb2tpZXNG
cm9tRE9NKG5ldHdvcmtpbmdDb250ZXh0KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBh
cnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmNvb2tpZXNFbmFibGVkKGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtV
UkwmIHVybCwgYm9vbCYgcmVzdWx0KQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Y29va2llc0VuYWJsZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGJvb2wmIHJlc3VsdCkKIHsKICAgICAvLyBG
SVhNRSAoTmV0d29ya1Byb2Nlc3MpOiBVc2UgYSBjb3JyZWN0IHN0b3JhZ2Ugc2Vzc2lvbi4KLSAg
ICByZXN1bHQgPSBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChSZW1vdGVOZXR3b3JraW5nQ29udGV4
dDo6Y3JlYXRlKGZhbHNlLCBmYWxzZSwgZmFsc2UpLmdldCgpLCBmaXJzdFBhcnR5LCB1cmwpOwor
ICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKG5ldHdvcmtpbmdDb250ZXh0KHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShj
b25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFN0cmluZyYgcmVzdWx0KQor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBLVVJMJiB1cmwsIFN0cmluZyYgcmVzdWx0KQogewogICAgIC8vIEZJWE1FIChO
ZXR3b3JrUHJvY2Vzcyk6IFVzZSBhIGNvcnJlY3Qgc3RvcmFnZSBzZXNzaW9uLgogICAgIHJlc3Vs
dCA9IFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKDAsIGZpcnN0UGFydHks
IHVybCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmdldFJhd0Nv
b2tpZXMoY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29v
a2llPiYgcmVzdWx0KQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0UmF3
Q29va2llcyhib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IEtVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJlc3VsdCkKIHsKICAgICAvLyBG
SVhNRSAoTmV0d29ya1Byb2Nlc3MpOiBVc2UgYSBjb3JyZWN0IHN0b3JhZ2Ugc2Vzc2lvbi4KLSAg
ICBXZWJDb3JlOjpnZXRSYXdDb29raWVzKFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpjcmVhdGUo
ZmFsc2UsIGZhbHNlLCBmYWxzZSkuZ2V0KCksIGZpcnN0UGFydHksIHVybCwgcmVzdWx0KTsKKyAg
ICBXZWJDb3JlOjpnZXRSYXdDb29raWVzKG5ldHdvcmtpbmdDb250ZXh0KHByaXZhdGVCcm93c2lu
Z0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwsIHJlc3VsdCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlbGV0ZUNvb2tpZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmRlbGV0ZUNvb2tpZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewogICAgIC8vIEZJWE1FIChOZXR3b3JrUHJv
Y2Vzcyk6IFVzZSBhIGNvcnJlY3Qgc3RvcmFnZSBzZXNzaW9uLgotICAgIFdlYkNvcmU6OmRlbGV0
ZUNvb2tpZShSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6Y3JlYXRlKGZhbHNlLCBmYWxzZSwgZmFs
c2UpLmdldCgpLCB1cmwsIGNvb2tpZU5hbWUpOworICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShu
ZXR3b3JraW5nQ29udGV4dChwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgdXJsLCBjb29raWVOYW1l
KTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMoVmVjdG9yPFN0cmluZz4mIGhvc3RuYW1lcykKK3ZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKGJvb2wgcHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCwgVmVjdG9yPFN0cmluZz4mIGhvc3RuYW1lcykKIHsKICAgICAvLyBGSVhN
RSAoTmV0d29ya1Byb2Nlc3MpOiBVc2UgYSBjb3JyZWN0IHN0b3JhZ2Ugc2Vzc2lvbi4KICAgICBI
YXNoU2V0PFN0cmluZz4gaG9zdG5hbWVzU2V0OwotICAgIFdlYkNvcmU6OmdldEhvc3RuYW1lc1dp
dGhDb29raWVzKFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpjcmVhdGUoZmFsc2UsIGZhbHNlLCBm
YWxzZSkuZ2V0KCksIGhvc3RuYW1lc1NldCk7CisgICAgV2ViQ29yZTo6Z2V0SG9zdG5hbWVzV2l0
aENvb2tpZXMobmV0d29ya2luZ0NvbnRleHQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIGhvc3Ru
YW1lc1NldCk7CiAgICAgV1RGOjpjb3B5VG9WZWN0b3IoaG9zdG5hbWVzU2V0LCBob3N0bmFtZXMp
OwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWVz
Rm9ySG9zdG5hbWUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShib29sIHByaXZhdGVCcm93
c2luZ0VuYWJsZWQsIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7CiAgICAgLy8gRklYTUUgKE5l
dHdvcmtQcm9jZXNzKTogVXNlIGEgY29ycmVjdCBzdG9yYWdlIHNlc3Npb24uCi0gICAgV2ViQ29y
ZTo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpjcmVh
dGUoZmFsc2UsIGZhbHNlLCBmYWxzZSkuZ2V0KCksIGhvc3RuYW1lKTsKKyAgICBXZWJDb3JlOjpk
ZWxldGVDb29raWVzRm9ySG9zdG5hbWUobmV0d29ya2luZ0NvbnRleHQocHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCksIGhvc3RuYW1lKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZGVsZXRlQWxsQ29va2llcygpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpkZWxldGVBbGxDb29raWVzKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKIHsKICAg
ICAvLyBGSVhNRSAoTmV0d29ya1Byb2Nlc3MpOiBVc2UgYSBjb3JyZWN0IHN0b3JhZ2Ugc2Vzc2lv
bi4KLSAgICBXZWJDb3JlOjpkZWxldGVBbGxDb29raWVzKFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0
OjpjcmVhdGUoZmFsc2UsIGZhbHNlLCBmYWxzZSkuZ2V0KCkpOworICAgIFdlYkNvcmU6OmRlbGV0
ZUFsbENvb2tpZXMobmV0d29ya2luZ0NvbnRleHQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aAkocmV2aXNpb24gMTM3Mzc1KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtODIsMTUgKzgy
LDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdXNwZW5kUGVuZGluZ1JlcXVlc3RzKCk7CiAgICAg
dm9pZCByZXN1bWVQZW5kaW5nUmVxdWVzdHMoKTsKICAgICB2b2lkIHNldFNlcmlhbExvYWRpbmdF
bmFibGVkKGJvb2wpOwotICAgIHZvaWQgY29va2llc0ZvckRPTShjb25zdCBXZWJDb3JlOjpLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgU3RyaW5nJiByZXN1bHQpOwotICAg
IHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgY29va2llc0Vu
YWJsZWQoY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VS
TCYsIGJvb2wmIHJlc3VsdCk7Ci0gICAgdm9pZCBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwg
U3RyaW5nJiByZXN1bHQpOwotICAgIHZvaWQgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4mKTsKLSAgICB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29u
c3QgU3RyaW5nJiBjb29raWVOYW1lKTsKLSAgICB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVz
KFZlY3RvcjxTdHJpbmc+JiBob3N0bmFtZXMpOwotICAgIHZvaWQgZGVsZXRlQ29va2llc0Zvckhv
c3RuYW1lKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpOwotICAgIHZvaWQgZGVsZXRlQWxsQ29va2ll
cygpOworICAgIHZvaWQgY29va2llc0ZvckRPTShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQs
IGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBT
dHJpbmcmIHJlc3VsdCk7CisgICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShib29sIHByaXZhdGVC
cm93c2luZ0VuYWJsZWQsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGNvb2tpZXNFbmFibGVkKGJv
b2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGJvb2wmIHJlc3VsdCk7CisgICAgdm9pZCBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0
IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBTdHJpbmcm
IHJlc3VsdCk7CisgICAgdm9pZCBnZXRSYXdDb29raWVzKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VS
TCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdm9pZCBkZWxldGVDb29raWUoYm9v
bCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3Ry
aW5nJiBjb29raWVOYW1lKTsKKyAgICB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKGJvb2wg
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgVmVjdG9yPFN0cmluZz4mIGhvc3RuYW1lcyk7CisgICAg
dm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVk
LCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKKyAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoYm9v
bCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKTsKIAogICAgIFJlZlB0cjxDb3JlSVBDOjpDb25uZWN0
aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTM3Mzc1KQorKysgU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4J
KHdvcmtpbmcgY29weSkKQEAgLTM5LDE1ICszOSwxNSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzCiAgICAgCiAgICAgU2V0U2VyaWFsTG9hZGluZ0VuYWJsZWQoYm9v
bCBlbmFibGVkKSAtPiAoKQogCi0gICAgQ29va2llc0ZvckRPTShXZWJDb3JlOjpLVVJMIGZpcnN0
UGFydHksIFdlYkNvcmU6OktVUkwgdXJsKSAtPiAoV1RGOjpTdHJpbmcgcmVzdWx0KQotICAgIFNl
dENvb2tpZXNGcm9tRE9NKFdlYkNvcmU6OktVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6S1VSTCB1
cmwsIFdURjo6U3RyaW5nIGNvb2tpZVN0cmluZykKLSAgICBDb29raWVzRW5hYmxlZChXZWJDb3Jl
OjpLVVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OktVUkwgdXJsKSAtPiAoYm9vbCBlbmFibGVkKQot
ICAgIENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFdlYkNvcmU6OktVUkwgZmlyc3RQYXJ0
eSwgV2ViQ29yZTo6S1VSTCB1cmwpIC0+IChXVEY6OlN0cmluZyByZXN1bHQpCi0gICAgR2V0UmF3
Q29va2llcyhXZWJDb3JlOjpLVVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OktVUkwgdXJsKSAtPiAo
V1RGOjpWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKQotICAgIERlbGV0ZUNvb2tpZShX
ZWJDb3JlOjpLVVJMIHVybCwgV1RGOjpTdHJpbmcgY29va2llTmFtZSkKLSAgICBHZXRIb3N0bmFt
ZXNXaXRoQ29va2llcygpIC0+IChXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4gaG9zdG5hbWVzKQot
ICAgIERlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShXVEY6OlN0cmluZyBob3N0bmFtZSkKLSAgICBE
ZWxldGVBbGxDb29raWVzKCkKKyAgICBDb29raWVzRm9yRE9NKGJvb2wgcHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCwgV2ViQ29yZTo6S1VSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpLVVJMIHVybCkgLT4g
KFdURjo6U3RyaW5nIHJlc3VsdCkKKyAgICBTZXRDb29raWVzRnJvbURPTShib29sIHByaXZhdGVC
cm93c2luZ0VuYWJsZWQsIFdlYkNvcmU6OktVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6S1VSTCB1
cmwsIFdURjo6U3RyaW5nIGNvb2tpZVN0cmluZykKKyAgICBDb29raWVzRW5hYmxlZChib29sIHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQsIFdlYkNvcmU6OktVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6
S1VSTCB1cmwpIC0+IChib29sIGVuYWJsZWQpCisgICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpLVVJMIGZpcnN0UGFy
dHksIFdlYkNvcmU6OktVUkwgdXJsKSAtPiAoV1RGOjpTdHJpbmcgcmVzdWx0KQorICAgIEdldFJh
d0Nvb2tpZXMoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpLVVJMIGZpcnN0
UGFydHksIFdlYkNvcmU6OktVUkwgdXJsKSAtPiAoV1RGOjpWZWN0b3I8V2ViQ29yZTo6Q29va2ll
PiBjb29raWVzKQorICAgIERlbGV0ZUNvb2tpZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQs
IFdlYkNvcmU6OktVUkwgdXJsLCBXVEY6OlN0cmluZyBjb29raWVOYW1lKQorICAgIEdldEhvc3Ru
YW1lc1dpdGhDb29raWVzKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkgLT4gKFdURjo6VmVj
dG9yPFdURjo6U3RyaW5nPiBob3N0bmFtZXMpCisgICAgRGVsZXRlQ29va2llc0Zvckhvc3RuYW1l
KGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgV1RGOjpTdHJpbmcgaG9zdG5hbWUpCisgICAg
RGVsZXRlQWxsQ29va2llcyhib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCiB9CiAKICNlbmRp
ZiAvLyBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgJ
KHJldmlzaW9uIDEzNzM3NSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9S
ZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBA
IHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKSBj
b25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgbG9jYWxGaWxlQ29udGVudFNuaWZmaW5n
RW5hYmxlZCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpblByaXZhdGVCcm93
c2luZ01vZGUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIENGVVJMU3RvcmFnZVNlc3Np
b25SZWYgc3RvcmFnZVNlc3Npb24oKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIE5TT3Bl
cmF0aW9uUXVldWUgKnNjaGVkdWxlZE9wZXJhdGlvblF1ZXVlKCkgY29uc3QgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQubW0JKHJldmlzaW9uIDEzNzM3NSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAt
NjMsOSArNjMsMTQgQEAgYm9vbCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6bG9jYWxGaWxlQwog
ICAgIHJldHVybiBtX2xvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQ7CiB9CiAKK2Jvb2wg
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsKK30KKwogQ0ZVUkxTdG9yYWdl
U2Vzc2lvblJlZiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25z
dAogewotICAgIGlmIChtX3ByaXZhdGVCcm93c2luZ0VuYWJsZWQpIHsKKyAgICBpZiAoaW5Qcml2
YXRlQnJvd3NpbmdNb2RlKCkpIHsKICAgICAgICAgQVNTRVJUKHByaXZhdGVCcm93c2luZ1N0b3Jh
Z2VTZXNzaW9uKTsKICAgICAgICAgcmV0dXJuIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9u
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHJldmlz
aW9uIDEzNzM3NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDcgKzEyMCw3
IEBAIFN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNGb3IKICNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29y
a1Byb2Nlc3MoKSkgewogICAgICAgICBTdHJpbmcgcmVzdWx0OwotICAgICAgICBpZiAoIVdlYlBy
b2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9N
KGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Q29va2llc0ZvckRPTTo6UmVwbHkocmVzdWx0KSwgMCkpCisgICAgICAgIGlmICghV2ViUHJv
Y2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3lu
YyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET00o
Y29udGV4dC0+aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCksIGZpcnN0UGFydHksIHVybCksIE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTTo6UmVwbHko
cmVzdWx0KSwgMCkpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQpAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpzZXRDb29raWVzRnIKIHsKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAg
IGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAg
ICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDb29raWVz
RnJvbURPTShmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyksIDApOworICAgICAgICBXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDb29raWVzRnJvbURP
TShjb250ZXh0LT5pblByaXZhdGVCcm93c2luZ01vZGUoKSwgZmlyc3RQYXJ0eSwgdXJsLCBjb29r
aWVTdHJpbmcpLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpAQCAtMTQ2LDcg
KzE0Niw3IEBAIGJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRW5hYmwKICNpZiBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2Vz
TmV0d29ya1Byb2Nlc3MoKSkgewogICAgICAgICBib29sIHJlc3VsdDsKLSAgICAgICAgaWYgKCFX
ZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNl
bmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0Vu
YWJsZWQoZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpDb29raWVzRW5hYmxlZDo6UmVwbHkocmVzdWx0KSwgMCkpCisgICAgICAgIGlmICgh
V2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5z
ZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNF
bmFibGVkKGNvbnRleHQtPmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpLCBmaXJzdFBhcnR5LCB1cmwp
LCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVk
OjpSZXBseShyZXN1bHQpLCAwKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC0xNjAsNyArMTYwLDcgQEAgU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y29va2llUmVxdQogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAg
ICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7CiAgICAg
ICAgIFN0cmluZyByZXN1bHQ7Ci0gICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0
d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGZp
cnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWU6OlJlcGx5KHJlc3VsdCksIDApKQorICAgICAg
ICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rp
b24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpD
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb250ZXh0LT5pblByaXZhdGVCcm93c2luZ01v
ZGUoKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZTo6UmVwbHkocmVzdWx0KSwgMCkp
CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQpAQCAtMTczLDcgKzE3Myw3IEBAIGJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRS
YXdDb29raWUKIHsKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9j
ZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBpZiAoIVdlYlBy
b2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29raWVz
KGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6R2V0UmF3Q29va2llczo6UmVwbHkocmF3Q29va2llcyksIDApKQorICAgICAgICBpZiAoIVdl
YlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2Vu
ZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29r
aWVzKGNvbnRleHQtPmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpLCBmaXJzdFBhcnR5LCB1cmwpLCBN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXM6OlJl
cGx5KHJhd0Nvb2tpZXMpLCAwKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpkZWxldGVDb29raWUKIHsKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQog
ICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotICAg
ICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpEZWxldGVD
b29raWUodXJsLCBjb29raWVOYW1lKSwgMCk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgp
Lm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkRlbGV0ZUNvb2tpZShjb250ZXh0LT5pblByaXZhdGVC
cm93c2luZ01vZGUoKSwgdXJsLCBjb29raWVOYW1lKSwgMCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAjZW5kaWYKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Z2V0SG9zdG5hbWVzCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2Vi
UHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKICAgICAgICAgVmVjdG9y
PFN0cmluZz4gaG9zdG5hbWVzVmVjdG9yOwotICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5u
ZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoKSwgTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRIb3N0bmFtZXNXaXRoQ29v
a2llczo6UmVwbHkoaG9zdG5hbWVzVmVjdG9yKSwgMCk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNo
YXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRIb3N0bmFtZXNXaXRoQ29va2ll
cyhjb250ZXh0LT5pblByaXZhdGVCcm93c2luZ01vZGUoKSksIE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0SG9zdG5hbWVzV2l0aENvb2tpZXM6OlJlcGx5KGhvc3Ru
YW1lc1ZlY3RvciksIDApOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpICE9IGhvc3Ru
YW1lc1ZlY3Rvci5zaXplKCk7ICsraSkKICAgICAgICAgICAgIGhvc3RuYW1lcy5hZGQoaG9zdG5h
bWVzVmVjdG9yW2ldKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWxldGVDb29raWUKIHsKICNpZiBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nl
c3MoKSkgewotICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigp
LT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpEZWxldGVDb29raWVzRm9ySG9zdG5hbWUoaG9zdG5hbWUpLCAwKTsKKyAgICAgICAgV2Vi
UHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RGVsZXRlQ29va2llc0Zv
ckhvc3RuYW1lKGNvbnRleHQtPmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpLCBob3N0bmFtZSksIDAp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCkBAIC0yMjUsNyArMjI1LDcgQEAgdm9p
ZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUFsbENvbwogewogI2lmIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJv
Y2VzcygpKSB7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9u
KCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OkRlbGV0ZUFsbENvb2tpZXMoKSwgMCk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkRlbGV0ZUFsbENvb2tpZXMoY29udGV4dC0+aW5Q
cml2YXRlQnJvd3NpbmdNb2RlKCkpLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAko
cmV2aXNpb24gMTM3Mzc1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
OCw2ICs0OCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNTaXRlU3BlY2lm
aWNRdWlya3MoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgbG9jYWxGaWxlQ29u
dGVudFNuaWZmaW5nRW5hYmxlZCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBp
blByaXZhdGVCcm93c2luZ01vZGUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIENGVVJM
U3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24oKSBjb25zdCBPVkVSUklERTsKICAgICB2
aXJ0dWFsIFdlYkNvcmU6OlNjaGVkdWxlUGFpckhhc2hTZXQqIHNjaGVkdWxlZFJ1bkxvb3BQYWly
cygpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBi
bG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgT1ZFUlJJ
REU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9X
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
bW0JKHJldmlzaW9uIDEzNzM3NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0JKHdvcmtpbmcgY29weSkK
QEAgLTEwMywxMCArMTAzLDE0IEBAIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgV2ViRnJhbWVOZXR3
b3JraW4KICAgICByZXR1cm4gZGVmYXVsdENGU3RvcmFnZVNlc3Npb247CiB9CiAKK2Jvb2wgV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpICYmIGZyYW1lKCktPnNl
dHRpbmdzKCktPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKK30KKwogQ0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0
CiB7Ci0gICAgYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkID0gZnJhbWUoKSAmJiBmcmFtZSgp
LT5zZXR0aW5ncygpICYmIGZyYW1lKCktPnNldHRpbmdzKCktPnByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoKTsKLSAgICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkgeworICAgIGlmIChpblByaXZh
dGVCcm93c2luZ01vZGUoKSkgewogICAgICAgICBBU1NFUlQocHJpdmF0ZUJyb3dzaW5nU3RvcmFn
ZVNlc3Npb24pOwogICAgICAgICByZXR1cm4gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb247
CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93
aW4vV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQuaAkocmV2aXNpb24gMTM3Mzc1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC93aW4vV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NCw2ICs0NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25z
dDsKIAogI2lmIFVTRShDRk5FVFdPUkspCisgICAgdmlydHVhbCBib29sIGluUHJpdmF0ZUJyb3dz
aW5nTW9kZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9y
YWdlU2Vzc2lvbigpIGNvbnN0OwogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178941</attachid>
            <date>2012-12-11 18:22:57 -0800</date>
            <delta_ts>2012-12-13 11:59:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104691-20121211182021.patch</filename>
            <type>text/plain</type>
            <size>22434</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzM5OSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTEyLTExICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8x
MjgzODM1ND4gUGVyLVRhYiBXZWJQcm9jZXNzOiBET00gY29va2llIGFjY2VzcyBmdW5jdGlvbnMg
c2hvdWxkIHJlc3BlY3QgcHJpdmF0ZSBicm93c2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NjkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUGFzcyBwcml2YXRlIGJyb3dzaW5nIHN0YXRlIGZyb20g
bG9jYWwgY29udGV4dCB0byByZW1vdGUgb25lLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpuZXR3
b3JraW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpjb29raWVzRm9yRE9NKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFibGVkKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0
bmFtZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpk
ZWxldGVBbGxDb29raWVzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TmV0d29ya2luZ0NvbnRleHQ6OmluUHJpdmF0ZUJyb3dzaW5nTW9kZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNGb3JET00pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvb2tpZXNGcm9tRE9NKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRW5hYmxlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmRlbGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQWxsQ29va2llcyk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQubW06CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6Omlu
UHJpdmF0ZUJyb3dzaW5nTW9kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKToKKwogMjAxMi0xMi0xMSAgQWxleGV5IFByb3NrdXJ5
YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTI4NTc4NzA+
IFtXSzIgTmV0d29ya1Byb2Nlc3NdIENhbm5vdCBsb2FkIEhUVFBTIHNpdGVzCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAxMzczOTkpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE1NCw2MCArMTU0LDcyIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnNldFMKICAgICBtX3NlcmlhbExvYWRpbmdFbmFibGVkID0gZW5hYmxlZDsK
IH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShj
b25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFN0cmluZyYgcmVzdWx0KQor
c3RhdGljIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29udGV4dChib29sIHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQpCit7CisgICAgLy8gVGhpcyBuZXR3b3JraW5nIGNvbnRleHQg
aXMgb25seSBuZWVkZWQgdG8gZ2V0IHN0b3JhZ2Ugc2Vzc2lvbiBmcm9tLgorICAgIGlmIChwcml2
YXRlQnJvd3NpbmdFbmFibGVkKSB7CisgICAgICAgIHN0YXRpYyBSZW1vdGVOZXR3b3JraW5nQ29u
dGV4dCogY29udGV4dCA9IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpjcmVhdGUoZmFsc2UsIGZh
bHNlLCB0cnVlKS5sZWFrUmVmKCk7CisgICAgICAgIHJldHVybiBjb250ZXh0OworICAgIH0gZWxz
ZSB7CisgICAgICAgIHN0YXRpYyBSZW1vdGVOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCA9IFJl
bW90ZU5ldHdvcmtpbmdDb250ZXh0OjpjcmVhdGUoZmFsc2UsIGZhbHNlLCBmYWxzZSkubGVha1Jl
ZigpOworICAgICAgICByZXR1cm4gY29udGV4dDsKKyAgICB9Cit9CisKK3ZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00oYm9vbCBwcml2YXRlQnJvd3NpbmdF
bmFibGVkLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFN0cmluZyYg
cmVzdWx0KQogewogICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6IFVzZSBhIGNvcnJlY3Qg
c3RvcmFnZSBzZXNzaW9uLgotICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tpZXNGb3JET00oUmVt
b3RlTmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZShmYWxzZSwgZmFsc2UsIGZhbHNlKS5nZXQoKSwg
Zmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXN1bHQgPSBXZWJDb3JlOjpjb29raWVzRm9yRE9NKG5l
dHdvcmtpbmdDb250ZXh0KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwp
OwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJv
bURPTShjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgY29va2llU3RyaW5nKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0
Q29va2llc0Zyb21ET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQog
ewogICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6IFVzZSBhIGNvcnJlY3Qgc3RvcmFnZSBz
ZXNzaW9uLgotICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKFJlbW90ZU5ldHdvcmtpbmdD
b250ZXh0OjpjcmVhdGUoZmFsc2UsIGZhbHNlLCBmYWxzZSkuZ2V0KCksIGZpcnN0UGFydHksIHVy
bCwgY29va2llU3RyaW5nKTsKKyAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShuZXR3b3Jr
aW5nQ29udGV4dChwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsLCBjb29r
aWVTdHJpbmcpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29r
aWVzRW5hYmxlZChjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGJvb2wm
IHJlc3VsdCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFi
bGVkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgS1VSTCYgdXJsLCBib29sJiByZXN1bHQpCiB7CiAgICAgLy8gRklYTUUgKE5ldHdvcmtQ
cm9jZXNzKTogVXNlIGEgY29ycmVjdCBzdG9yYWdlIHNlc3Npb24uCi0gICAgcmVzdWx0ID0gV2Vi
Q29yZTo6Y29va2llc0VuYWJsZWQoUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZShmYWxz
ZSwgZmFsc2UsIGZhbHNlKS5nZXQoKSwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXN1bHQgPSBX
ZWJDb3JlOjpjb29raWVzRW5hYmxlZChuZXR3b3JraW5nQ29udGV4dChwcml2YXRlQnJvd3NpbmdF
bmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBTdHJpbmcmIHJlc3VsdCkKK3ZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGJvb2wg
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VS
TCYgdXJsLCBTdHJpbmcmIHJlc3VsdCkKIHsKICAgICAvLyBGSVhNRSAoTmV0d29ya1Byb2Nlc3Mp
OiBVc2UgYSBjb3JyZWN0IHN0b3JhZ2Ugc2Vzc2lvbi4KICAgICByZXN1bHQgPSBXZWJDb3JlOjpj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSgwLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRSYXdDb29raWVzKGNvbnN0IEtV
UkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJlc3VsdCkK
K3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmdldFJhd0Nvb2tpZXMoYm9vbCBw
cml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiB1cmwsIFZlY3RvcjxDb29raWU+JiByZXN1bHQpCiB7CiAgICAgLy8gRklYTUUgKE5ldHdvcmtQ
cm9jZXNzKTogVXNlIGEgY29ycmVjdCBzdG9yYWdlIHNlc3Npb24uCi0gICAgV2ViQ29yZTo6Z2V0
UmF3Q29va2llcyhSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6Y3JlYXRlKGZhbHNlLCBmYWxzZSwg
ZmFsc2UpLmdldCgpLCBmaXJzdFBhcnR5LCB1cmwsIHJlc3VsdCk7CisgICAgV2ViQ29yZTo6Z2V0
UmF3Q29va2llcyhuZXR3b3JraW5nQ29udGV4dChwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmly
c3RQYXJ0eSwgdXJsLCByZXN1bHQpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpkZWxldGVDb29raWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tp
ZU5hbWUpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWUo
Ym9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgY29va2llTmFtZSkKIHsKICAgICAvLyBGSVhNRSAoTmV0d29ya1Byb2Nlc3MpOiBVc2UgYSBj
b3JyZWN0IHN0b3JhZ2Ugc2Vzc2lvbi4KLSAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoUmVtb3Rl
TmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZShmYWxzZSwgZmFsc2UsIGZhbHNlKS5nZXQoKSwgdXJs
LCBjb29raWVOYW1lKTsKKyAgICBXZWJDb3JlOjpkZWxldGVDb29raWUobmV0d29ya2luZ0NvbnRl
eHQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIHVybCwgY29va2llTmFtZSk7CiB9CiAKLXZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKFZl
Y3RvcjxTdHJpbmc+JiBob3N0bmFtZXMpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQs
IFZlY3RvcjxTdHJpbmc+JiBob3N0bmFtZXMpCiB7CiAgICAgLy8gRklYTUUgKE5ldHdvcmtQcm9j
ZXNzKTogVXNlIGEgY29ycmVjdCBzdG9yYWdlIHNlc3Npb24uCiAgICAgSGFzaFNldDxTdHJpbmc+
IGhvc3RuYW1lc1NldDsKLSAgICBXZWJDb3JlOjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhSZW1v
dGVOZXR3b3JraW5nQ29udGV4dDo6Y3JlYXRlKGZhbHNlLCBmYWxzZSwgZmFsc2UpLmdldCgpLCBo
b3N0bmFtZXNTZXQpOworICAgIFdlYkNvcmU6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKG5ldHdv
cmtpbmdDb250ZXh0KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBob3N0bmFtZXNTZXQpOwogICAg
IFdURjo6Y29weVRvVmVjdG9yKGhvc3RuYW1lc1NldCwgaG9zdG5hbWVzKTsKIH0KIAotdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGNv
bnN0IFN0cmluZyYgaG9zdG5hbWUpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBj
b25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewogICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6
IFVzZSBhIGNvcnJlY3Qgc3RvcmFnZSBzZXNzaW9uLgotICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tp
ZXNGb3JIb3N0bmFtZShSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6Y3JlYXRlKGZhbHNlLCBmYWxz
ZSwgZmFsc2UpLmdldCgpLCBob3N0bmFtZSk7CisgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llc0Zv
ckhvc3RuYW1lKG5ldHdvcmtpbmdDb250ZXh0KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBob3N0
bmFtZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlbGV0ZUFs
bENvb2tpZXMoKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQWxs
Q29va2llcyhib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCiB7CiAgICAgLy8gRklYTUUgKE5l
dHdvcmtQcm9jZXNzKTogVXNlIGEgY29ycmVjdCBzdG9yYWdlIHNlc3Npb24uCi0gICAgV2ViQ29y
ZTo6ZGVsZXRlQWxsQ29va2llcyhSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6Y3JlYXRlKGZhbHNl
LCBmYWxzZSwgZmFsc2UpLmdldCgpKTsKKyAgICBXZWJDb3JlOjpkZWxldGVBbGxDb29raWVzKG5l
dHdvcmtpbmdDb250ZXh0KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDEz
NzM5OSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDE1ICs4MiwxNSBAQCBwcml2YXRl
OgogICAgIHZvaWQgc3VzcGVuZFBlbmRpbmdSZXF1ZXN0cygpOwogICAgIHZvaWQgcmVzdW1lUGVu
ZGluZ1JlcXVlc3RzKCk7CiAgICAgdm9pZCBzZXRTZXJpYWxMb2FkaW5nRW5hYmxlZChib29sKTsK
LSAgICB2b2lkIGNvb2tpZXNGb3JET00oY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYsIFN0cmluZyYgcmVzdWx0KTsKLSAgICB2b2lkIHNldENvb2tp
ZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdl
YkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBib29sJiByZXN1
bHQpOwotICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29y
ZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFN0cmluZyYgcmVzdWx0
KTsKLSAgICB2b2lkIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7Ci0gICAg
dm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYgY29v
a2llTmFtZSk7Ci0gICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhWZWN0b3I8U3RyaW5n
PiYgaG9zdG5hbWVzKTsKLSAgICB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShjb25zdCBT
dHJpbmcmIGhvc3RuYW1lKTsKLSAgICB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoKTsKKyAgICB2b2lk
IGNvb2tpZXNGb3JET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgU3RyaW5nJiByZXN1bHQp
OworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVk
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwg
Y29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBjb29raWVzRW5hYmxlZChib29sIHByaXZhdGVCcm93
c2luZ0VuYWJsZWQsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OktVUkwmLCBib29sJiByZXN1bHQpOworICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgU3RyaW5nJiByZXN1bHQpOworICAg
IHZvaWQgZ2V0UmF3Q29va2llcyhib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFdl
YkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBWZWN0b3I8V2Vi
Q29yZTo6Q29va2llPiYpOworICAgIHZvaWQgZGVsZXRlQ29va2llKGJvb2wgcHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFt
ZSk7CisgICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhib29sIHByaXZhdGVCcm93c2lu
Z0VuYWJsZWQsIFZlY3RvcjxTdHJpbmc+JiBob3N0bmFtZXMpOworICAgIHZvaWQgZGVsZXRlQ29v
a2llc0Zvckhvc3RuYW1lKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgU3RyaW5n
JiBob3N0bmFtZSk7CisgICAgdm9pZCBkZWxldGVBbGxDb29raWVzKGJvb2wgcHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCk7CiAKICAgICBSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0
aW9uOwogICAgIApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4JKHJldmlzaW9uIDEzNzM5OSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSwxNSArMzksMTUgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2NlcwogICAgIAogICAgIFNldFNlcmlhbExvYWRpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkgLT4g
KCkKIAotICAgIENvb2tpZXNGb3JET00oV2ViQ29yZTo6S1VSTCBmaXJzdFBhcnR5LCBXZWJDb3Jl
OjpLVVJMIHVybCkgLT4gKFdURjo6U3RyaW5nIHJlc3VsdCkKLSAgICBTZXRDb29raWVzRnJvbURP
TShXZWJDb3JlOjpLVVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OktVUkwgdXJsLCBXVEY6OlN0cmlu
ZyBjb29raWVTdHJpbmcpCi0gICAgQ29va2llc0VuYWJsZWQoV2ViQ29yZTo6S1VSTCBmaXJzdFBh
cnR5LCBXZWJDb3JlOjpLVVJMIHVybCkgLT4gKGJvb2wgZW5hYmxlZCkKLSAgICBDb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShXZWJDb3JlOjpLVVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OktV
UkwgdXJsKSAtPiAoV1RGOjpTdHJpbmcgcmVzdWx0KQotICAgIEdldFJhd0Nvb2tpZXMoV2ViQ29y
ZTo6S1VSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpLVVJMIHVybCkgLT4gKFdURjo6VmVjdG9yPFdl
YkNvcmU6OkNvb2tpZT4gY29va2llcykKLSAgICBEZWxldGVDb29raWUoV2ViQ29yZTo6S1VSTCB1
cmwsIFdURjo6U3RyaW5nIGNvb2tpZU5hbWUpCi0gICAgR2V0SG9zdG5hbWVzV2l0aENvb2tpZXMo
KSAtPiAoV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+IGhvc3RuYW1lcykKLSAgICBEZWxldGVDb29r
aWVzRm9ySG9zdG5hbWUoV1RGOjpTdHJpbmcgaG9zdG5hbWUpCi0gICAgRGVsZXRlQWxsQ29va2ll
cygpCisgICAgQ29va2llc0ZvckRPTShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIFdlYkNv
cmU6OktVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6S1VSTCB1cmwpIC0+IChXVEY6OlN0cmluZyBy
ZXN1bHQpCisgICAgU2V0Q29va2llc0Zyb21ET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVk
LCBXZWJDb3JlOjpLVVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OktVUkwgdXJsLCBXVEY6OlN0cmlu
ZyBjb29raWVTdHJpbmcpCisgICAgQ29va2llc0VuYWJsZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdF
bmFibGVkLCBXZWJDb3JlOjpLVVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OktVUkwgdXJsKSAtPiAo
Ym9vbCBlbmFibGVkKQorICAgIENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGJvb2wgcHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCwgV2ViQ29yZTo6S1VSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpL
VVJMIHVybCkgLT4gKFdURjo6U3RyaW5nIHJlc3VsdCkKKyAgICBHZXRSYXdDb29raWVzKGJvb2wg
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgV2ViQ29yZTo6S1VSTCBmaXJzdFBhcnR5LCBXZWJDb3Jl
OjpLVVJMIHVybCkgLT4gKFdURjo6VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykKKyAg
ICBEZWxldGVDb29raWUoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpLVVJM
IHVybCwgV1RGOjpTdHJpbmcgY29va2llTmFtZSkKKyAgICBHZXRIb3N0bmFtZXNXaXRoQ29va2ll
cyhib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpIC0+IChXVEY6OlZlY3RvcjxXVEY6OlN0cmlu
Zz4gaG9zdG5hbWVzKQorICAgIERlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShib29sIHByaXZhdGVC
cm93c2luZ0VuYWJsZWQsIFdURjo6U3RyaW5nIGhvc3RuYW1lKQorICAgIERlbGV0ZUFsbENvb2tp
ZXMoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9S
ZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCShyZXZpc2lvbiAxMzcz
OTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBwcml2YXRlOgogCiAg
ICAgdmlydHVhbCBib29sIG5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCkgY29uc3QgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCBib29sIGxvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQoKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VT
ZXNzaW9uKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBOU09wZXJhdGlvblF1ZXVlICpz
Y2hlZHVsZWRPcGVyYXRpb25RdWV1ZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JikgY29uc3QgT1ZFUlJJREU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCShy
ZXZpc2lvbiAxMzczOTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVt
b3RlTmV0d29ya2luZ0NvbnRleHQubW0JKHdvcmtpbmcgY29weSkKQEAgLTYzLDkgKzYzLDE0IEBA
IGJvb2wgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmxvY2FsRmlsZUMKICAgICByZXR1cm4gbV9s
b2NhbEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVkOwogfQogCitib29sIFJlbW90ZU5ldHdvcmtp
bmdDb250ZXh0OjppblByaXZhdGVCcm93c2luZ01vZGUoKSBjb25zdAoreworICAgIHJldHVybiBt
X3ByaXZhdGVCcm93c2luZ0VuYWJsZWQ7Cit9CisKIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgUmVt
b3RlTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKLSAgICBpZiAo
bV9wcml2YXRlQnJvd3NpbmdFbmFibGVkKSB7CisgICAgaWYgKGluUHJpdmF0ZUJyb3dzaW5nTW9k
ZSgpKSB7CiAgICAgICAgIEFTU0VSVChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbik7CiAg
ICAgICAgIHJldHVybiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbjsKICAgICB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCShyZXZpc2lvbiAxMzczOTkpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsNyBAQCBTdHJpbmcgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsK
ICAgICAgICAgU3RyaW5nIHJlc3VsdDsKLSAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQo
KS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTShmaXJzdFBhcnR5LCB1
cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JE
T006OlJlcGx5KHJlc3VsdCksIDApKQorICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgp
Lm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NKGNvbnRleHQtPmluUHJp
dmF0ZUJyb3dzaW5nTW9kZSgpLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET006OlJlcGx5KHJlc3VsdCksIDApKQog
ICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29v
a2llc0ZyCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vz
czo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgV2ViUHJvY2Vzczo6
c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q29va2llc0Zyb21ET00oZmlyc3RQ
YXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpLCAwKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVk
KCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q29va2llc0Zyb21ET00oY29udGV4dC0+aW5Q
cml2YXRlQnJvd3NpbmdNb2RlKCksIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKSwgMCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKQEAgLTE0Niw3ICsxNDYsNyBAQCBib29s
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0VuYWJsCiAjaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNz
KCkpIHsKICAgICAgICAgYm9vbCByZXN1bHQ7Ci0gICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hh
cmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVkKGZpcnN0UGFy
dHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2ll
c0VuYWJsZWQ6OlJlcGx5KHJlc3VsdCksIDApKQorICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNo
YXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZChjb250ZXh0
LT5pblByaXZhdGVCcm93c2luZ01vZGUoKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZDo6UmVwbHkocmVzdWx0
KSwgMCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQpAQCAtMTYwLDcgKzE2MCw3IEBAIFN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNvb2tpZVJlcXUKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9j
ZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewogICAgICAgICBTdHJpbmcgcmVz
dWx0OwotICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9u
KCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBhcnR5LCB1cmwp
LCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlOjpSZXBseShyZXN1bHQpLCAwKSkKKyAgICAgICAgaWYgKCFXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5j
KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoY29udGV4dC0+aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCksIGZpcnN0UGFy
dHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWU6OlJlcGx5KHJlc3VsdCksIDApKQogICAgICAgICAgICAg
cmV0dXJuIFN0cmluZygpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTE3Myw3
ICsxNzMsNyBAQCBib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2llCiB7CiAj
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCku
dXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQo
KS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llcyhmaXJzdFBhcnR5LCB1
cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tp
ZXM6OlJlcGx5KHJhd0Nvb2tpZXMpLCAwKSkKKyAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llcyhjb250ZXh0LT5p
blByaXZhdGVCcm93c2luZ01vZGUoKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29raWVzOjpSZXBseShyYXdDb29raWVz
KSwgMCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVs
ZXRlQ29va2llCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJv
Y2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgV2ViUHJvY2Vz
czo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RGVsZXRlQ29va2llKHVybCwgY29v
a2llTmFtZSksIDApOworICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVj
dGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpEZWxldGVDb29raWUoY29udGV4dC0+aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCks
IHVybCwgY29va2llTmFtZSksIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCkBA
IC0xOTksNyArMTk5LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldEhvc3RuYW1l
cwogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGhvc3Ru
YW1lc1ZlY3RvcjsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rp
b24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OkdldEhvc3RuYW1lc1dpdGhDb29raWVzKCksIE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0SG9zdG5hbWVzV2l0aENvb2tpZXM6OlJlcGx5KGhv
c3RuYW1lc1ZlY3RvciksIDApOworICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3Jr
Q29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29udGV4dC0+aW5Q
cml2YXRlQnJvd3NpbmdNb2RlKCkpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OkdldEhvc3RuYW1lc1dpdGhDb29raWVzOjpSZXBseShob3N0bmFtZXNWZWN0b3IpLCAw
KTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSAhPSBob3N0bmFtZXNWZWN0b3Iuc2l6
ZSgpOyArK2kpCiAgICAgICAgICAgICBob3N0bmFtZXMuYWRkKGhvc3RuYW1lc1ZlY3RvcltpXSk7
CiAgICAgICAgIHJldHVybjsKQEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6ZGVsZXRlQ29va2llCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAg
ICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAg
ICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RGVsZXRlQ29v
a2llc0Zvckhvc3RuYW1lKGhvc3RuYW1lKSwgMCk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShjb250
ZXh0LT5pblByaXZhdGVCcm93c2luZ01vZGUoKSwgaG9zdG5hbWUpLCAwKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICNlbmRpZgpAQCAtMjI1LDcgKzIyNSw3IEBAIHZvaWQgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpkZWxldGVBbGxDb28KIHsKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQog
ICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotICAg
ICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpEZWxldGVB
bGxDb29raWVzKCksIDApOworICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29u
bmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpEZWxldGVBbGxDb29raWVzKGNvbnRleHQtPmluUHJpdmF0ZUJyb3dzaW5n
TW9kZSgpKSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDEzNzM5
OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBw
cml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIG5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCkgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGxvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0Vu
YWJsZWQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaW5Qcml2YXRlQnJvd3Np
bmdNb2RlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBDRlVSTFN0b3JhZ2VTZXNzaW9u
UmVmIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBXZWJDb3Jl
OjpTY2hlZHVsZVBhaXJIYXNoU2V0KiBzY2hlZHVsZWRSdW5Mb29wUGFpcnMoKSBjb25zdCBPVkVS
UklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0IE9WRVJSSURFOwpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCShyZXZpc2lvbiAx
MzczOTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9X
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsMTAgKzEw
MywxNCBAQCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIFdlYkZyYW1lTmV0d29ya2luCiAgICAgcmV0
dXJuIGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uOwogfQogCitib29sIFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZy
YW1lKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLT5wcml2
YXRlQnJvd3NpbmdFbmFibGVkKCk7Cit9CisKIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogewotICAgIGJvb2wg
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKSAm
JiBmcmFtZSgpLT5zZXR0aW5ncygpLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7Ci0gICAgaWYg
KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpIHsKKyAgICBpZiAoaW5Qcml2YXRlQnJvd3NpbmdNb2Rl
KCkpIHsKICAgICAgICAgQVNTRVJUKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKTsKICAg
ICAgICAgcmV0dXJuIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uOwogICAgIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJKHJldmlzaW9u
IDEzNzM5OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2lu
L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2Vk
RXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7CiAKICNpZiBVU0Uo
Q0ZORVRXT1JLKQorICAgIHZpcnR1YWwgYm9vbCBpblByaXZhdGVCcm93c2luZ01vZGUoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBz
dG9yYWdlU2Vzc2lvbigpIGNvbnN0OwogI2VuZGlmCiAK
</data>
<flag name="commit-queue"
          id="195723"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179312</attachid>
            <date>2012-12-13 11:59:55 -0800</date>
            <delta_ts>2012-12-13 12:53:48 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>PrivateBrowsingForDOMCookies.txt</filename>
            <type>text/plain</type>
            <size>29144</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzYzMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEyLTEzICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8x
MjgzODM1ND4gUGVyLVRhYiBXZWJQcm9jZXNzOiBET00gY29va2llIGFjY2VzcyBmdW5jdGlvbnMg
c2hvdWxkIHJlc3BlY3QgcHJpdmF0ZSBicm93c2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NjkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250
ZXh0Lmg6IEFkZGVkIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGN1cnJlbnQKKyAgICAgICAgY29u
dGV4dCB0eXBlLiBJZGVhbGx5LCB3ZSB3b3VsZCB0cmFjayBjb250ZXh0cyBhY3Jvc3MgcHJvY2Vz
c2VzIGluIGEgZ2VuZXJpYyBtYW5uZXIsCisgICAgICAgIGJ1dCB3ZSBvbmx5IGhhdmUgdHdvIG5v
dywgYW5kIGRvbid0IG5lZWQgc3VjaCBjb21wbGljYXRpb25zLgorCiAyMDEyLTEyLTEzICBBbGV4
ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgdXNlcyBhIHdyb25nIGNsaWVudApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JraW5nQ29udGV4dC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya2lu
Z0NvbnRleHQuaAkocmV2aXNpb24gMTM3NjE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9OZXR3b3JraW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC04MCw2ICs4MCw3
IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JL
KQorICAgIHZpcnR1YWwgYm9vbCBpblByaXZhdGVCcm93c2luZ01vZGUoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3Qg
PSAwOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzYzMykKKysrIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDEy
LTEyLTEzICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8xMjgzODM1ND4gUGVyLVRhYiBXZWJQcm9jZXNzOiBET00gY29va2llIGFj
Y2VzcyBmdW5jdGlvbnMgc2hvdWxkIHJlc3BlY3QgcHJpdmF0ZSBicm93c2luZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NjkxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFzcyBwcml2YXRlIGJyb3dz
aW5nIHN0YXRlIGZyb20gbG9jYWwgY29udGV4dCB0byByZW1vdGUgb25lLgorCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpuZXR3b3JraW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFibGVk
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmdldEhvc3RuYW1lc1dpdGhDb29raWVz
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlbGV0
ZUNvb2tpZXNGb3JIb3N0bmFtZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpkZWxldGVBbGxDb29raWVzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmluUHJpdmF0ZUJyb3dzaW5nTW9kZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lv
bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tp
ZXNGb3JET00pOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENv
b2tpZXNGcm9tRE9NKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpj
b29raWVzRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQWxsQ29va2llcyk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQubW06CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQ6OmluUHJpdmF0ZUJyb3dzaW5nTW9kZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg6Cisg
ICAgICAgIChXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjppblByaXZhdGVCcm93c2luZ01vZGUp
OgorCiAyMDEyLTEyLTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVtb3ZlIHVudXNlZCBpbml0aWF0aW5nUGFnZSBwYXJhbWV0ZXIgZnJvbSBkb3du
bG9hZCBvYmplY3RzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCShyZXZpc2lv
biAxMzc2MTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw2MCArMTUzLDcyIEBA
IHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldFMKICAgICBtX3NlcmlhbExv
YWRpbmdFbmFibGVkID0gZW5hYmxlZDsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Y29va2llc0ZvckRPTShjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiB1cmwsIFN0cmluZyYgcmVzdWx0KQorc3RhdGljIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0KiBu
ZXR3b3JraW5nQ29udGV4dChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCit7CisgICAgLy8g
VGhpcyBuZXR3b3JraW5nIGNvbnRleHQgaXMgb25seSBuZWVkZWQgdG8gZ2V0IHN0b3JhZ2Ugc2Vz
c2lvbiBmcm9tLgorICAgIGlmIChwcml2YXRlQnJvd3NpbmdFbmFibGVkKSB7CisgICAgICAgIHN0
YXRpYyBSZW1vdGVOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCA9IFJlbW90ZU5ldHdvcmtpbmdD
b250ZXh0OjpjcmVhdGUoZmFsc2UsIGZhbHNlLCB0cnVlKS5sZWFrUmVmKCk7CisgICAgICAgIHJl
dHVybiBjb250ZXh0OworICAgIH0gZWxzZSB7CisgICAgICAgIHN0YXRpYyBSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dCogY29udGV4dCA9IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpjcmVhdGUoZmFs
c2UsIGZhbHNlLCBmYWxzZSkubGVha1JlZigpOworICAgICAgICByZXR1cm4gY29udGV4dDsKKyAg
ICB9Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JE
T00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBLVVJMJiB1cmwsIFN0cmluZyYgcmVzdWx0KQogewogICAgIC8vIEZJWE1FIChOZXR3b3Jr
UHJvY2Vzcyk6IFVzZSBhIGNvcnJlY3Qgc3RvcmFnZSBzZXNzaW9uLgotICAgIHJlc3VsdCA9IFdl
YkNvcmU6OmNvb2tpZXNGb3JET00oUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZShmYWxz
ZSwgZmFsc2UsIGZhbHNlKS5nZXQoKSwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXN1bHQgPSBX
ZWJDb3JlOjpjb29raWVzRm9yRE9NKG5ldHdvcmtpbmdDb250ZXh0KHByaXZhdGVCcm93c2luZ0Vu
YWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zyb21ET00oYm9vbCBwcml2YXRlQnJvd3Np
bmdFbmFibGVkLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgY29va2llU3RyaW5nKQogewogICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6
IFVzZSBhIGNvcnJlY3Qgc3RvcmFnZSBzZXNzaW9uLgotICAgIFdlYkNvcmU6OnNldENvb2tpZXNG
cm9tRE9NKFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpjcmVhdGUoZmFsc2UsIGZhbHNlLCBmYWxz
ZSkuZ2V0KCksIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKKyAgICBXZWJDb3JlOjpz
ZXRDb29raWVzRnJvbURPTShuZXR3b3JraW5nQ29udGV4dChwcml2YXRlQnJvd3NpbmdFbmFibGVk
KSwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOwogfQogCi12b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRW5hYmxlZChjb25zdCBLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBLVVJMJiB1cmwsIGJvb2wmIHJlc3VsdCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFibGVkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwg
Y29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBib29sJiByZXN1bHQpCiB7
CiAgICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTogVXNlIGEgY29ycmVjdCBzdG9yYWdlIHNl
c3Npb24uCi0gICAgcmVzdWx0ID0gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoUmVtb3RlTmV0d29y
a2luZ0NvbnRleHQ6OmNyZWF0ZShmYWxzZSwgZmFsc2UsIGZhbHNlKS5nZXQoKSwgZmlyc3RQYXJ0
eSwgdXJsKTsKKyAgICByZXN1bHQgPSBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChuZXR3b3JraW5n
Q29udGV4dChwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAot
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBTdHJpbmcm
IHJlc3VsdCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgS1VS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBTdHJpbmcmIHJlc3VsdCkKIHsKICAgICAv
LyBGSVhNRSAoTmV0d29ya1Byb2Nlc3MpOiBVc2UgYSBjb3JyZWN0IHN0b3JhZ2Ugc2Vzc2lvbi4K
ICAgICByZXN1bHQgPSBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSgwLCBm
aXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpnZXRSYXdDb29raWVzKGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwg
VmVjdG9yPENvb2tpZT4mIHJlc3VsdCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmdldFJhd0Nvb2tpZXMoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByZXN1bHQpCiB7
CiAgICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTogVXNlIGEgY29ycmVjdCBzdG9yYWdlIHNl
c3Npb24uCi0gICAgV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhSZW1vdGVOZXR3b3JraW5nQ29udGV4
dDo6Y3JlYXRlKGZhbHNlLCBmYWxzZSwgZmFsc2UpLmdldCgpLCBmaXJzdFBhcnR5LCB1cmwsIHJl
c3VsdCk7CisgICAgV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhuZXR3b3JraW5nQ29udGV4dChwcml2
YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsLCByZXN1bHQpOwogfQogCi12b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWUoY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkZWxldGVDb29raWUoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKICAgICAvLyBGSVhNRSAo
TmV0d29ya1Byb2Nlc3MpOiBVc2UgYSBjb3JyZWN0IHN0b3JhZ2Ugc2Vzc2lvbi4KLSAgICBXZWJD
b3JlOjpkZWxldGVDb29raWUoUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZShmYWxzZSwg
ZmFsc2UsIGZhbHNlKS5nZXQoKSwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBXZWJDb3JlOjpkZWxl
dGVDb29raWUobmV0d29ya2luZ0NvbnRleHQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIHVybCwg
Y29va2llTmFtZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omdl
dEhvc3RuYW1lc1dpdGhDb29raWVzKFZlY3RvcjxTdHJpbmc+JiBob3N0bmFtZXMpCit2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhib29s
IHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIFZlY3RvcjxTdHJpbmc+JiBob3N0bmFtZXMpCiB7CiAg
ICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTogVXNlIGEgY29ycmVjdCBzdG9yYWdlIHNlc3Np
b24uCiAgICAgSGFzaFNldDxTdHJpbmc+IGhvc3RuYW1lc1NldDsKLSAgICBXZWJDb3JlOjpnZXRI
b3N0bmFtZXNXaXRoQ29va2llcyhSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6Y3JlYXRlKGZhbHNl
LCBmYWxzZSwgZmFsc2UpLmdldCgpLCBob3N0bmFtZXNTZXQpOworICAgIFdlYkNvcmU6OmdldEhv
c3RuYW1lc1dpdGhDb29raWVzKG5ldHdvcmtpbmdDb250ZXh0KHByaXZhdGVCcm93c2luZ0VuYWJs
ZWQpLCBob3N0bmFtZXNTZXQpOwogICAgIFdURjo6Y29weVRvVmVjdG9yKGhvc3RuYW1lc1NldCwg
aG9zdG5hbWVzKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVs
ZXRlQ29va2llc0Zvckhvc3RuYW1lKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoYm9vbCBw
cml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewogICAgIC8v
IEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6IFVzZSBhIGNvcnJlY3Qgc3RvcmFnZSBzZXNzaW9uLgot
ICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShSZW1vdGVOZXR3b3JraW5nQ29u
dGV4dDo6Y3JlYXRlKGZhbHNlLCBmYWxzZSwgZmFsc2UpLmdldCgpLCBob3N0bmFtZSk7CisgICAg
V2ViQ29yZTo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKG5ldHdvcmtpbmdDb250ZXh0KHByaXZh
dGVCcm93c2luZ0VuYWJsZWQpLCBob3N0bmFtZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRlbGV0ZUFsbENvb2tpZXMoKQordm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZGVsZXRlQWxsQ29va2llcyhib29sIHByaXZhdGVCcm93c2luZ0VuYWJs
ZWQpCiB7CiAgICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTogVXNlIGEgY29ycmVjdCBzdG9y
YWdlIHNlc3Npb24uCi0gICAgV2ViQ29yZTo6ZGVsZXRlQWxsQ29va2llcyhSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dDo6Y3JlYXRlKGZhbHNlLCBmYWxzZSwgZmFsc2UpLmdldCgpKTsKKyAgICBXZWJD
b3JlOjpkZWxldGVBbGxDb29raWVzKG5ldHdvcmtpbmdDb250ZXh0KHByaXZhdGVCcm93c2luZ0Vu
YWJsZWQpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgJKHJldmlzaW9uIDEzNzYxOSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTgyLDE1ICs4MiwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgc3VzcGVuZFBlbmRpbmdSZXF1ZXN0
cygpOwogICAgIHZvaWQgcmVzdW1lUGVuZGluZ1JlcXVlc3RzKCk7CiAgICAgdm9pZCBzZXRTZXJp
YWxMb2FkaW5nRW5hYmxlZChib29sKTsKLSAgICB2b2lkIGNvb2tpZXNGb3JET00oY29uc3QgV2Vi
Q29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFN0cmluZyYgcmVz
dWx0KTsKLSAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6OktVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lk
IGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OktVUkwmLCBib29sJiByZXN1bHQpOwotICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYsIFN0cmluZyYgcmVzdWx0KTsKLSAgICB2b2lkIGdldFJhd0Nvb2tpZXMoY29uc3Qg
V2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+Jik7Ci0gICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6
S1VSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7Ci0gICAgdm9pZCBnZXRIb3N0bmFtZXNX
aXRoQ29va2llcyhWZWN0b3I8U3RyaW5nPiYgaG9zdG5hbWVzKTsKLSAgICB2b2lkIGRlbGV0ZUNv
b2tpZXNGb3JIb3N0bmFtZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKLSAgICB2b2lkIGRlbGV0
ZUFsbENvb2tpZXMoKTsKKyAgICB2b2lkIGNvb2tpZXNGb3JET00oYm9vbCBwcml2YXRlQnJvd3Np
bmdFbmFibGVkLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiwgU3RyaW5nJiByZXN1bHQpOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oYm9v
bCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBjb29raWVz
RW5hYmxlZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFdlYkNvcmU6OktVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBib29sJiByZXN1bHQpOworICAgIHZv
aWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFi
bGVkLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJM
JiwgU3RyaW5nJiByZXN1bHQpOworICAgIHZvaWQgZ2V0UmF3Q29va2llcyhib29sIHByaXZhdGVC
cm93c2luZ0VuYWJsZWQsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOworICAgIHZvaWQgZGVsZXRl
Q29va2llKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgV2ViQ29yZTo6S1VSTCYs
IGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CisgICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29v
a2llcyhib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIFZlY3RvcjxTdHJpbmc+JiBob3N0bmFt
ZXMpOworICAgIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGJvb2wgcHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7CisgICAgdm9pZCBkZWxldGVBbGxD
b29raWVzKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7CiAKICAgICBSZWZQdHI8Q29yZUlQ
Qzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIApJbmRleDogU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDEzNzYxOSkKKysrIFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxNSArMzksMTUgQEAgbWVzc2FnZXMgLT4g
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2NlcwogICAgIAogICAgIFNldFNlcmlhbExvYWRpbmdF
bmFibGVkKGJvb2wgZW5hYmxlZCkgLT4gKCkKIAotICAgIENvb2tpZXNGb3JET00oV2ViQ29yZTo6
S1VSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpLVVJMIHVybCkgLT4gKFdURjo6U3RyaW5nIHJlc3Vs
dCkKLSAgICBTZXRDb29raWVzRnJvbURPTShXZWJDb3JlOjpLVVJMIGZpcnN0UGFydHksIFdlYkNv
cmU6OktVUkwgdXJsLCBXVEY6OlN0cmluZyBjb29raWVTdHJpbmcpCi0gICAgQ29va2llc0VuYWJs
ZWQoV2ViQ29yZTo6S1VSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpLVVJMIHVybCkgLT4gKGJvb2wg
ZW5hYmxlZCkKLSAgICBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShXZWJDb3JlOjpLVVJM
IGZpcnN0UGFydHksIFdlYkNvcmU6OktVUkwgdXJsKSAtPiAoV1RGOjpTdHJpbmcgcmVzdWx0KQot
ICAgIEdldFJhd0Nvb2tpZXMoV2ViQ29yZTo6S1VSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpLVVJM
IHVybCkgLT4gKFdURjo6VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykKLSAgICBEZWxl
dGVDb29raWUoV2ViQ29yZTo6S1VSTCB1cmwsIFdURjo6U3RyaW5nIGNvb2tpZU5hbWUpCi0gICAg
R2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoKSAtPiAoV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+IGhv
c3RuYW1lcykKLSAgICBEZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV1RGOjpTdHJpbmcgaG9zdG5h
bWUpCi0gICAgRGVsZXRlQWxsQ29va2llcygpCisgICAgQ29va2llc0ZvckRPTShib29sIHByaXZh
dGVCcm93c2luZ0VuYWJsZWQsIFdlYkNvcmU6OktVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6S1VS
TCB1cmwpIC0+IChXVEY6OlN0cmluZyByZXN1bHQpCisgICAgU2V0Q29va2llc0Zyb21ET00oYm9v
bCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpLVVJMIGZpcnN0UGFydHksIFdlYkNv
cmU6OktVUkwgdXJsLCBXVEY6OlN0cmluZyBjb29raWVTdHJpbmcpCisgICAgQ29va2llc0VuYWJs
ZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpLVVJMIGZpcnN0UGFydHks
IFdlYkNvcmU6OktVUkwgdXJsKSAtPiAoYm9vbCBlbmFibGVkKQorICAgIENvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgV2ViQ29yZTo6S1VS
TCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpLVVJMIHVybCkgLT4gKFdURjo6U3RyaW5nIHJlc3VsdCkK
KyAgICBHZXRSYXdDb29raWVzKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgV2ViQ29yZTo6
S1VSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpLVVJMIHVybCkgLT4gKFdURjo6VmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4gY29va2llcykKKyAgICBEZWxldGVDb29raWUoYm9vbCBwcml2YXRlQnJvd3Np
bmdFbmFibGVkLCBXZWJDb3JlOjpLVVJMIHVybCwgV1RGOjpTdHJpbmcgY29va2llTmFtZSkKKyAg
ICBHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpIC0+
IChXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4gaG9zdG5hbWVzKQorICAgIERlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIFdURjo6U3RyaW5nIGhvc3Ru
YW1lKQorICAgIERlbGV0ZUFsbENvb2tpZXMoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQog
fQogCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5n
Q29udGV4dC5oCShyZXZpc2lvbiAxMzc2MTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNDks
NiArNDksNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIG5lZWRzU2l0ZVNwZWNpZmlj
UXVpcmtzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGxvY2FsRmlsZUNvbnRl
bnRTbmlmZmluZ0VuYWJsZWQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaW5Q
cml2YXRlQnJvd3NpbmdNb2RlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBDRlVSTFN0
b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBOU09wZXJhdGlvblF1ZXVlICpzY2hlZHVsZWRPcGVyYXRpb25RdWV1ZSgpIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3Io
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgT1ZFUlJJREU7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90
ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCShyZXZpc2lvbiAxMzc2MTkpCisrKyBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTYzLDkgKzYzLDE0IEBAIGJvb2wgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6Omxv
Y2FsRmlsZUMKICAgICByZXR1cm4gbV9sb2NhbEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVkOwog
fQogCitib29sIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjppblByaXZhdGVCcm93c2luZ01vZGUo
KSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGVCcm93c2luZ0VuYWJsZWQ7Cit9CisKIENG
VVJMU3RvcmFnZVNlc3Npb25SZWYgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNz
aW9uKCkgY29uc3QKIHsKLSAgICBpZiAobV9wcml2YXRlQnJvd3NpbmdFbmFibGVkKSB7CisgICAg
aWYgKGluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpKSB7CiAgICAgICAgIEFTU0VSVChwcml2YXRlQnJv
d3NpbmdTdG9yYWdlU2Vzc2lvbik7CiAgICAgICAgIHJldHVybiBwcml2YXRlQnJvd3NpbmdTdG9y
YWdlU2Vzc2lvbjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
Y3BwCShyZXZpc2lvbiAxMzc2MTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
MCw3ICsxMjAsNyBAQCBTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yCiAj
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCku
dXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKICAgICAgICAgU3RyaW5nIHJlc3VsdDsKLSAgICAgICAg
aWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29v
a2llc0ZvckRPTShmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET006OlJlcGx5KHJlc3VsdCksIDApKQorICAgICAgICBp
ZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29r
aWVzRm9yRE9NKGNvbnRleHQtPmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpLCBmaXJzdFBhcnR5LCB1
cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JE
T006OlJlcGx5KHJlc3VsdCksIDApKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6c2V0Q29va2llc0ZyCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkp
IHsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
U2V0Q29va2llc0Zyb21ET00oZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpLCAwKTsKKyAg
ICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q29v
a2llc0Zyb21ET00oY29udGV4dC0+aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCksIGZpcnN0UGFydHks
IHVybCwgY29va2llU3RyaW5nKSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYK
QEAgLTE0Niw3ICsxNDYsNyBAQCBib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0Vu
YWJsCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hh
cmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKICAgICAgICAgYm9vbCByZXN1bHQ7Ci0gICAg
ICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVj
dGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OkNvb2tpZXNFbmFibGVkKGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0VuYWJsZWQ6OlJlcGx5KHJlc3VsdCksIDApKQorICAg
ICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5l
Y3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpDb29raWVzRW5hYmxlZChjb250ZXh0LT5pblByaXZhdGVCcm93c2luZ01vZGUoKSwgZmlyc3RQ
YXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29r
aWVzRW5hYmxlZDo6UmVwbHkocmVzdWx0KSwgMCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtMTYwLDcgKzE2MCw3IEBAIFN0cmlu
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZVJlcXUKICNpZiBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3Mo
KSkgewogICAgICAgICBTdHJpbmcgcmVzdWx0OwotICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNo
YXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlOjpSZXBseShyZXN1bHQpLCAw
KSkKKyAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigp
LT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29udGV4dC0+aW5Qcml2YXRl
QnJvd3NpbmdNb2RlKCksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWU6OlJlcGx5KHJl
c3VsdCksIDApKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KQEAgLTE3Myw3ICsxNzMsNyBAQCBib29sIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Z2V0UmF3Q29va2llCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBp
ZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAg
aWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0
UmF3Q29va2llcyhmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXM6OlJlcGx5KHJhd0Nvb2tpZXMpLCAwKSkKKyAgICAg
ICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0
aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
R2V0UmF3Q29va2llcyhjb250ZXh0LT5pblByaXZhdGVCcm93c2luZ01vZGUoKSwgZmlyc3RQYXJ0
eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdD
b29raWVzOjpSZXBseShyYXdDb29raWVzKSwgMCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lkIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29va2llCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNz
KCkpIHsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+
Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6RGVsZXRlQ29va2llKHVybCwgY29va2llTmFtZSksIDApOworICAgICAgICBXZWJQcm9jZXNz
OjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpEZWxldGVDb29raWUoY29udGV4dC0+
aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCksIHVybCwgY29va2llTmFtZSksIDApOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogI2VuZGlmCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmdldEhvc3RuYW1lcwogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAg
ICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7CiAgICAg
ICAgIFZlY3RvcjxTdHJpbmc+IGhvc3RuYW1lc1ZlY3RvcjsKLSAgICAgICAgV2ViUHJvY2Vzczo6
c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldEhvc3RuYW1lc1dpdGhDb29r
aWVzKCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0SG9zdG5h
bWVzV2l0aENvb2tpZXM6OlJlcGx5KGhvc3RuYW1lc1ZlY3RvciksIDApOworICAgICAgICBXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMoY29udGV4dC0+aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkpLCBNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldEhvc3RuYW1lc1dpdGhDb29raWVzOjpS
ZXBseShob3N0bmFtZXNWZWN0b3IpLCAwKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSAhPSBob3N0bmFtZXNWZWN0b3Iuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBob3N0bmFtZXMu
YWRkKGhvc3RuYW1lc1ZlY3RvcltpXSk7CiAgICAgICAgIHJldHVybjsKQEAgLTIxMyw3ICsyMTMs
NyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29va2llCiB7CiAjaWYgRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05l
dHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nv
bm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6RGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGhvc3RuYW1lKSwgMCk7Cisg
ICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkRlbGV0
ZUNvb2tpZXNGb3JIb3N0bmFtZShjb250ZXh0LT5pblByaXZhdGVCcm93c2luZ01vZGUoKSwgaG9z
dG5hbWUpLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpAQCAtMjI1LDcgKzIy
NSw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWxldGVBbGxDb28KIHsKICNpZiBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2Vz
TmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3Jr
Q29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpEZWxldGVBbGxDb29raWVzKCksIDApOworICAgICAgICBXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpEZWxldGVBbGxDb29raWVzKGNv
bnRleHQtPmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpKSwgMCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0LmgJKHJldmlzaW9uIDEzNzYxOSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBj
b3B5KQpAQCAtNDgsNiArNDgsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIG5lZWRz
U2l0ZVNwZWNpZmljUXVpcmtzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGxv
Y2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIGJvb2wgaW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpTY2hlZHVsZVBhaXJIYXNoU2V0KiBzY2hlZHVsZWRS
dW5Mb29wUGFpcnMoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291
cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNv
bnN0IE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0Lm1tCShyZXZpc2lvbiAxMzc2MTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDMsMTAgKzEwMywxNCBAQCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIFdl
YkZyYW1lTmV0d29ya2luCiAgICAgcmV0dXJuIGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uOwogfQog
Citib29sIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKSAmJiBm
cmFtZSgpLT5zZXR0aW5ncygpLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7Cit9CisKIENGVVJM
U3RvcmFnZVNlc3Npb25SZWYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Np
b24oKSBjb25zdAogewotICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IGZyYW1lKCkg
JiYgZnJhbWUoKS0+c2V0dGluZ3MoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLT5wcml2YXRlQnJv
d3NpbmdFbmFibGVkKCk7Ci0gICAgaWYgKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpIHsKKyAgICBp
ZiAoaW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkpIHsKICAgICAgICAgQVNTRVJUKHByaXZhdGVCcm93
c2luZ1N0b3JhZ2VTZXNzaW9uKTsKICAgICAgICAgcmV0dXJuIHByaXZhdGVCcm93c2luZ1N0b3Jh
Z2VTZXNzaW9uOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvd2luL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDEzNzYxOSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAKICNp
bmNsdWRlIDxXZWJDb3JlL0ZyYW1lTmV0d29ya2luZ0NvbnRleHQuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL05vdEltcGxlbW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogCkBAIC00NCw2ICs0NSw3IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJv
cihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsKIAogI2lmIFVTRShDRk5F
VFdPUkspCisgICAgdmlydHVhbCBib29sIGluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpIGNvbnN0IHsg
bm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBDRlVSTFN0b3Jh
Z2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3Q7CiAjZW5kaWYKIApJbmRleDogU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwkocmV2aXNpb24gMTM3NjE5KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTItMTMgIEFsZXhleSBQ
cm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CisKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEy
ODM4MzU0PiBQZXItVGFiIFdlYlByb2Nlc3M6IERPTSBjb29raWUgYWNjZXNzIGZ1bmN0aW9ucyBz
aG91bGQgcmVzcGVjdCBwcml2YXRlIGJyb3dzaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ2OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0Lm1tOgorICAgICAgICAoV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6aW5Qcml2YXRl
QnJvd3NpbmdNb2RlKToKKyAgICAgICAgKFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3Jh
Z2VTZXNzaW9uKToKKyAgICAgICAgSW1wbGVtZW50ZWQgaW5Qcml2YXRlQnJvd3NpbmdNb2RlKCku
CisKIDIwMTItMTItMTIgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IEVuY2Fwc3VsYXRlIGV4dGVybmFsbHkgdXNlZCB3ZWJkYXRhYmFzZSBBUElzIGluIERhdGFiYXNl
TWFuYWdlci4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDEzNzYxOSkK
KysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCBwcml2YXRlOgogCiAgICAg
dmlydHVhbCBib29sIG5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCkgY29uc3QgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBib29sIGxvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQoKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkgY29uc3Qg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNz
aW9uKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpTY2hlZHVsZVBhaXJI
YXNoU2V0KiBzY2hlZHVsZWRSdW5Mb29wUGFpcnMoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0
dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYpIGNvbnN0IE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0Lm1tCShyZXZpc2lvbiAxMzc2MTkpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05Nywx
MCArOTcsMTQgQEAgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBXZWJGcmFtZU5ldHdvcmtpbgogICAg
IHJldHVybiBkZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lvbjsKIH0KIAorYm9vbCBXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0OjppblByaXZhdGVCcm93c2luZ01vZGUoKSBjb25zdAoreworICAgIHJldHVy
biBmcmFtZSgpICYmIGZyYW1lKCktPnNldHRpbmdzKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKS0+
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworfQorCiBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIFdl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKLSAgICBi
b29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQgPSBmcmFtZSgpICYmIGZyYW1lKCktPnNldHRpbmdz
KCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwotICAg
IGlmIChwcml2YXRlQnJvd3NpbmdFbmFibGVkKSB7CisgICAgaWYgKGluUHJpdmF0ZUJyb3dzaW5n
TW9kZSgpKSB7CiAgICAgICAgIEFTU0VSVChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbik7
CiAgICAgICAgIHJldHVybiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbjsKICAgICB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzc2MTkpCisrKyBTb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0xMi0xMyAg
QWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KKworICAgICAgICA8cmRhcjovL3By
b2JsZW0vMTI4MzgzNTQ+IFBlci1UYWIgV2ViUHJvY2VzczogRE9NIGNvb2tpZSBhY2Nlc3MgZnVu
Y3Rpb25zIHNob3VsZCByZXNwZWN0IHByaXZhdGUgYnJvd3NpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDY5MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
OjppblByaXZhdGVCcm93c2luZ01vZGUpOgorICAgICAgICAoV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dDo6c3RvcmFnZVNlc3Npb24pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQuaDoKKyAgICAgICAgSW1wbGVtZW50ZWQgaW5Qcml2YXRlQnJvd3Np
bmdNb2RlKCkuCisKIDIwMTItMTItMTIgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgog
CiAgICAgICAgIEVuY2Fwc3VsYXRlIGV4dGVybmFsbHkgdXNlZCB3ZWJkYXRhYmFzZSBBUElzIGlu
IERhdGFiYXNlTWFuYWdlci4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCShyZXZp
c2lvbiAxMzc2MTkpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDkgKzEwOCwxNCBA
QCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIFdlYkZyYW1lTmV0d29ya2luCiAgICAgcmV0dXJuIGRl
ZmF1bHRDRlN0b3JhZ2VTZXNzaW9uOwogfQogCitib29sIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQ6OmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZyYW1lKCkg
JiYgZnJhbWUoKS0+c2V0dGluZ3MoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLT5wcml2YXRlQnJv
d3NpbmdFbmFibGVkKCk7Cit9CisKIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogewotICAgIGJvb2wgcHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCA9IGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKSAmJiBmcmFt
ZSgpLT5zZXR0aW5ncygpLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgYm9vbCBwcml2
YXRlQnJvd3NpbmdFbmFibGVkID0gaW5Qcml2YXRlQnJvd3NpbmdNb2RlKCk7CiAgICAgaWYgKHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQpIHsKICAgICAgICAgQVNTRVJUKHByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uKTsKICAgICAgICAgcmV0dXJuIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNz
aW9uOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkocmV2aXNpb24gMTM3NjE5KQorKysg
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCBXVEY6OlN0cmluZyB1c2VyQWdlbnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdURjo6U3RyaW5n
IHJlZmVycmVyKCkgY29uc3Q7CiAjaWYgVVNFKENGTkVUV09SSykKKyAgICB2aXJ0dWFsIGJvb2wg
aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBDRlVSTFN0b3JhZ2VT
ZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3Q7CiAjZW5kaWYKICAgICB2aXJ0dWFsIFdl
YkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYpIGNvbnN0Owo=
</data>
<flag name="commit-queue"
          id="196146"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179319</attachid>
            <date>2012-12-13 12:53:48 -0800</date>
            <delta_ts>2012-12-13 13:23:01 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>PrivateBrowsingForDOMCookies.txt</filename>
            <type>text/plain</type>
            <size>29145</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzYzMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEyLTEzICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8x
MjgzODM1ND4gUGVyLVRhYiBXZWJQcm9jZXNzOiBET00gY29va2llIGFjY2VzcyBmdW5jdGlvbnMg
c2hvdWxkIHJlc3BlY3QgcHJpdmF0ZSBicm93c2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NjkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250
ZXh0Lmg6IEFkZGVkIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGN1cnJlbnQKKyAgICAgICAgY29u
dGV4dCB0eXBlLiBJZGVhbGx5LCB3ZSB3b3VsZCB0cmFjayBjb250ZXh0cyBhY3Jvc3MgcHJvY2Vz
c2VzIGluIGEgZ2VuZXJpYyBtYW5uZXIsCisgICAgICAgIGJ1dCB3ZSBvbmx5IGhhdmUgdHdvIG5v
dywgYW5kIGRvbid0IG5lZWQgc3VjaCBjb21wbGljYXRpb25zLgorCiAyMDEyLTEyLTEzICBBbGV4
ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgdXNlcyBhIHdyb25nIGNsaWVudApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JraW5nQ29udGV4dC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya2lu
Z0NvbnRleHQuaAkocmV2aXNpb24gMTM3NjE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9OZXR3b3JraW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC04MCw2ICs4MCw3
IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JL
KQorICAgIHZpcnR1YWwgYm9vbCBpblByaXZhdGVCcm93c2luZ01vZGUoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3Qg
PSAwOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzYzMykKKysrIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDEy
LTEyLTEzICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8xMjgzODM1ND4gUGVyLVRhYiBXZWJQcm9jZXNzOiBET00gY29va2llIGFj
Y2VzcyBmdW5jdGlvbnMgc2hvdWxkIHJlc3BlY3QgcHJpdmF0ZSBicm93c2luZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NjkxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFzcyBwcml2YXRlIGJyb3dz
aW5nIHN0YXRlIGZyb20gbG9jYWwgY29udGV4dCB0byByZW1vdGUgb25lLgorCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpuZXR3b3JraW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFibGVk
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmdldEhvc3RuYW1lc1dpdGhDb29raWVz
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlbGV0
ZUNvb2tpZXNGb3JIb3N0bmFtZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpkZWxldGVBbGxDb29raWVzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmluUHJpdmF0ZUJyb3dzaW5nTW9kZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lv
bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tp
ZXNGb3JET00pOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENv
b2tpZXNGcm9tRE9NKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpj
b29raWVzRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQWxsQ29va2llcyk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQubW06CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQ6OmluUHJpdmF0ZUJyb3dzaW5nTW9kZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg6Cisg
ICAgICAgIChXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjppblByaXZhdGVCcm93c2luZ01vZGUp
OgorCiAyMDEyLTEyLTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVtb3ZlIHVudXNlZCBpbml0aWF0aW5nUGFnZSBwYXJhbWV0ZXIgZnJvbSBkb3du
bG9hZCBvYmplY3RzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCShyZXZpc2lv
biAxMzc2MTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw2MCArMTUzLDcyIEBA
IHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldFMKICAgICBtX3NlcmlhbExv
YWRpbmdFbmFibGVkID0gZW5hYmxlZDsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Y29va2llc0ZvckRPTShjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiB1cmwsIFN0cmluZyYgcmVzdWx0KQorc3RhdGljIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0KiBu
ZXR3b3JraW5nQ29udGV4dChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCit7CisgICAgLy8g
VGhpcyBuZXR3b3JraW5nIGNvbnRleHQgaXMgb25seSBuZWVkZWQgdG8gZ2V0IHN0b3JhZ2Ugc2Vz
c2lvbiBmcm9tLgorICAgIGlmIChwcml2YXRlQnJvd3NpbmdFbmFibGVkKSB7CisgICAgICAgIHN0
YXRpYyBSZW1vdGVOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCA9IFJlbW90ZU5ldHdvcmtpbmdD
b250ZXh0OjpjcmVhdGUoZmFsc2UsIGZhbHNlLCB0cnVlKS5sZWFrUmVmKCk7CisgICAgICAgIHJl
dHVybiBjb250ZXh0OworICAgIH0gZWxzZSB7CisgICAgICAgIHN0YXRpYyBSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dCogY29udGV4dCA9IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpjcmVhdGUoZmFs
c2UsIGZhbHNlLCBmYWxzZSkubGVha1JlZigpOworICAgICAgICByZXR1cm4gY29udGV4dDsKKyAg
ICB9Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JE
T00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBLVVJMJiB1cmwsIFN0cmluZyYgcmVzdWx0KQogewogICAgIC8vIEZJWE1FIChOZXR3b3Jr
UHJvY2Vzcyk6IFVzZSBhIGNvcnJlY3Qgc3RvcmFnZSBzZXNzaW9uLgotICAgIHJlc3VsdCA9IFdl
YkNvcmU6OmNvb2tpZXNGb3JET00oUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZShmYWxz
ZSwgZmFsc2UsIGZhbHNlKS5nZXQoKSwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXN1bHQgPSBX
ZWJDb3JlOjpjb29raWVzRm9yRE9NKG5ldHdvcmtpbmdDb250ZXh0KHByaXZhdGVCcm93c2luZ0Vu
YWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zyb21ET00oYm9vbCBwcml2YXRlQnJvd3Np
bmdFbmFibGVkLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgY29va2llU3RyaW5nKQogewogICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6
IFVzZSBhIGNvcnJlY3Qgc3RvcmFnZSBzZXNzaW9uLgotICAgIFdlYkNvcmU6OnNldENvb2tpZXNG
cm9tRE9NKFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpjcmVhdGUoZmFsc2UsIGZhbHNlLCBmYWxz
ZSkuZ2V0KCksIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKKyAgICBXZWJDb3JlOjpz
ZXRDb29raWVzRnJvbURPTShuZXR3b3JraW5nQ29udGV4dChwcml2YXRlQnJvd3NpbmdFbmFibGVk
KSwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOwogfQogCi12b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRW5hYmxlZChjb25zdCBLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBLVVJMJiB1cmwsIGJvb2wmIHJlc3VsdCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFibGVkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwg
Y29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBib29sJiByZXN1bHQpCiB7
CiAgICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTogVXNlIGEgY29ycmVjdCBzdG9yYWdlIHNl
c3Npb24uCi0gICAgcmVzdWx0ID0gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoUmVtb3RlTmV0d29y
a2luZ0NvbnRleHQ6OmNyZWF0ZShmYWxzZSwgZmFsc2UsIGZhbHNlKS5nZXQoKSwgZmlyc3RQYXJ0
eSwgdXJsKTsKKyAgICByZXN1bHQgPSBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChuZXR3b3JraW5n
Q29udGV4dChwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAot
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBTdHJpbmcm
IHJlc3VsdCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgS1VS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBTdHJpbmcmIHJlc3VsdCkKIHsKICAgICAv
LyBGSVhNRSAoTmV0d29ya1Byb2Nlc3MpOiBVc2UgYSBjb3JyZWN0IHN0b3JhZ2Ugc2Vzc2lvbi4K
ICAgICByZXN1bHQgPSBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSgwLCBm
aXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpnZXRSYXdDb29raWVzKGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwg
VmVjdG9yPENvb2tpZT4mIHJlc3VsdCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmdldFJhd0Nvb2tpZXMoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByZXN1bHQpCiB7
CiAgICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTogVXNlIGEgY29ycmVjdCBzdG9yYWdlIHNl
c3Npb24uCi0gICAgV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhSZW1vdGVOZXR3b3JraW5nQ29udGV4
dDo6Y3JlYXRlKGZhbHNlLCBmYWxzZSwgZmFsc2UpLmdldCgpLCBmaXJzdFBhcnR5LCB1cmwsIHJl
c3VsdCk7CisgICAgV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhuZXR3b3JraW5nQ29udGV4dChwcml2
YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsLCByZXN1bHQpOwogfQogCi12b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWUoY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkZWxldGVDb29raWUoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKICAgICAvLyBGSVhNRSAo
TmV0d29ya1Byb2Nlc3MpOiBVc2UgYSBjb3JyZWN0IHN0b3JhZ2Ugc2Vzc2lvbi4KLSAgICBXZWJD
b3JlOjpkZWxldGVDb29raWUoUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZShmYWxzZSwg
ZmFsc2UsIGZhbHNlKS5nZXQoKSwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBXZWJDb3JlOjpkZWxl
dGVDb29raWUobmV0d29ya2luZ0NvbnRleHQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIHVybCwg
Y29va2llTmFtZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omdl
dEhvc3RuYW1lc1dpdGhDb29raWVzKFZlY3RvcjxTdHJpbmc+JiBob3N0bmFtZXMpCit2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhib29s
IHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIFZlY3RvcjxTdHJpbmc+JiBob3N0bmFtZXMpCiB7CiAg
ICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTogVXNlIGEgY29ycmVjdCBzdG9yYWdlIHNlc3Np
b24uCiAgICAgSGFzaFNldDxTdHJpbmc+IGhvc3RuYW1lc1NldDsKLSAgICBXZWJDb3JlOjpnZXRI
b3N0bmFtZXNXaXRoQ29va2llcyhSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6Y3JlYXRlKGZhbHNl
LCBmYWxzZSwgZmFsc2UpLmdldCgpLCBob3N0bmFtZXNTZXQpOworICAgIFdlYkNvcmU6OmdldEhv
c3RuYW1lc1dpdGhDb29raWVzKG5ldHdvcmtpbmdDb250ZXh0KHByaXZhdGVCcm93c2luZ0VuYWJs
ZWQpLCBob3N0bmFtZXNTZXQpOwogICAgIFdURjo6Y29weVRvVmVjdG9yKGhvc3RuYW1lc1NldCwg
aG9zdG5hbWVzKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVs
ZXRlQ29va2llc0Zvckhvc3RuYW1lKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoYm9vbCBw
cml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewogICAgIC8v
IEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6IFVzZSBhIGNvcnJlY3Qgc3RvcmFnZSBzZXNzaW9uLgot
ICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShSZW1vdGVOZXR3b3JraW5nQ29u
dGV4dDo6Y3JlYXRlKGZhbHNlLCBmYWxzZSwgZmFsc2UpLmdldCgpLCBob3N0bmFtZSk7CisgICAg
V2ViQ29yZTo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKG5ldHdvcmtpbmdDb250ZXh0KHByaXZh
dGVCcm93c2luZ0VuYWJsZWQpLCBob3N0bmFtZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRlbGV0ZUFsbENvb2tpZXMoKQordm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZGVsZXRlQWxsQ29va2llcyhib29sIHByaXZhdGVCcm93c2luZ0VuYWJs
ZWQpCiB7CiAgICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTogVXNlIGEgY29ycmVjdCBzdG9y
YWdlIHNlc3Npb24uCi0gICAgV2ViQ29yZTo6ZGVsZXRlQWxsQ29va2llcyhSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dDo6Y3JlYXRlKGZhbHNlLCBmYWxzZSwgZmFsc2UpLmdldCgpKTsKKyAgICBXZWJD
b3JlOjpkZWxldGVBbGxDb29raWVzKG5ldHdvcmtpbmdDb250ZXh0KHByaXZhdGVCcm93c2luZ0Vu
YWJsZWQpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgJKHJldmlzaW9uIDEzNzYxOSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTgyLDE1ICs4MiwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgc3VzcGVuZFBlbmRpbmdSZXF1ZXN0
cygpOwogICAgIHZvaWQgcmVzdW1lUGVuZGluZ1JlcXVlc3RzKCk7CiAgICAgdm9pZCBzZXRTZXJp
YWxMb2FkaW5nRW5hYmxlZChib29sKTsKLSAgICB2b2lkIGNvb2tpZXNGb3JET00oY29uc3QgV2Vi
Q29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFN0cmluZyYgcmVz
dWx0KTsKLSAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6OktVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lk
IGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OktVUkwmLCBib29sJiByZXN1bHQpOwotICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYsIFN0cmluZyYgcmVzdWx0KTsKLSAgICB2b2lkIGdldFJhd0Nvb2tpZXMoY29uc3Qg
V2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+Jik7Ci0gICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6
S1VSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7Ci0gICAgdm9pZCBnZXRIb3N0bmFtZXNX
aXRoQ29va2llcyhWZWN0b3I8U3RyaW5nPiYgaG9zdG5hbWVzKTsKLSAgICB2b2lkIGRlbGV0ZUNv
b2tpZXNGb3JIb3N0bmFtZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKLSAgICB2b2lkIGRlbGV0
ZUFsbENvb2tpZXMoKTsKKyAgICB2b2lkIGNvb2tpZXNGb3JET00oYm9vbCBwcml2YXRlQnJvd3Np
bmdFbmFibGVkLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiwgU3RyaW5nJiByZXN1bHQpOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oYm9v
bCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBjb29raWVz
RW5hYmxlZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFdlYkNvcmU6OktVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBib29sJiByZXN1bHQpOworICAgIHZv
aWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFi
bGVkLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJM
JiwgU3RyaW5nJiByZXN1bHQpOworICAgIHZvaWQgZ2V0UmF3Q29va2llcyhib29sIHByaXZhdGVC
cm93c2luZ0VuYWJsZWQsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOworICAgIHZvaWQgZGVsZXRl
Q29va2llKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgV2ViQ29yZTo6S1VSTCYs
IGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CisgICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29v
a2llcyhib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIFZlY3RvcjxTdHJpbmc+JiBob3N0bmFt
ZXMpOworICAgIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGJvb2wgcHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7CisgICAgdm9pZCBkZWxldGVBbGxD
b29raWVzKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7CiAKICAgICBSZWZQdHI8Q29yZUlQ
Qzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIApJbmRleDogU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDEzNzYxOSkKKysrIFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxNSArMzksMTUgQEAgbWVzc2FnZXMgLT4g
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2NlcwogICAgIAogICAgIFNldFNlcmlhbExvYWRpbmdF
bmFibGVkKGJvb2wgZW5hYmxlZCkgLT4gKCkKIAotICAgIENvb2tpZXNGb3JET00oV2ViQ29yZTo6
S1VSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpLVVJMIHVybCkgLT4gKFdURjo6U3RyaW5nIHJlc3Vs
dCkKLSAgICBTZXRDb29raWVzRnJvbURPTShXZWJDb3JlOjpLVVJMIGZpcnN0UGFydHksIFdlYkNv
cmU6OktVUkwgdXJsLCBXVEY6OlN0cmluZyBjb29raWVTdHJpbmcpCi0gICAgQ29va2llc0VuYWJs
ZWQoV2ViQ29yZTo6S1VSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpLVVJMIHVybCkgLT4gKGJvb2wg
ZW5hYmxlZCkKLSAgICBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShXZWJDb3JlOjpLVVJM
IGZpcnN0UGFydHksIFdlYkNvcmU6OktVUkwgdXJsKSAtPiAoV1RGOjpTdHJpbmcgcmVzdWx0KQot
ICAgIEdldFJhd0Nvb2tpZXMoV2ViQ29yZTo6S1VSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpLVVJM
IHVybCkgLT4gKFdURjo6VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykKLSAgICBEZWxl
dGVDb29raWUoV2ViQ29yZTo6S1VSTCB1cmwsIFdURjo6U3RyaW5nIGNvb2tpZU5hbWUpCi0gICAg
R2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoKSAtPiAoV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+IGhv
c3RuYW1lcykKLSAgICBEZWxldGVDb29raWVzRm9ySG9zdG5hbWUoV1RGOjpTdHJpbmcgaG9zdG5h
bWUpCi0gICAgRGVsZXRlQWxsQ29va2llcygpCisgICAgQ29va2llc0ZvckRPTShib29sIHByaXZh
dGVCcm93c2luZ0VuYWJsZWQsIFdlYkNvcmU6OktVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6S1VS
TCB1cmwpIC0+IChXVEY6OlN0cmluZyByZXN1bHQpCisgICAgU2V0Q29va2llc0Zyb21ET00oYm9v
bCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpLVVJMIGZpcnN0UGFydHksIFdlYkNv
cmU6OktVUkwgdXJsLCBXVEY6OlN0cmluZyBjb29raWVTdHJpbmcpCisgICAgQ29va2llc0VuYWJs
ZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpLVVJMIGZpcnN0UGFydHks
IFdlYkNvcmU6OktVUkwgdXJsKSAtPiAoYm9vbCBlbmFibGVkKQorICAgIENvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgV2ViQ29yZTo6S1VS
TCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpLVVJMIHVybCkgLT4gKFdURjo6U3RyaW5nIHJlc3VsdCkK
KyAgICBHZXRSYXdDb29raWVzKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgV2ViQ29yZTo6
S1VSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpLVVJMIHVybCkgLT4gKFdURjo6VmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4gY29va2llcykKKyAgICBEZWxldGVDb29raWUoYm9vbCBwcml2YXRlQnJvd3Np
bmdFbmFibGVkLCBXZWJDb3JlOjpLVVJMIHVybCwgV1RGOjpTdHJpbmcgY29va2llTmFtZSkKKyAg
ICBHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpIC0+
IChXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4gaG9zdG5hbWVzKQorICAgIERlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIFdURjo6U3RyaW5nIGhvc3Ru
YW1lKQorICAgIERlbGV0ZUFsbENvb2tpZXMoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQog
fQogCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5n
Q29udGV4dC5oCShyZXZpc2lvbiAxMzc2MTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNDks
NiArNDksNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIG5lZWRzU2l0ZVNwZWNpZmlj
UXVpcmtzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGxvY2FsRmlsZUNvbnRl
bnRTbmlmZmluZ0VuYWJsZWQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaW5Q
cml2YXRlQnJvd3NpbmdNb2RlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBDRlVSTFN0
b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBOU09wZXJhdGlvblF1ZXVlICpzY2hlZHVsZWRPcGVyYXRpb25RdWV1ZSgpIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3Io
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgT1ZFUlJJREU7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90
ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCShyZXZpc2lvbiAxMzc2MTkpCisrKyBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTYzLDkgKzYzLDE0IEBAIGJvb2wgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6Omxv
Y2FsRmlsZUMKICAgICByZXR1cm4gbV9sb2NhbEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVkOwog
fQogCitib29sIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjppblByaXZhdGVCcm93c2luZ01vZGUo
KSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGVCcm93c2luZ0VuYWJsZWQ7Cit9CisKIENG
VVJMU3RvcmFnZVNlc3Npb25SZWYgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNz
aW9uKCkgY29uc3QKIHsKLSAgICBpZiAobV9wcml2YXRlQnJvd3NpbmdFbmFibGVkKSB7CisgICAg
aWYgKGluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpKSB7CiAgICAgICAgIEFTU0VSVChwcml2YXRlQnJv
d3NpbmdTdG9yYWdlU2Vzc2lvbik7CiAgICAgICAgIHJldHVybiBwcml2YXRlQnJvd3NpbmdTdG9y
YWdlU2Vzc2lvbjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
Y3BwCShyZXZpc2lvbiAxMzc2MTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
MCw3ICsxMjAsNyBAQCBTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yCiAj
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCku
dXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKICAgICAgICAgU3RyaW5nIHJlc3VsdDsKLSAgICAgICAg
aWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29v
a2llc0ZvckRPTShmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET006OlJlcGx5KHJlc3VsdCksIDApKQorICAgICAgICBp
ZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29r
aWVzRm9yRE9NKGNvbnRleHQtPmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpLCBmaXJzdFBhcnR5LCB1
cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JE
T006OlJlcGx5KHJlc3VsdCksIDApKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6c2V0Q29va2llc0ZyCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkp
IHsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
U2V0Q29va2llc0Zyb21ET00oZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpLCAwKTsKKyAg
ICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q29v
a2llc0Zyb21ET00oY29udGV4dC0+aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCksIGZpcnN0UGFydHks
IHVybCwgY29va2llU3RyaW5nKSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYK
QEAgLTE0Niw3ICsxNDYsNyBAQCBib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0Vu
YWJsCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hh
cmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKICAgICAgICAgYm9vbCByZXN1bHQ7Ci0gICAg
ICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVj
dGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OkNvb2tpZXNFbmFibGVkKGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0VuYWJsZWQ6OlJlcGx5KHJlc3VsdCksIDApKQorICAg
ICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5l
Y3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpDb29raWVzRW5hYmxlZChjb250ZXh0LT5pblByaXZhdGVCcm93c2luZ01vZGUoKSwgZmlyc3RQ
YXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29r
aWVzRW5hYmxlZDo6UmVwbHkocmVzdWx0KSwgMCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtMTYwLDcgKzE2MCw3IEBAIFN0cmlu
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZVJlcXUKICNpZiBFTkFCTEUoTkVUV09SS19Q
Uk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3Mo
KSkgewogICAgICAgICBTdHJpbmcgcmVzdWx0OwotICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNo
YXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlOjpSZXBseShyZXN1bHQpLCAw
KSkKKyAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigp
LT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29udGV4dC0+aW5Qcml2YXRl
QnJvd3NpbmdNb2RlKCksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWU6OlJlcGx5KHJl
c3VsdCksIDApKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KQEAgLTE3Myw3ICsxNzMsNyBAQCBib29sIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Z2V0UmF3Q29va2llCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBp
ZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAg
aWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0
UmF3Q29va2llcyhmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXM6OlJlcGx5KHJhd0Nvb2tpZXMpLCAwKSkKKyAgICAg
ICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0
aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
R2V0UmF3Q29va2llcyhjb250ZXh0LT5pblByaXZhdGVCcm93c2luZ01vZGUoKSwgZmlyc3RQYXJ0
eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdD
b29raWVzOjpSZXBseShyYXdDb29raWVzKSwgMCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lkIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29va2llCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNz
KCkpIHsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+
Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6RGVsZXRlQ29va2llKHVybCwgY29va2llTmFtZSksIDApOworICAgICAgICBXZWJQcm9jZXNz
OjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpEZWxldGVDb29raWUoY29udGV4dC0+
aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCksIHVybCwgY29va2llTmFtZSksIDApOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogI2VuZGlmCkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmdldEhvc3RuYW1lcwogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAg
ICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7CiAgICAg
ICAgIFZlY3RvcjxTdHJpbmc+IGhvc3RuYW1lc1ZlY3RvcjsKLSAgICAgICAgV2ViUHJvY2Vzczo6
c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldEhvc3RuYW1lc1dpdGhDb29r
aWVzKCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0SG9zdG5h
bWVzV2l0aENvb2tpZXM6OlJlcGx5KGhvc3RuYW1lc1ZlY3RvciksIDApOworICAgICAgICBXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMoY29udGV4dC0+aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkpLCBNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldEhvc3RuYW1lc1dpdGhDb29raWVzOjpS
ZXBseShob3N0bmFtZXNWZWN0b3IpLCAwKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSAhPSBob3N0bmFtZXNWZWN0b3Iuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBob3N0bmFtZXMu
YWRkKGhvc3RuYW1lc1ZlY3RvcltpXSk7CiAgICAgICAgIHJldHVybjsKQEAgLTIxMyw3ICsyMTMs
NyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29va2llCiB7CiAjaWYgRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05l
dHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nv
bm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6RGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGhvc3RuYW1lKSwgMCk7Cisg
ICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkRlbGV0
ZUNvb2tpZXNGb3JIb3N0bmFtZShjb250ZXh0LT5pblByaXZhdGVCcm93c2luZ01vZGUoKSwgaG9z
dG5hbWUpLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpAQCAtMjI1LDcgKzIy
NSw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWxldGVBbGxDb28KIHsKICNpZiBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2Vz
TmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3Jr
Q29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpEZWxldGVBbGxDb29raWVzKCksIDApOworICAgICAgICBXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpEZWxldGVBbGxDb29raWVzKGNv
bnRleHQtPmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpKSwgMCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0LmgJKHJldmlzaW9uIDEzNzYxOSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBj
b3B5KQpAQCAtNDgsNiArNDgsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIG5lZWRz
U2l0ZVNwZWNpZmljUXVpcmtzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGxv
Y2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIGJvb2wgaW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpTY2hlZHVsZVBhaXJIYXNoU2V0KiBzY2hlZHVsZWRS
dW5Mb29wUGFpcnMoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291
cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNv
bnN0IE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0Lm1tCShyZXZpc2lvbiAxMzc2MTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDMsMTAgKzEwMywxNCBAQCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIFdl
YkZyYW1lTmV0d29ya2luCiAgICAgcmV0dXJuIGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uOwogfQog
Citib29sIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKSAmJiBm
cmFtZSgpLT5zZXR0aW5ncygpLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7Cit9CisKIENGVVJM
U3RvcmFnZVNlc3Npb25SZWYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Np
b24oKSBjb25zdAogewotICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IGZyYW1lKCkg
JiYgZnJhbWUoKS0+c2V0dGluZ3MoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLT5wcml2YXRlQnJv
d3NpbmdFbmFibGVkKCk7Ci0gICAgaWYgKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpIHsKKyAgICBp
ZiAoaW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkpIHsKICAgICAgICAgQVNTRVJUKHByaXZhdGVCcm93
c2luZ1N0b3JhZ2VTZXNzaW9uKTsKICAgICAgICAgcmV0dXJuIHByaXZhdGVCcm93c2luZ1N0b3Jh
Z2VTZXNzaW9uOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvd2luL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDEzNzYxOSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAKICNp
bmNsdWRlIDxXZWJDb3JlL0ZyYW1lTmV0d29ya2luZ0NvbnRleHQuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KIApAQCAtNDQsNiArNDUsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJy
b3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7CiAKICNpZiBVU0UoQ0ZO
RVRXT1JLKQorICAgIHZpcnR1YWwgYm9vbCBpblByaXZhdGVCcm93c2luZ01vZGUoKSBjb25zdCB7
IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgQ0ZVUkxTdG9y
YWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0OwogI2VuZGlmCiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzYxOSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEyLTEyLTEzICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8x
MjgzODM1ND4gUGVyLVRhYiBXZWJQcm9jZXNzOiBET00gY29va2llIGFjY2VzcyBmdW5jdGlvbnMg
c2hvdWxkIHJlc3BlY3QgcHJpdmF0ZSBicm93c2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0NjkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5tbToKKyAgICAgICAgKFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmluUHJpdmF0
ZUJyb3dzaW5nTW9kZSk6CisgICAgICAgIChXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9y
YWdlU2Vzc2lvbik6CisgICAgICAgIEltcGxlbWVudGVkIGluUHJpdmF0ZUJyb3dzaW5nTW9kZSgp
LgorCiAyMDEyLTEyLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAg
ICBFbmNhcHN1bGF0ZSBleHRlcm5hbGx5IHVzZWQgd2ViZGF0YWJhc2UgQVBJcyBpbiBEYXRhYmFz
ZU1hbmFnZXIuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCShyZXZpc2lvbiAxMzc2MTkp
CisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAgcHJpdmF0ZToKIAogICAg
IHZpcnR1YWwgYm9vbCBuZWVkc1NpdGVTcGVjaWZpY1F1aXJrcygpIGNvbnN0IE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgYm9vbCBsb2NhbEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVkKCkgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpIGNvbnN0
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vz
c2lvbigpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6U2NoZWR1bGVQYWly
SGFzaFNldCogc2NoZWR1bGVkUnVuTG9vcFBhaXJzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmKSBjb25zdCBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dC5tbQkocmV2aXNpb24gMTM3NjE5KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAtOTcs
MTAgKzk3LDE0IEBAIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgV2ViRnJhbWVOZXR3b3JraW4KICAg
ICByZXR1cm4gZGVmYXVsdENGU3RvcmFnZVNlc3Npb247CiB9CiAKK2Jvb2wgV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dDo6aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpICYmIGZyYW1lKCktPnNldHRpbmdzKCkt
PnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKK30KKwogQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0CiB7Ci0gICAg
Ym9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkID0gZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5n
cygpICYmIGZyYW1lKCktPnNldHRpbmdzKCktPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKLSAg
ICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkgeworICAgIGlmIChpblByaXZhdGVCcm93c2lu
Z01vZGUoKSkgewogICAgICAgICBBU1NFUlQocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24p
OwogICAgICAgICByZXR1cm4gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb247CiAgICAgfQpJ
bmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMTM3NjE5KQorKysgU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTItMTMg
IEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CisKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzEyODM4MzU0PiBQZXItVGFiIFdlYlByb2Nlc3M6IERPTSBjb29raWUgYWNjZXNzIGZ1
bmN0aW9ucyBzaG91bGQgcmVzcGVjdCBwcml2YXRlIGJyb3dzaW5nCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ2OTEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dDo6aW5Qcml2YXRlQnJvd3NpbmdNb2RlKToKKyAgICAgICAgKFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQ6OnN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAgIEltcGxlbWVudGVkIGluUHJpdmF0ZUJyb3dz
aW5nTW9kZSgpLgorCiAyMDEyLTEyLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4K
IAogICAgICAgICBFbmNhcHN1bGF0ZSBleHRlcm5hbGx5IHVzZWQgd2ViZGF0YWJhc2UgQVBJcyBp
biBEYXRhYmFzZU1hbmFnZXIuCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAkocmV2
aXNpb24gMTM3NjE5KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw5ICsxMDgsMTQg
QEAgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBXZWJGcmFtZU5ldHdvcmtpbgogICAgIHJldHVybiBk
ZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lvbjsKIH0KIAorYm9vbCBXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0OjppblByaXZhdGVCcm93c2luZ01vZGUoKSBjb25zdAoreworICAgIHJldHVybiBmcmFtZSgp
ICYmIGZyYW1lKCktPnNldHRpbmdzKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKS0+cHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCgpOworfQorCiBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIFdlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKLSAgICBib29sIHByaXZh
dGVCcm93c2luZ0VuYWJsZWQgPSBmcmFtZSgpICYmIGZyYW1lKCktPnNldHRpbmdzKCkgJiYgZnJh
bWUoKS0+c2V0dGluZ3MoKS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAgIGJvb2wgcHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCA9IGluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpOwogICAgIGlmIChw
cml2YXRlQnJvd3NpbmdFbmFibGVkKSB7CiAgICAgICAgIEFTU0VSVChwcml2YXRlQnJvd3NpbmdT
dG9yYWdlU2Vzc2lvbik7CiAgICAgICAgIHJldHVybiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vz
c2lvbjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDEzNzYxOSkKKysr
IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgV1RGOjpTdHJpbmcgdXNlckFnZW50KCkgY29uc3Q7CiAgICAgdmlydHVhbCBXVEY6OlN0cmlu
ZyByZWZlcnJlcigpIGNvbnN0OwogI2lmIFVTRShDRk5FVFdPUkspCisgICAgdmlydHVhbCBib29s
IGluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgQ0ZVUkxTdG9yYWdl
U2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0OwogI2VuZGlmCiAgICAgdmlydHVhbCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmKSBjb25zdDsK
</data>
<flag name="review"
          id="196150"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="196153"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179337</attachid>
            <date>2012-12-13 14:36:07 -0800</date>
            <delta_ts>2012-12-13 14:45:20 -0800</delta_ts>
            <desc>follow-up</desc>
            <filename>PrivateBrowsingForDOMCookies.txt</filename>
            <type>text/plain</type>
            <size>4594</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzY1NSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDEyLTEyLTEzICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8x
MjgzODM1ND4gRE9NIGNvb2tpZSBhY2Nlc3MgZnVuY3Rpb25zIHNob3VsZCByZXNwZWN0IHByaXZh
dGUgYnJvd3NpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwNDY5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbW92ZSBvYnNvbGV0ZSBGSVhNRXMsIGFuZCBmaXggb25lIGZ1bmN0aW9uIHRoYXQgSSBv
dmVybG9va2VkLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Y29va2llc0ZvckRPTSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRW5hYmxlZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpnZXRSYXdDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmRlbGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWVzRm9ySG9z
dG5hbWUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZGVsZXRlQWxsQ29va2llcyk6CisKIDIwMTItMTItMTMgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVy
c2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBEb3dubG9hZE1hbmFnZXIgc2hvdWxkbid0IGNhbGwg
dGhlIHdlYiBwcm9jZXNzIGRpcmVjdGx5CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCShyZXZpc2lvbiAxMzc2NDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Nyw0
MyArMTY3LDM2IEBAIHN0YXRpYyBSZW1vdGVOZXR3b3JraW5nQ29udGV4dCogbmV0d29ya2kKIAog
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShib29sIHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwm
IHVybCwgU3RyaW5nJiByZXN1bHQpCiB7Ci0gICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTog
VXNlIGEgY29ycmVjdCBzdG9yYWdlIHNlc3Npb24uCiAgICAgcmVzdWx0ID0gV2ViQ29yZTo6Y29v
a2llc0ZvckRPTShuZXR3b3JraW5nQ29udGV4dChwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmly
c3RQYXJ0eSwgdXJsKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
c2V0Q29va2llc0Zyb21ET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5n
KQogewotICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6IFVzZSBhIGNvcnJlY3Qgc3RvcmFn
ZSBzZXNzaW9uLgogICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKG5ldHdvcmtpbmdDb250
ZXh0KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmlu
Zyk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFi
bGVkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgS1VSTCYgdXJsLCBib29sJiByZXN1bHQpCiB7Ci0gICAgLy8gRklYTUUgKE5ldHdvcmtQ
cm9jZXNzKTogVXNlIGEgY29ycmVjdCBzdG9yYWdlIHNlc3Npb24uCiAgICAgcmVzdWx0ID0gV2Vi
Q29yZTo6Y29va2llc0VuYWJsZWQobmV0d29ya2luZ0NvbnRleHQocHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCksIGZpcnN0UGFydHksIHVybCk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGJvb2wgcHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBTdHJp
bmcmIHJlc3VsdCkKIHsKLSAgICAvLyBGSVhNRSAoTmV0d29ya1Byb2Nlc3MpOiBVc2UgYSBjb3Jy
ZWN0IHN0b3JhZ2Ugc2Vzc2lvbi4KLSAgICByZXN1bHQgPSBXZWJDb3JlOjpjb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZSgwLCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJlc3VsdCA9IFdlYkNv
cmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKG5ldHdvcmtpbmdDb250ZXh0KHByaXZh
dGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCiB2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRSYXdDb29raWVzKGJvb2wgcHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8
Q29va2llPiYgcmVzdWx0KQogewotICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6IFVzZSBh
IGNvcnJlY3Qgc3RvcmFnZSBzZXNzaW9uLgogICAgIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMobmV0
d29ya2luZ0NvbnRleHQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCwg
cmVzdWx0KTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRl
Q29va2llKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7Ci0gICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTog
VXNlIGEgY29ycmVjdCBzdG9yYWdlIHNlc3Npb24uCiAgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2ll
KG5ldHdvcmtpbmdDb250ZXh0KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCB1cmwsIGNvb2tpZU5h
bWUpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRIb3N0bmFt
ZXNXaXRoQ29va2llcyhib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIFZlY3RvcjxTdHJpbmc+
JiBob3N0bmFtZXMpCiB7Ci0gICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTogVXNlIGEgY29y
cmVjdCBzdG9yYWdlIHNlc3Npb24uCiAgICAgSGFzaFNldDxTdHJpbmc+IGhvc3RuYW1lc1NldDsK
ICAgICBXZWJDb3JlOjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhuZXR3b3JraW5nQ29udGV4dChw
cml2YXRlQnJvd3NpbmdFbmFibGVkKSwgaG9zdG5hbWVzU2V0KTsKICAgICBXVEY6OmNvcHlUb1Zl
Y3Rvcihob3N0bmFtZXNTZXQsIGhvc3RuYW1lcyk7CkBAIC0yMTEsMTMgKzIwNCwxMSBAQCB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRICiAKIHZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShib29sIHByaXZhdGVC
cm93c2luZ0VuYWJsZWQsIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7Ci0gICAgLy8gRklYTUUg
KE5ldHdvcmtQcm9jZXNzKTogVXNlIGEgY29ycmVjdCBzdG9yYWdlIHNlc3Npb24uCiAgICAgV2Vi
Q29yZTo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKG5ldHdvcmtpbmdDb250ZXh0KHByaXZhdGVC
cm93c2luZ0VuYWJsZWQpLCBob3N0bmFtZSk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmRlbGV0ZUFsbENvb2tpZXMoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVk
KQogewotICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6IFVzZSBhIGNvcnJlY3Qgc3RvcmFn
ZSBzZXNzaW9uLgogICAgIFdlYkNvcmU6OmRlbGV0ZUFsbENvb2tpZXMobmV0d29ya2luZ0NvbnRl
eHQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkpOwogfQogCg==
</data>
<flag name="review"
          id="196172"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>