<?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>206066</bug_id>
          
          <creation_ts>2020-01-10 07:54:57 -0800</creation_ts>
          <short_desc>Introduce an abstract SampleBufferDisplayLayer</short_desc>
          <delta_ts>2020-01-20 01:19:42 -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>WebRTC</component>
          <version>WebKit 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>
          <dependson>206060</dependson>
          <blocked>206286</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jlewis3</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1605105</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-10 07:54:57 -0800</bug_when>
    <thetext>Introduce an abstract SampleBufferDisplayLayer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605124</commentid>
    <comment_count>1</comment_count>
      <attachid>387340</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-10 08:52:47 -0800</bug_when>
    <thetext>Created attachment 387340
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605126</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-10 08:53:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/58480181&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605135</commentid>
    <comment_count>3</comment_count>
      <attachid>387343</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-10 09:10:02 -0800</bug_when>
    <thetext>Created attachment 387343
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605149</commentid>
    <comment_count>4</comment_count>
      <attachid>387346</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-10 09:20:13 -0800</bug_when>
    <thetext>Created attachment 387346
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605164</commentid>
    <comment_count>5</comment_count>
      <attachid>387346</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-01-10 09:47:48 -0800</bug_when>
    <thetext>Comment on attachment 387346
Patch

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

&gt; Source/WebCore/platform/graphics/avfoundation/objc/LocalSampleBufferDisplayLayer.mm:118
&gt; +            callOnMainThread([protectedSelf = RetainPtr&lt;WebAVSampleBufferStatusChangeListener&gt;(self), layer = WTFMove(layer), status = WTFMove(status)] {

Nit: layer and status aren&apos;t used in the lambda.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/LocalSampleBufferDisplayLayer.mm:129
&gt; +            callOnMainThread([protectedSelf = RetainPtr&lt;WebAVSampleBufferStatusChangeListener&gt;(self), layer = WTFMove(layer), status = WTFMove(status)] {

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605809</commentid>
    <comment_count>6</comment_count>
      <attachid>387518</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-13 05:48:11 -0800</bug_when>
    <thetext>Created attachment 387518
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606358</commentid>
    <comment_count>7</comment_count>
      <attachid>387518</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-14 05:47:50 -0800</bug_when>
    <thetext>Comment on attachment 387518
Patch

Rejecting attachment 387518 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 387518, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Source/WebCore/ChangeLog is not at the top of the file.

Full output: https://webkit-queues.webkit.org/results/13303942</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606883</commentid>
    <comment_count>8</comment_count>
      <attachid>387778</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-15 05:03:42 -0800</bug_when>
    <thetext>Created attachment 387778
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606884</commentid>
    <comment_count>9</comment_count>
      <attachid>387778</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-15 05:15:33 -0800</bug_when>
    <thetext>Comment on attachment 387778
Patch for landing

Rejecting attachment 387778 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 387778, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Source/WebCore/ChangeLog is not at the top of the file.

Full output: https://webkit-queues.webkit.org/results/13304732</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606887</commentid>
    <comment_count>10</comment_count>
      <attachid>387781</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-15 05:41:20 -0800</bug_when>
    <thetext>Created attachment 387781
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606896</commentid>
    <comment_count>11</comment_count>
      <attachid>387781</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-15 06:24:16 -0800</bug_when>
    <thetext>Comment on attachment 387781
Patch for landing

Clearing flags on attachment: 387781

Committed r254564: &lt;https://trac.webkit.org/changeset/254564&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606897</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-15 06:24:18 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608300</commentid>
    <comment_count>13</comment_count>
    <who name="Matt Lewis">jlewis3</who>
    <bug_when>2020-01-17 16:41:38 -0800</bug_when>
    <thetext>Reverted r254564 for reason:

This caused internal test crashes.

Committed r254779: &lt;https://trac.webkit.org/changeset/254779&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608646</commentid>
    <comment_count>14</comment_count>
      <attachid>388211</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-20 00:36:10 -0800</bug_when>
    <thetext>Created attachment 388211
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608657</commentid>
    <comment_count>15</comment_count>
      <attachid>388211</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-20 01:19:40 -0800</bug_when>
    <thetext>Comment on attachment 388211
Patch for landing

Clearing flags on attachment: 388211

Committed r254813: &lt;https://trac.webkit.org/changeset/254813&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608658</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-20 01:19:42 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387340</attachid>
            <date>2020-01-10 08:52:47 -0800</date>
            <delta_ts>2020-01-10 09:09:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206066-20200110175245.patch</filename>
            <type>text/plain</type>
            <size>53776</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MzMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDE0OTIzNWY3NDczOGVh
NDkyMzg4ZjYwZWZiNDRkOGQ0YTkzMThkZS4uNjI4OGEwOWJmNTlhOTQ2ZmY3Njc1MDc0YjVhNDk2
ZDc2M2VhY2E2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDIwLTAxLTEwICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgYW4gYWJz
dHJhY3QgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYwNjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHVzZSBvZiBkaXNwbGF5IGxheWVycyBpbiBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMgdG8gYSBuZXcgY2xhc3MgTG9jYWxTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIKKyAgICAgICAgdGhhdCBpbXBsZW1lbnRzIGFuIGludGVyZmFj
ZSBuYW1lZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuCisgICAgICAgIEEgZnV0dXJlIHBhdGNo
IHdpbGwgaW1wbGVtZW50IHRoaXMgaW50ZXJmYWNlIGJ5IElQQ2luZyB0byBHUFVQcm9jZXNzLgor
ICAgICAgICBXZSBtb3ZlIGJvdGggbGF5ZXJzIGFuZCBoYW5kbGluZyBvZiB0aGUgc2FtcGxlIHF1
ZXVlIHRvIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLgorCisgICAgICAgIENvbnRyYXJ5
IHRvIHByZXZpb3VzbHksIHdlIGRvIG5vdCBjYWxsIGFnYWluIGVucXVldWVWaWRlb1NhbXBsZSBp
biBjYXNlIHdlIGVucXVldWVkIGEgc2FtcGxlIGZvciBsYXRlciB1c2UgaW4gdGhlIGRpc3BsYXkg
bGF5ZXIuCisgICAgICAgIEluc3RlYWQsIHdlIGRpcmVjdGx5IHJlbmRlciBpdCwgd2hpY2ggc2hv
dWxkIG5vdCBjaGFuZ2UgbXVjaCBzaW5jZSB0aGlzIGlzIGEgcmVhbHRpbWUgdHJhY2sgYW5kIGlu
IHRoZSBmdXR1cmUgdGhlIGJ1ZmZlciB3aWxsIGJlIGluIEdQVVByb2Nlc3MgYW55d2F5LgorIAor
ICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubW06IEFkZGVkLgor
ICAgICAgICAoLVtXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyIGluaXRXaXRo
UGFyZW50Ol0pOgorICAgICAgICAoLVtXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3Rl
bmVyIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VM
aXN0ZW5lciBpbnZhbGlkYXRlXSk6CisgICAgICAgICgtW1dlYkFWU2FtcGxlQnVmZmVyU3RhdHVz
Q2hhbmdlTGlzdGVuZXIgYmVnaW5PYnNlcnZpbmdMYXllcnNdKToKKyAgICAgICAgKC1bV2ViQVZT
YW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lciBzdG9wT2JzZXJ2aW5nTGF5ZXJzXSk6Cisg
ICAgICAgICgtW1dlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgb2JzZXJ2ZVZh
bHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKyAgICAgICAgKFdlYkNv
cmU6OnJ1bldpdGhvdXRBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcik6CisgICAg
ICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6fkxvY2FsU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyOjpsYXllclN0YXR1c0RpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpM
b2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6bGF5ZXJFcnJvckRpZENoYW5nZSk6CisgICAg
ICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6cm9vdExheWVyQm91
bmRzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyOjpkaXNwbGF5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OnJvb3RMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZGlkRmFpbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
b2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6dXBkYXRlRGlzcGxheU1vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmJvdW5kcyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6dXBkYXRl
QWZmaW5lVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjp1cGRhdGVCb3VuZHNBbmRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpM
b2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5zdXJlTGF5ZXJzKToKKyAgICAgICAgKFdl
YkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpmbHVzaCk6CisgICAgICAgIChX
ZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Zmx1c2hBbmRSZW1vdmVJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5x
dWV1ZVNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6cmVtb3ZlT2xkU2FtcGxlc0Zyb21QZW5kaW5nUXVldWUpOgorICAgICAgICAoV2ViQ29y
ZTo6TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmFkZFNhbXBsZVRvUGVuZGluZ1F1ZXVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjbGVh
ckVucXVldWVkU2FtcGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcjo6cmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1t
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp+TWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZUNvcnJlY3RlZFZpZGVvU2FtcGxlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyU3RhdHVzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YXBwbGljYXRpb25EaWRCZWNv
bWVBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjpmbHVzaFJlbmRlcmVycyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVuc3VyZUxheWVycyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmRlc3Ryb3lMYXllcnMp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGlzcGxheUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlRGlzcGxheU1vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjpjaGVja1NlbGVjdGVkVmlkZW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNldEJ1ZmZlcmluZ1BvbGljeSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZURp
c3BsYXlMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OnNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckJvdW5kc0RpZENoYW5nZSk6CisK
IDIwMjAtMDEtMTAgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IENsZWFuLXVwIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dAppbmRleCBlNDUzZDg5MDk3ZTY4NmIyYzMzNTJiYWQ2NmVlNzEyMzQ3YzE2
NmI1Li42NWJhNTk3ODU5YTEwOGI4MDExZmIxYjMzN2JjZWUyZjI0Mjc5MjVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXNDb2NvYS50eHQKQEAgLTI1Myw2ICsyNTMsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tIEBuby11bmlmeQog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5t
bSBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkZPYmpDLm1tIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMubW0gQG5v
LXVuaWZ5CitwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMubW0gQG5vLXVuaWZ5CiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIEBuby11bmlmeQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDZlMjhiNTdkYzc0NGM5ODJlYWU3MTAxYTYyMmJiMTc5MGJjOWZiNzIuLjEyNzVmYmQ1OTNjNDZl
M2E0NTJlNTIxNmNhYmNlNmFkYjgwNGRiM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwNjgsNiArMTA2OCw3IEBACiAJCTQx
M0MyQzM0MUJDMjlBOEYwMDc1MjA0QyAvKiBKU0RPTUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNDMkMzMzFCQzI5QTdCMDA3NTIw
NEMgLyogSlNET01Db25zdHJ1Y3Rvci5oICovOyB9OwogCQk0MTNDQ0Q0QTIwREUwMzRGMDA2NUEy
MUEgLyogTW9ja01lZGlhRGV2aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTNDQ0Q0ODIwREUwMTNDMDA2NUEyMUEgLyogTW9ja01lZGlhRGV2aWNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDEz
RTAwNzkxREIwRTRGMjAwMjM0MUQyIC8qIE1lbW9yeVJlbGVhc2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0UwMDc4MURCMEU0REUwMDIzNDFEMiAv
KiBNZW1vcnlSZWxlYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJNDE0NTk4QzIyM0M4RDE3NzAwMkI5Q0M4IC8qIExvY2FsU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDE0NTk4QzEyM0M4QUQ3OTAwMkI5Q0M4IC8qIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLm1tICovOyB9OwogCQk0MTRCODIwNTFENkRGMEU1MDA3N0VCRTMgLyogU3RydWN0dXJl
ZENsb25lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTRCODIwMzFENkRGMEQ5MDA3N0VCRTMgLyogU3RydWN0dXJlZENsb25lLmggKi87IH07CiAJCTQx
NERFREU3MUY5RkU5MUUwMDQ3QzQwRCAvKiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTRERURFNTFGOUZFOTE1
MDA0N0M0MEQgLyogRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxNTA3MTU4MTY4NTA2NzMwMEMzQzdCMyAv
KiBTZWxlY3RvckZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDE1MDcxNTYxNjg1MDY3MzAwQzNDN0IzIC8qIFNlbGVjdG9yRmlsdGVyLmggKi87
IH07CkBAIC03MzQ3LDYgKzczNDgsOSBAQAogCQk0MTNFMDA3ODFEQjBFNERFMDAyMzQxRDIgLyog
TWVtb3J5UmVsZWFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlS
ZWxlYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0UwMDdCMURCMEU3MDcw
MDIzNDFEMiAvKiBNZW1vcnlSZWxlYXNlQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBNZW1vcnlSZWxlYXNlQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxM0ZDNENEMUZEMUREOEMwMDU0MUM0QiAvKiBTZXJ2aWNlV29ya2VyQ2xp
ZW50UXVlcnlPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZp
Y2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDE0NTk4QkUyM0M4QUFCODAwMkI5Q0M4IC8qIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0NTk4QzAyM0M4QUQ3ODAwMkI5
Q0M4IC8qIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDU5OEMxMjNDOEFENzkwMDJCOUNDOCAvKiBMb2NhbFNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTQ3RTJCMjFDODgzMzdGMDBBN0U3MTUgLyogRmV0Y2hCb2R5T3du
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmV0Y2hCb2R5T3duZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE0N0UyQjMxQzg5OTEyNjAwQTdFNzE1IC8q
IEZldGNoQm9keU93bmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEZldGNoQm9keU93bmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE0N0Uy
QjQxQzg5OTEyNjAwQTdFNzE1IC8qIEZldGNoTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEZldGNoTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE2MzE3LDYgKzE2MzIxLDcgQEAKIAkJCQkwNzZGMEQwQTEyQjgxOTI3MDBDMjZB
QTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmggKi8sCiAJCQkJQ0RCRUFFQUIx
OUQ5MkI2QzAwQkVCQTg4IC8qIE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLmggKi8sCiAJCQkJ
Q0RCRUFFQUExOUQ5MkI2QzAwQkVCQTg4IC8qIE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1t
ICovLAorCQkJCTQxNDU5OEJFMjNDOEFBQjgwMDJCOUNDOCAvKiBTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIuaCAqLywKIAkJCQlDRDMzNkY2MzE3RkEwQTREMDBERERDRDAgLyogVmlkZW9UcmFja1By
aXZhdGVBVkYuaCAqLywKIAkJCQkwNzA5RDc5MDFBRTU1NTdFMDA0RTQyRjggLyogV2ViTWVkaWFT
ZXNzaW9uTWFuYWdlck1hYy5jcHAgKi8sCiAJCQkJMDcwOUQ3OTExQUU1NTU3RTAwNEU0MkY4IC8q
IFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuaCAqLywKQEAgLTI2NzQwLDYgKzI2NzQ1LDggQEAK
IAkJCQkwN0FBNkI2QTE2NkQwMTk1MDBENDU2NzEgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Rk9iakMubW0gKi8sCiAJCQkJMDczNjdEREQxNzJDQTY3RjAwRDg2MUI5IC8qIEluYmFuZFRleHRU
cmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLmggKi8sCiAJCQkJMDczNjdEREUxNzJDQTY3RjAwRDg2
MUI5IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLm1tICovLAorCQkJCTQx
NDU5OEMwMjNDOEFENzgwMDJCOUNDOCAvKiBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5o
ICovLAorCQkJCTQxNDU5OEMxMjNDOEFENzkwMDJCOUNDOCAvKiBMb2NhbFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5tbSAqLywKIAkJCQkwNzhFNDNEQjFBQkI2RjZGMDAxQzJGQTYgLyogTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlck1hYy5oICovLAogCQkJCTA3OEU0M0RDMUFCQjZGNkYwMDFDMkZB
NiAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLm1tICovLAogCQkJCURGOUFGRDcwMTNG
QzMxRDgwMDE1RkVCNyAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggKi8s
CkBAIC0zMzY0MCw2ICszMzY0Nyw3IEBACiAJCQkJNDFEMjhEMEQyMTM5RTA1ODAwRjQyMDZGIC8q
IExpYldlYlJUQ1N0YXRzQ29sbGVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxODZCRDNF
MjEzRUUzNDAwMDAxODI2RiAvKiBMaWJXZWJSVENVdGlscy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5NzU5RTkzRTE0RUYxQ0Y4MDAyNkEyREQgLyogTG9hZGFibGVUZXh0VHJhY2suY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJNDE0NTk4QzIyM0M4RDE3NzAwMkI5Q0M4IC8qIExvY2FsU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRkFCRTcyRkUxMDU5QzIxMTAw
RDk5OUREIC8qIE1hdGhNTE5hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOUJGNzA1MURC
RkJCMjQwMDdBN0Q5OSAvKiBNZWRpYUVuY3J5cHRlZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTJEOUJGNzQ3MURCRkRDNDkwMDdBN0Q5OSAvKiBNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41OTQxNmNhMGYyMjQxZDEwYzQ2NzZlMGZkNzYzMjIzZTNjNmNkMzAz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCkBAIC0wLDAgKzEsODIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCisKKyNpbmNs
dWRlICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNw
YWNlIFdURiB7CitjbGFzcyBNZWRpYVRpbWU7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIEludFNpemU7CitjbGFzcyBNZWRpYVNhbXBsZTsKKworY2xhc3MgU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyIHsKK3B1YmxpYzoKKyAgICBjbGFzcyBDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8Q2xpZW50PiB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSA9
IGRlZmF1bHQ7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJT
dGF0dXNEaWRDaGFuZ2UoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyJikgPSAwOworICAgICAgICB2
aXJ0dWFsIHZvaWQgc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyQm91bmRzRGlkQ2hhbmdlKFNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllciYpID0gMDsKKyAgICAgICAgdmlydHVhbCBXVEY6Ok1lZGlhVGlt
ZSBzdHJlYW1UaW1lKCkgY29uc3QgPSAwOworICAgIH07CisKKyAgICBleHBsaWNpdCBTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIoQ2xpZW50Jik7CisgICAgdmlydHVhbCB+U2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyKCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCBib29sIGRpZEZhaWwoKSBjb25z
dCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGlzcGxheU1vZGUoYm9vbCBoaWRlRGlz
cGxheUxheWVyLCBib29sIGhpZGVSb290TGF5ZXIpID0gMDsKKworICAgIHZpcnR1YWwgQ0dSZWN0
IGJvdW5kcygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQWZmaW5lVHJhbnNm
b3JtKENHQWZmaW5lVHJhbnNmb3JtKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJvdW5k
c0FuZFBvc2l0aW9uKENHUmVjdCwgQ0dQb2ludCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGZs
dXNoKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBmbHVzaEFuZFJlbW92ZUltYWdlKCkgPSAwOwor
CisgICAgdmlydHVhbCB2b2lkIGVucXVldWVTYW1wbGUoTWVkaWFTYW1wbGUmKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGNsZWFyRW5xdWV1ZWRTYW1wbGVzKCkgPSAwOworCisgICAgdmlydHVhbCBQ
bGF0Zm9ybUxheWVyKiBkaXNwbGF5TGF5ZXIoKSA9IDA7CisgICAgdmlydHVhbCBQbGF0Zm9ybUxh
eWVyKiByb290TGF5ZXIoKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICBXZWFrUHRyPENsaWVudD4g
bV9jbGllbnQ7Cit9OworCitpbmxpbmUgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIoQ2xpZW50JiBjbGllbnQpCisgICAgOiBtX2NsaWVudChtYWtlV2Vh
a1B0cihjbGllbnQpKQoreworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFN
KSAmJiBVU0UoQVZGT1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTg5MTA4ZWNlZjJh
ODQ0ZjYzM2MwOGFmNzI4MGZkZjllMjhkNDFlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLmgKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKKworI2luY2x1ZGUgIlNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5oIgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIEFWU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyOworT0JKQ19DTEFTUyBXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0No
YW5nZUxpc3RlbmVyOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIExvY2FsU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyIGZpbmFsIDogcHVibGljIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ciwgcHVibGljIENhbk1ha2VXZWFrUHRyPExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IGNyZWF0ZShDbGllbnQmLCBib29s
IGhpZGVSb290TGF5ZXIsIEludFNpemUpOworCisgICAgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIoUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiYmLCBDbGllbnQmLCBi
b29sIGhpZGVSb290TGF5ZXIsIEludFNpemUpOworICAgIH5Mb2NhbFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcigpOworCisgICAgLy8gQVBJIHVzZWQgYnkgV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXND
aGFuZ2VMaXN0ZW5lcgorICAgIHZvaWQgbGF5ZXJTdGF0dXNEaWRDaGFuZ2UoKTsKKyAgICB2b2lk
IGxheWVyRXJyb3JEaWRDaGFuZ2UoKTsKKyAgICB2b2lkIHJvb3RMYXllckJvdW5kc0RpZENoYW5n
ZSgpOworCisgICAgUGxhdGZvcm1MYXllciogZGlzcGxheUxheWVyKCkgZmluYWw7CisgICAgUGxh
dGZvcm1MYXllciogcm9vdExheWVyKCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgYm9vbCBkaWRG
YWlsKCkgY29uc3QgZmluYWw7CisKKyAgICB2b2lkIHVwZGF0ZURpc3BsYXlNb2RlKGJvb2wgaGlk
ZURpc3BsYXlMYXllciwgYm9vbCBoaWRlUm9vdExheWVyKSBmaW5hbDsKKworICAgIENHUmVjdCBi
b3VuZHMoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUFmZmluZVRyYW5zZm9ybShDR0Fm
ZmluZVRyYW5zZm9ybSkgIGZpbmFsOworICAgIHZvaWQgdXBkYXRlQm91bmRzQW5kUG9zaXRpb24o
Q0dSZWN0LCBDR1BvaW50KSBmaW5hbDsKKworICAgIHZvaWQgZmx1c2goKSBmaW5hbDsKKyAgICB2
b2lkIGZsdXNoQW5kUmVtb3ZlSW1hZ2UoKSBmaW5hbDsKKworICAgIHZvaWQgZW5xdWV1ZVNhbXBs
ZShNZWRpYVNhbXBsZSYpIGZpbmFsOworICAgIHZvaWQgY2xlYXJFbnF1ZXVlZFNhbXBsZXMoKSBm
aW5hbDsKKworICAgIHZvaWQgZW5zdXJlTGF5ZXJzKCk7CisKKyAgICB2b2lkIHJlbW92ZU9sZFNh
bXBsZXNGcm9tUGVuZGluZ1F1ZXVlKCk7CisgICAgdm9pZCBhZGRTYW1wbGVUb1BlbmRpbmdRdWV1
ZShNZWRpYVNhbXBsZSYpOworICAgIHZvaWQgcmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZv
clZpZGVvRGF0YSgpOworCitwcml2YXRlOgorICAgIFJldGFpblB0cjxXZWJBVlNhbXBsZUJ1ZmZl
clN0YXR1c0NoYW5nZUxpc3RlbmVyPiBtX3N0YXR1c0NoYW5nZUxpc3RlbmVyOworICAgIFJldGFp
blB0cjxBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXI7CisgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1fcm9vdExheWVyOworCisgICAgdXNp
bmcgUGVuZGluZ1NhbXBsZVF1ZXVlID0gRGVxdWU8UmVmPE1lZGlhU2FtcGxlPj47CisgICAgUGVu
ZGluZ1NhbXBsZVF1ZXVlIG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWU7Cit9OworICAgIAorfQor
CisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTQxZWRkNmE5MWFiNDljNzMzN2QyNjJlOTVlZTQ3OWExOTI3
YzQ2MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCkBAIC0w
LDAgKzEsMzcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikK
KworI2ltcG9ydCAiQ29sb3IuaCIKKyNpbXBvcnQgIkludFNpemUuaCIKKyNpbXBvcnQgIk1lZGlh
U2FtcGxlLmgiCisKKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5oPgorI2ltcG9ydCA8UXVhcnR6Q29yZS9DQUxheWVyLmg+CisjaW1wb3J0IDxRdWFydHpD
b3JlL0NBVHJhbnNhY3Rpb24uaD4KKworI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KKworI2lt
cG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCitAaW50ZXJmYWNlIFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlz
dGVuZXIgOiBOU09iamVjdCB7CisgICAgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIqIF9w
YXJlbnQ7Cit9CisKKy0gKGlkKWluaXRXaXRoUGFyZW50OihMb2NhbFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllciopY2FsbGJhY2s7CistICh2b2lkKWludmFsaWRhdGU7CistICh2b2lkKWJlZ2luT2Jz
ZXJ2aW5nTGF5ZXJzOworLSAodm9pZClzdG9wT2JzZXJ2aW5nTGF5ZXJzOworQGVuZAorCitAaW1w
bGVtZW50YXRpb24gV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcgorCistIChp
ZClpbml0V2l0aFBhcmVudDooTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIqKXBhcmVudAor
eworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOwor
CisgICAgX3BhcmVudCA9IHBhcmVudDsKKworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lk
KWRlYWxsb2MKK3sKKyAgICBbc2VsZiBpbnZhbGlkYXRlXTsKKyAgICBbc3VwZXIgZGVhbGxvY107
Cit9CisKKy0gKHZvaWQpaW52YWxpZGF0ZQoreworICAgIFtzZWxmIHN0b3BPYnNlcnZpbmdMYXll
cnNdOworICAgIF9wYXJlbnQgPSBudWxscHRyOworfQorCistICh2b2lkKWJlZ2luT2JzZXJ2aW5n
TGF5ZXJzCit7CisgICAgQVNTRVJUKF9wYXJlbnQpOworICAgIEFTU0VSVChfcGFyZW50LT5kaXNw
bGF5TGF5ZXIoKSk7CisgICAgQVNTRVJUKF9wYXJlbnQtPnJvb3RMYXllcigpKTsKKworICAgIFtf
cGFyZW50LT5kaXNwbGF5TGF5ZXIoKSBhZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJzdGF0
dXMiIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0Om5pbF07Cisg
ICAgW19wYXJlbnQtPmRpc3BsYXlMYXllcigpIGFkZE9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpA
ImVycm9yIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDpuaWxd
OworICAgIFtfcGFyZW50LT5yb290TGF5ZXIoKSBhZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6
QCJib3VuZHMiIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0Om5p
bF07Cit9CisKKy0gKHZvaWQpc3RvcE9ic2VydmluZ0xheWVycworeworICAgIGlmICghX3BhcmVu
dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKF9wYXJlbnQtPmRpc3BsYXlMYXllcigpKSB7
CisgICAgICAgIFtfcGFyZW50LT5kaXNwbGF5TGF5ZXIoKSByZW1vdmVPYnNlcnZlcjpzZWxmIGZv
cktleVBhdGg6QCJzdGF0dXMiXTsKKyAgICAgICAgW19wYXJlbnQtPmRpc3BsYXlMYXllcigpIHJl
bW92ZU9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAImVycm9yIl07CisgICAgfQorICAgIGlmIChf
cGFyZW50LT5yb290TGF5ZXIoKSkKKyAgICAgICAgW19wYXJlbnQtPnJvb3RMYXllcigpIHJlbW92
ZU9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAImJvdW5kcyJdOworfQorCistICh2b2lkKW9ic2Vy
dmVWYWx1ZUZvcktleVBhdGg6KE5TU3RyaW5nICopa2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0
IGNoYW5nZTooTlNEaWN0aW9uYXJ5ICopY2hhbmdlIGNvbnRleHQ6KHZvaWQgKiljb250ZXh0Cit7
CisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOworICAgIFVOVVNFRF9QQVJBTShrZXlQYXRoKTsK
KyAgICBBU1NFUlQoX3BhcmVudCk7CisKKyAgICBpZiAoIV9wYXJlbnQpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6UEFMOjpnZXRBVlNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllckNsYXNzKCldKSB7CisgICAgICAgIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcj4gbGF5ZXIgPSAoQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgKilvYmpl
Y3Q7CisgICAgICAgIEFTU0VSVChsYXllci5nZXQoKSA9PSBfcGFyZW50LT5kaXNwbGF5TGF5ZXIo
KSk7CisKKyAgICAgICAgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInN0YXR1cyJdKSB7
CisgICAgICAgICAgICBSZXRhaW5QdHI8TlNOdW1iZXI+IHN0YXR1cyA9IFtjaGFuZ2UgdmFsdWVG
b3JLZXk6TlNLZXlWYWx1ZUNoYW5nZU5ld0tleV07CisgICAgICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFtwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hh
bmdlTGlzdGVuZXI+KHNlbGYpLCBsYXllciA9IFdURk1vdmUobGF5ZXIpLCBzdGF0dXMgPSBXVEZN
b3ZlKHN0YXR1cyldIHsKKyAgICAgICAgICAgICAgICBpZiAoIXByb3RlY3RlZFNlbGYtPl9wYXJl
bnQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIHByb3Rl
Y3RlZFNlbGYtPl9wYXJlbnQtPmxheWVyU3RhdHVzRGlkQ2hhbmdlKCk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChba2V5UGF0
aCBpc0VxdWFsVG9TdHJpbmc6QCJlcnJvciJdKSB7CisgICAgICAgICAgICBSZXRhaW5QdHI8TlNO
dW1iZXI+IHN0YXR1cyA9IFtjaGFuZ2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1ZUNoYW5nZU5ld0tl
eV07CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gUmV0YWlu
UHRyPFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXI+KHNlbGYpLCBsYXllciA9
IFdURk1vdmUobGF5ZXIpLCBzdGF0dXMgPSBXVEZNb3ZlKHN0YXR1cyldIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIXByb3RlY3RlZFNlbGYtPl9wYXJlbnQpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9wYXJlbnQtPmxheWVyRXJy
b3JEaWRDaGFuZ2UoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgfQorCisgICAgaWYgKFtbY2hhbmdlIHZhbHVlRm9yS2V5Ok5TS2V5VmFsdWVD
aGFuZ2VOb3RpZmljYXRpb25Jc1ByaW9yS2V5XSBib29sVmFsdWVdKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAoKENBTGF5ZXIgKilvYmplY3QgPT0gX3BhcmVudC0+cm9vdExheWVyKCkpIHsK
KyAgICAgICAgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImJvdW5kcyJdKSB7CisgICAg
ICAgICAgICBpZiAoIV9wYXJlbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
ICAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgICAgICAgICBfcGFyZW50LT5yb290
TGF5ZXJCb3VuZHNEaWRDaGFuZ2UoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBS
ZXRhaW5QdHI8V2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcj4oc2VsZildIHsK
KyAgICAgICAgICAgICAgICBpZiAoIXByb3RlY3RlZFNlbGYtPl9wYXJlbnQpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9wYXJl
bnQtPnJvb3RMYXllckJvdW5kc0RpZENoYW5nZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0KKyAgICB9CisKK30KK0BlbmQKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgdm9p
ZCBydW5XaXRob3V0QW5pbWF0aW9ucyhjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0
aW9uKQoreworICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKKyAgICBbQ0FUcmFuc2FjdGlvbiBz
ZXRBbmltYXRpb25EdXJhdGlvbjowXTsKKyAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0
aW9uczpZRVNdOworICAgIGZ1bmN0aW9uKCk7CisgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsK
K30KKworc3RkOjp1bmlxdWVfcHRyPFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gTG9jYWxTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZShDbGllbnQmIGNsaWVudCwgYm9vbCBoaWRlUm9v
dExheWVyLCBJbnRTaXplIHNpemUpCit7CisgICAgYXV0byBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJbnN0YW5j
ZSgpIGluaXRdKTsKKyAgICBpZiAoIXNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMb2NhbFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcj4oV1RGTW92ZShzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpLCBjbGllbnQs
IGhpZGVSb290TGF5ZXIsIHNpemUpOworfQorCitMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyPiYmIHNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciwgQ2xpZW50JiBjbGllbnQs
IGJvb2wgaGlkZVJvb3RMYXllciwgSW50U2l6ZSBzaXplKQorICAgIDogU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyKGNsaWVudCkKKyAgICAsIG1fc3RhdHVzQ2hhbmdlTGlzdGVuZXIoYWRvcHROUyhb
W1dlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoUGFy
ZW50OnRoaXNdKSkKKyAgICAsIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKFdURk1vdmUoc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyKSkKK3sKKyAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ci5nZXQoKS5iYWNrZ3JvdW5kQ29sb3IgPSBjYWNoZWRDR0NvbG9yKENvbG9yOjpibGFjayk7Cisg
ICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCkuYW5jaG9yUG9pbnQgPSB7IC41LCAu
NSB9OworICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLm5lZWRzRGlzcGxheU9u
Qm91bmRzQ2hhbmdlID0gWUVTOworICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgp
LnZpZGVvR3Jhdml0eSA9IEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsOworCisg
ICAgbV9yb290TGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0pOworICAgIG1f
cm9vdExheWVyLmdldCgpLmhpZGRlbiA9IGhpZGVSb290TGF5ZXI7CisKKyAgICBtX3Jvb3RMYXll
ci5nZXQoKS5iYWNrZ3JvdW5kQ29sb3IgPSBjYWNoZWRDR0NvbG9yKENvbG9yOjpibGFjayk7Cisg
ICAgbV9yb290TGF5ZXIuZ2V0KCkubmVlZHNEaXNwbGF5T25Cb3VuZHNDaGFuZ2UgPSBZRVM7CisK
KyAgICBtX3Jvb3RMYXllci5nZXQoKS5ib3VuZHMgPSBDR1JlY3RNYWtlKDAsIDAsIHNpemUud2lk
dGgoKSwgc2l6ZS5oZWlnaHQoKSk7CisKKyAgICBbbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lciBiZWdp
bk9ic2VydmluZ0xheWVyc107CisKKyAgICBbbV9yb290TGF5ZXIgYWRkU3VibGF5ZXI6bV9zYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCldOworCisjaWZuZGVmIE5ERUJVRworICAgIFttX3Nh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllciBzZXROYW1lOkAiTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIiXTsKKyAgICBbbV9yb290TGF5ZXIgc2V0
TmFtZTpAIkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIEFWU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyIHBhcmVudCJdOworI2VuZGlmCit9CisKK0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOjp+TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoKQoreworICAgIFttX3N0YXR1c0No
YW5nZUxpc3RlbmVyIHN0b3BPYnNlcnZpbmdMYXllcnNdOworCisgICAgbV9wZW5kaW5nVmlkZW9T
YW1wbGVRdWV1ZS5jbGVhcigpOworCisgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHN0
b3BSZXF1ZXN0aW5nTWVkaWFEYXRhXTsKKyAgICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIg
Zmx1c2hdOworICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyID0gbnVsbHB0cjsKKworICAg
IG1fcm9vdExheWVyID0gbnVsbHB0cjsKK30KKwordm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcjo6bGF5ZXJTdGF0dXNEaWRDaGFuZ2UoKQoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgaWYgKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLnN0YXR1cyAh
PSBBVlF1ZXVlZFNhbXBsZUJ1ZmZlclJlbmRlcmluZ1N0YXR1c1JlbmRlcmluZykKKyAgICAgICAg
cmV0dXJuOworICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NsaWVu
dC0+c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyU3RhdHVzRGlkQ2hhbmdlKCp0aGlzKTsKK30KKwor
dm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6bGF5ZXJFcnJvckRpZENoYW5nZSgp
Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAvLyBGSVhNRTogTG9nIGVycm9y
LgorfQorCit2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpyb290TGF5ZXJCb3Vu
ZHNEaWRDaGFuZ2UoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKCFt
X2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY2xpZW50LT5zYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJCb3VuZHNEaWRDaGFuZ2UoKnRoaXMpOworfQorCitQbGF0Zm9ybUxheWVyKiBMb2Nh
bFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZGlzcGxheUxheWVyKCkKK3sKKyAgICByZXR1cm4g
bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCk7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIExv
Y2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpyb290TGF5ZXIoKQoreworICAgIHJldHVybiBt
X3Jvb3RMYXllci5nZXQoKTsKK30KKworYm9vbCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6ZGlkRmFpbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllciBzdGF0dXNdID09IEFWUXVldWVkU2FtcGxlQnVmZmVyUmVuZGVyaW5nU3RhdHVzRmFpbGVk
OworfQorCit2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjp1cGRhdGVEaXNwbGF5
TW9kZShib29sIGhpZGVEaXNwbGF5TGF5ZXIsIGJvb2wgaGlkZVJvb3RMYXllcikKK3sKKyAgICBp
ZiAobV9yb290TGF5ZXIuZ2V0KCkuaGlkZGVuID09IGhpZGVSb290TGF5ZXIgJiYgbV9zYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCkuaGlkZGVuID09IGhpZGVEaXNwbGF5TGF5ZXIpCisgICAg
ICAgIHJldHVybjsKKworICAgIHJ1bldpdGhvdXRBbmltYXRpb25zKFsmXSB7CisgICAgICAgIG1f
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLmhpZGRlbiA9IGhpZGVEaXNwbGF5TGF5ZXI7
CisgICAgICAgIG1fcm9vdExheWVyLmdldCgpLmhpZGRlbiA9IGhpZGVSb290TGF5ZXI7CisgICAg
fSk7Cit9CisKK0NHUmVjdCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Ym91bmRzKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9yb290TGF5ZXIuZ2V0KCkuYm91bmRzOworfQorCit2b2lk
IExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjp1cGRhdGVBZmZpbmVUcmFuc2Zvcm0oQ0dB
ZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtKQoreworICAgIHJ1bldpdGhvdXRBbmltYXRpb25zKFsm
XSB7CisgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLmFmZmluZVRyYW5z
Zm9ybSA9IHRyYW5zZm9ybTsKKyAgICB9KTsKK30KKwordm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcjo6dXBkYXRlQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0IHZpZGVvQm91bmRzLCBD
R1BvaW50IHBvc2l0aW9uKQoreworICAgIHJ1bldpdGhvdXRBbmltYXRpb25zKFsmXSB7CisgICAg
ICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLmJvdW5kcyA9IHZpZGVvQm91bmRz
OworICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKS5wb3NpdGlvbiA9IHBv
c2l0aW9uOworICAgIH0pOworfQorCit2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
OjpmbHVzaCgpCit7CisgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGZsdXNoXTsKK30K
Kwordm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Zmx1c2hBbmRSZW1vdmVJbWFn
ZSgpCit7CisgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGZsdXNoQW5kUmVtb3ZlSW1h
Z2VdOworfQorCit2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2Ft
cGxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCit7CisgICAgaWYgKCFbbV9zYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKSB7CisgICAgICAgIGFkZFNhbXBsZVRv
UGVuZGluZ1F1ZXVlKHNhbXBsZSk7CisgICAgICAgIHJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVh
ZHlGb3JWaWRlb0RhdGEoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFttX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllciBlbnF1ZXVlU2FtcGxlQnVmZmVyOnNhbXBsZS5wbGF0Zm9ybVNh
bXBsZSgpLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcl07Cit9CisKK3ZvaWQgTG9jYWxTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OnJlbW92ZU9sZFNhbXBsZXNGcm9tUGVuZGluZ1F1ZXVlKCkKK3sKKyAg
ICBpZiAobV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5pc0VtcHR5KCkgfHwgIW1fY2xpZW50KQor
ICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGRlY29kZVRpbWUgPSBtX3BlbmRpbmdWaWRlb1Nh
bXBsZVF1ZXVlLmZpcnN0KCktPmRlY29kZVRpbWUoKTsKKyAgICBpZiAoIWRlY29kZVRpbWUuaXNW
YWxpZCgpIHx8IGRlY29kZVRpbWUgPCBNZWRpYVRpbWU6Onplcm9UaW1lKCkpIHsKKyAgICAgICAg
d2hpbGUgKG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUuc2l6ZSgpID4gNSkKKyAgICAgICAgICAg
IG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUucmVtb3ZlRmlyc3QoKTsKKworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgTWVkaWFUaW1lIG5vdyA9IG1fY2xpZW50LT5zdHJlYW1UaW1lKCk7
CisgICAgd2hpbGUgKCFtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmlzRW1wdHkoKSkgeworICAg
ICAgICBpZiAobV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5maXJzdCgpLT5kZWNvZGVUaW1lKCkg
PiBub3cpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgbV9wZW5kaW5nVmlkZW9TYW1wbGVR
dWV1ZS5yZW1vdmVGaXJzdCgpOworICAgIH0KK30KKwordm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcjo6YWRkU2FtcGxlVG9QZW5kaW5nUXVldWUoTWVkaWFTYW1wbGUmIHNhbXBsZSkK
K3sKKyAgICByZW1vdmVPbGRTYW1wbGVzRnJvbVBlbmRpbmdRdWV1ZSgpOworICAgIG1fcGVuZGlu
Z1ZpZGVvU2FtcGxlUXVldWUuYXBwZW5kKHNhbXBsZSk7Cit9CisKK3ZvaWQgTG9jYWxTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI6OmNsZWFyRW5xdWV1ZWRTYW1wbGVzKCkKK3sKKyAgICBtX3BlbmRp
bmdWaWRlb1NhbXBsZVF1ZXVlLmNsZWFyKCk7Cit9CisKK3ZvaWQgTG9jYWxTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OnJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JWaWRlb0RhdGEoKQor
eworICAgIGF1dG8gd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyk7CisgICAgW21fc2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyIHJlcXVlc3RNZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVlOmRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCkgdXNpbmdCbG9jazpeeworICAgICAgICBpZiAoIXdlYWtUaGlz
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllciBzdG9wUmVxdWVzdGluZ01lZGlhRGF0YV07CisKKyAgICAgICAgd2hpbGUgKCFtX3BlbmRp
bmdWaWRlb1NhbXBsZVF1ZXVlLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgaWYgKCFbbV9zYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKSB7CisgICAgICAg
ICAgICAgICAgcmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gRklY
TUU6IHdlIHNob3VsZCByZWVucXVldWUgaW4gY2xpZW50LgorICAgICAgICAgICAgYXV0byBzYW1w
bGUgPSBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLnRha2VGaXJzdCgpOworICAgICAgICAgICAg
ZW5xdWV1ZVNhbXBsZShzYW1wbGUuZ2V0KCkpOworICAgICAgICB9CisgICAgfV07Cit9CisKK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCmluZGV4IGMxYmI4MGZlZjFkYjAzODI2
ZmEzZTUxMzQ3MTY5MGE4N2E1ZjcwMDEuLmY4ZDczOTE5ZmU0OGZjNmE4OWZhMjc1ZjE3YzUwM2Rm
Y2ZlYTU1YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCkBAIC0zMCwxMCArMzAsMTAgQEAK
ICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGUuaCIKICNpbmNsdWRlICJNZWRpYVNhbXBsZS5o
IgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtUHJpdmF0ZS5oIgorI2luY2x1ZGUgIlNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgotI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+CiAKIE9CSkNfQ0xBU1MgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI7CiBPQkpD
X0NMQVNTIFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXI7CkBAIC01MSw3ICs1
MSw3IEBAIGNsYXNzIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y7CiBjbGFzcyBWaWRlb0Z1bGxzY3Jl
ZW5MYXllck1hbmFnZXJPYmpDOwogY2xhc3MgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTsK
IAotY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDIGZpbmFsIDogcHVi
bGljIENhbk1ha2VXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQz4s
IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UsIHByaXZhdGUgTWVkaWFTdHJlYW1Q
cml2YXRlOjpPYnNlcnZlciwgcHJpdmF0ZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2
ZXIKK2NsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyBmaW5hbCA6IHB1
YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UsIHByaXZhdGUgTWVkaWFTdHJlYW1Qcml2
YXRlOjpPYnNlcnZlciwgcHJpdmF0ZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIs
IHB1YmxpYyBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkNsaWVudAogI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAogICAgICwgcHJpdmF0ZSBMb2dnZXJIZWxwZXIKICNlbmRpZgpAQCAtNzUsMTMg
Kzc1LDYgQEAgcHVibGljOgogICAgIHZvaWQgZW5zdXJlTGF5ZXJzKCk7CiAgICAgdm9pZCBkZXN0
cm95TGF5ZXJzKCk7CiAKLSAgICB2b2lkIGxheWVyU3RhdHVzRGlkQ2hhbmdlKEFWU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyKik7Ci0gICAgdm9pZCBsYXllckVycm9yRGlkQ2hhbmdlKEFWU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyKik7Ci0gICAgdm9pZCBiYWNrZ3JvdW5kTGF5ZXJCb3VuZHNDaGFu
Z2VkKCk7Ci0KLSAgICBQbGF0Zm9ybUxheWVyKiBkaXNwbGF5TGF5ZXIoKTsKLSAgICBQbGF0Zm9y
bUxheWVyKiBiYWNrZ3JvdW5kTGF5ZXIoKTsKLQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAog
ICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dnZXIu
Z2V0KCk7IH0KICAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDIjsgfQpAQCAtMTM3
LDEwICsxMzAsNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBmbHVzaFJlbmRlcmVycygpOwogCi0g
ICAgdXNpbmcgUGVuZGluZ1NhbXBsZVF1ZXVlID0gRGVxdWU8UmVmPE1lZGlhU2FtcGxlPj47Ci0g
ICAgdm9pZCBhZGRTYW1wbGVUb1BlbmRpbmdRdWV1ZShQZW5kaW5nU2FtcGxlUXVldWUmLCBNZWRp
YVNhbXBsZSYpOwotICAgIHZvaWQgcmVtb3ZlT2xkU2FtcGxlc0Zyb21QZW5kaW5nUXVldWUoUGVu
ZGluZ1NhbXBsZVF1ZXVlJik7Ci0KICAgICBNZWRpYVRpbWUgY2FsY3VsYXRlVGltZWxpbmVPZmZz
ZXQoY29uc3QgTWVkaWFTYW1wbGUmLCBkb3VibGUpOwogICAgIAogICAgIHZvaWQgZW5xdWV1ZVZp
ZGVvU2FtcGxlKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiwgTWVkaWFTYW1wbGUmKTsKQEAgLTIx
Miw3ICsyMDEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIo
UGxhdGZvcm1MYXllciosIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSBvdmVycmlkZTsKICAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCkg
b3ZlcnJpZGU7CiAKLSAgICBNZWRpYVRpbWUgc3RyZWFtVGltZSgpIGNvbnN0OworICAgIE1lZGlh
VGltZSBzdHJlYW1UaW1lKCkgY29uc3QgZmluYWw7CiAKICAgICBBdWRpb1NvdXJjZVByb3ZpZGVy
KiBhdWRpb1NvdXJjZVByb3ZpZGVyKCkgZmluYWw7CiAKQEAgLTIyMCwxNCArMjA5LDExIEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkgZmluYWw7CiAK
LSAgICBib29sIGhpZGVCYWNrZ3JvdW5kTGF5ZXIoKSBjb25zdCB7IHJldHVybiAoIW1fYWN0aXZl
VmlkZW9UcmFjayB8fCBtX3dhaXRpbmdGb3JGaXJzdEltYWdlKSAmJiBtX2Rpc3BsYXlNb2RlICE9
IFBhaW50SXRCbGFjazsgfQorICAgIGJvb2wgaGlkZVJvb3RMYXllcigpIGNvbnN0IHsgcmV0dXJu
ICghbV9hY3RpdmVWaWRlb1RyYWNrIHx8IG1fd2FpdGluZ0ZvckZpcnN0SW1hZ2UpICYmIG1fZGlz
cGxheU1vZGUgIT0gUGFpbnRJdEJsYWNrOyB9CiAKICAgICBNZWRpYVBsYXllciogbV9wbGF5ZXIg
eyBudWxscHRyIH07CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4gbV9tZWRpYVN0cmVh
bVByaXZhdGU7CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiBtX2FjdGl2ZVZp
ZGVvVHJhY2s7Ci0gICAgUmV0YWluUHRyPFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlz
dGVuZXI+IG1fc3RhdHVzQ2hhbmdlTGlzdGVuZXI7Ci0gICAgUmV0YWluUHRyPEFWU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyPiBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjsKLSAgICBSZXRhaW5Q
dHI8UGxhdGZvcm1MYXllcj4gbV9iYWNrZ3JvdW5kTGF5ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFBBTDo6Q2xvY2s+IG1fY2xvY2s7CiAKICAgICBNZWRpYVRpbWUgbV9wYXVzZWRUaW1lOwpAQCAt
MjQ0LDcgKzIzMCw2IEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEF1
ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYT4+IG1fYXVkaW9UcmFja01hcDsKICAgICBI
YXNoTWFwPFN0cmluZywgUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0+PiBtX3Zp
ZGVvVHJhY2tNYXA7Ci0gICAgUGVuZGluZ1NhbXBsZVF1ZXVlIG1fcGVuZGluZ1ZpZGVvU2FtcGxl
UXVldWU7CiAKICAgICBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG1fbmV0d29ya1N0YXRlIHsg
TWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6RW1wdHkgfTsKICAgICBNZWRpYVBsYXllcjo6UmVh
ZHlTdGF0ZSBtX3JlYWR5U3RhdGUgeyBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU5vdGhp
bmcgfTsKQEAgLTI1NCw4ICsyMzksMTMgQEAgcHJpdmF0ZToKICAgICBQbGF5YmFja1N0YXRlIG1f
cGxheWJhY2tTdGF0ZSB7IFBsYXliYWNrU3RhdGU6Ok5vbmUgfTsKICAgICBNZWRpYVNhbXBsZTo6
VmlkZW9Sb3RhdGlvbiBtX3ZpZGVvUm90YXRpb24geyBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlv
bjo6Tm9uZSB9OwogICAgIENHQWZmaW5lVHJhbnNmb3JtIG1fdmlkZW9UcmFuc2Zvcm07CisgICAg
c3RkOjp1bmlxdWVfcHRyPFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRnVsbHNjcmVlbkxheWVyTWFu
YWdlck9iakM+IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyOwogCisgICAgLy8gU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyOjpDbGllbnQKKyAgICB2b2lkIHNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllclN0YXR1c0RpZENoYW5nZShTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXImKSBmaW5hbDsKKyAg
ICB2b2lkIHNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckJvdW5kc0RpZENoYW5nZShTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXImKSBmaW5hbDsKKwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAg
IFJlZjxjb25zdCBMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRp
ZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCA4ZDIzYzkzZTJlZTk1MjFmODc0
NTIxZmNmMGY0ZDU4NmYwYjhmYjJhLi4wMTlkNTZlMWM5NmYyZjA4NDMwYTRlZTU0NmFjMWMyMDNj
Y2JmZDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsMjAgKzMxLDE2IEBA
CiAjaW1wb3J0ICJBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCIKICNpbXBvcnQg
IkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJMb2Nh
bFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIgogI2ltcG9ydCAiTWVkaWFTdHJlYW1Qcml2YXRl
LmgiCiAjaW1wb3J0ICJQaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgiCiAjaW1wb3J0ICJWaWRlb0Z1
bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDLmgiCiAjaW1wb3J0ICJWaWRlb1RyYWNrUHJpdmF0ZU1l
ZGlhU3RyZWFtLmgiCi0jaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIuaD4KICNpbXBvcnQgPENvcmVHcmFwaGljcy9DR0FmZmluZVRyYW5zZm9ybS5oPgotI2lt
cG9ydCA8UXVhcnR6Q29yZS9DQUxheWVyLmg+Ci0jaW1wb3J0IDxRdWFydHpDb3JlL0NBVHJhbnNh
Y3Rpb24uaD4KICNpbXBvcnQgPG9iamNfcnVudGltZS5oPgogI2ltcG9ydCA8cGFsL2F2Zm91bmRh
dGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL0FWRm91
bmRhdGlvblNQSS5oPgogI2ltcG9ydCA8cGFsL3N5c3RlbS9DbG9jay5oPgotI2ltcG9ydCA8d3Rm
L0RlcXVlLmg+Ci0jaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhy
ZWFkLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtNTIsMTI3ICs0OCw2
IEBACiAjaW1wb3J0IDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KICNpbXBvcnQgPHBhbC9j
b2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
LQotQGludGVyZmFjZSBXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyIDogTlNP
YmplY3QgewotICAgIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyogX3BhcmVu
dDsKLX0KLQotLSAoaWQpaW5pdFdpdGhQYXJlbnQ6KE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQyopY2FsbGJhY2s7Ci0tICh2b2lkKWludmFsaWRhdGU7Ci0tICh2b2lkKWJlZ2lu
T2JzZXJ2aW5nTGF5ZXJzOwotLSAodm9pZClzdG9wT2JzZXJ2aW5nTGF5ZXJzOwotQGVuZAotCi1A
aW1wbGVtZW50YXRpb24gV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcgotCi0t
IChpZClpbml0V2l0aFBhcmVudDooTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
KilwYXJlbnQKLXsKLSAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKLSAgICAgICAgcmV0
dXJuIG5pbDsKLQotICAgIF9wYXJlbnQgPSBwYXJlbnQ7Ci0KLSAgICByZXR1cm4gc2VsZjsKLX0K
LQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW3NlbGYgaW52YWxpZGF0ZV07Ci0gICAgW3N1cGVy
IGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWludmFsaWRhdGUKLXsKLSAgICBbc2VsZiBzdG9wT2Jz
ZXJ2aW5nTGF5ZXJzXTsKLSAgICBfcGFyZW50ID0gbnVsbHB0cjsKLX0KLQotLSAodm9pZCliZWdp
bk9ic2VydmluZ0xheWVycwotewotICAgIEFTU0VSVChfcGFyZW50KTsKLSAgICBBU1NFUlQoX3Bh
cmVudC0+ZGlzcGxheUxheWVyKCkpOwotICAgIEFTU0VSVChfcGFyZW50LT5iYWNrZ3JvdW5kTGF5
ZXIoKSk7Ci0KLSAgICBbX3BhcmVudC0+ZGlzcGxheUxheWVyKCkgYWRkT2JzZXJ2ZXI6c2VsZiBm
b3JLZXlQYXRoOkAic3RhdHVzIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcg
Y29udGV4dDpuaWxdOwotICAgIFtfcGFyZW50LT5kaXNwbGF5TGF5ZXIoKSBhZGRPYnNlcnZlcjpz
ZWxmIGZvcktleVBhdGg6QCJlcnJvciIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9u
TmV3IGNvbnRleHQ6bmlsXTsKLSAgICBbX3BhcmVudC0+YmFja2dyb3VuZExheWVyKCkgYWRkT2Jz
ZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAiYm91bmRzIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZp
bmdPcHRpb25OZXcgY29udGV4dDpuaWxdOwotfQotCi0tICh2b2lkKXN0b3BPYnNlcnZpbmdMYXll
cnMKLXsKLSAgICBpZiAoIV9wYXJlbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChfcGFy
ZW50LT5kaXNwbGF5TGF5ZXIoKSkgewotICAgICAgICBbX3BhcmVudC0+ZGlzcGxheUxheWVyKCkg
cmVtb3ZlT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAic3RhdHVzIl07Ci0gICAgICAgIFtfcGFy
ZW50LT5kaXNwbGF5TGF5ZXIoKSByZW1vdmVPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJlcnJv
ciJdOwotICAgIH0KLSAgICBpZiAoX3BhcmVudC0+YmFja2dyb3VuZExheWVyKCkpCi0gICAgICAg
IFtfcGFyZW50LT5iYWNrZ3JvdW5kTGF5ZXIoKSByZW1vdmVPYnNlcnZlcjpzZWxmIGZvcktleVBh
dGg6QCJib3VuZHMiXTsKLX0KLQotLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOihOU1N0
cmluZyAqKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAq
KWNoYW5nZSBjb250ZXh0Oih2b2lkICopY29udGV4dAotewotICAgIFVOVVNFRF9QQVJBTShjb250
ZXh0KTsKLSAgICBVTlVTRURfUEFSQU0oa2V5UGF0aCk7Ci0gICAgQVNTRVJUKF9wYXJlbnQpOwot
Ci0gICAgaWYgKCFfcGFyZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoW29iamVjdCBp
c0tpbmRPZkNsYXNzOlBBTDo6Z2V0QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJDbGFzcygpXSkg
ewotICAgICAgICBSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IGxheWVyID0g
KEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyICopb2JqZWN0OwotICAgICAgICBBU1NFUlQobGF5
ZXIuZ2V0KCkgPT0gX3BhcmVudC0+ZGlzcGxheUxheWVyKCkpOwotCi0gICAgICAgIGlmIChba2V5
UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJzdGF0dXMiXSkgewotICAgICAgICAgICAgUmV0YWluUHRy
PE5TTnVtYmVyPiBzdGF0dXMgPSBbY2hhbmdlIHZhbHVlRm9yS2V5Ok5TS2V5VmFsdWVDaGFuZ2VO
ZXdLZXldOwotICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IFJl
dGFpblB0cjxXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyPihzZWxmKSwgbGF5
ZXIgPSBXVEZNb3ZlKGxheWVyKSwgc3RhdHVzID0gV1RGTW92ZShzdGF0dXMpXSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFwcm90ZWN0ZWRTZWxmLT5fcGFyZW50KQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICBwcm90ZWN0ZWRTZWxmLT5fcGFyZW50LT5sYXll
clN0YXR1c0RpZENoYW5nZShsYXllci5nZXQoKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChba2V5UGF0aCBpc0VxdWFsVG9T
dHJpbmc6QCJlcnJvciJdKSB7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8TlNOdW1iZXI+IHN0YXR1
cyA9IFtjaGFuZ2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1ZUNoYW5nZU5ld0tleV07Ci0gICAgICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFWU2Ft
cGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXI+KHNlbGYpLCBsYXllciA9IFdURk1vdmUobGF5
ZXIpLCBzdGF0dXMgPSBXVEZNb3ZlKHN0YXR1cyldIHsKLSAgICAgICAgICAgICAgICBpZiAoIXBy
b3RlY3RlZFNlbGYtPl9wYXJlbnQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9wYXJlbnQtPmxheWVyRXJyb3JEaWRDaGFuZ2Uo
bGF5ZXIuZ2V0KCkpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoW1tjaGFuZ2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1ZUNo
YW5nZU5vdGlmaWNhdGlvbklzUHJpb3JLZXldIGJvb2xWYWx1ZV0pCi0gICAgICAgIHJldHVybjsK
LQotICAgIGlmICgoQ0FMYXllciAqKW9iamVjdCA9PSBfcGFyZW50LT5iYWNrZ3JvdW5kTGF5ZXIo
KSkgewotICAgICAgICBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAiYm91bmRzIl0pIHsK
LSAgICAgICAgICAgIGlmICghX3BhcmVudCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgICAgIGlmIChpc01haW5UaHJlYWQoKSkgewotICAgICAgICAgICAgICAgIF9wYXJlbnQt
PmJhY2tncm91bmRMYXllckJvdW5kc0NoYW5nZWQoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3Rl
ZFNlbGYgPSBSZXRhaW5QdHI8V2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcj4o
c2VsZildIHsKLSAgICAgICAgICAgICAgICBpZiAoIXByb3RlY3RlZFNlbGYtPl9wYXJlbnQpCi0g
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIHByb3RlY3RlZFNl
bGYtPl9wYXJlbnQtPmJhY2tncm91bmRMYXllckJvdW5kc0NoYW5nZWQoKTsKLSAgICAgICAgICAg
IH0pOwotICAgICAgICB9Ci0gICAgfQotCi19Ci1AZW5kCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IHVzaW5nIG5hbWVzcGFjZSBQQUw7CiAKQEAgLTE4Myw3ICs1OCw2IEBAIHN0YXRpYyBjb25zdCBk
b3VibGUgcmVuZGVyZXJMYXRlbmN5ID0gMC4wMjsKIAogTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMoTWVkaWFQ
bGF5ZXIqIHBsYXllcikKICAgICA6IG1fcGxheWVyKHBsYXllcikKLSAgICAsIG1fc3RhdHVzQ2hh
bmdlTGlzdGVuZXIoYWRvcHROUyhbW1dlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVu
ZXIgYWxsb2NdIGluaXRXaXRoUGFyZW50OnRoaXNdKSkKICAgICAsIG1fY2xvY2soUEFMOjpDbG9j
azo6Y3JlYXRlKCkpCiAgICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcihtYWtlVW5p
cXVlPFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakM+KCkpCiAjaWYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECkBAIC0xOTgsOCArNzIsNiBAQCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6On5NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMoKQogewogICAg
IElORk9fTE9HKExPR0lERU5USUZJRVIpOwogCi0gICAgW21fc3RhdHVzQ2hhbmdlTGlzdGVuZXIg
aW52YWxpZGF0ZV07Ci0KICAgICBmb3IgKGNvbnN0IGF1dG8mIHRyYWNrIDogbV9hdWRpb1RyYWNr
TWFwLnZhbHVlcygpKQogICAgICAgICB0cmFjay0+cGF1c2UoKTsKIApAQCAtMjY5LDMzICsxNDEs
NiBAQCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6c3VwcG9ydHNUeXBlKGNvbgogI3ByYWdtYSBtYXJrIC0KICNwcmFnbWEgbWFy
ayBBVlNhbXBsZUJ1ZmZlciBNZXRob2RzCiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjpyZW1vdmVPbGRTYW1wbGVzRnJvbVBlbmRpbmdRdWV1ZShQZW5kaW5nU2Ft
cGxlUXVldWUmIHF1ZXVlKQotewotICAgIGlmIChxdWV1ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGF1dG8gZGVjb2RlVGltZSA9IHF1ZXVlLmZpcnN0KCktPmRlY29kZVRpbWUo
KTsKLSAgICBpZiAoIWRlY29kZVRpbWUuaXNWYWxpZCgpIHx8IGRlY29kZVRpbWUgPCBNZWRpYVRp
bWU6Onplcm9UaW1lKCkpIHsKLSAgICAgICAgd2hpbGUgKHF1ZXVlLnNpemUoKSA+IDUpCi0gICAg
ICAgICAgICBxdWV1ZS5yZW1vdmVGaXJzdCgpOwotCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBNZWRpYVRpbWUgbm93ID0gc3RyZWFtVGltZSgpOwotICAgIHdoaWxlICghcXVldWUuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIGlmIChxdWV1ZS5maXJzdCgpLT5kZWNvZGVUaW1lKCkgPiBub3cp
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgcXVldWUucmVtb3ZlRmlyc3QoKTsKLSAgICB9
Ci19Ci0KLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjphZGRTYW1w
bGVUb1BlbmRpbmdRdWV1ZShQZW5kaW5nU2FtcGxlUXVldWUmIHF1ZXVlLCBNZWRpYVNhbXBsZSYg
c2FtcGxlKQotewotICAgIHJlbW92ZU9sZFNhbXBsZXNGcm9tUGVuZGluZ1F1ZXVlKHF1ZXVlKTsK
LSAgICBxdWV1ZS5hcHBlbmQoc2FtcGxlKTsKLX0KLQogTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y2FsY3VsYXRlVGltZWxpbmVPZmZzZXQoY29uc3QgTWVk
aWFTYW1wbGUmIHNhbXBsZSwgZG91YmxlIGxhdGVuY3kpCiB7CiAgICAgTWVkaWFUaW1lIHNhbXBs
ZVRpbWUgPSBzYW1wbGUub3V0cHV0UHJlc2VudGF0aW9uVGltZSgpOwpAQCAtMzMwLDM3ICsxNzUs
MTkgQEAgQ0dBZmZpbmVUcmFuc2Zvcm0gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjp2aWRlb1RyYW5zZm9ybWF0aW9uTWF0cmkKICAgICByZXR1cm4gbV92aWRlb1RyYW5zZm9y
bTsKIH0KIAotc3RhdGljIHZvaWQgcnVuV2l0aG91dEFuaW1hdGlvbnMoY29uc3QgV1RGOjpGdW5j
dGlvbjx2b2lkKCk+JiBmdW5jdGlvbikKLXsKLSAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07Ci0g
ICAgW0NBVHJhbnNhY3Rpb24gc2V0QW5pbWF0aW9uRHVyYXRpb246MF07Ci0gICAgW0NBVHJhbnNh
Y3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKLSAgICBmdW5jdGlvbigpOwotICAgIFtDQVRy
YW5zYWN0aW9uIGNvbW1pdF07Ci19Ci0KIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjplbnF1ZXVlQ29ycmVjdGVkVmlkZW9TYW1wbGUoTWVkaWFTYW1wbGUmIHNhbXBs
ZSkKIHsKICAgICBpZiAobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpIHsKLSAgICAgICAgaWYg
KFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBzdGF0dXNdID09IEFWUXVldWVkU2FtcGxlQnVm
ZmVyUmVuZGVyaW5nU3RhdHVzRmFpbGVkKQorICAgICAgICBpZiAobV9zYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXItPmRpZEZhaWwoKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAo
c2FtcGxlLnZpZGVvUm90YXRpb24oKSAhPSBtX3ZpZGVvUm90YXRpb24gfHwgc2FtcGxlLnZpZGVv
TWlycm9yZWQoKSAhPSBtX3ZpZGVvTWlycm9yZWQpIHsKICAgICAgICAgICAgIG1fdmlkZW9Sb3Rh
dGlvbiA9IHNhbXBsZS52aWRlb1JvdGF0aW9uKCk7CiAgICAgICAgICAgICBtX3ZpZGVvTWlycm9y
ZWQgPSBzYW1wbGUudmlkZW9NaXJyb3JlZCgpOwotICAgICAgICAgICAgcnVuV2l0aG91dEFuaW1h
dGlvbnMoW3RoaXMsICZzYW1wbGVdIHsKLSAgICAgICAgICAgICAgICBtX3NhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5nZXQoKS5hZmZpbmVUcmFuc2Zvcm0gPSB2aWRlb1RyYW5zZm9ybWF0aW9uTWF0
cml4KHNhbXBsZSwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgdXBkYXRlRGlzcGxheUxheWVyKCk7
Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LT51cGRhdGVBZmZpbmVUcmFuc2Zvcm0odmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeChzYW1wbGUs
IHRydWUpKTsKKyAgICAgICAgICAgIHVwZGF0ZURpc3BsYXlMYXllcigpOwogICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKCFbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgaXNSZWFkeUZvck1vcmVN
ZWRpYURhdGFdKSB7Ci0gICAgICAgICAgICBhZGRTYW1wbGVUb1BlbmRpbmdRdWV1ZShtX3BlbmRp
bmdWaWRlb1NhbXBsZVF1ZXVlLCBzYW1wbGUpOwotICAgICAgICAgICAgcmVxdWVzdE5vdGlmaWNh
dGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KLSAgICAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGVucXVldWVTYW1wbGVC
dWZmZXI6c2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkuc2FtcGxlLmNtU2FtcGxlQnVmZmVyXTsKKyAg
ICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPmVucXVldWVTYW1wbGUoc2FtcGxlKTsK
ICAgICB9CiAKICAgICBpZiAoIW1faGFzRXZlckVucXVldWVkVmlkZW9GcmFtZSkgewpAQCAtNDE1
LDYxICsyNDIsMjUgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OmVucXVldWVWaWRlb1NhbXBsZShNZWRpYVN0cmVhbVRyYWNrUHIKICAgICB9CiB9CiAKLXZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpyZXF1ZXN0Tm90aWZpY2F0aW9u
V2hlblJlYWR5Rm9yVmlkZW9EYXRhKCkKLXsKLSAgICBhdXRvIHdlYWtUaGlzID0gbWFrZVdlYWtQ
dHIoKnRoaXMpOwotICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciByZXF1ZXN0TWVkaWFE
YXRhV2hlblJlYWR5T25RdWV1ZTpkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpIHVzaW5nQmxvY2s6
XiB7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHN0b3BSZXF1ZXN0aW5nTWVkaWFEYXRhXTsK
LQotICAgICAgICBpZiAoIW1fYWN0aXZlVmlkZW9UcmFjaykgewotICAgICAgICAgICAgbV9wZW5k
aW5nVmlkZW9TYW1wbGVRdWV1ZS5jbGVhcigpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KLSAgICAgICAgd2hpbGUgKCFtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmlzRW1wdHko
KSkgewotICAgICAgICAgICAgaWYgKCFbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgaXNSZWFk
eUZvck1vcmVNZWRpYURhdGFdKSB7Ci0gICAgICAgICAgICAgICAgcmVxdWVzdE5vdGlmaWNhdGlv
bldoZW5SZWFkeUZvclZpZGVvRGF0YSgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgYXV0byBzYW1wbGUgPSBtX3BlbmRpbmdWaWRlb1NhbXBs
ZVF1ZXVlLnRha2VGaXJzdCgpOwotICAgICAgICAgICAgZW5xdWV1ZVZpZGVvU2FtcGxlKCptX2Fj
dGl2ZVZpZGVvVHJhY2suZ2V0KCksIHNhbXBsZS5nZXQoKSk7Ci0gICAgICAgIH0KLSAgICB9XTsK
LX0KLQogQXVkaW9Tb3VyY2VQcm92aWRlciogTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjphdWRpb1NvdXJjZVByb3ZpZGVyKCkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGQgcmV0dXJuIGEgbWl4IG9mIGFsbCBhdWRpbyB0cmFja3MgLSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwMzA1CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpsYXllckVycm9yRGlkQ2hh
bmdlKEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKiBsYXllcikKLXsKLSAgICBVTlVTRURfUEFS
QU0obGF5ZXIpOwotICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiZXJyb3IgPSAiLCBbW2xh
eWVyLmVycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXSBVVEY4U3RyaW5nXSk7Ci19Ci0KLXZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpsYXllclN0YXR1c0RpZENoYW5n
ZShBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciogbGF5ZXIpCit2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyU3RhdHVzRGlk
Q2hhbmdlKFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciYgbGF5ZXIpCiB7Ci0gICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCAic3RhdHVzID0gIiwgKGludClsYXllci5zdGF0dXMpOwotCi0gICAg
aWYgKGxheWVyLnN0YXR1cyAhPSBBVlF1ZXVlZFNhbXBsZUJ1ZmZlclJlbmRlcmluZ1N0YXR1c1Jl
bmRlcmluZykKLSAgICAgICAgcmV0dXJuOwotICAgIGlmICghbV9zYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIgfHwgIW1fYWN0aXZlVmlkZW9UcmFjayB8fCBsYXllciAhPSBtX3NhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcikKKyAgICBBU1NFUlQoJmxheWVyID09IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyLmdldCgpKTsKKyAgICBpZiAoIW1fYWN0aXZlVmlkZW9UcmFjaykKICAgICAgICAgcmV0dXJu
OwogCi0gICAgYXV0byB0cmFjayA9IG1fdmlkZW9UcmFja01hcC5nZXQobV9hY3RpdmVWaWRlb1Ry
YWNrLT5pZCgpKTsKLSAgICBpZiAodHJhY2spCisgICAgaWYgKGF1dG8gdHJhY2sgPSBtX3ZpZGVv
VHJhY2tNYXAuZ2V0KG1fYWN0aXZlVmlkZW9UcmFjay0+aWQoKSkpCiAgICAgICAgIHRyYWNrLT5z
ZXRUaW1lbGluZU9mZnNldChNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpOwogfQogCiB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YXBwbGljYXRpb25EaWRCZWNvbWVB
Y3RpdmUoKQogewotICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciAmJiBbbV9zYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIgc3RhdHVzXSA9PSBBVlF1ZXVlZFNhbXBsZUJ1ZmZlclJlbmRl
cmluZ1N0YXR1c0ZhaWxlZCkgeworICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciAm
JiBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+ZGlkRmFpbCgpKSB7CiAgICAgICAgIGZsdXNo
UmVuZGVyZXJzKCk7CiAgICAgICAgIGlmIChtX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSkKICAg
ICAgICAgICAgIGVucXVldWVDb3JyZWN0ZWRWaWRlb1NhbXBsZSgqbV9pbWFnZVBhaW50ZXIubWVk
aWFTYW1wbGUpOwpAQCAtNDgwLDcgKzI3MSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Zmx1c2hSZW5kZXJlcnMoKQogewogICAg
IGlmIChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKLSAgICAgICAgW21fc2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyIGZsdXNoXTsKKyAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIt
PmZsdXNoKCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjplbnN1cmVMYXllcnMoKQpAQCAtNDkxLDUxICsyODIsMjQgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVuc3VyZUxheWVycygpCiAgICAgaWYgKCFtX21lZGlh
U3RyZWFtUHJpdmF0ZSB8fCAhbV9tZWRpYVN0cmVhbVByaXZhdGUtPmFjdGl2ZVZpZGVvVHJhY2so
KSB8fCAhbV9tZWRpYVN0cmVhbVByaXZhdGUtPmFjdGl2ZVZpZGVvVHJhY2soKS0+ZW5hYmxlZCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciA9IGFk
b3B0TlMoW1BBTDo6YWxsb2NBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckluc3RhbmNlKCkgaW5p
dF0pOworICAgIGF1dG8gc2l6ZSA9IHNuYXBwZWRJbnRSZWN0KG1fcGxheWVyLT5wbGF5ZXJDb250
ZW50Qm94UmVjdCgpKS5zaXplKCk7CisgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgPSBM
b2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y3JlYXRlKCp0aGlzLCBoaWRlUm9vdExheWVy
KCksIHNpemUpOworCiAgICAgaWYgKCFtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikgewotICAg
ICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIitbQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIgYWxsb2NdIGZhaWxlZC4iKTsKKyAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJD
cmVhdGluZyB0aGUgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGZhaWxlZC4iKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLmJh
Y2tncm91bmRDb2xvciA9IGNhY2hlZENHQ29sb3IoQ29sb3I6OmJsYWNrKTsKLSAgICBtX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKS5hbmNob3JQb2ludCA9IHsgLjUsIC41IH07Ci0gICAg
bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCkubmVlZHNEaXNwbGF5T25Cb3VuZHNDaGFu
Z2UgPSBZRVM7Ci0gICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCkudmlkZW9HcmF2
aXR5ID0gQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGw7Ci0KLSAgICBtX2JhY2tn
cm91bmRMYXllciA9IGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7Ci0gICAgbV9iYWNr
Z3JvdW5kTGF5ZXIuZ2V0KCkuaGlkZGVuID0gaGlkZUJhY2tncm91bmRMYXllcigpOwotCi0gICAg
bV9iYWNrZ3JvdW5kTGF5ZXIuZ2V0KCkuYmFja2dyb3VuZENvbG9yID0gY2FjaGVkQ0dDb2xvcihD
b2xvcjo6YmxhY2spOwotICAgIG1fYmFja2dyb3VuZExheWVyLmdldCgpLm5lZWRzRGlzcGxheU9u
Qm91bmRzQ2hhbmdlID0gWUVTOwotCi0gICAgYXV0byBzaXplID0gc25hcHBlZEludFJlY3QobV9w
bGF5ZXItPnBsYXllckNvbnRlbnRCb3hSZWN0KCkpLnNpemUoKTsKLSAgICBtX2JhY2tncm91bmRM
YXllci5nZXQoKS5ib3VuZHMgPSBDR1JlY3RNYWtlKDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5o
ZWlnaHQoKSk7Ci0KLSAgICBbbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lciBiZWdpbk9ic2VydmluZ0xh
eWVyc107Ci0KLSAgICBbbV9iYWNrZ3JvdW5kTGF5ZXIgYWRkU3VibGF5ZXI6bV9zYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIuZ2V0KCldOwotCi0jaWZuZGVmIE5ERUJVRwotICAgIFttX3NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllciBzZXROYW1lOkAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIl07Ci0gICAgW21fYmFja2dyb3VuZExh
eWVyIHNldE5hbWU6QCJNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMgQVZTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIgcGFyZW50Il07Ci0jZW5kaWYKLQogICAgIHVwZGF0ZVJlbmRl
cmluZ01vZGUoKTsKICAgICB1cGRhdGVEaXNwbGF5TGF5ZXIoKTsKIAotICAgIG1fdmlkZW9GdWxs
c2NyZWVuTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0xheWVyKG1fYmFja2dyb3VuZExheWVyLmdldCgp
LCBzaXplKTsKKyAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+c2V0VmlkZW9MYXll
cihtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+cm9vdExheWVyKCksIHNpemUpOwogfQogCiB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGVzdHJveUxheWVycygp
CiB7Ci0gICAgW21fc3RhdHVzQ2hhbmdlTGlzdGVuZXIgc3RvcE9ic2VydmluZ0xheWVyc107Ci0g
ICAgaWYgKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKSB7Ci0gICAgICAgIG1fcGVuZGluZ1Zp
ZGVvU2FtcGxlUXVldWUuY2xlYXIoKTsKLSAgICAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyIHN0b3BSZXF1ZXN0aW5nTWVkaWFEYXRhXTsKLSAgICAgICAgW21fc2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyIGZsdXNoXTsKKyAgICBpZiAobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpCiAg
ICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyID0gbnVsbHB0cjsKLSAgICB9Ci0gICAg
bV9iYWNrZ3JvdW5kTGF5ZXIgPSBudWxscHRyOwogCiAgICAgdXBkYXRlUmVuZGVyaW5nTW9kZSgp
OwogICAgIApAQCAtNjAyLDIyICszNjYsMTIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakM6OnByZXBhcmVUb1BsYXkoKQogCiBQbGF0Zm9ybUxheWVyKiBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewot
ICAgIGlmICghbV9iYWNrZ3JvdW5kTGF5ZXIgfHwgbV9kaXNwbGF5TW9kZSA9PSBOb25lKQorICAg
IGlmICghbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgfHwgIW1fc2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLT5yb290TGF5ZXIoKSB8fCBtX2Rpc3BsYXlNb2RlID09IE5vbmUpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2Vy
LT52aWRlb0lubGluZUxheWVyKCk7CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGlzcGxheUxheWVyKCkKLXsKLSAgICByZXR1cm4gbV9z
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCk7Ci19Ci0KLVBsYXRmb3JtTGF5ZXIqIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YmFja2dyb3VuZExheWVyKCkKLXsKLSAg
ICByZXR1cm4gbV9iYWNrZ3JvdW5kTGF5ZXIuZ2V0KCk7Ci19Ci0KIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6RGlzcGxheU1vZGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjpjdXJyZW50RGlzcGxheU1vZGUoKSBjb25zdAogewogICAgIGlmIChtX2lu
dHJpbnNpY1NpemUuaXNFbXB0eSgpIHx8ICFtZXRhRGF0YUF2YWlsYWJsZSgpIHx8ICFtX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcikKQEAgLTY1MywxOCArNDA3LDggQEAgYm9vbCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZURpc3BsYXlNb2RlKCkKICAgICBJTkZP
X0xPRyhMT0dJREVOVElGSUVSLCAidXBkYXRlZCB0byAiLCBzdGF0aWNfY2FzdDxpbnQ+KGRpc3Bs
YXlNb2RlKSk7CiAgICAgbV9kaXNwbGF5TW9kZSA9IGRpc3BsYXlNb2RlOwogCi0gICAgYXV0byBo
aWRkZW4gPSBtX2Rpc3BsYXlNb2RlIDwgUGF1c2VkSW1hZ2U7Ci0gICAgaWYgKG1fc2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyICYmIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLmhpZGRl
biAhPSBoaWRkZW4pIHsKLSAgICAgICAgcnVuV2l0aG91dEFuaW1hdGlvbnMoW3RoaXMsIGhpZGRl
bl0gewotICAgICAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCkuaGlkZGVu
ID0gaGlkZGVuOwotICAgICAgICB9KTsKLSAgICB9Ci0gICAgaGlkZGVuID0gaGlkZUJhY2tncm91
bmRMYXllcigpOwotICAgIGlmIChtX2JhY2tncm91bmRMYXllciAmJiBtX2JhY2tncm91bmRMYXll
ci5nZXQoKS5oaWRkZW4gIT0gaGlkZGVuKSB7Ci0gICAgICAgIHJ1bldpdGhvdXRBbmltYXRpb25z
KFt0aGlzLCBoaWRkZW5dIHsKLSAgICAgICAgICAgIG1fYmFja2dyb3VuZExheWVyLmdldCgpLmhp
ZGRlbiA9IGhpZGRlbjsKLSAgICAgICAgfSk7Ci0gICAgfQorICAgIGlmIChtX3NhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcikKKyAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPnVwZGF0
ZURpc3BsYXlNb2RlKG1fZGlzcGxheU1vZGUgPCBQYXVzZWRJbWFnZSwgaGlkZVJvb3RMYXllcigp
KTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTAyMyw4ICs3NjcsMTEgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmNoZWNrU2VsZWN0ZWRWaWRlb1RyYWNr
KCkKICAgICAgICAgICAgICAgICBtX3dhaXRpbmdGb3JGaXJzdEltYWdlID0gdHJ1ZTsKICAgICAg
ICAgfQogICAgICAgICBlbnN1cmVMYXllcnMoKTsKLSAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIuZ2V0KCkuaGlkZGVuID0gaGlkZVZpZGVvTGF5ZXIgfHwgbV9kaXNwbGF5TW9kZSA8
IFBhdXNlZEltYWdlOwotICAgICAgICBtX2JhY2tncm91bmRMYXllci5nZXQoKS5oaWRkZW4gPSBo
aWRlQmFja2dyb3VuZExheWVyKCk7CisgICAgICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcikgeworICAgICAgICAgICAgaWYgKCFtX2FjdGl2ZVZpZGVvVHJhY2spCisgICAgICAgICAg
ICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPmNsZWFyRW5xdWV1ZWRTYW1wbGVzKCk7
CisgICAgICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+dXBkYXRlRGlzcGxheU1v
ZGUoaGlkZVZpZGVvTGF5ZXIgfHwgbV9kaXNwbGF5TW9kZSA8IFBhdXNlZEltYWdlLCBoaWRlUm9v
dExheWVyKCkpOworICAgICAgICB9CiAKICAgICAgICAgbV9wZW5kaW5nU2VsZWN0ZWRUcmFja0No
ZWNrID0gZmFsc2U7CiAgICAgICAgIHVwZGF0ZURpc3BsYXlNb2RlKCk7CkBAIC0xMTczLDggKzky
MCw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXROZXR3
b3JrU3RhdGUoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRCdWZmZXJpbmdQb2xpY3koTWVkaWFQbGF5ZXI6OkJ1ZmZl
cmluZ1BvbGljeSBwb2xpY3kpCiB7Ci0gICAgaWYgKHBvbGljeSAhPSBNZWRpYVBsYXllcjo6QnVm
ZmVyaW5nUG9saWN5OjpEZWZhdWx0KQotICAgICAgICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIgZmx1c2hBbmRSZW1vdmVJbWFnZV07CisgICAgaWYgKHBvbGljeSAhPSBNZWRpYVBsYXllcjo6
QnVmZmVyaW5nUG9saWN5OjpEZWZhdWx0ICYmIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQor
ICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+Zmx1c2hBbmRSZW1vdmVJbWFnZSgp
OwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2NoZWR1
bGVEZWZlcnJlZFRhc2soRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKQEAgLTExOTcsMjMg
Kzk0NCwyMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Q3Vy
cmVudEZyYW1lUGFpbnRlcjo6cmVzZXQoKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6dXBkYXRlRGlzcGxheUxheWVyKCkKIHsKLSAgICBpZiAoIW1fYmFja2dy
b3VuZExheWVyIHx8ICFtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKKyAgICBpZiAoIW1fc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGJhY2tn
cm91bmRCb3VuZHMgPSBtX2JhY2tncm91bmRMYXllci5nZXQoKS5ib3VuZHM7Ci0gICAgYXV0byB2
aWRlb0JvdW5kcyA9IGJhY2tncm91bmRCb3VuZHM7CisgICAgYXV0byBib3VuZHMgPSBtX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci0+Ym91bmRzKCk7CisgICAgYXV0byB2aWRlb0JvdW5kcyA9IGJv
dW5kczsKICAgICBpZiAobV92aWRlb1JvdGF0aW9uID09IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0
aW9uOjpSaWdodCB8fCBtX3ZpZGVvUm90YXRpb24gPT0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRp
b246OkxlZnQpCiAgICAgICAgIHN0ZDo6c3dhcCh2aWRlb0JvdW5kcy5zaXplLndpZHRoLCB2aWRl
b0JvdW5kcy5zaXplLmhlaWdodCk7CiAKLSAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5n
ZXQoKS5ib3VuZHMgPSB2aWRlb0JvdW5kczsKLSAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ci5nZXQoKS5wb3NpdGlvbiA9IHsgYmFja2dyb3VuZEJvdW5kcy5zaXplLndpZHRoIC8gMiwgYmFj
a2dyb3VuZEJvdW5kcy5zaXplLmhlaWdodCAvIDJ9OworICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLT51cGRhdGVCb3VuZHNBbmRQb3NpdGlvbih2aWRlb0JvdW5kcywgeyBib3VuZHMuc2l6
ZS53aWR0aCAvIDIsIGJvdW5kcy5zaXplLmhlaWdodCAvIDJ9KTsKIH0KIAotdm9pZCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmJhY2tncm91bmRMYXllckJvdW5kc0NoYW5n
ZWQoKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllckJvdW5kc0RpZENoYW5nZShTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIm
KQogewotICAgIHJ1bldpdGhvdXRBbmltYXRpb25zKFt0aGlzXSB7Ci0gICAgICAgIHVwZGF0ZURp
c3BsYXlMYXllcigpOwotICAgIH0pOworICAgIHVwZGF0ZURpc3BsYXlMYXllcigpOwogfQogCiAj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387343</attachid>
            <date>2020-01-10 09:10:02 -0800</date>
            <delta_ts>2020-01-10 09:20:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206066-20200110180959.patch</filename>
            <type>text/plain</type>
            <size>55114</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MzMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGUyYTU5YTEzYTAyMmMy
YWM5MzE5ZGIzZDI5OTYwOWQ3YmRlOTM5OC4uNjI4OGEwOWJmNTlhOTQ2ZmY3Njc1MDc0YjVhNDk2
ZDc2M2VhY2E2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDIwLTAxLTEwICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgYW4gYWJz
dHJhY3QgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYwNjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHVzZSBvZiBkaXNwbGF5IGxheWVycyBpbiBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMgdG8gYSBuZXcgY2xhc3MgTG9jYWxTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIKKyAgICAgICAgdGhhdCBpbXBsZW1lbnRzIGFuIGludGVyZmFj
ZSBuYW1lZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuCisgICAgICAgIEEgZnV0dXJlIHBhdGNo
IHdpbGwgaW1wbGVtZW50IHRoaXMgaW50ZXJmYWNlIGJ5IElQQ2luZyB0byBHUFVQcm9jZXNzLgor
ICAgICAgICBXZSBtb3ZlIGJvdGggbGF5ZXJzIGFuZCBoYW5kbGluZyBvZiB0aGUgc2FtcGxlIHF1
ZXVlIHRvIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLgorCisgICAgICAgIENvbnRyYXJ5
IHRvIHByZXZpb3VzbHksIHdlIGRvIG5vdCBjYWxsIGFnYWluIGVucXVldWVWaWRlb1NhbXBsZSBp
biBjYXNlIHdlIGVucXVldWVkIGEgc2FtcGxlIGZvciBsYXRlciB1c2UgaW4gdGhlIGRpc3BsYXkg
bGF5ZXIuCisgICAgICAgIEluc3RlYWQsIHdlIGRpcmVjdGx5IHJlbmRlciBpdCwgd2hpY2ggc2hv
dWxkIG5vdCBjaGFuZ2UgbXVjaCBzaW5jZSB0aGlzIGlzIGEgcmVhbHRpbWUgdHJhY2sgYW5kIGlu
IHRoZSBmdXR1cmUgdGhlIGJ1ZmZlciB3aWxsIGJlIGluIEdQVVByb2Nlc3MgYW55d2F5LgorIAor
ICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubW06IEFkZGVkLgor
ICAgICAgICAoLVtXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyIGluaXRXaXRo
UGFyZW50Ol0pOgorICAgICAgICAoLVtXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3Rl
bmVyIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VM
aXN0ZW5lciBpbnZhbGlkYXRlXSk6CisgICAgICAgICgtW1dlYkFWU2FtcGxlQnVmZmVyU3RhdHVz
Q2hhbmdlTGlzdGVuZXIgYmVnaW5PYnNlcnZpbmdMYXllcnNdKToKKyAgICAgICAgKC1bV2ViQVZT
YW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lciBzdG9wT2JzZXJ2aW5nTGF5ZXJzXSk6Cisg
ICAgICAgICgtW1dlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgb2JzZXJ2ZVZh
bHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKyAgICAgICAgKFdlYkNv
cmU6OnJ1bldpdGhvdXRBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcik6CisgICAg
ICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6fkxvY2FsU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyOjpsYXllclN0YXR1c0RpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpM
b2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6bGF5ZXJFcnJvckRpZENoYW5nZSk6CisgICAg
ICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6cm9vdExheWVyQm91
bmRzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyOjpkaXNwbGF5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OnJvb3RMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZGlkRmFpbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
b2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6dXBkYXRlRGlzcGxheU1vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmJvdW5kcyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6dXBkYXRl
QWZmaW5lVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjp1cGRhdGVCb3VuZHNBbmRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpM
b2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5zdXJlTGF5ZXJzKToKKyAgICAgICAgKFdl
YkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpmbHVzaCk6CisgICAgICAgIChX
ZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Zmx1c2hBbmRSZW1vdmVJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5x
dWV1ZVNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6cmVtb3ZlT2xkU2FtcGxlc0Zyb21QZW5kaW5nUXVldWUpOgorICAgICAgICAoV2ViQ29y
ZTo6TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmFkZFNhbXBsZVRvUGVuZGluZ1F1ZXVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjbGVh
ckVucXVldWVkU2FtcGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcjo6cmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1t
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp+TWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZUNvcnJlY3RlZFZpZGVvU2FtcGxlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyU3RhdHVzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YXBwbGljYXRpb25EaWRCZWNv
bWVBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjpmbHVzaFJlbmRlcmVycyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVuc3VyZUxheWVycyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmRlc3Ryb3lMYXllcnMp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGlzcGxheUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlRGlzcGxheU1vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjpjaGVja1NlbGVjdGVkVmlkZW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNldEJ1ZmZlcmluZ1BvbGljeSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZURp
c3BsYXlMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OnNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckJvdW5kc0RpZENoYW5nZSk6CisK
KzIwMjAtMDEtMTAgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAg
IENsZWFuLXVwIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYwNjAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2Ugb2YgYmVo
YXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakMubW06CisKIDIwMjAtMDEtMTAgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVy
ZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBGaXggdmFyaW91cyBub24tdW5pZmllZCBidWlsZCBp
c3N1ZXMgaW50cm9kdWNlZCBzaW5jZSByMjUzNTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRl
eCBlNDUzZDg5MDk3ZTY4NmIyYzMzNTJiYWQ2NmVlNzEyMzQ3YzE2NmI1Li42NWJhNTk3ODU5YTEw
OGI4MDExZmIxYjMzN2JjZWUyZjI0Mjc5MjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAg
LTI1Myw2ICsyNTMsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1T
ZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbSBAbm8tdW5pZnkKIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZP
YmpDLm1tIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMubW0gQG5vLXVuaWZ5CitwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5t
bSBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJNYWMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIEBuby11
bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZlMjhiNTdkYzc0NGM5ODJl
YWU3MTAxYTYyMmJiMTc5MGJjOWZiNzIuLjEyNzVmYmQ1OTNjNDZlM2E0NTJlNTIxNmNhYmNlNmFk
YjgwNGRiM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTEwNjgsNiArMTA2OCw3IEBACiAJCTQxM0MyQzM0MUJDMjlBOEYwMDc1
MjA0QyAvKiBKU0RPTUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTNDMkMzMzFCQzI5QTdCMDA3NTIwNEMgLyogSlNET01Db25zdHJ1
Y3Rvci5oICovOyB9OwogCQk0MTNDQ0Q0QTIwREUwMzRGMDA2NUEyMUEgLyogTW9ja01lZGlhRGV2
aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTND
Q0Q0ODIwREUwMTNDMDA2NUEyMUEgLyogTW9ja01lZGlhRGV2aWNlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDEzRTAwNzkxREIwRTRGMjAwMjM0
MUQyIC8qIE1lbW9yeVJlbGVhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxM0UwMDc4MURCMEU0REUwMDIzNDFEMiAvKiBNZW1vcnlSZWxlYXNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDE0NTk4
QzIyM0M4RDE3NzAwMkI5Q0M4IC8qIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE0NTk4QzEyM0M4
QUQ3OTAwMkI5Q0M4IC8qIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tICovOyB9Owog
CQk0MTRCODIwNTFENkRGMEU1MDA3N0VCRTMgLyogU3RydWN0dXJlZENsb25lLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTRCODIwMzFENkRGMEQ5MDA3
N0VCRTMgLyogU3RydWN0dXJlZENsb25lLmggKi87IH07CiAJCTQxNERFREU3MUY5RkU5MUUwMDQ3
QzQwRCAvKiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTRERURFNTFGOUZFOTE1MDA0N0M0MEQgLyogRW1wdHlG
cmFtZUxvYWRlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTQxNTA3MTU4MTY4NTA2NzMwMEMzQzdCMyAvKiBTZWxlY3RvckZpbHRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1MDcxNTYx
Njg1MDY3MzAwQzNDN0IzIC8qIFNlbGVjdG9yRmlsdGVyLmggKi87IH07CkBAIC03MzQ3LDYgKzcz
NDgsOSBAQAogCQk0MTNFMDA3ODFEQjBFNERFMDAyMzQxRDIgLyogTWVtb3J5UmVsZWFzZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlSZWxlYXNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0UwMDdCMURCMEU3MDcwMDIzNDFEMiAvKiBNZW1vcnlS
ZWxlYXNlQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBN
ZW1vcnlSZWxlYXNlQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0ZD
NENEMUZEMUREOEMwMDU0MUM0QiAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVy
eU9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0NTk4QkUyM0M4QUFC
ODAwMkI5Q0M4IC8qIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDE0NTk4QzAyM0M4QUQ3ODAwMkI5Q0M4IC8qIExvY2FsU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExv
Y2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQxNDU5OEMxMjNDOEFENzkwMDJCOUNDOCAvKiBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvY2FsU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTQ3RTJCMjFDODgzMzdGMDBBN0U3MTUgLyogRmV0Y2hCb2R5T3duZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRmV0Y2hCb2R5T3duZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDE0N0UyQjMxQzg5OTEyNjAwQTdFNzE1IC8qIEZldGNoQm9keU93bmVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZldGNoQm9keU93bmVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE0N0UyQjQxQzg5OTEyNjAwQTdFNzE1
IC8qIEZldGNoTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEZldGNoTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MzE3LDYg
KzE2MzIxLDcgQEAKIAkJCQkwNzZGMEQwQTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uLmggKi8sCiAJCQkJQ0RCRUFFQUIxOUQ5MkI2QzAwQkVCQTg4IC8q
IE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLmggKi8sCiAJCQkJQ0RCRUFFQUExOUQ5MkI2QzAw
QkVCQTg4IC8qIE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1tICovLAorCQkJCTQxNDU5OEJF
MjNDOEFBQjgwMDJCOUNDOCAvKiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCAqLywKIAkJCQlD
RDMzNkY2MzE3RkEwQTREMDBERERDRDAgLyogVmlkZW9UcmFja1ByaXZhdGVBVkYuaCAqLywKIAkJ
CQkwNzA5RDc5MDFBRTU1NTdFMDA0RTQyRjggLyogV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5j
cHAgKi8sCiAJCQkJMDcwOUQ3OTExQUU1NTU3RTAwNEU0MkY4IC8qIFdlYk1lZGlhU2Vzc2lvbk1h
bmFnZXJNYWMuaCAqLywKQEAgLTI2NzQwLDYgKzI2NzQ1LDggQEAKIAkJCQkwN0FBNkI2QTE2NkQw
MTk1MDBENDU2NzEgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0gKi8sCiAJCQkJ
MDczNjdEREQxNzJDQTY3RjAwRDg2MUI5IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lB
VkZPYmpDLmggKi8sCiAJCQkJMDczNjdEREUxNzJDQTY3RjAwRDg2MUI5IC8qIEluYmFuZFRleHRU
cmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLm1tICovLAorCQkJCTQxNDU5OEMwMjNDOEFENzgwMDJC
OUNDOCAvKiBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oICovLAorCQkJCTQxNDU5OEMx
MjNDOEFENzkwMDJCOUNDOCAvKiBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbSAqLywK
IAkJCQkwNzhFNDNEQjFBQkI2RjZGMDAxQzJGQTYgLyogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ck1hYy5oICovLAogCQkJCTA3OEU0M0RDMUFCQjZGNkYwMDFDMkZBNiAvKiBNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyTWFjLm1tICovLAogCQkJCURGOUFGRDcwMTNGQzMxRDgwMDE1RkVCNyAvKiBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggKi8sCkBAIC0zMzY0MCw2ICszMzY0
Nyw3IEBACiAJCQkJNDFEMjhEMEQyMTM5RTA1ODAwRjQyMDZGIC8qIExpYldlYlJUQ1N0YXRzQ29s
bGVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxODZCRDNFMjEzRUUzNDAwMDAxODI2RiAv
KiBMaWJXZWJSVENVdGlscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzU5RTkzRTE0RUYxQ0Y4
MDAyNkEyREQgLyogTG9hZGFibGVUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDE0
NTk4QzIyM0M4RDE3NzAwMkI5Q0M4IC8qIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkFCRTcyRkUxMDU5QzIxMTAwRDk5OUREIC8qIE1hdGhNTE5h
bWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOUJGNzA1MURCRkJCMjQwMDdBN0Q5OSAvKiBN
ZWRpYUVuY3J5cHRlZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOUJGNzQ3MURCRkRD
NDkwMDdBN0Q5OSAvKiBNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9T
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
OTQxNmNhMGYyMjQxZDEwYzQ2NzZlMGZkNzYzMjIzZTNjNmNkMzAzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL1NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci5oCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCisKKyNpbmNsdWRlICJQbGF0Zm9ybUxheWVy
LmgiCisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBN
ZWRpYVRpbWU7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEludFNpemU7CitjbGFz
cyBNZWRpYVNhbXBsZTsKKworY2xhc3MgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHsKK3B1Ymxp
YzoKKyAgICBjbGFzcyBDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q2xpZW50PiB7Cisg
ICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSA9IGRlZmF1bHQ7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJTdGF0dXNEaWRDaGFuZ2UoU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgc2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyQm91bmRzRGlkQ2hhbmdlKFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ciYpID0gMDsKKyAgICAgICAgdmlydHVhbCBXVEY6Ok1lZGlhVGltZSBzdHJlYW1UaW1lKCkgY29u
c3QgPSAwOworICAgIH07CisKKyAgICBleHBsaWNpdCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIo
Q2xpZW50Jik7CisgICAgdmlydHVhbCB+U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKCkgPSBkZWZh
dWx0OworCisgICAgdmlydHVhbCBib29sIGRpZEZhaWwoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlRGlzcGxheU1vZGUoYm9vbCBoaWRlRGlzcGxheUxheWVyLCBib29sIGhp
ZGVSb290TGF5ZXIpID0gMDsKKworICAgIHZpcnR1YWwgQ0dSZWN0IGJvdW5kcygpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQWZmaW5lVHJhbnNmb3JtKENHQWZmaW5lVHJhbnNm
b3JtKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9uKENHUmVj
dCwgQ0dQb2ludCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGZsdXNoKCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBmbHVzaEFuZFJlbW92ZUltYWdlKCkgPSAwOworCisgICAgdmlydHVhbCB2b2lk
IGVucXVldWVTYW1wbGUoTWVkaWFTYW1wbGUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFy
RW5xdWV1ZWRTYW1wbGVzKCkgPSAwOworCisgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBkaXNw
bGF5TGF5ZXIoKSA9IDA7CisgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiByb290TGF5ZXIoKSA9
IDA7CisKK3Byb3RlY3RlZDoKKyAgICBXZWFrUHRyPENsaWVudD4gbV9jbGllbnQ7Cit9OworCitp
bmxpbmUgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIo
Q2xpZW50JiBjbGllbnQpCisgICAgOiBtX2NsaWVudChtYWtlV2Vha1B0cihjbGllbnQpKQorewor
fQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFU
SU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTg5MTA4ZWNlZjJhODQ0ZjYzM2MwOGFmNzI4MGZk
ZjllMjhkNDFlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgK
QEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFW
Rk9VTkRBVElPTikKKworI2luY2x1ZGUgIlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIgorI2lu
Y2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
OworT0JKQ19DTEFTUyBXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyOworCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
IGZpbmFsIDogcHVibGljIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI+IGNyZWF0ZShDbGllbnQmLCBib29sIGhpZGVSb290TGF5ZXIsIElu
dFNpemUpOworCisgICAgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoUmV0YWluUHRyPEFW
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiYmLCBDbGllbnQmLCBib29sIGhpZGVSb290TGF5ZXIs
IEludFNpemUpOworICAgIH5Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcigpOworCisgICAg
Ly8gQVBJIHVzZWQgYnkgV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcgorICAg
IHZvaWQgbGF5ZXJTdGF0dXNEaWRDaGFuZ2UoKTsKKyAgICB2b2lkIGxheWVyRXJyb3JEaWRDaGFu
Z2UoKTsKKyAgICB2b2lkIHJvb3RMYXllckJvdW5kc0RpZENoYW5nZSgpOworCisgICAgUGxhdGZv
cm1MYXllciogZGlzcGxheUxheWVyKCkgZmluYWw7CisgICAgUGxhdGZvcm1MYXllciogcm9vdExh
eWVyKCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgYm9vbCBkaWRGYWlsKCkgY29uc3QgZmluYWw7
CisKKyAgICB2b2lkIHVwZGF0ZURpc3BsYXlNb2RlKGJvb2wgaGlkZURpc3BsYXlMYXllciwgYm9v
bCBoaWRlUm9vdExheWVyKSBmaW5hbDsKKworICAgIENHUmVjdCBib3VuZHMoKSBjb25zdCBmaW5h
bDsKKyAgICB2b2lkIHVwZGF0ZUFmZmluZVRyYW5zZm9ybShDR0FmZmluZVRyYW5zZm9ybSkgIGZp
bmFsOworICAgIHZvaWQgdXBkYXRlQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0LCBDR1BvaW50KSBm
aW5hbDsKKworICAgIHZvaWQgZmx1c2goKSBmaW5hbDsKKyAgICB2b2lkIGZsdXNoQW5kUmVtb3Zl
SW1hZ2UoKSBmaW5hbDsKKworICAgIHZvaWQgZW5xdWV1ZVNhbXBsZShNZWRpYVNhbXBsZSYpIGZp
bmFsOworICAgIHZvaWQgY2xlYXJFbnF1ZXVlZFNhbXBsZXMoKSBmaW5hbDsKKworICAgIHZvaWQg
ZW5zdXJlTGF5ZXJzKCk7CisKKyAgICB2b2lkIHJlbW92ZU9sZFNhbXBsZXNGcm9tUGVuZGluZ1F1
ZXVlKCk7CisgICAgdm9pZCBhZGRTYW1wbGVUb1BlbmRpbmdRdWV1ZShNZWRpYVNhbXBsZSYpOwor
ICAgIHZvaWQgcmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgpOworCitw
cml2YXRlOgorICAgIFJldGFpblB0cjxXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3Rl
bmVyPiBtX3N0YXR1c0NoYW5nZUxpc3RlbmVyOworICAgIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcj4gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI7CisgICAgUmV0YWluUHRy
PFBsYXRmb3JtTGF5ZXI+IG1fcm9vdExheWVyOworCisgICAgdXNpbmcgUGVuZGluZ1NhbXBsZVF1
ZXVlID0gRGVxdWU8UmVmPE1lZGlhU2FtcGxlPj47CisgICAgUGVuZGluZ1NhbXBsZVF1ZXVlIG1f
cGVuZGluZ1ZpZGVvU2FtcGxlUXVldWU7Cit9OworICAgIAorfQorCisjZW5kaWYgLy8gRU5BQkxF
KE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTQxZWRkNmE5MWFiNDljNzMzN2QyNjJlOTVlZTQ3OWExOTI3YzQ2MgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCkBAIC0wLDAgKzEsMzcyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisjaW1wb3J0ICJMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIgorCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKKworI2ltcG9ydCAiQ29sb3Iu
aCIKKyNpbXBvcnQgIkludFNpemUuaCIKKyNpbXBvcnQgIk1lZGlhU2FtcGxlLmgiCisKKyNpbXBv
cnQgPEFWRm91bmRhdGlvbi9BVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oPgorI2ltcG9ydCA8
UXVhcnR6Q29yZS9DQUxheWVyLmg+CisjaW1wb3J0IDxRdWFydHpDb3JlL0NBVHJhbnNhY3Rpb24u
aD4KKworI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KKworI2ltcG9ydCA8cGFsL2NvY29hL0FW
Rm91bmRhdGlvblNvZnRMaW5rLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitAaW50
ZXJmYWNlIFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgOiBOU09iamVjdCB7
CisgICAgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIqIF9wYXJlbnQ7Cit9CisKKy0gKGlk
KWluaXRXaXRoUGFyZW50OihMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciopY2FsbGJhY2s7
CistICh2b2lkKWludmFsaWRhdGU7CistICh2b2lkKWJlZ2luT2JzZXJ2aW5nTGF5ZXJzOworLSAo
dm9pZClzdG9wT2JzZXJ2aW5nTGF5ZXJzOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViQVZT
YW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcgorCistIChpZClpbml0V2l0aFBhcmVudDoo
TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIqKXBhcmVudAoreworICAgIGlmICghKHNlbGYg
PSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX3BhcmVudCA9IHBh
cmVudDsKKworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBb
c2VsZiBpbnZhbGlkYXRlXTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQpaW52
YWxpZGF0ZQoreworICAgIFtzZWxmIHN0b3BPYnNlcnZpbmdMYXllcnNdOworICAgIF9wYXJlbnQg
PSBudWxscHRyOworfQorCistICh2b2lkKWJlZ2luT2JzZXJ2aW5nTGF5ZXJzCit7CisgICAgQVNT
RVJUKF9wYXJlbnQpOworICAgIEFTU0VSVChfcGFyZW50LT5kaXNwbGF5TGF5ZXIoKSk7CisgICAg
QVNTRVJUKF9wYXJlbnQtPnJvb3RMYXllcigpKTsKKworICAgIFtfcGFyZW50LT5kaXNwbGF5TGF5
ZXIoKSBhZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJzdGF0dXMiIG9wdGlvbnM6TlNLZXlW
YWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0Om5pbF07CisgICAgW19wYXJlbnQtPmRpc3Bs
YXlMYXllcigpIGFkZE9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAImVycm9yIiBvcHRpb25zOk5T
S2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDpuaWxdOworICAgIFtfcGFyZW50LT5y
b290TGF5ZXIoKSBhZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJib3VuZHMiIG9wdGlvbnM6
TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0Om5pbF07Cit9CisKKy0gKHZvaWQp
c3RvcE9ic2VydmluZ0xheWVycworeworICAgIGlmICghX3BhcmVudCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKF9wYXJlbnQtPmRpc3BsYXlMYXllcigpKSB7CisgICAgICAgIFtfcGFyZW50
LT5kaXNwbGF5TGF5ZXIoKSByZW1vdmVPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJzdGF0dXMi
XTsKKyAgICAgICAgW19wYXJlbnQtPmRpc3BsYXlMYXllcigpIHJlbW92ZU9ic2VydmVyOnNlbGYg
Zm9yS2V5UGF0aDpAImVycm9yIl07CisgICAgfQorICAgIGlmIChfcGFyZW50LT5yb290TGF5ZXIo
KSkKKyAgICAgICAgW19wYXJlbnQtPnJvb3RMYXllcigpIHJlbW92ZU9ic2VydmVyOnNlbGYgZm9y
S2V5UGF0aDpAImJvdW5kcyJdOworfQorCistICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6
KE5TU3RyaW5nICopa2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9u
YXJ5ICopY2hhbmdlIGNvbnRleHQ6KHZvaWQgKiljb250ZXh0Cit7CisgICAgVU5VU0VEX1BBUkFN
KGNvbnRleHQpOworICAgIFVOVVNFRF9QQVJBTShrZXlQYXRoKTsKKyAgICBBU1NFUlQoX3BhcmVu
dCk7CisKKyAgICBpZiAoIV9wYXJlbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChbb2Jq
ZWN0IGlzS2luZE9mQ2xhc3M6UEFMOjpnZXRBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckNsYXNz
KCldKSB7CisgICAgICAgIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gbGF5
ZXIgPSAoQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgKilvYmplY3Q7CisgICAgICAgIEFTU0VS
VChsYXllci5nZXQoKSA9PSBfcGFyZW50LT5kaXNwbGF5TGF5ZXIoKSk7CisKKyAgICAgICAgaWYg
KFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInN0YXR1cyJdKSB7CisgICAgICAgICAgICBSZXRh
aW5QdHI8TlNOdW1iZXI+IHN0YXR1cyA9IFtjaGFuZ2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1ZUNo
YW5nZU5ld0tleV07CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxm
ID0gUmV0YWluUHRyPFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXI+KHNlbGYp
LCBsYXllciA9IFdURk1vdmUobGF5ZXIpLCBzdGF0dXMgPSBXVEZNb3ZlKHN0YXR1cyldIHsKKyAg
ICAgICAgICAgICAgICBpZiAoIXByb3RlY3RlZFNlbGYtPl9wYXJlbnQpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9wYXJlbnQt
PmxheWVyU3RhdHVzRGlkQ2hhbmdlKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6
QCJlcnJvciJdKSB7CisgICAgICAgICAgICBSZXRhaW5QdHI8TlNOdW1iZXI+IHN0YXR1cyA9IFtj
aGFuZ2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1ZUNoYW5nZU5ld0tleV07CisgICAgICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFWU2FtcGxlQnVm
ZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXI+KHNlbGYpLCBsYXllciA9IFdURk1vdmUobGF5ZXIpLCBz
dGF0dXMgPSBXVEZNb3ZlKHN0YXR1cyldIHsKKyAgICAgICAgICAgICAgICBpZiAoIXByb3RlY3Rl
ZFNlbGYtPl9wYXJlbnQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAg
ICAgICAgIHByb3RlY3RlZFNlbGYtPl9wYXJlbnQtPmxheWVyRXJyb3JEaWRDaGFuZ2UoKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisg
ICAgaWYgKFtbY2hhbmdlIHZhbHVlRm9yS2V5Ok5TS2V5VmFsdWVDaGFuZ2VOb3RpZmljYXRpb25J
c1ByaW9yS2V5XSBib29sVmFsdWVdKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoKENBTGF5
ZXIgKilvYmplY3QgPT0gX3BhcmVudC0+cm9vdExheWVyKCkpIHsKKyAgICAgICAgaWYgKFtrZXlQ
YXRoIGlzRXF1YWxUb1N0cmluZzpAImJvdW5kcyJdKSB7CisgICAgICAgICAgICBpZiAoIV9wYXJl
bnQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAoaXNNYWluVGhy
ZWFkKCkpIHsKKyAgICAgICAgICAgICAgICBfcGFyZW50LT5yb290TGF5ZXJCb3VuZHNEaWRDaGFu
Z2UoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQVZTYW1w
bGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcj4oc2VsZildIHsKKyAgICAgICAgICAgICAgICBp
ZiAoIXByb3RlY3RlZFNlbGYtPl9wYXJlbnQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9wYXJlbnQtPnJvb3RMYXllckJvdW5k
c0RpZENoYW5nZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9CisKK30KK0Bl
bmQKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgdm9pZCBydW5XaXRob3V0QW5pbWF0
aW9ucyhjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uKQoreworICAgIFtDQVRy
YW5zYWN0aW9uIGJlZ2luXTsKKyAgICBbQ0FUcmFuc2FjdGlvbiBzZXRBbmltYXRpb25EdXJhdGlv
bjowXTsKKyAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0aW9uczpZRVNdOworICAgIGZ1
bmN0aW9uKCk7CisgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKK30KKworc3RkOjp1bmlxdWVf
cHRyPFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXI6OmNyZWF0ZShDbGllbnQmIGNsaWVudCwgYm9vbCBoaWRlUm9vdExheWVyLCBJbnRTaXplIHNp
emUpCit7CisgICAgYXV0byBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgPSBhZG9wdE5TKFtQQUw6
OmFsbG9jQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJbnN0YW5jZSgpIGluaXRdKTsKKyAgICBp
ZiAoIXNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4oV1RG
TW92ZShzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpLCBjbGllbnQsIGhpZGVSb290TGF5ZXIsIHNp
emUpOworfQorCitMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6TG9jYWxTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIoUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiYmIHNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllciwgQ2xpZW50JiBjbGllbnQsIGJvb2wgaGlkZVJvb3RMYXll
ciwgSW50U2l6ZSBzaXplKQorICAgIDogU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKGNsaWVudCkK
KyAgICAsIG1fc3RhdHVzQ2hhbmdlTGlzdGVuZXIoYWRvcHROUyhbW1dlYkFWU2FtcGxlQnVmZmVy
U3RhdHVzQ2hhbmdlTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoUGFyZW50OnRoaXNdKSkKKyAgICAs
IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKFdURk1vdmUoc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyKSkKK3sKKyAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKS5iYWNrZ3JvdW5k
Q29sb3IgPSBjYWNoZWRDR0NvbG9yKENvbG9yOjpibGFjayk7CisgICAgbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIuZ2V0KCkuYW5jaG9yUG9pbnQgPSB7IC41LCAuNSB9OworICAgIG1fc2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmdldCgpLm5lZWRzRGlzcGxheU9uQm91bmRzQ2hhbmdlID0gWUVT
OworICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLnZpZGVvR3Jhdml0eSA9IEFW
TGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsOworCisgICAgbV9yb290TGF5ZXIgPSBh
ZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0pOworICAgIG1fcm9vdExheWVyLmdldCgpLmhp
ZGRlbiA9IGhpZGVSb290TGF5ZXI7CisKKyAgICBtX3Jvb3RMYXllci5nZXQoKS5iYWNrZ3JvdW5k
Q29sb3IgPSBjYWNoZWRDR0NvbG9yKENvbG9yOjpibGFjayk7CisgICAgbV9yb290TGF5ZXIuZ2V0
KCkubmVlZHNEaXNwbGF5T25Cb3VuZHNDaGFuZ2UgPSBZRVM7CisKKyAgICBtX3Jvb3RMYXllci5n
ZXQoKS5ib3VuZHMgPSBDR1JlY3RNYWtlKDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQo
KSk7CisKKyAgICBbbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lciBiZWdpbk9ic2VydmluZ0xheWVyc107
CisKKyAgICBbbV9yb290TGF5ZXIgYWRkU3VibGF5ZXI6bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIuZ2V0KCldOworCisjaWZuZGVmIE5ERUJVRworICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllciBzZXROYW1lOkAiTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgQVZTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIiXTsKKyAgICBbbV9yb290TGF5ZXIgc2V0TmFtZTpAIkxvY2FsU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHBhcmVudCJdOwor
I2VuZGlmCit9CisKK0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjp+TG9jYWxTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIoKQoreworICAgIFttX3N0YXR1c0NoYW5nZUxpc3RlbmVyIHN0b3BP
YnNlcnZpbmdMYXllcnNdOworCisgICAgbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5jbGVhcigp
OworCisgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHN0b3BSZXF1ZXN0aW5nTWVkaWFE
YXRhXTsKKyAgICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgZmx1c2hdOworICAgIG1fc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyID0gbnVsbHB0cjsKKworICAgIG1fcm9vdExheWVyID0gbnVs
bHB0cjsKK30KKwordm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6bGF5ZXJTdGF0
dXNEaWRDaGFuZ2UoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1f
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLnN0YXR1cyAhPSBBVlF1ZXVlZFNhbXBsZUJ1
ZmZlclJlbmRlcmluZ1N0YXR1c1JlbmRlcmluZykKKyAgICAgICAgcmV0dXJuOworICAgIGlmICgh
bV9jbGllbnQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NsaWVudC0+c2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyU3RhdHVzRGlkQ2hhbmdlKCp0aGlzKTsKK30KKwordm9pZCBMb2NhbFNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcjo6bGF5ZXJFcnJvckRpZENoYW5nZSgpCit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICAvLyBGSVhNRTogTG9nIGVycm9yLgorfQorCit2b2lkIExvY2Fs
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpyb290TGF5ZXJCb3VuZHNEaWRDaGFuZ2UoKQorewor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAg
cmV0dXJuOworICAgIG1fY2xpZW50LT5zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJCb3VuZHNEaWRD
aGFuZ2UoKnRoaXMpOworfQorCitQbGF0Zm9ybUxheWVyKiBMb2NhbFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcjo6ZGlzcGxheUxheWVyKCkKK3sKKyAgICByZXR1cm4gbV9zYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIuZ2V0KCk7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIExvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjpyb290TGF5ZXIoKQoreworICAgIHJldHVybiBtX3Jvb3RMYXllci5nZXQoKTsK
K30KKworYm9vbCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZGlkRmFpbCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBzdGF0dXNdID09IEFW
UXVldWVkU2FtcGxlQnVmZmVyUmVuZGVyaW5nU3RhdHVzRmFpbGVkOworfQorCit2b2lkIExvY2Fs
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjp1cGRhdGVEaXNwbGF5TW9kZShib29sIGhpZGVEaXNw
bGF5TGF5ZXIsIGJvb2wgaGlkZVJvb3RMYXllcikKK3sKKyAgICBpZiAobV9yb290TGF5ZXIuZ2V0
KCkuaGlkZGVuID09IGhpZGVSb290TGF5ZXIgJiYgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
Z2V0KCkuaGlkZGVuID09IGhpZGVEaXNwbGF5TGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAg
IHJ1bldpdGhvdXRBbmltYXRpb25zKFsmXSB7CisgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLmdldCgpLmhpZGRlbiA9IGhpZGVEaXNwbGF5TGF5ZXI7CisgICAgICAgIG1fcm9vdExh
eWVyLmdldCgpLmhpZGRlbiA9IGhpZGVSb290TGF5ZXI7CisgICAgfSk7Cit9CisKK0NHUmVjdCBM
b2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Ym91bmRzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9yb290TGF5ZXIuZ2V0KCkuYm91bmRzOworfQorCit2b2lkIExvY2FsU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyOjp1cGRhdGVBZmZpbmVUcmFuc2Zvcm0oQ0dBZmZpbmVUcmFuc2Zvcm0gdHJh
bnNmb3JtKQoreworICAgIHJ1bldpdGhvdXRBbmltYXRpb25zKFsmXSB7CisgICAgICAgIG1fc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLmFmZmluZVRyYW5zZm9ybSA9IHRyYW5zZm9ybTsK
KyAgICB9KTsKK30KKwordm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6dXBkYXRl
Qm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0IHZpZGVvQm91bmRzLCBDR1BvaW50IHBvc2l0aW9uKQor
eworICAgIHJ1bldpdGhvdXRBbmltYXRpb25zKFsmXSB7CisgICAgICAgIG1fc2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyLmdldCgpLmJvdW5kcyA9IHZpZGVvQm91bmRzOworICAgICAgICBtX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKS5wb3NpdGlvbiA9IHBvc2l0aW9uOworICAgIH0pOwor
fQorCit2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpmbHVzaCgpCit7CisgICAg
W21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGZsdXNoXTsKK30KKwordm9pZCBMb2NhbFNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcjo6Zmx1c2hBbmRSZW1vdmVJbWFnZSgpCit7CisgICAgW21fc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyIGZsdXNoQW5kUmVtb3ZlSW1hZ2VdOworfQorCit2b2lkIExv
Y2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxlKE1lZGlhU2FtcGxlJiBz
YW1wbGUpCit7CisgICAgaWYgKCFbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgaXNSZWFkeUZv
ck1vcmVNZWRpYURhdGFdKSB7CisgICAgICAgIGFkZFNhbXBsZVRvUGVuZGluZ1F1ZXVlKHNhbXBs
ZSk7CisgICAgICAgIHJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JWaWRlb0RhdGEoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ciBlbnF1ZXVlU2FtcGxlQnVmZmVyOnNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnNhbXBsZS5jbVNh
bXBsZUJ1ZmZlcl07Cit9CisKK3ZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnJl
bW92ZU9sZFNhbXBsZXNGcm9tUGVuZGluZ1F1ZXVlKCkKK3sKKyAgICBpZiAobV9wZW5kaW5nVmlk
ZW9TYW1wbGVRdWV1ZS5pc0VtcHR5KCkgfHwgIW1fY2xpZW50KQorICAgICAgICByZXR1cm47CisK
KyAgICBhdXRvIGRlY29kZVRpbWUgPSBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmZpcnN0KCkt
PmRlY29kZVRpbWUoKTsKKyAgICBpZiAoIWRlY29kZVRpbWUuaXNWYWxpZCgpIHx8IGRlY29kZVRp
bWUgPCBNZWRpYVRpbWU6Onplcm9UaW1lKCkpIHsKKyAgICAgICAgd2hpbGUgKG1fcGVuZGluZ1Zp
ZGVvU2FtcGxlUXVldWUuc2l6ZSgpID4gNSkKKyAgICAgICAgICAgIG1fcGVuZGluZ1ZpZGVvU2Ft
cGxlUXVldWUucmVtb3ZlRmlyc3QoKTsKKworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
TWVkaWFUaW1lIG5vdyA9IG1fY2xpZW50LT5zdHJlYW1UaW1lKCk7CisgICAgd2hpbGUgKCFtX3Bl
bmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAobV9wZW5kaW5n
VmlkZW9TYW1wbGVRdWV1ZS5maXJzdCgpLT5kZWNvZGVUaW1lKCkgPiBub3cpCisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5yZW1vdmVGaXJzdCgp
OworICAgIH0KK30KKwordm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6YWRkU2Ft
cGxlVG9QZW5kaW5nUXVldWUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKK3sKKyAgICByZW1vdmVPbGRT
YW1wbGVzRnJvbVBlbmRpbmdRdWV1ZSgpOworICAgIG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUu
YXBwZW5kKHNhbXBsZSk7Cit9CisKK3ZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6
OmNsZWFyRW5xdWV1ZWRTYW1wbGVzKCkKK3sKKyAgICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVl
LmNsZWFyKCk7Cit9CisKK3ZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnJlcXVl
c3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JWaWRlb0RhdGEoKQoreworICAgIGF1dG8gd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cigqdGhpcyk7CisgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
IHJlcXVlc3RNZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCkgdXNpbmdCbG9jazpeeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBzdG9wUmVxdWVzdGlu
Z01lZGlhRGF0YV07CisKKyAgICAgICAgd2hpbGUgKCFtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVl
LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgaWYgKCFbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKSB7CisgICAgICAgICAgICAgICAgcmVxdWVzdE5v
dGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgpOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCByZWVu
cXVldWUgaW4gY2xpZW50LgorICAgICAgICAgICAgYXV0byBzYW1wbGUgPSBtX3BlbmRpbmdWaWRl
b1NhbXBsZVF1ZXVlLnRha2VGaXJzdCgpOworICAgICAgICAgICAgZW5xdWV1ZVNhbXBsZShzYW1w
bGUuZ2V0KCkpOworICAgICAgICB9CisgICAgfV07Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQy5oCmluZGV4IGJjNWYzOTFiNjUyMGIwMzFiNmU2Yzg1NTVkYTljM2UyMjAz
OTQwOTEuLmY4ZDczOTE5ZmU0OGZjNmE4OWZhMjc1ZjE3YzUwM2RmY2ZlYTU1YjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMjYgKzIzLDE5IEBACiAgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLSNpZm5kZWYgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDX2gKLSNk
ZWZpbmUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDX2gKKyNwcmFnbWEgb25j
ZQogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKIAogI2lu
Y2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAj
aW5jbHVkZSAiTWVkaWFTdHJlYW1Qcml2YXRlLmgiCi0jaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NH
QWZmaW5lVHJhbnNmb3JtLmg+CisjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgi
CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+Ci0jaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+Ci0jaW5j
bHVkZSA8d3RmL01lZGlhVGltZS5oPgotI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKLU9CSkNf
Q0xBU1MgQVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyOwogT0JKQ19DTEFTUyBBVlNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcjsKLU9CSkNfQ0xBU1MgQVZTYW1wbGVCdWZmZXJSZW5kZXJTeW5jaHJv
bml6ZXI7Ci1PQkpDX0NMQVNTIEFWU3RyZWFtU2Vzc2lvbjsKLU9CSkNfQ0xBU1MgTlNOdW1iZXI7
CiBPQkpDX0NMQVNTIFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXI7CiAKIG5h
bWVzcGFjZSBQQUwgewpAQCAtNTgsNyArNTEsNyBAQCBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1l
ckNWOwogY2xhc3MgVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQzsKIGNsYXNzIFZpZGVv
VHJhY2tQcml2YXRlTWVkaWFTdHJlYW07CiAKLWNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM+LCBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlLCBwcml2YXRlIE1lZGlhU3RyZWFtUHJpdmF0ZTo6T2JzZXJ2ZXIsIHByaXZhdGUgTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGU6Ok9ic2VydmVyCitjbGFzcyBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakMgZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNl
LCBwcml2YXRlIE1lZGlhU3RyZWFtUHJpdmF0ZTo6T2JzZXJ2ZXIsIHByaXZhdGUgTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGU6Ok9ic2VydmVyLCBwdWJsaWMgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
OjpDbGllbnQKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAsIHByaXZhdGUgTG9nZ2Vy
SGVscGVyCiAjZW5kaWYKQEAgLTgyLDEzICs3NSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuc3Vy
ZUxheWVycygpOwogICAgIHZvaWQgZGVzdHJveUxheWVycygpOwogCi0gICAgdm9pZCBsYXllclN0
YXR1c0RpZENoYW5nZShBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciopOwotICAgIHZvaWQgbGF5
ZXJFcnJvckRpZENoYW5nZShBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciopOwotICAgIHZvaWQg
YmFja2dyb3VuZExheWVyQm91bmRzQ2hhbmdlZCgpOwotCi0gICAgUGxhdGZvcm1MYXllciogZGlz
cGxheUxheWVyKCk7Ci0gICAgUGxhdGZvcm1MYXllciogYmFja2dyb3VuZExheWVyKCk7Ci0KICNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fbG9nZ2VyLmdldCgpOyB9CiAgICAgY29uc3QgY2hhciogbG9nQ2xh
c3NOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQyI7IH0KQEAgLTE0NCwxMCArMTMwLDYgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgZmx1c2hSZW5kZXJlcnMoKTsKIAotICAgIHVzaW5nIFBlbmRpbmdTYW1wbGVRdWV1ZSA9IERl
cXVlPFJlZjxNZWRpYVNhbXBsZT4+OwotICAgIHZvaWQgYWRkU2FtcGxlVG9QZW5kaW5nUXVldWUo
UGVuZGluZ1NhbXBsZVF1ZXVlJiwgTWVkaWFTYW1wbGUmKTsKLSAgICB2b2lkIHJlbW92ZU9sZFNh
bXBsZXNGcm9tUGVuZGluZ1F1ZXVlKFBlbmRpbmdTYW1wbGVRdWV1ZSYpOwotCiAgICAgTWVkaWFU
aW1lIGNhbGN1bGF0ZVRpbWVsaW5lT2Zmc2V0KGNvbnN0IE1lZGlhU2FtcGxlJiwgZG91YmxlKTsK
ICAgICAKICAgICB2b2lkIGVucXVldWVWaWRlb1NhbXBsZShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZSYsIE1lZGlhU2FtcGxlJik7CkBAIC0yMTksNyArMjAxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRWaWRlb0Z1
bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpIG92ZXJyaWRlOwogCi0gICAgTWVkaWFUaW1lIHN0cmVh
bVRpbWUoKSBjb25zdDsKKyAgICBNZWRpYVRpbWUgc3RyZWFtVGltZSgpIGNvbnN0IGZpbmFsOwog
CiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlciogYXVkaW9Tb3VyY2VQcm92aWRlcigpIGZpbmFsOwog
CkBAIC0yMjcsMTQgKzIwOSwxMSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBhcHBsaWNhdGlvbkRp
ZEJlY29tZUFjdGl2ZSgpIGZpbmFsOwogCi0gICAgYm9vbCBoaWRlQmFja2dyb3VuZExheWVyKCkg
Y29uc3QgeyByZXR1cm4gKCFtX2FjdGl2ZVZpZGVvVHJhY2sgfHwgbV93YWl0aW5nRm9yRmlyc3RJ
bWFnZSkgJiYgbV9kaXNwbGF5TW9kZSAhPSBQYWludEl0QmxhY2s7IH0KKyAgICBib29sIGhpZGVS
b290TGF5ZXIoKSBjb25zdCB7IHJldHVybiAoIW1fYWN0aXZlVmlkZW9UcmFjayB8fCBtX3dhaXRp
bmdGb3JGaXJzdEltYWdlKSAmJiBtX2Rpc3BsYXlNb2RlICE9IFBhaW50SXRCbGFjazsgfQogCiAg
ICAgTWVkaWFQbGF5ZXIqIG1fcGxheWVyIHsgbnVsbHB0ciB9OwogICAgIFJlZlB0cjxNZWRpYVN0
cmVhbVByaXZhdGU+IG1fbWVkaWFTdHJlYW1Qcml2YXRlOwogICAgIFJlZlB0cjxNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZT4gbV9hY3RpdmVWaWRlb1RyYWNrOwotICAgIFJldGFpblB0cjxXZWJBVlNh
bXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyPiBtX3N0YXR1c0NoYW5nZUxpc3RlbmVyOwot
ICAgIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI7Ci0gICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1fYmFja2dyb3VuZExh
eWVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQQUw6OkNsb2NrPiBtX2Nsb2NrOwogCiAgICAgTWVk
aWFUaW1lIG1fcGF1c2VkVGltZTsKQEAgLTI1MSw3ICsyMzAsNiBAQCBwcml2YXRlOgogCiAgICAg
SGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E+
PiBtX2F1ZGlvVHJhY2tNYXA7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxWaWRlb1RyYWNr
UHJpdmF0ZU1lZGlhU3RyZWFtPj4gbV92aWRlb1RyYWNrTWFwOwotICAgIFBlbmRpbmdTYW1wbGVR
dWV1ZSBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlOwogCiAgICAgTWVkaWFQbGF5ZXI6Ok5ldHdv
cmtTdGF0ZSBtX25ldHdvcmtTdGF0ZSB7IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkVtcHR5
IH07CiAgICAgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlIHsgTWVkaWFQbGF5
ZXI6OlJlYWR5U3RhdGU6OkhhdmVOb3RoaW5nIH07CkBAIC0yNjEsOCArMjM5LDEzIEBAIHByaXZh
dGU6CiAgICAgUGxheWJhY2tTdGF0ZSBtX3BsYXliYWNrU3RhdGUgeyBQbGF5YmFja1N0YXRlOjpO
b25lIH07CiAgICAgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gbV92aWRlb1JvdGF0aW9uIHsg
TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUgfTsKICAgICBDR0FmZmluZVRyYW5zZm9y
bSBtX3ZpZGVvVHJhbnNmb3JtOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXI+IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDPiBtX3ZpZGVvRnVsbHNjcmVlbkxheWVy
TWFuYWdlcjsKIAorICAgIC8vIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Q2xpZW50CisgICAg
dm9pZCBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJTdGF0dXNEaWRDaGFuZ2UoU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyJikgZmluYWw7CisgICAgdm9pZCBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJC
b3VuZHNEaWRDaGFuZ2UoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyJikgZmluYWw7CisKICNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKICAg
ICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CkBAIC0yODMsNSArMjY2LDMgQEAgcHJpdmF0
ZToKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJ
T04pCi0KLSNlbmRpZiAvLyBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakNfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4IDZjNWY1MGI0ZGEwMGQyMTAyYmFkZTM3OTRm
OWRkZDBiZDQxOTI2NjMuLjAxOWQ1NmUxYzk2ZjJmMDg0MzBhNGVlNTQ2YWMxYzIwM2NjYmZkNGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSwxOCArMzEsMTYgQEAKICNpbXBv
cnQgIkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5oIgogI2ltcG9ydCAiR3JhcGhp
Y3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgIkxvY2FsU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmgiCiAjaW1wb3J0ICJNZWRpYVN0cmVhbVByaXZhdGUuaCIKICNp
bXBvcnQgIlBpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaCIKICNpbXBvcnQgIlZpZGVvRnVsbHNjcmVl
bkxheWVyTWFuYWdlck9iakMuaCIKICNpbXBvcnQgIlZpZGVvVHJhY2tQcml2YXRlTWVkaWFTdHJl
YW0uaCIKLSNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5o
PgotI2ltcG9ydCA8UXVhcnR6Q29yZS9DQUxheWVyLmg+Ci0jaW1wb3J0IDxRdWFydHpDb3JlL0NB
VHJhbnNhY3Rpb24uaD4KKyNpbXBvcnQgPENvcmVHcmFwaGljcy9DR0FmZmluZVRyYW5zZm9ybS5o
PgogI2ltcG9ydCA8b2JqY19ydW50aW1lLmg+CiAjaW1wb3J0IDxwYWwvYXZmb3VuZGF0aW9uL01l
ZGlhVGltZUFWRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvQVZGb3VuZGF0aW9u
U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3lzdGVtL0Nsb2NrLmg+Ci0jaW1wb3J0IDx3dGYvRnVuY3Rp
b24uaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KIApAQCAtNTAsMTI3ICs0OCw2IEBACiAjaW1wb3J0IDxwYWwvY2YvQ29yZU1lZGlh
U29mdExpbmsuaD4KICNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgog
Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotQGludGVyZmFjZSBXZWJBVlNhbXBsZUJ1ZmZl
clN0YXR1c0NoYW5nZUxpc3RlbmVyIDogTlNPYmplY3QgewotICAgIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQyogX3BhcmVudDsKLX0KLQotLSAoaWQpaW5pdFdpdGhQYXJlbnQ6
KE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyopY2FsbGJhY2s7Ci0tICh2b2lk
KWludmFsaWRhdGU7Ci0tICh2b2lkKWJlZ2luT2JzZXJ2aW5nTGF5ZXJzOwotLSAodm9pZClzdG9w
T2JzZXJ2aW5nTGF5ZXJzOwotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gV2ViQVZTYW1wbGVCdWZm
ZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcgotCi0tIChpZClpbml0V2l0aFBhcmVudDooTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKilwYXJlbnQKLXsKLSAgICBpZiAoIShzZWxmID0g
W3N1cGVyIGluaXRdKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIF9wYXJlbnQgPSBwYXJl
bnQ7Ci0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW3Nl
bGYgaW52YWxpZGF0ZV07Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWludmFs
aWRhdGUKLXsKLSAgICBbc2VsZiBzdG9wT2JzZXJ2aW5nTGF5ZXJzXTsKLSAgICBfcGFyZW50ID0g
bnVsbHB0cjsKLX0KLQotLSAodm9pZCliZWdpbk9ic2VydmluZ0xheWVycwotewotICAgIEFTU0VS
VChfcGFyZW50KTsKLSAgICBBU1NFUlQoX3BhcmVudC0+ZGlzcGxheUxheWVyKCkpOwotICAgIEFT
U0VSVChfcGFyZW50LT5iYWNrZ3JvdW5kTGF5ZXIoKSk7Ci0KLSAgICBbX3BhcmVudC0+ZGlzcGxh
eUxheWVyKCkgYWRkT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAic3RhdHVzIiBvcHRpb25zOk5T
S2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDpuaWxdOwotICAgIFtfcGFyZW50LT5k
aXNwbGF5TGF5ZXIoKSBhZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJlcnJvciIgb3B0aW9u
czpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6bmlsXTsKLSAgICBbX3BhcmVu
dC0+YmFja2dyb3VuZExheWVyKCkgYWRkT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAiYm91bmRz
IiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDpuaWxdOwotfQot
Ci0tICh2b2lkKXN0b3BPYnNlcnZpbmdMYXllcnMKLXsKLSAgICBpZiAoIV9wYXJlbnQpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGlmIChfcGFyZW50LT5kaXNwbGF5TGF5ZXIoKSkgewotICAgICAg
ICBbX3BhcmVudC0+ZGlzcGxheUxheWVyKCkgcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRo
OkAic3RhdHVzIl07Ci0gICAgICAgIFtfcGFyZW50LT5kaXNwbGF5TGF5ZXIoKSByZW1vdmVPYnNl
cnZlcjpzZWxmIGZvcktleVBhdGg6QCJlcnJvciJdOwotICAgIH0KLSAgICBpZiAoX3BhcmVudC0+
YmFja2dyb3VuZExheWVyKCkpCi0gICAgICAgIFtfcGFyZW50LT5iYWNrZ3JvdW5kTGF5ZXIoKSBy
ZW1vdmVPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJib3VuZHMiXTsKLX0KLQotLSAodm9pZClv
YnNlcnZlVmFsdWVGb3JLZXlQYXRoOihOU1N0cmluZyAqKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9i
amVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAqKWNoYW5nZSBjb250ZXh0Oih2b2lkICopY29udGV4
dAotewotICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKLSAgICBVTlVTRURfUEFSQU0oa2V5UGF0
aCk7Ci0gICAgQVNTRVJUKF9wYXJlbnQpOwotCi0gICAgaWYgKCFfcGFyZW50KQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpZiAoW29iamVjdCBpc0tpbmRPZkNsYXNzOlBBTDo6Z2V0QVZTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXJDbGFzcygpXSkgewotICAgICAgICBSZXRhaW5QdHI8QVZTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI+IGxheWVyID0gKEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyICop
b2JqZWN0OwotICAgICAgICBBU1NFUlQobGF5ZXIuZ2V0KCkgPT0gX3BhcmVudC0+ZGlzcGxheUxh
eWVyKCkpOwotCi0gICAgICAgIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJzdGF0dXMi
XSkgewotICAgICAgICAgICAgUmV0YWluUHRyPE5TTnVtYmVyPiBzdGF0dXMgPSBbY2hhbmdlIHZh
bHVlRm9yS2V5Ok5TS2V5VmFsdWVDaGFuZ2VOZXdLZXldOwotICAgICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1
c0NoYW5nZUxpc3RlbmVyPihzZWxmKSwgbGF5ZXIgPSBXVEZNb3ZlKGxheWVyKSwgc3RhdHVzID0g
V1RGTW92ZShzdGF0dXMpXSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFwcm90ZWN0ZWRTZWxmLT5f
cGFyZW50KQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICBw
cm90ZWN0ZWRTZWxmLT5fcGFyZW50LT5sYXllclN0YXR1c0RpZENoYW5nZShsYXllci5nZXQoKSk7
Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAg
ICAgIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJlcnJvciJdKSB7Ci0gICAgICAgICAg
ICBSZXRhaW5QdHI8TlNOdW1iZXI+IHN0YXR1cyA9IFtjaGFuZ2UgdmFsdWVGb3JLZXk6TlNLZXlW
YWx1ZUNoYW5nZU5ld0tleV07Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0
ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXI+
KHNlbGYpLCBsYXllciA9IFdURk1vdmUobGF5ZXIpLCBzdGF0dXMgPSBXVEZNb3ZlKHN0YXR1cyld
IHsKLSAgICAgICAgICAgICAgICBpZiAoIXByb3RlY3RlZFNlbGYtPl9wYXJlbnQpCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9w
YXJlbnQtPmxheWVyRXJyb3JEaWRDaGFuZ2UobGF5ZXIuZ2V0KCkpOwotICAgICAgICAgICAgfSk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoW1tjaGFu
Z2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1ZUNoYW5nZU5vdGlmaWNhdGlvbklzUHJpb3JLZXldIGJv
b2xWYWx1ZV0pCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICgoQ0FMYXllciAqKW9iamVjdCA9
PSBfcGFyZW50LT5iYWNrZ3JvdW5kTGF5ZXIoKSkgewotICAgICAgICBpZiAoW2tleVBhdGggaXNF
cXVhbFRvU3RyaW5nOkAiYm91bmRzIl0pIHsKLSAgICAgICAgICAgIGlmICghX3BhcmVudCkKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIGlmIChpc01haW5UaHJlYWQoKSkg
ewotICAgICAgICAgICAgICAgIF9wYXJlbnQtPmJhY2tncm91bmRMYXllckJvdW5kc0NoYW5nZWQo
KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQVZTYW1wbGVC
dWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcj4oc2VsZildIHsKLSAgICAgICAgICAgICAgICBpZiAo
IXByb3RlY3RlZFNlbGYtPl9wYXJlbnQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9wYXJlbnQtPmJhY2tncm91bmRMYXllckJv
dW5kc0NoYW5nZWQoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAgfQotCi19Ci1A
ZW5kCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBQQUw7CiAKQEAgLTE4
MSw3ICs1OCw2IEBAIHN0YXRpYyBjb25zdCBkb3VibGUgcmVuZGVyZXJMYXRlbmN5ID0gMC4wMjsK
IAogTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMoTWVkaWFQbGF5ZXIqIHBsYXllcikKICAgICA6IG1fcGxheWVy
KHBsYXllcikKLSAgICAsIG1fc3RhdHVzQ2hhbmdlTGlzdGVuZXIoYWRvcHROUyhbW1dlYkFWU2Ft
cGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoUGFyZW50OnRoaXNd
KSkKICAgICAsIG1fY2xvY2soUEFMOjpDbG9jazo6Y3JlYXRlKCkpCiAgICAgLCBtX3ZpZGVvRnVs
bHNjcmVlbkxheWVyTWFuYWdlcihtYWtlVW5pcXVlPFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdl
ck9iakM+KCkpCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0xOTYsOCArNzIsNiBAQCBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6On5NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakMoKQogewogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOwogCi0g
ICAgW21fc3RhdHVzQ2hhbmdlTGlzdGVuZXIgaW52YWxpZGF0ZV07Ci0KICAgICBmb3IgKGNvbnN0
IGF1dG8mIHRyYWNrIDogbV9hdWRpb1RyYWNrTWFwLnZhbHVlcygpKQogICAgICAgICB0cmFjay0+
cGF1c2UoKTsKIApAQCAtMjY3LDMzICsxNDEsNiBAQCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c3VwcG9ydHNUeXBlKGNvbgog
I3ByYWdtYSBtYXJrIC0KICNwcmFnbWEgbWFyayBBVlNhbXBsZUJ1ZmZlciBNZXRob2RzCiAKLXZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpyZW1vdmVPbGRTYW1wbGVz
RnJvbVBlbmRpbmdRdWV1ZShQZW5kaW5nU2FtcGxlUXVldWUmIHF1ZXVlKQotewotICAgIGlmIChx
dWV1ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gZGVjb2RlVGltZSA9
IHF1ZXVlLmZpcnN0KCktPmRlY29kZVRpbWUoKTsKLSAgICBpZiAoIWRlY29kZVRpbWUuaXNWYWxp
ZCgpIHx8IGRlY29kZVRpbWUgPCBNZWRpYVRpbWU6Onplcm9UaW1lKCkpIHsKLSAgICAgICAgd2hp
bGUgKHF1ZXVlLnNpemUoKSA+IDUpCi0gICAgICAgICAgICBxdWV1ZS5yZW1vdmVGaXJzdCgpOwot
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBNZWRpYVRpbWUgbm93ID0gc3RyZWFtVGlt
ZSgpOwotICAgIHdoaWxlICghcXVldWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChxdWV1ZS5m
aXJzdCgpLT5kZWNvZGVUaW1lKCkgPiBub3cpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
cXVldWUucmVtb3ZlRmlyc3QoKTsKLSAgICB9Ci19Ci0KLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjphZGRTYW1wbGVUb1BlbmRpbmdRdWV1ZShQZW5kaW5nU2FtcGxl
UXVldWUmIHF1ZXVlLCBNZWRpYVNhbXBsZSYgc2FtcGxlKQotewotICAgIHJlbW92ZU9sZFNhbXBs
ZXNGcm9tUGVuZGluZ1F1ZXVlKHF1ZXVlKTsKLSAgICBxdWV1ZS5hcHBlbmQoc2FtcGxlKTsKLX0K
LQogTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y2FsY3Vs
YXRlVGltZWxpbmVPZmZzZXQoY29uc3QgTWVkaWFTYW1wbGUmIHNhbXBsZSwgZG91YmxlIGxhdGVu
Y3kpCiB7CiAgICAgTWVkaWFUaW1lIHNhbXBsZVRpbWUgPSBzYW1wbGUub3V0cHV0UHJlc2VudGF0
aW9uVGltZSgpOwpAQCAtMzI4LDM3ICsxNzUsMTkgQEAgQ0dBZmZpbmVUcmFuc2Zvcm0gTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp2aWRlb1RyYW5zZm9ybWF0aW9uTWF0cmkK
ICAgICByZXR1cm4gbV92aWRlb1RyYW5zZm9ybTsKIH0KIAotc3RhdGljIHZvaWQgcnVuV2l0aG91
dEFuaW1hdGlvbnMoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiBmdW5jdGlvbikKLXsKLSAg
ICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07Ci0gICAgW0NBVHJhbnNhY3Rpb24gc2V0QW5pbWF0aW9u
RHVyYXRpb246MF07Ci0gICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsK
LSAgICBmdW5jdGlvbigpOwotICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07Ci19Ci0KIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlQ29ycmVjdGVkVmlk
ZW9TYW1wbGUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKIHsKICAgICBpZiAobV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIpIHsKLSAgICAgICAgaWYgKFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBz
dGF0dXNdID09IEFWUXVldWVkU2FtcGxlQnVmZmVyUmVuZGVyaW5nU3RhdHVzRmFpbGVkKQorICAg
ICAgICBpZiAobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPmRpZEZhaWwoKSkKICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc2FtcGxlLnZpZGVvUm90YXRpb24oKSAhPSBtX3Zp
ZGVvUm90YXRpb24gfHwgc2FtcGxlLnZpZGVvTWlycm9yZWQoKSAhPSBtX3ZpZGVvTWlycm9yZWQp
IHsKICAgICAgICAgICAgIG1fdmlkZW9Sb3RhdGlvbiA9IHNhbXBsZS52aWRlb1JvdGF0aW9uKCk7
CiAgICAgICAgICAgICBtX3ZpZGVvTWlycm9yZWQgPSBzYW1wbGUudmlkZW9NaXJyb3JlZCgpOwot
ICAgICAgICAgICAgcnVuV2l0aG91dEFuaW1hdGlvbnMoW3RoaXMsICZzYW1wbGVdIHsKLSAgICAg
ICAgICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKS5hZmZpbmVUcmFuc2Zv
cm0gPSB2aWRlb1RyYW5zZm9ybWF0aW9uTWF0cml4KHNhbXBsZSwgdHJ1ZSk7Ci0gICAgICAgICAg
ICAgICAgdXBkYXRlRGlzcGxheUxheWVyKCk7Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT51cGRhdGVBZmZpbmVUcmFuc2Zvcm0odmlkZW9U
cmFuc2Zvcm1hdGlvbk1hdHJpeChzYW1wbGUsIHRydWUpKTsKKyAgICAgICAgICAgIHVwZGF0ZURp
c3BsYXlMYXllcigpOwogICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFbbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKSB7Ci0gICAgICAgICAgICBhZGRT
YW1wbGVUb1BlbmRpbmdRdWV1ZShtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLCBzYW1wbGUpOwot
ICAgICAgICAgICAgcmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgW21fc2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyIGVucXVldWVTYW1wbGVCdWZmZXI6c2FtcGxlLnBsYXRmb3JtU2FtcGxlKCku
c2FtcGxlLmNtU2FtcGxlQnVmZmVyXTsKKyAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXItPmVucXVldWVTYW1wbGUoc2FtcGxlKTsKICAgICB9CiAKICAgICBpZiAoIW1faGFzRXZlckVu
cXVldWVkVmlkZW9GcmFtZSkgewpAQCAtNDEzLDYxICsyNDIsMjUgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVucXVldWVWaWRlb1NhbXBsZShNZWRpYVN0cmVh
bVRyYWNrUHIKICAgICB9CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjpyZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRhKCkKLXsKLSAg
ICBhdXRvIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpOwotICAgIFttX3NhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllciByZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1ZTpkaXNwYXRjaF9n
ZXRfbWFpbl9xdWV1ZSgpIHVzaW5nQmxvY2s6XiB7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
IHN0b3BSZXF1ZXN0aW5nTWVkaWFEYXRhXTsKLQotICAgICAgICBpZiAoIW1fYWN0aXZlVmlkZW9U
cmFjaykgewotICAgICAgICAgICAgbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5jbGVhcigpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgd2hpbGUgKCFtX3BlbmRp
bmdWaWRlb1NhbXBsZVF1ZXVlLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgaWYgKCFbbV9zYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKSB7Ci0gICAgICAg
ICAgICAgICAgcmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgpOwotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYXV0byBz
YW1wbGUgPSBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLnRha2VGaXJzdCgpOwotICAgICAgICAg
ICAgZW5xdWV1ZVZpZGVvU2FtcGxlKCptX2FjdGl2ZVZpZGVvVHJhY2suZ2V0KCksIHNhbXBsZS5n
ZXQoKSk7Ci0gICAgICAgIH0KLSAgICB9XTsKLX0KLQogQXVkaW9Tb3VyY2VQcm92aWRlciogTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjphdWRpb1NvdXJjZVByb3ZpZGVyKCkK
IHsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmV0dXJuIGEgbWl4IG9mIGFsbCBhdWRpbyB0
cmFja3MgLSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwMzA1CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjpsYXllckVycm9yRGlkQ2hhbmdlKEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
KiBsYXllcikKLXsKLSAgICBVTlVTRURfUEFSQU0obGF5ZXIpOwotICAgIEVSUk9SX0xPRyhMT0dJ
REVOVElGSUVSLCAiZXJyb3IgPSAiLCBbW2xheWVyLmVycm9yIGxvY2FsaXplZERlc2NyaXB0aW9u
XSBVVEY4U3RyaW5nXSk7Ci19Ci0KLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjpsYXllclN0YXR1c0RpZENoYW5nZShBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciog
bGF5ZXIpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyU3RhdHVzRGlkQ2hhbmdlKFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ciYgbGF5ZXIpCiB7Ci0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAic3RhdHVzID0gIiwg
KGludClsYXllci5zdGF0dXMpOwotCi0gICAgaWYgKGxheWVyLnN0YXR1cyAhPSBBVlF1ZXVlZFNh
bXBsZUJ1ZmZlclJlbmRlcmluZ1N0YXR1c1JlbmRlcmluZykKLSAgICAgICAgcmV0dXJuOwotICAg
IGlmICghbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgfHwgIW1fYWN0aXZlVmlkZW9UcmFjayB8
fCBsYXllciAhPSBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKKyAgICBBU1NFUlQoJmxheWVy
ID09IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpKTsKKyAgICBpZiAoIW1fYWN0aXZl
VmlkZW9UcmFjaykKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byB0cmFjayA9IG1fdmlkZW9U
cmFja01hcC5nZXQobV9hY3RpdmVWaWRlb1RyYWNrLT5pZCgpKTsKLSAgICBpZiAodHJhY2spCisg
ICAgaWYgKGF1dG8gdHJhY2sgPSBtX3ZpZGVvVHJhY2tNYXAuZ2V0KG1fYWN0aXZlVmlkZW9UcmFj
ay0+aWQoKSkpCiAgICAgICAgIHRyYWNrLT5zZXRUaW1lbGluZU9mZnNldChNZWRpYVRpbWU6Omlu
dmFsaWRUaW1lKCkpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQzo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQogewotICAgIGlmIChtX3NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllciAmJiBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgc3RhdHVzXSA9
PSBBVlF1ZXVlZFNhbXBsZUJ1ZmZlclJlbmRlcmluZ1N0YXR1c0ZhaWxlZCkgeworICAgIGlmICht
X3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciAmJiBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+
ZGlkRmFpbCgpKSB7CiAgICAgICAgIGZsdXNoUmVuZGVyZXJzKCk7CiAgICAgICAgIGlmIChtX2lt
YWdlUGFpbnRlci5tZWRpYVNhbXBsZSkKICAgICAgICAgICAgIGVucXVldWVDb3JyZWN0ZWRWaWRl
b1NhbXBsZSgqbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpOwpAQCAtNDc4LDcgKzI3MSw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjphcHBsaWNhdGlvbkRp
ZEJlY29tZUFjdGl2ZSgpCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6Zmx1c2hSZW5kZXJlcnMoKQogewogICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cikKLSAgICAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGZsdXNoXTsKKyAgICAgICAg
bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPmZsdXNoKCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnN1cmVMYXllcnMoKQpAQCAtNDg5LDUxICsy
ODIsMjQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVuc3Vy
ZUxheWVycygpCiAgICAgaWYgKCFtX21lZGlhU3RyZWFtUHJpdmF0ZSB8fCAhbV9tZWRpYVN0cmVh
bVByaXZhdGUtPmFjdGl2ZVZpZGVvVHJhY2soKSB8fCAhbV9tZWRpYVN0cmVhbVByaXZhdGUtPmFj
dGl2ZVZpZGVvVHJhY2soKS0+ZW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Nh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVlNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllckluc3RhbmNlKCkgaW5pdF0pOworICAgIGF1dG8gc2l6ZSA9IHNuYXBwZWRJ
bnRSZWN0KG1fcGxheWVyLT5wbGF5ZXJDb250ZW50Qm94UmVjdCgpKS5zaXplKCk7CisgICAgbV9z
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgPSBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6
Y3JlYXRlKCp0aGlzLCBoaWRlUm9vdExheWVyKCksIHNpemUpOworCiAgICAgaWYgKCFtX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcikgewotICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwg
IitbQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgYWxsb2NdIGZhaWxlZC4iKTsKKyAgICAgICAg
RVJST1JfTE9HKExPR0lERU5USUZJRVIsICJDcmVhdGluZyB0aGUgU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyIGZhaWxlZC4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fc2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmdldCgpLmJhY2tncm91bmRDb2xvciA9IGNhY2hlZENHQ29sb3Io
Q29sb3I6OmJsYWNrKTsKLSAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKS5hbmNo
b3JQb2ludCA9IHsgLjUsIC41IH07Ci0gICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0
KCkubmVlZHNEaXNwbGF5T25Cb3VuZHNDaGFuZ2UgPSBZRVM7Ci0gICAgbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIuZ2V0KCkudmlkZW9HcmF2aXR5ID0gQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6
ZUFzcGVjdEZpbGw7Ci0KLSAgICBtX2JhY2tncm91bmRMYXllciA9IGFkb3B0TlMoW1tDQUxheWVy
IGFsbG9jXSBpbml0XSk7Ci0gICAgbV9iYWNrZ3JvdW5kTGF5ZXIuZ2V0KCkuaGlkZGVuID0gaGlk
ZUJhY2tncm91bmRMYXllcigpOwotCi0gICAgbV9iYWNrZ3JvdW5kTGF5ZXIuZ2V0KCkuYmFja2dy
b3VuZENvbG9yID0gY2FjaGVkQ0dDb2xvcihDb2xvcjo6YmxhY2spOwotICAgIG1fYmFja2dyb3Vu
ZExheWVyLmdldCgpLm5lZWRzRGlzcGxheU9uQm91bmRzQ2hhbmdlID0gWUVTOwotCi0gICAgYXV0
byBzaXplID0gc25hcHBlZEludFJlY3QobV9wbGF5ZXItPnBsYXllckNvbnRlbnRCb3hSZWN0KCkp
LnNpemUoKTsKLSAgICBtX2JhY2tncm91bmRMYXllci5nZXQoKS5ib3VuZHMgPSBDR1JlY3RNYWtl
KDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7Ci0KLSAgICBbbV9zdGF0dXNDaGFu
Z2VMaXN0ZW5lciBiZWdpbk9ic2VydmluZ0xheWVyc107Ci0KLSAgICBbbV9iYWNrZ3JvdW5kTGF5
ZXIgYWRkU3VibGF5ZXI6bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCldOwotCi0jaWZu
ZGVmIE5ERUJVRwotICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBzZXROYW1lOkAiTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyIl07Ci0gICAgW21fYmFja2dyb3VuZExheWVyIHNldE5hbWU6QCJNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgcGFyZW50Il07
Ci0jZW5kaWYKLQogICAgIHVwZGF0ZVJlbmRlcmluZ01vZGUoKTsKICAgICB1cGRhdGVEaXNwbGF5
TGF5ZXIoKTsKIAotICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0xh
eWVyKG1fYmFja2dyb3VuZExheWVyLmdldCgpLCBzaXplKTsKKyAgICBtX3ZpZGVvRnVsbHNjcmVl
bkxheWVyTWFuYWdlci0+c2V0VmlkZW9MYXllcihtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+
cm9vdExheWVyKCksIHNpemUpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6ZGVzdHJveUxheWVycygpCiB7Ci0gICAgW21fc3RhdHVzQ2hhbmdlTGlzdGVu
ZXIgc3RvcE9ic2VydmluZ0xheWVyc107Ci0gICAgaWYgKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyKSB7Ci0gICAgICAgIG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUuY2xlYXIoKTsKLSAgICAg
ICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHN0b3BSZXF1ZXN0aW5nTWVkaWFEYXRhXTsK
LSAgICAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGZsdXNoXTsKKyAgICBpZiAobV9z
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpCiAgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyID0gbnVsbHB0cjsKLSAgICB9Ci0gICAgbV9iYWNrZ3JvdW5kTGF5ZXIgPSBudWxscHRyOwog
CiAgICAgdXBkYXRlUmVuZGVyaW5nTW9kZSgpOwogICAgIApAQCAtNjAwLDIyICszNjYsMTIgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnByZXBhcmVUb1BsYXko
KQogCiBQbGF0Zm9ybUxheWVyKiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewotICAgIGlmICghbV9iYWNrZ3JvdW5kTGF5ZXIgfHwg
bV9kaXNwbGF5TW9kZSA9PSBOb25lKQorICAgIGlmICghbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIgfHwgIW1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5yb290TGF5ZXIoKSB8fCBtX2Rpc3Bs
YXlNb2RlID09IE5vbmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIG1f
dmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT52aWRlb0lubGluZUxheWVyKCk7CiB9CiAKLVBs
YXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGlzcGxh
eUxheWVyKCkKLXsKLSAgICByZXR1cm4gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCk7
Ci19Ci0KLVBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6YmFja2dyb3VuZExheWVyKCkKLXsKLSAgICByZXR1cm4gbV9iYWNrZ3JvdW5kTGF5ZXIuZ2V0
KCk7Ci19Ci0KIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6RGlzcGxheU1v
ZGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjdXJyZW50RGlzcGxheU1v
ZGUoKSBjb25zdAogewogICAgIGlmIChtX2ludHJpbnNpY1NpemUuaXNFbXB0eSgpIHx8ICFtZXRh
RGF0YUF2YWlsYWJsZSgpIHx8ICFtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKQEAgLTY1MSwx
OCArNDA3LDggQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVw
ZGF0ZURpc3BsYXlNb2RlKCkKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAidXBkYXRlZCB0
byAiLCBzdGF0aWNfY2FzdDxpbnQ+KGRpc3BsYXlNb2RlKSk7CiAgICAgbV9kaXNwbGF5TW9kZSA9
IGRpc3BsYXlNb2RlOwogCi0gICAgYXV0byBoaWRkZW4gPSBtX2Rpc3BsYXlNb2RlIDwgUGF1c2Vk
SW1hZ2U7Ci0gICAgaWYgKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyICYmIG1fc2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLmdldCgpLmhpZGRlbiAhPSBoaWRkZW4pIHsKLSAgICAgICAgcnVuV2l0
aG91dEFuaW1hdGlvbnMoW3RoaXMsIGhpZGRlbl0gewotICAgICAgICAgICAgbV9zYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIuZ2V0KCkuaGlkZGVuID0gaGlkZGVuOwotICAgICAgICB9KTsKLSAgICB9
Ci0gICAgaGlkZGVuID0gaGlkZUJhY2tncm91bmRMYXllcigpOwotICAgIGlmIChtX2JhY2tncm91
bmRMYXllciAmJiBtX2JhY2tncm91bmRMYXllci5nZXQoKS5oaWRkZW4gIT0gaGlkZGVuKSB7Ci0g
ICAgICAgIHJ1bldpdGhvdXRBbmltYXRpb25zKFt0aGlzLCBoaWRkZW5dIHsKLSAgICAgICAgICAg
IG1fYmFja2dyb3VuZExheWVyLmdldCgpLmhpZGRlbiA9IGhpZGRlbjsKLSAgICAgICAgfSk7Ci0g
ICAgfQorICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKKyAgICAgICAgbV9zYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXItPnVwZGF0ZURpc3BsYXlNb2RlKG1fZGlzcGxheU1vZGUgPCBQ
YXVzZWRJbWFnZSwgaGlkZVJvb3RMYXllcigpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAt
MTAyMSw4ICs3NjcsMTEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OmNoZWNrU2VsZWN0ZWRWaWRlb1RyYWNrKCkKICAgICAgICAgICAgICAgICBtX3dhaXRpbmdG
b3JGaXJzdEltYWdlID0gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBlbnN1cmVMYXllcnMoKTsK
LSAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCkuaGlkZGVuID0gaGlkZVZp
ZGVvTGF5ZXIgfHwgbV9kaXNwbGF5TW9kZSA8IFBhdXNlZEltYWdlOwotICAgICAgICBtX2JhY2tn
cm91bmRMYXllci5nZXQoKS5oaWRkZW4gPSBoaWRlQmFja2dyb3VuZExheWVyKCk7CisgICAgICAg
IGlmIChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikgeworICAgICAgICAgICAgaWYgKCFtX2Fj
dGl2ZVZpZGVvVHJhY2spCisgICAgICAgICAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXItPmNsZWFyRW5xdWV1ZWRTYW1wbGVzKCk7CisgICAgICAgICAgICBtX3NhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci0+dXBkYXRlRGlzcGxheU1vZGUoaGlkZVZpZGVvTGF5ZXIgfHwgbV9kaXNwbGF5
TW9kZSA8IFBhdXNlZEltYWdlLCBoaWRlUm9vdExheWVyKCkpOworICAgICAgICB9CiAKICAgICAg
ICAgbV9wZW5kaW5nU2VsZWN0ZWRUcmFja0NoZWNrID0gZmFsc2U7CiAgICAgICAgIHVwZGF0ZURp
c3BsYXlNb2RlKCk7CkBAIC0xMTcxLDggKzkyMCw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjpzZXROZXR3b3JrU3RhdGUoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtT
CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRCdWZmZXJp
bmdQb2xpY3koTWVkaWFQbGF5ZXI6OkJ1ZmZlcmluZ1BvbGljeSBwb2xpY3kpCiB7Ci0gICAgaWYg
KHBvbGljeSAhPSBNZWRpYVBsYXllcjo6QnVmZmVyaW5nUG9saWN5OjpEZWZhdWx0KQotICAgICAg
ICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgZmx1c2hBbmRSZW1vdmVJbWFnZV07CisgICAg
aWYgKHBvbGljeSAhPSBNZWRpYVBsYXllcjo6QnVmZmVyaW5nUG9saWN5OjpEZWZhdWx0ICYmIG1f
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQorICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci0+Zmx1c2hBbmRSZW1vdmVJbWFnZSgpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2NoZWR1bGVEZWZlcnJlZFRhc2soRnVuY3Rpb248dm9pZCAo
KT4mJiBmdW5jdGlvbikKQEAgLTExOTUsMjMgKzk0NCwyMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Q3VycmVudEZyYW1lUGFpbnRlcjo6cmVzZXQoKQogCiB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlRGlzcGxheUxh
eWVyKCkKIHsKLSAgICBpZiAoIW1fYmFja2dyb3VuZExheWVyIHx8ICFtX3NhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcikKKyAgICBpZiAoIW1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBhdXRvIGJhY2tncm91bmRCb3VuZHMgPSBtX2JhY2tncm91bmRMYXll
ci5nZXQoKS5ib3VuZHM7Ci0gICAgYXV0byB2aWRlb0JvdW5kcyA9IGJhY2tncm91bmRCb3VuZHM7
CisgICAgYXV0byBib3VuZHMgPSBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+Ym91bmRzKCk7
CisgICAgYXV0byB2aWRlb0JvdW5kcyA9IGJvdW5kczsKICAgICBpZiAobV92aWRlb1JvdGF0aW9u
ID09IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpSaWdodCB8fCBtX3ZpZGVvUm90YXRpb24g
PT0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OkxlZnQpCiAgICAgICAgIHN0ZDo6c3dhcCh2
aWRlb0JvdW5kcy5zaXplLndpZHRoLCB2aWRlb0JvdW5kcy5zaXplLmhlaWdodCk7CiAKLSAgICBt
X3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKS5ib3VuZHMgPSB2aWRlb0JvdW5kczsKLSAg
ICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKS5wb3NpdGlvbiA9IHsgYmFja2dyb3Vu
ZEJvdW5kcy5zaXplLndpZHRoIC8gMiwgYmFja2dyb3VuZEJvdW5kcy5zaXplLmhlaWdodCAvIDJ9
OworICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT51cGRhdGVCb3VuZHNBbmRQb3NpdGlv
bih2aWRlb0JvdW5kcywgeyBib3VuZHMuc2l6ZS53aWR0aCAvIDIsIGJvdW5kcy5zaXplLmhlaWdo
dCAvIDJ9KTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OmJhY2tncm91bmRMYXllckJvdW5kc0NoYW5nZWQoKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakM6OnNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckJvdW5kc0RpZENoYW5n
ZShTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXImKQogewotICAgIHJ1bldpdGhvdXRBbmltYXRpb25z
KFt0aGlzXSB7Ci0gICAgICAgIHVwZGF0ZURpc3BsYXlMYXllcigpOwotICAgIH0pOworICAgIHVw
ZGF0ZURpc3BsYXlMYXllcigpOwogfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387346</attachid>
            <date>2020-01-10 09:20:13 -0800</date>
            <delta_ts>2020-01-13 05:48:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206066-20200110182010.patch</filename>
            <type>text/plain</type>
            <size>55114</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MzMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGUyYTU5YTEzYTAyMmMy
YWM5MzE5ZGIzZDI5OTYwOWQ3YmRlOTM5OC4uNjI4OGEwOWJmNTlhOTQ2ZmY3Njc1MDc0YjVhNDk2
ZDc2M2VhY2E2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDIwLTAxLTEwICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgYW4gYWJz
dHJhY3QgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYwNjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHVzZSBvZiBkaXNwbGF5IGxheWVycyBpbiBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMgdG8gYSBuZXcgY2xhc3MgTG9jYWxTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIKKyAgICAgICAgdGhhdCBpbXBsZW1lbnRzIGFuIGludGVyZmFj
ZSBuYW1lZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuCisgICAgICAgIEEgZnV0dXJlIHBhdGNo
IHdpbGwgaW1wbGVtZW50IHRoaXMgaW50ZXJmYWNlIGJ5IElQQ2luZyB0byBHUFVQcm9jZXNzLgor
ICAgICAgICBXZSBtb3ZlIGJvdGggbGF5ZXJzIGFuZCBoYW5kbGluZyBvZiB0aGUgc2FtcGxlIHF1
ZXVlIHRvIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLgorCisgICAgICAgIENvbnRyYXJ5
IHRvIHByZXZpb3VzbHksIHdlIGRvIG5vdCBjYWxsIGFnYWluIGVucXVldWVWaWRlb1NhbXBsZSBp
biBjYXNlIHdlIGVucXVldWVkIGEgc2FtcGxlIGZvciBsYXRlciB1c2UgaW4gdGhlIGRpc3BsYXkg
bGF5ZXIuCisgICAgICAgIEluc3RlYWQsIHdlIGRpcmVjdGx5IHJlbmRlciBpdCwgd2hpY2ggc2hv
dWxkIG5vdCBjaGFuZ2UgbXVjaCBzaW5jZSB0aGlzIGlzIGEgcmVhbHRpbWUgdHJhY2sgYW5kIGlu
IHRoZSBmdXR1cmUgdGhlIGJ1ZmZlciB3aWxsIGJlIGluIEdQVVByb2Nlc3MgYW55d2F5LgorIAor
ICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubW06IEFkZGVkLgor
ICAgICAgICAoLVtXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyIGluaXRXaXRo
UGFyZW50Ol0pOgorICAgICAgICAoLVtXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3Rl
bmVyIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VM
aXN0ZW5lciBpbnZhbGlkYXRlXSk6CisgICAgICAgICgtW1dlYkFWU2FtcGxlQnVmZmVyU3RhdHVz
Q2hhbmdlTGlzdGVuZXIgYmVnaW5PYnNlcnZpbmdMYXllcnNdKToKKyAgICAgICAgKC1bV2ViQVZT
YW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lciBzdG9wT2JzZXJ2aW5nTGF5ZXJzXSk6Cisg
ICAgICAgICgtW1dlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgb2JzZXJ2ZVZh
bHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKyAgICAgICAgKFdlYkNv
cmU6OnJ1bldpdGhvdXRBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcik6CisgICAg
ICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6fkxvY2FsU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyOjpsYXllclN0YXR1c0RpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpM
b2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6bGF5ZXJFcnJvckRpZENoYW5nZSk6CisgICAg
ICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6cm9vdExheWVyQm91
bmRzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyOjpkaXNwbGF5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI6OnJvb3RMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZGlkRmFpbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
b2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6dXBkYXRlRGlzcGxheU1vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmJvdW5kcyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6dXBkYXRl
QWZmaW5lVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjp1cGRhdGVCb3VuZHNBbmRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpM
b2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5zdXJlTGF5ZXJzKToKKyAgICAgICAgKFdl
YkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpmbHVzaCk6CisgICAgICAgIChX
ZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Zmx1c2hBbmRSZW1vdmVJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5x
dWV1ZVNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6cmVtb3ZlT2xkU2FtcGxlc0Zyb21QZW5kaW5nUXVldWUpOgorICAgICAgICAoV2ViQ29y
ZTo6TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmFkZFNhbXBsZVRvUGVuZGluZ1F1ZXVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjbGVh
ckVucXVldWVkU2FtcGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcjo6cmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1t
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp+TWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZUNvcnJlY3RlZFZpZGVvU2FtcGxlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyU3RhdHVzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YXBwbGljYXRpb25EaWRCZWNv
bWVBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjpmbHVzaFJlbmRlcmVycyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVuc3VyZUxheWVycyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmRlc3Ryb3lMYXllcnMp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGlzcGxheUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlRGlzcGxheU1vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjpjaGVja1NlbGVjdGVkVmlkZW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNldEJ1ZmZlcmluZ1BvbGljeSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZURp
c3BsYXlMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OnNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckJvdW5kc0RpZENoYW5nZSk6CisK
KzIwMjAtMDEtMTAgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAg
IENsZWFuLXVwIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYwNjAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2Ugb2YgYmVo
YXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakMubW06CisKIDIwMjAtMDEtMTAgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVy
ZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBGaXggdmFyaW91cyBub24tdW5pZmllZCBidWlsZCBp
c3N1ZXMgaW50cm9kdWNlZCBzaW5jZSByMjUzNTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRl
eCBlNDUzZDg5MDk3ZTY4NmIyYzMzNTJiYWQ2NmVlNzEyMzQ3YzE2NmI1Li42NWJhNTk3ODU5YTEw
OGI4MDExZmIxYjMzN2JjZWUyZjI0Mjc5MjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAg
LTI1Myw2ICsyNTMsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1T
ZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbSBAbm8tdW5pZnkKIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZP
YmpDLm1tIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMubW0gQG5vLXVuaWZ5CitwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5t
bSBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXJNYWMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIEBuby11
bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZlMjhiNTdkYzc0NGM5ODJl
YWU3MTAxYTYyMmJiMTc5MGJjOWZiNzIuLjEyNzVmYmQ1OTNjNDZlM2E0NTJlNTIxNmNhYmNlNmFk
YjgwNGRiM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTEwNjgsNiArMTA2OCw3IEBACiAJCTQxM0MyQzM0MUJDMjlBOEYwMDc1
MjA0QyAvKiBKU0RPTUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTNDMkMzMzFCQzI5QTdCMDA3NTIwNEMgLyogSlNET01Db25zdHJ1
Y3Rvci5oICovOyB9OwogCQk0MTNDQ0Q0QTIwREUwMzRGMDA2NUEyMUEgLyogTW9ja01lZGlhRGV2
aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTND
Q0Q0ODIwREUwMTNDMDA2NUEyMUEgLyogTW9ja01lZGlhRGV2aWNlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDEzRTAwNzkxREIwRTRGMjAwMjM0
MUQyIC8qIE1lbW9yeVJlbGVhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxM0UwMDc4MURCMEU0REUwMDIzNDFEMiAvKiBNZW1vcnlSZWxlYXNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDE0NTk4
QzIyM0M4RDE3NzAwMkI5Q0M4IC8qIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE0NTk4QzEyM0M4
QUQ3OTAwMkI5Q0M4IC8qIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tICovOyB9Owog
CQk0MTRCODIwNTFENkRGMEU1MDA3N0VCRTMgLyogU3RydWN0dXJlZENsb25lLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTRCODIwMzFENkRGMEQ5MDA3
N0VCRTMgLyogU3RydWN0dXJlZENsb25lLmggKi87IH07CiAJCTQxNERFREU3MUY5RkU5MUUwMDQ3
QzQwRCAvKiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTRERURFNTFGOUZFOTE1MDA0N0M0MEQgLyogRW1wdHlG
cmFtZUxvYWRlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTQxNTA3MTU4MTY4NTA2NzMwMEMzQzdCMyAvKiBTZWxlY3RvckZpbHRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE1MDcxNTYx
Njg1MDY3MzAwQzNDN0IzIC8qIFNlbGVjdG9yRmlsdGVyLmggKi87IH07CkBAIC03MzQ3LDYgKzcz
NDgsOSBAQAogCQk0MTNFMDA3ODFEQjBFNERFMDAyMzQxRDIgLyogTWVtb3J5UmVsZWFzZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlSZWxlYXNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0UwMDdCMURCMEU3MDcwMDIzNDFEMiAvKiBNZW1vcnlS
ZWxlYXNlQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBN
ZW1vcnlSZWxlYXNlQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0ZD
NENEMUZEMUREOEMwMDU0MUM0QiAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVy
eU9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0NTk4QkUyM0M4QUFC
ODAwMkI5Q0M4IC8qIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDE0NTk4QzAyM0M4QUQ3ODAwMkI5Q0M4IC8qIExvY2FsU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExv
Y2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQxNDU5OEMxMjNDOEFENzkwMDJCOUNDOCAvKiBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvY2FsU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTQ3RTJCMjFDODgzMzdGMDBBN0U3MTUgLyogRmV0Y2hCb2R5T3duZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRmV0Y2hCb2R5T3duZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDE0N0UyQjMxQzg5OTEyNjAwQTdFNzE1IC8qIEZldGNoQm9keU93bmVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZldGNoQm9keU93bmVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE0N0UyQjQxQzg5OTEyNjAwQTdFNzE1
IC8qIEZldGNoTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEZldGNoTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MzE3LDYg
KzE2MzIxLDcgQEAKIAkJCQkwNzZGMEQwQTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uLmggKi8sCiAJCQkJQ0RCRUFFQUIxOUQ5MkI2QzAwQkVCQTg4IC8q
IE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLmggKi8sCiAJCQkJQ0RCRUFFQUExOUQ5MkI2QzAw
QkVCQTg4IC8qIE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDLm1tICovLAorCQkJCTQxNDU5OEJF
MjNDOEFBQjgwMDJCOUNDOCAvKiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCAqLywKIAkJCQlD
RDMzNkY2MzE3RkEwQTREMDBERERDRDAgLyogVmlkZW9UcmFja1ByaXZhdGVBVkYuaCAqLywKIAkJ
CQkwNzA5RDc5MDFBRTU1NTdFMDA0RTQyRjggLyogV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5j
cHAgKi8sCiAJCQkJMDcwOUQ3OTExQUU1NTU3RTAwNEU0MkY4IC8qIFdlYk1lZGlhU2Vzc2lvbk1h
bmFnZXJNYWMuaCAqLywKQEAgLTI2NzQwLDYgKzI2NzQ1LDggQEAKIAkJCQkwN0FBNkI2QTE2NkQw
MTk1MDBENDU2NzEgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0gKi8sCiAJCQkJ
MDczNjdEREQxNzJDQTY3RjAwRDg2MUI5IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lB
VkZPYmpDLmggKi8sCiAJCQkJMDczNjdEREUxNzJDQTY3RjAwRDg2MUI5IC8qIEluYmFuZFRleHRU
cmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLm1tICovLAorCQkJCTQxNDU5OEMwMjNDOEFENzgwMDJC
OUNDOCAvKiBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oICovLAorCQkJCTQxNDU5OEMx
MjNDOEFENzkwMDJCOUNDOCAvKiBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbSAqLywK
IAkJCQkwNzhFNDNEQjFBQkI2RjZGMDAxQzJGQTYgLyogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ck1hYy5oICovLAogCQkJCTA3OEU0M0RDMUFCQjZGNkYwMDFDMkZBNiAvKiBNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyTWFjLm1tICovLAogCQkJCURGOUFGRDcwMTNGQzMxRDgwMDE1RkVCNyAvKiBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggKi8sCkBAIC0zMzY0MCw2ICszMzY0
Nyw3IEBACiAJCQkJNDFEMjhEMEQyMTM5RTA1ODAwRjQyMDZGIC8qIExpYldlYlJUQ1N0YXRzQ29s
bGVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxODZCRDNFMjEzRUUzNDAwMDAxODI2RiAv
KiBMaWJXZWJSVENVdGlscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzU5RTkzRTE0RUYxQ0Y4
MDAyNkEyREQgLyogTG9hZGFibGVUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDE0
NTk4QzIyM0M4RDE3NzAwMkI5Q0M4IC8qIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkFCRTcyRkUxMDU5QzIxMTAwRDk5OUREIC8qIE1hdGhNTE5h
bWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOUJGNzA1MURCRkJCMjQwMDdBN0Q5OSAvKiBN
ZWRpYUVuY3J5cHRlZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOUJGNzQ3MURCRkRD
NDkwMDdBN0Q5OSAvKiBNZWRpYUtleU1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9T
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
OTQxNmNhMGYyMjQxZDEwYzQ2NzZlMGZkNzYzMjIzZTNjNmNkMzAzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL1NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci5oCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCisKKyNpbmNsdWRlICJQbGF0Zm9ybUxheWVy
LmgiCisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBN
ZWRpYVRpbWU7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEludFNpemU7CitjbGFz
cyBNZWRpYVNhbXBsZTsKKworY2xhc3MgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHsKK3B1Ymxp
YzoKKyAgICBjbGFzcyBDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q2xpZW50PiB7Cisg
ICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSA9IGRlZmF1bHQ7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJTdGF0dXNEaWRDaGFuZ2UoU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgc2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyQm91bmRzRGlkQ2hhbmdlKFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ciYpID0gMDsKKyAgICAgICAgdmlydHVhbCBXVEY6Ok1lZGlhVGltZSBzdHJlYW1UaW1lKCkgY29u
c3QgPSAwOworICAgIH07CisKKyAgICBleHBsaWNpdCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIo
Q2xpZW50Jik7CisgICAgdmlydHVhbCB+U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKCkgPSBkZWZh
dWx0OworCisgICAgdmlydHVhbCBib29sIGRpZEZhaWwoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlRGlzcGxheU1vZGUoYm9vbCBoaWRlRGlzcGxheUxheWVyLCBib29sIGhp
ZGVSb290TGF5ZXIpID0gMDsKKworICAgIHZpcnR1YWwgQ0dSZWN0IGJvdW5kcygpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQWZmaW5lVHJhbnNmb3JtKENHQWZmaW5lVHJhbnNm
b3JtKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9uKENHUmVj
dCwgQ0dQb2ludCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGZsdXNoKCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBmbHVzaEFuZFJlbW92ZUltYWdlKCkgPSAwOworCisgICAgdmlydHVhbCB2b2lk
IGVucXVldWVTYW1wbGUoTWVkaWFTYW1wbGUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFy
RW5xdWV1ZWRTYW1wbGVzKCkgPSAwOworCisgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBkaXNw
bGF5TGF5ZXIoKSA9IDA7CisgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiByb290TGF5ZXIoKSA9
IDA7CisKK3Byb3RlY3RlZDoKKyAgICBXZWFrUHRyPENsaWVudD4gbV9jbGllbnQ7Cit9OworCitp
bmxpbmUgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIo
Q2xpZW50JiBjbGllbnQpCisgICAgOiBtX2NsaWVudChtYWtlV2Vha1B0cihjbGllbnQpKQorewor
fQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFU
SU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTg5MTA4ZWNlZjJhODQ0ZjYzM2MwOGFmNzI4MGZk
ZjllMjhkNDFlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgK
QEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFW
Rk9VTkRBVElPTikKKworI2luY2x1ZGUgIlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIgorI2lu
Y2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
OworT0JKQ19DTEFTUyBXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyOworCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
IGZpbmFsIDogcHVibGljIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI+IGNyZWF0ZShDbGllbnQmLCBib29sIGhpZGVSb290TGF5ZXIsIElu
dFNpemUpOworCisgICAgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoUmV0YWluUHRyPEFW
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiYmLCBDbGllbnQmLCBib29sIGhpZGVSb290TGF5ZXIs
IEludFNpemUpOworICAgIH5Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcigpOworCisgICAg
Ly8gQVBJIHVzZWQgYnkgV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcgorICAg
IHZvaWQgbGF5ZXJTdGF0dXNEaWRDaGFuZ2UoKTsKKyAgICB2b2lkIGxheWVyRXJyb3JEaWRDaGFu
Z2UoKTsKKyAgICB2b2lkIHJvb3RMYXllckJvdW5kc0RpZENoYW5nZSgpOworCisgICAgUGxhdGZv
cm1MYXllciogZGlzcGxheUxheWVyKCkgZmluYWw7CisgICAgUGxhdGZvcm1MYXllciogcm9vdExh
eWVyKCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgYm9vbCBkaWRGYWlsKCkgY29uc3QgZmluYWw7
CisKKyAgICB2b2lkIHVwZGF0ZURpc3BsYXlNb2RlKGJvb2wgaGlkZURpc3BsYXlMYXllciwgYm9v
bCBoaWRlUm9vdExheWVyKSBmaW5hbDsKKworICAgIENHUmVjdCBib3VuZHMoKSBjb25zdCBmaW5h
bDsKKyAgICB2b2lkIHVwZGF0ZUFmZmluZVRyYW5zZm9ybShDR0FmZmluZVRyYW5zZm9ybSkgIGZp
bmFsOworICAgIHZvaWQgdXBkYXRlQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0LCBDR1BvaW50KSBm
aW5hbDsKKworICAgIHZvaWQgZmx1c2goKSBmaW5hbDsKKyAgICB2b2lkIGZsdXNoQW5kUmVtb3Zl
SW1hZ2UoKSBmaW5hbDsKKworICAgIHZvaWQgZW5xdWV1ZVNhbXBsZShNZWRpYVNhbXBsZSYpIGZp
bmFsOworICAgIHZvaWQgY2xlYXJFbnF1ZXVlZFNhbXBsZXMoKSBmaW5hbDsKKworICAgIHZvaWQg
ZW5zdXJlTGF5ZXJzKCk7CisKKyAgICB2b2lkIHJlbW92ZU9sZFNhbXBsZXNGcm9tUGVuZGluZ1F1
ZXVlKCk7CisgICAgdm9pZCBhZGRTYW1wbGVUb1BlbmRpbmdRdWV1ZShNZWRpYVNhbXBsZSYpOwor
ICAgIHZvaWQgcmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgpOworCitw
cml2YXRlOgorICAgIFJldGFpblB0cjxXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3Rl
bmVyPiBtX3N0YXR1c0NoYW5nZUxpc3RlbmVyOworICAgIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcj4gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI7CisgICAgUmV0YWluUHRy
PFBsYXRmb3JtTGF5ZXI+IG1fcm9vdExheWVyOworCisgICAgdXNpbmcgUGVuZGluZ1NhbXBsZVF1
ZXVlID0gRGVxdWU8UmVmPE1lZGlhU2FtcGxlPj47CisgICAgUGVuZGluZ1NhbXBsZVF1ZXVlIG1f
cGVuZGluZ1ZpZGVvU2FtcGxlUXVldWU7Cit9OworICAgIAorfQorCisjZW5kaWYgLy8gRU5BQkxF
KE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTQxZWRkNmE5MWFiNDljNzMzN2QyNjJlOTVlZTQ3OWExOTI3YzQ2MgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCkBAIC0wLDAgKzEsMzcyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisjaW1wb3J0ICJMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIgorCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKKworI2ltcG9ydCAiQ29sb3Iu
aCIKKyNpbXBvcnQgIkludFNpemUuaCIKKyNpbXBvcnQgIk1lZGlhU2FtcGxlLmgiCisKKyNpbXBv
cnQgPEFWRm91bmRhdGlvbi9BVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oPgorI2ltcG9ydCA8
UXVhcnR6Q29yZS9DQUxheWVyLmg+CisjaW1wb3J0IDxRdWFydHpDb3JlL0NBVHJhbnNhY3Rpb24u
aD4KKworI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KKworI2ltcG9ydCA8cGFsL2NvY29hL0FW
Rm91bmRhdGlvblNvZnRMaW5rLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitAaW50
ZXJmYWNlIFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgOiBOU09iamVjdCB7
CisgICAgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIqIF9wYXJlbnQ7Cit9CisKKy0gKGlk
KWluaXRXaXRoUGFyZW50OihMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciopY2FsbGJhY2s7
CistICh2b2lkKWludmFsaWRhdGU7CistICh2b2lkKWJlZ2luT2JzZXJ2aW5nTGF5ZXJzOworLSAo
dm9pZClzdG9wT2JzZXJ2aW5nTGF5ZXJzOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViQVZT
YW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcgorCistIChpZClpbml0V2l0aFBhcmVudDoo
TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIqKXBhcmVudAoreworICAgIGlmICghKHNlbGYg
PSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX3BhcmVudCA9IHBh
cmVudDsKKworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBb
c2VsZiBpbnZhbGlkYXRlXTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQpaW52
YWxpZGF0ZQoreworICAgIFtzZWxmIHN0b3BPYnNlcnZpbmdMYXllcnNdOworICAgIF9wYXJlbnQg
PSBudWxscHRyOworfQorCistICh2b2lkKWJlZ2luT2JzZXJ2aW5nTGF5ZXJzCit7CisgICAgQVNT
RVJUKF9wYXJlbnQpOworICAgIEFTU0VSVChfcGFyZW50LT5kaXNwbGF5TGF5ZXIoKSk7CisgICAg
QVNTRVJUKF9wYXJlbnQtPnJvb3RMYXllcigpKTsKKworICAgIFtfcGFyZW50LT5kaXNwbGF5TGF5
ZXIoKSBhZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJzdGF0dXMiIG9wdGlvbnM6TlNLZXlW
YWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0Om5pbF07CisgICAgW19wYXJlbnQtPmRpc3Bs
YXlMYXllcigpIGFkZE9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAImVycm9yIiBvcHRpb25zOk5T
S2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDpuaWxdOworICAgIFtfcGFyZW50LT5y
b290TGF5ZXIoKSBhZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJib3VuZHMiIG9wdGlvbnM6
TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0Om5pbF07Cit9CisKKy0gKHZvaWQp
c3RvcE9ic2VydmluZ0xheWVycworeworICAgIGlmICghX3BhcmVudCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKF9wYXJlbnQtPmRpc3BsYXlMYXllcigpKSB7CisgICAgICAgIFtfcGFyZW50
LT5kaXNwbGF5TGF5ZXIoKSByZW1vdmVPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJzdGF0dXMi
XTsKKyAgICAgICAgW19wYXJlbnQtPmRpc3BsYXlMYXllcigpIHJlbW92ZU9ic2VydmVyOnNlbGYg
Zm9yS2V5UGF0aDpAImVycm9yIl07CisgICAgfQorICAgIGlmIChfcGFyZW50LT5yb290TGF5ZXIo
KSkKKyAgICAgICAgW19wYXJlbnQtPnJvb3RMYXllcigpIHJlbW92ZU9ic2VydmVyOnNlbGYgZm9y
S2V5UGF0aDpAImJvdW5kcyJdOworfQorCistICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6
KE5TU3RyaW5nICopa2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9u
YXJ5ICopY2hhbmdlIGNvbnRleHQ6KHZvaWQgKiljb250ZXh0Cit7CisgICAgVU5VU0VEX1BBUkFN
KGNvbnRleHQpOworICAgIFVOVVNFRF9QQVJBTShrZXlQYXRoKTsKKyAgICBBU1NFUlQoX3BhcmVu
dCk7CisKKyAgICBpZiAoIV9wYXJlbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChbb2Jq
ZWN0IGlzS2luZE9mQ2xhc3M6UEFMOjpnZXRBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckNsYXNz
KCldKSB7CisgICAgICAgIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gbGF5
ZXIgPSAoQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgKilvYmplY3Q7CisgICAgICAgIEFTU0VS
VChsYXllci5nZXQoKSA9PSBfcGFyZW50LT5kaXNwbGF5TGF5ZXIoKSk7CisKKyAgICAgICAgaWYg
KFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInN0YXR1cyJdKSB7CisgICAgICAgICAgICBSZXRh
aW5QdHI8TlNOdW1iZXI+IHN0YXR1cyA9IFtjaGFuZ2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1ZUNo
YW5nZU5ld0tleV07CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxm
ID0gUmV0YWluUHRyPFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXI+KHNlbGYp
LCBsYXllciA9IFdURk1vdmUobGF5ZXIpLCBzdGF0dXMgPSBXVEZNb3ZlKHN0YXR1cyldIHsKKyAg
ICAgICAgICAgICAgICBpZiAoIXByb3RlY3RlZFNlbGYtPl9wYXJlbnQpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9wYXJlbnQt
PmxheWVyU3RhdHVzRGlkQ2hhbmdlKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6
QCJlcnJvciJdKSB7CisgICAgICAgICAgICBSZXRhaW5QdHI8TlNOdW1iZXI+IHN0YXR1cyA9IFtj
aGFuZ2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1ZUNoYW5nZU5ld0tleV07CisgICAgICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFWU2FtcGxlQnVm
ZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXI+KHNlbGYpLCBsYXllciA9IFdURk1vdmUobGF5ZXIpLCBz
dGF0dXMgPSBXVEZNb3ZlKHN0YXR1cyldIHsKKyAgICAgICAgICAgICAgICBpZiAoIXByb3RlY3Rl
ZFNlbGYtPl9wYXJlbnQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAg
ICAgICAgIHByb3RlY3RlZFNlbGYtPl9wYXJlbnQtPmxheWVyRXJyb3JEaWRDaGFuZ2UoKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisg
ICAgaWYgKFtbY2hhbmdlIHZhbHVlRm9yS2V5Ok5TS2V5VmFsdWVDaGFuZ2VOb3RpZmljYXRpb25J
c1ByaW9yS2V5XSBib29sVmFsdWVdKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoKENBTGF5
ZXIgKilvYmplY3QgPT0gX3BhcmVudC0+cm9vdExheWVyKCkpIHsKKyAgICAgICAgaWYgKFtrZXlQ
YXRoIGlzRXF1YWxUb1N0cmluZzpAImJvdW5kcyJdKSB7CisgICAgICAgICAgICBpZiAoIV9wYXJl
bnQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAoaXNNYWluVGhy
ZWFkKCkpIHsKKyAgICAgICAgICAgICAgICBfcGFyZW50LT5yb290TGF5ZXJCb3VuZHNEaWRDaGFu
Z2UoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQVZTYW1w
bGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcj4oc2VsZildIHsKKyAgICAgICAgICAgICAgICBp
ZiAoIXByb3RlY3RlZFNlbGYtPl9wYXJlbnQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9wYXJlbnQtPnJvb3RMYXllckJvdW5k
c0RpZENoYW5nZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9CisKK30KK0Bl
bmQKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgdm9pZCBydW5XaXRob3V0QW5pbWF0
aW9ucyhjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uKQoreworICAgIFtDQVRy
YW5zYWN0aW9uIGJlZ2luXTsKKyAgICBbQ0FUcmFuc2FjdGlvbiBzZXRBbmltYXRpb25EdXJhdGlv
bjowXTsKKyAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0aW9uczpZRVNdOworICAgIGZ1
bmN0aW9uKCk7CisgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKK30KKworc3RkOjp1bmlxdWVf
cHRyPFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXI6OmNyZWF0ZShDbGllbnQmIGNsaWVudCwgYm9vbCBoaWRlUm9vdExheWVyLCBJbnRTaXplIHNp
emUpCit7CisgICAgYXV0byBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgPSBhZG9wdE5TKFtQQUw6
OmFsbG9jQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJbnN0YW5jZSgpIGluaXRdKTsKKyAgICBp
ZiAoIXNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4oV1RG
TW92ZShzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpLCBjbGllbnQsIGhpZGVSb290TGF5ZXIsIHNp
emUpOworfQorCitMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6TG9jYWxTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIoUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiYmIHNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllciwgQ2xpZW50JiBjbGllbnQsIGJvb2wgaGlkZVJvb3RMYXll
ciwgSW50U2l6ZSBzaXplKQorICAgIDogU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKGNsaWVudCkK
KyAgICAsIG1fc3RhdHVzQ2hhbmdlTGlzdGVuZXIoYWRvcHROUyhbW1dlYkFWU2FtcGxlQnVmZmVy
U3RhdHVzQ2hhbmdlTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoUGFyZW50OnRoaXNdKSkKKyAgICAs
IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKFdURk1vdmUoc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyKSkKK3sKKyAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKS5iYWNrZ3JvdW5k
Q29sb3IgPSBjYWNoZWRDR0NvbG9yKENvbG9yOjpibGFjayk7CisgICAgbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIuZ2V0KCkuYW5jaG9yUG9pbnQgPSB7IC41LCAuNSB9OworICAgIG1fc2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmdldCgpLm5lZWRzRGlzcGxheU9uQm91bmRzQ2hhbmdlID0gWUVT
OworICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLnZpZGVvR3Jhdml0eSA9IEFW
TGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsOworCisgICAgbV9yb290TGF5ZXIgPSBh
ZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0pOworICAgIG1fcm9vdExheWVyLmdldCgpLmhp
ZGRlbiA9IGhpZGVSb290TGF5ZXI7CisKKyAgICBtX3Jvb3RMYXllci5nZXQoKS5iYWNrZ3JvdW5k
Q29sb3IgPSBjYWNoZWRDR0NvbG9yKENvbG9yOjpibGFjayk7CisgICAgbV9yb290TGF5ZXIuZ2V0
KCkubmVlZHNEaXNwbGF5T25Cb3VuZHNDaGFuZ2UgPSBZRVM7CisKKyAgICBtX3Jvb3RMYXllci5n
ZXQoKS5ib3VuZHMgPSBDR1JlY3RNYWtlKDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQo
KSk7CisKKyAgICBbbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lciBiZWdpbk9ic2VydmluZ0xheWVyc107
CisKKyAgICBbbV9yb290TGF5ZXIgYWRkU3VibGF5ZXI6bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIuZ2V0KCldOworCisjaWZuZGVmIE5ERUJVRworICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllciBzZXROYW1lOkAiTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgQVZTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIiXTsKKyAgICBbbV9yb290TGF5ZXIgc2V0TmFtZTpAIkxvY2FsU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHBhcmVudCJdOwor
I2VuZGlmCit9CisKK0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjp+TG9jYWxTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIoKQoreworICAgIFttX3N0YXR1c0NoYW5nZUxpc3RlbmVyIHN0b3BP
YnNlcnZpbmdMYXllcnNdOworCisgICAgbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5jbGVhcigp
OworCisgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHN0b3BSZXF1ZXN0aW5nTWVkaWFE
YXRhXTsKKyAgICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgZmx1c2hdOworICAgIG1fc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyID0gbnVsbHB0cjsKKworICAgIG1fcm9vdExheWVyID0gbnVs
bHB0cjsKK30KKwordm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6bGF5ZXJTdGF0
dXNEaWRDaGFuZ2UoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1f
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLnN0YXR1cyAhPSBBVlF1ZXVlZFNhbXBsZUJ1
ZmZlclJlbmRlcmluZ1N0YXR1c1JlbmRlcmluZykKKyAgICAgICAgcmV0dXJuOworICAgIGlmICgh
bV9jbGllbnQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NsaWVudC0+c2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyU3RhdHVzRGlkQ2hhbmdlKCp0aGlzKTsKK30KKwordm9pZCBMb2NhbFNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcjo6bGF5ZXJFcnJvckRpZENoYW5nZSgpCit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICAvLyBGSVhNRTogTG9nIGVycm9yLgorfQorCit2b2lkIExvY2Fs
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpyb290TGF5ZXJCb3VuZHNEaWRDaGFuZ2UoKQorewor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAg
cmV0dXJuOworICAgIG1fY2xpZW50LT5zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJCb3VuZHNEaWRD
aGFuZ2UoKnRoaXMpOworfQorCitQbGF0Zm9ybUxheWVyKiBMb2NhbFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcjo6ZGlzcGxheUxheWVyKCkKK3sKKyAgICByZXR1cm4gbV9zYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIuZ2V0KCk7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIExvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjpyb290TGF5ZXIoKQoreworICAgIHJldHVybiBtX3Jvb3RMYXllci5nZXQoKTsK
K30KKworYm9vbCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZGlkRmFpbCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBzdGF0dXNdID09IEFW
UXVldWVkU2FtcGxlQnVmZmVyUmVuZGVyaW5nU3RhdHVzRmFpbGVkOworfQorCit2b2lkIExvY2Fs
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjp1cGRhdGVEaXNwbGF5TW9kZShib29sIGhpZGVEaXNw
bGF5TGF5ZXIsIGJvb2wgaGlkZVJvb3RMYXllcikKK3sKKyAgICBpZiAobV9yb290TGF5ZXIuZ2V0
KCkuaGlkZGVuID09IGhpZGVSb290TGF5ZXIgJiYgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
Z2V0KCkuaGlkZGVuID09IGhpZGVEaXNwbGF5TGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAg
IHJ1bldpdGhvdXRBbmltYXRpb25zKFsmXSB7CisgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLmdldCgpLmhpZGRlbiA9IGhpZGVEaXNwbGF5TGF5ZXI7CisgICAgICAgIG1fcm9vdExh
eWVyLmdldCgpLmhpZGRlbiA9IGhpZGVSb290TGF5ZXI7CisgICAgfSk7Cit9CisKK0NHUmVjdCBM
b2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Ym91bmRzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9yb290TGF5ZXIuZ2V0KCkuYm91bmRzOworfQorCit2b2lkIExvY2FsU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyOjp1cGRhdGVBZmZpbmVUcmFuc2Zvcm0oQ0dBZmZpbmVUcmFuc2Zvcm0gdHJh
bnNmb3JtKQoreworICAgIHJ1bldpdGhvdXRBbmltYXRpb25zKFsmXSB7CisgICAgICAgIG1fc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLmFmZmluZVRyYW5zZm9ybSA9IHRyYW5zZm9ybTsK
KyAgICB9KTsKK30KKwordm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6dXBkYXRl
Qm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0IHZpZGVvQm91bmRzLCBDR1BvaW50IHBvc2l0aW9uKQor
eworICAgIHJ1bldpdGhvdXRBbmltYXRpb25zKFsmXSB7CisgICAgICAgIG1fc2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyLmdldCgpLmJvdW5kcyA9IHZpZGVvQm91bmRzOworICAgICAgICBtX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKS5wb3NpdGlvbiA9IHBvc2l0aW9uOworICAgIH0pOwor
fQorCit2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpmbHVzaCgpCit7CisgICAg
W21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGZsdXNoXTsKK30KKwordm9pZCBMb2NhbFNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcjo6Zmx1c2hBbmRSZW1vdmVJbWFnZSgpCit7CisgICAgW21fc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyIGZsdXNoQW5kUmVtb3ZlSW1hZ2VdOworfQorCit2b2lkIExv
Y2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxlKE1lZGlhU2FtcGxlJiBz
YW1wbGUpCit7CisgICAgaWYgKCFbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgaXNSZWFkeUZv
ck1vcmVNZWRpYURhdGFdKSB7CisgICAgICAgIGFkZFNhbXBsZVRvUGVuZGluZ1F1ZXVlKHNhbXBs
ZSk7CisgICAgICAgIHJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JWaWRlb0RhdGEoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ciBlbnF1ZXVlU2FtcGxlQnVmZmVyOnNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnNhbXBsZS5jbVNh
bXBsZUJ1ZmZlcl07Cit9CisKK3ZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnJl
bW92ZU9sZFNhbXBsZXNGcm9tUGVuZGluZ1F1ZXVlKCkKK3sKKyAgICBpZiAobV9wZW5kaW5nVmlk
ZW9TYW1wbGVRdWV1ZS5pc0VtcHR5KCkgfHwgIW1fY2xpZW50KQorICAgICAgICByZXR1cm47CisK
KyAgICBhdXRvIGRlY29kZVRpbWUgPSBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmZpcnN0KCkt
PmRlY29kZVRpbWUoKTsKKyAgICBpZiAoIWRlY29kZVRpbWUuaXNWYWxpZCgpIHx8IGRlY29kZVRp
bWUgPCBNZWRpYVRpbWU6Onplcm9UaW1lKCkpIHsKKyAgICAgICAgd2hpbGUgKG1fcGVuZGluZ1Zp
ZGVvU2FtcGxlUXVldWUuc2l6ZSgpID4gNSkKKyAgICAgICAgICAgIG1fcGVuZGluZ1ZpZGVvU2Ft
cGxlUXVldWUucmVtb3ZlRmlyc3QoKTsKKworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
TWVkaWFUaW1lIG5vdyA9IG1fY2xpZW50LT5zdHJlYW1UaW1lKCk7CisgICAgd2hpbGUgKCFtX3Bl
bmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAobV9wZW5kaW5n
VmlkZW9TYW1wbGVRdWV1ZS5maXJzdCgpLT5kZWNvZGVUaW1lKCkgPiBub3cpCisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5yZW1vdmVGaXJzdCgp
OworICAgIH0KK30KKwordm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6YWRkU2Ft
cGxlVG9QZW5kaW5nUXVldWUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKK3sKKyAgICByZW1vdmVPbGRT
YW1wbGVzRnJvbVBlbmRpbmdRdWV1ZSgpOworICAgIG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUu
YXBwZW5kKHNhbXBsZSk7Cit9CisKK3ZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6
OmNsZWFyRW5xdWV1ZWRTYW1wbGVzKCkKK3sKKyAgICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVl
LmNsZWFyKCk7Cit9CisKK3ZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnJlcXVl
c3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JWaWRlb0RhdGEoKQoreworICAgIGF1dG8gd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cigqdGhpcyk7CisgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
IHJlcXVlc3RNZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCkgdXNpbmdCbG9jazpeeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBzdG9wUmVxdWVzdGlu
Z01lZGlhRGF0YV07CisKKyAgICAgICAgd2hpbGUgKCFtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVl
LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgaWYgKCFbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKSB7CisgICAgICAgICAgICAgICAgcmVxdWVzdE5v
dGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgpOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCByZWVu
cXVldWUgaW4gY2xpZW50LgorICAgICAgICAgICAgYXV0byBzYW1wbGUgPSBtX3BlbmRpbmdWaWRl
b1NhbXBsZVF1ZXVlLnRha2VGaXJzdCgpOworICAgICAgICAgICAgZW5xdWV1ZVNhbXBsZShzYW1w
bGUuZ2V0KCkpOworICAgICAgICB9CisgICAgfV07Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQy5oCmluZGV4IGJjNWYzOTFiNjUyMGIwMzFiNmU2Yzg1NTVkYTljM2UyMjAz
OTQwOTEuLmY4ZDczOTE5ZmU0OGZjNmE4OWZhMjc1ZjE3YzUwM2RmY2ZlYTU1YjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMjYgKzIzLDE5IEBACiAgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLSNpZm5kZWYgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDX2gKLSNk
ZWZpbmUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDX2gKKyNwcmFnbWEgb25j
ZQogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKIAogI2lu
Y2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAj
aW5jbHVkZSAiTWVkaWFTdHJlYW1Qcml2YXRlLmgiCi0jaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NH
QWZmaW5lVHJhbnNmb3JtLmg+CisjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgi
CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+Ci0jaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+Ci0jaW5j
bHVkZSA8d3RmL01lZGlhVGltZS5oPgotI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKLU9CSkNf
Q0xBU1MgQVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyOwogT0JKQ19DTEFTUyBBVlNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcjsKLU9CSkNfQ0xBU1MgQVZTYW1wbGVCdWZmZXJSZW5kZXJTeW5jaHJv
bml6ZXI7Ci1PQkpDX0NMQVNTIEFWU3RyZWFtU2Vzc2lvbjsKLU9CSkNfQ0xBU1MgTlNOdW1iZXI7
CiBPQkpDX0NMQVNTIFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXI7CiAKIG5h
bWVzcGFjZSBQQUwgewpAQCAtNTgsNyArNTEsNyBAQCBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1l
ckNWOwogY2xhc3MgVmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQzsKIGNsYXNzIFZpZGVv
VHJhY2tQcml2YXRlTWVkaWFTdHJlYW07CiAKLWNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM+LCBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlLCBwcml2YXRlIE1lZGlhU3RyZWFtUHJpdmF0ZTo6T2JzZXJ2ZXIsIHByaXZhdGUgTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGU6Ok9ic2VydmVyCitjbGFzcyBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakMgZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNl
LCBwcml2YXRlIE1lZGlhU3RyZWFtUHJpdmF0ZTo6T2JzZXJ2ZXIsIHByaXZhdGUgTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGU6Ok9ic2VydmVyLCBwdWJsaWMgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
OjpDbGllbnQKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAsIHByaXZhdGUgTG9nZ2Vy
SGVscGVyCiAjZW5kaWYKQEAgLTgyLDEzICs3NSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuc3Vy
ZUxheWVycygpOwogICAgIHZvaWQgZGVzdHJveUxheWVycygpOwogCi0gICAgdm9pZCBsYXllclN0
YXR1c0RpZENoYW5nZShBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciopOwotICAgIHZvaWQgbGF5
ZXJFcnJvckRpZENoYW5nZShBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciopOwotICAgIHZvaWQg
YmFja2dyb3VuZExheWVyQm91bmRzQ2hhbmdlZCgpOwotCi0gICAgUGxhdGZvcm1MYXllciogZGlz
cGxheUxheWVyKCk7Ci0gICAgUGxhdGZvcm1MYXllciogYmFja2dyb3VuZExheWVyKCk7Ci0KICNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fbG9nZ2VyLmdldCgpOyB9CiAgICAgY29uc3QgY2hhciogbG9nQ2xh
c3NOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQyI7IH0KQEAgLTE0NCwxMCArMTMwLDYgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgZmx1c2hSZW5kZXJlcnMoKTsKIAotICAgIHVzaW5nIFBlbmRpbmdTYW1wbGVRdWV1ZSA9IERl
cXVlPFJlZjxNZWRpYVNhbXBsZT4+OwotICAgIHZvaWQgYWRkU2FtcGxlVG9QZW5kaW5nUXVldWUo
UGVuZGluZ1NhbXBsZVF1ZXVlJiwgTWVkaWFTYW1wbGUmKTsKLSAgICB2b2lkIHJlbW92ZU9sZFNh
bXBsZXNGcm9tUGVuZGluZ1F1ZXVlKFBlbmRpbmdTYW1wbGVRdWV1ZSYpOwotCiAgICAgTWVkaWFU
aW1lIGNhbGN1bGF0ZVRpbWVsaW5lT2Zmc2V0KGNvbnN0IE1lZGlhU2FtcGxlJiwgZG91YmxlKTsK
ICAgICAKICAgICB2b2lkIGVucXVldWVWaWRlb1NhbXBsZShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZSYsIE1lZGlhU2FtcGxlJik7CkBAIC0yMTksNyArMjAxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRWaWRlb0Z1
bGxzY3JlZW5GcmFtZShGbG9hdFJlY3QpIG92ZXJyaWRlOwogCi0gICAgTWVkaWFUaW1lIHN0cmVh
bVRpbWUoKSBjb25zdDsKKyAgICBNZWRpYVRpbWUgc3RyZWFtVGltZSgpIGNvbnN0IGZpbmFsOwog
CiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlciogYXVkaW9Tb3VyY2VQcm92aWRlcigpIGZpbmFsOwog
CkBAIC0yMjcsMTQgKzIwOSwxMSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBhcHBsaWNhdGlvbkRp
ZEJlY29tZUFjdGl2ZSgpIGZpbmFsOwogCi0gICAgYm9vbCBoaWRlQmFja2dyb3VuZExheWVyKCkg
Y29uc3QgeyByZXR1cm4gKCFtX2FjdGl2ZVZpZGVvVHJhY2sgfHwgbV93YWl0aW5nRm9yRmlyc3RJ
bWFnZSkgJiYgbV9kaXNwbGF5TW9kZSAhPSBQYWludEl0QmxhY2s7IH0KKyAgICBib29sIGhpZGVS
b290TGF5ZXIoKSBjb25zdCB7IHJldHVybiAoIW1fYWN0aXZlVmlkZW9UcmFjayB8fCBtX3dhaXRp
bmdGb3JGaXJzdEltYWdlKSAmJiBtX2Rpc3BsYXlNb2RlICE9IFBhaW50SXRCbGFjazsgfQogCiAg
ICAgTWVkaWFQbGF5ZXIqIG1fcGxheWVyIHsgbnVsbHB0ciB9OwogICAgIFJlZlB0cjxNZWRpYVN0
cmVhbVByaXZhdGU+IG1fbWVkaWFTdHJlYW1Qcml2YXRlOwogICAgIFJlZlB0cjxNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZT4gbV9hY3RpdmVWaWRlb1RyYWNrOwotICAgIFJldGFpblB0cjxXZWJBVlNh
bXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyPiBtX3N0YXR1c0NoYW5nZUxpc3RlbmVyOwot
ICAgIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI7Ci0gICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1fYmFja2dyb3VuZExh
eWVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQQUw6OkNsb2NrPiBtX2Nsb2NrOwogCiAgICAgTWVk
aWFUaW1lIG1fcGF1c2VkVGltZTsKQEAgLTI1MSw3ICsyMzAsNiBAQCBwcml2YXRlOgogCiAgICAg
SGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2E+
PiBtX2F1ZGlvVHJhY2tNYXA7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxWaWRlb1RyYWNr
UHJpdmF0ZU1lZGlhU3RyZWFtPj4gbV92aWRlb1RyYWNrTWFwOwotICAgIFBlbmRpbmdTYW1wbGVR
dWV1ZSBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlOwogCiAgICAgTWVkaWFQbGF5ZXI6Ok5ldHdv
cmtTdGF0ZSBtX25ldHdvcmtTdGF0ZSB7IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkVtcHR5
IH07CiAgICAgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlIHsgTWVkaWFQbGF5
ZXI6OlJlYWR5U3RhdGU6OkhhdmVOb3RoaW5nIH07CkBAIC0yNjEsOCArMjM5LDEzIEBAIHByaXZh
dGU6CiAgICAgUGxheWJhY2tTdGF0ZSBtX3BsYXliYWNrU3RhdGUgeyBQbGF5YmFja1N0YXRlOjpO
b25lIH07CiAgICAgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gbV92aWRlb1JvdGF0aW9uIHsg
TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUgfTsKICAgICBDR0FmZmluZVRyYW5zZm9y
bSBtX3ZpZGVvVHJhbnNmb3JtOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXI+IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDPiBtX3ZpZGVvRnVsbHNjcmVlbkxheWVy
TWFuYWdlcjsKIAorICAgIC8vIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Q2xpZW50CisgICAg
dm9pZCBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJTdGF0dXNEaWRDaGFuZ2UoU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyJikgZmluYWw7CisgICAgdm9pZCBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJC
b3VuZHNEaWRDaGFuZ2UoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyJikgZmluYWw7CisKICNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKICAg
ICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CkBAIC0yODMsNSArMjY2LDMgQEAgcHJpdmF0
ZToKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJ
T04pCi0KLSNlbmRpZiAvLyBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakNfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4IDZjNWY1MGI0ZGEwMGQyMTAyYmFkZTM3OTRm
OWRkZDBiZDQxOTI2NjMuLjRiMzE5NWJlN2I5ZDdkZjg2MDZmOTE3ZmNiMDFiNDE2YTNiYWQzNjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSwxOCArMzEsMTYgQEAKICNpbXBv
cnQgIkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW1Db2NvYS5oIgogI2ltcG9ydCAiR3JhcGhp
Y3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgIkxvY2FsU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmgiCiAjaW1wb3J0ICJNZWRpYVN0cmVhbVByaXZhdGUuaCIKICNp
bXBvcnQgIlBpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaCIKICNpbXBvcnQgIlZpZGVvRnVsbHNjcmVl
bkxheWVyTWFuYWdlck9iakMuaCIKICNpbXBvcnQgIlZpZGVvVHJhY2tQcml2YXRlTWVkaWFTdHJl
YW0uaCIKLSNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5o
PgotI2ltcG9ydCA8UXVhcnR6Q29yZS9DQUxheWVyLmg+Ci0jaW1wb3J0IDxRdWFydHpDb3JlL0NB
VHJhbnNhY3Rpb24uaD4KKyNpbXBvcnQgPENvcmVHcmFwaGljcy9DR0FmZmluZVRyYW5zZm9ybS5o
PgogI2ltcG9ydCA8b2JqY19ydW50aW1lLmg+CiAjaW1wb3J0IDxwYWwvYXZmb3VuZGF0aW9uL01l
ZGlhVGltZUFWRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvQVZGb3VuZGF0aW9u
U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3lzdGVtL0Nsb2NrLmg+Ci0jaW1wb3J0IDx3dGYvRnVuY3Rp
b24uaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KIApAQCAtNTAsMTI3ICs0OCw2IEBACiAjaW1wb3J0IDxwYWwvY2YvQ29yZU1lZGlh
U29mdExpbmsuaD4KICNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgog
Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotQGludGVyZmFjZSBXZWJBVlNhbXBsZUJ1ZmZl
clN0YXR1c0NoYW5nZUxpc3RlbmVyIDogTlNPYmplY3QgewotICAgIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQyogX3BhcmVudDsKLX0KLQotLSAoaWQpaW5pdFdpdGhQYXJlbnQ6
KE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyopY2FsbGJhY2s7Ci0tICh2b2lk
KWludmFsaWRhdGU7Ci0tICh2b2lkKWJlZ2luT2JzZXJ2aW5nTGF5ZXJzOwotLSAodm9pZClzdG9w
T2JzZXJ2aW5nTGF5ZXJzOwotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gV2ViQVZTYW1wbGVCdWZm
ZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcgotCi0tIChpZClpbml0V2l0aFBhcmVudDooTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKilwYXJlbnQKLXsKLSAgICBpZiAoIShzZWxmID0g
W3N1cGVyIGluaXRdKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIF9wYXJlbnQgPSBwYXJl
bnQ7Ci0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW3Nl
bGYgaW52YWxpZGF0ZV07Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWludmFs
aWRhdGUKLXsKLSAgICBbc2VsZiBzdG9wT2JzZXJ2aW5nTGF5ZXJzXTsKLSAgICBfcGFyZW50ID0g
bnVsbHB0cjsKLX0KLQotLSAodm9pZCliZWdpbk9ic2VydmluZ0xheWVycwotewotICAgIEFTU0VS
VChfcGFyZW50KTsKLSAgICBBU1NFUlQoX3BhcmVudC0+ZGlzcGxheUxheWVyKCkpOwotICAgIEFT
U0VSVChfcGFyZW50LT5iYWNrZ3JvdW5kTGF5ZXIoKSk7Ci0KLSAgICBbX3BhcmVudC0+ZGlzcGxh
eUxheWVyKCkgYWRkT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAic3RhdHVzIiBvcHRpb25zOk5T
S2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDpuaWxdOwotICAgIFtfcGFyZW50LT5k
aXNwbGF5TGF5ZXIoKSBhZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJlcnJvciIgb3B0aW9u
czpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6bmlsXTsKLSAgICBbX3BhcmVu
dC0+YmFja2dyb3VuZExheWVyKCkgYWRkT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAiYm91bmRz
IiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDpuaWxdOwotfQot
Ci0tICh2b2lkKXN0b3BPYnNlcnZpbmdMYXllcnMKLXsKLSAgICBpZiAoIV9wYXJlbnQpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGlmIChfcGFyZW50LT5kaXNwbGF5TGF5ZXIoKSkgewotICAgICAg
ICBbX3BhcmVudC0+ZGlzcGxheUxheWVyKCkgcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRo
OkAic3RhdHVzIl07Ci0gICAgICAgIFtfcGFyZW50LT5kaXNwbGF5TGF5ZXIoKSByZW1vdmVPYnNl
cnZlcjpzZWxmIGZvcktleVBhdGg6QCJlcnJvciJdOwotICAgIH0KLSAgICBpZiAoX3BhcmVudC0+
YmFja2dyb3VuZExheWVyKCkpCi0gICAgICAgIFtfcGFyZW50LT5iYWNrZ3JvdW5kTGF5ZXIoKSBy
ZW1vdmVPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJib3VuZHMiXTsKLX0KLQotLSAodm9pZClv
YnNlcnZlVmFsdWVGb3JLZXlQYXRoOihOU1N0cmluZyAqKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9i
amVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAqKWNoYW5nZSBjb250ZXh0Oih2b2lkICopY29udGV4
dAotewotICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKLSAgICBVTlVTRURfUEFSQU0oa2V5UGF0
aCk7Ci0gICAgQVNTRVJUKF9wYXJlbnQpOwotCi0gICAgaWYgKCFfcGFyZW50KQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpZiAoW29iamVjdCBpc0tpbmRPZkNsYXNzOlBBTDo6Z2V0QVZTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXJDbGFzcygpXSkgewotICAgICAgICBSZXRhaW5QdHI8QVZTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI+IGxheWVyID0gKEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyICop
b2JqZWN0OwotICAgICAgICBBU1NFUlQobGF5ZXIuZ2V0KCkgPT0gX3BhcmVudC0+ZGlzcGxheUxh
eWVyKCkpOwotCi0gICAgICAgIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJzdGF0dXMi
XSkgewotICAgICAgICAgICAgUmV0YWluUHRyPE5TTnVtYmVyPiBzdGF0dXMgPSBbY2hhbmdlIHZh
bHVlRm9yS2V5Ok5TS2V5VmFsdWVDaGFuZ2VOZXdLZXldOwotICAgICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1
c0NoYW5nZUxpc3RlbmVyPihzZWxmKSwgbGF5ZXIgPSBXVEZNb3ZlKGxheWVyKSwgc3RhdHVzID0g
V1RGTW92ZShzdGF0dXMpXSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFwcm90ZWN0ZWRTZWxmLT5f
cGFyZW50KQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICBw
cm90ZWN0ZWRTZWxmLT5fcGFyZW50LT5sYXllclN0YXR1c0RpZENoYW5nZShsYXllci5nZXQoKSk7
Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAg
ICAgIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJlcnJvciJdKSB7Ci0gICAgICAgICAg
ICBSZXRhaW5QdHI8TlNOdW1iZXI+IHN0YXR1cyA9IFtjaGFuZ2UgdmFsdWVGb3JLZXk6TlNLZXlW
YWx1ZUNoYW5nZU5ld0tleV07Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0
ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXI+
KHNlbGYpLCBsYXllciA9IFdURk1vdmUobGF5ZXIpLCBzdGF0dXMgPSBXVEZNb3ZlKHN0YXR1cyld
IHsKLSAgICAgICAgICAgICAgICBpZiAoIXByb3RlY3RlZFNlbGYtPl9wYXJlbnQpCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9w
YXJlbnQtPmxheWVyRXJyb3JEaWRDaGFuZ2UobGF5ZXIuZ2V0KCkpOwotICAgICAgICAgICAgfSk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoW1tjaGFu
Z2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1ZUNoYW5nZU5vdGlmaWNhdGlvbklzUHJpb3JLZXldIGJv
b2xWYWx1ZV0pCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICgoQ0FMYXllciAqKW9iamVjdCA9
PSBfcGFyZW50LT5iYWNrZ3JvdW5kTGF5ZXIoKSkgewotICAgICAgICBpZiAoW2tleVBhdGggaXNF
cXVhbFRvU3RyaW5nOkAiYm91bmRzIl0pIHsKLSAgICAgICAgICAgIGlmICghX3BhcmVudCkKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIGlmIChpc01haW5UaHJlYWQoKSkg
ewotICAgICAgICAgICAgICAgIF9wYXJlbnQtPmJhY2tncm91bmRMYXllckJvdW5kc0NoYW5nZWQo
KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQVZTYW1wbGVC
dWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcj4oc2VsZildIHsKLSAgICAgICAgICAgICAgICBpZiAo
IXByb3RlY3RlZFNlbGYtPl9wYXJlbnQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9wYXJlbnQtPmJhY2tncm91bmRMYXllckJv
dW5kc0NoYW5nZWQoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAgfQotCi19Ci1A
ZW5kCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBQQUw7CiAKQEAgLTE4
MSw3ICs1OCw2IEBAIHN0YXRpYyBjb25zdCBkb3VibGUgcmVuZGVyZXJMYXRlbmN5ID0gMC4wMjsK
IAogTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMoTWVkaWFQbGF5ZXIqIHBsYXllcikKICAgICA6IG1fcGxheWVy
KHBsYXllcikKLSAgICAsIG1fc3RhdHVzQ2hhbmdlTGlzdGVuZXIoYWRvcHROUyhbW1dlYkFWU2Ft
cGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoUGFyZW50OnRoaXNd
KSkKICAgICAsIG1fY2xvY2soUEFMOjpDbG9jazo6Y3JlYXRlKCkpCiAgICAgLCBtX3ZpZGVvRnVs
bHNjcmVlbkxheWVyTWFuYWdlcihtYWtlVW5pcXVlPFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdl
ck9iakM+KCkpCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0xOTYsOCArNzIsNiBAQCBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6On5NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakMoKQogewogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOwogCi0g
ICAgW21fc3RhdHVzQ2hhbmdlTGlzdGVuZXIgaW52YWxpZGF0ZV07Ci0KICAgICBmb3IgKGNvbnN0
IGF1dG8mIHRyYWNrIDogbV9hdWRpb1RyYWNrTWFwLnZhbHVlcygpKQogICAgICAgICB0cmFjay0+
cGF1c2UoKTsKIApAQCAtMjY3LDMzICsxNDEsNiBAQCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c3VwcG9ydHNUeXBlKGNvbgog
I3ByYWdtYSBtYXJrIC0KICNwcmFnbWEgbWFyayBBVlNhbXBsZUJ1ZmZlciBNZXRob2RzCiAKLXZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpyZW1vdmVPbGRTYW1wbGVz
RnJvbVBlbmRpbmdRdWV1ZShQZW5kaW5nU2FtcGxlUXVldWUmIHF1ZXVlKQotewotICAgIGlmIChx
dWV1ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gZGVjb2RlVGltZSA9
IHF1ZXVlLmZpcnN0KCktPmRlY29kZVRpbWUoKTsKLSAgICBpZiAoIWRlY29kZVRpbWUuaXNWYWxp
ZCgpIHx8IGRlY29kZVRpbWUgPCBNZWRpYVRpbWU6Onplcm9UaW1lKCkpIHsKLSAgICAgICAgd2hp
bGUgKHF1ZXVlLnNpemUoKSA+IDUpCi0gICAgICAgICAgICBxdWV1ZS5yZW1vdmVGaXJzdCgpOwot
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBNZWRpYVRpbWUgbm93ID0gc3RyZWFtVGlt
ZSgpOwotICAgIHdoaWxlICghcXVldWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChxdWV1ZS5m
aXJzdCgpLT5kZWNvZGVUaW1lKCkgPiBub3cpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
cXVldWUucmVtb3ZlRmlyc3QoKTsKLSAgICB9Ci19Ci0KLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjphZGRTYW1wbGVUb1BlbmRpbmdRdWV1ZShQZW5kaW5nU2FtcGxl
UXVldWUmIHF1ZXVlLCBNZWRpYVNhbXBsZSYgc2FtcGxlKQotewotICAgIHJlbW92ZU9sZFNhbXBs
ZXNGcm9tUGVuZGluZ1F1ZXVlKHF1ZXVlKTsKLSAgICBxdWV1ZS5hcHBlbmQoc2FtcGxlKTsKLX0K
LQogTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y2FsY3Vs
YXRlVGltZWxpbmVPZmZzZXQoY29uc3QgTWVkaWFTYW1wbGUmIHNhbXBsZSwgZG91YmxlIGxhdGVu
Y3kpCiB7CiAgICAgTWVkaWFUaW1lIHNhbXBsZVRpbWUgPSBzYW1wbGUub3V0cHV0UHJlc2VudGF0
aW9uVGltZSgpOwpAQCAtMzI4LDM3ICsxNzUsMTkgQEAgQ0dBZmZpbmVUcmFuc2Zvcm0gTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp2aWRlb1RyYW5zZm9ybWF0aW9uTWF0cmkK
ICAgICByZXR1cm4gbV92aWRlb1RyYW5zZm9ybTsKIH0KIAotc3RhdGljIHZvaWQgcnVuV2l0aG91
dEFuaW1hdGlvbnMoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiBmdW5jdGlvbikKLXsKLSAg
ICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07Ci0gICAgW0NBVHJhbnNhY3Rpb24gc2V0QW5pbWF0aW9u
RHVyYXRpb246MF07Ci0gICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsK
LSAgICBmdW5jdGlvbigpOwotICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07Ci19Ci0KIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlQ29ycmVjdGVkVmlk
ZW9TYW1wbGUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKIHsKICAgICBpZiAobV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIpIHsKLSAgICAgICAgaWYgKFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBz
dGF0dXNdID09IEFWUXVldWVkU2FtcGxlQnVmZmVyUmVuZGVyaW5nU3RhdHVzRmFpbGVkKQorICAg
ICAgICBpZiAobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPmRpZEZhaWwoKSkKICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc2FtcGxlLnZpZGVvUm90YXRpb24oKSAhPSBtX3Zp
ZGVvUm90YXRpb24gfHwgc2FtcGxlLnZpZGVvTWlycm9yZWQoKSAhPSBtX3ZpZGVvTWlycm9yZWQp
IHsKICAgICAgICAgICAgIG1fdmlkZW9Sb3RhdGlvbiA9IHNhbXBsZS52aWRlb1JvdGF0aW9uKCk7
CiAgICAgICAgICAgICBtX3ZpZGVvTWlycm9yZWQgPSBzYW1wbGUudmlkZW9NaXJyb3JlZCgpOwot
ICAgICAgICAgICAgcnVuV2l0aG91dEFuaW1hdGlvbnMoW3RoaXMsICZzYW1wbGVdIHsKLSAgICAg
ICAgICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKS5hZmZpbmVUcmFuc2Zv
cm0gPSB2aWRlb1RyYW5zZm9ybWF0aW9uTWF0cml4KHNhbXBsZSwgdHJ1ZSk7Ci0gICAgICAgICAg
ICAgICAgdXBkYXRlRGlzcGxheUxheWVyKCk7Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT51cGRhdGVBZmZpbmVUcmFuc2Zvcm0odmlkZW9U
cmFuc2Zvcm1hdGlvbk1hdHJpeChzYW1wbGUsIHRydWUpKTsKKyAgICAgICAgICAgIHVwZGF0ZURp
c3BsYXlMYXllcigpOwogICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFbbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKSB7Ci0gICAgICAgICAgICBhZGRT
YW1wbGVUb1BlbmRpbmdRdWV1ZShtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLCBzYW1wbGUpOwot
ICAgICAgICAgICAgcmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgW21fc2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyIGVucXVldWVTYW1wbGVCdWZmZXI6c2FtcGxlLnBsYXRmb3JtU2FtcGxlKCku
c2FtcGxlLmNtU2FtcGxlQnVmZmVyXTsKKyAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXItPmVucXVldWVTYW1wbGUoc2FtcGxlKTsKICAgICB9CiAKICAgICBpZiAoIW1faGFzRXZlckVu
cXVldWVkVmlkZW9GcmFtZSkgewpAQCAtNDEzLDYxICsyNDIsMjYgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVucXVldWVWaWRlb1NhbXBsZShNZWRpYVN0cmVh
bVRyYWNrUHIKICAgICB9CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjpyZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRhKCkKLXsKLSAg
ICBhdXRvIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpOwotICAgIFttX3NhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllciByZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1ZTpkaXNwYXRjaF9n
ZXRfbWFpbl9xdWV1ZSgpIHVzaW5nQmxvY2s6XiB7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
IHN0b3BSZXF1ZXN0aW5nTWVkaWFEYXRhXTsKLQotICAgICAgICBpZiAoIW1fYWN0aXZlVmlkZW9U
cmFjaykgewotICAgICAgICAgICAgbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5jbGVhcigpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgd2hpbGUgKCFtX3BlbmRp
bmdWaWRlb1NhbXBsZVF1ZXVlLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgaWYgKCFbbV9zYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKSB7Ci0gICAgICAg
ICAgICAgICAgcmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgpOwotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYXV0byBz
YW1wbGUgPSBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLnRha2VGaXJzdCgpOwotICAgICAgICAg
ICAgZW5xdWV1ZVZpZGVvU2FtcGxlKCptX2FjdGl2ZVZpZGVvVHJhY2suZ2V0KCksIHNhbXBsZS5n
ZXQoKSk7Ci0gICAgICAgIH0KLSAgICB9XTsKLX0KLQogQXVkaW9Tb3VyY2VQcm92aWRlciogTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjphdWRpb1NvdXJjZVByb3ZpZGVyKCkK
IHsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmV0dXJuIGEgbWl4IG9mIGFsbCBhdWRpbyB0
cmFja3MgLSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwMzA1CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjpsYXllckVycm9yRGlkQ2hhbmdlKEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
KiBsYXllcikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJTdGF0dXNEaWRDaGFuZ2UoU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyJiBsYXllcikKIHsKKyAgICBBU1NFUlQoJmxheWVyID09IG1fc2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLmdldCgpKTsKICAgICBVTlVTRURfUEFSQU0obGF5ZXIpOwotICAgIEVSUk9SX0xPRyhM
T0dJREVOVElGSUVSLCAiZXJyb3IgPSAiLCBbW2xheWVyLmVycm9yIGxvY2FsaXplZERlc2NyaXB0
aW9uXSBVVEY4U3RyaW5nXSk7Ci19Ci0KLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjpsYXllclN0YXR1c0RpZENoYW5nZShBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ciogbGF5ZXIpCi17Ci0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAic3RhdHVzID0gIiwg
KGludClsYXllci5zdGF0dXMpOwotCi0gICAgaWYgKGxheWVyLnN0YXR1cyAhPSBBVlF1ZXVlZFNh
bXBsZUJ1ZmZlclJlbmRlcmluZ1N0YXR1c1JlbmRlcmluZykKLSAgICAgICAgcmV0dXJuOwotICAg
IGlmICghbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgfHwgIW1fYWN0aXZlVmlkZW9UcmFjayB8
fCBsYXllciAhPSBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKKyAgICBpZiAoIW1fYWN0aXZl
VmlkZW9UcmFjaykKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byB0cmFjayA9IG1fdmlkZW9U
cmFja01hcC5nZXQobV9hY3RpdmVWaWRlb1RyYWNrLT5pZCgpKTsKLSAgICBpZiAodHJhY2spCisg
ICAgaWYgKGF1dG8gdHJhY2sgPSBtX3ZpZGVvVHJhY2tNYXAuZ2V0KG1fYWN0aXZlVmlkZW9UcmFj
ay0+aWQoKSkpCiAgICAgICAgIHRyYWNrLT5zZXRUaW1lbGluZU9mZnNldChNZWRpYVRpbWU6Omlu
dmFsaWRUaW1lKCkpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQzo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQogewotICAgIGlmIChtX3NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllciAmJiBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgc3RhdHVzXSA9
PSBBVlF1ZXVlZFNhbXBsZUJ1ZmZlclJlbmRlcmluZ1N0YXR1c0ZhaWxlZCkgeworICAgIGlmICht
X3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciAmJiBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+
ZGlkRmFpbCgpKSB7CiAgICAgICAgIGZsdXNoUmVuZGVyZXJzKCk7CiAgICAgICAgIGlmIChtX2lt
YWdlUGFpbnRlci5tZWRpYVNhbXBsZSkKICAgICAgICAgICAgIGVucXVldWVDb3JyZWN0ZWRWaWRl
b1NhbXBsZSgqbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpOwpAQCAtNDc4LDcgKzI3Miw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjphcHBsaWNhdGlvbkRp
ZEJlY29tZUFjdGl2ZSgpCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6Zmx1c2hSZW5kZXJlcnMoKQogewogICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cikKLSAgICAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGZsdXNoXTsKKyAgICAgICAg
bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPmZsdXNoKCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnN1cmVMYXllcnMoKQpAQCAtNDg5LDUxICsy
ODMsMjQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVuc3Vy
ZUxheWVycygpCiAgICAgaWYgKCFtX21lZGlhU3RyZWFtUHJpdmF0ZSB8fCAhbV9tZWRpYVN0cmVh
bVByaXZhdGUtPmFjdGl2ZVZpZGVvVHJhY2soKSB8fCAhbV9tZWRpYVN0cmVhbVByaXZhdGUtPmFj
dGl2ZVZpZGVvVHJhY2soKS0+ZW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Nh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVlNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllckluc3RhbmNlKCkgaW5pdF0pOworICAgIGF1dG8gc2l6ZSA9IHNuYXBwZWRJ
bnRSZWN0KG1fcGxheWVyLT5wbGF5ZXJDb250ZW50Qm94UmVjdCgpKS5zaXplKCk7CisgICAgbV9z
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgPSBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6
Y3JlYXRlKCp0aGlzLCBoaWRlUm9vdExheWVyKCksIHNpemUpOworCiAgICAgaWYgKCFtX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcikgewotICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwg
IitbQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgYWxsb2NdIGZhaWxlZC4iKTsKKyAgICAgICAg
RVJST1JfTE9HKExPR0lERU5USUZJRVIsICJDcmVhdGluZyB0aGUgU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyIGZhaWxlZC4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fc2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmdldCgpLmJhY2tncm91bmRDb2xvciA9IGNhY2hlZENHQ29sb3Io
Q29sb3I6OmJsYWNrKTsKLSAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKS5hbmNo
b3JQb2ludCA9IHsgLjUsIC41IH07Ci0gICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0
KCkubmVlZHNEaXNwbGF5T25Cb3VuZHNDaGFuZ2UgPSBZRVM7Ci0gICAgbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIuZ2V0KCkudmlkZW9HcmF2aXR5ID0gQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6
ZUFzcGVjdEZpbGw7Ci0KLSAgICBtX2JhY2tncm91bmRMYXllciA9IGFkb3B0TlMoW1tDQUxheWVy
IGFsbG9jXSBpbml0XSk7Ci0gICAgbV9iYWNrZ3JvdW5kTGF5ZXIuZ2V0KCkuaGlkZGVuID0gaGlk
ZUJhY2tncm91bmRMYXllcigpOwotCi0gICAgbV9iYWNrZ3JvdW5kTGF5ZXIuZ2V0KCkuYmFja2dy
b3VuZENvbG9yID0gY2FjaGVkQ0dDb2xvcihDb2xvcjo6YmxhY2spOwotICAgIG1fYmFja2dyb3Vu
ZExheWVyLmdldCgpLm5lZWRzRGlzcGxheU9uQm91bmRzQ2hhbmdlID0gWUVTOwotCi0gICAgYXV0
byBzaXplID0gc25hcHBlZEludFJlY3QobV9wbGF5ZXItPnBsYXllckNvbnRlbnRCb3hSZWN0KCkp
LnNpemUoKTsKLSAgICBtX2JhY2tncm91bmRMYXllci5nZXQoKS5ib3VuZHMgPSBDR1JlY3RNYWtl
KDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7Ci0KLSAgICBbbV9zdGF0dXNDaGFu
Z2VMaXN0ZW5lciBiZWdpbk9ic2VydmluZ0xheWVyc107Ci0KLSAgICBbbV9iYWNrZ3JvdW5kTGF5
ZXIgYWRkU3VibGF5ZXI6bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCldOwotCi0jaWZu
ZGVmIE5ERUJVRwotICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBzZXROYW1lOkAiTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyIl07Ci0gICAgW21fYmFja2dyb3VuZExheWVyIHNldE5hbWU6QCJNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgcGFyZW50Il07
Ci0jZW5kaWYKLQogICAgIHVwZGF0ZVJlbmRlcmluZ01vZGUoKTsKICAgICB1cGRhdGVEaXNwbGF5
TGF5ZXIoKTsKIAotICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0xh
eWVyKG1fYmFja2dyb3VuZExheWVyLmdldCgpLCBzaXplKTsKKyAgICBtX3ZpZGVvRnVsbHNjcmVl
bkxheWVyTWFuYWdlci0+c2V0VmlkZW9MYXllcihtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+
cm9vdExheWVyKCksIHNpemUpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6ZGVzdHJveUxheWVycygpCiB7Ci0gICAgW21fc3RhdHVzQ2hhbmdlTGlzdGVu
ZXIgc3RvcE9ic2VydmluZ0xheWVyc107Ci0gICAgaWYgKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyKSB7Ci0gICAgICAgIG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUuY2xlYXIoKTsKLSAgICAg
ICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHN0b3BSZXF1ZXN0aW5nTWVkaWFEYXRhXTsK
LSAgICAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGZsdXNoXTsKKyAgICBpZiAobV9z
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpCiAgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyID0gbnVsbHB0cjsKLSAgICB9Ci0gICAgbV9iYWNrZ3JvdW5kTGF5ZXIgPSBudWxscHRyOwog
CiAgICAgdXBkYXRlUmVuZGVyaW5nTW9kZSgpOwogICAgIApAQCAtNjAwLDIyICszNjcsMTIgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnByZXBhcmVUb1BsYXko
KQogCiBQbGF0Zm9ybUxheWVyKiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewotICAgIGlmICghbV9iYWNrZ3JvdW5kTGF5ZXIgfHwg
bV9kaXNwbGF5TW9kZSA9PSBOb25lKQorICAgIGlmICghbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIgfHwgIW1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5yb290TGF5ZXIoKSB8fCBtX2Rpc3Bs
YXlNb2RlID09IE5vbmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIG1f
dmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT52aWRlb0lubGluZUxheWVyKCk7CiB9CiAKLVBs
YXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGlzcGxh
eUxheWVyKCkKLXsKLSAgICByZXR1cm4gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCk7
Ci19Ci0KLVBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6YmFja2dyb3VuZExheWVyKCkKLXsKLSAgICByZXR1cm4gbV9iYWNrZ3JvdW5kTGF5ZXIuZ2V0
KCk7Ci19Ci0KIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6RGlzcGxheU1v
ZGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjdXJyZW50RGlzcGxheU1v
ZGUoKSBjb25zdAogewogICAgIGlmIChtX2ludHJpbnNpY1NpemUuaXNFbXB0eSgpIHx8ICFtZXRh
RGF0YUF2YWlsYWJsZSgpIHx8ICFtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKQEAgLTY1MSwx
OCArNDA4LDggQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVw
ZGF0ZURpc3BsYXlNb2RlKCkKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAidXBkYXRlZCB0
byAiLCBzdGF0aWNfY2FzdDxpbnQ+KGRpc3BsYXlNb2RlKSk7CiAgICAgbV9kaXNwbGF5TW9kZSA9
IGRpc3BsYXlNb2RlOwogCi0gICAgYXV0byBoaWRkZW4gPSBtX2Rpc3BsYXlNb2RlIDwgUGF1c2Vk
SW1hZ2U7Ci0gICAgaWYgKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyICYmIG1fc2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLmdldCgpLmhpZGRlbiAhPSBoaWRkZW4pIHsKLSAgICAgICAgcnVuV2l0
aG91dEFuaW1hdGlvbnMoW3RoaXMsIGhpZGRlbl0gewotICAgICAgICAgICAgbV9zYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIuZ2V0KCkuaGlkZGVuID0gaGlkZGVuOwotICAgICAgICB9KTsKLSAgICB9
Ci0gICAgaGlkZGVuID0gaGlkZUJhY2tncm91bmRMYXllcigpOwotICAgIGlmIChtX2JhY2tncm91
bmRMYXllciAmJiBtX2JhY2tncm91bmRMYXllci5nZXQoKS5oaWRkZW4gIT0gaGlkZGVuKSB7Ci0g
ICAgICAgIHJ1bldpdGhvdXRBbmltYXRpb25zKFt0aGlzLCBoaWRkZW5dIHsKLSAgICAgICAgICAg
IG1fYmFja2dyb3VuZExheWVyLmdldCgpLmhpZGRlbiA9IGhpZGRlbjsKLSAgICAgICAgfSk7Ci0g
ICAgfQorICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKKyAgICAgICAgbV9zYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXItPnVwZGF0ZURpc3BsYXlNb2RlKG1fZGlzcGxheU1vZGUgPCBQ
YXVzZWRJbWFnZSwgaGlkZVJvb3RMYXllcigpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAt
MTAyMSw4ICs3NjgsMTEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OmNoZWNrU2VsZWN0ZWRWaWRlb1RyYWNrKCkKICAgICAgICAgICAgICAgICBtX3dhaXRpbmdG
b3JGaXJzdEltYWdlID0gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBlbnN1cmVMYXllcnMoKTsK
LSAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCkuaGlkZGVuID0gaGlkZVZp
ZGVvTGF5ZXIgfHwgbV9kaXNwbGF5TW9kZSA8IFBhdXNlZEltYWdlOwotICAgICAgICBtX2JhY2tn
cm91bmRMYXllci5nZXQoKS5oaWRkZW4gPSBoaWRlQmFja2dyb3VuZExheWVyKCk7CisgICAgICAg
IGlmIChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikgeworICAgICAgICAgICAgaWYgKCFtX2Fj
dGl2ZVZpZGVvVHJhY2spCisgICAgICAgICAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXItPmNsZWFyRW5xdWV1ZWRTYW1wbGVzKCk7CisgICAgICAgICAgICBtX3NhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci0+dXBkYXRlRGlzcGxheU1vZGUoaGlkZVZpZGVvTGF5ZXIgfHwgbV9kaXNwbGF5
TW9kZSA8IFBhdXNlZEltYWdlLCBoaWRlUm9vdExheWVyKCkpOworICAgICAgICB9CiAKICAgICAg
ICAgbV9wZW5kaW5nU2VsZWN0ZWRUcmFja0NoZWNrID0gZmFsc2U7CiAgICAgICAgIHVwZGF0ZURp
c3BsYXlNb2RlKCk7CkBAIC0xMTcxLDggKzkyMSw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjpzZXROZXR3b3JrU3RhdGUoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtT
CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRCdWZmZXJp
bmdQb2xpY3koTWVkaWFQbGF5ZXI6OkJ1ZmZlcmluZ1BvbGljeSBwb2xpY3kpCiB7Ci0gICAgaWYg
KHBvbGljeSAhPSBNZWRpYVBsYXllcjo6QnVmZmVyaW5nUG9saWN5OjpEZWZhdWx0KQotICAgICAg
ICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgZmx1c2hBbmRSZW1vdmVJbWFnZV07CisgICAg
aWYgKHBvbGljeSAhPSBNZWRpYVBsYXllcjo6QnVmZmVyaW5nUG9saWN5OjpEZWZhdWx0ICYmIG1f
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQorICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci0+Zmx1c2hBbmRSZW1vdmVJbWFnZSgpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2NoZWR1bGVEZWZlcnJlZFRhc2soRnVuY3Rpb248dm9pZCAo
KT4mJiBmdW5jdGlvbikKQEAgLTExOTUsMjMgKzk0NSwyMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Q3VycmVudEZyYW1lUGFpbnRlcjo6cmVzZXQoKQogCiB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlRGlzcGxheUxh
eWVyKCkKIHsKLSAgICBpZiAoIW1fYmFja2dyb3VuZExheWVyIHx8ICFtX3NhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcikKKyAgICBpZiAoIW1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBhdXRvIGJhY2tncm91bmRCb3VuZHMgPSBtX2JhY2tncm91bmRMYXll
ci5nZXQoKS5ib3VuZHM7Ci0gICAgYXV0byB2aWRlb0JvdW5kcyA9IGJhY2tncm91bmRCb3VuZHM7
CisgICAgYXV0byBib3VuZHMgPSBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+Ym91bmRzKCk7
CisgICAgYXV0byB2aWRlb0JvdW5kcyA9IGJvdW5kczsKICAgICBpZiAobV92aWRlb1JvdGF0aW9u
ID09IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpSaWdodCB8fCBtX3ZpZGVvUm90YXRpb24g
PT0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OkxlZnQpCiAgICAgICAgIHN0ZDo6c3dhcCh2
aWRlb0JvdW5kcy5zaXplLndpZHRoLCB2aWRlb0JvdW5kcy5zaXplLmhlaWdodCk7CiAKLSAgICBt
X3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKS5ib3VuZHMgPSB2aWRlb0JvdW5kczsKLSAg
ICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKS5wb3NpdGlvbiA9IHsgYmFja2dyb3Vu
ZEJvdW5kcy5zaXplLndpZHRoIC8gMiwgYmFja2dyb3VuZEJvdW5kcy5zaXplLmhlaWdodCAvIDJ9
OworICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT51cGRhdGVCb3VuZHNBbmRQb3NpdGlv
bih2aWRlb0JvdW5kcywgeyBib3VuZHMuc2l6ZS53aWR0aCAvIDIsIGJvdW5kcy5zaXplLmhlaWdo
dCAvIDJ9KTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OmJhY2tncm91bmRMYXllckJvdW5kc0NoYW5nZWQoKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakM6OnNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckJvdW5kc0RpZENoYW5n
ZShTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXImKQogewotICAgIHJ1bldpdGhvdXRBbmltYXRpb25z
KFt0aGlzXSB7Ci0gICAgICAgIHVwZGF0ZURpc3BsYXlMYXllcigpOwotICAgIH0pOworICAgIHVw
ZGF0ZURpc3BsYXlMYXllcigpOwogfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387518</attachid>
            <date>2020-01-13 05:48:11 -0800</date>
            <delta_ts>2020-01-15 05:03:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206066-20200113144808.patch</filename>
            <type>text/plain</type>
            <size>53413</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWM5ODY0NjI5M2YwNGJl
MjRiYWNiNmJiYWE2ZmQxY2Y4ZGE2NmE3ZC4uYzhiOThkZGM1NTA5YWRjNTEyODc3ZDc4MDhiNDhj
MjJkNTM3NDA5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDcxIEBACiAyMDIwLTAxLTEyICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBJbnRyb2R1Y2UgYW4gYWJz
dHJhY3QgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYwNjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHVzZSBvZiBkaXNwbGF5IGxheWVycyBpbiBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMgdG8gYSBuZXcgY2xhc3MgTG9jYWxTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIKKyAgICAgICAgdGhhdCBpbXBsZW1lbnRzIGFuIGludGVyZmFj
ZSBuYW1lZCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuCisgICAgICAgIEEgZnV0dXJlIHBhdGNo
IHdpbGwgaW1wbGVtZW50IHRoaXMgaW50ZXJmYWNlIGJ5IElQQ2luZyB0byBHUFVQcm9jZXNzLgor
ICAgICAgICBXZSBtb3ZlIGJvdGggbGF5ZXJzIGFuZCBoYW5kbGluZyBvZiB0aGUgc2FtcGxlIHF1
ZXVlIHRvIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLgorCisgICAgICAgIENvbnRyYXJ5
IHRvIHByZXZpb3VzbHksIHdlIGRvIG5vdCBjYWxsIGFnYWluIGVucXVldWVWaWRlb1NhbXBsZSBp
biBjYXNlIHdlIGVucXVldWVkIGEgc2FtcGxlIGZvciBsYXRlciB1c2UgaW4gdGhlIGRpc3BsYXkg
bGF5ZXIuCisgICAgICAgIEluc3RlYWQsIHdlIGRpcmVjdGx5IHJlbmRlciBpdCwgd2hpY2ggc2hv
dWxkIG5vdCBjaGFuZ2UgbXVjaCBzaW5jZSB0aGlzIGlzIGEgcmVhbHRpbWUgdHJhY2sgYW5kIGlu
IHRoZSBmdXR1cmUgdGhlIGJ1ZmZlciB3aWxsIGJlIGluIEdQVVByb2Nlc3MgYW55d2F5LgorCisg
ICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbTogQWRkZWQuCisg
ICAgICAgICgtW1dlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgaW5pdFdpdGhQ
YXJlbnQ6XSk6CisgICAgICAgICgtW1dlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVu
ZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxp
c3RlbmVyIGludmFsaWRhdGVdKToKKyAgICAgICAgKC1bV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXND
aGFuZ2VMaXN0ZW5lciBiZWdpbk9ic2VydmluZ0xheWVyc10pOgorICAgICAgICAoLVtXZWJBVlNh
bXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyIHN0b3BPYnNlcnZpbmdMYXllcnNdKToKKyAg
ICAgICAgKC1bV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lciBvYnNlcnZlVmFs
dWVGb3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOgorICAgICAgICAoV2ViQ29y
ZTo6cnVuV2l0aG91dEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI6OkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjp+TG9jYWxTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OmxheWVyU3RhdHVzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Okxv
Y2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpsYXllckVycm9yRGlkQ2hhbmdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpyb290TGF5ZXJCb3Vu
ZHNEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXI6OmRpc3BsYXlMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcjo6cm9vdExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyOjpkaWRGYWlsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxv
Y2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjp1cGRhdGVEaXNwbGF5TW9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Ym91bmRzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjp1cGRhdGVB
ZmZpbmVUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXI6OnVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okxv
Y2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnN1cmVMYXllcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmZsdXNoKToKKyAgICAgICAgKFdl
YkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpmbHVzaEFuZFJlbW92ZUltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1
ZXVlU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOjpyZW1vdmVPbGRTYW1wbGVzRnJvbVBlbmRpbmdRdWV1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6YWRkU2FtcGxlVG9QZW5kaW5nUXVldWUp
OgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNsZWFy
RW5xdWV1ZWRTYW1wbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjpyZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRhKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6On5NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlQ29ycmVjdGVkVmlkZW9TYW1wbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXJTdGF0dXNEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjphcHBsaWNhdGlvbkRpZEJlY29t
ZUFjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OmZsdXNoUmVuZGVyZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5zdXJlTGF5ZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGVzdHJveUxheWVycyk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpkaXNwbGF5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVEaXNwbGF5TW9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OmNoZWNrU2VsZWN0ZWRWaWRlb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2V0QnVmZmVyaW5nUG9saWN5KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlRGlz
cGxheUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyQm91bmRzRGlkQ2hhbmdlKToKKwor
MjAyMC0wMS0xMCAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKICAgICAgICAg
Q2xlYW4tdXAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgvLm1tCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYwNjAKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZTQ1M2Q4OTA5N2U2ODZiMmMzMzUyYmFkNjZlZTcxMjM0
N2MxNjZiNS4uNjViYTU5Nzg1OWExMDhiODAxMWZiMWIzMzdiY2VlMmYyNDI3OTI1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yNTMsNiArMjUzLDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbSBAbm8tdW5p
ZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9i
akMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLm1t
IEBuby11bmlmeQorcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLm1tIEBuby11bmlmeQog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBAbm8tdW5pZnkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA5YmI4NDMxNDUzOWFkMDk1MTQ2MzFiMjEzMDYxNmFmNjBiYTlhMWMzLi4zMTQ4ZDkzOTk2
ZjYwZDRiODNhZDRmMmY5OTZlNTVlNGQ5YzRlOTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDY4LDYgKzEwNjgsNyBAQAog
CQk0MTNDMkMzNDFCQzI5QThGMDA3NTIwNEMgLyogSlNET01Db25zdHJ1Y3Rvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQzJDMzMxQkMyOUE3QjAw
NzUyMDRDIC8qIEpTRE9NQ29uc3RydWN0b3IuaCAqLzsgfTsKIAkJNDEzQ0NENEEyMERFMDM0RjAw
NjVBMjFBIC8qIE1vY2tNZWRpYURldmljZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDEzQ0NENDgyMERFMDEzQzAwNjVBMjFBIC8qIE1vY2tNZWRpYURl
dmljZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQxM0UwMDc5MURCMEU0RjIwMDIzNDFEMiAvKiBNZW1vcnlSZWxlYXNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNFMDA3ODFEQjBFNERFMDAyMzQx
RDIgLyogTWVtb3J5UmVsZWFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTQxNDU5OEMyMjNDOEQxNzcwMDJCOUNDOCAvKiBMb2NhbFNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxNDU5OEMxMjNDOEFENzkwMDJCOUNDOCAvKiBMb2NhbFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5tbSAqLzsgfTsKIAkJNDE0QjgyMDUxRDZERjBFNTAwNzdFQkUzIC8qIFN0cnVj
dHVyZWRDbG9uZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDE0QjgyMDMxRDZERjBEOTAwNzdFQkUzIC8qIFN0cnVjdHVyZWRDbG9uZS5oICovOyB9Owog
CQk0MTRERURFNzFGOUZFOTFFMDA0N0M0MEQgLyogRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE0REVERTUxRjlG
RTkxNTAwNDdDNDBEIC8qIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTUwNzE1ODE2ODUwNjczMDBDM0M3
QjMgLyogU2VsZWN0b3JGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxNTA3MTU2MTY4NTA2NzMwMEMzQzdCMyAvKiBTZWxlY3RvckZpbHRlci5o
ICovOyB9OwpAQCAtNzM0OCw2ICs3MzQ5LDkgQEAKIAkJNDEzRTAwNzgxREIwRTRERTAwMjM0MUQy
IC8qIE1lbW9yeVJlbGVhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVt
b3J5UmVsZWFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNFMDA3QjFEQjBF
NzA3MDAyMzQxRDIgLyogTWVtb3J5UmVsZWFzZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gTWVtb3J5UmVsZWFzZUNvY29hLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTNGQzRDRDFGRDFERDhDMDA1NDFDNEIgLyogU2VydmljZVdvcmtl
ckNsaWVudFF1ZXJ5T3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
ZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQxNDU5OEJFMjNDOEFBQjgwMDJCOUNDOCAvKiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDU5OEMwMjNDOEFENzgw
MDJCOUNDOCAvKiBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQ1OThDMTIzQzhBRDc5MDAyQjlDQzggLyogTG9j
YWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE0N0UyQjIxQzg4MzM3RjAwQTdFNzE1IC8qIEZldGNoQm9k
eU93bmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZldGNoQm9keU93bmVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNDdFMkIzMUM4OTkxMjYwMEE3RTcx
NSAvKiBGZXRjaEJvZHlPd25lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBGZXRjaEJvZHlPd25lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
NDdFMkI0MUM4OTkxMjYwMEE3RTcxNSAvKiBGZXRjaExvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGZXRjaExvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNjMxOSw2ICsxNjMyMyw3IEBACiAJCQkJMDc2RjBEMEExMkI4MTkyNzAw
QzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oICovLAogCQkJCUNEQkVB
RUFCMTlEOTJCNkMwMEJFQkE4OCAvKiBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5oICovLAog
CQkJCUNEQkVBRUFBMTlEOTJCNkMwMEJFQkE4OCAvKiBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2Jq
Qy5tbSAqLywKKwkJCQk0MTQ1OThCRTIzQzhBQUI4MDAyQjlDQzggLyogU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmggKi8sCiAJCQkJQ0QzMzZGNjMxN0ZBMEE0RDAwREREQ0QwIC8qIFZpZGVvVHJh
Y2tQcml2YXRlQVZGLmggKi8sCiAJCQkJMDcwOUQ3OTAxQUU1NTU3RTAwNEU0MkY4IC8qIFdlYk1l
ZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwICovLAogCQkJCTA3MDlENzkxMUFFNTU1N0UwMDRFNDJG
OCAvKiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmggKi8sCkBAIC0yNjc0Miw2ICsyNjc0Nyw4
IEBACiAJCQkJMDdBQTZCNkExNjZEMDE5NTAwRDQ1NjcxIC8qIEluYmFuZFRleHRUcmFja1ByaXZh
dGVBVkZPYmpDLm1tICovLAogCQkJCTA3MzY3REREMTcyQ0E2N0YwMEQ4NjFCOSAvKiBJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5oICovLAogCQkJCTA3MzY3RERFMTcyQ0E2N0Yw
MEQ4NjFCOSAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5tbSAqLywKKwkJ
CQk0MTQ1OThDMDIzQzhBRDc4MDAyQjlDQzggLyogTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIuaCAqLywKKwkJCQk0MTQ1OThDMTIzQzhBRDc5MDAyQjlDQzggLyogTG9jYWxTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIubW0gKi8sCiAJCQkJMDc4RTQzREIxQUJCNkY2RjAwMUMyRkE2IC8qIE1l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMuaCAqLywKIAkJCQkwNzhFNDNEQzFBQkI2RjZGMDAx
QzJGQTYgLyogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYy5tbSAqLywKIAkJCQlERjlBRkQ3
MDEzRkMzMUQ4MDAxNUZFQjcgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5o
ICovLApAQCAtMzM2NDQsNiArMzM2NTEsNyBAQAogCQkJCTQxRDI4RDBEMjEzOUUwNTgwMEY0MjA2
RiAvKiBMaWJXZWJSVENTdGF0c0NvbGxlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTg2
QkQzRTIxM0VFMzQwMDAwMTgyNkYgLyogTGliV2ViUlRDVXRpbHMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTc1OUU5M0UxNEVGMUNGODAwMjZBMkREIC8qIExvYWRhYmxlVGV4dFRyYWNrLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTQxNDU5OEMyMjNDOEQxNzcwMDJCOUNDOCAvKiBMb2NhbFNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUZBQkU3MkZFMTA1OUMy
MTEwMEQ5OTlERCAvKiBNYXRoTUxOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDlCRjcw
NTFEQkZCQjI0MDA3QTdEOTkgLyogTWVkaWFFbmNyeXB0ZWRFdmVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkyRDlCRjc0NzFEQkZEQzQ5MDA3QTdEOTkgLyogTWVkaWFLZXlNZXNzYWdlRXZlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTIyNTgwMWYyMjc5YmI2ZDUzM2QwM2I5Zjg5NjgzMzA4Y2Fi
ZDdmOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaApAQCAtMCwwICsxLDgxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorCisj
aW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25h
bWVzcGFjZSBXVEYgeworY2xhc3MgTWVkaWFUaW1lOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7
CitjbGFzcyBJbnRTaXplOworY2xhc3MgTWVkaWFTYW1wbGU7CisKK2NsYXNzIFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllciB7CitwdWJsaWM6CisgICAgY2xhc3MgQ2xpZW50IDogcHVibGljIENhbk1h
a2VXZWFrUHRyPENsaWVudD4geworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+Q2xpZW50
KCkgPSBkZWZhdWx0OworICAgICAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyU3RhdHVzRGlkQ2hhbmdlKFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciYpID0gMDsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckJvdW5kc0RpZENoYW5nZShT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXImKSA9IDA7CisgICAgICAgIHZpcnR1YWwgV1RGOjpNZWRp
YVRpbWUgc3RyZWFtVGltZSgpIGNvbnN0ID0gMDsKKyAgICB9OworCisgICAgZXhwbGljaXQgU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyKENsaWVudCYpOworICAgIHZpcnR1YWwgflNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcigpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgYm9vbCBkaWRGYWlsKCkg
Y29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURpc3BsYXlNb2RlKGJvb2wgaGlk
ZURpc3BsYXlMYXllciwgYm9vbCBoaWRlUm9vdExheWVyKSA9IDA7CisKKyAgICB2aXJ0dWFsIENH
UmVjdCBib3VuZHMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFmZmluZVRy
YW5zZm9ybShDR0FmZmluZVRyYW5zZm9ybSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVC
b3VuZHNBbmRQb3NpdGlvbihDR1JlY3QsIENHUG9pbnQpID0gMDsKKworICAgIHZpcnR1YWwgdm9p
ZCBmbHVzaCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmx1c2hBbmRSZW1vdmVJbWFnZSgpID0g
MDsKKworICAgIHZpcnR1YWwgdm9pZCBlbnF1ZXVlU2FtcGxlKE1lZGlhU2FtcGxlJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBjbGVhckVucXVldWVkU2FtcGxlcygpID0gMDsKKworICAgIHZpcnR1
YWwgUGxhdGZvcm1MYXllciogcm9vdExheWVyKCkgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgV2Vh
a1B0cjxDbGllbnQ+IG1fY2xpZW50OworfTsKKworaW5saW5lIFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKENsaWVudCYgY2xpZW50KQorICAgIDogbV9j
bGllbnQobWFrZVdlYWtQdHIoY2xpZW50KSkKK3sKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxF
KE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmI4MjAzMjE3ZGQzYzUyY2MwZDI4MWZkNDE3MWMwMDQ1MmE2ZjFhNmEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9M
b2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCisKKyNpbmNsdWRlICJT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCIKKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19D
TEFTUyBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjsKK09CSkNfQ0xBU1MgV2ViQVZTYW1wbGVC
dWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBmaW5hbCA6IHB1YmxpYyBTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxMb2NhbFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBjcmVhdGUo
Q2xpZW50JiwgYm9vbCBoaWRlUm9vdExheWVyLCBJbnRTaXplKTsKKworICAgIExvY2FsU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyKFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4m
JiwgQ2xpZW50JiwgYm9vbCBoaWRlUm9vdExheWVyLCBJbnRTaXplKTsKKyAgICB+TG9jYWxTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIoKTsKKworICAgIC8vIEFQSSB1c2VkIGJ5IFdlYkFWU2FtcGxl
QnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIKKyAgICB2b2lkIGxheWVyU3RhdHVzRGlkQ2hhbmdl
KCk7CisgICAgdm9pZCBsYXllckVycm9yRGlkQ2hhbmdlKCk7CisgICAgdm9pZCByb290TGF5ZXJC
b3VuZHNEaWRDaGFuZ2UoKTsKKworICAgIFBsYXRmb3JtTGF5ZXIqIGRpc3BsYXlMYXllcigpOwor
CisgICAgUGxhdGZvcm1MYXllciogcm9vdExheWVyKCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAg
Ym9vbCBkaWRGYWlsKCkgY29uc3QgZmluYWw7CisKKyAgICB2b2lkIHVwZGF0ZURpc3BsYXlNb2Rl
KGJvb2wgaGlkZURpc3BsYXlMYXllciwgYm9vbCBoaWRlUm9vdExheWVyKSBmaW5hbDsKKworICAg
IENHUmVjdCBib3VuZHMoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUFmZmluZVRyYW5z
Zm9ybShDR0FmZmluZVRyYW5zZm9ybSkgIGZpbmFsOworICAgIHZvaWQgdXBkYXRlQm91bmRzQW5k
UG9zaXRpb24oQ0dSZWN0LCBDR1BvaW50KSBmaW5hbDsKKworICAgIHZvaWQgZmx1c2goKSBmaW5h
bDsKKyAgICB2b2lkIGZsdXNoQW5kUmVtb3ZlSW1hZ2UoKSBmaW5hbDsKKworICAgIHZvaWQgZW5x
dWV1ZVNhbXBsZShNZWRpYVNhbXBsZSYpIGZpbmFsOworICAgIHZvaWQgY2xlYXJFbnF1ZXVlZFNh
bXBsZXMoKSBmaW5hbDsKKworICAgIHZvaWQgZW5zdXJlTGF5ZXJzKCk7CisKKyAgICB2b2lkIHJl
bW92ZU9sZFNhbXBsZXNGcm9tUGVuZGluZ1F1ZXVlKCk7CisgICAgdm9pZCBhZGRTYW1wbGVUb1Bl
bmRpbmdRdWV1ZShNZWRpYVNhbXBsZSYpOworICAgIHZvaWQgcmVxdWVzdE5vdGlmaWNhdGlvbldo
ZW5SZWFkeUZvclZpZGVvRGF0YSgpOworCitwcml2YXRlOgorICAgIFJldGFpblB0cjxXZWJBVlNh
bXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyPiBtX3N0YXR1c0NoYW5nZUxpc3RlbmVyOwor
ICAgIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI7CisgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1fcm9vdExheWVyOwor
CisgICAgdXNpbmcgUGVuZGluZ1NhbXBsZVF1ZXVlID0gRGVxdWU8UmVmPE1lZGlhU2FtcGxlPj47
CisgICAgUGVuZGluZ1NhbXBsZVF1ZXVlIG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWU7Cit9Owor
ICAgIAorfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRB
VElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDhkZTI2MDY1MTViNTgyOTMyNjIxMzMwZTI0
YzAzOGM0MDhmMmYxYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Lm1tCkBAIC0wLDAgKzEsMzY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJMb2NhbFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9V
TkRBVElPTikKKworI2ltcG9ydCAiQ29sb3IuaCIKKyNpbXBvcnQgIkludFNpemUuaCIKKyNpbXBv
cnQgIk1lZGlhU2FtcGxlLmgiCisKKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5oPgorI2ltcG9ydCA8UXVhcnR6Q29yZS9DQUxheWVyLmg+CisjaW1wb3J0
IDxRdWFydHpDb3JlL0NBVHJhbnNhY3Rpb24uaD4KKworI2ltcG9ydCA8d3RmL01haW5UaHJlYWQu
aD4KKworI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCitAaW50ZXJmYWNlIFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVz
Q2hhbmdlTGlzdGVuZXIgOiBOU09iamVjdCB7CisgICAgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIqIF9wYXJlbnQ7Cit9CisKKy0gKGlkKWluaXRXaXRoUGFyZW50OihMb2NhbFNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllciopY2FsbGJhY2s7CistICh2b2lkKWludmFsaWRhdGU7CistICh2b2lk
KWJlZ2luT2JzZXJ2aW5nTGF5ZXJzOworLSAodm9pZClzdG9wT2JzZXJ2aW5nTGF5ZXJzOworQGVu
ZAorCitAaW1wbGVtZW50YXRpb24gV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5l
cgorCistIChpZClpbml0V2l0aFBhcmVudDooTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIq
KXBhcmVudAoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1
cm4gbmlsOworCisgICAgX3BhcmVudCA9IHBhcmVudDsKKworICAgIHJldHVybiBzZWxmOworfQor
CistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBbc2VsZiBpbnZhbGlkYXRlXTsKKyAgICBbc3VwZXIg
ZGVhbGxvY107Cit9CisKKy0gKHZvaWQpaW52YWxpZGF0ZQoreworICAgIFtzZWxmIHN0b3BPYnNl
cnZpbmdMYXllcnNdOworICAgIF9wYXJlbnQgPSBudWxscHRyOworfQorCistICh2b2lkKWJlZ2lu
T2JzZXJ2aW5nTGF5ZXJzCit7CisgICAgQVNTRVJUKF9wYXJlbnQpOworICAgIEFTU0VSVChfcGFy
ZW50LT5kaXNwbGF5TGF5ZXIoKSk7CisgICAgQVNTRVJUKF9wYXJlbnQtPnJvb3RMYXllcigpKTsK
KworICAgIFtfcGFyZW50LT5kaXNwbGF5TGF5ZXIoKSBhZGRPYnNlcnZlcjpzZWxmIGZvcktleVBh
dGg6QCJzdGF0dXMiIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0
Om5pbF07CisgICAgW19wYXJlbnQtPmRpc3BsYXlMYXllcigpIGFkZE9ic2VydmVyOnNlbGYgZm9y
S2V5UGF0aDpAImVycm9yIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29u
dGV4dDpuaWxdOworICAgIFtfcGFyZW50LT5yb290TGF5ZXIoKSBhZGRPYnNlcnZlcjpzZWxmIGZv
cktleVBhdGg6QCJib3VuZHMiIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBj
b250ZXh0Om5pbF07Cit9CisKKy0gKHZvaWQpc3RvcE9ic2VydmluZ0xheWVycworeworICAgIGlm
ICghX3BhcmVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKF9wYXJlbnQtPmRpc3BsYXlM
YXllcigpKSB7CisgICAgICAgIFtfcGFyZW50LT5kaXNwbGF5TGF5ZXIoKSByZW1vdmVPYnNlcnZl
cjpzZWxmIGZvcktleVBhdGg6QCJzdGF0dXMiXTsKKyAgICAgICAgW19wYXJlbnQtPmRpc3BsYXlM
YXllcigpIHJlbW92ZU9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAImVycm9yIl07CisgICAgfQor
ICAgIGlmIChfcGFyZW50LT5yb290TGF5ZXIoKSkKKyAgICAgICAgW19wYXJlbnQtPnJvb3RMYXll
cigpIHJlbW92ZU9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAImJvdW5kcyJdOworfQorCistICh2
b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3RyaW5nICopa2V5UGF0aCBvZk9iamVjdDoo
aWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5ICopY2hhbmdlIGNvbnRleHQ6KHZvaWQgKilj
b250ZXh0Cit7CisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOworICAgIFVOVVNFRF9QQVJBTShr
ZXlQYXRoKTsKKyAgICBBU1NFUlQoX3BhcmVudCk7CisKKyAgICBpZiAoIV9wYXJlbnQpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6UEFMOjpnZXRBVlNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllckNsYXNzKCldKSB7CisgICAgICAgIEFTU0VSVChvYmplY3Qg
PT0gX3BhcmVudC0+ZGlzcGxheUxheWVyKCkpOworCisgICAgICAgIGlmIChba2V5UGF0aCBpc0Vx
dWFsVG9TdHJpbmc6QCJzdGF0dXMiXSkgeworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
cHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxp
c3RlbmVyPihzZWxmKV0geworICAgICAgICAgICAgICAgIGlmICghcHJvdGVjdGVkU2VsZi0+X3Bh
cmVudCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgcHJv
dGVjdGVkU2VsZi0+X3BhcmVudC0+bGF5ZXJTdGF0dXNEaWRDaGFuZ2UoKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKFtrZXlQ
YXRoIGlzRXF1YWxUb1N0cmluZzpAImVycm9yIl0pIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQVZTYW1wbGVCdWZmZXJTdGF0dXND
aGFuZ2VMaXN0ZW5lcj4oc2VsZildIHsKKyAgICAgICAgICAgICAgICBpZiAoIXByb3RlY3RlZFNl
bGYtPl9wYXJlbnQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAg
ICAgIHByb3RlY3RlZFNlbGYtPl9wYXJlbnQtPmxheWVyRXJyb3JEaWRDaGFuZ2UoKTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAg
aWYgKFtbY2hhbmdlIHZhbHVlRm9yS2V5Ok5TS2V5VmFsdWVDaGFuZ2VOb3RpZmljYXRpb25Jc1By
aW9yS2V5XSBib29sVmFsdWVdKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoKENBTGF5ZXIg
KilvYmplY3QgPT0gX3BhcmVudC0+cm9vdExheWVyKCkpIHsKKyAgICAgICAgaWYgKFtrZXlQYXRo
IGlzRXF1YWxUb1N0cmluZzpAImJvdW5kcyJdKSB7CisgICAgICAgICAgICBpZiAoIV9wYXJlbnQp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAoaXNNYWluVGhyZWFk
KCkpIHsKKyAgICAgICAgICAgICAgICBfcGFyZW50LT5yb290TGF5ZXJCb3VuZHNEaWRDaGFuZ2Uo
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQVZTYW1wbGVC
dWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcj4oc2VsZildIHsKKyAgICAgICAgICAgICAgICBpZiAo
IXByb3RlY3RlZFNlbGYtPl9wYXJlbnQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9wYXJlbnQtPnJvb3RMYXllckJvdW5kc0Rp
ZENoYW5nZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9CisKK30KK0BlbmQK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgdm9pZCBydW5XaXRob3V0QW5pbWF0aW9u
cyhjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uKQoreworICAgIFtDQVRyYW5z
YWN0aW9uIGJlZ2luXTsKKyAgICBbQ0FUcmFuc2FjdGlvbiBzZXRBbmltYXRpb25EdXJhdGlvbjow
XTsKKyAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0aW9uczpZRVNdOworICAgIGZ1bmN0
aW9uKCk7CisgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKK30KKworc3RkOjp1bmlxdWVfcHRy
PFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6
OmNyZWF0ZShDbGllbnQmIGNsaWVudCwgYm9vbCBoaWRlUm9vdExheWVyLCBJbnRTaXplIHNpemUp
Cit7CisgICAgYXV0byBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgPSBhZG9wdE5TKFtQQUw6OmFs
bG9jQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJbnN0YW5jZSgpIGluaXRdKTsKKyAgICBpZiAo
IXNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4oV1RGTW92
ZShzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpLCBjbGllbnQsIGhpZGVSb290TGF5ZXIsIHNpemUp
OworfQorCitMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6TG9jYWxTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIoUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiYmIHNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllciwgQ2xpZW50JiBjbGllbnQsIGJvb2wgaGlkZVJvb3RMYXllciwg
SW50U2l6ZSBzaXplKQorICAgIDogU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKGNsaWVudCkKKyAg
ICAsIG1fc3RhdHVzQ2hhbmdlTGlzdGVuZXIoYWRvcHROUyhbW1dlYkFWU2FtcGxlQnVmZmVyU3Rh
dHVzQ2hhbmdlTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoUGFyZW50OnRoaXNdKSkKKyAgICAsIG1f
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKFdURk1vdmUoc2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
KSkKK3sKKyAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKS5iYWNrZ3JvdW5kQ29s
b3IgPSBjYWNoZWRDR0NvbG9yKENvbG9yOjpibGFjayk7CisgICAgbV9zYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIuZ2V0KCkuYW5jaG9yUG9pbnQgPSB7IC41LCAuNSB9OworICAgIG1fc2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLmdldCgpLm5lZWRzRGlzcGxheU9uQm91bmRzQ2hhbmdlID0gWUVTOwor
ICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLnZpZGVvR3Jhdml0eSA9IEFWTGF5
ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsOworCisgICAgbV9yb290TGF5ZXIgPSBhZG9w
dE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0pOworICAgIG1fcm9vdExheWVyLmdldCgpLmhpZGRl
biA9IGhpZGVSb290TGF5ZXI7CisKKyAgICBtX3Jvb3RMYXllci5nZXQoKS5iYWNrZ3JvdW5kQ29s
b3IgPSBjYWNoZWRDR0NvbG9yKENvbG9yOjpibGFjayk7CisgICAgbV9yb290TGF5ZXIuZ2V0KCku
bmVlZHNEaXNwbGF5T25Cb3VuZHNDaGFuZ2UgPSBZRVM7CisKKyAgICBtX3Jvb3RMYXllci5nZXQo
KS5ib3VuZHMgPSBDR1JlY3RNYWtlKDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7
CisKKyAgICBbbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lciBiZWdpbk9ic2VydmluZ0xheWVyc107CisK
KyAgICBbbV9yb290TGF5ZXIgYWRkU3VibGF5ZXI6bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
Z2V0KCldOworCisjaWZuZGVmIE5ERUJVRworICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ciBzZXROYW1lOkAiTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgQVZTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIiXTsKKyAgICBbbV9yb290TGF5ZXIgc2V0TmFtZTpAIkxvY2FsU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHBhcmVudCJdOworI2Vu
ZGlmCit9CisKK0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjp+TG9jYWxTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIoKQoreworICAgIFttX3N0YXR1c0NoYW5nZUxpc3RlbmVyIHN0b3BPYnNl
cnZpbmdMYXllcnNdOworCisgICAgbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5jbGVhcigpOwor
CisgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHN0b3BSZXF1ZXN0aW5nTWVkaWFEYXRh
XTsKKyAgICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgZmx1c2hdOworICAgIG1fc2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyID0gbnVsbHB0cjsKKworICAgIG1fcm9vdExheWVyID0gbnVsbHB0
cjsKK30KKwordm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6bGF5ZXJTdGF0dXNE
aWRDaGFuZ2UoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1fc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLnN0YXR1cyAhPSBBVlF1ZXVlZFNhbXBsZUJ1ZmZl
clJlbmRlcmluZ1N0YXR1c1JlbmRlcmluZykKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghbV9j
bGllbnQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NsaWVudC0+c2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyU3RhdHVzRGlkQ2hhbmdlKCp0aGlzKTsKK30KKwordm9pZCBMb2NhbFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcjo6bGF5ZXJFcnJvckRpZENoYW5nZSgpCit7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICAvLyBGSVhNRTogTG9nIGVycm9yLgorfQorCit2b2lkIExvY2FsU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyOjpyb290TGF5ZXJCb3VuZHNEaWRDaGFuZ2UoKQoreworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0
dXJuOworICAgIG1fY2xpZW50LT5zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJCb3VuZHNEaWRDaGFu
Z2UoKnRoaXMpOworfQorCitQbGF0Zm9ybUxheWVyKiBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6ZGlzcGxheUxheWVyKCkKK3sKKyAgICByZXR1cm4gbV9zYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIuZ2V0KCk7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyOjpyb290TGF5ZXIoKQoreworICAgIHJldHVybiBtX3Jvb3RMYXllci5nZXQoKTsKK30K
KworYm9vbCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZGlkRmFpbCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBzdGF0dXNdID09IEFWUXVl
dWVkU2FtcGxlQnVmZmVyUmVuZGVyaW5nU3RhdHVzRmFpbGVkOworfQorCit2b2lkIExvY2FsU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyOjp1cGRhdGVEaXNwbGF5TW9kZShib29sIGhpZGVEaXNwbGF5
TGF5ZXIsIGJvb2wgaGlkZVJvb3RMYXllcikKK3sKKyAgICBpZiAobV9yb290TGF5ZXIuZ2V0KCku
aGlkZGVuID09IGhpZGVSb290TGF5ZXIgJiYgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0
KCkuaGlkZGVuID09IGhpZGVEaXNwbGF5TGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHJ1
bldpdGhvdXRBbmltYXRpb25zKFsmXSB7CisgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyLmdldCgpLmhpZGRlbiA9IGhpZGVEaXNwbGF5TGF5ZXI7CisgICAgICAgIG1fcm9vdExheWVy
LmdldCgpLmhpZGRlbiA9IGhpZGVSb290TGF5ZXI7CisgICAgfSk7Cit9CisKK0NHUmVjdCBMb2Nh
bFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Ym91bmRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9yb290TGF5ZXIuZ2V0KCkuYm91bmRzOworfQorCit2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjp1cGRhdGVBZmZpbmVUcmFuc2Zvcm0oQ0dBZmZpbmVUcmFuc2Zvcm0gdHJhbnNm
b3JtKQoreworICAgIHJ1bldpdGhvdXRBbmltYXRpb25zKFsmXSB7CisgICAgICAgIG1fc2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmdldCgpLmFmZmluZVRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKKyAg
ICB9KTsKK30KKwordm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6dXBkYXRlQm91
bmRzQW5kUG9zaXRpb24oQ0dSZWN0IHZpZGVvQm91bmRzLCBDR1BvaW50IHBvc2l0aW9uKQorewor
ICAgIHJ1bldpdGhvdXRBbmltYXRpb25zKFsmXSB7CisgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmdldCgpLmJvdW5kcyA9IHZpZGVvQm91bmRzOworICAgICAgICBtX3NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci5nZXQoKS5wb3NpdGlvbiA9IHBvc2l0aW9uOworICAgIH0pOworfQor
Cit2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpmbHVzaCgpCit7CisgICAgW21f
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGZsdXNoXTsKK30KKwordm9pZCBMb2NhbFNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcjo6Zmx1c2hBbmRSZW1vdmVJbWFnZSgpCit7CisgICAgW21fc2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyIGZsdXNoQW5kUmVtb3ZlSW1hZ2VdOworfQorCit2b2lkIExvY2Fs
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxlKE1lZGlhU2FtcGxlJiBzYW1w
bGUpCit7CisgICAgaWYgKCFbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgaXNSZWFkeUZvck1v
cmVNZWRpYURhdGFdKSB7CisgICAgICAgIGFkZFNhbXBsZVRvUGVuZGluZ1F1ZXVlKHNhbXBsZSk7
CisgICAgICAgIHJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JWaWRlb0RhdGEoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBl
bnF1ZXVlU2FtcGxlQnVmZmVyOnNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnNhbXBsZS5jbVNhbXBs
ZUJ1ZmZlcl07Cit9CisKK3ZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnJlbW92
ZU9sZFNhbXBsZXNGcm9tUGVuZGluZ1F1ZXVlKCkKK3sKKyAgICBpZiAobV9wZW5kaW5nVmlkZW9T
YW1wbGVRdWV1ZS5pc0VtcHR5KCkgfHwgIW1fY2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvIGRlY29kZVRpbWUgPSBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmZpcnN0KCktPmRl
Y29kZVRpbWUoKTsKKyAgICBpZiAoIWRlY29kZVRpbWUuaXNWYWxpZCgpIHx8IGRlY29kZVRpbWUg
PCBNZWRpYVRpbWU6Onplcm9UaW1lKCkpIHsKKyAgICAgICAgd2hpbGUgKG1fcGVuZGluZ1ZpZGVv
U2FtcGxlUXVldWUuc2l6ZSgpID4gNSkKKyAgICAgICAgICAgIG1fcGVuZGluZ1ZpZGVvU2FtcGxl
UXVldWUucmVtb3ZlRmlyc3QoKTsKKworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgTWVk
aWFUaW1lIG5vdyA9IG1fY2xpZW50LT5zdHJlYW1UaW1lKCk7CisgICAgd2hpbGUgKCFtX3BlbmRp
bmdWaWRlb1NhbXBsZVF1ZXVlLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAobV9wZW5kaW5nVmlk
ZW9TYW1wbGVRdWV1ZS5maXJzdCgpLT5kZWNvZGVUaW1lKCkgPiBub3cpCisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5yZW1vdmVGaXJzdCgpOwor
ICAgIH0KK30KKwordm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6YWRkU2FtcGxl
VG9QZW5kaW5nUXVldWUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKK3sKKyAgICByZW1vdmVPbGRTYW1w
bGVzRnJvbVBlbmRpbmdRdWV1ZSgpOworICAgIG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUuYXBw
ZW5kKHNhbXBsZSk7Cit9CisKK3ZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNs
ZWFyRW5xdWV1ZWRTYW1wbGVzKCkKK3sKKyAgICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmNs
ZWFyKCk7Cit9CisKK3ZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnJlcXVlc3RO
b3RpZmljYXRpb25XaGVuUmVhZHlGb3JWaWRlb0RhdGEoKQoreworICAgIGF1dG8gd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cigqdGhpcyk7CisgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHJl
cXVlc3RNZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkg
dXNpbmdCbG9jazpeeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBzdG9wUmVxdWVzdGluZ01l
ZGlhRGF0YV07CisKKyAgICAgICAgd2hpbGUgKCFtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmlz
RW1wdHkoKSkgeworICAgICAgICAgICAgaWYgKCFbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIg
aXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKSB7CisgICAgICAgICAgICAgICAgcmVxdWVzdE5vdGlm
aWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgpOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCByZWVucXVl
dWUgaW4gY2xpZW50LgorICAgICAgICAgICAgYXV0byBzYW1wbGUgPSBtX3BlbmRpbmdWaWRlb1Nh
bXBsZVF1ZXVlLnRha2VGaXJzdCgpOworICAgICAgICAgICAgZW5xdWV1ZVNhbXBsZShzYW1wbGUu
Z2V0KCkpOworICAgICAgICB9CisgICAgfV07Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQy5oCmluZGV4IGMxYmI4MGZlZjFkYjAzODI2ZmEzZTUxMzQ3MTY5MGE4N2E1Zjcw
MDEuLmY4ZDczOTE5ZmU0OGZjNmE4OWZhMjc1ZjE3YzUwM2RmY2ZlYTU1YjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQy5oCkBAIC0zMCwxMCArMzAsMTAgQEAKICNpbmNsdWRlICJNZWRpYVBsYXll
clByaXZhdGUuaCIKICNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgogI2luY2x1ZGUgIk1lZGlhU3Ry
ZWFtUHJpdmF0ZS5oIgorI2luY2x1ZGUgIlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIgogI2lu
Y2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8
d3RmL0xvZ2dlckhlbHBlci5oPgotI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIE9CSkNfQ0xB
U1MgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI7CiBPQkpDX0NMQVNTIFdlYkFWU2FtcGxlQnVm
ZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXI7CkBAIC01MSw3ICs1MSw3IEBAIGNsYXNzIFBpeGVsQnVm
ZmVyQ29uZm9ybWVyQ1Y7CiBjbGFzcyBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDOwog
Y2xhc3MgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTsKIAotY2xhc3MgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDIGZpbmFsIDogcHVibGljIENhbk1ha2VXZWFrUHRyPE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQz4sIHB1YmxpYyBNZWRpYVBsYXllclBy
aXZhdGVJbnRlcmZhY2UsIHByaXZhdGUgTWVkaWFTdHJlYW1Qcml2YXRlOjpPYnNlcnZlciwgcHJp
dmF0ZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIKK2NsYXNzIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZh
dGVJbnRlcmZhY2UsIHByaXZhdGUgTWVkaWFTdHJlYW1Qcml2YXRlOjpPYnNlcnZlciwgcHJpdmF0
ZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIsIHB1YmxpYyBTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OkNsaWVudAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICwgcHJp
dmF0ZSBMb2dnZXJIZWxwZXIKICNlbmRpZgpAQCAtNzUsMTMgKzc1LDYgQEAgcHVibGljOgogICAg
IHZvaWQgZW5zdXJlTGF5ZXJzKCk7CiAgICAgdm9pZCBkZXN0cm95TGF5ZXJzKCk7CiAKLSAgICB2
b2lkIGxheWVyU3RhdHVzRGlkQ2hhbmdlKEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKik7Ci0g
ICAgdm9pZCBsYXllckVycm9yRGlkQ2hhbmdlKEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKik7
Ci0gICAgdm9pZCBiYWNrZ3JvdW5kTGF5ZXJCb3VuZHNDaGFuZ2VkKCk7Ci0KLSAgICBQbGF0Zm9y
bUxheWVyKiBkaXNwbGF5TGF5ZXIoKTsKLSAgICBQbGF0Zm9ybUxheWVyKiBiYWNrZ3JvdW5kTGF5
ZXIoKTsKLQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IExvZ2dlciYgbG9n
Z2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH0KICAgICBjb25zdCBj
aGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDIjsgfQpAQCAtMTM3LDEwICsxMzAsNiBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBmbHVzaFJlbmRlcmVycygpOwogCi0gICAgdXNpbmcgUGVuZGluZ1NhbXBs
ZVF1ZXVlID0gRGVxdWU8UmVmPE1lZGlhU2FtcGxlPj47Ci0gICAgdm9pZCBhZGRTYW1wbGVUb1Bl
bmRpbmdRdWV1ZShQZW5kaW5nU2FtcGxlUXVldWUmLCBNZWRpYVNhbXBsZSYpOwotICAgIHZvaWQg
cmVtb3ZlT2xkU2FtcGxlc0Zyb21QZW5kaW5nUXVldWUoUGVuZGluZ1NhbXBsZVF1ZXVlJik7Ci0K
ICAgICBNZWRpYVRpbWUgY2FsY3VsYXRlVGltZWxpbmVPZmZzZXQoY29uc3QgTWVkaWFTYW1wbGUm
LCBkb3VibGUpOwogICAgIAogICAgIHZvaWQgZW5xdWV1ZVZpZGVvU2FtcGxlKE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlJiwgTWVkaWFTYW1wbGUmKTsKQEAgLTIxMiw3ICsyMDEsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIFdURjo6
RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKICAgICB2b2lk
IHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCkgb3ZlcnJpZGU7CiAKLSAgICBNZWRp
YVRpbWUgc3RyZWFtVGltZSgpIGNvbnN0OworICAgIE1lZGlhVGltZSBzdHJlYW1UaW1lKCkgY29u
c3QgZmluYWw7CiAKICAgICBBdWRpb1NvdXJjZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVy
KCkgZmluYWw7CiAKQEAgLTIyMCwxNCArMjA5LDExIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGFw
cGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkgZmluYWw7CiAKLSAgICBib29sIGhpZGVCYWNrZ3Jv
dW5kTGF5ZXIoKSBjb25zdCB7IHJldHVybiAoIW1fYWN0aXZlVmlkZW9UcmFjayB8fCBtX3dhaXRp
bmdGb3JGaXJzdEltYWdlKSAmJiBtX2Rpc3BsYXlNb2RlICE9IFBhaW50SXRCbGFjazsgfQorICAg
IGJvb2wgaGlkZVJvb3RMYXllcigpIGNvbnN0IHsgcmV0dXJuICghbV9hY3RpdmVWaWRlb1RyYWNr
IHx8IG1fd2FpdGluZ0ZvckZpcnN0SW1hZ2UpICYmIG1fZGlzcGxheU1vZGUgIT0gUGFpbnRJdEJs
YWNrOyB9CiAKICAgICBNZWRpYVBsYXllciogbV9wbGF5ZXIgeyBudWxscHRyIH07CiAgICAgUmVm
UHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4gbV9tZWRpYVN0cmVhbVByaXZhdGU7CiAgICAgUmVmUHRy
PE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiBtX2FjdGl2ZVZpZGVvVHJhY2s7Ci0gICAgUmV0YWlu
UHRyPFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXI+IG1fc3RhdHVzQ2hhbmdl
TGlzdGVuZXI7Ci0gICAgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBtX3Nh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcjsKLSAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV9i
YWNrZ3JvdW5kTGF5ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBBTDo6Q2xvY2s+IG1fY2xvY2s7
CiAKICAgICBNZWRpYVRpbWUgbV9wYXVzZWRUaW1lOwpAQCAtMjQ0LDcgKzIzMCw2IEBAIHByaXZh
dGU6CiAKICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
dHJlYW1Db2NvYT4+IG1fYXVkaW9UcmFja01hcDsKICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRy
PFZpZGVvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0+PiBtX3ZpZGVvVHJhY2tNYXA7Ci0gICAgUGVu
ZGluZ1NhbXBsZVF1ZXVlIG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWU7CiAKICAgICBNZWRpYVBs
YXllcjo6TmV0d29ya1N0YXRlIG1fbmV0d29ya1N0YXRlIHsgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtT
dGF0ZTo6RW1wdHkgfTsKICAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGUg
eyBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU5vdGhpbmcgfTsKQEAgLTI1NCw4ICsyMzks
MTMgQEAgcHJpdmF0ZToKICAgICBQbGF5YmFja1N0YXRlIG1fcGxheWJhY2tTdGF0ZSB7IFBsYXli
YWNrU3RhdGU6Ok5vbmUgfTsKICAgICBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiBtX3ZpZGVv
Um90YXRpb24geyBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6Tm9uZSB9OwogICAgIENHQWZm
aW5lVHJhbnNmb3JtIG1fdmlkZW9UcmFuc2Zvcm07CisgICAgc3RkOjp1bmlxdWVfcHRyPFNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcj4gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakM+IG1fdmlkZW9GdWxs
c2NyZWVuTGF5ZXJNYW5hZ2VyOwogCisgICAgLy8gU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpD
bGllbnQKKyAgICB2b2lkIHNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllclN0YXR1c0RpZENoYW5nZShT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXImKSBmaW5hbDsKKyAgICB2b2lkIHNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllckJvdW5kc0RpZENoYW5nZShTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXImKSBmaW5h
bDsKKwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIFJlZjxjb25zdCBMb2dnZXI+IG1f
bG9nZ2VyOwogICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQy5tbQppbmRleCA4ZDIzYzkzZTJlZTk1MjFmODc0NTIxZmNmMGY0ZDU4NmYwYjhmYjJh
Li40YjMxOTViZTdiOWQ3ZGY4NjA2ZjkxN2ZjYjAxYjQxNmEzYmFkMzYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsMjAgKzMxLDE2IEBACiAjaW1wb3J0ICJBdWRpb1RyYWNr
UHJpdmF0ZU1lZGlhU3RyZWFtQ29jb2EuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgi
CiAjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5oIgogI2ltcG9ydCAiTWVkaWFTdHJlYW1Qcml2YXRlLmgiCiAjaW1wb3J0ICJQaXhlbEJ1
ZmZlckNvbmZvcm1lckNWLmgiCiAjaW1wb3J0ICJWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJP
YmpDLmgiCiAjaW1wb3J0ICJWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtLmgiCi0jaW1wb3J0
IDxBVkZvdW5kYXRpb24vQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaD4KICNpbXBvcnQgPENv
cmVHcmFwaGljcy9DR0FmZmluZVRyYW5zZm9ybS5oPgotI2ltcG9ydCA8UXVhcnR6Q29yZS9DQUxh
eWVyLmg+Ci0jaW1wb3J0IDxRdWFydHpDb3JlL0NBVHJhbnNhY3Rpb24uaD4KICNpbXBvcnQgPG9i
amNfcnVudGltZS5oPgogI2ltcG9ydCA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5k
YXRpb24uaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL0FWRm91bmRhdGlvblNQSS5oPgogI2ltcG9y
dCA8cGFsL3N5c3RlbS9DbG9jay5oPgotI2ltcG9ydCA8d3RmL0RlcXVlLmg+Ci0jaW1wb3J0IDx3
dGYvRnVuY3Rpb24uaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtNTIsMTI3ICs0OCw2IEBACiAjaW1wb3J0IDxwYWwvY2Yv
Q29yZU1lZGlhU29mdExpbmsuaD4KICNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0
TGluay5oPgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotQGludGVyZmFjZSBXZWJBVlNh
bXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyIDogTlNPYmplY3QgewotICAgIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyogX3BhcmVudDsKLX0KLQotLSAoaWQpaW5pdFdp
dGhQYXJlbnQ6KE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyopY2FsbGJhY2s7
Ci0tICh2b2lkKWludmFsaWRhdGU7Ci0tICh2b2lkKWJlZ2luT2JzZXJ2aW5nTGF5ZXJzOwotLSAo
dm9pZClzdG9wT2JzZXJ2aW5nTGF5ZXJzOwotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gV2ViQVZT
YW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcgotCi0tIChpZClpbml0V2l0aFBhcmVudDoo
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKilwYXJlbnQKLXsKLSAgICBpZiAo
IShzZWxmID0gW3N1cGVyIGluaXRdKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIF9wYXJl
bnQgPSBwYXJlbnQ7Ci0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZClkZWFsbG9jCi17
Ci0gICAgW3NlbGYgaW52YWxpZGF0ZV07Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tICh2
b2lkKWludmFsaWRhdGUKLXsKLSAgICBbc2VsZiBzdG9wT2JzZXJ2aW5nTGF5ZXJzXTsKLSAgICBf
cGFyZW50ID0gbnVsbHB0cjsKLX0KLQotLSAodm9pZCliZWdpbk9ic2VydmluZ0xheWVycwotewot
ICAgIEFTU0VSVChfcGFyZW50KTsKLSAgICBBU1NFUlQoX3BhcmVudC0+ZGlzcGxheUxheWVyKCkp
OwotICAgIEFTU0VSVChfcGFyZW50LT5iYWNrZ3JvdW5kTGF5ZXIoKSk7Ci0KLSAgICBbX3BhcmVu
dC0+ZGlzcGxheUxheWVyKCkgYWRkT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAic3RhdHVzIiBv
cHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDpuaWxdOwotICAgIFtf
cGFyZW50LT5kaXNwbGF5TGF5ZXIoKSBhZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJlcnJv
ciIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6bmlsXTsKLSAg
ICBbX3BhcmVudC0+YmFja2dyb3VuZExheWVyKCkgYWRkT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRo
OkAiYm91bmRzIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDpu
aWxdOwotfQotCi0tICh2b2lkKXN0b3BPYnNlcnZpbmdMYXllcnMKLXsKLSAgICBpZiAoIV9wYXJl
bnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChfcGFyZW50LT5kaXNwbGF5TGF5ZXIoKSkg
ewotICAgICAgICBbX3BhcmVudC0+ZGlzcGxheUxheWVyKCkgcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBm
b3JLZXlQYXRoOkAic3RhdHVzIl07Ci0gICAgICAgIFtfcGFyZW50LT5kaXNwbGF5TGF5ZXIoKSBy
ZW1vdmVPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJlcnJvciJdOwotICAgIH0KLSAgICBpZiAo
X3BhcmVudC0+YmFja2dyb3VuZExheWVyKCkpCi0gICAgICAgIFtfcGFyZW50LT5iYWNrZ3JvdW5k
TGF5ZXIoKSByZW1vdmVPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJib3VuZHMiXTsKLX0KLQot
LSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOihOU1N0cmluZyAqKWtleVBhdGggb2ZPYmpl
Y3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAqKWNoYW5nZSBjb250ZXh0Oih2b2lk
ICopY29udGV4dAotewotICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKLSAgICBVTlVTRURfUEFS
QU0oa2V5UGF0aCk7Ci0gICAgQVNTRVJUKF9wYXJlbnQpOwotCi0gICAgaWYgKCFfcGFyZW50KQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoW29iamVjdCBpc0tpbmRPZkNsYXNzOlBBTDo6Z2V0
QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJDbGFzcygpXSkgewotICAgICAgICBSZXRhaW5QdHI8
QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IGxheWVyID0gKEFWU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyICopb2JqZWN0OwotICAgICAgICBBU1NFUlQobGF5ZXIuZ2V0KCkgPT0gX3BhcmVudC0+
ZGlzcGxheUxheWVyKCkpOwotCi0gICAgICAgIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6
QCJzdGF0dXMiXSkgewotICAgICAgICAgICAgUmV0YWluUHRyPE5TTnVtYmVyPiBzdGF0dXMgPSBb
Y2hhbmdlIHZhbHVlRm9yS2V5Ok5TS2V5VmFsdWVDaGFuZ2VOZXdLZXldOwotICAgICAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBVlNhbXBsZUJ1
ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyPihzZWxmKSwgbGF5ZXIgPSBXVEZNb3ZlKGxheWVyKSwg
c3RhdHVzID0gV1RGTW92ZShzdGF0dXMpXSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFwcm90ZWN0
ZWRTZWxmLT5fcGFyZW50KQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
ICAgICAgICBwcm90ZWN0ZWRTZWxmLT5fcGFyZW50LT5sYXllclN0YXR1c0RpZENoYW5nZShsYXll
ci5nZXQoKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJlcnJvciJdKSB7Ci0g
ICAgICAgICAgICBSZXRhaW5QdHI8TlNOdW1iZXI+IHN0YXR1cyA9IFtjaGFuZ2UgdmFsdWVGb3JL
ZXk6TlNLZXlWYWx1ZUNoYW5nZU5ld0tleV07Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFtwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdl
TGlzdGVuZXI+KHNlbGYpLCBsYXllciA9IFdURk1vdmUobGF5ZXIpLCBzdGF0dXMgPSBXVEZNb3Zl
KHN0YXR1cyldIHsKLSAgICAgICAgICAgICAgICBpZiAoIXByb3RlY3RlZFNlbGYtPl9wYXJlbnQp
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIHByb3RlY3Rl
ZFNlbGYtPl9wYXJlbnQtPmxheWVyRXJyb3JEaWRDaGFuZ2UobGF5ZXIuZ2V0KCkpOwotICAgICAg
ICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBp
ZiAoW1tjaGFuZ2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1ZUNoYW5nZU5vdGlmaWNhdGlvbklzUHJp
b3JLZXldIGJvb2xWYWx1ZV0pCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICgoQ0FMYXllciAq
KW9iamVjdCA9PSBfcGFyZW50LT5iYWNrZ3JvdW5kTGF5ZXIoKSkgewotICAgICAgICBpZiAoW2tl
eVBhdGggaXNFcXVhbFRvU3RyaW5nOkAiYm91bmRzIl0pIHsKLSAgICAgICAgICAgIGlmICghX3Bh
cmVudCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIGlmIChpc01haW5U
aHJlYWQoKSkgewotICAgICAgICAgICAgICAgIF9wYXJlbnQtPmJhY2tncm91bmRMYXllckJvdW5k
c0NoYW5nZWQoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2Vi
QVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcj4oc2VsZildIHsKLSAgICAgICAgICAg
ICAgICBpZiAoIXByb3RlY3RlZFNlbGYtPl9wYXJlbnQpCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9wYXJlbnQtPmJhY2tncm91
bmRMYXllckJvdW5kc0NoYW5nZWQoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAg
fQotCi19Ci1AZW5kCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBQQUw7
CiAKQEAgLTE4Myw3ICs1OCw2IEBAIHN0YXRpYyBjb25zdCBkb3VibGUgcmVuZGVyZXJMYXRlbmN5
ID0gMC4wMjsKIAogTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMoTWVkaWFQbGF5ZXIqIHBsYXllcikKICAgICA6
IG1fcGxheWVyKHBsYXllcikKLSAgICAsIG1fc3RhdHVzQ2hhbmdlTGlzdGVuZXIoYWRvcHROUyhb
W1dlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoUGFy
ZW50OnRoaXNdKSkKICAgICAsIG1fY2xvY2soUEFMOjpDbG9jazo6Y3JlYXRlKCkpCiAgICAgLCBt
X3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcihtYWtlVW5pcXVlPFZpZGVvRnVsbHNjcmVlbkxh
eWVyTWFuYWdlck9iakM+KCkpCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0xOTgsOCAr
NzIsNiBAQCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6On5NZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMoKQogewogICAgIElORk9fTE9HKExPR0lERU5USUZJ
RVIpOwogCi0gICAgW21fc3RhdHVzQ2hhbmdlTGlzdGVuZXIgaW52YWxpZGF0ZV07Ci0KICAgICBm
b3IgKGNvbnN0IGF1dG8mIHRyYWNrIDogbV9hdWRpb1RyYWNrTWFwLnZhbHVlcygpKQogICAgICAg
ICB0cmFjay0+cGF1c2UoKTsKIApAQCAtMjY5LDMzICsxNDEsNiBAQCBNZWRpYVBsYXllcjo6U3Vw
cG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c3VwcG9ydHNU
eXBlKGNvbgogI3ByYWdtYSBtYXJrIC0KICNwcmFnbWEgbWFyayBBVlNhbXBsZUJ1ZmZlciBNZXRo
b2RzCiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpyZW1vdmVP
bGRTYW1wbGVzRnJvbVBlbmRpbmdRdWV1ZShQZW5kaW5nU2FtcGxlUXVldWUmIHF1ZXVlKQotewot
ICAgIGlmIChxdWV1ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gZGVj
b2RlVGltZSA9IHF1ZXVlLmZpcnN0KCktPmRlY29kZVRpbWUoKTsKLSAgICBpZiAoIWRlY29kZVRp
bWUuaXNWYWxpZCgpIHx8IGRlY29kZVRpbWUgPCBNZWRpYVRpbWU6Onplcm9UaW1lKCkpIHsKLSAg
ICAgICAgd2hpbGUgKHF1ZXVlLnNpemUoKSA+IDUpCi0gICAgICAgICAgICBxdWV1ZS5yZW1vdmVG
aXJzdCgpOwotCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBNZWRpYVRpbWUgbm93ID0g
c3RyZWFtVGltZSgpOwotICAgIHdoaWxlICghcXVldWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGlm
IChxdWV1ZS5maXJzdCgpLT5kZWNvZGVUaW1lKCkgPiBub3cpCi0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgcXVldWUucmVtb3ZlRmlyc3QoKTsKLSAgICB9Ci19Ci0KLXZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjphZGRTYW1wbGVUb1BlbmRpbmdRdWV1ZShQZW5k
aW5nU2FtcGxlUXVldWUmIHF1ZXVlLCBNZWRpYVNhbXBsZSYgc2FtcGxlKQotewotICAgIHJlbW92
ZU9sZFNhbXBsZXNGcm9tUGVuZGluZ1F1ZXVlKHF1ZXVlKTsKLSAgICBxdWV1ZS5hcHBlbmQoc2Ft
cGxlKTsKLX0KLQogTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6Y2FsY3VsYXRlVGltZWxpbmVPZmZzZXQoY29uc3QgTWVkaWFTYW1wbGUmIHNhbXBsZSwgZG91
YmxlIGxhdGVuY3kpCiB7CiAgICAgTWVkaWFUaW1lIHNhbXBsZVRpbWUgPSBzYW1wbGUub3V0cHV0
UHJlc2VudGF0aW9uVGltZSgpOwpAQCAtMzMwLDM3ICsxNzUsMTkgQEAgQ0dBZmZpbmVUcmFuc2Zv
cm0gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp2aWRlb1RyYW5zZm9ybWF0
aW9uTWF0cmkKICAgICByZXR1cm4gbV92aWRlb1RyYW5zZm9ybTsKIH0KIAotc3RhdGljIHZvaWQg
cnVuV2l0aG91dEFuaW1hdGlvbnMoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiBmdW5jdGlv
bikKLXsKLSAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07Ci0gICAgW0NBVHJhbnNhY3Rpb24gc2V0
QW5pbWF0aW9uRHVyYXRpb246MF07Ci0gICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlv
bnM6WUVTXTsKLSAgICBmdW5jdGlvbigpOwotICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07Ci19
Ci0KIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlQ29y
cmVjdGVkVmlkZW9TYW1wbGUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKIHsKICAgICBpZiAobV9zYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIpIHsKLSAgICAgICAgaWYgKFttX3NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllciBzdGF0dXNdID09IEFWUXVldWVkU2FtcGxlQnVmZmVyUmVuZGVyaW5nU3RhdHVzRmFp
bGVkKQorICAgICAgICBpZiAobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPmRpZEZhaWwoKSkK
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc2FtcGxlLnZpZGVvUm90YXRpb24o
KSAhPSBtX3ZpZGVvUm90YXRpb24gfHwgc2FtcGxlLnZpZGVvTWlycm9yZWQoKSAhPSBtX3ZpZGVv
TWlycm9yZWQpIHsKICAgICAgICAgICAgIG1fdmlkZW9Sb3RhdGlvbiA9IHNhbXBsZS52aWRlb1Jv
dGF0aW9uKCk7CiAgICAgICAgICAgICBtX3ZpZGVvTWlycm9yZWQgPSBzYW1wbGUudmlkZW9NaXJy
b3JlZCgpOwotICAgICAgICAgICAgcnVuV2l0aG91dEFuaW1hdGlvbnMoW3RoaXMsICZzYW1wbGVd
IHsKLSAgICAgICAgICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKS5hZmZp
bmVUcmFuc2Zvcm0gPSB2aWRlb1RyYW5zZm9ybWF0aW9uTWF0cml4KHNhbXBsZSwgdHJ1ZSk7Ci0g
ICAgICAgICAgICAgICAgdXBkYXRlRGlzcGxheUxheWVyKCk7Ci0gICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT51cGRhdGVBZmZpbmVUcmFuc2Zv
cm0odmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeChzYW1wbGUsIHRydWUpKTsKKyAgICAgICAgICAg
IHVwZGF0ZURpc3BsYXlMYXllcigpOwogICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFbbV9zYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKSB7Ci0gICAgICAg
ICAgICBhZGRTYW1wbGVUb1BlbmRpbmdRdWV1ZShtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLCBz
YW1wbGUpOwotICAgICAgICAgICAgcmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVv
RGF0YSgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgW21fc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyIGVucXVldWVTYW1wbGVCdWZmZXI6c2FtcGxlLnBsYXRmb3Jt
U2FtcGxlKCkuc2FtcGxlLmNtU2FtcGxlQnVmZmVyXTsKKyAgICAgICAgbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXItPmVucXVldWVTYW1wbGUoc2FtcGxlKTsKICAgICB9CiAKICAgICBpZiAoIW1f
aGFzRXZlckVucXVldWVkVmlkZW9GcmFtZSkgewpAQCAtNDE1LDYxICsyNDIsMjYgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVucXVldWVWaWRlb1NhbXBsZShN
ZWRpYVN0cmVhbVRyYWNrUHIKICAgICB9CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpyZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRh
KCkKLXsKLSAgICBhdXRvIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpOwotICAgIFttX3Nh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllciByZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1ZTpk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpIHVzaW5nQmxvY2s6XiB7Ci0gICAgICAgIGlmICghd2Vh
a1RoaXMpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgW21fc2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyIHN0b3BSZXF1ZXN0aW5nTWVkaWFEYXRhXTsKLQotICAgICAgICBpZiAoIW1fYWN0
aXZlVmlkZW9UcmFjaykgewotICAgICAgICAgICAgbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5j
bGVhcigpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgd2hpbGUg
KCFtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgaWYg
KCFbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKSB7
Ci0gICAgICAgICAgICAgICAgcmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0
YSgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgYXV0byBzYW1wbGUgPSBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLnRha2VGaXJzdCgpOwot
ICAgICAgICAgICAgZW5xdWV1ZVZpZGVvU2FtcGxlKCptX2FjdGl2ZVZpZGVvVHJhY2suZ2V0KCks
IHNhbXBsZS5nZXQoKSk7Ci0gICAgICAgIH0KLSAgICB9XTsKLX0KLQogQXVkaW9Tb3VyY2VQcm92
aWRlciogTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjphdWRpb1NvdXJjZVBy
b3ZpZGVyKCkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmV0dXJuIGEgbWl4IG9mIGFs
bCBhdWRpbyB0cmFja3MgLSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYwMzA1CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjpsYXllckVycm9yRGlkQ2hhbmdlKEFWU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyKiBsYXllcikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJTdGF0dXNEaWRDaGFuZ2UoU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyJiBsYXllcikKIHsKKyAgICBBU1NFUlQoJmxheWVyID09IG1fc2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLmdldCgpKTsKICAgICBVTlVTRURfUEFSQU0obGF5ZXIpOwotICAgIEVS
Uk9SX0xPRyhMT0dJREVOVElGSUVSLCAiZXJyb3IgPSAiLCBbW2xheWVyLmVycm9yIGxvY2FsaXpl
ZERlc2NyaXB0aW9uXSBVVEY4U3RyaW5nXSk7Ci19Ci0KLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjpsYXllclN0YXR1c0RpZENoYW5nZShBVlNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllciogbGF5ZXIpCi17Ci0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAic3Rh
dHVzID0gIiwgKGludClsYXllci5zdGF0dXMpOwotCi0gICAgaWYgKGxheWVyLnN0YXR1cyAhPSBB
VlF1ZXVlZFNhbXBsZUJ1ZmZlclJlbmRlcmluZ1N0YXR1c1JlbmRlcmluZykKLSAgICAgICAgcmV0
dXJuOwotICAgIGlmICghbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgfHwgIW1fYWN0aXZlVmlk
ZW9UcmFjayB8fCBsYXllciAhPSBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKKyAgICBpZiAo
IW1fYWN0aXZlVmlkZW9UcmFjaykKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byB0cmFjayA9
IG1fdmlkZW9UcmFja01hcC5nZXQobV9hY3RpdmVWaWRlb1RyYWNrLT5pZCgpKTsKLSAgICBpZiAo
dHJhY2spCisgICAgaWYgKGF1dG8gdHJhY2sgPSBtX3ZpZGVvVHJhY2tNYXAuZ2V0KG1fYWN0aXZl
VmlkZW9UcmFjay0+aWQoKSkpCiAgICAgICAgIHRyYWNrLT5zZXRUaW1lbGluZU9mZnNldChNZWRp
YVRpbWU6OmludmFsaWRUaW1lKCkpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQogewotICAgIGlmICht
X3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciAmJiBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIg
c3RhdHVzXSA9PSBBVlF1ZXVlZFNhbXBsZUJ1ZmZlclJlbmRlcmluZ1N0YXR1c0ZhaWxlZCkgewor
ICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciAmJiBtX3NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci0+ZGlkRmFpbCgpKSB7CiAgICAgICAgIGZsdXNoUmVuZGVyZXJzKCk7CiAgICAgICAg
IGlmIChtX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSkKICAgICAgICAgICAgIGVucXVldWVDb3Jy
ZWN0ZWRWaWRlb1NhbXBsZSgqbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpOwpAQCAtNDgwLDcg
KzI3Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjphcHBs
aWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6Zmx1c2hSZW5kZXJlcnMoKQogewogICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcikKLSAgICAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGZsdXNoXTsK
KyAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPmZsdXNoKCk7CiB9CiAKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnN1cmVMYXllcnMoKQpAQCAt
NDkxLDUxICsyODMsMjQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OmVuc3VyZUxheWVycygpCiAgICAgaWYgKCFtX21lZGlhU3RyZWFtUHJpdmF0ZSB8fCAhbV9t
ZWRpYVN0cmVhbVByaXZhdGUtPmFjdGl2ZVZpZGVvVHJhY2soKSB8fCAhbV9tZWRpYVN0cmVhbVBy
aXZhdGUtPmFjdGl2ZVZpZGVvVHJhY2soKS0+ZW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVlNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllckluc3RhbmNlKCkgaW5pdF0pOworICAgIGF1dG8gc2l6ZSA9
IHNuYXBwZWRJbnRSZWN0KG1fcGxheWVyLT5wbGF5ZXJDb250ZW50Qm94UmVjdCgpKS5zaXplKCk7
CisgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgPSBMb2NhbFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcjo6Y3JlYXRlKCp0aGlzLCBoaWRlUm9vdExheWVyKCksIHNpemUpOworCiAgICAgaWYg
KCFtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikgewotICAgICAgICBFUlJPUl9MT0coTE9HSURF
TlRJRklFUiwgIitbQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgYWxsb2NdIGZhaWxlZC4iKTsK
KyAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJDcmVhdGluZyB0aGUgU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyIGZhaWxlZC4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLmJhY2tncm91bmRDb2xvciA9IGNhY2hl
ZENHQ29sb3IoQ29sb3I6OmJsYWNrKTsKLSAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5n
ZXQoKS5hbmNob3JQb2ludCA9IHsgLjUsIC41IH07Ci0gICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIuZ2V0KCkubmVlZHNEaXNwbGF5T25Cb3VuZHNDaGFuZ2UgPSBZRVM7Ci0gICAgbV9zYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCkudmlkZW9HcmF2aXR5ID0gQVZMYXllclZpZGVvR3Jh
dml0eVJlc2l6ZUFzcGVjdEZpbGw7Ci0KLSAgICBtX2JhY2tncm91bmRMYXllciA9IGFkb3B0TlMo
W1tDQUxheWVyIGFsbG9jXSBpbml0XSk7Ci0gICAgbV9iYWNrZ3JvdW5kTGF5ZXIuZ2V0KCkuaGlk
ZGVuID0gaGlkZUJhY2tncm91bmRMYXllcigpOwotCi0gICAgbV9iYWNrZ3JvdW5kTGF5ZXIuZ2V0
KCkuYmFja2dyb3VuZENvbG9yID0gY2FjaGVkQ0dDb2xvcihDb2xvcjo6YmxhY2spOwotICAgIG1f
YmFja2dyb3VuZExheWVyLmdldCgpLm5lZWRzRGlzcGxheU9uQm91bmRzQ2hhbmdlID0gWUVTOwot
Ci0gICAgYXV0byBzaXplID0gc25hcHBlZEludFJlY3QobV9wbGF5ZXItPnBsYXllckNvbnRlbnRC
b3hSZWN0KCkpLnNpemUoKTsKLSAgICBtX2JhY2tncm91bmRMYXllci5nZXQoKS5ib3VuZHMgPSBD
R1JlY3RNYWtlKDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7Ci0KLSAgICBbbV9z
dGF0dXNDaGFuZ2VMaXN0ZW5lciBiZWdpbk9ic2VydmluZ0xheWVyc107Ci0KLSAgICBbbV9iYWNr
Z3JvdW5kTGF5ZXIgYWRkU3VibGF5ZXI6bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCld
OwotCi0jaWZuZGVmIE5ERUJVRwotICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBzZXRO
YW1lOkAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDIEFWU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyIl07Ci0gICAgW21fYmFja2dyb3VuZExheWVyIHNldE5hbWU6QCJNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIg
cGFyZW50Il07Ci0jZW5kaWYKLQogICAgIHVwZGF0ZVJlbmRlcmluZ01vZGUoKTsKICAgICB1cGRh
dGVEaXNwbGF5TGF5ZXIoKTsKIAotICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT5z
ZXRWaWRlb0xheWVyKG1fYmFja2dyb3VuZExheWVyLmdldCgpLCBzaXplKTsKKyAgICBtX3ZpZGVv
RnVsbHNjcmVlbkxheWVyTWFuYWdlci0+c2V0VmlkZW9MYXllcihtX3NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci0+cm9vdExheWVyKCksIHNpemUpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGVzdHJveUxheWVycygpCiB7Ci0gICAgW21fc3RhdHVzQ2hh
bmdlTGlzdGVuZXIgc3RvcE9ic2VydmluZ0xheWVyc107Ci0gICAgaWYgKG1fc2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyKSB7Ci0gICAgICAgIG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUuY2xlYXIo
KTsKLSAgICAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHN0b3BSZXF1ZXN0aW5nTWVk
aWFEYXRhXTsKLSAgICAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGZsdXNoXTsKKyAg
ICBpZiAobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpCiAgICAgICAgIG1fc2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyID0gbnVsbHB0cjsKLSAgICB9Ci0gICAgbV9iYWNrZ3JvdW5kTGF5ZXIgPSBu
dWxscHRyOwogCiAgICAgdXBkYXRlUmVuZGVyaW5nTW9kZSgpOwogICAgIApAQCAtNjAyLDIyICsz
NjcsMTIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnByZXBh
cmVUb1BsYXkoKQogCiBQbGF0Zm9ybUxheWVyKiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewotICAgIGlmICghbV9iYWNrZ3JvdW5k
TGF5ZXIgfHwgbV9kaXNwbGF5TW9kZSA9PSBOb25lKQorICAgIGlmICghbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIgfHwgIW1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5yb290TGF5ZXIoKSB8
fCBtX2Rpc3BsYXlNb2RlID09IE5vbmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
cmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT52aWRlb0lubGluZUxheWVyKCk7
CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qzo6ZGlzcGxheUxheWVyKCkKLXsKLSAgICByZXR1cm4gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIuZ2V0KCk7Ci19Ci0KLVBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6YmFja2dyb3VuZExheWVyKCkKLXsKLSAgICByZXR1cm4gbV9iYWNrZ3JvdW5k
TGF5ZXIuZ2V0KCk7Ci19Ci0KIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
RGlzcGxheU1vZGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjdXJyZW50
RGlzcGxheU1vZGUoKSBjb25zdAogewogICAgIGlmIChtX2ludHJpbnNpY1NpemUuaXNFbXB0eSgp
IHx8ICFtZXRhRGF0YUF2YWlsYWJsZSgpIHx8ICFtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikK
QEAgLTY1MywxOCArNDA4LDggQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OnVwZGF0ZURpc3BsYXlNb2RlKCkKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAi
dXBkYXRlZCB0byAiLCBzdGF0aWNfY2FzdDxpbnQ+KGRpc3BsYXlNb2RlKSk7CiAgICAgbV9kaXNw
bGF5TW9kZSA9IGRpc3BsYXlNb2RlOwogCi0gICAgYXV0byBoaWRkZW4gPSBtX2Rpc3BsYXlNb2Rl
IDwgUGF1c2VkSW1hZ2U7Ci0gICAgaWYgKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyICYmIG1f
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLmhpZGRlbiAhPSBoaWRkZW4pIHsKLSAgICAg
ICAgcnVuV2l0aG91dEFuaW1hdGlvbnMoW3RoaXMsIGhpZGRlbl0gewotICAgICAgICAgICAgbV9z
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCkuaGlkZGVuID0gaGlkZGVuOwotICAgICAgICB9
KTsKLSAgICB9Ci0gICAgaGlkZGVuID0gaGlkZUJhY2tncm91bmRMYXllcigpOwotICAgIGlmICht
X2JhY2tncm91bmRMYXllciAmJiBtX2JhY2tncm91bmRMYXllci5nZXQoKS5oaWRkZW4gIT0gaGlk
ZGVuKSB7Ci0gICAgICAgIHJ1bldpdGhvdXRBbmltYXRpb25zKFt0aGlzLCBoaWRkZW5dIHsKLSAg
ICAgICAgICAgIG1fYmFja2dyb3VuZExheWVyLmdldCgpLmhpZGRlbiA9IGhpZGRlbjsKLSAgICAg
ICAgfSk7Ci0gICAgfQorICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKKyAgICAg
ICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPnVwZGF0ZURpc3BsYXlNb2RlKG1fZGlzcGxh
eU1vZGUgPCBQYXVzZWRJbWFnZSwgaGlkZVJvb3RMYXllcigpKTsKIAogICAgIHJldHVybiB0cnVl
OwogfQpAQCAtMTAyMyw4ICs3NjgsMTEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OmNoZWNrU2VsZWN0ZWRWaWRlb1RyYWNrKCkKICAgICAgICAgICAgICAgICBt
X3dhaXRpbmdGb3JGaXJzdEltYWdlID0gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBlbnN1cmVM
YXllcnMoKTsKLSAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCkuaGlkZGVu
ID0gaGlkZVZpZGVvTGF5ZXIgfHwgbV9kaXNwbGF5TW9kZSA8IFBhdXNlZEltYWdlOwotICAgICAg
ICBtX2JhY2tncm91bmRMYXllci5nZXQoKS5oaWRkZW4gPSBoaWRlQmFja2dyb3VuZExheWVyKCk7
CisgICAgICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikgeworICAgICAgICAgICAg
aWYgKCFtX2FjdGl2ZVZpZGVvVHJhY2spCisgICAgICAgICAgICAgICAgbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXItPmNsZWFyRW5xdWV1ZWRTYW1wbGVzKCk7CisgICAgICAgICAgICBtX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci0+dXBkYXRlRGlzcGxheU1vZGUoaGlkZVZpZGVvTGF5ZXIgfHwg
bV9kaXNwbGF5TW9kZSA8IFBhdXNlZEltYWdlLCBoaWRlUm9vdExheWVyKCkpOworICAgICAgICB9
CiAKICAgICAgICAgbV9wZW5kaW5nU2VsZWN0ZWRUcmFja0NoZWNrID0gZmFsc2U7CiAgICAgICAg
IHVwZGF0ZURpc3BsYXlNb2RlKCk7CkBAIC0xMTczLDggKzkyMSw4IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXROZXR3b3JrU3RhdGUoTWVkaWFQbGF5ZXI6
Ok5ldHdvcmtTCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpz
ZXRCdWZmZXJpbmdQb2xpY3koTWVkaWFQbGF5ZXI6OkJ1ZmZlcmluZ1BvbGljeSBwb2xpY3kpCiB7
Ci0gICAgaWYgKHBvbGljeSAhPSBNZWRpYVBsYXllcjo6QnVmZmVyaW5nUG9saWN5OjpEZWZhdWx0
KQotICAgICAgICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgZmx1c2hBbmRSZW1vdmVJbWFn
ZV07CisgICAgaWYgKHBvbGljeSAhPSBNZWRpYVBsYXllcjo6QnVmZmVyaW5nUG9saWN5OjpEZWZh
dWx0ICYmIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQorICAgICAgICBtX3NhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci0+Zmx1c2hBbmRSZW1vdmVJbWFnZSgpOwogfQogCiB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2NoZWR1bGVEZWZlcnJlZFRhc2soRnVuY3Rp
b248dm9pZCAoKT4mJiBmdW5jdGlvbikKQEAgLTExOTcsMjMgKzk0NSwyMCBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Q3VycmVudEZyYW1lUGFpbnRlcjo6cmVz
ZXQoKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRl
RGlzcGxheUxheWVyKCkKIHsKLSAgICBpZiAoIW1fYmFja2dyb3VuZExheWVyIHx8ICFtX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcikKKyAgICBpZiAoIW1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGJhY2tncm91bmRCb3VuZHMgPSBtX2JhY2tn
cm91bmRMYXllci5nZXQoKS5ib3VuZHM7Ci0gICAgYXV0byB2aWRlb0JvdW5kcyA9IGJhY2tncm91
bmRCb3VuZHM7CisgICAgYXV0byBib3VuZHMgPSBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+
Ym91bmRzKCk7CisgICAgYXV0byB2aWRlb0JvdW5kcyA9IGJvdW5kczsKICAgICBpZiAobV92aWRl
b1JvdGF0aW9uID09IE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uOjpSaWdodCB8fCBtX3ZpZGVv
Um90YXRpb24gPT0gTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246OkxlZnQpCiAgICAgICAgIHN0
ZDo6c3dhcCh2aWRlb0JvdW5kcy5zaXplLndpZHRoLCB2aWRlb0JvdW5kcy5zaXplLmhlaWdodCk7
CiAKLSAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKS5ib3VuZHMgPSB2aWRlb0Jv
dW5kczsKLSAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKS5wb3NpdGlvbiA9IHsg
YmFja2dyb3VuZEJvdW5kcy5zaXplLndpZHRoIC8gMiwgYmFja2dyb3VuZEJvdW5kcy5zaXplLmhl
aWdodCAvIDJ9OworICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT51cGRhdGVCb3VuZHNB
bmRQb3NpdGlvbih2aWRlb0JvdW5kcywgeyBib3VuZHMuc2l6ZS53aWR0aCAvIDIsIGJvdW5kcy5z
aXplLmhlaWdodCAvIDJ9KTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OmJhY2tncm91bmRMYXllckJvdW5kc0NoYW5nZWQoKQordm9pZCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckJvdW5k
c0RpZENoYW5nZShTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXImKQogewotICAgIHJ1bldpdGhvdXRB
bmltYXRpb25zKFt0aGlzXSB7Ci0gICAgICAgIHVwZGF0ZURpc3BsYXlMYXllcigpOwotICAgIH0p
OworICAgIHVwZGF0ZURpc3BsYXlMYXllcigpOwogfQogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387778</attachid>
            <date>2020-01-15 05:03:42 -0800</date>
            <delta_ts>2020-01-15 05:41:16 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-206066-20200115140341.patch</filename>
            <type>text/plain</type>
            <size>55774</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTlhYjllOTk2YzM2NTNk
Y2Q1MWIyY2Y1MTlkZTZjOGU1NDY4NjM3My4uMGNlZGE3MThlOThmN2Q0NDI5MWM0OGI2ODA1Mjgw
MGYxNDhhYWFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtOTUyLDYgKzk1Miw3MiBAQAogCiAyMDIwLTAxLTEz
ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBJbnRyb2R1Y2Ug
YW4gYWJzdHJhY3QgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYwNjYKKworICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIENhcmxzb24uCisKKyAgICAgICAgTW92ZSB1c2Ugb2YgZGlzcGxheSBsYXllcnMgaW4g
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDIHRvIGEgbmV3IGNsYXNzIExvY2Fs
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyCisgICAgICAgIHRoYXQgaW1wbGVtZW50cyBhbiBpbnRl
cmZhY2UgbmFtZWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLgorICAgICAgICBBIGZ1dHVyZSBw
YXRjaCB3aWxsIGltcGxlbWVudCB0aGlzIGludGVyZmFjZSBieSBJUENpbmcgdG8gR1BVUHJvY2Vz
cy4KKyAgICAgICAgV2UgbW92ZSBib3RoIGxheWVycyBhbmQgaGFuZGxpbmcgb2YgdGhlIHNhbXBs
ZSBxdWV1ZSB0byBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci4KKworICAgICAgICBDb250
cmFyeSB0byBwcmV2aW91c2x5LCB3ZSBkbyBub3QgY2FsbCBhZ2FpbiBlbnF1ZXVlVmlkZW9TYW1w
bGUgaW4gY2FzZSB3ZSBlbnF1ZXVlZCBhIHNhbXBsZSBmb3IgbGF0ZXIgdXNlIGluIHRoZSBkaXNw
bGF5IGxheWVyLgorICAgICAgICBJbnN0ZWFkLCB3ZSBkaXJlY3RseSByZW5kZXIgaXQsIHdoaWNo
IHNob3VsZCBub3QgY2hhbmdlIG11Y2ggc2luY2UgdGhpcyBpcyBhIHJlYWx0aW1lIHRyYWNrIGFu
ZCBpbiB0aGUgZnV0dXJlIHRoZSBidWZmZXIgd2lsbCBiZSBpbiBHUFVQcm9jZXNzIGFueXdheS4K
KworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubW06IEFkZGVk
LgorICAgICAgICAoLVtXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyIGluaXRX
aXRoUGFyZW50Ol0pOgorICAgICAgICAoLVtXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxp
c3RlbmVyIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFu
Z2VMaXN0ZW5lciBpbnZhbGlkYXRlXSk6CisgICAgICAgICgtW1dlYkFWU2FtcGxlQnVmZmVyU3Rh
dHVzQ2hhbmdlTGlzdGVuZXIgYmVnaW5PYnNlcnZpbmdMYXllcnNdKToKKyAgICAgICAgKC1bV2Vi
QVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lciBzdG9wT2JzZXJ2aW5nTGF5ZXJzXSk6
CisgICAgICAgICgtW1dlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgb2JzZXJ2
ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKyAgICAgICAgKFdl
YkNvcmU6OnJ1bldpdGhvdXRBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6fkxvY2FsU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyOjpsYXllclN0YXR1c0RpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6bGF5ZXJFcnJvckRpZENoYW5nZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6cm9vdExheWVy
Qm91bmRzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjpkaXNwbGF5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI6OnJvb3RMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZGlkRmFpbCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6dXBkYXRlRGlzcGxheU1vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmJvdW5kcyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6dXBk
YXRlQWZmaW5lVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyOjp1cGRhdGVCb3VuZHNBbmRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5zdXJlTGF5ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpmbHVzaCk6CisgICAgICAg
IChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Zmx1c2hBbmRSZW1vdmVJ
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6
ZW5xdWV1ZVNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcjo6cmVtb3ZlT2xkU2FtcGxlc0Zyb21QZW5kaW5nUXVldWUpOgorICAgICAgICAoV2Vi
Q29yZTo6TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmFkZFNhbXBsZVRvUGVuZGluZ1F1
ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpj
bGVhckVucXVldWVkU2FtcGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcjo6cmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp+TWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZUNvcnJlY3RlZFZpZGVvU2FtcGxlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyU3RhdHVzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YXBwbGljYXRpb25EaWRC
ZWNvbWVBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjpmbHVzaFJlbmRlcmVycyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVuc3VyZUxheWVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmRlc3Ryb3lMYXll
cnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGlzcGxheUxheWVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlRGlzcGxheU1v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpjaGVja1NlbGVjdGVkVmlkZW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNldEJ1ZmZlcmluZ1BvbGljeSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0
ZURpc3BsYXlMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakM6OnNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckJvdW5kc0RpZENoYW5nZSk6
CisKKzIwMjAtMDEtMTUgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCiAgICAg
ICAgIENsZWFuLXVwIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oLy5tbQog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2MDYwCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGU2ZjgxN2E3ODE2ZDZhNGJjYzIwMTNhNTc5NDQ0
NDc2N2FlNzA4MGUuLjg5MDZmNTdkYzlkMzI0YzlmMGJkMWVmYjg1MGIyMGE5NTIwZTE5MGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMjUzLDYgKzI1Myw3IEBAIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMubW0gQG5v
LXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJB
VkZPYmpDLm1tIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2Jq
Qy5tbSBAbm8tdW5pZnkKK3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2Fs
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYy5tbSBAbm8tdW5p
ZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gQG5vLXVu
aWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggZmMxYjBmY2YxZWRjYjg0YWEwOTZmY2FiMjI1MzA5MzY4ZmQwNDgwMC4uY2MzNWE1
ODkxMTM0MTFiMTU4NjIwYmY0MDE5MTZlZmQ3NDNlZTk0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA2Nyw2ICsxMDY3LDcg
QEAKIAkJNDEzQzJDMzQxQkMyOUE4RjAwNzUyMDRDIC8qIEpTRE9NQ29uc3RydWN0b3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0MyQzMzMUJDMjlB
N0IwMDc1MjA0QyAvKiBKU0RPTUNvbnN0cnVjdG9yLmggKi87IH07CiAJCTQxM0NDRDRBMjBERTAz
NEYwMDY1QTIxQSAvKiBNb2NrTWVkaWFEZXZpY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0NDRDQ4MjBERTAxM0MwMDY1QTIxQSAvKiBNb2NrTWVk
aWFEZXZpY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0MTNFMDA3OTFEQjBFNEYyMDAyMzQxRDIgLyogTWVtb3J5UmVsZWFzZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzRTAwNzgxREIwRTRERTAw
MjM0MUQyIC8qIE1lbW9yeVJlbGVhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk0MTQ1OThDMjIzQzhEMTc3MDAyQjlDQzggLyogTG9jYWxTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTQ1OThDMTIzQzhBRDc5MDAyQjlDQzggLyogTG9jYWxTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIubW0gKi87IH07CiAJCTQxNEI4MjA1MUQ2REYwRTUwMDc3RUJFMyAvKiBT
dHJ1Y3R1cmVkQ2xvbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxNEI4MjAzMUQ2REYwRDkwMDc3RUJFMyAvKiBTdHJ1Y3R1cmVkQ2xvbmUuaCAqLzsg
fTsKIAkJNDE0REVERTcxRjlGRTkxRTAwNDdDNDBEIC8qIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNERFREU1
MUY5RkU5MTUwMDQ3QzQwRCAvKiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE1MDcxNTgxNjg1MDY3MzAw
QzNDN0IzIC8qIFNlbGVjdG9yRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTUwNzE1NjE2ODUwNjczMDBDM0M3QjMgLyogU2VsZWN0b3JGaWx0
ZXIuaCAqLzsgfTsKQEAgLTExNTMsNiArMTE1NCw4IEBACiAJCTQxRjA2MjE0MEY1RjE5MjYwMEEw
N0VBQyAvKiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjIxMjBGNUYxOTI2MDBBMDdFQUMgLyogSW5z
cGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oICovOyB9OwogCQk0MUYxRDIxRjBFRjM1QzJBMDBEQTg3
NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MUYxRDIxRDBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2Fj
aGVkRnJhbWVEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNDFGQUJEMkQxRjRERkU0QTAwNkE2Qzk3IC8qIERPTUNhY2hlRW5naW5lLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZBQkQyQjFGNERG
RTQyMDA2QTZDOTcgLyogRE9NQ2FjaGVFbmdpbmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MUZDRDZCOTIzQ0UwMTU1MDBDNjI1NjcgLyogU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTQ1OThCRTIzQzhBQUI4MDAyQjlDQzggLyogU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJNDFGQ0Q2QkIyM0NFMDI3NzAwQzYyNTY3IC8qIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTQ1OThDMDIzQzhBRDc4MDAyQjlDQzggLyogTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MjdE
QTcxRDEzNzM1REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQyN0RBNzFCMTM3MzVE
RkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwICovOyB9OwogCQk0MjdE
QTcxRTEzNzM1REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MjdEQTcxQzEzNzM1REZB
MDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmggKi87IH07CiAJCTQzMTA3QkUy
MThDQzE5REUwMENDMThFOCAvKiBTZWxlY3RvclBzZXVkb1R5cGVNYXAuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzMTA3QkUxMThDQzE5REUwMENDMThF
OCAvKiBTZWxlY3RvclBzZXVkb1R5cGVNYXAuaCAqLzsgfTsKQEAgLTczNDYsNiArNzM0OSw5IEBA
CiAJCTQxM0UwMDc4MURCMEU0REUwMDIzNDFEMiAvKiBNZW1vcnlSZWxlYXNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeVJlbGVhc2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDEzRTAwN0IxREIwRTcwNzAwMjM0MUQyIC8qIE1lbW9yeVJlbGVhc2VD
b2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lbW9yeVJl
bGVhc2VDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzRkM0Q0QxRkQx
REQ4QzAwNTQxQzRCIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9u
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQ1OThCRTIzQzhBQUI4MDAyQjlD
QzggLyogU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0MTQ1OThDMDIzQzhBRDc4MDAyQjlDQzggLyogTG9jYWxTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0
NTk4QzEyM0M4QUQ3OTAwMkI5Q0M4IC8qIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTG9jYWxTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNDdFMkIy
MUM4ODMzN0YwMEE3RTcxNSAvKiBGZXRjaEJvZHlPd25lci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGZXRjaEJvZHlPd25lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTQ3RTJCMzFDODk5MTI2MDBBN0U3MTUgLyogRmV0Y2hCb2R5T3duZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmV0Y2hCb2R5T3duZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTQ3RTJCNDFDODk5MTI2MDBBN0U3MTUgLyogRmV0
Y2hMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmV0Y2hM
b2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYzMjUsNiArMTYzMzEs
NyBAQAogCQkJCTA3NkYwRDBBMTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb24uaCAqLywKIAkJCQlDREJFQUVBQjE5RDkyQjZDMDBCRUJBODggLyogTWVkaWFT
ZWxlY3Rpb25Hcm91cEFWRk9iakMuaCAqLywKIAkJCQlDREJFQUVBQTE5RDkyQjZDMDBCRUJBODgg
LyogTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW0gKi8sCisJCQkJNDE0NTk4QkUyM0M4QUFC
ODAwMkI5Q0M4IC8qIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oICovLAogCQkJCUNEMzM2RjYz
MTdGQTBBNEQwMERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRi5oICovLAogCQkJCTA3MDlE
NzkwMUFFNTU1N0UwMDRFNDJGOCAvKiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcCAqLywK
IAkJCQkwNzA5RDc5MTFBRTU1NTdFMDA0RTQyRjggLyogV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1h
Yy5oICovLApAQCAtMjY3NDgsNiArMjY3NTUsOCBAQAogCQkJCTA3QUE2QjZBMTY2RDAxOTUwMEQ0
NTY3MSAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbSAqLywKIAkJCQkwNzM2N0RE
RDE3MkNBNjdGMDBEODYxQjkgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMu
aCAqLywKIAkJCQkwNzM2N0RERTE3MkNBNjdGMDBEODYxQjkgLyogSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUxlZ2FjeUFWRk9iakMubW0gKi8sCisJCQkJNDE0NTk4QzAyM0M4QUQ3ODAwMkI5Q0M4IC8q
IExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmggKi8sCisJCQkJNDE0NTk4QzEyM0M4QUQ3
OTAwMkI5Q0M4IC8qIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tICovLAogCQkJCTA3
OEU0M0RCMUFCQjZGNkYwMDFDMkZBNiAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLmgg
Ki8sCiAJCQkJMDc4RTQzREMxQUJCNkY2RjAwMUMyRkE2IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJNYWMubW0gKi8sCiAJCQkJREY5QUZENzAxM0ZDMzFEODAwMTVGRUI3IC8qIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCAqLywKQEAgLTMxMzk3LDYgKzMxNDA2LDcgQEAK
IAkJCQk3NjMzQTcyNjEzRDhCMzNBMDA4NTAxQjYgLyogTG9jYWxlVG9TY3JpcHRNYXBwaW5nLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNTE2RThCNzEzNkUwNERCMDA3NkMzQzAgLyogTG9jYWxpemVk
RGF0ZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzUyMDdCRTA5QkQ0MTBBMDBGMjAzOEQg
LyogTG9jYWxpemVkU3RyaW5ncy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFGQ0Q2QkIyM0NFMDI3
NzAwQzYyNTY3IC8qIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQ0UxQzQxQjBEOTgyOTgwMDAzQjAyRjIgLyogTG9jYXRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTZCNEQ0MTJEMjM5ODNGODgwMDI0OTRDMiAvKiBMb2dnZWRJblN0YXR1cy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTgyMzlFMDEwOUIzQ0Y4QTAwQjYwNjQxIC8qIExvZ2dpbmcuaCBp
biBIZWFkZXJzICovLApAQCAtMzIxODEsNiArMzIxOTEsNyBAQAogCQkJCTI5M0VBRTFGMTM1NkIy
RkUwMDY3QUNGOSAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCBpbiBIZWFkZXJzICovLAog
CQkJCTdDNTIyMjlFMUUxREFFNDcwMDJDQjhGNyAvKiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDRTdBNkMyODIwODUzN0UyMDBGQTJCNDYgLyogU2FtZVNpdGVJ
bmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUZDRDZCOTIzQ0UwMTU1MDBDNjI1NjcgLyogU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREQ3MDg5NzE4MzU5
RjZGMDAyQjNEQzYgLyogU2FtcGxlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTFDQjBF
Rjg2RDQ3MDA5RDBDQUYgLyogU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTVERkU4RjU3MEQxNjQ3N0MwMDc2RTkzNyAvKiBTY2hlZHVsZWRBY3Rpb24uaCBpbiBI
ZWFkZXJzICovLApAQCAtMzM2NTAsNiArMzM2NjEsNyBAQAogCQkJCTQxRDI4RDBEMjEzOUUwNTgw
MEY0MjA2RiAvKiBMaWJXZWJSVENTdGF0c0NvbGxlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0MTg2QkQzRTIxM0VFMzQwMDAwMTgyNkYgLyogTGliV2ViUlRDVXRpbHMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTc1OUU5M0UxNEVGMUNGODAwMjZBMkREIC8qIExvYWRhYmxlVGV4dFRyYWNr
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxNDU5OEMyMjNDOEQxNzcwMDJCOUNDOCAvKiBMb2Nh
bFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUZBQkU3MkZF
MTA1OUMyMTEwMEQ5OTlERCAvKiBNYXRoTUxOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQky
RDlCRjcwNTFEQkZCQjI0MDA3QTdEOTkgLyogTWVkaWFFbmNyeXB0ZWRFdmVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyRDlCRjc0NzFEQkZEQzQ5MDA3QTdEOTkgLyogTWVkaWFLZXlNZXNzYWdl
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGZmNTdkN2M3ZDU5YTcxZDU2N2JjMmFiZDlmNjE5
MmIyYmZiY2NjMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaApAQCAtMCwwICsx
LDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBNZWRpYVRpbWU7Cit9CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKK2NsYXNzIEludFNpemU7CitjbGFzcyBNZWRpYVNhbXBsZTsKKworY2xh
c3MgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHsKK3B1YmxpYzoKKyAgICBjbGFzcyBDbGllbnQg
OiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q2xpZW50PiB7CisgICAgcHVibGljOgorICAgICAgICB2
aXJ0dWFsIH5DbGllbnQoKSA9IGRlZmF1bHQ7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXJTdGF0dXNEaWRDaGFuZ2UoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
JikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyQm91
bmRzRGlkQ2hhbmdlKFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciYpID0gMDsKKyAgICAgICAgdmly
dHVhbCBXVEY6Ok1lZGlhVGltZSBzdHJlYW1UaW1lKCkgY29uc3QgPSAwOworICAgIH07CisKKyAg
ICBleHBsaWNpdCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoQ2xpZW50Jik7CisgICAgdmlydHVh
bCB+U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCBi
b29sIGRpZEZhaWwoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGlzcGxh
eU1vZGUoYm9vbCBoaWRlRGlzcGxheUxheWVyLCBib29sIGhpZGVSb290TGF5ZXIpID0gMDsKKwor
ICAgIHZpcnR1YWwgQ0dSZWN0IGJvdW5kcygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlQWZmaW5lVHJhbnNmb3JtKENHQWZmaW5lVHJhbnNmb3JtKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9uKENHUmVjdCwgQ0dQb2ludCkgPSAwOworCisg
ICAgdmlydHVhbCB2b2lkIGZsdXNoKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBmbHVzaEFuZFJl
bW92ZUltYWdlKCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGVucXVldWVTYW1wbGUoTWVkaWFT
YW1wbGUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyRW5xdWV1ZWRTYW1wbGVzKCkgPSAw
OworCisgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiByb290TGF5ZXIoKSA9IDA7CisKK3Byb3Rl
Y3RlZDoKKyAgICBXZWFrUHRyPENsaWVudD4gbV9jbGllbnQ7Cit9OworCitpbmxpbmUgU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoQ2xpZW50JiBjbGll
bnQpCisgICAgOiBtX2NsaWVudChtYWtlV2Vha1B0cihjbGllbnQpKQoreworfQorCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yOWNkZWE0M2I5ZmE4ZjA2MWRjMGNmMTQwM2IzNTJhOTFkZmNmYzFk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaApAQCAtMCwwICsx
LDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9O
KQorCisjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgiCisjaW5jbHVkZSA8d3Rm
L0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CisKK09CSkNfQ0xBU1MgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI7CitPQkpDX0NM
QVNTIFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXI7CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgV0VCQ09SRV9FWFBPUlQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIgZmluYWwgOiBwdWJsaWMgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLCBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gY3JlYXRlKENsaWVudCYsIGJvb2wgaGlkZVJvb3RMYXll
ciwgSW50U2l6ZSk7CisKKyAgICBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihSZXRhaW5Q
dHI8QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+JiYsIENsaWVudCYsIGJvb2wgaGlkZVJvb3RM
YXllciwgSW50U2l6ZSk7CisgICAgfkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKCk7CisK
KyAgICAvLyBBUEkgdXNlZCBieSBXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVy
CisgICAgdm9pZCBsYXllclN0YXR1c0RpZENoYW5nZSgpOworICAgIHZvaWQgbGF5ZXJFcnJvckRp
ZENoYW5nZSgpOworICAgIHZvaWQgcm9vdExheWVyQm91bmRzRGlkQ2hhbmdlKCk7CisKKyAgICBQ
bGF0Zm9ybUxheWVyKiBkaXNwbGF5TGF5ZXIoKTsKKworICAgIFBsYXRmb3JtTGF5ZXIqIHJvb3RM
YXllcigpIGZpbmFsOworCitwcml2YXRlOgorICAgIGJvb2wgZGlkRmFpbCgpIGNvbnN0IGZpbmFs
OworCisgICAgdm9pZCB1cGRhdGVEaXNwbGF5TW9kZShib29sIGhpZGVEaXNwbGF5TGF5ZXIsIGJv
b2wgaGlkZVJvb3RMYXllcikgZmluYWw7CisKKyAgICBDR1JlY3QgYm91bmRzKCkgY29uc3QgZmlu
YWw7CisgICAgdm9pZCB1cGRhdGVBZmZpbmVUcmFuc2Zvcm0oQ0dBZmZpbmVUcmFuc2Zvcm0pICBm
aW5hbDsKKyAgICB2b2lkIHVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9uKENHUmVjdCwgQ0dQb2ludCkg
ZmluYWw7CisKKyAgICB2b2lkIGZsdXNoKCkgZmluYWw7CisgICAgdm9pZCBmbHVzaEFuZFJlbW92
ZUltYWdlKCkgZmluYWw7CisKKyAgICB2b2lkIGVucXVldWVTYW1wbGUoTWVkaWFTYW1wbGUmKSBm
aW5hbDsKKyAgICB2b2lkIGNsZWFyRW5xdWV1ZWRTYW1wbGVzKCkgZmluYWw7CisKKyAgICB2b2lk
IGVuc3VyZUxheWVycygpOworCisgICAgdm9pZCByZW1vdmVPbGRTYW1wbGVzRnJvbVBlbmRpbmdR
dWV1ZSgpOworICAgIHZvaWQgYWRkU2FtcGxlVG9QZW5kaW5nUXVldWUoTWVkaWFTYW1wbGUmKTsK
KyAgICB2b2lkIHJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JWaWRlb0RhdGEoKTsKKwor
cHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8V2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0
ZW5lcj4gbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lcjsKKyAgICBSZXRhaW5QdHI8QVZTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXI+IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOworICAgIFJldGFpblB0
cjxQbGF0Zm9ybUxheWVyPiBtX3Jvb3RMYXllcjsKKworICAgIHVzaW5nIFBlbmRpbmdTYW1wbGVR
dWV1ZSA9IERlcXVlPFJlZjxNZWRpYVNhbXBsZT4+OworICAgIFBlbmRpbmdTYW1wbGVRdWV1ZSBt
X3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlOworfTsKKyAgICAKK30KKworI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmYwYzljYzczZmFkODQ1MzFjOTc5MTY0MWQzODNjY2U0OTczYzg5YzIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbQpAQCAtMCwwICsxLDM2OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZp
Zy5oIgorI2ltcG9ydCAiTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCIKKworI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCisKKyNpbXBvcnQgIkNvbG9y
LmgiCisjaW1wb3J0ICJJbnRTaXplLmgiCisjaW1wb3J0ICJNZWRpYVNhbXBsZS5oIgorCisjaW1w
b3J0IDxBVkZvdW5kYXRpb24vQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaD4KKyNpbXBvcnQg
PFF1YXJ0ekNvcmUvQ0FMYXllci5oPgorI2ltcG9ydCA8UXVhcnR6Q29yZS9DQVRyYW5zYWN0aW9u
Lmg+CisKKyNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CisKKyNpbXBvcnQgPHBhbC9jb2NvYS9B
VkZvdW5kYXRpb25Tb2Z0TGluay5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworQGlu
dGVyZmFjZSBXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyIDogTlNPYmplY3Qg
eworICAgIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKiBfcGFyZW50OworfQorCistIChp
ZClpbml0V2l0aFBhcmVudDooTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIqKWNhbGxiYWNr
OworLSAodm9pZClpbnZhbGlkYXRlOworLSAodm9pZCliZWdpbk9ic2VydmluZ0xheWVyczsKKy0g
KHZvaWQpc3RvcE9ic2VydmluZ0xheWVyczsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYkFW
U2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIKKworLSAoaWQpaW5pdFdpdGhQYXJlbnQ6
KExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKilwYXJlbnQKK3sKKyAgICBpZiAoIShzZWxm
ID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9wYXJlbnQgPSBw
YXJlbnQ7CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAg
W3NlbGYgaW52YWxpZGF0ZV07CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lkKWlu
dmFsaWRhdGUKK3sKKyAgICBbc2VsZiBzdG9wT2JzZXJ2aW5nTGF5ZXJzXTsKKyAgICBfcGFyZW50
ID0gbnVsbHB0cjsKK30KKworLSAodm9pZCliZWdpbk9ic2VydmluZ0xheWVycworeworICAgIEFT
U0VSVChfcGFyZW50KTsKKyAgICBBU1NFUlQoX3BhcmVudC0+ZGlzcGxheUxheWVyKCkpOworICAg
IEFTU0VSVChfcGFyZW50LT5yb290TGF5ZXIoKSk7CisKKyAgICBbX3BhcmVudC0+ZGlzcGxheUxh
eWVyKCkgYWRkT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAic3RhdHVzIiBvcHRpb25zOk5TS2V5
VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDpuaWxdOworICAgIFtfcGFyZW50LT5kaXNw
bGF5TGF5ZXIoKSBhZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJlcnJvciIgb3B0aW9uczpO
U0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6bmlsXTsKKyAgICBbX3BhcmVudC0+
cm9vdExheWVyKCkgYWRkT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAiYm91bmRzIiBvcHRpb25z
Ok5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDpuaWxdOworfQorCistICh2b2lk
KXN0b3BPYnNlcnZpbmdMYXllcnMKK3sKKyAgICBpZiAoIV9wYXJlbnQpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChfcGFyZW50LT5kaXNwbGF5TGF5ZXIoKSkgeworICAgICAgICBbX3BhcmVu
dC0+ZGlzcGxheUxheWVyKCkgcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAic3RhdHVz
Il07CisgICAgICAgIFtfcGFyZW50LT5kaXNwbGF5TGF5ZXIoKSByZW1vdmVPYnNlcnZlcjpzZWxm
IGZvcktleVBhdGg6QCJlcnJvciJdOworICAgIH0KKyAgICBpZiAoX3BhcmVudC0+cm9vdExheWVy
KCkpCisgICAgICAgIFtfcGFyZW50LT5yb290TGF5ZXIoKSByZW1vdmVPYnNlcnZlcjpzZWxmIGZv
cktleVBhdGg6QCJib3VuZHMiXTsKK30KKworLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRo
OihOU1N0cmluZyAqKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlv
bmFyeSAqKWNoYW5nZSBjb250ZXh0Oih2b2lkICopY29udGV4dAoreworICAgIFVOVVNFRF9QQVJB
TShjb250ZXh0KTsKKyAgICBVTlVTRURfUEFSQU0oa2V5UGF0aCk7CisgICAgQVNTRVJUKF9wYXJl
bnQpOworCisgICAgaWYgKCFfcGFyZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoW29i
amVjdCBpc0tpbmRPZkNsYXNzOlBBTDo6Z2V0QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJDbGFz
cygpXSkgeworICAgICAgICBBU1NFUlQob2JqZWN0ID09IF9wYXJlbnQtPmRpc3BsYXlMYXllcigp
KTsKKworICAgICAgICBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAic3RhdHVzIl0pIHsK
KyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8
V2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcj4oc2VsZildIHsKKyAgICAgICAg
ICAgICAgICBpZiAoIXByb3RlY3RlZFNlbGYtPl9wYXJlbnQpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9wYXJlbnQtPmxheWVy
U3RhdHVzRGlkQ2hhbmdlKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJlcnJv
ciJdKSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gUmV0
YWluUHRyPFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXI+KHNlbGYpXSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCFwcm90ZWN0ZWRTZWxmLT5fcGFyZW50KQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBwcm90ZWN0ZWRTZWxmLT5fcGFyZW50
LT5sYXllckVycm9yRGlkQ2hhbmdlKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChbW2NoYW5nZSB2YWx1ZUZvcktleTpO
U0tleVZhbHVlQ2hhbmdlTm90aWZpY2F0aW9uSXNQcmlvcktleV0gYm9vbFZhbHVlXSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKChDQUxheWVyICopb2JqZWN0ID09IF9wYXJlbnQtPnJvb3RM
YXllcigpKSB7CisgICAgICAgIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJib3VuZHMi
XSkgeworICAgICAgICAgICAgaWYgKCFfcGFyZW50KQorICAgICAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICAgICAgaWYgKGlzTWFpblRocmVhZCgpKSB7CisgICAgICAgICAgICAgICAgX3Bh
cmVudC0+cm9vdExheWVyQm91bmRzRGlkQ2hhbmdlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0
ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXI+
KHNlbGYpXSB7CisgICAgICAgICAgICAgICAgaWYgKCFwcm90ZWN0ZWRTZWxmLT5fcGFyZW50KQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBwcm90ZWN0ZWRT
ZWxmLT5fcGFyZW50LT5yb290TGF5ZXJCb3VuZHNEaWRDaGFuZ2UoKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9CisgICAgfQorCit9CitAZW5kCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
c3RhdGljIHZvaWQgcnVuV2l0aG91dEFuaW1hdGlvbnMoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lk
KCk+JiBmdW5jdGlvbikKK3sKKyAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CisgICAgW0NBVHJh
bnNhY3Rpb24gc2V0QW5pbWF0aW9uRHVyYXRpb246MF07CisgICAgW0NBVHJhbnNhY3Rpb24gc2V0
RGlzYWJsZUFjdGlvbnM6WUVTXTsKKyAgICBmdW5jdGlvbigpOworICAgIFtDQVRyYW5zYWN0aW9u
IGNvbW1pdF07Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+
IExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjcmVhdGUoQ2xpZW50JiBjbGllbnQsIGJv
b2wgaGlkZVJvb3RMYXllciwgSW50U2l6ZSBzaXplKQoreworICAgIGF1dG8gc2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyID0gYWRvcHROUyhbUEFMOjphbGxvY0FWU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVySW5zdGFuY2UoKSBpbml0XSk7CisgICAgaWYgKCFzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIG1ha2VVbmlxdWU8TG9jYWxT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+KFdURk1vdmUoc2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
KSwgY2xpZW50LCBoaWRlUm9vdExheWVyLCBzaXplKTsKK30KKworTG9jYWxTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKFJldGFpblB0cjxBVlNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4mJiBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIsIENsaWVu
dCYgY2xpZW50LCBib29sIGhpZGVSb290TGF5ZXIsIEludFNpemUgc2l6ZSkKKyAgICA6IFNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcihjbGllbnQpCisgICAgLCBtX3N0YXR1c0NoYW5nZUxpc3RlbmVy
KGFkb3B0TlMoW1tXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyIGFsbG9jXSBp
bml0V2l0aFBhcmVudDp0aGlzXSkpCisgICAgLCBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihX
VEZNb3ZlKHNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikpCit7CisgICAgbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIuZ2V0KCkuYmFja2dyb3VuZENvbG9yID0gY2FjaGVkQ0dDb2xvcihDb2xvcjo6
YmxhY2spOworICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLmFuY2hvclBvaW50
ID0geyAuNSwgLjUgfTsKKyAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKS5uZWVk
c0Rpc3BsYXlPbkJvdW5kc0NoYW5nZSA9IFlFUzsKKyAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5nZXQoKS52aWRlb0dyYXZpdHkgPSBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0
RmlsbDsKKworICAgIG1fcm9vdExheWVyID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRd
KTsKKyAgICBtX3Jvb3RMYXllci5nZXQoKS5oaWRkZW4gPSBoaWRlUm9vdExheWVyOworCisgICAg
bV9yb290TGF5ZXIuZ2V0KCkuYmFja2dyb3VuZENvbG9yID0gY2FjaGVkQ0dDb2xvcihDb2xvcjo6
YmxhY2spOworICAgIG1fcm9vdExheWVyLmdldCgpLm5lZWRzRGlzcGxheU9uQm91bmRzQ2hhbmdl
ID0gWUVTOworCisgICAgbV9yb290TGF5ZXIuZ2V0KCkuYm91bmRzID0gQ0dSZWN0TWFrZSgwLCAw
LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworCisgICAgW21fc3RhdHVzQ2hhbmdlTGlz
dGVuZXIgYmVnaW5PYnNlcnZpbmdMYXllcnNdOworCisgICAgW21fcm9vdExheWVyIGFkZFN1Ymxh
eWVyOm1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpXTsKKworI2lmbmRlZiBOREVCVUcK
KyAgICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgc2V0TmFtZTpAIkxvY2FsU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIl07CisgICAgW21fcm9v
dExheWVyIHNldE5hbWU6QCJMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBBVlNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllciBwYXJlbnQiXTsKKyNlbmRpZgorfQorCitMb2NhbFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcjo6fkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKCkKK3sKKyAgICBb
bV9zdGF0dXNDaGFuZ2VMaXN0ZW5lciBzdG9wT2JzZXJ2aW5nTGF5ZXJzXTsKKworICAgIG1fcGVu
ZGluZ1ZpZGVvU2FtcGxlUXVldWUuY2xlYXIoKTsKKworICAgIFttX3NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllciBzdG9wUmVxdWVzdGluZ01lZGlhRGF0YV07CisgICAgW21fc2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyIGZsdXNoXTsKKyAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciA9IG51bGxw
dHI7CisKKyAgICBtX3Jvb3RMYXllciA9IG51bGxwdHI7Cit9CisKK3ZvaWQgTG9jYWxTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXI6OmxheWVyU3RhdHVzRGlkQ2hhbmdlKCkKK3sKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQo
KS5zdGF0dXMgIT0gQVZRdWV1ZWRTYW1wbGVCdWZmZXJSZW5kZXJpbmdTdGF0dXNSZW5kZXJpbmcp
CisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm47Cisg
ICAgbV9jbGllbnQtPnNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllclN0YXR1c0RpZENoYW5nZSgqdGhp
cyk7Cit9CisKK3ZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmxheWVyRXJyb3JE
aWRDaGFuZ2UoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgLy8gRklYTUU6
IExvZyBlcnJvci4KK30KKwordm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6cm9v
dExheWVyQm91bmRzRGlkQ2hhbmdlKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NsaWVudC0+c2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyQm91bmRzRGlkQ2hhbmdlKCp0aGlzKTsKK30KKworUGxhdGZvcm1M
YXllciogTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmRpc3BsYXlMYXllcigpCit7Cisg
ICAgcmV0dXJuIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpOworfQorCitQbGF0Zm9y
bUxheWVyKiBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6cm9vdExheWVyKCkKK3sKKyAg
ICByZXR1cm4gbV9yb290TGF5ZXIuZ2V0KCk7Cit9CisKK2Jvb2wgTG9jYWxTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OmRpZEZhaWwoKSBjb25zdAoreworICAgIHJldHVybiBbbV9zYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIgc3RhdHVzXSA9PSBBVlF1ZXVlZFNhbXBsZUJ1ZmZlclJlbmRlcmluZ1N0
YXR1c0ZhaWxlZDsKK30KKwordm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6dXBk
YXRlRGlzcGxheU1vZGUoYm9vbCBoaWRlRGlzcGxheUxheWVyLCBib29sIGhpZGVSb290TGF5ZXIp
Cit7CisgICAgaWYgKG1fcm9vdExheWVyLmdldCgpLmhpZGRlbiA9PSBoaWRlUm9vdExheWVyICYm
IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLmhpZGRlbiA9PSBoaWRlRGlzcGxheUxh
eWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBydW5XaXRob3V0QW5pbWF0aW9ucyhbJl0gewor
ICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKS5oaWRkZW4gPSBoaWRlRGlz
cGxheUxheWVyOworICAgICAgICBtX3Jvb3RMYXllci5nZXQoKS5oaWRkZW4gPSBoaWRlUm9vdExh
eWVyOworICAgIH0pOworfQorCitDR1JlY3QgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6
OmJvdW5kcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcm9vdExheWVyLmdldCgpLmJvdW5kczsK
K30KKwordm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6dXBkYXRlQWZmaW5lVHJh
bnNmb3JtKENHQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSkKK3sKKyAgICBydW5XaXRob3V0QW5p
bWF0aW9ucyhbJl0geworICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKS5h
ZmZpbmVUcmFuc2Zvcm0gPSB0cmFuc2Zvcm07CisgICAgfSk7Cit9CisKK3ZvaWQgTG9jYWxTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9uKENHUmVjdCB2aWRl
b0JvdW5kcywgQ0dQb2ludCBwb3NpdGlvbikKK3sKKyAgICBydW5XaXRob3V0QW5pbWF0aW9ucyhb
Jl0geworICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKS5ib3VuZHMgPSB2
aWRlb0JvdW5kczsKKyAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCkucG9z
aXRpb24gPSBwb3NpdGlvbjsKKyAgICB9KTsKK30KKwordm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcjo6Zmx1c2goKQoreworICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBm
bHVzaF07Cit9CisKK3ZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmZsdXNoQW5k
UmVtb3ZlSW1hZ2UoKQoreworICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBmbHVzaEFu
ZFJlbW92ZUltYWdlXTsKK30KKwordm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6
ZW5xdWV1ZVNhbXBsZShNZWRpYVNhbXBsZSYgc2FtcGxlKQoreworICAgIGlmICghW21fc2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyIGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkgeworICAgICAgICBh
ZGRTYW1wbGVUb1BlbmRpbmdRdWV1ZShzYW1wbGUpOworICAgICAgICByZXF1ZXN0Tm90aWZpY2F0
aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRhKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgZW5xdWV1ZVNhbXBsZUJ1ZmZlcjpzYW1wbGUu
cGxhdGZvcm1TYW1wbGUoKS5zYW1wbGUuY21TYW1wbGVCdWZmZXJdOworfQorCit2b2lkIExvY2Fs
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpyZW1vdmVPbGRTYW1wbGVzRnJvbVBlbmRpbmdRdWV1
ZSgpCit7CisgICAgaWYgKG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUuaXNFbXB0eSgpIHx8ICFt
X2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBkZWNvZGVUaW1lID0gbV9wZW5k
aW5nVmlkZW9TYW1wbGVRdWV1ZS5maXJzdCgpLT5kZWNvZGVUaW1lKCk7CisgICAgaWYgKCFkZWNv
ZGVUaW1lLmlzVmFsaWQoKSB8fCBkZWNvZGVUaW1lIDwgTWVkaWFUaW1lOjp6ZXJvVGltZSgpKSB7
CisgICAgICAgIHdoaWxlIChtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLnNpemUoKSA+IDUpCisg
ICAgICAgICAgICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLnJlbW92ZUZpcnN0KCk7CisKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE1lZGlhVGltZSBub3cgPSBtX2NsaWVudC0+c3Ry
ZWFtVGltZSgpOworICAgIHdoaWxlICghbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5pc0VtcHR5
KCkpIHsKKyAgICAgICAgaWYgKG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUuZmlyc3QoKS0+ZGVj
b2RlVGltZSgpID4gbm93KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIG1fcGVuZGluZ1Zp
ZGVvU2FtcGxlUXVldWUucmVtb3ZlRmlyc3QoKTsKKyAgICB9Cit9CisKK3ZvaWQgTG9jYWxTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmFkZFNhbXBsZVRvUGVuZGluZ1F1ZXVlKE1lZGlhU2FtcGxl
JiBzYW1wbGUpCit7CisgICAgcmVtb3ZlT2xkU2FtcGxlc0Zyb21QZW5kaW5nUXVldWUoKTsKKyAg
ICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmFwcGVuZChzYW1wbGUpOworfQorCit2b2lkIExv
Y2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjbGVhckVucXVldWVkU2FtcGxlcygpCit7Cisg
ICAgbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5jbGVhcigpOworfQorCit2b2lkIExvY2FsU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyOjpyZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yVmlk
ZW9EYXRhKCkKK3sKKyAgICBhdXRvIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpOworICAg
IFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciByZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25R
dWV1ZTpkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpIHVzaW5nQmxvY2s6XnsKKyAgICAgICAgaWYg
KCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBbbV9zYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIgc3RvcFJlcXVlc3RpbmdNZWRpYURhdGFdOworCisgICAgICAgIHdoaWxl
ICghbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGlm
ICghW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGlzUmVhZHlGb3JNb3JlTWVkaWFEYXRhXSkg
eworICAgICAgICAgICAgICAgIHJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JWaWRlb0Rh
dGEoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGF1dG8gc2FtcGxlID0gbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS50YWtlRmlyc3QoKTsK
KyAgICAgICAgICAgIGVucXVldWVTYW1wbGUoc2FtcGxlLmdldCgpKTsKKyAgICAgICAgfQorICAg
IH1dOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaAppbmRleCAwMzQw
YThkY2RmMTI0YTZmYzQ5OThlMWZjODY4MWEwYzExMjUzZTlmLi5kOWFmMjdhNjAxMGQ3OTg4NjYy
NTJlZWUzOGE1YzUwNWU3YWViODVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaApAQCAtMzAs
MTAgKzMwLDEwIEBACiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAi
TWVkaWFTYW1wbGUuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVByaXZhdGUuaCIKKyNpbmNsdWRl
ICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KLSNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBPQkpDX0NMQVNTIEFWU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyOwogT0JKQ19DTEFTUyBXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVy
OwpAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOwogY2xhc3Mg
VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQzsKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRl
TWVkaWFTdHJlYW07CiAKLWNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
QyBmaW5hbCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM+LCBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlLCBwcml2YXRl
IE1lZGlhU3RyZWFtUHJpdmF0ZTo6T2JzZXJ2ZXIsIHByaXZhdGUgTWVkaWFTdHJlYW1UcmFja1By
aXZhdGU6Ok9ic2VydmVyCitjbGFzcyBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMgZmluYWwgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlLCBwcml2YXRlIE1l
ZGlhU3RyZWFtUHJpdmF0ZTo6T2JzZXJ2ZXIsIHByaXZhdGUgTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGU6Ok9ic2VydmVyLCBwdWJsaWMgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpDbGllbnQKICNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVyCiAjZW5k
aWYKQEAgLTc1LDEzICs3NSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuc3VyZUxheWVycygpOwog
ICAgIHZvaWQgZGVzdHJveUxheWVycygpOwogCi0gICAgdm9pZCBsYXllclN0YXR1c0RpZENoYW5n
ZShBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciopOwotICAgIHZvaWQgbGF5ZXJFcnJvckRpZENo
YW5nZShBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciopOwotICAgIHZvaWQgYmFja2dyb3VuZExh
eWVyQm91bmRzQ2hhbmdlZCgpOwotCi0gICAgUGxhdGZvcm1MYXllciogZGlzcGxheUxheWVyKCk7
Ci0gICAgUGxhdGZvcm1MYXllciogYmFja2dyb3VuZExheWVyKCk7Ci0KICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fbG9nZ2VyLmdldCgpOyB9CiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gIk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
QyI7IH0KQEAgLTEzNywxMCArMTMwLDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZmx1c2hSZW5k
ZXJlcnMoKTsKIAotICAgIHVzaW5nIFBlbmRpbmdTYW1wbGVRdWV1ZSA9IERlcXVlPFJlZjxNZWRp
YVNhbXBsZT4+OwotICAgIHZvaWQgYWRkU2FtcGxlVG9QZW5kaW5nUXVldWUoUGVuZGluZ1NhbXBs
ZVF1ZXVlJiwgTWVkaWFTYW1wbGUmKTsKLSAgICB2b2lkIHJlbW92ZU9sZFNhbXBsZXNGcm9tUGVu
ZGluZ1F1ZXVlKFBlbmRpbmdTYW1wbGVRdWV1ZSYpOwotCiAgICAgTWVkaWFUaW1lIGNhbGN1bGF0
ZVRpbWVsaW5lT2Zmc2V0KGNvbnN0IE1lZGlhU2FtcGxlJiwgZG91YmxlKTsKICAgICAKICAgICB2
b2lkIGVucXVldWVWaWRlb1NhbXBsZShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYsIE1lZGlhU2Ft
cGxlJik7CkBAIC0yMTIsNyArMjAxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFZpZGVvRnVs
bHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFt
ZShGbG9hdFJlY3QpIG92ZXJyaWRlOwogCi0gICAgTWVkaWFUaW1lIHN0cmVhbVRpbWUoKSBjb25z
dDsKKyAgICBNZWRpYVRpbWUgc3RyZWFtVGltZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgQXVkaW9T
b3VyY2VQcm92aWRlciogYXVkaW9Tb3VyY2VQcm92aWRlcigpIGZpbmFsOwogCkBAIC0yMjAsMTQg
KzIwOSwxMSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2
ZSgpIGZpbmFsOwogCi0gICAgYm9vbCBoaWRlQmFja2dyb3VuZExheWVyKCkgY29uc3QgeyByZXR1
cm4gKCFtX2FjdGl2ZVZpZGVvVHJhY2sgfHwgbV93YWl0aW5nRm9yRmlyc3RJbWFnZSkgJiYgbV9k
aXNwbGF5TW9kZSAhPSBQYWludEl0QmxhY2s7IH0KKyAgICBib29sIGhpZGVSb290TGF5ZXIoKSBj
b25zdCB7IHJldHVybiAoIW1fYWN0aXZlVmlkZW9UcmFjayB8fCBtX3dhaXRpbmdGb3JGaXJzdElt
YWdlKSAmJiBtX2Rpc3BsYXlNb2RlICE9IFBhaW50SXRCbGFjazsgfQogCiAgICAgTWVkaWFQbGF5
ZXIqIG1fcGxheWVyIHsgbnVsbHB0ciB9OwogICAgIFJlZlB0cjxNZWRpYVN0cmVhbVByaXZhdGU+
IG1fbWVkaWFTdHJlYW1Qcml2YXRlOwogICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZT4gbV9hY3RpdmVWaWRlb1RyYWNrOwotICAgIFJldGFpblB0cjxXZWJBVlNhbXBsZUJ1ZmZlclN0
YXR1c0NoYW5nZUxpc3RlbmVyPiBtX3N0YXR1c0NoYW5nZUxpc3RlbmVyOwotICAgIFJldGFpblB0
cjxBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI7
Ci0gICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1fYmFja2dyb3VuZExheWVyOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxQQUw6OkNsb2NrPiBtX2Nsb2NrOwogCiAgICAgTWVkaWFUaW1lIG1fcGF1
c2VkVGltZTsKQEAgLTI0NCw3ICsyMzAsNiBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDxTdHJp
bmcsIFJlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtPj4gbV9hdWRpb1RyYWNrTWFw
OwogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0cmVh
bT4+IG1fdmlkZW9UcmFja01hcDsKLSAgICBQZW5kaW5nU2FtcGxlUXVldWUgbV9wZW5kaW5nVmlk
ZW9TYW1wbGVRdWV1ZTsKIAogICAgIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbV9uZXR3b3Jr
U3RhdGUgeyBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eSB9OwogICAgIE1lZGlhUGxh
eWVyOjpSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZSB7IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpI
YXZlTm90aGluZyB9OwpAQCAtMjU0LDggKzIzOSwxMyBAQCBwcml2YXRlOgogICAgIFBsYXliYWNr
U3RhdGUgbV9wbGF5YmFja1N0YXRlIHsgUGxheWJhY2tTdGF0ZTo6Tm9uZSB9OwogICAgIE1lZGlh
U2FtcGxlOjpWaWRlb1JvdGF0aW9uIG1fdmlkZW9Sb3RhdGlvbiB7IE1lZGlhU2FtcGxlOjpWaWRl
b1JvdGF0aW9uOjpOb25lIH07CiAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gbV92aWRlb1RyYW5zZm9y
bTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBtX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmlkZW9GdWxsc2NyZWVu
TGF5ZXJNYW5hZ2VyT2JqQz4gbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXI7CiAKKyAgICAv
LyBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkNsaWVudAorICAgIHZvaWQgc2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyU3RhdHVzRGlkQ2hhbmdlKFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciYpIGZp
bmFsOworICAgIHZvaWQgc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyQm91bmRzRGlkQ2hhbmdlKFNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllciYpIGZpbmFsOworCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECiAgICAgUmVmPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9s
b2dJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4IDVmY2Y5YWJiYWQw
NTEyNzRkMTIzMmNmM2FkYzZkMmU5OGVkNTI0MTEuLmRmOWUyMDU3YThiNjk5ZDcyZTYyNjI2MDMw
OGEwOWNlZjU2NTJkNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSwyMCAr
MzEsMTYgQEAKICNpbXBvcnQgIkF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaCIKICNpbXBv
cnQgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJM
b2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIgogI2ltcG9ydCAiTWVkaWFTdHJlYW1Qcml2
YXRlLmgiCiAjaW1wb3J0ICJQaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgiCiAjaW1wb3J0ICJWaWRl
b0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDLmgiCiAjaW1wb3J0ICJWaWRlb1RyYWNrUHJpdmF0
ZU1lZGlhU3RyZWFtLmgiCi0jaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIuaD4KICNpbXBvcnQgPENvcmVHcmFwaGljcy9DR0FmZmluZVRyYW5zZm9ybS5oPgot
I2ltcG9ydCA8UXVhcnR6Q29yZS9DQUxheWVyLmg+Ci0jaW1wb3J0IDxRdWFydHpDb3JlL0NBVHJh
bnNhY3Rpb24uaD4KICNpbXBvcnQgPG9iamNfcnVudGltZS5oPgogI2ltcG9ydCA8cGFsL2F2Zm91
bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL0FW
Rm91bmRhdGlvblNQSS5oPgogI2ltcG9ydCA8cGFsL3N5c3RlbS9DbG9jay5oPgotI2ltcG9ydCA8
d3RmL0RlcXVlLmg+Ci0jaW1wb3J0IDx3dGYvRnVuY3Rpb24uaD4KICNpbXBvcnQgPHd0Zi9NYWlu
VGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtNTIsMTI3ICs0
OCw2IEBACiAjaW1wb3J0IDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KICNpbXBvcnQgPHBh
bC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKLQotQGludGVyZmFjZSBXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyIDog
TlNPYmplY3QgewotICAgIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQyogX3Bh
cmVudDsKLX0KLQotLSAoaWQpaW5pdFdpdGhQYXJlbnQ6KE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQyopY2FsbGJhY2s7Ci0tICh2b2lkKWludmFsaWRhdGU7Ci0tICh2b2lkKWJl
Z2luT2JzZXJ2aW5nTGF5ZXJzOwotLSAodm9pZClzdG9wT2JzZXJ2aW5nTGF5ZXJzOwotQGVuZAot
Ci1AaW1wbGVtZW50YXRpb24gV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcgot
Ci0tIChpZClpbml0V2l0aFBhcmVudDooTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDKilwYXJlbnQKLXsKLSAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKLSAgICAgICAg
cmV0dXJuIG5pbDsKLQotICAgIF9wYXJlbnQgPSBwYXJlbnQ7Ci0KLSAgICByZXR1cm4gc2VsZjsK
LX0KLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW3NlbGYgaW52YWxpZGF0ZV07Ci0gICAgW3N1
cGVyIGRlYWxsb2NdOwotfQotCi0tICh2b2lkKWludmFsaWRhdGUKLXsKLSAgICBbc2VsZiBzdG9w
T2JzZXJ2aW5nTGF5ZXJzXTsKLSAgICBfcGFyZW50ID0gbnVsbHB0cjsKLX0KLQotLSAodm9pZCli
ZWdpbk9ic2VydmluZ0xheWVycwotewotICAgIEFTU0VSVChfcGFyZW50KTsKLSAgICBBU1NFUlQo
X3BhcmVudC0+ZGlzcGxheUxheWVyKCkpOwotICAgIEFTU0VSVChfcGFyZW50LT5iYWNrZ3JvdW5k
TGF5ZXIoKSk7Ci0KLSAgICBbX3BhcmVudC0+ZGlzcGxheUxheWVyKCkgYWRkT2JzZXJ2ZXI6c2Vs
ZiBmb3JLZXlQYXRoOkAic3RhdHVzIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25O
ZXcgY29udGV4dDpuaWxdOwotICAgIFtfcGFyZW50LT5kaXNwbGF5TGF5ZXIoKSBhZGRPYnNlcnZl
cjpzZWxmIGZvcktleVBhdGg6QCJlcnJvciIgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0
aW9uTmV3IGNvbnRleHQ6bmlsXTsKLSAgICBbX3BhcmVudC0+YmFja2dyb3VuZExheWVyKCkgYWRk
T2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAiYm91bmRzIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNl
cnZpbmdPcHRpb25OZXcgY29udGV4dDpuaWxdOwotfQotCi0tICh2b2lkKXN0b3BPYnNlcnZpbmdM
YXllcnMKLXsKLSAgICBpZiAoIV9wYXJlbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChf
cGFyZW50LT5kaXNwbGF5TGF5ZXIoKSkgewotICAgICAgICBbX3BhcmVudC0+ZGlzcGxheUxheWVy
KCkgcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAic3RhdHVzIl07Ci0gICAgICAgIFtf
cGFyZW50LT5kaXNwbGF5TGF5ZXIoKSByZW1vdmVPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJl
cnJvciJdOwotICAgIH0KLSAgICBpZiAoX3BhcmVudC0+YmFja2dyb3VuZExheWVyKCkpCi0gICAg
ICAgIFtfcGFyZW50LT5iYWNrZ3JvdW5kTGF5ZXIoKSByZW1vdmVPYnNlcnZlcjpzZWxmIGZvcktl
eVBhdGg6QCJib3VuZHMiXTsKLX0KLQotLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOihO
U1N0cmluZyAqKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFy
eSAqKWNoYW5nZSBjb250ZXh0Oih2b2lkICopY29udGV4dAotewotICAgIFVOVVNFRF9QQVJBTShj
b250ZXh0KTsKLSAgICBVTlVTRURfUEFSQU0oa2V5UGF0aCk7Ci0gICAgQVNTRVJUKF9wYXJlbnQp
OwotCi0gICAgaWYgKCFfcGFyZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoW29iamVj
dCBpc0tpbmRPZkNsYXNzOlBBTDo6Z2V0QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJDbGFzcygp
XSkgewotICAgICAgICBSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IGxheWVy
ID0gKEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyICopb2JqZWN0OwotICAgICAgICBBU1NFUlQo
bGF5ZXIuZ2V0KCkgPT0gX3BhcmVudC0+ZGlzcGxheUxheWVyKCkpOwotCi0gICAgICAgIGlmIChb
a2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJzdGF0dXMiXSkgewotICAgICAgICAgICAgUmV0YWlu
UHRyPE5TTnVtYmVyPiBzdGF0dXMgPSBbY2hhbmdlIHZhbHVlRm9yS2V5Ok5TS2V5VmFsdWVDaGFu
Z2VOZXdLZXldOwotICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9
IFJldGFpblB0cjxXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyPihzZWxmKSwg
bGF5ZXIgPSBXVEZNb3ZlKGxheWVyKSwgc3RhdHVzID0gV1RGTW92ZShzdGF0dXMpXSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFwcm90ZWN0ZWRTZWxmLT5fcGFyZW50KQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICBwcm90ZWN0ZWRTZWxmLT5fcGFyZW50LT5s
YXllclN0YXR1c0RpZENoYW5nZShsYXllci5nZXQoKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChba2V5UGF0aCBpc0VxdWFs
VG9TdHJpbmc6QCJlcnJvciJdKSB7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8TlNOdW1iZXI+IHN0
YXR1cyA9IFtjaGFuZ2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1ZUNoYW5nZU5ld0tleV07Ci0gICAg
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFW
U2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXI+KHNlbGYpLCBsYXllciA9IFdURk1vdmUo
bGF5ZXIpLCBzdGF0dXMgPSBXVEZNb3ZlKHN0YXR1cyldIHsKLSAgICAgICAgICAgICAgICBpZiAo
IXByb3RlY3RlZFNlbGYtPl9wYXJlbnQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9wYXJlbnQtPmxheWVyRXJyb3JEaWRDaGFu
Z2UobGF5ZXIuZ2V0KCkpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoW1tjaGFuZ2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1
ZUNoYW5nZU5vdGlmaWNhdGlvbklzUHJpb3JLZXldIGJvb2xWYWx1ZV0pCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGlmICgoQ0FMYXllciAqKW9iamVjdCA9PSBfcGFyZW50LT5iYWNrZ3JvdW5kTGF5
ZXIoKSkgewotICAgICAgICBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAiYm91bmRzIl0p
IHsKLSAgICAgICAgICAgIGlmICghX3BhcmVudCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgICAgIGlmIChpc01haW5UaHJlYWQoKSkgewotICAgICAgICAgICAgICAgIF9wYXJl
bnQtPmJhY2tncm91bmRMYXllckJvdW5kc0NoYW5nZWQoKTsKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3Rl
Y3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5l
cj4oc2VsZildIHsKLSAgICAgICAgICAgICAgICBpZiAoIXByb3RlY3RlZFNlbGYtPl9wYXJlbnQp
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIHByb3RlY3Rl
ZFNlbGYtPl9wYXJlbnQtPmJhY2tncm91bmRMYXllckJvdW5kc0NoYW5nZWQoKTsKLSAgICAgICAg
ICAgIH0pOwotICAgICAgICB9Ci0gICAgfQotCi19Ci1AZW5kCi0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIHVzaW5nIG5hbWVzcGFjZSBQQUw7CiAKQEAgLTE4Myw3ICs1OCw2IEBAIHN0YXRpYyBjb25z
dCBkb3VibGUgcmVuZGVyZXJMYXRlbmN5ID0gMC4wMjsKIAogTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMoTWVk
aWFQbGF5ZXIqIHBsYXllcikKICAgICA6IG1fcGxheWVyKHBsYXllcikKLSAgICAsIG1fc3RhdHVz
Q2hhbmdlTGlzdGVuZXIoYWRvcHROUyhbW1dlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlz
dGVuZXIgYWxsb2NdIGluaXRXaXRoUGFyZW50OnRoaXNdKSkKICAgICAsIG1fY2xvY2soUEFMOjpD
bG9jazo6Y3JlYXRlKCkpCiAgICAgLCBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcihtYWtl
VW5pcXVlPFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakM+KCkpCiAjaWYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECkBAIC0xOTgsOCArNzIsNiBAQCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6On5NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMoKQogewog
ICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOwogCi0gICAgW21fc3RhdHVzQ2hhbmdlTGlzdGVu
ZXIgaW52YWxpZGF0ZV07Ci0KICAgICBmb3IgKGNvbnN0IGF1dG8mIHRyYWNrIDogbV9hdWRpb1Ry
YWNrTWFwLnZhbHVlcygpKQogICAgICAgICB0cmFjay0+cGF1c2UoKTsKIApAQCAtMjY5LDMzICsx
NDEsNiBAQCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6c3VwcG9ydHNUeXBlKGNvbgogI3ByYWdtYSBtYXJrIC0KICNwcmFnbWEg
bWFyayBBVlNhbXBsZUJ1ZmZlciBNZXRob2RzCiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpyZW1vdmVPbGRTYW1wbGVzRnJvbVBlbmRpbmdRdWV1ZShQZW5kaW5n
U2FtcGxlUXVldWUmIHF1ZXVlKQotewotICAgIGlmIChxdWV1ZS5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGF1dG8gZGVjb2RlVGltZSA9IHF1ZXVlLmZpcnN0KCktPmRlY29kZVRp
bWUoKTsKLSAgICBpZiAoIWRlY29kZVRpbWUuaXNWYWxpZCgpIHx8IGRlY29kZVRpbWUgPCBNZWRp
YVRpbWU6Onplcm9UaW1lKCkpIHsKLSAgICAgICAgd2hpbGUgKHF1ZXVlLnNpemUoKSA+IDUpCi0g
ICAgICAgICAgICBxdWV1ZS5yZW1vdmVGaXJzdCgpOwotCi0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBNZWRpYVRpbWUgbm93ID0gc3RyZWFtVGltZSgpOwotICAgIHdoaWxlICghcXVldWUu
aXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChxdWV1ZS5maXJzdCgpLT5kZWNvZGVUaW1lKCkgPiBu
b3cpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgcXVldWUucmVtb3ZlRmlyc3QoKTsKLSAg
ICB9Ci19Ci0KLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjphZGRT
YW1wbGVUb1BlbmRpbmdRdWV1ZShQZW5kaW5nU2FtcGxlUXVldWUmIHF1ZXVlLCBNZWRpYVNhbXBs
ZSYgc2FtcGxlKQotewotICAgIHJlbW92ZU9sZFNhbXBsZXNGcm9tUGVuZGluZ1F1ZXVlKHF1ZXVl
KTsKLSAgICBxdWV1ZS5hcHBlbmQoc2FtcGxlKTsKLX0KLQogTWVkaWFUaW1lIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y2FsY3VsYXRlVGltZWxpbmVPZmZzZXQoY29uc3Qg
TWVkaWFTYW1wbGUmIHNhbXBsZSwgZG91YmxlIGxhdGVuY3kpCiB7CiAgICAgTWVkaWFUaW1lIHNh
bXBsZVRpbWUgPSBzYW1wbGUub3V0cHV0UHJlc2VudGF0aW9uVGltZSgpOwpAQCAtMzMwLDM3ICsx
NzUsMTkgQEAgQ0dBZmZpbmVUcmFuc2Zvcm0gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjp2aWRlb1RyYW5zZm9ybWF0aW9uTWF0cmkKICAgICByZXR1cm4gbV92aWRlb1RyYW5z
Zm9ybTsKIH0KIAotc3RhdGljIHZvaWQgcnVuV2l0aG91dEFuaW1hdGlvbnMoY29uc3QgV1RGOjpG
dW5jdGlvbjx2b2lkKCk+JiBmdW5jdGlvbikKLXsKLSAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07
Ci0gICAgW0NBVHJhbnNhY3Rpb24gc2V0QW5pbWF0aW9uRHVyYXRpb246MF07Ci0gICAgW0NBVHJh
bnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKLSAgICBmdW5jdGlvbigpOwotICAgIFtD
QVRyYW5zYWN0aW9uIGNvbW1pdF07Ci19Ci0KIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjplbnF1ZXVlQ29ycmVjdGVkVmlkZW9TYW1wbGUoTWVkaWFTYW1wbGUmIHNh
bXBsZSkKIHsKICAgICBpZiAobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpIHsKLSAgICAgICAg
aWYgKFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBzdGF0dXNdID09IEFWUXVldWVkU2FtcGxl
QnVmZmVyUmVuZGVyaW5nU3RhdHVzRmFpbGVkKQorICAgICAgICBpZiAobV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXItPmRpZEZhaWwoKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBp
ZiAoc2FtcGxlLnZpZGVvUm90YXRpb24oKSAhPSBtX3ZpZGVvUm90YXRpb24gfHwgc2FtcGxlLnZp
ZGVvTWlycm9yZWQoKSAhPSBtX3ZpZGVvTWlycm9yZWQpIHsKICAgICAgICAgICAgIG1fdmlkZW9S
b3RhdGlvbiA9IHNhbXBsZS52aWRlb1JvdGF0aW9uKCk7CiAgICAgICAgICAgICBtX3ZpZGVvTWly
cm9yZWQgPSBzYW1wbGUudmlkZW9NaXJyb3JlZCgpOwotICAgICAgICAgICAgcnVuV2l0aG91dEFu
aW1hdGlvbnMoW3RoaXMsICZzYW1wbGVdIHsKLSAgICAgICAgICAgICAgICBtX3NhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5nZXQoKS5hZmZpbmVUcmFuc2Zvcm0gPSB2aWRlb1RyYW5zZm9ybWF0aW9u
TWF0cml4KHNhbXBsZSwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgdXBkYXRlRGlzcGxheUxheWVy
KCk7Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyLT51cGRhdGVBZmZpbmVUcmFuc2Zvcm0odmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeChzYW1w
bGUsIHRydWUpKTsKKyAgICAgICAgICAgIHVwZGF0ZURpc3BsYXlMYXllcigpOwogICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKCFbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgaXNSZWFkeUZvck1v
cmVNZWRpYURhdGFdKSB7Ci0gICAgICAgICAgICBhZGRTYW1wbGVUb1BlbmRpbmdRdWV1ZShtX3Bl
bmRpbmdWaWRlb1NhbXBsZVF1ZXVlLCBzYW1wbGUpOwotICAgICAgICAgICAgcmVxdWVzdE5vdGlm
aWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KLSAgICAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGVucXVldWVTYW1w
bGVCdWZmZXI6c2FtcGxlLnBsYXRmb3JtU2FtcGxlKCkuc2FtcGxlLmNtU2FtcGxlQnVmZmVyXTsK
KyAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPmVucXVldWVTYW1wbGUoc2FtcGxl
KTsKICAgICB9CiAKICAgICBpZiAoIW1faGFzRXZlckVucXVldWVkVmlkZW9GcmFtZSkgewpAQCAt
NDE1LDYxICsyNDIsMjYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OmVucXVldWVWaWRlb1NhbXBsZShNZWRpYVN0cmVhbVRyYWNrUHIKICAgICB9CiB9CiAKLXZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpyZXF1ZXN0Tm90aWZpY2F0
aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRhKCkKLXsKLSAgICBhdXRvIHdlYWtUaGlzID0gbWFrZVdl
YWtQdHIoKnRoaXMpOwotICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciByZXF1ZXN0TWVk
aWFEYXRhV2hlblJlYWR5T25RdWV1ZTpkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpIHVzaW5nQmxv
Y2s6XiB7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHN0b3BSZXF1ZXN0aW5nTWVkaWFEYXRh
XTsKLQotICAgICAgICBpZiAoIW1fYWN0aXZlVmlkZW9UcmFjaykgewotICAgICAgICAgICAgbV9w
ZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5jbGVhcigpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KLSAgICAgICAgd2hpbGUgKCFtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmlzRW1w
dHkoKSkgewotICAgICAgICAgICAgaWYgKCFbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgaXNS
ZWFkeUZvck1vcmVNZWRpYURhdGFdKSB7Ci0gICAgICAgICAgICAgICAgcmVxdWVzdE5vdGlmaWNh
dGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgYXV0byBzYW1wbGUgPSBtX3BlbmRpbmdWaWRlb1Nh
bXBsZVF1ZXVlLnRha2VGaXJzdCgpOwotICAgICAgICAgICAgZW5xdWV1ZVZpZGVvU2FtcGxlKCpt
X2FjdGl2ZVZpZGVvVHJhY2suZ2V0KCksIHNhbXBsZS5nZXQoKSk7Ci0gICAgICAgIH0KLSAgICB9
XTsKLX0KLQogQXVkaW9Tb3VyY2VQcm92aWRlciogTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDOjphdWRpb1NvdXJjZVByb3ZpZGVyKCkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGQgcmV0dXJuIGEgbWl4IG9mIGFsbCBhdWRpbyB0cmFja3MgLSBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwMzA1CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
LXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpsYXllckVycm9yRGlk
Q2hhbmdlKEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKiBsYXllcikKK3ZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJTdGF0
dXNEaWRDaGFuZ2UoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyJiBsYXllcikKIHsKKyAgICBBU1NF
UlQoJmxheWVyID09IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpKTsKICAgICBVTlVT
RURfUEFSQU0obGF5ZXIpOwotICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiZXJyb3IgPSAi
LCBbW2xheWVyLmVycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXSBVVEY4U3RyaW5nXSk7Ci19Ci0K
LXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpsYXllclN0YXR1c0Rp
ZENoYW5nZShBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciogbGF5ZXIpCi17Ci0gICAgQUxXQVlT
X0xPRyhMT0dJREVOVElGSUVSLCAic3RhdHVzID0gIiwgKGludClsYXllci5zdGF0dXMpOwotCi0g
ICAgaWYgKGxheWVyLnN0YXR1cyAhPSBBVlF1ZXVlZFNhbXBsZUJ1ZmZlclJlbmRlcmluZ1N0YXR1
c1JlbmRlcmluZykKLSAgICAgICAgcmV0dXJuOwotICAgIGlmICghbV9zYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIgfHwgIW1fYWN0aXZlVmlkZW9UcmFjayB8fCBsYXllciAhPSBtX3NhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcikKKyAgICBpZiAoIW1fYWN0aXZlVmlkZW9UcmFjaykKICAgICAgICAgcmV0
dXJuOwogCi0gICAgYXV0byB0cmFjayA9IG1fdmlkZW9UcmFja01hcC5nZXQobV9hY3RpdmVWaWRl
b1RyYWNrLT5pZCgpKTsKLSAgICBpZiAodHJhY2spCisgICAgaWYgKGF1dG8gdHJhY2sgPSBtX3Zp
ZGVvVHJhY2tNYXAuZ2V0KG1fYWN0aXZlVmlkZW9UcmFjay0+aWQoKSkpCiAgICAgICAgIHRyYWNr
LT5zZXRUaW1lbGluZU9mZnNldChNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpOwogfQogCiB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YXBwbGljYXRpb25EaWRCZWNv
bWVBY3RpdmUoKQogewotICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciAmJiBbbV9z
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgc3RhdHVzXSA9PSBBVlF1ZXVlZFNhbXBsZUJ1ZmZlclJl
bmRlcmluZ1N0YXR1c0ZhaWxlZCkgeworICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ciAmJiBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+ZGlkRmFpbCgpKSB7CiAgICAgICAgIGZs
dXNoUmVuZGVyZXJzKCk7CiAgICAgICAgIGlmIChtX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSkK
ICAgICAgICAgICAgIGVucXVldWVDb3JyZWN0ZWRWaWRlb1NhbXBsZSgqbV9pbWFnZVBhaW50ZXIu
bWVkaWFTYW1wbGUpOwpAQCAtNDgwLDcgKzI3Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCiB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Zmx1c2hSZW5kZXJlcnMoKQogewog
ICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKLSAgICAgICAgW21fc2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyIGZsdXNoXTsKKyAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXItPmZsdXNoKCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjplbnN1cmVMYXllcnMoKQpAQCAtNDkxLDUxICsyODMsMjQgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVuc3VyZUxheWVycygpCiAgICAgaWYgKCFtX21l
ZGlhU3RyZWFtUHJpdmF0ZSB8fCAhbV9tZWRpYVN0cmVhbVByaXZhdGUtPmFjdGl2ZVZpZGVvVHJh
Y2soKSB8fCAhbV9tZWRpYVN0cmVhbVByaXZhdGUtPmFjdGl2ZVZpZGVvVHJhY2soKS0+ZW5hYmxl
ZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciA9
IGFkb3B0TlMoW1BBTDo6YWxsb2NBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckluc3RhbmNlKCkg
aW5pdF0pOworICAgIGF1dG8gc2l6ZSA9IHNuYXBwZWRJbnRSZWN0KG1fcGxheWVyLT5wbGF5ZXJD
b250ZW50Qm94UmVjdCgpKS5zaXplKCk7CisgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIg
PSBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Y3JlYXRlKCp0aGlzLCBoaWRlUm9vdExh
eWVyKCksIHNpemUpOworCiAgICAgaWYgKCFtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikgewot
ICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIitbQVZTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIgYWxsb2NdIGZhaWxlZC4iKTsKKyAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIs
ICJDcmVhdGluZyB0aGUgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGZhaWxlZC4iKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgp
LmJhY2tncm91bmRDb2xvciA9IGNhY2hlZENHQ29sb3IoQ29sb3I6OmJsYWNrKTsKLSAgICBtX3Nh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKS5hbmNob3JQb2ludCA9IHsgLjUsIC41IH07Ci0g
ICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCkubmVlZHNEaXNwbGF5T25Cb3VuZHND
aGFuZ2UgPSBZRVM7Ci0gICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCkudmlkZW9H
cmF2aXR5ID0gQVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZpbGw7Ci0KLSAgICBtX2Jh
Y2tncm91bmRMYXllciA9IGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSk7Ci0gICAgbV9i
YWNrZ3JvdW5kTGF5ZXIuZ2V0KCkuaGlkZGVuID0gaGlkZUJhY2tncm91bmRMYXllcigpOwotCi0g
ICAgbV9iYWNrZ3JvdW5kTGF5ZXIuZ2V0KCkuYmFja2dyb3VuZENvbG9yID0gY2FjaGVkQ0dDb2xv
cihDb2xvcjo6YmxhY2spOwotICAgIG1fYmFja2dyb3VuZExheWVyLmdldCgpLm5lZWRzRGlzcGxh
eU9uQm91bmRzQ2hhbmdlID0gWUVTOwotCi0gICAgYXV0byBzaXplID0gc25hcHBlZEludFJlY3Qo
bV9wbGF5ZXItPnBsYXllckNvbnRlbnRCb3hSZWN0KCkpLnNpemUoKTsKLSAgICBtX2JhY2tncm91
bmRMYXllci5nZXQoKS5ib3VuZHMgPSBDR1JlY3RNYWtlKDAsIDAsIHNpemUud2lkdGgoKSwgc2l6
ZS5oZWlnaHQoKSk7Ci0KLSAgICBbbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lciBiZWdpbk9ic2Vydmlu
Z0xheWVyc107Ci0KLSAgICBbbV9iYWNrZ3JvdW5kTGF5ZXIgYWRkU3VibGF5ZXI6bV9zYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCldOwotCi0jaWZuZGVmIE5ERUJVRwotICAgIFttX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllciBzZXROYW1lOkAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIl07Ci0gICAgW21fYmFja2dyb3Vu
ZExheWVyIHNldE5hbWU6QCJNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMgQVZT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgcGFyZW50Il07Ci0jZW5kaWYKLQogICAgIHVwZGF0ZVJl
bmRlcmluZ01vZGUoKTsKICAgICB1cGRhdGVEaXNwbGF5TGF5ZXIoKTsKIAotICAgIG1fdmlkZW9G
dWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT5zZXRWaWRlb0xheWVyKG1fYmFja2dyb3VuZExheWVyLmdl
dCgpLCBzaXplKTsKKyAgICBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlci0+c2V0VmlkZW9M
YXllcihtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+cm9vdExheWVyKCksIHNpemUpOwogfQog
CiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGVzdHJveUxheWVy
cygpCiB7Ci0gICAgW21fc3RhdHVzQ2hhbmdlTGlzdGVuZXIgc3RvcE9ic2VydmluZ0xheWVyc107
Ci0gICAgaWYgKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKSB7Ci0gICAgICAgIG1fcGVuZGlu
Z1ZpZGVvU2FtcGxlUXVldWUuY2xlYXIoKTsKLSAgICAgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyIHN0b3BSZXF1ZXN0aW5nTWVkaWFEYXRhXTsKLSAgICAgICAgW21fc2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyIGZsdXNoXTsKKyAgICBpZiAobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIp
CiAgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyID0gbnVsbHB0cjsKLSAgICB9Ci0g
ICAgbV9iYWNrZ3JvdW5kTGF5ZXIgPSBudWxscHRyOwogCiAgICAgdXBkYXRlUmVuZGVyaW5nTW9k
ZSgpOwogICAgIApAQCAtNjAyLDIyICszNjcsMTIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakM6OnByZXBhcmVUb1BsYXkoKQogCiBQbGF0Zm9ybUxheWVyKiBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAog
ewotICAgIGlmICghbV9iYWNrZ3JvdW5kTGF5ZXIgfHwgbV9kaXNwbGF5TW9kZSA9PSBOb25lKQor
ICAgIGlmICghbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgfHwgIW1fc2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLT5yb290TGF5ZXIoKSB8fCBtX2Rpc3BsYXlNb2RlID09IE5vbmUpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5h
Z2VyLT52aWRlb0lubGluZUxheWVyKCk7CiB9CiAKLVBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGlzcGxheUxheWVyKCkKLXsKLSAgICByZXR1cm4g
bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCk7Ci19Ci0KLVBsYXRmb3JtTGF5ZXIqIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YmFja2dyb3VuZExheWVyKCkKLXsK
LSAgICByZXR1cm4gbV9iYWNrZ3JvdW5kTGF5ZXIuZ2V0KCk7Ci19Ci0KIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6RGlzcGxheU1vZGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpjdXJyZW50RGlzcGxheU1vZGUoKSBjb25zdAogewogICAgIGlmICht
X2ludHJpbnNpY1NpemUuaXNFbXB0eSgpIHx8ICFtZXRhRGF0YUF2YWlsYWJsZSgpIHx8ICFtX3Nh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKQEAgLTY1MywxOCArNDA4LDggQEAgYm9vbCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZURpc3BsYXlNb2RlKCkKICAgICBJ
TkZPX0xPRyhMT0dJREVOVElGSUVSLCAidXBkYXRlZCB0byAiLCBzdGF0aWNfY2FzdDxpbnQ+KGRp
c3BsYXlNb2RlKSk7CiAgICAgbV9kaXNwbGF5TW9kZSA9IGRpc3BsYXlNb2RlOwogCi0gICAgYXV0
byBoaWRkZW4gPSBtX2Rpc3BsYXlNb2RlIDwgUGF1c2VkSW1hZ2U7Ci0gICAgaWYgKG1fc2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyICYmIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLmhp
ZGRlbiAhPSBoaWRkZW4pIHsKLSAgICAgICAgcnVuV2l0aG91dEFuaW1hdGlvbnMoW3RoaXMsIGhp
ZGRlbl0gewotICAgICAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCkuaGlk
ZGVuID0gaGlkZGVuOwotICAgICAgICB9KTsKLSAgICB9Ci0gICAgaGlkZGVuID0gaGlkZUJhY2tn
cm91bmRMYXllcigpOwotICAgIGlmIChtX2JhY2tncm91bmRMYXllciAmJiBtX2JhY2tncm91bmRM
YXllci5nZXQoKS5oaWRkZW4gIT0gaGlkZGVuKSB7Ci0gICAgICAgIHJ1bldpdGhvdXRBbmltYXRp
b25zKFt0aGlzLCBoaWRkZW5dIHsKLSAgICAgICAgICAgIG1fYmFja2dyb3VuZExheWVyLmdldCgp
LmhpZGRlbiA9IGhpZGRlbjsKLSAgICAgICAgfSk7Ci0gICAgfQorICAgIGlmIChtX3NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcikKKyAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPnVw
ZGF0ZURpc3BsYXlNb2RlKG1fZGlzcGxheU1vZGUgPCBQYXVzZWRJbWFnZSwgaGlkZVJvb3RMYXll
cigpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTAyMyw4ICs3NjgsMTEgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmNoZWNrU2VsZWN0ZWRWaWRlb1Ry
YWNrKCkKICAgICAgICAgICAgICAgICBtX3dhaXRpbmdGb3JGaXJzdEltYWdlID0gdHJ1ZTsKICAg
ICAgICAgfQogICAgICAgICBlbnN1cmVMYXllcnMoKTsKLSAgICAgICAgbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIuZ2V0KCkuaGlkZGVuID0gaGlkZVZpZGVvTGF5ZXIgfHwgbV9kaXNwbGF5TW9k
ZSA8IFBhdXNlZEltYWdlOwotICAgICAgICBtX2JhY2tncm91bmRMYXllci5nZXQoKS5oaWRkZW4g
PSBoaWRlQmFja2dyb3VuZExheWVyKCk7CisgICAgICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcikgeworICAgICAgICAgICAgaWYgKCFtX2FjdGl2ZVZpZGVvVHJhY2spCisgICAgICAg
ICAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPmNsZWFyRW5xdWV1ZWRTYW1wbGVz
KCk7CisgICAgICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+dXBkYXRlRGlzcGxh
eU1vZGUoaGlkZVZpZGVvTGF5ZXIgfHwgbV9kaXNwbGF5TW9kZSA8IFBhdXNlZEltYWdlLCBoaWRl
Um9vdExheWVyKCkpOworICAgICAgICB9CiAKICAgICAgICAgbV9wZW5kaW5nU2VsZWN0ZWRUcmFj
a0NoZWNrID0gZmFsc2U7CiAgICAgICAgIHVwZGF0ZURpc3BsYXlNb2RlKCk7CkBAIC0xMTczLDgg
KzkyMSw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRO
ZXR3b3JrU3RhdGUoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzZXRCdWZmZXJpbmdQb2xpY3koTWVkaWFQbGF5ZXI6OkJ1
ZmZlcmluZ1BvbGljeSBwb2xpY3kpCiB7Ci0gICAgaWYgKHBvbGljeSAhPSBNZWRpYVBsYXllcjo6
QnVmZmVyaW5nUG9saWN5OjpEZWZhdWx0KQotICAgICAgICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIgZmx1c2hBbmRSZW1vdmVJbWFnZV07CisgICAgaWYgKHBvbGljeSAhPSBNZWRpYVBsYXll
cjo6QnVmZmVyaW5nUG9saWN5OjpEZWZhdWx0ICYmIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
KQorICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+Zmx1c2hBbmRSZW1vdmVJbWFn
ZSgpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2No
ZWR1bGVEZWZlcnJlZFRhc2soRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKQEAgLTExOTcs
MjMgKzk0NSwyMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
Q3VycmVudEZyYW1lUGFpbnRlcjo6cmVzZXQoKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlRGlzcGxheUxheWVyKCkKIHsKLSAgICBpZiAoIW1fYmFj
a2dyb3VuZExheWVyIHx8ICFtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKKyAgICBpZiAoIW1f
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGJh
Y2tncm91bmRCb3VuZHMgPSBtX2JhY2tncm91bmRMYXllci5nZXQoKS5ib3VuZHM7Ci0gICAgYXV0
byB2aWRlb0JvdW5kcyA9IGJhY2tncm91bmRCb3VuZHM7CisgICAgYXV0byBib3VuZHMgPSBtX3Nh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+Ym91bmRzKCk7CisgICAgYXV0byB2aWRlb0JvdW5kcyA9
IGJvdW5kczsKICAgICBpZiAobV92aWRlb1JvdGF0aW9uID09IE1lZGlhU2FtcGxlOjpWaWRlb1Jv
dGF0aW9uOjpSaWdodCB8fCBtX3ZpZGVvUm90YXRpb24gPT0gTWVkaWFTYW1wbGU6OlZpZGVvUm90
YXRpb246OkxlZnQpCiAgICAgICAgIHN0ZDo6c3dhcCh2aWRlb0JvdW5kcy5zaXplLndpZHRoLCB2
aWRlb0JvdW5kcy5zaXplLmhlaWdodCk7CiAKLSAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ci5nZXQoKS5ib3VuZHMgPSB2aWRlb0JvdW5kczsKLSAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5nZXQoKS5wb3NpdGlvbiA9IHsgYmFja2dyb3VuZEJvdW5kcy5zaXplLndpZHRoIC8gMiwg
YmFja2dyb3VuZEJvdW5kcy5zaXplLmhlaWdodCAvIDJ9OworICAgIG1fc2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLT51cGRhdGVCb3VuZHNBbmRQb3NpdGlvbih2aWRlb0JvdW5kcywgeyBib3VuZHMu
c2l6ZS53aWR0aCAvIDIsIGJvdW5kcy5zaXplLmhlaWdodCAvIDJ9KTsKIH0KIAotdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmJhY2tncm91bmRMYXllckJvdW5kc0No
YW5nZWQoKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllckJvdW5kc0RpZENoYW5nZShTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXImKQogewotICAgIHJ1bldpdGhvdXRBbmltYXRpb25zKFt0aGlzXSB7Ci0gICAgICAgIHVwZGF0
ZURpc3BsYXlMYXllcigpOwotICAgIH0pOworICAgIHVwZGF0ZURpc3BsYXlMYXllcigpOwogfQog
CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387781</attachid>
            <date>2020-01-15 05:41:20 -0800</date>
            <delta_ts>2020-01-20 00:36:06 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-206066-20200115144118.patch</filename>
            <type>text/plain</type>
            <size>55722</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTlhYjllOTk2YzM2NTNk
Y2Q1MWIyY2Y1MTlkZTZjOGU1NDY4NjM3My4uODlhMjNkYWU2ZTU0MjgxNDVkY2E2ZDcxMzhlNzBh
MmE0NDYxODY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDIwLTAxLTE1ICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgYW4gYWJz
dHJhY3QgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYwNjYKKworICAgICAgICBSZXZpZXdlZCBieSBFcmlj
IENhcmxzb24uCisKKyAgICAgICAgTW92ZSB1c2Ugb2YgZGlzcGxheSBsYXllcnMgaW4gTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDIHRvIGEgbmV3IGNsYXNzIExvY2FsU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyCisgICAgICAgIHRoYXQgaW1wbGVtZW50cyBhbiBpbnRlcmZhY2Ug
bmFtZWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLgorICAgICAgICBBIGZ1dHVyZSBwYXRjaCB3
aWxsIGltcGxlbWVudCB0aGlzIGludGVyZmFjZSBieSBJUENpbmcgdG8gR1BVUHJvY2Vzcy4KKyAg
ICAgICAgV2UgbW92ZSBib3RoIGxheWVycyBhbmQgaGFuZGxpbmcgb2YgdGhlIHNhbXBsZSBxdWV1
ZSB0byBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci4KKworICAgICAgICBDb250cmFyeSB0
byBwcmV2aW91c2x5LCB3ZSBkbyBub3QgY2FsbCBhZ2FpbiBlbnF1ZXVlVmlkZW9TYW1wbGUgaW4g
Y2FzZSB3ZSBlbnF1ZXVlZCBhIHNhbXBsZSBmb3IgbGF0ZXIgdXNlIGluIHRoZSBkaXNwbGF5IGxh
eWVyLgorICAgICAgICBJbnN0ZWFkLCB3ZSBkaXJlY3RseSByZW5kZXIgaXQsIHdoaWNoIHNob3Vs
ZCBub3QgY2hhbmdlIG11Y2ggc2luY2UgdGhpcyBpcyBhIHJlYWx0aW1lIHRyYWNrIGFuZCBpbiB0
aGUgZnV0dXJlIHRoZSBidWZmZXIgd2lsbCBiZSBpbiBHUFVQcm9jZXNzIGFueXdheS4KKworICAg
ICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9T
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubW06IEFkZGVkLgorICAg
ICAgICAoLVtXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyIGluaXRXaXRoUGFy
ZW50Ol0pOgorICAgICAgICAoLVtXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVy
IGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0
ZW5lciBpbnZhbGlkYXRlXSk6CisgICAgICAgICgtW1dlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hh
bmdlTGlzdGVuZXIgYmVnaW5PYnNlcnZpbmdMYXllcnNdKToKKyAgICAgICAgKC1bV2ViQVZTYW1w
bGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lciBzdG9wT2JzZXJ2aW5nTGF5ZXJzXSk6CisgICAg
ICAgICgtW1dlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgb2JzZXJ2ZVZhbHVl
Rm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKyAgICAgICAgKFdlYkNvcmU6
OnJ1bldpdGhvdXRBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcik6CisgICAgICAg
IChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6fkxvY2FsU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjpsYXllclN0YXR1c0RpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2Nh
bFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6bGF5ZXJFcnJvckRpZENoYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6cm9vdExheWVyQm91bmRz
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOjpkaXNwbGF5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OnJvb3RMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcjo6ZGlkRmFpbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMb2Nh
bFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6dXBkYXRlRGlzcGxheU1vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmJvdW5kcyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6dXBkYXRlQWZm
aW5lVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyOjp1cGRhdGVCb3VuZHNBbmRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMb2Nh
bFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5zdXJlTGF5ZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpmbHVzaCk6CisgICAgICAgIChXZWJD
b3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Zmx1c2hBbmRSZW1vdmVJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1
ZVNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6cmVtb3ZlT2xkU2FtcGxlc0Zyb21QZW5kaW5nUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6
TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmFkZFNhbXBsZVRvUGVuZGluZ1F1ZXVlKToK
KyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjbGVhckVu
cXVldWVkU2FtcGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcjo6cmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp+TWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZUNvcnJlY3RlZFZpZGVvU2FtcGxlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyU3RhdHVzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YXBwbGljYXRpb25EaWRCZWNvbWVB
Y3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjpmbHVzaFJlbmRlcmVycyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVuc3VyZUxheWVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmRlc3Ryb3lMYXllcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpw
bGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGlzcGxheUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlRGlzcGxheU1vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpj
aGVja1NlbGVjdGVkVmlkZW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNldEJ1ZmZlcmluZ1BvbGljeSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZURpc3Bs
YXlMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OnNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckJvdW5kc0RpZENoYW5nZSk6CisKIDIw
MjAtMDEtMTUgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciBNZWRpYVN0cmVhbSBhdWRpbyB0cmFjayByZW5kZXJpbmcgaW4gR1BVUHJv
Y2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZTZmODE3YTc4MTZkNmE0YmNjMjAxM2E1
Nzk0NDQ0NzY3YWU3MDgwZS4uODkwNmY1N2RjOWQzMjRjOWYwYmQxZWZiODUwYjIwYTk1MjBlMTkw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yNTMsNiArMjUzLDcgQEAgcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5t
bSBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVj
b2RlckFWRk9iakMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbSBAbm8tdW5pZnkKIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lB
VkZPYmpDLm1tIEBuby11bmlmeQorcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLm1tIEBu
by11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBA
bm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBmYzFiMGZjZjFlZGNiODRhYTA5NmZjYWIyMjUzMDkzNjhmZDA0ODAwLi5j
YzM1YTU4OTExMzQxMWIxNTg2MjBiZjQwMTkxNmVmZDc0M2VlOTRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDY3LDYgKzEw
NjcsNyBAQAogCQk0MTNDMkMzNDFCQzI5QThGMDA3NTIwNEMgLyogSlNET01Db25zdHJ1Y3Rvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQzJDMzMx
QkMyOUE3QjAwNzUyMDRDIC8qIEpTRE9NQ29uc3RydWN0b3IuaCAqLzsgfTsKIAkJNDEzQ0NENEEy
MERFMDM0RjAwNjVBMjFBIC8qIE1vY2tNZWRpYURldmljZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzQ0NENDgyMERFMDEzQzAwNjVBMjFBIC8qIE1v
Y2tNZWRpYURldmljZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTQxM0UwMDc5MURCMEU0RjIwMDIzNDFEMiAvKiBNZW1vcnlSZWxlYXNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTNFMDA3ODFEQjBF
NERFMDAyMzQxRDIgLyogTWVtb3J5UmVsZWFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxNDU5OEMyMjNDOEQxNzcwMDJCOUNDOCAvKiBMb2Nh
bFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxNDU5OEMxMjNDOEFENzkwMDJCOUNDOCAvKiBMb2NhbFNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci5tbSAqLzsgfTsKIAkJNDE0QjgyMDUxRDZERjBFNTAwNzdFQkUz
IC8qIFN0cnVjdHVyZWRDbG9uZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE0QjgyMDMxRDZERjBEOTAwNzdFQkUzIC8qIFN0cnVjdHVyZWRDbG9uZS5o
ICovOyB9OwogCQk0MTRERURFNzFGOUZFOTFFMDA0N0M0MEQgLyogRW1wdHlGcmFtZUxvYWRlckNs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE0
REVERTUxRjlGRTkxNTAwNDdDNDBEIC8qIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTUwNzE1ODE2ODUw
NjczMDBDM0M3QjMgLyogU2VsZWN0b3JGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNTA3MTU2MTY4NTA2NzMwMEMzQzdCMyAvKiBTZWxlY3Rv
ckZpbHRlci5oICovOyB9OwpAQCAtMTE1Myw2ICsxMTU0LDggQEAKIAkJNDFGMDYyMTQwRjVGMTky
NjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjA2MjEyMEY1RjE5MjYwMEEwN0VBQyAv
KiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmggKi87IH07CiAJCTQxRjFEMjFGMEVGMzVDMkEw
MERBODc1MyAvKiBTY3JpcHRDYWNoZWRGcmFtZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjFEMjFEMEVGMzVDMkEwMERBODc1MyAvKiBTY3Jp
cHRDYWNoZWRGcmFtZURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0MUZBQkQyRDFGNERGRTRBMDA2QTZDOTcgLyogRE9NQ2FjaGVFbmdpbmUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkFCRDJC
MUY0REZFNDIwMDZBNkM5NyAvKiBET01DYWNoZUVuZ2luZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxRkNENkI5MjNDRTAxNTUwMEM2MjU2NyAv
KiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxNDU5OEJFMjNDOEFBQjgwMDJCOUNDOCAvKiBTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk0MUZDRDZCQjIzQ0UwMjc3MDBDNjI1NjcgLyogTG9jYWxTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxNDU5OEMwMjNDOEFENzgwMDJCOUNDOCAvKiBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQyN0RBNzFEMTM3MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDI3REE3MUIx
MzczNURGQTAwN0M1N0ZCIC8qIEpTU2VydmljZVdvcmtlckludGVybmFscy5jcHAgKi87IH07CiAJ
CTQyN0RBNzFFMTM3MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQyN0RBNzFDMTM3
MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaCAqLzsgfTsKIAkJNDMx
MDdCRTIxOENDMTlERTAwQ0MxOEU4IC8qIFNlbGVjdG9yUHNldWRvVHlwZU1hcC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDMxMDdCRTExOENDMTlERTAw
Q0MxOEU4IC8qIFNlbGVjdG9yUHNldWRvVHlwZU1hcC5oICovOyB9OwpAQCAtNzM0Niw2ICs3MzQ5
LDkgQEAKIAkJNDEzRTAwNzgxREIwRTRERTAwMjM0MUQyIC8qIE1lbW9yeVJlbGVhc2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVtb3J5UmVsZWFzZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTNFMDA3QjFEQjBFNzA3MDAyMzQxRDIgLyogTWVtb3J5UmVs
ZWFzZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVt
b3J5UmVsZWFzZUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNGQzRD
RDFGRDFERDhDMDA1NDFDNEIgLyogU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlP
cHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDU5OEJFMjNDOEFBQjgw
MDJCOUNDOCAvKiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxNDU5OEMwMjNDOEFENzgwMDJCOUNDOCAvKiBMb2NhbFNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2Nh
bFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0MTQ1OThDMTIzQzhBRDc5MDAyQjlDQzggLyogTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMb2NhbFNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE0
N0UyQjIxQzg4MzM3RjAwQTdFNzE1IC8qIEZldGNoQm9keU93bmVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEZldGNoQm9keU93bmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxNDdFMkIzMUM4OTkxMjYwMEE3RTcxNSAvKiBGZXRjaEJvZHlPd25lci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGZXRjaEJvZHlPd25lci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNDdFMkI0MUM4OTkxMjYwMEE3RTcxNSAv
KiBGZXRjaExvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBG
ZXRjaExvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjMyNSw2ICsx
NjMzMSw3IEBACiAJCQkJMDc2RjBEMEExMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbi5oICovLAogCQkJCUNEQkVBRUFCMTlEOTJCNkMwMEJFQkE4OCAvKiBN
ZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5oICovLAogCQkJCUNEQkVBRUFBMTlEOTJCNkMwMEJF
QkE4OCAvKiBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQy5tbSAqLywKKwkJCQk0MTQ1OThCRTIz
QzhBQUI4MDAyQjlDQzggLyogU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmggKi8sCiAJCQkJQ0Qz
MzZGNjMxN0ZBMEE0RDAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGLmggKi8sCiAJCQkJ
MDcwOUQ3OTAxQUU1NTU3RTAwNEU0MkY4IC8qIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3Bw
ICovLAogCQkJCTA3MDlENzkxMUFFNTU1N0UwMDRFNDJGOCAvKiBXZWJNZWRpYVNlc3Npb25NYW5h
Z2VyTWFjLmggKi8sCkBAIC0yNjc0OCw2ICsyNjc1NSw4IEBACiAJCQkJMDdBQTZCNkExNjZEMDE5
NTAwRDQ1NjcxIC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLm1tICovLAogCQkJCTA3
MzY3REREMTcyQ0E2N0YwMEQ4NjFCOSAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZG
T2JqQy5oICovLAogCQkJCTA3MzY3RERFMTcyQ0E2N0YwMEQ4NjFCOSAvKiBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlTGVnYWN5QVZGT2JqQy5tbSAqLywKKwkJCQk0MTQ1OThDMDIzQzhBRDc4MDAyQjlD
QzggLyogTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCAqLywKKwkJCQk0MTQ1OThDMTIz
QzhBRDc5MDAyQjlDQzggLyogTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubW0gKi8sCiAJ
CQkJMDc4RTQzREIxQUJCNkY2RjAwMUMyRkE2IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJN
YWMuaCAqLywKIAkJCQkwNzhFNDNEQzFBQkI2RjZGMDAxQzJGQTYgLyogTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlck1hYy5tbSAqLywKIAkJCQlERjlBRkQ3MDEzRkMzMUQ4MDAxNUZFQjcgLyogTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oICovLApAQCAtMzEzOTcsNiArMzE0MDYs
NyBAQAogCQkJCTc2MzNBNzI2MTNEOEIzM0EwMDg1MDFCNiAvKiBMb2NhbGVUb1NjcmlwdE1hcHBp
bmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MTZFOEI3MTM2RTA0REIwMDc2QzNDMCAvKiBMb2Nh
bGl6ZWREYXRlQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNTIwN0JFMDlCRDQxMEEwMEYy
MDM4RCAvKiBMb2NhbGl6ZWRTdHJpbmdzLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MUZDRDZCQjIz
Q0UwMjc3MDBDNjI1NjcgLyogTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDRTFDNDFCMEQ5ODI5ODAwMDNCMDJGMiAvKiBMb2NhdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNkI0RDQxMkQyMzk4M0Y4ODAwMjQ5NEMyIC8qIExvZ2dlZEluU3RhdHVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODIzOUUwMTA5QjNDRjhBMDBCNjA2NDEgLyogTG9nZ2lu
Zy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjE4MSw2ICszMjE5MSw3IEBACiAJCQkJMjkzRUFFMUYx
MzU2QjJGRTAwNjdBQ0Y5IC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJN0M1MjIyOUUxRTFEQUU0NzAwMkNCOEY3IC8qIFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFN0E2QzI4MjA4NTM3RTIwMEZBMkI0NiAvKiBTYW1l
U2l0ZUluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTQxRkNENkI5MjNDRTAxNTUwMEM2MjU2NyAv
KiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERDcwODk3
MTgzNTlGNkYwMDJCM0RDNiAvKiBTYW1wbGVNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkx
MUNCMEVGODZENDcwMDlEMENBRiAvKiBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNURGRThGNTcwRDE2NDc3QzAwNzZFOTM3IC8qIFNjaGVkdWxlZEFjdGlvbi5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zMzY1MCw2ICszMzY2MSw3IEBACiAJCQkJNDFEMjhEMEQyMTM5
RTA1ODAwRjQyMDZGIC8qIExpYldlYlJUQ1N0YXRzQ29sbGVjdG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTQxODZCRDNFMjEzRUUzNDAwMDAxODI2RiAvKiBMaWJXZWJSVENVdGlscy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk5NzU5RTkzRTE0RUYxQ0Y4MDAyNkEyREQgLyogTG9hZGFibGVUZXh0
VHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDE0NTk4QzIyM0M4RDE3NzAwMkI5Q0M4IC8q
IExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRkFC
RTcyRkUxMDU5QzIxMTAwRDk5OUREIC8qIE1hdGhNTE5hbWVzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTJEOUJGNzA1MURCRkJCMjQwMDdBN0Q5OSAvKiBNZWRpYUVuY3J5cHRlZEV2ZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTJEOUJGNzQ3MURCRkRDNDkwMDdBN0Q5OSAvKiBNZWRpYUtleU1l
c3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9TYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZmY1N2Q3YzdkNTlhNzFkNTY3YmMyYWJk
OWY2MTkyYjJiZmJjY2MwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCkBAIC0w
LDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIE1lZGlhVGltZTsKK30KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSW50U2l6ZTsKK2NsYXNzIE1lZGlhU2FtcGxlOwor
CitjbGFzcyBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgeworcHVibGljOgorICAgIGNsYXNzIENs
aWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxDbGllbnQ+IHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIHZpcnR1YWwgfkNsaWVudCgpID0gZGVmYXVsdDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllclN0YXR1c0RpZENoYW5nZShTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXImKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXJCb3VuZHNEaWRDaGFuZ2UoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyJikgPSAwOworICAgICAg
ICB2aXJ0dWFsIFdURjo6TWVkaWFUaW1lIHN0cmVhbVRpbWUoKSBjb25zdCA9IDA7CisgICAgfTsK
KworICAgIGV4cGxpY2l0IFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihDbGllbnQmKTsKKyAgICB2
aXJ0dWFsIH5TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0
dWFsIGJvb2wgZGlkRmFpbCgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVE
aXNwbGF5TW9kZShib29sIGhpZGVEaXNwbGF5TGF5ZXIsIGJvb2wgaGlkZVJvb3RMYXllcikgPSAw
OworCisgICAgdmlydHVhbCBDR1JlY3QgYm91bmRzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVBZmZpbmVUcmFuc2Zvcm0oQ0dBZmZpbmVUcmFuc2Zvcm0pID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0LCBDR1BvaW50KSA9IDA7
CisKKyAgICB2aXJ0dWFsIHZvaWQgZmx1c2goKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGZsdXNo
QW5kUmVtb3ZlSW1hZ2UoKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgZW5xdWV1ZVNhbXBsZShN
ZWRpYVNhbXBsZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJFbnF1ZXVlZFNhbXBsZXMo
KSA9IDA7CisKKyAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHJvb3RMYXllcigpID0gMDsKKwor
cHJvdGVjdGVkOgorICAgIFdlYWtQdHI8Q2xpZW50PiBtX2NsaWVudDsKK307CisKK2lubGluZSBT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihDbGllbnQm
IGNsaWVudCkKKyAgICA6IG1fY2xpZW50KG1ha2VXZWFrUHRyKGNsaWVudCkpCit7Cit9CisKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5Y2RlYTQzYjlmYThmMDYxZGMwY2YxNDAzYjM1MmE5MWRm
Y2ZjMWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oCkBAIC0w
LDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5E
QVRJT04pCisKKyNpbmNsdWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCIKKyNpbmNsdWRl
IDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjsKK09C
SkNfQ0xBU1MgV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcjsKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBMb2NhbFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllciBmaW5hbCA6IHB1YmxpYyBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIsIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4geworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBjcmVhdGUoQ2xpZW50JiwgYm9vbCBoaWRlUm9v
dExheWVyLCBJbnRTaXplKTsKKworICAgIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKFJl
dGFpblB0cjxBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4mJiwgQ2xpZW50JiwgYm9vbCBoaWRl
Um9vdExheWVyLCBJbnRTaXplKTsKKyAgICB+TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIo
KTsKKworICAgIC8vIEFQSSB1c2VkIGJ5IFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlz
dGVuZXIKKyAgICB2b2lkIGxheWVyU3RhdHVzRGlkQ2hhbmdlKCk7CisgICAgdm9pZCBsYXllckVy
cm9yRGlkQ2hhbmdlKCk7CisgICAgdm9pZCByb290TGF5ZXJCb3VuZHNEaWRDaGFuZ2UoKTsKKwor
ICAgIFBsYXRmb3JtTGF5ZXIqIGRpc3BsYXlMYXllcigpOworCisgICAgUGxhdGZvcm1MYXllciog
cm9vdExheWVyKCkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgYm9vbCBkaWRGYWlsKCkgY29uc3Qg
ZmluYWw7CisKKyAgICB2b2lkIHVwZGF0ZURpc3BsYXlNb2RlKGJvb2wgaGlkZURpc3BsYXlMYXll
ciwgYm9vbCBoaWRlUm9vdExheWVyKSBmaW5hbDsKKworICAgIENHUmVjdCBib3VuZHMoKSBjb25z
dCBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUFmZmluZVRyYW5zZm9ybShDR0FmZmluZVRyYW5zZm9y
bSkgIGZpbmFsOworICAgIHZvaWQgdXBkYXRlQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0LCBDR1Bv
aW50KSBmaW5hbDsKKworICAgIHZvaWQgZmx1c2goKSBmaW5hbDsKKyAgICB2b2lkIGZsdXNoQW5k
UmVtb3ZlSW1hZ2UoKSBmaW5hbDsKKworICAgIHZvaWQgZW5xdWV1ZVNhbXBsZShNZWRpYVNhbXBs
ZSYpIGZpbmFsOworICAgIHZvaWQgY2xlYXJFbnF1ZXVlZFNhbXBsZXMoKSBmaW5hbDsKKworICAg
IHZvaWQgZW5zdXJlTGF5ZXJzKCk7CisKKyAgICB2b2lkIHJlbW92ZU9sZFNhbXBsZXNGcm9tUGVu
ZGluZ1F1ZXVlKCk7CisgICAgdm9pZCBhZGRTYW1wbGVUb1BlbmRpbmdRdWV1ZShNZWRpYVNhbXBs
ZSYpOworICAgIHZvaWQgcmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSgp
OworCitwcml2YXRlOgorICAgIFJldGFpblB0cjxXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5n
ZUxpc3RlbmVyPiBtX3N0YXR1c0NoYW5nZUxpc3RlbmVyOworICAgIFJldGFpblB0cjxBVlNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllcj4gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI7CisgICAgUmV0
YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1fcm9vdExheWVyOworCisgICAgdXNpbmcgUGVuZGluZ1Nh
bXBsZVF1ZXVlID0gRGVxdWU8UmVmPE1lZGlhU2FtcGxlPj47CisgICAgUGVuZGluZ1NhbXBsZVF1
ZXVlIG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWU7Cit9OworICAgIAorfQorCisjZW5kaWYgLy8g
RU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjBjOWNjNzNmYWQ4NDUzMWM5NzkxNjQxZDM4M2NjZTQ5NzNjODljMgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tCkBAIC0wLDAgKzEsMzY4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIgorCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKKworI2ltcG9ydCAi
Q29sb3IuaCIKKyNpbXBvcnQgIkludFNpemUuaCIKKyNpbXBvcnQgIk1lZGlhU2FtcGxlLmgiCisK
KyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oPgorI2lt
cG9ydCA8UXVhcnR6Q29yZS9DQUxheWVyLmg+CisjaW1wb3J0IDxRdWFydHpDb3JlL0NBVHJhbnNh
Y3Rpb24uaD4KKworI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KKworI2ltcG9ydCA8cGFsL2Nv
Y29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CitAaW50ZXJmYWNlIFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgOiBOU09i
amVjdCB7CisgICAgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIqIF9wYXJlbnQ7Cit9CisK
Ky0gKGlkKWluaXRXaXRoUGFyZW50OihMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciopY2Fs
bGJhY2s7CistICh2b2lkKWludmFsaWRhdGU7CistICh2b2lkKWJlZ2luT2JzZXJ2aW5nTGF5ZXJz
OworLSAodm9pZClzdG9wT2JzZXJ2aW5nTGF5ZXJzOworQGVuZAorCitAaW1wbGVtZW50YXRpb24g
V2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcgorCistIChpZClpbml0V2l0aFBh
cmVudDooTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIqKXBhcmVudAoreworICAgIGlmICgh
KHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX3BhcmVu
dCA9IHBhcmVudDsKKworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sK
KyAgICBbc2VsZiBpbnZhbGlkYXRlXTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZv
aWQpaW52YWxpZGF0ZQoreworICAgIFtzZWxmIHN0b3BPYnNlcnZpbmdMYXllcnNdOworICAgIF9w
YXJlbnQgPSBudWxscHRyOworfQorCistICh2b2lkKWJlZ2luT2JzZXJ2aW5nTGF5ZXJzCit7Cisg
ICAgQVNTRVJUKF9wYXJlbnQpOworICAgIEFTU0VSVChfcGFyZW50LT5kaXNwbGF5TGF5ZXIoKSk7
CisgICAgQVNTRVJUKF9wYXJlbnQtPnJvb3RMYXllcigpKTsKKworICAgIFtfcGFyZW50LT5kaXNw
bGF5TGF5ZXIoKSBhZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJzdGF0dXMiIG9wdGlvbnM6
TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0Om5pbF07CisgICAgW19wYXJlbnQt
PmRpc3BsYXlMYXllcigpIGFkZE9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAImVycm9yIiBvcHRp
b25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDpuaWxdOworICAgIFtfcGFy
ZW50LT5yb290TGF5ZXIoKSBhZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJib3VuZHMiIG9w
dGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0Om5pbF07Cit9CisKKy0g
KHZvaWQpc3RvcE9ic2VydmluZ0xheWVycworeworICAgIGlmICghX3BhcmVudCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKF9wYXJlbnQtPmRpc3BsYXlMYXllcigpKSB7CisgICAgICAgIFtf
cGFyZW50LT5kaXNwbGF5TGF5ZXIoKSByZW1vdmVPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJz
dGF0dXMiXTsKKyAgICAgICAgW19wYXJlbnQtPmRpc3BsYXlMYXllcigpIHJlbW92ZU9ic2VydmVy
OnNlbGYgZm9yS2V5UGF0aDpAImVycm9yIl07CisgICAgfQorICAgIGlmIChfcGFyZW50LT5yb290
TGF5ZXIoKSkKKyAgICAgICAgW19wYXJlbnQtPnJvb3RMYXllcigpIHJlbW92ZU9ic2VydmVyOnNl
bGYgZm9yS2V5UGF0aDpAImJvdW5kcyJdOworfQorCistICh2b2lkKW9ic2VydmVWYWx1ZUZvcktl
eVBhdGg6KE5TU3RyaW5nICopa2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNE
aWN0aW9uYXJ5ICopY2hhbmdlIGNvbnRleHQ6KHZvaWQgKiljb250ZXh0Cit7CisgICAgVU5VU0VE
X1BBUkFNKGNvbnRleHQpOworICAgIFVOVVNFRF9QQVJBTShrZXlQYXRoKTsKKyAgICBBU1NFUlQo
X3BhcmVudCk7CisKKyAgICBpZiAoIV9wYXJlbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
IChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6UEFMOjpnZXRBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ckNsYXNzKCldKSB7CisgICAgICAgIEFTU0VSVChvYmplY3QgPT0gX3BhcmVudC0+ZGlzcGxheUxh
eWVyKCkpOworCisgICAgICAgIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJzdGF0dXMi
XSkgeworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IFJldGFp
blB0cjxXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyPihzZWxmKV0geworICAg
ICAgICAgICAgICAgIGlmICghcHJvdGVjdGVkU2VsZi0+X3BhcmVudCkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgcHJvdGVjdGVkU2VsZi0+X3BhcmVudC0+
bGF5ZXJTdGF0dXNEaWRDaGFuZ2UoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpA
ImVycm9yIl0pIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYg
PSBSZXRhaW5QdHI8V2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcj4oc2VsZild
IHsKKyAgICAgICAgICAgICAgICBpZiAoIXByb3RlY3RlZFNlbGYtPl9wYXJlbnQpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9w
YXJlbnQtPmxheWVyRXJyb3JEaWRDaGFuZ2UoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKFtbY2hhbmdlIHZhbHVlRm9y
S2V5Ok5TS2V5VmFsdWVDaGFuZ2VOb3RpZmljYXRpb25Jc1ByaW9yS2V5XSBib29sVmFsdWVdKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoKENBTGF5ZXIgKilvYmplY3QgPT0gX3BhcmVudC0+
cm9vdExheWVyKCkpIHsKKyAgICAgICAgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImJv
dW5kcyJdKSB7CisgICAgICAgICAgICBpZiAoIV9wYXJlbnQpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgICAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgICAgICAg
ICBfcGFyZW50LT5yb290TGF5ZXJCb3VuZHNEaWRDaGFuZ2UoKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3By
b3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0
ZW5lcj4oc2VsZildIHsKKyAgICAgICAgICAgICAgICBpZiAoIXByb3RlY3RlZFNlbGYtPl9wYXJl
bnQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIHByb3Rl
Y3RlZFNlbGYtPl9wYXJlbnQtPnJvb3RMYXllckJvdW5kc0RpZENoYW5nZSgpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0KKyAgICB9CisKK30KK0BlbmQKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitzdGF0aWMgdm9pZCBydW5XaXRob3V0QW5pbWF0aW9ucyhjb25zdCBXVEY6OkZ1bmN0aW9u
PHZvaWQoKT4mIGZ1bmN0aW9uKQoreworICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKKyAgICBb
Q0FUcmFuc2FjdGlvbiBzZXRBbmltYXRpb25EdXJhdGlvbjowXTsKKyAgICBbQ0FUcmFuc2FjdGlv
biBzZXREaXNhYmxlQWN0aW9uczpZRVNdOworICAgIGZ1bmN0aW9uKCk7CisgICAgW0NBVHJhbnNh
Y3Rpb24gY29tbWl0XTsKK30KKworc3RkOjp1bmlxdWVfcHRyPFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcj4gTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZShDbGllbnQmIGNsaWVu
dCwgYm9vbCBoaWRlUm9vdExheWVyLCBJbnRTaXplIHNpemUpCit7CisgICAgYXV0byBzYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJJbnN0YW5jZSgpIGluaXRdKTsKKyAgICBpZiAoIXNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxM
b2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4oV1RGTW92ZShzYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIpLCBjbGllbnQsIGhpZGVSb290TGF5ZXIsIHNpemUpOworfQorCitMb2NhbFNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcjo6TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoUmV0YWluUHRy
PEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiYmIHNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciwg
Q2xpZW50JiBjbGllbnQsIGJvb2wgaGlkZVJvb3RMYXllciwgSW50U2l6ZSBzaXplKQorICAgIDog
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKGNsaWVudCkKKyAgICAsIG1fc3RhdHVzQ2hhbmdlTGlz
dGVuZXIoYWRvcHROUyhbW1dlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgYWxs
b2NdIGluaXRXaXRoUGFyZW50OnRoaXNdKSkKKyAgICAsIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyKFdURk1vdmUoc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKSkKK3sKKyAgICBtX3NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci5nZXQoKS5iYWNrZ3JvdW5kQ29sb3IgPSBjYWNoZWRDR0NvbG9yKENv
bG9yOjpibGFjayk7CisgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCkuYW5jaG9y
UG9pbnQgPSB7IC41LCAuNSB9OworICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgp
Lm5lZWRzRGlzcGxheU9uQm91bmRzQ2hhbmdlID0gWUVTOworICAgIG1fc2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmdldCgpLnZpZGVvR3Jhdml0eSA9IEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVB
c3BlY3RGaWxsOworCisgICAgbV9yb290TGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10g
aW5pdF0pOworICAgIG1fcm9vdExheWVyLmdldCgpLmhpZGRlbiA9IGhpZGVSb290TGF5ZXI7CisK
KyAgICBtX3Jvb3RMYXllci5nZXQoKS5iYWNrZ3JvdW5kQ29sb3IgPSBjYWNoZWRDR0NvbG9yKENv
bG9yOjpibGFjayk7CisgICAgbV9yb290TGF5ZXIuZ2V0KCkubmVlZHNEaXNwbGF5T25Cb3VuZHND
aGFuZ2UgPSBZRVM7CisKKyAgICBtX3Jvb3RMYXllci5nZXQoKS5ib3VuZHMgPSBDR1JlY3RNYWtl
KDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CisKKyAgICBbbV9zdGF0dXNDaGFu
Z2VMaXN0ZW5lciBiZWdpbk9ic2VydmluZ0xheWVyc107CisKKyAgICBbbV9yb290TGF5ZXIgYWRk
U3VibGF5ZXI6bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCldOworCisjaWZuZGVmIE5E
RUJVRworICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBzZXROYW1lOkAiTG9jYWxTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIiXTsKKyAgICBb
bV9yb290TGF5ZXIgc2V0TmFtZTpAIkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIEFWU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyIHBhcmVudCJdOworI2VuZGlmCit9CisKK0xvY2FsU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyOjp+TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoKQorewor
ICAgIFttX3N0YXR1c0NoYW5nZUxpc3RlbmVyIHN0b3BPYnNlcnZpbmdMYXllcnNdOworCisgICAg
bV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5jbGVhcigpOworCisgICAgW21fc2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyIHN0b3BSZXF1ZXN0aW5nTWVkaWFEYXRhXTsKKyAgICBbbV9zYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIgZmx1c2hdOworICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyID0g
bnVsbHB0cjsKKworICAgIG1fcm9vdExheWVyID0gbnVsbHB0cjsKK30KKwordm9pZCBMb2NhbFNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6bGF5ZXJTdGF0dXNEaWRDaGFuZ2UoKQoreworICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LmdldCgpLnN0YXR1cyAhPSBBVlF1ZXVlZFNhbXBsZUJ1ZmZlclJlbmRlcmluZ1N0YXR1c1JlbmRl
cmluZykKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVy
bjsKKyAgICBtX2NsaWVudC0+c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyU3RhdHVzRGlkQ2hhbmdl
KCp0aGlzKTsKK30KKwordm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6bGF5ZXJF
cnJvckRpZENoYW5nZSgpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAvLyBG
SVhNRTogTG9nIGVycm9yLgorfQorCit2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Ojpyb290TGF5ZXJCb3VuZHNEaWRDaGFuZ2UoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY2xpZW50LT5z
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJCb3VuZHNEaWRDaGFuZ2UoKnRoaXMpOworfQorCitQbGF0
Zm9ybUxheWVyKiBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZGlzcGxheUxheWVyKCkK
K3sKKyAgICByZXR1cm4gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCk7Cit9CisKK1Bs
YXRmb3JtTGF5ZXIqIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpyb290TGF5ZXIoKQor
eworICAgIHJldHVybiBtX3Jvb3RMYXllci5nZXQoKTsKK30KKworYm9vbCBMb2NhbFNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcjo6ZGlkRmFpbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFttX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllciBzdGF0dXNdID09IEFWUXVldWVkU2FtcGxlQnVmZmVyUmVuZGVy
aW5nU3RhdHVzRmFpbGVkOworfQorCit2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Ojp1cGRhdGVEaXNwbGF5TW9kZShib29sIGhpZGVEaXNwbGF5TGF5ZXIsIGJvb2wgaGlkZVJvb3RM
YXllcikKK3sKKyAgICBpZiAobV9yb290TGF5ZXIuZ2V0KCkuaGlkZGVuID09IGhpZGVSb290TGF5
ZXIgJiYgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCkuaGlkZGVuID09IGhpZGVEaXNw
bGF5TGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHJ1bldpdGhvdXRBbmltYXRpb25zKFsm
XSB7CisgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLmhpZGRlbiA9IGhp
ZGVEaXNwbGF5TGF5ZXI7CisgICAgICAgIG1fcm9vdExheWVyLmdldCgpLmhpZGRlbiA9IGhpZGVS
b290TGF5ZXI7CisgICAgfSk7Cit9CisKK0NHUmVjdCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6Ym91bmRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yb290TGF5ZXIuZ2V0KCkuYm91
bmRzOworfQorCit2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjp1cGRhdGVBZmZp
bmVUcmFuc2Zvcm0oQ0dBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtKQoreworICAgIHJ1bldpdGhv
dXRBbmltYXRpb25zKFsmXSB7CisgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdl
dCgpLmFmZmluZVRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKKyAgICB9KTsKK30KKwordm9pZCBMb2Nh
bFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6dXBkYXRlQm91bmRzQW5kUG9zaXRpb24oQ0dSZWN0
IHZpZGVvQm91bmRzLCBDR1BvaW50IHBvc2l0aW9uKQoreworICAgIHJ1bldpdGhvdXRBbmltYXRp
b25zKFsmXSB7CisgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLmJvdW5k
cyA9IHZpZGVvQm91bmRzOworICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQo
KS5wb3NpdGlvbiA9IHBvc2l0aW9uOworICAgIH0pOworfQorCit2b2lkIExvY2FsU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyOjpmbHVzaCgpCit7CisgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyIGZsdXNoXTsKK30KKwordm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Zmx1
c2hBbmRSZW1vdmVJbWFnZSgpCit7CisgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIGZs
dXNoQW5kUmVtb3ZlSW1hZ2VdOworfQorCit2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOjplbnF1ZXVlU2FtcGxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCit7CisgICAgaWYgKCFbbV9z
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgaXNSZWFkeUZvck1vcmVNZWRpYURhdGFdKSB7CisgICAg
ICAgIGFkZFNhbXBsZVRvUGVuZGluZ1F1ZXVlKHNhbXBsZSk7CisgICAgICAgIHJlcXVlc3ROb3Rp
ZmljYXRpb25XaGVuUmVhZHlGb3JWaWRlb0RhdGEoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBlbnF1ZXVlU2FtcGxlQnVmZmVyOnNh
bXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcl07Cit9CisKK3ZvaWQg
TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnJlbW92ZU9sZFNhbXBsZXNGcm9tUGVuZGlu
Z1F1ZXVlKCkKK3sKKyAgICBpZiAobV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5pc0VtcHR5KCkg
fHwgIW1fY2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGRlY29kZVRpbWUgPSBt
X3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmZpcnN0KCktPmRlY29kZVRpbWUoKTsKKyAgICBpZiAo
IWRlY29kZVRpbWUuaXNWYWxpZCgpIHx8IGRlY29kZVRpbWUgPCBNZWRpYVRpbWU6Onplcm9UaW1l
KCkpIHsKKyAgICAgICAgd2hpbGUgKG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUuc2l6ZSgpID4g
NSkKKyAgICAgICAgICAgIG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUucmVtb3ZlRmlyc3QoKTsK
KworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgTWVkaWFUaW1lIG5vdyA9IG1fY2xpZW50
LT5zdHJlYW1UaW1lKCk7CisgICAgd2hpbGUgKCFtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmlz
RW1wdHkoKSkgeworICAgICAgICBpZiAobV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5maXJzdCgp
LT5kZWNvZGVUaW1lKCkgPiBub3cpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgbV9wZW5k
aW5nVmlkZW9TYW1wbGVRdWV1ZS5yZW1vdmVGaXJzdCgpOworICAgIH0KK30KKwordm9pZCBMb2Nh
bFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6YWRkU2FtcGxlVG9QZW5kaW5nUXVldWUoTWVkaWFT
YW1wbGUmIHNhbXBsZSkKK3sKKyAgICByZW1vdmVPbGRTYW1wbGVzRnJvbVBlbmRpbmdRdWV1ZSgp
OworICAgIG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUuYXBwZW5kKHNhbXBsZSk7Cit9CisKK3Zv
aWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNsZWFyRW5xdWV1ZWRTYW1wbGVzKCkK
K3sKKyAgICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmNsZWFyKCk7Cit9CisKK3ZvaWQgTG9j
YWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlG
b3JWaWRlb0RhdGEoKQoreworICAgIGF1dG8gd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyk7
CisgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHJlcXVlc3RNZWRpYURhdGFXaGVuUmVh
ZHlPblF1ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkgdXNpbmdCbG9jazpeeworICAgICAg
ICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFttX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllciBzdG9wUmVxdWVzdGluZ01lZGlhRGF0YV07CisKKyAgICAgICAg
d2hpbGUgKCFtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmlzRW1wdHkoKSkgeworICAgICAgICAg
ICAgaWYgKCFbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgaXNSZWFkeUZvck1vcmVNZWRpYURh
dGFdKSB7CisgICAgICAgICAgICAgICAgcmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvclZp
ZGVvRGF0YSgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgYXV0byBzYW1wbGUgPSBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLnRha2VGaXJz
dCgpOworICAgICAgICAgICAgZW5xdWV1ZVNhbXBsZShzYW1wbGUuZ2V0KCkpOworICAgICAgICB9
CisgICAgfV07Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCmluZGV4
IDAzNDBhOGRjZGYxMjRhNmZjNDk5OGUxZmM4NjgxYTBjMTEyNTNlOWYuLmQ5YWYyN2E2MDEwZDc5
ODg2NjI1MmVlZTM4YTVjNTA1ZTdhZWI4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCkBA
IC0zMCwxMCArMzAsMTAgQEAKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGUuaCIKICNpbmNs
dWRlICJNZWRpYVNhbXBsZS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtUHJpdmF0ZS5oIgorI2lu
Y2x1ZGUgIlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5o
PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5o
PgotI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIE9CSkNfQ0xBU1MgQVZTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI7CiBPQkpDX0NMQVNTIFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlz
dGVuZXI7CkBAIC01MSw3ICs1MSw3IEBAIGNsYXNzIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y7CiBj
bGFzcyBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDOwogY2xhc3MgVmlkZW9UcmFja1By
aXZhdGVNZWRpYVN0cmVhbTsKIAotY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDIGZpbmFsIDogcHVibGljIENhbk1ha2VXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQz4sIHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UsIHBy
aXZhdGUgTWVkaWFTdHJlYW1Qcml2YXRlOjpPYnNlcnZlciwgcHJpdmF0ZSBNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZTo6T2JzZXJ2ZXIKK2NsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UsIHByaXZh
dGUgTWVkaWFTdHJlYW1Qcml2YXRlOjpPYnNlcnZlciwgcHJpdmF0ZSBNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZTo6T2JzZXJ2ZXIsIHB1YmxpYyBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OkNsaWVu
dAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICwgcHJpdmF0ZSBMb2dnZXJIZWxwZXIK
ICNlbmRpZgpAQCAtNzUsMTMgKzc1LDYgQEAgcHVibGljOgogICAgIHZvaWQgZW5zdXJlTGF5ZXJz
KCk7CiAgICAgdm9pZCBkZXN0cm95TGF5ZXJzKCk7CiAKLSAgICB2b2lkIGxheWVyU3RhdHVzRGlk
Q2hhbmdlKEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKik7Ci0gICAgdm9pZCBsYXllckVycm9y
RGlkQ2hhbmdlKEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKik7Ci0gICAgdm9pZCBiYWNrZ3Jv
dW5kTGF5ZXJCb3VuZHNDaGFuZ2VkKCk7Ci0KLSAgICBQbGF0Zm9ybUxheWVyKiBkaXNwbGF5TGF5
ZXIoKTsKLSAgICBQbGF0Zm9ybUxheWVyKiBiYWNrZ3JvdW5kTGF5ZXIoKTsKLQogI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH0KICAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDIjsgfQpAQCAtMTM3LDEwICsxMzAsNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBmbHVz
aFJlbmRlcmVycygpOwogCi0gICAgdXNpbmcgUGVuZGluZ1NhbXBsZVF1ZXVlID0gRGVxdWU8UmVm
PE1lZGlhU2FtcGxlPj47Ci0gICAgdm9pZCBhZGRTYW1wbGVUb1BlbmRpbmdRdWV1ZShQZW5kaW5n
U2FtcGxlUXVldWUmLCBNZWRpYVNhbXBsZSYpOwotICAgIHZvaWQgcmVtb3ZlT2xkU2FtcGxlc0Zy
b21QZW5kaW5nUXVldWUoUGVuZGluZ1NhbXBsZVF1ZXVlJik7Ci0KICAgICBNZWRpYVRpbWUgY2Fs
Y3VsYXRlVGltZWxpbmVPZmZzZXQoY29uc3QgTWVkaWFTYW1wbGUmLCBkb3VibGUpOwogICAgIAog
ICAgIHZvaWQgZW5xdWV1ZVZpZGVvU2FtcGxlKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiwgTWVk
aWFTYW1wbGUmKTsKQEAgLTIxMiw3ICsyMDEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0Vmlk
ZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIFdURjo6RnVuY3Rpb248dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVl
bkZyYW1lKEZsb2F0UmVjdCkgb3ZlcnJpZGU7CiAKLSAgICBNZWRpYVRpbWUgc3RyZWFtVGltZSgp
IGNvbnN0OworICAgIE1lZGlhVGltZSBzdHJlYW1UaW1lKCkgY29uc3QgZmluYWw7CiAKICAgICBB
dWRpb1NvdXJjZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCkgZmluYWw7CiAKQEAgLTIy
MCwxNCArMjA5LDExIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21l
QWN0aXZlKCkgZmluYWw7CiAKLSAgICBib29sIGhpZGVCYWNrZ3JvdW5kTGF5ZXIoKSBjb25zdCB7
IHJldHVybiAoIW1fYWN0aXZlVmlkZW9UcmFjayB8fCBtX3dhaXRpbmdGb3JGaXJzdEltYWdlKSAm
JiBtX2Rpc3BsYXlNb2RlICE9IFBhaW50SXRCbGFjazsgfQorICAgIGJvb2wgaGlkZVJvb3RMYXll
cigpIGNvbnN0IHsgcmV0dXJuICghbV9hY3RpdmVWaWRlb1RyYWNrIHx8IG1fd2FpdGluZ0ZvckZp
cnN0SW1hZ2UpICYmIG1fZGlzcGxheU1vZGUgIT0gUGFpbnRJdEJsYWNrOyB9CiAKICAgICBNZWRp
YVBsYXllciogbV9wbGF5ZXIgeyBudWxscHRyIH07CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtUHJp
dmF0ZT4gbV9tZWRpYVN0cmVhbVByaXZhdGU7CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlPiBtX2FjdGl2ZVZpZGVvVHJhY2s7Ci0gICAgUmV0YWluUHRyPFdlYkFWU2FtcGxlQnVm
ZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXI+IG1fc3RhdHVzQ2hhbmdlTGlzdGVuZXI7Ci0gICAgUmV0
YWluUHRyPEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjsKLSAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV9iYWNrZ3JvdW5kTGF5ZXI7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFBBTDo6Q2xvY2s+IG1fY2xvY2s7CiAKICAgICBNZWRpYVRpbWUg
bV9wYXVzZWRUaW1lOwpAQCAtMjQ0LDcgKzIzMCw2IEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFw
PFN0cmluZywgUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0+PiBtX2F1ZGlvVHJh
Y2tNYXA7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZU1lZGlh
U3RyZWFtPj4gbV92aWRlb1RyYWNrTWFwOwotICAgIFBlbmRpbmdTYW1wbGVRdWV1ZSBtX3BlbmRp
bmdWaWRlb1NhbXBsZVF1ZXVlOwogCiAgICAgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBtX25l
dHdvcmtTdGF0ZSB7IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkVtcHR5IH07CiAgICAgTWVk
aWFQbGF5ZXI6OlJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlIHsgTWVkaWFQbGF5ZXI6OlJlYWR5U3Rh
dGU6OkhhdmVOb3RoaW5nIH07CkBAIC0yNTQsOCArMjM5LDEzIEBAIHByaXZhdGU6CiAgICAgUGxh
eWJhY2tTdGF0ZSBtX3BsYXliYWNrU3RhdGUgeyBQbGF5YmFja1N0YXRlOjpOb25lIH07CiAgICAg
TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gbV92aWRlb1JvdGF0aW9uIHsgTWVkaWFTYW1wbGU6
OlZpZGVvUm90YXRpb246Ok5vbmUgfTsKICAgICBDR0FmZmluZVRyYW5zZm9ybSBtX3ZpZGVvVHJh
bnNmb3JtOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IG1f
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb0Z1bGxz
Y3JlZW5MYXllck1hbmFnZXJPYmpDPiBtX3ZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlcjsKIAor
ICAgIC8vIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Q2xpZW50CisgICAgdm9pZCBzYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXJTdGF0dXNEaWRDaGFuZ2UoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
JikgZmluYWw7CisgICAgdm9pZCBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJCb3VuZHNEaWRDaGFu
Z2UoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyJikgZmluYWw7CisKICNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKICAgICBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25zdCB2b2lk
KiBtX2xvZ0lkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KaW5kZXggNWZjZjlh
YmJhZDA1MTI3NGQxMjMyY2YzYWRjNmQyZTk4ZWQ1MjQxMS4uZGY5ZTIwNTdhOGI2OTlkNzJlNjI2
MjYwMzA4YTA5Y2VmNTY1MmQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMx
LDIwICszMSwxNiBAQAogI2ltcG9ydCAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbS5oIgog
I2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBv
cnQgIkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgiCiAjaW1wb3J0ICJNZWRpYVN0cmVh
bVByaXZhdGUuaCIKICNpbXBvcnQgIlBpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuaCIKICNpbXBvcnQg
IlZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakMuaCIKICNpbXBvcnQgIlZpZGVvVHJhY2tQ
cml2YXRlTWVkaWFTdHJlYW0uaCIKLSNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5oPgogI2ltcG9ydCA8Q29yZUdyYXBoaWNzL0NHQWZmaW5lVHJhbnNmb3Jt
Lmg+Ci0jaW1wb3J0IDxRdWFydHpDb3JlL0NBTGF5ZXIuaD4KLSNpbXBvcnQgPFF1YXJ0ekNvcmUv
Q0FUcmFuc2FjdGlvbi5oPgogI2ltcG9ydCA8b2JqY19ydW50aW1lLmg+CiAjaW1wb3J0IDxwYWwv
YXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8cGFsL3NwaS9t
YWMvQVZGb3VuZGF0aW9uU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3lzdGVtL0Nsb2NrLmg+Ci0jaW1w
b3J0IDx3dGYvRGVxdWUuaD4KLSNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgogI2ltcG9ydCA8d3Rm
L01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCkBAIC01Miwx
MjcgKzQ4LDYgQEAKICNpbXBvcnQgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgogI2ltcG9y
dCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwotCi1AaW50ZXJmYWNlIFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVu
ZXIgOiBOU09iamVjdCB7Ci0gICAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
KiBfcGFyZW50OwotfQotCi0tIChpZClpbml0V2l0aFBhcmVudDooTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDKiljYWxsYmFjazsKLS0gKHZvaWQpaW52YWxpZGF0ZTsKLS0gKHZv
aWQpYmVnaW5PYnNlcnZpbmdMYXllcnM7Ci0tICh2b2lkKXN0b3BPYnNlcnZpbmdMYXllcnM7Ci1A
ZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3Rl
bmVyCi0KLS0gKGlkKWluaXRXaXRoUGFyZW50OihNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakMqKXBhcmVudAotewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQotICAg
ICAgICByZXR1cm4gbmlsOwotCi0gICAgX3BhcmVudCA9IHBhcmVudDsKLQotICAgIHJldHVybiBz
ZWxmOwotfQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbc2VsZiBpbnZhbGlkYXRlXTsKLSAg
ICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpaW52YWxpZGF0ZQotewotICAgIFtzZWxm
IHN0b3BPYnNlcnZpbmdMYXllcnNdOwotICAgIF9wYXJlbnQgPSBudWxscHRyOwotfQotCi0tICh2
b2lkKWJlZ2luT2JzZXJ2aW5nTGF5ZXJzCi17Ci0gICAgQVNTRVJUKF9wYXJlbnQpOwotICAgIEFT
U0VSVChfcGFyZW50LT5kaXNwbGF5TGF5ZXIoKSk7Ci0gICAgQVNTRVJUKF9wYXJlbnQtPmJhY2tn
cm91bmRMYXllcigpKTsKLQotICAgIFtfcGFyZW50LT5kaXNwbGF5TGF5ZXIoKSBhZGRPYnNlcnZl
cjpzZWxmIGZvcktleVBhdGg6QCJzdGF0dXMiIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09w
dGlvbk5ldyBjb250ZXh0Om5pbF07Ci0gICAgW19wYXJlbnQtPmRpc3BsYXlMYXllcigpIGFkZE9i
c2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAImVycm9yIiBvcHRpb25zOk5TS2V5VmFsdWVPYnNlcnZp
bmdPcHRpb25OZXcgY29udGV4dDpuaWxdOwotICAgIFtfcGFyZW50LT5iYWNrZ3JvdW5kTGF5ZXIo
KSBhZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJib3VuZHMiIG9wdGlvbnM6TlNLZXlWYWx1
ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0Om5pbF07Ci19Ci0KLS0gKHZvaWQpc3RvcE9ic2Vy
dmluZ0xheWVycwotewotICAgIGlmICghX3BhcmVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
aWYgKF9wYXJlbnQtPmRpc3BsYXlMYXllcigpKSB7Ci0gICAgICAgIFtfcGFyZW50LT5kaXNwbGF5
TGF5ZXIoKSByZW1vdmVPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJzdGF0dXMiXTsKLSAgICAg
ICAgW19wYXJlbnQtPmRpc3BsYXlMYXllcigpIHJlbW92ZU9ic2VydmVyOnNlbGYgZm9yS2V5UGF0
aDpAImVycm9yIl07Ci0gICAgfQotICAgIGlmIChfcGFyZW50LT5iYWNrZ3JvdW5kTGF5ZXIoKSkK
LSAgICAgICAgW19wYXJlbnQtPmJhY2tncm91bmRMYXllcigpIHJlbW92ZU9ic2VydmVyOnNlbGYg
Zm9yS2V5UGF0aDpAImJvdW5kcyJdOwotfQotCi0tICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBh
dGg6KE5TU3RyaW5nICopa2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0
aW9uYXJ5ICopY2hhbmdlIGNvbnRleHQ6KHZvaWQgKiljb250ZXh0Ci17Ci0gICAgVU5VU0VEX1BB
UkFNKGNvbnRleHQpOwotICAgIFVOVVNFRF9QQVJBTShrZXlQYXRoKTsKLSAgICBBU1NFUlQoX3Bh
cmVudCk7Ci0KLSAgICBpZiAoIV9wYXJlbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChb
b2JqZWN0IGlzS2luZE9mQ2xhc3M6UEFMOjpnZXRBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckNs
YXNzKCldKSB7Ci0gICAgICAgIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4g
bGF5ZXIgPSAoQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgKilvYmplY3Q7Ci0gICAgICAgIEFT
U0VSVChsYXllci5nZXQoKSA9PSBfcGFyZW50LT5kaXNwbGF5TGF5ZXIoKSk7Ci0KLSAgICAgICAg
aWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInN0YXR1cyJdKSB7Ci0gICAgICAgICAgICBS
ZXRhaW5QdHI8TlNOdW1iZXI+IHN0YXR1cyA9IFtjaGFuZ2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1
ZUNoYW5nZU5ld0tleV07Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRT
ZWxmID0gUmV0YWluUHRyPFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXI+KHNl
bGYpLCBsYXllciA9IFdURk1vdmUobGF5ZXIpLCBzdGF0dXMgPSBXVEZNb3ZlKHN0YXR1cyldIHsK
LSAgICAgICAgICAgICAgICBpZiAoIXByb3RlY3RlZFNlbGYtPl9wYXJlbnQpCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9wYXJl
bnQtPmxheWVyU3RhdHVzRGlkQ2hhbmdlKGxheWVyLmdldCgpKTsKLSAgICAgICAgICAgIH0pOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKFtrZXlQYXRoIGlz
RXF1YWxUb1N0cmluZzpAImVycm9yIl0pIHsKLSAgICAgICAgICAgIFJldGFpblB0cjxOU051bWJl
cj4gc3RhdHVzID0gW2NoYW5nZSB2YWx1ZUZvcktleTpOU0tleVZhbHVlQ2hhbmdlTmV3S2V5XTsK
LSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8
V2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcj4oc2VsZiksIGxheWVyID0gV1RG
TW92ZShsYXllciksIHN0YXR1cyA9IFdURk1vdmUoc3RhdHVzKV0gewotICAgICAgICAgICAgICAg
IGlmICghcHJvdGVjdGVkU2VsZi0+X3BhcmVudCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgICAgICAgICAgcHJvdGVjdGVkU2VsZi0+X3BhcmVudC0+bGF5ZXJFcnJvckRp
ZENoYW5nZShsYXllci5nZXQoKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChbW2NoYW5nZSB2YWx1ZUZvcktleTpOU0tl
eVZhbHVlQ2hhbmdlTm90aWZpY2F0aW9uSXNQcmlvcktleV0gYm9vbFZhbHVlXSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgaWYgKChDQUxheWVyICopb2JqZWN0ID09IF9wYXJlbnQtPmJhY2tncm91
bmRMYXllcigpKSB7Ci0gICAgICAgIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJib3Vu
ZHMiXSkgewotICAgICAgICAgICAgaWYgKCFfcGFyZW50KQotICAgICAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICAgICAgaWYgKGlzTWFpblRocmVhZCgpKSB7Ci0gICAgICAgICAgICAgICAg
X3BhcmVudC0+YmFja2dyb3VuZExheWVyQm91bmRzQ2hhbmdlZCgpOwotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
cHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxp
c3RlbmVyPihzZWxmKV0gewotICAgICAgICAgICAgICAgIGlmICghcHJvdGVjdGVkU2VsZi0+X3Bh
cmVudCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICAgICAgcHJv
dGVjdGVkU2VsZi0+X3BhcmVudC0+YmFja2dyb3VuZExheWVyQm91bmRzQ2hhbmdlZCgpOwotICAg
ICAgICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLX0KLUBlbmQKLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIFBBTDsKIApAQCAtMTgzLDcgKzU4LDYgQEAgc3RhdGlj
IGNvbnN0IGRvdWJsZSByZW5kZXJlckxhdGVuY3kgPSAwLjAyOwogCiBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
QyhNZWRpYVBsYXllciogcGxheWVyKQogICAgIDogbV9wbGF5ZXIocGxheWVyKQotICAgICwgbV9z
dGF0dXNDaGFuZ2VMaXN0ZW5lcihhZG9wdE5TKFtbV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFu
Z2VMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhQYXJlbnQ6dGhpc10pKQogICAgICwgbV9jbG9jayhQ
QUw6OkNsb2NrOjpjcmVhdGUoKSkKICAgICAsIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2Vy
KG1ha2VVbmlxdWU8VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQz4oKSkKICNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKQEAgLTE5OCw4ICs3Miw2IEBAIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQzo6fk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQygp
CiB7CiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAKLSAgICBbbV9zdGF0dXNDaGFuZ2VM
aXN0ZW5lciBpbnZhbGlkYXRlXTsKLQogICAgIGZvciAoY29uc3QgYXV0byYgdHJhY2sgOiBtX2F1
ZGlvVHJhY2tNYXAudmFsdWVzKCkpCiAgICAgICAgIHRyYWNrLT5wYXVzZSgpOwogCkBAIC0yNjks
MzMgKzE0MSw2IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjpzdXBwb3J0c1R5cGUoY29uCiAjcHJhZ21hIG1hcmsgLQogI3By
YWdtYSBtYXJrIEFWU2FtcGxlQnVmZmVyIE1ldGhvZHMKIAotdm9pZCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlbW92ZU9sZFNhbXBsZXNGcm9tUGVuZGluZ1F1ZXVlKFBl
bmRpbmdTYW1wbGVRdWV1ZSYgcXVldWUpCi17Ci0gICAgaWYgKHF1ZXVlLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBkZWNvZGVUaW1lID0gcXVldWUuZmlyc3QoKS0+ZGVj
b2RlVGltZSgpOwotICAgIGlmICghZGVjb2RlVGltZS5pc1ZhbGlkKCkgfHwgZGVjb2RlVGltZSA8
IE1lZGlhVGltZTo6emVyb1RpbWUoKSkgewotICAgICAgICB3aGlsZSAocXVldWUuc2l6ZSgpID4g
NSkKLSAgICAgICAgICAgIHF1ZXVlLnJlbW92ZUZpcnN0KCk7Ci0KLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIE1lZGlhVGltZSBub3cgPSBzdHJlYW1UaW1lKCk7Ci0gICAgd2hpbGUgKCFx
dWV1ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKHF1ZXVlLmZpcnN0KCktPmRlY29kZVRpbWUo
KSA+IG5vdykKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBxdWV1ZS5yZW1vdmVGaXJzdCgp
OwotICAgIH0KLX0KLQotdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OmFkZFNhbXBsZVRvUGVuZGluZ1F1ZXVlKFBlbmRpbmdTYW1wbGVRdWV1ZSYgcXVldWUsIE1lZGlh
U2FtcGxlJiBzYW1wbGUpCi17Ci0gICAgcmVtb3ZlT2xkU2FtcGxlc0Zyb21QZW5kaW5nUXVldWUo
cXVldWUpOwotICAgIHF1ZXVlLmFwcGVuZChzYW1wbGUpOwotfQotCiBNZWRpYVRpbWUgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjYWxjdWxhdGVUaW1lbGluZU9mZnNldChj
b25zdCBNZWRpYVNhbXBsZSYgc2FtcGxlLCBkb3VibGUgbGF0ZW5jeSkKIHsKICAgICBNZWRpYVRp
bWUgc2FtcGxlVGltZSA9IHNhbXBsZS5vdXRwdXRQcmVzZW50YXRpb25UaW1lKCk7CkBAIC0zMzAs
MzcgKzE3NSwxOSBAQCBDR0FmZmluZVRyYW5zZm9ybSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OnZpZGVvVHJhbnNmb3JtYXRpb25NYXRyaQogICAgIHJldHVybiBtX3ZpZGVv
VHJhbnNmb3JtOwogfQogCi1zdGF0aWMgdm9pZCBydW5XaXRob3V0QW5pbWF0aW9ucyhjb25zdCBX
VEY6OkZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uKQotewotICAgIFtDQVRyYW5zYWN0aW9uIGJl
Z2luXTsKLSAgICBbQ0FUcmFuc2FjdGlvbiBzZXRBbmltYXRpb25EdXJhdGlvbjowXTsKLSAgICBb
Q0FUcmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0aW9uczpZRVNdOwotICAgIGZ1bmN0aW9uKCk7Ci0g
ICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKLX0KLQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakM6OmVucXVldWVDb3JyZWN0ZWRWaWRlb1NhbXBsZShNZWRpYVNhbXBs
ZSYgc2FtcGxlKQogewogICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikgewotICAg
ICAgICBpZiAoW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHN0YXR1c10gPT0gQVZRdWV1ZWRT
YW1wbGVCdWZmZXJSZW5kZXJpbmdTdGF0dXNGYWlsZWQpCisgICAgICAgIGlmIChtX3NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci0+ZGlkRmFpbCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAg
ICAgIGlmIChzYW1wbGUudmlkZW9Sb3RhdGlvbigpICE9IG1fdmlkZW9Sb3RhdGlvbiB8fCBzYW1w
bGUudmlkZW9NaXJyb3JlZCgpICE9IG1fdmlkZW9NaXJyb3JlZCkgewogICAgICAgICAgICAgbV92
aWRlb1JvdGF0aW9uID0gc2FtcGxlLnZpZGVvUm90YXRpb24oKTsKICAgICAgICAgICAgIG1fdmlk
ZW9NaXJyb3JlZCA9IHNhbXBsZS52aWRlb01pcnJvcmVkKCk7Ci0gICAgICAgICAgICBydW5XaXRo
b3V0QW5pbWF0aW9ucyhbdGhpcywgJnNhbXBsZV0gewotICAgICAgICAgICAgICAgIG1fc2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmdldCgpLmFmZmluZVRyYW5zZm9ybSA9IHZpZGVvVHJhbnNmb3Jt
YXRpb25NYXRyaXgoc2FtcGxlLCB0cnVlKTsKLSAgICAgICAgICAgICAgICB1cGRhdGVEaXNwbGF5
TGF5ZXIoKTsKLSAgICAgICAgICAgIH0pOworICAgICAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXItPnVwZGF0ZUFmZmluZVRyYW5zZm9ybSh2aWRlb1RyYW5zZm9ybWF0aW9uTWF0cml4
KHNhbXBsZSwgdHJ1ZSkpOworICAgICAgICAgICAgdXBkYXRlRGlzcGxheUxheWVyKCk7CiAgICAg
ICAgIH0KLQotICAgICAgICBpZiAoIVttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBpc1JlYWR5
Rm9yTW9yZU1lZGlhRGF0YV0pIHsKLSAgICAgICAgICAgIGFkZFNhbXBsZVRvUGVuZGluZ1F1ZXVl
KG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUsIHNhbXBsZSk7Ci0gICAgICAgICAgICByZXF1ZXN0
Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRhKCk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQotICAgICAgICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgZW5xdWV1
ZVNhbXBsZUJ1ZmZlcjpzYW1wbGUucGxhdGZvcm1TYW1wbGUoKS5zYW1wbGUuY21TYW1wbGVCdWZm
ZXJdOworICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+ZW5xdWV1ZVNhbXBsZShz
YW1wbGUpOwogICAgIH0KIAogICAgIGlmICghbV9oYXNFdmVyRW5xdWV1ZWRWaWRlb0ZyYW1lKSB7
CkBAIC00MTUsNjEgKzI0MiwyNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQzo6ZW5xdWV1ZVZpZGVvU2FtcGxlKE1lZGlhU3RyZWFtVHJhY2tQcgogICAgIH0KIH0K
IAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlcXVlc3ROb3Rp
ZmljYXRpb25XaGVuUmVhZHlGb3JWaWRlb0RhdGEoKQotewotICAgIGF1dG8gd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cigqdGhpcyk7Ci0gICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHJlcXVl
c3RNZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkgdXNp
bmdCbG9jazpeIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgc3RvcFJlcXVlc3RpbmdNZWRp
YURhdGFdOwotCi0gICAgICAgIGlmICghbV9hY3RpdmVWaWRlb1RyYWNrKSB7Ci0gICAgICAgICAg
ICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmNsZWFyKCk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQotICAgICAgICB3aGlsZSAoIW1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUu
aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBpZiAoIVttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ciBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pIHsKLSAgICAgICAgICAgICAgICByZXF1ZXN0Tm90
aWZpY2F0aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRhKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBhdXRvIHNhbXBsZSA9IG1fcGVuZGluZ1Zp
ZGVvU2FtcGxlUXVldWUudGFrZUZpcnN0KCk7Ci0gICAgICAgICAgICBlbnF1ZXVlVmlkZW9TYW1w
bGUoKm1fYWN0aXZlVmlkZW9UcmFjay5nZXQoKSwgc2FtcGxlLmdldCgpKTsKLSAgICAgICAgfQot
ICAgIH1dOwotfQotCiBBdWRpb1NvdXJjZVByb3ZpZGVyKiBNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakM6OmF1ZGlvU291cmNlUHJvdmlkZXIoKQogewogICAgIC8vIEZJWE1FOiBU
aGlzIHNob3VsZCByZXR1cm4gYSBtaXggb2YgYWxsIGF1ZGlvIHRyYWNrcyAtIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjAzMDUKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmxheWVyRXJy
b3JEaWRDaGFuZ2UoQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIqIGxheWVyKQordm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
clN0YXR1c0RpZENoYW5nZShTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXImIGxheWVyKQogeworICAg
IEFTU0VSVCgmbGF5ZXIgPT0gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCkpOwogICAg
IFVOVVNFRF9QQVJBTShsYXllcik7Ci0gICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICJlcnJv
ciA9ICIsIFtbbGF5ZXIuZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dIFVURjhTdHJpbmddKTsK
LX0KLQotdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmxheWVyU3Rh
dHVzRGlkQ2hhbmdlKEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKiBsYXllcikKLXsKLSAgICBB
TFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJzdGF0dXMgPSAiLCAoaW50KWxheWVyLnN0YXR1cyk7
Ci0KLSAgICBpZiAobGF5ZXIuc3RhdHVzICE9IEFWUXVldWVkU2FtcGxlQnVmZmVyUmVuZGVyaW5n
U3RhdHVzUmVuZGVyaW5nKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKCFtX3NhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllciB8fCAhbV9hY3RpdmVWaWRlb1RyYWNrIHx8IGxheWVyICE9IG1fc2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyKQorICAgIGlmICghbV9hY3RpdmVWaWRlb1RyYWNrKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBhdXRvIHRyYWNrID0gbV92aWRlb1RyYWNrTWFwLmdldChtX2FjdGl2
ZVZpZGVvVHJhY2stPmlkKCkpOwotICAgIGlmICh0cmFjaykKKyAgICBpZiAoYXV0byB0cmFjayA9
IG1fdmlkZW9UcmFja01hcC5nZXQobV9hY3RpdmVWaWRlb1RyYWNrLT5pZCgpKSkKICAgICAgICAg
dHJhY2stPnNldFRpbWVsaW5lT2Zmc2V0KE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSk7CiB9CiAK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjphcHBsaWNhdGlvbkRp
ZEJlY29tZUFjdGl2ZSgpCiB7Ci0gICAgaWYgKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyICYm
IFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBzdGF0dXNdID09IEFWUXVldWVkU2FtcGxlQnVm
ZmVyUmVuZGVyaW5nU3RhdHVzRmFpbGVkKSB7CisgICAgaWYgKG1fc2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyICYmIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5kaWRGYWlsKCkpIHsKICAgICAg
ICAgZmx1c2hSZW5kZXJlcnMoKTsKICAgICAgICAgaWYgKG1faW1hZ2VQYWludGVyLm1lZGlhU2Ft
cGxlKQogICAgICAgICAgICAgZW5xdWV1ZUNvcnJlY3RlZFZpZGVvU2FtcGxlKCptX2ltYWdlUGFp
bnRlci5tZWRpYVNhbXBsZSk7CkBAIC00ODAsNyArMjcyLDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkKIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpmbHVzaFJlbmRlcmVycygp
CiB7CiAgICAgaWYgKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQotICAgICAgICBbbV9zYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIgZmx1c2hdOworICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci0+Zmx1c2goKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OmVuc3VyZUxheWVycygpCkBAIC00OTEsNTEgKzI4MywyNCBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5zdXJlTGF5ZXJzKCkKICAgICBpZiAo
IW1fbWVkaWFTdHJlYW1Qcml2YXRlIHx8ICFtX21lZGlhU3RyZWFtUHJpdmF0ZS0+YWN0aXZlVmlk
ZW9UcmFjaygpIHx8ICFtX21lZGlhU3RyZWFtUHJpdmF0ZS0+YWN0aXZlVmlkZW9UcmFjaygpLT5l
bmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyID0gYWRvcHROUyhbUEFMOjphbGxvY0FWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySW5zdGFu
Y2UoKSBpbml0XSk7CisgICAgYXV0byBzaXplID0gc25hcHBlZEludFJlY3QobV9wbGF5ZXItPnBs
YXllckNvbnRlbnRCb3hSZWN0KCkpLnNpemUoKTsKKyAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllciA9IExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjcmVhdGUoKnRoaXMsIGhpZGVS
b290TGF5ZXIoKSwgc2l6ZSk7CisKICAgICBpZiAoIW1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
KSB7Ci0gICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiK1tBVlNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllciBhbGxvY10gZmFpbGVkLiIpOworICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJ
RklFUiwgIkNyZWF0aW5nIHRoZSBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgZmFpbGVkLiIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
Z2V0KCkuYmFja2dyb3VuZENvbG9yID0gY2FjaGVkQ0dDb2xvcihDb2xvcjo6YmxhY2spOwotICAg
IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLmFuY2hvclBvaW50ID0geyAuNSwgLjUg
fTsKLSAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKS5uZWVkc0Rpc3BsYXlPbkJv
dW5kc0NoYW5nZSA9IFlFUzsKLSAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKS52
aWRlb0dyYXZpdHkgPSBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0RmlsbDsKLQotICAg
IG1fYmFja2dyb3VuZExheWVyID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKTsKLSAg
ICBtX2JhY2tncm91bmRMYXllci5nZXQoKS5oaWRkZW4gPSBoaWRlQmFja2dyb3VuZExheWVyKCk7
Ci0KLSAgICBtX2JhY2tncm91bmRMYXllci5nZXQoKS5iYWNrZ3JvdW5kQ29sb3IgPSBjYWNoZWRD
R0NvbG9yKENvbG9yOjpibGFjayk7Ci0gICAgbV9iYWNrZ3JvdW5kTGF5ZXIuZ2V0KCkubmVlZHNE
aXNwbGF5T25Cb3VuZHNDaGFuZ2UgPSBZRVM7Ci0KLSAgICBhdXRvIHNpemUgPSBzbmFwcGVkSW50
UmVjdChtX3BsYXllci0+cGxheWVyQ29udGVudEJveFJlY3QoKSkuc2l6ZSgpOwotICAgIG1fYmFj
a2dyb3VuZExheWVyLmdldCgpLmJvdW5kcyA9IENHUmVjdE1ha2UoMCwgMCwgc2l6ZS53aWR0aCgp
LCBzaXplLmhlaWdodCgpKTsKLQotICAgIFttX3N0YXR1c0NoYW5nZUxpc3RlbmVyIGJlZ2luT2Jz
ZXJ2aW5nTGF5ZXJzXTsKLQotICAgIFttX2JhY2tncm91bmRMYXllciBhZGRTdWJsYXllcjptX3Nh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKV07Ci0KLSNpZm5kZWYgTkRFQlVHCi0gICAgW21f
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHNldE5hbWU6QCJNZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakMgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIiXTsKLSAgICBbbV9iYWNr
Z3JvdW5kTGF5ZXIgc2V0TmFtZTpAIk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
QyBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBwYXJlbnQiXTsKLSNlbmRpZgotCiAgICAgdXBk
YXRlUmVuZGVyaW5nTW9kZSgpOwogICAgIHVwZGF0ZURpc3BsYXlMYXllcigpOwogCi0gICAgbV92
aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnNldFZpZGVvTGF5ZXIobV9iYWNrZ3JvdW5kTGF5
ZXIuZ2V0KCksIHNpemUpOworICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyLT5zZXRW
aWRlb0xheWVyKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5yb290TGF5ZXIoKSwgc2l6ZSk7
CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpkZXN0cm95
TGF5ZXJzKCkKIHsKLSAgICBbbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lciBzdG9wT2JzZXJ2aW5nTGF5
ZXJzXTsKLSAgICBpZiAobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpIHsKLSAgICAgICAgbV9w
ZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5jbGVhcigpOwotICAgICAgICBbbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIgc3RvcFJlcXVlc3RpbmdNZWRpYURhdGFdOwotICAgICAgICBbbV9zYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIgZmx1c2hdOworICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcikKICAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgPSBudWxscHRyOwotICAg
IH0KLSAgICBtX2JhY2tncm91bmRMYXllciA9IG51bGxwdHI7CiAKICAgICB1cGRhdGVSZW5kZXJp
bmdNb2RlKCk7CiAgICAgCkBAIC02MDIsMjIgKzM2NywxMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cHJlcGFyZVRvUGxheSgpCiAKIFBsYXRmb3JtTGF5ZXIq
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGxhdGZvcm1MYXllcigpIGNv
bnN0CiB7Ci0gICAgaWYgKCFtX2JhY2tncm91bmRMYXllciB8fCBtX2Rpc3BsYXlNb2RlID09IE5v
bmUpCisgICAgaWYgKCFtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciB8fCAhbV9zYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXItPnJvb3RMYXllcigpIHx8IG1fZGlzcGxheU1vZGUgPT0gTm9uZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gbV92aWRlb0Z1bGxzY3JlZW5MYXll
ck1hbmFnZXItPnZpZGVvSW5saW5lTGF5ZXIoKTsKIH0KIAotUGxhdGZvcm1MYXllciogTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpkaXNwbGF5TGF5ZXIoKQotewotICAgIHJl
dHVybiBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKTsKLX0KLQotUGxhdGZvcm1MYXll
ciogTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpiYWNrZ3JvdW5kTGF5ZXIo
KQotewotICAgIHJldHVybiBtX2JhY2tncm91bmRMYXllci5nZXQoKTsKLX0KLQogTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpEaXNwbGF5TW9kZSBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OmN1cnJlbnREaXNwbGF5TW9kZSgpIGNvbnN0CiB7CiAgICAg
aWYgKG1faW50cmluc2ljU2l6ZS5pc0VtcHR5KCkgfHwgIW1ldGFEYXRhQXZhaWxhYmxlKCkgfHwg
IW1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQpAQCAtNjUzLDE4ICs0MDgsOCBAQCBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlRGlzcGxheU1vZGUoKQog
ICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJ1cGRhdGVkIHRvICIsIHN0YXRpY19jYXN0PGlu
dD4oZGlzcGxheU1vZGUpKTsKICAgICBtX2Rpc3BsYXlNb2RlID0gZGlzcGxheU1vZGU7CiAKLSAg
ICBhdXRvIGhpZGRlbiA9IG1fZGlzcGxheU1vZGUgPCBQYXVzZWRJbWFnZTsKLSAgICBpZiAobV9z
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgJiYgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0
KCkuaGlkZGVuICE9IGhpZGRlbikgewotICAgICAgICBydW5XaXRob3V0QW5pbWF0aW9ucyhbdGhp
cywgaGlkZGVuXSB7Ci0gICAgICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQo
KS5oaWRkZW4gPSBoaWRkZW47Ci0gICAgICAgIH0pOwotICAgIH0KLSAgICBoaWRkZW4gPSBoaWRl
QmFja2dyb3VuZExheWVyKCk7Ci0gICAgaWYgKG1fYmFja2dyb3VuZExheWVyICYmIG1fYmFja2dy
b3VuZExheWVyLmdldCgpLmhpZGRlbiAhPSBoaWRkZW4pIHsKLSAgICAgICAgcnVuV2l0aG91dEFu
aW1hdGlvbnMoW3RoaXMsIGhpZGRlbl0gewotICAgICAgICAgICAgbV9iYWNrZ3JvdW5kTGF5ZXIu
Z2V0KCkuaGlkZGVuID0gaGlkZGVuOwotICAgICAgICB9KTsKLSAgICB9CisgICAgaWYgKG1fc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyKQorICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ci0+dXBkYXRlRGlzcGxheU1vZGUobV9kaXNwbGF5TW9kZSA8IFBhdXNlZEltYWdlLCBoaWRlUm9v
dExheWVyKCkpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xMDIzLDggKzc2OCwxMSBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y2hlY2tTZWxlY3RlZFZp
ZGVvVHJhY2soKQogICAgICAgICAgICAgICAgIG1fd2FpdGluZ0ZvckZpcnN0SW1hZ2UgPSB0cnVl
OwogICAgICAgICB9CiAgICAgICAgIGVuc3VyZUxheWVycygpOwotICAgICAgICBtX3NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci5nZXQoKS5oaWRkZW4gPSBoaWRlVmlkZW9MYXllciB8fCBtX2Rpc3Bs
YXlNb2RlIDwgUGF1c2VkSW1hZ2U7Ci0gICAgICAgIG1fYmFja2dyb3VuZExheWVyLmdldCgpLmhp
ZGRlbiA9IGhpZGVCYWNrZ3JvdW5kTGF5ZXIoKTsKKyAgICAgICAgaWYgKG1fc2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyKSB7CisgICAgICAgICAgICBpZiAoIW1fYWN0aXZlVmlkZW9UcmFjaykKKyAg
ICAgICAgICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+Y2xlYXJFbnF1ZXVlZFNh
bXBsZXMoKTsKKyAgICAgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT51cGRhdGVE
aXNwbGF5TW9kZShoaWRlVmlkZW9MYXllciB8fCBtX2Rpc3BsYXlNb2RlIDwgUGF1c2VkSW1hZ2Us
IGhpZGVSb290TGF5ZXIoKSk7CisgICAgICAgIH0KIAogICAgICAgICBtX3BlbmRpbmdTZWxlY3Rl
ZFRyYWNrQ2hlY2sgPSBmYWxzZTsKICAgICAgICAgdXBkYXRlRGlzcGxheU1vZGUoKTsKQEAgLTEx
NzMsOCArOTIxLDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OnNldE5ldHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6TmV0d29ya1MKIAogdm9pZCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNldEJ1ZmZlcmluZ1BvbGljeShNZWRpYVBsYXll
cjo6QnVmZmVyaW5nUG9saWN5IHBvbGljeSkKIHsKLSAgICBpZiAocG9saWN5ICE9IE1lZGlhUGxh
eWVyOjpCdWZmZXJpbmdQb2xpY3k6OkRlZmF1bHQpCi0gICAgICAgIFttX3NhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllciBmbHVzaEFuZFJlbW92ZUltYWdlXTsKKyAgICBpZiAocG9saWN5ICE9IE1lZGlh
UGxheWVyOjpCdWZmZXJpbmdQb2xpY3k6OkRlZmF1bHQgJiYgbV9zYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIpCisgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5mbHVzaEFuZFJlbW92
ZUltYWdlKCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjpzY2hlZHVsZURlZmVycmVkVGFzayhGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQpAQCAt
MTE5NywyMyArOTQ1LDIwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpDdXJyZW50RnJhbWVQYWludGVyOjpyZXNldCgpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVEaXNwbGF5TGF5ZXIoKQogewotICAgIGlmICgh
bV9iYWNrZ3JvdW5kTGF5ZXIgfHwgIW1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQorICAgIGlm
ICghbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1
dG8gYmFja2dyb3VuZEJvdW5kcyA9IG1fYmFja2dyb3VuZExheWVyLmdldCgpLmJvdW5kczsKLSAg
ICBhdXRvIHZpZGVvQm91bmRzID0gYmFja2dyb3VuZEJvdW5kczsKKyAgICBhdXRvIGJvdW5kcyA9
IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5ib3VuZHMoKTsKKyAgICBhdXRvIHZpZGVvQm91
bmRzID0gYm91bmRzOwogICAgIGlmIChtX3ZpZGVvUm90YXRpb24gPT0gTWVkaWFTYW1wbGU6OlZp
ZGVvUm90YXRpb246OlJpZ2h0IHx8IG1fdmlkZW9Sb3RhdGlvbiA9PSBNZWRpYVNhbXBsZTo6Vmlk
ZW9Sb3RhdGlvbjo6TGVmdCkKICAgICAgICAgc3RkOjpzd2FwKHZpZGVvQm91bmRzLnNpemUud2lk
dGgsIHZpZGVvQm91bmRzLnNpemUuaGVpZ2h0KTsKIAotICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyLmdldCgpLmJvdW5kcyA9IHZpZGVvQm91bmRzOwotICAgIG1fc2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmdldCgpLnBvc2l0aW9uID0geyBiYWNrZ3JvdW5kQm91bmRzLnNpemUud2lkdGgg
LyAyLCBiYWNrZ3JvdW5kQm91bmRzLnNpemUuaGVpZ2h0IC8gMn07CisgICAgbV9zYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXItPnVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9uKHZpZGVvQm91bmRzLCB7IGJv
dW5kcy5zaXplLndpZHRoIC8gMiwgYm91bmRzLnNpemUuaGVpZ2h0IC8gMn0pOwogfQogCi12b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YmFja2dyb3VuZExheWVyQm91
bmRzQ2hhbmdlZCgpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyQm91bmRzRGlkQ2hhbmdlKFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllciYpCiB7Ci0gICAgcnVuV2l0aG91dEFuaW1hdGlvbnMoW3RoaXNdIHsKLSAgICAgICAg
dXBkYXRlRGlzcGxheUxheWVyKCk7Ci0gICAgfSk7CisgICAgdXBkYXRlRGlzcGxheUxheWVyKCk7
CiB9CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388211</attachid>
            <date>2020-01-20 00:36:10 -0800</date>
            <delta_ts>2020-01-20 01:19:40 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-206066-20200120093608.patch</filename>
            <type>text/plain</type>
            <size>55620</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0ODEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTgyZjgzMjAzNzRhMDU5
ZmFlNjRjZWNlMGFhMjlhMWU2OGE4MTkxYy4uOGViZWNjNzBjNGJjZDNkYjI4YTIyNWIxMzdkZmVm
YzY0MzFlMWE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDIwLTAxLTIwICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgYW4gYWJz
dHJhY3QgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYwNjYKKworICAgICAgICBSZXZpZXdlZCBieSBFcmlj
IENhcmxzb24uCisKKyAgICAgICAgTW92ZSB1c2Ugb2YgZGlzcGxheSBsYXllcnMgaW4gTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDIHRvIGEgbmV3IGNsYXNzIExvY2FsU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyCisgICAgICAgIHRoYXQgaW1wbGVtZW50cyBhbiBpbnRlcmZhY2Ug
bmFtZWQgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLgorICAgICAgICBBIGZ1dHVyZSBwYXRjaCB3
aWxsIGltcGxlbWVudCB0aGlzIGludGVyZmFjZSBieSBJUENpbmcgdG8gR1BVUHJvY2Vzcy4KKyAg
ICAgICAgV2UgbW92ZSBib3RoIGxheWVycyBhbmQgaGFuZGxpbmcgb2YgdGhlIHNhbXBsZSBxdWV1
ZSB0byBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci4KKworICAgICAgICBDb250cmFyeSB0
byBwcmV2aW91c2x5LCB3ZSBkbyBub3QgY2FsbCBhZ2FpbiBlbnF1ZXVlVmlkZW9TYW1wbGUgaW4g
Y2FzZSB3ZSBlbnF1ZXVlZCBhIHNhbXBsZSBmb3IgbGF0ZXIgdXNlIGluIHRoZSBkaXNwbGF5IGxh
eWVyLgorICAgICAgICBJbnN0ZWFkLCB3ZSBkaXJlY3RseSByZW5kZXIgaXQsIHdoaWNoIHNob3Vs
ZCBub3QgY2hhbmdlIG11Y2ggc2luY2UgdGhpcyBpcyBhIHJlYWx0aW1lIHRyYWNrIGFuZCBpbiB0
aGUgZnV0dXJlIHRoZSBidWZmZXIgd2lsbCBiZSBpbiBHUFVQcm9jZXNzIGFueXdheS4KKworICAg
ICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9T
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubW06IEFkZGVkLgorICAg
ICAgICAoLVtXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyIGluaXRXaXRoUGFy
ZW50Ol0pOgorICAgICAgICAoLVtXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVy
IGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0
ZW5lciBpbnZhbGlkYXRlXSk6CisgICAgICAgICgtW1dlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hh
bmdlTGlzdGVuZXIgYmVnaW5PYnNlcnZpbmdMYXllcnNdKToKKyAgICAgICAgKC1bV2ViQVZTYW1w
bGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lciBzdG9wT2JzZXJ2aW5nTGF5ZXJzXSk6CisgICAg
ICAgICgtW1dlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgb2JzZXJ2ZVZhbHVl
Rm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKyAgICAgICAgKFdlYkNvcmU6
OnJ1bldpdGhvdXRBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcik6CisgICAgICAg
IChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6fkxvY2FsU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjpsYXllclN0YXR1c0RpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2Nh
bFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6bGF5ZXJFcnJvckRpZENoYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6cm9vdExheWVyQm91bmRz
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyOjpkaXNwbGF5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXI6OnJvb3RMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcjo6ZGlkRmFpbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMb2Nh
bFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6dXBkYXRlRGlzcGxheU1vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmJvdW5kcyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6dXBkYXRlQWZm
aW5lVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyOjp1cGRhdGVCb3VuZHNBbmRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMb2Nh
bFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5zdXJlTGF5ZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpmbHVzaCk6CisgICAgICAgIChXZWJD
b3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Zmx1c2hBbmRSZW1vdmVJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZW5xdWV1
ZVNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6cmVtb3ZlT2xkU2FtcGxlc0Zyb21QZW5kaW5nUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6
TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmFkZFNhbXBsZVRvUGVuZGluZ1F1ZXVlKToK
KyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjbGVhckVu
cXVldWVkU2FtcGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcjo6cmVxdWVzdE5vdGlmaWNhdGlvbldoZW5SZWFkeUZvclZpZGVvRGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp+TWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZUNvcnJlY3RlZFZpZGVvU2FtcGxlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6c2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyU3RhdHVzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YXBwbGljYXRpb25EaWRCZWNvbWVB
Y3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjpmbHVzaFJlbmRlcmVycyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVuc3VyZUxheWVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmRlc3Ryb3lMYXllcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpw
bGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZGlzcGxheUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlRGlzcGxheU1vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpj
aGVja1NlbGVjdGVkVmlkZW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNldEJ1ZmZlcmluZ1BvbGljeSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnVwZGF0ZURpc3Bs
YXlMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OnNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckJvdW5kc0RpZENoYW5nZSk6CisKIDIw
MjAtMDEtMjAgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFZp
ZGVvIHNvdW5kIHNvbWV0aW1lcyBrZWVwcyBwbGF5aW5nIGluIHBhZ2UgY2FjaGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CmluZGV4IGU2ZjgxN2E3ODE2ZDZhNGJjYzIwMTNhNTc5NDQ0NDc2N2FlNzA4
MGUuLjg5MDZmNTdkYzlkMzI0YzlmMGJkMWVmYjg1MGIyMGE5NTIwZTE5MGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dApAQCAtMjUzLDYgKzI1Myw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMubW0gQG5vLXVuaWZ5CiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1t
IEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5tbSBAbm8t
dW5pZnkKK3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyLm1tIEBuby11bmlmeQogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYy5tbSBAbm8tdW5pZnkKIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gQG5vLXVuaWZ5CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
NGIyMTg5NTEyYzg0ZWFhOTlmNDk2NmQ0ZjkwODY2NGQ3M2YwNDc2My4uYjI5OWQ5NDEyYzIxNzQ2
ZmI3ZDczYWQxMTUwZWU3ZTI4NWM0NDA1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA2Nyw2ICsxMDY3LDcgQEAKIAkJNDEz
QzJDMzQxQkMyOUE4RjAwNzUyMDRDIC8qIEpTRE9NQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxM0MyQzMzMUJDMjlBN0IwMDc1MjA0
QyAvKiBKU0RPTUNvbnN0cnVjdG9yLmggKi87IH07CiAJCTQxM0NDRDRBMjBERTAzNEYwMDY1QTIx
QSAvKiBNb2NrTWVkaWFEZXZpY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxM0NDRDQ4MjBERTAxM0MwMDY1QTIxQSAvKiBNb2NrTWVkaWFEZXZpY2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTNF
MDA3OTFEQjBFNEYyMDAyMzQxRDIgLyogTWVtb3J5UmVsZWFzZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzRTAwNzgxREIwRTRERTAwMjM0MUQyIC8q
IE1lbW9yeVJlbGVhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk0MTQ1OThDMjIzQzhEMTc3MDAyQjlDQzggLyogTG9jYWxTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTQ1OThDMTIzQzhBRDc5MDAyQjlDQzggLyogTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIubW0gKi87IH07CiAJCTQxNEI4MjA1MUQ2REYwRTUwMDc3RUJFMyAvKiBTdHJ1Y3R1cmVk
Q2xvbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
NEI4MjAzMUQ2REYwRDkwMDc3RUJFMyAvKiBTdHJ1Y3R1cmVkQ2xvbmUuaCAqLzsgfTsKIAkJNDE0
REVERTcxRjlGRTkxRTAwNDdDNDBEIC8qIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNERFREU1MUY5RkU5MTUw
MDQ3QzQwRCAvKiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE1MDcxNTgxNjg1MDY3MzAwQzNDN0IzIC8q
IFNlbGVjdG9yRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTUwNzE1NjE2ODUwNjczMDBDM0M3QjMgLyogU2VsZWN0b3JGaWx0ZXIuaCAqLzsg
fTsKQEAgLTExNTMsNiArMTE1NCw4IEBACiAJCTQxRjA2MjE0MEY1RjE5MjYwMEEwN0VBQyAvKiBJ
bnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MUYwNjIxMjBGNUYxOTI2MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0
YWJhc2VSZXNvdXJjZS5oICovOyB9OwogCQk0MUYxRDIxRjBFRjM1QzJBMDBEQTg3NTMgLyogU2Ny
aXB0Q2FjaGVkRnJhbWVEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MUYxRDIxRDBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVE
YXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NDFGQUJEMkQxRjRERkU0QTAwNkE2Qzk3IC8qIERPTUNhY2hlRW5naW5lLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUZBQkQyQjFGNERGRTQyMDA2QTZD
OTcgLyogRE9NQ2FjaGVFbmdpbmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk0MUZDRDZCOTIzQ0UwMTU1MDBDNjI1NjcgLyogU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTQ1OThCRTIzQzhBQUI4MDAyQjlDQzggLyogU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDFG
Q0Q2QkIyM0NFMDI3NzAwQzYyNTY3IC8qIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTQ1OThDMDIz
QzhBRDc4MDAyQjlDQzggLyogTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MjdEQTcxRDEzNzM1
REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQyN0RBNzFCMTM3MzVERkEwMDdDNTdG
QiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwICovOyB9OwogCQk0MjdEQTcxRTEzNzM1
REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MjdEQTcxQzEzNzM1REZBMDA3QzU3RkIg
LyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmggKi87IH07CiAJCTQzMTA3QkUyMThDQzE5REUw
MENDMThFOCAvKiBTZWxlY3RvclBzZXVkb1R5cGVNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzMTA3QkUxMThDQzE5REUwMENDMThFOCAvKiBTZWxl
Y3RvclBzZXVkb1R5cGVNYXAuaCAqLzsgfTsKQEAgLTczNTIsNiArNzM1NSw5IEBACiAJCTQxM0Uw
MDc4MURCMEU0REUwMDIzNDFEMiAvKiBNZW1vcnlSZWxlYXNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1lbW9yeVJlbGVhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDEzRTAwN0IxREIwRTcwNzAwMjM0MUQyIC8qIE1lbW9yeVJlbGVhc2VDb2NvYS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lbW9yeVJlbGVhc2VDb2Nv
YS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzRkM0Q0QxRkQxREQ4QzAwNTQx
QzRCIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQ1OThCRTIzQzhBQUI4MDAyQjlDQzggLyogU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0MTQ1OThDMDIzQzhBRDc4MDAyQjlDQzggLyogTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0NTk4QzEyM0M4
QUQ3OTAwMkI5Q0M4IC8qIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNDdFMkIyMUM4ODMzN0Yw
MEE3RTcxNSAvKiBGZXRjaEJvZHlPd25lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBGZXRjaEJvZHlPd25lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTQ3
RTJCMzFDODk5MTI2MDBBN0U3MTUgLyogRmV0Y2hCb2R5T3duZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmV0Y2hCb2R5T3duZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTQ3RTJCNDFDODk5MTI2MDBBN0U3MTUgLyogRmV0Y2hMb2FkZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmV0Y2hMb2FkZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYzNDIsNiArMTYzNDgsNyBAQAogCQkJ
CTA3NkYwRDBBMTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b24uaCAqLywKIAkJCQlDREJFQUVBQjE5RDkyQjZDMDBCRUJBODggLyogTWVkaWFTZWxlY3Rpb25H
cm91cEFWRk9iakMuaCAqLywKIAkJCQlDREJFQUVBQTE5RDkyQjZDMDBCRUJBODggLyogTWVkaWFT
ZWxlY3Rpb25Hcm91cEFWRk9iakMubW0gKi8sCisJCQkJNDE0NTk4QkUyM0M4QUFCODAwMkI5Q0M4
IC8qIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oICovLAogCQkJCUNEMzM2RjYzMTdGQTBBNEQw
MERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRi5oICovLAogCQkJCTA3MDlENzkwMUFFNTU1
N0UwMDRFNDJGOCAvKiBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcCAqLywKIAkJCQkwNzA5
RDc5MTFBRTU1NTdFMDA0RTQyRjggLyogV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5oICovLApA
QCAtMjY3NzUsNiArMjY3ODIsOCBAQAogCQkJCTA3QUE2QjZBMTY2RDAxOTUwMEQ0NTY3MSAvKiBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbSAqLywKIAkJCQkwNzM2N0RERDE3MkNBNjdG
MDBEODYxQjkgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaCAqLywKIAkJ
CQkwNzM2N0RERTE3MkNBNjdGMDBEODYxQjkgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2Fj
eUFWRk9iakMubW0gKi8sCisJCQkJNDE0NTk4QzAyM0M4QUQ3ODAwMkI5Q0M4IC8qIExvY2FsU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmggKi8sCisJCQkJNDE0NTk4QzEyM0M4QUQ3OTAwMkI5Q0M4
IC8qIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1tICovLAogCQkJCTA3OEU0M0RCMUFC
QjZGNkYwMDFDMkZBNiAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLmggKi8sCiAJCQkJ
MDc4RTQzREMxQUJCNkY2RjAwMUMyRkE2IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMu
bW0gKi8sCiAJCQkJREY5QUZENzAxM0ZDMzFEODAwMTVGRUI3IC8qIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMuaCAqLywKQEAgLTMxNDI4LDYgKzMxNDM3LDcgQEAKIAkJCQk3NjMz
QTcyNjEzRDhCMzNBMDA4NTAxQjYgLyogTG9jYWxlVG9TY3JpcHRNYXBwaW5nLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNTE2RThCNzEzNkUwNERCMDA3NkMzQzAgLyogTG9jYWxpemVkRGF0ZUNhY2hl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzUyMDdCRTA5QkQ0MTBBMDBGMjAzOEQgLyogTG9jYWxp
emVkU3RyaW5ncy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDFGQ0Q2QkIyM0NFMDI3NzAwQzYyNTY3
IC8qIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0UxQzQxQjBEOTgyOTgwMDAzQjAyRjIgLyogTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTZCNEQ0MTJEMjM5ODNGODgwMDI0OTRDMiAvKiBMb2dnZWRJblN0YXR1cy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTgyMzlFMDEwOUIzQ0Y4QTAwQjYwNjQxIC8qIExvZ2dpbmcuaCBpbiBIZWFkZXJz
ICovLApAQCAtMzIyMTMsNiArMzIyMjMsNyBAQAogCQkJCTI5M0VBRTFGMTM1NkIyRkUwMDY3QUNG
OSAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDNTIy
MjlFMUUxREFFNDcwMDJDQjhGNyAvKiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDRTdBNkMyODIwODUzN0UyMDBGQTJCNDYgLyogU2FtZVNpdGVJbmZvLmggaW4g
SGVhZGVycyAqLywKKwkJCQk0MUZDRDZCOTIzQ0UwMTU1MDBDNjI1NjcgLyogU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREQ3MDg5NzE4MzU5RjZGMDAyQjNE
QzYgLyogU2FtcGxlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTFDQjBFRjg2RDQ3MDA5
RDBDQUYgLyogU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTVE
RkU4RjU3MEQxNjQ3N0MwMDc2RTkzNyAvKiBTY2hlZHVsZWRBY3Rpb24uaCBpbiBIZWFkZXJzICov
LApAQCAtMzM2ODQsNiArMzM2OTUsNyBAQAogCQkJCTQxRDI4RDBEMjEzOUUwNTgwMEY0MjA2RiAv
KiBMaWJXZWJSVENTdGF0c0NvbGxlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTg2QkQz
RTIxM0VFMzQwMDAwMTgyNkYgLyogTGliV2ViUlRDVXRpbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTc1OUU5M0UxNEVGMUNGODAwMjZBMkREIC8qIExvYWRhYmxlVGV4dFRyYWNrLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTQxNDU5OEMyMjNDOEQxNzcwMDJCOUNDOCAvKiBMb2NhbFNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUZBQkU3MkZFMTA1OUMyMTEw
MEQ5OTlERCAvKiBNYXRoTUxOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDlCRjcwNTFE
QkZCQjI0MDA3QTdEOTkgLyogTWVkaWFFbmNyeXB0ZWRFdmVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkyRDlCRjc0NzFEQkZEQzQ5MDA3QTdEOTkgLyogTWVkaWFLZXlNZXNzYWdlRXZlbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGZmNTdkN2M3ZDU5YTcxZDU2N2JjMmFiZDlmNjE5MmIyYmZiY2Nj
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaApAQCAtMCwwICsxLDc3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
KworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBNZWRpYVRpbWU7Cit9CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK2NsYXNzIEludFNpemU7CitjbGFzcyBNZWRpYVNhbXBsZTsKKworY2xhc3MgU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyIHsKK3B1YmxpYzoKKyAgICBjbGFzcyBDbGllbnQgOiBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8Q2xpZW50PiB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5D
bGllbnQoKSA9IGRlZmF1bHQ7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJTdGF0dXNEaWRDaGFuZ2UoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyJikgPSAwOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyQm91bmRzRGlkQ2hh
bmdlKFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciYpID0gMDsKKyAgICAgICAgdmlydHVhbCBXVEY6
Ok1lZGlhVGltZSBzdHJlYW1UaW1lKCkgY29uc3QgPSAwOworICAgIH07CisKKyAgICBleHBsaWNp
dCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoQ2xpZW50Jik7CisgICAgdmlydHVhbCB+U2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyKCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCBib29sIGRpZEZh
aWwoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGlzcGxheU1vZGUoYm9v
bCBoaWRlRGlzcGxheUxheWVyLCBib29sIGhpZGVSb290TGF5ZXIpID0gMDsKKworICAgIHZpcnR1
YWwgQ0dSZWN0IGJvdW5kcygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQWZm
aW5lVHJhbnNmb3JtKENHQWZmaW5lVHJhbnNmb3JtKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUJvdW5kc0FuZFBvc2l0aW9uKENHUmVjdCwgQ0dQb2ludCkgPSAwOworCisgICAgdmlydHVh
bCB2b2lkIGZsdXNoKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBmbHVzaEFuZFJlbW92ZUltYWdl
KCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGVucXVldWVTYW1wbGUoTWVkaWFTYW1wbGUmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyRW5xdWV1ZWRTYW1wbGVzKCkgPSAwOworCisgICAg
dmlydHVhbCBQbGF0Zm9ybUxheWVyKiByb290TGF5ZXIoKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAg
ICBXZWFrUHRyPENsaWVudD4gbV9jbGllbnQ7Cit9OworCitpbmxpbmUgU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyOjpTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoQ2xpZW50JiBjbGllbnQpCisgICAg
OiBtX2NsaWVudChtYWtlV2Vha1B0cihjbGllbnQpKQoreworfQorCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Mb2NhbFNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZDg5ZGYxYzYzYmIzOTM2ZDc5MDJiMTljNjVhNjE5YjM4ZTc4YWRlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaApAQCAtMCwwICsxLDg5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorCisjaW5j
bHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgiCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+
CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisK
K09CSkNfQ0xBU1MgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI7CitPQkpDX0NMQVNTIFdlYkFW
U2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXI7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgV0VCQ09SRV9FWFBPUlQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgZmlu
YWwgOiBwdWJsaWMgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcj4gY3JlYXRlKENsaWVudCYsIGJvb2wgaGlkZVJvb3RMYXllciwgSW50U2l6
ZSk7CisKKyAgICBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcihSZXRhaW5QdHI8QVZTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI+JiYsIENsaWVudCYsIGJvb2wgaGlkZVJvb3RMYXllciwgSW50
U2l6ZSk7CisgICAgfkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKCk7CisKKyAgICAvLyBB
UEkgdXNlZCBieSBXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyCisgICAgdm9p
ZCBsYXllclN0YXR1c0RpZENoYW5nZSgpOworICAgIHZvaWQgbGF5ZXJFcnJvckRpZENoYW5nZSgp
OworICAgIHZvaWQgcm9vdExheWVyQm91bmRzRGlkQ2hhbmdlKCk7CisKKyAgICBQbGF0Zm9ybUxh
eWVyKiBkaXNwbGF5TGF5ZXIoKTsKKworICAgIFBsYXRmb3JtTGF5ZXIqIHJvb3RMYXllcigpIGZp
bmFsOworCitwcml2YXRlOgorICAgIGJvb2wgZGlkRmFpbCgpIGNvbnN0IGZpbmFsOworCisgICAg
dm9pZCB1cGRhdGVEaXNwbGF5TW9kZShib29sIGhpZGVEaXNwbGF5TGF5ZXIsIGJvb2wgaGlkZVJv
b3RMYXllcikgZmluYWw7CisKKyAgICBDR1JlY3QgYm91bmRzKCkgY29uc3QgZmluYWw7CisgICAg
dm9pZCB1cGRhdGVBZmZpbmVUcmFuc2Zvcm0oQ0dBZmZpbmVUcmFuc2Zvcm0pICBmaW5hbDsKKyAg
ICB2b2lkIHVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9uKENHUmVjdCwgQ0dQb2ludCkgZmluYWw7CisK
KyAgICB2b2lkIGZsdXNoKCkgZmluYWw7CisgICAgdm9pZCBmbHVzaEFuZFJlbW92ZUltYWdlKCkg
ZmluYWw7CisKKyAgICB2b2lkIGVucXVldWVTYW1wbGUoTWVkaWFTYW1wbGUmKSBmaW5hbDsKKyAg
ICB2b2lkIGNsZWFyRW5xdWV1ZWRTYW1wbGVzKCkgZmluYWw7CisKKyAgICB2b2lkIGVuc3VyZUxh
eWVycygpOworCisgICAgdm9pZCByZW1vdmVPbGRTYW1wbGVzRnJvbVBlbmRpbmdRdWV1ZSgpOwor
ICAgIHZvaWQgYWRkU2FtcGxlVG9QZW5kaW5nUXVldWUoTWVkaWFTYW1wbGUmKTsKKyAgICB2b2lk
IHJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JWaWRlb0RhdGEoKTsKKworcHJpdmF0ZToK
KyAgICBSZXRhaW5QdHI8V2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcj4gbV9z
dGF0dXNDaGFuZ2VMaXN0ZW5lcjsKKyAgICBSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXI+IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOworICAgIFJldGFpblB0cjxQbGF0Zm9y
bUxheWVyPiBtX3Jvb3RMYXllcjsKKworICAgIHVzaW5nIFBlbmRpbmdTYW1wbGVRdWV1ZSA9IERl
cXVlPFJlZjxNZWRpYVNhbXBsZT4+OworICAgIFBlbmRpbmdTYW1wbGVRdWV1ZSBtX3BlbmRpbmdW
aWRlb1NhbXBsZVF1ZXVlOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVB
TSkgJiYgVVNFKEFWRk9VTkRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjgyN2QwMWM2
ZTY3MDRhZDA2YTg1ODBiZTRkYmU3NTQxYmE3NDBkMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0xvY2FsU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLm1tCkBAIC0wLDAgKzEsMzY4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0
ICJMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkgJiYgVVNFKEFWRk9VTkRBVElPTikKKworI2ltcG9ydCAiQ29sb3IuaCIKKyNpbXBvcnQg
IkludFNpemUuaCIKKyNpbXBvcnQgIk1lZGlhU2FtcGxlLmgiCisKKyNpbXBvcnQgPEFWRm91bmRh
dGlvbi9BVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oPgorI2ltcG9ydCA8UXVhcnR6Q29yZS9D
QUxheWVyLmg+CisjaW1wb3J0IDxRdWFydHpDb3JlL0NBVHJhbnNhY3Rpb24uaD4KKworI2ltcG9y
dCA8d3RmL01haW5UaHJlYWQuaD4KKworI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNv
ZnRMaW5rLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitAaW50ZXJmYWNlIFdlYkFW
U2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgOiBOU09iamVjdCB7CisgICAgV2Vha1B0
cjxMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gX3BhcmVudDsKK30KKworLSAoaWQpaW5p
dFdpdGhQYXJlbnQ6KExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKiljYWxsYmFjazsKKy0g
KHZvaWQpaW52YWxpZGF0ZTsKKy0gKHZvaWQpYmVnaW47CistICh2b2lkKXN0b3A7CitAZW5kCisK
K0BpbXBsZW1lbnRhdGlvbiBXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyCisK
Ky0gKGlkKWluaXRXaXRoUGFyZW50OihMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciopcGFy
ZW50Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBu
aWw7CisKKyAgICBfcGFyZW50ID0gbWFrZVdlYWtQdHIocGFyZW50KTsKKworICAgIHJldHVybiBz
ZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBbc2VsZiBpbnZhbGlkYXRlXTsKKyAg
ICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQpaW52YWxpZGF0ZQoreworICAgIFtzZWxm
IHN0b3BdOworICAgIF9wYXJlbnQgPSBudWxscHRyOworfQorCistICh2b2lkKWJlZ2luCit7Cisg
ICAgQVNTRVJUKF9wYXJlbnQpOworICAgIEFTU0VSVChfcGFyZW50LT5kaXNwbGF5TGF5ZXIoKSk7
CisgICAgQVNTRVJUKF9wYXJlbnQtPnJvb3RMYXllcigpKTsKKworICAgIFtfcGFyZW50LT5kaXNw
bGF5TGF5ZXIoKSBhZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJzdGF0dXMiIG9wdGlvbnM6
TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0Om5pbF07CisgICAgW19wYXJlbnQt
PmRpc3BsYXlMYXllcigpIGFkZE9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAImVycm9yIiBvcHRp
b25zOk5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDpuaWxdOworICAgIFtfcGFy
ZW50LT5yb290TGF5ZXIoKSBhZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJib3VuZHMiIG9w
dGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0Om5pbF07Cit9CisKKy0g
KHZvaWQpc3RvcAoreworICAgIGlmICghX3BhcmVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKF9wYXJlbnQtPmRpc3BsYXlMYXllcigpKSB7CisgICAgICAgIFtfcGFyZW50LT5kaXNwbGF5
TGF5ZXIoKSByZW1vdmVPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJzdGF0dXMiXTsKKyAgICAg
ICAgW19wYXJlbnQtPmRpc3BsYXlMYXllcigpIHJlbW92ZU9ic2VydmVyOnNlbGYgZm9yS2V5UGF0
aDpAImVycm9yIl07CisgICAgfQorICAgIGlmIChfcGFyZW50LT5yb290TGF5ZXIoKSkKKyAgICAg
ICAgW19wYXJlbnQtPnJvb3RMYXllcigpIHJlbW92ZU9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpA
ImJvdW5kcyJdOworfQorCistICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3RyaW5n
ICopa2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5ICopY2hh
bmdlIGNvbnRleHQ6KHZvaWQgKiljb250ZXh0Cit7CisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQp
OworICAgIFVOVVNFRF9QQVJBTShrZXlQYXRoKTsKKyAgICBBU1NFUlQoX3BhcmVudCk7CisKKyAg
ICBpZiAoIV9wYXJlbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChbb2JqZWN0IGlzS2lu
ZE9mQ2xhc3M6UEFMOjpnZXRBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckNsYXNzKCldKSB7Cisg
ICAgICAgIEFTU0VSVChvYmplY3QgPT0gX3BhcmVudC0+ZGlzcGxheUxheWVyKCkpOworCisgICAg
ICAgIGlmIChba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJzdGF0dXMiXSkgeworICAgICAgICAg
ICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBVlNhbXBs
ZUJ1ZmZlclN0YXR1c0NoYW5nZUxpc3RlbmVyPihzZWxmKV0geworICAgICAgICAgICAgICAgIGlm
ICghcHJvdGVjdGVkU2VsZi0+X3BhcmVudCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgICAgICAgICAgcHJvdGVjdGVkU2VsZi0+X3BhcmVudC0+bGF5ZXJTdGF0dXNEaWRD
aGFuZ2UoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImVycm9yIl0pIHsKKyAg
ICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2Vi
QVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcj4oc2VsZildIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIXByb3RlY3RlZFNlbGYtPl9wYXJlbnQpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9wYXJlbnQtPmxheWVyRXJy
b3JEaWRDaGFuZ2UoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgfQorCisgICAgaWYgKFtbY2hhbmdlIHZhbHVlRm9yS2V5Ok5TS2V5VmFsdWVD
aGFuZ2VOb3RpZmljYXRpb25Jc1ByaW9yS2V5XSBib29sVmFsdWVdKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAoKENBTGF5ZXIgKilvYmplY3QgPT0gX3BhcmVudC0+cm9vdExheWVyKCkpIHsK
KyAgICAgICAgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImJvdW5kcyJdKSB7CisgICAg
ICAgICAgICBpZiAoIV9wYXJlbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
ICAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgICAgICAgICBfcGFyZW50LT5yb290
TGF5ZXJCb3VuZHNEaWRDaGFuZ2UoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBS
ZXRhaW5QdHI8V2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcj4oc2VsZildIHsK
KyAgICAgICAgICAgICAgICBpZiAoIXByb3RlY3RlZFNlbGYtPl9wYXJlbnQpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIHByb3RlY3RlZFNlbGYtPl9wYXJl
bnQtPnJvb3RMYXllckJvdW5kc0RpZENoYW5nZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0KKyAgICB9CisKK30KK0BlbmQKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgdm9p
ZCBydW5XaXRob3V0QW5pbWF0aW9ucyhjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0
aW9uKQoreworICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKKyAgICBbQ0FUcmFuc2FjdGlvbiBz
ZXRBbmltYXRpb25EdXJhdGlvbjowXTsKKyAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0
aW9uczpZRVNdOworICAgIGZ1bmN0aW9uKCk7CisgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsK
K30KKworc3RkOjp1bmlxdWVfcHRyPFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcj4gTG9jYWxTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNyZWF0ZShDbGllbnQmIGNsaWVudCwgYm9vbCBoaWRlUm9v
dExheWVyLCBJbnRTaXplIHNpemUpCit7CisgICAgYXV0byBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5
ZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJJbnN0YW5j
ZSgpIGluaXRdKTsKKyAgICBpZiAoIXNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxMb2NhbFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllcj4oV1RGTW92ZShzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpLCBjbGllbnQs
IGhpZGVSb290TGF5ZXIsIHNpemUpOworfQorCitMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
cjo6TG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIoUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyPiYmIHNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciwgQ2xpZW50JiBjbGllbnQs
IGJvb2wgaGlkZVJvb3RMYXllciwgSW50U2l6ZSBzaXplKQorICAgIDogU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyKGNsaWVudCkKKyAgICAsIG1fc3RhdHVzQ2hhbmdlTGlzdGVuZXIoYWRvcHROUyhb
W1dlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoUGFy
ZW50OnRoaXNdKSkKKyAgICAsIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKFdURk1vdmUoc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyKSkKK3sKKyAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ci5nZXQoKS5iYWNrZ3JvdW5kQ29sb3IgPSBjYWNoZWRDR0NvbG9yKENvbG9yOjpibGFjayk7Cisg
ICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCkuYW5jaG9yUG9pbnQgPSB7IC41LCAu
NSB9OworICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLm5lZWRzRGlzcGxheU9u
Qm91bmRzQ2hhbmdlID0gWUVTOworICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgp
LnZpZGVvR3Jhdml0eSA9IEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxsOworCisg
ICAgbV9yb290TGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0pOworICAgIG1f
cm9vdExheWVyLmdldCgpLmhpZGRlbiA9IGhpZGVSb290TGF5ZXI7CisKKyAgICBtX3Jvb3RMYXll
ci5nZXQoKS5iYWNrZ3JvdW5kQ29sb3IgPSBjYWNoZWRDR0NvbG9yKENvbG9yOjpibGFjayk7Cisg
ICAgbV9yb290TGF5ZXIuZ2V0KCkubmVlZHNEaXNwbGF5T25Cb3VuZHNDaGFuZ2UgPSBZRVM7CisK
KyAgICBtX3Jvb3RMYXllci5nZXQoKS5ib3VuZHMgPSBDR1JlY3RNYWtlKDAsIDAsIHNpemUud2lk
dGgoKSwgc2l6ZS5oZWlnaHQoKSk7CisKKyAgICBbbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lciBiZWdp
bl07CisKKyAgICBbbV9yb290TGF5ZXIgYWRkU3VibGF5ZXI6bV9zYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIuZ2V0KCldOworCisjaWZuZGVmIE5ERUJVRworICAgIFttX3NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllciBzZXROYW1lOkAiTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgQVZTYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIiXTsKKyAgICBbbV9yb290TGF5ZXIgc2V0TmFtZTpAIkxvY2FsU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHBhcmVudCJd
OworI2VuZGlmCit9CisKK0xvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjp+TG9jYWxTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIoKQoreworICAgIFttX3N0YXR1c0NoYW5nZUxpc3RlbmVyIHN0
b3BdOworCisgICAgbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5jbGVhcigpOworCisgICAgW21f
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHN0b3BSZXF1ZXN0aW5nTWVkaWFEYXRhXTsKKyAgICBb
bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgZmx1c2hdOworICAgIG1fc2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyID0gbnVsbHB0cjsKKworICAgIG1fcm9vdExheWVyID0gbnVsbHB0cjsKK30KKwor
dm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6bGF5ZXJTdGF0dXNEaWRDaGFuZ2Uo
KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1fc2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyLmdldCgpLnN0YXR1cyAhPSBBVlF1ZXVlZFNhbXBsZUJ1ZmZlclJlbmRlcmlu
Z1N0YXR1c1JlbmRlcmluZykKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghbV9jbGllbnQpCisg
ICAgICAgIHJldHVybjsKKyAgICBtX2NsaWVudC0+c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyU3Rh
dHVzRGlkQ2hhbmdlKCp0aGlzKTsKK30KKwordm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcjo6bGF5ZXJFcnJvckRpZENoYW5nZSgpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICAvLyBGSVhNRTogTG9nIGVycm9yLgorfQorCit2b2lkIExvY2FsU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyOjpyb290TGF5ZXJCb3VuZHNEaWRDaGFuZ2UoKQoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworICAg
IG1fY2xpZW50LT5zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJCb3VuZHNEaWRDaGFuZ2UoKnRoaXMp
OworfQorCitQbGF0Zm9ybUxheWVyKiBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZGlz
cGxheUxheWVyKCkKK3sKKyAgICByZXR1cm4gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0
KCk7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpy
b290TGF5ZXIoKQoreworICAgIHJldHVybiBtX3Jvb3RMYXllci5nZXQoKTsKK30KKworYm9vbCBM
b2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6ZGlkRmFpbCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBzdGF0dXNdID09IEFWUXVldWVkU2FtcGxl
QnVmZmVyUmVuZGVyaW5nU3RhdHVzRmFpbGVkOworfQorCit2b2lkIExvY2FsU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyOjp1cGRhdGVEaXNwbGF5TW9kZShib29sIGhpZGVEaXNwbGF5TGF5ZXIsIGJv
b2wgaGlkZVJvb3RMYXllcikKK3sKKyAgICBpZiAobV9yb290TGF5ZXIuZ2V0KCkuaGlkZGVuID09
IGhpZGVSb290TGF5ZXIgJiYgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuZ2V0KCkuaGlkZGVu
ID09IGhpZGVEaXNwbGF5TGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHJ1bldpdGhvdXRB
bmltYXRpb25zKFsmXSB7CisgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgp
LmhpZGRlbiA9IGhpZGVEaXNwbGF5TGF5ZXI7CisgICAgICAgIG1fcm9vdExheWVyLmdldCgpLmhp
ZGRlbiA9IGhpZGVSb290TGF5ZXI7CisgICAgfSk7Cit9CisKK0NHUmVjdCBMb2NhbFNhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcjo6Ym91bmRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yb290TGF5
ZXIuZ2V0KCkuYm91bmRzOworfQorCit2b2lkIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
Ojp1cGRhdGVBZmZpbmVUcmFuc2Zvcm0oQ0dBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtKQorewor
ICAgIHJ1bldpdGhvdXRBbmltYXRpb25zKFsmXSB7CisgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyLmdldCgpLmFmZmluZVRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKKyAgICB9KTsKK30K
Kwordm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6dXBkYXRlQm91bmRzQW5kUG9z
aXRpb24oQ0dSZWN0IHZpZGVvQm91bmRzLCBDR1BvaW50IHBvc2l0aW9uKQoreworICAgIHJ1bldp
dGhvdXRBbmltYXRpb25zKFsmXSB7CisgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LmdldCgpLmJvdW5kcyA9IHZpZGVvQm91bmRzOworICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5nZXQoKS5wb3NpdGlvbiA9IHBvc2l0aW9uOworICAgIH0pOworfQorCit2b2lkIExv
Y2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpmbHVzaCgpCit7CisgICAgW21fc2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyIGZsdXNoXTsKK30KKwordm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllcjo6Zmx1c2hBbmRSZW1vdmVJbWFnZSgpCit7CisgICAgW21fc2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyIGZsdXNoQW5kUmVtb3ZlSW1hZ2VdOworfQorCit2b2lkIExvY2FsU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyOjplbnF1ZXVlU2FtcGxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCit7Cisg
ICAgaWYgKCFbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgaXNSZWFkeUZvck1vcmVNZWRpYURh
dGFdKSB7CisgICAgICAgIGFkZFNhbXBsZVRvUGVuZGluZ1F1ZXVlKHNhbXBsZSk7CisgICAgICAg
IHJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JWaWRlb0RhdGEoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBlbnF1ZXVlU2Ft
cGxlQnVmZmVyOnNhbXBsZS5wbGF0Zm9ybVNhbXBsZSgpLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcl07
Cit9CisKK3ZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnJlbW92ZU9sZFNhbXBs
ZXNGcm9tUGVuZGluZ1F1ZXVlKCkKK3sKKyAgICBpZiAobV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1
ZS5pc0VtcHR5KCkgfHwgIW1fY2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGRl
Y29kZVRpbWUgPSBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmZpcnN0KCktPmRlY29kZVRpbWUo
KTsKKyAgICBpZiAoIWRlY29kZVRpbWUuaXNWYWxpZCgpIHx8IGRlY29kZVRpbWUgPCBNZWRpYVRp
bWU6Onplcm9UaW1lKCkpIHsKKyAgICAgICAgd2hpbGUgKG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVl
dWUuc2l6ZSgpID4gNSkKKyAgICAgICAgICAgIG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUucmVt
b3ZlRmlyc3QoKTsKKworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgTWVkaWFUaW1lIG5v
dyA9IG1fY2xpZW50LT5zdHJlYW1UaW1lKCk7CisgICAgd2hpbGUgKCFtX3BlbmRpbmdWaWRlb1Nh
bXBsZVF1ZXVlLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAobV9wZW5kaW5nVmlkZW9TYW1wbGVR
dWV1ZS5maXJzdCgpLT5kZWNvZGVUaW1lKCkgPiBub3cpCisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5yZW1vdmVGaXJzdCgpOworICAgIH0KK30K
Kwordm9pZCBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6YWRkU2FtcGxlVG9QZW5kaW5n
UXVldWUoTWVkaWFTYW1wbGUmIHNhbXBsZSkKK3sKKyAgICByZW1vdmVPbGRTYW1wbGVzRnJvbVBl
bmRpbmdRdWV1ZSgpOworICAgIG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUuYXBwZW5kKHNhbXBs
ZSk7Cit9CisKK3ZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OmNsZWFyRW5xdWV1
ZWRTYW1wbGVzKCkKK3sKKyAgICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmNsZWFyKCk7Cit9
CisKK3ZvaWQgTG9jYWxTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI6OnJlcXVlc3ROb3RpZmljYXRp
b25XaGVuUmVhZHlGb3JWaWRlb0RhdGEoKQoreworICAgIGF1dG8gd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cigqdGhpcyk7CisgICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHJlcXVlc3RNZWRp
YURhdGFXaGVuUmVhZHlPblF1ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkgdXNpbmdCbG9j
azpeeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBzdG9wUmVxdWVzdGluZ01lZGlhRGF0YV07
CisKKyAgICAgICAgd2hpbGUgKCFtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmlzRW1wdHkoKSkg
eworICAgICAgICAgICAgaWYgKCFbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgaXNSZWFkeUZv
ck1vcmVNZWRpYURhdGFdKSB7CisgICAgICAgICAgICAgICAgcmVxdWVzdE5vdGlmaWNhdGlvbldo
ZW5SZWFkeUZvclZpZGVvRGF0YSgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgYXV0byBzYW1wbGUgPSBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1
ZXVlLnRha2VGaXJzdCgpOworICAgICAgICAgICAgZW5xdWV1ZVNhbXBsZShzYW1wbGUuZ2V0KCkp
OworICAgICAgICB9CisgICAgfV07Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZG
T2JqQy5oCmluZGV4IDAzNDBhOGRjZGYxMjRhNmZjNDk5OGUxZmM4NjgxYTBjMTEyNTNlOWYuLmQ5
YWYyN2E2MDEwZDc5ODg2NjI1MmVlZTM4YTVjNTA1ZTdhZWI4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQy5oCkBAIC0zMCwxMCArMzAsMTAgQEAKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZh
dGUuaCIKICNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtUHJp
dmF0ZS5oIgorI2luY2x1ZGUgIlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oIgogI2luY2x1ZGUg
PHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0xv
Z2dlckhlbHBlci5oPgotI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIE9CSkNfQ0xBU1MgQVZT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXI7CiBPQkpDX0NMQVNTIFdlYkFWU2FtcGxlQnVmZmVyU3Rh
dHVzQ2hhbmdlTGlzdGVuZXI7CkBAIC01MSw3ICs1MSw3IEBAIGNsYXNzIFBpeGVsQnVmZmVyQ29u
Zm9ybWVyQ1Y7CiBjbGFzcyBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDOwogY2xhc3Mg
VmlkZW9UcmFja1ByaXZhdGVNZWRpYVN0cmVhbTsKIAotY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDIGZpbmFsIDogcHVibGljIENhbk1ha2VXZWFrUHRyPE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQz4sIHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJ
bnRlcmZhY2UsIHByaXZhdGUgTWVkaWFTdHJlYW1Qcml2YXRlOjpPYnNlcnZlciwgcHJpdmF0ZSBN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIKK2NsYXNzIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRl
cmZhY2UsIHByaXZhdGUgTWVkaWFTdHJlYW1Qcml2YXRlOjpPYnNlcnZlciwgcHJpdmF0ZSBNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIsIHB1YmxpYyBTYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXI6OkNsaWVudAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICwgcHJpdmF0ZSBM
b2dnZXJIZWxwZXIKICNlbmRpZgpAQCAtNzUsMTMgKzc1LDYgQEAgcHVibGljOgogICAgIHZvaWQg
ZW5zdXJlTGF5ZXJzKCk7CiAgICAgdm9pZCBkZXN0cm95TGF5ZXJzKCk7CiAKLSAgICB2b2lkIGxh
eWVyU3RhdHVzRGlkQ2hhbmdlKEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKik7Ci0gICAgdm9p
ZCBsYXllckVycm9yRGlkQ2hhbmdlKEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKik7Ci0gICAg
dm9pZCBiYWNrZ3JvdW5kTGF5ZXJCb3VuZHNDaGFuZ2VkKCk7Ci0KLSAgICBQbGF0Zm9ybUxheWVy
KiBkaXNwbGF5TGF5ZXIoKTsKLSAgICBQbGF0Zm9ybUxheWVyKiBiYWNrZ3JvdW5kTGF5ZXIoKTsK
LQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH0KICAgICBjb25zdCBjaGFyKiBs
b2dDbGFzc05hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDIjsgfQpAQCAtMTM3LDEwICsxMzAsNiBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBmbHVzaFJlbmRlcmVycygpOwogCi0gICAgdXNpbmcgUGVuZGluZ1NhbXBsZVF1ZXVl
ID0gRGVxdWU8UmVmPE1lZGlhU2FtcGxlPj47Ci0gICAgdm9pZCBhZGRTYW1wbGVUb1BlbmRpbmdR
dWV1ZShQZW5kaW5nU2FtcGxlUXVldWUmLCBNZWRpYVNhbXBsZSYpOwotICAgIHZvaWQgcmVtb3Zl
T2xkU2FtcGxlc0Zyb21QZW5kaW5nUXVldWUoUGVuZGluZ1NhbXBsZVF1ZXVlJik7Ci0KICAgICBN
ZWRpYVRpbWUgY2FsY3VsYXRlVGltZWxpbmVPZmZzZXQoY29uc3QgTWVkaWFTYW1wbGUmLCBkb3Vi
bGUpOwogICAgIAogICAgIHZvaWQgZW5xdWV1ZVZpZGVvU2FtcGxlKE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlJiwgTWVkaWFTYW1wbGUmKTsKQEAgLTIxMiw3ICsyMDEsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciosIFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFZp
ZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCkgb3ZlcnJpZGU7CiAKLSAgICBNZWRpYVRpbWUg
c3RyZWFtVGltZSgpIGNvbnN0OworICAgIE1lZGlhVGltZSBzdHJlYW1UaW1lKCkgY29uc3QgZmlu
YWw7CiAKICAgICBBdWRpb1NvdXJjZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCkgZmlu
YWw7CiAKQEAgLTIyMCwxNCArMjA5LDExIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGFwcGxpY2F0
aW9uRGlkQmVjb21lQWN0aXZlKCkgZmluYWw7CiAKLSAgICBib29sIGhpZGVCYWNrZ3JvdW5kTGF5
ZXIoKSBjb25zdCB7IHJldHVybiAoIW1fYWN0aXZlVmlkZW9UcmFjayB8fCBtX3dhaXRpbmdGb3JG
aXJzdEltYWdlKSAmJiBtX2Rpc3BsYXlNb2RlICE9IFBhaW50SXRCbGFjazsgfQorICAgIGJvb2wg
aGlkZVJvb3RMYXllcigpIGNvbnN0IHsgcmV0dXJuICghbV9hY3RpdmVWaWRlb1RyYWNrIHx8IG1f
d2FpdGluZ0ZvckZpcnN0SW1hZ2UpICYmIG1fZGlzcGxheU1vZGUgIT0gUGFpbnRJdEJsYWNrOyB9
CiAKICAgICBNZWRpYVBsYXllciogbV9wbGF5ZXIgeyBudWxscHRyIH07CiAgICAgUmVmUHRyPE1l
ZGlhU3RyZWFtUHJpdmF0ZT4gbV9tZWRpYVN0cmVhbVByaXZhdGU7CiAgICAgUmVmUHRyPE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlPiBtX2FjdGl2ZVZpZGVvVHJhY2s7Ci0gICAgUmV0YWluUHRyPFdl
YkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdlTGlzdGVuZXI+IG1fc3RhdHVzQ2hhbmdlTGlzdGVu
ZXI7Ci0gICAgUmV0YWluUHRyPEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyPiBtX3NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcjsKLSAgICBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gbV9iYWNrZ3Jv
dW5kTGF5ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBBTDo6Q2xvY2s+IG1fY2xvY2s7CiAKICAg
ICBNZWRpYVRpbWUgbV9wYXVzZWRUaW1lOwpAQCAtMjQ0LDcgKzIzMCw2IEBAIHByaXZhdGU6CiAK
ICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0+
PiBtX2F1ZGlvVHJhY2tNYXA7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxWaWRlb1RyYWNr
UHJpdmF0ZU1lZGlhU3RyZWFtPj4gbV92aWRlb1RyYWNrTWFwOwotICAgIFBlbmRpbmdTYW1wbGVR
dWV1ZSBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlOwogCiAgICAgTWVkaWFQbGF5ZXI6Ok5ldHdv
cmtTdGF0ZSBtX25ldHdvcmtTdGF0ZSB7IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkVtcHR5
IH07CiAgICAgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlIHsgTWVkaWFQbGF5
ZXI6OlJlYWR5U3RhdGU6OkhhdmVOb3RoaW5nIH07CkBAIC0yNTQsOCArMjM5LDEzIEBAIHByaXZh
dGU6CiAgICAgUGxheWJhY2tTdGF0ZSBtX3BsYXliYWNrU3RhdGUgeyBQbGF5YmFja1N0YXRlOjpO
b25lIH07CiAgICAgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gbV92aWRlb1JvdGF0aW9uIHsg
TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb246Ok5vbmUgfTsKICAgICBDR0FmZmluZVRyYW5zZm9y
bSBtX3ZpZGVvVHJhbnNmb3JtOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXI+IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDPiBtX3ZpZGVvRnVsbHNjcmVlbkxheWVy
TWFuYWdlcjsKIAorICAgIC8vIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6Q2xpZW50CisgICAg
dm9pZCBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJTdGF0dXNEaWRDaGFuZ2UoU2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyJikgZmluYWw7CisgICAgdm9pZCBzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJC
b3VuZHNEaWRDaGFuZ2UoU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyJikgZmluYWw7CisKICNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKICAg
ICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0K
aW5kZXggNWZjZjlhYmJhZDA1MTI3NGQxMjMyY2YzYWRjNmQyZTk4ZWQ1MjQxMS4uZGY5ZTIwNTdh
OGI2OTlkNzJlNjI2MjYwMzA4YTA5Y2VmNTY1MmQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTMxLDIwICszMSwxNiBAQAogI2ltcG9ydCAiQXVkaW9UcmFja1ByaXZhdGVNZWRp
YVN0cmVhbS5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIkxvZ2dp
bmcuaCIKKyNpbXBvcnQgIkxvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmgiCiAjaW1wb3J0
ICJNZWRpYVN0cmVhbVByaXZhdGUuaCIKICNpbXBvcnQgIlBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Yu
aCIKICNpbXBvcnQgIlZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdlck9iakMuaCIKICNpbXBvcnQg
IlZpZGVvVHJhY2tQcml2YXRlTWVkaWFTdHJlYW0uaCIKLSNpbXBvcnQgPEFWRm91bmRhdGlvbi9B
VlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oPgogI2ltcG9ydCA8Q29yZUdyYXBoaWNzL0NHQWZm
aW5lVHJhbnNmb3JtLmg+Ci0jaW1wb3J0IDxRdWFydHpDb3JlL0NBTGF5ZXIuaD4KLSNpbXBvcnQg
PFF1YXJ0ekNvcmUvQ0FUcmFuc2FjdGlvbi5oPgogI2ltcG9ydCA8b2JqY19ydW50aW1lLmg+CiAj
aW1wb3J0IDxwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgogI2ltcG9y
dCA8cGFsL3NwaS9tYWMvQVZGb3VuZGF0aW9uU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3lzdGVtL0Ns
b2NrLmg+Ci0jaW1wb3J0IDx3dGYvRGVxdWUuaD4KLSNpbXBvcnQgPHd0Zi9GdW5jdGlvbi5oPgog
I2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgogCkBAIC01MiwxMjcgKzQ4LDYgQEAKICNpbXBvcnQgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGlu
ay5oPgogI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CiAKLXVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwotCi1AaW50ZXJmYWNlIFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVz
Q2hhbmdlTGlzdGVuZXIgOiBOU09iamVjdCB7Ci0gICAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDKiBfcGFyZW50OwotfQotCi0tIChpZClpbml0V2l0aFBhcmVudDooTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDKiljYWxsYmFjazsKLS0gKHZvaWQpaW52YWxp
ZGF0ZTsKLS0gKHZvaWQpYmVnaW5PYnNlcnZpbmdMYXllcnM7Ci0tICh2b2lkKXN0b3BPYnNlcnZp
bmdMYXllcnM7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXZWJBVlNhbXBsZUJ1ZmZlclN0YXR1
c0NoYW5nZUxpc3RlbmVyCi0KLS0gKGlkKWluaXRXaXRoUGFyZW50OihNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMqKXBhcmVudAotewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIg
aW5pdF0pKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgX3BhcmVudCA9IHBhcmVudDsKLQot
ICAgIHJldHVybiBzZWxmOwotfQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbc2VsZiBpbnZh
bGlkYXRlXTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpaW52YWxpZGF0ZQot
ewotICAgIFtzZWxmIHN0b3BPYnNlcnZpbmdMYXllcnNdOwotICAgIF9wYXJlbnQgPSBudWxscHRy
OwotfQotCi0tICh2b2lkKWJlZ2luT2JzZXJ2aW5nTGF5ZXJzCi17Ci0gICAgQVNTRVJUKF9wYXJl
bnQpOwotICAgIEFTU0VSVChfcGFyZW50LT5kaXNwbGF5TGF5ZXIoKSk7Ci0gICAgQVNTRVJUKF9w
YXJlbnQtPmJhY2tncm91bmRMYXllcigpKTsKLQotICAgIFtfcGFyZW50LT5kaXNwbGF5TGF5ZXIo
KSBhZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJzdGF0dXMiIG9wdGlvbnM6TlNLZXlWYWx1
ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0Om5pbF07Ci0gICAgW19wYXJlbnQtPmRpc3BsYXlM
YXllcigpIGFkZE9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAImVycm9yIiBvcHRpb25zOk5TS2V5
VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDpuaWxdOwotICAgIFtfcGFyZW50LT5iYWNr
Z3JvdW5kTGF5ZXIoKSBhZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJib3VuZHMiIG9wdGlv
bnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyBjb250ZXh0Om5pbF07Ci19Ci0KLS0gKHZv
aWQpc3RvcE9ic2VydmluZ0xheWVycwotewotICAgIGlmICghX3BhcmVudCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgaWYgKF9wYXJlbnQtPmRpc3BsYXlMYXllcigpKSB7Ci0gICAgICAgIFtfcGFy
ZW50LT5kaXNwbGF5TGF5ZXIoKSByZW1vdmVPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJzdGF0
dXMiXTsKLSAgICAgICAgW19wYXJlbnQtPmRpc3BsYXlMYXllcigpIHJlbW92ZU9ic2VydmVyOnNl
bGYgZm9yS2V5UGF0aDpAImVycm9yIl07Ci0gICAgfQotICAgIGlmIChfcGFyZW50LT5iYWNrZ3Jv
dW5kTGF5ZXIoKSkKLSAgICAgICAgW19wYXJlbnQtPmJhY2tncm91bmRMYXllcigpIHJlbW92ZU9i
c2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAImJvdW5kcyJdOwotfQotCi0tICh2b2lkKW9ic2VydmVW
YWx1ZUZvcktleVBhdGg6KE5TU3RyaW5nICopa2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNo
YW5nZTooTlNEaWN0aW9uYXJ5ICopY2hhbmdlIGNvbnRleHQ6KHZvaWQgKiljb250ZXh0Ci17Ci0g
ICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwotICAgIFVOVVNFRF9QQVJBTShrZXlQYXRoKTsKLSAg
ICBBU1NFUlQoX3BhcmVudCk7Ci0KLSAgICBpZiAoIV9wYXJlbnQpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6UEFMOjpnZXRBVlNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllckNsYXNzKCldKSB7Ci0gICAgICAgIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllcj4gbGF5ZXIgPSAoQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgKilvYmplY3Q7
Ci0gICAgICAgIEFTU0VSVChsYXllci5nZXQoKSA9PSBfcGFyZW50LT5kaXNwbGF5TGF5ZXIoKSk7
Ci0KLSAgICAgICAgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInN0YXR1cyJdKSB7Ci0g
ICAgICAgICAgICBSZXRhaW5QdHI8TlNOdW1iZXI+IHN0YXR1cyA9IFtjaGFuZ2UgdmFsdWVGb3JL
ZXk6TlNLZXlWYWx1ZUNoYW5nZU5ld0tleV07Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFtwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFWU2FtcGxlQnVmZmVyU3RhdHVzQ2hhbmdl
TGlzdGVuZXI+KHNlbGYpLCBsYXllciA9IFdURk1vdmUobGF5ZXIpLCBzdGF0dXMgPSBXVEZNb3Zl
KHN0YXR1cyldIHsKLSAgICAgICAgICAgICAgICBpZiAoIXByb3RlY3RlZFNlbGYtPl9wYXJlbnQp
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIHByb3RlY3Rl
ZFNlbGYtPl9wYXJlbnQtPmxheWVyU3RhdHVzRGlkQ2hhbmdlKGxheWVyLmdldCgpKTsKLSAgICAg
ICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KFtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAImVycm9yIl0pIHsKLSAgICAgICAgICAgIFJldGFp
blB0cjxOU051bWJlcj4gc3RhdHVzID0gW2NoYW5nZSB2YWx1ZUZvcktleTpOU0tleVZhbHVlQ2hh
bmdlTmV3S2V5XTsKLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYg
PSBSZXRhaW5QdHI8V2ViQVZTYW1wbGVCdWZmZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lcj4oc2VsZiks
IGxheWVyID0gV1RGTW92ZShsYXllciksIHN0YXR1cyA9IFdURk1vdmUoc3RhdHVzKV0gewotICAg
ICAgICAgICAgICAgIGlmICghcHJvdGVjdGVkU2VsZi0+X3BhcmVudCkKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICAgICAgcHJvdGVjdGVkU2VsZi0+X3BhcmVudC0+
bGF5ZXJFcnJvckRpZENoYW5nZShsYXllci5nZXQoKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChbW2NoYW5nZSB2YWx1
ZUZvcktleTpOU0tleVZhbHVlQ2hhbmdlTm90aWZpY2F0aW9uSXNQcmlvcktleV0gYm9vbFZhbHVl
XSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKChDQUxheWVyICopb2JqZWN0ID09IF9wYXJl
bnQtPmJhY2tncm91bmRMYXllcigpKSB7Ci0gICAgICAgIGlmIChba2V5UGF0aCBpc0VxdWFsVG9T
dHJpbmc6QCJib3VuZHMiXSkgewotICAgICAgICAgICAgaWYgKCFfcGFyZW50KQotICAgICAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgaWYgKGlzTWFpblRocmVhZCgpKSB7Ci0gICAg
ICAgICAgICAgICAgX3BhcmVudC0+YmFja2dyb3VuZExheWVyQm91bmRzQ2hhbmdlZCgpOwotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBVlNhbXBsZUJ1ZmZlclN0
YXR1c0NoYW5nZUxpc3RlbmVyPihzZWxmKV0gewotICAgICAgICAgICAgICAgIGlmICghcHJvdGVj
dGVkU2VsZi0+X3BhcmVudCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
ICAgICAgICAgcHJvdGVjdGVkU2VsZi0+X3BhcmVudC0+YmFja2dyb3VuZExheWVyQm91bmRzQ2hh
bmdlZCgpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLX0KLUBlbmQKLQog
bmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIFBBTDsKIApAQCAtMTgzLDcgKzU4
LDYgQEAgc3RhdGljIGNvbnN0IGRvdWJsZSByZW5kZXJlckxhdGVuY3kgPSAwLjAyOwogCiBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQyhNZWRpYVBsYXllciogcGxheWVyKQogICAgIDogbV9wbGF5ZXIocGxheWVy
KQotICAgICwgbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lcihhZG9wdE5TKFtbV2ViQVZTYW1wbGVCdWZm
ZXJTdGF0dXNDaGFuZ2VMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhQYXJlbnQ6dGhpc10pKQogICAg
ICwgbV9jbG9jayhQQUw6OkNsb2NrOjpjcmVhdGUoKSkKICAgICAsIG1fdmlkZW9GdWxsc2NyZWVu
TGF5ZXJNYW5hZ2VyKG1ha2VVbmlxdWU8VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQz4o
KSkKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKQEAgLTE5OCw4ICs3Miw2IEBAIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6fk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQygpCiB7CiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAKLSAgICBbbV9z
dGF0dXNDaGFuZ2VMaXN0ZW5lciBpbnZhbGlkYXRlXTsKLQogICAgIGZvciAoY29uc3QgYXV0byYg
dHJhY2sgOiBtX2F1ZGlvVHJhY2tNYXAudmFsdWVzKCkpCiAgICAgICAgIHRyYWNrLT5wYXVzZSgp
OwogCkBAIC0yNjksMzMgKzE0MSw2IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpzdXBwb3J0c1R5cGUoY29uCiAjcHJhZ21h
IG1hcmsgLQogI3ByYWdtYSBtYXJrIEFWU2FtcGxlQnVmZmVyIE1ldGhvZHMKIAotdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJlbW92ZU9sZFNhbXBsZXNGcm9tUGVu
ZGluZ1F1ZXVlKFBlbmRpbmdTYW1wbGVRdWV1ZSYgcXVldWUpCi17Ci0gICAgaWYgKHF1ZXVlLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBkZWNvZGVUaW1lID0gcXVldWUu
Zmlyc3QoKS0+ZGVjb2RlVGltZSgpOwotICAgIGlmICghZGVjb2RlVGltZS5pc1ZhbGlkKCkgfHwg
ZGVjb2RlVGltZSA8IE1lZGlhVGltZTo6emVyb1RpbWUoKSkgewotICAgICAgICB3aGlsZSAocXVl
dWUuc2l6ZSgpID4gNSkKLSAgICAgICAgICAgIHF1ZXVlLnJlbW92ZUZpcnN0KCk7Ci0KLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIE1lZGlhVGltZSBub3cgPSBzdHJlYW1UaW1lKCk7Ci0g
ICAgd2hpbGUgKCFxdWV1ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKHF1ZXVlLmZpcnN0KCkt
PmRlY29kZVRpbWUoKSA+IG5vdykKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBxdWV1ZS5y
ZW1vdmVGaXJzdCgpOwotICAgIH0KLX0KLQotdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OmFkZFNhbXBsZVRvUGVuZGluZ1F1ZXVlKFBlbmRpbmdTYW1wbGVRdWV1ZSYg
cXVldWUsIE1lZGlhU2FtcGxlJiBzYW1wbGUpCi17Ci0gICAgcmVtb3ZlT2xkU2FtcGxlc0Zyb21Q
ZW5kaW5nUXVldWUocXVldWUpOwotICAgIHF1ZXVlLmFwcGVuZChzYW1wbGUpOwotfQotCiBNZWRp
YVRpbWUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjYWxjdWxhdGVUaW1l
bGluZU9mZnNldChjb25zdCBNZWRpYVNhbXBsZSYgc2FtcGxlLCBkb3VibGUgbGF0ZW5jeSkKIHsK
ICAgICBNZWRpYVRpbWUgc2FtcGxlVGltZSA9IHNhbXBsZS5vdXRwdXRQcmVzZW50YXRpb25UaW1l
KCk7CkBAIC0zMzAsMzcgKzE3NSwxOSBAQCBDR0FmZmluZVRyYW5zZm9ybSBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnZpZGVvVHJhbnNmb3JtYXRpb25NYXRyaQogICAgIHJl
dHVybiBtX3ZpZGVvVHJhbnNmb3JtOwogfQogCi1zdGF0aWMgdm9pZCBydW5XaXRob3V0QW5pbWF0
aW9ucyhjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uKQotewotICAgIFtDQVRy
YW5zYWN0aW9uIGJlZ2luXTsKLSAgICBbQ0FUcmFuc2FjdGlvbiBzZXRBbmltYXRpb25EdXJhdGlv
bjowXTsKLSAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0aW9uczpZRVNdOwotICAgIGZ1
bmN0aW9uKCk7Ci0gICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKLX0KLQogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVucXVldWVDb3JyZWN0ZWRWaWRlb1NhbXBs
ZShNZWRpYVNhbXBsZSYgc2FtcGxlKQogewogICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllcikgewotICAgICAgICBpZiAoW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHN0YXR1c10g
PT0gQVZRdWV1ZWRTYW1wbGVCdWZmZXJSZW5kZXJpbmdTdGF0dXNGYWlsZWQpCisgICAgICAgIGlm
IChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+ZGlkRmFpbCgpKQogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIGlmIChzYW1wbGUudmlkZW9Sb3RhdGlvbigpICE9IG1fdmlkZW9Sb3Rh
dGlvbiB8fCBzYW1wbGUudmlkZW9NaXJyb3JlZCgpICE9IG1fdmlkZW9NaXJyb3JlZCkgewogICAg
ICAgICAgICAgbV92aWRlb1JvdGF0aW9uID0gc2FtcGxlLnZpZGVvUm90YXRpb24oKTsKICAgICAg
ICAgICAgIG1fdmlkZW9NaXJyb3JlZCA9IHNhbXBsZS52aWRlb01pcnJvcmVkKCk7Ci0gICAgICAg
ICAgICBydW5XaXRob3V0QW5pbWF0aW9ucyhbdGhpcywgJnNhbXBsZV0gewotICAgICAgICAgICAg
ICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLmFmZmluZVRyYW5zZm9ybSA9IHZp
ZGVvVHJhbnNmb3JtYXRpb25NYXRyaXgoc2FtcGxlLCB0cnVlKTsKLSAgICAgICAgICAgICAgICB1
cGRhdGVEaXNwbGF5TGF5ZXIoKTsKLSAgICAgICAgICAgIH0pOworICAgICAgICAgICAgbV9zYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXItPnVwZGF0ZUFmZmluZVRyYW5zZm9ybSh2aWRlb1RyYW5zZm9y
bWF0aW9uTWF0cml4KHNhbXBsZSwgdHJ1ZSkpOworICAgICAgICAgICAgdXBkYXRlRGlzcGxheUxh
eWVyKCk7CiAgICAgICAgIH0KLQotICAgICAgICBpZiAoIVttX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllciBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pIHsKLSAgICAgICAgICAgIGFkZFNhbXBsZVRv
UGVuZGluZ1F1ZXVlKG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUsIHNhbXBsZSk7Ci0gICAgICAg
ICAgICByZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRhKCk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIgZW5xdWV1ZVNhbXBsZUJ1ZmZlcjpzYW1wbGUucGxhdGZvcm1TYW1wbGUoKS5zYW1wbGUu
Y21TYW1wbGVCdWZmZXJdOworICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+ZW5x
dWV1ZVNhbXBsZShzYW1wbGUpOwogICAgIH0KIAogICAgIGlmICghbV9oYXNFdmVyRW5xdWV1ZWRW
aWRlb0ZyYW1lKSB7CkBAIC00MTUsNjEgKzI0MiwyNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZVZpZGVvU2FtcGxlKE1lZGlhU3RyZWFtVHJhY2tQ
cgogICAgIH0KIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OnJlcXVlc3ROb3RpZmljYXRpb25XaGVuUmVhZHlGb3JWaWRlb0RhdGEoKQotewotICAgIGF1dG8g
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyk7Ci0gICAgW21fc2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyIHJlcXVlc3RNZWRpYURhdGFXaGVuUmVhZHlPblF1ZXVlOmRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCkgdXNpbmdCbG9jazpeIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgc3RvcFJl
cXVlc3RpbmdNZWRpYURhdGFdOwotCi0gICAgICAgIGlmICghbV9hY3RpdmVWaWRlb1RyYWNrKSB7
Ci0gICAgICAgICAgICBtX3BlbmRpbmdWaWRlb1NhbXBsZVF1ZXVlLmNsZWFyKCk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICB3aGlsZSAoIW1fcGVuZGluZ1ZpZGVv
U2FtcGxlUXVldWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBpZiAoIVttX3NhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllciBpc1JlYWR5Rm9yTW9yZU1lZGlhRGF0YV0pIHsKLSAgICAgICAgICAgICAg
ICByZXF1ZXN0Tm90aWZpY2F0aW9uV2hlblJlYWR5Rm9yVmlkZW9EYXRhKCk7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBhdXRvIHNhbXBsZSA9
IG1fcGVuZGluZ1ZpZGVvU2FtcGxlUXVldWUudGFrZUZpcnN0KCk7Ci0gICAgICAgICAgICBlbnF1
ZXVlVmlkZW9TYW1wbGUoKm1fYWN0aXZlVmlkZW9UcmFjay5nZXQoKSwgc2FtcGxlLmdldCgpKTsK
LSAgICAgICAgfQotICAgIH1dOwotfQotCiBBdWRpb1NvdXJjZVByb3ZpZGVyKiBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmF1ZGlvU291cmNlUHJvdmlkZXIoKQogewogICAg
IC8vIEZJWE1FOiBUaGlzIHNob3VsZCByZXR1cm4gYSBtaXggb2YgYWxsIGF1ZGlvIHRyYWNrcyAt
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjAzMDUKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OmxheWVyRXJyb3JEaWRDaGFuZ2UoQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIqIGxheWVy
KQordm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllclN0YXR1c0RpZENoYW5nZShTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXImIGxh
eWVyKQogeworICAgIEFTU0VSVCgmbGF5ZXIgPT0gbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIu
Z2V0KCkpOwogICAgIFVOVVNFRF9QQVJBTShsYXllcik7Ci0gICAgRVJST1JfTE9HKExPR0lERU5U
SUZJRVIsICJlcnJvciA9ICIsIFtbbGF5ZXIuZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dIFVU
RjhTdHJpbmddKTsKLX0KLQotdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OmxheWVyU3RhdHVzRGlkQ2hhbmdlKEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKiBsYXll
cikKLXsKLSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJzdGF0dXMgPSAiLCAoaW50KWxh
eWVyLnN0YXR1cyk7Ci0KLSAgICBpZiAobGF5ZXIuc3RhdHVzICE9IEFWUXVldWVkU2FtcGxlQnVm
ZmVyUmVuZGVyaW5nU3RhdHVzUmVuZGVyaW5nKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKCFt
X3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciB8fCAhbV9hY3RpdmVWaWRlb1RyYWNrIHx8IGxheWVy
ICE9IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQorICAgIGlmICghbV9hY3RpdmVWaWRlb1Ry
YWNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHRyYWNrID0gbV92aWRlb1RyYWNrTWFw
LmdldChtX2FjdGl2ZVZpZGVvVHJhY2stPmlkKCkpOwotICAgIGlmICh0cmFjaykKKyAgICBpZiAo
YXV0byB0cmFjayA9IG1fdmlkZW9UcmFja01hcC5nZXQobV9hY3RpdmVWaWRlb1RyYWNrLT5pZCgp
KSkKICAgICAgICAgdHJhY2stPnNldFRpbWVsaW5lT2Zmc2V0KE1lZGlhVGltZTo6aW52YWxpZFRp
bWUoKSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjph
cHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCiB7Ci0gICAgaWYgKG1fc2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyICYmIFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBzdGF0dXNdID09IEFWUXVl
dWVkU2FtcGxlQnVmZmVyUmVuZGVyaW5nU3RhdHVzRmFpbGVkKSB7CisgICAgaWYgKG1fc2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyICYmIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5kaWRGYWls
KCkpIHsKICAgICAgICAgZmx1c2hSZW5kZXJlcnMoKTsKICAgICAgICAgaWYgKG1faW1hZ2VQYWlu
dGVyLm1lZGlhU2FtcGxlKQogICAgICAgICAgICAgZW5xdWV1ZUNvcnJlY3RlZFZpZGVvU2FtcGxl
KCptX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSk7CkBAIC00ODAsNyArMjcyLDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmFwcGxpY2F0aW9uRGlkQmVjb21l
QWN0aXZlKCkKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpmbHVz
aFJlbmRlcmVycygpCiB7CiAgICAgaWYgKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQotICAg
ICAgICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgZmx1c2hdOworICAgICAgICBtX3NhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllci0+Zmx1c2goKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakM6OmVuc3VyZUxheWVycygpCkBAIC00OTEsNTEgKzI4MywyNCBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5zdXJlTGF5ZXJz
KCkKICAgICBpZiAoIW1fbWVkaWFTdHJlYW1Qcml2YXRlIHx8ICFtX21lZGlhU3RyZWFtUHJpdmF0
ZS0+YWN0aXZlVmlkZW9UcmFjaygpIHx8ICFtX21lZGlhU3RyZWFtUHJpdmF0ZS0+YWN0aXZlVmlk
ZW9UcmFjaygpLT5lbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fc2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyID0gYWRvcHROUyhbUEFMOjphbGxvY0FWU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVySW5zdGFuY2UoKSBpbml0XSk7CisgICAgYXV0byBzaXplID0gc25hcHBlZEludFJlY3Qo
bV9wbGF5ZXItPnBsYXllckNvbnRlbnRCb3hSZWN0KCkpLnNpemUoKTsKKyAgICBtX3NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllciA9IExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyOjpjcmVhdGUo
KnRoaXMsIGhpZGVSb290TGF5ZXIoKSwgc2l6ZSk7CisKICAgICBpZiAoIW1fc2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyKSB7Ci0gICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiK1tBVlNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllciBhbGxvY10gZmFpbGVkLiIpOworICAgICAgICBFUlJPUl9M
T0coTE9HSURFTlRJRklFUiwgIkNyZWF0aW5nIHRoZSBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIg
ZmFpbGVkLiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIuZ2V0KCkuYmFja2dyb3VuZENvbG9yID0gY2FjaGVkQ0dDb2xvcihDb2xvcjo6
YmxhY2spOwotICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLmFuY2hvclBvaW50
ID0geyAuNSwgLjUgfTsKLSAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKS5uZWVk
c0Rpc3BsYXlPbkJvdW5kc0NoYW5nZSA9IFlFUzsKLSAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5nZXQoKS52aWRlb0dyYXZpdHkgPSBBVkxheWVyVmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0
RmlsbDsKLQotICAgIG1fYmFja2dyb3VuZExheWVyID0gYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2Nd
IGluaXRdKTsKLSAgICBtX2JhY2tncm91bmRMYXllci5nZXQoKS5oaWRkZW4gPSBoaWRlQmFja2dy
b3VuZExheWVyKCk7Ci0KLSAgICBtX2JhY2tncm91bmRMYXllci5nZXQoKS5iYWNrZ3JvdW5kQ29s
b3IgPSBjYWNoZWRDR0NvbG9yKENvbG9yOjpibGFjayk7Ci0gICAgbV9iYWNrZ3JvdW5kTGF5ZXIu
Z2V0KCkubmVlZHNEaXNwbGF5T25Cb3VuZHNDaGFuZ2UgPSBZRVM7Ci0KLSAgICBhdXRvIHNpemUg
PSBzbmFwcGVkSW50UmVjdChtX3BsYXllci0+cGxheWVyQ29udGVudEJveFJlY3QoKSkuc2l6ZSgp
OwotICAgIG1fYmFja2dyb3VuZExheWVyLmdldCgpLmJvdW5kcyA9IENHUmVjdE1ha2UoMCwgMCwg
c2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKLQotICAgIFttX3N0YXR1c0NoYW5nZUxpc3Rl
bmVyIGJlZ2luT2JzZXJ2aW5nTGF5ZXJzXTsKLQotICAgIFttX2JhY2tncm91bmRMYXllciBhZGRT
dWJsYXllcjptX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKV07Ci0KLSNpZm5kZWYgTkRF
QlVHCi0gICAgW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHNldE5hbWU6QCJNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMgQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIiXTsK
LSAgICBbbV9iYWNrZ3JvdW5kTGF5ZXIgc2V0TmFtZTpAIk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQyBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBwYXJlbnQiXTsKLSNlbmRp
ZgotCiAgICAgdXBkYXRlUmVuZGVyaW5nTW9kZSgpOwogICAgIHVwZGF0ZURpc3BsYXlMYXllcigp
OwogCi0gICAgbV92aWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXItPnNldFZpZGVvTGF5ZXIobV9i
YWNrZ3JvdW5kTGF5ZXIuZ2V0KCksIHNpemUpOworICAgIG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJN
YW5hZ2VyLT5zZXRWaWRlb0xheWVyKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5yb290TGF5
ZXIoKSwgc2l6ZSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDOjpkZXN0cm95TGF5ZXJzKCkKIHsKLSAgICBbbV9zdGF0dXNDaGFuZ2VMaXN0ZW5lciBzdG9w
T2JzZXJ2aW5nTGF5ZXJzXTsKLSAgICBpZiAobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpIHsK
LSAgICAgICAgbV9wZW5kaW5nVmlkZW9TYW1wbGVRdWV1ZS5jbGVhcigpOwotICAgICAgICBbbV9z
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgc3RvcFJlcXVlc3RpbmdNZWRpYURhdGFdOwotICAgICAg
ICBbbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgZmx1c2hdOworICAgIGlmIChtX3NhbXBsZUJ1
ZmZlckRpc3BsYXlMYXllcikKICAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgPSBu
dWxscHRyOwotICAgIH0KLSAgICBtX2JhY2tncm91bmRMYXllciA9IG51bGxwdHI7CiAKICAgICB1
cGRhdGVSZW5kZXJpbmdNb2RlKCk7CiAgICAgCkBAIC02MDIsMjIgKzM2NywxMiBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cHJlcGFyZVRvUGxheSgpCiAKIFBs
YXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGxhdGZv
cm1MYXllcigpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2JhY2tncm91bmRMYXllciB8fCBtX2Rpc3Bs
YXlNb2RlID09IE5vbmUpCisgICAgaWYgKCFtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciB8fCAh
bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPnJvb3RMYXllcigpIHx8IG1fZGlzcGxheU1vZGUg
PT0gTm9uZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gbV92aWRlb0Z1
bGxzY3JlZW5MYXllck1hbmFnZXItPnZpZGVvSW5saW5lTGF5ZXIoKTsKIH0KIAotUGxhdGZvcm1M
YXllciogTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpkaXNwbGF5TGF5ZXIo
KQotewotICAgIHJldHVybiBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKTsKLX0KLQot
UGxhdGZvcm1MYXllciogTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpiYWNr
Z3JvdW5kTGF5ZXIoKQotewotICAgIHJldHVybiBtX2JhY2tncm91bmRMYXllci5nZXQoKTsKLX0K
LQogTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpEaXNwbGF5TW9kZSBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmN1cnJlbnREaXNwbGF5TW9kZSgpIGNv
bnN0CiB7CiAgICAgaWYgKG1faW50cmluc2ljU2l6ZS5pc0VtcHR5KCkgfHwgIW1ldGFEYXRhQXZh
aWxhYmxlKCkgfHwgIW1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQpAQCAtNjUzLDE4ICs0MDgs
OCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6dXBkYXRlRGlz
cGxheU1vZGUoKQogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJ1cGRhdGVkIHRvICIsIHN0
YXRpY19jYXN0PGludD4oZGlzcGxheU1vZGUpKTsKICAgICBtX2Rpc3BsYXlNb2RlID0gZGlzcGxh
eU1vZGU7CiAKLSAgICBhdXRvIGhpZGRlbiA9IG1fZGlzcGxheU1vZGUgPCBQYXVzZWRJbWFnZTsK
LSAgICBpZiAobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIgJiYgbV9zYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIuZ2V0KCkuaGlkZGVuICE9IGhpZGRlbikgewotICAgICAgICBydW5XaXRob3V0QW5p
bWF0aW9ucyhbdGhpcywgaGlkZGVuXSB7Ci0gICAgICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5nZXQoKS5oaWRkZW4gPSBoaWRkZW47Ci0gICAgICAgIH0pOwotICAgIH0KLSAgICBo
aWRkZW4gPSBoaWRlQmFja2dyb3VuZExheWVyKCk7Ci0gICAgaWYgKG1fYmFja2dyb3VuZExheWVy
ICYmIG1fYmFja2dyb3VuZExheWVyLmdldCgpLmhpZGRlbiAhPSBoaWRkZW4pIHsKLSAgICAgICAg
cnVuV2l0aG91dEFuaW1hdGlvbnMoW3RoaXMsIGhpZGRlbl0gewotICAgICAgICAgICAgbV9iYWNr
Z3JvdW5kTGF5ZXIuZ2V0KCkuaGlkZGVuID0gaGlkZGVuOwotICAgICAgICB9KTsKLSAgICB9Cisg
ICAgaWYgKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQorICAgICAgICBtX3NhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci0+dXBkYXRlRGlzcGxheU1vZGUobV9kaXNwbGF5TW9kZSA8IFBhdXNlZElt
YWdlLCBoaWRlUm9vdExheWVyKCkpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xMDIzLDgg
Kzc2OCwxMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Y2hl
Y2tTZWxlY3RlZFZpZGVvVHJhY2soKQogICAgICAgICAgICAgICAgIG1fd2FpdGluZ0ZvckZpcnN0
SW1hZ2UgPSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIGVuc3VyZUxheWVycygpOwotICAgICAg
ICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5nZXQoKS5oaWRkZW4gPSBoaWRlVmlkZW9MYXll
ciB8fCBtX2Rpc3BsYXlNb2RlIDwgUGF1c2VkSW1hZ2U7Ci0gICAgICAgIG1fYmFja2dyb3VuZExh
eWVyLmdldCgpLmhpZGRlbiA9IGhpZGVCYWNrZ3JvdW5kTGF5ZXIoKTsKKyAgICAgICAgaWYgKG1f
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKSB7CisgICAgICAgICAgICBpZiAoIW1fYWN0aXZlVmlk
ZW9UcmFjaykKKyAgICAgICAgICAgICAgICBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+Y2xl
YXJFbnF1ZXVlZFNhbXBsZXMoKTsKKyAgICAgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyLT51cGRhdGVEaXNwbGF5TW9kZShoaWRlVmlkZW9MYXllciB8fCBtX2Rpc3BsYXlNb2RlIDwg
UGF1c2VkSW1hZ2UsIGhpZGVSb290TGF5ZXIoKSk7CisgICAgICAgIH0KIAogICAgICAgICBtX3Bl
bmRpbmdTZWxlY3RlZFRyYWNrQ2hlY2sgPSBmYWxzZTsKICAgICAgICAgdXBkYXRlRGlzcGxheU1v
ZGUoKTsKQEAgLTExNzMsOCArOTIxLDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OnNldE5ldHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6TmV0d29ya1MKIAogdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnNldEJ1ZmZlcmluZ1BvbGlj
eShNZWRpYVBsYXllcjo6QnVmZmVyaW5nUG9saWN5IHBvbGljeSkKIHsKLSAgICBpZiAocG9saWN5
ICE9IE1lZGlhUGxheWVyOjpCdWZmZXJpbmdQb2xpY3k6OkRlZmF1bHQpCi0gICAgICAgIFttX3Nh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllciBmbHVzaEFuZFJlbW92ZUltYWdlXTsKKyAgICBpZiAocG9s
aWN5ICE9IE1lZGlhUGxheWVyOjpCdWZmZXJpbmdQb2xpY3k6OkRlZmF1bHQgJiYgbV9zYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIpCisgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5m
bHVzaEFuZFJlbW92ZUltYWdlKCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
dHJlYW1BVkZPYmpDOjpzY2hlZHVsZURlZmVycmVkVGFzayhGdW5jdGlvbjx2b2lkICgpPiYmIGZ1
bmN0aW9uKQpAQCAtMTE5NywyMyArOTQ1LDIwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmpDOjpDdXJyZW50RnJhbWVQYWludGVyOjpyZXNldCgpCiAKIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjp1cGRhdGVEaXNwbGF5TGF5ZXIoKQog
ewotICAgIGlmICghbV9iYWNrZ3JvdW5kTGF5ZXIgfHwgIW1fc2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyKQorICAgIGlmICghbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGF1dG8gYmFja2dyb3VuZEJvdW5kcyA9IG1fYmFja2dyb3VuZExheWVyLmdldCgp
LmJvdW5kczsKLSAgICBhdXRvIHZpZGVvQm91bmRzID0gYmFja2dyb3VuZEJvdW5kczsKKyAgICBh
dXRvIGJvdW5kcyA9IG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5ib3VuZHMoKTsKKyAgICBh
dXRvIHZpZGVvQm91bmRzID0gYm91bmRzOwogICAgIGlmIChtX3ZpZGVvUm90YXRpb24gPT0gTWVk
aWFTYW1wbGU6OlZpZGVvUm90YXRpb246OlJpZ2h0IHx8IG1fdmlkZW9Sb3RhdGlvbiA9PSBNZWRp
YVNhbXBsZTo6VmlkZW9Sb3RhdGlvbjo6TGVmdCkKICAgICAgICAgc3RkOjpzd2FwKHZpZGVvQm91
bmRzLnNpemUud2lkdGgsIHZpZGVvQm91bmRzLnNpemUuaGVpZ2h0KTsKIAotICAgIG1fc2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyLmdldCgpLmJvdW5kcyA9IHZpZGVvQm91bmRzOwotICAgIG1fc2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyLmdldCgpLnBvc2l0aW9uID0geyBiYWNrZ3JvdW5kQm91bmRz
LnNpemUud2lkdGggLyAyLCBiYWNrZ3JvdW5kQm91bmRzLnNpemUuaGVpZ2h0IC8gMn07CisgICAg
bV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPnVwZGF0ZUJvdW5kc0FuZFBvc2l0aW9uKHZpZGVv
Qm91bmRzLCB7IGJvdW5kcy5zaXplLndpZHRoIC8gMiwgYm91bmRzLnNpemUuaGVpZ2h0IC8gMn0p
OwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6YmFja2dy
b3VuZExheWVyQm91bmRzQ2hhbmdlZCgpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyQm91bmRzRGlkQ2hhbmdlKFNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllciYpCiB7Ci0gICAgcnVuV2l0aG91dEFuaW1hdGlvbnMoW3RoaXNd
IHsKLSAgICAgICAgdXBkYXRlRGlzcGxheUxheWVyKCk7Ci0gICAgfSk7CisgICAgdXBkYXRlRGlz
cGxheUxheWVyKCk7CiB9CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
</data>

          </attachment>
      

    </bug>

</bugzilla>