<?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>189043</bug_id>
          
          <creation_ts>2018-08-27 23:51:13 -0700</creation_ts>
          <short_desc>[WebAssembly] Use StreamingParser in existing Wasm::BBQPlan</short_desc>
          <delta_ts>2019-09-10 02:43:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>Skinnermelony09</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1454307</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-27 23:51:13 -0700</bug_when>
    <thetext>[WebAssembly] Use StreamingParser in existing Wasm::BBQPlan</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454308</commentid>
    <comment_count>1</comment_count>
      <attachid>348269</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-28 00:00:54 -0700</bug_when>
    <thetext>Created attachment 348269
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454344</commentid>
    <comment_count>2</comment_count>
      <attachid>348287</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-28 03:54:33 -0700</bug_when>
    <thetext>Created attachment 348287
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454369</commentid>
    <comment_count>3</comment_count>
      <attachid>348292</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-28 07:49:26 -0700</bug_when>
    <thetext>Created attachment 348292
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1558249</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-02 20:22:52 -0700</bug_when>
    <thetext>I also would like to revive this patch to prepare for introducing compileStreaming / instantiateStreaming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562570</commentid>
    <comment_count>5</comment_count>
      <attachid>376631</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-08-18 03:04:50 -0700</bug_when>
    <thetext>Created attachment 376631
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567226</commentid>
    <comment_count>6</comment_count>
      <attachid>377857</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-02 14:01:05 -0700</bug_when>
    <thetext>Created attachment 377857
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567448</commentid>
    <comment_count>7</comment_count>
      <attachid>377857</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-09-03 11:27:38 -0700</bug_when>
    <thetext>Comment on attachment 377857
Patch

The phrasing of the callback names is a little weird. didParseFunction makes it seem like it&apos;s either a query (i.e. has this function already been parsed) or that the caller already parsed the function and is informing the client it has been parsed. Is the expectation that the callbacks are invoked when the relevant bytes are available? If so, what do you think of changing the names to provide&lt;Thing&gt; e.g. provideFunction?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567496</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-03 13:44:59 -0700</bug_when>
    <thetext>(In reply to Keith Miller from comment #7)
&gt; Comment on attachment 377857 [details]
&gt; Patch
&gt; 
&gt; The phrasing of the callback names is a little weird. didParseFunction makes
&gt; it seem like it&apos;s either a query (i.e. has this function already been
&gt; parsed) or that the caller already parsed the function and is informing the
&gt; client it has been parsed. Is the expectation that the callbacks are invoked
&gt; when the relevant bytes are available? If so, what do you think of changing
&gt; the names to provide&lt;Thing&gt; e.g. provideFunction?

This naming convention is following the naming convention of this type of callback clients in WebCore.
For example, WebCore::ResourceHandleClient is a client of ResourceHandle, and its virtual functions are invoked when ResourceHandle gets some state. And the methods of ResourceHandleClient are like,

didSendData
didReceiveData
didFinishLoading

In WebCore, this type of clients are having methods like `didXXX` or `willXXX`. Here, I&apos;m aligning the names to WebCore&apos;s naming convention for consistency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567501</commentid>
    <comment_count>9</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-09-03 13:57:01 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #8)
&gt; (In reply to Keith Miller from comment #7)
&gt; &gt; Comment on attachment 377857 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; The phrasing of the callback names is a little weird. didParseFunction makes
&gt; &gt; it seem like it&apos;s either a query (i.e. has this function already been
&gt; &gt; parsed) or that the caller already parsed the function and is informing the
&gt; &gt; client it has been parsed. Is the expectation that the callbacks are invoked
&gt; &gt; when the relevant bytes are available? If so, what do you think of changing
&gt; &gt; the names to provide&lt;Thing&gt; e.g. provideFunction?
&gt; 
&gt; This naming convention is following the naming convention of this type of
&gt; callback clients in WebCore.
&gt; For example, WebCore::ResourceHandleClient is a client of ResourceHandle,
&gt; and its virtual functions are invoked when ResourceHandle gets some state.
&gt; And the methods of ResourceHandleClient are like,
&gt; 
&gt; didSendData
&gt; didReceiveData
&gt; didFinishLoading
&gt; 
&gt; In WebCore, this type of clients are having methods like `didXXX` or
&gt; `willXXX`. Here, I&apos;m aligning the names to WebCore&apos;s naming convention for
&gt; consistency.

If we want to stay consistent with WebCore&apos;s naming can we call it didReceiveFunctionData, didReceiveSectionData, etc? The current naming makes it sound like the parsing of the function has already happened when the function is called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567519</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-03 14:51:54 -0700</bug_when>
    <thetext>(In reply to Keith Miller from comment #9)
&gt; (In reply to Yusuke Suzuki from comment #8)
&gt; &gt; (In reply to Keith Miller from comment #7)
&gt; &gt; &gt; Comment on attachment 377857 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; The phrasing of the callback names is a little weird. didParseFunction makes
&gt; &gt; &gt; it seem like it&apos;s either a query (i.e. has this function already been
&gt; &gt; &gt; parsed) or that the caller already parsed the function and is informing the
&gt; &gt; &gt; client it has been parsed. Is the expectation that the callbacks are invoked
&gt; &gt; &gt; when the relevant bytes are available? If so, what do you think of changing
&gt; &gt; &gt; the names to provide&lt;Thing&gt; e.g. provideFunction?
&gt; &gt; 
&gt; &gt; This naming convention is following the naming convention of this type of
&gt; &gt; callback clients in WebCore.
&gt; &gt; For example, WebCore::ResourceHandleClient is a client of ResourceHandle,
&gt; &gt; and its virtual functions are invoked when ResourceHandle gets some state.
&gt; &gt; And the methods of ResourceHandleClient are like,
&gt; &gt; 
&gt; &gt; didSendData
&gt; &gt; didReceiveData
&gt; &gt; didFinishLoading
&gt; &gt; 
&gt; &gt; In WebCore, this type of clients are having methods like `didXXX` or
&gt; &gt; `willXXX`. Here, I&apos;m aligning the names to WebCore&apos;s naming convention for
&gt; &gt; consistency.
&gt; 
&gt; If we want to stay consistent with WebCore&apos;s naming can we call it
&gt; didReceiveFunctionData, didReceiveSectionData, etc? The current naming makes
&gt; it sound like the parsing of the function has already happened when the
&gt; function is called.

Sounds nice. I&apos;ll change the names to didReceiveFunctionData, didReceiveSectionData.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567563</commentid>
    <comment_count>11</comment_count>
      <attachid>377857</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-09-03 17:07:50 -0700</bug_when>
    <thetext>Comment on attachment 377857
Patch

r=me with the name change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569481</commentid>
    <comment_count>12</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-10 02:29:02 -0700</bug_when>
    <thetext>(In reply to Keith Miller from comment #11)
&gt; Comment on attachment 377857 [details]
&gt; Patch
&gt; 
&gt; r=me with the name change.

Thanks, I&apos;ll land with name change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569483</commentid>
    <comment_count>13</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-10 02:42:20 -0700</bug_when>
    <thetext>Committed r249708: &lt;https://trac.webkit.org/changeset/249708&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569484</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-10 02:43:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/55216526&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348269</attachid>
            <date>2018-08-28 00:00:54 -0700</date>
            <delta_ts>2018-08-28 03:54:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189043-20180828160053.patch</filename>
            <type>text/plain</type>
            <size>43377</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
OTg5OGNkZmFhNmFhMWUyZmFmNDM5NTU2OGJhYTRiZTE1Njc0YzI2Li45YzE4OWVjNjM5ZTg2N2Nm
MjZmZDg2MTVmOTc1ZDc5NmI4ZDNlODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OCBAQAorMjAxOC0wOC0yNyAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtXZWJBc3NlbWJseV0gVXNlIFN0cmVhbWluZ1BhcnNlciBp
biBleGlzdGluZyBXYXNtOjpCQlFQbGFuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODkwNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludGVncmF0ZXMgV2FzbTo6U3RyZWFtaW5nUGFy
c2VyIGludG8gdGhlIGV4aXN0aW5nIFdhc206OkJCUVBsYW4uCisgICAgICAgIEJ1dCBpdCBkb2Vz
IG5vdCB1c2UgYW55IHN0cmVhbWluZyBmZWF0dXJlLiBBbmQgV2FzbTo6QkJRUGxhbiB3b3VsZCBu
b3QgdXNlIHRoZQorICAgICAgICBzdHJlYW1pbmcgZmVhdHVyZSBzaW5jZSBpdCBhc3N1bWVzIHRo
YXQgYWxsIHRoZSBkYXRhIGlzIGFscmVhZHkgZ2l2ZW4uCisgICAgICAgIEluIGEgc3Vic2VxdWVu
dCBwYXRjaCwgd2Ugd2lsbCBjcmVhdGUgYSBuZXcgUGxhbiBhbmQgbWFuYWdlciBjbGFzcyBmb3Ig
c3RyZWFtaW5nCisgICAgICAgIHBhcnNpbmcgYW5kIHN0cmVhbWluZyBjb21waWxpbmcgYW5kIHVz
ZSB0aGVtIGZvciBXZWJBc3NlbWJseS5jb21waWxlU3RyZWFtaW5nIGFuZAorICAgICAgICBpbnN0
YW50aWF0ZVN0cmVhbWluZy4KKworICAgICAgICBUaGUgaW50ZW5zaW9uIG9mIHRoaXMgcGF0Y2gg
aXMgcmVtb3ZpbmcgdGhlIG9sZCBXYXNtOjpNb2R1bGVQYXJzZXIuCisKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMu
dHh0OgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoV1RGOjpXYXNt
U3RyZWFtaW5nUGFyc2VyOjpXYXNtU3RyZWFtaW5nUGFyc2VyKToKKyAgICAgICAgKiB3YXNtL1dh
c21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21waWxl
KTogVXNlIEZ1bmN0aW9uRGF0YSwgaXQgaXMgZ29vZCBzaW5jZSBpdCBpcyBtb3JlIHN0cm9uZ2x5
IHR5cGVkLgorICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuaDoKKyAgICAgICAgKiB3
YXNtL1dhc21CQlFQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6QkJRUGxh
bik6CisgICAgICAgIChKU0M6Oldhc206OkJCUVBsYW46OmRpZFBhcnNlRnVuY3Rpb24pOiBBZGQg
YSBjYWxsYmFjaywgd2hpY2ggaW52b2tlcyB2YWxpZGF0aW9uLgorICAgICAgICAoSlNDOjpXYXNt
OjpCQlFQbGFuOjpwYXJzZUFuZFZhbGlkYXRlTW9kdWxlKTogVXNlIFN0cmVhbWluZ1BhcnNlciBp
bnN0ZWFkIG9mIG9sZCBNb2R1bGVQYXJzZXIuCisgICAgICAgIChKU0M6Oldhc206OkJCUVBsYW46
OmNvbXBpbGVGdW5jdGlvbnMpOgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpjb21wbGV0
ZSk6CisgICAgICAgICogd2FzbS9XYXNtQkJRUGxhbi5oOgorICAgICAgICAqIHdhc20vV2FzbU1v
ZHVsZVBhcnNlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogd2FzbS9XYXNtTW9kdWxlUGFyc2Vy
Lmg6IFJlbW92ZWQgb2xkIFdhc206Ok1vZHVsZVBhcnNlci4KKyAgICAgICAgKiB3YXNtL1dhc21P
TUdQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6T01HUGxhbjo6d29yayk6CisgICAgICAg
ICogd2FzbS9XYXNtUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlBsYW46OmZhaWwpOiBN
YWtlIGZhaWwgZnVuY3Rpb24gY2FsbGFibGUgbXVsdGlwbGUgdGltZXMuIFRoZSBmaXJzdCBlcnJv
ciB3aWxsIGJlIHVzZWQuCisgICAgICAgICogd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHA6Cisg
ICAgICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlQ29kZSk6IFNpbmNlIHRoZSBD
b2RlIHNlY3Rpb24gaXMgc3BlY2lhbGx5IGhhbmRsZWQgaW4KKyAgICAgICAgU3RyZWFtaW5nUGFy
c2VyLCB0aGlzIGNvZGUgaXMgbmV2ZXIgdXNlZC4KKyAgICAgICAgKiB3YXNtL1dhc21TdHJlYW1p
bmdQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpTdHJlYW1pbmdQYXJzZXI6OlN0cmVh
bWluZ1BhcnNlcik6CisgICAgICAgIChKU0M6Oldhc206OlN0cmVhbWluZ1BhcnNlcjo6cGFyc2VD
b2RlU2VjdGlvblNpemUpOgorICAgICAgICAoSlNDOjpXYXNtOjpTdHJlYW1pbmdQYXJzZXI6OnBh
cnNlRnVuY3Rpb25QYXlsb2FkKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U3RyZWFtaW5nUGFyc2Vy
OjpwYXJzZVNlY3Rpb25QYXlsb2FkKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U3RyZWFtaW5nUGFy
c2VyOjpmaW5hbGl6ZSk6IENhbGwgY2xpZW50J3MgY2FsbGJhY2tzIGF0IGFwcHJvcHJpYXRlIHRp
bWluZ3MuCisgICAgICAgICogd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmg6CisgICAgICAgIChK
U0M6Oldhc206OlN0cmVhbWluZ1BhcnNlckNsaWVudDo6ZGlkUGFyc2VTZWN0aW9uKToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6U3RyZWFtaW5nUGFyc2VyQ2xpZW50OjpkaWRQYXJzZUZ1bmN0aW9uKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6U3RyZWFtaW5nUGFyc2VyQ2xpZW50OjpkaWRGaW5pc2hQYXJz
aW5nKTogQWRkIFN0cmVhbWluZ1BhcnNlckNsaWVudCwKKyAgICAgICAgd2hpY2ggaGFzIDMgY2Fs
bGJhY2tzIHJpZ2h0IG5vdy4gU3RyZWFtaW5nUGFyc2VyIGdldHMgdGhpcyBjbGllbnQgYW5kIGNh
bGwgdGhlc2UgY2FsbGJhY2tzCisgICAgICAgIGF0IGFwcHJvcHJpYXRlIHRpbWluZ3MuCisgICAg
ICAgICogd2FzbS9XYXNtVmFsaWRhdGUuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp2YWxpZGF0
ZUZ1bmN0aW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21WYWxpZGF0ZS5oOiBVc2UgRnVuY3Rpb25E
YXRhLCBpdCBpcyBnb29kIHNpbmNlIGl0IGlzIG1vcmUgc3Ryb25nbHkgdHlwZWQuCisKIDIwMTgt
MDgtMjcgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KIAogICAg
ICAgICBbV2ViQXNzZW1ibHldIFBhcnNlIHdhc20gbW9kdWxlcyBpbiBhIHN0cmVhbWluZyBmYXNo
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU4OGE3NGFiNzY1MWRjZWJlYmE5
ZGRlMzRiNjQwMTRiM2I4NmI4MTYuLjExMGJkYmMyMzViYWVlM2JhNDI2NGVjOGUxZTc2MDNhNmM2
ZDNlMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDUwLDcgKzEwNTAsNiBA
QAogCQk1M0Y0MEU4QjFENTkwMUJCMDA5OUExQjYgLyogV2FzbUZ1bmN0aW9uUGFyc2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Y0MEU4QTFENTkw
MUJCMDA5OUExQjYgLyogV2FzbUZ1bmN0aW9uUGFyc2VyLmggKi87IH07CiAJCTUzRjQwRThEMUQ1
OTAxRjIwMDk5QTFCNiAvKiBXYXNtUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Y0MEU4QzFENTkwMUYyMDA5OUExQjYgLyogV2FzbVBhcnNl
ci5oICovOyB9OwogCQk1M0Y0MEU5MzFENUE0QUIzMDA5OUExQjYgLyogV2FzbUIzSVJHZW5lcmF0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRjQw
RTkyMUQ1QTRBQjMwMDk5QTFCNiAvKiBXYXNtQjNJUkdlbmVyYXRvci5oICovOyB9OwotCQk1M0Y0
MEU5NTFENUE3QUVGMDA5OUExQjYgLyogV2FzbU1vZHVsZVBhcnNlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGNDBFOTQxRDVBN0FFRjAwOTlBMUI2
IC8qIFdhc21Nb2R1bGVQYXJzZXIuaCAqLzsgfTsKIAkJNTNGNkJGNkQxQzNGMDYwQTAwRjQxRTVE
IC8qIEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGNkJGNkMxQzNGMDYwQTAwRjQxRTVEIC8q
IEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUzRjhEMjAwMUU4Mzg3RDQwMEQyMTExNiAv
KiBXYXNtQkJRUGxhbklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUzRjhEMUZGMUU4Mzg3RDQwMEQyMTExNiAvKiBXYXNtQkJRUGxhbklubGlu
ZXMuaCAqLzsgfTsKIAkJNTNGQTJBRTExQ0YzN0YzRjAwMjI3MTFEIC8qIExMSW50UHJvdG90eXBl
TG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGQTJBRTAxQ0YzN0YzRjAwMjI3MTFEIC8qIExMSW50
UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zNTA5LDggKzM1MDgsNiBAQAog
CQk1M0Y0MEU4QzFENTkwMUYyMDA5OUExQjYgLyogV2FzbVBhcnNlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUzRjQwRThFMUQ1OTAyODIwMDk5QTFCNiAvKiBXYXNtQjNJUkdlbmVyYXRvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtQjNJUkdlbmVyYXRvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRjQwRTkyMUQ1QTRBQjMwMDk5QTFC
NiAvKiBXYXNtQjNJUkdlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXYXNtQjNJUkdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1M0Y0
MEU5NDFENUE3QUVGMDA5OUExQjYgLyogV2FzbU1vZHVsZVBhcnNlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtTW9kdWxlUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTUzRjQwRTk2MUQ1QTdCRUMwMDk5QTFCNiAvKiBXYXNtTW9kdWxlUGFyc2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21Nb2R1bGVQYXJz
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0Y2QkY2QzFDM0YwNjBBMDBG
NDFFNUQgLyogSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0Y4RDFGRjFFODM4N0Q0MDBEMjExMTYg
LyogV2FzbUJCUVBsYW5JbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdhc21CQlFQbGFuSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0ZB
MkFFMDFDRjM3RjNGMDAyMjcxMUQgLyogTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1
cmVXYXRjaHBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExMSW50UHJv
dG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNTUwOCw4ICs1NTA1LDggQEAKIAkJCQk3OTZEQUEyQTFFODlDQ0Q2MDA1
REYyNEEgLyogQ2FsbGVlQml0cy5oICovLAogCQkJCTE0MjlEOERCMEVEMjIwNUIwMEI4OTYxOSAv
KiBDYWxsRnJhbWUuY3BwICovLAogCQkJCTE0MjlEOERDMEVEMjIwNUIwMEI4OTYxOSAvKiBDYWxs
RnJhbWUuaCAqLywKLQkJCQlGRUEzQkJBNzIxMkI2NTU4MDBFOTNBRDEgLyogQ2FsbEZyYW1lSW5s
aW5lcy5oICovLAogCQkJCUE3Rjg2OUVDMEY5NUMyRUMwMDU1ODY5NyAvKiBDYWxsRnJhbWVDbG9z
dXJlLmggKi8sCisJCQkJRkVBM0JCQTcyMTJCNjU1ODAwRTkzQUQxIC8qIENhbGxGcmFtZUlubGlu
ZXMuaCAqLywKIAkJCQkxNDI5RDg1QjBFRDIxOEU5MDBCODk2MTkgLyogQ0xvb3BTdGFjay5jcHAg
Ki8sCiAJCQkJMTRENzkyNjQwREFBMDNGQjAwMUE5RjA1IC8qIENMb29wU3RhY2suaCAqLywKIAkJ
CQlBN0MxRUFFQjE3OTg3QUI2MDAyOTlEQjIgLyogQ0xvb3BTdGFja0lubGluZXMuaCAqLywKQEAg
LTYzNDIsOCArNjMzOSw2IEBACiAJCQkJNzkwMDgxMzcxRTk1QThFQzAwNTJEN0NEIC8qIFdhc21N
b2R1bGUuaCAqLywKIAkJCQk1M0U3NzdFMTFFOTJFMjY1MDA3Q0JFQzQgLyogV2FzbU1vZHVsZUlu
Zm9ybWF0aW9uLmNwcCAqLywKIAkJCQk1M0U3NzdFMjFFOTJFMjY1MDA3Q0JFQzQgLyogV2FzbU1v
ZHVsZUluZm9ybWF0aW9uLmggKi8sCi0JCQkJNTNGNDBFOTYxRDVBN0JFQzAwOTlBMUI2IC8qIFdh
c21Nb2R1bGVQYXJzZXIuY3BwICovLAotCQkJCTUzRjQwRTk0MUQ1QTdBRUYwMDk5QTFCNiAvKiBX
YXNtTW9kdWxlUGFyc2VyLmggKi8sCiAJCQkJQUQ1QjQxNkUxRUJBRkI2NTAwOEVGQTQzIC8qIFdh
c21OYW1lLmggKi8sCiAJCQkJQUQ3QjRCMkQxRkEzRTI4NjAwQzlERjc5IC8qIFdhc21OYW1lU2Vj
dGlvbi5oICovLAogCQkJCUFERDhGQTQ0MUVCMzA3NzEwMERGNTQyRiAvKiBXYXNtTmFtZVNlY3Rp
b25QYXJzZXIuY3BwICovLApAQCAtODQ0NCw3ICs4NDM5LDYgQEAKIAkJCQk5OURBMDBBMzFCRDU5
OTMxMDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdG9yLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTlEQTAwQTQxQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX21vZGVsLnB5IGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTlEQTAwQTUxQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX3RlbXBsYXRlcy5w
eSBpbiBIZWFkZXJzICovLAotCQkJCUZFQTNCQkE4MjEyQjY1NTkwMEU5M0FEMSAvKiBDYWxsRnJh
bWVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MURFQTEzMjFCOUYzMTYzMDA2RDY1REQg
LyogQnVpbHRpblV0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5RTcyOTQwQjE5MEYwNTE0MDAx
QTkxQjUgLyogQnVuZGxlUGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTcxNUVEOEU0
NjAwRjE2N0IyIC8qIEJ1dHRlcmZseS5oIGluIEhlYWRlcnMgKi8sCkBAIC04NDY5LDYgKzg0NjMs
NyBAQAogCQkJCTBGNjRCMjdBMUE3OTU3QjIwMDZFNEU2NiAvKiBDYWxsRWRnZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNzk2REFBMkIxRTg5Q0NENjAwNURGMjRBIC8qIENhbGxlZUJpdHMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE0MjlEOERFMEVEMjIwNUIwMEI4OTYxOSAvKiBDYWxsRnJhbWUuaCBp
biBIZWFkZXJzICovLAorCQkJCUZFQTNCQkE4MjEyQjY1NTkwMEU5M0FEMSAvKiBDYWxsRnJhbWVJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk2MkVDOUJCNzFCN0VCMDdDMDAzMDNBRDEgLyog
Q2FsbEZyYW1lU2h1ZmZsZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTYyRDc1NUQ3MUI4NEZC
NEEwMDE4MDFGQSAvKiBDYWxsRnJhbWVTaHVmZmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYw
QjgzQjExNEJDRjcxODAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCkBA
IC04NzU5LDYgKzg3NTQsNyBAQAogCQkJCUE3MDQ0N0VFMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1w
Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzMThGRTAxQ0FDOTgyRjAwREZDQzU0IC8q
IEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJB
ODM2Mzg2MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlGRTA4NkJDQTIxMjNERUZCMDAzRjI5MjkgLyogRW50cnlGcmFtZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMkFEMkVERkIxOTc5OUUzODAwNEQ2NDc4IC8qIEVudW1lcmF0aW9u
TW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzMDQ2MDcwRTFGNDk3RjAwMzIzMkNGIC8qIEVy
cm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAyRTkwRDBFMTgzOURCMDAwRjkyOTcgLyogRXJy
b3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCkBAIC05MDk1LDcgKzkwOTEsNiBAQAogCQkJ
CTk3ODgwMTQxMTQ3MUFEOTIwMDQxQjAxNiAvKiBKU0RhdGVNYXRoLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDMkE3RjY4ODE2MDQzMkQ0MDBGNzZCOTggLyogSlNEZXN0cnVjdGlibGVPYmplY3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGN0RGMTNDMUUyOTcxMTMwMDk1OTUxQiAvKiBKU0Rlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkUwODZCQ0EyMTIz
REVGQjAwM0YyOTI5IC8qIEVudHJ5RnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzg0RUU2
MUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkUz
QzYxNDE2N0JBQkQ3MDA2RDc2MEEgLyogSlNFeHBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
QjRBQ0FGMTQ4NEM5Q0UwMEIzOEEzNiAvKiBKU0V4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8s
CkBAIC05NjA5LDcgKzk2MDQsNiBAQAogCQkJCUFENUMzNkVGMUY3QTI2M0EwMDBCQ0FBRiAvKiBX
YXNtTWVtb3J5TW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzkwMDgxMzkxRTk1QThFQzAwNTJE
N0NEIC8qIFdhc21Nb2R1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzRTc3N0U0MUU5MkUyNjUw
MDdDQkVDNCAvKiBXYXNtTW9kdWxlSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCTUz
RjQwRTk1MUQ1QTdBRUYwMDk5QTFCNiAvKiBXYXNtTW9kdWxlUGFyc2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBRDVCNDE2RjFFQkFGQjc3MDA4RUZBNDMgLyogV2FzbU5hbWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUFEN0I0QjJFMUZBM0UyOTgwMEM5REY3OSAvKiBXYXNtTmFtZVNlY3Rpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCUFERDhGQTQ2MUVCMzA3OTcwMERGNTQyRiAvKiBXYXNtTmFtZVNl
Y3Rpb25QYXJzZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0Cmlu
ZGV4IGUyYmFmMWE1NzU1ZmM3ZTRmMjNmOWQxNGQ5ZGUzNDkxZjM5MGExOGUuLjM0MDQxYTk1OGI2
ODNlZTYwMWQ4ZTBkZGFlODIxMWZjY2RjNDZmOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50
eHQKQEAgLTk4NSw3ICs5ODUsNiBAQCB3YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5jcHAKIHdh
c20vV2FzbU1lbW9yeU1vZGUuY3BwCiB3YXNtL1dhc21Nb2R1bGUuY3BwCiB3YXNtL1dhc21Nb2R1
bGVJbmZvcm1hdGlvbi5jcHAKLXdhc20vV2FzbU1vZHVsZVBhcnNlci5jcHAKIHdhc20vV2FzbU5h
bWVTZWN0aW9uUGFyc2VyLmNwcAogd2FzbS9XYXNtT01HUGxhbi5jcHAKIHdhc20vV2FzbU9wY29k
ZU9yaWdpbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0Rv
bGxhclZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcApp
bmRleCBlZjI1NTcyNGJjNmExMTIwMDE2YjdmMjJmOTY5ZGJmZmQ5Y2FlMjNmLi4yMmRjZGI3YzEx
NzI5NDcxMmQ1ZmU5ODMyNzlkNTM2ZGRkZDczN2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL0pTRG9sbGFyVk0uY3BwCkBAIC0xMTA1LDEwICsxMTA1LDI1IEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2FzbVN0cmVhbWluZ1BhcnNlckZpbmFs
aXplKEV4ZWNTdGF0CiAKIGNsYXNzIFdhc21TdHJlYW1pbmdQYXJzZXIgOiBwdWJsaWMgSlNEZXN0
cnVjdGlibGVPYmplY3QgewogcHVibGljOgorICAgIGNsYXNzIENsaWVudCBmaW5hbCA6IHB1Ymxp
YyBXYXNtOjpTdHJlYW1pbmdQYXJzZXJDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhw
bGljaXQgQ2xpZW50KFdhc21TdHJlYW1pbmdQYXJzZXIqIHBhcnNlcikKKyAgICAgICAgICAgIDog
bV9wYXJzZXIocGFyc2VyKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGRp
ZFBhcnNlU2VjdGlvbihXYXNtOjpTZWN0aW9uKSBvdmVycmlkZSB7IH0KKyAgICAgICAgdm9pZCBk
aWRQYXJzZUZ1bmN0aW9uKHVuc2lnbmVkLCBjb25zdCBXYXNtOjpGdW5jdGlvbkRhdGEmKSBvdmVy
cmlkZSB7IH0KKyAgICAgICAgdm9pZCBkaWRGaW5pc2hQYXJzaW5nKCkgb3ZlcnJpZGUgeyB9CisK
KyAgICAgICAgV2FzbVN0cmVhbWluZ1BhcnNlciogbV9wYXJzZXI7CisgICAgfTsKKwogICAgIFdh
c21TdHJlYW1pbmdQYXJzZXIoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAg
OiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCiAgICAgICAgICwgbV9pbmZvKFdhc206Ok1vZHVsZUluZm9y
bWF0aW9uOjpjcmVhdGUoKSkKLSAgICAgICAgLCBtX3N0cmVhbWluZ1BhcnNlcihtX2luZm8uZ2V0
KCkpCisgICAgICAgICwgbV9jbGllbnQodGhpcykKKyAgICAgICAgLCBtX3N0cmVhbWluZ1BhcnNl
cihtX2luZm8uZ2V0KCksIG1fY2xpZW50KQogICAgIHsKICAgICB9CiAKQEAgLTExNDEsNiArMTE1
Niw3IEBAIGNsYXNzIFdhc21TdHJlYW1pbmdQYXJzZXIgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVP
YmplY3QgewogICAgIERFQ0xBUkVfSU5GTzsKIAogICAgIFJlZjxXYXNtOjpNb2R1bGVJbmZvcm1h
dGlvbj4gbV9pbmZvOworICAgIENsaWVudCBtX2NsaWVudDsKICAgICBXYXNtOjpTdHJlYW1pbmdQ
YXJzZXIgbV9zdHJlYW1pbmdQYXJzZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggM2U3Y2U2MGFkNzRiMDAyMDQ3NGE4
Njk5M2RhNzZlNzE4MGRjNmYyNC4uZWU1ZjE1OTA0MDM3YTRmNTU0MjU0ZThiY2ZmNmJmNTM1ZWJi
YTFiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJh
dG9yLmNwcApAQCAtMTM4MSw3ICsxMzgxLDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjpvcmlnaW4o
KSAtPiBPcmlnaW4KICAgICByZXR1cm4gYml0d2lzZV9jYXN0PE9yaWdpbj4ob3JpZ2luKTsKIH0K
IAotRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPEludGVybmFsRnVuY3Rpb24+LCBTdHJpbmc+IHBh
cnNlQW5kQ29tcGlsZShDb21waWxhdGlvbkNvbnRleHQmIGNvbXBpbGF0aW9uQ29udGV4dCwgY29u
c3QgdWludDhfdCogZnVuY3Rpb25TdGFydCwgc2l6ZV90IGZ1bmN0aW9uTGVuZ3RoLCBjb25zdCBT
aWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiB1bmxp
bmtlZFdhc21Ub1dhc21DYWxscywgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIE1lbW9y
eU1vZGUgbW9kZSwgQ29tcGlsYXRpb25Nb2RlIGNvbXBpbGF0aW9uTW9kZSwgdWludDMyX3QgZnVu
Y3Rpb25JbmRleCwgVGllclVwQ291bnQqIHRpZXJVcCwgVGhyb3dXYXNtRXhjZXB0aW9uIHRocm93
V2FzbUV4Y2VwdGlvbikKK0V4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9u
PiwgU3RyaW5nPiBwYXJzZUFuZENvbXBpbGUoQ29tcGlsYXRpb25Db250ZXh0JiBjb21waWxhdGlv
bkNvbnRleHQsIGNvbnN0IEZ1bmN0aW9uRGF0YSYgZnVuY3Rpb24sIGNvbnN0IFNpZ25hdHVyZSYg
c2lnbmF0dXJlLCBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mIHVubGlua2VkV2FzbVRv
V2FzbUNhbGxzLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgTWVtb3J5TW9kZSBtb2Rl
LCBDb21waWxhdGlvbk1vZGUgY29tcGlsYXRpb25Nb2RlLCB1aW50MzJfdCBmdW5jdGlvbkluZGV4
LCBUaWVyVXBDb3VudCogdGllclVwLCBUaHJvd1dhc21FeGNlcHRpb24gdGhyb3dXYXNtRXhjZXB0
aW9uKQogewogICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnRlcm5hbEZ1bmN0
aW9uPigpOwogCkBAIC0xNDA2LDcgKzE0MDYsNyBAQCBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8
SW50ZXJuYWxGdW5jdGlvbj4sIFN0cmluZz4gcGFyc2VBbmRDb21waWxlKENvbXBpbGF0aW9uQwog
ICAgICAgICA6IE9wdGlvbnM6OndlYkFzc2VtYmx5T01HT3B0aW1pemF0aW9uTGV2ZWwoKSk7CiAK
ICAgICBCM0lSR2VuZXJhdG9yIGlyR2VuZXJhdG9yKGluZm8sIHByb2NlZHVyZSwgcmVzdWx0Lmdl
dCgpLCB1bmxpbmtlZFdhc21Ub1dhc21DYWxscywgbW9kZSwgY29tcGlsYXRpb25Nb2RlLCBmdW5j
dGlvbkluZGV4LCB0aWVyVXAsIHRocm93V2FzbUV4Y2VwdGlvbik7Ci0gICAgRnVuY3Rpb25QYXJz
ZXI8QjNJUkdlbmVyYXRvcj4gcGFyc2VyKGlyR2VuZXJhdG9yLCBmdW5jdGlvblN0YXJ0LCBmdW5j
dGlvbkxlbmd0aCwgc2lnbmF0dXJlLCBpbmZvKTsKKyAgICBGdW5jdGlvblBhcnNlcjxCM0lSR2Vu
ZXJhdG9yPiBwYXJzZXIoaXJHZW5lcmF0b3IsIGZ1bmN0aW9uLmRhdGEuZGF0YSgpLCBmdW5jdGlv
bi5kYXRhLnNpemUoKSwgc2lnbmF0dXJlLCBpbmZvKTsKICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVS
X0ZBSUxTKHBhcnNlci5wYXJzZSgpKTsKIAogICAgIGlyR2VuZXJhdG9yLmluc2VydENvbnN0YW50
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5l
cmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmgK
aW5kZXggOTMxZjUyN2NiN2E1MmUzOTRkNzAzZmNmMjk5NWU2YmQ3NjlhMDc4Yi4uOWNiYzA0NmUw
MDc1ZTk0YThhZWZmZDM4OTBkMDFhYWUxMjczOTM1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5oCkBAIC01NSw3ICs1NSw3IEBAIHN0cnVjdCBD
b21waWxhdGlvbkNvbnRleHQgewogICAgIHN0ZDo6dW5pcXVlX3B0cjxCMzo6T3BhcXVlQnlwcm9k
dWN0cz4gd2FzbUVudHJ5cG9pbnRCeXByb2R1Y3RzOwogfTsKIAotRXhwZWN0ZWQ8c3RkOjp1bmlx
dWVfcHRyPEludGVybmFsRnVuY3Rpb24+LCBTdHJpbmc+IHBhcnNlQW5kQ29tcGlsZShDb21waWxh
dGlvbkNvbnRleHQmLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBjb25zdCBTaWduYXR1cmUmLCBW
ZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYs
IE1lbW9yeU1vZGUsIENvbXBpbGF0aW9uTW9kZSwgdWludDMyX3QgZnVuY3Rpb25JbmRleCwgVGll
clVwQ291bnQqID0gbnVsbHB0ciwgVGhyb3dXYXNtRXhjZXB0aW9uID0gbnVsbHB0cik7CitFeHBl
Y3RlZDxzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4sIFN0cmluZz4gcGFyc2VBbmRD
b21waWxlKENvbXBpbGF0aW9uQ29udGV4dCYsIGNvbnN0IEZ1bmN0aW9uRGF0YSYsIGNvbnN0IFNp
Z25hdHVyZSYsIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYsIGNvbnN0IE1vZHVsZUlu
Zm9ybWF0aW9uJiwgTWVtb3J5TW9kZSwgQ29tcGlsYXRpb25Nb2RlLCB1aW50MzJfdCBmdW5jdGlv
bkluZGV4LCBUaWVyVXBDb3VudCogPSBudWxscHRyLCBUaHJvd1dhc21FeGNlcHRpb24gPSBudWxs
cHRyKTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCmluZGV4IDQzYzhmNTYyYWZhMWMzNjMzYTdlNmM2MWY0
MDkyMmVjMGJlOTcyMTMuLmVlNTU1OWE2MzFkZmQ2ZTNjZTI4MmQ0OTE1MTZmNzk1NjhjMmQ2NzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKQEAgLTM1LDcg
KzM1LDYgQEAKICNpbmNsdWRlICJXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCIKICNpbmNsdWRlICJX
YXNtRmF1bHRTaWduYWxIYW5kbGVyLmgiCiAjaW5jbHVkZSAiV2FzbU1lbW9yeS5oIgotI2luY2x1
ZGUgIldhc21Nb2R1bGVQYXJzZXIuaCIKICNpbmNsdWRlICJXYXNtVGllclVwQ291bnQuaCIKICNp
bmNsdWRlICJXYXNtVmFsaWRhdGUuaCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgpAQCAtNTMs
NiArNTIsNyBAQCBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAKIEJCUVBsYW46
OkJCUVBsYW4oQ29udGV4dCogY29udGV4dCwgUmVmPE1vZHVsZUluZm9ybWF0aW9uPiBpbmZvLCBB
c3luY1dvcmsgd29yaywgQ29tcGxldGlvblRhc2smJiB0YXNrLCBDcmVhdGVFbWJlZGRlcldyYXBw
ZXImJiBjcmVhdGVFbWJlZGRlcldyYXBwZXIsIFRocm93V2FzbUV4Y2VwdGlvbiB0aHJvd1dhc21F
eGNlcHRpb24pCiAgICAgOiBCYXNlKGNvbnRleHQsIFdURk1vdmUoaW5mbyksIFdURk1vdmUodGFz
ayksIFdURk1vdmUoY3JlYXRlRW1iZWRkZXJXcmFwcGVyKSwgdGhyb3dXYXNtRXhjZXB0aW9uKQor
ICAgICwgbV9zdHJlYW1pbmdQYXJzZXIobV9tb2R1bGVJbmZvcm1hdGlvbi5nZXQoKSwgKnRoaXMp
CiAgICAgLCBtX3N0YXRlKFN0YXRlOjpWYWxpZGF0ZWQpCiAgICAgLCBtX2FzeW5jV29yayh3b3Jr
KQogewpAQCAtNjEsNiArNjEsNyBAQCBCQlFQbGFuOjpCQlFQbGFuKENvbnRleHQqIGNvbnRleHQs
IFJlZjxNb2R1bGVJbmZvcm1hdGlvbj4gaW5mbywgQXN5bmNXb3JrIHdvcmssCiBCQlFQbGFuOjpC
QlFQbGFuKENvbnRleHQqIGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PiYmIHNvdXJjZSwgQXN5bmNX
b3JrIHdvcmssIENvbXBsZXRpb25UYXNrJiYgdGFzaywgQ3JlYXRlRW1iZWRkZXJXcmFwcGVyJiYg
Y3JlYXRlRW1iZWRkZXJXcmFwcGVyLCBUaHJvd1dhc21FeGNlcHRpb24gdGhyb3dXYXNtRXhjZXB0
aW9uKQogICAgIDogQmFzZShjb250ZXh0LCBNb2R1bGVJbmZvcm1hdGlvbjo6Y3JlYXRlKCksIFdU
Rk1vdmUodGFzayksIFdURk1vdmUoY3JlYXRlRW1iZWRkZXJXcmFwcGVyKSwgdGhyb3dXYXNtRXhj
ZXB0aW9uKQogICAgICwgbV9zb3VyY2UoV1RGTW92ZShzb3VyY2UpKQorICAgICwgbV9zdHJlYW1p
bmdQYXJzZXIobV9tb2R1bGVJbmZvcm1hdGlvbi5nZXQoKSwgKnRoaXMpCiAgICAgLCBtX3N0YXRl
KFN0YXRlOjpJbml0aWFsKQogICAgICwgbV9hc3luY1dvcmsod29yaykKIHsKQEAgLTY4LDYgKzY5
LDcgQEAgQkJRUGxhbjo6QkJRUGxhbihDb250ZXh0KiBjb250ZXh0LCBWZWN0b3I8dWludDhfdD4m
JiBzb3VyY2UsIEFzeW5jV29yayB3b3JrLCBDb20KIAogQkJRUGxhbjo6QkJRUGxhbihDb250ZXh0
KiBjb250ZXh0LCBBc3luY1dvcmsgd29yaywgQ29tcGxldGlvblRhc2smJiB0YXNrKQogICAgIDog
QmFzZShjb250ZXh0LCBXVEZNb3ZlKHRhc2spKQorICAgICwgbV9zdHJlYW1pbmdQYXJzZXIobV9t
b2R1bGVJbmZvcm1hdGlvbi5nZXQoKSwgKnRoaXMpCiAgICAgLCBtX3N0YXRlKFN0YXRlOjpJbml0
aWFsKQogICAgICwgbV9hc3luY1dvcmsod29yaykKIHsKQEAgLTkyLDYgKzk0LDI2IEBAIHZvaWQg
QkJRUGxhbjo6bW92ZVRvU3RhdGUoU3RhdGUgc3RhdGUpCiAgICAgbV9zdGF0ZSA9IHN0YXRlOwog
fQogCit2b2lkIEJCUVBsYW46OmRpZFBhcnNlRnVuY3Rpb24odW5zaWduZWQgZnVuY3Rpb25JbmRl
eCwgY29uc3QgRnVuY3Rpb25EYXRhJiBmdW5jdGlvbikKK3sKKyAgICBkYXRhTG9nTG5JZihXYXNt
QkJRUGxhbkludGVybmFsOjp2ZXJib3NlLCAiUHJvY2Vzc2luZyBmdW5jdGlvbiBzdGFydGluZyBh
dDogIiwgZnVuY3Rpb24uc3RhcnQsICIgYW5kIGVuZGluZyBhdDogIiwgZnVuY3Rpb24uZW5kKTsK
KyAgICBzaXplX3QgZnVuY3Rpb25MZW5ndGggPSBmdW5jdGlvbi5lbmQgLSBmdW5jdGlvbi5zdGFy
dDsKKyAgICBBU1NFUlQoZnVuY3Rpb25MZW5ndGggPD0gc291cmNlTGVuZ3RoKTsKKyAgICBBU1NF
UlQoZnVuY3Rpb25MZW5ndGggPT0gZnVuY3Rpb24uZGF0YS5zaXplKCkpOworICAgIFNpZ25hdHVy
ZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5j
dGlvblNpZ25hdHVyZUluZGljZXNbZnVuY3Rpb25JbmRleF07CisgICAgY29uc3QgU2lnbmF0dXJl
JiBzaWduYXR1cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsK
KworICAgIGF1dG8gdmFsaWRhdGlvblJlc3VsdCA9IHZhbGlkYXRlRnVuY3Rpb24oZnVuY3Rpb24s
IHNpZ25hdHVyZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi5nZXQoKSk7CisgICAgaWYgKCF2YWxpZGF0
aW9uUmVzdWx0KSB7CisgICAgICAgIGlmIChXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3NlKSB7
CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZnVuY3Rpb25MZW5ndGg7ICsr
aSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKFJhd1BvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oZnVuY3Rpb24uZGF0YVtpXSkpLCAiLCAiKTsKKyAgICAgICAgICAgIGRhdGFMb2dMbigp
OworICAgICAgICB9CisgICAgICAgIGZhaWwoaG9sZExvY2sobV9sb2NrKSwgbWFrZVN0cmluZyh2
YWxpZGF0aW9uUmVzdWx0LmVycm9yKCksICIsIGluIGZ1bmN0aW9uIGF0IGluZGV4ICIsIFN0cmlu
Zzo6bnVtYmVyKGZ1bmN0aW9uSW5kZXgpKSk7IC8vIEZJWE1FIG1ha2UgdGhpcyBhbiBFeHBlY3Rl
ZC4KKyAgICB9Cit9CisKIGJvb2wgQkJRUGxhbjo6cGFyc2VBbmRWYWxpZGF0ZU1vZHVsZShjb25z
dCB1aW50OF90KiBzb3VyY2UsIHNpemVfdCBzb3VyY2VMZW5ndGgpCiB7CiAgICAgaWYgKG1fc3Rh
dGUgIT0gU3RhdGU6OkluaXRpYWwpCkBAIC0xMDIsMzcgKzEyNCwxNiBAQCBib29sIEJCUVBsYW46
OnBhcnNlQW5kVmFsaWRhdGVNb2R1bGUoY29uc3QgdWludDhfdCogc291cmNlLCBzaXplX3Qgc291
cmNlTGVuZ3RoKQogICAgIGlmIChXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3NlIHx8IE9wdGlv
bnM6OnJlcG9ydENvbXBpbGVUaW1lcygpKQogICAgICAgICBzdGFydFRpbWUgPSBNb25vdG9uaWNU
aW1lOjpub3coKTsKIAotICAgIHsKLSAgICAgICAgTW9kdWxlUGFyc2VyIG1vZHVsZVBhcnNlcihz
b3VyY2UsIHNvdXJjZUxlbmd0aCwgbV9tb2R1bGVJbmZvcm1hdGlvbik7Ci0gICAgICAgIGF1dG8g
cGFyc2VSZXN1bHQgPSBtb2R1bGVQYXJzZXIucGFyc2UoKTsKLSAgICAgICAgaWYgKCFwYXJzZVJl
c3VsdCkgewotICAgICAgICAgICAgQmFzZTo6ZmFpbChob2xkTG9jayhtX2xvY2spLCBXVEZNb3Zl
KHBhcnNlUmVzdWx0LmVycm9yKCkpKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgfQorICAgIG1fc3RyZWFtaW5nUGFyc2VyLmFkZEJ5dGVzKHNvdXJjZSwgc291cmNlTGVuZ3Ro
KTsKKyAgICBpZiAobV9zdHJlYW1pbmdQYXJzZXIuZmluYWxpemUoKSAhPSBTdHJlYW1pbmdQYXJz
ZXI6OlN0YXRlOjpGaW5pc2hlZCkgeworICAgICAgICBmYWlsKGhvbGRMb2NrKG1fbG9jayksIFN0
cmluZyhtX3N0cmVhbWluZ1BhcnNlci5lcnJvck1lc3NhZ2UoKSkpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQotCi0gICAgY29uc3QgYXV0byYgZnVuY3Rpb25zID0gbV9tb2R1bGVJbmZv
cm1hdGlvbi0+ZnVuY3Rpb25zOwotICAgIGZvciAodW5zaWduZWQgZnVuY3Rpb25JbmRleCA9IDA7
IGZ1bmN0aW9uSW5kZXggPCBmdW5jdGlvbnMuc2l6ZSgpOyArK2Z1bmN0aW9uSW5kZXgpIHsKLSAg
ICAgICAgY29uc3QgYXV0byYgZnVuY3Rpb24gPSBmdW5jdGlvbnNbZnVuY3Rpb25JbmRleF07Ci0g
ICAgICAgIGRhdGFMb2dMbklmKFdhc21CQlFQbGFuSW50ZXJuYWw6OnZlcmJvc2UsICJQcm9jZXNz
aW5nIGZ1bmN0aW9uIHN0YXJ0aW5nIGF0OiAiLCBmdW5jdGlvbi5zdGFydCwgIiBhbmQgZW5kaW5n
IGF0OiAiLCBmdW5jdGlvbi5lbmQpOwotICAgICAgICBzaXplX3QgZnVuY3Rpb25MZW5ndGggPSBm
dW5jdGlvbi5lbmQgLSBmdW5jdGlvbi5zdGFydDsKLSAgICAgICAgQVNTRVJUKGZ1bmN0aW9uTGVu
Z3RoIDw9IHNvdXJjZUxlbmd0aCk7Ci0gICAgICAgIEFTU0VSVChmdW5jdGlvbkxlbmd0aCA9PSBm
dW5jdGlvbi5kYXRhLnNpemUoKSk7Ci0gICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUlu
ZGV4ID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGlj
ZXNbZnVuY3Rpb25JbmRleF07Ci0gICAgICAgIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlID0g
U2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChzaWduYXR1cmVJbmRleCk7Ci0KLSAgICAgICAgYXV0
byB2YWxpZGF0aW9uUmVzdWx0ID0gdmFsaWRhdGVGdW5jdGlvbihmdW5jdGlvbi5kYXRhLmRhdGEo
KSwgZnVuY3Rpb24uZGF0YS5zaXplKCksIHNpZ25hdHVyZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi5n
ZXQoKSk7Ci0gICAgICAgIGlmICghdmFsaWRhdGlvblJlc3VsdCkgewotICAgICAgICAgICAgaWYg
KFdhc21CQlFQbGFuSW50ZXJuYWw6OnZlcmJvc2UpIHsKLSAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgZnVuY3Rpb25MZW5ndGg7ICsraSkKLSAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZyhSYXdQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGZ1bmN0aW9uLmRh
dGFbaV0pKSwgIiwgIik7Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBCYXNlOjpmYWlsKGhvbGRMb2NrKG1fbG9jayksIG1ha2VTdHJpbmco
dmFsaWRhdGlvblJlc3VsdC5lcnJvcigpLCAiLCBpbiBmdW5jdGlvbiBhdCBpbmRleCAiLCBTdHJp
bmc6Om51bWJlcihmdW5jdGlvbkluZGV4KSkpOyAvLyBGSVhNRSBtYWtlIHRoaXMgYW4gRXhwZWN0
ZWQuCisgICAgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CisgICAg
ICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQog
ICAgIH0KLQogICAgIGlmIChXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3NlIHx8IE9wdGlvbnM6
OnJlcG9ydENvbXBpbGVUaW1lcygpKQogICAgICAgICBkYXRhTG9nTG4oIlRvb2sgIiwgKE1vbm90
b25pY1RpbWU6Om5vdygpIC0gc3RhcnRUaW1lKS5taWNyb3NlY29uZHMoKSwgIiB1cyB0byB2YWxp
ZGF0ZSBtb2R1bGUiKTsKIApAQCAtMjY2LDE4ICsyNjcsMTUgQEAgdm9pZCBCQlFQbGFuOjpjb21w
aWxlRnVuY3Rpb25zKENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAgICAgICAgY29uc3QgU2ln
bmF0dXJlJiBzaWduYXR1cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVyZUlu
ZGV4KTsKICAgICAgICAgdW5zaWduZWQgZnVuY3Rpb25JbmRleFNwYWNlID0gbV93YXNtVG9XYXNt
RXhpdFN0dWJzLnNpemUoKSArIGZ1bmN0aW9uSW5kZXg7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQo
ZnVuY3Rpb25JbmRleFNwYWNlLCBtX21vZHVsZUluZm9ybWF0aW9uLT5zaWduYXR1cmVJbmRleEZy
b21GdW5jdGlvbkluZGV4U3BhY2UoZnVuY3Rpb25JbmRleFNwYWNlKSA9PSBzaWduYXR1cmVJbmRl
eCk7Ci0gICAgICAgIEFTU0VSVCh2YWxpZGF0ZUZ1bmN0aW9uKGZ1bmN0aW9uLmRhdGEuZGF0YSgp
LCBmdW5jdGlvbi5kYXRhLnNpemUoKSwgc2lnbmF0dXJlLCBtX21vZHVsZUluZm9ybWF0aW9uLmdl
dCgpKSk7CisgICAgICAgIEFTU0VSVCh2YWxpZGF0ZUZ1bmN0aW9uKGZ1bmN0aW9uLCBzaWduYXR1
cmUsIG1fbW9kdWxlSW5mb3JtYXRpb24uZ2V0KCkpKTsKIAogICAgICAgICBtX3VubGlua2VkV2Fz
bVRvV2FzbUNhbGxzW2Z1bmN0aW9uSW5kZXhdID0gVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNh
bGw+KCk7CiAgICAgICAgIFRpZXJVcENvdW50KiB0aWVyVXAgPSBPcHRpb25zOjp1c2VCQlFUaWVy
VXBDaGVja3MoKSA/ICZtX3RpZXJVcENvdW50c1tmdW5jdGlvbkluZGV4XSA6IG51bGxwdHI7Ci0g
ICAgICAgIGF1dG8gcGFyc2VBbmRDb21waWxlUmVzdWx0ID0gcGFyc2VBbmRDb21waWxlKG1fY29t
cGlsYXRpb25Db250ZXh0c1tmdW5jdGlvbkluZGV4XSwgZnVuY3Rpb24uZGF0YS5kYXRhKCksIGZ1
bmN0aW9uLmRhdGEuc2l6ZSgpLCBzaWduYXR1cmUsIG1fdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHNb
ZnVuY3Rpb25JbmRleF0sIG1fbW9kdWxlSW5mb3JtYXRpb24uZ2V0KCksIG1fbW9kZSwgQ29tcGls
YXRpb25Nb2RlOjpCQlFNb2RlLCBmdW5jdGlvbkluZGV4LCB0aWVyVXAsIG1fdGhyb3dXYXNtRXhj
ZXB0aW9uKTsKKyAgICAgICAgYXV0byBwYXJzZUFuZENvbXBpbGVSZXN1bHQgPSBwYXJzZUFuZENv
bXBpbGUobV9jb21waWxhdGlvbkNvbnRleHRzW2Z1bmN0aW9uSW5kZXhdLCBmdW5jdGlvbiwgc2ln
bmF0dXJlLCBtX3VubGlua2VkV2FzbVRvV2FzbUNhbGxzW2Z1bmN0aW9uSW5kZXhdLCBtX21vZHVs
ZUluZm9ybWF0aW9uLmdldCgpLCBtX21vZGUsIENvbXBpbGF0aW9uTW9kZTo6QkJRTW9kZSwgZnVu
Y3Rpb25JbmRleCwgdGllclVwLCBtX3Rocm93V2FzbUV4Y2VwdGlvbik7CiAKICAgICAgICAgaWYg
KFVOTElLRUxZKCFwYXJzZUFuZENvbXBpbGVSZXN1bHQpKSB7CiAgICAgICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fbG9jayk7Ci0gICAgICAgICAgICBpZiAoIW1fZXJyb3JNZXNzYWdl
KSB7Ci0gICAgICAgICAgICAgICAgLy8gTXVsdGlwbGUgY29tcGlsZXMgY291bGQgZmFpbCBzaW11
bHRhbmVvdXNseS4gV2UgYXJiaXRyYXJpbHkgY2hvb3NlIHRoZSBmaXJzdC4KLSAgICAgICAgICAg
ICAgICBmYWlsKGxvY2tlciwgbWFrZVN0cmluZyhwYXJzZUFuZENvbXBpbGVSZXN1bHQuZXJyb3Io
KSwgIiwgaW4gZnVuY3Rpb24gYXQgaW5kZXggIiwgU3RyaW5nOjpudW1iZXIoZnVuY3Rpb25JbmRl
eCkpKTsgLy8gRklYTUUgbWFrZSB0aGlzIGFuIEV4cGVjdGVkLgotICAgICAgICAgICAgfQorICAg
ICAgICAgICAgZmFpbChsb2NrZXIsIG1ha2VTdHJpbmcocGFyc2VBbmRDb21waWxlUmVzdWx0LmVy
cm9yKCksICIsIGluIGZ1bmN0aW9uIGF0IGluZGV4ICIsIFN0cmluZzo6bnVtYmVyKGZ1bmN0aW9u
SW5kZXgpKSk7IC8vIEZJWE1FIG1ha2UgdGhpcyBhbiBFeHBlY3RlZC4KICAgICAgICAgICAgIG1f
Y3VycmVudEluZGV4ID0gZnVuY3Rpb25zLnNpemUoKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQpAQCAtMzA3LDcgKzMwNSw3IEBAIHZvaWQgQkJRUGxhbjo6Y29tcGxldGUoY29uc3Qg
QWJzdHJhY3RMb2NrZXImIGxvY2tlcikKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBM
aW5rQnVmZmVyIGxpbmtCdWZmZXIoKmNvbnRleHQud2FzbUVudHJ5cG9pbnRKSVQsIG51bGxwdHIs
IEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGxp
bmtCdWZmZXIuZGlkRmFpbFRvQWxsb2NhdGUoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgQmFz
ZTo6ZmFpbChsb2NrZXIsIG1ha2VTdHJpbmcoIk91dCBvZiBleGVjdXRhYmxlIG1lbW9yeSBpbiBm
dW5jdGlvbiBhdCBpbmRleCAiLCBTdHJpbmc6Om51bWJlcihmdW5jdGlvbkluZGV4KSkpOworICAg
ICAgICAgICAgICAgICAgICBmYWlsKGxvY2tlciwgbWFrZVN0cmluZygiT3V0IG9mIGV4ZWN1dGFi
bGUgbWVtb3J5IGluIGZ1bmN0aW9uIGF0IGluZGV4ICIsIFN0cmluZzo6bnVtYmVyKGZ1bmN0aW9u
SW5kZXgpKSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9
CiAKQEAgLTMxOSw3ICszMTcsNyBAQCB2b2lkIEJCUVBsYW46OmNvbXBsZXRlKGNvbnN0IEFic3Ry
YWN0TG9ja2VyJiBsb2NrZXIpCiAgICAgICAgICAgICBpZiAoYXV0byBlbWJlZGRlclRvV2FzbUlu
dGVybmFsRnVuY3Rpb24gPSBtX2VtYmVkZGVyVG9XYXNtSW50ZXJuYWxGdW5jdGlvbnMuZ2V0KGZ1
bmN0aW9uSW5kZXgpKSB7CiAgICAgICAgICAgICAgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKCpj
b250ZXh0LmVtYmVkZGVyRW50cnlwb2ludEpJVCwgbnVsbHB0ciwgSklUQ29tcGlsYXRpb25DYW5G
YWlsKTsKICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkobGlua0J1ZmZlci5kaWRGYWlsVG9B
bGxvY2F0ZSgpKSkgewotICAgICAgICAgICAgICAgICAgICBCYXNlOjpmYWlsKGxvY2tlciwgbWFr
ZVN0cmluZygiT3V0IG9mIGV4ZWN1dGFibGUgbWVtb3J5IGluIGZ1bmN0aW9uIGVudHJ5cG9pbnQg
YXQgaW5kZXggIiwgU3RyaW5nOjpudW1iZXIoZnVuY3Rpb25JbmRleCkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZmFpbChsb2NrZXIsIG1ha2VTdHJpbmcoIk91dCBvZiBleGVjdXRhYmxlIG1lbW9y
eSBpbiBmdW5jdGlvbiBlbnRyeXBvaW50IGF0IGluZGV4ICIsIFN0cmluZzo6bnVtYmVyKGZ1bmN0
aW9uSW5kZXgpKSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFu
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5oCmluZGV4IDk0MWFj
NzVmNzBlNmY5MTFiOWZiYjNkZGIxMzc4Y2NmOTY5OTQxYWQuLmI0MDE2MjE0NmY3MzFmMzg5OWUz
NzBlOWE3Yjg3NzUzZTAwMDMzMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21CQlFQbGFuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJC
UVBsYW4uaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIldhc21CM0lSR2VuZXJhdG9yLmgi
CiAjaW5jbHVkZSAiV2FzbU1vZHVsZUluZm9ybWF0aW9uLmgiCiAjaW5jbHVkZSAiV2FzbVBsYW4u
aCIKKyNpbmNsdWRlICJXYXNtU3RyZWFtaW5nUGFyc2VyLmgiCiAjaW5jbHVkZSAiV2FzbVRpZXJV
cENvdW50LmgiCiAjaW5jbHVkZSA8d3RmL0JhZy5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5o
PgpAQCAtNDQsNyArNDUsNyBAQCBjbGFzcyBDYWxsTGlua0luZm87CiAKIG5hbWVzcGFjZSBXYXNt
IHsKIAotY2xhc3MgQkJRUGxhbiBmaW5hbCA6IHB1YmxpYyBQbGFuIHsKK2NsYXNzIEJCUVBsYW4g
ZmluYWwgOiBwdWJsaWMgUGxhbiwgcHVibGljIFN0cmVhbWluZ1BhcnNlckNsaWVudCB7CiBwdWJs
aWM6CiAgICAgdXNpbmcgQmFzZSA9IFBsYW47CiAgICAgZW51bSBBc3luY1dvcmsgOiB1aW50OF90
IHsgRnVsbENvbXBpbGUsIFZhbGlkYXRpb24gfTsKQEAgLTEyNyw2ICsxMjgsOCBAQCBjbGFzcyBC
QlFQbGFuIGZpbmFsIDogcHVibGljIFBsYW4gewogICAgIGJvb2wgaGFzQmVlblByZXBhcmVkKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0ZSA+PSBTdGF0ZTo6UHJlcGFyZWQ7IH0KICAgICBib29sIG11
bHRpVGhyZWFkZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBoYXNCZWVuUHJlcGFyZWQoKTsg
fQogCisgICAgdm9pZCBkaWRQYXJzZUZ1bmN0aW9uKHVuc2lnbmVkLCBjb25zdCBGdW5jdGlvbkRh
dGEmKSBvdmVycmlkZTsKKwogcHJpdmF0ZToKICAgICBjbGFzcyBUaHJlYWRDb3VudEhvbGRlcjsK
ICAgICBmcmllbmQgY2xhc3MgVGhyZWFkQ291bnRIb2xkZXI7CkBAIC0xNDksNiArMTUyLDcgQEAg
Y2xhc3MgQkJRUGxhbiBmaW5hbCA6IHB1YmxpYyBQbGFuIHsKICAgICBWZWN0b3I8VGllclVwQ291
bnQ+IG1fdGllclVwQ291bnRzOwogCiAgICAgVmVjdG9yPFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dh
c21DYWxsPj4gbV91bmxpbmtlZFdhc21Ub1dhc21DYWxsczsKKyAgICBTdHJlYW1pbmdQYXJzZXIg
bV9zdHJlYW1pbmdQYXJzZXI7CiAgICAgU3RhdGUgbV9zdGF0ZTsKIAogICAgIGNvbnN0IEFzeW5j
V29yayBtX2FzeW5jV29yazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21Nb2R1bGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1v
ZHVsZVBhcnNlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyNWRiYTYzMTM4
YzI1YTVlYWJlNmFiMjIyYTNmYjRiNGRjMTkxYmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVs
ZVBhcnNlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIldhc21Nb2R1bGVQYXJzZXIuaCIKLQotI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKLQotI2luY2x1ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCi0jaW5jbHVkZSAiV2FzbU1lbW9y
eUluZm9ybWF0aW9uLmgiCi0jaW5jbHVkZSAiV2FzbU5hbWVTZWN0aW9uUGFyc2VyLmgiCi0jaW5j
bHVkZSAiV2FzbU9wcy5oIgotI2luY2x1ZGUgIldhc21TZWN0aW9uUGFyc2VyLmgiCi0jaW5jbHVk
ZSAiV2FzbVNlY3Rpb25zLmgiCi0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7Ci0K
LWF1dG8gTW9kdWxlUGFyc2VyOjpwYXJzZSgpIC0+IFJlc3VsdAotewotICAgIGNvbnN0IHNpemVf
dCBtaW5TaXplID0gODsKLSAgICB1aW50MzJfdCB2ZXJzaW9uTnVtYmVyOwotCi0gICAgV0FTTV9Q
QVJTRVJfRkFJTF9JRihsZW5ndGgoKSA8IG1pblNpemUsICJleHBlY3RlZCBhIG1vZHVsZSBvZiBh
dCBsZWFzdCAiLCBtaW5TaXplLCAiIGJ5dGVzIik7Ci0gICAgV0FTTV9QQVJTRVJfRkFJTF9JRihs
ZW5ndGgoKSA+IG1heE1vZHVsZVNpemUsICJtb2R1bGUgc2l6ZSAiLCBsZW5ndGgoKSwgIiBpcyB0
b28gbGFyZ2UsIG1heGltdW0gIiwgbWF4TW9kdWxlU2l6ZSk7Ci0gICAgV0FTTV9QQVJTRVJfRkFJ
TF9JRighY29uc3VtZUNoYXJhY3RlcigwKSB8fCAhY29uc3VtZVN0cmluZygiYXNtIiksICJtb2R1
bGVzIGRvZXNuJ3Qgc3RhcnQgd2l0aCAnXFwwYXNtJyIpOwotICAgIFdBU01fUEFSU0VSX0ZBSUxf
SUYoIXBhcnNlVUludDMyKHZlcnNpb25OdW1iZXIpLCAiY2FuJ3QgcGFyc2UgdmVyc2lvbiBudW1i
ZXIiKTsKLSAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHZlcnNpb25OdW1iZXIgIT0gZXhwZWN0ZWRW
ZXJzaW9uTnVtYmVyLCAidW5leHBlY3RlZCB2ZXJzaW9uIG51bWJlciAiLCB2ZXJzaW9uTnVtYmVy
LCAiIGV4cGVjdGVkICIsIGV4cGVjdGVkVmVyc2lvbk51bWJlcik7Ci0KLSAgICAvLyBUaGlzIGlz
IG5vdCByZWFsbHkgYSBrbm93biBzZWN0aW9uLgotICAgIFNlY3Rpb24gcHJldmlvdXNLbm93blNl
Y3Rpb24gPSBTZWN0aW9uOjpCZWdpbjsKLSAgICB3aGlsZSAobV9vZmZzZXQgPCBsZW5ndGgoKSkg
ewotICAgICAgICB1aW50OF90IHNlY3Rpb25CeXRlOwotCi0gICAgICAgIFdBU01fUEFSU0VSX0ZB
SUxfSUYoIXBhcnNlVUludDcoc2VjdGlvbkJ5dGUpLCAiY2FuJ3QgZ2V0IHNlY3Rpb24gYnl0ZSIp
OwotCi0gICAgICAgIFNlY3Rpb24gc2VjdGlvbiA9IFNlY3Rpb246OkN1c3RvbTsKLSAgICAgICAg
V0FTTV9QQVJTRVJfRkFJTF9JRighZGVjb2RlU2VjdGlvbihzZWN0aW9uQnl0ZSwgc2VjdGlvbikp
OwotICAgICAgICBBU1NFUlQoc2VjdGlvbiAhPSBTZWN0aW9uOjpCZWdpbik7Ci0KLSAgICAgICAg
dWludDMyX3Qgc2VjdGlvbkxlbmd0aDsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighdmFs
aWRhdGVPcmRlcihwcmV2aW91c0tub3duU2VjdGlvbiwgc2VjdGlvbiksICJpbnZhbGlkIHNlY3Rp
b24gb3JkZXIsICIsIHByZXZpb3VzS25vd25TZWN0aW9uLCAiIGZvbGxvd2VkIGJ5ICIsIHNlY3Rp
b24pOwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihzZWN0aW9u
TGVuZ3RoKSwgImNhbid0IGdldCAiLCBzZWN0aW9uLCAiIHNlY3Rpb24ncyBsZW5ndGgiKTsKLSAg
ICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihzZWN0aW9uTGVuZ3RoID4gbGVuZ3RoKCkgLSBtX29m
ZnNldCwgc2VjdGlvbiwgIiBzZWN0aW9uIG9mIHNpemUgIiwgc2VjdGlvbkxlbmd0aCwgIiB3b3Vs
ZCBvdmVyZmxvdyBNb2R1bGUncyBzaXplIik7Ci0KLSAgICAgICAgU2VjdGlvblBhcnNlciBwYXJz
ZXIoc291cmNlKCkgKyBtX29mZnNldCwgc2VjdGlvbkxlbmd0aCwgbV9vZmZzZXQsIG1faW5mby5n
ZXQoKSk7Ci0KLSAgICAgICAgc3dpdGNoIChzZWN0aW9uKSB7Ci0jZGVmaW5lIFdBU01fU0VDVElP
Tl9QQVJTRShOQU1FLCBJRCwgREVTQ1JJUFRJT04pICAgICAgICAgICAgICAgICAgIFwKLSAgICAg
ICAgY2FzZSBTZWN0aW9uOjpOQU1FOiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZXIucGFy
c2UgIyMgTkFNRSgpKTsgICAgICAgICAgICAgXAotICAgICAgICAgICAgYnJlYWs7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIH0KLSAg
ICAgICAgRk9SX0VBQ0hfS05PV05fV0FTTV9TRUNUSU9OKFdBU01fU0VDVElPTl9QQVJTRSkKLSN1
bmRlZiBXQVNNX1NFQ1RJT05fUEFSU0UKLQotICAgICAgICBjYXNlIFNlY3Rpb246OkN1c3RvbTog
ewotICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZXIucGFyc2VDdXN0
b20oKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGNhc2UgU2Vj
dGlvbjo6QmVnaW46IHsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgV0FT
TV9QQVJTRVJfRkFJTF9JRihwYXJzZXIubGVuZ3RoKCkgIT0gcGFyc2VyLm9mZnNldCgpLCAicGFy
c2luZyBlbmRlZCBiZWZvcmUgdGhlIGVuZCBvZiAiLCBzZWN0aW9uLCAiIHNlY3Rpb24iKTsKLQot
ICAgICAgICBtX29mZnNldCArPSBzZWN0aW9uTGVuZ3RoOwotCi0KLSAgICAgICAgaWYgKGlzS25v
d25TZWN0aW9uKHNlY3Rpb24pKQotICAgICAgICAgICAgcHJldmlvdXNLbm93blNlY3Rpb24gPSBz
ZWN0aW9uOwotICAgIH0KLQotICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp1c2VFYWdlcldlYkFz
c2VtYmx5TW9kdWxlSGFzaGluZygpKSkgewotICAgICAgICBTSEExIGhhc2hlcjsKLSAgICAgICAg
aGFzaGVyLmFkZEJ5dGVzKHNvdXJjZSgpLCBsZW5ndGgoKSk7Ci0gICAgICAgIG1faW5mby0+bmFt
ZVNlY3Rpb24tPnNldEhhc2goaGFzaGVyLmNvbXB1dGVIZXhEaWdlc3QoKSk7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIHsgfTsKLX0KLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KLQotI2VuZGlm
IC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21Nb2R1bGVQYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21Nb2R1bGVQYXJzZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDMzYjc3OTUz
MzczZGIyN2YxNTE5OWQ5ODA0MDgwZjA5Mjk2ZWRiOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9k
dWxlUGFyc2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCi0KLSNpbmNsdWRlICJXYXNtRm9ybWF0LmgiCi0jaW5jbHVkZSAiV2Fz
bU9wcy5oIgotI2luY2x1ZGUgIldhc21QYXJzZXIuaCIKLSNpbmNsdWRlIDx3dGYvT3B0aW9uYWwu
aD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
V2FzbSB7Ci0KLWNsYXNzIE1vZHVsZVBhcnNlciA6IHB1YmxpYyBQYXJzZXI8dm9pZD4gewotcHVi
bGljOgotICAgIE1vZHVsZVBhcnNlcihjb25zdCB1aW50OF90KiBzb3VyY2VCdWZmZXIsIHNpemVf
dCBzb3VyY2VMZW5ndGgsIE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvKQotICAgICAgICA6IFBhcnNl
cihzb3VyY2VCdWZmZXIsIHNvdXJjZUxlbmd0aCkKLSAgICAgICAgLCBtX2luZm8oaW5mbykKLSAg
ICB7Ci0gICAgfQotCi0gICAgUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZSgpOwotCi1w
cml2YXRlOgotICAgIFJlZjxNb2R1bGVJbmZvcm1hdGlvbj4gbV9pbmZvOwotfTsKLQotfSB9IC8v
IG5hbWVzcGFjZSBKU0M6Oldhc20KLQotI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcAppbmRleCA5ZTBjNGE1NjY2
ZTQ0ZTBlYWNjMjMxMmFiYmI3NjU0NTNiODc5ZjQ4Li5jMWExZDBhMjA5YTQ3MDM5YWEyM2MyODQ0
ZjFlOTNlNjkwMjc3MmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtT01HUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1Bs
YW4uY3BwCkBAIC03NiwxMSArNzYsMTEgQEAgdm9pZCBPTUdQbGFuOjp3b3JrKENvbXBpbGF0aW9u
RWZmb3J0KQogCiAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtX21vZHVsZUlu
Zm9ybWF0aW9uLT5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1ttX2Z1bmN0aW9uSW5k
ZXhdOwogICAgIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlID0gU2lnbmF0dXJlSW5mb3JtYXRp
b246OmdldChzaWduYXR1cmVJbmRleCk7Ci0gICAgQVNTRVJUKHZhbGlkYXRlRnVuY3Rpb24oZnVu
Y3Rpb24uZGF0YS5kYXRhKCksIGZ1bmN0aW9uLmRhdGEuc2l6ZSgpLCBzaWduYXR1cmUsIG1fbW9k
dWxlSW5mb3JtYXRpb24uZ2V0KCkpKTsKKyAgICBBU1NFUlQodmFsaWRhdGVGdW5jdGlvbihmdW5j
dGlvbiwgc2lnbmF0dXJlLCBtX21vZHVsZUluZm9ybWF0aW9uLmdldCgpKSk7CiAKICAgICBWZWN0
b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4gdW5saW5rZWRDYWxsczsKICAgICBDb21waWxhdGlv
bkNvbnRleHQgY29udGV4dDsKLSAgICBhdXRvIHBhcnNlQW5kQ29tcGlsZVJlc3VsdCA9IHBhcnNl
QW5kQ29tcGlsZShjb250ZXh0LCBmdW5jdGlvbi5kYXRhLmRhdGEoKSwgZnVuY3Rpb24uZGF0YS5z
aXplKCksIHNpZ25hdHVyZSwgdW5saW5rZWRDYWxscywgbV9tb2R1bGVJbmZvcm1hdGlvbi5nZXQo
KSwgbV9tb2RlLCBDb21waWxhdGlvbk1vZGU6Ok9NR01vZGUsIG1fZnVuY3Rpb25JbmRleCk7Cisg
ICAgYXV0byBwYXJzZUFuZENvbXBpbGVSZXN1bHQgPSBwYXJzZUFuZENvbXBpbGUoY29udGV4dCwg
ZnVuY3Rpb24sIHNpZ25hdHVyZSwgdW5saW5rZWRDYWxscywgbV9tb2R1bGVJbmZvcm1hdGlvbi5n
ZXQoKSwgbV9tb2RlLCBDb21waWxhdGlvbk1vZGU6Ok9NR01vZGUsIG1fZnVuY3Rpb25JbmRleCk7
CiAKICAgICBpZiAoVU5MSUtFTFkoIXBhcnNlQW5kQ29tcGlsZVJlc3VsdCkpIHsKICAgICAgICAg
ZmFpbChob2xkTG9jayhtX2xvY2spLCBtYWtlU3RyaW5nKHBhcnNlQW5kQ29tcGlsZVJlc3VsdC5l
cnJvcigpLCAid2hlbiB0cnlpbmcgdG8gdGllciB1cCAiLCBTdHJpbmc6Om51bWJlcihtX2Z1bmN0
aW9uSW5kZXgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
UGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5jcHAKaW5kZXgg
OTk3NGVjZmU1NWJhZjI4OWVlYzU2NTA2NmExY2Q0OWFlMjNhODIwYS4uZTY1ZjcwNzM5NmVjYTBh
MTQ3NzczMmFkZDM0M2MxOTQ3ZDA1ZTJkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21QbGFuLmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIldhc21DYWxsaW5nQ29udmVu
dGlvbi5oIgogI2luY2x1ZGUgIldhc21GYXVsdFNpZ25hbEhhbmRsZXIuaCIKICNpbmNsdWRlICJX
YXNtTWVtb3J5LmgiCi0jaW5jbHVkZSAiV2FzbU1vZHVsZVBhcnNlci5oIgogI2luY2x1ZGUgIldh
c21WYWxpZGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8d3RmL0xv
Y2tlci5oPgpAQCAtMTMxLDYgKzEzMCw5IEBAIGJvb2wgUGxhbjo6dHJ5UmVtb3ZlQ29udGV4dEFu
ZENhbmNlbElmTGFzdChDb250ZXh0JiBjb250ZXh0KQogCiB2b2lkIFBsYW46OmZhaWwoY29uc3Qg
QWJzdHJhY3RMb2NrZXImIGxvY2tlciwgU3RyaW5nJiYgZXJyb3JNZXNzYWdlKQogeworICAgIEFT
U0VSVChlcnJvck1lc3NhZ2UpOworICAgIGlmIChmYWlsZWQoKSkKKyAgICAgICAgcmV0dXJuOwog
ICAgIGRhdGFMb2dMbklmKFdhc21QbGFuSW50ZXJuYWw6OnZlcmJvc2UsICJmYWlsaW5nIHdpdGgg
bWVzc2FnZTogIiwgZXJyb3JNZXNzYWdlKTsKICAgICBtX2Vycm9yTWVzc2FnZSA9IFdURk1vdmUo
ZXJyb3JNZXNzYWdlKTsKICAgICBjb21wbGV0ZShsb2NrZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCmluZGV4IDlhOWJhY2I2N2RlZDI1
MDQ1MzVkOGMyZGU1YzVlZDgzM2RlZjE2MDIuLjVjMDdiN2E5ZDJmNzE4ZjQ3M2M1YjM2ZGJiN2Q1
ZGU3NWQ3ZjRmYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21T
ZWN0aW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2Vj
dGlvblBhcnNlci5jcHAKQEAgLTM5OSwyOSArMzk5LDEwIEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6
cGFyc2VFbGVtZW50KCkgLT4gUGFydGlhbFJlc3VsdAogICAgIHJldHVybiB7IH07CiB9CiAKLS8v
IFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjaGFuZ2VkIHRvIGJlIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEIG9uY2Ugd2Ugc3dpdGNoIG91ciBwYXJzaW5nIGluZnJhc3RydWN0dXJlIHRvIHRoZSBz
dHJlYW1pbmcgcGFyc2VyLgogYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUNvZGUoKSAtPiBQYXJ0
aWFsUmVzdWx0CiB7Ci0gICAgdWludDMyX3QgY291bnQ7Ci0gICAgV0FTTV9QQVJTRVJfRkFJTF9J
RighcGFyc2VWYXJVSW50MzIoY291bnQpLCAiY2FuJ3QgZ2V0IENvZGUgc2VjdGlvbidzIGNvdW50
Iik7Ci0gICAgV0FTTV9QQVJTRVJfRkFJTF9JRihjb3VudCA9PSBzdGQ6Om51bWVyaWNfbGltaXRz
PHVpbnQzMl90Pjo6bWF4KCksICJDb2RlIHNlY3Rpb24ncyBjb3VudCBpcyB0b28gYmlnICIsIGNv
dW50KTsKLSAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGNvdW50ICE9IG1faW5mby0+ZnVuY3Rpb25z
LnNpemUoKSwgIkNvZGUgc2VjdGlvbiBjb3VudCAiLCBjb3VudCwgIiBleGNlZWRzIHRoZSBkZWNs
YXJlZCBudW1iZXIgb2YgZnVuY3Rpb25zICIsIG1faW5mby0+ZnVuY3Rpb25zLnNpemUoKSk7Ci0K
LSAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICB1aW50
MzJfdCBmdW5jdGlvblNpemU7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFy
VUludDMyKGZ1bmN0aW9uU2l6ZSksICJjYW4ndCBnZXQgIiwgaSwgInRoIENvZGUgZnVuY3Rpb24n
cyBzaXplIik7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoZnVuY3Rpb25TaXplID4gbGVu
Z3RoKCksICJDb2RlIGZ1bmN0aW9uJ3Mgc2l6ZSAiLCBmdW5jdGlvblNpemUsICIgZXhjZWVkcyB0
aGUgbW9kdWxlJ3Mgc2l6ZSAiLCBsZW5ndGgoKSk7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxf
SUYoZnVuY3Rpb25TaXplID4gbGVuZ3RoKCkgLSBtX29mZnNldCwgIkNvZGUgZnVuY3Rpb24ncyBz
aXplICIsIGZ1bmN0aW9uU2l6ZSwgIiBleGNlZWRzIHRoZSBtb2R1bGUncyByZW1haW5pbmcgc2l6
ZSIsIGxlbmd0aCgpIC0gbV9vZmZzZXQpOwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGZ1
bmN0aW9uU2l6ZSA+IG1heEZ1bmN0aW9uU2l6ZSwgIkNvZGUgZnVuY3Rpb24ncyBzaXplICIsIGZ1
bmN0aW9uU2l6ZSwgIiBpcyB0b28gYmlnIik7Ci0KLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRh
dGEoZnVuY3Rpb25TaXplKTsKLSAgICAgICAgc3RkOjptZW1jcHkoZGF0YS5kYXRhKCksIHNvdXJj
ZSgpICsgbV9vZmZzZXQsIGZ1bmN0aW9uU2l6ZSk7Ci0gICAgICAgIG1faW5mby0+ZnVuY3Rpb25z
W2ldLnN0YXJ0ID0gbV9vZmZzZXRJblNvdXJjZSArIG1fb2Zmc2V0OwotICAgICAgICBtX2luZm8t
PmZ1bmN0aW9uc1tpXS5lbmQgPSBtX29mZnNldEluU291cmNlICsgbV9vZmZzZXQgKyBmdW5jdGlv
blNpemU7Ci0gICAgICAgIG1faW5mby0+ZnVuY3Rpb25zW2ldLmRhdGEgPSBXVEZNb3ZlKGRhdGEp
OwotICAgICAgICBtX29mZnNldCArPSBmdW5jdGlvblNpemU7Ci0gICAgfQotCisgICAgLy8gVGhl
IENvZGUgc2VjdGlvbiBpcyBoYW5kbGVkIHNwZWNpYWxseSBpbiBTdHJlYW1pbmdQYXJzZXIuCisg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4geyB9OwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2Vy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TdHJlYW1pbmdQYXJzZXIuY3Bw
CmluZGV4IDlmMzcyNjAxZDUxMzMyYmUyNWUwN2UwNTE4MjM1OTk0ZWI0YzA4OTkuLmM5NThiOTE0
MzE3YmQ1ZjlhZTRkMmViMmJmZGYwNjU5MWZiYjYwMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21TdHJlYW1pbmdQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21TdHJlYW1pbmdQYXJzZXIuY3BwCkBAIC0yOCw3ICsyOCw2IEBA
CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKLSNpbmNsdWRlICJXYXNtTW9kdWxlUGFyc2Vy
LmgiCiAjaW5jbHVkZSAiV2FzbVNlY3Rpb25QYXJzZXIuaCIKICNpbmNsdWRlIDx3dGYvVW5hbGln
bmVkQWNjZXNzLmg+CiAKQEAgLTY2LDggKzY1LDkgQEAgTkVWRVJfSU5MSU5FIGF1dG8gV0FSTl9V
TlVTRURfUkVUVVJOIFN0cmVhbWluZ1BhcnNlcjo6ZmFpbChBcmdzLi4uIGFyZ3MpIC0+IFN0YXQK
ICAgICByZXR1cm4gU3RhdGU6OkZhdGFsRXJyb3I7CiB9CiAKLVN0cmVhbWluZ1BhcnNlcjo6U3Ry
ZWFtaW5nUGFyc2VyKE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvKQorU3RyZWFtaW5nUGFyc2VyOjpT
dHJlYW1pbmdQYXJzZXIoTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIFN0cmVhbWluZ1BhcnNlckNs
aWVudCYgY2xpZW50KQogICAgIDogbV9pbmZvKGluZm8pCisgICAgLCBtX2NsaWVudChjbGllbnQp
CiB7CiAgICAgZGF0YUxvZ0xuSWYoV2FzbVN0cmVhbWluZ1BhcnNlckludGVybmFsOjp2ZXJib3Nl
LCAic3RhcnRpbmcgdmFsaWRhdGlvbiIpOwogfQpAQCAtMTE4LDYgKzExOCw3IEBAIGF1dG8gU3Ry
ZWFtaW5nUGFyc2VyOjpwYXJzZUNvZGVTZWN0aW9uU2l6ZSh1aW50MzJfdCBmdW5jdGlvbkNvdW50
KSAtPiBTdGF0ZQogCiAgICAgaWYgKG1fZnVuY3Rpb25JbmRleCA9PSBtX2Z1bmN0aW9uQ291bnQp
IHsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRigobV9jb2RlT2Zmc2V0ICsgbV9zZWN0aW9u
TGVuZ3RoKSAhPSBtX25leHRPZmZzZXQsICJwYXJzaW5nIGVuZGVkIGJlZm9yZSB0aGUgZW5kIG9m
ICIsIG1fc2VjdGlvbiwgIiBzZWN0aW9uIik7CisgICAgICAgIG1fY2xpZW50LmRpZFBhcnNlU2Vj
dGlvbihtX3NlY3Rpb24pOwogICAgICAgICByZXR1cm4gU3RhdGU6OlNlY3Rpb25JRDsKICAgICB9
CiAgICAgcmV0dXJuIFN0YXRlOjpGdW5jdGlvblNpemU7CkBAIC0xMzcsOSArMTM4LDEyIEBAIGF1
dG8gU3RyZWFtaW5nUGFyc2VyOjpwYXJzZUZ1bmN0aW9uUGF5bG9hZChWZWN0b3I8dWludDhfdD4m
JiBkYXRhKSAtPiBTdGF0ZQogICAgIGZ1bmN0aW9uLmVuZCA9IG1fb2Zmc2V0ICsgbV9mdW5jdGlv
blNpemU7CiAgICAgZnVuY3Rpb24uZGF0YSA9IFdURk1vdmUoZGF0YSk7CiAgICAgZGF0YUxvZ0xu
SWYoV2FzbVN0cmVhbWluZ1BhcnNlckludGVybmFsOjp2ZXJib3NlLCAiUHJvY2Vzc2luZyBmdW5j
dGlvbiBzdGFydGluZyBhdDogIiwgZnVuY3Rpb24uc3RhcnQsICIgYW5kIGVuZGluZyBhdDogIiwg
ZnVuY3Rpb24uZW5kKTsKKyAgICBtX2NsaWVudC5kaWRQYXJzZUZ1bmN0aW9uKG1fZnVuY3Rpb25J
bmRleCwgZnVuY3Rpb24pOwogICAgICsrbV9mdW5jdGlvbkluZGV4OworCiAgICAgaWYgKG1fZnVu
Y3Rpb25JbmRleCA9PSBtX2Z1bmN0aW9uQ291bnQpIHsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJ
TF9JRigobV9jb2RlT2Zmc2V0ICsgbV9zZWN0aW9uTGVuZ3RoKSAhPSAobV9vZmZzZXQgKyBtX2Z1
bmN0aW9uU2l6ZSksICJwYXJzaW5nIGVuZGVkIGJlZm9yZSB0aGUgZW5kIG9mICIsIG1fc2VjdGlv
biwgIiBzZWN0aW9uIik7CisgICAgICAgIG1fY2xpZW50LmRpZFBhcnNlU2VjdGlvbihtX3NlY3Rp
b24pOwogICAgICAgICByZXR1cm4gU3RhdGU6OlNlY3Rpb25JRDsKICAgICB9CiAgICAgcmV0dXJu
IFN0YXRlOjpGdW5jdGlvblNpemU7CkBAIC0xNzAsNiArMTc0LDcgQEAgYXV0byBTdHJlYW1pbmdQ
YXJzZXI6OnBhcnNlU2VjdGlvblBheWxvYWQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgLT4gU3Rh
dGUKIAogICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYocGFyc2VyLmxlbmd0aCgpICE9IHBhcnNlci5v
ZmZzZXQoKSwgInBhcnNpbmcgZW5kZWQgYmVmb3JlIHRoZSBlbmQgb2YgIiwgbV9zZWN0aW9uLCAi
IHNlY3Rpb24iKTsKIAorICAgIG1fY2xpZW50LmRpZFBhcnNlU2VjdGlvbihtX3NlY3Rpb24pOwog
ICAgIHJldHVybiBTdGF0ZTo6U2VjdGlvbklEOwogfQogCkBAIC0zODAsNiArMzg1LDcgQEAgYXV0
byBTdHJlYW1pbmdQYXJzZXI6OmZpbmFsaXplKCkgLT4gU3RhdGUKICAgICAgICAgICAgIGlmIChV
TkxJS0VMWShPcHRpb25zOjp1c2VFYWdlcldlYkFzc2VtYmx5TW9kdWxlSGFzaGluZygpKSkKICAg
ICAgICAgICAgICAgICBtX2luZm8tPm5hbWVTZWN0aW9uLT5zZXRIYXNoKG1faGFzaGVyLmNvbXB1
dGVIZXhEaWdlc3QoKSk7CiAgICAgICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkZpbmlzaGVkOwor
ICAgICAgICAgICAgbV9jbGllbnQuZGlkRmluaXNoUGFyc2luZygpOwogICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIG1fc3RhdGUgPSBmYWlsT25TdGF0ZShTdGF0ZTo6U2VjdGlvbklEKTsKICAg
ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
U3RyZWFtaW5nUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFt
aW5nUGFyc2VyLmgKaW5kZXggMWZiYjZiMjJiMzU1OWFmMDM4YjgwNGYxMjVhN2VmYTVhOWE1ZDgx
OC4uOWYxN2UyOGJmZmE0MTNjZTdjNTBmMzg4MzEzMjM5ZTJjYmEyZTdmOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVN0cmVhbWluZ1BhcnNlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TdHJlYW1pbmdQYXJzZXIuaApAQCAtMzksNiAr
MzksMTAgQEAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKIGNsYXNzIFN0cmVh
bWluZ1BhcnNlckNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIGRpZFBhcnNlU2Vj
dGlvbihTZWN0aW9uKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGFyc2VGdW5jdGlvbih1bnNp
Z25lZCwgY29uc3QgRnVuY3Rpb25EYXRhJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlz
aFBhcnNpbmcoKSB7IH0KIH07CiAKIGNsYXNzIFN0cmVhbWluZ1BhcnNlciB7CkBAIC02OSw3ICs3
Myw3IEBAIGNsYXNzIFN0cmVhbWluZ1BhcnNlciB7CiAKICAgICBlbnVtIGNsYXNzIElzRW5kT2ZT
dHJlYW0geyBZZXMsIE5vIH07CiAKLSAgICBTdHJlYW1pbmdQYXJzZXIoTW9kdWxlSW5mb3JtYXRp
b24mKTsKKyAgICBTdHJlYW1pbmdQYXJzZXIoTW9kdWxlSW5mb3JtYXRpb24mLCBTdHJlYW1pbmdQ
YXJzZXJDbGllbnQmKTsKIAogICAgIFN0YXRlIGFkZEJ5dGVzKGNvbnN0IHVpbnQ4X3QqIGJ5dGVz
LCBzaXplX3QgbGVuZ3RoKSB7IHJldHVybiBhZGRCeXRlcyhieXRlcywgbGVuZ3RoLCBJc0VuZE9m
U3RyZWFtOjpObyk7IH0KICAgICBTdGF0ZSBmaW5hbGl6ZSgpOwpAQCAtOTksNiArMTAzLDcgQEAg
Y2xhc3MgU3RyZWFtaW5nUGFyc2VyIHsKICAgICBTdGF0ZSBmYWlsT25TdGF0ZShTdGF0ZSk7CiAK
ICAgICBSZWY8TW9kdWxlSW5mb3JtYXRpb24+IG1faW5mbzsKKyAgICBTdHJlYW1pbmdQYXJzZXJD
bGllbnQmIG1fY2xpZW50OwogICAgIFZlY3Rvcjx1aW50OF90PiBtX3JlbWFpbmluZzsKICAgICBT
dHJpbmcgbV9lcnJvck1lc3NhZ2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21WYWxpZGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
VmFsaWRhdGUuY3BwCmluZGV4IGVhNGE3NTk4ZmEwNDk1NDRmODc2ODRhNTBlM2NmY2I5MTMxMDhl
YWYuLjAxMjczNzJmMjNjNWJhY2VkMmJiYmRhZjRkMzUwYTNlNTQ0MjkxNjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmNwcApAQCAtMzc3LDEwICszNzcsMTAg
QEAgdm9pZCBWYWxpZGF0ZTo6ZHVtcChjb25zdCBWZWN0b3I8Q29udHJvbEVudHJ5PiYgY29udHJv
bFN0YWNrLCBjb25zdCBFeHByZXNzaW9uTGkKICAgICBkYXRhTG9nTG4oKTsKIH0KIAotRXhwZWN0
ZWQ8dm9pZCwgU3RyaW5nPiB2YWxpZGF0ZUZ1bmN0aW9uKGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwg
c2l6ZV90IGxlbmd0aCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIGNvbnN0IE1vZHVsZUlu
Zm9ybWF0aW9uJiBtb2R1bGUpCitFeHBlY3RlZDx2b2lkLCBTdHJpbmc+IHZhbGlkYXRlRnVuY3Rp
b24oY29uc3QgRnVuY3Rpb25EYXRhJiBmdW5jdGlvbiwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1
cmUsIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBtb2R1bGUpCiB7CiAgICAgVmFsaWRhdGUgY29u
dGV4dChtb2R1bGUpOwotICAgIEZ1bmN0aW9uUGFyc2VyPFZhbGlkYXRlPiB2YWxpZGF0b3IoY29u
dGV4dCwgc291cmNlLCBsZW5ndGgsIHNpZ25hdHVyZSwgbW9kdWxlKTsKKyAgICBGdW5jdGlvblBh
cnNlcjxWYWxpZGF0ZT4gdmFsaWRhdG9yKGNvbnRleHQsIGZ1bmN0aW9uLmRhdGEuZGF0YSgpLCBm
dW5jdGlvbi5kYXRhLnNpemUoKSwgc2lnbmF0dXJlLCBtb2R1bGUpOwogICAgIFdBU01fRkFJTF9J
Rl9IRUxQRVJfRkFJTFModmFsaWRhdG9yLnBhcnNlKCkpOwogICAgIHJldHVybiB7IH07CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRhdGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5oCmluZGV4IDI4MjgzY2ZlYTgy
YWY5MTQxY2JiMGE5MzBkZTAyOTkzYTk5MDVhYjEuLmE5NTJhYWM2OGE4MmY4OTBmY2U5MjliNjJl
NzgwNjUzMzhmMDJkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21WYWxpZGF0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21WYWxpZGF0
ZS5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBuYW1lc3BhY2UgV2FzbSB7
CiAKLUV4cGVjdGVkPHZvaWQsIFN0cmluZz4gdmFsaWRhdGVGdW5jdGlvbihjb25zdCB1aW50OF90
Kiwgc2l6ZV90LCBjb25zdCBTaWduYXR1cmUmLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYpOwor
RXhwZWN0ZWQ8dm9pZCwgU3RyaW5nPiB2YWxpZGF0ZUZ1bmN0aW9uKGNvbnN0IEZ1bmN0aW9uRGF0
YSYsIGNvbnN0IFNpZ25hdHVyZSYsIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJik7CiAKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpXYXNtCiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjk4YTE2MDk2NzQ3N2M0ZjU1MDFhZWEzY2U4Nzg1ZGMz
M2E0ZDc1NS4uM2Q4ZWM0NGNhODUzMGE2ZjliNDA2MWQyM2U0YmFkNmQyOWFmY2MyNCAxMDA2NDQK
LS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAxOC0wOC0yNyAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93c3Rh
cnQub3JnPgorCisgICAgICAgIFtXZWJBc3NlbWJseV0gVXNlIFN0cmVhbWluZ1BhcnNlciBpbiBl
eGlzdGluZyBXYXNtOjpCQlFQbGFuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODkwNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGUgb2Zmc2V0IHBlcmZvcm1pbmcgdGhlIHZhbGlkYXRpb24gYmVjb21l
cyBhIGJpdCBkaWZmZXJlbnQuCisgICAgICAgIFRoZSBvZmZzZXQgMCBpcyBuaWNlIHNpbmNlIGl0
IGlzIHRoZSBzdGFydGluZyBvZmZzZXQgb2YgdGhlIE1vZHVsZSBoZWFkZXIgc2lnbmF0dXJlIGNv
bXBhcmVkIHRvIHRoZSBvZmZzZXQgOC4KKworICAgICAgICAqIHdhc20vanMtYXBpL3ZlcnNpb24u
anM6CisKIDIwMTgtMDgtMjcgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0
Lm9yZz4KIAogICAgICAgICBbV2ViQXNzZW1ibHldIFBhcnNlIHdhc20gbW9kdWxlcyBpbiBhIHN0
cmVhbWluZyBmYXNoaW9uCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vanMtYXBpL3ZlcnNpb24u
anMgYi9KU1Rlc3RzL3dhc20vanMtYXBpL3ZlcnNpb24uanMKaW5kZXggMDQ4NmZjZmRkZWZkMDgy
MWQzOTI0NmNiNjQwODczNGJmZWJmMjJlMi4uNGQxMGU4YzE1ZDBlMWQ3Nzk0NmQ4N2NlZThkMjBm
NzIyMGQ5ZDI0ZiAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL2pzLWFwaS92ZXJzaW9uLmpzCisr
KyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvdmVyc2lvbi5qcwpAQCAtNSw1ICs1LDUgQEAKICAgICBp
ZiAodmVyc2lvbiA9PT0gMSkKICAgICAgICAgY29udGludWU7CiAgICAgY29uc3QgZW1wdHlNb2R1
bGVBcnJheSA9IFVpbnQ4QXJyYXkub2YoMHgwLCAweDYxLCAweDczLCAweDZkLCB2ZXJzaW9uLCAw
eDAwLCAweDAwLCAweDAwKTsKLSAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJs
eS5Nb2R1bGUoZW1wdHlNb2R1bGVBcnJheSksIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciwgYFdl
YkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNlIGF0IGJ5dGUgODogdW5leHBlY3RlZCB2ZXJz
aW9uIG51bWJlciAke3ZlcnNpb259IGV4cGVjdGVkIDFgKTsKKyAgICBhc3NlcnQudGhyb3dzKCgp
ID0+IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoZW1wdHlNb2R1bGVBcnJheSksIFdlYkFzc2VtYmx5
LkNvbXBpbGVFcnJvciwgYFdlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNlIGF0IGJ5dGUg
MDogdW5leHBlY3RlZCB2ZXJzaW9uIG51bWJlciAke3ZlcnNpb259IGV4cGVjdGVkIDFgKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348287</attachid>
            <date>2018-08-28 03:54:33 -0700</date>
            <delta_ts>2018-08-28 07:49:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189043-20180828195431.patch</filename>
            <type>text/plain</type>
            <size>43426</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
OTg5OGNkZmFhNmFhMWUyZmFmNDM5NTU2OGJhYTRiZTE1Njc0YzI2Li4wZDQxMmU1MDVmMGIwODZh
NmYyNjBlZjc0MTUyYTFmZGMyYjU1ODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OCBAQAorMjAxOC0wOC0yOCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtXZWJBc3NlbWJseV0gVXNlIFN0cmVhbWluZ1BhcnNlciBp
biBleGlzdGluZyBXYXNtOjpCQlFQbGFuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODkwNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludGVncmF0ZXMgV2FzbTo6U3RyZWFtaW5nUGFy
c2VyIGludG8gdGhlIGV4aXN0aW5nIFdhc206OkJCUVBsYW4uCisgICAgICAgIEJ1dCBpdCBkb2Vz
IG5vdCB1c2UgYW55IHN0cmVhbWluZyBmZWF0dXJlLiBBbmQgV2FzbTo6QkJRUGxhbiB3b3VsZCBu
b3QgdXNlIHRoZQorICAgICAgICBzdHJlYW1pbmcgZmVhdHVyZSBzaW5jZSBpdCBhc3N1bWVzIHRo
YXQgYWxsIHRoZSBkYXRhIGlzIGFscmVhZHkgZ2l2ZW4uCisgICAgICAgIEluIGEgc3Vic2VxdWVu
dCBwYXRjaCwgd2Ugd2lsbCBjcmVhdGUgYSBuZXcgUGxhbiBhbmQgbWFuYWdlciBjbGFzcyBmb3Ig
c3RyZWFtaW5nCisgICAgICAgIHBhcnNpbmcgYW5kIHN0cmVhbWluZyBjb21waWxpbmcgYW5kIHVz
ZSB0aGVtIGZvciBXZWJBc3NlbWJseS5jb21waWxlU3RyZWFtaW5nIGFuZAorICAgICAgICBpbnN0
YW50aWF0ZVN0cmVhbWluZy4KKworICAgICAgICBUaGUgaW50ZW5zaW9uIG9mIHRoaXMgcGF0Y2gg
aXMgcmVtb3ZpbmcgdGhlIG9sZCBXYXNtOjpNb2R1bGVQYXJzZXIuCisKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMu
dHh0OgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoV1RGOjpXYXNt
U3RyZWFtaW5nUGFyc2VyOjpXYXNtU3RyZWFtaW5nUGFyc2VyKToKKyAgICAgICAgKiB3YXNtL1dh
c21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21waWxl
KTogVXNlIEZ1bmN0aW9uRGF0YSwgaXQgaXMgZ29vZCBzaW5jZSBpdCBpcyBtb3JlIHN0cm9uZ2x5
IHR5cGVkLgorICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuaDoKKyAgICAgICAgKiB3
YXNtL1dhc21CQlFQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6QkJRUGxh
bik6CisgICAgICAgIChKU0M6Oldhc206OkJCUVBsYW46OmRpZFBhcnNlRnVuY3Rpb24pOiBBZGQg
YSBjYWxsYmFjaywgd2hpY2ggaW52b2tlcyB2YWxpZGF0aW9uLgorICAgICAgICAoSlNDOjpXYXNt
OjpCQlFQbGFuOjpwYXJzZUFuZFZhbGlkYXRlTW9kdWxlKTogVXNlIFN0cmVhbWluZ1BhcnNlciBp
bnN0ZWFkIG9mIG9sZCBNb2R1bGVQYXJzZXIuCisgICAgICAgIChKU0M6Oldhc206OkJCUVBsYW46
OmNvbXBpbGVGdW5jdGlvbnMpOgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpjb21wbGV0
ZSk6CisgICAgICAgICogd2FzbS9XYXNtQkJRUGxhbi5oOgorICAgICAgICAqIHdhc20vV2FzbU1v
ZHVsZVBhcnNlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogd2FzbS9XYXNtTW9kdWxlUGFyc2Vy
Lmg6IFJlbW92ZWQgb2xkIFdhc206Ok1vZHVsZVBhcnNlci4KKyAgICAgICAgKiB3YXNtL1dhc21P
TUdQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6T01HUGxhbjo6d29yayk6CisgICAgICAg
ICogd2FzbS9XYXNtUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlBsYW46OmZhaWwpOiBN
YWtlIGZhaWwgZnVuY3Rpb24gY2FsbGFibGUgbXVsdGlwbGUgdGltZXMuIFRoZSBmaXJzdCBlcnJv
ciB3aWxsIGJlIHVzZWQuCisgICAgICAgICogd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHA6Cisg
ICAgICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlQ29kZSk6IFNpbmNlIHRoZSBD
b2RlIHNlY3Rpb24gaXMgc3BlY2lhbGx5IGhhbmRsZWQgaW4KKyAgICAgICAgU3RyZWFtaW5nUGFy
c2VyLCB0aGlzIGNvZGUgaXMgbmV2ZXIgdXNlZC4KKyAgICAgICAgKiB3YXNtL1dhc21TdHJlYW1p
bmdQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpTdHJlYW1pbmdQYXJzZXI6OlN0cmVh
bWluZ1BhcnNlcik6CisgICAgICAgIChKU0M6Oldhc206OlN0cmVhbWluZ1BhcnNlcjo6cGFyc2VD
b2RlU2VjdGlvblNpemUpOgorICAgICAgICAoSlNDOjpXYXNtOjpTdHJlYW1pbmdQYXJzZXI6OnBh
cnNlRnVuY3Rpb25QYXlsb2FkKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U3RyZWFtaW5nUGFyc2Vy
OjpwYXJzZVNlY3Rpb25QYXlsb2FkKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U3RyZWFtaW5nUGFy
c2VyOjpmaW5hbGl6ZSk6IENhbGwgY2xpZW50J3MgY2FsbGJhY2tzIGF0IGFwcHJvcHJpYXRlIHRp
bWluZ3MuCisgICAgICAgICogd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmg6CisgICAgICAgIChK
U0M6Oldhc206OlN0cmVhbWluZ1BhcnNlckNsaWVudDo6ZGlkUGFyc2VTZWN0aW9uKToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6U3RyZWFtaW5nUGFyc2VyQ2xpZW50OjpkaWRQYXJzZUZ1bmN0aW9uKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6U3RyZWFtaW5nUGFyc2VyQ2xpZW50OjpkaWRGaW5pc2hQYXJz
aW5nKTogQWRkIFN0cmVhbWluZ1BhcnNlckNsaWVudCwKKyAgICAgICAgd2hpY2ggaGFzIDMgY2Fs
bGJhY2tzIHJpZ2h0IG5vdy4gU3RyZWFtaW5nUGFyc2VyIGdldHMgdGhpcyBjbGllbnQgYW5kIGNh
bGwgdGhlc2UgY2FsbGJhY2tzCisgICAgICAgIGF0IGFwcHJvcHJpYXRlIHRpbWluZ3MuCisgICAg
ICAgICogd2FzbS9XYXNtVmFsaWRhdGUuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp2YWxpZGF0
ZUZ1bmN0aW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21WYWxpZGF0ZS5oOiBVc2UgRnVuY3Rpb25E
YXRhLCBpdCBpcyBnb29kIHNpbmNlIGl0IGlzIG1vcmUgc3Ryb25nbHkgdHlwZWQuCisKIDIwMTgt
MDgtMjcgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KIAogICAg
ICAgICBbV2ViQXNzZW1ibHldIFBhcnNlIHdhc20gbW9kdWxlcyBpbiBhIHN0cmVhbWluZyBmYXNo
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU4OGE3NGFiNzY1MWRjZWJlYmE5
ZGRlMzRiNjQwMTRiM2I4NmI4MTYuLjExMGJkYmMyMzViYWVlM2JhNDI2NGVjOGUxZTc2MDNhNmM2
ZDNlMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDUwLDcgKzEwNTAsNiBA
QAogCQk1M0Y0MEU4QjFENTkwMUJCMDA5OUExQjYgLyogV2FzbUZ1bmN0aW9uUGFyc2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Y0MEU4QTFENTkw
MUJCMDA5OUExQjYgLyogV2FzbUZ1bmN0aW9uUGFyc2VyLmggKi87IH07CiAJCTUzRjQwRThEMUQ1
OTAxRjIwMDk5QTFCNiAvKiBXYXNtUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Y0MEU4QzFENTkwMUYyMDA5OUExQjYgLyogV2FzbVBhcnNl
ci5oICovOyB9OwogCQk1M0Y0MEU5MzFENUE0QUIzMDA5OUExQjYgLyogV2FzbUIzSVJHZW5lcmF0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRjQw
RTkyMUQ1QTRBQjMwMDk5QTFCNiAvKiBXYXNtQjNJUkdlbmVyYXRvci5oICovOyB9OwotCQk1M0Y0
MEU5NTFENUE3QUVGMDA5OUExQjYgLyogV2FzbU1vZHVsZVBhcnNlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGNDBFOTQxRDVBN0FFRjAwOTlBMUI2
IC8qIFdhc21Nb2R1bGVQYXJzZXIuaCAqLzsgfTsKIAkJNTNGNkJGNkQxQzNGMDYwQTAwRjQxRTVE
IC8qIEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGNkJGNkMxQzNGMDYwQTAwRjQxRTVEIC8q
IEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUzRjhEMjAwMUU4Mzg3RDQwMEQyMTExNiAv
KiBXYXNtQkJRUGxhbklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUzRjhEMUZGMUU4Mzg3RDQwMEQyMTExNiAvKiBXYXNtQkJRUGxhbklubGlu
ZXMuaCAqLzsgfTsKIAkJNTNGQTJBRTExQ0YzN0YzRjAwMjI3MTFEIC8qIExMSW50UHJvdG90eXBl
TG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGQTJBRTAxQ0YzN0YzRjAwMjI3MTFEIC8qIExMSW50
UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zNTA5LDggKzM1MDgsNiBAQAog
CQk1M0Y0MEU4QzFENTkwMUYyMDA5OUExQjYgLyogV2FzbVBhcnNlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUzRjQwRThFMUQ1OTAyODIwMDk5QTFCNiAvKiBXYXNtQjNJUkdlbmVyYXRvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtQjNJUkdlbmVyYXRvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRjQwRTkyMUQ1QTRBQjMwMDk5QTFC
NiAvKiBXYXNtQjNJUkdlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXYXNtQjNJUkdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1M0Y0
MEU5NDFENUE3QUVGMDA5OUExQjYgLyogV2FzbU1vZHVsZVBhcnNlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtTW9kdWxlUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTUzRjQwRTk2MUQ1QTdCRUMwMDk5QTFCNiAvKiBXYXNtTW9kdWxlUGFyc2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21Nb2R1bGVQYXJz
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0Y2QkY2QzFDM0YwNjBBMDBG
NDFFNUQgLyogSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0Y4RDFGRjFFODM4N0Q0MDBEMjExMTYg
LyogV2FzbUJCUVBsYW5JbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdhc21CQlFQbGFuSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0ZB
MkFFMDFDRjM3RjNGMDAyMjcxMUQgLyogTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1
cmVXYXRjaHBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExMSW50UHJv
dG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNTUwOCw4ICs1NTA1LDggQEAKIAkJCQk3OTZEQUEyQTFFODlDQ0Q2MDA1
REYyNEEgLyogQ2FsbGVlQml0cy5oICovLAogCQkJCTE0MjlEOERCMEVEMjIwNUIwMEI4OTYxOSAv
KiBDYWxsRnJhbWUuY3BwICovLAogCQkJCTE0MjlEOERDMEVEMjIwNUIwMEI4OTYxOSAvKiBDYWxs
RnJhbWUuaCAqLywKLQkJCQlGRUEzQkJBNzIxMkI2NTU4MDBFOTNBRDEgLyogQ2FsbEZyYW1lSW5s
aW5lcy5oICovLAogCQkJCUE3Rjg2OUVDMEY5NUMyRUMwMDU1ODY5NyAvKiBDYWxsRnJhbWVDbG9z
dXJlLmggKi8sCisJCQkJRkVBM0JCQTcyMTJCNjU1ODAwRTkzQUQxIC8qIENhbGxGcmFtZUlubGlu
ZXMuaCAqLywKIAkJCQkxNDI5RDg1QjBFRDIxOEU5MDBCODk2MTkgLyogQ0xvb3BTdGFjay5jcHAg
Ki8sCiAJCQkJMTRENzkyNjQwREFBMDNGQjAwMUE5RjA1IC8qIENMb29wU3RhY2suaCAqLywKIAkJ
CQlBN0MxRUFFQjE3OTg3QUI2MDAyOTlEQjIgLyogQ0xvb3BTdGFja0lubGluZXMuaCAqLywKQEAg
LTYzNDIsOCArNjMzOSw2IEBACiAJCQkJNzkwMDgxMzcxRTk1QThFQzAwNTJEN0NEIC8qIFdhc21N
b2R1bGUuaCAqLywKIAkJCQk1M0U3NzdFMTFFOTJFMjY1MDA3Q0JFQzQgLyogV2FzbU1vZHVsZUlu
Zm9ybWF0aW9uLmNwcCAqLywKIAkJCQk1M0U3NzdFMjFFOTJFMjY1MDA3Q0JFQzQgLyogV2FzbU1v
ZHVsZUluZm9ybWF0aW9uLmggKi8sCi0JCQkJNTNGNDBFOTYxRDVBN0JFQzAwOTlBMUI2IC8qIFdh
c21Nb2R1bGVQYXJzZXIuY3BwICovLAotCQkJCTUzRjQwRTk0MUQ1QTdBRUYwMDk5QTFCNiAvKiBX
YXNtTW9kdWxlUGFyc2VyLmggKi8sCiAJCQkJQUQ1QjQxNkUxRUJBRkI2NTAwOEVGQTQzIC8qIFdh
c21OYW1lLmggKi8sCiAJCQkJQUQ3QjRCMkQxRkEzRTI4NjAwQzlERjc5IC8qIFdhc21OYW1lU2Vj
dGlvbi5oICovLAogCQkJCUFERDhGQTQ0MUVCMzA3NzEwMERGNTQyRiAvKiBXYXNtTmFtZVNlY3Rp
b25QYXJzZXIuY3BwICovLApAQCAtODQ0NCw3ICs4NDM5LDYgQEAKIAkJCQk5OURBMDBBMzFCRDU5
OTMxMDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdG9yLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTlEQTAwQTQxQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX21vZGVsLnB5IGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTlEQTAwQTUxQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX3RlbXBsYXRlcy5w
eSBpbiBIZWFkZXJzICovLAotCQkJCUZFQTNCQkE4MjEyQjY1NTkwMEU5M0FEMSAvKiBDYWxsRnJh
bWVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MURFQTEzMjFCOUYzMTYzMDA2RDY1REQg
LyogQnVpbHRpblV0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5RTcyOTQwQjE5MEYwNTE0MDAx
QTkxQjUgLyogQnVuZGxlUGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTcxNUVEOEU0
NjAwRjE2N0IyIC8qIEJ1dHRlcmZseS5oIGluIEhlYWRlcnMgKi8sCkBAIC04NDY5LDYgKzg0NjMs
NyBAQAogCQkJCTBGNjRCMjdBMUE3OTU3QjIwMDZFNEU2NiAvKiBDYWxsRWRnZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNzk2REFBMkIxRTg5Q0NENjAwNURGMjRBIC8qIENhbGxlZUJpdHMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE0MjlEOERFMEVEMjIwNUIwMEI4OTYxOSAvKiBDYWxsRnJhbWUuaCBp
biBIZWFkZXJzICovLAorCQkJCUZFQTNCQkE4MjEyQjY1NTkwMEU5M0FEMSAvKiBDYWxsRnJhbWVJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk2MkVDOUJCNzFCN0VCMDdDMDAzMDNBRDEgLyog
Q2FsbEZyYW1lU2h1ZmZsZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTYyRDc1NUQ3MUI4NEZC
NEEwMDE4MDFGQSAvKiBDYWxsRnJhbWVTaHVmZmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYw
QjgzQjExNEJDRjcxODAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCkBA
IC04NzU5LDYgKzg3NTQsNyBAQAogCQkJCUE3MDQ0N0VFMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1w
Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzMThGRTAxQ0FDOTgyRjAwREZDQzU0IC8q
IEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJB
ODM2Mzg2MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlGRTA4NkJDQTIxMjNERUZCMDAzRjI5MjkgLyogRW50cnlGcmFtZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMkFEMkVERkIxOTc5OUUzODAwNEQ2NDc4IC8qIEVudW1lcmF0aW9u
TW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzMDQ2MDcwRTFGNDk3RjAwMzIzMkNGIC8qIEVy
cm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAyRTkwRDBFMTgzOURCMDAwRjkyOTcgLyogRXJy
b3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCkBAIC05MDk1LDcgKzkwOTEsNiBAQAogCQkJ
CTk3ODgwMTQxMTQ3MUFEOTIwMDQxQjAxNiAvKiBKU0RhdGVNYXRoLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDMkE3RjY4ODE2MDQzMkQ0MDBGNzZCOTggLyogSlNEZXN0cnVjdGlibGVPYmplY3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGN0RGMTNDMUUyOTcxMTMwMDk1OTUxQiAvKiBKU0Rlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkUwODZCQ0EyMTIz
REVGQjAwM0YyOTI5IC8qIEVudHJ5RnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzg0RUU2
MUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkUz
QzYxNDE2N0JBQkQ3MDA2RDc2MEEgLyogSlNFeHBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
QjRBQ0FGMTQ4NEM5Q0UwMEIzOEEzNiAvKiBKU0V4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8s
CkBAIC05NjA5LDcgKzk2MDQsNiBAQAogCQkJCUFENUMzNkVGMUY3QTI2M0EwMDBCQ0FBRiAvKiBX
YXNtTWVtb3J5TW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzkwMDgxMzkxRTk1QThFQzAwNTJE
N0NEIC8qIFdhc21Nb2R1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzRTc3N0U0MUU5MkUyNjUw
MDdDQkVDNCAvKiBXYXNtTW9kdWxlSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCTUz
RjQwRTk1MUQ1QTdBRUYwMDk5QTFCNiAvKiBXYXNtTW9kdWxlUGFyc2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBRDVCNDE2RjFFQkFGQjc3MDA4RUZBNDMgLyogV2FzbU5hbWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUFEN0I0QjJFMUZBM0UyOTgwMEM5REY3OSAvKiBXYXNtTmFtZVNlY3Rpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCUFERDhGQTQ2MUVCMzA3OTcwMERGNTQyRiAvKiBXYXNtTmFtZVNl
Y3Rpb25QYXJzZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0Cmlu
ZGV4IGUyYmFmMWE1NzU1ZmM3ZTRmMjNmOWQxNGQ5ZGUzNDkxZjM5MGExOGUuLjM0MDQxYTk1OGI2
ODNlZTYwMWQ4ZTBkZGFlODIxMWZjY2RjNDZmOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50
eHQKQEAgLTk4NSw3ICs5ODUsNiBAQCB3YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5jcHAKIHdh
c20vV2FzbU1lbW9yeU1vZGUuY3BwCiB3YXNtL1dhc21Nb2R1bGUuY3BwCiB3YXNtL1dhc21Nb2R1
bGVJbmZvcm1hdGlvbi5jcHAKLXdhc20vV2FzbU1vZHVsZVBhcnNlci5jcHAKIHdhc20vV2FzbU5h
bWVTZWN0aW9uUGFyc2VyLmNwcAogd2FzbS9XYXNtT01HUGxhbi5jcHAKIHdhc20vV2FzbU9wY29k
ZU9yaWdpbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0Rv
bGxhclZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcApp
bmRleCBlZjI1NTcyNGJjNmExMTIwMDE2YjdmMjJmOTY5ZGJmZmQ5Y2FlMjNmLi4yMmRjZGI3YzEx
NzI5NDcxMmQ1ZmU5ODMyNzlkNTM2ZGRkZDczN2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL0pTRG9sbGFyVk0uY3BwCkBAIC0xMTA1LDEwICsxMTA1LDI1IEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2FzbVN0cmVhbWluZ1BhcnNlckZpbmFs
aXplKEV4ZWNTdGF0CiAKIGNsYXNzIFdhc21TdHJlYW1pbmdQYXJzZXIgOiBwdWJsaWMgSlNEZXN0
cnVjdGlibGVPYmplY3QgewogcHVibGljOgorICAgIGNsYXNzIENsaWVudCBmaW5hbCA6IHB1Ymxp
YyBXYXNtOjpTdHJlYW1pbmdQYXJzZXJDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhw
bGljaXQgQ2xpZW50KFdhc21TdHJlYW1pbmdQYXJzZXIqIHBhcnNlcikKKyAgICAgICAgICAgIDog
bV9wYXJzZXIocGFyc2VyKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGRp
ZFBhcnNlU2VjdGlvbihXYXNtOjpTZWN0aW9uKSBvdmVycmlkZSB7IH0KKyAgICAgICAgdm9pZCBk
aWRQYXJzZUZ1bmN0aW9uKHVuc2lnbmVkLCBjb25zdCBXYXNtOjpGdW5jdGlvbkRhdGEmKSBvdmVy
cmlkZSB7IH0KKyAgICAgICAgdm9pZCBkaWRGaW5pc2hQYXJzaW5nKCkgb3ZlcnJpZGUgeyB9CisK
KyAgICAgICAgV2FzbVN0cmVhbWluZ1BhcnNlciogbV9wYXJzZXI7CisgICAgfTsKKwogICAgIFdh
c21TdHJlYW1pbmdQYXJzZXIoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAg
OiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCiAgICAgICAgICwgbV9pbmZvKFdhc206Ok1vZHVsZUluZm9y
bWF0aW9uOjpjcmVhdGUoKSkKLSAgICAgICAgLCBtX3N0cmVhbWluZ1BhcnNlcihtX2luZm8uZ2V0
KCkpCisgICAgICAgICwgbV9jbGllbnQodGhpcykKKyAgICAgICAgLCBtX3N0cmVhbWluZ1BhcnNl
cihtX2luZm8uZ2V0KCksIG1fY2xpZW50KQogICAgIHsKICAgICB9CiAKQEAgLTExNDEsNiArMTE1
Niw3IEBAIGNsYXNzIFdhc21TdHJlYW1pbmdQYXJzZXIgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVP
YmplY3QgewogICAgIERFQ0xBUkVfSU5GTzsKIAogICAgIFJlZjxXYXNtOjpNb2R1bGVJbmZvcm1h
dGlvbj4gbV9pbmZvOworICAgIENsaWVudCBtX2NsaWVudDsKICAgICBXYXNtOjpTdHJlYW1pbmdQ
YXJzZXIgbV9zdHJlYW1pbmdQYXJzZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggM2U3Y2U2MGFkNzRiMDAyMDQ3NGE4
Njk5M2RhNzZlNzE4MGRjNmYyNC4uZWU1ZjE1OTA0MDM3YTRmNTU0MjU0ZThiY2ZmNmJmNTM1ZWJi
YTFiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJh
dG9yLmNwcApAQCAtMTM4MSw3ICsxMzgxLDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjpvcmlnaW4o
KSAtPiBPcmlnaW4KICAgICByZXR1cm4gYml0d2lzZV9jYXN0PE9yaWdpbj4ob3JpZ2luKTsKIH0K
IAotRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPEludGVybmFsRnVuY3Rpb24+LCBTdHJpbmc+IHBh
cnNlQW5kQ29tcGlsZShDb21waWxhdGlvbkNvbnRleHQmIGNvbXBpbGF0aW9uQ29udGV4dCwgY29u
c3QgdWludDhfdCogZnVuY3Rpb25TdGFydCwgc2l6ZV90IGZ1bmN0aW9uTGVuZ3RoLCBjb25zdCBT
aWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiB1bmxp
bmtlZFdhc21Ub1dhc21DYWxscywgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIE1lbW9y
eU1vZGUgbW9kZSwgQ29tcGlsYXRpb25Nb2RlIGNvbXBpbGF0aW9uTW9kZSwgdWludDMyX3QgZnVu
Y3Rpb25JbmRleCwgVGllclVwQ291bnQqIHRpZXJVcCwgVGhyb3dXYXNtRXhjZXB0aW9uIHRocm93
V2FzbUV4Y2VwdGlvbikKK0V4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9u
PiwgU3RyaW5nPiBwYXJzZUFuZENvbXBpbGUoQ29tcGlsYXRpb25Db250ZXh0JiBjb21waWxhdGlv
bkNvbnRleHQsIGNvbnN0IEZ1bmN0aW9uRGF0YSYgZnVuY3Rpb24sIGNvbnN0IFNpZ25hdHVyZSYg
c2lnbmF0dXJlLCBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mIHVubGlua2VkV2FzbVRv
V2FzbUNhbGxzLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgTWVtb3J5TW9kZSBtb2Rl
LCBDb21waWxhdGlvbk1vZGUgY29tcGlsYXRpb25Nb2RlLCB1aW50MzJfdCBmdW5jdGlvbkluZGV4
LCBUaWVyVXBDb3VudCogdGllclVwLCBUaHJvd1dhc21FeGNlcHRpb24gdGhyb3dXYXNtRXhjZXB0
aW9uKQogewogICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnRlcm5hbEZ1bmN0
aW9uPigpOwogCkBAIC0xNDA2LDcgKzE0MDYsNyBAQCBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8
SW50ZXJuYWxGdW5jdGlvbj4sIFN0cmluZz4gcGFyc2VBbmRDb21waWxlKENvbXBpbGF0aW9uQwog
ICAgICAgICA6IE9wdGlvbnM6OndlYkFzc2VtYmx5T01HT3B0aW1pemF0aW9uTGV2ZWwoKSk7CiAK
ICAgICBCM0lSR2VuZXJhdG9yIGlyR2VuZXJhdG9yKGluZm8sIHByb2NlZHVyZSwgcmVzdWx0Lmdl
dCgpLCB1bmxpbmtlZFdhc21Ub1dhc21DYWxscywgbW9kZSwgY29tcGlsYXRpb25Nb2RlLCBmdW5j
dGlvbkluZGV4LCB0aWVyVXAsIHRocm93V2FzbUV4Y2VwdGlvbik7Ci0gICAgRnVuY3Rpb25QYXJz
ZXI8QjNJUkdlbmVyYXRvcj4gcGFyc2VyKGlyR2VuZXJhdG9yLCBmdW5jdGlvblN0YXJ0LCBmdW5j
dGlvbkxlbmd0aCwgc2lnbmF0dXJlLCBpbmZvKTsKKyAgICBGdW5jdGlvblBhcnNlcjxCM0lSR2Vu
ZXJhdG9yPiBwYXJzZXIoaXJHZW5lcmF0b3IsIGZ1bmN0aW9uLmRhdGEuZGF0YSgpLCBmdW5jdGlv
bi5kYXRhLnNpemUoKSwgc2lnbmF0dXJlLCBpbmZvKTsKICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVS
X0ZBSUxTKHBhcnNlci5wYXJzZSgpKTsKIAogICAgIGlyR2VuZXJhdG9yLmluc2VydENvbnN0YW50
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5l
cmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmgK
aW5kZXggOTMxZjUyN2NiN2E1MmUzOTRkNzAzZmNmMjk5NWU2YmQ3NjlhMDc4Yi4uOWNiYzA0NmUw
MDc1ZTk0YThhZWZmZDM4OTBkMDFhYWUxMjczOTM1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5oCkBAIC01NSw3ICs1NSw3IEBAIHN0cnVjdCBD
b21waWxhdGlvbkNvbnRleHQgewogICAgIHN0ZDo6dW5pcXVlX3B0cjxCMzo6T3BhcXVlQnlwcm9k
dWN0cz4gd2FzbUVudHJ5cG9pbnRCeXByb2R1Y3RzOwogfTsKIAotRXhwZWN0ZWQ8c3RkOjp1bmlx
dWVfcHRyPEludGVybmFsRnVuY3Rpb24+LCBTdHJpbmc+IHBhcnNlQW5kQ29tcGlsZShDb21waWxh
dGlvbkNvbnRleHQmLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBjb25zdCBTaWduYXR1cmUmLCBW
ZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYs
IE1lbW9yeU1vZGUsIENvbXBpbGF0aW9uTW9kZSwgdWludDMyX3QgZnVuY3Rpb25JbmRleCwgVGll
clVwQ291bnQqID0gbnVsbHB0ciwgVGhyb3dXYXNtRXhjZXB0aW9uID0gbnVsbHB0cik7CitFeHBl
Y3RlZDxzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4sIFN0cmluZz4gcGFyc2VBbmRD
b21waWxlKENvbXBpbGF0aW9uQ29udGV4dCYsIGNvbnN0IEZ1bmN0aW9uRGF0YSYsIGNvbnN0IFNp
Z25hdHVyZSYsIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYsIGNvbnN0IE1vZHVsZUlu
Zm9ybWF0aW9uJiwgTWVtb3J5TW9kZSwgQ29tcGlsYXRpb25Nb2RlLCB1aW50MzJfdCBmdW5jdGlv
bkluZGV4LCBUaWVyVXBDb3VudCogPSBudWxscHRyLCBUaHJvd1dhc21FeGNlcHRpb24gPSBudWxs
cHRyKTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCmluZGV4IDQzYzhmNTYyYWZhMWMzNjMzYTdlNmM2MWY0
MDkyMmVjMGJlOTcyMTMuLmVlNTU1OWE2MzFkZmQ2ZTNjZTI4MmQ0OTE1MTZmNzk1NjhjMmQ2NzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKQEAgLTM1LDcg
KzM1LDYgQEAKICNpbmNsdWRlICJXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCIKICNpbmNsdWRlICJX
YXNtRmF1bHRTaWduYWxIYW5kbGVyLmgiCiAjaW5jbHVkZSAiV2FzbU1lbW9yeS5oIgotI2luY2x1
ZGUgIldhc21Nb2R1bGVQYXJzZXIuaCIKICNpbmNsdWRlICJXYXNtVGllclVwQ291bnQuaCIKICNp
bmNsdWRlICJXYXNtVmFsaWRhdGUuaCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgpAQCAtNTMs
NiArNTIsNyBAQCBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAKIEJCUVBsYW46
OkJCUVBsYW4oQ29udGV4dCogY29udGV4dCwgUmVmPE1vZHVsZUluZm9ybWF0aW9uPiBpbmZvLCBB
c3luY1dvcmsgd29yaywgQ29tcGxldGlvblRhc2smJiB0YXNrLCBDcmVhdGVFbWJlZGRlcldyYXBw
ZXImJiBjcmVhdGVFbWJlZGRlcldyYXBwZXIsIFRocm93V2FzbUV4Y2VwdGlvbiB0aHJvd1dhc21F
eGNlcHRpb24pCiAgICAgOiBCYXNlKGNvbnRleHQsIFdURk1vdmUoaW5mbyksIFdURk1vdmUodGFz
ayksIFdURk1vdmUoY3JlYXRlRW1iZWRkZXJXcmFwcGVyKSwgdGhyb3dXYXNtRXhjZXB0aW9uKQor
ICAgICwgbV9zdHJlYW1pbmdQYXJzZXIobV9tb2R1bGVJbmZvcm1hdGlvbi5nZXQoKSwgKnRoaXMp
CiAgICAgLCBtX3N0YXRlKFN0YXRlOjpWYWxpZGF0ZWQpCiAgICAgLCBtX2FzeW5jV29yayh3b3Jr
KQogewpAQCAtNjEsNiArNjEsNyBAQCBCQlFQbGFuOjpCQlFQbGFuKENvbnRleHQqIGNvbnRleHQs
IFJlZjxNb2R1bGVJbmZvcm1hdGlvbj4gaW5mbywgQXN5bmNXb3JrIHdvcmssCiBCQlFQbGFuOjpC
QlFQbGFuKENvbnRleHQqIGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PiYmIHNvdXJjZSwgQXN5bmNX
b3JrIHdvcmssIENvbXBsZXRpb25UYXNrJiYgdGFzaywgQ3JlYXRlRW1iZWRkZXJXcmFwcGVyJiYg
Y3JlYXRlRW1iZWRkZXJXcmFwcGVyLCBUaHJvd1dhc21FeGNlcHRpb24gdGhyb3dXYXNtRXhjZXB0
aW9uKQogICAgIDogQmFzZShjb250ZXh0LCBNb2R1bGVJbmZvcm1hdGlvbjo6Y3JlYXRlKCksIFdU
Rk1vdmUodGFzayksIFdURk1vdmUoY3JlYXRlRW1iZWRkZXJXcmFwcGVyKSwgdGhyb3dXYXNtRXhj
ZXB0aW9uKQogICAgICwgbV9zb3VyY2UoV1RGTW92ZShzb3VyY2UpKQorICAgICwgbV9zdHJlYW1p
bmdQYXJzZXIobV9tb2R1bGVJbmZvcm1hdGlvbi5nZXQoKSwgKnRoaXMpCiAgICAgLCBtX3N0YXRl
KFN0YXRlOjpJbml0aWFsKQogICAgICwgbV9hc3luY1dvcmsod29yaykKIHsKQEAgLTY4LDYgKzY5
LDcgQEAgQkJRUGxhbjo6QkJRUGxhbihDb250ZXh0KiBjb250ZXh0LCBWZWN0b3I8dWludDhfdD4m
JiBzb3VyY2UsIEFzeW5jV29yayB3b3JrLCBDb20KIAogQkJRUGxhbjo6QkJRUGxhbihDb250ZXh0
KiBjb250ZXh0LCBBc3luY1dvcmsgd29yaywgQ29tcGxldGlvblRhc2smJiB0YXNrKQogICAgIDog
QmFzZShjb250ZXh0LCBXVEZNb3ZlKHRhc2spKQorICAgICwgbV9zdHJlYW1pbmdQYXJzZXIobV9t
b2R1bGVJbmZvcm1hdGlvbi5nZXQoKSwgKnRoaXMpCiAgICAgLCBtX3N0YXRlKFN0YXRlOjpJbml0
aWFsKQogICAgICwgbV9hc3luY1dvcmsod29yaykKIHsKQEAgLTkyLDYgKzk0LDI2IEBAIHZvaWQg
QkJRUGxhbjo6bW92ZVRvU3RhdGUoU3RhdGUgc3RhdGUpCiAgICAgbV9zdGF0ZSA9IHN0YXRlOwog
fQogCit2b2lkIEJCUVBsYW46OmRpZFBhcnNlRnVuY3Rpb24odW5zaWduZWQgZnVuY3Rpb25JbmRl
eCwgY29uc3QgRnVuY3Rpb25EYXRhJiBmdW5jdGlvbikKK3sKKyAgICBkYXRhTG9nTG5JZihXYXNt
QkJRUGxhbkludGVybmFsOjp2ZXJib3NlLCAiUHJvY2Vzc2luZyBmdW5jdGlvbiBzdGFydGluZyBh
dDogIiwgZnVuY3Rpb24uc3RhcnQsICIgYW5kIGVuZGluZyBhdDogIiwgZnVuY3Rpb24uZW5kKTsK
KyAgICBzaXplX3QgZnVuY3Rpb25MZW5ndGggPSBmdW5jdGlvbi5lbmQgLSBmdW5jdGlvbi5zdGFy
dDsKKyAgICBBU1NFUlQoZnVuY3Rpb25MZW5ndGggPD0gc291cmNlTGVuZ3RoKTsKKyAgICBBU1NF
UlQoZnVuY3Rpb25MZW5ndGggPT0gZnVuY3Rpb24uZGF0YS5zaXplKCkpOworICAgIFNpZ25hdHVy
ZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5j
dGlvblNpZ25hdHVyZUluZGljZXNbZnVuY3Rpb25JbmRleF07CisgICAgY29uc3QgU2lnbmF0dXJl
JiBzaWduYXR1cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsK
KworICAgIGF1dG8gdmFsaWRhdGlvblJlc3VsdCA9IHZhbGlkYXRlRnVuY3Rpb24oZnVuY3Rpb24s
IHNpZ25hdHVyZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi5nZXQoKSk7CisgICAgaWYgKCF2YWxpZGF0
aW9uUmVzdWx0KSB7CisgICAgICAgIGlmIChXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3NlKSB7
CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZnVuY3Rpb25MZW5ndGg7ICsr
aSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKFJhd1BvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oZnVuY3Rpb24uZGF0YVtpXSkpLCAiLCAiKTsKKyAgICAgICAgICAgIGRhdGFMb2dMbigp
OworICAgICAgICB9CisgICAgICAgIGZhaWwoaG9sZExvY2sobV9sb2NrKSwgbWFrZVN0cmluZyh2
YWxpZGF0aW9uUmVzdWx0LmVycm9yKCksICIsIGluIGZ1bmN0aW9uIGF0IGluZGV4ICIsIFN0cmlu
Zzo6bnVtYmVyKGZ1bmN0aW9uSW5kZXgpKSk7IC8vIEZJWE1FIG1ha2UgdGhpcyBhbiBFeHBlY3Rl
ZC4KKyAgICB9Cit9CisKIGJvb2wgQkJRUGxhbjo6cGFyc2VBbmRWYWxpZGF0ZU1vZHVsZShjb25z
dCB1aW50OF90KiBzb3VyY2UsIHNpemVfdCBzb3VyY2VMZW5ndGgpCiB7CiAgICAgaWYgKG1fc3Rh
dGUgIT0gU3RhdGU6OkluaXRpYWwpCkBAIC0xMDIsMzcgKzEyNCwxNiBAQCBib29sIEJCUVBsYW46
OnBhcnNlQW5kVmFsaWRhdGVNb2R1bGUoY29uc3QgdWludDhfdCogc291cmNlLCBzaXplX3Qgc291
cmNlTGVuZ3RoKQogICAgIGlmIChXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3NlIHx8IE9wdGlv
bnM6OnJlcG9ydENvbXBpbGVUaW1lcygpKQogICAgICAgICBzdGFydFRpbWUgPSBNb25vdG9uaWNU
aW1lOjpub3coKTsKIAotICAgIHsKLSAgICAgICAgTW9kdWxlUGFyc2VyIG1vZHVsZVBhcnNlcihz
b3VyY2UsIHNvdXJjZUxlbmd0aCwgbV9tb2R1bGVJbmZvcm1hdGlvbik7Ci0gICAgICAgIGF1dG8g
cGFyc2VSZXN1bHQgPSBtb2R1bGVQYXJzZXIucGFyc2UoKTsKLSAgICAgICAgaWYgKCFwYXJzZVJl
c3VsdCkgewotICAgICAgICAgICAgQmFzZTo6ZmFpbChob2xkTG9jayhtX2xvY2spLCBXVEZNb3Zl
KHBhcnNlUmVzdWx0LmVycm9yKCkpKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgfQorICAgIG1fc3RyZWFtaW5nUGFyc2VyLmFkZEJ5dGVzKHNvdXJjZSwgc291cmNlTGVuZ3Ro
KTsKKyAgICBpZiAobV9zdHJlYW1pbmdQYXJzZXIuZmluYWxpemUoKSAhPSBTdHJlYW1pbmdQYXJz
ZXI6OlN0YXRlOjpGaW5pc2hlZCkgeworICAgICAgICBmYWlsKGhvbGRMb2NrKG1fbG9jayksIFN0
cmluZyhtX3N0cmVhbWluZ1BhcnNlci5lcnJvck1lc3NhZ2UoKSkpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQotCi0gICAgY29uc3QgYXV0byYgZnVuY3Rpb25zID0gbV9tb2R1bGVJbmZv
cm1hdGlvbi0+ZnVuY3Rpb25zOwotICAgIGZvciAodW5zaWduZWQgZnVuY3Rpb25JbmRleCA9IDA7
IGZ1bmN0aW9uSW5kZXggPCBmdW5jdGlvbnMuc2l6ZSgpOyArK2Z1bmN0aW9uSW5kZXgpIHsKLSAg
ICAgICAgY29uc3QgYXV0byYgZnVuY3Rpb24gPSBmdW5jdGlvbnNbZnVuY3Rpb25JbmRleF07Ci0g
ICAgICAgIGRhdGFMb2dMbklmKFdhc21CQlFQbGFuSW50ZXJuYWw6OnZlcmJvc2UsICJQcm9jZXNz
aW5nIGZ1bmN0aW9uIHN0YXJ0aW5nIGF0OiAiLCBmdW5jdGlvbi5zdGFydCwgIiBhbmQgZW5kaW5n
IGF0OiAiLCBmdW5jdGlvbi5lbmQpOwotICAgICAgICBzaXplX3QgZnVuY3Rpb25MZW5ndGggPSBm
dW5jdGlvbi5lbmQgLSBmdW5jdGlvbi5zdGFydDsKLSAgICAgICAgQVNTRVJUKGZ1bmN0aW9uTGVu
Z3RoIDw9IHNvdXJjZUxlbmd0aCk7Ci0gICAgICAgIEFTU0VSVChmdW5jdGlvbkxlbmd0aCA9PSBm
dW5jdGlvbi5kYXRhLnNpemUoKSk7Ci0gICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUlu
ZGV4ID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGlj
ZXNbZnVuY3Rpb25JbmRleF07Ci0gICAgICAgIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlID0g
U2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChzaWduYXR1cmVJbmRleCk7Ci0KLSAgICAgICAgYXV0
byB2YWxpZGF0aW9uUmVzdWx0ID0gdmFsaWRhdGVGdW5jdGlvbihmdW5jdGlvbi5kYXRhLmRhdGEo
KSwgZnVuY3Rpb24uZGF0YS5zaXplKCksIHNpZ25hdHVyZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi5n
ZXQoKSk7Ci0gICAgICAgIGlmICghdmFsaWRhdGlvblJlc3VsdCkgewotICAgICAgICAgICAgaWYg
KFdhc21CQlFQbGFuSW50ZXJuYWw6OnZlcmJvc2UpIHsKLSAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgZnVuY3Rpb25MZW5ndGg7ICsraSkKLSAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZyhSYXdQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGZ1bmN0aW9uLmRh
dGFbaV0pKSwgIiwgIik7Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBCYXNlOjpmYWlsKGhvbGRMb2NrKG1fbG9jayksIG1ha2VTdHJpbmco
dmFsaWRhdGlvblJlc3VsdC5lcnJvcigpLCAiLCBpbiBmdW5jdGlvbiBhdCBpbmRleCAiLCBTdHJp
bmc6Om51bWJlcihmdW5jdGlvbkluZGV4KSkpOyAvLyBGSVhNRSBtYWtlIHRoaXMgYW4gRXhwZWN0
ZWQuCisgICAgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CisgICAg
ICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQog
ICAgIH0KLQogICAgIGlmIChXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3NlIHx8IE9wdGlvbnM6
OnJlcG9ydENvbXBpbGVUaW1lcygpKQogICAgICAgICBkYXRhTG9nTG4oIlRvb2sgIiwgKE1vbm90
b25pY1RpbWU6Om5vdygpIC0gc3RhcnRUaW1lKS5taWNyb3NlY29uZHMoKSwgIiB1cyB0byB2YWxp
ZGF0ZSBtb2R1bGUiKTsKIApAQCAtMjY2LDE4ICsyNjcsMTUgQEAgdm9pZCBCQlFQbGFuOjpjb21w
aWxlRnVuY3Rpb25zKENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAgICAgICAgY29uc3QgU2ln
bmF0dXJlJiBzaWduYXR1cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVyZUlu
ZGV4KTsKICAgICAgICAgdW5zaWduZWQgZnVuY3Rpb25JbmRleFNwYWNlID0gbV93YXNtVG9XYXNt
RXhpdFN0dWJzLnNpemUoKSArIGZ1bmN0aW9uSW5kZXg7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQo
ZnVuY3Rpb25JbmRleFNwYWNlLCBtX21vZHVsZUluZm9ybWF0aW9uLT5zaWduYXR1cmVJbmRleEZy
b21GdW5jdGlvbkluZGV4U3BhY2UoZnVuY3Rpb25JbmRleFNwYWNlKSA9PSBzaWduYXR1cmVJbmRl
eCk7Ci0gICAgICAgIEFTU0VSVCh2YWxpZGF0ZUZ1bmN0aW9uKGZ1bmN0aW9uLmRhdGEuZGF0YSgp
LCBmdW5jdGlvbi5kYXRhLnNpemUoKSwgc2lnbmF0dXJlLCBtX21vZHVsZUluZm9ybWF0aW9uLmdl
dCgpKSk7CisgICAgICAgIEFTU0VSVCh2YWxpZGF0ZUZ1bmN0aW9uKGZ1bmN0aW9uLCBzaWduYXR1
cmUsIG1fbW9kdWxlSW5mb3JtYXRpb24uZ2V0KCkpKTsKIAogICAgICAgICBtX3VubGlua2VkV2Fz
bVRvV2FzbUNhbGxzW2Z1bmN0aW9uSW5kZXhdID0gVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNh
bGw+KCk7CiAgICAgICAgIFRpZXJVcENvdW50KiB0aWVyVXAgPSBPcHRpb25zOjp1c2VCQlFUaWVy
VXBDaGVja3MoKSA/ICZtX3RpZXJVcENvdW50c1tmdW5jdGlvbkluZGV4XSA6IG51bGxwdHI7Ci0g
ICAgICAgIGF1dG8gcGFyc2VBbmRDb21waWxlUmVzdWx0ID0gcGFyc2VBbmRDb21waWxlKG1fY29t
cGlsYXRpb25Db250ZXh0c1tmdW5jdGlvbkluZGV4XSwgZnVuY3Rpb24uZGF0YS5kYXRhKCksIGZ1
bmN0aW9uLmRhdGEuc2l6ZSgpLCBzaWduYXR1cmUsIG1fdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHNb
ZnVuY3Rpb25JbmRleF0sIG1fbW9kdWxlSW5mb3JtYXRpb24uZ2V0KCksIG1fbW9kZSwgQ29tcGls
YXRpb25Nb2RlOjpCQlFNb2RlLCBmdW5jdGlvbkluZGV4LCB0aWVyVXAsIG1fdGhyb3dXYXNtRXhj
ZXB0aW9uKTsKKyAgICAgICAgYXV0byBwYXJzZUFuZENvbXBpbGVSZXN1bHQgPSBwYXJzZUFuZENv
bXBpbGUobV9jb21waWxhdGlvbkNvbnRleHRzW2Z1bmN0aW9uSW5kZXhdLCBmdW5jdGlvbiwgc2ln
bmF0dXJlLCBtX3VubGlua2VkV2FzbVRvV2FzbUNhbGxzW2Z1bmN0aW9uSW5kZXhdLCBtX21vZHVs
ZUluZm9ybWF0aW9uLmdldCgpLCBtX21vZGUsIENvbXBpbGF0aW9uTW9kZTo6QkJRTW9kZSwgZnVu
Y3Rpb25JbmRleCwgdGllclVwLCBtX3Rocm93V2FzbUV4Y2VwdGlvbik7CiAKICAgICAgICAgaWYg
KFVOTElLRUxZKCFwYXJzZUFuZENvbXBpbGVSZXN1bHQpKSB7CiAgICAgICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fbG9jayk7Ci0gICAgICAgICAgICBpZiAoIW1fZXJyb3JNZXNzYWdl
KSB7Ci0gICAgICAgICAgICAgICAgLy8gTXVsdGlwbGUgY29tcGlsZXMgY291bGQgZmFpbCBzaW11
bHRhbmVvdXNseS4gV2UgYXJiaXRyYXJpbHkgY2hvb3NlIHRoZSBmaXJzdC4KLSAgICAgICAgICAg
ICAgICBmYWlsKGxvY2tlciwgbWFrZVN0cmluZyhwYXJzZUFuZENvbXBpbGVSZXN1bHQuZXJyb3Io
KSwgIiwgaW4gZnVuY3Rpb24gYXQgaW5kZXggIiwgU3RyaW5nOjpudW1iZXIoZnVuY3Rpb25JbmRl
eCkpKTsgLy8gRklYTUUgbWFrZSB0aGlzIGFuIEV4cGVjdGVkLgotICAgICAgICAgICAgfQorICAg
ICAgICAgICAgZmFpbChsb2NrZXIsIG1ha2VTdHJpbmcocGFyc2VBbmRDb21waWxlUmVzdWx0LmVy
cm9yKCksICIsIGluIGZ1bmN0aW9uIGF0IGluZGV4ICIsIFN0cmluZzo6bnVtYmVyKGZ1bmN0aW9u
SW5kZXgpKSk7IC8vIEZJWE1FIG1ha2UgdGhpcyBhbiBFeHBlY3RlZC4KICAgICAgICAgICAgIG1f
Y3VycmVudEluZGV4ID0gZnVuY3Rpb25zLnNpemUoKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQpAQCAtMzA3LDcgKzMwNSw3IEBAIHZvaWQgQkJRUGxhbjo6Y29tcGxldGUoY29uc3Qg
QWJzdHJhY3RMb2NrZXImIGxvY2tlcikKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBM
aW5rQnVmZmVyIGxpbmtCdWZmZXIoKmNvbnRleHQud2FzbUVudHJ5cG9pbnRKSVQsIG51bGxwdHIs
IEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGxp
bmtCdWZmZXIuZGlkRmFpbFRvQWxsb2NhdGUoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgQmFz
ZTo6ZmFpbChsb2NrZXIsIG1ha2VTdHJpbmcoIk91dCBvZiBleGVjdXRhYmxlIG1lbW9yeSBpbiBm
dW5jdGlvbiBhdCBpbmRleCAiLCBTdHJpbmc6Om51bWJlcihmdW5jdGlvbkluZGV4KSkpOworICAg
ICAgICAgICAgICAgICAgICBmYWlsKGxvY2tlciwgbWFrZVN0cmluZygiT3V0IG9mIGV4ZWN1dGFi
bGUgbWVtb3J5IGluIGZ1bmN0aW9uIGF0IGluZGV4ICIsIFN0cmluZzo6bnVtYmVyKGZ1bmN0aW9u
SW5kZXgpKSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9
CiAKQEAgLTMxOSw3ICszMTcsNyBAQCB2b2lkIEJCUVBsYW46OmNvbXBsZXRlKGNvbnN0IEFic3Ry
YWN0TG9ja2VyJiBsb2NrZXIpCiAgICAgICAgICAgICBpZiAoYXV0byBlbWJlZGRlclRvV2FzbUlu
dGVybmFsRnVuY3Rpb24gPSBtX2VtYmVkZGVyVG9XYXNtSW50ZXJuYWxGdW5jdGlvbnMuZ2V0KGZ1
bmN0aW9uSW5kZXgpKSB7CiAgICAgICAgICAgICAgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKCpj
b250ZXh0LmVtYmVkZGVyRW50cnlwb2ludEpJVCwgbnVsbHB0ciwgSklUQ29tcGlsYXRpb25DYW5G
YWlsKTsKICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkobGlua0J1ZmZlci5kaWRGYWlsVG9B
bGxvY2F0ZSgpKSkgewotICAgICAgICAgICAgICAgICAgICBCYXNlOjpmYWlsKGxvY2tlciwgbWFr
ZVN0cmluZygiT3V0IG9mIGV4ZWN1dGFibGUgbWVtb3J5IGluIGZ1bmN0aW9uIGVudHJ5cG9pbnQg
YXQgaW5kZXggIiwgU3RyaW5nOjpudW1iZXIoZnVuY3Rpb25JbmRleCkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZmFpbChsb2NrZXIsIG1ha2VTdHJpbmcoIk91dCBvZiBleGVjdXRhYmxlIG1lbW9y
eSBpbiBmdW5jdGlvbiBlbnRyeXBvaW50IGF0IGluZGV4ICIsIFN0cmluZzo6bnVtYmVyKGZ1bmN0
aW9uSW5kZXgpKSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFu
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5oCmluZGV4IDk0MWFj
NzVmNzBlNmY5MTFiOWZiYjNkZGIxMzc4Y2NmOTY5OTQxYWQuLmI0MDE2MjE0NmY3MzFmMzg5OWUz
NzBlOWE3Yjg3NzUzZTAwMDMzMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21CQlFQbGFuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJC
UVBsYW4uaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIldhc21CM0lSR2VuZXJhdG9yLmgi
CiAjaW5jbHVkZSAiV2FzbU1vZHVsZUluZm9ybWF0aW9uLmgiCiAjaW5jbHVkZSAiV2FzbVBsYW4u
aCIKKyNpbmNsdWRlICJXYXNtU3RyZWFtaW5nUGFyc2VyLmgiCiAjaW5jbHVkZSAiV2FzbVRpZXJV
cENvdW50LmgiCiAjaW5jbHVkZSA8d3RmL0JhZy5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5o
PgpAQCAtNDQsNyArNDUsNyBAQCBjbGFzcyBDYWxsTGlua0luZm87CiAKIG5hbWVzcGFjZSBXYXNt
IHsKIAotY2xhc3MgQkJRUGxhbiBmaW5hbCA6IHB1YmxpYyBQbGFuIHsKK2NsYXNzIEJCUVBsYW4g
ZmluYWwgOiBwdWJsaWMgUGxhbiwgcHVibGljIFN0cmVhbWluZ1BhcnNlckNsaWVudCB7CiBwdWJs
aWM6CiAgICAgdXNpbmcgQmFzZSA9IFBsYW47CiAgICAgZW51bSBBc3luY1dvcmsgOiB1aW50OF90
IHsgRnVsbENvbXBpbGUsIFZhbGlkYXRpb24gfTsKQEAgLTEyNyw2ICsxMjgsOCBAQCBjbGFzcyBC
QlFQbGFuIGZpbmFsIDogcHVibGljIFBsYW4gewogICAgIGJvb2wgaGFzQmVlblByZXBhcmVkKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0ZSA+PSBTdGF0ZTo6UHJlcGFyZWQ7IH0KICAgICBib29sIG11
bHRpVGhyZWFkZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBoYXNCZWVuUHJlcGFyZWQoKTsg
fQogCisgICAgdm9pZCBkaWRQYXJzZUZ1bmN0aW9uKHVuc2lnbmVkLCBjb25zdCBGdW5jdGlvbkRh
dGEmKSBvdmVycmlkZTsKKwogcHJpdmF0ZToKICAgICBjbGFzcyBUaHJlYWRDb3VudEhvbGRlcjsK
ICAgICBmcmllbmQgY2xhc3MgVGhyZWFkQ291bnRIb2xkZXI7CkBAIC0xNDksNiArMTUyLDcgQEAg
Y2xhc3MgQkJRUGxhbiBmaW5hbCA6IHB1YmxpYyBQbGFuIHsKICAgICBWZWN0b3I8VGllclVwQ291
bnQ+IG1fdGllclVwQ291bnRzOwogCiAgICAgVmVjdG9yPFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dh
c21DYWxsPj4gbV91bmxpbmtlZFdhc21Ub1dhc21DYWxsczsKKyAgICBTdHJlYW1pbmdQYXJzZXIg
bV9zdHJlYW1pbmdQYXJzZXI7CiAgICAgU3RhdGUgbV9zdGF0ZTsKIAogICAgIGNvbnN0IEFzeW5j
V29yayBtX2FzeW5jV29yazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21Nb2R1bGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1v
ZHVsZVBhcnNlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyNWRiYTYzMTM4
YzI1YTVlYWJlNmFiMjIyYTNmYjRiNGRjMTkxYmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVs
ZVBhcnNlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIldhc21Nb2R1bGVQYXJzZXIuaCIKLQotI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKLQotI2luY2x1ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCi0jaW5jbHVkZSAiV2FzbU1lbW9y
eUluZm9ybWF0aW9uLmgiCi0jaW5jbHVkZSAiV2FzbU5hbWVTZWN0aW9uUGFyc2VyLmgiCi0jaW5j
bHVkZSAiV2FzbU9wcy5oIgotI2luY2x1ZGUgIldhc21TZWN0aW9uUGFyc2VyLmgiCi0jaW5jbHVk
ZSAiV2FzbVNlY3Rpb25zLmgiCi0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7Ci0K
LWF1dG8gTW9kdWxlUGFyc2VyOjpwYXJzZSgpIC0+IFJlc3VsdAotewotICAgIGNvbnN0IHNpemVf
dCBtaW5TaXplID0gODsKLSAgICB1aW50MzJfdCB2ZXJzaW9uTnVtYmVyOwotCi0gICAgV0FTTV9Q
QVJTRVJfRkFJTF9JRihsZW5ndGgoKSA8IG1pblNpemUsICJleHBlY3RlZCBhIG1vZHVsZSBvZiBh
dCBsZWFzdCAiLCBtaW5TaXplLCAiIGJ5dGVzIik7Ci0gICAgV0FTTV9QQVJTRVJfRkFJTF9JRihs
ZW5ndGgoKSA+IG1heE1vZHVsZVNpemUsICJtb2R1bGUgc2l6ZSAiLCBsZW5ndGgoKSwgIiBpcyB0
b28gbGFyZ2UsIG1heGltdW0gIiwgbWF4TW9kdWxlU2l6ZSk7Ci0gICAgV0FTTV9QQVJTRVJfRkFJ
TF9JRighY29uc3VtZUNoYXJhY3RlcigwKSB8fCAhY29uc3VtZVN0cmluZygiYXNtIiksICJtb2R1
bGVzIGRvZXNuJ3Qgc3RhcnQgd2l0aCAnXFwwYXNtJyIpOwotICAgIFdBU01fUEFSU0VSX0ZBSUxf
SUYoIXBhcnNlVUludDMyKHZlcnNpb25OdW1iZXIpLCAiY2FuJ3QgcGFyc2UgdmVyc2lvbiBudW1i
ZXIiKTsKLSAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHZlcnNpb25OdW1iZXIgIT0gZXhwZWN0ZWRW
ZXJzaW9uTnVtYmVyLCAidW5leHBlY3RlZCB2ZXJzaW9uIG51bWJlciAiLCB2ZXJzaW9uTnVtYmVy
LCAiIGV4cGVjdGVkICIsIGV4cGVjdGVkVmVyc2lvbk51bWJlcik7Ci0KLSAgICAvLyBUaGlzIGlz
IG5vdCByZWFsbHkgYSBrbm93biBzZWN0aW9uLgotICAgIFNlY3Rpb24gcHJldmlvdXNLbm93blNl
Y3Rpb24gPSBTZWN0aW9uOjpCZWdpbjsKLSAgICB3aGlsZSAobV9vZmZzZXQgPCBsZW5ndGgoKSkg
ewotICAgICAgICB1aW50OF90IHNlY3Rpb25CeXRlOwotCi0gICAgICAgIFdBU01fUEFSU0VSX0ZB
SUxfSUYoIXBhcnNlVUludDcoc2VjdGlvbkJ5dGUpLCAiY2FuJ3QgZ2V0IHNlY3Rpb24gYnl0ZSIp
OwotCi0gICAgICAgIFNlY3Rpb24gc2VjdGlvbiA9IFNlY3Rpb246OkN1c3RvbTsKLSAgICAgICAg
V0FTTV9QQVJTRVJfRkFJTF9JRighZGVjb2RlU2VjdGlvbihzZWN0aW9uQnl0ZSwgc2VjdGlvbikp
OwotICAgICAgICBBU1NFUlQoc2VjdGlvbiAhPSBTZWN0aW9uOjpCZWdpbik7Ci0KLSAgICAgICAg
dWludDMyX3Qgc2VjdGlvbkxlbmd0aDsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighdmFs
aWRhdGVPcmRlcihwcmV2aW91c0tub3duU2VjdGlvbiwgc2VjdGlvbiksICJpbnZhbGlkIHNlY3Rp
b24gb3JkZXIsICIsIHByZXZpb3VzS25vd25TZWN0aW9uLCAiIGZvbGxvd2VkIGJ5ICIsIHNlY3Rp
b24pOwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihzZWN0aW9u
TGVuZ3RoKSwgImNhbid0IGdldCAiLCBzZWN0aW9uLCAiIHNlY3Rpb24ncyBsZW5ndGgiKTsKLSAg
ICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihzZWN0aW9uTGVuZ3RoID4gbGVuZ3RoKCkgLSBtX29m
ZnNldCwgc2VjdGlvbiwgIiBzZWN0aW9uIG9mIHNpemUgIiwgc2VjdGlvbkxlbmd0aCwgIiB3b3Vs
ZCBvdmVyZmxvdyBNb2R1bGUncyBzaXplIik7Ci0KLSAgICAgICAgU2VjdGlvblBhcnNlciBwYXJz
ZXIoc291cmNlKCkgKyBtX29mZnNldCwgc2VjdGlvbkxlbmd0aCwgbV9vZmZzZXQsIG1faW5mby5n
ZXQoKSk7Ci0KLSAgICAgICAgc3dpdGNoIChzZWN0aW9uKSB7Ci0jZGVmaW5lIFdBU01fU0VDVElP
Tl9QQVJTRShOQU1FLCBJRCwgREVTQ1JJUFRJT04pICAgICAgICAgICAgICAgICAgIFwKLSAgICAg
ICAgY2FzZSBTZWN0aW9uOjpOQU1FOiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZXIucGFy
c2UgIyMgTkFNRSgpKTsgICAgICAgICAgICAgXAotICAgICAgICAgICAgYnJlYWs7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIH0KLSAg
ICAgICAgRk9SX0VBQ0hfS05PV05fV0FTTV9TRUNUSU9OKFdBU01fU0VDVElPTl9QQVJTRSkKLSN1
bmRlZiBXQVNNX1NFQ1RJT05fUEFSU0UKLQotICAgICAgICBjYXNlIFNlY3Rpb246OkN1c3RvbTog
ewotICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZXIucGFyc2VDdXN0
b20oKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGNhc2UgU2Vj
dGlvbjo6QmVnaW46IHsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgV0FT
TV9QQVJTRVJfRkFJTF9JRihwYXJzZXIubGVuZ3RoKCkgIT0gcGFyc2VyLm9mZnNldCgpLCAicGFy
c2luZyBlbmRlZCBiZWZvcmUgdGhlIGVuZCBvZiAiLCBzZWN0aW9uLCAiIHNlY3Rpb24iKTsKLQot
ICAgICAgICBtX29mZnNldCArPSBzZWN0aW9uTGVuZ3RoOwotCi0KLSAgICAgICAgaWYgKGlzS25v
d25TZWN0aW9uKHNlY3Rpb24pKQotICAgICAgICAgICAgcHJldmlvdXNLbm93blNlY3Rpb24gPSBz
ZWN0aW9uOwotICAgIH0KLQotICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp1c2VFYWdlcldlYkFz
c2VtYmx5TW9kdWxlSGFzaGluZygpKSkgewotICAgICAgICBTSEExIGhhc2hlcjsKLSAgICAgICAg
aGFzaGVyLmFkZEJ5dGVzKHNvdXJjZSgpLCBsZW5ndGgoKSk7Ci0gICAgICAgIG1faW5mby0+bmFt
ZVNlY3Rpb24tPnNldEhhc2goaGFzaGVyLmNvbXB1dGVIZXhEaWdlc3QoKSk7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIHsgfTsKLX0KLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KLQotI2VuZGlm
IC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21Nb2R1bGVQYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21Nb2R1bGVQYXJzZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDMzYjc3OTUz
MzczZGIyN2YxNTE5OWQ5ODA0MDgwZjA5Mjk2ZWRiOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9k
dWxlUGFyc2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCi0KLSNpbmNsdWRlICJXYXNtRm9ybWF0LmgiCi0jaW5jbHVkZSAiV2Fz
bU9wcy5oIgotI2luY2x1ZGUgIldhc21QYXJzZXIuaCIKLSNpbmNsdWRlIDx3dGYvT3B0aW9uYWwu
aD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
V2FzbSB7Ci0KLWNsYXNzIE1vZHVsZVBhcnNlciA6IHB1YmxpYyBQYXJzZXI8dm9pZD4gewotcHVi
bGljOgotICAgIE1vZHVsZVBhcnNlcihjb25zdCB1aW50OF90KiBzb3VyY2VCdWZmZXIsIHNpemVf
dCBzb3VyY2VMZW5ndGgsIE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvKQotICAgICAgICA6IFBhcnNl
cihzb3VyY2VCdWZmZXIsIHNvdXJjZUxlbmd0aCkKLSAgICAgICAgLCBtX2luZm8oaW5mbykKLSAg
ICB7Ci0gICAgfQotCi0gICAgUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZSgpOwotCi1w
cml2YXRlOgotICAgIFJlZjxNb2R1bGVJbmZvcm1hdGlvbj4gbV9pbmZvOwotfTsKLQotfSB9IC8v
IG5hbWVzcGFjZSBKU0M6Oldhc20KLQotI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcAppbmRleCA5ZTBjNGE1NjY2
ZTQ0ZTBlYWNjMjMxMmFiYmI3NjU0NTNiODc5ZjQ4Li5jMWExZDBhMjA5YTQ3MDM5YWEyM2MyODQ0
ZjFlOTNlNjkwMjc3MmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtT01HUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1Bs
YW4uY3BwCkBAIC03NiwxMSArNzYsMTEgQEAgdm9pZCBPTUdQbGFuOjp3b3JrKENvbXBpbGF0aW9u
RWZmb3J0KQogCiAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtX21vZHVsZUlu
Zm9ybWF0aW9uLT5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1ttX2Z1bmN0aW9uSW5k
ZXhdOwogICAgIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlID0gU2lnbmF0dXJlSW5mb3JtYXRp
b246OmdldChzaWduYXR1cmVJbmRleCk7Ci0gICAgQVNTRVJUKHZhbGlkYXRlRnVuY3Rpb24oZnVu
Y3Rpb24uZGF0YS5kYXRhKCksIGZ1bmN0aW9uLmRhdGEuc2l6ZSgpLCBzaWduYXR1cmUsIG1fbW9k
dWxlSW5mb3JtYXRpb24uZ2V0KCkpKTsKKyAgICBBU1NFUlQodmFsaWRhdGVGdW5jdGlvbihmdW5j
dGlvbiwgc2lnbmF0dXJlLCBtX21vZHVsZUluZm9ybWF0aW9uLmdldCgpKSk7CiAKICAgICBWZWN0
b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4gdW5saW5rZWRDYWxsczsKICAgICBDb21waWxhdGlv
bkNvbnRleHQgY29udGV4dDsKLSAgICBhdXRvIHBhcnNlQW5kQ29tcGlsZVJlc3VsdCA9IHBhcnNl
QW5kQ29tcGlsZShjb250ZXh0LCBmdW5jdGlvbi5kYXRhLmRhdGEoKSwgZnVuY3Rpb24uZGF0YS5z
aXplKCksIHNpZ25hdHVyZSwgdW5saW5rZWRDYWxscywgbV9tb2R1bGVJbmZvcm1hdGlvbi5nZXQo
KSwgbV9tb2RlLCBDb21waWxhdGlvbk1vZGU6Ok9NR01vZGUsIG1fZnVuY3Rpb25JbmRleCk7Cisg
ICAgYXV0byBwYXJzZUFuZENvbXBpbGVSZXN1bHQgPSBwYXJzZUFuZENvbXBpbGUoY29udGV4dCwg
ZnVuY3Rpb24sIHNpZ25hdHVyZSwgdW5saW5rZWRDYWxscywgbV9tb2R1bGVJbmZvcm1hdGlvbi5n
ZXQoKSwgbV9tb2RlLCBDb21waWxhdGlvbk1vZGU6Ok9NR01vZGUsIG1fZnVuY3Rpb25JbmRleCk7
CiAKICAgICBpZiAoVU5MSUtFTFkoIXBhcnNlQW5kQ29tcGlsZVJlc3VsdCkpIHsKICAgICAgICAg
ZmFpbChob2xkTG9jayhtX2xvY2spLCBtYWtlU3RyaW5nKHBhcnNlQW5kQ29tcGlsZVJlc3VsdC5l
cnJvcigpLCAid2hlbiB0cnlpbmcgdG8gdGllciB1cCAiLCBTdHJpbmc6Om51bWJlcihtX2Z1bmN0
aW9uSW5kZXgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
UGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5jcHAKaW5kZXgg
OTk3NGVjZmU1NWJhZjI4OWVlYzU2NTA2NmExY2Q0OWFlMjNhODIwYS4uZTY1ZjcwNzM5NmVjYTBh
MTQ3NzczMmFkZDM0M2MxOTQ3ZDA1ZTJkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21QbGFuLmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIldhc21DYWxsaW5nQ29udmVu
dGlvbi5oIgogI2luY2x1ZGUgIldhc21GYXVsdFNpZ25hbEhhbmRsZXIuaCIKICNpbmNsdWRlICJX
YXNtTWVtb3J5LmgiCi0jaW5jbHVkZSAiV2FzbU1vZHVsZVBhcnNlci5oIgogI2luY2x1ZGUgIldh
c21WYWxpZGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8d3RmL0xv
Y2tlci5oPgpAQCAtMTMxLDYgKzEzMCw5IEBAIGJvb2wgUGxhbjo6dHJ5UmVtb3ZlQ29udGV4dEFu
ZENhbmNlbElmTGFzdChDb250ZXh0JiBjb250ZXh0KQogCiB2b2lkIFBsYW46OmZhaWwoY29uc3Qg
QWJzdHJhY3RMb2NrZXImIGxvY2tlciwgU3RyaW5nJiYgZXJyb3JNZXNzYWdlKQogeworICAgIEFT
U0VSVChlcnJvck1lc3NhZ2UpOworICAgIGlmIChmYWlsZWQoKSkKKyAgICAgICAgcmV0dXJuOwog
ICAgIGRhdGFMb2dMbklmKFdhc21QbGFuSW50ZXJuYWw6OnZlcmJvc2UsICJmYWlsaW5nIHdpdGgg
bWVzc2FnZTogIiwgZXJyb3JNZXNzYWdlKTsKICAgICBtX2Vycm9yTWVzc2FnZSA9IFdURk1vdmUo
ZXJyb3JNZXNzYWdlKTsKICAgICBjb21wbGV0ZShsb2NrZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCmluZGV4IDlhOWJhY2I2N2RlZDI1
MDQ1MzVkOGMyZGU1YzVlZDgzM2RlZjE2MDIuLjVjMDdiN2E5ZDJmNzE4ZjQ3M2M1YjM2ZGJiN2Q1
ZGU3NWQ3ZjRmYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21T
ZWN0aW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2Vj
dGlvblBhcnNlci5jcHAKQEAgLTM5OSwyOSArMzk5LDEwIEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6
cGFyc2VFbGVtZW50KCkgLT4gUGFydGlhbFJlc3VsdAogICAgIHJldHVybiB7IH07CiB9CiAKLS8v
IFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjaGFuZ2VkIHRvIGJlIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEIG9uY2Ugd2Ugc3dpdGNoIG91ciBwYXJzaW5nIGluZnJhc3RydWN0dXJlIHRvIHRoZSBz
dHJlYW1pbmcgcGFyc2VyLgogYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUNvZGUoKSAtPiBQYXJ0
aWFsUmVzdWx0CiB7Ci0gICAgdWludDMyX3QgY291bnQ7Ci0gICAgV0FTTV9QQVJTRVJfRkFJTF9J
RighcGFyc2VWYXJVSW50MzIoY291bnQpLCAiY2FuJ3QgZ2V0IENvZGUgc2VjdGlvbidzIGNvdW50
Iik7Ci0gICAgV0FTTV9QQVJTRVJfRkFJTF9JRihjb3VudCA9PSBzdGQ6Om51bWVyaWNfbGltaXRz
PHVpbnQzMl90Pjo6bWF4KCksICJDb2RlIHNlY3Rpb24ncyBjb3VudCBpcyB0b28gYmlnICIsIGNv
dW50KTsKLSAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGNvdW50ICE9IG1faW5mby0+ZnVuY3Rpb25z
LnNpemUoKSwgIkNvZGUgc2VjdGlvbiBjb3VudCAiLCBjb3VudCwgIiBleGNlZWRzIHRoZSBkZWNs
YXJlZCBudW1iZXIgb2YgZnVuY3Rpb25zICIsIG1faW5mby0+ZnVuY3Rpb25zLnNpemUoKSk7Ci0K
LSAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICB1aW50
MzJfdCBmdW5jdGlvblNpemU7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFy
VUludDMyKGZ1bmN0aW9uU2l6ZSksICJjYW4ndCBnZXQgIiwgaSwgInRoIENvZGUgZnVuY3Rpb24n
cyBzaXplIik7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoZnVuY3Rpb25TaXplID4gbGVu
Z3RoKCksICJDb2RlIGZ1bmN0aW9uJ3Mgc2l6ZSAiLCBmdW5jdGlvblNpemUsICIgZXhjZWVkcyB0
aGUgbW9kdWxlJ3Mgc2l6ZSAiLCBsZW5ndGgoKSk7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxf
SUYoZnVuY3Rpb25TaXplID4gbGVuZ3RoKCkgLSBtX29mZnNldCwgIkNvZGUgZnVuY3Rpb24ncyBz
aXplICIsIGZ1bmN0aW9uU2l6ZSwgIiBleGNlZWRzIHRoZSBtb2R1bGUncyByZW1haW5pbmcgc2l6
ZSIsIGxlbmd0aCgpIC0gbV9vZmZzZXQpOwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGZ1
bmN0aW9uU2l6ZSA+IG1heEZ1bmN0aW9uU2l6ZSwgIkNvZGUgZnVuY3Rpb24ncyBzaXplICIsIGZ1
bmN0aW9uU2l6ZSwgIiBpcyB0b28gYmlnIik7Ci0KLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRh
dGEoZnVuY3Rpb25TaXplKTsKLSAgICAgICAgc3RkOjptZW1jcHkoZGF0YS5kYXRhKCksIHNvdXJj
ZSgpICsgbV9vZmZzZXQsIGZ1bmN0aW9uU2l6ZSk7Ci0gICAgICAgIG1faW5mby0+ZnVuY3Rpb25z
W2ldLnN0YXJ0ID0gbV9vZmZzZXRJblNvdXJjZSArIG1fb2Zmc2V0OwotICAgICAgICBtX2luZm8t
PmZ1bmN0aW9uc1tpXS5lbmQgPSBtX29mZnNldEluU291cmNlICsgbV9vZmZzZXQgKyBmdW5jdGlv
blNpemU7Ci0gICAgICAgIG1faW5mby0+ZnVuY3Rpb25zW2ldLmRhdGEgPSBXVEZNb3ZlKGRhdGEp
OwotICAgICAgICBtX29mZnNldCArPSBmdW5jdGlvblNpemU7Ci0gICAgfQotCisgICAgLy8gVGhl
IENvZGUgc2VjdGlvbiBpcyBoYW5kbGVkIHNwZWNpYWxseSBpbiBTdHJlYW1pbmdQYXJzZXIuCisg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4geyB9OwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2Vy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TdHJlYW1pbmdQYXJzZXIuY3Bw
CmluZGV4IDlmMzcyNjAxZDUxMzMyYmUyNWUwN2UwNTE4MjM1OTk0ZWI0YzA4OTkuLmM5NThiOTE0
MzE3YmQ1ZjlhZTRkMmViMmJmZGYwNjU5MWZiYjYwMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21TdHJlYW1pbmdQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21TdHJlYW1pbmdQYXJzZXIuY3BwCkBAIC0yOCw3ICsyOCw2IEBA
CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKLSNpbmNsdWRlICJXYXNtTW9kdWxlUGFyc2Vy
LmgiCiAjaW5jbHVkZSAiV2FzbVNlY3Rpb25QYXJzZXIuaCIKICNpbmNsdWRlIDx3dGYvVW5hbGln
bmVkQWNjZXNzLmg+CiAKQEAgLTY2LDggKzY1LDkgQEAgTkVWRVJfSU5MSU5FIGF1dG8gV0FSTl9V
TlVTRURfUkVUVVJOIFN0cmVhbWluZ1BhcnNlcjo6ZmFpbChBcmdzLi4uIGFyZ3MpIC0+IFN0YXQK
ICAgICByZXR1cm4gU3RhdGU6OkZhdGFsRXJyb3I7CiB9CiAKLVN0cmVhbWluZ1BhcnNlcjo6U3Ry
ZWFtaW5nUGFyc2VyKE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvKQorU3RyZWFtaW5nUGFyc2VyOjpT
dHJlYW1pbmdQYXJzZXIoTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIFN0cmVhbWluZ1BhcnNlckNs
aWVudCYgY2xpZW50KQogICAgIDogbV9pbmZvKGluZm8pCisgICAgLCBtX2NsaWVudChjbGllbnQp
CiB7CiAgICAgZGF0YUxvZ0xuSWYoV2FzbVN0cmVhbWluZ1BhcnNlckludGVybmFsOjp2ZXJib3Nl
LCAic3RhcnRpbmcgdmFsaWRhdGlvbiIpOwogfQpAQCAtMTE4LDYgKzExOCw3IEBAIGF1dG8gU3Ry
ZWFtaW5nUGFyc2VyOjpwYXJzZUNvZGVTZWN0aW9uU2l6ZSh1aW50MzJfdCBmdW5jdGlvbkNvdW50
KSAtPiBTdGF0ZQogCiAgICAgaWYgKG1fZnVuY3Rpb25JbmRleCA9PSBtX2Z1bmN0aW9uQ291bnQp
IHsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRigobV9jb2RlT2Zmc2V0ICsgbV9zZWN0aW9u
TGVuZ3RoKSAhPSBtX25leHRPZmZzZXQsICJwYXJzaW5nIGVuZGVkIGJlZm9yZSB0aGUgZW5kIG9m
ICIsIG1fc2VjdGlvbiwgIiBzZWN0aW9uIik7CisgICAgICAgIG1fY2xpZW50LmRpZFBhcnNlU2Vj
dGlvbihtX3NlY3Rpb24pOwogICAgICAgICByZXR1cm4gU3RhdGU6OlNlY3Rpb25JRDsKICAgICB9
CiAgICAgcmV0dXJuIFN0YXRlOjpGdW5jdGlvblNpemU7CkBAIC0xMzcsOSArMTM4LDEyIEBAIGF1
dG8gU3RyZWFtaW5nUGFyc2VyOjpwYXJzZUZ1bmN0aW9uUGF5bG9hZChWZWN0b3I8dWludDhfdD4m
JiBkYXRhKSAtPiBTdGF0ZQogICAgIGZ1bmN0aW9uLmVuZCA9IG1fb2Zmc2V0ICsgbV9mdW5jdGlv
blNpemU7CiAgICAgZnVuY3Rpb24uZGF0YSA9IFdURk1vdmUoZGF0YSk7CiAgICAgZGF0YUxvZ0xu
SWYoV2FzbVN0cmVhbWluZ1BhcnNlckludGVybmFsOjp2ZXJib3NlLCAiUHJvY2Vzc2luZyBmdW5j
dGlvbiBzdGFydGluZyBhdDogIiwgZnVuY3Rpb24uc3RhcnQsICIgYW5kIGVuZGluZyBhdDogIiwg
ZnVuY3Rpb24uZW5kKTsKKyAgICBtX2NsaWVudC5kaWRQYXJzZUZ1bmN0aW9uKG1fZnVuY3Rpb25J
bmRleCwgZnVuY3Rpb24pOwogICAgICsrbV9mdW5jdGlvbkluZGV4OworCiAgICAgaWYgKG1fZnVu
Y3Rpb25JbmRleCA9PSBtX2Z1bmN0aW9uQ291bnQpIHsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJ
TF9JRigobV9jb2RlT2Zmc2V0ICsgbV9zZWN0aW9uTGVuZ3RoKSAhPSAobV9vZmZzZXQgKyBtX2Z1
bmN0aW9uU2l6ZSksICJwYXJzaW5nIGVuZGVkIGJlZm9yZSB0aGUgZW5kIG9mICIsIG1fc2VjdGlv
biwgIiBzZWN0aW9uIik7CisgICAgICAgIG1fY2xpZW50LmRpZFBhcnNlU2VjdGlvbihtX3NlY3Rp
b24pOwogICAgICAgICByZXR1cm4gU3RhdGU6OlNlY3Rpb25JRDsKICAgICB9CiAgICAgcmV0dXJu
IFN0YXRlOjpGdW5jdGlvblNpemU7CkBAIC0xNzAsNiArMTc0LDcgQEAgYXV0byBTdHJlYW1pbmdQ
YXJzZXI6OnBhcnNlU2VjdGlvblBheWxvYWQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgLT4gU3Rh
dGUKIAogICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYocGFyc2VyLmxlbmd0aCgpICE9IHBhcnNlci5v
ZmZzZXQoKSwgInBhcnNpbmcgZW5kZWQgYmVmb3JlIHRoZSBlbmQgb2YgIiwgbV9zZWN0aW9uLCAi
IHNlY3Rpb24iKTsKIAorICAgIG1fY2xpZW50LmRpZFBhcnNlU2VjdGlvbihtX3NlY3Rpb24pOwog
ICAgIHJldHVybiBTdGF0ZTo6U2VjdGlvbklEOwogfQogCkBAIC0zODAsNiArMzg1LDcgQEAgYXV0
byBTdHJlYW1pbmdQYXJzZXI6OmZpbmFsaXplKCkgLT4gU3RhdGUKICAgICAgICAgICAgIGlmIChV
TkxJS0VMWShPcHRpb25zOjp1c2VFYWdlcldlYkFzc2VtYmx5TW9kdWxlSGFzaGluZygpKSkKICAg
ICAgICAgICAgICAgICBtX2luZm8tPm5hbWVTZWN0aW9uLT5zZXRIYXNoKG1faGFzaGVyLmNvbXB1
dGVIZXhEaWdlc3QoKSk7CiAgICAgICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkZpbmlzaGVkOwor
ICAgICAgICAgICAgbV9jbGllbnQuZGlkRmluaXNoUGFyc2luZygpOwogICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIG1fc3RhdGUgPSBmYWlsT25TdGF0ZShTdGF0ZTo6U2VjdGlvbklEKTsKICAg
ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
U3RyZWFtaW5nUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFt
aW5nUGFyc2VyLmgKaW5kZXggMWZiYjZiMjJiMzU1OWFmMDM4YjgwNGYxMjVhN2VmYTVhOWE1ZDgx
OC4uYWI5MmNhY2U4OTNhZDMyODNiNzFlYTM0Y2UyZmZmNDZmMTk1ODQ0MCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVN0cmVhbWluZ1BhcnNlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TdHJlYW1pbmdQYXJzZXIuaApAQCAtMzksNiAr
MzksMTEgQEAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKIGNsYXNzIFN0cmVh
bWluZ1BhcnNlckNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+U3RyZWFtaW5nUGFyc2Vy
Q2xpZW50KCkgPSBkZWZhdWx0OworICAgIHZpcnR1YWwgdm9pZCBkaWRQYXJzZVNlY3Rpb24oU2Vj
dGlvbikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFBhcnNlRnVuY3Rpb24odW5zaWduZWQsIGNv
bnN0IEZ1bmN0aW9uRGF0YSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hQYXJzaW5n
KCkgeyB9CiB9OwogCiBjbGFzcyBTdHJlYW1pbmdQYXJzZXIgewpAQCAtNjksNyArNzQsNyBAQCBj
bGFzcyBTdHJlYW1pbmdQYXJzZXIgewogCiAgICAgZW51bSBjbGFzcyBJc0VuZE9mU3RyZWFtIHsg
WWVzLCBObyB9OwogCi0gICAgU3RyZWFtaW5nUGFyc2VyKE1vZHVsZUluZm9ybWF0aW9uJik7Cisg
ICAgU3RyZWFtaW5nUGFyc2VyKE1vZHVsZUluZm9ybWF0aW9uJiwgU3RyZWFtaW5nUGFyc2VyQ2xp
ZW50Jik7CiAKICAgICBTdGF0ZSBhZGRCeXRlcyhjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90
IGxlbmd0aCkgeyByZXR1cm4gYWRkQnl0ZXMoYnl0ZXMsIGxlbmd0aCwgSXNFbmRPZlN0cmVhbTo6
Tm8pOyB9CiAgICAgU3RhdGUgZmluYWxpemUoKTsKQEAgLTk5LDYgKzEwNCw3IEBAIGNsYXNzIFN0
cmVhbWluZ1BhcnNlciB7CiAgICAgU3RhdGUgZmFpbE9uU3RhdGUoU3RhdGUpOwogCiAgICAgUmVm
PE1vZHVsZUluZm9ybWF0aW9uPiBtX2luZm87CisgICAgU3RyZWFtaW5nUGFyc2VyQ2xpZW50JiBt
X2NsaWVudDsKICAgICBWZWN0b3I8dWludDhfdD4gbV9yZW1haW5pbmc7CiAgICAgU3RyaW5nIG1f
ZXJyb3JNZXNzYWdlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtVmFsaWRhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRl
LmNwcAppbmRleCBlYTRhNzU5OGZhMDQ5NTQ0Zjg3Njg0YTUwZTNjZmNiOTEzMTA4ZWFmLi4wMTI3
MzcyZjIzYzViYWNlZDJiYmJkYWY0ZDM1MGEzZTU0NDI5MTYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5jcHAKQEAgLTM3NywxMCArMzc3LDEwIEBAIHZvaWQg
VmFsaWRhdGU6OmR1bXAoY29uc3QgVmVjdG9yPENvbnRyb2xFbnRyeT4mIGNvbnRyb2xTdGFjaywg
Y29uc3QgRXhwcmVzc2lvbkxpCiAgICAgZGF0YUxvZ0xuKCk7CiB9CiAKLUV4cGVjdGVkPHZvaWQs
IFN0cmluZz4gdmFsaWRhdGVGdW5jdGlvbihjb25zdCB1aW50OF90KiBzb3VyY2UsIHNpemVfdCBs
ZW5ndGgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlv
biYgbW9kdWxlKQorRXhwZWN0ZWQ8dm9pZCwgU3RyaW5nPiB2YWxpZGF0ZUZ1bmN0aW9uKGNvbnN0
IEZ1bmN0aW9uRGF0YSYgZnVuY3Rpb24sIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBjb25z
dCBNb2R1bGVJbmZvcm1hdGlvbiYgbW9kdWxlKQogewogICAgIFZhbGlkYXRlIGNvbnRleHQobW9k
dWxlKTsKLSAgICBGdW5jdGlvblBhcnNlcjxWYWxpZGF0ZT4gdmFsaWRhdG9yKGNvbnRleHQsIHNv
dXJjZSwgbGVuZ3RoLCBzaWduYXR1cmUsIG1vZHVsZSk7CisgICAgRnVuY3Rpb25QYXJzZXI8VmFs
aWRhdGU+IHZhbGlkYXRvcihjb250ZXh0LCBmdW5jdGlvbi5kYXRhLmRhdGEoKSwgZnVuY3Rpb24u
ZGF0YS5zaXplKCksIHNpZ25hdHVyZSwgbW9kdWxlKTsKICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVS
X0ZBSUxTKHZhbGlkYXRvci5wYXJzZSgpKTsKICAgICByZXR1cm4geyB9OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRhdGUuaAppbmRleCAyODI4M2NmZWE4MmFmOTE0MWNi
YjBhOTMwZGUwMjk5M2E5OTA1YWIxLi5hOTUyYWFjNjhhODJmODkwZmNlOTI5YjYyZTc4MDY1MzM4
ZjAyZDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRh
dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRhdGUuaApAQCAt
MzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIFdhc20gewogCi1FeHBl
Y3RlZDx2b2lkLCBTdHJpbmc+IHZhbGlkYXRlRnVuY3Rpb24oY29uc3QgdWludDhfdCosIHNpemVf
dCwgY29uc3QgU2lnbmF0dXJlJiwgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mKTsKK0V4cGVjdGVk
PHZvaWQsIFN0cmluZz4gdmFsaWRhdGVGdW5jdGlvbihjb25zdCBGdW5jdGlvbkRhdGEmLCBjb25z
dCBTaWduYXR1cmUmLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYpOwogCiB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6V2FzbQogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDY5OGExNjA5Njc0NzdjNGY1NTAxYWVhM2NlODc4NWRjMzNhNGQ3NTUu
LjMxOTIzZWMxYWJkMjliOTljZjBlMzk5Nzg5N2FkNzE0YjE1OGM0YjEgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTgtMDgtMjggIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4K
KworICAgICAgICBbV2ViQXNzZW1ibHldIFVzZSBTdHJlYW1pbmdQYXJzZXIgaW4gZXhpc3Rpbmcg
V2FzbTo6QkJRUGxhbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg5MDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhlIG9mZnNldCBwZXJmb3JtaW5nIHRoZSB2YWxpZGF0aW9uIGJlY29tZXMgYSBiaXQg
ZGlmZmVyZW50LgorICAgICAgICBUaGUgb2Zmc2V0IDAgaXMgbmljZSBzaW5jZSBpdCBpcyB0aGUg
c3RhcnRpbmcgb2Zmc2V0IG9mIHRoZSBNb2R1bGUgaGVhZGVyIHNpZ25hdHVyZSBjb21wYXJlZCB0
byB0aGUgb2Zmc2V0IDguCisKKyAgICAgICAgKiB3YXNtL2pzLWFwaS92ZXJzaW9uLmpzOgorCiAy
MDE4LTA4LTI3ICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CiAK
ICAgICAgICAgW1dlYkFzc2VtYmx5XSBQYXJzZSB3YXNtIG1vZHVsZXMgaW4gYSBzdHJlYW1pbmcg
ZmFzaGlvbgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2pzLWFwaS92ZXJzaW9uLmpzIGIvSlNU
ZXN0cy93YXNtL2pzLWFwaS92ZXJzaW9uLmpzCmluZGV4IDA0ODZmY2ZkZGVmZDA4MjFkMzkyNDZj
YjY0MDg3MzRiZmViZjIyZTIuLjRkMTBlOGMxNWQwZTFkNzc5NDZkODdjZWU4ZDIwZjcyMjBkOWQy
NGYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvdmVyc2lvbi5qcworKysgYi9KU1Rl
c3RzL3dhc20vanMtYXBpL3ZlcnNpb24uanMKQEAgLTUsNSArNSw1IEBACiAgICAgaWYgKHZlcnNp
b24gPT09IDEpCiAgICAgICAgIGNvbnRpbnVlOwogICAgIGNvbnN0IGVtcHR5TW9kdWxlQXJyYXkg
PSBVaW50OEFycmF5Lm9mKDB4MCwgMHg2MSwgMHg3MywgMHg2ZCwgdmVyc2lvbiwgMHgwMCwgMHgw
MCwgMHgwMCk7Ci0gICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuTW9kdWxl
KGVtcHR5TW9kdWxlQXJyYXkpLCBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IsIGBXZWJBc3NlbWJs
eS5Nb2R1bGUgZG9lc24ndCBwYXJzZSBhdCBieXRlIDg6IHVuZXhwZWN0ZWQgdmVyc2lvbiBudW1i
ZXIgJHt2ZXJzaW9ufSBleHBlY3RlZCAxYCk7CisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcg
V2ViQXNzZW1ibHkuTW9kdWxlKGVtcHR5TW9kdWxlQXJyYXkpLCBXZWJBc3NlbWJseS5Db21waWxl
RXJyb3IsIGBXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCBwYXJzZSBhdCBieXRlIDA6IHVuZXhw
ZWN0ZWQgdmVyc2lvbiBudW1iZXIgJHt2ZXJzaW9ufSBleHBlY3RlZCAxYCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348292</attachid>
            <date>2018-08-28 07:49:26 -0700</date>
            <delta_ts>2019-08-18 03:04:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189043-20180828234925.patch</filename>
            <type>text/plain</type>
            <size>43381</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
OTg5OGNkZmFhNmFhMWUyZmFmNDM5NTU2OGJhYTRiZTE1Njc0YzI2Li4wZDQxMmU1MDVmMGIwODZh
NmYyNjBlZjc0MTUyYTFmZGMyYjU1ODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OCBAQAorMjAxOC0wOC0yOCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtXZWJBc3NlbWJseV0gVXNlIFN0cmVhbWluZ1BhcnNlciBp
biBleGlzdGluZyBXYXNtOjpCQlFQbGFuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODkwNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludGVncmF0ZXMgV2FzbTo6U3RyZWFtaW5nUGFy
c2VyIGludG8gdGhlIGV4aXN0aW5nIFdhc206OkJCUVBsYW4uCisgICAgICAgIEJ1dCBpdCBkb2Vz
IG5vdCB1c2UgYW55IHN0cmVhbWluZyBmZWF0dXJlLiBBbmQgV2FzbTo6QkJRUGxhbiB3b3VsZCBu
b3QgdXNlIHRoZQorICAgICAgICBzdHJlYW1pbmcgZmVhdHVyZSBzaW5jZSBpdCBhc3N1bWVzIHRo
YXQgYWxsIHRoZSBkYXRhIGlzIGFscmVhZHkgZ2l2ZW4uCisgICAgICAgIEluIGEgc3Vic2VxdWVu
dCBwYXRjaCwgd2Ugd2lsbCBjcmVhdGUgYSBuZXcgUGxhbiBhbmQgbWFuYWdlciBjbGFzcyBmb3Ig
c3RyZWFtaW5nCisgICAgICAgIHBhcnNpbmcgYW5kIHN0cmVhbWluZyBjb21waWxpbmcgYW5kIHVz
ZSB0aGVtIGZvciBXZWJBc3NlbWJseS5jb21waWxlU3RyZWFtaW5nIGFuZAorICAgICAgICBpbnN0
YW50aWF0ZVN0cmVhbWluZy4KKworICAgICAgICBUaGUgaW50ZW5zaW9uIG9mIHRoaXMgcGF0Y2gg
aXMgcmVtb3ZpbmcgdGhlIG9sZCBXYXNtOjpNb2R1bGVQYXJzZXIuCisKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMu
dHh0OgorICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoV1RGOjpXYXNt
U3RyZWFtaW5nUGFyc2VyOjpXYXNtU3RyZWFtaW5nUGFyc2VyKToKKyAgICAgICAgKiB3YXNtL1dh
c21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21waWxl
KTogVXNlIEZ1bmN0aW9uRGF0YSwgaXQgaXMgZ29vZCBzaW5jZSBpdCBpcyBtb3JlIHN0cm9uZ2x5
IHR5cGVkLgorICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuaDoKKyAgICAgICAgKiB3
YXNtL1dhc21CQlFQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6QkJRUGxh
bik6CisgICAgICAgIChKU0M6Oldhc206OkJCUVBsYW46OmRpZFBhcnNlRnVuY3Rpb24pOiBBZGQg
YSBjYWxsYmFjaywgd2hpY2ggaW52b2tlcyB2YWxpZGF0aW9uLgorICAgICAgICAoSlNDOjpXYXNt
OjpCQlFQbGFuOjpwYXJzZUFuZFZhbGlkYXRlTW9kdWxlKTogVXNlIFN0cmVhbWluZ1BhcnNlciBp
bnN0ZWFkIG9mIG9sZCBNb2R1bGVQYXJzZXIuCisgICAgICAgIChKU0M6Oldhc206OkJCUVBsYW46
OmNvbXBpbGVGdW5jdGlvbnMpOgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpjb21wbGV0
ZSk6CisgICAgICAgICogd2FzbS9XYXNtQkJRUGxhbi5oOgorICAgICAgICAqIHdhc20vV2FzbU1v
ZHVsZVBhcnNlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogd2FzbS9XYXNtTW9kdWxlUGFyc2Vy
Lmg6IFJlbW92ZWQgb2xkIFdhc206Ok1vZHVsZVBhcnNlci4KKyAgICAgICAgKiB3YXNtL1dhc21P
TUdQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6T01HUGxhbjo6d29yayk6CisgICAgICAg
ICogd2FzbS9XYXNtUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlBsYW46OmZhaWwpOiBN
YWtlIGZhaWwgZnVuY3Rpb24gY2FsbGFibGUgbXVsdGlwbGUgdGltZXMuIFRoZSBmaXJzdCBlcnJv
ciB3aWxsIGJlIHVzZWQuCisgICAgICAgICogd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHA6Cisg
ICAgICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlQ29kZSk6IFNpbmNlIHRoZSBD
b2RlIHNlY3Rpb24gaXMgc3BlY2lhbGx5IGhhbmRsZWQgaW4KKyAgICAgICAgU3RyZWFtaW5nUGFy
c2VyLCB0aGlzIGNvZGUgaXMgbmV2ZXIgdXNlZC4KKyAgICAgICAgKiB3YXNtL1dhc21TdHJlYW1p
bmdQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpTdHJlYW1pbmdQYXJzZXI6OlN0cmVh
bWluZ1BhcnNlcik6CisgICAgICAgIChKU0M6Oldhc206OlN0cmVhbWluZ1BhcnNlcjo6cGFyc2VD
b2RlU2VjdGlvblNpemUpOgorICAgICAgICAoSlNDOjpXYXNtOjpTdHJlYW1pbmdQYXJzZXI6OnBh
cnNlRnVuY3Rpb25QYXlsb2FkKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U3RyZWFtaW5nUGFyc2Vy
OjpwYXJzZVNlY3Rpb25QYXlsb2FkKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U3RyZWFtaW5nUGFy
c2VyOjpmaW5hbGl6ZSk6IENhbGwgY2xpZW50J3MgY2FsbGJhY2tzIGF0IGFwcHJvcHJpYXRlIHRp
bWluZ3MuCisgICAgICAgICogd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmg6CisgICAgICAgIChK
U0M6Oldhc206OlN0cmVhbWluZ1BhcnNlckNsaWVudDo6ZGlkUGFyc2VTZWN0aW9uKToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6U3RyZWFtaW5nUGFyc2VyQ2xpZW50OjpkaWRQYXJzZUZ1bmN0aW9uKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6U3RyZWFtaW5nUGFyc2VyQ2xpZW50OjpkaWRGaW5pc2hQYXJz
aW5nKTogQWRkIFN0cmVhbWluZ1BhcnNlckNsaWVudCwKKyAgICAgICAgd2hpY2ggaGFzIDMgY2Fs
bGJhY2tzIHJpZ2h0IG5vdy4gU3RyZWFtaW5nUGFyc2VyIGdldHMgdGhpcyBjbGllbnQgYW5kIGNh
bGwgdGhlc2UgY2FsbGJhY2tzCisgICAgICAgIGF0IGFwcHJvcHJpYXRlIHRpbWluZ3MuCisgICAg
ICAgICogd2FzbS9XYXNtVmFsaWRhdGUuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp2YWxpZGF0
ZUZ1bmN0aW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21WYWxpZGF0ZS5oOiBVc2UgRnVuY3Rpb25E
YXRhLCBpdCBpcyBnb29kIHNpbmNlIGl0IGlzIG1vcmUgc3Ryb25nbHkgdHlwZWQuCisKIDIwMTgt
MDgtMjcgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KIAogICAg
ICAgICBbV2ViQXNzZW1ibHldIFBhcnNlIHdhc20gbW9kdWxlcyBpbiBhIHN0cmVhbWluZyBmYXNo
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU4OGE3NGFiNzY1MWRjZWJlYmE5
ZGRlMzRiNjQwMTRiM2I4NmI4MTYuLjExMGJkYmMyMzViYWVlM2JhNDI2NGVjOGUxZTc2MDNhNmM2
ZDNlMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDUwLDcgKzEwNTAsNiBA
QAogCQk1M0Y0MEU4QjFENTkwMUJCMDA5OUExQjYgLyogV2FzbUZ1bmN0aW9uUGFyc2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Y0MEU4QTFENTkw
MUJCMDA5OUExQjYgLyogV2FzbUZ1bmN0aW9uUGFyc2VyLmggKi87IH07CiAJCTUzRjQwRThEMUQ1
OTAxRjIwMDk5QTFCNiAvKiBXYXNtUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Y0MEU4QzFENTkwMUYyMDA5OUExQjYgLyogV2FzbVBhcnNl
ci5oICovOyB9OwogCQk1M0Y0MEU5MzFENUE0QUIzMDA5OUExQjYgLyogV2FzbUIzSVJHZW5lcmF0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRjQw
RTkyMUQ1QTRBQjMwMDk5QTFCNiAvKiBXYXNtQjNJUkdlbmVyYXRvci5oICovOyB9OwotCQk1M0Y0
MEU5NTFENUE3QUVGMDA5OUExQjYgLyogV2FzbU1vZHVsZVBhcnNlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGNDBFOTQxRDVBN0FFRjAwOTlBMUI2
IC8qIFdhc21Nb2R1bGVQYXJzZXIuaCAqLzsgfTsKIAkJNTNGNkJGNkQxQzNGMDYwQTAwRjQxRTVE
IC8qIEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGNkJGNkMxQzNGMDYwQTAwRjQxRTVEIC8q
IEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUzRjhEMjAwMUU4Mzg3RDQwMEQyMTExNiAv
KiBXYXNtQkJRUGxhbklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUzRjhEMUZGMUU4Mzg3RDQwMEQyMTExNiAvKiBXYXNtQkJRUGxhbklubGlu
ZXMuaCAqLzsgfTsKIAkJNTNGQTJBRTExQ0YzN0YzRjAwMjI3MTFEIC8qIExMSW50UHJvdG90eXBl
TG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGQTJBRTAxQ0YzN0YzRjAwMjI3MTFEIC8qIExMSW50
UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zNTA5LDggKzM1MDgsNiBAQAog
CQk1M0Y0MEU4QzFENTkwMUYyMDA5OUExQjYgLyogV2FzbVBhcnNlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUzRjQwRThFMUQ1OTAyODIwMDk5QTFCNiAvKiBXYXNtQjNJUkdlbmVyYXRvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtQjNJUkdlbmVyYXRvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRjQwRTkyMUQ1QTRBQjMwMDk5QTFC
NiAvKiBXYXNtQjNJUkdlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXYXNtQjNJUkdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1M0Y0
MEU5NDFENUE3QUVGMDA5OUExQjYgLyogV2FzbU1vZHVsZVBhcnNlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtTW9kdWxlUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTUzRjQwRTk2MUQ1QTdCRUMwMDk5QTFCNiAvKiBXYXNtTW9kdWxlUGFyc2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21Nb2R1bGVQYXJz
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0Y2QkY2QzFDM0YwNjBBMDBG
NDFFNUQgLyogSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0Y4RDFGRjFFODM4N0Q0MDBEMjExMTYg
LyogV2FzbUJCUVBsYW5JbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdhc21CQlFQbGFuSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0ZB
MkFFMDFDRjM3RjNGMDAyMjcxMUQgLyogTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1
cmVXYXRjaHBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExMSW50UHJv
dG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNTUwOCw4ICs1NTA1LDggQEAKIAkJCQk3OTZEQUEyQTFFODlDQ0Q2MDA1
REYyNEEgLyogQ2FsbGVlQml0cy5oICovLAogCQkJCTE0MjlEOERCMEVEMjIwNUIwMEI4OTYxOSAv
KiBDYWxsRnJhbWUuY3BwICovLAogCQkJCTE0MjlEOERDMEVEMjIwNUIwMEI4OTYxOSAvKiBDYWxs
RnJhbWUuaCAqLywKLQkJCQlGRUEzQkJBNzIxMkI2NTU4MDBFOTNBRDEgLyogQ2FsbEZyYW1lSW5s
aW5lcy5oICovLAogCQkJCUE3Rjg2OUVDMEY5NUMyRUMwMDU1ODY5NyAvKiBDYWxsRnJhbWVDbG9z
dXJlLmggKi8sCisJCQkJRkVBM0JCQTcyMTJCNjU1ODAwRTkzQUQxIC8qIENhbGxGcmFtZUlubGlu
ZXMuaCAqLywKIAkJCQkxNDI5RDg1QjBFRDIxOEU5MDBCODk2MTkgLyogQ0xvb3BTdGFjay5jcHAg
Ki8sCiAJCQkJMTRENzkyNjQwREFBMDNGQjAwMUE5RjA1IC8qIENMb29wU3RhY2suaCAqLywKIAkJ
CQlBN0MxRUFFQjE3OTg3QUI2MDAyOTlEQjIgLyogQ0xvb3BTdGFja0lubGluZXMuaCAqLywKQEAg
LTYzNDIsOCArNjMzOSw2IEBACiAJCQkJNzkwMDgxMzcxRTk1QThFQzAwNTJEN0NEIC8qIFdhc21N
b2R1bGUuaCAqLywKIAkJCQk1M0U3NzdFMTFFOTJFMjY1MDA3Q0JFQzQgLyogV2FzbU1vZHVsZUlu
Zm9ybWF0aW9uLmNwcCAqLywKIAkJCQk1M0U3NzdFMjFFOTJFMjY1MDA3Q0JFQzQgLyogV2FzbU1v
ZHVsZUluZm9ybWF0aW9uLmggKi8sCi0JCQkJNTNGNDBFOTYxRDVBN0JFQzAwOTlBMUI2IC8qIFdh
c21Nb2R1bGVQYXJzZXIuY3BwICovLAotCQkJCTUzRjQwRTk0MUQ1QTdBRUYwMDk5QTFCNiAvKiBX
YXNtTW9kdWxlUGFyc2VyLmggKi8sCiAJCQkJQUQ1QjQxNkUxRUJBRkI2NTAwOEVGQTQzIC8qIFdh
c21OYW1lLmggKi8sCiAJCQkJQUQ3QjRCMkQxRkEzRTI4NjAwQzlERjc5IC8qIFdhc21OYW1lU2Vj
dGlvbi5oICovLAogCQkJCUFERDhGQTQ0MUVCMzA3NzEwMERGNTQyRiAvKiBXYXNtTmFtZVNlY3Rp
b25QYXJzZXIuY3BwICovLApAQCAtODQ0NCw3ICs4NDM5LDYgQEAKIAkJCQk5OURBMDBBMzFCRDU5
OTMxMDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdG9yLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTlEQTAwQTQxQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX21vZGVsLnB5IGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTlEQTAwQTUxQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX3RlbXBsYXRlcy5w
eSBpbiBIZWFkZXJzICovLAotCQkJCUZFQTNCQkE4MjEyQjY1NTkwMEU5M0FEMSAvKiBDYWxsRnJh
bWVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MURFQTEzMjFCOUYzMTYzMDA2RDY1REQg
LyogQnVpbHRpblV0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5RTcyOTQwQjE5MEYwNTE0MDAx
QTkxQjUgLyogQnVuZGxlUGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTcxNUVEOEU0
NjAwRjE2N0IyIC8qIEJ1dHRlcmZseS5oIGluIEhlYWRlcnMgKi8sCkBAIC04NDY5LDYgKzg0NjMs
NyBAQAogCQkJCTBGNjRCMjdBMUE3OTU3QjIwMDZFNEU2NiAvKiBDYWxsRWRnZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNzk2REFBMkIxRTg5Q0NENjAwNURGMjRBIC8qIENhbGxlZUJpdHMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE0MjlEOERFMEVEMjIwNUIwMEI4OTYxOSAvKiBDYWxsRnJhbWUuaCBp
biBIZWFkZXJzICovLAorCQkJCUZFQTNCQkE4MjEyQjY1NTkwMEU5M0FEMSAvKiBDYWxsRnJhbWVJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk2MkVDOUJCNzFCN0VCMDdDMDAzMDNBRDEgLyog
Q2FsbEZyYW1lU2h1ZmZsZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTYyRDc1NUQ3MUI4NEZC
NEEwMDE4MDFGQSAvKiBDYWxsRnJhbWVTaHVmZmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYw
QjgzQjExNEJDRjcxODAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCkBA
IC04NzU5LDYgKzg3NTQsNyBAQAogCQkJCUE3MDQ0N0VFMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1w
Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzMThGRTAxQ0FDOTgyRjAwREZDQzU0IC8q
IEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJB
ODM2Mzg2MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlGRTA4NkJDQTIxMjNERUZCMDAzRjI5MjkgLyogRW50cnlGcmFtZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMkFEMkVERkIxOTc5OUUzODAwNEQ2NDc4IC8qIEVudW1lcmF0aW9u
TW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzMDQ2MDcwRTFGNDk3RjAwMzIzMkNGIC8qIEVy
cm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAyRTkwRDBFMTgzOURCMDAwRjkyOTcgLyogRXJy
b3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCkBAIC05MDk1LDcgKzkwOTEsNiBAQAogCQkJ
CTk3ODgwMTQxMTQ3MUFEOTIwMDQxQjAxNiAvKiBKU0RhdGVNYXRoLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDMkE3RjY4ODE2MDQzMkQ0MDBGNzZCOTggLyogSlNEZXN0cnVjdGlibGVPYmplY3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGN0RGMTNDMUUyOTcxMTMwMDk1OTUxQiAvKiBKU0Rlc3RydWN0
aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkUwODZCQ0EyMTIz
REVGQjAwM0YyOTI5IC8qIEVudHJ5RnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMzg0RUU2
MUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkUz
QzYxNDE2N0JBQkQ3MDA2RDc2MEEgLyogSlNFeHBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
QjRBQ0FGMTQ4NEM5Q0UwMEIzOEEzNiAvKiBKU0V4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8s
CkBAIC05NjA5LDcgKzk2MDQsNiBAQAogCQkJCUFENUMzNkVGMUY3QTI2M0EwMDBCQ0FBRiAvKiBX
YXNtTWVtb3J5TW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzkwMDgxMzkxRTk1QThFQzAwNTJE
N0NEIC8qIFdhc21Nb2R1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzRTc3N0U0MUU5MkUyNjUw
MDdDQkVDNCAvKiBXYXNtTW9kdWxlSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCTUz
RjQwRTk1MUQ1QTdBRUYwMDk5QTFCNiAvKiBXYXNtTW9kdWxlUGFyc2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBRDVCNDE2RjFFQkFGQjc3MDA4RUZBNDMgLyogV2FzbU5hbWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUFEN0I0QjJFMUZBM0UyOTgwMEM5REY3OSAvKiBXYXNtTmFtZVNlY3Rpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCUFERDhGQTQ2MUVCMzA3OTcwMERGNTQyRiAvKiBXYXNtTmFtZVNl
Y3Rpb25QYXJzZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0Cmlu
ZGV4IGUyYmFmMWE1NzU1ZmM3ZTRmMjNmOWQxNGQ5ZGUzNDkxZjM5MGExOGUuLjM0MDQxYTk1OGI2
ODNlZTYwMWQ4ZTBkZGFlODIxMWZjY2RjNDZmOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50
eHQKQEAgLTk4NSw3ICs5ODUsNiBAQCB3YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5jcHAKIHdh
c20vV2FzbU1lbW9yeU1vZGUuY3BwCiB3YXNtL1dhc21Nb2R1bGUuY3BwCiB3YXNtL1dhc21Nb2R1
bGVJbmZvcm1hdGlvbi5jcHAKLXdhc20vV2FzbU1vZHVsZVBhcnNlci5jcHAKIHdhc20vV2FzbU5h
bWVTZWN0aW9uUGFyc2VyLmNwcAogd2FzbS9XYXNtT01HUGxhbi5jcHAKIHdhc20vV2FzbU9wY29k
ZU9yaWdpbi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0Rv
bGxhclZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcApp
bmRleCBlZjI1NTcyNGJjNmExMTIwMDE2YjdmMjJmOTY5ZGJmZmQ5Y2FlMjNmLi4yMmRjZGI3YzEx
NzI5NDcxMmQ1ZmU5ODMyNzlkNTM2ZGRkZDczN2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL0pTRG9sbGFyVk0uY3BwCkBAIC0xMTA1LDEwICsxMTA1LDI1IEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2FzbVN0cmVhbWluZ1BhcnNlckZpbmFs
aXplKEV4ZWNTdGF0CiAKIGNsYXNzIFdhc21TdHJlYW1pbmdQYXJzZXIgOiBwdWJsaWMgSlNEZXN0
cnVjdGlibGVPYmplY3QgewogcHVibGljOgorICAgIGNsYXNzIENsaWVudCBmaW5hbCA6IHB1Ymxp
YyBXYXNtOjpTdHJlYW1pbmdQYXJzZXJDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhw
bGljaXQgQ2xpZW50KFdhc21TdHJlYW1pbmdQYXJzZXIqIHBhcnNlcikKKyAgICAgICAgICAgIDog
bV9wYXJzZXIocGFyc2VyKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGRp
ZFBhcnNlU2VjdGlvbihXYXNtOjpTZWN0aW9uKSBvdmVycmlkZSB7IH0KKyAgICAgICAgdm9pZCBk
aWRQYXJzZUZ1bmN0aW9uKHVuc2lnbmVkLCBjb25zdCBXYXNtOjpGdW5jdGlvbkRhdGEmKSBvdmVy
cmlkZSB7IH0KKyAgICAgICAgdm9pZCBkaWRGaW5pc2hQYXJzaW5nKCkgb3ZlcnJpZGUgeyB9CisK
KyAgICAgICAgV2FzbVN0cmVhbWluZ1BhcnNlciogbV9wYXJzZXI7CisgICAgfTsKKwogICAgIFdh
c21TdHJlYW1pbmdQYXJzZXIoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAg
OiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCiAgICAgICAgICwgbV9pbmZvKFdhc206Ok1vZHVsZUluZm9y
bWF0aW9uOjpjcmVhdGUoKSkKLSAgICAgICAgLCBtX3N0cmVhbWluZ1BhcnNlcihtX2luZm8uZ2V0
KCkpCisgICAgICAgICwgbV9jbGllbnQodGhpcykKKyAgICAgICAgLCBtX3N0cmVhbWluZ1BhcnNl
cihtX2luZm8uZ2V0KCksIG1fY2xpZW50KQogICAgIHsKICAgICB9CiAKQEAgLTExNDEsNiArMTE1
Niw3IEBAIGNsYXNzIFdhc21TdHJlYW1pbmdQYXJzZXIgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVP
YmplY3QgewogICAgIERFQ0xBUkVfSU5GTzsKIAogICAgIFJlZjxXYXNtOjpNb2R1bGVJbmZvcm1h
dGlvbj4gbV9pbmZvOworICAgIENsaWVudCBtX2NsaWVudDsKICAgICBXYXNtOjpTdHJlYW1pbmdQ
YXJzZXIgbV9zdHJlYW1pbmdQYXJzZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggM2U3Y2U2MGFkNzRiMDAyMDQ3NGE4
Njk5M2RhNzZlNzE4MGRjNmYyNC4uZWU1ZjE1OTA0MDM3YTRmNTU0MjU0ZThiY2ZmNmJmNTM1ZWJi
YTFiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJh
dG9yLmNwcApAQCAtMTM4MSw3ICsxMzgxLDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjpvcmlnaW4o
KSAtPiBPcmlnaW4KICAgICByZXR1cm4gYml0d2lzZV9jYXN0PE9yaWdpbj4ob3JpZ2luKTsKIH0K
IAotRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPEludGVybmFsRnVuY3Rpb24+LCBTdHJpbmc+IHBh
cnNlQW5kQ29tcGlsZShDb21waWxhdGlvbkNvbnRleHQmIGNvbXBpbGF0aW9uQ29udGV4dCwgY29u
c3QgdWludDhfdCogZnVuY3Rpb25TdGFydCwgc2l6ZV90IGZ1bmN0aW9uTGVuZ3RoLCBjb25zdCBT
aWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiB1bmxp
bmtlZFdhc21Ub1dhc21DYWxscywgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIE1lbW9y
eU1vZGUgbW9kZSwgQ29tcGlsYXRpb25Nb2RlIGNvbXBpbGF0aW9uTW9kZSwgdWludDMyX3QgZnVu
Y3Rpb25JbmRleCwgVGllclVwQ291bnQqIHRpZXJVcCwgVGhyb3dXYXNtRXhjZXB0aW9uIHRocm93
V2FzbUV4Y2VwdGlvbikKK0V4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9u
PiwgU3RyaW5nPiBwYXJzZUFuZENvbXBpbGUoQ29tcGlsYXRpb25Db250ZXh0JiBjb21waWxhdGlv
bkNvbnRleHQsIGNvbnN0IEZ1bmN0aW9uRGF0YSYgZnVuY3Rpb24sIGNvbnN0IFNpZ25hdHVyZSYg
c2lnbmF0dXJlLCBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mIHVubGlua2VkV2FzbVRv
V2FzbUNhbGxzLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgTWVtb3J5TW9kZSBtb2Rl
LCBDb21waWxhdGlvbk1vZGUgY29tcGlsYXRpb25Nb2RlLCB1aW50MzJfdCBmdW5jdGlvbkluZGV4
LCBUaWVyVXBDb3VudCogdGllclVwLCBUaHJvd1dhc21FeGNlcHRpb24gdGhyb3dXYXNtRXhjZXB0
aW9uKQogewogICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnRlcm5hbEZ1bmN0
aW9uPigpOwogCkBAIC0xNDA2LDcgKzE0MDYsNyBAQCBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8
SW50ZXJuYWxGdW5jdGlvbj4sIFN0cmluZz4gcGFyc2VBbmRDb21waWxlKENvbXBpbGF0aW9uQwog
ICAgICAgICA6IE9wdGlvbnM6OndlYkFzc2VtYmx5T01HT3B0aW1pemF0aW9uTGV2ZWwoKSk7CiAK
ICAgICBCM0lSR2VuZXJhdG9yIGlyR2VuZXJhdG9yKGluZm8sIHByb2NlZHVyZSwgcmVzdWx0Lmdl
dCgpLCB1bmxpbmtlZFdhc21Ub1dhc21DYWxscywgbW9kZSwgY29tcGlsYXRpb25Nb2RlLCBmdW5j
dGlvbkluZGV4LCB0aWVyVXAsIHRocm93V2FzbUV4Y2VwdGlvbik7Ci0gICAgRnVuY3Rpb25QYXJz
ZXI8QjNJUkdlbmVyYXRvcj4gcGFyc2VyKGlyR2VuZXJhdG9yLCBmdW5jdGlvblN0YXJ0LCBmdW5j
dGlvbkxlbmd0aCwgc2lnbmF0dXJlLCBpbmZvKTsKKyAgICBGdW5jdGlvblBhcnNlcjxCM0lSR2Vu
ZXJhdG9yPiBwYXJzZXIoaXJHZW5lcmF0b3IsIGZ1bmN0aW9uLmRhdGEuZGF0YSgpLCBmdW5jdGlv
bi5kYXRhLnNpemUoKSwgc2lnbmF0dXJlLCBpbmZvKTsKICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVS
X0ZBSUxTKHBhcnNlci5wYXJzZSgpKTsKIAogICAgIGlyR2VuZXJhdG9yLmluc2VydENvbnN0YW50
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5l
cmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmgK
aW5kZXggOTMxZjUyN2NiN2E1MmUzOTRkNzAzZmNmMjk5NWU2YmQ3NjlhMDc4Yi4uOWNiYzA0NmUw
MDc1ZTk0YThhZWZmZDM4OTBkMDFhYWUxMjczOTM1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5oCkBAIC01NSw3ICs1NSw3IEBAIHN0cnVjdCBD
b21waWxhdGlvbkNvbnRleHQgewogICAgIHN0ZDo6dW5pcXVlX3B0cjxCMzo6T3BhcXVlQnlwcm9k
dWN0cz4gd2FzbUVudHJ5cG9pbnRCeXByb2R1Y3RzOwogfTsKIAotRXhwZWN0ZWQ8c3RkOjp1bmlx
dWVfcHRyPEludGVybmFsRnVuY3Rpb24+LCBTdHJpbmc+IHBhcnNlQW5kQ29tcGlsZShDb21waWxh
dGlvbkNvbnRleHQmLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBjb25zdCBTaWduYXR1cmUmLCBW
ZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYs
IE1lbW9yeU1vZGUsIENvbXBpbGF0aW9uTW9kZSwgdWludDMyX3QgZnVuY3Rpb25JbmRleCwgVGll
clVwQ291bnQqID0gbnVsbHB0ciwgVGhyb3dXYXNtRXhjZXB0aW9uID0gbnVsbHB0cik7CitFeHBl
Y3RlZDxzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4sIFN0cmluZz4gcGFyc2VBbmRD
b21waWxlKENvbXBpbGF0aW9uQ29udGV4dCYsIGNvbnN0IEZ1bmN0aW9uRGF0YSYsIGNvbnN0IFNp
Z25hdHVyZSYsIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYsIGNvbnN0IE1vZHVsZUlu
Zm9ybWF0aW9uJiwgTWVtb3J5TW9kZSwgQ29tcGlsYXRpb25Nb2RlLCB1aW50MzJfdCBmdW5jdGlv
bkluZGV4LCBUaWVyVXBDb3VudCogPSBudWxscHRyLCBUaHJvd1dhc21FeGNlcHRpb24gPSBudWxs
cHRyKTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCmluZGV4IDQzYzhmNTYyYWZhMWMzNjMzYTdlNmM2MWY0
MDkyMmVjMGJlOTcyMTMuLjRiOWQ4Mzc5MWVjMjA0ZTczZGYwOWYyNWFlNTkwMGMyNjMyZDg4ZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKQEAgLTM1LDcg
KzM1LDYgQEAKICNpbmNsdWRlICJXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCIKICNpbmNsdWRlICJX
YXNtRmF1bHRTaWduYWxIYW5kbGVyLmgiCiAjaW5jbHVkZSAiV2FzbU1lbW9yeS5oIgotI2luY2x1
ZGUgIldhc21Nb2R1bGVQYXJzZXIuaCIKICNpbmNsdWRlICJXYXNtVGllclVwQ291bnQuaCIKICNp
bmNsdWRlICJXYXNtVmFsaWRhdGUuaCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgpAQCAtNTMs
NiArNTIsNyBAQCBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAKIEJCUVBsYW46
OkJCUVBsYW4oQ29udGV4dCogY29udGV4dCwgUmVmPE1vZHVsZUluZm9ybWF0aW9uPiBpbmZvLCBB
c3luY1dvcmsgd29yaywgQ29tcGxldGlvblRhc2smJiB0YXNrLCBDcmVhdGVFbWJlZGRlcldyYXBw
ZXImJiBjcmVhdGVFbWJlZGRlcldyYXBwZXIsIFRocm93V2FzbUV4Y2VwdGlvbiB0aHJvd1dhc21F
eGNlcHRpb24pCiAgICAgOiBCYXNlKGNvbnRleHQsIFdURk1vdmUoaW5mbyksIFdURk1vdmUodGFz
ayksIFdURk1vdmUoY3JlYXRlRW1iZWRkZXJXcmFwcGVyKSwgdGhyb3dXYXNtRXhjZXB0aW9uKQor
ICAgICwgbV9zdHJlYW1pbmdQYXJzZXIobV9tb2R1bGVJbmZvcm1hdGlvbi5nZXQoKSwgKnRoaXMp
CiAgICAgLCBtX3N0YXRlKFN0YXRlOjpWYWxpZGF0ZWQpCiAgICAgLCBtX2FzeW5jV29yayh3b3Jr
KQogewpAQCAtNjEsNiArNjEsNyBAQCBCQlFQbGFuOjpCQlFQbGFuKENvbnRleHQqIGNvbnRleHQs
IFJlZjxNb2R1bGVJbmZvcm1hdGlvbj4gaW5mbywgQXN5bmNXb3JrIHdvcmssCiBCQlFQbGFuOjpC
QlFQbGFuKENvbnRleHQqIGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PiYmIHNvdXJjZSwgQXN5bmNX
b3JrIHdvcmssIENvbXBsZXRpb25UYXNrJiYgdGFzaywgQ3JlYXRlRW1iZWRkZXJXcmFwcGVyJiYg
Y3JlYXRlRW1iZWRkZXJXcmFwcGVyLCBUaHJvd1dhc21FeGNlcHRpb24gdGhyb3dXYXNtRXhjZXB0
aW9uKQogICAgIDogQmFzZShjb250ZXh0LCBNb2R1bGVJbmZvcm1hdGlvbjo6Y3JlYXRlKCksIFdU
Rk1vdmUodGFzayksIFdURk1vdmUoY3JlYXRlRW1iZWRkZXJXcmFwcGVyKSwgdGhyb3dXYXNtRXhj
ZXB0aW9uKQogICAgICwgbV9zb3VyY2UoV1RGTW92ZShzb3VyY2UpKQorICAgICwgbV9zdHJlYW1p
bmdQYXJzZXIobV9tb2R1bGVJbmZvcm1hdGlvbi5nZXQoKSwgKnRoaXMpCiAgICAgLCBtX3N0YXRl
KFN0YXRlOjpJbml0aWFsKQogICAgICwgbV9hc3luY1dvcmsod29yaykKIHsKQEAgLTY4LDYgKzY5
LDcgQEAgQkJRUGxhbjo6QkJRUGxhbihDb250ZXh0KiBjb250ZXh0LCBWZWN0b3I8dWludDhfdD4m
JiBzb3VyY2UsIEFzeW5jV29yayB3b3JrLCBDb20KIAogQkJRUGxhbjo6QkJRUGxhbihDb250ZXh0
KiBjb250ZXh0LCBBc3luY1dvcmsgd29yaywgQ29tcGxldGlvblRhc2smJiB0YXNrKQogICAgIDog
QmFzZShjb250ZXh0LCBXVEZNb3ZlKHRhc2spKQorICAgICwgbV9zdHJlYW1pbmdQYXJzZXIobV9t
b2R1bGVJbmZvcm1hdGlvbi5nZXQoKSwgKnRoaXMpCiAgICAgLCBtX3N0YXRlKFN0YXRlOjpJbml0
aWFsKQogICAgICwgbV9hc3luY1dvcmsod29yaykKIHsKQEAgLTkyLDYgKzk0LDI1IEBAIHZvaWQg
QkJRUGxhbjo6bW92ZVRvU3RhdGUoU3RhdGUgc3RhdGUpCiAgICAgbV9zdGF0ZSA9IHN0YXRlOwog
fQogCit2b2lkIEJCUVBsYW46OmRpZFBhcnNlRnVuY3Rpb24odW5zaWduZWQgZnVuY3Rpb25JbmRl
eCwgY29uc3QgRnVuY3Rpb25EYXRhJiBmdW5jdGlvbikKK3sKKyAgICBkYXRhTG9nTG5JZihXYXNt
QkJRUGxhbkludGVybmFsOjp2ZXJib3NlLCAiUHJvY2Vzc2luZyBmdW5jdGlvbiBzdGFydGluZyBh
dDogIiwgZnVuY3Rpb24uc3RhcnQsICIgYW5kIGVuZGluZyBhdDogIiwgZnVuY3Rpb24uZW5kKTsK
KyAgICBzaXplX3QgZnVuY3Rpb25MZW5ndGggPSBmdW5jdGlvbi5lbmQgLSBmdW5jdGlvbi5zdGFy
dDsKKyAgICBBU1NFUlQoZnVuY3Rpb25MZW5ndGggPT0gZnVuY3Rpb24uZGF0YS5zaXplKCkpOwor
ICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+
aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbZnVuY3Rpb25JbmRleF07CisgICAgY29u
c3QgU2lnbmF0dXJlJiBzaWduYXR1cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25h
dHVyZUluZGV4KTsKKworICAgIGF1dG8gdmFsaWRhdGlvblJlc3VsdCA9IHZhbGlkYXRlRnVuY3Rp
b24oZnVuY3Rpb24sIHNpZ25hdHVyZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi5nZXQoKSk7CisgICAg
aWYgKCF2YWxpZGF0aW9uUmVzdWx0KSB7CisgICAgICAgIGlmIChXYXNtQkJRUGxhbkludGVybmFs
Ojp2ZXJib3NlKSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZnVuY3Rp
b25MZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKFJhd1BvaW50ZXIocmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oZnVuY3Rpb24uZGF0YVtpXSkpLCAiLCAiKTsKKyAgICAgICAgICAg
IGRhdGFMb2dMbigpOworICAgICAgICB9CisgICAgICAgIGZhaWwoaG9sZExvY2sobV9sb2NrKSwg
bWFrZVN0cmluZyh2YWxpZGF0aW9uUmVzdWx0LmVycm9yKCksICIsIGluIGZ1bmN0aW9uIGF0IGlu
ZGV4ICIsIFN0cmluZzo6bnVtYmVyKGZ1bmN0aW9uSW5kZXgpKSk7IC8vIEZJWE1FIG1ha2UgdGhp
cyBhbiBFeHBlY3RlZC4KKyAgICB9Cit9CisKIGJvb2wgQkJRUGxhbjo6cGFyc2VBbmRWYWxpZGF0
ZU1vZHVsZShjb25zdCB1aW50OF90KiBzb3VyY2UsIHNpemVfdCBzb3VyY2VMZW5ndGgpCiB7CiAg
ICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkluaXRpYWwpCkBAIC0xMDIsMzcgKzEyMywxNiBAQCBi
b29sIEJCUVBsYW46OnBhcnNlQW5kVmFsaWRhdGVNb2R1bGUoY29uc3QgdWludDhfdCogc291cmNl
LCBzaXplX3Qgc291cmNlTGVuZ3RoKQogICAgIGlmIChXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJi
b3NlIHx8IE9wdGlvbnM6OnJlcG9ydENvbXBpbGVUaW1lcygpKQogICAgICAgICBzdGFydFRpbWUg
PSBNb25vdG9uaWNUaW1lOjpub3coKTsKIAotICAgIHsKLSAgICAgICAgTW9kdWxlUGFyc2VyIG1v
ZHVsZVBhcnNlcihzb3VyY2UsIHNvdXJjZUxlbmd0aCwgbV9tb2R1bGVJbmZvcm1hdGlvbik7Ci0g
ICAgICAgIGF1dG8gcGFyc2VSZXN1bHQgPSBtb2R1bGVQYXJzZXIucGFyc2UoKTsKLSAgICAgICAg
aWYgKCFwYXJzZVJlc3VsdCkgewotICAgICAgICAgICAgQmFzZTo6ZmFpbChob2xkTG9jayhtX2xv
Y2spLCBXVEZNb3ZlKHBhcnNlUmVzdWx0LmVycm9yKCkpKTsKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgfQorICAgIG1fc3RyZWFtaW5nUGFyc2VyLmFkZEJ5dGVzKHNvdXJjZSwg
c291cmNlTGVuZ3RoKTsKKyAgICBpZiAobV9zdHJlYW1pbmdQYXJzZXIuZmluYWxpemUoKSAhPSBT
dHJlYW1pbmdQYXJzZXI6OlN0YXRlOjpGaW5pc2hlZCkgeworICAgICAgICBmYWlsKGhvbGRMb2Nr
KG1fbG9jayksIFN0cmluZyhtX3N0cmVhbWluZ1BhcnNlci5lcnJvck1lc3NhZ2UoKSkpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotCi0gICAgY29uc3QgYXV0byYgZnVuY3Rpb25zID0g
bV9tb2R1bGVJbmZvcm1hdGlvbi0+ZnVuY3Rpb25zOwotICAgIGZvciAodW5zaWduZWQgZnVuY3Rp
b25JbmRleCA9IDA7IGZ1bmN0aW9uSW5kZXggPCBmdW5jdGlvbnMuc2l6ZSgpOyArK2Z1bmN0aW9u
SW5kZXgpIHsKLSAgICAgICAgY29uc3QgYXV0byYgZnVuY3Rpb24gPSBmdW5jdGlvbnNbZnVuY3Rp
b25JbmRleF07Ci0gICAgICAgIGRhdGFMb2dMbklmKFdhc21CQlFQbGFuSW50ZXJuYWw6OnZlcmJv
c2UsICJQcm9jZXNzaW5nIGZ1bmN0aW9uIHN0YXJ0aW5nIGF0OiAiLCBmdW5jdGlvbi5zdGFydCwg
IiBhbmQgZW5kaW5nIGF0OiAiLCBmdW5jdGlvbi5lbmQpOwotICAgICAgICBzaXplX3QgZnVuY3Rp
b25MZW5ndGggPSBmdW5jdGlvbi5lbmQgLSBmdW5jdGlvbi5zdGFydDsKLSAgICAgICAgQVNTRVJU
KGZ1bmN0aW9uTGVuZ3RoIDw9IHNvdXJjZUxlbmd0aCk7Ci0gICAgICAgIEFTU0VSVChmdW5jdGlv
bkxlbmd0aCA9PSBmdW5jdGlvbi5kYXRhLnNpemUoKSk7Ci0gICAgICAgIFNpZ25hdHVyZUluZGV4
IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNp
Z25hdHVyZUluZGljZXNbZnVuY3Rpb25JbmRleF07Ci0gICAgICAgIGNvbnN0IFNpZ25hdHVyZSYg
c2lnbmF0dXJlID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChzaWduYXR1cmVJbmRleCk7Ci0K
LSAgICAgICAgYXV0byB2YWxpZGF0aW9uUmVzdWx0ID0gdmFsaWRhdGVGdW5jdGlvbihmdW5jdGlv
bi5kYXRhLmRhdGEoKSwgZnVuY3Rpb24uZGF0YS5zaXplKCksIHNpZ25hdHVyZSwgbV9tb2R1bGVJ
bmZvcm1hdGlvbi5nZXQoKSk7Ci0gICAgICAgIGlmICghdmFsaWRhdGlvblJlc3VsdCkgewotICAg
ICAgICAgICAgaWYgKFdhc21CQlFQbGFuSW50ZXJuYWw6OnZlcmJvc2UpIHsKLSAgICAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZnVuY3Rpb25MZW5ndGg7ICsraSkKLSAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KGZ1bmN0aW9uLmRhdGFbaV0pKSwgIiwgIik7Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBCYXNlOjpmYWlsKGhvbGRMb2NrKG1fbG9jayks
IG1ha2VTdHJpbmcodmFsaWRhdGlvblJlc3VsdC5lcnJvcigpLCAiLCBpbiBmdW5jdGlvbiBhdCBp
bmRleCAiLCBTdHJpbmc6Om51bWJlcihmdW5jdGlvbkluZGV4KSkpOyAvLyBGSVhNRSBtYWtlIHRo
aXMgYW4gRXhwZWN0ZWQuCisgICAgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1f
bG9jayk7CisgICAgICAgIGlmIChmYWlsZWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgfQogICAgIH0KLQogICAgIGlmIChXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3Nl
IHx8IE9wdGlvbnM6OnJlcG9ydENvbXBpbGVUaW1lcygpKQogICAgICAgICBkYXRhTG9nTG4oIlRv
b2sgIiwgKE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRUaW1lKS5taWNyb3NlY29uZHMoKSwg
IiB1cyB0byB2YWxpZGF0ZSBtb2R1bGUiKTsKIApAQCAtMjY2LDE4ICsyNjYsMTUgQEAgdm9pZCBC
QlFQbGFuOjpjb21waWxlRnVuY3Rpb25zKENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAgICAg
ICAgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0
KHNpZ25hdHVyZUluZGV4KTsKICAgICAgICAgdW5zaWduZWQgZnVuY3Rpb25JbmRleFNwYWNlID0g
bV93YXNtVG9XYXNtRXhpdFN0dWJzLnNpemUoKSArIGZ1bmN0aW9uSW5kZXg7CiAgICAgICAgIEFT
U0VSVF9VTlVTRUQoZnVuY3Rpb25JbmRleFNwYWNlLCBtX21vZHVsZUluZm9ybWF0aW9uLT5zaWdu
YXR1cmVJbmRleEZyb21GdW5jdGlvbkluZGV4U3BhY2UoZnVuY3Rpb25JbmRleFNwYWNlKSA9PSBz
aWduYXR1cmVJbmRleCk7Ci0gICAgICAgIEFTU0VSVCh2YWxpZGF0ZUZ1bmN0aW9uKGZ1bmN0aW9u
LmRhdGEuZGF0YSgpLCBmdW5jdGlvbi5kYXRhLnNpemUoKSwgc2lnbmF0dXJlLCBtX21vZHVsZUlu
Zm9ybWF0aW9uLmdldCgpKSk7CisgICAgICAgIEFTU0VSVCh2YWxpZGF0ZUZ1bmN0aW9uKGZ1bmN0
aW9uLCBzaWduYXR1cmUsIG1fbW9kdWxlSW5mb3JtYXRpb24uZ2V0KCkpKTsKIAogICAgICAgICBt
X3VubGlua2VkV2FzbVRvV2FzbUNhbGxzW2Z1bmN0aW9uSW5kZXhdID0gVmVjdG9yPFVubGlua2Vk
V2FzbVRvV2FzbUNhbGw+KCk7CiAgICAgICAgIFRpZXJVcENvdW50KiB0aWVyVXAgPSBPcHRpb25z
Ojp1c2VCQlFUaWVyVXBDaGVja3MoKSA/ICZtX3RpZXJVcENvdW50c1tmdW5jdGlvbkluZGV4XSA6
IG51bGxwdHI7Ci0gICAgICAgIGF1dG8gcGFyc2VBbmRDb21waWxlUmVzdWx0ID0gcGFyc2VBbmRD
b21waWxlKG1fY29tcGlsYXRpb25Db250ZXh0c1tmdW5jdGlvbkluZGV4XSwgZnVuY3Rpb24uZGF0
YS5kYXRhKCksIGZ1bmN0aW9uLmRhdGEuc2l6ZSgpLCBzaWduYXR1cmUsIG1fdW5saW5rZWRXYXNt
VG9XYXNtQ2FsbHNbZnVuY3Rpb25JbmRleF0sIG1fbW9kdWxlSW5mb3JtYXRpb24uZ2V0KCksIG1f
bW9kZSwgQ29tcGlsYXRpb25Nb2RlOjpCQlFNb2RlLCBmdW5jdGlvbkluZGV4LCB0aWVyVXAsIG1f
dGhyb3dXYXNtRXhjZXB0aW9uKTsKKyAgICAgICAgYXV0byBwYXJzZUFuZENvbXBpbGVSZXN1bHQg
PSBwYXJzZUFuZENvbXBpbGUobV9jb21waWxhdGlvbkNvbnRleHRzW2Z1bmN0aW9uSW5kZXhdLCBm
dW5jdGlvbiwgc2lnbmF0dXJlLCBtX3VubGlua2VkV2FzbVRvV2FzbUNhbGxzW2Z1bmN0aW9uSW5k
ZXhdLCBtX21vZHVsZUluZm9ybWF0aW9uLmdldCgpLCBtX21vZGUsIENvbXBpbGF0aW9uTW9kZTo6
QkJRTW9kZSwgZnVuY3Rpb25JbmRleCwgdGllclVwLCBtX3Rocm93V2FzbUV4Y2VwdGlvbik7CiAK
ICAgICAgICAgaWYgKFVOTElLRUxZKCFwYXJzZUFuZENvbXBpbGVSZXN1bHQpKSB7CiAgICAgICAg
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7Ci0gICAgICAgICAgICBpZiAoIW1f
ZXJyb3JNZXNzYWdlKSB7Ci0gICAgICAgICAgICAgICAgLy8gTXVsdGlwbGUgY29tcGlsZXMgY291
bGQgZmFpbCBzaW11bHRhbmVvdXNseS4gV2UgYXJiaXRyYXJpbHkgY2hvb3NlIHRoZSBmaXJzdC4K
LSAgICAgICAgICAgICAgICBmYWlsKGxvY2tlciwgbWFrZVN0cmluZyhwYXJzZUFuZENvbXBpbGVS
ZXN1bHQuZXJyb3IoKSwgIiwgaW4gZnVuY3Rpb24gYXQgaW5kZXggIiwgU3RyaW5nOjpudW1iZXIo
ZnVuY3Rpb25JbmRleCkpKTsgLy8gRklYTUUgbWFrZSB0aGlzIGFuIEV4cGVjdGVkLgotICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZmFpbChsb2NrZXIsIG1ha2VTdHJpbmcocGFyc2VBbmRDb21w
aWxlUmVzdWx0LmVycm9yKCksICIsIGluIGZ1bmN0aW9uIGF0IGluZGV4ICIsIFN0cmluZzo6bnVt
YmVyKGZ1bmN0aW9uSW5kZXgpKSk7IC8vIEZJWE1FIG1ha2UgdGhpcyBhbiBFeHBlY3RlZC4KICAg
ICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gZnVuY3Rpb25zLnNpemUoKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQpAQCAtMzA3LDcgKzMwNCw3IEBAIHZvaWQgQkJRUGxhbjo6Y29t
cGxldGUoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlcikKICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoKmNvbnRleHQud2FzbUVudHJ5cG9pbnRK
SVQsIG51bGxwdHIsIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgICAgICAgICAgICAgaWYg
KFVOTElLRUxZKGxpbmtCdWZmZXIuZGlkRmFpbFRvQWxsb2NhdGUoKSkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgQmFzZTo6ZmFpbChsb2NrZXIsIG1ha2VTdHJpbmcoIk91dCBvZiBleGVjdXRhYmxl
IG1lbW9yeSBpbiBmdW5jdGlvbiBhdCBpbmRleCAiLCBTdHJpbmc6Om51bWJlcihmdW5jdGlvbklu
ZGV4KSkpOworICAgICAgICAgICAgICAgICAgICBmYWlsKGxvY2tlciwgbWFrZVN0cmluZygiT3V0
IG9mIGV4ZWN1dGFibGUgbWVtb3J5IGluIGZ1bmN0aW9uIGF0IGluZGV4ICIsIFN0cmluZzo6bnVt
YmVyKGZ1bmN0aW9uSW5kZXgpKSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgICAgICB9CiAKQEAgLTMxOSw3ICszMTYsNyBAQCB2b2lkIEJCUVBsYW46OmNvbXBsZXRl
KGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIpCiAgICAgICAgICAgICBpZiAoYXV0byBlbWJl
ZGRlclRvV2FzbUludGVybmFsRnVuY3Rpb24gPSBtX2VtYmVkZGVyVG9XYXNtSW50ZXJuYWxGdW5j
dGlvbnMuZ2V0KGZ1bmN0aW9uSW5kZXgpKSB7CiAgICAgICAgICAgICAgICAgTGlua0J1ZmZlciBs
aW5rQnVmZmVyKCpjb250ZXh0LmVtYmVkZGVyRW50cnlwb2ludEpJVCwgbnVsbHB0ciwgSklUQ29t
cGlsYXRpb25DYW5GYWlsKTsKICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkobGlua0J1ZmZl
ci5kaWRGYWlsVG9BbGxvY2F0ZSgpKSkgewotICAgICAgICAgICAgICAgICAgICBCYXNlOjpmYWls
KGxvY2tlciwgbWFrZVN0cmluZygiT3V0IG9mIGV4ZWN1dGFibGUgbWVtb3J5IGluIGZ1bmN0aW9u
IGVudHJ5cG9pbnQgYXQgaW5kZXggIiwgU3RyaW5nOjpudW1iZXIoZnVuY3Rpb25JbmRleCkpKTsK
KyAgICAgICAgICAgICAgICAgICAgZmFpbChsb2NrZXIsIG1ha2VTdHJpbmcoIk91dCBvZiBleGVj
dXRhYmxlIG1lbW9yeSBpbiBmdW5jdGlvbiBlbnRyeXBvaW50IGF0IGluZGV4ICIsIFN0cmluZzo6
bnVtYmVyKGZ1bmN0aW9uSW5kZXgpKSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21CQlFQbGFuLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5o
CmluZGV4IDk0MWFjNzVmNzBlNmY5MTFiOWZiYjNkZGIxMzc4Y2NmOTY5OTQxYWQuLmI0MDE2MjE0
NmY3MzFmMzg5OWUzNzBlOWE3Yjg3NzUzZTAwMDMzMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUJCUVBsYW4uaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIldhc21CM0lS
R2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiV2FzbU1vZHVsZUluZm9ybWF0aW9uLmgiCiAjaW5jbHVk
ZSAiV2FzbVBsYW4uaCIKKyNpbmNsdWRlICJXYXNtU3RyZWFtaW5nUGFyc2VyLmgiCiAjaW5jbHVk
ZSAiV2FzbVRpZXJVcENvdW50LmgiCiAjaW5jbHVkZSA8d3RmL0JhZy5oPgogI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbi5oPgpAQCAtNDQsNyArNDUsNyBAQCBjbGFzcyBDYWxsTGlua0luZm87CiAKIG5h
bWVzcGFjZSBXYXNtIHsKIAotY2xhc3MgQkJRUGxhbiBmaW5hbCA6IHB1YmxpYyBQbGFuIHsKK2Ns
YXNzIEJCUVBsYW4gZmluYWwgOiBwdWJsaWMgUGxhbiwgcHVibGljIFN0cmVhbWluZ1BhcnNlckNs
aWVudCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IFBsYW47CiAgICAgZW51bSBBc3luY1dv
cmsgOiB1aW50OF90IHsgRnVsbENvbXBpbGUsIFZhbGlkYXRpb24gfTsKQEAgLTEyNyw2ICsxMjgs
OCBAQCBjbGFzcyBCQlFQbGFuIGZpbmFsIDogcHVibGljIFBsYW4gewogICAgIGJvb2wgaGFzQmVl
blByZXBhcmVkKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA+PSBTdGF0ZTo6UHJlcGFyZWQ7IH0K
ICAgICBib29sIG11bHRpVGhyZWFkZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBoYXNCZWVu
UHJlcGFyZWQoKTsgfQogCisgICAgdm9pZCBkaWRQYXJzZUZ1bmN0aW9uKHVuc2lnbmVkLCBjb25z
dCBGdW5jdGlvbkRhdGEmKSBvdmVycmlkZTsKKwogcHJpdmF0ZToKICAgICBjbGFzcyBUaHJlYWRD
b3VudEhvbGRlcjsKICAgICBmcmllbmQgY2xhc3MgVGhyZWFkQ291bnRIb2xkZXI7CkBAIC0xNDks
NiArMTUyLDcgQEAgY2xhc3MgQkJRUGxhbiBmaW5hbCA6IHB1YmxpYyBQbGFuIHsKICAgICBWZWN0
b3I8VGllclVwQ291bnQ+IG1fdGllclVwQ291bnRzOwogCiAgICAgVmVjdG9yPFZlY3RvcjxVbmxp
bmtlZFdhc21Ub1dhc21DYWxsPj4gbV91bmxpbmtlZFdhc21Ub1dhc21DYWxsczsKKyAgICBTdHJl
YW1pbmdQYXJzZXIgbV9zdHJlYW1pbmdQYXJzZXI7CiAgICAgU3RhdGUgbV9zdGF0ZTsKIAogICAg
IGNvbnN0IEFzeW5jV29yayBtX2FzeW5jV29yazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21Nb2R1bGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbU1vZHVsZVBhcnNlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDIyNWRiYTYzMTM4YzI1YTVlYWJlNmFiMjIyYTNmYjRiNGRjMTkxYmQuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU1vZHVsZVBhcnNlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldhc21Nb2R1bGVQYXJzZXIuaCIKLQotI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkKLQotI2luY2x1ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCi0jaW5jbHVk
ZSAiV2FzbU1lbW9yeUluZm9ybWF0aW9uLmgiCi0jaW5jbHVkZSAiV2FzbU5hbWVTZWN0aW9uUGFy
c2VyLmgiCi0jaW5jbHVkZSAiV2FzbU9wcy5oIgotI2luY2x1ZGUgIldhc21TZWN0aW9uUGFyc2Vy
LmgiCi0jaW5jbHVkZSAiV2FzbVNlY3Rpb25zLmgiCi0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgV2FzbSB7Ci0KLWF1dG8gTW9kdWxlUGFyc2VyOjpwYXJzZSgpIC0+IFJlc3VsdAotewotICAg
IGNvbnN0IHNpemVfdCBtaW5TaXplID0gODsKLSAgICB1aW50MzJfdCB2ZXJzaW9uTnVtYmVyOwot
Ci0gICAgV0FTTV9QQVJTRVJfRkFJTF9JRihsZW5ndGgoKSA8IG1pblNpemUsICJleHBlY3RlZCBh
IG1vZHVsZSBvZiBhdCBsZWFzdCAiLCBtaW5TaXplLCAiIGJ5dGVzIik7Ci0gICAgV0FTTV9QQVJT
RVJfRkFJTF9JRihsZW5ndGgoKSA+IG1heE1vZHVsZVNpemUsICJtb2R1bGUgc2l6ZSAiLCBsZW5n
dGgoKSwgIiBpcyB0b28gbGFyZ2UsIG1heGltdW0gIiwgbWF4TW9kdWxlU2l6ZSk7Ci0gICAgV0FT
TV9QQVJTRVJfRkFJTF9JRighY29uc3VtZUNoYXJhY3RlcigwKSB8fCAhY29uc3VtZVN0cmluZygi
YXNtIiksICJtb2R1bGVzIGRvZXNuJ3Qgc3RhcnQgd2l0aCAnXFwwYXNtJyIpOwotICAgIFdBU01f
UEFSU0VSX0ZBSUxfSUYoIXBhcnNlVUludDMyKHZlcnNpb25OdW1iZXIpLCAiY2FuJ3QgcGFyc2Ug
dmVyc2lvbiBudW1iZXIiKTsKLSAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHZlcnNpb25OdW1iZXIg
IT0gZXhwZWN0ZWRWZXJzaW9uTnVtYmVyLCAidW5leHBlY3RlZCB2ZXJzaW9uIG51bWJlciAiLCB2
ZXJzaW9uTnVtYmVyLCAiIGV4cGVjdGVkICIsIGV4cGVjdGVkVmVyc2lvbk51bWJlcik7Ci0KLSAg
ICAvLyBUaGlzIGlzIG5vdCByZWFsbHkgYSBrbm93biBzZWN0aW9uLgotICAgIFNlY3Rpb24gcHJl
dmlvdXNLbm93blNlY3Rpb24gPSBTZWN0aW9uOjpCZWdpbjsKLSAgICB3aGlsZSAobV9vZmZzZXQg
PCBsZW5ndGgoKSkgewotICAgICAgICB1aW50OF90IHNlY3Rpb25CeXRlOwotCi0gICAgICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVUludDcoc2VjdGlvbkJ5dGUpLCAiY2FuJ3QgZ2V0IHNl
Y3Rpb24gYnl0ZSIpOwotCi0gICAgICAgIFNlY3Rpb24gc2VjdGlvbiA9IFNlY3Rpb246OkN1c3Rv
bTsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighZGVjb2RlU2VjdGlvbihzZWN0aW9uQnl0
ZSwgc2VjdGlvbikpOwotICAgICAgICBBU1NFUlQoc2VjdGlvbiAhPSBTZWN0aW9uOjpCZWdpbik7
Ci0KLSAgICAgICAgdWludDMyX3Qgc2VjdGlvbkxlbmd0aDsKLSAgICAgICAgV0FTTV9QQVJTRVJf
RkFJTF9JRighdmFsaWRhdGVPcmRlcihwcmV2aW91c0tub3duU2VjdGlvbiwgc2VjdGlvbiksICJp
bnZhbGlkIHNlY3Rpb24gb3JkZXIsICIsIHByZXZpb3VzS25vd25TZWN0aW9uLCAiIGZvbGxvd2Vk
IGJ5ICIsIHNlY3Rpb24pOwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJ
bnQzMihzZWN0aW9uTGVuZ3RoKSwgImNhbid0IGdldCAiLCBzZWN0aW9uLCAiIHNlY3Rpb24ncyBs
ZW5ndGgiKTsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihzZWN0aW9uTGVuZ3RoID4gbGVu
Z3RoKCkgLSBtX29mZnNldCwgc2VjdGlvbiwgIiBzZWN0aW9uIG9mIHNpemUgIiwgc2VjdGlvbkxl
bmd0aCwgIiB3b3VsZCBvdmVyZmxvdyBNb2R1bGUncyBzaXplIik7Ci0KLSAgICAgICAgU2VjdGlv
blBhcnNlciBwYXJzZXIoc291cmNlKCkgKyBtX29mZnNldCwgc2VjdGlvbkxlbmd0aCwgbV9vZmZz
ZXQsIG1faW5mby5nZXQoKSk7Ci0KLSAgICAgICAgc3dpdGNoIChzZWN0aW9uKSB7Ci0jZGVmaW5l
IFdBU01fU0VDVElPTl9QQVJTRShOQU1FLCBJRCwgREVTQ1JJUFRJT04pICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAgICAgY2FzZSBTZWN0aW9uOjpOQU1FOiB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlM
UyhwYXJzZXIucGFyc2UgIyMgTkFNRSgpKTsgICAgICAgICAgICAgXAotICAgICAgICAgICAgYnJl
YWs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgICAgIH0KLSAgICAgICAgRk9SX0VBQ0hfS05PV05fV0FTTV9TRUNUSU9OKFdBU01fU0VDVElP
Tl9QQVJTRSkKLSN1bmRlZiBXQVNNX1NFQ1RJT05fUEFSU0UKLQotICAgICAgICBjYXNlIFNlY3Rp
b246OkN1c3RvbTogewotICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJz
ZXIucGFyc2VDdXN0b20oKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAg
ICAgIGNhc2UgU2VjdGlvbjo6QmVnaW46IHsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICB9Ci0K
LSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihwYXJzZXIubGVuZ3RoKCkgIT0gcGFyc2VyLm9m
ZnNldCgpLCAicGFyc2luZyBlbmRlZCBiZWZvcmUgdGhlIGVuZCBvZiAiLCBzZWN0aW9uLCAiIHNl
Y3Rpb24iKTsKLQotICAgICAgICBtX29mZnNldCArPSBzZWN0aW9uTGVuZ3RoOwotCi0KLSAgICAg
ICAgaWYgKGlzS25vd25TZWN0aW9uKHNlY3Rpb24pKQotICAgICAgICAgICAgcHJldmlvdXNLbm93
blNlY3Rpb24gPSBzZWN0aW9uOwotICAgIH0KLQotICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp1
c2VFYWdlcldlYkFzc2VtYmx5TW9kdWxlSGFzaGluZygpKSkgewotICAgICAgICBTSEExIGhhc2hl
cjsKLSAgICAgICAgaGFzaGVyLmFkZEJ5dGVzKHNvdXJjZSgpLCBsZW5ndGgoKSk7Ci0gICAgICAg
IG1faW5mby0+bmFtZVNlY3Rpb24tPnNldEhhc2goaGFzaGVyLmNvbXB1dGVIZXhEaWdlc3QoKSk7
Ci0gICAgfQotCi0gICAgcmV0dXJuIHsgfTsKLX0KLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldh
c20KLQotI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVQYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21Nb2R1bGVQYXJzZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZDMzYjc3OTUzMzczZGIyN2YxNTE5OWQ5ODA0MDgwZjA5Mjk2ZWRiOS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtTW9kdWxlUGFyc2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0KLSNpbmNsdWRlICJXYXNtRm9ybWF0LmgiCi0j
aW5jbHVkZSAiV2FzbU9wcy5oIgotI2luY2x1ZGUgIldhc21QYXJzZXIuaCIKLSNpbmNsdWRlIDx3
dGYvT3B0aW9uYWwuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgV2FzbSB7Ci0KLWNsYXNzIE1vZHVsZVBhcnNlciA6IHB1YmxpYyBQYXJzZXI8
dm9pZD4gewotcHVibGljOgotICAgIE1vZHVsZVBhcnNlcihjb25zdCB1aW50OF90KiBzb3VyY2VC
dWZmZXIsIHNpemVfdCBzb3VyY2VMZW5ndGgsIE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvKQotICAg
ICAgICA6IFBhcnNlcihzb3VyY2VCdWZmZXIsIHNvdXJjZUxlbmd0aCkKLSAgICAgICAgLCBtX2lu
Zm8oaW5mbykKLSAgICB7Ci0gICAgfQotCi0gICAgUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBw
YXJzZSgpOwotCi1wcml2YXRlOgotICAgIFJlZjxNb2R1bGVJbmZvcm1hdGlvbj4gbV9pbmZvOwot
fTsKLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KLQotI2VuZGlmIC8vIEVOQUJMRShXRUJB
U1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQ
bGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcAppbmRl
eCA5ZTBjNGE1NjY2ZTQ0ZTBlYWNjMjMxMmFiYmI3NjU0NTNiODc5ZjQ4Li5jMWExZDBhMjA5YTQ3
MDM5YWEyM2MyODQ0ZjFlOTNlNjkwMjc3MmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU9NR1BsYW4uY3BwCkBAIC03NiwxMSArNzYsMTEgQEAgdm9pZCBPTUdQbGFuOjp3b3Jr
KENvbXBpbGF0aW9uRWZmb3J0KQogCiAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXgg
PSBtX21vZHVsZUluZm9ybWF0aW9uLT5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tt
X2Z1bmN0aW9uSW5kZXhdOwogICAgIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlID0gU2lnbmF0
dXJlSW5mb3JtYXRpb246OmdldChzaWduYXR1cmVJbmRleCk7Ci0gICAgQVNTRVJUKHZhbGlkYXRl
RnVuY3Rpb24oZnVuY3Rpb24uZGF0YS5kYXRhKCksIGZ1bmN0aW9uLmRhdGEuc2l6ZSgpLCBzaWdu
YXR1cmUsIG1fbW9kdWxlSW5mb3JtYXRpb24uZ2V0KCkpKTsKKyAgICBBU1NFUlQodmFsaWRhdGVG
dW5jdGlvbihmdW5jdGlvbiwgc2lnbmF0dXJlLCBtX21vZHVsZUluZm9ybWF0aW9uLmdldCgpKSk7
CiAKICAgICBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4gdW5saW5rZWRDYWxsczsKICAg
ICBDb21waWxhdGlvbkNvbnRleHQgY29udGV4dDsKLSAgICBhdXRvIHBhcnNlQW5kQ29tcGlsZVJl
c3VsdCA9IHBhcnNlQW5kQ29tcGlsZShjb250ZXh0LCBmdW5jdGlvbi5kYXRhLmRhdGEoKSwgZnVu
Y3Rpb24uZGF0YS5zaXplKCksIHNpZ25hdHVyZSwgdW5saW5rZWRDYWxscywgbV9tb2R1bGVJbmZv
cm1hdGlvbi5nZXQoKSwgbV9tb2RlLCBDb21waWxhdGlvbk1vZGU6Ok9NR01vZGUsIG1fZnVuY3Rp
b25JbmRleCk7CisgICAgYXV0byBwYXJzZUFuZENvbXBpbGVSZXN1bHQgPSBwYXJzZUFuZENvbXBp
bGUoY29udGV4dCwgZnVuY3Rpb24sIHNpZ25hdHVyZSwgdW5saW5rZWRDYWxscywgbV9tb2R1bGVJ
bmZvcm1hdGlvbi5nZXQoKSwgbV9tb2RlLCBDb21waWxhdGlvbk1vZGU6Ok9NR01vZGUsIG1fZnVu
Y3Rpb25JbmRleCk7CiAKICAgICBpZiAoVU5MSUtFTFkoIXBhcnNlQW5kQ29tcGlsZVJlc3VsdCkp
IHsKICAgICAgICAgZmFpbChob2xkTG9jayhtX2xvY2spLCBtYWtlU3RyaW5nKHBhcnNlQW5kQ29t
cGlsZVJlc3VsdC5lcnJvcigpLCAid2hlbiB0cnlpbmcgdG8gdGllciB1cCAiLCBTdHJpbmc6Om51
bWJlcihtX2Z1bmN0aW9uSW5kZXgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxh
bi5jcHAKaW5kZXggOTk3NGVjZmU1NWJhZjI4OWVlYzU2NTA2NmExY2Q0OWFlMjNhODIwYS4uZTY1
ZjcwNzM5NmVjYTBhMTQ3NzczMmFkZDM0M2MxOTQ3ZDA1ZTJkYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21QbGFuLmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIldhc21D
YWxsaW5nQ29udmVudGlvbi5oIgogI2luY2x1ZGUgIldhc21GYXVsdFNpZ25hbEhhbmRsZXIuaCIK
ICNpbmNsdWRlICJXYXNtTWVtb3J5LmgiCi0jaW5jbHVkZSAiV2FzbU1vZHVsZVBhcnNlci5oIgog
I2luY2x1ZGUgIldhc21WYWxpZGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5j
bHVkZSA8d3RmL0xvY2tlci5oPgpAQCAtMTMxLDYgKzEzMCw5IEBAIGJvb2wgUGxhbjo6dHJ5UmVt
b3ZlQ29udGV4dEFuZENhbmNlbElmTGFzdChDb250ZXh0JiBjb250ZXh0KQogCiB2b2lkIFBsYW46
OmZhaWwoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgU3RyaW5nJiYgZXJyb3JNZXNzYWdl
KQogeworICAgIEFTU0VSVChlcnJvck1lc3NhZ2UpOworICAgIGlmIChmYWlsZWQoKSkKKyAgICAg
ICAgcmV0dXJuOwogICAgIGRhdGFMb2dMbklmKFdhc21QbGFuSW50ZXJuYWw6OnZlcmJvc2UsICJm
YWlsaW5nIHdpdGggbWVzc2FnZTogIiwgZXJyb3JNZXNzYWdlKTsKICAgICBtX2Vycm9yTWVzc2Fn
ZSA9IFdURk1vdmUoZXJyb3JNZXNzYWdlKTsKICAgICBjb21wbGV0ZShsb2NrZXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCmluZGV4IDlh
OWJhY2I2N2RlZDI1MDQ1MzVkOGMyZGU1YzVlZDgzM2RlZjE2MDIuLjVjMDdiN2E5ZDJmNzE4ZjQ3
M2M1YjM2ZGJiN2Q1ZGU3NWQ3ZjRmYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKQEAgLTM5OSwyOSArMzk5LDEwIEBAIGF1dG8gU2Vj
dGlvblBhcnNlcjo6cGFyc2VFbGVtZW50KCkgLT4gUGFydGlhbFJlc3VsdAogICAgIHJldHVybiB7
IH07CiB9CiAKLS8vIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjaGFuZ2VkIHRvIGJlIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEIG9uY2Ugd2Ugc3dpdGNoIG91ciBwYXJzaW5nIGluZnJhc3RydWN0
dXJlIHRvIHRoZSBzdHJlYW1pbmcgcGFyc2VyLgogYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUNv
ZGUoKSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgdWludDMyX3QgY291bnQ7Ci0gICAgV0FTTV9Q
QVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIoY291bnQpLCAiY2FuJ3QgZ2V0IENvZGUgc2Vj
dGlvbidzIGNvdW50Iik7Ci0gICAgV0FTTV9QQVJTRVJfRkFJTF9JRihjb3VudCA9PSBzdGQ6Om51
bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksICJDb2RlIHNlY3Rpb24ncyBjb3VudCBpcyB0
b28gYmlnICIsIGNvdW50KTsKLSAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGNvdW50ICE9IG1faW5m
by0+ZnVuY3Rpb25zLnNpemUoKSwgIkNvZGUgc2VjdGlvbiBjb3VudCAiLCBjb3VudCwgIiBleGNl
ZWRzIHRoZSBkZWNsYXJlZCBudW1iZXIgb2YgZnVuY3Rpb25zICIsIG1faW5mby0+ZnVuY3Rpb25z
LnNpemUoKSk7Ci0KLSAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewot
ICAgICAgICB1aW50MzJfdCBmdW5jdGlvblNpemU7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxf
SUYoIXBhcnNlVmFyVUludDMyKGZ1bmN0aW9uU2l6ZSksICJjYW4ndCBnZXQgIiwgaSwgInRoIENv
ZGUgZnVuY3Rpb24ncyBzaXplIik7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoZnVuY3Rp
b25TaXplID4gbGVuZ3RoKCksICJDb2RlIGZ1bmN0aW9uJ3Mgc2l6ZSAiLCBmdW5jdGlvblNpemUs
ICIgZXhjZWVkcyB0aGUgbW9kdWxlJ3Mgc2l6ZSAiLCBsZW5ndGgoKSk7Ci0gICAgICAgIFdBU01f
UEFSU0VSX0ZBSUxfSUYoZnVuY3Rpb25TaXplID4gbGVuZ3RoKCkgLSBtX29mZnNldCwgIkNvZGUg
ZnVuY3Rpb24ncyBzaXplICIsIGZ1bmN0aW9uU2l6ZSwgIiBleGNlZWRzIHRoZSBtb2R1bGUncyBy
ZW1haW5pbmcgc2l6ZSIsIGxlbmd0aCgpIC0gbV9vZmZzZXQpOwotICAgICAgICBXQVNNX1BBUlNF
Ul9GQUlMX0lGKGZ1bmN0aW9uU2l6ZSA+IG1heEZ1bmN0aW9uU2l6ZSwgIkNvZGUgZnVuY3Rpb24n
cyBzaXplICIsIGZ1bmN0aW9uU2l6ZSwgIiBpcyB0b28gYmlnIik7Ci0KLSAgICAgICAgVmVjdG9y
PHVpbnQ4X3Q+IGRhdGEoZnVuY3Rpb25TaXplKTsKLSAgICAgICAgc3RkOjptZW1jcHkoZGF0YS5k
YXRhKCksIHNvdXJjZSgpICsgbV9vZmZzZXQsIGZ1bmN0aW9uU2l6ZSk7Ci0gICAgICAgIG1faW5m
by0+ZnVuY3Rpb25zW2ldLnN0YXJ0ID0gbV9vZmZzZXRJblNvdXJjZSArIG1fb2Zmc2V0OwotICAg
ICAgICBtX2luZm8tPmZ1bmN0aW9uc1tpXS5lbmQgPSBtX29mZnNldEluU291cmNlICsgbV9vZmZz
ZXQgKyBmdW5jdGlvblNpemU7Ci0gICAgICAgIG1faW5mby0+ZnVuY3Rpb25zW2ldLmRhdGEgPSBX
VEZNb3ZlKGRhdGEpOwotICAgICAgICBtX29mZnNldCArPSBmdW5jdGlvblNpemU7Ci0gICAgfQot
CisgICAgLy8gVGhlIENvZGUgc2VjdGlvbiBpcyBoYW5kbGVkIHNwZWNpYWxseSBpbiBTdHJlYW1p
bmdQYXJzZXIuCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4g
eyB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU3Ry
ZWFtaW5nUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TdHJlYW1p
bmdQYXJzZXIuY3BwCmluZGV4IDlmMzcyNjAxZDUxMzMyYmUyNWUwN2UwNTE4MjM1OTk0ZWI0YzA4
OTkuLmM5NThiOTE0MzE3YmQ1ZjlhZTRkMmViMmJmZGYwNjU5MWZiYjYwMTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TdHJlYW1pbmdQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TdHJlYW1pbmdQYXJzZXIuY3BwCkBAIC0y
OCw3ICsyOCw2IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKLSNpbmNsdWRlICJXYXNt
TW9kdWxlUGFyc2VyLmgiCiAjaW5jbHVkZSAiV2FzbVNlY3Rpb25QYXJzZXIuaCIKICNpbmNsdWRl
IDx3dGYvVW5hbGlnbmVkQWNjZXNzLmg+CiAKQEAgLTY2LDggKzY1LDkgQEAgTkVWRVJfSU5MSU5F
IGF1dG8gV0FSTl9VTlVTRURfUkVUVVJOIFN0cmVhbWluZ1BhcnNlcjo6ZmFpbChBcmdzLi4uIGFy
Z3MpIC0+IFN0YXQKICAgICByZXR1cm4gU3RhdGU6OkZhdGFsRXJyb3I7CiB9CiAKLVN0cmVhbWlu
Z1BhcnNlcjo6U3RyZWFtaW5nUGFyc2VyKE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvKQorU3RyZWFt
aW5nUGFyc2VyOjpTdHJlYW1pbmdQYXJzZXIoTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIFN0cmVh
bWluZ1BhcnNlckNsaWVudCYgY2xpZW50KQogICAgIDogbV9pbmZvKGluZm8pCisgICAgLCBtX2Ns
aWVudChjbGllbnQpCiB7CiAgICAgZGF0YUxvZ0xuSWYoV2FzbVN0cmVhbWluZ1BhcnNlckludGVy
bmFsOjp2ZXJib3NlLCAic3RhcnRpbmcgdmFsaWRhdGlvbiIpOwogfQpAQCAtMTE4LDYgKzExOCw3
IEBAIGF1dG8gU3RyZWFtaW5nUGFyc2VyOjpwYXJzZUNvZGVTZWN0aW9uU2l6ZSh1aW50MzJfdCBm
dW5jdGlvbkNvdW50KSAtPiBTdGF0ZQogCiAgICAgaWYgKG1fZnVuY3Rpb25JbmRleCA9PSBtX2Z1
bmN0aW9uQ291bnQpIHsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRigobV9jb2RlT2Zmc2V0
ICsgbV9zZWN0aW9uTGVuZ3RoKSAhPSBtX25leHRPZmZzZXQsICJwYXJzaW5nIGVuZGVkIGJlZm9y
ZSB0aGUgZW5kIG9mICIsIG1fc2VjdGlvbiwgIiBzZWN0aW9uIik7CisgICAgICAgIG1fY2xpZW50
LmRpZFBhcnNlU2VjdGlvbihtX3NlY3Rpb24pOwogICAgICAgICByZXR1cm4gU3RhdGU6OlNlY3Rp
b25JRDsKICAgICB9CiAgICAgcmV0dXJuIFN0YXRlOjpGdW5jdGlvblNpemU7CkBAIC0xMzcsOSAr
MTM4LDEyIEBAIGF1dG8gU3RyZWFtaW5nUGFyc2VyOjpwYXJzZUZ1bmN0aW9uUGF5bG9hZChWZWN0
b3I8dWludDhfdD4mJiBkYXRhKSAtPiBTdGF0ZQogICAgIGZ1bmN0aW9uLmVuZCA9IG1fb2Zmc2V0
ICsgbV9mdW5jdGlvblNpemU7CiAgICAgZnVuY3Rpb24uZGF0YSA9IFdURk1vdmUoZGF0YSk7CiAg
ICAgZGF0YUxvZ0xuSWYoV2FzbVN0cmVhbWluZ1BhcnNlckludGVybmFsOjp2ZXJib3NlLCAiUHJv
Y2Vzc2luZyBmdW5jdGlvbiBzdGFydGluZyBhdDogIiwgZnVuY3Rpb24uc3RhcnQsICIgYW5kIGVu
ZGluZyBhdDogIiwgZnVuY3Rpb24uZW5kKTsKKyAgICBtX2NsaWVudC5kaWRQYXJzZUZ1bmN0aW9u
KG1fZnVuY3Rpb25JbmRleCwgZnVuY3Rpb24pOwogICAgICsrbV9mdW5jdGlvbkluZGV4OworCiAg
ICAgaWYgKG1fZnVuY3Rpb25JbmRleCA9PSBtX2Z1bmN0aW9uQ291bnQpIHsKICAgICAgICAgV0FT
TV9QQVJTRVJfRkFJTF9JRigobV9jb2RlT2Zmc2V0ICsgbV9zZWN0aW9uTGVuZ3RoKSAhPSAobV9v
ZmZzZXQgKyBtX2Z1bmN0aW9uU2l6ZSksICJwYXJzaW5nIGVuZGVkIGJlZm9yZSB0aGUgZW5kIG9m
ICIsIG1fc2VjdGlvbiwgIiBzZWN0aW9uIik7CisgICAgICAgIG1fY2xpZW50LmRpZFBhcnNlU2Vj
dGlvbihtX3NlY3Rpb24pOwogICAgICAgICByZXR1cm4gU3RhdGU6OlNlY3Rpb25JRDsKICAgICB9
CiAgICAgcmV0dXJuIFN0YXRlOjpGdW5jdGlvblNpemU7CkBAIC0xNzAsNiArMTc0LDcgQEAgYXV0
byBTdHJlYW1pbmdQYXJzZXI6OnBhcnNlU2VjdGlvblBheWxvYWQoVmVjdG9yPHVpbnQ4X3Q+JiYg
ZGF0YSkgLT4gU3RhdGUKIAogICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYocGFyc2VyLmxlbmd0aCgp
ICE9IHBhcnNlci5vZmZzZXQoKSwgInBhcnNpbmcgZW5kZWQgYmVmb3JlIHRoZSBlbmQgb2YgIiwg
bV9zZWN0aW9uLCAiIHNlY3Rpb24iKTsKIAorICAgIG1fY2xpZW50LmRpZFBhcnNlU2VjdGlvbiht
X3NlY3Rpb24pOwogICAgIHJldHVybiBTdGF0ZTo6U2VjdGlvbklEOwogfQogCkBAIC0zODAsNiAr
Mzg1LDcgQEAgYXV0byBTdHJlYW1pbmdQYXJzZXI6OmZpbmFsaXplKCkgLT4gU3RhdGUKICAgICAg
ICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp1c2VFYWdlcldlYkFzc2VtYmx5TW9kdWxlSGFz
aGluZygpKSkKICAgICAgICAgICAgICAgICBtX2luZm8tPm5hbWVTZWN0aW9uLT5zZXRIYXNoKG1f
aGFzaGVyLmNvbXB1dGVIZXhEaWdlc3QoKSk7CiAgICAgICAgICAgICBtX3N0YXRlID0gU3RhdGU6
OkZpbmlzaGVkOworICAgICAgICAgICAgbV9jbGllbnQuZGlkRmluaXNoUGFyc2luZygpOwogICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgIG1fc3RhdGUgPSBmYWlsT25TdGF0ZShTdGF0ZTo6U2Vj
dGlvbklEKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtU3RyZWFtaW5nUGFyc2VyLmgKaW5kZXggMWZiYjZiMjJiMzU1OWFmMDM4YjgwNGYxMjVh
N2VmYTVhOWE1ZDgxOC4uYWI5MmNhY2U4OTNhZDMyODNiNzFlYTM0Y2UyZmZmNDZmMTk1ODQ0MCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVN0cmVhbWluZ1BhcnNl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TdHJlYW1pbmdQYXJzZXIu
aApAQCAtMzksNiArMzksMTEgQEAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAK
IGNsYXNzIFN0cmVhbWluZ1BhcnNlckNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+U3Ry
ZWFtaW5nUGFyc2VyQ2xpZW50KCkgPSBkZWZhdWx0OworICAgIHZpcnR1YWwgdm9pZCBkaWRQYXJz
ZVNlY3Rpb24oU2VjdGlvbikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFBhcnNlRnVuY3Rpb24o
dW5zaWduZWQsIGNvbnN0IEZ1bmN0aW9uRGF0YSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2hQYXJzaW5nKCkgeyB9CiB9OwogCiBjbGFzcyBTdHJlYW1pbmdQYXJzZXIgewpAQCAtNjks
NyArNzQsNyBAQCBjbGFzcyBTdHJlYW1pbmdQYXJzZXIgewogCiAgICAgZW51bSBjbGFzcyBJc0Vu
ZE9mU3RyZWFtIHsgWWVzLCBObyB9OwogCi0gICAgU3RyZWFtaW5nUGFyc2VyKE1vZHVsZUluZm9y
bWF0aW9uJik7CisgICAgU3RyZWFtaW5nUGFyc2VyKE1vZHVsZUluZm9ybWF0aW9uJiwgU3RyZWFt
aW5nUGFyc2VyQ2xpZW50Jik7CiAKICAgICBTdGF0ZSBhZGRCeXRlcyhjb25zdCB1aW50OF90KiBi
eXRlcywgc2l6ZV90IGxlbmd0aCkgeyByZXR1cm4gYWRkQnl0ZXMoYnl0ZXMsIGxlbmd0aCwgSXNF
bmRPZlN0cmVhbTo6Tm8pOyB9CiAgICAgU3RhdGUgZmluYWxpemUoKTsKQEAgLTk5LDYgKzEwNCw3
IEBAIGNsYXNzIFN0cmVhbWluZ1BhcnNlciB7CiAgICAgU3RhdGUgZmFpbE9uU3RhdGUoU3RhdGUp
OwogCiAgICAgUmVmPE1vZHVsZUluZm9ybWF0aW9uPiBtX2luZm87CisgICAgU3RyZWFtaW5nUGFy
c2VyQ2xpZW50JiBtX2NsaWVudDsKICAgICBWZWN0b3I8dWludDhfdD4gbV9yZW1haW5pbmc7CiAg
ICAgU3RyaW5nIG1fZXJyb3JNZXNzYWdlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtVmFsaWRhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbVZhbGlkYXRlLmNwcAppbmRleCBlYTRhNzU5OGZhMDQ5NTQ0Zjg3Njg0YTUwZTNjZmNiOTEz
MTA4ZWFmLi4wMTI3MzcyZjIzYzViYWNlZDJiYmJkYWY0ZDM1MGEzZTU0NDI5MTYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRhdGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5jcHAKQEAgLTM3NywxMCArMzc3
LDEwIEBAIHZvaWQgVmFsaWRhdGU6OmR1bXAoY29uc3QgVmVjdG9yPENvbnRyb2xFbnRyeT4mIGNv
bnRyb2xTdGFjaywgY29uc3QgRXhwcmVzc2lvbkxpCiAgICAgZGF0YUxvZ0xuKCk7CiB9CiAKLUV4
cGVjdGVkPHZvaWQsIFN0cmluZz4gdmFsaWRhdGVGdW5jdGlvbihjb25zdCB1aW50OF90KiBzb3Vy
Y2UsIHNpemVfdCBsZW5ndGgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBjb25zdCBNb2R1
bGVJbmZvcm1hdGlvbiYgbW9kdWxlKQorRXhwZWN0ZWQ8dm9pZCwgU3RyaW5nPiB2YWxpZGF0ZUZ1
bmN0aW9uKGNvbnN0IEZ1bmN0aW9uRGF0YSYgZnVuY3Rpb24sIGNvbnN0IFNpZ25hdHVyZSYgc2ln
bmF0dXJlLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgbW9kdWxlKQogewogICAgIFZhbGlkYXRl
IGNvbnRleHQobW9kdWxlKTsKLSAgICBGdW5jdGlvblBhcnNlcjxWYWxpZGF0ZT4gdmFsaWRhdG9y
KGNvbnRleHQsIHNvdXJjZSwgbGVuZ3RoLCBzaWduYXR1cmUsIG1vZHVsZSk7CisgICAgRnVuY3Rp
b25QYXJzZXI8VmFsaWRhdGU+IHZhbGlkYXRvcihjb250ZXh0LCBmdW5jdGlvbi5kYXRhLmRhdGEo
KSwgZnVuY3Rpb24uZGF0YS5zaXplKCksIHNpZ25hdHVyZSwgbW9kdWxlKTsKICAgICBXQVNNX0ZB
SUxfSUZfSEVMUEVSX0ZBSUxTKHZhbGlkYXRvci5wYXJzZSgpKTsKICAgICByZXR1cm4geyB9Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRhdGUuaAppbmRleCAyODI4M2Nm
ZWE4MmFmOTE0MWNiYjBhOTMwZGUwMjk5M2E5OTA1YWIxLi5hOTUyYWFjNjhhODJmODkwZmNlOTI5
YjYyZTc4MDY1MzM4ZjAyZDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtVmFsaWRhdGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFs
aWRhdGUuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIFdh
c20gewogCi1FeHBlY3RlZDx2b2lkLCBTdHJpbmc+IHZhbGlkYXRlRnVuY3Rpb24oY29uc3QgdWlu
dDhfdCosIHNpemVfdCwgY29uc3QgU2lnbmF0dXJlJiwgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24m
KTsKK0V4cGVjdGVkPHZvaWQsIFN0cmluZz4gdmFsaWRhdGVGdW5jdGlvbihjb25zdCBGdW5jdGlv
bkRhdGEmLCBjb25zdCBTaWduYXR1cmUmLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYpOwogCiB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxv
ZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDY5OGExNjA5Njc0NzdjNGY1NTAxYWVhM2NlODc4
NWRjMzNhNGQ3NTUuLjMxOTIzZWMxYWJkMjliOTljZjBlMzk5Nzg5N2FkNzE0YjE1OGM0YjEgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTgtMDgtMjggIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xv
d3N0YXJ0Lm9yZz4KKworICAgICAgICBbV2ViQXNzZW1ibHldIFVzZSBTdHJlYW1pbmdQYXJzZXIg
aW4gZXhpc3RpbmcgV2FzbTo6QkJRUGxhbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhlIG9mZnNldCBwZXJmb3JtaW5nIHRoZSB2YWxpZGF0aW9uIGJl
Y29tZXMgYSBiaXQgZGlmZmVyZW50LgorICAgICAgICBUaGUgb2Zmc2V0IDAgaXMgbmljZSBzaW5j
ZSBpdCBpcyB0aGUgc3RhcnRpbmcgb2Zmc2V0IG9mIHRoZSBNb2R1bGUgaGVhZGVyIHNpZ25hdHVy
ZSBjb21wYXJlZCB0byB0aGUgb2Zmc2V0IDguCisKKyAgICAgICAgKiB3YXNtL2pzLWFwaS92ZXJz
aW9uLmpzOgorCiAyMDE4LTA4LTI3ICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dz
dGFydC5vcmc+CiAKICAgICAgICAgW1dlYkFzc2VtYmx5XSBQYXJzZSB3YXNtIG1vZHVsZXMgaW4g
YSBzdHJlYW1pbmcgZmFzaGlvbgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2pzLWFwaS92ZXJz
aW9uLmpzIGIvSlNUZXN0cy93YXNtL2pzLWFwaS92ZXJzaW9uLmpzCmluZGV4IDA0ODZmY2ZkZGVm
ZDA4MjFkMzkyNDZjYjY0MDg3MzRiZmViZjIyZTIuLjRkMTBlOGMxNWQwZTFkNzc5NDZkODdjZWU4
ZDIwZjcyMjBkOWQyNGYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvdmVyc2lvbi5q
cworKysgYi9KU1Rlc3RzL3dhc20vanMtYXBpL3ZlcnNpb24uanMKQEAgLTUsNSArNSw1IEBACiAg
ICAgaWYgKHZlcnNpb24gPT09IDEpCiAgICAgICAgIGNvbnRpbnVlOwogICAgIGNvbnN0IGVtcHR5
TW9kdWxlQXJyYXkgPSBVaW50OEFycmF5Lm9mKDB4MCwgMHg2MSwgMHg3MywgMHg2ZCwgdmVyc2lv
biwgMHgwMCwgMHgwMCwgMHgwMCk7Ci0gICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNz
ZW1ibHkuTW9kdWxlKGVtcHR5TW9kdWxlQXJyYXkpLCBXZWJBc3NlbWJseS5Db21waWxlRXJyb3Is
IGBXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCBwYXJzZSBhdCBieXRlIDg6IHVuZXhwZWN0ZWQg
dmVyc2lvbiBudW1iZXIgJHt2ZXJzaW9ufSBleHBlY3RlZCAxYCk7CisgICAgYXNzZXJ0LnRocm93
cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGVtcHR5TW9kdWxlQXJyYXkpLCBXZWJBc3Nl
bWJseS5Db21waWxlRXJyb3IsIGBXZWJBc3NlbWJseS5Nb2R1bGUgZG9lc24ndCBwYXJzZSBhdCBi
eXRlIDA6IHVuZXhwZWN0ZWQgdmVyc2lvbiBudW1iZXIgJHt2ZXJzaW9ufSBleHBlY3RlZCAxYCk7
CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376631</attachid>
            <date>2019-08-18 03:04:50 -0700</date>
            <delta_ts>2019-09-02 14:01:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189043-20190818030448.patch</filename>
            <type>text/plain</type>
            <size>43746</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4ODI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
NDJlYjM5NGViMmY4MzllNWIzMjQ0MDdlMDkyODhmODUyYTYxYWZlLi4zYjRkMzNmNDUyNmIzNGI3
ZWNkNGMwNjMxNGExOGRlMzU0YzAyZmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MCBAQAorMjAxOS0wOC0xOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtXZWJBc3NlbWJseV0gVXNlIFN0cmVhbWluZ1BhcnNlciBpbiBleGlzdGlu
ZyBXYXNtOjpCQlFQbGFuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODkwNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGludGVncmF0ZXMgV2FzbTo6U3RyZWFtaW5nUGFyc2VyIGludG8g
dGhlIGV4aXN0aW5nIFdhc206OkJCUVBsYW4uCisgICAgICAgIEJ1dCBpdCBkb2VzIG5vdCB1c2Ug
YW55IHN0cmVhbWluZyBmZWF0dXJlLiBBbmQgV2FzbTo6QkJRUGxhbiB3b3VsZCBub3QgdXNlIHRo
ZQorICAgICAgICBzdHJlYW1pbmcgZmVhdHVyZSBzaW5jZSBpdCBhc3N1bWVzIHRoYXQgYWxsIHRo
ZSBkYXRhIGlzIGFscmVhZHkgZ2l2ZW4uCisgICAgICAgIEluIGEgc3Vic2VxdWVudCBwYXRjaCwg
d2Ugd2lsbCBjcmVhdGUgYSBuZXcgUGxhbiBhbmQgbWFuYWdlciBjbGFzcyBmb3Igc3RyZWFtaW5n
CisgICAgICAgIHBhcnNpbmcgYW5kIHN0cmVhbWluZyBjb21waWxpbmcgYW5kIHVzZSB0aGVtIGZv
ciBXZWJBc3NlbWJseS5jb21waWxlU3RyZWFtaW5nIGFuZAorICAgICAgICBpbnN0YW50aWF0ZVN0
cmVhbWluZy4KKworICAgICAgICBUaGUgaW50ZW5zaW9uIG9mIHRoaXMgcGF0Y2ggaXMgcmVtb3Zp
bmcgdGhlIG9sZCBXYXNtOjpNb2R1bGVQYXJzZXIuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAg
ICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoSlNDOjpXYXNtU3RyZWFtaW5n
UGFyc2VyOjpXYXNtU3RyZWFtaW5nUGFyc2VyKToKKyAgICAgICAgKiB3YXNtL1dhc21BaXJJUkdl
bmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OnBhcnNlQW5kQ29tcGlsZUFpcik6Cisg
ICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuaDoKKyAgICAgICAgKiB3YXNtL1dhc21C
M0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6cGFyc2VBbmRDb21waWxlKTog
VXNlIEZ1bmN0aW9uRGF0YSwgaXQgaXMgZ29vZCBzaW5jZSBpdCBpcyBtb3JlIHN0cm9uZ2x5IHR5
cGVkLgorICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuaDoKKyAgICAgICAgKiB3YXNt
L1dhc21CQlFQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6QkJRUGxhbik6
CisgICAgICAgIChKU0M6Oldhc206OkJCUVBsYW46OmRpZFBhcnNlRnVuY3Rpb24pOiBBZGQgYSBj
YWxsYmFjaywgd2hpY2ggaW52b2tlcyB2YWxpZGF0aW9uLgorICAgICAgICAoSlNDOjpXYXNtOjpC
QlFQbGFuOjpwYXJzZUFuZFZhbGlkYXRlTW9kdWxlKTogVXNlIFN0cmVhbWluZ1BhcnNlciBpbnN0
ZWFkIG9mIG9sZCBNb2R1bGVQYXJzZXIuCisgICAgICAgIChKU0M6Oldhc206OkJCUVBsYW46OmNv
bXBpbGVGdW5jdGlvbnMpOgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpjb21wbGV0ZSk6
CisgICAgICAgICogd2FzbS9XYXNtQkJRUGxhbi5oOgorICAgICAgICAqIHdhc20vV2FzbU1vZHVs
ZVBhcnNlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogd2FzbS9XYXNtTW9kdWxlUGFyc2VyLmg6
IFJlbW92ZWQuCisgICAgICAgICogd2FzbS9XYXNtT01HUGxhbi5jcHA6CisgICAgICAgIChKU0M6
Oldhc206Ok9NR1BsYW46OndvcmspOgorICAgICAgICAqIHdhc20vV2FzbVBsYW4uY3BwOgorICAg
ICAgICAoSlNDOjpXYXNtOjpQbGFuOjpmYWlsKTogTWFrZSBmYWlsIGZ1bmN0aW9uIGNhbGxhYmxl
IG11bHRpcGxlIHRpbWVzLiBUaGUgZmlyc3QgZXJyb3Igd2lsbCBiZSB1c2VkLgorICAgICAgICAq
IHdhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9u
UGFyc2VyOjpwYXJzZUNvZGUpOiBTaW5jZSB0aGUgQ29kZSBzZWN0aW9uIGlzIHNwZWNpYWxseSBo
YW5kbGVkIGluIFN0cmVhbWluZ1BhcnNlciwgdGhpcyBjb2RlIGlzIG5ldmVyIHVzZWQuCisgICAg
ICAgICogd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6
U3RyZWFtaW5nUGFyc2VyOjpTdHJlYW1pbmdQYXJzZXIpOgorICAgICAgICAoSlNDOjpXYXNtOjpT
dHJlYW1pbmdQYXJzZXI6OnBhcnNlQ29kZVNlY3Rpb25TaXplKToKKyAgICAgICAgKEpTQzo6V2Fz
bTo6U3RyZWFtaW5nUGFyc2VyOjpwYXJzZUZ1bmN0aW9uUGF5bG9hZCk6CisgICAgICAgIChKU0M6
Oldhc206OlN0cmVhbWluZ1BhcnNlcjo6cGFyc2VTZWN0aW9uUGF5bG9hZCk6CisgICAgICAgIChK
U0M6Oldhc206OlN0cmVhbWluZ1BhcnNlcjo6ZmluYWxpemUpOiBDYWxsIGNsaWVudCdzIGNhbGxi
YWNrcyBhdCBhcHByb3ByaWF0ZSB0aW1pbmdzLgorICAgICAgICAqIHdhc20vV2FzbVN0cmVhbWlu
Z1BhcnNlci5oOgorICAgICAgICAoSlNDOjpXYXNtOjpTdHJlYW1pbmdQYXJzZXJDbGllbnQ6OmRp
ZFBhcnNlU2VjdGlvbik6CisgICAgICAgIChKU0M6Oldhc206OlN0cmVhbWluZ1BhcnNlckNsaWVu
dDo6ZGlkUGFyc2VGdW5jdGlvbik6CisgICAgICAgIChKU0M6Oldhc206OlN0cmVhbWluZ1BhcnNl
ckNsaWVudDo6ZGlkRmluaXNoUGFyc2luZyk6IEFkZCBTdHJlYW1pbmdQYXJzZXJDbGllbnQsCisg
ICAgICAgIHdoaWNoIGhhcyAzIGNhbGxiYWNrcyByaWdodCBub3cuIFN0cmVhbWluZ1BhcnNlciBn
ZXRzIHRoaXMgY2xpZW50IGFuZCBjYWxsIHRoZXNlIGNhbGxiYWNrcworICAgICAgICBhdCBhcHBy
b3ByaWF0ZSB0aW1pbmdzLgorICAgICAgICAqIHdhc20vV2FzbVZhbGlkYXRlLmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6dmFsaWRhdGVGdW5jdGlvbik6CisgICAgICAgICogd2FzbS9XYXNtVmFs
aWRhdGUuaDogVXNlIEZ1bmN0aW9uRGF0YSwgaXQgaXMgZ29vZCBzaW5jZSBpdCBpcyBtb3JlIHN0
cm9uZ2x5IHR5cGVkLgorCiAyMDE5LTA4LTE3ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGlu
Z0Bzb255LmNvbT4KIAogICAgICAgICBbRVNOZXh0XSBJbXBsZW1lbnQgb3B0aW9uYWwgY2hhaW5p
bmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMWI4ZjgxZjAwNWVhN2E2MGE2M2Yy
N2VjYzBmMmE3MjdhNDIwM2UwYi4uOTA3ZjE2NjM4NTZjZDM0OWNlNTQxOGZkZjQ4ZjA0Y2JmYjk1
OGE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwOTgsNyArMTA5OCw2IEBA
CiAJCTUzRjQwRThCMUQ1OTAxQkIwMDk5QTFCNiAvKiBXYXNtRnVuY3Rpb25QYXJzZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRjQwRThBMUQ1OTAx
QkIwMDk5QTFCNiAvKiBXYXNtRnVuY3Rpb25QYXJzZXIuaCAqLzsgfTsKIAkJNTNGNDBFOEQxRDU5
MDFGMjAwOTlBMUI2IC8qIFdhc21QYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUzRjQwRThDMUQ1OTAxRjIwMDk5QTFCNiAvKiBXYXNtUGFyc2Vy
LmggKi87IH07CiAJCTUzRjQwRTkzMUQ1QTRBQjMwMDk5QTFCNiAvKiBXYXNtQjNJUkdlbmVyYXRv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGNDBF
OTIxRDVBNEFCMzAwOTlBMUI2IC8qIFdhc21CM0lSR2VuZXJhdG9yLmggKi87IH07Ci0JCTUzRjQw
RTk1MUQ1QTdBRUYwMDk5QTFCNiAvKiBXYXNtTW9kdWxlUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Y0MEU5NDFENUE3QUVGMDA5OUExQjYg
LyogV2FzbU1vZHVsZVBhcnNlci5oICovOyB9OwogCQk1M0Y2QkY2RDFDM0YwNjBBMDBGNDFFNUQg
LyogSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Y2QkY2QzFDM0YwNjBBMDBGNDFFNUQgLyog
SW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTNGOEQyMDAxRTgzODdENDAwRDIxMTE2IC8q
IFdhc21CQlFQbGFuSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTNGOEQxRkYxRTgzODdENDAwRDIxMTE2IC8qIFdhc21CQlFQbGFuSW5saW5l
cy5oICovOyB9OwogCQk1M0ZBMkFFMTFDRjM3RjNGMDAyMjcxMUQgLyogTExJbnRQcm90b3R5cGVM
b2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0ZBMkFFMDFDRjM3RjNGMDAyMjcxMUQgLyogTExJbnRQ
cm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM2ODUsOCArMzY4NCw2IEBACiAJ
CTUzRjQwRThDMUQ1OTAxRjIwMDk5QTFCNiAvKiBXYXNtUGFyc2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21QYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTNGNDBFOEUxRDU5MDI4MjAwOTlBMUI2IC8qIFdhc21CM0lSR2VuZXJhdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21CM0lSR2VuZXJhdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNGNDBFOTIxRDVBNEFCMzAwOTlBMUI2
IC8qIFdhc21CM0lSR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdhc21CM0lSR2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUzRjQw
RTk0MUQ1QTdBRUYwMDk5QTFCNiAvKiBXYXNtTW9kdWxlUGFyc2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21Nb2R1bGVQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNTNGNDBFOTYxRDVBN0JFQzAwOTlBMUI2IC8qIFdhc21Nb2R1bGVQYXJzZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2FzbU1vZHVsZVBhcnNl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRjZCRjZDMUMzRjA2MEEwMEY0
MUU1RCAvKiBJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRjhEMUZGMUU4Mzg3RDQwMEQyMTExNiAv
KiBXYXNtQkJRUGxhbklubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2FzbUJCUVBsYW5JbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRkEy
QUUwMUNGMzdGM0YwMDIyNzExRCAvKiBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVy
ZVdhdGNocG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTExJbnRQcm90
b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC02NjQ3LDggKzY2NDQsNiBAQAogCQkJCTc5MDA4MTM3MUU5NUE4RUMwMDUy
RDdDRCAvKiBXYXNtTW9kdWxlLmggKi8sCiAJCQkJNTNFNzc3RTExRTkyRTI2NTAwN0NCRUM0IC8q
IFdhc21Nb2R1bGVJbmZvcm1hdGlvbi5jcHAgKi8sCiAJCQkJNTNFNzc3RTIxRTkyRTI2NTAwN0NC
RUM0IC8qIFdhc21Nb2R1bGVJbmZvcm1hdGlvbi5oICovLAotCQkJCTUzRjQwRTk2MUQ1QTdCRUMw
MDk5QTFCNiAvKiBXYXNtTW9kdWxlUGFyc2VyLmNwcCAqLywKLQkJCQk1M0Y0MEU5NDFENUE3QUVG
MDA5OUExQjYgLyogV2FzbU1vZHVsZVBhcnNlci5oICovLAogCQkJCUFENUI0MTZFMUVCQUZCNjUw
MDhFRkE0MyAvKiBXYXNtTmFtZS5oICovLAogCQkJCUFEN0I0QjJEMUZBM0UyODYwMEM5REY3OSAv
KiBXYXNtTmFtZVNlY3Rpb24uaCAqLywKIAkJCQlBREQ4RkE0NDFFQjMwNzcxMDBERjU0MkYgLyog
V2FzbU5hbWVTZWN0aW9uUGFyc2VyLmNwcCAqLywKQEAgLTEwMDQwLDcgKzEwMDM1LDYgQEAKIAkJ
CQlBRDVDMzZFRjFGN0EyNjNBMDAwQkNBQUYgLyogV2FzbU1lbW9yeU1vZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTc5MDA4MTM5MUU5NUE4RUMwMDUyRDdDRCAvKiBXYXNtTW9kdWxlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1M0U3NzdFNDFFOTJFMjY1MDA3Q0JFQzQgLyogV2FzbU1vZHVsZUluZm9y
bWF0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQk1M0Y0MEU5NTFENUE3QUVGMDA5OUExQjYgLyog
V2FzbU1vZHVsZVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQ1QjQxNkYxRUJBRkI3NzAw
OEVGQTQzIC8qIFdhc21OYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDdCNEIyRTFGQTNFMjk4
MDBDOURGNzkgLyogV2FzbU5hbWVTZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBREQ4RkE0
NjFFQjMwNzk3MDBERjU0MkYgLyogV2FzbU5hbWVTZWN0aW9uUGFyc2VyLmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA5NDY5YzljZWNhN2Y4YzhkYjhkYTE2
NmRmNWJlYmYwMWJiMTk1NDc3Li5jZTAyMmIzMjUyM2M2MWE0M2YwNTNkMmNlYjUzYWRiMjE5MWUw
M2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0xMDEyLDcgKzEwMTIsNiBAQCB3
YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5jcHAKIHdhc20vV2FzbU1lbW9yeU1vZGUuY3BwCiB3
YXNtL1dhc21Nb2R1bGUuY3BwCiB3YXNtL1dhc21Nb2R1bGVJbmZvcm1hdGlvbi5jcHAKLXdhc20v
V2FzbU1vZHVsZVBhcnNlci5jcHAKIHdhc20vV2FzbU5hbWVTZWN0aW9uUGFyc2VyLmNwcAogd2Fz
bS9XYXNtT01HUGxhbi5jcHAKIHdhc20vV2FzbU9wY29kZU9yaWdpbi5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRleCBjOTU5MTdhZmQ4MDcxZmMwYjdh
NmVlYjA5NGNhMjYxYjliOGJkYjEyLi4wNmM2ODJmYjI4ZWI1ZGI3MDM0NThhZWM1ZjViN2VlZTgw
NjdlMGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJW
TS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCkBA
IC0xMTA5LDEwICsxMTA5LDI1IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uV2FzbVN0cmVhbWluZ1BhcnNlckZpbmFsaXplKEV4ZWNTdGF0CiAKIGNsYXNzIFdh
c21TdHJlYW1pbmdQYXJzZXIgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogcHVibGlj
OgorICAgIGNsYXNzIENsaWVudCBmaW5hbCA6IHB1YmxpYyBXYXNtOjpTdHJlYW1pbmdQYXJzZXJD
bGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgQ2xpZW50KFdhc21TdHJlYW1p
bmdQYXJzZXIqIHBhcnNlcikKKyAgICAgICAgICAgIDogbV9wYXJzZXIocGFyc2VyKQorICAgICAg
ICB7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGRpZFBhcnNlU2VjdGlvbihXYXNtOjpTZWN0
aW9uKSBvdmVycmlkZSB7IH0KKyAgICAgICAgdm9pZCBkaWRQYXJzZUZ1bmN0aW9uKHVuc2lnbmVk
LCBjb25zdCBXYXNtOjpGdW5jdGlvbkRhdGEmKSBvdmVycmlkZSB7IH0KKyAgICAgICAgdm9pZCBk
aWRGaW5pc2hQYXJzaW5nKCkgb3ZlcnJpZGUgeyB9CisKKyAgICAgICAgV2FzbVN0cmVhbWluZ1Bh
cnNlciogbV9wYXJzZXI7CisgICAgfTsKKwogICAgIFdhc21TdHJlYW1pbmdQYXJzZXIoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCiAg
ICAgICAgICwgbV9pbmZvKFdhc206Ok1vZHVsZUluZm9ybWF0aW9uOjpjcmVhdGUoKSkKLSAgICAg
ICAgLCBtX3N0cmVhbWluZ1BhcnNlcihtX2luZm8uZ2V0KCkpCisgICAgICAgICwgbV9jbGllbnQo
dGhpcykKKyAgICAgICAgLCBtX3N0cmVhbWluZ1BhcnNlcihtX2luZm8uZ2V0KCksIG1fY2xpZW50
KQogICAgIHsKICAgICB9CiAKQEAgLTExNDUsNiArMTE2MCw3IEBAIGNsYXNzIFdhc21TdHJlYW1p
bmdQYXJzZXIgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogICAgIERFQ0xBUkVfSU5G
TzsKIAogICAgIFJlZjxXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbj4gbV9pbmZvOworICAgIENsaWVu
dCBtX2NsaWVudDsKICAgICBXYXNtOjpTdHJlYW1pbmdQYXJzZXIgbV9zdHJlYW1pbmdQYXJzZXI7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJH
ZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJh
dG9yLmNwcAppbmRleCBlN2NkZjg2ZDlmYjMyMGU0Y2VlM2Q5YmNmNTRkMDNiZDIwN2FmNWMxLi45
MDgxNmRlZjljZWM0OWM4MmI2Y2EwZGU4NDQyOGIwNTdlY2M4MmQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKQEAgLTIxMzcsNyAr
MjEzNyw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6Om9yaWdpbigpIC0+IEIzOjpPcmlnaW4KICAg
ICByZXR1cm4gQjM6Ok9yaWdpbigpOwogfQogCi1FeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8SW50
ZXJuYWxGdW5jdGlvbj4sIFN0cmluZz4gcGFyc2VBbmRDb21waWxlQWlyKENvbXBpbGF0aW9uQ29u
dGV4dCYgY29tcGlsYXRpb25Db250ZXh0LCBjb25zdCB1aW50OF90KiBmdW5jdGlvblN0YXJ0LCBz
aXplX3QgZnVuY3Rpb25MZW5ndGgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8
VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mIHVubGlua2VkV2FzbVRvV2FzbUNhbGxzLCBjb25zdCBN
b2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgTWVtb3J5TW9kZSBtb2RlLCB1aW50MzJfdCBmdW5jdGlv
bkluZGV4LCBUaWVyVXBDb3VudCogdGllclVwLCBUaHJvd1dhc21FeGNlcHRpb24gdGhyb3dXYXNt
RXhjZXB0aW9uKQorRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPEludGVybmFsRnVuY3Rpb24+LCBT
dHJpbmc+IHBhcnNlQW5kQ29tcGlsZUFpcihDb21waWxhdGlvbkNvbnRleHQmIGNvbXBpbGF0aW9u
Q29udGV4dCwgY29uc3QgRnVuY3Rpb25EYXRhJiBmdW5jdGlvbiwgY29uc3QgU2lnbmF0dXJlJiBz
aWduYXR1cmUsIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYgdW5saW5rZWRXYXNtVG9X
YXNtQ2FsbHMsIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBNZW1vcnlNb2RlIG1vZGUs
IHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIFRpZXJVcENvdW50KiB0aWVyVXAsIFRocm93V2FzbUV4
Y2VwdGlvbiB0aHJvd1dhc21FeGNlcHRpb24pCiB7CiAgICAgYXV0byByZXN1bHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEludGVybmFsRnVuY3Rpb24+KCk7CiAKQEAgLTIxNjEsNyArMjE2MSw3IEBAIEV4
cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiwgU3RyaW5nPiBwYXJzZUFu
ZENvbXBpbGVBaXIoQ29tcGlsYXRpCiAgICAgcHJvY2VkdXJlLnNldE9wdExldmVsKE9wdGlvbnM6
OndlYkFzc2VtYmx5QkJRQWlyT3B0aW1pemF0aW9uTGV2ZWwoKSk7CiAKICAgICBBaXJJUkdlbmVy
YXRvciBpckdlbmVyYXRvcihpbmZvLCBwcm9jZWR1cmUsIHJlc3VsdC5nZXQoKSwgdW5saW5rZWRX
YXNtVG9XYXNtQ2FsbHMsIG1vZGUsIGZ1bmN0aW9uSW5kZXgsIHRpZXJVcCwgdGhyb3dXYXNtRXhj
ZXB0aW9uLCBzaWduYXR1cmUpOwotICAgIEZ1bmN0aW9uUGFyc2VyPEFpcklSR2VuZXJhdG9yPiBw
YXJzZXIoaXJHZW5lcmF0b3IsIGZ1bmN0aW9uU3RhcnQsIGZ1bmN0aW9uTGVuZ3RoLCBzaWduYXR1
cmUsIGluZm8pOworICAgIEZ1bmN0aW9uUGFyc2VyPEFpcklSR2VuZXJhdG9yPiBwYXJzZXIoaXJH
ZW5lcmF0b3IsIGZ1bmN0aW9uLmRhdGEuZGF0YSgpLCBmdW5jdGlvbi5kYXRhLnNpemUoKSwgc2ln
bmF0dXJlLCBpbmZvKTsKICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlci5wYXJz
ZSgpKTsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWly
SVJHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVy
YXRvci5oCmluZGV4IDM2YTczZGQ1OGEzMWI0MTVhM2JhOWFhZmU1OGYxY2EwZDFlYWI1Y2EuLjMz
MWI0YjBhZDMxM2U2MjNjYTdmZjRiZDhkZThhMTU4NmZjN2Q1MDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5oCkBAIC0zMSw3ICszMSw3IEBA
CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKLUV4cGVjdGVkPHN0ZDo6dW5p
cXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiwgU3RyaW5nPiBwYXJzZUFuZENvbXBpbGVBaXIoQ29t
cGlsYXRpb25Db250ZXh0JiwgY29uc3QgdWludDhfdCosIHNpemVfdCwgY29uc3QgU2lnbmF0dXJl
JiwgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiwgY29uc3QgTW9kdWxlSW5mb3JtYXRp
b24mLCBNZW1vcnlNb2RlLCB1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBUaWVyVXBDb3VudCogPSBu
dWxscHRyLCBUaHJvd1dhc21FeGNlcHRpb24gPSBudWxscHRyKTsKK0V4cGVjdGVkPHN0ZDo6dW5p
cXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiwgU3RyaW5nPiBwYXJzZUFuZENvbXBpbGVBaXIoQ29t
cGlsYXRpb25Db250ZXh0JiwgY29uc3QgRnVuY3Rpb25EYXRhJiwgY29uc3QgU2lnbmF0dXJlJiwg
VmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiwgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24m
LCBNZW1vcnlNb2RlLCB1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBUaWVyVXBDb3VudCogPSBudWxs
cHRyLCBUaHJvd1dhc21FeGNlcHRpb24gPSBudWxscHRyKTsKIAogfSB9IC8vIG5hbWVzcGFjZSBK
U0M6Oldhc20KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIz
SVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5l
cmF0b3IuY3BwCmluZGV4IDkyZDlmNDhmYzgwYTk3MWUyYTBjNDllY2UyMmE0YzI1YzEwZmY4NDYu
LjMxMWUxYzhiZDJhZTAwNDY3NWQ3MjZhZDU1Nzk1MzBlNGEwYWI3YzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAgLTE1NDksNyAr
MTU0OSw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6b3JpZ2luKCkgLT4gT3JpZ2luCiAgICAgcmV0
dXJuIGJpdHdpc2VfY2FzdDxPcmlnaW4+KG9yaWdpbik7CiB9CiAKLUV4cGVjdGVkPHN0ZDo6dW5p
cXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiwgU3RyaW5nPiBwYXJzZUFuZENvbXBpbGUoQ29tcGls
YXRpb25Db250ZXh0JiBjb21waWxhdGlvbkNvbnRleHQsIGNvbnN0IHVpbnQ4X3QqIGZ1bmN0aW9u
U3RhcnQsIHNpemVfdCBmdW5jdGlvbkxlbmd0aCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUs
IFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYgdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMs
IGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBNZW1vcnlNb2RlIG1vZGUsIENvbXBpbGF0
aW9uTW9kZSBjb21waWxhdGlvbk1vZGUsIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIFRpZXJVcENv
dW50KiB0aWVyVXAsIFRocm93V2FzbUV4Y2VwdGlvbiB0aHJvd1dhc21FeGNlcHRpb24pCitFeHBl
Y3RlZDxzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4sIFN0cmluZz4gcGFyc2VBbmRD
b21waWxlKENvbXBpbGF0aW9uQ29udGV4dCYgY29tcGlsYXRpb25Db250ZXh0LCBjb25zdCBGdW5j
dGlvbkRhdGEmIGZ1bmN0aW9uLCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPFVu
bGlua2VkV2FzbVRvV2FzbUNhbGw+JiB1bmxpbmtlZFdhc21Ub1dhc21DYWxscywgY29uc3QgTW9k
dWxlSW5mb3JtYXRpb24mIGluZm8sIE1lbW9yeU1vZGUgbW9kZSwgQ29tcGlsYXRpb25Nb2RlIGNv
bXBpbGF0aW9uTW9kZSwgdWludDMyX3QgZnVuY3Rpb25JbmRleCwgVGllclVwQ291bnQqIHRpZXJV
cCwgVGhyb3dXYXNtRXhjZXB0aW9uIHRocm93V2FzbUV4Y2VwdGlvbikKIHsKICAgICBhdXRvIHJl
c3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8SW50ZXJuYWxGdW5jdGlvbj4oKTsKIApAQCAtMTU3NCw3
ICsxNTc0LDcgQEAgRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPEludGVybmFsRnVuY3Rpb24+LCBT
dHJpbmc+IHBhcnNlQW5kQ29tcGlsZShDb21waWxhdGlvbkMKICAgICAgICAgOiBPcHRpb25zOjp3
ZWJBc3NlbWJseU9NR09wdGltaXphdGlvbkxldmVsKCkpOwogCiAgICAgQjNJUkdlbmVyYXRvciBp
ckdlbmVyYXRvcihpbmZvLCBwcm9jZWR1cmUsIHJlc3VsdC5nZXQoKSwgdW5saW5rZWRXYXNtVG9X
YXNtQ2FsbHMsIG1vZGUsIGNvbXBpbGF0aW9uTW9kZSwgZnVuY3Rpb25JbmRleCwgdGllclVwLCB0
aHJvd1dhc21FeGNlcHRpb24pOwotICAgIEZ1bmN0aW9uUGFyc2VyPEIzSVJHZW5lcmF0b3I+IHBh
cnNlcihpckdlbmVyYXRvciwgZnVuY3Rpb25TdGFydCwgZnVuY3Rpb25MZW5ndGgsIHNpZ25hdHVy
ZSwgaW5mbyk7CisgICAgRnVuY3Rpb25QYXJzZXI8QjNJUkdlbmVyYXRvcj4gcGFyc2VyKGlyR2Vu
ZXJhdG9yLCBmdW5jdGlvbi5kYXRhLmRhdGEoKSwgZnVuY3Rpb24uZGF0YS5zaXplKCksIHNpZ25h
dHVyZSwgaW5mbyk7CiAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZXIucGFyc2Uo
KSk7CiAKICAgICBpckdlbmVyYXRvci5pbnNlcnRDb25zdGFudHMoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5oCmluZGV4IDJlZDhlNjdjZmNiYjdk
ZTkxMmY2ZTAyZGY5MGM2OGM4Njg2ODhiNTEuLjFkMGFlY2NkZDU0NWZjYWU2YThhNWUzMjU3MzQ1
OGI5ZWM0OGYxZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21C
M0lSR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJH
ZW5lcmF0b3IuaApAQCAtNTEsNyArNTEsNyBAQCBzdHJ1Y3QgQ29tcGlsYXRpb25Db250ZXh0IHsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QjM6Ok9wYXF1ZUJ5cHJvZHVjdHM+IHdhc21FbnRyeXBvaW50
Qnlwcm9kdWN0czsKIH07CiAKLUV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0
aW9uPiwgU3RyaW5nPiBwYXJzZUFuZENvbXBpbGUoQ29tcGlsYXRpb25Db250ZXh0JiwgY29uc3Qg
dWludDhfdCosIHNpemVfdCwgY29uc3QgU2lnbmF0dXJlJiwgVmVjdG9yPFVubGlua2VkV2FzbVRv
V2FzbUNhbGw+JiwgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mLCBNZW1vcnlNb2RlLCBDb21waWxh
dGlvbk1vZGUsIHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIFRpZXJVcENvdW50KiA9IG51bGxwdHIs
IFRocm93V2FzbUV4Y2VwdGlvbiA9IG51bGxwdHIpOworRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRy
PEludGVybmFsRnVuY3Rpb24+LCBTdHJpbmc+IHBhcnNlQW5kQ29tcGlsZShDb21waWxhdGlvbkNv
bnRleHQmLCBjb25zdCBGdW5jdGlvbkRhdGEmLCBjb25zdCBTaWduYXR1cmUmLCBWZWN0b3I8VW5s
aW5rZWRXYXNtVG9XYXNtQ2FsbD4mLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYsIE1lbW9yeU1v
ZGUsIENvbXBpbGF0aW9uTW9kZSwgdWludDMyX3QgZnVuY3Rpb25JbmRleCwgVGllclVwQ291bnQq
ID0gbnVsbHB0ciwgVGhyb3dXYXNtRXhjZXB0aW9uID0gbnVsbHB0cik7CiAKIH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpXYXNtCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21CQlFQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFu
LmNwcAppbmRleCA1NDBkMmQ5YjUxNjI1YzczYjZkZjc5MTgxMzljMGJiNGI3MTFlYTFmLi5hMWRj
OWYzODVjMjY1ZDk2OTllZGI3MWEyMjNmNzE3ZDY4NWM1YzBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAi
V2FzbUNhbGxpbmdDb252ZW50aW9uLmgiCiAjaW5jbHVkZSAiV2FzbUZhdWx0U2lnbmFsSGFuZGxl
ci5oIgogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKLSNpbmNsdWRlICJXYXNtTW9kdWxlUGFyc2Vy
LmgiCiAjaW5jbHVkZSAiV2FzbVNpZ25hdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJXYXNtVGll
clVwQ291bnQuaCIKICNpbmNsdWRlICJXYXNtVmFsaWRhdGUuaCIKQEAgLTU1LDYgKzU0LDcgQEAg
c3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCiBCQlFQbGFuOjpCQlFQbGFuKENv
bnRleHQqIGNvbnRleHQsIFJlZjxNb2R1bGVJbmZvcm1hdGlvbj4gaW5mbywgQXN5bmNXb3JrIHdv
cmssIENvbXBsZXRpb25UYXNrJiYgdGFzaywgQ3JlYXRlRW1iZWRkZXJXcmFwcGVyJiYgY3JlYXRl
RW1iZWRkZXJXcmFwcGVyLCBUaHJvd1dhc21FeGNlcHRpb24gdGhyb3dXYXNtRXhjZXB0aW9uKQog
ICAgIDogQmFzZShjb250ZXh0LCBXVEZNb3ZlKGluZm8pLCBXVEZNb3ZlKHRhc2spLCBXVEZNb3Zl
KGNyZWF0ZUVtYmVkZGVyV3JhcHBlciksIHRocm93V2FzbUV4Y2VwdGlvbikKKyAgICAsIG1fc3Ry
ZWFtaW5nUGFyc2VyKG1fbW9kdWxlSW5mb3JtYXRpb24uZ2V0KCksICp0aGlzKQogICAgICwgbV9z
dGF0ZShTdGF0ZTo6VmFsaWRhdGVkKQogICAgICwgbV9hc3luY1dvcmsod29yaykKIHsKQEAgLTYz
LDYgKzYzLDcgQEAgQkJRUGxhbjo6QkJRUGxhbihDb250ZXh0KiBjb250ZXh0LCBSZWY8TW9kdWxl
SW5mb3JtYXRpb24+IGluZm8sIEFzeW5jV29yayB3b3JrLAogQkJRUGxhbjo6QkJRUGxhbihDb250
ZXh0KiBjb250ZXh0LCBWZWN0b3I8dWludDhfdD4mJiBzb3VyY2UsIEFzeW5jV29yayB3b3JrLCBD
b21wbGV0aW9uVGFzayYmIHRhc2ssIENyZWF0ZUVtYmVkZGVyV3JhcHBlciYmIGNyZWF0ZUVtYmVk
ZGVyV3JhcHBlciwgVGhyb3dXYXNtRXhjZXB0aW9uIHRocm93V2FzbUV4Y2VwdGlvbikKICAgICA6
IEJhc2UoY29udGV4dCwgTW9kdWxlSW5mb3JtYXRpb246OmNyZWF0ZSgpLCBXVEZNb3ZlKHRhc2sp
LCBXVEZNb3ZlKGNyZWF0ZUVtYmVkZGVyV3JhcHBlciksIHRocm93V2FzbUV4Y2VwdGlvbikKICAg
ICAsIG1fc291cmNlKFdURk1vdmUoc291cmNlKSkKKyAgICAsIG1fc3RyZWFtaW5nUGFyc2VyKG1f
bW9kdWxlSW5mb3JtYXRpb24uZ2V0KCksICp0aGlzKQogICAgICwgbV9zdGF0ZShTdGF0ZTo6SW5p
dGlhbCkKICAgICAsIG1fYXN5bmNXb3JrKHdvcmspCiB7CkBAIC03MCw2ICs3MSw3IEBAIEJCUVBs
YW46OkJCUVBsYW4oQ29udGV4dCogY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+JiYgc291cmNlLCBB
c3luY1dvcmsgd29yaywgQ29tCiAKIEJCUVBsYW46OkJCUVBsYW4oQ29udGV4dCogY29udGV4dCwg
QXN5bmNXb3JrIHdvcmssIENvbXBsZXRpb25UYXNrJiYgdGFzaykKICAgICA6IEJhc2UoY29udGV4
dCwgV1RGTW92ZSh0YXNrKSkKKyAgICAsIG1fc3RyZWFtaW5nUGFyc2VyKG1fbW9kdWxlSW5mb3Jt
YXRpb24uZ2V0KCksICp0aGlzKQogICAgICwgbV9zdGF0ZShTdGF0ZTo6SW5pdGlhbCkKICAgICAs
IG1fYXN5bmNXb3JrKHdvcmspCiB7CkBAIC05NCw2ICs5NiwyNSBAQCB2b2lkIEJCUVBsYW46Om1v
dmVUb1N0YXRlKFN0YXRlIHN0YXRlKQogICAgIG1fc3RhdGUgPSBzdGF0ZTsKIH0KIAordm9pZCBC
QlFQbGFuOjpkaWRQYXJzZUZ1bmN0aW9uKHVuc2lnbmVkIGZ1bmN0aW9uSW5kZXgsIGNvbnN0IEZ1
bmN0aW9uRGF0YSYgZnVuY3Rpb24pCit7CisgICAgZGF0YUxvZ0xuSWYoV2FzbUJCUVBsYW5JbnRl
cm5hbDo6dmVyYm9zZSwgIlByb2Nlc3NpbmcgZnVuY3Rpb24gc3RhcnRpbmcgYXQ6ICIsIGZ1bmN0
aW9uLnN0YXJ0LCAiIGFuZCBlbmRpbmcgYXQ6ICIsIGZ1bmN0aW9uLmVuZCk7CisgICAgc2l6ZV90
IGZ1bmN0aW9uTGVuZ3RoID0gZnVuY3Rpb24uZW5kIC0gZnVuY3Rpb24uc3RhcnQ7CisgICAgQVNT
RVJUKGZ1bmN0aW9uTGVuZ3RoID09IGZ1bmN0aW9uLmRhdGEuc2l6ZSgpKTsKKyAgICBTaWduYXR1
cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmludGVybmFsRnVu
Y3Rpb25TaWduYXR1cmVJbmRpY2VzW2Z1bmN0aW9uSW5kZXhdOworICAgIGNvbnN0IFNpZ25hdHVy
ZSYgc2lnbmF0dXJlID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChzaWduYXR1cmVJbmRleCk7
CisKKyAgICBhdXRvIHZhbGlkYXRpb25SZXN1bHQgPSB2YWxpZGF0ZUZ1bmN0aW9uKGZ1bmN0aW9u
LCBzaWduYXR1cmUsIG1fbW9kdWxlSW5mb3JtYXRpb24uZ2V0KCkpOworICAgIGlmICghdmFsaWRh
dGlvblJlc3VsdCkgeworICAgICAgICBpZiAoV2FzbUJCUVBsYW5JbnRlcm5hbDo6dmVyYm9zZSkg
eworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZ1bmN0aW9uTGVuZ3RoOyAr
K2kpCisgICAgICAgICAgICAgICAgZGF0YUxvZyhSYXdQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KGZ1bmN0aW9uLmRhdGFbaV0pKSwgIiwgIik7CisgICAgICAgICAgICBkYXRhTG9nTG4o
KTsKKyAgICAgICAgfQorICAgICAgICBmYWlsKGhvbGRMb2NrKG1fbG9jayksIG1ha2VTdHJpbmco
dmFsaWRhdGlvblJlc3VsdC5lcnJvcigpLCAiLCBpbiBmdW5jdGlvbiBhdCBpbmRleCAiLCBTdHJp
bmc6Om51bWJlcihmdW5jdGlvbkluZGV4KSkpOyAvLyBGSVhNRSBtYWtlIHRoaXMgYW4gRXhwZWN0
ZWQuCisgICAgfQorfQorCiBib29sIEJCUVBsYW46OnBhcnNlQW5kVmFsaWRhdGVNb2R1bGUoY29u
c3QgdWludDhfdCogc291cmNlLCBzaXplX3Qgc291cmNlTGVuZ3RoKQogewogICAgIGlmIChtX3N0
YXRlICE9IFN0YXRlOjpJbml0aWFsKQpAQCAtMTA0LDM3ICsxMjUsMTYgQEAgYm9vbCBCQlFQbGFu
OjpwYXJzZUFuZFZhbGlkYXRlTW9kdWxlKGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgc2l6ZV90IHNv
dXJjZUxlbmd0aCkKICAgICBpZiAoV2FzbUJCUVBsYW5JbnRlcm5hbDo6dmVyYm9zZSB8fCBPcHRp
b25zOjpyZXBvcnRDb21waWxlVGltZXMoKSkKICAgICAgICAgc3RhcnRUaW1lID0gTW9ub3Rvbmlj
VGltZTo6bm93KCk7CiAKLSAgICB7Ci0gICAgICAgIE1vZHVsZVBhcnNlciBtb2R1bGVQYXJzZXIo
c291cmNlLCBzb3VyY2VMZW5ndGgsIG1fbW9kdWxlSW5mb3JtYXRpb24pOwotICAgICAgICBhdXRv
IHBhcnNlUmVzdWx0ID0gbW9kdWxlUGFyc2VyLnBhcnNlKCk7Ci0gICAgICAgIGlmICghcGFyc2VS
ZXN1bHQpIHsKLSAgICAgICAgICAgIEJhc2U6OmZhaWwoaG9sZExvY2sobV9sb2NrKSwgV1RGTW92
ZShwYXJzZVJlc3VsdC5lcnJvcigpKSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIH0KKyAgICBtX3N0cmVhbWluZ1BhcnNlci5hZGRCeXRlcyhzb3VyY2UsIHNvdXJjZUxlbmd0
aCk7CisgICAgaWYgKG1fc3RyZWFtaW5nUGFyc2VyLmZpbmFsaXplKCkgIT0gU3RyZWFtaW5nUGFy
c2VyOjpTdGF0ZTo6RmluaXNoZWQpIHsKKyAgICAgICAgZmFpbChob2xkTG9jayhtX2xvY2spLCBT
dHJpbmcobV9zdHJlYW1pbmdQYXJzZXIuZXJyb3JNZXNzYWdlKCkpKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KLQotICAgIGNvbnN0IGF1dG8mIGZ1bmN0aW9ucyA9IG1fbW9kdWxlSW5m
b3JtYXRpb24tPmZ1bmN0aW9uczsKLSAgICBmb3IgKHVuc2lnbmVkIGZ1bmN0aW9uSW5kZXggPSAw
OyBmdW5jdGlvbkluZGV4IDwgZnVuY3Rpb25zLnNpemUoKTsgKytmdW5jdGlvbkluZGV4KSB7Ci0g
ICAgICAgIGNvbnN0IGF1dG8mIGZ1bmN0aW9uID0gZnVuY3Rpb25zW2Z1bmN0aW9uSW5kZXhdOwot
ICAgICAgICBkYXRhTG9nTG5JZihXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3NlLCAiUHJvY2Vz
c2luZyBmdW5jdGlvbiBzdGFydGluZyBhdDogIiwgZnVuY3Rpb24uc3RhcnQsICIgYW5kIGVuZGlu
ZyBhdDogIiwgZnVuY3Rpb24uZW5kKTsKLSAgICAgICAgc2l6ZV90IGZ1bmN0aW9uTGVuZ3RoID0g
ZnVuY3Rpb24uZW5kIC0gZnVuY3Rpb24uc3RhcnQ7Ci0gICAgICAgIEFTU0VSVChmdW5jdGlvbkxl
bmd0aCA8PSBzb3VyY2VMZW5ndGgpOwotICAgICAgICBBU1NFUlQoZnVuY3Rpb25MZW5ndGggPT0g
ZnVuY3Rpb24uZGF0YS5zaXplKCkpOwotICAgICAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJ
bmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRp
Y2VzW2Z1bmN0aW9uSW5kZXhdOwotICAgICAgICBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSA9
IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoc2lnbmF0dXJlSW5kZXgpOwotCi0gICAgICAgIGF1
dG8gdmFsaWRhdGlvblJlc3VsdCA9IHZhbGlkYXRlRnVuY3Rpb24oZnVuY3Rpb24uZGF0YS5kYXRh
KCksIGZ1bmN0aW9uLmRhdGEuc2l6ZSgpLCBzaWduYXR1cmUsIG1fbW9kdWxlSW5mb3JtYXRpb24u
Z2V0KCkpOwotICAgICAgICBpZiAoIXZhbGlkYXRpb25SZXN1bHQpIHsKLSAgICAgICAgICAgIGlm
IChXYXNtQkJRUGxhbkludGVybmFsOjp2ZXJib3NlKSB7Ci0gICAgICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGZ1bmN0aW9uTGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAg
ICAgIGRhdGFMb2coUmF3UG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihmdW5jdGlvbi5k
YXRhW2ldKSksICIsICIpOwotICAgICAgICAgICAgICAgIGRhdGFMb2dMbigpOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgQmFzZTo6ZmFpbChob2xkTG9jayhtX2xvY2spLCBtYWtlU3RyaW5n
KHZhbGlkYXRpb25SZXN1bHQuZXJyb3IoKSwgIiwgaW4gZnVuY3Rpb24gYXQgaW5kZXggIiwgU3Ry
aW5nOjpudW1iZXIoZnVuY3Rpb25JbmRleCkpKTsgLy8gRklYTUUgbWFrZSB0aGlzIGFuIEV4cGVj
dGVkLgorICAgIHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAg
ICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0K
ICAgICB9Ci0KICAgICBpZiAoV2FzbUJCUVBsYW5JbnRlcm5hbDo6dmVyYm9zZSB8fCBPcHRpb25z
OjpyZXBvcnRDb21waWxlVGltZXMoKSkKICAgICAgICAgZGF0YUxvZ0xuKCJUb29rICIsIChNb25v
dG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0VGltZSkubWljcm9zZWNvbmRzKCksICIgdXMgdG8gdmFs
aWRhdGUgbW9kdWxlIik7CiAKQEAgLTI3OCwxNiArMjc4LDEzIEBAIHZvaWQgQkJRUGxhbjo6Y29t
cGlsZUZ1bmN0aW9ucyhDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgICAgICAgICBmb3Jj
ZVVzaW5nQjMgPSB0cnVlOwogCiAgICAgICAgIGlmICghZm9yY2VVc2luZ0IzICYmIE9wdGlvbnM6
Ondhc21CQlFVc2VzQWlyKCkpCi0gICAgICAgICAgICBwYXJzZUFuZENvbXBpbGVSZXN1bHQgPSBw
YXJzZUFuZENvbXBpbGVBaXIobV9jb21waWxhdGlvbkNvbnRleHRzW2Z1bmN0aW9uSW5kZXhdLCBm
dW5jdGlvbi5kYXRhLmRhdGEoKSwgZnVuY3Rpb24uZGF0YS5zaXplKCksIHNpZ25hdHVyZSwgbV91
bmxpbmtlZFdhc21Ub1dhc21DYWxsc1tmdW5jdGlvbkluZGV4XSwgbV9tb2R1bGVJbmZvcm1hdGlv
bi5nZXQoKSwgbV9tb2RlLCBmdW5jdGlvbkluZGV4LCB0aWVyVXAsIG1fdGhyb3dXYXNtRXhjZXB0
aW9uKTsKKyAgICAgICAgICAgIHBhcnNlQW5kQ29tcGlsZVJlc3VsdCA9IHBhcnNlQW5kQ29tcGls
ZUFpcihtX2NvbXBpbGF0aW9uQ29udGV4dHNbZnVuY3Rpb25JbmRleF0sIGZ1bmN0aW9uLCBzaWdu
YXR1cmUsIG1fdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHNbZnVuY3Rpb25JbmRleF0sIG1fbW9kdWxl
SW5mb3JtYXRpb24uZ2V0KCksIG1fbW9kZSwgZnVuY3Rpb25JbmRleCwgdGllclVwLCBtX3Rocm93
V2FzbUV4Y2VwdGlvbik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBhcnNlQW5kQ29tcGls
ZVJlc3VsdCA9IHBhcnNlQW5kQ29tcGlsZShtX2NvbXBpbGF0aW9uQ29udGV4dHNbZnVuY3Rpb25J
bmRleF0sIGZ1bmN0aW9uLmRhdGEuZGF0YSgpLCBmdW5jdGlvbi5kYXRhLnNpemUoKSwgc2lnbmF0
dXJlLCBtX3VubGlua2VkV2FzbVRvV2FzbUNhbGxzW2Z1bmN0aW9uSW5kZXhdLCBtX21vZHVsZUlu
Zm9ybWF0aW9uLmdldCgpLCBtX21vZGUsIENvbXBpbGF0aW9uTW9kZTo6QkJRTW9kZSwgZnVuY3Rp
b25JbmRleCwgdGllclVwLCBtX3Rocm93V2FzbUV4Y2VwdGlvbik7CisgICAgICAgICAgICBwYXJz
ZUFuZENvbXBpbGVSZXN1bHQgPSBwYXJzZUFuZENvbXBpbGUobV9jb21waWxhdGlvbkNvbnRleHRz
W2Z1bmN0aW9uSW5kZXhdLCBmdW5jdGlvbiwgc2lnbmF0dXJlLCBtX3VubGlua2VkV2FzbVRvV2Fz
bUNhbGxzW2Z1bmN0aW9uSW5kZXhdLCBtX21vZHVsZUluZm9ybWF0aW9uLmdldCgpLCBtX21vZGUs
IENvbXBpbGF0aW9uTW9kZTo6QkJRTW9kZSwgZnVuY3Rpb25JbmRleCwgdGllclVwLCBtX3Rocm93
V2FzbUV4Y2VwdGlvbik7CiAKICAgICAgICAgaWYgKFVOTElLRUxZKCFwYXJzZUFuZENvbXBpbGVS
ZXN1bHQpKSB7CiAgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7Ci0g
ICAgICAgICAgICBpZiAoIW1fZXJyb3JNZXNzYWdlKSB7Ci0gICAgICAgICAgICAgICAgLy8gTXVs
dGlwbGUgY29tcGlsZXMgY291bGQgZmFpbCBzaW11bHRhbmVvdXNseS4gV2UgYXJiaXRyYXJpbHkg
Y2hvb3NlIHRoZSBmaXJzdC4KLSAgICAgICAgICAgICAgICBmYWlsKGxvY2tlciwgbWFrZVN0cmlu
ZyhwYXJzZUFuZENvbXBpbGVSZXN1bHQuZXJyb3IoKSwgIiwgaW4gZnVuY3Rpb24gYXQgaW5kZXgg
IiwgU3RyaW5nOjpudW1iZXIoZnVuY3Rpb25JbmRleCkpKTsgLy8gRklYTUUgbWFrZSB0aGlzIGFu
IEV4cGVjdGVkLgotICAgICAgICAgICAgfQorICAgICAgICAgICAgZmFpbChsb2NrZXIsIG1ha2VT
dHJpbmcocGFyc2VBbmRDb21waWxlUmVzdWx0LmVycm9yKCksICIsIGluIGZ1bmN0aW9uIGF0IGlu
ZGV4ICIsIFN0cmluZzo6bnVtYmVyKGZ1bmN0aW9uSW5kZXgpKSk7IC8vIEZJWE1FIG1ha2UgdGhp
cyBhbiBFeHBlY3RlZC4KICAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gZnVuY3Rpb25zLnNp
emUoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzE5LDcgKzMxNiw3IEBA
IHZvaWQgQkJRUGxhbjo6Y29tcGxldGUoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlcikKICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoKmNvbnRl
eHQud2FzbUVudHJ5cG9pbnRKSVQsIG51bGxwdHIsIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAg
ICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGxpbmtCdWZmZXIuZGlkRmFpbFRvQWxsb2NhdGUo
KSkpIHsKLSAgICAgICAgICAgICAgICAgICAgQmFzZTo6ZmFpbChsb2NrZXIsIG1ha2VTdHJpbmco
Ik91dCBvZiBleGVjdXRhYmxlIG1lbW9yeSBpbiBmdW5jdGlvbiBhdCBpbmRleCAiLCBTdHJpbmc6
Om51bWJlcihmdW5jdGlvbkluZGV4KSkpOworICAgICAgICAgICAgICAgICAgICBmYWlsKGxvY2tl
ciwgbWFrZVN0cmluZygiT3V0IG9mIGV4ZWN1dGFibGUgbWVtb3J5IGluIGZ1bmN0aW9uIGF0IGlu
ZGV4ICIsIFN0cmluZzo6bnVtYmVyKGZ1bmN0aW9uSW5kZXgpKSk7CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTMzMSw3ICszMjgsNyBAQCB2b2lk
IEJCUVBsYW46OmNvbXBsZXRlKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIpCiAgICAgICAg
ICAgICBpZiAoYXV0byBlbWJlZGRlclRvV2FzbUludGVybmFsRnVuY3Rpb24gPSBtX2VtYmVkZGVy
VG9XYXNtSW50ZXJuYWxGdW5jdGlvbnMuZ2V0KGZ1bmN0aW9uSW5kZXgpKSB7CiAgICAgICAgICAg
ICAgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKCpjb250ZXh0LmVtYmVkZGVyRW50cnlwb2ludEpJ
VCwgbnVsbHB0ciwgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKICAgICAgICAgICAgICAgICBpZiAo
VU5MSUtFTFkobGlua0J1ZmZlci5kaWRGYWlsVG9BbGxvY2F0ZSgpKSkgewotICAgICAgICAgICAg
ICAgICAgICBCYXNlOjpmYWlsKGxvY2tlciwgbWFrZVN0cmluZygiT3V0IG9mIGV4ZWN1dGFibGUg
bWVtb3J5IGluIGZ1bmN0aW9uIGVudHJ5cG9pbnQgYXQgaW5kZXggIiwgU3RyaW5nOjpudW1iZXIo
ZnVuY3Rpb25JbmRleCkpKTsKKyAgICAgICAgICAgICAgICAgICAgZmFpbChsb2NrZXIsIG1ha2VT
dHJpbmcoIk91dCBvZiBleGVjdXRhYmxlIG1lbW9yeSBpbiBmdW5jdGlvbiBlbnRyeXBvaW50IGF0
IGluZGV4ICIsIFN0cmluZzo6bnVtYmVyKGZ1bmN0aW9uSW5kZXgpKSk7CiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQkJRUGxhbi5oCmluZGV4IDk0MWFjNzVmNzBlNmY5MTFiOWZiYjNkZGIxMzc4Y2Nm
OTY5OTQxYWQuLmI0MDE2MjE0NmY3MzFmMzg5OWUzNzBlOWE3Yjg3NzUzZTAwMDMzMTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uaApAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIldhc21CM0lSR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiV2FzbU1vZHVsZUluZm9y
bWF0aW9uLmgiCiAjaW5jbHVkZSAiV2FzbVBsYW4uaCIKKyNpbmNsdWRlICJXYXNtU3RyZWFtaW5n
UGFyc2VyLmgiCiAjaW5jbHVkZSAiV2FzbVRpZXJVcENvdW50LmgiCiAjaW5jbHVkZSA8d3RmL0Jh
Zy5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgpAQCAtNDQsNyArNDUsNyBAQCBjbGFzcyBD
YWxsTGlua0luZm87CiAKIG5hbWVzcGFjZSBXYXNtIHsKIAotY2xhc3MgQkJRUGxhbiBmaW5hbCA6
IHB1YmxpYyBQbGFuIHsKK2NsYXNzIEJCUVBsYW4gZmluYWwgOiBwdWJsaWMgUGxhbiwgcHVibGlj
IFN0cmVhbWluZ1BhcnNlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IFBsYW47
CiAgICAgZW51bSBBc3luY1dvcmsgOiB1aW50OF90IHsgRnVsbENvbXBpbGUsIFZhbGlkYXRpb24g
fTsKQEAgLTEyNyw2ICsxMjgsOCBAQCBjbGFzcyBCQlFQbGFuIGZpbmFsIDogcHVibGljIFBsYW4g
ewogICAgIGJvb2wgaGFzQmVlblByZXBhcmVkKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA+PSBT
dGF0ZTo6UHJlcGFyZWQ7IH0KICAgICBib29sIG11bHRpVGhyZWFkZWQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBoYXNCZWVuUHJlcGFyZWQoKTsgfQogCisgICAgdm9pZCBkaWRQYXJzZUZ1bmN0
aW9uKHVuc2lnbmVkLCBjb25zdCBGdW5jdGlvbkRhdGEmKSBvdmVycmlkZTsKKwogcHJpdmF0ZToK
ICAgICBjbGFzcyBUaHJlYWRDb3VudEhvbGRlcjsKICAgICBmcmllbmQgY2xhc3MgVGhyZWFkQ291
bnRIb2xkZXI7CkBAIC0xNDksNiArMTUyLDcgQEAgY2xhc3MgQkJRUGxhbiBmaW5hbCA6IHB1Ymxp
YyBQbGFuIHsKICAgICBWZWN0b3I8VGllclVwQ291bnQ+IG1fdGllclVwQ291bnRzOwogCiAgICAg
VmVjdG9yPFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPj4gbV91bmxpbmtlZFdhc21Ub1dh
c21DYWxsczsKKyAgICBTdHJlYW1pbmdQYXJzZXIgbV9zdHJlYW1pbmdQYXJzZXI7CiAgICAgU3Rh
dGUgbV9zdGF0ZTsKIAogICAgIGNvbnN0IEFzeW5jV29yayBtX2FzeW5jV29yazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVQYXJzZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZVBhcnNlci5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDdiYzhlYWQ4OTk3ODZiMzZkZDFjMzVkMmZmMmYxZTg5YmMxYjEw
ODcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZVBhcnNlci5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSwxMTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldhc21Nb2R1bGVQYXJz
ZXIuaCIKLQotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLQotI2luY2x1ZGUgIklkZW50aWZpZXJJ
bmxpbmVzLmgiCi0jaW5jbHVkZSAiV2FzbU1lbW9yeUluZm9ybWF0aW9uLmgiCi0jaW5jbHVkZSAi
V2FzbU5hbWVTZWN0aW9uUGFyc2VyLmgiCi0jaW5jbHVkZSAiV2FzbU9wcy5oIgotI2luY2x1ZGUg
Ildhc21TZWN0aW9uUGFyc2VyLmgiCi0jaW5jbHVkZSAiV2FzbVNlY3Rpb25zLmgiCi0jaW5jbHVk
ZSA8d3RmL1NIQTEuaD4KLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKLQotYXV0
byBNb2R1bGVQYXJzZXI6OnBhcnNlKCkgLT4gUmVzdWx0Ci17Ci0gICAgY29uc3Qgc2l6ZV90IG1p
blNpemUgPSA4OwotICAgIHVpbnQzMl90IHZlcnNpb25OdW1iZXI7Ci0KLSAgICBXQVNNX1BBUlNF
Ul9GQUlMX0lGKGxlbmd0aCgpIDwgbWluU2l6ZSwgImV4cGVjdGVkIGEgbW9kdWxlIG9mIGF0IGxl
YXN0ICIsIG1pblNpemUsICIgYnl0ZXMiKTsKLSAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGxlbmd0
aCgpID4gbWF4TW9kdWxlU2l6ZSwgIm1vZHVsZSBzaXplICIsIGxlbmd0aCgpLCAiIGlzIHRvbyBs
YXJnZSwgbWF4aW11bSAiLCBtYXhNb2R1bGVTaXplKTsKLSAgICBXQVNNX1BBUlNFUl9GQUlMX0lG
KCFjb25zdW1lQ2hhcmFjdGVyKDApIHx8ICFjb25zdW1lU3RyaW5nKCJhc20iKSwgIm1vZHVsZXMg
ZG9lc24ndCBzdGFydCB3aXRoICdcXDBhc20nIik7Ci0gICAgV0FTTV9QQVJTRVJfRkFJTF9JRigh
cGFyc2VVSW50MzIodmVyc2lvbk51bWJlciksICJjYW4ndCBwYXJzZSB2ZXJzaW9uIG51bWJlciIp
OwotICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodmVyc2lvbk51bWJlciAhPSBleHBlY3RlZFZlcnNp
b25OdW1iZXIsICJ1bmV4cGVjdGVkIHZlcnNpb24gbnVtYmVyICIsIHZlcnNpb25OdW1iZXIsICIg
ZXhwZWN0ZWQgIiwgZXhwZWN0ZWRWZXJzaW9uTnVtYmVyKTsKLQotICAgIC8vIFRoaXMgaXMgbm90
IHJlYWxseSBhIGtub3duIHNlY3Rpb24uCi0gICAgU2VjdGlvbiBwcmV2aW91c0tub3duU2VjdGlv
biA9IFNlY3Rpb246OkJlZ2luOwotICAgIHdoaWxlIChtX29mZnNldCA8IGxlbmd0aCgpKSB7Ci0g
ICAgICAgIHVpbnQ4X3Qgc2VjdGlvbkJ5dGU7Ci0KLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9J
RighcGFyc2VVSW50NyhzZWN0aW9uQnl0ZSksICJjYW4ndCBnZXQgc2VjdGlvbiBieXRlIik7Ci0K
LSAgICAgICAgU2VjdGlvbiBzZWN0aW9uID0gU2VjdGlvbjo6Q3VzdG9tOwotICAgICAgICBXQVNN
X1BBUlNFUl9GQUlMX0lGKCFkZWNvZGVTZWN0aW9uKHNlY3Rpb25CeXRlLCBzZWN0aW9uKSk7Ci0g
ICAgICAgIEFTU0VSVChzZWN0aW9uICE9IFNlY3Rpb246OkJlZ2luKTsKLQotICAgICAgICB1aW50
MzJfdCBzZWN0aW9uTGVuZ3RoOwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCF2YWxpZGF0
ZU9yZGVyKHByZXZpb3VzS25vd25TZWN0aW9uLCBzZWN0aW9uKSwgImludmFsaWQgc2VjdGlvbiBv
cmRlciwgIiwgcHJldmlvdXNLbm93blNlY3Rpb24sICIgZm9sbG93ZWQgYnkgIiwgc2VjdGlvbik7
Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKHNlY3Rpb25MZW5n
dGgpLCAiY2FuJ3QgZ2V0ICIsIHNlY3Rpb24sICIgc2VjdGlvbidzIGxlbmd0aCIpOwotICAgICAg
ICBXQVNNX1BBUlNFUl9GQUlMX0lGKHNlY3Rpb25MZW5ndGggPiBsZW5ndGgoKSAtIG1fb2Zmc2V0
LCBzZWN0aW9uLCAiIHNlY3Rpb24gb2Ygc2l6ZSAiLCBzZWN0aW9uTGVuZ3RoLCAiIHdvdWxkIG92
ZXJmbG93IE1vZHVsZSdzIHNpemUiKTsKLQotICAgICAgICBTZWN0aW9uUGFyc2VyIHBhcnNlcihz
b3VyY2UoKSArIG1fb2Zmc2V0LCBzZWN0aW9uTGVuZ3RoLCBtX29mZnNldCwgbV9pbmZvLmdldCgp
KTsKLQotICAgICAgICBzd2l0Y2ggKHNlY3Rpb24pIHsKLSNkZWZpbmUgV0FTTV9TRUNUSU9OX1BB
UlNFKE5BTUUsIElELCBERVNDUklQVElPTikgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBj
YXNlIFNlY3Rpb246Ok5BTUU6IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlci5wYXJzZSAj
IyBOQU1FKCkpOyAgICAgICAgICAgICBcCi0gICAgICAgICAgICBicmVhazsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgfQotICAgICAg
ICBGT1JfRUFDSF9LTk9XTl9XQVNNX1NFQ1RJT04oV0FTTV9TRUNUSU9OX1BBUlNFKQotI3VuZGVm
IFdBU01fU0VDVElPTl9QQVJTRQotCi0gICAgICAgIGNhc2UgU2VjdGlvbjo6Q3VzdG9tOiB7Ci0g
ICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlci5wYXJzZUN1c3RvbSgp
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgY2FzZSBTZWN0aW9u
OjpCZWdpbjogewotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKHBhcnNlci5sZW5ndGgoKSAhPSBwYXJzZXIub2Zmc2V0KCksICJwYXJzaW5n
IGVuZGVkIGJlZm9yZSB0aGUgZW5kIG9mICIsIHNlY3Rpb24sICIgc2VjdGlvbiIpOwotCi0gICAg
ICAgIG1fb2Zmc2V0ICs9IHNlY3Rpb25MZW5ndGg7Ci0KLQotICAgICAgICBpZiAoaXNLbm93blNl
Y3Rpb24oc2VjdGlvbikpCi0gICAgICAgICAgICBwcmV2aW91c0tub3duU2VjdGlvbiA9IHNlY3Rp
b247Ci0gICAgfQotCi0gICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnVzZUVhZ2VyV2ViQXNzZW1i
bHlNb2R1bGVIYXNoaW5nKCkpKSB7Ci0gICAgICAgIFNIQTEgaGFzaGVyOwotICAgICAgICBoYXNo
ZXIuYWRkQnl0ZXMoc291cmNlKCksIGxlbmd0aCgpKTsKLSAgICAgICAgbV9pbmZvLT5uYW1lU2Vj
dGlvbi0+c2V0SGFzaChoYXNoZXIuY29tcHV0ZUhleERpZ2VzdCgpKTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4geyB9OwotfQotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU1vZHVsZVBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1v
ZHVsZVBhcnNlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzllNGIzMDIzMTk2
ZTJiMGM0YmM3MzMxNzU3MmUwNWQwNmExNzEwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVQ
YXJzZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
RUJBU1NFTUJMWSkKLQotI2luY2x1ZGUgIldhc21Gb3JtYXQuaCIKLSNpbmNsdWRlICJXYXNtT3Bz
LmgiCi0jaW5jbHVkZSAiV2FzbVBhcnNlci5oIgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IFdhc20gewotCi1jbGFzcyBNb2R1bGVQYXJzZXIgOiBwdWJsaWMgUGFyc2VyPHZvaWQ+IHsKLXB1
YmxpYzoKLSAgICBNb2R1bGVQYXJzZXIoY29uc3QgdWludDhfdCogc291cmNlQnVmZmVyLCBzaXpl
X3Qgc291cmNlTGVuZ3RoLCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbykKLSAgICAgICAgOiBQYXJz
ZXIoc291cmNlQnVmZmVyLCBzb3VyY2VMZW5ndGgpCi0gICAgICAgICwgbV9pbmZvKGluZm8pCi0g
ICAgewotICAgIH0KLQotICAgIFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2UoKTsKLQot
cHJpdmF0ZToKLSAgICBSZWY8TW9kdWxlSW5mb3JtYXRpb24+IG1faW5mbzsKLX07Ci0KLX0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpXYXNtCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKaW5kZXggYzUxM2ZkMmY1
MGVkNmZiMTdjMzM4NWVmMjkwNTI3ODE3MzkyMTAzNy4uMWE3Zjg4ZTA1ZGNlZTliNGQ5NzYwYTc4
MTI1NGM1MGRjZjVhMDEyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbU9NR1BsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQ
bGFuLmNwcApAQCAtNzcsMTEgKzc3LDExIEBAIHZvaWQgT01HUGxhbjo6d29yayhDb21waWxhdGlv
bkVmZm9ydCkKIAogICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1bGVJ
bmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbbV9mdW5jdGlvbklu
ZGV4XTsKICAgICBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSA9IFNpZ25hdHVyZUluZm9ybWF0
aW9uOjpnZXQoc2lnbmF0dXJlSW5kZXgpOwotICAgIEFTU0VSVCh2YWxpZGF0ZUZ1bmN0aW9uKGZ1
bmN0aW9uLmRhdGEuZGF0YSgpLCBmdW5jdGlvbi5kYXRhLnNpemUoKSwgc2lnbmF0dXJlLCBtX21v
ZHVsZUluZm9ybWF0aW9uLmdldCgpKSk7CisgICAgQVNTRVJUKHZhbGlkYXRlRnVuY3Rpb24oZnVu
Y3Rpb24sIHNpZ25hdHVyZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi5nZXQoKSkpOwogCiAgICAgVmVj
dG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+IHVubGlua2VkQ2FsbHM7CiAgICAgQ29tcGlsYXRp
b25Db250ZXh0IGNvbnRleHQ7Ci0gICAgYXV0byBwYXJzZUFuZENvbXBpbGVSZXN1bHQgPSBwYXJz
ZUFuZENvbXBpbGUoY29udGV4dCwgZnVuY3Rpb24uZGF0YS5kYXRhKCksIGZ1bmN0aW9uLmRhdGEu
c2l6ZSgpLCBzaWduYXR1cmUsIHVubGlua2VkQ2FsbHMsIG1fbW9kdWxlSW5mb3JtYXRpb24uZ2V0
KCksIG1fbW9kZSwgQ29tcGlsYXRpb25Nb2RlOjpPTUdNb2RlLCBtX2Z1bmN0aW9uSW5kZXgpOwor
ICAgIGF1dG8gcGFyc2VBbmRDb21waWxlUmVzdWx0ID0gcGFyc2VBbmRDb21waWxlKGNvbnRleHQs
IGZ1bmN0aW9uLCBzaWduYXR1cmUsIHVubGlua2VkQ2FsbHMsIG1fbW9kdWxlSW5mb3JtYXRpb24u
Z2V0KCksIG1fbW9kZSwgQ29tcGlsYXRpb25Nb2RlOjpPTUdNb2RlLCBtX2Z1bmN0aW9uSW5kZXgp
OwogCiAgICAgaWYgKFVOTElLRUxZKCFwYXJzZUFuZENvbXBpbGVSZXN1bHQpKSB7CiAgICAgICAg
IGZhaWwoaG9sZExvY2sobV9sb2NrKSwgbWFrZVN0cmluZyhwYXJzZUFuZENvbXBpbGVSZXN1bHQu
ZXJyb3IoKSwgIndoZW4gdHJ5aW5nIHRvIHRpZXIgdXAgIiwgU3RyaW5nOjpudW1iZXIobV9mdW5j
dGlvbkluZGV4KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBsYW4uY3BwCmluZGV4
IDk5NzRlY2ZlNTViYWYyODllZWM1NjUwNjZhMWNkNDlhZTIzYTgyMGEuLmU2NWY3MDczOTZlY2Ew
YTE0Nzc3MzJhZGQzNDNjMTk0N2QwNWUyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21QbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtUGxhbi5jcHAKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJXYXNtQ2FsbGluZ0NvbnZl
bnRpb24uaCIKICNpbmNsdWRlICJXYXNtRmF1bHRTaWduYWxIYW5kbGVyLmgiCiAjaW5jbHVkZSAi
V2FzbU1lbW9yeS5oIgotI2luY2x1ZGUgIldhc21Nb2R1bGVQYXJzZXIuaCIKICNpbmNsdWRlICJX
YXNtVmFsaWRhdGUuaCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgogI2luY2x1ZGUgPHd0Zi9M
b2NrZXIuaD4KQEAgLTEzMSw2ICsxMzAsOSBAQCBib29sIFBsYW46OnRyeVJlbW92ZUNvbnRleHRB
bmRDYW5jZWxJZkxhc3QoQ29udGV4dCYgY29udGV4dCkKIAogdm9pZCBQbGFuOjpmYWlsKGNvbnN0
IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIFN0cmluZyYmIGVycm9yTWVzc2FnZSkKIHsKKyAgICBB
U1NFUlQoZXJyb3JNZXNzYWdlKTsKKyAgICBpZiAoZmFpbGVkKCkpCisgICAgICAgIHJldHVybjsK
ICAgICBkYXRhTG9nTG5JZihXYXNtUGxhbkludGVybmFsOjp2ZXJib3NlLCAiZmFpbGluZyB3aXRo
IG1lc3NhZ2U6ICIsIGVycm9yTWVzc2FnZSk7CiAgICAgbV9lcnJvck1lc3NhZ2UgPSBXVEZNb3Zl
KGVycm9yTWVzc2FnZSk7CiAgICAgY29tcGxldGUobG9ja2VyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcAppbmRleCA4NDFjMGVhOTY4YTVj
ZDNlZWRmMDBiZTEwNzM5MDEzOWViZmY0MTJkLi5kZGJjNWY3ZGEwYTFmMmE4MDNhMzk2ZDFmZWFi
OWE1ZDI3YmJhMzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
U2VjdGlvblBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNl
Y3Rpb25QYXJzZXIuY3BwCkBAIC00MTEsMzAgKzQxMSwxMCBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6
OnBhcnNlRWxlbWVudCgpIC0+IFBhcnRpYWxSZXN1bHQKICAgICByZXR1cm4geyB9OwogfQogCi0v
LyBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2hhbmdlZCB0byBiZSBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCBvbmNlIHdlIHN3aXRjaCBvdXIgcGFyc2luZyBpbmZyYXN0cnVjdHVyZSB0byB0aGUg
c3RyZWFtaW5nIHBhcnNlci4KIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VDb2RlKCkgLT4gUGFy
dGlhbFJlc3VsdAogewotICAgIG1faW5mby0+Y29kZVNlY3Rpb25TaXplID0gbGVuZ3RoKCk7Ci0g
ICAgdWludDMyX3QgY291bnQ7Ci0gICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50
MzIoY291bnQpLCAiY2FuJ3QgZ2V0IENvZGUgc2VjdGlvbidzIGNvdW50Iik7Ci0gICAgV0FTTV9Q
QVJTRVJfRkFJTF9JRihjb3VudCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4
KCksICJDb2RlIHNlY3Rpb24ncyBjb3VudCBpcyB0b28gYmlnICIsIGNvdW50KTsKLSAgICBXQVNN
X1BBUlNFUl9GQUlMX0lGKGNvdW50ICE9IG1faW5mby0+ZnVuY3Rpb25zLnNpemUoKSwgIkNvZGUg
c2VjdGlvbiBjb3VudCAiLCBjb3VudCwgIiBleGNlZWRzIHRoZSBkZWNsYXJlZCBudW1iZXIgb2Yg
ZnVuY3Rpb25zICIsIG1faW5mby0+ZnVuY3Rpb25zLnNpemUoKSk7Ci0KLSAgICBmb3IgKHVpbnQz
Ml90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICB1aW50MzJfdCBmdW5jdGlvblNp
emU7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKGZ1bmN0aW9u
U2l6ZSksICJjYW4ndCBnZXQgIiwgaSwgInRoIENvZGUgZnVuY3Rpb24ncyBzaXplIik7Ci0gICAg
ICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoZnVuY3Rpb25TaXplID4gbGVuZ3RoKCksICJDb2RlIGZ1
bmN0aW9uJ3Mgc2l6ZSAiLCBmdW5jdGlvblNpemUsICIgZXhjZWVkcyB0aGUgbW9kdWxlJ3Mgc2l6
ZSAiLCBsZW5ndGgoKSk7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoZnVuY3Rpb25TaXpl
ID4gbGVuZ3RoKCkgLSBtX29mZnNldCwgIkNvZGUgZnVuY3Rpb24ncyBzaXplICIsIGZ1bmN0aW9u
U2l6ZSwgIiBleGNlZWRzIHRoZSBtb2R1bGUncyByZW1haW5pbmcgc2l6ZSIsIGxlbmd0aCgpIC0g
bV9vZmZzZXQpOwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGZ1bmN0aW9uU2l6ZSA+IG1h
eEZ1bmN0aW9uU2l6ZSwgIkNvZGUgZnVuY3Rpb24ncyBzaXplICIsIGZ1bmN0aW9uU2l6ZSwgIiBp
cyB0b28gYmlnIik7Ci0KLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoZnVuY3Rpb25TaXpl
KTsKLSAgICAgICAgc3RkOjptZW1jcHkoZGF0YS5kYXRhKCksIHNvdXJjZSgpICsgbV9vZmZzZXQs
IGZ1bmN0aW9uU2l6ZSk7Ci0gICAgICAgIG1faW5mby0+ZnVuY3Rpb25zW2ldLnN0YXJ0ID0gbV9v
ZmZzZXRJblNvdXJjZSArIG1fb2Zmc2V0OwotICAgICAgICBtX2luZm8tPmZ1bmN0aW9uc1tpXS5l
bmQgPSBtX29mZnNldEluU291cmNlICsgbV9vZmZzZXQgKyBmdW5jdGlvblNpemU7Ci0gICAgICAg
IG1faW5mby0+ZnVuY3Rpb25zW2ldLmRhdGEgPSBXVEZNb3ZlKGRhdGEpOwotICAgICAgICBtX29m
ZnNldCArPSBmdW5jdGlvblNpemU7Ci0gICAgfQotCisgICAgLy8gVGhlIENvZGUgc2VjdGlvbiBp
cyBoYW5kbGVkIHNwZWNpYWxseSBpbiBTdHJlYW1pbmdQYXJzZXIuCisgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4geyB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21TdHJlYW1pbmdQYXJzZXIuY3BwCmluZGV4IGM1NDY5MjNj
Yjc1OGYzNjIwNjc4ZTFjMjEwMWFlMzc4OTUwYTNmNDUuLjE2ZTkxYzA4YjFkN2I1ZWRlODVmMWNj
MDAwNTllOThmYmIzYzhiZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21TdHJlYW1pbmdQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21TdHJlYW1pbmdQYXJzZXIuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFCTEUo
V0VCQVNTRU1CTFkpCiAKLSNpbmNsdWRlICJXYXNtTW9kdWxlUGFyc2VyLmgiCiAjaW5jbHVkZSAi
V2FzbVNlY3Rpb25QYXJzZXIuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRl
IDx3dGYvVW5hbGlnbmVkQWNjZXNzLmg+CkBAIC02Nyw4ICs2Niw5IEBAIE5FVkVSX0lOTElORSBh
dXRvIFdBUk5fVU5VU0VEX1JFVFVSTiBTdHJlYW1pbmdQYXJzZXI6OmZhaWwoQXJncy4uLiBhcmdz
KSAtPiBTdGF0CiAgICAgcmV0dXJuIFN0YXRlOjpGYXRhbEVycm9yOwogfQogCi1TdHJlYW1pbmdQ
YXJzZXI6OlN0cmVhbWluZ1BhcnNlcihNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbykKK1N0cmVhbWlu
Z1BhcnNlcjo6U3RyZWFtaW5nUGFyc2VyKE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBTdHJlYW1p
bmdQYXJzZXJDbGllbnQmIGNsaWVudCkKICAgICA6IG1faW5mbyhpbmZvKQorICAgICwgbV9jbGll
bnQoY2xpZW50KQogewogICAgIGRhdGFMb2dMbklmKFdhc21TdHJlYW1pbmdQYXJzZXJJbnRlcm5h
bDo6dmVyYm9zZSwgInN0YXJ0aW5nIHZhbGlkYXRpb24iKTsKIH0KQEAgLTEyMCw2ICsxMjAsNyBA
QCBhdXRvIFN0cmVhbWluZ1BhcnNlcjo6cGFyc2VDb2RlU2VjdGlvblNpemUodWludDMyX3QgZnVu
Y3Rpb25Db3VudCkgLT4gU3RhdGUKIAogICAgIGlmIChtX2Z1bmN0aW9uSW5kZXggPT0gbV9mdW5j
dGlvbkNvdW50KSB7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoKG1fY29kZU9mZnNldCAr
IG1fc2VjdGlvbkxlbmd0aCkgIT0gbV9uZXh0T2Zmc2V0LCAicGFyc2luZyBlbmRlZCBiZWZvcmUg
dGhlIGVuZCBvZiAiLCBtX3NlY3Rpb24sICIgc2VjdGlvbiIpOworICAgICAgICBtX2NsaWVudC5k
aWRQYXJzZVNlY3Rpb24obV9zZWN0aW9uKTsKICAgICAgICAgcmV0dXJuIFN0YXRlOjpTZWN0aW9u
SUQ7CiAgICAgfQogICAgIHJldHVybiBTdGF0ZTo6RnVuY3Rpb25TaXplOwpAQCAtMTM5LDkgKzE0
MCwxMiBAQCBhdXRvIFN0cmVhbWluZ1BhcnNlcjo6cGFyc2VGdW5jdGlvblBheWxvYWQoVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSkgLT4gU3RhdGUKICAgICBmdW5jdGlvbi5lbmQgPSBtX29mZnNldCAr
IG1fZnVuY3Rpb25TaXplOwogICAgIGZ1bmN0aW9uLmRhdGEgPSBXVEZNb3ZlKGRhdGEpOwogICAg
IGRhdGFMb2dMbklmKFdhc21TdHJlYW1pbmdQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSwgIlByb2Nl
c3NpbmcgZnVuY3Rpb24gc3RhcnRpbmcgYXQ6ICIsIGZ1bmN0aW9uLnN0YXJ0LCAiIGFuZCBlbmRp
bmcgYXQ6ICIsIGZ1bmN0aW9uLmVuZCk7CisgICAgbV9jbGllbnQuZGlkUGFyc2VGdW5jdGlvbiht
X2Z1bmN0aW9uSW5kZXgsIGZ1bmN0aW9uKTsKICAgICArK21fZnVuY3Rpb25JbmRleDsKKwogICAg
IGlmIChtX2Z1bmN0aW9uSW5kZXggPT0gbV9mdW5jdGlvbkNvdW50KSB7CiAgICAgICAgIFdBU01f
UEFSU0VSX0ZBSUxfSUYoKG1fY29kZU9mZnNldCArIG1fc2VjdGlvbkxlbmd0aCkgIT0gKG1fb2Zm
c2V0ICsgbV9mdW5jdGlvblNpemUpLCAicGFyc2luZyBlbmRlZCBiZWZvcmUgdGhlIGVuZCBvZiAi
LCBtX3NlY3Rpb24sICIgc2VjdGlvbiIpOworICAgICAgICBtX2NsaWVudC5kaWRQYXJzZVNlY3Rp
b24obV9zZWN0aW9uKTsKICAgICAgICAgcmV0dXJuIFN0YXRlOjpTZWN0aW9uSUQ7CiAgICAgfQog
ICAgIHJldHVybiBTdGF0ZTo6RnVuY3Rpb25TaXplOwpAQCAtMTcyLDYgKzE3Niw3IEBAIGF1dG8g
U3RyZWFtaW5nUGFyc2VyOjpwYXJzZVNlY3Rpb25QYXlsb2FkKFZlY3Rvcjx1aW50OF90PiYmIGRh
dGEpIC0+IFN0YXRlCiAKICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHBhcnNlci5sZW5ndGgoKSAh
PSBwYXJzZXIub2Zmc2V0KCksICJwYXJzaW5nIGVuZGVkIGJlZm9yZSB0aGUgZW5kIG9mICIsIG1f
c2VjdGlvbiwgIiBzZWN0aW9uIik7CiAKKyAgICBtX2NsaWVudC5kaWRQYXJzZVNlY3Rpb24obV9z
ZWN0aW9uKTsKICAgICByZXR1cm4gU3RhdGU6OlNlY3Rpb25JRDsKIH0KIApAQCAtMzgyLDYgKzM4
Nyw3IEBAIGF1dG8gU3RyZWFtaW5nUGFyc2VyOjpmaW5hbGl6ZSgpIC0+IFN0YXRlCiAgICAgICAg
ICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlRWFnZXJXZWJBc3NlbWJseU1vZHVsZUhhc2hp
bmcoKSkpCiAgICAgICAgICAgICAgICAgbV9pbmZvLT5uYW1lU2VjdGlvbi0+c2V0SGFzaChtX2hh
c2hlci5jb21wdXRlSGV4RGlnZXN0KCkpOwogICAgICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpG
aW5pc2hlZDsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZEZpbmlzaFBhcnNpbmcoKTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBtX3N0YXRlID0gZmFpbE9uU3RhdGUoU3RhdGU6OlNlY3Rp
b25JRCk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVN0cmVhbWluZ1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbVN0cmVhbWluZ1BhcnNlci5oCmluZGV4IDdiNmI2Mzc5OTY0ZDgyMmFjMjFjMjdmYTIxOGE5
YWJlOGI2MGZkMDEuLjRjZmE3N2ZmYWNiMDdhNjU1MWM4NjkwYjdjOTU3NGJkMTZjNGZjZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TdHJlYW1pbmdQYXJzZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmgK
QEAgLTM3LDYgKzM3LDExIEBACiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogCiBj
bGFzcyBTdHJlYW1pbmdQYXJzZXJDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgflN0cmVh
bWluZ1BhcnNlckNsaWVudCgpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGFyc2VT
ZWN0aW9uKFNlY3Rpb24pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRQYXJzZUZ1bmN0aW9uKHVu
c2lnbmVkLCBjb25zdCBGdW5jdGlvbkRhdGEmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoUGFyc2luZygpIHsgfQogfTsKIAogY2xhc3MgU3RyZWFtaW5nUGFyc2VyIHsKQEAgLTY3LDcg
KzcyLDcgQEAgY2xhc3MgU3RyZWFtaW5nUGFyc2VyIHsKIAogICAgIGVudW0gY2xhc3MgSXNFbmRP
ZlN0cmVhbSB7IFllcywgTm8gfTsKIAotICAgIFN0cmVhbWluZ1BhcnNlcihNb2R1bGVJbmZvcm1h
dGlvbiYpOworICAgIFN0cmVhbWluZ1BhcnNlcihNb2R1bGVJbmZvcm1hdGlvbiYsIFN0cmVhbWlu
Z1BhcnNlckNsaWVudCYpOwogCiAgICAgU3RhdGUgYWRkQnl0ZXMoY29uc3QgdWludDhfdCogYnl0
ZXMsIHNpemVfdCBsZW5ndGgpIHsgcmV0dXJuIGFkZEJ5dGVzKGJ5dGVzLCBsZW5ndGgsIElzRW5k
T2ZTdHJlYW06Ok5vKTsgfQogICAgIFN0YXRlIGZpbmFsaXplKCk7CkBAIC05Nyw2ICsxMDIsNyBA
QCBjbGFzcyBTdHJlYW1pbmdQYXJzZXIgewogICAgIFN0YXRlIGZhaWxPblN0YXRlKFN0YXRlKTsK
IAogICAgIFJlZjxNb2R1bGVJbmZvcm1hdGlvbj4gbV9pbmZvOworICAgIFN0cmVhbWluZ1BhcnNl
ckNsaWVudCYgbV9jbGllbnQ7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fcmVtYWluaW5nOwogICAg
IFN0cmluZyBtX2Vycm9yTWVzc2FnZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVZhbGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21WYWxpZGF0ZS5jcHAKaW5kZXggMjVjNzJiNjRiMzgyNzIwMDM4YzNiNmQ0YjVhZTgzNGVlMDE3
NDQ3Yy4uOWE4NWY2NjZjZTU1MDY2OWUyNzE5MmRkNjMyYjk4NjEyMzcxMzAwOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRhdGUuY3BwCkBAIC00NTcsMTAgKzQ1Nywx
MCBAQCB2b2lkIFZhbGlkYXRlOjpkdW1wKGNvbnN0IFZlY3RvcjxDb250cm9sRW50cnk+JiBjb250
cm9sU3RhY2ssIGNvbnN0IEV4cHJlc3Npb25MaQogICAgIGRhdGFMb2dMbigpOwogfQogCi1FeHBl
Y3RlZDx2b2lkLCBTdHJpbmc+IHZhbGlkYXRlRnVuY3Rpb24oY29uc3QgdWludDhfdCogc291cmNl
LCBzaXplX3QgbGVuZ3RoLCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgY29uc3QgTW9kdWxl
SW5mb3JtYXRpb24mIG1vZHVsZSkKK0V4cGVjdGVkPHZvaWQsIFN0cmluZz4gdmFsaWRhdGVGdW5j
dGlvbihjb25zdCBGdW5jdGlvbkRhdGEmIGZ1bmN0aW9uLCBjb25zdCBTaWduYXR1cmUmIHNpZ25h
dHVyZSwgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIG1vZHVsZSkKIHsKICAgICBWYWxpZGF0ZSBj
b250ZXh0KG1vZHVsZSk7Ci0gICAgRnVuY3Rpb25QYXJzZXI8VmFsaWRhdGU+IHZhbGlkYXRvcihj
b250ZXh0LCBzb3VyY2UsIGxlbmd0aCwgc2lnbmF0dXJlLCBtb2R1bGUpOworICAgIEZ1bmN0aW9u
UGFyc2VyPFZhbGlkYXRlPiB2YWxpZGF0b3IoY29udGV4dCwgZnVuY3Rpb24uZGF0YS5kYXRhKCks
IGZ1bmN0aW9uLmRhdGEuc2l6ZSgpLCBzaWduYXR1cmUsIG1vZHVsZSk7CiAgICAgV0FTTV9GQUlM
X0lGX0hFTFBFUl9GQUlMUyh2YWxpZGF0b3IucGFyc2UoKSk7CiAgICAgcmV0dXJuIHsgfTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmgKaW5kZXggMjgyODNjZmVh
ODJhZjkxNDFjYmIwYTkzMGRlMDI5OTNhOTkwNWFiMS4uYTk1MmFhYzY4YTgyZjg5MGZjZTkyOWI2
MmU3ODA2NTMzOGYwMmQyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbVZhbGlkYXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlk
YXRlLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSBXYXNt
IHsKIAotRXhwZWN0ZWQ8dm9pZCwgU3RyaW5nPiB2YWxpZGF0ZUZ1bmN0aW9uKGNvbnN0IHVpbnQ4
X3QqLCBzaXplX3QsIGNvbnN0IFNpZ25hdHVyZSYsIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJik7
CitFeHBlY3RlZDx2b2lkLCBTdHJpbmc+IHZhbGlkYXRlRnVuY3Rpb24oY29uc3QgRnVuY3Rpb25E
YXRhJiwgY29uc3QgU2lnbmF0dXJlJiwgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mKTsKIAogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cg
Yi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAzNmU4ZmQ0YTQzMjA4NzZmODMzYzAyMGE4ZDQxYTky
MTgxZjA4NGVhLi4xMGVjZTczZmJkYjNhNWI3YWRiMmY0MGRiMzgyNWRkMGNjNTdjNzc1IDEwMDY0
NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDE5LTA4LTE4ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+
CisKKyAgICAgICAgW1dlYkFzc2VtYmx5XSBVc2UgU3RyZWFtaW5nUGFyc2VyIGluIGV4aXN0aW5n
IFdhc206OkJCUVBsYW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4OTA0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoZSBvZmZzZXQgcGVyZm9ybWluZyB0aGUgdmFsaWRhdGlvbiBiZWNvbWVzIGEgYml0
IGRpZmZlcmVudC4KKyAgICAgICAgVGhlIG9mZnNldCAwIGlzIG5pY2Ugc2luY2UgaXQgaXMgdGhl
IHN0YXJ0aW5nIG9mZnNldCBvZiB0aGUgTW9kdWxlIGhlYWRlciBzaWduYXR1cmUgY29tcGFyZWQg
dG8gdGhlIG9mZnNldCA4LgorCisgICAgICAgICogd2FzbS9qcy1hcGkvdmVyc2lvbi5qczoKKwog
MjAxOS0wOC0xNyAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAg
ICAgICAgW0VTTmV4dF0gSW1wbGVtZW50IG9wdGlvbmFsIGNoYWluaW5nCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3dhc20vanMtYXBpL3ZlcnNpb24uanMgYi9KU1Rlc3RzL3dhc20vanMtYXBpL3ZlcnNp
b24uanMKaW5kZXggMDQ4NmZjZmRkZWZkMDgyMWQzOTI0NmNiNjQwODczNGJmZWJmMjJlMi4uNGQx
MGU4YzE1ZDBlMWQ3Nzk0NmQ4N2NlZThkMjBmNzIyMGQ5ZDI0ZiAxMDA2NDQKLS0tIGEvSlNUZXN0
cy93YXNtL2pzLWFwaS92ZXJzaW9uLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvdmVyc2lv
bi5qcwpAQCAtNSw1ICs1LDUgQEAKICAgICBpZiAodmVyc2lvbiA9PT0gMSkKICAgICAgICAgY29u
dGludWU7CiAgICAgY29uc3QgZW1wdHlNb2R1bGVBcnJheSA9IFVpbnQ4QXJyYXkub2YoMHgwLCAw
eDYxLCAweDczLCAweDZkLCB2ZXJzaW9uLCAweDAwLCAweDAwLCAweDAwKTsKLSAgICBhc3NlcnQu
dGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoZW1wdHlNb2R1bGVBcnJheSksIFdl
YkFzc2VtYmx5LkNvbXBpbGVFcnJvciwgYFdlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNl
IGF0IGJ5dGUgODogdW5leHBlY3RlZCB2ZXJzaW9uIG51bWJlciAke3ZlcnNpb259IGV4cGVjdGVk
IDFgKTsKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoZW1w
dHlNb2R1bGVBcnJheSksIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciwgYFdlYkFzc2VtYmx5Lk1v
ZHVsZSBkb2Vzbid0IHBhcnNlIGF0IGJ5dGUgMDogdW5leHBlY3RlZCB2ZXJzaW9uIG51bWJlciAk
e3ZlcnNpb259IGV4cGVjdGVkIDFgKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377857</attachid>
            <date>2019-09-02 14:01:05 -0700</date>
            <delta_ts>2019-09-03 17:07:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189043-20190902140102.patch</filename>
            <type>text/plain</type>
            <size>46640</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5Mzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
N2Y1MzI1MjhjYzBlNmRjYjQ1YTU0MDM1N2UxNTNlYTRjOTE4YjZkLi5jZTA3NWU0NDk4ODlhNzE3
OWFkZGJmNWY0M2ExNTNjMTNjYWYzMjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MSBAQAorMjAxOS0wOS0wMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtXZWJBc3NlbWJseV0gVXNlIFN0cmVhbWluZ1BhcnNlciBpbiBleGlzdGlu
ZyBXYXNtOjpCQlFQbGFuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODkwNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGludGVncmF0ZXMgV2FzbTo6U3RyZWFtaW5nUGFyc2VyIGludG8g
dGhlIGV4aXN0aW5nIFdhc206OkJCUVBsYW4uCisgICAgICAgIEFuZCByZW1vdmUgV2FzbTo6TW9k
dWxlUGFyc2VyLiBUaGlzIHBhdGNoIHBhdmVzIHRoZSB3YXkgdG8gaW1wbGVtZW50aW5nIFdhc20g
c3RyZWFtaW5nIGZlYXR1cmVzIGJ5CisgICAgICAgIHVzaW5nIFdhc206OlN0cmVhbWluZ1BhcnNl
ci4KKworICAgICAgICBDdXJyZW50bHksIHdlIGFyZSBub3QgdXNpbmcgc3RyZWFtaW5nIGZlYXR1
cmUgb2YgU3RyZWFtaW5nUGFyc2VyLiBJbiBhIHN1YnNlcXVlbnQgcGF0Y2gsIHdlIHdpbGwKKyAg
ICAgICAgY3JlYXRlIGEgbWVjaGFuaXNtIHRvIHBpcGUgYSBjaHVuayBvZiBkYXRhIHRvIHN0cmVh
bWluZyBwYXJzZXIgdG8gZW5hYmxlIFdlYkFzc2VtYmx5LmNvbXBpbGVTdHJlYW1pbmcKKyAgICAg
ICAgYW5kIGluc3RhbnRpYXRlU3RyZWFtaW5nLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbVN0cmVhbWluZ1Bh
cnNlcjo6V2FzbVN0cmVhbWluZ1BhcnNlcik6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpwYXJzZUFuZENvbXBpbGVBaXIpOgorICAg
ICAgICAqIHdhc20vV2FzbUFpcklSR2VuZXJhdG9yLmg6CisgICAgICAgICogd2FzbS9XYXNtQjNJ
UkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OnBhcnNlQW5kQ29tcGlsZSk6IFVz
ZSBGdW5jdGlvbkRhdGEsIGl0IGlzIGdvb2Qgc2luY2UgaXQgaXMgbW9yZSBzdHJvbmdseSB0eXBl
ZC4KKyAgICAgICAgKiB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmg6CisgICAgICAgICogd2FzbS9X
YXNtQkJRUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkJCUVBsYW46OkJCUVBsYW4pOgor
ICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpkaWRQYXJzZUZ1bmN0aW9uKTogQWRkIGEgY2Fs
bGJhY2ssIHdoaWNoIGludm9rZXMgdmFsaWRhdGlvbi4KKyAgICAgICAgKEpTQzo6V2FzbTo6QkJR
UGxhbjo6cGFyc2VBbmRWYWxpZGF0ZU1vZHVsZSk6IFVzZSBTdHJlYW1pbmdQYXJzZXIgaW5zdGVh
ZCBvZiBvbGQgTW9kdWxlUGFyc2VyLgorICAgICAgICAoSlNDOjpXYXNtOjpCQlFQbGFuOjpjb21w
aWxlRnVuY3Rpb25zKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6Y29tcGxldGUpOgor
ICAgICAgICAqIHdhc20vV2FzbUJCUVBsYW4uaDoKKyAgICAgICAgKiB3YXNtL1dhc21Nb2R1bGVQ
YXJzZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHdhc20vV2FzbU1vZHVsZVBhcnNlci5oOiBS
ZW1vdmVkLgorICAgICAgICAqIHdhc20vV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5jcHA6CisgICAg
ICAgIChKU0M6Oldhc206Ok9NR0Zvck9TUkVudHJ5UGxhbjo6d29yayk6CisgICAgICAgICogd2Fz
bS9XYXNtT01HUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ok9NR1BsYW46OndvcmspOgor
ICAgICAgICAqIHdhc20vV2FzbVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpQbGFuOjpm
YWlsKTogTWFrZSBmYWlsIGZ1bmN0aW9uIGNhbGxhYmxlIG11bHRpcGxlIHRpbWVzLiBUaGUgZmly
c3QgZXJyb3Igd2lsbCBiZSB1c2VkLgorICAgICAgICAqIHdhc20vV2FzbVNlY3Rpb25QYXJzZXIu
Y3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZUNvZGUpOiBTaW5j
ZSB0aGUgQ29kZSBzZWN0aW9uIGlzIHNwZWNpYWxseSBoYW5kbGVkIGluIFN0cmVhbWluZ1BhcnNl
ciwgdGhpcyBjb2RlIGlzIG5ldmVyIHVzZWQuCisgICAgICAgICogd2FzbS9XYXNtU3RyZWFtaW5n
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6U3RyZWFtaW5nUGFyc2VyOjpTdHJlYW1p
bmdQYXJzZXIpOgorICAgICAgICAoSlNDOjpXYXNtOjpTdHJlYW1pbmdQYXJzZXI6OnBhcnNlQ29k
ZVNlY3Rpb25TaXplKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U3RyZWFtaW5nUGFyc2VyOjpwYXJz
ZUZ1bmN0aW9uUGF5bG9hZCk6CisgICAgICAgIChKU0M6Oldhc206OlN0cmVhbWluZ1BhcnNlcjo6
cGFyc2VTZWN0aW9uUGF5bG9hZCk6CisgICAgICAgIChKU0M6Oldhc206OlN0cmVhbWluZ1BhcnNl
cjo6ZmluYWxpemUpOiBDYWxsIGNsaWVudCdzIGNhbGxiYWNrcyBhdCBhcHByb3ByaWF0ZSB0aW1p
bmdzLgorICAgICAgICAqIHdhc20vV2FzbVN0cmVhbWluZ1BhcnNlci5oOgorICAgICAgICAoSlND
OjpXYXNtOjpTdHJlYW1pbmdQYXJzZXJDbGllbnQ6OmRpZFBhcnNlU2VjdGlvbik6CisgICAgICAg
IChKU0M6Oldhc206OlN0cmVhbWluZ1BhcnNlckNsaWVudDo6ZGlkUGFyc2VGdW5jdGlvbik6Cisg
ICAgICAgIChKU0M6Oldhc206OlN0cmVhbWluZ1BhcnNlckNsaWVudDo6ZGlkRmluaXNoUGFyc2lu
Zyk6IEFkZCBTdHJlYW1pbmdQYXJzZXJDbGllbnQsCisgICAgICAgIHdoaWNoIGhhcyAzIGNhbGxi
YWNrcyByaWdodCBub3cuIFN0cmVhbWluZ1BhcnNlciBnZXRzIHRoaXMgY2xpZW50IGFuZCBjYWxs
IHRoZXNlIGNhbGxiYWNrcworICAgICAgICBhdCBhcHByb3ByaWF0ZSB0aW1pbmdzLgorICAgICAg
ICAqIHdhc20vV2FzbVZhbGlkYXRlLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6dmFsaWRhdGVG
dW5jdGlvbik6CisgICAgICAgICogd2FzbS9XYXNtVmFsaWRhdGUuaDogVXNlIEZ1bmN0aW9uRGF0
YSwgaXQgaXMgZ29vZCBzaW5jZSBpdCBpcyBtb3JlIHN0cm9uZ2x5IHR5cGVkLgorCiAyMDE5LTA5
LTAxICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10g
TWVyZ2Ugb3BfY2hlY2tfdHJhcHMgaW50byBvcF9lbnRlciBhbmQgb3BfbG9vcF9oaW50CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGUwOTNkY2M4MzZiN2U0NTUwYzc0NmQ1ODBmZDQ1
ODdlMzliNDlmZTYuLjU3NzViYzUwMjc1NjFiZTIwYzIyNmRmOTE2MTMxMjA2ZDgzYTQ1MzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTA5LDcgKzExMDksNiBAQAogCQk1M0Y0
MEU4QjFENTkwMUJCMDA5OUExQjYgLyogV2FzbUZ1bmN0aW9uUGFyc2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Y0MEU4QTFENTkwMUJCMDA5OUEx
QjYgLyogV2FzbUZ1bmN0aW9uUGFyc2VyLmggKi87IH07CiAJCTUzRjQwRThEMUQ1OTAxRjIwMDk5
QTFCNiAvKiBXYXNtUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1M0Y0MEU4QzFENTkwMUYyMDA5OUExQjYgLyogV2FzbVBhcnNlci5oICovOyB9
OwogCQk1M0Y0MEU5MzFENUE0QUIzMDA5OUExQjYgLyogV2FzbUIzSVJHZW5lcmF0b3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRjQwRTkyMUQ1QTRB
QjMwMDk5QTFCNiAvKiBXYXNtQjNJUkdlbmVyYXRvci5oICovOyB9OwotCQk1M0Y0MEU5NTFENUE3
QUVGMDA5OUExQjYgLyogV2FzbU1vZHVsZVBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGNDBFOTQxRDVBN0FFRjAwOTlBMUI2IC8qIFdhc21N
b2R1bGVQYXJzZXIuaCAqLzsgfTsKIAkJNTNGNkJGNkQxQzNGMDYwQTAwRjQxRTVEIC8qIEludGVy
bmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGNkJGNkMxQzNGMDYwQTAwRjQxRTVEIC8qIEludGVybmFs
RnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTUzRjhEMjAwMUU4Mzg3RDQwMEQyMTExNiAvKiBXYXNtQkJR
UGxhbklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUzRjhEMUZGMUU4Mzg3RDQwMEQyMTExNiAvKiBXYXNtQkJRUGxhbklubGluZXMuaCAqLzsg
fTsKIAkJNTNGQTJBRTExQ0YzN0YzRjAwMjI3MTFEIC8qIExMSW50UHJvdG90eXBlTG9hZEFkYXB0
aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTNGQTJBRTAxQ0YzN0YzRjAwMjI3MTFEIC8qIExMSW50UHJvdG90eXBl
TG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zNzc3LDggKzM3NzYsNiBAQAogCQk1M0Y0MEU4
QzFENTkwMUYyMDA5OUExQjYgLyogV2FzbVBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXYXNtUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUz
RjQwRThFMUQ1OTAyODIwMDk5QTFCNiAvKiBXYXNtQjNJUkdlbmVyYXRvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtQjNJUkdlbmVyYXRvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRjQwRTkyMUQ1QTRBQjMwMDk5QTFCNiAvKiBXYXNt
QjNJUkdlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtQjNJ
UkdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1M0Y0MEU5NDFENUE3
QUVGMDA5OUExQjYgLyogV2FzbU1vZHVsZVBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXYXNtTW9kdWxlUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTUzRjQwRTk2MUQ1QTdCRUMwMDk5QTFCNiAvKiBXYXNtTW9kdWxlUGFyc2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21Nb2R1bGVQYXJzZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0Y2QkY2QzFDM0YwNjBBMDBGNDFFNUQgLyog
SW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1M0Y4RDFGRjFFODM4N0Q0MDBEMjExMTYgLyogV2FzbUJC
UVBsYW5JbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21CQlFQ
bGFuSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0ZBMkFFMDFDRjM3
RjNGMDAyMjcxMUQgLyogTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBv
aW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExMSW50UHJvdG90eXBlTG9h
ZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNjc1Miw4ICs2NzQ5LDYgQEAKIAkJCQk3OTAwODEzNzFFOTVBOEVDMDA1MkQ3Q0QgLyog
V2FzbU1vZHVsZS5oICovLAogCQkJCTUzRTc3N0UxMUU5MkUyNjUwMDdDQkVDNCAvKiBXYXNtTW9k
dWxlSW5mb3JtYXRpb24uY3BwICovLAogCQkJCTUzRTc3N0UyMUU5MkUyNjUwMDdDQkVDNCAvKiBX
YXNtTW9kdWxlSW5mb3JtYXRpb24uaCAqLywKLQkJCQk1M0Y0MEU5NjFENUE3QkVDMDA5OUExQjYg
LyogV2FzbU1vZHVsZVBhcnNlci5jcHAgKi8sCi0JCQkJNTNGNDBFOTQxRDVBN0FFRjAwOTlBMUI2
IC8qIFdhc21Nb2R1bGVQYXJzZXIuaCAqLywKIAkJCQlBRDVCNDE2RTFFQkFGQjY1MDA4RUZBNDMg
LyogV2FzbU5hbWUuaCAqLywKIAkJCQlBRDdCNEIyRDFGQTNFMjg2MDBDOURGNzkgLyogV2FzbU5h
bWVTZWN0aW9uLmggKi8sCiAJCQkJQUREOEZBNDQxRUIzMDc3MTAwREY1NDJGIC8qIFdhc21OYW1l
U2VjdGlvblBhcnNlci5jcHAgKi8sCkBAIC0xMDE1MSw3ICsxMDE0Niw2IEBACiAJCQkJQUQ1QzM2
RUYxRjdBMjYzQTAwMEJDQUFGIC8qIFdhc21NZW1vcnlNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3OTAwODEzOTFFOTVBOEVDMDA1MkQ3Q0QgLyogV2FzbU1vZHVsZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTNFNzc3RTQxRTkyRTI2NTAwN0NCRUM0IC8qIFdhc21Nb2R1bGVJbmZvcm1hdGlvbi5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJNTNGNDBFOTUxRDVBN0FFRjAwOTlBMUI2IC8qIFdhc21Nb2R1
bGVQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUFENUI0MTZGMUVCQUZCNzcwMDhFRkE0MyAv
KiBXYXNtTmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQ3QjRCMkUxRkEzRTI5ODAwQzlERjc5
IC8qIFdhc21OYW1lU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUREOEZBNDYxRUIzMDc5
NzAwREY1NDJGIC8qIFdhc21OYW1lU2VjdGlvblBhcnNlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggMjYyMTkzYjIzODUxMmY4ZTk1ZGVkMTRhYjI4OTBj
NTFkYmM1ZTljMC4uY2Q3ZDk5MjZhNGU4NWI3ODA2ZGQ5Y2YwZmYzMDJhYzUwMTgxZGVkMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtMTAxMyw3ICsxMDEzLDYgQEAgd2FzbS9XYXNt
TWVtb3J5SW5mb3JtYXRpb24uY3BwCiB3YXNtL1dhc21NZW1vcnlNb2RlLmNwcAogd2FzbS9XYXNt
TW9kdWxlLmNwcAogd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uY3BwCi13YXNtL1dhc21Nb2R1
bGVQYXJzZXIuY3BwCiB3YXNtL1dhc21OYW1lU2VjdGlvblBhcnNlci5jcHAKIHdhc20vV2FzbU9N
R0Zvck9TUkVudHJ5UGxhbi5jcHAKIHdhc20vV2FzbU9NR1BsYW4uY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKaW5kZXggOTJmZmI4NWI1ODhjYTQxYTI2MGJm
MTFiMzQ0MGIzYmRlY2U5YWZmYS4uNTU0NTY0ZmExMTViOTVkYTc4ZDAwZDIwM2IxYmVkZDM0ODI2
ZDYwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcApAQCAt
MTExMCwxMCArMTExMCwyNSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbldhc21TdHJlYW1pbmdQYXJzZXJGaW5hbGl6ZShFeGVjU3RhdAogCiBjbGFzcyBXYXNt
U3RyZWFtaW5nUGFyc2VyIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIHB1YmxpYzoK
KyAgICBjbGFzcyBDbGllbnQgZmluYWwgOiBwdWJsaWMgV2FzbTo6U3RyZWFtaW5nUGFyc2VyQ2xp
ZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0IENsaWVudChXYXNtU3RyZWFtaW5n
UGFyc2VyKiBwYXJzZXIpCisgICAgICAgICAgICA6IG1fcGFyc2VyKHBhcnNlcikKKyAgICAgICAg
eworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkaWRQYXJzZVNlY3Rpb24oV2FzbTo6U2VjdGlv
bikgb3ZlcnJpZGUgeyB9CisgICAgICAgIHZvaWQgZGlkUGFyc2VGdW5jdGlvbih1bnNpZ25lZCwg
Y29uc3QgV2FzbTo6RnVuY3Rpb25EYXRhJikgb3ZlcnJpZGUgeyB9CisgICAgICAgIHZvaWQgZGlk
RmluaXNoUGFyc2luZygpIG92ZXJyaWRlIHsgfQorCisgICAgICAgIFdhc21TdHJlYW1pbmdQYXJz
ZXIqIG1fcGFyc2VyOworICAgIH07CisKICAgICBXYXNtU3RyZWFtaW5nUGFyc2VyKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQogICAg
ICAgICAsIG1faW5mbyhXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbjo6Y3JlYXRlKCkpCi0gICAgICAg
ICwgbV9zdHJlYW1pbmdQYXJzZXIobV9pbmZvLmdldCgpKQorICAgICAgICAsIG1fY2xpZW50KHRo
aXMpCisgICAgICAgICwgbV9zdHJlYW1pbmdQYXJzZXIobV9pbmZvLmdldCgpLCBtX2NsaWVudCkK
ICAgICB7CiAgICAgfQogCkBAIC0xMTQ2LDYgKzExNjEsNyBAQCBjbGFzcyBXYXNtU3RyZWFtaW5n
UGFyc2VyIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKICAgICBERUNMQVJFX0lORk87
CiAKICAgICBSZWY8V2FzbTo6TW9kdWxlSW5mb3JtYXRpb24+IG1faW5mbzsKKyAgICBDbGllbnQg
bV9jbGllbnQ7CiAgICAgV2FzbTo6U3RyZWFtaW5nUGFyc2VyIG1fc3RyZWFtaW5nUGFyc2VyOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2Vu
ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRv
ci5jcHAKaW5kZXggZmExNWVjODRjODc2MTA2Y2E0M2E0MmRmMWIyMDA2MDNhMDM5ZTZmYy4uMjEw
NTg2ZjYwNzUyZTQwNzMyZjgwZWRmYmE1YmYwNzRhNzRiMWU3NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCkBAIC0yMjI5LDcgKzIy
MjksNyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjpvcmlnaW4oKSAtPiBCMzo6T3JpZ2luCiAgICAg
cmV0dXJuIEIzOjpPcmlnaW4oKTsKIH0KIAotRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPEludGVy
bmFsRnVuY3Rpb24+LCBTdHJpbmc+IHBhcnNlQW5kQ29tcGlsZUFpcihDb21waWxhdGlvbkNvbnRl
eHQmIGNvbXBpbGF0aW9uQ29udGV4dCwgY29uc3QgdWludDhfdCogZnVuY3Rpb25TdGFydCwgc2l6
ZV90IGZ1bmN0aW9uTGVuZ3RoLCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPFVu
bGlua2VkV2FzbVRvV2FzbUNhbGw+JiB1bmxpbmtlZFdhc21Ub1dhc21DYWxscywgY29uc3QgTW9k
dWxlSW5mb3JtYXRpb24mIGluZm8sIE1lbW9yeU1vZGUgbW9kZSwgdWludDMyX3QgZnVuY3Rpb25J
bmRleCwgVGllclVwQ291bnQqIHRpZXJVcCwgVGhyb3dXYXNtRXhjZXB0aW9uIHRocm93V2FzbUV4
Y2VwdGlvbikKK0V4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiwgU3Ry
aW5nPiBwYXJzZUFuZENvbXBpbGVBaXIoQ29tcGlsYXRpb25Db250ZXh0JiBjb21waWxhdGlvbkNv
bnRleHQsIGNvbnN0IEZ1bmN0aW9uRGF0YSYgZnVuY3Rpb24sIGNvbnN0IFNpZ25hdHVyZSYgc2ln
bmF0dXJlLCBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mIHVubGlua2VkV2FzbVRvV2Fz
bUNhbGxzLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgTWVtb3J5TW9kZSBtb2RlLCB1
aW50MzJfdCBmdW5jdGlvbkluZGV4LCBUaWVyVXBDb3VudCogdGllclVwLCBUaHJvd1dhc21FeGNl
cHRpb24gdGhyb3dXYXNtRXhjZXB0aW9uKQogewogICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1
ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOwogCkBAIC0yMjUzLDcgKzIyNTMsNyBAQCBFeHBlY3RlZDxz
dGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4sIFN0cmluZz4gcGFyc2VBbmRDb21waWxl
QWlyKENvbXBpbGF0aQogICAgIHByb2NlZHVyZS5zZXRPcHRMZXZlbChPcHRpb25zOjp3ZWJBc3Nl
bWJseUJCUUFpck9wdGltaXphdGlvbkxldmVsKCkpOwogCiAgICAgQWlySVJHZW5lcmF0b3IgaXJH
ZW5lcmF0b3IoaW5mbywgcHJvY2VkdXJlLCByZXN1bHQuZ2V0KCksIHVubGlua2VkV2FzbVRvV2Fz
bUNhbGxzLCBtb2RlLCBmdW5jdGlvbkluZGV4LCB0aWVyVXAsIHRocm93V2FzbUV4Y2VwdGlvbiwg
c2lnbmF0dXJlKTsKLSAgICBGdW5jdGlvblBhcnNlcjxBaXJJUkdlbmVyYXRvcj4gcGFyc2VyKGly
R2VuZXJhdG9yLCBmdW5jdGlvblN0YXJ0LCBmdW5jdGlvbkxlbmd0aCwgc2lnbmF0dXJlLCBpbmZv
KTsKKyAgICBGdW5jdGlvblBhcnNlcjxBaXJJUkdlbmVyYXRvcj4gcGFyc2VyKGlyR2VuZXJhdG9y
LCBmdW5jdGlvbi5kYXRhLmRhdGEoKSwgZnVuY3Rpb24uZGF0YS5zaXplKCksIHNpZ25hdHVyZSwg
aW5mbyk7CiAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZXIucGFyc2UoKSk7CiAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJh
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuaApp
bmRleCAzNmE3M2RkNThhMzFiNDE1YTNiYTlhYWZlNThmMWNhMGQxZWFiNWNhLi4zMzFiNGIwYWQz
MTNlNjIzY2E3ZmY0YmQ4ZGU4YTE1ODZmYzdkNTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuaApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogCi1FeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8
SW50ZXJuYWxGdW5jdGlvbj4sIFN0cmluZz4gcGFyc2VBbmRDb21waWxlQWlyKENvbXBpbGF0aW9u
Q29udGV4dCYsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIGNvbnN0IFNpZ25hdHVyZSYsIFZlY3Rv
cjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYsIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiwgTWVt
b3J5TW9kZSwgdWludDMyX3QgZnVuY3Rpb25JbmRleCwgVGllclVwQ291bnQqID0gbnVsbHB0ciwg
VGhyb3dXYXNtRXhjZXB0aW9uID0gbnVsbHB0cik7CitFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8
SW50ZXJuYWxGdW5jdGlvbj4sIFN0cmluZz4gcGFyc2VBbmRDb21waWxlQWlyKENvbXBpbGF0aW9u
Q29udGV4dCYsIGNvbnN0IEZ1bmN0aW9uRGF0YSYsIGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxV
bmxpbmtlZFdhc21Ub1dhc21DYWxsPiYsIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiwgTWVtb3J5
TW9kZSwgdWludDMyX3QgZnVuY3Rpb25JbmRleCwgVGllclVwQ291bnQqID0gbnVsbHB0ciwgVGhy
b3dXYXNtRXhjZXB0aW9uID0gbnVsbHB0cik7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNt
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJh
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNw
cAppbmRleCA4MGU4NDg4N2RiMGUxMjE1ZWI4YmRkNGZlYTI5NWI1OGNjZjlhZWEzLi41YjMyOGYw
M2JlMzkwNjk2YWU3M2EzODA5YmZkZTMzN2RmMjE0YWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCkBAIC0xNzY2LDcgKzE3NjYsNyBA
QCBhdXRvIEIzSVJHZW5lcmF0b3I6Om9yaWdpbigpIC0+IE9yaWdpbgogICAgIHJldHVybiBiaXR3
aXNlX2Nhc3Q8T3JpZ2luPihvcmlnaW4pOwogfQogCi1FeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8
SW50ZXJuYWxGdW5jdGlvbj4sIFN0cmluZz4gcGFyc2VBbmRDb21waWxlKENvbXBpbGF0aW9uQ29u
dGV4dCYgY29tcGlsYXRpb25Db250ZXh0LCBjb25zdCB1aW50OF90KiBmdW5jdGlvblN0YXJ0LCBz
aXplX3QgZnVuY3Rpb25MZW5ndGgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8
VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mIHVubGlua2VkV2FzbVRvV2FzbUNhbGxzLCB1bnNpZ25l
ZCYgb3NyRW50cnlTY3JhdGNoQnVmZmVyU2l6ZSwgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGlu
Zm8sIE1lbW9yeU1vZGUgbW9kZSwgQ29tcGlsYXRpb25Nb2RlIGNvbXBpbGF0aW9uTW9kZSwgdWlu
dDMyX3QgZnVuY3Rpb25JbmRleCwgdWludDMyX3QgbG9vcEluZGV4Rm9yT1NSRW50cnksIFRpZXJV
cENvdW50KiB0aWVyVXAsIFRocm93V2FzbUV4Y2VwdGlvbiB0aHJvd1dhc21FeGNlcHRpb24pCitF
eHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4sIFN0cmluZz4gcGFyc2VB
bmRDb21waWxlKENvbXBpbGF0aW9uQ29udGV4dCYgY29tcGlsYXRpb25Db250ZXh0LCBjb25zdCBG
dW5jdGlvbkRhdGEmIGZ1bmN0aW9uLCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9y
PFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiB1bmxpbmtlZFdhc21Ub1dhc21DYWxscywgdW5zaWdu
ZWQmIG9zckVudHJ5U2NyYXRjaEJ1ZmZlclNpemUsIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBp
bmZvLCBNZW1vcnlNb2RlIG1vZGUsIENvbXBpbGF0aW9uTW9kZSBjb21waWxhdGlvbk1vZGUsIHVp
bnQzMl90IGZ1bmN0aW9uSW5kZXgsIHVpbnQzMl90IGxvb3BJbmRleEZvck9TUkVudHJ5LCBUaWVy
VXBDb3VudCogdGllclVwLCBUaHJvd1dhc21FeGNlcHRpb24gdGhyb3dXYXNtRXhjZXB0aW9uKQog
ewogICAgIGF1dG8gcmVzdWx0ID0gbWFrZVVuaXF1ZTxJbnRlcm5hbEZ1bmN0aW9uPigpOwogCkBA
IC0xNzkxLDcgKzE3OTEsNyBAQCBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5j
dGlvbj4sIFN0cmluZz4gcGFyc2VBbmRDb21waWxlKENvbXBpbGF0aW9uQwogICAgICAgICA6IE9w
dGlvbnM6OndlYkFzc2VtYmx5T01HT3B0aW1pemF0aW9uTGV2ZWwoKSk7CiAKICAgICBCM0lSR2Vu
ZXJhdG9yIGlyR2VuZXJhdG9yKGluZm8sIHByb2NlZHVyZSwgcmVzdWx0LmdldCgpLCB1bmxpbmtl
ZFdhc21Ub1dhc21DYWxscywgb3NyRW50cnlTY3JhdGNoQnVmZmVyU2l6ZSwgbW9kZSwgY29tcGls
YXRpb25Nb2RlLCBmdW5jdGlvbkluZGV4LCBsb29wSW5kZXhGb3JPU1JFbnRyeSwgdGllclVwLCB0
aHJvd1dhc21FeGNlcHRpb24pOwotICAgIEZ1bmN0aW9uUGFyc2VyPEIzSVJHZW5lcmF0b3I+IHBh
cnNlcihpckdlbmVyYXRvciwgZnVuY3Rpb25TdGFydCwgZnVuY3Rpb25MZW5ndGgsIHNpZ25hdHVy
ZSwgaW5mbyk7CisgICAgRnVuY3Rpb25QYXJzZXI8QjNJUkdlbmVyYXRvcj4gcGFyc2VyKGlyR2Vu
ZXJhdG9yLCBmdW5jdGlvbi5kYXRhLmRhdGEoKSwgZnVuY3Rpb24uZGF0YS5zaXplKCksIHNpZ25h
dHVyZSwgaW5mbyk7CiAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZXIucGFyc2Uo
KSk7CiAKICAgICBpckdlbmVyYXRvci5pbnNlcnRDb25zdGFudHMoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5oCmluZGV4IDVlY2M1MWE2ODc1YmI0
MTQ5ODllYTEyYjFiNDExOGNhNDA2NDRlZWEuLmVhNTUwMjQwMThkMzBkMzhmZjFlYTdhN2FiZjFj
MTY1YmNmNTY3ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21C
M0lSR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJH
ZW5lcmF0b3IuaApAQCAtNTEsNyArNTEsNyBAQCBzdHJ1Y3QgQ29tcGlsYXRpb25Db250ZXh0IHsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QjM6Ok9wYXF1ZUJ5cHJvZHVjdHM+IHdhc21FbnRyeXBvaW50
Qnlwcm9kdWN0czsKIH07CiAKLUV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0
aW9uPiwgU3RyaW5nPiBwYXJzZUFuZENvbXBpbGUoQ29tcGlsYXRpb25Db250ZXh0JiwgY29uc3Qg
dWludDhfdCosIHNpemVfdCwgY29uc3QgU2lnbmF0dXJlJiwgVmVjdG9yPFVubGlua2VkV2FzbVRv
V2FzbUNhbGw+JiwgdW5zaWduZWQmIG9zckVudHJ5U2NyYXRjaEJ1ZmZlclNpemUsIGNvbnN0IE1v
ZHVsZUluZm9ybWF0aW9uJiwgTWVtb3J5TW9kZSwgQ29tcGlsYXRpb25Nb2RlLCB1aW50MzJfdCBm
dW5jdGlvbkluZGV4LCB1aW50MzJfdCBsb29wSW5kZXhGb3JPU1JFbnRyeSwgVGllclVwQ291bnQq
ID0gbnVsbHB0ciwgVGhyb3dXYXNtRXhjZXB0aW9uID0gbnVsbHB0cik7CitFeHBlY3RlZDxzdGQ6
OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4sIFN0cmluZz4gcGFyc2VBbmRDb21waWxlKENv
bXBpbGF0aW9uQ29udGV4dCYsIGNvbnN0IEZ1bmN0aW9uRGF0YSYsIGNvbnN0IFNpZ25hdHVyZSYs
IFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYsIHVuc2lnbmVkJiBvc3JFbnRyeVNjcmF0
Y2hCdWZmZXJTaXplLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYsIE1lbW9yeU1vZGUsIENvbXBp
bGF0aW9uTW9kZSwgdWludDMyX3QgZnVuY3Rpb25JbmRleCwgdWludDMyX3QgbG9vcEluZGV4Rm9y
T1NSRW50cnksIFRpZXJVcENvdW50KiA9IG51bGxwdHIsIFRocm93V2FzbUV4Y2VwdGlvbiA9IG51
bGxwdHIpOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKaW5kZXggZmFiYzAwMzIzZWIyYTczNTkwNzMwOWQ0
ZGEwZDUyYjA1ODk1ODlmNy4uOTRlMGZlMzIxNTY3MmQ2YmFiMGQxYmI5OWQzZWY4Y2U2NTAwOTA0
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcApAQCAtMzYs
NyArMzYsNiBAQAogI2luY2x1ZGUgIldhc21DYWxsaW5nQ29udmVudGlvbi5oIgogI2luY2x1ZGUg
Ildhc21GYXVsdFNpZ25hbEhhbmRsZXIuaCIKICNpbmNsdWRlICJXYXNtTWVtb3J5LmgiCi0jaW5j
bHVkZSAiV2FzbU1vZHVsZVBhcnNlci5oIgogI2luY2x1ZGUgIldhc21TaWduYXR1cmVJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiV2FzbVRpZXJVcENvdW50LmgiCiAjaW5jbHVkZSAiV2FzbVZhbGlkYXRl
LmgiCkBAIC01NSw2ICs1NCw3IEBAIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsK
IAogQkJRUGxhbjo6QkJRUGxhbihDb250ZXh0KiBjb250ZXh0LCBSZWY8TW9kdWxlSW5mb3JtYXRp
b24+IGluZm8sIEFzeW5jV29yayB3b3JrLCBDb21wbGV0aW9uVGFzayYmIHRhc2ssIENyZWF0ZUVt
YmVkZGVyV3JhcHBlciYmIGNyZWF0ZUVtYmVkZGVyV3JhcHBlciwgVGhyb3dXYXNtRXhjZXB0aW9u
IHRocm93V2FzbUV4Y2VwdGlvbikKICAgICA6IEJhc2UoY29udGV4dCwgV1RGTW92ZShpbmZvKSwg
V1RGTW92ZSh0YXNrKSwgV1RGTW92ZShjcmVhdGVFbWJlZGRlcldyYXBwZXIpLCB0aHJvd1dhc21F
eGNlcHRpb24pCisgICAgLCBtX3N0cmVhbWluZ1BhcnNlcihtX21vZHVsZUluZm9ybWF0aW9uLmdl
dCgpLCAqdGhpcykKICAgICAsIG1fc3RhdGUoU3RhdGU6OlZhbGlkYXRlZCkKICAgICAsIG1fYXN5
bmNXb3JrKHdvcmspCiB7CkBAIC02Myw2ICs2Myw3IEBAIEJCUVBsYW46OkJCUVBsYW4oQ29udGV4
dCogY29udGV4dCwgUmVmPE1vZHVsZUluZm9ybWF0aW9uPiBpbmZvLCBBc3luY1dvcmsgd29yaywK
IEJCUVBsYW46OkJCUVBsYW4oQ29udGV4dCogY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+JiYgc291
cmNlLCBBc3luY1dvcmsgd29yaywgQ29tcGxldGlvblRhc2smJiB0YXNrLCBDcmVhdGVFbWJlZGRl
cldyYXBwZXImJiBjcmVhdGVFbWJlZGRlcldyYXBwZXIsIFRocm93V2FzbUV4Y2VwdGlvbiB0aHJv
d1dhc21FeGNlcHRpb24pCiAgICAgOiBCYXNlKGNvbnRleHQsIE1vZHVsZUluZm9ybWF0aW9uOjpj
cmVhdGUoKSwgV1RGTW92ZSh0YXNrKSwgV1RGTW92ZShjcmVhdGVFbWJlZGRlcldyYXBwZXIpLCB0
aHJvd1dhc21FeGNlcHRpb24pCiAgICAgLCBtX3NvdXJjZShXVEZNb3ZlKHNvdXJjZSkpCisgICAg
LCBtX3N0cmVhbWluZ1BhcnNlcihtX21vZHVsZUluZm9ybWF0aW9uLmdldCgpLCAqdGhpcykKICAg
ICAsIG1fc3RhdGUoU3RhdGU6OkluaXRpYWwpCiAgICAgLCBtX2FzeW5jV29yayh3b3JrKQogewpA
QCAtNzAsNiArNzEsNyBAQCBCQlFQbGFuOjpCQlFQbGFuKENvbnRleHQqIGNvbnRleHQsIFZlY3Rv
cjx1aW50OF90PiYmIHNvdXJjZSwgQXN5bmNXb3JrIHdvcmssIENvbQogCiBCQlFQbGFuOjpCQlFQ
bGFuKENvbnRleHQqIGNvbnRleHQsIEFzeW5jV29yayB3b3JrLCBDb21wbGV0aW9uVGFzayYmIHRh
c2spCiAgICAgOiBCYXNlKGNvbnRleHQsIFdURk1vdmUodGFzaykpCisgICAgLCBtX3N0cmVhbWlu
Z1BhcnNlcihtX21vZHVsZUluZm9ybWF0aW9uLmdldCgpLCAqdGhpcykKICAgICAsIG1fc3RhdGUo
U3RhdGU6OkluaXRpYWwpCiAgICAgLCBtX2FzeW5jV29yayh3b3JrKQogewpAQCAtOTQsNiArOTYs
MjUgQEAgdm9pZCBCQlFQbGFuOjptb3ZlVG9TdGF0ZShTdGF0ZSBzdGF0ZSkKICAgICBtX3N0YXRl
ID0gc3RhdGU7CiB9CiAKK3ZvaWQgQkJRUGxhbjo6ZGlkUGFyc2VGdW5jdGlvbih1bnNpZ25lZCBm
dW5jdGlvbkluZGV4LCBjb25zdCBGdW5jdGlvbkRhdGEmIGZ1bmN0aW9uKQoreworICAgIGRhdGFM
b2dMbklmKFdhc21CQlFQbGFuSW50ZXJuYWw6OnZlcmJvc2UsICJQcm9jZXNzaW5nIGZ1bmN0aW9u
IHN0YXJ0aW5nIGF0OiAiLCBmdW5jdGlvbi5zdGFydCwgIiBhbmQgZW5kaW5nIGF0OiAiLCBmdW5j
dGlvbi5lbmQpOworICAgIHNpemVfdCBmdW5jdGlvbkxlbmd0aCA9IGZ1bmN0aW9uLmVuZCAtIGZ1
bmN0aW9uLnN0YXJ0OworICAgIEFTU0VSVChmdW5jdGlvbkxlbmd0aCA9PSBmdW5jdGlvbi5kYXRh
LnNpemUoKSk7CisgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtX21vZHVsZUlu
Zm9ybWF0aW9uLT5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tmdW5jdGlvbkluZGV4
XTsKKyAgICBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSA9IFNpZ25hdHVyZUluZm9ybWF0aW9u
OjpnZXQoc2lnbmF0dXJlSW5kZXgpOworCisgICAgYXV0byB2YWxpZGF0aW9uUmVzdWx0ID0gdmFs
aWRhdGVGdW5jdGlvbihmdW5jdGlvbiwgc2lnbmF0dXJlLCBtX21vZHVsZUluZm9ybWF0aW9uLmdl
dCgpKTsKKyAgICBpZiAoIXZhbGlkYXRpb25SZXN1bHQpIHsKKyAgICAgICAgaWYgKFdhc21CQlFQ
bGFuSW50ZXJuYWw6OnZlcmJvc2UpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBmdW5jdGlvbkxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgIGRhdGFMb2coUmF3UG9p
bnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihmdW5jdGlvbi5kYXRhW2ldKSksICIsICIpOwor
ICAgICAgICAgICAgZGF0YUxvZ0xuKCk7CisgICAgICAgIH0KKyAgICAgICAgZmFpbChob2xkTG9j
ayhtX2xvY2spLCBtYWtlU3RyaW5nKHZhbGlkYXRpb25SZXN1bHQuZXJyb3IoKSwgIiwgaW4gZnVu
Y3Rpb24gYXQgaW5kZXggIiwgU3RyaW5nOjpudW1iZXIoZnVuY3Rpb25JbmRleCkpKTsgLy8gRklY
TUUgbWFrZSB0aGlzIGFuIEV4cGVjdGVkLgorICAgIH0KK30KKwogYm9vbCBCQlFQbGFuOjpwYXJz
ZUFuZFZhbGlkYXRlTW9kdWxlKGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgc2l6ZV90IHNvdXJjZUxl
bmd0aCkKIHsKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6SW5pdGlhbCkKQEAgLTEwNCwzNyAr
MTI1LDE2IEBAIGJvb2wgQkJRUGxhbjo6cGFyc2VBbmRWYWxpZGF0ZU1vZHVsZShjb25zdCB1aW50
OF90KiBzb3VyY2UsIHNpemVfdCBzb3VyY2VMZW5ndGgpCiAgICAgaWYgKFdhc21CQlFQbGFuSW50
ZXJuYWw6OnZlcmJvc2UgfHwgT3B0aW9uczo6cmVwb3J0Q29tcGlsZVRpbWVzKCkpCiAgICAgICAg
IHN0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogCi0gICAgewotICAgICAgICBNb2R1
bGVQYXJzZXIgbW9kdWxlUGFyc2VyKHNvdXJjZSwgc291cmNlTGVuZ3RoLCBtX21vZHVsZUluZm9y
bWF0aW9uKTsKLSAgICAgICAgYXV0byBwYXJzZVJlc3VsdCA9IG1vZHVsZVBhcnNlci5wYXJzZSgp
OwotICAgICAgICBpZiAoIXBhcnNlUmVzdWx0KSB7Ci0gICAgICAgICAgICBCYXNlOjpmYWlsKGhv
bGRMb2NrKG1fbG9jayksIFdURk1vdmUocGFyc2VSZXN1bHQuZXJyb3IoKSkpOwotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9CisgICAgbV9zdHJlYW1pbmdQYXJzZXIuYWRkQnl0
ZXMoc291cmNlLCBzb3VyY2VMZW5ndGgpOworICAgIGlmIChtX3N0cmVhbWluZ1BhcnNlci5maW5h
bGl6ZSgpICE9IFN0cmVhbWluZ1BhcnNlcjo6U3RhdGU6OkZpbmlzaGVkKSB7CisgICAgICAgIGZh
aWwoaG9sZExvY2sobV9sb2NrKSwgU3RyaW5nKG1fc3RyZWFtaW5nUGFyc2VyLmVycm9yTWVzc2Fn
ZSgpKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0KLSAgICBjb25zdCBhdXRvJiBm
dW5jdGlvbnMgPSBtX21vZHVsZUluZm9ybWF0aW9uLT5mdW5jdGlvbnM7Ci0gICAgZm9yICh1bnNp
Z25lZCBmdW5jdGlvbkluZGV4ID0gMDsgZnVuY3Rpb25JbmRleCA8IGZ1bmN0aW9ucy5zaXplKCk7
ICsrZnVuY3Rpb25JbmRleCkgewotICAgICAgICBjb25zdCBhdXRvJiBmdW5jdGlvbiA9IGZ1bmN0
aW9uc1tmdW5jdGlvbkluZGV4XTsKLSAgICAgICAgZGF0YUxvZ0xuSWYoV2FzbUJCUVBsYW5JbnRl
cm5hbDo6dmVyYm9zZSwgIlByb2Nlc3NpbmcgZnVuY3Rpb24gc3RhcnRpbmcgYXQ6ICIsIGZ1bmN0
aW9uLnN0YXJ0LCAiIGFuZCBlbmRpbmcgYXQ6ICIsIGZ1bmN0aW9uLmVuZCk7Ci0gICAgICAgIHNp
emVfdCBmdW5jdGlvbkxlbmd0aCA9IGZ1bmN0aW9uLmVuZCAtIGZ1bmN0aW9uLnN0YXJ0OwotICAg
ICAgICBBU1NFUlQoZnVuY3Rpb25MZW5ndGggPD0gc291cmNlTGVuZ3RoKTsKLSAgICAgICAgQVNT
RVJUKGZ1bmN0aW9uTGVuZ3RoID09IGZ1bmN0aW9uLmRhdGEuc2l6ZSgpKTsKLSAgICAgICAgU2ln
bmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtX21vZHVsZUluZm9ybWF0aW9uLT5pbnRlcm5h
bEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tmdW5jdGlvbkluZGV4XTsKLSAgICAgICAgY29uc3Qg
U2lnbmF0dXJlJiBzaWduYXR1cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVy
ZUluZGV4KTsKLQotICAgICAgICBhdXRvIHZhbGlkYXRpb25SZXN1bHQgPSB2YWxpZGF0ZUZ1bmN0
aW9uKGZ1bmN0aW9uLmRhdGEuZGF0YSgpLCBmdW5jdGlvbi5kYXRhLnNpemUoKSwgc2lnbmF0dXJl
LCBtX21vZHVsZUluZm9ybWF0aW9uLmdldCgpKTsKLSAgICAgICAgaWYgKCF2YWxpZGF0aW9uUmVz
dWx0KSB7Ci0gICAgICAgICAgICBpZiAoV2FzbUJCUVBsYW5JbnRlcm5hbDo6dmVyYm9zZSkgewot
ICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmdW5jdGlvbkxlbmd0aDsg
KytpKQotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKFJhd1BvaW50ZXIocmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oZnVuY3Rpb24uZGF0YVtpXSkpLCAiLCAiKTsKLSAgICAgICAgICAgICAgICBk
YXRhTG9nTG4oKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEJhc2U6OmZhaWwoaG9sZExv
Y2sobV9sb2NrKSwgbWFrZVN0cmluZyh2YWxpZGF0aW9uUmVzdWx0LmVycm9yKCksICIsIGluIGZ1
bmN0aW9uIGF0IGluZGV4ICIsIFN0cmluZzo6bnVtYmVyKGZ1bmN0aW9uSW5kZXgpKSk7IC8vIEZJ
WE1FIG1ha2UgdGhpcyBhbiBFeHBlY3RlZC4KKyAgICB7CisgICAgICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9sb2NrKTsKKyAgICAgICAgaWYgKGZhaWxlZCgpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICB9CiAgICAgfQotCiAgICAgaWYgKFdhc21CQlFQbGFuSW50ZXJu
YWw6OnZlcmJvc2UgfHwgT3B0aW9uczo6cmVwb3J0Q29tcGlsZVRpbWVzKCkpCiAgICAgICAgIGRh
dGFMb2dMbigiVG9vayAiLCAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFydFRpbWUpLm1pY3Jv
c2Vjb25kcygpLCAiIHVzIHRvIHZhbGlkYXRlIG1vZHVsZSIpOwogCkBAIC0yNjQsNyArMjY0LDcg
QEAgdm9pZCBCQlFQbGFuOjpjb21waWxlRnVuY3Rpb25zKENvbXBpbGF0aW9uRWZmb3J0IGVmZm9y
dCkKICAgICAgICAgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUgPSBTaWduYXR1cmVJbmZvcm1h
dGlvbjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKICAgICAgICAgdW5zaWduZWQgZnVuY3Rpb25JbmRl
eFNwYWNlID0gbV93YXNtVG9XYXNtRXhpdFN0dWJzLnNpemUoKSArIGZ1bmN0aW9uSW5kZXg7CiAg
ICAgICAgIEFTU0VSVF9VTlVTRUQoZnVuY3Rpb25JbmRleFNwYWNlLCBtX21vZHVsZUluZm9ybWF0
aW9uLT5zaWduYXR1cmVJbmRleEZyb21GdW5jdGlvbkluZGV4U3BhY2UoZnVuY3Rpb25JbmRleFNw
YWNlKSA9PSBzaWduYXR1cmVJbmRleCk7Ci0gICAgICAgIEFTU0VSVCh2YWxpZGF0ZUZ1bmN0aW9u
KGZ1bmN0aW9uLmRhdGEuZGF0YSgpLCBmdW5jdGlvbi5kYXRhLnNpemUoKSwgc2lnbmF0dXJlLCBt
X21vZHVsZUluZm9ybWF0aW9uLmdldCgpKSk7CisgICAgICAgIEFTU0VSVCh2YWxpZGF0ZUZ1bmN0
aW9uKGZ1bmN0aW9uLCBzaWduYXR1cmUsIG1fbW9kdWxlSW5mb3JtYXRpb24uZ2V0KCkpKTsKIAog
ICAgICAgICBtX3VubGlua2VkV2FzbVRvV2FzbUNhbGxzW2Z1bmN0aW9uSW5kZXhdID0gVmVjdG9y
PFVubGlua2VkV2FzbVRvV2FzbUNhbGw+KCk7CiAgICAgICAgIGlmIChPcHRpb25zOjp1c2VCQlFU
aWVyVXBDaGVja3MoKSkKQEAgLTI4MywxNiArMjgzLDEzIEBAIHZvaWQgQkJRUGxhbjo6Y29tcGls
ZUZ1bmN0aW9ucyhDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgICAgICAgICBmb3JjZVVz
aW5nQjMgPSB0cnVlOwogCiAgICAgICAgIGlmICghZm9yY2VVc2luZ0IzICYmIE9wdGlvbnM6Ondh
c21CQlFVc2VzQWlyKCkpCi0gICAgICAgICAgICBwYXJzZUFuZENvbXBpbGVSZXN1bHQgPSBwYXJz
ZUFuZENvbXBpbGVBaXIobV9jb21waWxhdGlvbkNvbnRleHRzW2Z1bmN0aW9uSW5kZXhdLCBmdW5j
dGlvbi5kYXRhLmRhdGEoKSwgZnVuY3Rpb24uZGF0YS5zaXplKCksIHNpZ25hdHVyZSwgbV91bmxp
bmtlZFdhc21Ub1dhc21DYWxsc1tmdW5jdGlvbkluZGV4XSwgbV9tb2R1bGVJbmZvcm1hdGlvbi5n
ZXQoKSwgbV9tb2RlLCBmdW5jdGlvbkluZGV4LCB0aWVyVXAsIG1fdGhyb3dXYXNtRXhjZXB0aW9u
KTsKKyAgICAgICAgICAgIHBhcnNlQW5kQ29tcGlsZVJlc3VsdCA9IHBhcnNlQW5kQ29tcGlsZUFp
cihtX2NvbXBpbGF0aW9uQ29udGV4dHNbZnVuY3Rpb25JbmRleF0sIGZ1bmN0aW9uLCBzaWduYXR1
cmUsIG1fdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHNbZnVuY3Rpb25JbmRleF0sIG1fbW9kdWxlSW5m
b3JtYXRpb24uZ2V0KCksIG1fbW9kZSwgZnVuY3Rpb25JbmRleCwgdGllclVwLCBtX3Rocm93V2Fz
bUV4Y2VwdGlvbik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBhcnNlQW5kQ29tcGlsZVJl
c3VsdCA9IHBhcnNlQW5kQ29tcGlsZShtX2NvbXBpbGF0aW9uQ29udGV4dHNbZnVuY3Rpb25JbmRl
eF0sIGZ1bmN0aW9uLmRhdGEuZGF0YSgpLCBmdW5jdGlvbi5kYXRhLnNpemUoKSwgc2lnbmF0dXJl
LCBtX3VubGlua2VkV2FzbVRvV2FzbUNhbGxzW2Z1bmN0aW9uSW5kZXhdLCBvc3JFbnRyeVNjcmF0
Y2hCdWZmZXJTaXplLCBtX21vZHVsZUluZm9ybWF0aW9uLmdldCgpLCBtX21vZGUsIENvbXBpbGF0
aW9uTW9kZTo6QkJRTW9kZSwgZnVuY3Rpb25JbmRleCwgVUlOVDMyX01BWCwgdGllclVwLCBtX3Ro
cm93V2FzbUV4Y2VwdGlvbik7CisgICAgICAgICAgICBwYXJzZUFuZENvbXBpbGVSZXN1bHQgPSBw
YXJzZUFuZENvbXBpbGUobV9jb21waWxhdGlvbkNvbnRleHRzW2Z1bmN0aW9uSW5kZXhdLCBmdW5j
dGlvbiwgc2lnbmF0dXJlLCBtX3VubGlua2VkV2FzbVRvV2FzbUNhbGxzW2Z1bmN0aW9uSW5kZXhd
LCBvc3JFbnRyeVNjcmF0Y2hCdWZmZXJTaXplLCBtX21vZHVsZUluZm9ybWF0aW9uLmdldCgpLCBt
X21vZGUsIENvbXBpbGF0aW9uTW9kZTo6QkJRTW9kZSwgZnVuY3Rpb25JbmRleCwgVUlOVDMyX01B
WCwgdGllclVwLCBtX3Rocm93V2FzbUV4Y2VwdGlvbik7CiAKICAgICAgICAgaWYgKFVOTElLRUxZ
KCFwYXJzZUFuZENvbXBpbGVSZXN1bHQpKSB7CiAgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKG1fbG9jayk7Ci0gICAgICAgICAgICBpZiAoIW1fZXJyb3JNZXNzYWdlKSB7Ci0gICAg
ICAgICAgICAgICAgLy8gTXVsdGlwbGUgY29tcGlsZXMgY291bGQgZmFpbCBzaW11bHRhbmVvdXNs
eS4gV2UgYXJiaXRyYXJpbHkgY2hvb3NlIHRoZSBmaXJzdC4KLSAgICAgICAgICAgICAgICBmYWls
KGxvY2tlciwgbWFrZVN0cmluZyhwYXJzZUFuZENvbXBpbGVSZXN1bHQuZXJyb3IoKSwgIiwgaW4g
ZnVuY3Rpb24gYXQgaW5kZXggIiwgU3RyaW5nOjpudW1iZXIoZnVuY3Rpb25JbmRleCkpKTsgLy8g
RklYTUUgbWFrZSB0aGlzIGFuIEV4cGVjdGVkLgotICAgICAgICAgICAgfQorICAgICAgICAgICAg
ZmFpbChsb2NrZXIsIG1ha2VTdHJpbmcocGFyc2VBbmRDb21waWxlUmVzdWx0LmVycm9yKCksICIs
IGluIGZ1bmN0aW9uIGF0IGluZGV4ICIsIFN0cmluZzo6bnVtYmVyKGZ1bmN0aW9uSW5kZXgpKSk7
IC8vIEZJWE1FIG1ha2UgdGhpcyBhbiBFeHBlY3RlZC4KICAgICAgICAgICAgIG1fY3VycmVudElu
ZGV4ID0gZnVuY3Rpb25zLnNpemUoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpA
QCAtMzI0LDcgKzMyMSw3IEBAIHZvaWQgQkJRUGxhbjo6Y29tcGxldGUoY29uc3QgQWJzdHJhY3RM
b2NrZXImIGxvY2tlcikKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBMaW5rQnVmZmVy
IGxpbmtCdWZmZXIoKmNvbnRleHQud2FzbUVudHJ5cG9pbnRKSVQsIG51bGxwdHIsIEpJVENvbXBp
bGF0aW9uQ2FuRmFpbCk7CiAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGxpbmtCdWZmZXIu
ZGlkRmFpbFRvQWxsb2NhdGUoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgQmFzZTo6ZmFpbChs
b2NrZXIsIG1ha2VTdHJpbmcoIk91dCBvZiBleGVjdXRhYmxlIG1lbW9yeSBpbiBmdW5jdGlvbiBh
dCBpbmRleCAiLCBTdHJpbmc6Om51bWJlcihmdW5jdGlvbkluZGV4KSkpOworICAgICAgICAgICAg
ICAgICAgICBmYWlsKGxvY2tlciwgbWFrZVN0cmluZygiT3V0IG9mIGV4ZWN1dGFibGUgbWVtb3J5
IGluIGZ1bmN0aW9uIGF0IGluZGV4ICIsIFN0cmluZzo6bnVtYmVyKGZ1bmN0aW9uSW5kZXgpKSk7
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTMz
Niw3ICszMzMsNyBAQCB2b2lkIEJCUVBsYW46OmNvbXBsZXRlKGNvbnN0IEFic3RyYWN0TG9ja2Vy
JiBsb2NrZXIpCiAgICAgICAgICAgICBpZiAoYXV0byBlbWJlZGRlclRvV2FzbUludGVybmFsRnVu
Y3Rpb24gPSBtX2VtYmVkZGVyVG9XYXNtSW50ZXJuYWxGdW5jdGlvbnMuZ2V0KGZ1bmN0aW9uSW5k
ZXgpKSB7CiAgICAgICAgICAgICAgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKCpjb250ZXh0LmVt
YmVkZGVyRW50cnlwb2ludEpJVCwgbnVsbHB0ciwgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKICAg
ICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkobGlua0J1ZmZlci5kaWRGYWlsVG9BbGxvY2F0ZSgp
KSkgewotICAgICAgICAgICAgICAgICAgICBCYXNlOjpmYWlsKGxvY2tlciwgbWFrZVN0cmluZygi
T3V0IG9mIGV4ZWN1dGFibGUgbWVtb3J5IGluIGZ1bmN0aW9uIGVudHJ5cG9pbnQgYXQgaW5kZXgg
IiwgU3RyaW5nOjpudW1iZXIoZnVuY3Rpb25JbmRleCkpKTsKKyAgICAgICAgICAgICAgICAgICAg
ZmFpbChsb2NrZXIsIG1ha2VTdHJpbmcoIk91dCBvZiBleGVjdXRhYmxlIG1lbW9yeSBpbiBmdW5j
dGlvbiBlbnRyeXBvaW50IGF0IGluZGV4ICIsIFN0cmluZzo6bnVtYmVyKGZ1bmN0aW9uSW5kZXgp
KSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5oCmluZGV4IGEyNjA0ZTU1NTM0MWZl
MGIyZjA2YzkzMzNiMWJiNzhlNzgzNWQ1N2YuLjY2ZDg1NzI3ZjIyZjEzODI5YTM1ZTM3NjllNjAx
YmZjNjNkNjkxZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21C
QlFQbGFuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uaApA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIldhc21CM0lSR2VuZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiV2FzbU1vZHVsZUluZm9ybWF0aW9uLmgiCiAjaW5jbHVkZSAiV2FzbVBsYW4uaCIKKyNpbmNs
dWRlICJXYXNtU3RyZWFtaW5nUGFyc2VyLmgiCiAjaW5jbHVkZSAiV2FzbVRpZXJVcENvdW50Lmgi
CiAjaW5jbHVkZSA8d3RmL0JhZy5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgpAQCAtNDQs
NyArNDUsNyBAQCBjbGFzcyBDYWxsTGlua0luZm87CiAKIG5hbWVzcGFjZSBXYXNtIHsKIAotY2xh
c3MgQkJRUGxhbiBmaW5hbCA6IHB1YmxpYyBQbGFuIHsKK2NsYXNzIEJCUVBsYW4gZmluYWwgOiBw
dWJsaWMgUGxhbiwgcHVibGljIFN0cmVhbWluZ1BhcnNlckNsaWVudCB7CiBwdWJsaWM6CiAgICAg
dXNpbmcgQmFzZSA9IFBsYW47CiAgICAgZW51bSBBc3luY1dvcmsgOiB1aW50OF90IHsgRnVsbENv
bXBpbGUsIFZhbGlkYXRpb24gfTsKQEAgLTEyMSw2ICsxMjIsOCBAQCBjbGFzcyBCQlFQbGFuIGZp
bmFsIDogcHVibGljIFBsYW4gewogICAgIGJvb2wgaGFzQmVlblByZXBhcmVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZSA+PSBTdGF0ZTo6UHJlcGFyZWQ7IH0KICAgICBib29sIG11bHRpVGhyZWFk
ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBoYXNCZWVuUHJlcGFyZWQoKTsgfQogCisgICAg
dm9pZCBkaWRQYXJzZUZ1bmN0aW9uKHVuc2lnbmVkLCBjb25zdCBGdW5jdGlvbkRhdGEmKSBvdmVy
cmlkZTsKKwogcHJpdmF0ZToKICAgICBjbGFzcyBUaHJlYWRDb3VudEhvbGRlcjsKICAgICBmcmll
bmQgY2xhc3MgVGhyZWFkQ291bnRIb2xkZXI7CkBAIC0xNDMsNiArMTQ2LDcgQEAgY2xhc3MgQkJR
UGxhbiBmaW5hbCA6IHB1YmxpYyBQbGFuIHsKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFRp
ZXJVcENvdW50Pj4gbV90aWVyVXBDb3VudHM7CiAKICAgICBWZWN0b3I8VmVjdG9yPFVubGlua2Vk
V2FzbVRvV2FzbUNhbGw+PiBtX3VubGlua2VkV2FzbVRvV2FzbUNhbGxzOworICAgIFN0cmVhbWlu
Z1BhcnNlciBtX3N0cmVhbWluZ1BhcnNlcjsKICAgICBTdGF0ZSBtX3N0YXRlOwogCiAgICAgY29u
c3QgQXN5bmNXb3JrIG1fYXN5bmNXb3JrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbU1vZHVsZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtTW9kdWxlUGFyc2VyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Jj
OGVhZDg5OTc4NmIzNmRkMWMzNWQyZmYyZjFlODliYzFiMTA4Ny4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtTW9kdWxlUGFyc2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiV2FzbU1vZHVsZVBhcnNlci5oIgotCi0jaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQotCi0jaW5jbHVkZSAiSWRlbnRpZmllcklubGluZXMuaCIKLSNpbmNsdWRlICJX
YXNtTWVtb3J5SW5mb3JtYXRpb24uaCIKLSNpbmNsdWRlICJXYXNtTmFtZVNlY3Rpb25QYXJzZXIu
aCIKLSNpbmNsdWRlICJXYXNtT3BzLmgiCi0jaW5jbHVkZSAiV2FzbVNlY3Rpb25QYXJzZXIuaCIK
LSNpbmNsdWRlICJXYXNtU2VjdGlvbnMuaCIKLSNpbmNsdWRlIDx3dGYvU0hBMS5oPgotCi1uYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewotCi1hdXRvIE1vZHVsZVBhcnNlcjo6cGFyc2Uo
KSAtPiBSZXN1bHQKLXsKLSAgICBjb25zdCBzaXplX3QgbWluU2l6ZSA9IDg7Ci0gICAgdWludDMy
X3QgdmVyc2lvbk51bWJlcjsKLQotICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYobGVuZ3RoKCkgPCBt
aW5TaXplLCAiZXhwZWN0ZWQgYSBtb2R1bGUgb2YgYXQgbGVhc3QgIiwgbWluU2l6ZSwgIiBieXRl
cyIpOwotICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYobGVuZ3RoKCkgPiBtYXhNb2R1bGVTaXplLCAi
bW9kdWxlIHNpemUgIiwgbGVuZ3RoKCksICIgaXMgdG9vIGxhcmdlLCBtYXhpbXVtICIsIG1heE1v
ZHVsZVNpemUpOwotICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIWNvbnN1bWVDaGFyYWN0ZXIoMCkg
fHwgIWNvbnN1bWVTdHJpbmcoImFzbSIpLCAibW9kdWxlcyBkb2Vzbid0IHN0YXJ0IHdpdGggJ1xc
MGFzbSciKTsKLSAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVVJbnQzMih2ZXJzaW9uTnVt
YmVyKSwgImNhbid0IHBhcnNlIHZlcnNpb24gbnVtYmVyIik7Ci0gICAgV0FTTV9QQVJTRVJfRkFJ
TF9JRih2ZXJzaW9uTnVtYmVyICE9IGV4cGVjdGVkVmVyc2lvbk51bWJlciwgInVuZXhwZWN0ZWQg
dmVyc2lvbiBudW1iZXIgIiwgdmVyc2lvbk51bWJlciwgIiBleHBlY3RlZCAiLCBleHBlY3RlZFZl
cnNpb25OdW1iZXIpOwotCi0gICAgLy8gVGhpcyBpcyBub3QgcmVhbGx5IGEga25vd24gc2VjdGlv
bi4KLSAgICBTZWN0aW9uIHByZXZpb3VzS25vd25TZWN0aW9uID0gU2VjdGlvbjo6QmVnaW47Ci0g
ICAgd2hpbGUgKG1fb2Zmc2V0IDwgbGVuZ3RoKCkpIHsKLSAgICAgICAgdWludDhfdCBzZWN0aW9u
Qnl0ZTsKLQotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVVJbnQ3KHNlY3Rpb25C
eXRlKSwgImNhbid0IGdldCBzZWN0aW9uIGJ5dGUiKTsKLQotICAgICAgICBTZWN0aW9uIHNlY3Rp
b24gPSBTZWN0aW9uOjpDdXN0b207Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIWRlY29k
ZVNlY3Rpb24oc2VjdGlvbkJ5dGUsIHNlY3Rpb24pKTsKLSAgICAgICAgQVNTRVJUKHNlY3Rpb24g
IT0gU2VjdGlvbjo6QmVnaW4pOwotCi0gICAgICAgIHVpbnQzMl90IHNlY3Rpb25MZW5ndGg7Ci0g
ICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXZhbGlkYXRlT3JkZXIocHJldmlvdXNLbm93blNl
Y3Rpb24sIHNlY3Rpb24pLCAiaW52YWxpZCBzZWN0aW9uIG9yZGVyLCAiLCBwcmV2aW91c0tub3du
U2VjdGlvbiwgIiBmb2xsb3dlZCBieSAiLCBzZWN0aW9uKTsKLSAgICAgICAgV0FTTV9QQVJTRVJf
RkFJTF9JRighcGFyc2VWYXJVSW50MzIoc2VjdGlvbkxlbmd0aCksICJjYW4ndCBnZXQgIiwgc2Vj
dGlvbiwgIiBzZWN0aW9uJ3MgbGVuZ3RoIik7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYo
c2VjdGlvbkxlbmd0aCA+IGxlbmd0aCgpIC0gbV9vZmZzZXQsIHNlY3Rpb24sICIgc2VjdGlvbiBv
ZiBzaXplICIsIHNlY3Rpb25MZW5ndGgsICIgd291bGQgb3ZlcmZsb3cgTW9kdWxlJ3Mgc2l6ZSIp
OwotCi0gICAgICAgIFNlY3Rpb25QYXJzZXIgcGFyc2VyKHNvdXJjZSgpICsgbV9vZmZzZXQsIHNl
Y3Rpb25MZW5ndGgsIG1fb2Zmc2V0LCBtX2luZm8uZ2V0KCkpOwotCi0gICAgICAgIHN3aXRjaCAo
c2VjdGlvbikgewotI2RlZmluZSBXQVNNX1NFQ1RJT05fUEFSU0UoTkFNRSwgSUQsIERFU0NSSVBU
SU9OKSAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGNhc2UgU2VjdGlvbjo6TkFNRTogeyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIFdBU01f
RkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VyLnBhcnNlICMjIE5BTUUoKSk7ICAgICAgICAgICAg
IFwKLSAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgICAgICB9Ci0gICAgICAgIEZPUl9FQUNIX0tOT1dOX1dBU01f
U0VDVElPTihXQVNNX1NFQ1RJT05fUEFSU0UpCi0jdW5kZWYgV0FTTV9TRUNUSU9OX1BBUlNFCi0K
LSAgICAgICAgY2FzZSBTZWN0aW9uOjpDdXN0b206IHsKLSAgICAgICAgICAgIFdBU01fRkFJTF9J
Rl9IRUxQRVJfRkFJTFMocGFyc2VyLnBhcnNlQ3VzdG9tKCkpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLQotICAgICAgICBjYXNlIFNlY3Rpb246OkJlZ2luOiB7Ci0gICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYocGFyc2VyLmxl
bmd0aCgpICE9IHBhcnNlci5vZmZzZXQoKSwgInBhcnNpbmcgZW5kZWQgYmVmb3JlIHRoZSBlbmQg
b2YgIiwgc2VjdGlvbiwgIiBzZWN0aW9uIik7Ci0KLSAgICAgICAgbV9vZmZzZXQgKz0gc2VjdGlv
bkxlbmd0aDsKLQotCi0gICAgICAgIGlmIChpc0tub3duU2VjdGlvbihzZWN0aW9uKSkKLSAgICAg
ICAgICAgIHByZXZpb3VzS25vd25TZWN0aW9uID0gc2VjdGlvbjsKLSAgICB9Ci0KLSAgICBpZiAo
VU5MSUtFTFkoT3B0aW9uczo6dXNlRWFnZXJXZWJBc3NlbWJseU1vZHVsZUhhc2hpbmcoKSkpIHsK
LSAgICAgICAgU0hBMSBoYXNoZXI7Ci0gICAgICAgIGhhc2hlci5hZGRCeXRlcyhzb3VyY2UoKSwg
bGVuZ3RoKCkpOwotICAgICAgICBtX2luZm8tPm5hbWVTZWN0aW9uLT5zZXRIYXNoKGhhc2hlci5j
b21wdXRlSGV4RGlnZXN0KCkpOwotICAgIH0KLQotICAgIHJldHVybiB7IH07Ci19Ci0KLX0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpXYXNtCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlUGFyc2VyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlUGFyc2VyLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzOWU0YjMwMjMxOTZlMmIwYzRiYzczMzE3NTcyZTA1ZDA2
YTE3MTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZVBhcnNlci5oCisrKyAvZGV2L251bGwK
QEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotCi0jaW5jbHVk
ZSAiV2FzbUZvcm1hdC5oIgotI2luY2x1ZGUgIldhc21PcHMuaCIKLSNpbmNsdWRlICJXYXNtUGFy
c2VyLmgiCi0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7Ci0KLWNsYXNzIE1vZHVs
ZVBhcnNlciA6IHB1YmxpYyBQYXJzZXI8dm9pZD4gewotcHVibGljOgotICAgIE1vZHVsZVBhcnNl
cihjb25zdCB1aW50OF90KiBzb3VyY2VCdWZmZXIsIHNpemVfdCBzb3VyY2VMZW5ndGgsIE1vZHVs
ZUluZm9ybWF0aW9uJiBpbmZvKQotICAgICAgICA6IFBhcnNlcihzb3VyY2VCdWZmZXIsIHNvdXJj
ZUxlbmd0aCkKLSAgICAgICAgLCBtX2luZm8oaW5mbykKLSAgICB7Ci0gICAgfQotCi0gICAgUmVz
dWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZSgpOwotCi1wcml2YXRlOgotICAgIFJlZjxNb2R1
bGVJbmZvcm1hdGlvbj4gbV9pbmZvOwotfTsKLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20K
LQotI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21PTUdGb3JPU1JFbnRyeVBsYW4uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5jcHAKaW5kZXggODY3MTI0Mjlh
NTM4Mzg1NGY3ODlkYTUxNmVmNWVkMGVjNjZkZTAyMS4uYTBiYjZjZjZkOTAzMDY3NDQzNTZkMjg4
ZWFiMGMyYjUyNTIwNTYyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5jcHAKQEAgLTc5LDEyICs3OSwxMiBAQCB2b2lkIE9N
R0Zvck9TUkVudHJ5UGxhbjo6d29yayhDb21waWxhdGlvbkVmZm9ydCkKIAogICAgIFNpZ25hdHVy
ZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5j
dGlvblNpZ25hdHVyZUluZGljZXNbbV9mdW5jdGlvbkluZGV4XTsKICAgICBjb25zdCBTaWduYXR1
cmUmIHNpZ25hdHVyZSA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoc2lnbmF0dXJlSW5kZXgp
OwotICAgIEFTU0VSVCh2YWxpZGF0ZUZ1bmN0aW9uKGZ1bmN0aW9uLmRhdGEuZGF0YSgpLCBmdW5j
dGlvbi5kYXRhLnNpemUoKSwgc2lnbmF0dXJlLCBtX21vZHVsZUluZm9ybWF0aW9uLmdldCgpKSk7
CisgICAgQVNTRVJUKHZhbGlkYXRlRnVuY3Rpb24oZnVuY3Rpb24sIHNpZ25hdHVyZSwgbV9tb2R1
bGVJbmZvcm1hdGlvbi5nZXQoKSkpOwogCiAgICAgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNh
bGw+IHVubGlua2VkQ2FsbHM7CiAgICAgQ29tcGlsYXRpb25Db250ZXh0IGNvbnRleHQ7CiAgICAg
dW5zaWduZWQgb3NyRW50cnlTY3JhdGNoQnVmZmVyU2l6ZSA9IDA7Ci0gICAgYXV0byBwYXJzZUFu
ZENvbXBpbGVSZXN1bHQgPSBwYXJzZUFuZENvbXBpbGUoY29udGV4dCwgZnVuY3Rpb24uZGF0YS5k
YXRhKCksIGZ1bmN0aW9uLmRhdGEuc2l6ZSgpLCBzaWduYXR1cmUsIHVubGlua2VkQ2FsbHMsIG9z
ckVudHJ5U2NyYXRjaEJ1ZmZlclNpemUsIG1fbW9kdWxlSW5mb3JtYXRpb24uZ2V0KCksIG1fbW9k
ZSwgQ29tcGlsYXRpb25Nb2RlOjpPTUdGb3JPU1JFbnRyeU1vZGUsIG1fZnVuY3Rpb25JbmRleCwg
bV9sb29wSW5kZXgpOworICAgIGF1dG8gcGFyc2VBbmRDb21waWxlUmVzdWx0ID0gcGFyc2VBbmRD
b21waWxlKGNvbnRleHQsIGZ1bmN0aW9uLCBzaWduYXR1cmUsIHVubGlua2VkQ2FsbHMsIG9zckVu
dHJ5U2NyYXRjaEJ1ZmZlclNpemUsIG1fbW9kdWxlSW5mb3JtYXRpb24uZ2V0KCksIG1fbW9kZSwg
Q29tcGlsYXRpb25Nb2RlOjpPTUdGb3JPU1JFbnRyeU1vZGUsIG1fZnVuY3Rpb25JbmRleCwgbV9s
b29wSW5kZXgpOwogCiAgICAgaWYgKFVOTElLRUxZKCFwYXJzZUFuZENvbXBpbGVSZXN1bHQpKSB7
CiAgICAgICAgIGZhaWwoaG9sZExvY2sobV9sb2NrKSwgbWFrZVN0cmluZyhwYXJzZUFuZENvbXBp
bGVSZXN1bHQuZXJyb3IoKSwgIndoZW4gdHJ5aW5nIHRvIHRpZXIgdXAgIiwgU3RyaW5nOjpudW1i
ZXIobV9mdW5jdGlvbkluZGV4KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbU9NR1BsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9N
R1BsYW4uY3BwCmluZGV4IGU1NjEzZWViNzE0Mzc3NTQ2ODY4ODYwMTcxNzkzYjM1OTU5YjFhMGUu
LmE4MDVkMDE2ZmI5OTI4NjRjN2EwM2M4MjY2Y2M1ZDRmYjk4NjVhNjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKQEAgLTc3LDEyICs3NywxMiBAQCB2b2lk
IE9NR1BsYW46OndvcmsoQ29tcGlsYXRpb25FZmZvcnQpCiAKICAgICBTaWduYXR1cmVJbmRleCBz
aWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25TaWdu
YXR1cmVJbmRpY2VzW21fZnVuY3Rpb25JbmRleF07CiAgICAgY29uc3QgU2lnbmF0dXJlJiBzaWdu
YXR1cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKLSAgICBB
U1NFUlQodmFsaWRhdGVGdW5jdGlvbihmdW5jdGlvbi5kYXRhLmRhdGEoKSwgZnVuY3Rpb24uZGF0
YS5zaXplKCksIHNpZ25hdHVyZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi5nZXQoKSkpOworICAgIEFT
U0VSVCh2YWxpZGF0ZUZ1bmN0aW9uKGZ1bmN0aW9uLCBzaWduYXR1cmUsIG1fbW9kdWxlSW5mb3Jt
YXRpb24uZ2V0KCkpKTsKIAogICAgIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiB1bmxp
bmtlZENhbGxzOwogICAgIHVuc2lnbmVkIG9zckVudHJ5U2NyYXRjaEJ1ZmZlclNpemU7CiAgICAg
Q29tcGlsYXRpb25Db250ZXh0IGNvbnRleHQ7Ci0gICAgYXV0byBwYXJzZUFuZENvbXBpbGVSZXN1
bHQgPSBwYXJzZUFuZENvbXBpbGUoY29udGV4dCwgZnVuY3Rpb24uZGF0YS5kYXRhKCksIGZ1bmN0
aW9uLmRhdGEuc2l6ZSgpLCBzaWduYXR1cmUsIHVubGlua2VkQ2FsbHMsIG9zckVudHJ5U2NyYXRj
aEJ1ZmZlclNpemUsIG1fbW9kdWxlSW5mb3JtYXRpb24uZ2V0KCksIG1fbW9kZSwgQ29tcGlsYXRp
b25Nb2RlOjpPTUdNb2RlLCBtX2Z1bmN0aW9uSW5kZXgsIFVJTlQzMl9NQVgpOworICAgIGF1dG8g
cGFyc2VBbmRDb21waWxlUmVzdWx0ID0gcGFyc2VBbmRDb21waWxlKGNvbnRleHQsIGZ1bmN0aW9u
LCBzaWduYXR1cmUsIHVubGlua2VkQ2FsbHMsIG9zckVudHJ5U2NyYXRjaEJ1ZmZlclNpemUsIG1f
bW9kdWxlSW5mb3JtYXRpb24uZ2V0KCksIG1fbW9kZSwgQ29tcGlsYXRpb25Nb2RlOjpPTUdNb2Rl
LCBtX2Z1bmN0aW9uSW5kZXgsIFVJTlQzMl9NQVgpOwogCiAgICAgaWYgKFVOTElLRUxZKCFwYXJz
ZUFuZENvbXBpbGVSZXN1bHQpKSB7CiAgICAgICAgIGZhaWwoaG9sZExvY2sobV9sb2NrKSwgbWFr
ZVN0cmluZyhwYXJzZUFuZENvbXBpbGVSZXN1bHQuZXJyb3IoKSwgIndoZW4gdHJ5aW5nIHRvIHRp
ZXIgdXAgIiwgU3RyaW5nOjpudW1iZXIobV9mdW5jdGlvbkluZGV4KSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBsYW4uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbVBsYW4uY3BwCmluZGV4IDk5NzRlY2ZlNTViYWYyODllZWM1NjUwNjZh
MWNkNDlhZTIzYTgyMGEuLmU2NWY3MDczOTZlY2EwYTE0Nzc3MzJhZGQzNDNjMTk0N2QwNWUyZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5jcHAKQEAgLTM1LDcgKzM1LDYg
QEAKICNpbmNsdWRlICJXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCIKICNpbmNsdWRlICJXYXNtRmF1
bHRTaWduYWxIYW5kbGVyLmgiCiAjaW5jbHVkZSAiV2FzbU1lbW9yeS5oIgotI2luY2x1ZGUgIldh
c21Nb2R1bGVQYXJzZXIuaCIKICNpbmNsdWRlICJXYXNtVmFsaWRhdGUuaCIKICNpbmNsdWRlIDx3
dGYvRGF0YUxvZy5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KQEAgLTEzMSw2ICsxMzAsOSBA
QCBib29sIFBsYW46OnRyeVJlbW92ZUNvbnRleHRBbmRDYW5jZWxJZkxhc3QoQ29udGV4dCYgY29u
dGV4dCkKIAogdm9pZCBQbGFuOjpmYWlsKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIFN0
cmluZyYmIGVycm9yTWVzc2FnZSkKIHsKKyAgICBBU1NFUlQoZXJyb3JNZXNzYWdlKTsKKyAgICBp
ZiAoZmFpbGVkKCkpCisgICAgICAgIHJldHVybjsKICAgICBkYXRhTG9nTG5JZihXYXNtUGxhbklu
dGVybmFsOjp2ZXJib3NlLCAiZmFpbGluZyB3aXRoIG1lc3NhZ2U6ICIsIGVycm9yTWVzc2FnZSk7
CiAgICAgbV9lcnJvck1lc3NhZ2UgPSBXVEZNb3ZlKGVycm9yTWVzc2FnZSk7CiAgICAgY29tcGxl
dGUobG9ja2VyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21T
ZWN0aW9uUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9u
UGFyc2VyLmNwcAppbmRleCBkNTc3OTQ3MGVlOGI1YmIxYjAzNTI3NzBhZmE5NDI2OGQyNjBjZDY5
Li45ODgxZjlhMGE0OGNkZjlhYTk4MTAyNjY0ZjY0Y2E5NWRiNjQyNjNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCkBAIC00MTEsMzAg
KzQxMSwxMCBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbWVudCgpIC0+IFBhcnRpYWxS
ZXN1bHQKICAgICByZXR1cm4geyB9OwogfQogCi0vLyBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2hh
bmdlZCB0byBiZSBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCBvbmNlIHdlIHN3aXRjaCBvdXIg
cGFyc2luZyBpbmZyYXN0cnVjdHVyZSB0byB0aGUgc3RyZWFtaW5nIHBhcnNlci4KIGF1dG8gU2Vj
dGlvblBhcnNlcjo6cGFyc2VDb2RlKCkgLT4gUGFydGlhbFJlc3VsdAogewotICAgIG1faW5mby0+
Y29kZVNlY3Rpb25TaXplID0gbGVuZ3RoKCk7Ci0gICAgdWludDMyX3QgY291bnQ7Ci0gICAgV0FT
TV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIoY291bnQpLCAiY2FuJ3QgZ2V0IENvZGUg
c2VjdGlvbidzIGNvdW50Iik7Ci0gICAgV0FTTV9QQVJTRVJfRkFJTF9JRihjb3VudCA9PSBzdGQ6
Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksICJDb2RlIHNlY3Rpb24ncyBjb3VudCBp
cyB0b28gYmlnICIsIGNvdW50KTsKLSAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGNvdW50ICE9IG1f
aW5mby0+ZnVuY3Rpb25zLnNpemUoKSwgIkNvZGUgc2VjdGlvbiBjb3VudCAiLCBjb3VudCwgIiBl
eGNlZWRzIHRoZSBkZWNsYXJlZCBudW1iZXIgb2YgZnVuY3Rpb25zICIsIG1faW5mby0+ZnVuY3Rp
b25zLnNpemUoKSk7Ci0KLSAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkg
ewotICAgICAgICB1aW50MzJfdCBmdW5jdGlvblNpemU7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZB
SUxfSUYoIXBhcnNlVmFyVUludDMyKGZ1bmN0aW9uU2l6ZSksICJjYW4ndCBnZXQgIiwgaSwgInRo
IENvZGUgZnVuY3Rpb24ncyBzaXplIik7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoZnVu
Y3Rpb25TaXplID4gbGVuZ3RoKCksICJDb2RlIGZ1bmN0aW9uJ3Mgc2l6ZSAiLCBmdW5jdGlvblNp
emUsICIgZXhjZWVkcyB0aGUgbW9kdWxlJ3Mgc2l6ZSAiLCBsZW5ndGgoKSk7Ci0gICAgICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYoZnVuY3Rpb25TaXplID4gbGVuZ3RoKCkgLSBtX29mZnNldCwgIkNv
ZGUgZnVuY3Rpb24ncyBzaXplICIsIGZ1bmN0aW9uU2l6ZSwgIiBleGNlZWRzIHRoZSBtb2R1bGUn
cyByZW1haW5pbmcgc2l6ZSIsIGxlbmd0aCgpIC0gbV9vZmZzZXQpOwotICAgICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKGZ1bmN0aW9uU2l6ZSA+IG1heEZ1bmN0aW9uU2l6ZSwgIkNvZGUgZnVuY3Rp
b24ncyBzaXplICIsIGZ1bmN0aW9uU2l6ZSwgIiBpcyB0b28gYmlnIik7Ci0KLSAgICAgICAgVmVj
dG9yPHVpbnQ4X3Q+IGRhdGEoZnVuY3Rpb25TaXplKTsKLSAgICAgICAgc3RkOjptZW1jcHkoZGF0
YS5kYXRhKCksIHNvdXJjZSgpICsgbV9vZmZzZXQsIGZ1bmN0aW9uU2l6ZSk7Ci0gICAgICAgIG1f
aW5mby0+ZnVuY3Rpb25zW2ldLnN0YXJ0ID0gbV9vZmZzZXRJblNvdXJjZSArIG1fb2Zmc2V0Owot
ICAgICAgICBtX2luZm8tPmZ1bmN0aW9uc1tpXS5lbmQgPSBtX29mZnNldEluU291cmNlICsgbV9v
ZmZzZXQgKyBmdW5jdGlvblNpemU7Ci0gICAgICAgIG1faW5mby0+ZnVuY3Rpb25zW2ldLmRhdGEg
PSBXVEZNb3ZlKGRhdGEpOwotICAgICAgICBtX29mZnNldCArPSBmdW5jdGlvblNpemU7Ci0gICAg
fQotCisgICAgLy8gVGhlIENvZGUgc2VjdGlvbiBpcyBoYW5kbGVkIHNwZWNpYWxseSBpbiBTdHJl
YW1pbmdQYXJzZXIuCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1
cm4geyB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
U3RyZWFtaW5nUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TdHJl
YW1pbmdQYXJzZXIuY3BwCmluZGV4IGM1NDY5MjNjYjc1OGYzNjIwNjc4ZTFjMjEwMWFlMzc4OTUw
YTNmNDUuLjE2ZTkxYzA4YjFkN2I1ZWRlODVmMWNjMDAwNTllOThmYmIzYzhiZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TdHJlYW1pbmdQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TdHJlYW1pbmdQYXJzZXIuY3BwCkBA
IC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKLSNpbmNsdWRlICJX
YXNtTW9kdWxlUGFyc2VyLmgiCiAjaW5jbHVkZSAiV2FzbVNlY3Rpb25QYXJzZXIuaCIKICNpbmNs
dWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVW5hbGlnbmVkQWNjZXNzLmg+CkBA
IC02Nyw4ICs2Niw5IEBAIE5FVkVSX0lOTElORSBhdXRvIFdBUk5fVU5VU0VEX1JFVFVSTiBTdHJl
YW1pbmdQYXJzZXI6OmZhaWwoQXJncy4uLiBhcmdzKSAtPiBTdGF0CiAgICAgcmV0dXJuIFN0YXRl
OjpGYXRhbEVycm9yOwogfQogCi1TdHJlYW1pbmdQYXJzZXI6OlN0cmVhbWluZ1BhcnNlcihNb2R1
bGVJbmZvcm1hdGlvbiYgaW5mbykKK1N0cmVhbWluZ1BhcnNlcjo6U3RyZWFtaW5nUGFyc2VyKE1v
ZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBTdHJlYW1pbmdQYXJzZXJDbGllbnQmIGNsaWVudCkKICAg
ICA6IG1faW5mbyhpbmZvKQorICAgICwgbV9jbGllbnQoY2xpZW50KQogewogICAgIGRhdGFMb2dM
bklmKFdhc21TdHJlYW1pbmdQYXJzZXJJbnRlcm5hbDo6dmVyYm9zZSwgInN0YXJ0aW5nIHZhbGlk
YXRpb24iKTsKIH0KQEAgLTEyMCw2ICsxMjAsNyBAQCBhdXRvIFN0cmVhbWluZ1BhcnNlcjo6cGFy
c2VDb2RlU2VjdGlvblNpemUodWludDMyX3QgZnVuY3Rpb25Db3VudCkgLT4gU3RhdGUKIAogICAg
IGlmIChtX2Z1bmN0aW9uSW5kZXggPT0gbV9mdW5jdGlvbkNvdW50KSB7CiAgICAgICAgIFdBU01f
UEFSU0VSX0ZBSUxfSUYoKG1fY29kZU9mZnNldCArIG1fc2VjdGlvbkxlbmd0aCkgIT0gbV9uZXh0
T2Zmc2V0LCAicGFyc2luZyBlbmRlZCBiZWZvcmUgdGhlIGVuZCBvZiAiLCBtX3NlY3Rpb24sICIg
c2VjdGlvbiIpOworICAgICAgICBtX2NsaWVudC5kaWRQYXJzZVNlY3Rpb24obV9zZWN0aW9uKTsK
ICAgICAgICAgcmV0dXJuIFN0YXRlOjpTZWN0aW9uSUQ7CiAgICAgfQogICAgIHJldHVybiBTdGF0
ZTo6RnVuY3Rpb25TaXplOwpAQCAtMTM5LDkgKzE0MCwxMiBAQCBhdXRvIFN0cmVhbWluZ1BhcnNl
cjo6cGFyc2VGdW5jdGlvblBheWxvYWQoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkgLT4gU3RhdGUK
ICAgICBmdW5jdGlvbi5lbmQgPSBtX29mZnNldCArIG1fZnVuY3Rpb25TaXplOwogICAgIGZ1bmN0
aW9uLmRhdGEgPSBXVEZNb3ZlKGRhdGEpOwogICAgIGRhdGFMb2dMbklmKFdhc21TdHJlYW1pbmdQ
YXJzZXJJbnRlcm5hbDo6dmVyYm9zZSwgIlByb2Nlc3NpbmcgZnVuY3Rpb24gc3RhcnRpbmcgYXQ6
ICIsIGZ1bmN0aW9uLnN0YXJ0LCAiIGFuZCBlbmRpbmcgYXQ6ICIsIGZ1bmN0aW9uLmVuZCk7Cisg
ICAgbV9jbGllbnQuZGlkUGFyc2VGdW5jdGlvbihtX2Z1bmN0aW9uSW5kZXgsIGZ1bmN0aW9uKTsK
ICAgICArK21fZnVuY3Rpb25JbmRleDsKKwogICAgIGlmIChtX2Z1bmN0aW9uSW5kZXggPT0gbV9m
dW5jdGlvbkNvdW50KSB7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoKG1fY29kZU9mZnNl
dCArIG1fc2VjdGlvbkxlbmd0aCkgIT0gKG1fb2Zmc2V0ICsgbV9mdW5jdGlvblNpemUpLCAicGFy
c2luZyBlbmRlZCBiZWZvcmUgdGhlIGVuZCBvZiAiLCBtX3NlY3Rpb24sICIgc2VjdGlvbiIpOwor
ICAgICAgICBtX2NsaWVudC5kaWRQYXJzZVNlY3Rpb24obV9zZWN0aW9uKTsKICAgICAgICAgcmV0
dXJuIFN0YXRlOjpTZWN0aW9uSUQ7CiAgICAgfQogICAgIHJldHVybiBTdGF0ZTo6RnVuY3Rpb25T
aXplOwpAQCAtMTcyLDYgKzE3Niw3IEBAIGF1dG8gU3RyZWFtaW5nUGFyc2VyOjpwYXJzZVNlY3Rp
b25QYXlsb2FkKFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIC0+IFN0YXRlCiAKICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKHBhcnNlci5sZW5ndGgoKSAhPSBwYXJzZXIub2Zmc2V0KCksICJwYXJzaW5n
IGVuZGVkIGJlZm9yZSB0aGUgZW5kIG9mICIsIG1fc2VjdGlvbiwgIiBzZWN0aW9uIik7CiAKKyAg
ICBtX2NsaWVudC5kaWRQYXJzZVNlY3Rpb24obV9zZWN0aW9uKTsKICAgICByZXR1cm4gU3RhdGU6
OlNlY3Rpb25JRDsKIH0KIApAQCAtMzgyLDYgKzM4Nyw3IEBAIGF1dG8gU3RyZWFtaW5nUGFyc2Vy
OjpmaW5hbGl6ZSgpIC0+IFN0YXRlCiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6
dXNlRWFnZXJXZWJBc3NlbWJseU1vZHVsZUhhc2hpbmcoKSkpCiAgICAgICAgICAgICAgICAgbV9p
bmZvLT5uYW1lU2VjdGlvbi0+c2V0SGFzaChtX2hhc2hlci5jb21wdXRlSGV4RGlnZXN0KCkpOwog
ICAgICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpGaW5pc2hlZDsKKyAgICAgICAgICAgIG1fY2xp
ZW50LmRpZEZpbmlzaFBhcnNpbmcoKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX3N0
YXRlID0gZmFpbE9uU3RhdGUoU3RhdGU6OlNlY3Rpb25JRCk7CiAgICAgICAgIGJyZWFrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVN0cmVhbWluZ1BhcnNlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVN0cmVhbWluZ1BhcnNlci5oCmluZGV4
IDdiNmI2Mzc5OTY0ZDgyMmFjMjFjMjdmYTIxOGE5YWJlOGI2MGZkMDEuLjRjZmE3N2ZmYWNiMDdh
NjU1MWM4NjkwYjdjOTU3NGJkMTZjNGZjZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21TdHJlYW1pbmdQYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmgKQEAgLTM3LDYgKzM3LDExIEBACiBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogCiBjbGFzcyBTdHJlYW1pbmdQYXJzZXJDbGllbnQg
eworcHVibGljOgorICAgIHZpcnR1YWwgflN0cmVhbWluZ1BhcnNlckNsaWVudCgpID0gZGVmYXVs
dDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGFyc2VTZWN0aW9uKFNlY3Rpb24pIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBkaWRQYXJzZUZ1bmN0aW9uKHVuc2lnbmVkLCBjb25zdCBGdW5jdGlvbkRhdGEm
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoUGFyc2luZygpIHsgfQogfTsKIAogY2xh
c3MgU3RyZWFtaW5nUGFyc2VyIHsKQEAgLTY3LDcgKzcyLDcgQEAgY2xhc3MgU3RyZWFtaW5nUGFy
c2VyIHsKIAogICAgIGVudW0gY2xhc3MgSXNFbmRPZlN0cmVhbSB7IFllcywgTm8gfTsKIAotICAg
IFN0cmVhbWluZ1BhcnNlcihNb2R1bGVJbmZvcm1hdGlvbiYpOworICAgIFN0cmVhbWluZ1BhcnNl
cihNb2R1bGVJbmZvcm1hdGlvbiYsIFN0cmVhbWluZ1BhcnNlckNsaWVudCYpOwogCiAgICAgU3Rh
dGUgYWRkQnl0ZXMoY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpIHsgcmV0dXJu
IGFkZEJ5dGVzKGJ5dGVzLCBsZW5ndGgsIElzRW5kT2ZTdHJlYW06Ok5vKTsgfQogICAgIFN0YXRl
IGZpbmFsaXplKCk7CkBAIC05Nyw2ICsxMDIsNyBAQCBjbGFzcyBTdHJlYW1pbmdQYXJzZXIgewog
ICAgIFN0YXRlIGZhaWxPblN0YXRlKFN0YXRlKTsKIAogICAgIFJlZjxNb2R1bGVJbmZvcm1hdGlv
bj4gbV9pbmZvOworICAgIFN0cmVhbWluZ1BhcnNlckNsaWVudCYgbV9jbGllbnQ7CiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IG1fcmVtYWluaW5nOwogICAgIFN0cmluZyBtX2Vycm9yTWVzc2FnZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5jcHAKaW5kZXggMmU4ZTBh
MDk2M2U1YTAyYTBhYTA4ODRmNGMyMjA4YWE3Zjc1NDcxNS4uNjJlOGMyMTAxM2Y0YmY1Y2IwMTZm
MGEzZTM5N2QwYTljNWUzNzE0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVZhbGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
VmFsaWRhdGUuY3BwCkBAIC00NjEsMTAgKzQ2MSwxMCBAQCB2b2lkIFZhbGlkYXRlOjpkdW1wKGNv
bnN0IFZlY3RvcjxDb250cm9sRW50cnk+JiBjb250cm9sU3RhY2ssIGNvbnN0IFN0YWNrKiBleHBy
ZQogICAgIGRhdGFMb2dMbigpOwogfQogCi1FeHBlY3RlZDx2b2lkLCBTdHJpbmc+IHZhbGlkYXRl
RnVuY3Rpb24oY29uc3QgdWludDhfdCogc291cmNlLCBzaXplX3QgbGVuZ3RoLCBjb25zdCBTaWdu
YXR1cmUmIHNpZ25hdHVyZSwgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIG1vZHVsZSkKK0V4cGVj
dGVkPHZvaWQsIFN0cmluZz4gdmFsaWRhdGVGdW5jdGlvbihjb25zdCBGdW5jdGlvbkRhdGEmIGZ1
bmN0aW9uLCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgY29uc3QgTW9kdWxlSW5mb3JtYXRp
b24mIG1vZHVsZSkKIHsKICAgICBWYWxpZGF0ZSBjb250ZXh0KG1vZHVsZSk7Ci0gICAgRnVuY3Rp
b25QYXJzZXI8VmFsaWRhdGU+IHZhbGlkYXRvcihjb250ZXh0LCBzb3VyY2UsIGxlbmd0aCwgc2ln
bmF0dXJlLCBtb2R1bGUpOworICAgIEZ1bmN0aW9uUGFyc2VyPFZhbGlkYXRlPiB2YWxpZGF0b3Io
Y29udGV4dCwgZnVuY3Rpb24uZGF0YS5kYXRhKCksIGZ1bmN0aW9uLmRhdGEuc2l6ZSgpLCBzaWdu
YXR1cmUsIG1vZHVsZSk7CiAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyh2YWxpZGF0b3Iu
cGFyc2UoKSk7CiAgICAgcmV0dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbVZhbGlkYXRlLmgKaW5kZXggMjgyODNjZmVhODJhZjkxNDFjYmIwYTkzMGRlMDI5OTNhOTkw
NWFiMS4uYTk1MmFhYzY4YTgyZjg5MGZjZTkyOWI2MmU3ODA2NTMzOGYwMmQyNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSBXYXNtIHsKIAotRXhwZWN0ZWQ8dm9pZCwgU3RyaW5n
PiB2YWxpZGF0ZUZ1bmN0aW9uKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIGNvbnN0IFNpZ25hdHVy
ZSYsIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJik7CitFeHBlY3RlZDx2b2lkLCBTdHJpbmc+IHZh
bGlkYXRlRnVuY3Rpb24oY29uc3QgRnVuY3Rpb25EYXRhJiwgY29uc3QgU2lnbmF0dXJlJiwgY29u
c3QgTW9kdWxlSW5mb3JtYXRpb24mKTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KIApk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAz
ZjdiMTMwOTliMTlmYzFjMjFhNmZlMDZkNjlkMDRiZjdmZjU4MjliLi44NTQ5NTcxMTgyNWI1MzRi
NDI2OWJmZjgzNjJhMjBmZjllNTYzMGMyIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZwor
KysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTA5LTAyICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkFzc2VtYmx5XSBV
c2UgU3RyZWFtaW5nUGFyc2VyIGluIGV4aXN0aW5nIFdhc206OkJCUVBsYW4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTA0MworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBvZmZzZXQgcGVyZm9ybWlu
ZyB0aGUgdmFsaWRhdGlvbiBiZWNvbWVzIGEgYml0IGRpZmZlcmVudC4KKyAgICAgICAgVGhlIG9m
ZnNldCAwIGlzIG5pY2Ugc2luY2UgaXQgaXMgdGhlIHN0YXJ0aW5nIG9mZnNldCBvZiB0aGUgTW9k
dWxlIGhlYWRlciBzaWduYXR1cmUgY29tcGFyZWQgdG8gdGhlIG9mZnNldCA4LgorCisgICAgICAg
ICogd2FzbS9qcy1hcGkvdmVyc2lvbi5qczoKKwogMjAxOS0wOC0zMCAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEdlbmVyYXRlIG5ldy50YXJnZXQg
cmVnaXN0ZXIgb25seSB3aGVuIGl0IGlzIHVzZWQKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9q
cy1hcGkvdmVyc2lvbi5qcyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvdmVyc2lvbi5qcwppbmRleCAw
NDg2ZmNmZGRlZmQwODIxZDM5MjQ2Y2I2NDA4NzM0YmZlYmYyMmUyLi40ZDEwZThjMTVkMGUxZDc3
OTQ2ZDg3Y2VlOGQyMGY3MjIwZDlkMjRmIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vanMtYXBp
L3ZlcnNpb24uanMKKysrIGIvSlNUZXN0cy93YXNtL2pzLWFwaS92ZXJzaW9uLmpzCkBAIC01LDUg
KzUsNSBAQAogICAgIGlmICh2ZXJzaW9uID09PSAxKQogICAgICAgICBjb250aW51ZTsKICAgICBj
b25zdCBlbXB0eU1vZHVsZUFycmF5ID0gVWludDhBcnJheS5vZigweDAsIDB4NjEsIDB4NzMsIDB4
NmQsIHZlcnNpb24sIDB4MDAsIDB4MDAsIDB4MDApOwotICAgIGFzc2VydC50aHJvd3MoKCkgPT4g
bmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShlbXB0eU1vZHVsZUFycmF5KSwgV2ViQXNzZW1ibHkuQ29t
cGlsZUVycm9yLCBgV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgcGFyc2UgYXQgYnl0ZSA4OiB1
bmV4cGVjdGVkIHZlcnNpb24gbnVtYmVyICR7dmVyc2lvbn0gZXhwZWN0ZWQgMWApOworICAgIGFz
c2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShlbXB0eU1vZHVsZUFycmF5
KSwgV2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yLCBgV2ViQXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3Qg
cGFyc2UgYXQgYnl0ZSAwOiB1bmV4cGVjdGVkIHZlcnNpb24gbnVtYmVyICR7dmVyc2lvbn0gZXhw
ZWN0ZWQgMWApOwogfQo=
</data>
<flag name="review"
          id="393544"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>