<?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>234492</bug_id>
          
          <creation_ts>2021-12-19 13:14:34 -0800</creation_ts>
          <short_desc>Add support for premultiplied alpha interpolated gradients and defaulted off option to use them for CSS Gradients</short_desc>
          <delta_ts>2021-12-23 15:23:56 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>
          
          <blocked>150940</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>annulen</cc>
    
    <cc>bramus</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mitz</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tmjenox</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1825477</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-19 13:14:34 -0800</bug_when>
    <thetext>Add CGShadingRef based implementation of Gradient as stepping stone toward premultiplied interpolation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825478</commentid>
    <comment_count>1</comment_count>
      <attachid>447558</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-19 13:20:22 -0800</bug_when>
    <thetext>Created attachment 447558
For the bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825481</commentid>
    <comment_count>2</comment_count>
      <attachid>447559</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-19 13:55:40 -0800</bug_when>
    <thetext>Created attachment 447559
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825491</commentid>
    <comment_count>3</comment_count>
      <attachid>447565</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-19 15:38:43 -0800</bug_when>
    <thetext>Created attachment 447565
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825507</commentid>
    <comment_count>4</comment_count>
      <attachid>447567</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-19 17:48:16 -0800</bug_when>
    <thetext>Created attachment 447567
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825508</commentid>
    <comment_count>5</comment_count>
      <attachid>447568</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-19 17:48:42 -0800</bug_when>
    <thetext>Created attachment 447568
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825509</commentid>
    <comment_count>6</comment_count>
      <attachid>447569</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-19 18:10:46 -0800</bug_when>
    <thetext>Created attachment 447569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825531</commentid>
    <comment_count>7</comment_count>
      <attachid>447579</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-19 20:59:10 -0800</bug_when>
    <thetext>Created attachment 447579
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825532</commentid>
    <comment_count>8</comment_count>
      <attachid>447580</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-19 21:00:06 -0800</bug_when>
    <thetext>Created attachment 447580
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825536</commentid>
    <comment_count>9</comment_count>
      <attachid>447582</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-19 21:55:27 -0800</bug_when>
    <thetext>Created attachment 447582
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825660</commentid>
    <comment_count>10</comment_count>
      <attachid>447614</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-20 11:31:20 -0800</bug_when>
    <thetext>Created attachment 447614
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825773</commentid>
    <comment_count>11</comment_count>
      <attachid>447654</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-20 15:16:10 -0800</bug_when>
    <thetext>Created attachment 447654
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825774</commentid>
    <comment_count>12</comment_count>
      <attachid>447654</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-20 15:17:09 -0800</bug_when>
    <thetext>Comment on attachment 447654
Patch

Still need to figure out what to do about the GTK port, since it doesn&apos;t look like Cairo has premultiplied alpha support, but this is good to review now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825778</commentid>
    <comment_count>13</comment_count>
      <attachid>447654</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-12-20 15:32:17 -0800</bug_when>
    <thetext>Comment on attachment 447654
Patch

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

&gt; Source/WTF/Scripts/Preferences/WebPreferencesExperimental.yaml:287
&gt; +CSSGradientAlphaPremultipliedInterpolationEnabled:

287CSSGradientAlphaPremultipliedInterpolationEnabled -&gt; 287CSSGradientPremultipliedAlphaInterpolationEnabled ?

&gt; Source/WebCore/platform/graphics/cg/GradientCGStrategy.h:82
&gt; +    using Strategy = std::variant&lt;Gradient, Shading&gt;;

I don&apos;t like the naming here. To me, a &quot;strategy&quot; sounds like an enum value describing which implementation to use. I was confused that pickStrategy(), makeGradient() and makeShading() all return something called a &quot;Strategy&quot;.

std::variant&lt;Gradient, Shading&gt; is more like &quot;GradientRenderer&quot; or something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825819</commentid>
    <comment_count>14</comment_count>
      <attachid>447668</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-20 17:16:57 -0800</bug_when>
    <thetext>Created attachment 447668
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825869</commentid>
    <comment_count>15</comment_count>
      <attachid>447685</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-20 21:24:02 -0800</bug_when>
    <thetext>Created attachment 447685
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825870</commentid>
    <comment_count>16</comment_count>
      <attachid>447686</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-20 21:29:44 -0800</bug_when>
    <thetext>Created attachment 447686
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825973</commentid>
    <comment_count>17</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-21 04:43:34 -0800</bug_when>
    <thetext>Committed r287310 (245462@main): &lt;https://commits.webkit.org/245462@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 447686.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825974</commentid>
    <comment_count>18</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-21 04:44:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/86764026&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825990</commentid>
    <comment_count>19</comment_count>
      <attachid>447686</attachid>
    <who name="">mitz</who>
    <bug_when>2021-12-21 06:53:42 -0800</bug_when>
    <thetext>Comment on attachment 447686
Patch

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

&gt; Source/WebCore/platform/graphics/cg/GradientRendererCG.cpp:53
&gt; +                // FIXME: Use gradient strategy if none of the stops have alpha.

For performance, it may be useful to do this also whenever the only stops with non-1 alpha have 0 alpha, by adjusting and, if necessary, repeating the transparent stop. There are likely other cases (likely the most common cases) that can be optimized this way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826100</commentid>
    <comment_count>20</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-12-21 13:43:40 -0800</bug_when>
    <thetext>*** Bug 150940 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447558</attachid>
            <date>2021-12-19 13:20:22 -0800</date>
            <delta_ts>2021-12-19 13:56:35 -0800</delta_ts>
            <desc>For the bots</desc>
            <filename>bug-234492-20211219132021.patch</filename>
            <type>text/plain</type>
            <size>19549</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDIxLTEyLTE5ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgQ0dTaGFkaW5nUmVmIGJhc2Vk
IGltcGxlbWVudGF0aW9uIG9mIEdyYWRpZW50IGFzIHN0ZXBwaW5nIHN0b25lIHRvd2FyZCBwcmVt
dWx0aXBsaWVkIGludGVycG9sYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNDQ5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtXSVBdIFRoaXMgY29tcGxldGVseSByZXBsYWNlcyB0aGUgQ0dHcmFk
aWVudFJlZiBpbXBsZW1lbnRhdGlvbi4gV2UgbmVlZCB0byBtYWtlIHRoaXMKKyAgICAgICAgY29u
ZGl0aW9uYWwgZm9yIGl0IHRvIGJlIHJlYWwuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvckNvbXBvbmVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yQ29tcG9uZW50czo6
c2l6ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkN1c3RvbUNHR3JhZGllbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDdXN0b21DR0dyYWRpZW50OjpmdW5jdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDdXN0b21DR0dyYWRpZW50Ojpjb2xvckludGVycG9sYXRpb25NZXRob2QgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VzdG9tQ0dHcmFkaWVudDo6c3RvcHMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q3VzdG9tQ0dHcmFkaWVudDo6Q3VzdG9tQ0dHcmFkaWVudCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1
bnByZW11bHRpcGxpZWRTaGFkaW5nRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Q0dGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21DR0dyYWRpZW50Ojppbml0aWFs
aXplRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tQ0dHcmFkaWVudDo6Y29sb3JT
cGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudDo6Y3JlYXRlQ3VzdG9tQ0dH
cmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpkcmF3TGluZWFyR3JhZGllbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6ZHJhd1JhZGlhbEdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdD
b25pY0dyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50OjpwYWludCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFkaWVudDo6ZmlsbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVu
dDo6aGFzT25seUJvdW5kZWRTUkdCQ29sb3JTdG9wcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpHcmFkaWVudDo6Y3JlYXRlQ0dHcmFkaWVudCk6IERlbGV0ZWQuCisKIDIwMjEt
MTItMTggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEhhc2ggdGFi
bGVzLCByZWFkL3dyaXRlLCBhbmQgaGVhcCBtZW1vcnkgYXJlIHVzZWQgdW5uZWNlc3NhcmlseSwg
d2hpY2ggbWF5IGh1cnQgcGVyZm9ybWFuY2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNp
b24gMjg3MjQ3KQorKysgU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDEzIEBACisyMDIxLTEyLTE5ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgQ0dTaGFkaW5nUmVmIGJhc2VkIGltcGxlbWVudGF0aW9uIG9m
IEdyYWRpZW50IGFzIHN0ZXBwaW5nIHN0b25lIHRvd2FyZCBwcmVtdWx0aXBsaWVkIGludGVycG9s
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NDQ5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaDoKKyAgICAgICAgQWRkIENHU2hhZGluZ1JlZiBT
UEkgZm9yIGNyZWF0aW5nIGNvbmljIHNoYWRpbmdzLgorCiAyMDIxLTEyLTE2ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cmV2ZXJ0aW5nIHIyODcwNTYuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9D
b3JlR3JhcGhpY3NTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9jZy9Db3JlR3JhcGhpY3NTUEkuaAkocmV2aXNpb24gMjg3MjMzKQorKysgU291cmNlL1dlYkNv
cmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTQy
LDYgKzQyLDcgQEAKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dGb250Q2FjaGUuaD4KICNpbmNs
dWRlIDxDb3JlR3JhcGhpY3MvQ0dQYXRoUHJpdmF0ZS5oPgogI2luY2x1ZGUgPENvcmVHcmFwaGlj
cy9Db3JlR3JhcGhpY3NQcml2YXRlLmg+CisjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHU2hhZGlu
Z1ByaXZhdGUuaD4KICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dTdHlsZVByaXZhdGUuaD4KIAog
I2lmIFBMQVRGT1JNKE1BQykKQEAgLTMyMyw2ICszMjQsNyBAQCB2b2lkIENHQ29udGV4dFNldFN0
eWxlKENHQ29udGV4dFJlZiwgQ0dTdHlsZVJlZik7CiB2b2lkIENHQ29udGV4dERyYXdDb25pY0dy
YWRpZW50KENHQ29udGV4dFJlZiwgQ0dHcmFkaWVudFJlZiwgQ0dQb2ludCBjZW50ZXIsIENHRmxv
YXQgYW5nbGUpOwogdm9pZCBDR1BhdGhBZGRVbmV2ZW5Db3JuZXJzUm91bmRlZFJlY3QoQ0dNdXRh
YmxlUGF0aFJlZiwgY29uc3QgQ0dBZmZpbmVUcmFuc2Zvcm0gKiwgQ0dSZWN0LCBjb25zdCBDR1Np
emUgY29ybmVyc1s0XSk7CiBib29sIENHRm9udFJlbmRlcmluZ0dldEZvbnRTbW9vdGhpbmdEaXNh
YmxlZCh2b2lkKTsKK0NHU2hhZGluZ1JlZiBDR1NoYWRpbmdDcmVhdGVDb25pYyhDR0NvbG9yU3Bh
Y2VSZWYsIENHUG9pbnQgY2VudGVyLCBDR0Zsb2F0IGFuZ2xlLCBDR0Z1bmN0aW9uUmVmKTsKIAog
I2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db2xvckNvbXBvbmVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbXBvbmVudHMuaAkocmV2aXNpb24gMjg3MjMzKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb21wb25lbnRzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDggQEAgc3RydWN0IENvbG9yQ29tcG9uZW50cyB7CiAg
ICAgdGVtcGxhdGU8c2l6ZV90IFN0YXJ0LCBzaXplX3QgRW5kPgogICAgIGNvbnN0ZXhwciBDb2xv
ckNvbXBvbmVudHM8VCwgRW5kIC0gU3RhcnQ+IHN1YnNldCgpIGNvbnN0OwogCisgICAgY29uc3Rl
eHByIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gU2l6ZTsgfQorCiAgICAgc3RkOjphcnJh
eTxULCBOPiBjb21wb25lbnRzOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhZGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFkaWVudC5oCShyZXZpc2lvbiAyODcyMzMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0
NSw3IEBACiAKICNpZiBVU0UoQ0cpCiB0eXBlZGVmIHN0cnVjdCBDR0NvbnRleHQqIENHQ29udGV4
dFJlZjsKK3R5cGVkZWYgc3RydWN0IENHRnVuY3Rpb24qIENHRnVuY3Rpb25SZWY7CiB0eXBlZGVm
IHN0cnVjdCBDR0dyYWRpZW50KiBDR0dyYWRpZW50UmVmOwogI2VuZGlmCiAKQEAgLTYyLDYgKzYz
LDQyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEdyYXBo
aWNzQ29udGV4dDsKIAorI2lmIFVTRShDRykKK3N0cnVjdCBDb2xvckNvbnZlcnRlZFRvSW50ZXJw
b2xhdGlvbkNvbG9yU3BhY2VTdG9wIHsKKyAgICBmbG9hdCBvZmZzZXQ7CisgICAgQ29sb3JDb21w
b25lbnRzPGZsb2F0LCA0PiBjb2xvckNvbXBvbmVudHM7Cit9OworCitjbGFzcyBDdXN0b21DR0dy
YWRpZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEN1c3RvbUNHR3JhZGllbnQ+IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEN1c3RvbUNHR3JhZGllbnQ+IGNyZWF0ZShDb2xvcklu
dGVycG9sYXRpb25NZXRob2QgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBWZWN0b3I8Q29sb3JD
b252ZXJ0ZWRUb0ludGVycG9sYXRpb25Db2xvclNwYWNlU3RvcD4gc3RvcHMpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDdXN0b21DR0dyYWRpZW50KGNvbG9ySW50ZXJwb2xh
dGlvbk1ldGhvZCwgV1RGTW92ZShzdG9wcykpKTsKKyAgICB9CisKKyAgICBDR0Z1bmN0aW9uUmVm
IGZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbi5nZXQoKTsgfQorICAgIENvbG9y
SW50ZXJwb2xhdGlvbk1ldGhvZCBjb2xvckludGVycG9sYXRpb25NZXRob2QoKSBjb25zdCB7IHJl
dHVybiBtX2NvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDsgfQorICAgIENHQ29sb3JTcGFjZVJlZiBj
b2xvclNwYWNlKCkgY29uc3Q7CisKKyAgICAvLyBGSVhNRTogVXNlIFNwYW4uCisgICAgY29uc3Qg
VmVjdG9yPENvbG9yQ29udmVydGVkVG9JbnRlcnBvbGF0aW9uQ29sb3JTcGFjZVN0b3A+JiBzdG9w
cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcHM7IH0KKworcHJpdmF0ZToKKyAgICBDdXN0b21DR0dy
YWRpZW50KENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBjb2xvckludGVycG9sYXRpb25NZXRob2Qs
IFZlY3RvcjxDb2xvckNvbnZlcnRlZFRvSW50ZXJwb2xhdGlvbkNvbG9yU3BhY2VTdG9wPiBzdG9w
cykKKyAgICAgICAgOiBtX2NvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCB7IGNvbG9ySW50ZXJwb2xh
dGlvbk1ldGhvZCB9CisgICAgICAgICwgbV9zdG9wcyB7IFdURk1vdmUoc3RvcHMpIH0KKyAgICAg
ICAgLCBtX2Z1bmN0aW9uIHsgaW5pdGlhbGl6ZUZ1bmN0aW9uKCkgfQorICAgIHsKKyAgICB9CisK
KyAgICBSZXRhaW5QdHI8Q0dGdW5jdGlvblJlZj4gaW5pdGlhbGl6ZUZ1bmN0aW9uKCk7CisKKyAg
ICBDb2xvckludGVycG9sYXRpb25NZXRob2QgbV9jb2xvckludGVycG9sYXRpb25NZXRob2Q7Cisg
ICAgVmVjdG9yPENvbG9yQ29udmVydGVkVG9JbnRlcnBvbGF0aW9uQ29sb3JTcGFjZVN0b3A+IG1f
c3RvcHM7CisgICAgUmV0YWluUHRyPENHRnVuY3Rpb25SZWY+IG1fZnVuY3Rpb247Cit9OworI2Vu
ZGlmCisKIGNsYXNzIEdyYWRpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8R3JhZGllbnQ+IHsKIHB1
YmxpYzoKICAgICBzdHJ1Y3QgQ29sb3JTdG9wIHsKQEAgLTE0NSw3ICsxODIsNyBAQCBjbGFzcyBH
cmFkaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYWRpZW50PiB7IChwcml2YXQKICAgICB2b2lk
IHN0b3BzQ2hhbmdlZCgpOwogCiAjaWYgVVNFKENHKQotICAgIHZvaWQgY3JlYXRlQ0dHcmFkaWVu
dCgpOworICAgIHZvaWQgY3JlYXRlQ3VzdG9tQ0dHcmFkaWVudCgpOwogICAgIGJvb2wgaGFzT25s
eUJvdW5kZWRTUkdCQ29sb3JTdG9wcygpIGNvbnN0OwogI2VuZGlmCiAKQEAgLTE1Nyw3ICsxOTQs
NyBAQCBjbGFzcyBHcmFkaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYWRpZW50PiB7IChwcml2
YXQKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fY2FjaGVkSGFzaCB7IDAgfTsKIAogI2lmIFVTRShD
RykKLSAgICBSZXRhaW5QdHI8Q0dHcmFkaWVudFJlZj4gbV9ncmFkaWVudDsKKyAgICBSZWZQdHI8
Q3VzdG9tQ0dHcmFkaWVudD4gbV9ncmFkaWVudDsKICNlbmRpZgogCiAjaWYgVVNFKERJUkVDVDJE
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
ZGllbnRDRy5jcHAJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2MSArNDAs
MTcwIEBAIHZvaWQgR3JhZGllbnQ6OnN0b3BzQ2hhbmdlZCgpCiAgICAgbV9ncmFkaWVudCA9IG51
bGxwdHI7CiB9CiAKLWJvb2wgR3JhZGllbnQ6Omhhc09ubHlCb3VuZGVkU1JHQkNvbG9yU3RvcHMo
KSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgSW50ZXJwb2xhdGlvblNwYWNlPgorc3RhdGljIHZv
aWQgdW5wcmVtdWx0aXBsaWVkU2hhZGluZ0Z1bmN0aW9uKHZvaWQqIGluZm8sIGNvbnN0IENHRmxv
YXQqIGluLCBDR0Zsb2F0KiBvdXQpCiB7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBzdG9wIDogbV9z
dG9wcykgewotICAgICAgICBpZiAoc3RvcC5jb2xvci5jb2xvclNwYWNlKCkgIT0gQ29sb3JTcGFj
ZTo6U1JHQikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRy
dWU7CisgICAgdXNpbmcgSW50ZXJwb2xhdGlvblNwYWNlQ29sb3JUeXBlID0gdHlwZW5hbWUgSW50
ZXJwb2xhdGlvblNwYWNlOjpDb2xvclR5cGU7CisgICAgdXNpbmcgT3V0cHV0U3BhY2VDb2xvclR5
cGUgPSBTUkdCQTxmbG9hdD47CisKKyAgICBhdXRvKiBncmFkaWVudCA9IHN0YXRpY19jYXN0PEN1
c3RvbUNHR3JhZGllbnQqPihpbmZvKTsKKworICAgIC8vIENvbXB1dGUgY29sb3IgYXQgcG9zaXRp
b24gJ3Bvc2l0aW9uJyBhbmQgYXNzaWduIGNvbXBvbmVudHMgdG8gb3V0WzAgLT4gM10uCisKKyAg
ICBmbG9hdCByZXF1ZXN0ZWRPZmZzZXQgPSBpblswXTsKKworICAgIC8vIDEuIEZpbmQgc3RvcHMg
dGhhdCBib3VuZCB0aGUgcmVxdWVzdGVkIG9mZnNldC4KKyAgICBhdXRvIFtzdG9wMCwgc3RvcDFd
ID0gWyZdIHsKKyAgICAgICAgZm9yIChzaXplX3Qgc3RvcCA9IDE7IHN0b3AgPCBncmFkaWVudC0+
c3RvcHMoKS5zaXplKCk7ICsrc3RvcCkgeworICAgICAgICAgICAgaWYgKHJlcXVlc3RlZE9mZnNl
dCA8PSBncmFkaWVudC0+c3RvcHMoKVtzdG9wXS5vZmZzZXQpCisgICAgICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6dGllKGdyYWRpZW50LT5zdG9wcygpW3N0b3AgLSAxXSwgZ3JhZGllbnQtPnN0b3Bz
KClbc3RvcF0pOworICAgICAgICB9CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH0oKTsKKworICAgIC8vIDIuIENvbXB1dGUgcGVyY2VudGFnZSBvZmZzZXQgYmV0d2VlbiB0aGUg
dHdvIHN0b3BzLgorICAgIGZsb2F0IG9mZnNldCA9IChzdG9wMS5vZmZzZXQgPT0gc3RvcDAub2Zm
c2V0KSA/IDAuMGYgOiAocmVxdWVzdGVkT2Zmc2V0IC0gc3RvcDAub2Zmc2V0KSAvIChzdG9wMS5v
ZmZzZXQgLSBzdG9wMC5vZmZzZXQpOworCisgICAgLy8gMy4gSW50ZXJwb2xhdGUgdGhlIHR3byBz
dG9wcycgY29sb3JzIGJ5IHRoZSBjb21wdXRlZCBvZmZzZXQuCisgICAgYXV0byBpbnRlcnBvbGF0
ZWRDb2xvckNvbXBvbmVudHMgPSBtYXBDb2xvckNvbXBvbmVudHMoWyZdIChhdXRvIGNvbXBvbmVu
dEZyb21Db2xvcjAsIGF1dG8gY29tcG9uZW50RnJvbUNvbG9yMSkgLT4gZmxvYXQgeworICAgICAg
ICByZXR1cm4gKGNvbXBvbmVudEZyb21Db2xvcjAgKiAoMS4wZiAtIG9mZnNldCkpICsgKGNvbXBv
bmVudEZyb21Db2xvcjEgKiBvZmZzZXQpOworICAgIH0sIHN0b3AwLmNvbG9yQ29tcG9uZW50cywg
c3RvcDEuY29sb3JDb21wb25lbnRzKTsKKworICAgIC8vIDQuIENvbnZlcnQgdG8gdGhlIG91dHB1
dCBjb2xvcnNwYWNlLgorICAgIGF1dG8gaW50ZXJwb2xhdGVkQ29sb3IgPSBtYWtlRnJvbUNvbXBv
bmVudHM8SW50ZXJwb2xhdGlvblNwYWNlQ29sb3JUeXBlPihpbnRlcnBvbGF0ZWRDb2xvckNvbXBv
bmVudHMpOworICAgIGF1dG8gaW50ZXJwb2xhdGVkQ29sb3JDb252ZXJ0ZWRUb091dHB1dFNwYWNl
ID0gYXNDb2xvckNvbXBvbmVudHMoY29udmVydENvbG9yPE91dHB1dFNwYWNlQ29sb3JUeXBlPihp
bnRlcnBvbGF0ZWRDb2xvcikpOworCisgICAgZm9yIChzaXplX3QgY29tcG9uZW50SW5kZXggPSAw
OyBjb21wb25lbnRJbmRleCA8IGludGVycG9sYXRlZENvbG9yQ29udmVydGVkVG9PdXRwdXRTcGFj
ZS5zaXplKCk7ICsrY29tcG9uZW50SW5kZXgpCisgICAgICAgIG91dFtjb21wb25lbnRJbmRleF0g
PSBpbnRlcnBvbGF0ZWRDb2xvckNvbnZlcnRlZFRvT3V0cHV0U3BhY2VbY29tcG9uZW50SW5kZXhd
OwogfQogCi12b2lkIEdyYWRpZW50OjpjcmVhdGVDR0dyYWRpZW50KCkKK3N0YXRpYyBSZXRhaW5Q
dHI8Q0dGdW5jdGlvblJlZj4gY3JlYXRlQ0dGdW5jdGlvbihDdXN0b21DR0dyYWRpZW50JiBjdXN0
b21DR0dyYWRpZW50KQogewotICAgIHNvcnRTdG9wcygpOworICAgIGF1dG8gZXZhbHVhdG9yID0g
WyZdIHsKKyAgICAgICAgYXV0byBtZXRob2QgPSBjdXN0b21DR0dyYWRpZW50LmNvbG9ySW50ZXJw
b2xhdGlvbk1ldGhvZCgpOworICAgICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtZXRob2QuY29s
b3JTcGFjZSwKKyAgICAgICAgICAgIFtdIChhdXRvJiAvKmNvbG9yU3BhY2UqLykgeworICAgICAg
ICAgICAgICAgIHJldHVybiAmdW5wcmVtdWx0aXBsaWVkU2hhZGluZ0Z1bmN0aW9uPENvbG9ySW50
ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQj47CisgICAgICAgICAgICB9CisgICAgICAgICk7CisgICAg
fTsKIAotICAgIHVuc2lnbmVkIG51bVN0b3BzID0gbV9zdG9wcy5zaXplKCk7CisgICAgY29uc3Qg
Q0dGdW5jdGlvbkNhbGxiYWNrcyBjYWxsYmFja3MgPSB7CisgICAgICAgIC52ZXJzaW9uID0gMCwK
KyAgICAgICAgLmV2YWx1YXRlID0gZXZhbHVhdG9yKCksCisgICAgICAgIC5yZWxlYXNlSW5mbyA9
IFtdICh2b2lkKiBpbmZvKSB7CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxDdXN0b21DR0dyYWRp
ZW50Kj4oaW5mbyktPmRlcmVmKCk7CisgICAgICAgIH0KKyAgICB9OwogCi0gICAgY29uc3QgaW50
IHJlc2VydmVkU3RvcHMgPSAzOwotICAgIFZlY3RvcjxDR0Zsb2F0LCByZXNlcnZlZFN0b3BzPiBs
b2NhdGlvbnM7Ci0gICAgbG9jYXRpb25zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVtU3RvcHMp
OworICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IGRvbWFpblsyXSA9IHsgMCwgMSB9OwogCi0gICAg
Ly8gSWYgYWxsIHRoZSBzdG9wcyBhcmUgYm91bmRlZCBzUkdCIChhcyByZXByZXNlbnRlZCBieSB0
aGUgY29sb3IgaGF2aW5nIHRoZSBjb2xvciBzcGFjZQotICAgIC8vIENvbG9yU3BhY2U6OlNSR0Ip
LCBpdCBpcyBmYXN0ZXIgdG8gY3JlYXRlIGEgZ3JhZGllbnQgdXNpbmcgY29tcG9uZW50cyB0aGFu
IENHQ29sb3JzLgotICAgIGlmIChoYXNPbmx5Qm91bmRlZFNSR0JDb2xvclN0b3BzKCkpIHsKLSAg
ICAgICAgVmVjdG9yPENHRmxvYXQsIDQgKiByZXNlcnZlZFN0b3BzPiBjb2xvckNvbXBvbmVudHM7
Ci0gICAgICAgIGNvbG9yQ29tcG9uZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG51bVN0b3Bz
ICogNCk7CisgICAgLy8gRklYTUU6IFdpbGwgbmVlZCBkaWZmZXJlbnQgcmFuZ2VzIGZvciBlYWNo
IGNvbG9yIG1vZGVsLgorICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IGRlZmF1bHRSYW5nZVs4XSA9
IHsgMCwgMSwgMCwgMSwgMCwgMSwgMCwgMSB9OwogCi0gICAgICAgIGZvciAoY29uc3QgYXV0byYg
c3RvcCA6IG1fc3RvcHMpIHsKLSAgICAgICAgICAgIGF1dG8gW2NvbG9yU3BhY2UsIGNvbXBvbmVu
dHNdID0gc3RvcC5jb2xvci5jb2xvclNwYWNlQW5kQ29tcG9uZW50cygpOwotICAgICAgICAgICAg
YXV0byBbciwgZywgYiwgYV0gPSBjb21wb25lbnRzOwotICAgICAgICAgICAgY29sb3JDb21wb25l
bnRzLnVuY2hlY2tlZEFwcGVuZChyKTsKLSAgICAgICAgICAgIGNvbG9yQ29tcG9uZW50cy51bmNo
ZWNrZWRBcHBlbmQoZyk7Ci0gICAgICAgICAgICBjb2xvckNvbXBvbmVudHMudW5jaGVja2VkQXBw
ZW5kKGIpOwotICAgICAgICAgICAgY29sb3JDb21wb25lbnRzLnVuY2hlY2tlZEFwcGVuZChhKTsK
KyAgICAvLyBGSVhNRTogRml4IGNpcmN1bGFyIHJlZi4KKyAgICBjdXN0b21DR0dyYWRpZW50LnJl
ZigpOworICAgIHJldHVybiBhZG9wdENGKENHRnVuY3Rpb25DcmVhdGUoJmN1c3RvbUNHR3JhZGll
bnQsIDEsIGRvbWFpbiwgNCwgZGVmYXVsdFJhbmdlLCAmY2FsbGJhY2tzKSk7Cit9CiAKLSAgICAg
ICAgICAgIGxvY2F0aW9ucy51bmNoZWNrZWRBcHBlbmQoc3RvcC5vZmZzZXQpOwotICAgICAgICB9
CitSZXRhaW5QdHI8Q0dGdW5jdGlvblJlZj4gQ3VzdG9tQ0dHcmFkaWVudDo6aW5pdGlhbGl6ZUZ1
bmN0aW9uKCkKK3sKKyAgICByZXR1cm4gY3JlYXRlQ0dGdW5jdGlvbigqdGhpcyk7Cit9CiAKLSAg
ICAgICAgbV9ncmFkaWVudCA9IGFkb3B0Q0YoQ0dHcmFkaWVudENyZWF0ZVdpdGhDb2xvckNvbXBv
bmVudHMoc1JHQkNvbG9yU3BhY2VSZWYoKSwgY29sb3JDb21wb25lbnRzLmRhdGEoKSwgbG9jYXRp
b25zLmRhdGEoKSwgbnVtU3RvcHMpKTsKLSAgICAgICAgcmV0dXJuOworQ0dDb2xvclNwYWNlUmVm
IEN1c3RvbUNHR3JhZGllbnQ6OmNvbG9yU3BhY2UoKSBjb25zdAoreworICAgIHJldHVybiBleHRl
bmRlZFNSR0JDb2xvclNwYWNlUmVmKCk7Cit9CisKK3ZvaWQgR3JhZGllbnQ6OmNyZWF0ZUN1c3Rv
bUNHR3JhZGllbnQoKQoreworICAgIGF1dG8gdG90YWxOdW1iZXJPZlN0b3BzID0gbV9zdG9wcy5z
aXplKCk7CisgICAgYm9vbCBoYXNaZXJvID0gZmFsc2U7CisgICAgYm9vbCBoYXNPbmUgPSBmYWxz
ZTsKKyAgICBib29sIGlzU29ydGVkID0gdHJ1ZTsKKworICAgIGZsb2F0IHByZXZpb3VzT2Zmc2V0
ID0gLUlORklOSVRZOworCisgICAgZm9yIChjb25zdCBhdXRvJiBzdG9wIDogbV9zdG9wcykgewor
ICAgICAgICBhdXRvIG9mZnNldCA9IHN0b3Aub2Zmc2V0OworICAgICAgICBBU1NFUlQob2Zmc2V0
ID49IDApOworICAgICAgICBBU1NFUlQob2Zmc2V0IDw9IDEpOworICAgICAgICAKKyAgICAgICAg
aWYgKG9mZnNldCA9PSAwKQorICAgICAgICAgICAgaGFzWmVybyA9IHRydWU7CisgICAgICAgIGVs
c2UgaWYgKG9mZnNldCA9PSAxKQorICAgICAgICAgICAgaGFzT25lID0gdHJ1ZTsKKworICAgICAg
ICBpZiAocHJldmlvdXNPZmZzZXQgPiBvZmZzZXQpCisgICAgICAgICAgICBpc1NvcnRlZCA9IGZh
bHNlOworCisgICAgICAgIHByZXZpb3VzT2Zmc2V0ID0gb2Zmc2V0OwogICAgIH0KIAotICAgIGF1
dG8gY29sb3JzQXJyYXkgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlKDAsIG1fc3RvcHMu
c2l6ZSgpLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisgICAgaWYgKCFoYXNaZXJvKQorICAg
ICAgICB0b3RhbE51bWJlck9mU3RvcHMrKzsKKworICAgIGlmICghaGFzT25lKQorICAgICAgICB0
b3RhbE51bWJlck9mU3RvcHMrKzsKKworICAgIGlmICghaXNTb3J0ZWQpCisgICAgICAgIHNvcnRT
dG9wcygpOworCisgICAgVmVjdG9yPENvbG9yQ29udmVydGVkVG9JbnRlcnBvbGF0aW9uQ29sb3JT
cGFjZVN0b3A+IGNvbnZlcnRlZFN0b3BzOworICAgIGNvbnZlcnRlZFN0b3BzLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkodG90YWxOdW1iZXJPZlN0b3BzKTsKKworICAgIGlmICghaGFzWmVybykgewor
ICAgICAgICBjb252ZXJ0ZWRTdG9wcy51bmNoZWNrZWRBcHBlbmQoeworICAgICAgICAgICAgLm9m
ZnNldCA9IDAuMGYsCisgICAgICAgICAgICAuY29sb3JDb21wb25lbnRzID0geyAwLjBmLCAwLjBm
LCAwLjBmLCAwLjBmIH0KKyAgICAgICAgfSk7CisgICAgfQorCiAgICAgZm9yIChjb25zdCBhdXRv
JiBzdG9wIDogbV9zdG9wcykgewotICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoY29sb3JzQXJy
YXkuZ2V0KCksIGNhY2hlZENHQ29sb3Ioc3RvcC5jb2xvcikuZ2V0KCkpOwotICAgICAgICBsb2Nh
dGlvbnMudW5jaGVja2VkQXBwZW5kKHN0b3Aub2Zmc2V0KTsKKyAgICAgICAgY29udmVydGVkU3Rv
cHMudW5jaGVja2VkQXBwZW5kKHsKKyAgICAgICAgICAgIC5vZmZzZXQgPSBzdG9wLm9mZnNldCwK
KyAgICAgICAgICAgIC5jb2xvckNvbXBvbmVudHMgPSBzdG9wLmNvbG9yLnRvQ29sb3JDb21wb25l
bnRzSW5Db2xvclNwYWNlKENvbG9yU3BhY2U6OlNSR0IpIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBh
Y3R1YWxseSBiZSB0aGUgY29sb3Igc3BhY2Ugd2Ugd2lsbCBiZSBpbnRlcnBvbGF0aW5nIGluLiBT
aG91bGQgcHJvYmFibHkgYWxzbyBpbnRlcnBvbGF0ZSBpbiB1bmNsYW1wZWQgU1JHQiB3aGVuIG5l
ZWRlZC4KKyAgICAgICAgfSk7CiAgICAgfQogCi0jaWYgSEFWRShDT1JFX0dSQVBISUNTX0VYVEVO
REVEX1NSR0JfQ09MT1JfU1BBQ0UpCi0gICAgYXV0byBleHRlbmRlZENvbG9yc0dyYWRpZW50Q29s
b3JTcGFjZSA9IGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKTsKLSNlbHNlCi0gICAgYXV0byBl
eHRlbmRlZENvbG9yc0dyYWRpZW50Q29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0j
ZW5kaWYKKyAgICBpZiAoIWhhc1plcm8pCisgICAgICAgIGNvbnZlcnRlZFN0b3BzWzBdLmNvbG9y
Q29tcG9uZW50cyA9IGNvbnZlcnRlZFN0b3BzWzFdLmNvbG9yQ29tcG9uZW50czsKIAotICAgIG1f
Z3JhZGllbnQgPSBhZG9wdENGKENHR3JhZGllbnRDcmVhdGVXaXRoQ29sb3JzKGV4dGVuZGVkQ29s
b3JzR3JhZGllbnRDb2xvclNwYWNlLCBjb2xvcnNBcnJheS5nZXQoKSwgbG9jYXRpb25zLmRhdGEo
KSkpOworICAgIGlmICghaGFzT25lKSB7CisgICAgICAgIGNvbnZlcnRlZFN0b3BzLnVuY2hlY2tl
ZEFwcGVuZCh7CisgICAgICAgICAgICAub2Zmc2V0ID0gMS4wZiwKKyAgICAgICAgICAgIC5jb2xv
ckNvbXBvbmVudHMgPSBjb252ZXJ0ZWRTdG9wcy5sYXN0KCkuY29sb3JDb21wb25lbnRzCisgICAg
ICAgIH0pOworICAgIH0KKworICAgIG1fZ3JhZGllbnQgPSBDdXN0b21DR0dyYWRpZW50OjpjcmVh
dGUobV9jb2xvckludGVycG9sYXRpb25NZXRob2QsIFdURk1vdmUoY29udmVydGVkU3RvcHMpKTsK
IH0KIAorc3RhdGljIHZvaWQgZHJhd0xpbmVhckdyYWRpZW50KENHQ29udGV4dFJlZiBwbGF0Zm9y
bUNvbnRleHQsIEN1c3RvbUNHR3JhZGllbnQmIGdyYWRpZW50LCBDR1BvaW50IHN0YXJ0UG9pbnQs
IENHUG9pbnQgZW5kUG9pbnQsIENHR3JhZGllbnREcmF3aW5nT3B0aW9ucyBvcHRpb25zKQorewor
ICAgIGJvb2wgc3RhcnRFeHRlbmQgPSAob3B0aW9ucyAmIGtDR0dyYWRpZW50RHJhd3NCZWZvcmVT
dGFydExvY2F0aW9uKSAhPSAwOworICAgIGJvb2wgZW5kRXh0ZW5kID0gKG9wdGlvbnMgJiBrQ0dH
cmFkaWVudERyYXdzQWZ0ZXJFbmRMb2NhdGlvbikgIT0gMDsKKworICAgIGF1dG8gc2hhZGluZyA9
IGFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoZ3JhZGllbnQuY29sb3JTcGFjZSgpLCBzdGFy
dFBvaW50LCBlbmRQb2ludCwgZ3JhZGllbnQuZnVuY3Rpb24oKSwgc3RhcnRFeHRlbmQsIGVuZEV4
dGVuZCkpOworICAgIENHQ29udGV4dERyYXdTaGFkaW5nKHBsYXRmb3JtQ29udGV4dCwgc2hhZGlu
Zy5nZXQoKSk7Cit9CisKK3N0YXRpYyB2b2lkIGRyYXdSYWRpYWxHcmFkaWVudChDR0NvbnRleHRS
ZWYgcGxhdGZvcm1Db250ZXh0LCBDdXN0b21DR0dyYWRpZW50JiBncmFkaWVudCwgQ0dQb2ludCBz
dGFydENlbnRlciwgQ0dGbG9hdCBzdGFydFJhZGl1cywgQ0dQb2ludCBlbmRDZW50ZXIsIENHRmxv
YXQgZW5kUmFkaXVzLCBDR0dyYWRpZW50RHJhd2luZ09wdGlvbnMgb3B0aW9ucykKK3sKKyAgICBi
b29sIHN0YXJ0RXh0ZW5kID0gKG9wdGlvbnMgJiBrQ0dHcmFkaWVudERyYXdzQmVmb3JlU3RhcnRM
b2NhdGlvbikgIT0gMDsKKyAgICBib29sIGVuZEV4dGVuZCA9IChvcHRpb25zICYga0NHR3JhZGll
bnREcmF3c0FmdGVyRW5kTG9jYXRpb24pICE9IDA7CisKKyAgICBhdXRvIHNoYWRpbmcgPSBhZG9w
dENGKENHU2hhZGluZ0NyZWF0ZVJhZGlhbChncmFkaWVudC5jb2xvclNwYWNlKCksIHN0YXJ0Q2Vu
dGVyLCBzdGFydFJhZGl1cywgZW5kQ2VudGVyLCBlbmRSYWRpdXMsIGdyYWRpZW50LmZ1bmN0aW9u
KCksIHN0YXJ0RXh0ZW5kLCBlbmRFeHRlbmQpKTsKKyAgICBDR0NvbnRleHREcmF3U2hhZGluZyhw
bGF0Zm9ybUNvbnRleHQsIHNoYWRpbmcuZ2V0KCkpOworfQorCitzdGF0aWMgdm9pZCBkcmF3Q29u
aWNHcmFkaWVudChDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250ZXh0LCBDdXN0b21DR0dyYWRpZW50
JiBncmFkaWVudCwgQ0dQb2ludCBjZW50ZXIsIENHRmxvYXQgYW5nbGUpCit7CisgICAgYXV0byBz
aGFkaW5nID0gYWRvcHRDRihDR1NoYWRpbmdDcmVhdGVDb25pYyhncmFkaWVudC5jb2xvclNwYWNl
KCksIGNlbnRlciwgYW5nbGUsIGdyYWRpZW50LmZ1bmN0aW9uKCkpKTsKKyAgICBDR0NvbnRleHRE
cmF3U2hhZGluZyhwbGF0Zm9ybUNvbnRleHQsIHNoYWRpbmcuZ2V0KCkpOworfQorCiB2b2lkIEdy
YWRpZW50OjpmaWxsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBy
ZWN0KQogewogICAgIGNvbnRleHQuY2xpcChyZWN0KTsKQEAgLTEwOCwxMCArMjE3LDggQEAgdm9p
ZCBHcmFkaWVudDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogCiB2b2lkIEdyYWRp
ZW50OjpwYWludChDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250ZXh0KQogewotICAgIENHR3JhZGll
bnREcmF3aW5nT3B0aW9ucyBleHRlbmRPcHRpb25zID0ga0NHR3JhZGllbnREcmF3c0JlZm9yZVN0
YXJ0TG9jYXRpb24gfCBrQ0dHcmFkaWVudERyYXdzQWZ0ZXJFbmRMb2NhdGlvbjsKLQogICAgIGlm
ICghbV9ncmFkaWVudCkKLSAgICAgICAgY3JlYXRlQ0dHcmFkaWVudCgpOworICAgICAgICBjcmVh
dGVDdXN0b21DR0dyYWRpZW50KCk7CiAKICAgICBXVEY6OnN3aXRjaE9uKG1fZGF0YSwKICAgICAg
ICAgWyZdIChjb25zdCBMaW5lYXJEYXRhJiBkYXRhKSB7CkBAIC0xMTksNyArMjI2LDcgQEAgdm9p
ZCBHcmFkaWVudDo6cGFpbnQoQ0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dCkKICAgICAgICAg
ICAgIGNhc2UgR3JhZGllbnRTcHJlYWRNZXRob2Q6OlJlcGVhdDoKICAgICAgICAgICAgIGNhc2Ug
R3JhZGllbnRTcHJlYWRNZXRob2Q6OlJlZmxlY3Q6IHsKICAgICAgICAgICAgICAgICBDR0NvbnRl
eHRTdGF0ZVNhdmVyIHNhdmVTdGF0ZShwbGF0Zm9ybUNvbnRleHQpOwotICAgICAgICAgICAgICAg
IGV4dGVuZE9wdGlvbnMgPSAwOworICAgICAgICAgICAgICAgIENHR3JhZGllbnREcmF3aW5nT3B0
aW9ucyBleHRlbmRPcHRpb25zID0gMDsKIAogICAgICAgICAgICAgICAgIEZsb2F0UG9pbnQgZ3Jh
ZGllbnRWZWN0b3JOb3JtKGRhdGEucG9pbnQxIC0gZGF0YS5wb2ludDApOwogICAgICAgICAgICAg
ICAgIGdyYWRpZW50VmVjdG9yTm9ybS5ub3JtYWxpemUoKTsKQEAgLTEzOSwxMSArMjQ2LDExIEBA
IHZvaWQgR3JhZGllbnQ6OnBhaW50KENHQ29udGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQpCiAgICAg
ICAgICAgICAgICAgaWYgKENHRkFicyhkeCkgPCBwaXhlbFNpemUpCiAgICAgICAgICAgICAgICAg
ICAgIGR4ID0gZHggPCAwID8gLXBpeGVsU2l6ZSA6IHBpeGVsU2l6ZTsKIAotICAgICAgICAgICAg
ICAgIGF1dG8gZHJhd0xpbmVhckdyYWRpZW50ID0gWyZdKENHRmxvYXQgc3RhcnQsIENHRmxvYXQg
ZW5kLCBib29sIGZsaXApIHsKKyAgICAgICAgICAgICAgICBhdXRvIGRyYXcgPSBbJl0oQ0dGbG9h
dCBzdGFydCwgQ0dGbG9hdCBlbmQsIGJvb2wgZmxpcCkgewogICAgICAgICAgICAgICAgICAgICBD
R1BvaW50IGxlZnQgPSBDR1BvaW50TWFrZShmbGlwID8gZW5kIDogc3RhcnQsIDApOwogICAgICAg
ICAgICAgICAgICAgICBDR1BvaW50IHJpZ2h0ID0gQ0dQb2ludE1ha2UoZmxpcCA/IHN0YXJ0IDog
ZW5kLCAwKTsKIAotICAgICAgICAgICAgICAgICAgICBDR0NvbnRleHREcmF3TGluZWFyR3JhZGll
bnQocGxhdGZvcm1Db250ZXh0LCBtX2dyYWRpZW50LmdldCgpLCBsZWZ0LCByaWdodCwgZXh0ZW5k
T3B0aW9ucyk7CisgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lYXJHcmFkaWVudChwbGF0Zm9y
bUNvbnRleHQsICptX2dyYWRpZW50LCBsZWZ0LCByaWdodCwgZXh0ZW5kT3B0aW9ucyk7CiAgICAg
ICAgICAgICAgICAgfTsKIAogICAgICAgICAgICAgICAgIGF1dG8gaXNMZWZ0T2YgPSBbXShDR0Zs
b2F0IHN0YXJ0LCBDR0Zsb2F0IGVuZCwgQ0dSZWN0IGJvdW5kaW5nQm94KSAtPiBib29sIHsKQEAg
LTE3MCw3ICsyNzcsNyBAQCB2b2lkIEdyYWRpZW50OjpwYWludChDR0NvbnRleHRSZWYgcGxhdGZv
cm1Db250ZXh0KQogCiAgICAgICAgICAgICAgICAgLy8gRHJhdyBncmFkaWVudCBmb3J3YXJkIHRp
bGwgdGhlIHBvaW50cyBhcmUgb3V0c2lkZSBib3VuZGluZ0JveC4KICAgICAgICAgICAgICAgICBm
b3IgKDsgaXNJbnRlcnNlY3Rpbmcoc3RhcnQsIHN0YXJ0ICsgZHgsIGJvdW5kaW5nQm94KTsgc3Rh
cnQgKz0gZHgpIHsKLSAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVhckdyYWRpZW50KHN0YXJ0
LCBzdGFydCArIGR4LCBmbGlwKTsKKyAgICAgICAgICAgICAgICAgICAgZHJhdyhzdGFydCwgc3Rh
cnQgKyBkeCwgZmxpcCk7CiAgICAgICAgICAgICAgICAgICAgIGZsaXAgPSAhZmxpcCAmJiBtX3Nw
cmVhZE1ldGhvZCA9PSBHcmFkaWVudFNwcmVhZE1ldGhvZDo6UmVmbGVjdDsKICAgICAgICAgICAg
ICAgICB9CiAKQEAgLTE4NiwxNSArMjkzLDE2IEBAIHZvaWQgR3JhZGllbnQ6OnBhaW50KENHQ29u
dGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQpCiAKICAgICAgICAgICAgICAgICAvLyBEcmF3IGdyYWRp
ZW50IGJhY2t3YXJkIHRpbGwgdGhlIHBvaW50cyBhcmUgb3V0c2lkZSBib3VuZGluZ0JveC4KICAg
ICAgICAgICAgICAgICBmb3IgKDsgaXNJbnRlcnNlY3RpbmcoZW5kLCBlbmQgLSBkeCwgYm91bmRp
bmdCb3gpOyBlbmQgLT0gZHgpIHsKLSAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVhckdyYWRp
ZW50KGVuZCAtIGR4LCBlbmQsIGZsaXApOworICAgICAgICAgICAgICAgICAgICBkcmF3KGVuZCAt
IGR4LCBlbmQsIGZsaXApOwogICAgICAgICAgICAgICAgICAgICBmbGlwID0gIWZsaXAgJiYgbV9z
cHJlYWRNZXRob2QgPT0gR3JhZGllbnRTcHJlYWRNZXRob2Q6OlJlZmxlY3Q7CiAgICAgICAgICAg
ICAgICAgfQotCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBjYXNlIEdyYWRpZW50U3ByZWFkTWV0aG9kOjpQYWQ6Ci0gICAgICAgICAgICAgICAgQ0dD
b250ZXh0RHJhd0xpbmVhckdyYWRpZW50KHBsYXRmb3JtQ29udGV4dCwgbV9ncmFkaWVudC5nZXQo
KSwgZGF0YS5wb2ludDAsIGRhdGEucG9pbnQxLCBleHRlbmRPcHRpb25zKTsKKyAgICAgICAgICAg
IGNhc2UgR3JhZGllbnRTcHJlYWRNZXRob2Q6OlBhZDogeworICAgICAgICAgICAgICAgIENHR3Jh
ZGllbnREcmF3aW5nT3B0aW9ucyBleHRlbmRPcHRpb25zID0ga0NHR3JhZGllbnREcmF3c0JlZm9y
ZVN0YXJ0TG9jYXRpb24gfCBrQ0dHcmFkaWVudERyYXdzQWZ0ZXJFbmRMb2NhdGlvbjsKKyAgICAg
ICAgICAgICAgICBkcmF3TGluZWFyR3JhZGllbnQocGxhdGZvcm1Db250ZXh0LCAqbV9ncmFkaWVu
dCwgZGF0YS5wb2ludDAsIGRhdGEucG9pbnQxLCBleHRlbmRPcHRpb25zKTsKICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KICAgICAgICAgfSwKICAgICAgICAgWyZdIChjb25zdCBSYWRpYWxE
YXRhJiBkYXRhKSB7CiAgICAgICAgICAgICBib29sIG5lZWRTY2FsaW5nID0gZGF0YS5hc3BlY3RS
YXRpbyAhPSAxOwpAQCAtMjA4LDcgKzMxNiw4IEBAIHZvaWQgR3JhZGllbnQ6OnBhaW50KENHQ29u
dGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQpCiAgICAgICAgICAgICAgICAgQ0dDb250ZXh0VHJhbnNs
YXRlQ1RNKHBsYXRmb3JtQ29udGV4dCwgLWRhdGEucG9pbnQwLngoKSwgLWRhdGEucG9pbnQwLnko
KSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIENHQ29udGV4dERyYXdSYWRpYWxHcmFk
aWVudChwbGF0Zm9ybUNvbnRleHQsIG1fZ3JhZGllbnQuZ2V0KCksIGRhdGEucG9pbnQwLCBkYXRh
LnN0YXJ0UmFkaXVzLCBkYXRhLnBvaW50MSwgZGF0YS5lbmRSYWRpdXMsIGV4dGVuZE9wdGlvbnMp
OworICAgICAgICAgICAgQ0dHcmFkaWVudERyYXdpbmdPcHRpb25zIGV4dGVuZE9wdGlvbnMgPSBr
Q0dHcmFkaWVudERyYXdzQmVmb3JlU3RhcnRMb2NhdGlvbiB8IGtDR0dyYWRpZW50RHJhd3NBZnRl
ckVuZExvY2F0aW9uOworICAgICAgICAgICAgZHJhd1JhZGlhbEdyYWRpZW50KHBsYXRmb3JtQ29u
dGV4dCwgKm1fZ3JhZGllbnQsIGRhdGEucG9pbnQwLCBkYXRhLnN0YXJ0UmFkaXVzLCBkYXRhLnBv
aW50MSwgZGF0YS5lbmRSYWRpdXMsIGV4dGVuZE9wdGlvbnMpOwogCiAgICAgICAgICAgICBpZiAo
bmVlZFNjYWxpbmcpCiAgICAgICAgICAgICAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShwbGF0
Zm9ybUNvbnRleHQpOwpAQCAtMjIxLDcgKzMzMCw3IEBAIHZvaWQgR3JhZGllbnQ6OnBhaW50KENH
Q29udGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQpCiAgICAgICAgICAgICBDR0NvbnRleHRUcmFuc2xh
dGVDVE0ocGxhdGZvcm1Db250ZXh0LCBkYXRhLnBvaW50MC54KCksIGRhdGEucG9pbnQwLnkoKSk7
CiAgICAgICAgICAgICBDR0NvbnRleHRSb3RhdGVDVE0ocGxhdGZvcm1Db250ZXh0LCAoQ0dGbG9h
dCktTV9QSV8yKTsKICAgICAgICAgICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShwbGF0Zm9ybUNv
bnRleHQsIC1kYXRhLnBvaW50MC54KCksIC1kYXRhLnBvaW50MC55KCkpOwotICAgICAgICAgICAg
Q0dDb250ZXh0RHJhd0NvbmljR3JhZGllbnQocGxhdGZvcm1Db250ZXh0LCBtX2dyYWRpZW50Lmdl
dCgpLCBkYXRhLnBvaW50MCwgZGF0YS5hbmdsZVJhZGlhbnMpOworICAgICAgICAgICAgZHJhd0Nv
bmljR3JhZGllbnQocGxhdGZvcm1Db250ZXh0LCAqbV9ncmFkaWVudCwgZGF0YS5wb2ludDAsIGRh
dGEuYW5nbGVSYWRpYW5zKTsKICAgICAgICAgICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUocGxh
dGZvcm1Db250ZXh0KTsKICNlbHNlCiAgICAgICAgICAgICBVTlVTRURfUEFSQU0oZGF0YSk7Cg==
</data>
<flag name="commit-queue"
          id="473228"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447559</attachid>
            <date>2021-12-19 13:55:40 -0800</date>
            <delta_ts>2021-12-19 15:38:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234492-20211219135539.patch</filename>
            <type>text/plain</type>
            <size>18549</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDIxLTEyLTE5ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgQ0dTaGFkaW5nUmVmIGJhc2Vk
IGltcGxlbWVudGF0aW9uIG9mIEdyYWRpZW50IGFzIHN0ZXBwaW5nIHN0b25lIHRvd2FyZCBwcmVt
dWx0aXBsaWVkIGludGVycG9sYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNDQ5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtXSVBdIFRoaXMgY29tcGxldGVseSByZXBsYWNlcyB0aGUgQ0dHcmFk
aWVudFJlZiBpbXBsZW1lbnRhdGlvbi4gV2UgbmVlZCB0byBtYWtlIHRoaXMKKyAgICAgICAgY29u
ZGl0aW9uYWwgZm9yIGl0IHRvIGJlIHJlYWwuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvckNvbXBvbmVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yQ29tcG9uZW50czo6
c2l6ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkN1c3RvbUNHR3JhZGllbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDdXN0b21DR0dyYWRpZW50OjpmdW5jdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDdXN0b21DR0dyYWRpZW50Ojpjb2xvckludGVycG9sYXRpb25NZXRob2QgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VzdG9tQ0dHcmFkaWVudDo6c3RvcHMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q3VzdG9tQ0dHcmFkaWVudDo6Q3VzdG9tQ0dHcmFkaWVudCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1
bnByZW11bHRpcGxpZWRTaGFkaW5nRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Q0dGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21DR0dyYWRpZW50Ojppbml0aWFs
aXplRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tQ0dHcmFkaWVudDo6Y29sb3JT
cGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudDo6Y3JlYXRlQ3VzdG9tQ0dH
cmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpkcmF3TGluZWFyR3JhZGllbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6ZHJhd1JhZGlhbEdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdD
b25pY0dyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50OjpwYWludCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFkaWVudDo6ZmlsbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVu
dDo6aGFzT25seUJvdW5kZWRTUkdCQ29sb3JTdG9wcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpHcmFkaWVudDo6Y3JlYXRlQ0dHcmFkaWVudCk6IERlbGV0ZWQuCisKIDIwMjEt
MTItMTggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEhhc2ggdGFi
bGVzLCByZWFkL3dyaXRlLCBhbmQgaGVhcCBtZW1vcnkgYXJlIHVzZWQgdW5uZWNlc3NhcmlseSwg
d2hpY2ggbWF5IGh1cnQgcGVyZm9ybWFuY2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNp
b24gMjg3MjQ3KQorKysgU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDEzIEBACisyMDIxLTEyLTE5ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgQ0dTaGFkaW5nUmVmIGJhc2VkIGltcGxlbWVudGF0aW9uIG9m
IEdyYWRpZW50IGFzIHN0ZXBwaW5nIHN0b25lIHRvd2FyZCBwcmVtdWx0aXBsaWVkIGludGVycG9s
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NDQ5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaDoKKyAgICAgICAgQWRkIENHU2hhZGluZ1JlZiBT
UEkgZm9yIGNyZWF0aW5nIGNvbmljIHNoYWRpbmdzLgorCiAyMDIxLTEyLTE2ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cmV2ZXJ0aW5nIHIyODcwNTYuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9D
b3JlR3JhcGhpY3NTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9jZy9Db3JlR3JhcGhpY3NTUEkuaAkocmV2aXNpb24gMjg3MjMzKQorKysgU291cmNlL1dlYkNv
cmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTQy
LDYgKzQyLDcgQEAKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dGb250Q2FjaGUuaD4KICNpbmNs
dWRlIDxDb3JlR3JhcGhpY3MvQ0dQYXRoUHJpdmF0ZS5oPgogI2luY2x1ZGUgPENvcmVHcmFwaGlj
cy9Db3JlR3JhcGhpY3NQcml2YXRlLmg+CisjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHU2hhZGlu
Z1ByaXZhdGUuaD4KICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dTdHlsZVByaXZhdGUuaD4KIAog
I2lmIFBMQVRGT1JNKE1BQykKQEAgLTMyMyw2ICszMjQsNyBAQCB2b2lkIENHQ29udGV4dFNldFN0
eWxlKENHQ29udGV4dFJlZiwgQ0dTdHlsZVJlZik7CiB2b2lkIENHQ29udGV4dERyYXdDb25pY0dy
YWRpZW50KENHQ29udGV4dFJlZiwgQ0dHcmFkaWVudFJlZiwgQ0dQb2ludCBjZW50ZXIsIENHRmxv
YXQgYW5nbGUpOwogdm9pZCBDR1BhdGhBZGRVbmV2ZW5Db3JuZXJzUm91bmRlZFJlY3QoQ0dNdXRh
YmxlUGF0aFJlZiwgY29uc3QgQ0dBZmZpbmVUcmFuc2Zvcm0gKiwgQ0dSZWN0LCBjb25zdCBDR1Np
emUgY29ybmVyc1s0XSk7CiBib29sIENHRm9udFJlbmRlcmluZ0dldEZvbnRTbW9vdGhpbmdEaXNh
YmxlZCh2b2lkKTsKK0NHU2hhZGluZ1JlZiBDR1NoYWRpbmdDcmVhdGVDb25pYyhDR0NvbG9yU3Bh
Y2VSZWYsIENHUG9pbnQgY2VudGVyLCBDR0Zsb2F0IGFuZ2xlLCBDR0Z1bmN0aW9uUmVmKTsKIAog
I2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db2xvckNvbXBvbmVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbXBvbmVudHMuaAkocmV2aXNpb24gMjg3MjMzKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb21wb25lbnRzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDggQEAgc3RydWN0IENvbG9yQ29tcG9uZW50cyB7CiAg
ICAgdGVtcGxhdGU8c2l6ZV90IFN0YXJ0LCBzaXplX3QgRW5kPgogICAgIGNvbnN0ZXhwciBDb2xv
ckNvbXBvbmVudHM8VCwgRW5kIC0gU3RhcnQ+IHN1YnNldCgpIGNvbnN0OwogCisgICAgY29uc3Rl
eHByIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gU2l6ZTsgfQorCiAgICAgc3RkOjphcnJh
eTxULCBOPiBjb21wb25lbnRzOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhZGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFkaWVudC5oCShyZXZpc2lvbiAyODcyMzMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0
NSw3IEBACiAKICNpZiBVU0UoQ0cpCiB0eXBlZGVmIHN0cnVjdCBDR0NvbnRleHQqIENHQ29udGV4
dFJlZjsKK3R5cGVkZWYgc3RydWN0IENHRnVuY3Rpb24qIENHRnVuY3Rpb25SZWY7CiB0eXBlZGVm
IHN0cnVjdCBDR0dyYWRpZW50KiBDR0dyYWRpZW50UmVmOwogI2VuZGlmCiAKQEAgLTYyLDYgKzYz
LDQyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEdyYXBo
aWNzQ29udGV4dDsKIAorI2lmIFVTRShDRykKK3N0cnVjdCBDb2xvckNvbnZlcnRlZFRvSW50ZXJw
b2xhdGlvbkNvbG9yU3BhY2VTdG9wIHsKKyAgICBmbG9hdCBvZmZzZXQ7CisgICAgQ29sb3JDb21w
b25lbnRzPGZsb2F0LCA0PiBjb2xvckNvbXBvbmVudHM7Cit9OworCitjbGFzcyBDdXN0b21DR0dy
YWRpZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEN1c3RvbUNHR3JhZGllbnQ+IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEN1c3RvbUNHR3JhZGllbnQ+IGNyZWF0ZShDb2xvcklu
dGVycG9sYXRpb25NZXRob2QgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBWZWN0b3I8Q29sb3JD
b252ZXJ0ZWRUb0ludGVycG9sYXRpb25Db2xvclNwYWNlU3RvcD4gc3RvcHMpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDdXN0b21DR0dyYWRpZW50KGNvbG9ySW50ZXJwb2xh
dGlvbk1ldGhvZCwgV1RGTW92ZShzdG9wcykpKTsKKyAgICB9CisKKyAgICBDR0Z1bmN0aW9uUmVm
IGZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbi5nZXQoKTsgfQorICAgIENvbG9y
SW50ZXJwb2xhdGlvbk1ldGhvZCBjb2xvckludGVycG9sYXRpb25NZXRob2QoKSBjb25zdCB7IHJl
dHVybiBtX2NvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDsgfQorICAgIENHQ29sb3JTcGFjZVJlZiBj
b2xvclNwYWNlKCkgY29uc3Q7CisKKyAgICAvLyBGSVhNRTogVXNlIFNwYW4uCisgICAgY29uc3Qg
VmVjdG9yPENvbG9yQ29udmVydGVkVG9JbnRlcnBvbGF0aW9uQ29sb3JTcGFjZVN0b3A+JiBzdG9w
cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcHM7IH0KKworcHJpdmF0ZToKKyAgICBDdXN0b21DR0dy
YWRpZW50KENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBjb2xvckludGVycG9sYXRpb25NZXRob2Qs
IFZlY3RvcjxDb2xvckNvbnZlcnRlZFRvSW50ZXJwb2xhdGlvbkNvbG9yU3BhY2VTdG9wPiBzdG9w
cykKKyAgICAgICAgOiBtX2NvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCB7IGNvbG9ySW50ZXJwb2xh
dGlvbk1ldGhvZCB9CisgICAgICAgICwgbV9zdG9wcyB7IFdURk1vdmUoc3RvcHMpIH0KKyAgICAg
ICAgLCBtX2Z1bmN0aW9uIHsgaW5pdGlhbGl6ZUZ1bmN0aW9uKCkgfQorICAgIHsKKyAgICB9CisK
KyAgICBSZXRhaW5QdHI8Q0dGdW5jdGlvblJlZj4gaW5pdGlhbGl6ZUZ1bmN0aW9uKCk7CisKKyAg
ICBDb2xvckludGVycG9sYXRpb25NZXRob2QgbV9jb2xvckludGVycG9sYXRpb25NZXRob2Q7Cisg
ICAgVmVjdG9yPENvbG9yQ29udmVydGVkVG9JbnRlcnBvbGF0aW9uQ29sb3JTcGFjZVN0b3A+IG1f
c3RvcHM7CisgICAgUmV0YWluUHRyPENHRnVuY3Rpb25SZWY+IG1fZnVuY3Rpb247Cit9OworI2Vu
ZGlmCisKIGNsYXNzIEdyYWRpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8R3JhZGllbnQ+IHsKIHB1
YmxpYzoKICAgICBzdHJ1Y3QgQ29sb3JTdG9wIHsKQEAgLTE0NSw3ICsxODIsNyBAQCBjbGFzcyBH
cmFkaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYWRpZW50PiB7IChwcml2YXQKICAgICB2b2lk
IHN0b3BzQ2hhbmdlZCgpOwogCiAjaWYgVVNFKENHKQotICAgIHZvaWQgY3JlYXRlQ0dHcmFkaWVu
dCgpOworICAgIHZvaWQgY3JlYXRlQ3VzdG9tQ0dHcmFkaWVudCgpOwogICAgIGJvb2wgaGFzT25s
eUJvdW5kZWRTUkdCQ29sb3JTdG9wcygpIGNvbnN0OwogI2VuZGlmCiAKQEAgLTE1Nyw3ICsxOTQs
NyBAQCBjbGFzcyBHcmFkaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYWRpZW50PiB7IChwcml2
YXQKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fY2FjaGVkSGFzaCB7IDAgfTsKIAogI2lmIFVTRShD
RykKLSAgICBSZXRhaW5QdHI8Q0dHcmFkaWVudFJlZj4gbV9ncmFkaWVudDsKKyAgICBSZWZQdHI8
Q3VzdG9tQ0dHcmFkaWVudD4gbV9ncmFkaWVudDsKICNlbmRpZgogCiAjaWYgVVNFKERJUkVDVDJE
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
ZGllbnRDRy5jcHAJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw1MiArNDks
MTcwIEBAIGJvb2wgR3JhZGllbnQ6Omhhc09ubHlCb3VuZGVkU1JHQkNvbG9yU3RvcHMoKSBjb25z
dAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEdyYWRpZW50OjpjcmVhdGVDR0dyYWRpZW50
KCkKK3RlbXBsYXRlPHR5cGVuYW1lIEludGVycG9sYXRpb25TcGFjZT4KK3N0YXRpYyB2b2lkIHVu
cHJlbXVsdGlwbGllZFNoYWRpbmdGdW5jdGlvbih2b2lkKiBpbmZvLCBjb25zdCBDR0Zsb2F0KiBp
biwgQ0dGbG9hdCogb3V0KQogewotICAgIHNvcnRTdG9wcygpOworICAgIHVzaW5nIEludGVycG9s
YXRpb25TcGFjZUNvbG9yVHlwZSA9IHR5cGVuYW1lIEludGVycG9sYXRpb25TcGFjZTo6Q29sb3JU
eXBlOworICAgIHVzaW5nIE91dHB1dFNwYWNlQ29sb3JUeXBlID0gU1JHQkE8ZmxvYXQ+OwogCi0g
ICAgdW5zaWduZWQgbnVtU3RvcHMgPSBtX3N0b3BzLnNpemUoKTsKKyAgICBhdXRvKiBncmFkaWVu
dCA9IHN0YXRpY19jYXN0PEN1c3RvbUNHR3JhZGllbnQqPihpbmZvKTsKIAotICAgIGNvbnN0IGlu
dCByZXNlcnZlZFN0b3BzID0gMzsKLSAgICBWZWN0b3I8Q0dGbG9hdCwgcmVzZXJ2ZWRTdG9wcz4g
bG9jYXRpb25zOwotICAgIGxvY2F0aW9ucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG51bVN0b3Bz
KTsKKyAgICAvLyBDb21wdXRlIGNvbG9yIGF0IHBvc2l0aW9uICdwb3NpdGlvbicgYW5kIGFzc2ln
biBjb21wb25lbnRzIHRvIG91dFswIC0+IDNdLgogCi0gICAgLy8gSWYgYWxsIHRoZSBzdG9wcyBh
cmUgYm91bmRlZCBzUkdCIChhcyByZXByZXNlbnRlZCBieSB0aGUgY29sb3IgaGF2aW5nIHRoZSBj
b2xvciBzcGFjZQotICAgIC8vIENvbG9yU3BhY2U6OlNSR0IpLCBpdCBpcyBmYXN0ZXIgdG8gY3Jl
YXRlIGEgZ3JhZGllbnQgdXNpbmcgY29tcG9uZW50cyB0aGFuIENHQ29sb3JzLgotICAgIGlmICho
YXNPbmx5Qm91bmRlZFNSR0JDb2xvclN0b3BzKCkpIHsKLSAgICAgICAgVmVjdG9yPENHRmxvYXQs
IDQgKiByZXNlcnZlZFN0b3BzPiBjb2xvckNvbXBvbmVudHM7Ci0gICAgICAgIGNvbG9yQ29tcG9u
ZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG51bVN0b3BzICogNCk7CisgICAgZmxvYXQgcmVx
dWVzdGVkT2Zmc2V0ID0gaW5bMF07CiAKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzdG9wIDog
bV9zdG9wcykgewotICAgICAgICAgICAgYXV0byBbY29sb3JTcGFjZSwgY29tcG9uZW50c10gPSBz
dG9wLmNvbG9yLmNvbG9yU3BhY2VBbmRDb21wb25lbnRzKCk7Ci0gICAgICAgICAgICBhdXRvIFty
LCBnLCBiLCBhXSA9IGNvbXBvbmVudHM7Ci0gICAgICAgICAgICBjb2xvckNvbXBvbmVudHMudW5j
aGVja2VkQXBwZW5kKHIpOwotICAgICAgICAgICAgY29sb3JDb21wb25lbnRzLnVuY2hlY2tlZEFw
cGVuZChnKTsKLSAgICAgICAgICAgIGNvbG9yQ29tcG9uZW50cy51bmNoZWNrZWRBcHBlbmQoYik7
Ci0gICAgICAgICAgICBjb2xvckNvbXBvbmVudHMudW5jaGVja2VkQXBwZW5kKGEpOworICAgIC8v
IDEuIEZpbmQgc3RvcHMgdGhhdCBib3VuZCB0aGUgcmVxdWVzdGVkIG9mZnNldC4KKyAgICBhdXRv
IFtzdG9wMCwgc3RvcDFdID0gWyZdIHsKKyAgICAgICAgZm9yIChzaXplX3Qgc3RvcCA9IDE7IHN0
b3AgPCBncmFkaWVudC0+c3RvcHMoKS5zaXplKCk7ICsrc3RvcCkgeworICAgICAgICAgICAgaWYg
KHJlcXVlc3RlZE9mZnNldCA8PSBncmFkaWVudC0+c3RvcHMoKVtzdG9wXS5vZmZzZXQpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6dGllKGdyYWRpZW50LT5zdG9wcygpW3N0b3AgLSAxXSwg
Z3JhZGllbnQtPnN0b3BzKClbc3RvcF0pOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgfSgpOwogCi0gICAgICAgICAgICBsb2NhdGlvbnMudW5j
aGVja2VkQXBwZW5kKHN0b3Aub2Zmc2V0KTsKKyAgICAvLyAyLiBDb21wdXRlIHBlcmNlbnRhZ2Ug
b2Zmc2V0IGJldHdlZW4gdGhlIHR3byBzdG9wcy4KKyAgICBmbG9hdCBvZmZzZXQgPSAoc3RvcDEu
b2Zmc2V0ID09IHN0b3AwLm9mZnNldCkgPyAwLjBmIDogKHJlcXVlc3RlZE9mZnNldCAtIHN0b3Aw
Lm9mZnNldCkgLyAoc3RvcDEub2Zmc2V0IC0gc3RvcDAub2Zmc2V0KTsKKworICAgIC8vIDMuIElu
dGVycG9sYXRlIHRoZSB0d28gc3RvcHMnIGNvbG9ycyBieSB0aGUgY29tcHV0ZWQgb2Zmc2V0Lgor
ICAgIGF1dG8gaW50ZXJwb2xhdGVkQ29sb3JDb21wb25lbnRzID0gbWFwQ29sb3JDb21wb25lbnRz
KFsmXSAoYXV0byBjb21wb25lbnRGcm9tQ29sb3IwLCBhdXRvIGNvbXBvbmVudEZyb21Db2xvcjEp
IC0+IGZsb2F0IHsKKyAgICAgICAgcmV0dXJuIChjb21wb25lbnRGcm9tQ29sb3IwICogKDEuMGYg
LSBvZmZzZXQpKSArIChjb21wb25lbnRGcm9tQ29sb3IxICogb2Zmc2V0KTsKKyAgICB9LCBzdG9w
MC5jb2xvckNvbXBvbmVudHMsIHN0b3AxLmNvbG9yQ29tcG9uZW50cyk7CisKKyAgICAvLyA0LiBD
b252ZXJ0IHRvIHRoZSBvdXRwdXQgY29sb3JzcGFjZS4KKyAgICBhdXRvIGludGVycG9sYXRlZENv
bG9yID0gbWFrZUZyb21Db21wb25lbnRzPEludGVycG9sYXRpb25TcGFjZUNvbG9yVHlwZT4oaW50
ZXJwb2xhdGVkQ29sb3JDb21wb25lbnRzKTsKKyAgICBhdXRvIGludGVycG9sYXRlZENvbG9yQ29u
dmVydGVkVG9PdXRwdXRTcGFjZSA9IGFzQ29sb3JDb21wb25lbnRzKGNvbnZlcnRDb2xvcjxPdXRw
dXRTcGFjZUNvbG9yVHlwZT4oaW50ZXJwb2xhdGVkQ29sb3IpKTsKKworICAgIGZvciAoc2l6ZV90
IGNvbXBvbmVudEluZGV4ID0gMDsgY29tcG9uZW50SW5kZXggPCBpbnRlcnBvbGF0ZWRDb2xvckNv
bnZlcnRlZFRvT3V0cHV0U3BhY2Uuc2l6ZSgpOyArK2NvbXBvbmVudEluZGV4KQorICAgICAgICBv
dXRbY29tcG9uZW50SW5kZXhdID0gaW50ZXJwb2xhdGVkQ29sb3JDb252ZXJ0ZWRUb091dHB1dFNw
YWNlW2NvbXBvbmVudEluZGV4XTsKK30KKworc3RhdGljIFJldGFpblB0cjxDR0Z1bmN0aW9uUmVm
PiBjcmVhdGVDR0Z1bmN0aW9uKEN1c3RvbUNHR3JhZGllbnQmIGN1c3RvbUNHR3JhZGllbnQpCit7
CisgICAgYXV0byBldmFsdWF0b3IgPSBbJl0geworICAgICAgICBhdXRvIG1ldGhvZCA9IGN1c3Rv
bUNHR3JhZGllbnQuY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kKCk7CisgICAgICAgIHJldHVybiBX
VEY6OnN3aXRjaE9uKG1ldGhvZC5jb2xvclNwYWNlLAorICAgICAgICAgICAgW10gKGF1dG8mIC8q
Y29sb3JTcGFjZSovKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICZ1bnByZW11bHRpcGxpZWRT
aGFkaW5nRnVuY3Rpb248Q29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCPjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgKTsKKyAgICB9OworCisgICAgY29uc3QgQ0dGdW5jdGlvbkNhbGxiYWNr
cyBjYWxsYmFja3MgPSB7CisgICAgICAgIC52ZXJzaW9uID0gMCwKKyAgICAgICAgLmV2YWx1YXRl
ID0gZXZhbHVhdG9yKCksCisgICAgICAgIC5yZWxlYXNlSW5mbyA9IFtdICh2b2lkKiBpbmZvKSB7
CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxDdXN0b21DR0dyYWRpZW50Kj4oaW5mbyktPmRlcmVm
KCk7CiAgICAgICAgIH0KKyAgICB9OwogCi0gICAgICAgIG1fZ3JhZGllbnQgPSBhZG9wdENGKENH
R3JhZGllbnRDcmVhdGVXaXRoQ29sb3JDb21wb25lbnRzKHNSR0JDb2xvclNwYWNlUmVmKCksIGNv
bG9yQ29tcG9uZW50cy5kYXRhKCksIGxvY2F0aW9ucy5kYXRhKCksIG51bVN0b3BzKSk7Ci0gICAg
ICAgIHJldHVybjsKKyAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBkb21haW5bMl0gPSB7IDAsIDEg
fTsKKworICAgIC8vIEZJWE1FOiBXaWxsIG5lZWQgZGlmZmVyZW50IHJhbmdlcyBmb3IgZWFjaCBj
b2xvciBtb2RlbC4KKyAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBkZWZhdWx0UmFuZ2VbOF0gPSB7
IDAsIDEsIDAsIDEsIDAsIDEsIDAsIDEgfTsKKworICAgIC8vIEZJWE1FOiBGaXggY2lyY3VsYXIg
cmVmLgorICAgIGN1c3RvbUNHR3JhZGllbnQucmVmKCk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0dG
dW5jdGlvbkNyZWF0ZSgmY3VzdG9tQ0dHcmFkaWVudCwgMSwgZG9tYWluLCA0LCBkZWZhdWx0UmFu
Z2UsICZjYWxsYmFja3MpKTsKK30KKworUmV0YWluUHRyPENHRnVuY3Rpb25SZWY+IEN1c3RvbUNH
R3JhZGllbnQ6OmluaXRpYWxpemVGdW5jdGlvbigpCit7CisgICAgcmV0dXJuIGNyZWF0ZUNHRnVu
Y3Rpb24oKnRoaXMpOworfQorCitDR0NvbG9yU3BhY2VSZWYgQ3VzdG9tQ0dHcmFkaWVudDo6Y29s
b3JTcGFjZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYo
KTsKK30KKwordm9pZCBHcmFkaWVudDo6Y3JlYXRlQ3VzdG9tQ0dHcmFkaWVudCgpCit7CisgICAg
YXV0byB0b3RhbE51bWJlck9mU3RvcHMgPSBtX3N0b3BzLnNpemUoKTsKKyAgICBib29sIGhhc1pl
cm8gPSBmYWxzZTsKKyAgICBib29sIGhhc09uZSA9IGZhbHNlOworICAgIGJvb2wgaXNTb3J0ZWQg
PSB0cnVlOworCisgICAgZmxvYXQgcHJldmlvdXNPZmZzZXQgPSAtSU5GSU5JVFk7CisKKyAgICBm
b3IgKGNvbnN0IGF1dG8mIHN0b3AgOiBtX3N0b3BzKSB7CisgICAgICAgIGF1dG8gb2Zmc2V0ID0g
c3RvcC5vZmZzZXQ7CisgICAgICAgIEFTU0VSVChvZmZzZXQgPj0gMCk7CisgICAgICAgIEFTU0VS
VChvZmZzZXQgPD0gMSk7CisgICAgICAgIAorICAgICAgICBpZiAob2Zmc2V0ID09IDApCisgICAg
ICAgICAgICBoYXNaZXJvID0gdHJ1ZTsKKyAgICAgICAgZWxzZSBpZiAob2Zmc2V0ID09IDEpCisg
ICAgICAgICAgICBoYXNPbmUgPSB0cnVlOworCisgICAgICAgIGlmIChwcmV2aW91c09mZnNldCA+
IG9mZnNldCkKKyAgICAgICAgICAgIGlzU29ydGVkID0gZmFsc2U7CisKKyAgICAgICAgcHJldmlv
dXNPZmZzZXQgPSBvZmZzZXQ7CiAgICAgfQogCi0gICAgYXV0byBjb2xvcnNBcnJheSA9IGFkb3B0
Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwgbV9zdG9wcy5zaXplKCksICZrQ0ZUeXBlQXJyYXlD
YWxsQmFja3MpKTsKKyAgICBpZiAoIWhhc1plcm8pCisgICAgICAgIHRvdGFsTnVtYmVyT2ZTdG9w
cysrOworCisgICAgaWYgKCFoYXNPbmUpCisgICAgICAgIHRvdGFsTnVtYmVyT2ZTdG9wcysrOwor
CisgICAgaWYgKCFpc1NvcnRlZCkKKyAgICAgICAgc29ydFN0b3BzKCk7CisKKyAgICBWZWN0b3I8
Q29sb3JDb252ZXJ0ZWRUb0ludGVycG9sYXRpb25Db2xvclNwYWNlU3RvcD4gY29udmVydGVkU3Rv
cHM7CisgICAgY29udmVydGVkU3RvcHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh0b3RhbE51bWJl
ck9mU3RvcHMpOworCisgICAgaWYgKCFoYXNaZXJvKSB7CisgICAgICAgIGNvbnZlcnRlZFN0b3Bz
LnVuY2hlY2tlZEFwcGVuZCh7CisgICAgICAgICAgICAub2Zmc2V0ID0gMC4wZiwKKyAgICAgICAg
ICAgIC5jb2xvckNvbXBvbmVudHMgPSB7IDAuMGYsIDAuMGYsIDAuMGYsIDAuMGYgfQorICAgICAg
ICB9KTsKKyAgICB9CisKICAgICBmb3IgKGNvbnN0IGF1dG8mIHN0b3AgOiBtX3N0b3BzKSB7Ci0g
ICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShjb2xvcnNBcnJheS5nZXQoKSwgY2FjaGVkQ0dDb2xv
cihzdG9wLmNvbG9yKS5nZXQoKSk7Ci0gICAgICAgIGxvY2F0aW9ucy51bmNoZWNrZWRBcHBlbmQo
c3RvcC5vZmZzZXQpOworICAgICAgICBjb252ZXJ0ZWRTdG9wcy51bmNoZWNrZWRBcHBlbmQoewor
ICAgICAgICAgICAgLm9mZnNldCA9IHN0b3Aub2Zmc2V0LAorICAgICAgICAgICAgLmNvbG9yQ29t
cG9uZW50cyA9IHN0b3AuY29sb3IudG9Db2xvckNvbXBvbmVudHNJbkNvbG9yU3BhY2UoQ29sb3JT
cGFjZTo6U1JHQikgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGFjdHVhbGx5IGJlIHRoZSBjb2xvciBz
cGFjZSB3ZSB3aWxsIGJlIGludGVycG9sYXRpbmcgaW4uIFNob3VsZCBwcm9iYWJseSBhbHNvIGlu
dGVycG9sYXRlIGluIHVuY2xhbXBlZCBTUkdCIHdoZW4gbmVlZGVkLgorICAgICAgICB9KTsKICAg
ICB9CiAKLSNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfRVhURU5ERURfU1JHQl9DT0xPUl9TUEFDRSkK
LSAgICBhdXRvIGV4dGVuZGVkQ29sb3JzR3JhZGllbnRDb2xvclNwYWNlID0gZXh0ZW5kZWRTUkdC
Q29sb3JTcGFjZVJlZigpOwotI2Vsc2UKLSAgICBhdXRvIGV4dGVuZGVkQ29sb3JzR3JhZGllbnRD
b2xvclNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKLSNlbmRpZgorICAgIGlmICghaGFzWmVy
bykKKyAgICAgICAgY29udmVydGVkU3RvcHNbMF0uY29sb3JDb21wb25lbnRzID0gY29udmVydGVk
U3RvcHNbMV0uY29sb3JDb21wb25lbnRzOwogCi0gICAgbV9ncmFkaWVudCA9IGFkb3B0Q0YoQ0dH
cmFkaWVudENyZWF0ZVdpdGhDb2xvcnMoZXh0ZW5kZWRDb2xvcnNHcmFkaWVudENvbG9yU3BhY2Us
IGNvbG9yc0FycmF5LmdldCgpLCBsb2NhdGlvbnMuZGF0YSgpKSk7CisgICAgaWYgKCFoYXNPbmUp
IHsKKyAgICAgICAgY29udmVydGVkU3RvcHMudW5jaGVja2VkQXBwZW5kKHsKKyAgICAgICAgICAg
IC5vZmZzZXQgPSAxLjBmLAorICAgICAgICAgICAgLmNvbG9yQ29tcG9uZW50cyA9IGNvbnZlcnRl
ZFN0b3BzLmxhc3QoKS5jb2xvckNvbXBvbmVudHMKKyAgICAgICAgfSk7CisgICAgfQorCisgICAg
bV9ncmFkaWVudCA9IEN1c3RvbUNHR3JhZGllbnQ6OmNyZWF0ZShtX2NvbG9ySW50ZXJwb2xhdGlv
bk1ldGhvZCwgV1RGTW92ZShjb252ZXJ0ZWRTdG9wcykpOwogfQogCitzdGF0aWMgdm9pZCBkcmF3
TGluZWFyR3JhZGllbnQoQ0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dCwgQ3VzdG9tQ0dHcmFk
aWVudCYgZ3JhZGllbnQsIENHUG9pbnQgc3RhcnRQb2ludCwgQ0dQb2ludCBlbmRQb2ludCwgQ0dH
cmFkaWVudERyYXdpbmdPcHRpb25zIG9wdGlvbnMpCit7CisgICAgYm9vbCBzdGFydEV4dGVuZCA9
IChvcHRpb25zICYga0NHR3JhZGllbnREcmF3c0JlZm9yZVN0YXJ0TG9jYXRpb24pICE9IDA7Cisg
ICAgYm9vbCBlbmRFeHRlbmQgPSAob3B0aW9ucyAmIGtDR0dyYWRpZW50RHJhd3NBZnRlckVuZExv
Y2F0aW9uKSAhPSAwOworCisgICAgYXV0byBzaGFkaW5nID0gYWRvcHRDRihDR1NoYWRpbmdDcmVh
dGVBeGlhbChncmFkaWVudC5jb2xvclNwYWNlKCksIHN0YXJ0UG9pbnQsIGVuZFBvaW50LCBncmFk
aWVudC5mdW5jdGlvbigpLCBzdGFydEV4dGVuZCwgZW5kRXh0ZW5kKSk7CisgICAgQ0dDb250ZXh0
RHJhd1NoYWRpbmcocGxhdGZvcm1Db250ZXh0LCBzaGFkaW5nLmdldCgpKTsKK30KKworc3RhdGlj
IHZvaWQgZHJhd1JhZGlhbEdyYWRpZW50KENHQ29udGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQsIEN1
c3RvbUNHR3JhZGllbnQmIGdyYWRpZW50LCBDR1BvaW50IHN0YXJ0Q2VudGVyLCBDR0Zsb2F0IHN0
YXJ0UmFkaXVzLCBDR1BvaW50IGVuZENlbnRlciwgQ0dGbG9hdCBlbmRSYWRpdXMsIENHR3JhZGll
bnREcmF3aW5nT3B0aW9ucyBvcHRpb25zKQoreworICAgIGJvb2wgc3RhcnRFeHRlbmQgPSAob3B0
aW9ucyAmIGtDR0dyYWRpZW50RHJhd3NCZWZvcmVTdGFydExvY2F0aW9uKSAhPSAwOworICAgIGJv
b2wgZW5kRXh0ZW5kID0gKG9wdGlvbnMgJiBrQ0dHcmFkaWVudERyYXdzQWZ0ZXJFbmRMb2NhdGlv
bikgIT0gMDsKKworICAgIGF1dG8gc2hhZGluZyA9IGFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlUmFk
aWFsKGdyYWRpZW50LmNvbG9yU3BhY2UoKSwgc3RhcnRDZW50ZXIsIHN0YXJ0UmFkaXVzLCBlbmRD
ZW50ZXIsIGVuZFJhZGl1cywgZ3JhZGllbnQuZnVuY3Rpb24oKSwgc3RhcnRFeHRlbmQsIGVuZEV4
dGVuZCkpOworICAgIENHQ29udGV4dERyYXdTaGFkaW5nKHBsYXRmb3JtQ29udGV4dCwgc2hhZGlu
Zy5nZXQoKSk7Cit9CisKK3N0YXRpYyB2b2lkIGRyYXdDb25pY0dyYWRpZW50KENHQ29udGV4dFJl
ZiBwbGF0Zm9ybUNvbnRleHQsIEN1c3RvbUNHR3JhZGllbnQmIGdyYWRpZW50LCBDR1BvaW50IGNl
bnRlciwgQ0dGbG9hdCBhbmdsZSkKK3sKKyAgICBhdXRvIHNoYWRpbmcgPSBhZG9wdENGKENHU2hh
ZGluZ0NyZWF0ZUNvbmljKGdyYWRpZW50LmNvbG9yU3BhY2UoKSwgY2VudGVyLCBhbmdsZSwgZ3Jh
ZGllbnQuZnVuY3Rpb24oKSkpOworICAgIENHQ29udGV4dERyYXdTaGFkaW5nKHBsYXRmb3JtQ29u
dGV4dCwgc2hhZGluZy5nZXQoKSk7Cit9CisKIHZvaWQgR3JhZGllbnQ6OmZpbGwoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgY29udGV4dC5j
bGlwKHJlY3QpOwpAQCAtMTExLDcgKzIyOSw3IEBAIHZvaWQgR3JhZGllbnQ6OnBhaW50KENHQ29u
dGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQpCiAgICAgQ0dHcmFkaWVudERyYXdpbmdPcHRpb25zIGV4
dGVuZE9wdGlvbnMgPSBrQ0dHcmFkaWVudERyYXdzQmVmb3JlU3RhcnRMb2NhdGlvbiB8IGtDR0dy
YWRpZW50RHJhd3NBZnRlckVuZExvY2F0aW9uOwogCiAgICAgaWYgKCFtX2dyYWRpZW50KQotICAg
ICAgICBjcmVhdGVDR0dyYWRpZW50KCk7CisgICAgICAgIGNyZWF0ZUN1c3RvbUNHR3JhZGllbnQo
KTsKIAogICAgIFdURjo6c3dpdGNoT24obV9kYXRhLAogICAgICAgICBbJl0gKGNvbnN0IExpbmVh
ckRhdGEmIGRhdGEpIHsKQEAgLTEzOSwxMSArMjU3LDExIEBAIHZvaWQgR3JhZGllbnQ6OnBhaW50
KENHQ29udGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQpCiAgICAgICAgICAgICAgICAgaWYgKENHRkFi
cyhkeCkgPCBwaXhlbFNpemUpCiAgICAgICAgICAgICAgICAgICAgIGR4ID0gZHggPCAwID8gLXBp
eGVsU2l6ZSA6IHBpeGVsU2l6ZTsKIAotICAgICAgICAgICAgICAgIGF1dG8gZHJhd0xpbmVhckdy
YWRpZW50ID0gWyZdKENHRmxvYXQgc3RhcnQsIENHRmxvYXQgZW5kLCBib29sIGZsaXApIHsKKyAg
ICAgICAgICAgICAgICBhdXRvIGRyYXdMaW5lYXJHcmFkaWVudEFwcGx5aW5nRmxpcCA9IFsmXShD
R0Zsb2F0IHN0YXJ0LCBDR0Zsb2F0IGVuZCwgYm9vbCBmbGlwKSB7CiAgICAgICAgICAgICAgICAg
ICAgIENHUG9pbnQgbGVmdCA9IENHUG9pbnRNYWtlKGZsaXAgPyBlbmQgOiBzdGFydCwgMCk7CiAg
ICAgICAgICAgICAgICAgICAgIENHUG9pbnQgcmlnaHQgPSBDR1BvaW50TWFrZShmbGlwID8gc3Rh
cnQgOiBlbmQsIDApOwogCi0gICAgICAgICAgICAgICAgICAgIENHQ29udGV4dERyYXdMaW5lYXJH
cmFkaWVudChwbGF0Zm9ybUNvbnRleHQsIG1fZ3JhZGllbnQuZ2V0KCksIGxlZnQsIHJpZ2h0LCBl
eHRlbmRPcHRpb25zKTsKKyAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVhckdyYWRpZW50KHBs
YXRmb3JtQ29udGV4dCwgKm1fZ3JhZGllbnQsIGxlZnQsIHJpZ2h0LCBleHRlbmRPcHRpb25zKTsK
ICAgICAgICAgICAgICAgICB9OwogCiAgICAgICAgICAgICAgICAgYXV0byBpc0xlZnRPZiA9IFtd
KENHRmxvYXQgc3RhcnQsIENHRmxvYXQgZW5kLCBDR1JlY3QgYm91bmRpbmdCb3gpIC0+IGJvb2wg
ewpAQCAtMTcwLDcgKzI4OCw3IEBAIHZvaWQgR3JhZGllbnQ6OnBhaW50KENHQ29udGV4dFJlZiBw
bGF0Zm9ybUNvbnRleHQpCiAKICAgICAgICAgICAgICAgICAvLyBEcmF3IGdyYWRpZW50IGZvcndh
cmQgdGlsbCB0aGUgcG9pbnRzIGFyZSBvdXRzaWRlIGJvdW5kaW5nQm94LgogICAgICAgICAgICAg
ICAgIGZvciAoOyBpc0ludGVyc2VjdGluZyhzdGFydCwgc3RhcnQgKyBkeCwgYm91bmRpbmdCb3gp
OyBzdGFydCArPSBkeCkgewotICAgICAgICAgICAgICAgICAgICBkcmF3TGluZWFyR3JhZGllbnQo
c3RhcnQsIHN0YXJ0ICsgZHgsIGZsaXApOworICAgICAgICAgICAgICAgICAgICBkcmF3TGluZWFy
R3JhZGllbnRBcHBseWluZ0ZsaXAoc3RhcnQsIHN0YXJ0ICsgZHgsIGZsaXApOwogICAgICAgICAg
ICAgICAgICAgICBmbGlwID0gIWZsaXAgJiYgbV9zcHJlYWRNZXRob2QgPT0gR3JhZGllbnRTcHJl
YWRNZXRob2Q6OlJlZmxlY3Q7CiAgICAgICAgICAgICAgICAgfQogCkBAIC0xODYsMTQgKzMwNCwx
MyBAQCB2b2lkIEdyYWRpZW50OjpwYWludChDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250ZXh0KQog
CiAgICAgICAgICAgICAgICAgLy8gRHJhdyBncmFkaWVudCBiYWNrd2FyZCB0aWxsIHRoZSBwb2lu
dHMgYXJlIG91dHNpZGUgYm91bmRpbmdCb3guCiAgICAgICAgICAgICAgICAgZm9yICg7IGlzSW50
ZXJzZWN0aW5nKGVuZCwgZW5kIC0gZHgsIGJvdW5kaW5nQm94KTsgZW5kIC09IGR4KSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGRyYXdMaW5lYXJHcmFkaWVudChlbmQgLSBkeCwgZW5kLCBmbGlwKTsK
KyAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVhckdyYWRpZW50QXBwbHlpbmdGbGlwKGVuZCAt
IGR4LCBlbmQsIGZsaXApOwogICAgICAgICAgICAgICAgICAgICBmbGlwID0gIWZsaXAgJiYgbV9z
cHJlYWRNZXRob2QgPT0gR3JhZGllbnRTcHJlYWRNZXRob2Q6OlJlZmxlY3Q7CiAgICAgICAgICAg
ICAgICAgfQotCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBjYXNlIEdyYWRpZW50U3ByZWFkTWV0aG9kOjpQYWQ6Ci0gICAgICAgICAgICAgICAgQ0dD
b250ZXh0RHJhd0xpbmVhckdyYWRpZW50KHBsYXRmb3JtQ29udGV4dCwgbV9ncmFkaWVudC5nZXQo
KSwgZGF0YS5wb2ludDAsIGRhdGEucG9pbnQxLCBleHRlbmRPcHRpb25zKTsKKyAgICAgICAgICAg
ICAgICBkcmF3TGluZWFyR3JhZGllbnQocGxhdGZvcm1Db250ZXh0LCAqbV9ncmFkaWVudCwgZGF0
YS5wb2ludDAsIGRhdGEucG9pbnQxLCBleHRlbmRPcHRpb25zKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSwKICAgICAgICAgWyZdIChjb25zdCBSYWRpYWxEYXRhJiBkYXRhKSB7CkBAIC0yMDgs
NyArMzI1LDcgQEAgdm9pZCBHcmFkaWVudDo6cGFpbnQoQ0dDb250ZXh0UmVmIHBsYXRmb3JtQ29u
dGV4dCkKICAgICAgICAgICAgICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0ocGxhdGZvcm1Db250
ZXh0LCAtZGF0YS5wb2ludDAueCgpLCAtZGF0YS5wb2ludDAueSgpKTsKICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgQ0dDb250ZXh0RHJhd1JhZGlhbEdyYWRpZW50KHBsYXRmb3JtQ29udGV4
dCwgbV9ncmFkaWVudC5nZXQoKSwgZGF0YS5wb2ludDAsIGRhdGEuc3RhcnRSYWRpdXMsIGRhdGEu
cG9pbnQxLCBkYXRhLmVuZFJhZGl1cywgZXh0ZW5kT3B0aW9ucyk7CisgICAgICAgICAgICBkcmF3
UmFkaWFsR3JhZGllbnQocGxhdGZvcm1Db250ZXh0LCAqbV9ncmFkaWVudCwgZGF0YS5wb2ludDAs
IGRhdGEuc3RhcnRSYWRpdXMsIGRhdGEucG9pbnQxLCBkYXRhLmVuZFJhZGl1cywgZXh0ZW5kT3B0
aW9ucyk7CiAKICAgICAgICAgICAgIGlmIChuZWVkU2NhbGluZykKICAgICAgICAgICAgICAgICBD
R0NvbnRleHRSZXN0b3JlR1N0YXRlKHBsYXRmb3JtQ29udGV4dCk7CkBAIC0yMjEsNyArMzM4LDcg
QEAgdm9pZCBHcmFkaWVudDo6cGFpbnQoQ0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dCkKICAg
ICAgICAgICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShwbGF0Zm9ybUNvbnRleHQsIGRhdGEucG9p
bnQwLngoKSwgZGF0YS5wb2ludDAueSgpKTsKICAgICAgICAgICAgIENHQ29udGV4dFJvdGF0ZUNU
TShwbGF0Zm9ybUNvbnRleHQsIChDR0Zsb2F0KS1NX1BJXzIpOwogICAgICAgICAgICAgQ0dDb250
ZXh0VHJhbnNsYXRlQ1RNKHBsYXRmb3JtQ29udGV4dCwgLWRhdGEucG9pbnQwLngoKSwgLWRhdGEu
cG9pbnQwLnkoKSk7Ci0gICAgICAgICAgICBDR0NvbnRleHREcmF3Q29uaWNHcmFkaWVudChwbGF0
Zm9ybUNvbnRleHQsIG1fZ3JhZGllbnQuZ2V0KCksIGRhdGEucG9pbnQwLCBkYXRhLmFuZ2xlUmFk
aWFucyk7CisgICAgICAgICAgICBkcmF3Q29uaWNHcmFkaWVudChwbGF0Zm9ybUNvbnRleHQsICpt
X2dyYWRpZW50LCBkYXRhLnBvaW50MCwgZGF0YS5hbmdsZVJhZGlhbnMpOwogICAgICAgICAgICAg
Q0dDb250ZXh0UmVzdG9yZUdTdGF0ZShwbGF0Zm9ybUNvbnRleHQpOwogI2Vsc2UKICAgICAgICAg
ICAgIFVOVVNFRF9QQVJBTShkYXRhKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447565</attachid>
            <date>2021-12-19 15:38:43 -0800</date>
            <delta_ts>2021-12-19 17:48:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234492-20211219153842.patch</filename>
            <type>text/plain</type>
            <size>17565</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDIxLTEyLTE5ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgQ0dTaGFkaW5nUmVmIGJhc2Vk
IGltcGxlbWVudGF0aW9uIG9mIEdyYWRpZW50IGFzIHN0ZXBwaW5nIHN0b25lIHRvd2FyZCBwcmVt
dWx0aXBsaWVkIGludGVycG9sYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNDQ5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtXSVBdIFRoaXMgY29tcGxldGVseSByZXBsYWNlcyB0aGUgQ0dHcmFk
aWVudFJlZiBpbXBsZW1lbnRhdGlvbi4gV2UgbmVlZCB0byBtYWtlIHRoaXMKKyAgICAgICAgY29u
ZGl0aW9uYWwgZm9yIGl0IHRvIGJlIHJlYWwuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvckNvbXBvbmVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yQ29tcG9uZW50czo6
c2l6ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkN1c3RvbUNHR3JhZGllbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDdXN0b21DR0dyYWRpZW50OjpmdW5jdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDdXN0b21DR0dyYWRpZW50Ojpjb2xvckludGVycG9sYXRpb25NZXRob2QgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VzdG9tQ0dHcmFkaWVudDo6c3RvcHMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q3VzdG9tQ0dHcmFkaWVudDo6Q3VzdG9tQ0dHcmFkaWVudCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1
bnByZW11bHRpcGxpZWRTaGFkaW5nRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Q0dGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21DR0dyYWRpZW50Ojppbml0aWFs
aXplRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tQ0dHcmFkaWVudDo6Y29sb3JT
cGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudDo6Y3JlYXRlQ3VzdG9tQ0dH
cmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpkcmF3TGluZWFyR3JhZGllbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6ZHJhd1JhZGlhbEdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdD
b25pY0dyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50OjpwYWludCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFkaWVudDo6ZmlsbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVu
dDo6aGFzT25seUJvdW5kZWRTUkdCQ29sb3JTdG9wcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpHcmFkaWVudDo6Y3JlYXRlQ0dHcmFkaWVudCk6IERlbGV0ZWQuCisKIDIwMjEt
MTItMTggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEhhc2ggdGFi
bGVzLCByZWFkL3dyaXRlLCBhbmQgaGVhcCBtZW1vcnkgYXJlIHVzZWQgdW5uZWNlc3NhcmlseSwg
d2hpY2ggbWF5IGh1cnQgcGVyZm9ybWFuY2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNp
b24gMjg3MjQ3KQorKysgU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDEzIEBACisyMDIxLTEyLTE5ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgQ0dTaGFkaW5nUmVmIGJhc2VkIGltcGxlbWVudGF0aW9uIG9m
IEdyYWRpZW50IGFzIHN0ZXBwaW5nIHN0b25lIHRvd2FyZCBwcmVtdWx0aXBsaWVkIGludGVycG9s
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NDQ5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaDoKKyAgICAgICAgQWRkIENHU2hhZGluZ1JlZiBT
UEkgZm9yIGNyZWF0aW5nIGNvbmljIHNoYWRpbmdzLgorCiAyMDIxLTEyLTE2ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cmV2ZXJ0aW5nIHIyODcwNTYuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9D
b3JlR3JhcGhpY3NTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9jZy9Db3JlR3JhcGhpY3NTUEkuaAkocmV2aXNpb24gMjg3MjMzKQorKysgU291cmNlL1dlYkNv
cmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTQy
LDYgKzQyLDcgQEAKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dGb250Q2FjaGUuaD4KICNpbmNs
dWRlIDxDb3JlR3JhcGhpY3MvQ0dQYXRoUHJpdmF0ZS5oPgogI2luY2x1ZGUgPENvcmVHcmFwaGlj
cy9Db3JlR3JhcGhpY3NQcml2YXRlLmg+CisjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHU2hhZGlu
Z1ByaXZhdGUuaD4KICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dTdHlsZVByaXZhdGUuaD4KIAog
I2lmIFBMQVRGT1JNKE1BQykKQEAgLTMyMyw2ICszMjQsNyBAQCB2b2lkIENHQ29udGV4dFNldFN0
eWxlKENHQ29udGV4dFJlZiwgQ0dTdHlsZVJlZik7CiB2b2lkIENHQ29udGV4dERyYXdDb25pY0dy
YWRpZW50KENHQ29udGV4dFJlZiwgQ0dHcmFkaWVudFJlZiwgQ0dQb2ludCBjZW50ZXIsIENHRmxv
YXQgYW5nbGUpOwogdm9pZCBDR1BhdGhBZGRVbmV2ZW5Db3JuZXJzUm91bmRlZFJlY3QoQ0dNdXRh
YmxlUGF0aFJlZiwgY29uc3QgQ0dBZmZpbmVUcmFuc2Zvcm0gKiwgQ0dSZWN0LCBjb25zdCBDR1Np
emUgY29ybmVyc1s0XSk7CiBib29sIENHRm9udFJlbmRlcmluZ0dldEZvbnRTbW9vdGhpbmdEaXNh
YmxlZCh2b2lkKTsKK0NHU2hhZGluZ1JlZiBDR1NoYWRpbmdDcmVhdGVDb25pYyhDR0NvbG9yU3Bh
Y2VSZWYsIENHUG9pbnQgY2VudGVyLCBDR0Zsb2F0IGFuZ2xlLCBDR0Z1bmN0aW9uUmVmKTsKIAog
I2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db2xvckNvbXBvbmVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbXBvbmVudHMuaAkocmV2aXNpb24gMjg3MjMzKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb21wb25lbnRzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDggQEAgc3RydWN0IENvbG9yQ29tcG9uZW50cyB7CiAg
ICAgdGVtcGxhdGU8c2l6ZV90IFN0YXJ0LCBzaXplX3QgRW5kPgogICAgIGNvbnN0ZXhwciBDb2xv
ckNvbXBvbmVudHM8VCwgRW5kIC0gU3RhcnQ+IHN1YnNldCgpIGNvbnN0OwogCisgICAgY29uc3Rl
eHByIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gU2l6ZTsgfQorCiAgICAgc3RkOjphcnJh
eTxULCBOPiBjb21wb25lbnRzOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhZGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFkaWVudC5oCShyZXZpc2lvbiAyODcyMzMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0
NSw3IEBACiAKICNpZiBVU0UoQ0cpCiB0eXBlZGVmIHN0cnVjdCBDR0NvbnRleHQqIENHQ29udGV4
dFJlZjsKK3R5cGVkZWYgc3RydWN0IENHRnVuY3Rpb24qIENHRnVuY3Rpb25SZWY7CiB0eXBlZGVm
IHN0cnVjdCBDR0dyYWRpZW50KiBDR0dyYWRpZW50UmVmOwogI2VuZGlmCiAKQEAgLTYyLDYgKzYz
LDQyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEdyYXBo
aWNzQ29udGV4dDsKIAorI2lmIFVTRShDRykKK3N0cnVjdCBDb2xvckNvbnZlcnRlZFRvSW50ZXJw
b2xhdGlvbkNvbG9yU3BhY2VTdG9wIHsKKyAgICBmbG9hdCBvZmZzZXQ7CisgICAgQ29sb3JDb21w
b25lbnRzPGZsb2F0LCA0PiBjb2xvckNvbXBvbmVudHM7Cit9OworCitjbGFzcyBDdXN0b21DR0dy
YWRpZW50IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEN1c3RvbUNHR3JhZGllbnQ+IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEN1c3RvbUNHR3JhZGllbnQ+IGNyZWF0ZShDb2xvcklu
dGVycG9sYXRpb25NZXRob2QgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBWZWN0b3I8Q29sb3JD
b252ZXJ0ZWRUb0ludGVycG9sYXRpb25Db2xvclNwYWNlU3RvcD4gc3RvcHMpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDdXN0b21DR0dyYWRpZW50KGNvbG9ySW50ZXJwb2xh
dGlvbk1ldGhvZCwgV1RGTW92ZShzdG9wcykpKTsKKyAgICB9CisKKyAgICBDR0Z1bmN0aW9uUmVm
IGZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbi5nZXQoKTsgfQorICAgIENvbG9y
SW50ZXJwb2xhdGlvbk1ldGhvZCBjb2xvckludGVycG9sYXRpb25NZXRob2QoKSBjb25zdCB7IHJl
dHVybiBtX2NvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDsgfQorICAgIENHQ29sb3JTcGFjZVJlZiBj
b2xvclNwYWNlKCkgY29uc3Q7CisKKyAgICAvLyBGSVhNRTogVXNlIFNwYW4uCisgICAgY29uc3Qg
VmVjdG9yPENvbG9yQ29udmVydGVkVG9JbnRlcnBvbGF0aW9uQ29sb3JTcGFjZVN0b3A+JiBzdG9w
cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcHM7IH0KKworcHJpdmF0ZToKKyAgICBDdXN0b21DR0dy
YWRpZW50KENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBjb2xvckludGVycG9sYXRpb25NZXRob2Qs
IFZlY3RvcjxDb2xvckNvbnZlcnRlZFRvSW50ZXJwb2xhdGlvbkNvbG9yU3BhY2VTdG9wPiBzdG9w
cykKKyAgICAgICAgOiBtX2NvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCB7IGNvbG9ySW50ZXJwb2xh
dGlvbk1ldGhvZCB9CisgICAgICAgICwgbV9zdG9wcyB7IFdURk1vdmUoc3RvcHMpIH0KKyAgICAg
ICAgLCBtX2Z1bmN0aW9uIHsgaW5pdGlhbGl6ZUZ1bmN0aW9uKCkgfQorICAgIHsKKyAgICB9CisK
KyAgICBSZXRhaW5QdHI8Q0dGdW5jdGlvblJlZj4gaW5pdGlhbGl6ZUZ1bmN0aW9uKCk7CisKKyAg
ICBDb2xvckludGVycG9sYXRpb25NZXRob2QgbV9jb2xvckludGVycG9sYXRpb25NZXRob2Q7Cisg
ICAgVmVjdG9yPENvbG9yQ29udmVydGVkVG9JbnRlcnBvbGF0aW9uQ29sb3JTcGFjZVN0b3A+IG1f
c3RvcHM7CisgICAgUmV0YWluUHRyPENHRnVuY3Rpb25SZWY+IG1fZnVuY3Rpb247Cit9OworI2Vu
ZGlmCisKIGNsYXNzIEdyYWRpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8R3JhZGllbnQ+IHsKIHB1
YmxpYzoKICAgICBzdHJ1Y3QgQ29sb3JTdG9wIHsKQEAgLTE0NSw3ICsxODIsNyBAQCBjbGFzcyBH
cmFkaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYWRpZW50PiB7IChwcml2YXQKICAgICB2b2lk
IHN0b3BzQ2hhbmdlZCgpOwogCiAjaWYgVVNFKENHKQotICAgIHZvaWQgY3JlYXRlQ0dHcmFkaWVu
dCgpOworICAgIHZvaWQgY3JlYXRlQ3VzdG9tQ0dHcmFkaWVudCgpOwogICAgIGJvb2wgaGFzT25s
eUJvdW5kZWRTUkdCQ29sb3JTdG9wcygpIGNvbnN0OwogI2VuZGlmCiAKQEAgLTE1Nyw3ICsxOTQs
NyBAQCBjbGFzcyBHcmFkaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYWRpZW50PiB7IChwcml2
YXQKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fY2FjaGVkSGFzaCB7IDAgfTsKIAogI2lmIFVTRShD
RykKLSAgICBSZXRhaW5QdHI8Q0dHcmFkaWVudFJlZj4gbV9ncmFkaWVudDsKKyAgICBSZWZQdHI8
Q3VzdG9tQ0dHcmFkaWVudD4gbV9ncmFkaWVudDsKICNlbmRpZgogCiAjaWYgVVNFKERJUkVDVDJE
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
ZGllbnRDRy5jcHAJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3
IEBACiAjaWYgVVNFKENHKQogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKKyNpbmNs
dWRlICJDb2xvckludGVycG9sYXRpb24uaCIKICNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFw
aGljc1NQSS5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAtNDksNiArNTAsNyBA
QCBib29sIEdyYWRpZW50OjpoYXNPbmx5Qm91bmRlZFNSR0JDb2xvclN0b3BzKCkgY29uc3QKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAorI2lmIDAKIHZvaWQgR3JhZGllbnQ6OmNyZWF0ZUNHR3JhZGll
bnQoKQogewogICAgIHNvcnRTdG9wcygpOwpAQCAtOTUsNiArOTcsMTc3IEBAIHZvaWQgR3JhZGll
bnQ6OmNyZWF0ZUNHR3JhZGllbnQoKQogICAgIG1fZ3JhZGllbnQgPSBhZG9wdENGKENHR3JhZGll
bnRDcmVhdGVXaXRoQ29sb3JzKGV4dGVuZGVkQ29sb3JzR3JhZGllbnRDb2xvclNwYWNlLCBjb2xv
cnNBcnJheS5nZXQoKSwgbG9jYXRpb25zLmRhdGEoKSkpOwogfQogCisKK3RlbXBsYXRlPHR5cGVu
YW1lIEludGVycG9sYXRpb25TcGFjZT4KK3N0YXRpYyB2b2lkIHVucHJlbXVsdGlwbGllZFNoYWRp
bmdGdW5jdGlvbih2b2lkKiBpbmZvLCBjb25zdCBDR0Zsb2F0KiBpbiwgQ0dGbG9hdCogb3V0KQor
eworICAgIHVzaW5nIEludGVycG9sYXRpb25TcGFjZUNvbG9yVHlwZSA9IHR5cGVuYW1lIEludGVy
cG9sYXRpb25TcGFjZTo6Q29sb3JUeXBlOworICAgIHVzaW5nIE91dHB1dFNwYWNlQ29sb3JUeXBl
ID0gU1JHQkE8ZmxvYXQ+OworCisgICAgYXV0byogZ3JhZGllbnQgPSBzdGF0aWNfY2FzdDxDdXN0
b21DR0dyYWRpZW50Kj4oaW5mbyk7CisKKyAgICAvLyBDb21wdXRlIGNvbG9yIGF0IHBvc2l0aW9u
ICdwb3NpdGlvbicgYW5kIGFzc2lnbiBjb21wb25lbnRzIHRvIG91dFswIC0+IDNdLgorCisgICAg
ZmxvYXQgcmVxdWVzdGVkT2Zmc2V0ID0gaW5bMF07CisKKyAgICAvLyAxLiBGaW5kIHN0b3BzIHRo
YXQgYm91bmQgdGhlIHJlcXVlc3RlZCBvZmZzZXQuCisgICAgYXV0byBbc3RvcDAsIHN0b3AxXSA9
IFsmXSB7CisgICAgICAgIGZvciAoc2l6ZV90IHN0b3AgPSAxOyBzdG9wIDwgZ3JhZGllbnQtPnN0
b3BzKCkuc2l6ZSgpOyArK3N0b3ApIHsKKyAgICAgICAgICAgIGlmIChyZXF1ZXN0ZWRPZmZzZXQg
PD0gZ3JhZGllbnQtPnN0b3BzKClbc3RvcF0ub2Zmc2V0KQorICAgICAgICAgICAgICAgIHJldHVy
biBzdGQ6OnRpZShncmFkaWVudC0+c3RvcHMoKVtzdG9wIC0gMV0sIGdyYWRpZW50LT5zdG9wcygp
W3N0b3BdKTsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIH0oKTsKKworICAgIC8vIDIuIENvbXB1dGUgcGVyY2VudGFnZSBvZmZzZXQgYmV0d2Vl
biB0aGUgdHdvIHN0b3BzLgorICAgIGZsb2F0IG9mZnNldCA9IChzdG9wMS5vZmZzZXQgPT0gc3Rv
cDAub2Zmc2V0KSA/IDAuMGYgOiAocmVxdWVzdGVkT2Zmc2V0IC0gc3RvcDAub2Zmc2V0KSAvIChz
dG9wMS5vZmZzZXQgLSBzdG9wMC5vZmZzZXQpOworCisgICAgLy8gMy4gSW50ZXJwb2xhdGUgdGhl
IHR3byBzdG9wcycgY29sb3JzIGJ5IHRoZSBjb21wdXRlZCBvZmZzZXQuCisgICAgLy8gRklYTUU6
IFdlIGRvbid0IHdhbnQgdG8gZHVlIGh1ZSBmaXh1cCBmb3IgZWFjaCBjYWxsLCBzbyB3ZSBzaG91
bGQgZmlndXJlIG91dCBob3cgdG8gcHJlY29tcHV0ZSB0aGF0LgorICAgIGF1dG8gaW50ZXJwb2xh
dGVkQ29sb3IgPSBpbnRlcnBvbGF0ZUNvbG9yQ29tcG9uZW50czxBbHBoYVByZW11bHRpcGxpY2F0
aW9uOjpVbnByZW11bHRpcGxpZWQ+KAorICAgICAgICBDb2xvckludGVycG9sYXRpb25NZXRob2Q6
OlNSR0IgeyB9LAorICAgICAgICBtYWtlRnJvbUNvbXBvbmVudHM8SW50ZXJwb2xhdGlvblNwYWNl
Q29sb3JUeXBlPihzdG9wMC5jb2xvckNvbXBvbmVudHMpLCAxLjBmIC0gb2Zmc2V0LAorICAgICAg
ICBtYWtlRnJvbUNvbXBvbmVudHM8SW50ZXJwb2xhdGlvblNwYWNlQ29sb3JUeXBlPihzdG9wMS5j
b2xvckNvbXBvbmVudHMpLCBvZmZzZXQpOworCisgICAgLy8gNC4gQ29udmVydCB0byB0aGUgb3V0
cHV0IGNvbG9yc3BhY2UuCisgICAgYXV0byBpbnRlcnBvbGF0ZWRDb2xvckNvbnZlcnRlZFRvT3V0
cHV0U3BhY2UgPSBhc0NvbG9yQ29tcG9uZW50cyhjb252ZXJ0Q29sb3I8T3V0cHV0U3BhY2VDb2xv
clR5cGU+KGludGVycG9sYXRlZENvbG9yKSk7CisKKyAgICAvLyA1LiBXcml0ZSBjb2xvciBjb21w
b25lbnRzIHRvICdvdXQnIHBvaW50ZXIuCisgICAgZm9yIChzaXplX3QgY29tcG9uZW50SW5kZXgg
PSAwOyBjb21wb25lbnRJbmRleCA8IGludGVycG9sYXRlZENvbG9yQ29udmVydGVkVG9PdXRwdXRT
cGFjZS5zaXplKCk7ICsrY29tcG9uZW50SW5kZXgpCisgICAgICAgIG91dFtjb21wb25lbnRJbmRl
eF0gPSBpbnRlcnBvbGF0ZWRDb2xvckNvbnZlcnRlZFRvT3V0cHV0U3BhY2VbY29tcG9uZW50SW5k
ZXhdOworfQorCitzdGF0aWMgUmV0YWluUHRyPENHRnVuY3Rpb25SZWY+IGNyZWF0ZUNHRnVuY3Rp
b24oQ3VzdG9tQ0dHcmFkaWVudCYgY3VzdG9tQ0dHcmFkaWVudCkKK3sKKyAgICBhdXRvIGV2YWx1
YXRvciA9IFsmXSB7CisgICAgICAgIGF1dG8gbWV0aG9kID0gY3VzdG9tQ0dHcmFkaWVudC5jb2xv
ckludGVycG9sYXRpb25NZXRob2QoKTsKKyAgICAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obWV0
aG9kLmNvbG9yU3BhY2UsCisgICAgICAgICAgICBbXSAoYXV0byYgLypjb2xvclNwYWNlKi8pIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gJnVucHJlbXVsdGlwbGllZFNoYWRpbmdGdW5jdGlvbjxD
b2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0I+OworICAgICAgICAgICAgfQorICAgICAgICAp
OworICAgIH07CisKKyAgICBjb25zdCBDR0Z1bmN0aW9uQ2FsbGJhY2tzIGNhbGxiYWNrcyA9IHsK
KyAgICAgICAgLnZlcnNpb24gPSAwLAorICAgICAgICAuZXZhbHVhdGUgPSBldmFsdWF0b3IoKSwK
KyAgICAgICAgLnJlbGVhc2VJbmZvID0gW10gKHZvaWQqIGluZm8pIHsKKyAgICAgICAgICAgIHN0
YXRpY19jYXN0PEN1c3RvbUNHR3JhZGllbnQqPihpbmZvKS0+ZGVyZWYoKTsKKyAgICAgICAgfQor
ICAgIH07CisKKyAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBkb21haW5bMl0gPSB7IDAsIDEgfTsK
KworICAgIC8vIEZJWE1FOiBXaWxsIG5lZWQgZGlmZmVyZW50IHJhbmdlcyBmb3IgZWFjaCBjb2xv
ciBtb2RlbC4KKyAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBkZWZhdWx0UmFuZ2VbOF0gPSB7IDAs
IDEsIDAsIDEsIDAsIDEsIDAsIDEgfTsKKworICAgIC8vIEZJWE1FOiBGaXggY2lyY3VsYXIgcmVm
LgorICAgIGN1c3RvbUNHR3JhZGllbnQucmVmKCk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0dGdW5j
dGlvbkNyZWF0ZSgmY3VzdG9tQ0dHcmFkaWVudCwgMSwgZG9tYWluLCA0LCBkZWZhdWx0UmFuZ2Us
ICZjYWxsYmFja3MpKTsKK30KKworUmV0YWluUHRyPENHRnVuY3Rpb25SZWY+IEN1c3RvbUNHR3Jh
ZGllbnQ6OmluaXRpYWxpemVGdW5jdGlvbigpCit7CisgICAgcmV0dXJuIGNyZWF0ZUNHRnVuY3Rp
b24oKnRoaXMpOworfQorCitDR0NvbG9yU3BhY2VSZWYgQ3VzdG9tQ0dHcmFkaWVudDo6Y29sb3JT
cGFjZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKTsK
K30KKwordm9pZCBHcmFkaWVudDo6Y3JlYXRlQ3VzdG9tQ0dHcmFkaWVudCgpCit7CisgICAgYXV0
byB0b3RhbE51bWJlck9mU3RvcHMgPSBtX3N0b3BzLnNpemUoKTsKKyAgICBib29sIGhhc1plcm8g
PSBmYWxzZTsKKyAgICBib29sIGhhc09uZSA9IGZhbHNlOworICAgIGJvb2wgaXNTb3J0ZWQgPSB0
cnVlOworCisgICAgZmxvYXQgcHJldmlvdXNPZmZzZXQgPSAtSU5GSU5JVFk7CisKKyAgICBmb3Ig
KGNvbnN0IGF1dG8mIHN0b3AgOiBtX3N0b3BzKSB7CisgICAgICAgIGF1dG8gb2Zmc2V0ID0gc3Rv
cC5vZmZzZXQ7CisgICAgICAgIEFTU0VSVChvZmZzZXQgPj0gMCk7CisgICAgICAgIEFTU0VSVChv
ZmZzZXQgPD0gMSk7CisgICAgICAgIAorICAgICAgICBpZiAob2Zmc2V0ID09IDApCisgICAgICAg
ICAgICBoYXNaZXJvID0gdHJ1ZTsKKyAgICAgICAgZWxzZSBpZiAob2Zmc2V0ID09IDEpCisgICAg
ICAgICAgICBoYXNPbmUgPSB0cnVlOworCisgICAgICAgIGlmIChwcmV2aW91c09mZnNldCA+IG9m
ZnNldCkKKyAgICAgICAgICAgIGlzU29ydGVkID0gZmFsc2U7CisKKyAgICAgICAgcHJldmlvdXNP
ZmZzZXQgPSBvZmZzZXQ7CisgICAgfQorCisgICAgaWYgKCFoYXNaZXJvKQorICAgICAgICB0b3Rh
bE51bWJlck9mU3RvcHMrKzsKKworICAgIGlmICghaGFzT25lKQorICAgICAgICB0b3RhbE51bWJl
ck9mU3RvcHMrKzsKKworICAgIGlmICghaXNTb3J0ZWQpCisgICAgICAgIHNvcnRTdG9wcygpOwor
CisgICAgVmVjdG9yPENvbG9yQ29udmVydGVkVG9JbnRlcnBvbGF0aW9uQ29sb3JTcGFjZVN0b3A+
IGNvbnZlcnRlZFN0b3BzOworICAgIGNvbnZlcnRlZFN0b3BzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkodG90YWxOdW1iZXJPZlN0b3BzKTsKKworICAgIGlmICghaGFzWmVybykgeworICAgICAgICBj
b252ZXJ0ZWRTdG9wcy51bmNoZWNrZWRBcHBlbmQoeworICAgICAgICAgICAgLm9mZnNldCA9IDAu
MGYsCisgICAgICAgICAgICAuY29sb3JDb21wb25lbnRzID0geyAwLjBmLCAwLjBmLCAwLjBmLCAw
LjBmIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZm9yIChjb25zdCBhdXRvJiBzdG9wIDog
bV9zdG9wcykgeworICAgICAgICBjb252ZXJ0ZWRTdG9wcy51bmNoZWNrZWRBcHBlbmQoeworICAg
ICAgICAgICAgLm9mZnNldCA9IHN0b3Aub2Zmc2V0LAorICAgICAgICAgICAgLmNvbG9yQ29tcG9u
ZW50cyA9IHN0b3AuY29sb3IudG9Db2xvckNvbXBvbmVudHNJbkNvbG9yU3BhY2UoQ29sb3JTcGFj
ZTo6U1JHQikgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGFjdHVhbGx5IGJlIHRoZSBjb2xvciBzcGFj
ZSB3ZSB3aWxsIGJlIGludGVycG9sYXRpbmcgaW4uIFNob3VsZCBwcm9iYWJseSBhbHNvIGludGVy
cG9sYXRlIGluIHVuY2xhbXBlZCBTUkdCIHdoZW4gbmVlZGVkLgorICAgICAgICB9KTsKKyAgICB9
CisKKyAgICBpZiAoIWhhc09uZSkgeworICAgICAgICBjb252ZXJ0ZWRTdG9wcy51bmNoZWNrZWRB
cHBlbmQoeworICAgICAgICAgICAgLm9mZnNldCA9IDEuMGYsCisgICAgICAgICAgICAuY29sb3JD
b21wb25lbnRzID0gY29udmVydGVkU3RvcHMubGFzdCgpLmNvbG9yQ29tcG9uZW50cworICAgICAg
ICB9KTsKKyAgICB9CisKKyAgICBpZiAoIWhhc1plcm8pCisgICAgICAgIGNvbnZlcnRlZFN0b3Bz
WzBdLmNvbG9yQ29tcG9uZW50cyA9IGNvbnZlcnRlZFN0b3BzWzFdLmNvbG9yQ29tcG9uZW50czsK
KworICAgIG1fZ3JhZGllbnQgPSBDdXN0b21DR0dyYWRpZW50OjpjcmVhdGUobV9jb2xvckludGVy
cG9sYXRpb25NZXRob2QsIFdURk1vdmUoY29udmVydGVkU3RvcHMpKTsKK30KKworc3RhdGljIHZv
aWQgZHJhd0xpbmVhckdyYWRpZW50KENHQ29udGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQsIEN1c3Rv
bUNHR3JhZGllbnQmIGdyYWRpZW50LCBDR1BvaW50IHN0YXJ0UG9pbnQsIENHUG9pbnQgZW5kUG9p
bnQsIENHR3JhZGllbnREcmF3aW5nT3B0aW9ucyBvcHRpb25zKQoreworICAgIGJvb2wgc3RhcnRF
eHRlbmQgPSAob3B0aW9ucyAmIGtDR0dyYWRpZW50RHJhd3NCZWZvcmVTdGFydExvY2F0aW9uKSAh
PSAwOworICAgIGJvb2wgZW5kRXh0ZW5kID0gKG9wdGlvbnMgJiBrQ0dHcmFkaWVudERyYXdzQWZ0
ZXJFbmRMb2NhdGlvbikgIT0gMDsKKworICAgIGF1dG8gc2hhZGluZyA9IGFkb3B0Q0YoQ0dTaGFk
aW5nQ3JlYXRlQXhpYWwoZ3JhZGllbnQuY29sb3JTcGFjZSgpLCBzdGFydFBvaW50LCBlbmRQb2lu
dCwgZ3JhZGllbnQuZnVuY3Rpb24oKSwgc3RhcnRFeHRlbmQsIGVuZEV4dGVuZCkpOworICAgIENH
Q29udGV4dERyYXdTaGFkaW5nKHBsYXRmb3JtQ29udGV4dCwgc2hhZGluZy5nZXQoKSk7Cit9CisK
K3N0YXRpYyB2b2lkIGRyYXdSYWRpYWxHcmFkaWVudChDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250
ZXh0LCBDdXN0b21DR0dyYWRpZW50JiBncmFkaWVudCwgQ0dQb2ludCBzdGFydENlbnRlciwgQ0dG
bG9hdCBzdGFydFJhZGl1cywgQ0dQb2ludCBlbmRDZW50ZXIsIENHRmxvYXQgZW5kUmFkaXVzLCBD
R0dyYWRpZW50RHJhd2luZ09wdGlvbnMgb3B0aW9ucykKK3sKKyAgICBib29sIHN0YXJ0RXh0ZW5k
ID0gKG9wdGlvbnMgJiBrQ0dHcmFkaWVudERyYXdzQmVmb3JlU3RhcnRMb2NhdGlvbikgIT0gMDsK
KyAgICBib29sIGVuZEV4dGVuZCA9IChvcHRpb25zICYga0NHR3JhZGllbnREcmF3c0FmdGVyRW5k
TG9jYXRpb24pICE9IDA7CisKKyAgICBhdXRvIHNoYWRpbmcgPSBhZG9wdENGKENHU2hhZGluZ0Ny
ZWF0ZVJhZGlhbChncmFkaWVudC5jb2xvclNwYWNlKCksIHN0YXJ0Q2VudGVyLCBzdGFydFJhZGl1
cywgZW5kQ2VudGVyLCBlbmRSYWRpdXMsIGdyYWRpZW50LmZ1bmN0aW9uKCksIHN0YXJ0RXh0ZW5k
LCBlbmRFeHRlbmQpKTsKKyAgICBDR0NvbnRleHREcmF3U2hhZGluZyhwbGF0Zm9ybUNvbnRleHQs
IHNoYWRpbmcuZ2V0KCkpOworfQorCisvLyBGSVhNRTogU2VlbXMgbGlrZSB0aGlzIHNob3VsZCBi
ZSBIQVZFKENHX0NPTlRFWFRfRFJBV19DT05JQ19HUkFESUVOVCkuCisvLyBGSVhNRTogQ2FuIHdl
IGNoYW5nZSB0dk9TIHRvIGJlIGxpa2UgdGhlIG90aGVyIENvY29hIHBsYXRmb3Jtcz8KKyNpZiBQ
TEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKEFQUExFVFYpCitzdGF0aWMgdm9pZCBkcmF3Q29u
aWNHcmFkaWVudChDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250ZXh0LCBDdXN0b21DR0dyYWRpZW50
JiBncmFkaWVudCwgQ0dQb2ludCBjZW50ZXIsIENHRmxvYXQgYW5nbGUpCit7CisgICAgYXV0byBz
aGFkaW5nID0gYWRvcHRDRihDR1NoYWRpbmdDcmVhdGVDb25pYyhncmFkaWVudC5jb2xvclNwYWNl
KCksIGNlbnRlciwgYW5nbGUsIGdyYWRpZW50LmZ1bmN0aW9uKCkpKTsKKyAgICBDR0NvbnRleHRE
cmF3U2hhZGluZyhwbGF0Zm9ybUNvbnRleHQsIHNoYWRpbmcuZ2V0KCkpOworfQorI2VuZGlmCisK
IHZvaWQgR3JhZGllbnQ6OmZpbGwoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIHJlY3QpCiB7CiAgICAgY29udGV4dC5jbGlwKHJlY3QpOwpAQCAtMTExLDcgKzI4NCw3
IEBAIHZvaWQgR3JhZGllbnQ6OnBhaW50KENHQ29udGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQpCiAg
ICAgQ0dHcmFkaWVudERyYXdpbmdPcHRpb25zIGV4dGVuZE9wdGlvbnMgPSBrQ0dHcmFkaWVudERy
YXdzQmVmb3JlU3RhcnRMb2NhdGlvbiB8IGtDR0dyYWRpZW50RHJhd3NBZnRlckVuZExvY2F0aW9u
OwogCiAgICAgaWYgKCFtX2dyYWRpZW50KQotICAgICAgICBjcmVhdGVDR0dyYWRpZW50KCk7Cisg
ICAgICAgIGNyZWF0ZUN1c3RvbUNHR3JhZGllbnQoKTsKIAogICAgIFdURjo6c3dpdGNoT24obV9k
YXRhLAogICAgICAgICBbJl0gKGNvbnN0IExpbmVhckRhdGEmIGRhdGEpIHsKQEAgLTEzOSwxMSAr
MzEyLDExIEBAIHZvaWQgR3JhZGllbnQ6OnBhaW50KENHQ29udGV4dFJlZiBwbGF0Zm9ybUNvbnRl
eHQpCiAgICAgICAgICAgICAgICAgaWYgKENHRkFicyhkeCkgPCBwaXhlbFNpemUpCiAgICAgICAg
ICAgICAgICAgICAgIGR4ID0gZHggPCAwID8gLXBpeGVsU2l6ZSA6IHBpeGVsU2l6ZTsKIAotICAg
ICAgICAgICAgICAgIGF1dG8gZHJhd0xpbmVhckdyYWRpZW50ID0gWyZdKENHRmxvYXQgc3RhcnQs
IENHRmxvYXQgZW5kLCBib29sIGZsaXApIHsKKyAgICAgICAgICAgICAgICBhdXRvIGRyYXdMaW5l
YXJHcmFkaWVudFdpdGhPcHRpb25hbEZsaXAgPSBbJl0oQ0dGbG9hdCBzdGFydCwgQ0dGbG9hdCBl
bmQsIGJvb2wgZmxpcCkgewogICAgICAgICAgICAgICAgICAgICBDR1BvaW50IGxlZnQgPSBDR1Bv
aW50TWFrZShmbGlwID8gZW5kIDogc3RhcnQsIDApOwogICAgICAgICAgICAgICAgICAgICBDR1Bv
aW50IHJpZ2h0ID0gQ0dQb2ludE1ha2UoZmxpcCA/IHN0YXJ0IDogZW5kLCAwKTsKIAotICAgICAg
ICAgICAgICAgICAgICBDR0NvbnRleHREcmF3TGluZWFyR3JhZGllbnQocGxhdGZvcm1Db250ZXh0
LCBtX2dyYWRpZW50LmdldCgpLCBsZWZ0LCByaWdodCwgZXh0ZW5kT3B0aW9ucyk7CisgICAgICAg
ICAgICAgICAgICAgIGRyYXdMaW5lYXJHcmFkaWVudChwbGF0Zm9ybUNvbnRleHQsICptX2dyYWRp
ZW50LCBsZWZ0LCByaWdodCwgZXh0ZW5kT3B0aW9ucyk7CiAgICAgICAgICAgICAgICAgfTsKIAog
ICAgICAgICAgICAgICAgIGF1dG8gaXNMZWZ0T2YgPSBbXShDR0Zsb2F0IHN0YXJ0LCBDR0Zsb2F0
IGVuZCwgQ0dSZWN0IGJvdW5kaW5nQm94KSAtPiBib29sIHsKQEAgLTE3MCw3ICszNDMsNyBAQCB2
b2lkIEdyYWRpZW50OjpwYWludChDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250ZXh0KQogCiAgICAg
ICAgICAgICAgICAgLy8gRHJhdyBncmFkaWVudCBmb3J3YXJkIHRpbGwgdGhlIHBvaW50cyBhcmUg
b3V0c2lkZSBib3VuZGluZ0JveC4KICAgICAgICAgICAgICAgICBmb3IgKDsgaXNJbnRlcnNlY3Rp
bmcoc3RhcnQsIHN0YXJ0ICsgZHgsIGJvdW5kaW5nQm94KTsgc3RhcnQgKz0gZHgpIHsKLSAgICAg
ICAgICAgICAgICAgICAgZHJhd0xpbmVhckdyYWRpZW50KHN0YXJ0LCBzdGFydCArIGR4LCBmbGlw
KTsKKyAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmVhckdyYWRpZW50V2l0aE9wdGlvbmFsRmxp
cChzdGFydCwgc3RhcnQgKyBkeCwgZmxpcCk7CiAgICAgICAgICAgICAgICAgICAgIGZsaXAgPSAh
ZmxpcCAmJiBtX3NwcmVhZE1ldGhvZCA9PSBHcmFkaWVudFNwcmVhZE1ldGhvZDo6UmVmbGVjdDsK
ICAgICAgICAgICAgICAgICB9CiAKQEAgLTE4NiwxNCArMzU5LDEzIEBAIHZvaWQgR3JhZGllbnQ6
OnBhaW50KENHQ29udGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQpCiAKICAgICAgICAgICAgICAgICAv
LyBEcmF3IGdyYWRpZW50IGJhY2t3YXJkIHRpbGwgdGhlIHBvaW50cyBhcmUgb3V0c2lkZSBib3Vu
ZGluZ0JveC4KICAgICAgICAgICAgICAgICBmb3IgKDsgaXNJbnRlcnNlY3RpbmcoZW5kLCBlbmQg
LSBkeCwgYm91bmRpbmdCb3gpOyBlbmQgLT0gZHgpIHsKLSAgICAgICAgICAgICAgICAgICAgZHJh
d0xpbmVhckdyYWRpZW50KGVuZCAtIGR4LCBlbmQsIGZsaXApOworICAgICAgICAgICAgICAgICAg
ICBkcmF3TGluZWFyR3JhZGllbnRXaXRoT3B0aW9uYWxGbGlwKGVuZCAtIGR4LCBlbmQsIGZsaXAp
OwogICAgICAgICAgICAgICAgICAgICBmbGlwID0gIWZsaXAgJiYgbV9zcHJlYWRNZXRob2QgPT0g
R3JhZGllbnRTcHJlYWRNZXRob2Q6OlJlZmxlY3Q7CiAgICAgICAgICAgICAgICAgfQotCiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIEdyYWRp
ZW50U3ByZWFkTWV0aG9kOjpQYWQ6Ci0gICAgICAgICAgICAgICAgQ0dDb250ZXh0RHJhd0xpbmVh
ckdyYWRpZW50KHBsYXRmb3JtQ29udGV4dCwgbV9ncmFkaWVudC5nZXQoKSwgZGF0YS5wb2ludDAs
IGRhdGEucG9pbnQxLCBleHRlbmRPcHRpb25zKTsKKyAgICAgICAgICAgICAgICBkcmF3TGluZWFy
R3JhZGllbnQocGxhdGZvcm1Db250ZXh0LCAqbV9ncmFkaWVudCwgZGF0YS5wb2ludDAsIGRhdGEu
cG9pbnQxLCBleHRlbmRPcHRpb25zKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSwKICAgICAg
ICAgWyZdIChjb25zdCBSYWRpYWxEYXRhJiBkYXRhKSB7CkBAIC0yMDgsNyArMzgwLDcgQEAgdm9p
ZCBHcmFkaWVudDo6cGFpbnQoQ0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dCkKICAgICAgICAg
ICAgICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0ocGxhdGZvcm1Db250ZXh0LCAtZGF0YS5wb2lu
dDAueCgpLCAtZGF0YS5wb2ludDAueSgpKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
Q0dDb250ZXh0RHJhd1JhZGlhbEdyYWRpZW50KHBsYXRmb3JtQ29udGV4dCwgbV9ncmFkaWVudC5n
ZXQoKSwgZGF0YS5wb2ludDAsIGRhdGEuc3RhcnRSYWRpdXMsIGRhdGEucG9pbnQxLCBkYXRhLmVu
ZFJhZGl1cywgZXh0ZW5kT3B0aW9ucyk7CisgICAgICAgICAgICBkcmF3UmFkaWFsR3JhZGllbnQo
cGxhdGZvcm1Db250ZXh0LCAqbV9ncmFkaWVudCwgZGF0YS5wb2ludDAsIGRhdGEuc3RhcnRSYWRp
dXMsIGRhdGEucG9pbnQxLCBkYXRhLmVuZFJhZGl1cywgZXh0ZW5kT3B0aW9ucyk7CiAKICAgICAg
ICAgICAgIGlmIChuZWVkU2NhbGluZykKICAgICAgICAgICAgICAgICBDR0NvbnRleHRSZXN0b3Jl
R1N0YXRlKHBsYXRmb3JtQ29udGV4dCk7CkBAIC0yMjEsNyArMzkzLDcgQEAgdm9pZCBHcmFkaWVu
dDo6cGFpbnQoQ0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dCkKICAgICAgICAgICAgIENHQ29u
dGV4dFRyYW5zbGF0ZUNUTShwbGF0Zm9ybUNvbnRleHQsIGRhdGEucG9pbnQwLngoKSwgZGF0YS5w
b2ludDAueSgpKTsKICAgICAgICAgICAgIENHQ29udGV4dFJvdGF0ZUNUTShwbGF0Zm9ybUNvbnRl
eHQsIChDR0Zsb2F0KS1NX1BJXzIpOwogICAgICAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RN
KHBsYXRmb3JtQ29udGV4dCwgLWRhdGEucG9pbnQwLngoKSwgLWRhdGEucG9pbnQwLnkoKSk7Ci0g
ICAgICAgICAgICBDR0NvbnRleHREcmF3Q29uaWNHcmFkaWVudChwbGF0Zm9ybUNvbnRleHQsIG1f
Z3JhZGllbnQuZ2V0KCksIGRhdGEucG9pbnQwLCBkYXRhLmFuZ2xlUmFkaWFucyk7CisgICAgICAg
ICAgICBkcmF3Q29uaWNHcmFkaWVudChwbGF0Zm9ybUNvbnRleHQsICptX2dyYWRpZW50LCBkYXRh
LnBvaW50MCwgZGF0YS5hbmdsZVJhZGlhbnMpOwogICAgICAgICAgICAgQ0dDb250ZXh0UmVzdG9y
ZUdTdGF0ZShwbGF0Zm9ybUNvbnRleHQpOwogI2Vsc2UKICAgICAgICAgICAgIFVOVVNFRF9QQVJB
TShkYXRhKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447567</attachid>
            <date>2021-12-19 17:48:16 -0800</date>
            <delta_ts>2021-12-19 17:48:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234492-20211219174815.patch</filename>
            <type>text/plain</type>
            <size>18164</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDIxLTEyLTE5ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgQ0dTaGFkaW5nUmVmIGJhc2Vk
IGltcGxlbWVudGF0aW9uIG9mIEdyYWRpZW50IGFzIHN0ZXBwaW5nIHN0b25lIHRvd2FyZCBwcmVt
dWx0aXBsaWVkIGludGVycG9sYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNDQ5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtXSVBdIFRoaXMgY29tcGxldGVseSByZXBsYWNlcyB0aGUgQ0dHcmFk
aWVudFJlZiBpbXBsZW1lbnRhdGlvbi4gV2UgbmVlZCB0byBtYWtlIHRoaXMKKyAgICAgICAgY29u
ZGl0aW9uYWwgZm9yIGl0IHRvIGJlIHJlYWwuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvckNvbXBvbmVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yQ29tcG9uZW50czo6
c2l6ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkN1c3RvbUNHR3JhZGllbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDdXN0b21DR0dyYWRpZW50OjpmdW5jdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDdXN0b21DR0dyYWRpZW50Ojpjb2xvckludGVycG9sYXRpb25NZXRob2QgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VzdG9tQ0dHcmFkaWVudDo6c3RvcHMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q3VzdG9tQ0dHcmFkaWVudDo6Q3VzdG9tQ0dHcmFkaWVudCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1
bnByZW11bHRpcGxpZWRTaGFkaW5nRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Q0dGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21DR0dyYWRpZW50Ojppbml0aWFs
aXplRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tQ0dHcmFkaWVudDo6Y29sb3JT
cGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudDo6Y3JlYXRlQ3VzdG9tQ0dH
cmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpkcmF3TGluZWFyR3JhZGllbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6ZHJhd1JhZGlhbEdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdD
b25pY0dyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50OjpwYWludCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFkaWVudDo6ZmlsbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVu
dDo6aGFzT25seUJvdW5kZWRTUkdCQ29sb3JTdG9wcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpHcmFkaWVudDo6Y3JlYXRlQ0dHcmFkaWVudCk6IERlbGV0ZWQuCisKIDIwMjEt
MTItMTggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEhhc2ggdGFi
bGVzLCByZWFkL3dyaXRlLCBhbmQgaGVhcCBtZW1vcnkgYXJlIHVzZWQgdW5uZWNlc3NhcmlseSwg
d2hpY2ggbWF5IGh1cnQgcGVyZm9ybWFuY2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
QXBwbGVXaW4uY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBs
ZVdpbi5jbWFrZQkocmV2aXNpb24gMjg3MjMzKQorKysgU291cmNlL1dlYkNvcmUvUGxhdGZvcm1B
cHBsZVdpbi5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3IEBAIGVsc2UgKCkK
ICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRSZWN0Q0cuY3BwCiAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0U2l6ZUNHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFkaWVudENHLmNwcAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFk
aWVudENHQWRhcHRvci5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0R0xDRy5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0Q0cuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuY3Bw
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQkocmV2aXNpb24gMjg3MjMzKQorKysgU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTI5MSw2ICsy
OTEsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9GbG9hdFJlY3RDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFNpemVD
Ry5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENHLmNwcAorICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0dBZGFwdG9yLmNwcAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNl
UG9vbC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjg3MjMzKQor
KysgU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzQ4
LDYgKzM0OCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0UG9pbnRDRy5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0Zsb2F0UmVjdENHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxv
YXRTaXplQ0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENHLmNwcAorcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDR0FkYXB0b3IuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dEdMQ0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmNwcApJbmRl
eDogU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9QQUwvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODcyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMTItMTkg
IFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBDR1NoYWRpbmdS
ZWYgYmFzZWQgaW1wbGVtZW50YXRpb24gb2YgR3JhZGllbnQgYXMgc3RlcHBpbmcgc3RvbmUgdG93
YXJkIHByZW11bHRpcGxpZWQgaW50ZXJwb2xhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0NDkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oOgor
ICAgICAgICBBZGQgQ0dTaGFkaW5nUmVmIFNQSSBmb3IgY3JlYXRpbmcgY29uaWMgc2hhZGluZ3Mu
CisKIDIwMjEtMTItMTYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4NzA1Ni4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCShyZXZpc2lv
biAyODcyMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NT
UEkuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgPENvcmVHcmFw
aGljcy9DR0ZvbnRDYWNoZS5oPgogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR1BhdGhQcml2YXRl
Lmg+CiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljc1ByaXZhdGUuaD4KKyNpbmNs
dWRlIDxDb3JlR3JhcGhpY3MvQ0dTaGFkaW5nUHJpdmF0ZS5oPgogI2luY2x1ZGUgPENvcmVHcmFw
aGljcy9DR1N0eWxlUHJpdmF0ZS5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMzIzLDYgKzMy
NCwxNiBAQCB2b2lkIENHQ29udGV4dFNldFN0eWxlKENHQ29udGV4dFJlZiwgQ0dTdHlsZVJlZik7
CiB2b2lkIENHQ29udGV4dERyYXdDb25pY0dyYWRpZW50KENHQ29udGV4dFJlZiwgQ0dHcmFkaWVu
dFJlZiwgQ0dQb2ludCBjZW50ZXIsIENHRmxvYXQgYW5nbGUpOwogdm9pZCBDR1BhdGhBZGRVbmV2
ZW5Db3JuZXJzUm91bmRlZFJlY3QoQ0dNdXRhYmxlUGF0aFJlZiwgY29uc3QgQ0dBZmZpbmVUcmFu
c2Zvcm0gKiwgQ0dSZWN0LCBjb25zdCBDR1NpemUgY29ybmVyc1s0XSk7CiBib29sIENHRm9udFJl
bmRlcmluZ0dldEZvbnRTbW9vdGhpbmdEaXNhYmxlZCh2b2lkKTsKK0NHU2hhZGluZ1JlZiBDR1No
YWRpbmdDcmVhdGVDb25pYyhDR0NvbG9yU3BhY2VSZWYsIENHUG9pbnQgY2VudGVyLCBDR0Zsb2F0
IGFuZ2xlLCBDR0Z1bmN0aW9uUmVmKTsKKworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19HUkFESUVO
VF9DUkVBVEVfV0lUSF9PUFRJT05TKQorQ0dHcmFkaWVudFJlZiBDR0dyYWRpZW50Q3JlYXRlV2l0
aENvbG9yQ29tcG9uZW50c0FuZE9wdGlvbnMoQ0dDb2xvclNwYWNlUmVmLCBjb25zdCBDR0Zsb2F0
KiwgY29uc3QgQ0dGbG9hdCosIHNpemVfdCwgQ0ZEaWN0aW9uYXJ5UmVmKTsKK0NHR3JhZGllbnRS
ZWYgQ0dHcmFkaWVudENyZWF0ZVdpdGhDb2xvcnNBbmRPcHRpb25zKENHQ29sb3JTcGFjZVJlZiwg
Q0ZBcnJheVJlZiwgY29uc3QgQ0dGbG9hdCosIENGRGljdGlvbmFyeVJlZik7CisjZW5kaWYKKwor
I2lmIEhBVkUoQ09SRV9HUkFQSElDU19QUkVNVUxUSVBMSUVEX0lOVEVSUE9MQVRJT05fR1JBRElF
TlQpCitleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NHR3JhZGllbnRJbnRlcnBvbGF0ZXNQcmVt
dWx0aXBsaWVkOworI2VuZGlmCiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKIApJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMjg3MjMzKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MDgxLDYgKzQwODEsNyBAQAogCQlCQzEy
NEYwMDBDMjY0NDdBMDA5RTIzNDkgLyogSlNCYXJQcm9wLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzEyNEVGRTBDMjY0NDdBMDA5RTIzNDkgLyogSlNC
YXJQcm9wLmggKi87IH07CiAJCUJDMTI4QTczMTM3Qzg2N0MwMENBQzg0NSAvKiBSZW5kZXJHcmlk
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzEyOEE3
MjEzN0M4NjdDMDBDQUM4NDUgLyogUmVuZGVyR3JpZC5oICovOyB9OwogCQlCQzE0MDI4QjBFODM2
ODA4MDAzMTk3MTcgLyogU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMTQwMjg5MEU4MzY4MDgwMDMxOTcxNyAv
KiBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUJDMTlDREYyMjc2RkZDNkQwMDUzRjczNCAvKiBHcmFkaWVu
dENHQWRhcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkMxOUNERjAyNzZGRkIyNjAwNTNGNzM0IC8qIEdyYWRpZW50Q0dBZGFwdG9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMxQTdEOTgxOEZD
QjVCMDAwNDIxODc5IC8qIFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzFBN0Q5NjE4RkNC
NUIwMDA0MjE4NzkgLyogUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaCAqLzsg
fTsKIAkJQkMyMjcyODcwRTgyRTcwNzAwRTdGOTc1IC8qIFN0eWxlUmVmbGVjdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyMjcyODYwRTgyRTcw
NzAwRTdGOTc1IC8qIFN0eWxlUmVmbGVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMjI3MkEyMEU4MkU4N0MwMEU3Rjk3NSAvKiBDdXJz
b3JEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzIyNzJBMTBFODJFODdDMDBFN0Y5NzUgLyogQ3Vyc29yRGF0YS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNTExMyw2ICsxNTExNCw4IEBACiAJ
CUJDMTI4QjAwMTM3QzhENDYwMENBQzg0NSAvKiBSZW5kZXJHcmlkLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckdyaWQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQzE0MDI4ODBFODM2ODA4MDAzMTk3MTcgLyogU2Nyb2xsYmFyVGhlbWVD
b21wb3NpdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xs
YmFyVGhlbWVDb21wb3NpdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzE0
MDI4OTBFODM2ODA4MDAzMTk3MTcgLyogU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMxOUNERUYyNzZGRkIyNjAwNTNGNzM0IC8qIEdy
YWRpZW50Q0dBZGFwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYWRpZW50Q0dBZGFwdG9y
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMxOUNERjAyNzZGRkIyNjAwNTNG
NzM0IC8qIEdyYWRpZW50Q0dBZGFwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYWRpZW50Q0dBZGFw
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMUE3RDk1MThGQ0I1QjAwMDQy
MTg3OSAvKiBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFj
ZWhvbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMUE3RDk2MThGQ0I1
QjAwMDQyMTg3OSAvKiBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFj
ZWhvbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzIwRkI3RTBDMEU4RTZD
MDBEMTQ0N0YgLyogSlNEZXByZWNhdGVkQ1NTT01WYWx1ZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEZXByZWNhdGVkQ1NTT01WYWx1ZUN1c3RvbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODUzNCw2ICsyODUzNyw4IEBACiAJ
CQkJQjI3NTM1MkMwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVjdENHLmNwcCAqLywKIAkJCQlC
Mjc1MzUyRDBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRTaXplQ0cuY3BwICovLAogCQkJCUJDNTND
NjBBMERBNTZDRjEwMDIxRUI1RCAvKiBHcmFkaWVudENHLmNwcCAqLywKKwkJCQlCQzE5Q0RFRjI3
NkZGQjI2MDA1M0Y3MzQgLyogR3JhZGllbnRDR0FkYXB0b3IuY3BwICovLAorCQkJCUJDMTlDREYw
Mjc2RkZCMjYwMDUzRjczNCAvKiBHcmFkaWVudENHQWRhcHRvci5oICovLAogCQkJCUIyRUQ5Nzcw
MEIxRjU1Q0UwMDI1N0QwRiAvKiBHcmFwaGljc0NvbnRleHRDRy5jcHAgKi8sCiAJCQkJOTM0OTA3
RTMxMjVCQkJDODAwN0YyM0EwIC8qIEdyYXBoaWNzQ29udGV4dENHLmggKi8sCiAJCQkJNkUyMUM2
QzExMTI2MzM5OTAwQTdCRTAyIC8qIEdyYXBoaWNzQ29udGV4dEdMQ0cuY3BwICovLApAQCAtMzMz
MDQsNiArMzMzMDksNyBAQAogCQkJCTgzNzg4NzgyMjREOEE2MDkwMDBENEE1QiAvKiBBdWRpb0J1
ZmZlclNvdXJjZU9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDdDMTJCMDI2Rjcw
MEMxQTM1OSAvKiBBdWRpb0J1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwN0UxMkIwMjZG
NzAwQzFBMzU5IC8qIEF1ZGlvQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMxOUNERjIy
NzZGRkM2RDAwNTNGNzM0IC8qIEdyYWRpZW50Q0dBZGFwdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDRDNFRUYzQTI1Nzk5Rjg4MDA2NTYzQkIgLyogQXVkaW9Db25maWd1cmF0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGRDMxNjAwNTEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Db250ZXh0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFNzg1RDk2MjI0QjdGNzM1MDAxNERCMjEgLyogQXVkaW9Db250
ZXh0TGF0ZW5jeUNhdGVnb3J5LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29tcG9uZW50cy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29tcG9uZW50cy5oCShyZXZpc2lvbiAy
ODcyMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbXBvbmVu
dHMuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsOCBAQCBzdHJ1Y3QgQ29sb3JDb21wb25l
bnRzIHsKICAgICB0ZW1wbGF0ZTxzaXplX3QgU3RhcnQsIHNpemVfdCBFbmQ+CiAgICAgY29uc3Rl
eHByIENvbG9yQ29tcG9uZW50czxULCBFbmQgLSBTdGFydD4gc3Vic2V0KCkgY29uc3Q7CiAKKyAg
ICBjb25zdGV4cHIgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBTaXplOyB9CisKICAgICBz
dGQ6OmFycmF5PFQsIE4+IGNvbXBvbmVudHM7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuY3BwCShyZXZpc2lvbiAyODcyMzMpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDYgKzMyLDEwIEBACiAjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaGVyLmg+CiAKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiR3JhZGllbnRD
R0FkYXB0b3IuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlZjxHcmFkaWVu
dD4gR3JhZGllbnQ6OmNyZWF0ZShEYXRhJiYgZGF0YSwgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9k
IGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCkKQEAgLTQ0LDYgKzQ4LDggQEAgR3JhZGllbnQ6Okdy
YWRpZW50KERhdGEmJiBkYXRhLCBDb2xvckludGVycG9sYXRpb25NZXRoCiAgICAgLCBtX2NvbG9y
SW50ZXJwb2xhdGlvbk1ldGhvZCB7IGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCB9CiB7CiB9CisK
K0dyYWRpZW50Ojp+R3JhZGllbnQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgR3JhZGllbnQ6OmFkanVz
dFBhcmFtZXRlcnNGb3JUaWxlZERyYXdpbmcoRmxvYXRTaXplJiBzaXplLCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZykKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaAkocmV2aXNpb24gMjg3MjMzKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzUsMTcgKzM1LDEyIEBACiAjaW5jbHVkZSA8dmFyaWFudD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2VuZGlm
Ci0KICNpZiBVU0UoRElSRUNUMkQpCiAjaW5jbHVkZSAiQ09NUHRyLmgiCiAjZW5kaWYKIAogI2lm
IFVTRShDRykKIHR5cGVkZWYgc3RydWN0IENHQ29udGV4dCogQ0dDb250ZXh0UmVmOwotdHlwZWRl
ZiBzdHJ1Y3QgQ0dHcmFkaWVudCogQ0dHcmFkaWVudFJlZjsKICNlbmRpZgogCiAjaWYgVVNFKERJ
UkVDVDJEKQpAQCAtNjIsNiArNTcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGbG9h
dFJlY3Q7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiAKK2NsYXNzIEdyYWRpZW50Q0dBZGFwdG9y
OworCiBjbGFzcyBHcmFkaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYWRpZW50PiB7CiBwdWJs
aWM6CiAgICAgc3RydWN0IENvbG9yU3RvcCB7CkBAIC0xMDQsNiArMTAxLDcgQEAgY2xhc3MgR3Jh
ZGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmFkaWVudD4geyAocHVibGljCiAgICAgdXNpbmcg
RGF0YSA9IHN0ZDo6dmFyaWFudDxMaW5lYXJEYXRhLCBSYWRpYWxEYXRhLCBDb25pY0RhdGE+Owog
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxHcmFkaWVudD4gY3JlYXRlKERhdGEmJiwg
Q29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+R3JhZGllbnQo
KTsKIAogICAgIGJvb2wgaXNaZXJvU2l6ZSgpIGNvbnN0OwogCkBAIC0xNDQsMTEgKzE0Miw2IEBA
IGNsYXNzIEdyYWRpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8R3JhZGllbnQ+IHsgKHB1YmxpYwog
ICAgIHZvaWQgc29ydFN0b3BzKCkgY29uc3Q7CiAgICAgdm9pZCBzdG9wc0NoYW5nZWQoKTsKIAot
I2lmIFVTRShDRykKLSAgICB2b2lkIGNyZWF0ZUNHR3JhZGllbnQoKTsKLSAgICBib29sIGhhc09u
bHlCb3VuZGVkU1JHQkNvbG9yU3RvcHMoKSBjb25zdDsKLSNlbmRpZgotCiAgICAgRGF0YSBtX2Rh
dGE7CiAgICAgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIG1fY29sb3JJbnRlcnBvbGF0aW9uTWV0
aG9kOwogICAgIG11dGFibGUgQ29sb3JTdG9wVmVjdG9yIG1fc3RvcHM7CkBAIC0xNTcsNyArMTUw
LDcgQEAgY2xhc3MgR3JhZGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmFkaWVudD4geyAocHVi
bGljCiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX2NhY2hlZEhhc2ggeyAwIH07CiAKICNpZiBVU0Uo
Q0cpCi0gICAgUmV0YWluUHRyPENHR3JhZGllbnRSZWY+IG1fZ3JhZGllbnQ7CisgICAgUmVmUHRy
PEdyYWRpZW50Q0dBZGFwdG9yPiBtX2dyYWRpZW50OwogI2VuZGlmCiAKICNpZiBVU0UoRElSRUNU
MkQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENH
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFkaWVudENHLmNwcAkocmV2aXNpb24gMjg3MjMzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDkgKzI5
LDkgQEAKIAogI2lmIFVTRShDRykKIAorI2luY2x1ZGUgIkdyYWRpZW50Q0dBZGFwdG9yLmgiCiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVH
cmFwaGljc1NQSS5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC00MCw2MSArNDAsNiBAQCB2b2lkIEdyYWRpZW50OjpzdG9wc0NoYW5nZWQo
KQogICAgIG1fZ3JhZGllbnQgPSBudWxscHRyOwogfQogCi1ib29sIEdyYWRpZW50OjpoYXNPbmx5
Qm91bmRlZFNSR0JDb2xvclN0b3BzKCkgY29uc3QKLXsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHN0
b3AgOiBtX3N0b3BzKSB7Ci0gICAgICAgIGlmIChzdG9wLmNvbG9yLmNvbG9yU3BhY2UoKSAhPSBD
b2xvclNwYWNlOjpTUkdCKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBHcmFkaWVudDo6Y3JlYXRlQ0dHcmFkaWVudCgpCi17Ci0g
ICAgc29ydFN0b3BzKCk7Ci0KLSAgICB1bnNpZ25lZCBudW1TdG9wcyA9IG1fc3RvcHMuc2l6ZSgp
OwotCi0gICAgY29uc3QgaW50IHJlc2VydmVkU3RvcHMgPSAzOwotICAgIFZlY3RvcjxDR0Zsb2F0
LCByZXNlcnZlZFN0b3BzPiBsb2NhdGlvbnM7Ci0gICAgbG9jYXRpb25zLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkobnVtU3RvcHMpOwotCi0gICAgLy8gSWYgYWxsIHRoZSBzdG9wcyBhcmUgYm91bmRl
ZCBzUkdCIChhcyByZXByZXNlbnRlZCBieSB0aGUgY29sb3IgaGF2aW5nIHRoZSBjb2xvciBzcGFj
ZQotICAgIC8vIENvbG9yU3BhY2U6OlNSR0IpLCBpdCBpcyBmYXN0ZXIgdG8gY3JlYXRlIGEgZ3Jh
ZGllbnQgdXNpbmcgY29tcG9uZW50cyB0aGFuIENHQ29sb3JzLgotICAgIGlmIChoYXNPbmx5Qm91
bmRlZFNSR0JDb2xvclN0b3BzKCkpIHsKLSAgICAgICAgVmVjdG9yPENHRmxvYXQsIDQgKiByZXNl
cnZlZFN0b3BzPiBjb2xvckNvbXBvbmVudHM7Ci0gICAgICAgIGNvbG9yQ29tcG9uZW50cy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KG51bVN0b3BzICogNCk7Ci0KLSAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBzdG9wIDogbV9zdG9wcykgewotICAgICAgICAgICAgYXV0byBbY29sb3JTcGFjZSwgY29t
cG9uZW50c10gPSBzdG9wLmNvbG9yLmNvbG9yU3BhY2VBbmRDb21wb25lbnRzKCk7Ci0gICAgICAg
ICAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IGNvbXBvbmVudHM7Ci0gICAgICAgICAgICBjb2xvckNv
bXBvbmVudHMudW5jaGVja2VkQXBwZW5kKHIpOwotICAgICAgICAgICAgY29sb3JDb21wb25lbnRz
LnVuY2hlY2tlZEFwcGVuZChnKTsKLSAgICAgICAgICAgIGNvbG9yQ29tcG9uZW50cy51bmNoZWNr
ZWRBcHBlbmQoYik7Ci0gICAgICAgICAgICBjb2xvckNvbXBvbmVudHMudW5jaGVja2VkQXBwZW5k
KGEpOwotCi0gICAgICAgICAgICBsb2NhdGlvbnMudW5jaGVja2VkQXBwZW5kKHN0b3Aub2Zmc2V0
KTsKLSAgICAgICAgfQotCi0gICAgICAgIG1fZ3JhZGllbnQgPSBhZG9wdENGKENHR3JhZGllbnRD
cmVhdGVXaXRoQ29sb3JDb21wb25lbnRzKHNSR0JDb2xvclNwYWNlUmVmKCksIGNvbG9yQ29tcG9u
ZW50cy5kYXRhKCksIGxvY2F0aW9ucy5kYXRhKCksIG51bVN0b3BzKSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBhdXRvIGNvbG9yc0FycmF5ID0gYWRvcHRDRihDRkFycmF5Q3JlYXRl
TXV0YWJsZSgwLCBtX3N0b3BzLnNpemUoKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwotICAg
IGZvciAoY29uc3QgYXV0byYgc3RvcCA6IG1fc3RvcHMpIHsKLSAgICAgICAgQ0ZBcnJheUFwcGVu
ZFZhbHVlKGNvbG9yc0FycmF5LmdldCgpLCBjYWNoZWRDR0NvbG9yKHN0b3AuY29sb3IpLmdldCgp
KTsKLSAgICAgICAgbG9jYXRpb25zLnVuY2hlY2tlZEFwcGVuZChzdG9wLm9mZnNldCk7Ci0gICAg
fQotCi0jaWYgSEFWRShDT1JFX0dSQVBISUNTX0VYVEVOREVEX1NSR0JfQ09MT1JfU1BBQ0UpCi0g
ICAgYXV0byBleHRlbmRlZENvbG9yc0dyYWRpZW50Q29sb3JTcGFjZSA9IGV4dGVuZGVkU1JHQkNv
bG9yU3BhY2VSZWYoKTsKLSNlbHNlCi0gICAgYXV0byBleHRlbmRlZENvbG9yc0dyYWRpZW50Q29s
b3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jZW5kaWYKLQotICAgIG1fZ3JhZGllbnQg
PSBhZG9wdENGKENHR3JhZGllbnRDcmVhdGVXaXRoQ29sb3JzKGV4dGVuZGVkQ29sb3JzR3JhZGll
bnRDb2xvclNwYWNlLCBjb2xvcnNBcnJheS5nZXQoKSwgbG9jYXRpb25zLmRhdGEoKSkpOwotfQot
CiB2b2lkIEdyYWRpZW50OjpmaWxsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiByZWN0KQogewogICAgIGNvbnRleHQuY2xpcChyZWN0KTsKQEAgLTExMCw4ICs1NSwx
MCBAQCB2b2lkIEdyYWRpZW50OjpwYWludChDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250ZXh0KQog
ewogICAgIENHR3JhZGllbnREcmF3aW5nT3B0aW9ucyBleHRlbmRPcHRpb25zID0ga0NHR3JhZGll
bnREcmF3c0JlZm9yZVN0YXJ0TG9jYXRpb24gfCBrQ0dHcmFkaWVudERyYXdzQWZ0ZXJFbmRMb2Nh
dGlvbjsKIAotICAgIGlmICghbV9ncmFkaWVudCkKLSAgICAgICAgY3JlYXRlQ0dHcmFkaWVudCgp
OworICAgIGlmICghbV9ncmFkaWVudCkgeworICAgICAgICBzb3J0U3RvcHMoKTsKKyAgICAgICAg
bV9ncmFkaWVudCA9IEdyYWRpZW50Q0dBZGFwdG9yOjpjcmVhdGUobV9jb2xvckludGVycG9sYXRp
b25NZXRob2QsIG1fc3RvcHMpOworICAgIH0KIAogICAgIFdURjo6c3dpdGNoT24obV9kYXRhLAog
ICAgICAgICBbJl0gKGNvbnN0IExpbmVhckRhdGEmIGRhdGEpIHsKQEAgLTE0Myw3ICs5MCw3IEBA
IHZvaWQgR3JhZGllbnQ6OnBhaW50KENHQ29udGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQpCiAgICAg
ICAgICAgICAgICAgICAgIENHUG9pbnQgbGVmdCA9IENHUG9pbnRNYWtlKGZsaXAgPyBlbmQgOiBz
dGFydCwgMCk7CiAgICAgICAgICAgICAgICAgICAgIENHUG9pbnQgcmlnaHQgPSBDR1BvaW50TWFr
ZShmbGlwID8gc3RhcnQgOiBlbmQsIDApOwogCi0gICAgICAgICAgICAgICAgICAgIENHQ29udGV4
dERyYXdMaW5lYXJHcmFkaWVudChwbGF0Zm9ybUNvbnRleHQsIG1fZ3JhZGllbnQuZ2V0KCksIGxl
ZnQsIHJpZ2h0LCBleHRlbmRPcHRpb25zKTsKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFkaWVu
dC0+ZHJhd0xpbmVhckdyYWRpZW50KHBsYXRmb3JtQ29udGV4dCwgbGVmdCwgcmlnaHQsIGV4dGVu
ZE9wdGlvbnMpOwogICAgICAgICAgICAgICAgIH07CiAKICAgICAgICAgICAgICAgICBhdXRvIGlz
TGVmdE9mID0gW10oQ0dGbG9hdCBzdGFydCwgQ0dGbG9hdCBlbmQsIENHUmVjdCBib3VuZGluZ0Jv
eCkgLT4gYm9vbCB7CkBAIC0xODksMTEgKzEzNiwxMCBAQCB2b2lkIEdyYWRpZW50OjpwYWludChD
R0NvbnRleHRSZWYgcGxhdGZvcm1Db250ZXh0KQogICAgICAgICAgICAgICAgICAgICBkcmF3TGlu
ZWFyR3JhZGllbnQoZW5kIC0gZHgsIGVuZCwgZmxpcCk7CiAgICAgICAgICAgICAgICAgICAgIGZs
aXAgPSAhZmxpcCAmJiBtX3NwcmVhZE1ldGhvZCA9PSBHcmFkaWVudFNwcmVhZE1ldGhvZDo6UmVm
bGVjdDsKICAgICAgICAgICAgICAgICB9Ci0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgR3JhZGllbnRTcHJlYWRNZXRob2Q6OlBhZDoKLSAg
ICAgICAgICAgICAgICBDR0NvbnRleHREcmF3TGluZWFyR3JhZGllbnQocGxhdGZvcm1Db250ZXh0
LCBtX2dyYWRpZW50LmdldCgpLCBkYXRhLnBvaW50MCwgZGF0YS5wb2ludDEsIGV4dGVuZE9wdGlv
bnMpOworICAgICAgICAgICAgICAgIG1fZ3JhZGllbnQtPmRyYXdMaW5lYXJHcmFkaWVudChwbGF0
Zm9ybUNvbnRleHQsIGRhdGEucG9pbnQwLCBkYXRhLnBvaW50MSwgZXh0ZW5kT3B0aW9ucyk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0sCiAgICAgICAgIFsmXSAoY29uc3QgUmFkaWFsRGF0YSYg
ZGF0YSkgewpAQCAtMjA4LDcgKzE1NCw3IEBAIHZvaWQgR3JhZGllbnQ6OnBhaW50KENHQ29udGV4
dFJlZiBwbGF0Zm9ybUNvbnRleHQpCiAgICAgICAgICAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRl
Q1RNKHBsYXRmb3JtQ29udGV4dCwgLWRhdGEucG9pbnQwLngoKSwgLWRhdGEucG9pbnQwLnkoKSk7
CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIENHQ29udGV4dERyYXdSYWRpYWxHcmFkaWVu
dChwbGF0Zm9ybUNvbnRleHQsIG1fZ3JhZGllbnQuZ2V0KCksIGRhdGEucG9pbnQwLCBkYXRhLnN0
YXJ0UmFkaXVzLCBkYXRhLnBvaW50MSwgZGF0YS5lbmRSYWRpdXMsIGV4dGVuZE9wdGlvbnMpOwor
ICAgICAgICAgICAgbV9ncmFkaWVudC0+ZHJhd1JhZGlhbEdyYWRpZW50KHBsYXRmb3JtQ29udGV4
dCwgZGF0YS5wb2ludDAsIGRhdGEuc3RhcnRSYWRpdXMsIGRhdGEucG9pbnQxLCBkYXRhLmVuZFJh
ZGl1cywgZXh0ZW5kT3B0aW9ucyk7CiAKICAgICAgICAgICAgIGlmIChuZWVkU2NhbGluZykKICAg
ICAgICAgICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKHBsYXRmb3JtQ29udGV4dCk7CkBA
IC0yMjEsNyArMTY3LDcgQEAgdm9pZCBHcmFkaWVudDo6cGFpbnQoQ0dDb250ZXh0UmVmIHBsYXRm
b3JtQ29udGV4dCkKICAgICAgICAgICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShwbGF0Zm9ybUNv
bnRleHQsIGRhdGEucG9pbnQwLngoKSwgZGF0YS5wb2ludDAueSgpKTsKICAgICAgICAgICAgIENH
Q29udGV4dFJvdGF0ZUNUTShwbGF0Zm9ybUNvbnRleHQsIChDR0Zsb2F0KS1NX1BJXzIpOwogICAg
ICAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKHBsYXRmb3JtQ29udGV4dCwgLWRhdGEucG9p
bnQwLngoKSwgLWRhdGEucG9pbnQwLnkoKSk7Ci0gICAgICAgICAgICBDR0NvbnRleHREcmF3Q29u
aWNHcmFkaWVudChwbGF0Zm9ybUNvbnRleHQsIG1fZ3JhZGllbnQuZ2V0KCksIGRhdGEucG9pbnQw
LCBkYXRhLmFuZ2xlUmFkaWFucyk7CisgICAgICAgICAgICBtX2dyYWRpZW50LT5kcmF3Q29uaWNH
cmFkaWVudChwbGF0Zm9ybUNvbnRleHQsIGRhdGEucG9pbnQwLCBkYXRhLmFuZ2xlUmFkaWFucyk7
CiAgICAgICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKHBsYXRmb3JtQ29udGV4dCk7CiAj
ZWxzZQogICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGRhdGEpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447568</attachid>
            <date>2021-12-19 17:48:42 -0800</date>
            <delta_ts>2021-12-20 11:31:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234492-20211219174841.patch</filename>
            <type>text/plain</type>
            <size>37646</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDIxLTEyLTE5ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgQ0dTaGFkaW5nUmVmIGJhc2Vk
IGltcGxlbWVudGF0aW9uIG9mIEdyYWRpZW50IGFzIHN0ZXBwaW5nIHN0b25lIHRvd2FyZCBwcmVt
dWx0aXBsaWVkIGludGVycG9sYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNDQ5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtXSVBdIFRoaXMgY29tcGxldGVseSByZXBsYWNlcyB0aGUgQ0dHcmFk
aWVudFJlZiBpbXBsZW1lbnRhdGlvbi4gV2UgbmVlZCB0byBtYWtlIHRoaXMKKyAgICAgICAgY29u
ZGl0aW9uYWwgZm9yIGl0IHRvIGJlIHJlYWwuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvckNvbXBvbmVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yQ29tcG9uZW50czo6
c2l6ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkN1c3RvbUNHR3JhZGllbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDdXN0b21DR0dyYWRpZW50OjpmdW5jdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDdXN0b21DR0dyYWRpZW50Ojpjb2xvckludGVycG9sYXRpb25NZXRob2QgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VzdG9tQ0dHcmFkaWVudDo6c3RvcHMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q3VzdG9tQ0dHcmFkaWVudDo6Q3VzdG9tQ0dHcmFkaWVudCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1
bnByZW11bHRpcGxpZWRTaGFkaW5nRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Q0dGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21DR0dyYWRpZW50Ojppbml0aWFs
aXplRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tQ0dHcmFkaWVudDo6Y29sb3JT
cGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudDo6Y3JlYXRlQ3VzdG9tQ0dH
cmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpkcmF3TGluZWFyR3JhZGllbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6ZHJhd1JhZGlhbEdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdD
b25pY0dyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50OjpwYWludCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFkaWVudDo6ZmlsbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVu
dDo6aGFzT25seUJvdW5kZWRTUkdCQ29sb3JTdG9wcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpHcmFkaWVudDo6Y3JlYXRlQ0dHcmFkaWVudCk6IERlbGV0ZWQuCisKIDIwMjEt
MTItMTggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEhhc2ggdGFi
bGVzLCByZWFkL3dyaXRlLCBhbmQgaGVhcCBtZW1vcnkgYXJlIHVzZWQgdW5uZWNlc3NhcmlseSwg
d2hpY2ggbWF5IGh1cnQgcGVyZm9ybWFuY2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
QXBwbGVXaW4uY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBs
ZVdpbi5jbWFrZQkocmV2aXNpb24gMjg3MjMzKQorKysgU291cmNlL1dlYkNvcmUvUGxhdGZvcm1B
cHBsZVdpbi5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3IEBAIGVsc2UgKCkK
ICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRSZWN0Q0cuY3BwCiAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0U2l6ZUNHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFkaWVudENHLmNwcAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFk
aWVudENHQWRhcHRvci5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0R0xDRy5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0Q0cuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuY3Bw
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQkocmV2aXNpb24gMjg3MjMzKQorKysgU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTI5MSw2ICsy
OTEsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9GbG9hdFJlY3RDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFNpemVD
Ry5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENHLmNwcAorICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0dBZGFwdG9yLmNwcAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNl
UG9vbC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjg3MjMzKQor
KysgU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzQ4
LDYgKzM0OCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0UG9pbnRDRy5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0Zsb2F0UmVjdENHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxv
YXRTaXplQ0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENHLmNwcAorcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDR0FkYXB0b3IuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dEdMQ0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmNwcApJbmRl
eDogU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9QQUwvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODcyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMTItMTkg
IFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBDR1NoYWRpbmdS
ZWYgYmFzZWQgaW1wbGVtZW50YXRpb24gb2YgR3JhZGllbnQgYXMgc3RlcHBpbmcgc3RvbmUgdG93
YXJkIHByZW11bHRpcGxpZWQgaW50ZXJwb2xhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0NDkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oOgor
ICAgICAgICBBZGQgQ0dTaGFkaW5nUmVmIFNQSSBmb3IgY3JlYXRpbmcgY29uaWMgc2hhZGluZ3Mu
CisKIDIwMjEtMTItMTYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4NzA1Ni4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCShyZXZpc2lv
biAyODcyMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NT
UEkuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgPENvcmVHcmFw
aGljcy9DR0ZvbnRDYWNoZS5oPgogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR1BhdGhQcml2YXRl
Lmg+CiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljc1ByaXZhdGUuaD4KKyNpbmNs
dWRlIDxDb3JlR3JhcGhpY3MvQ0dTaGFkaW5nUHJpdmF0ZS5oPgogI2luY2x1ZGUgPENvcmVHcmFw
aGljcy9DR1N0eWxlUHJpdmF0ZS5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMzIzLDYgKzMy
NCwxNiBAQCB2b2lkIENHQ29udGV4dFNldFN0eWxlKENHQ29udGV4dFJlZiwgQ0dTdHlsZVJlZik7
CiB2b2lkIENHQ29udGV4dERyYXdDb25pY0dyYWRpZW50KENHQ29udGV4dFJlZiwgQ0dHcmFkaWVu
dFJlZiwgQ0dQb2ludCBjZW50ZXIsIENHRmxvYXQgYW5nbGUpOwogdm9pZCBDR1BhdGhBZGRVbmV2
ZW5Db3JuZXJzUm91bmRlZFJlY3QoQ0dNdXRhYmxlUGF0aFJlZiwgY29uc3QgQ0dBZmZpbmVUcmFu
c2Zvcm0gKiwgQ0dSZWN0LCBjb25zdCBDR1NpemUgY29ybmVyc1s0XSk7CiBib29sIENHRm9udFJl
bmRlcmluZ0dldEZvbnRTbW9vdGhpbmdEaXNhYmxlZCh2b2lkKTsKK0NHU2hhZGluZ1JlZiBDR1No
YWRpbmdDcmVhdGVDb25pYyhDR0NvbG9yU3BhY2VSZWYsIENHUG9pbnQgY2VudGVyLCBDR0Zsb2F0
IGFuZ2xlLCBDR0Z1bmN0aW9uUmVmKTsKKworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19HUkFESUVO
VF9DUkVBVEVfV0lUSF9PUFRJT05TKQorQ0dHcmFkaWVudFJlZiBDR0dyYWRpZW50Q3JlYXRlV2l0
aENvbG9yQ29tcG9uZW50c0FuZE9wdGlvbnMoQ0dDb2xvclNwYWNlUmVmLCBjb25zdCBDR0Zsb2F0
KiwgY29uc3QgQ0dGbG9hdCosIHNpemVfdCwgQ0ZEaWN0aW9uYXJ5UmVmKTsKK0NHR3JhZGllbnRS
ZWYgQ0dHcmFkaWVudENyZWF0ZVdpdGhDb2xvcnNBbmRPcHRpb25zKENHQ29sb3JTcGFjZVJlZiwg
Q0ZBcnJheVJlZiwgY29uc3QgQ0dGbG9hdCosIENGRGljdGlvbmFyeVJlZik7CisjZW5kaWYKKwor
I2lmIEhBVkUoQ09SRV9HUkFQSElDU19QUkVNVUxUSVBMSUVEX0lOVEVSUE9MQVRJT05fR1JBRElF
TlQpCitleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NHR3JhZGllbnRJbnRlcnBvbGF0ZXNQcmVt
dWx0aXBsaWVkOworI2VuZGlmCiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKIApJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMjg3MjMzKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MDgxLDYgKzQwODEsNyBAQAogCQlCQzEy
NEYwMDBDMjY0NDdBMDA5RTIzNDkgLyogSlNCYXJQcm9wLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzEyNEVGRTBDMjY0NDdBMDA5RTIzNDkgLyogSlNC
YXJQcm9wLmggKi87IH07CiAJCUJDMTI4QTczMTM3Qzg2N0MwMENBQzg0NSAvKiBSZW5kZXJHcmlk
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzEyOEE3
MjEzN0M4NjdDMDBDQUM4NDUgLyogUmVuZGVyR3JpZC5oICovOyB9OwogCQlCQzE0MDI4QjBFODM2
ODA4MDAzMTk3MTcgLyogU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMTQwMjg5MEU4MzY4MDgwMDMxOTcxNyAv
KiBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUJDMTlDREYyMjc2RkZDNkQwMDUzRjczNCAvKiBHcmFkaWVu
dENHQWRhcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkMxOUNERjAyNzZGRkIyNjAwNTNGNzM0IC8qIEdyYWRpZW50Q0dBZGFwdG9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMxQTdEOTgxOEZD
QjVCMDAwNDIxODc5IC8qIFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzFBN0Q5NjE4RkNC
NUIwMDA0MjE4NzkgLyogUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaCAqLzsg
fTsKIAkJQkMyMjcyODcwRTgyRTcwNzAwRTdGOTc1IC8qIFN0eWxlUmVmbGVjdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyMjcyODYwRTgyRTcw
NzAwRTdGOTc1IC8qIFN0eWxlUmVmbGVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMjI3MkEyMEU4MkU4N0MwMEU3Rjk3NSAvKiBDdXJz
b3JEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzIyNzJBMTBFODJFODdDMDBFN0Y5NzUgLyogQ3Vyc29yRGF0YS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNTExMyw2ICsxNTExNCw4IEBACiAJ
CUJDMTI4QjAwMTM3QzhENDYwMENBQzg0NSAvKiBSZW5kZXJHcmlkLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckdyaWQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQzE0MDI4ODBFODM2ODA4MDAzMTk3MTcgLyogU2Nyb2xsYmFyVGhlbWVD
b21wb3NpdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xs
YmFyVGhlbWVDb21wb3NpdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzE0
MDI4OTBFODM2ODA4MDAzMTk3MTcgLyogU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMxOUNERUYyNzZGRkIyNjAwNTNGNzM0IC8qIEdy
YWRpZW50Q0dBZGFwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYWRpZW50Q0dBZGFwdG9y
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMxOUNERjAyNzZGRkIyNjAwNTNG
NzM0IC8qIEdyYWRpZW50Q0dBZGFwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYWRpZW50Q0dBZGFw
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMUE3RDk1MThGQ0I1QjAwMDQy
MTg3OSAvKiBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFj
ZWhvbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMUE3RDk2MThGQ0I1
QjAwMDQyMTg3OSAvKiBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFj
ZWhvbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzIwRkI3RTBDMEU4RTZD
MDBEMTQ0N0YgLyogSlNEZXByZWNhdGVkQ1NTT01WYWx1ZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEZXByZWNhdGVkQ1NTT01WYWx1ZUN1c3RvbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODUzNCw2ICsyODUzNyw4IEBACiAJ
CQkJQjI3NTM1MkMwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVjdENHLmNwcCAqLywKIAkJCQlC
Mjc1MzUyRDBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRTaXplQ0cuY3BwICovLAogCQkJCUJDNTND
NjBBMERBNTZDRjEwMDIxRUI1RCAvKiBHcmFkaWVudENHLmNwcCAqLywKKwkJCQlCQzE5Q0RFRjI3
NkZGQjI2MDA1M0Y3MzQgLyogR3JhZGllbnRDR0FkYXB0b3IuY3BwICovLAorCQkJCUJDMTlDREYw
Mjc2RkZCMjYwMDUzRjczNCAvKiBHcmFkaWVudENHQWRhcHRvci5oICovLAogCQkJCUIyRUQ5Nzcw
MEIxRjU1Q0UwMDI1N0QwRiAvKiBHcmFwaGljc0NvbnRleHRDRy5jcHAgKi8sCiAJCQkJOTM0OTA3
RTMxMjVCQkJDODAwN0YyM0EwIC8qIEdyYXBoaWNzQ29udGV4dENHLmggKi8sCiAJCQkJNkUyMUM2
QzExMTI2MzM5OTAwQTdCRTAyIC8qIEdyYXBoaWNzQ29udGV4dEdMQ0cuY3BwICovLApAQCAtMzMz
MDQsNiArMzMzMDksNyBAQAogCQkJCTgzNzg4NzgyMjREOEE2MDkwMDBENEE1QiAvKiBBdWRpb0J1
ZmZlclNvdXJjZU9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDdDMTJCMDI2Rjcw
MEMxQTM1OSAvKiBBdWRpb0J1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwN0UxMkIwMjZG
NzAwQzFBMzU5IC8qIEF1ZGlvQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMxOUNERjIy
NzZGRkM2RDAwNTNGNzM0IC8qIEdyYWRpZW50Q0dBZGFwdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDRDNFRUYzQTI1Nzk5Rjg4MDA2NTYzQkIgLyogQXVkaW9Db25maWd1cmF0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGRDMxNjAwNTEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Db250ZXh0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFNzg1RDk2MjI0QjdGNzM1MDAxNERCMjEgLyogQXVkaW9Db250
ZXh0TGF0ZW5jeUNhdGVnb3J5LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29tcG9uZW50cy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29tcG9uZW50cy5oCShyZXZpc2lvbiAy
ODcyMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbXBvbmVu
dHMuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsOCBAQCBzdHJ1Y3QgQ29sb3JDb21wb25l
bnRzIHsKICAgICB0ZW1wbGF0ZTxzaXplX3QgU3RhcnQsIHNpemVfdCBFbmQ+CiAgICAgY29uc3Rl
eHByIENvbG9yQ29tcG9uZW50czxULCBFbmQgLSBTdGFydD4gc3Vic2V0KCkgY29uc3Q7CiAKKyAg
ICBjb25zdGV4cHIgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBTaXplOyB9CisKICAgICBz
dGQ6OmFycmF5PFQsIE4+IGNvbXBvbmVudHM7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuY3BwCShyZXZpc2lvbiAyODcyMzMpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDYgKzMyLDEwIEBACiAjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaGVyLmg+CiAKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiR3JhZGllbnRD
R0FkYXB0b3IuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlZjxHcmFkaWVu
dD4gR3JhZGllbnQ6OmNyZWF0ZShEYXRhJiYgZGF0YSwgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9k
IGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCkKQEAgLTQ0LDYgKzQ4LDggQEAgR3JhZGllbnQ6Okdy
YWRpZW50KERhdGEmJiBkYXRhLCBDb2xvckludGVycG9sYXRpb25NZXRoCiAgICAgLCBtX2NvbG9y
SW50ZXJwb2xhdGlvbk1ldGhvZCB7IGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCB9CiB7CiB9CisK
K0dyYWRpZW50Ojp+R3JhZGllbnQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgR3JhZGllbnQ6OmFkanVz
dFBhcmFtZXRlcnNGb3JUaWxlZERyYXdpbmcoRmxvYXRTaXplJiBzaXplLCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZykKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaAkocmV2aXNpb24gMjg3MjMzKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzUsMTcgKzM1LDEyIEBACiAjaW5jbHVkZSA8dmFyaWFudD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2VuZGlm
Ci0KICNpZiBVU0UoRElSRUNUMkQpCiAjaW5jbHVkZSAiQ09NUHRyLmgiCiAjZW5kaWYKIAogI2lm
IFVTRShDRykKIHR5cGVkZWYgc3RydWN0IENHQ29udGV4dCogQ0dDb250ZXh0UmVmOwotdHlwZWRl
ZiBzdHJ1Y3QgQ0dHcmFkaWVudCogQ0dHcmFkaWVudFJlZjsKICNlbmRpZgogCiAjaWYgVVNFKERJ
UkVDVDJEKQpAQCAtNjIsNiArNTcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGbG9h
dFJlY3Q7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiAKK2NsYXNzIEdyYWRpZW50Q0dBZGFwdG9y
OworCiBjbGFzcyBHcmFkaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYWRpZW50PiB7CiBwdWJs
aWM6CiAgICAgc3RydWN0IENvbG9yU3RvcCB7CkBAIC0xMDQsNiArMTAxLDcgQEAgY2xhc3MgR3Jh
ZGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmFkaWVudD4geyAocHVibGljCiAgICAgdXNpbmcg
RGF0YSA9IHN0ZDo6dmFyaWFudDxMaW5lYXJEYXRhLCBSYWRpYWxEYXRhLCBDb25pY0RhdGE+Owog
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxHcmFkaWVudD4gY3JlYXRlKERhdGEmJiwg
Q29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+R3JhZGllbnQo
KTsKIAogICAgIGJvb2wgaXNaZXJvU2l6ZSgpIGNvbnN0OwogCkBAIC0xNDQsMTEgKzE0Miw2IEBA
IGNsYXNzIEdyYWRpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8R3JhZGllbnQ+IHsgKHB1YmxpYwog
ICAgIHZvaWQgc29ydFN0b3BzKCkgY29uc3Q7CiAgICAgdm9pZCBzdG9wc0NoYW5nZWQoKTsKIAot
I2lmIFVTRShDRykKLSAgICB2b2lkIGNyZWF0ZUNHR3JhZGllbnQoKTsKLSAgICBib29sIGhhc09u
bHlCb3VuZGVkU1JHQkNvbG9yU3RvcHMoKSBjb25zdDsKLSNlbmRpZgotCiAgICAgRGF0YSBtX2Rh
dGE7CiAgICAgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIG1fY29sb3JJbnRlcnBvbGF0aW9uTWV0
aG9kOwogICAgIG11dGFibGUgQ29sb3JTdG9wVmVjdG9yIG1fc3RvcHM7CkBAIC0xNTcsNyArMTUw
LDcgQEAgY2xhc3MgR3JhZGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmFkaWVudD4geyAocHVi
bGljCiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX2NhY2hlZEhhc2ggeyAwIH07CiAKICNpZiBVU0Uo
Q0cpCi0gICAgUmV0YWluUHRyPENHR3JhZGllbnRSZWY+IG1fZ3JhZGllbnQ7CisgICAgUmVmUHRy
PEdyYWRpZW50Q0dBZGFwdG9yPiBtX2dyYWRpZW50OwogI2VuZGlmCiAKICNpZiBVU0UoRElSRUNU
MkQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENH
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFkaWVudENHLmNwcAkocmV2aXNpb24gMjg3MjMzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDkgKzI5
LDkgQEAKIAogI2lmIFVTRShDRykKIAorI2luY2x1ZGUgIkdyYWRpZW50Q0dBZGFwdG9yLmgiCiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVH
cmFwaGljc1NQSS5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC00MCw2MSArNDAsNiBAQCB2b2lkIEdyYWRpZW50OjpzdG9wc0NoYW5nZWQo
KQogICAgIG1fZ3JhZGllbnQgPSBudWxscHRyOwogfQogCi1ib29sIEdyYWRpZW50OjpoYXNPbmx5
Qm91bmRlZFNSR0JDb2xvclN0b3BzKCkgY29uc3QKLXsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHN0
b3AgOiBtX3N0b3BzKSB7Ci0gICAgICAgIGlmIChzdG9wLmNvbG9yLmNvbG9yU3BhY2UoKSAhPSBD
b2xvclNwYWNlOjpTUkdCKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBHcmFkaWVudDo6Y3JlYXRlQ0dHcmFkaWVudCgpCi17Ci0g
ICAgc29ydFN0b3BzKCk7Ci0KLSAgICB1bnNpZ25lZCBudW1TdG9wcyA9IG1fc3RvcHMuc2l6ZSgp
OwotCi0gICAgY29uc3QgaW50IHJlc2VydmVkU3RvcHMgPSAzOwotICAgIFZlY3RvcjxDR0Zsb2F0
LCByZXNlcnZlZFN0b3BzPiBsb2NhdGlvbnM7Ci0gICAgbG9jYXRpb25zLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkobnVtU3RvcHMpOwotCi0gICAgLy8gSWYgYWxsIHRoZSBzdG9wcyBhcmUgYm91bmRl
ZCBzUkdCIChhcyByZXByZXNlbnRlZCBieSB0aGUgY29sb3IgaGF2aW5nIHRoZSBjb2xvciBzcGFj
ZQotICAgIC8vIENvbG9yU3BhY2U6OlNSR0IpLCBpdCBpcyBmYXN0ZXIgdG8gY3JlYXRlIGEgZ3Jh
ZGllbnQgdXNpbmcgY29tcG9uZW50cyB0aGFuIENHQ29sb3JzLgotICAgIGlmIChoYXNPbmx5Qm91
bmRlZFNSR0JDb2xvclN0b3BzKCkpIHsKLSAgICAgICAgVmVjdG9yPENHRmxvYXQsIDQgKiByZXNl
cnZlZFN0b3BzPiBjb2xvckNvbXBvbmVudHM7Ci0gICAgICAgIGNvbG9yQ29tcG9uZW50cy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KG51bVN0b3BzICogNCk7Ci0KLSAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBzdG9wIDogbV9zdG9wcykgewotICAgICAgICAgICAgYXV0byBbY29sb3JTcGFjZSwgY29t
cG9uZW50c10gPSBzdG9wLmNvbG9yLmNvbG9yU3BhY2VBbmRDb21wb25lbnRzKCk7Ci0gICAgICAg
ICAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IGNvbXBvbmVudHM7Ci0gICAgICAgICAgICBjb2xvckNv
bXBvbmVudHMudW5jaGVja2VkQXBwZW5kKHIpOwotICAgICAgICAgICAgY29sb3JDb21wb25lbnRz
LnVuY2hlY2tlZEFwcGVuZChnKTsKLSAgICAgICAgICAgIGNvbG9yQ29tcG9uZW50cy51bmNoZWNr
ZWRBcHBlbmQoYik7Ci0gICAgICAgICAgICBjb2xvckNvbXBvbmVudHMudW5jaGVja2VkQXBwZW5k
KGEpOwotCi0gICAgICAgICAgICBsb2NhdGlvbnMudW5jaGVja2VkQXBwZW5kKHN0b3Aub2Zmc2V0
KTsKLSAgICAgICAgfQotCi0gICAgICAgIG1fZ3JhZGllbnQgPSBhZG9wdENGKENHR3JhZGllbnRD
cmVhdGVXaXRoQ29sb3JDb21wb25lbnRzKHNSR0JDb2xvclNwYWNlUmVmKCksIGNvbG9yQ29tcG9u
ZW50cy5kYXRhKCksIGxvY2F0aW9ucy5kYXRhKCksIG51bVN0b3BzKSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBhdXRvIGNvbG9yc0FycmF5ID0gYWRvcHRDRihDRkFycmF5Q3JlYXRl
TXV0YWJsZSgwLCBtX3N0b3BzLnNpemUoKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwotICAg
IGZvciAoY29uc3QgYXV0byYgc3RvcCA6IG1fc3RvcHMpIHsKLSAgICAgICAgQ0ZBcnJheUFwcGVu
ZFZhbHVlKGNvbG9yc0FycmF5LmdldCgpLCBjYWNoZWRDR0NvbG9yKHN0b3AuY29sb3IpLmdldCgp
KTsKLSAgICAgICAgbG9jYXRpb25zLnVuY2hlY2tlZEFwcGVuZChzdG9wLm9mZnNldCk7Ci0gICAg
fQotCi0jaWYgSEFWRShDT1JFX0dSQVBISUNTX0VYVEVOREVEX1NSR0JfQ09MT1JfU1BBQ0UpCi0g
ICAgYXV0byBleHRlbmRlZENvbG9yc0dyYWRpZW50Q29sb3JTcGFjZSA9IGV4dGVuZGVkU1JHQkNv
bG9yU3BhY2VSZWYoKTsKLSNlbHNlCi0gICAgYXV0byBleHRlbmRlZENvbG9yc0dyYWRpZW50Q29s
b3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jZW5kaWYKLQotICAgIG1fZ3JhZGllbnQg
PSBhZG9wdENGKENHR3JhZGllbnRDcmVhdGVXaXRoQ29sb3JzKGV4dGVuZGVkQ29sb3JzR3JhZGll
bnRDb2xvclNwYWNlLCBjb2xvcnNBcnJheS5nZXQoKSwgbG9jYXRpb25zLmRhdGEoKSkpOwotfQot
CiB2b2lkIEdyYWRpZW50OjpmaWxsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiByZWN0KQogewogICAgIGNvbnRleHQuY2xpcChyZWN0KTsKQEAgLTExMCw4ICs1NSwx
MCBAQCB2b2lkIEdyYWRpZW50OjpwYWludChDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250ZXh0KQog
ewogICAgIENHR3JhZGllbnREcmF3aW5nT3B0aW9ucyBleHRlbmRPcHRpb25zID0ga0NHR3JhZGll
bnREcmF3c0JlZm9yZVN0YXJ0TG9jYXRpb24gfCBrQ0dHcmFkaWVudERyYXdzQWZ0ZXJFbmRMb2Nh
dGlvbjsKIAotICAgIGlmICghbV9ncmFkaWVudCkKLSAgICAgICAgY3JlYXRlQ0dHcmFkaWVudCgp
OworICAgIGlmICghbV9ncmFkaWVudCkgeworICAgICAgICBzb3J0U3RvcHMoKTsKKyAgICAgICAg
bV9ncmFkaWVudCA9IEdyYWRpZW50Q0dBZGFwdG9yOjpjcmVhdGUobV9jb2xvckludGVycG9sYXRp
b25NZXRob2QsIG1fc3RvcHMpOworICAgIH0KIAogICAgIFdURjo6c3dpdGNoT24obV9kYXRhLAog
ICAgICAgICBbJl0gKGNvbnN0IExpbmVhckRhdGEmIGRhdGEpIHsKQEAgLTE0Myw3ICs5MCw3IEBA
IHZvaWQgR3JhZGllbnQ6OnBhaW50KENHQ29udGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQpCiAgICAg
ICAgICAgICAgICAgICAgIENHUG9pbnQgbGVmdCA9IENHUG9pbnRNYWtlKGZsaXAgPyBlbmQgOiBz
dGFydCwgMCk7CiAgICAgICAgICAgICAgICAgICAgIENHUG9pbnQgcmlnaHQgPSBDR1BvaW50TWFr
ZShmbGlwID8gc3RhcnQgOiBlbmQsIDApOwogCi0gICAgICAgICAgICAgICAgICAgIENHQ29udGV4
dERyYXdMaW5lYXJHcmFkaWVudChwbGF0Zm9ybUNvbnRleHQsIG1fZ3JhZGllbnQuZ2V0KCksIGxl
ZnQsIHJpZ2h0LCBleHRlbmRPcHRpb25zKTsKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFkaWVu
dC0+ZHJhd0xpbmVhckdyYWRpZW50KHBsYXRmb3JtQ29udGV4dCwgbGVmdCwgcmlnaHQsIGV4dGVu
ZE9wdGlvbnMpOwogICAgICAgICAgICAgICAgIH07CiAKICAgICAgICAgICAgICAgICBhdXRvIGlz
TGVmdE9mID0gW10oQ0dGbG9hdCBzdGFydCwgQ0dGbG9hdCBlbmQsIENHUmVjdCBib3VuZGluZ0Jv
eCkgLT4gYm9vbCB7CkBAIC0xODksMTEgKzEzNiwxMCBAQCB2b2lkIEdyYWRpZW50OjpwYWludChD
R0NvbnRleHRSZWYgcGxhdGZvcm1Db250ZXh0KQogICAgICAgICAgICAgICAgICAgICBkcmF3TGlu
ZWFyR3JhZGllbnQoZW5kIC0gZHgsIGVuZCwgZmxpcCk7CiAgICAgICAgICAgICAgICAgICAgIGZs
aXAgPSAhZmxpcCAmJiBtX3NwcmVhZE1ldGhvZCA9PSBHcmFkaWVudFNwcmVhZE1ldGhvZDo6UmVm
bGVjdDsKICAgICAgICAgICAgICAgICB9Ci0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgR3JhZGllbnRTcHJlYWRNZXRob2Q6OlBhZDoKLSAg
ICAgICAgICAgICAgICBDR0NvbnRleHREcmF3TGluZWFyR3JhZGllbnQocGxhdGZvcm1Db250ZXh0
LCBtX2dyYWRpZW50LmdldCgpLCBkYXRhLnBvaW50MCwgZGF0YS5wb2ludDEsIGV4dGVuZE9wdGlv
bnMpOworICAgICAgICAgICAgICAgIG1fZ3JhZGllbnQtPmRyYXdMaW5lYXJHcmFkaWVudChwbGF0
Zm9ybUNvbnRleHQsIGRhdGEucG9pbnQwLCBkYXRhLnBvaW50MSwgZXh0ZW5kT3B0aW9ucyk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0sCiAgICAgICAgIFsmXSAoY29uc3QgUmFkaWFsRGF0YSYg
ZGF0YSkgewpAQCAtMjA4LDcgKzE1NCw3IEBAIHZvaWQgR3JhZGllbnQ6OnBhaW50KENHQ29udGV4
dFJlZiBwbGF0Zm9ybUNvbnRleHQpCiAgICAgICAgICAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRl
Q1RNKHBsYXRmb3JtQ29udGV4dCwgLWRhdGEucG9pbnQwLngoKSwgLWRhdGEucG9pbnQwLnkoKSk7
CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIENHQ29udGV4dERyYXdSYWRpYWxHcmFkaWVu
dChwbGF0Zm9ybUNvbnRleHQsIG1fZ3JhZGllbnQuZ2V0KCksIGRhdGEucG9pbnQwLCBkYXRhLnN0
YXJ0UmFkaXVzLCBkYXRhLnBvaW50MSwgZGF0YS5lbmRSYWRpdXMsIGV4dGVuZE9wdGlvbnMpOwor
ICAgICAgICAgICAgbV9ncmFkaWVudC0+ZHJhd1JhZGlhbEdyYWRpZW50KHBsYXRmb3JtQ29udGV4
dCwgZGF0YS5wb2ludDAsIGRhdGEuc3RhcnRSYWRpdXMsIGRhdGEucG9pbnQxLCBkYXRhLmVuZFJh
ZGl1cywgZXh0ZW5kT3B0aW9ucyk7CiAKICAgICAgICAgICAgIGlmIChuZWVkU2NhbGluZykKICAg
ICAgICAgICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKHBsYXRmb3JtQ29udGV4dCk7CkBA
IC0yMjEsNyArMTY3LDcgQEAgdm9pZCBHcmFkaWVudDo6cGFpbnQoQ0dDb250ZXh0UmVmIHBsYXRm
b3JtQ29udGV4dCkKICAgICAgICAgICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShwbGF0Zm9ybUNv
bnRleHQsIGRhdGEucG9pbnQwLngoKSwgZGF0YS5wb2ludDAueSgpKTsKICAgICAgICAgICAgIENH
Q29udGV4dFJvdGF0ZUNUTShwbGF0Zm9ybUNvbnRleHQsIChDR0Zsb2F0KS1NX1BJXzIpOwogICAg
ICAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKHBsYXRmb3JtQ29udGV4dCwgLWRhdGEucG9p
bnQwLngoKSwgLWRhdGEucG9pbnQwLnkoKSk7Ci0gICAgICAgICAgICBDR0NvbnRleHREcmF3Q29u
aWNHcmFkaWVudChwbGF0Zm9ybUNvbnRleHQsIG1fZ3JhZGllbnQuZ2V0KCksIGRhdGEucG9pbnQw
LCBkYXRhLmFuZ2xlUmFkaWFucyk7CisgICAgICAgICAgICBtX2dyYWRpZW50LT5kcmF3Q29uaWNH
cmFkaWVudChwbGF0Zm9ybUNvbnRleHQsIGRhdGEucG9pbnQwLCBkYXRhLmFuZ2xlUmFkaWFucyk7
CiAgICAgICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKHBsYXRmb3JtQ29udGV4dCk7CiAj
ZWxzZQogICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGRhdGEpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDR0FkYXB0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0dBZGFwdG9y
LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFkaWVudENHQWRhcHRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMjYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHcmFkaWVudENHQWRhcHRvci5o
IgorCisjaW5jbHVkZSAiQ29sb3JJbnRlcnBvbGF0aW9uLmgiCisjaW5jbHVkZSAiQ29sb3JTcGFj
ZUNHLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgSW50ZXJw
b2xhdGlvblNwYWNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGFscGhhUHJlbXVsdGlwbGljYXRp
b24+CitzdGF0aWMgdm9pZCBzaGFkaW5nRnVuY3Rpb24odm9pZCogaW5mbywgY29uc3QgQ0dGbG9h
dCogaW4sIENHRmxvYXQqIG91dCkKK3sKKyAgICB1c2luZyBJbnRlcnBvbGF0aW9uU3BhY2VDb2xv
clR5cGUgPSB0eXBlbmFtZSBJbnRlcnBvbGF0aW9uU3BhY2U6OkNvbG9yVHlwZTsKKyAgICB1c2lu
ZyBPdXRwdXRTcGFjZUNvbG9yVHlwZSA9IFNSR0JBPGZsb2F0PjsKKworICAgIGF1dG8qIGRhdGEg
PSBzdGF0aWNfY2FzdDxHcmFkaWVudENHQWRhcHRvcjo6U2hhZGluZzo6RGF0YSo+KGluZm8pOwor
CisgICAgLy8gQ29tcHV0ZSBjb2xvciBhdCBvZmZzZXQgJ2luWzBdJyBhbmQgYXNzaWduIHRoZSBj
b21wb25lbnRzIHRvIG91dFswIC0+IDNdLgorCisgICAgZmxvYXQgcmVxdWVzdGVkT2Zmc2V0ID0g
aW5bMF07CisKKyAgICAvLyAxLiBGaW5kIHN0b3BzIHRoYXQgYm91bmQgdGhlIHJlcXVlc3RlZCBv
ZmZzZXQuCisgICAgYXV0byBbc3RvcDAsIHN0b3AxXSA9IFsmXSB7CisgICAgICAgIGZvciAoc2l6
ZV90IHN0b3AgPSAxOyBzdG9wIDwgZGF0YS0+c3RvcHMoKS5zaXplKCk7ICsrc3RvcCkgeworICAg
ICAgICAgICAgaWYgKHJlcXVlc3RlZE9mZnNldCA8PSBkYXRhLT5zdG9wcygpW3N0b3BdLm9mZnNl
dCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjp0aWUoZGF0YS0+c3RvcHMoKVtzdG9wIC0g
MV0sIGRhdGEtPnN0b3BzKClbc3RvcF0pOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgfSgpOworCisgICAgLy8gMi4gQ29tcHV0ZSBwZXJjZW50
YWdlIG9mZnNldCBiZXR3ZWVuIHRoZSB0d28gc3RvcHMuCisgICAgZmxvYXQgb2Zmc2V0ID0gKHN0
b3AxLm9mZnNldCA9PSBzdG9wMC5vZmZzZXQpID8gMC4wZiA6IChyZXF1ZXN0ZWRPZmZzZXQgLSBz
dG9wMC5vZmZzZXQpIC8gKHN0b3AxLm9mZnNldCAtIHN0b3AwLm9mZnNldCk7CisKKyAgICAvLyAz
LiBJbnRlcnBvbGF0ZSB0aGUgdHdvIHN0b3BzJyBjb2xvcnMgYnkgdGhlIGNvbXB1dGVkIG9mZnNl
dC4KKyAgICAvLyBGSVhNRTogV2UgZG9uJ3Qgd2FudCB0byBkdWUgaHVlIGZpeHVwIGZvciBlYWNo
IGNhbGwsIHNvIHdlIHNob3VsZCBmaWd1cmUgb3V0IGhvdyB0byBwcmVjb21wdXRlIHRoYXQuCisg
ICAgYXV0byBpbnRlcnBvbGF0ZWRDb2xvciA9IGludGVycG9sYXRlQ29sb3JDb21wb25lbnRzPGFs
cGhhUHJlbXVsdGlwbGljYXRpb24+KAorICAgICAgICBzdGQ6OmdldDxJbnRlcnBvbGF0aW9uU3Bh
Y2U+KGRhdGEtPmNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCgpLmNvbG9yU3BhY2UpLAorICAgICAg
ICBtYWtlRnJvbUNvbXBvbmVudHM8SW50ZXJwb2xhdGlvblNwYWNlQ29sb3JUeXBlPihzdG9wMC5j
b2xvckNvbXBvbmVudHMpLCAxLjBmIC0gb2Zmc2V0LAorICAgICAgICBtYWtlRnJvbUNvbXBvbmVu
dHM8SW50ZXJwb2xhdGlvblNwYWNlQ29sb3JUeXBlPihzdG9wMS5jb2xvckNvbXBvbmVudHMpLCBv
ZmZzZXQpOworCisgICAgLy8gNC4gQ29udmVydCB0byB0aGUgb3V0cHV0IGNvbG9yc3BhY2UuCisg
ICAgYXV0byBpbnRlcnBvbGF0ZWRDb2xvckNvbnZlcnRlZFRvT3V0cHV0U3BhY2UgPSBhc0NvbG9y
Q29tcG9uZW50cyhjb252ZXJ0Q29sb3I8T3V0cHV0U3BhY2VDb2xvclR5cGU+KGludGVycG9sYXRl
ZENvbG9yKSk7CisKKyAgICAvLyA1LiBXcml0ZSBjb2xvciBjb21wb25lbnRzIHRvICdvdXQnIHBv
aW50ZXIuCisgICAgZm9yIChzaXplX3QgY29tcG9uZW50SW5kZXggPSAwOyBjb21wb25lbnRJbmRl
eCA8IGludGVycG9sYXRlZENvbG9yQ29udmVydGVkVG9PdXRwdXRTcGFjZS5zaXplKCk7ICsrY29t
cG9uZW50SW5kZXgpCisgICAgICAgIG91dFtjb21wb25lbnRJbmRleF0gPSBpbnRlcnBvbGF0ZWRD
b2xvckNvbnZlcnRlZFRvT3V0cHV0U3BhY2VbY29tcG9uZW50SW5kZXhdOworfQorCitHcmFkaWVu
dENHQWRhcHRvcjo6R3JhZGllbnRDR0FkYXB0b3IoQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIGNv
bG9ySW50ZXJwb2xhdGlvbk1ldGhvZCwgY29uc3QgV2ViQ29yZTo6R3JhZGllbnQ6OkNvbG9yU3Rv
cFZlY3RvciYgc3RvcHMpCisgICAgOiBtX3N0cmF0ZWd5IHsgcGlja1N0cmF0ZWd5KGNvbG9ySW50
ZXJwb2xhdGlvbk1ldGhvZCwgc3RvcHMpIH0KK3sKK30KKworR3JhZGllbnRDR0FkYXB0b3I6OlN0
cmF0ZWd5IEdyYWRpZW50Q0dBZGFwdG9yOjpwaWNrU3RyYXRlZ3koQ29sb3JJbnRlcnBvbGF0aW9u
TWV0aG9kIGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCwgY29uc3QgV2ViQ29yZTo6R3JhZGllbnQ6
OkNvbG9yU3RvcFZlY3RvciYgc3RvcHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNo
T24oY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLmNvbG9yU3BhY2UsCisgICAgICAgIFsmXSAoY29u
c3QgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCJikgLT4gU3RyYXRlZ3kgeworICAgICAg
ICAgICAgc3dpdGNoIChjb2xvckludGVycG9sYXRpb25NZXRob2QuYWxwaGFQcmVtdWx0aXBsaWNh
dGlvbikgeworICAgICAgICAgICAgY2FzZSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11
bHRpcGxpZWQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VHcmFkaWVudChjb2xvckludGVy
cG9sYXRpb25NZXRob2QsIHN0b3BzKTsKKyAgICAgICAgICAgIGNhc2UgQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbjo6UHJlbXVsdGlwbGllZDoKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfUFJFTVVMVElQ
TElFRF9JTlRFUlBPTEFUSU9OX0dSQURJRU5UKQorICAgICAgICAgICAgICAgIHJldHVybiBtYWtl
R3JhZGllbnQoY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBzdG9wcyk7CisjZWxzZQorICAgICAg
ICAgICAgICAgIHJldHVybiBtYWtlU2hhZGluZyhjb2xvckludGVycG9sYXRpb25NZXRob2QsIHN0
b3BzKTsKKyNlbmRpZgorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICBbJl0gKGNv
bnN0IGF1dG8mKSAtPiBTdHJhdGVneSB7CisgICAgICAgICAgICAvLyBGSVhNRTogQWRkIHN1cHBv
cnQgZm9yIHRoZSBvdGhlciBpbnRlcnBvbGF0aW9uIGNvbG9yIHNwYWNlcy4KKyAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICApOworfQorCitH
cmFkaWVudENHQWRhcHRvcjo6U3RyYXRlZ3kgR3JhZGllbnRDR0FkYXB0b3I6Om1ha2VHcmFkaWVu
dChDb2xvckludGVycG9sYXRpb25NZXRob2QgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb25z
dCBXZWJDb3JlOjpHcmFkaWVudDo6Q29sb3JTdG9wVmVjdG9yJiBzdG9wcykgY29uc3QKK3sKKyAg
ICBBU1NFUlRfVU5VU0VEKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCwgc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0I+KGNvbG9ySW50ZXJwb2xhdGlv
bk1ldGhvZC5jb2xvclNwYWNlKSk7CisjaWYgIUhBVkUoQ09SRV9HUkFQSElDU19QUkVNVUxUSVBM
SUVEX0lOVEVSUE9MQVRJT05fR1JBRElFTlQpCisgICAgQVNTRVJUX1VOVVNFRChjb2xvckludGVy
cG9sYXRpb25NZXRob2QsIGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5hbHBoYVByZW11bHRpcGxp
Y2F0aW9uID09IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCk7CisjZW5k
aWYKKworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19HUkFESUVOVF9DUkVBVEVfV0lUSF9PUFRJT05T
KQorI2lmIEhBVkUoQ09SRV9HUkFQSElDU19QUkVNVUxUSVBMSUVEX0lOVEVSUE9MQVRJT05fR1JB
RElFTlQpCisgICAgYXV0byBncmFkaWVudEludGVycG9sYXRlc1ByZW11bHRpcGxpZWRPcHRpb25z
RGljdGlvbmFyeSA9IFtdICgpIC0+IENGRGljdGlvbmFyeVJlZiB7CisgICAgICAgIHN0YXRpYyBD
RlR5cGVSZWYga2V5c1tdID0geyBrQ0dHcmFkaWVudEludGVycG9sYXRlc1ByZW11bHRpcGxpZWQg
fTsKKyAgICAgICAgc3RhdGljIENGVHlwZVJlZiB2YWx1ZXNbXSA9IHsga0NGQm9vbGVhblRydWUg
fTsKKyAgICAgICAgc3RhdGljIENGRGljdGlvbmFyeVJlZiBvcHRpb25zID0gQ0ZEaWN0aW9uYXJ5
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtleXMsIHZhbHVlcywgV1RGX0FSUkFZX0xFTkdU
SChrZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25h
cnlWYWx1ZUNhbGxCYWNrcyk7CisKKyAgICAgICAgcmV0dXJuIG9wdGlvbnM7CisgICAgfTsKKwor
ICAgYXV0byBncmFkaWVudE9wdGlvbnNEaWN0aW9uYXJ5ID0gWyZdIChhdXRvIGNvbG9ySW50ZXJw
b2xhdGlvbk1ldGhvZCkgLT4gQ0ZEaWN0aW9uYXJ5UmVmIHsKKyAgICAgICAgc3dpdGNoIChjb2xv
ckludGVycG9sYXRpb25NZXRob2QuYWxwaGFQcmVtdWx0aXBsaWNhdGlvbikgeworICAgICAgICBj
YXNlIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZDoKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICBjYXNlIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlBy
ZW11bHRpcGxpZWQ6CisgICAgICAgICAgICByZXR1cm4gZ3JhZGllbnRJbnRlcnBvbGF0ZXNQcmVt
dWx0aXBsaWVkT3B0aW9uc0RpY3Rpb25hcnkoKTsKKyAgICAgICAgfQorICAgfTsKKyNlbHNlCisg
ICBhdXRvIGdyYWRpZW50T3B0aW9uc0RpY3Rpb25hcnkgPSBbXSAoYXV0bykgLT4gQ0ZEaWN0aW9u
YXJ5UmVmIHsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICB9OworI2VuZGlmCisjZW5kaWYK
KworICAgIGF1dG8gaGFzT25seUJvdW5kZWRTUkdCQ29sb3JTdG9wcyA9IFtdIChjb25zdCBhdXRv
JiBzdG9wcykgeworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHN0b3AgOiBzdG9wcykgeworICAg
ICAgICAgICAgaWYgKHN0b3AuY29sb3IuY29sb3JTcGFjZSgpICE9IENvbG9yU3BhY2U6OlNSR0Ip
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH07CisKKyAgICBhdXRvIG51bWJlck9mU3RvcHMgPSBzdG9wcy5zaXplKCk7
CisKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gcmVzZXJ2ZWRTdG9wcyA9IDM7CisgICAgVmVj
dG9yPENHRmxvYXQsIHJlc2VydmVkU3RvcHM+IGxvY2F0aW9uczsKKyAgICBsb2NhdGlvbnMucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShudW1iZXJPZlN0b3BzKTsKKworICAgIFZlY3RvcjxDR0Zsb2F0
LCA0ICogcmVzZXJ2ZWRTdG9wcz4gY29sb3JDb21wb25lbnRzOworICAgIGNvbG9yQ29tcG9uZW50
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG51bWJlck9mU3RvcHMgKiA0KTsKKworICAgIGF1dG8g
Z3JhZGllbnRDb2xvclNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKKworICAgIC8vIEZJWE1F
OiBOb3cgdGhhdCB3ZSBvbmx5IGV2ZXIgdXNlIENHR3JhZGllbnRDcmVhdGVXaXRoQ29sb3JDb21w
b25lbnRzLCB3ZSBzaG91bGQgaW52ZXN0aWdhdGUKKyAgICAvLyBpZiB0aGVyZSBpcyBhbnkgcmVh
bCBiZW5lZml0IHRvIHVzaW5nIHNSR0Igd2hlbiBhbGwgdGhlIHN0b3BzIGFyZSBib3VuZGVkIHZz
IGp1c3QgdXNpbmcKKyAgICAvLyBleHRlbmRlZCBzUkdCIGZvciBhbGwgZ3JhZGllbnRzLgorICAg
IGlmIChoYXNPbmx5Qm91bmRlZFNSR0JDb2xvclN0b3BzKHN0b3BzKSkgeworICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIHN0b3AgOiBzdG9wcykgeworICAgICAgICAgICAgYXV0byBbY29sb3JTcGFj
ZSwgY29tcG9uZW50c10gPSBzdG9wLmNvbG9yLmNvbG9yU3BhY2VBbmRDb21wb25lbnRzKCk7Cisg
ICAgICAgICAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IGNvbXBvbmVudHM7CisgICAgICAgICAgICBj
b2xvckNvbXBvbmVudHMudW5jaGVja2VkQXBwZW5kKHIpOworICAgICAgICAgICAgY29sb3JDb21w
b25lbnRzLnVuY2hlY2tlZEFwcGVuZChnKTsKKyAgICAgICAgICAgIGNvbG9yQ29tcG9uZW50cy51
bmNoZWNrZWRBcHBlbmQoYik7CisgICAgICAgICAgICBjb2xvckNvbXBvbmVudHMudW5jaGVja2Vk
QXBwZW5kKGEpOworCisgICAgICAgICAgICBsb2NhdGlvbnMudW5jaGVja2VkQXBwZW5kKHN0b3Au
b2Zmc2V0KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGZvciAoY29uc3QgYXV0
byYgc3RvcCA6IHN0b3BzKSB7CisjaWYgSEFWRShDT1JFX0dSQVBISUNTX0VYVEVOREVEX1NSR0Jf
Q09MT1JfU1BBQ0UpCisgICAgICAgICAgICBncmFkaWVudENvbG9yU3BhY2UgPSBleHRlbmRlZFNS
R0JDb2xvclNwYWNlUmVmKCk7CisgICAgICAgICAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IHN0b3Au
Y29sb3IudG9Db2xvclR5cGVMb3NzeTxFeHRlbmRlZFNSR0JBPGZsb2F0Pj4oKTsKKyNlbHNlCisg
ICAgICAgICAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IHN0b3AuY29sb3IudG9Db2xvclR5cGVMb3Nz
eTxTUkdCQTxmbG9hdD4+KCk7CisjZW5kaWYKKyAgICAgICAgICAgIGNvbG9yQ29tcG9uZW50cy51
bmNoZWNrZWRBcHBlbmQocik7CisgICAgICAgICAgICBjb2xvckNvbXBvbmVudHMudW5jaGVja2Vk
QXBwZW5kKGcpOworICAgICAgICAgICAgY29sb3JDb21wb25lbnRzLnVuY2hlY2tlZEFwcGVuZChi
KTsKKyAgICAgICAgICAgIGNvbG9yQ29tcG9uZW50cy51bmNoZWNrZWRBcHBlbmQoYSk7CisKKyAg
ICAgICAgICAgIGxvY2F0aW9ucy51bmNoZWNrZWRBcHBlbmQoc3RvcC5vZmZzZXQpOworICAgICAg
ICB9CisgICAgfQorCisjaWYgSEFWRShDT1JFX0dSQVBISUNTX0dSQURJRU5UX0NSRUFURV9XSVRI
X09QVElPTlMpCisgICAgcmV0dXJuIEdyYWRpZW50IHsgYWRvcHRDRihDR0dyYWRpZW50Q3JlYXRl
V2l0aENvbG9yQ29tcG9uZW50c0FuZE9wdGlvbnMoZ3JhZGllbnRDb2xvclNwYWNlLCBjb2xvckNv
bXBvbmVudHMuZGF0YSgpLCBsb2NhdGlvbnMuZGF0YSgpLCBudW1iZXJPZlN0b3BzLCBncmFkaWVu
dE9wdGlvbnNEaWN0aW9uYXJ5KGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCkpKSB9OworI2Vsc2UK
KyAgICByZXR1cm4gR3JhZGllbnQgeyBhZG9wdENGKENHR3JhZGllbnRDcmVhdGVXaXRoQ29sb3JD
b21wb25lbnRzKGdyYWRpZW50Q29sb3JTcGFjZSwgY29sb3JDb21wb25lbnRzLmRhdGEoKSwgbG9j
YXRpb25zLmRhdGEoKSwgbnVtYmVyT2ZTdG9wcykpIH07CisjZW5kaWYKK30KKworR3JhZGllbnRD
R0FkYXB0b3I6OlN0cmF0ZWd5IEdyYWRpZW50Q0dBZGFwdG9yOjptYWtlU2hhZGluZyhDb2xvcklu
dGVycG9sYXRpb25NZXRob2QgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb25zdCBXZWJDb3Jl
OjpHcmFkaWVudDo6Q29sb3JTdG9wVmVjdG9yJiBzdG9wcykgY29uc3QKK3sKKyAgICBhdXRvIG1h
a2VEYXRhID0gWyZdIChhdXRvIGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCwgYXV0byYgc3RvcHMp
IHsKKyAgICAgICAgYXV0byB0b3RhbE51bWJlck9mU3RvcHMgPSBzdG9wcy5zaXplKCk7CisgICAg
ICAgIGJvb2wgaGFzWmVybyA9IGZhbHNlOworICAgICAgICBib29sIGhhc09uZSA9IGZhbHNlOwor
CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgc3RvcCA6IHN0b3BzKSB7CisgICAgICAgICAgICBh
dXRvIG9mZnNldCA9IHN0b3Aub2Zmc2V0OworICAgICAgICAgICAgQVNTRVJUKG9mZnNldCA+PSAw
KTsKKyAgICAgICAgICAgIEFTU0VSVChvZmZzZXQgPD0gMSk7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGlmIChvZmZzZXQgPT0gMCkKKyAgICAgICAgICAgICAgICBoYXNaZXJvID0gdHJ1ZTsK
KyAgICAgICAgICAgIGVsc2UgaWYgKG9mZnNldCA9PSAxKQorICAgICAgICAgICAgICAgIGhhc09u
ZSA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWhhc1plcm8pCisgICAgICAgICAg
ICB0b3RhbE51bWJlck9mU3RvcHMrKzsKKyAgICAgICAgaWYgKCFoYXNPbmUpCisgICAgICAgICAg
ICB0b3RhbE51bWJlck9mU3RvcHMrKzsKKworICAgICAgICBWZWN0b3I8Q29sb3JDb252ZXJ0ZWRU
b0ludGVycG9sYXRpb25Db2xvclNwYWNlU3RvcD4gY29udmVydGVkU3RvcHM7CisgICAgICAgIGNv
bnZlcnRlZFN0b3BzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkodG90YWxOdW1iZXJPZlN0b3BzKTsK
KworICAgICAgICBpZiAoIWhhc1plcm8pIHsKKyAgICAgICAgICAgIGNvbnZlcnRlZFN0b3BzLnVu
Y2hlY2tlZEFwcGVuZCh7CisgICAgICAgICAgICAgICAgLm9mZnNldCA9IDAuMGYsCisgICAgICAg
ICAgICAgICAgLmNvbG9yQ29tcG9uZW50cyA9IHsgMC4wZiwgMC4wZiwgMC4wZiwgMC4wZiB9Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoY29uc3QgYXV0byYgc3Rv
cCA6IHN0b3BzKSB7CisgICAgICAgICAgICBjb252ZXJ0ZWRTdG9wcy51bmNoZWNrZWRBcHBlbmQo
eworICAgICAgICAgICAgICAgIC5vZmZzZXQgPSBzdG9wLm9mZnNldCwKKyAgICAgICAgICAgICAg
ICAuY29sb3JDb21wb25lbnRzID0gc3RvcC5jb2xvci50b0NvbG9yQ29tcG9uZW50c0luQ29sb3JT
cGFjZShDb2xvclNwYWNlOjpTUkdCKSAvLyBGSVhNRTogVGhpcyBzaG91bGQgYWN0dWFsbHkgYmUg
dGhlIGNvbG9yIHNwYWNlIHdlIHdpbGwgYmUgaW50ZXJwb2xhdGluZyBpbi4gU2hvdWxkIHByb2Jh
Ymx5IGFsc28gaW50ZXJwb2xhdGUgaW4gdW5jbGFtcGVkIFNSR0Igd2hlbiBuZWVkZWQuCisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghaGFzT25lKSB7CisgICAgICAg
ICAgICBjb252ZXJ0ZWRTdG9wcy51bmNoZWNrZWRBcHBlbmQoeworICAgICAgICAgICAgICAgIC5v
ZmZzZXQgPSAxLjBmLAorICAgICAgICAgICAgICAgIC5jb2xvckNvbXBvbmVudHMgPSBjb252ZXJ0
ZWRTdG9wcy5sYXN0KCkuY29sb3JDb21wb25lbnRzCisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmICghaGFzWmVybykKKyAgICAgICAgICAgIGNvbnZlcnRlZFN0b3BzWzBd
LmNvbG9yQ29tcG9uZW50cyA9IGNvbnZlcnRlZFN0b3BzWzFdLmNvbG9yQ29tcG9uZW50czsKKwor
ICAgICAgICByZXR1cm4gU2hhZGluZzo6RGF0YTo6Y3JlYXRlKGNvbG9ySW50ZXJwb2xhdGlvbk1l
dGhvZCwgV1RGTW92ZShjb252ZXJ0ZWRTdG9wcykpOworICAgIH07CisKKyAgICBhdXRvIG1ha2VG
dW5jdGlvbiA9IFsmXSAoYXV0byBjb2xvckludGVycG9sYXRpb25NZXRob2QsIGF1dG8mIGRhdGEp
IHsKKyAgICAgICAgYXV0byBtYWtlRXZhbHVhdGVDYWxsYmFjayA9IFsmXSAoYXV0byBjb2xvcklu
dGVycG9sYXRpb25NZXRob2QpIC0+IENHRnVuY3Rpb25FdmFsdWF0ZUNhbGxiYWNrIHsKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5jb2xv
clNwYWNlLAorICAgICAgICAgICAgICAgIFsmXSAoYXV0byYgLypjb2xvclNwYWNlKi8pICAtPiBD
R0Z1bmN0aW9uRXZhbHVhdGVDYWxsYmFjayB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAo
Y29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLmFscGhhUHJlbXVsdGlwbGljYXRpb24pIHsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxp
ZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJnNoYWRpbmdGdW5jdGlvbjxDb2xv
ckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IsIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJl
bXVsdGlwbGllZD47CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbjo6UHJlbXVsdGlwbGllZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAmc2hh
ZGluZ0Z1bmN0aW9uPENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiwgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZD47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICApOworICAgICAgICB9OworCisgICAgICAgIGNvbnN0
IENHRnVuY3Rpb25DYWxsYmFja3MgY2FsbGJhY2tzID0geworICAgICAgICAgICAgLnZlcnNpb24g
PSAwLAorICAgICAgICAgICAgLmV2YWx1YXRlID0gbWFrZUV2YWx1YXRlQ2FsbGJhY2soY29sb3JJ
bnRlcnBvbGF0aW9uTWV0aG9kKSwKKyAgICAgICAgICAgIC5yZWxlYXNlSW5mbyA9IFtdICh2b2lk
KiBpbmZvKSB7CisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R3JhZGllbnRDR0FkYXB0b3I6
OlNoYWRpbmc6OkRhdGEqPihpbmZvKS0+ZGVyZWYoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fTsKKworICAgICAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBkb21haW5bMl0gPSB7IDAsIDEgfTsK
KyAgICAgICAgc3RhdGljIGNvbnN0IENHRmxvYXQgZGVmYXVsdFJhbmdlWzhdID0geyAwLCAxLCAw
LCAxLCAwLCAxLCAwLCAxIH07IC8vIEZJWE1FOiBXaWxsIG5lZWQgZGlmZmVyZW50IHJhbmdlcyBm
b3IgZWFjaCBjb2xvciBtb2RlbC4KKworICAgICAgICByZXR1cm4gYWRvcHRDRihDR0Z1bmN0aW9u
Q3JlYXRlKCZkYXRhLmxlYWtSZWYoKSwgMSwgZG9tYWluLCA0LCBkZWZhdWx0UmFuZ2UsICZjYWxs
YmFja3MpKTsKKyAgICB9OworICAgIAorCisgICAgYXV0byBkYXRhID0gbWFrZURhdGEoY29sb3JJ
bnRlcnBvbGF0aW9uTWV0aG9kLCBzdG9wcyk7CisgICAgYXV0byBmdW5jdGlvbiA9IG1ha2VGdW5j
dGlvbihjb2xvckludGVycG9sYXRpb25NZXRob2QsIGRhdGEpOworCisgICAgcmV0dXJuIFNoYWRp
bmcgeworICAgICAgICAuZGF0YSA9IFdURk1vdmUoZGF0YSksCisgICAgICAgIC5mdW5jdGlvbiA9
IFdURk1vdmUoZnVuY3Rpb24pCisgICAgfTsKK30KKwordm9pZCBHcmFkaWVudENHQWRhcHRvcjo6
ZHJhd0xpbmVhckdyYWRpZW50KENHQ29udGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQsIENHUG9pbnQg
c3RhcnRQb2ludCwgQ0dQb2ludCBlbmRQb2ludCwgQ0dHcmFkaWVudERyYXdpbmdPcHRpb25zIG9w
dGlvbnMpCit7CisgICAgV1RGOjpzd2l0Y2hPbihtX3N0cmF0ZWd5LAorICAgICAgICBbJl0gKEdy
YWRpZW50JiBncmFkaWVudCkgeworICAgICAgICAgICAgQ0dDb250ZXh0RHJhd0xpbmVhckdyYWRp
ZW50KHBsYXRmb3JtQ29udGV4dCwgZ3JhZGllbnQuZ3JhZGllbnQuZ2V0KCksIHN0YXJ0UG9pbnQs
IGVuZFBvaW50LCBvcHRpb25zKTsKKyAgICAgICAgfSwKKyAgICAgICAgWyZdIChTaGFkaW5nJiBz
aGFkaW5nKSB7CisgICAgICAgICAgICBib29sIHN0YXJ0RXh0ZW5kID0gKG9wdGlvbnMgJiBrQ0dH
cmFkaWVudERyYXdzQmVmb3JlU3RhcnRMb2NhdGlvbikgIT0gMDsKKyAgICAgICAgICAgIGJvb2wg
ZW5kRXh0ZW5kID0gKG9wdGlvbnMgJiBrQ0dHcmFkaWVudERyYXdzQWZ0ZXJFbmRMb2NhdGlvbikg
IT0gMDsKKworICAgICAgICAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcocGxhdGZvcm1Db250ZXh0
LCBhZG9wdENGKENHU2hhZGluZ0NyZWF0ZUF4aWFsKHNSR0JDb2xvclNwYWNlUmVmKCksIHN0YXJ0
UG9pbnQsIGVuZFBvaW50LCBzaGFkaW5nLmZ1bmN0aW9uLmdldCgpLCBzdGFydEV4dGVuZCwgZW5k
RXh0ZW5kKSkuZ2V0KCkpOworICAgICAgICB9CisgICAgKTsKK30KKwordm9pZCBHcmFkaWVudENH
QWRhcHRvcjo6ZHJhd1JhZGlhbEdyYWRpZW50KENHQ29udGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQs
IENHUG9pbnQgc3RhcnRDZW50ZXIsIENHRmxvYXQgc3RhcnRSYWRpdXMsIENHUG9pbnQgZW5kQ2Vu
dGVyLCBDR0Zsb2F0IGVuZFJhZGl1cywgQ0dHcmFkaWVudERyYXdpbmdPcHRpb25zIG9wdGlvbnMp
Cit7CisgICAgV1RGOjpzd2l0Y2hPbihtX3N0cmF0ZWd5LAorICAgICAgICBbJl0gKEdyYWRpZW50
JiBncmFkaWVudCkgeworICAgICAgICAgICAgQ0dDb250ZXh0RHJhd1JhZGlhbEdyYWRpZW50KHBs
YXRmb3JtQ29udGV4dCwgZ3JhZGllbnQuZ3JhZGllbnQuZ2V0KCksIHN0YXJ0Q2VudGVyLCBzdGFy
dFJhZGl1cywgZW5kQ2VudGVyLCBlbmRSYWRpdXMsIG9wdGlvbnMpOworICAgICAgICB9LAorICAg
ICAgICBbJl0gKFNoYWRpbmcmIHNoYWRpbmcpIHsKKyAgICAgICAgICAgIGJvb2wgc3RhcnRFeHRl
bmQgPSAob3B0aW9ucyAmIGtDR0dyYWRpZW50RHJhd3NCZWZvcmVTdGFydExvY2F0aW9uKSAhPSAw
OworICAgICAgICAgICAgYm9vbCBlbmRFeHRlbmQgPSAob3B0aW9ucyAmIGtDR0dyYWRpZW50RHJh
d3NBZnRlckVuZExvY2F0aW9uKSAhPSAwOworCisgICAgICAgICAgICBDR0NvbnRleHREcmF3U2hh
ZGluZyhwbGF0Zm9ybUNvbnRleHQsIGFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlUmFkaWFsKHNSR0JD
b2xvclNwYWNlUmVmKCksIHN0YXJ0Q2VudGVyLCBzdGFydFJhZGl1cywgZW5kQ2VudGVyLCBlbmRS
YWRpdXMsIHNoYWRpbmcuZnVuY3Rpb24uZ2V0KCksIHN0YXJ0RXh0ZW5kLCBlbmRFeHRlbmQpKS5n
ZXQoKSk7CisgICAgICAgIH0KKyAgICApOworfQorCit2b2lkIEdyYWRpZW50Q0dBZGFwdG9yOjpk
cmF3Q29uaWNHcmFkaWVudChDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250ZXh0LCBDR1BvaW50IGNl
bnRlciwgQ0dGbG9hdCBhbmdsZSkKK3sKKy8vIEZJWE1FOiBTZWVtcyBsaWtlIHRoaXMgc2hvdWxk
IGJlIEhBVkUoQ0dfQ09OVEVYVF9EUkFXX0NPTklDX0dSQURJRU5UKS4KKy8vIEZJWE1FOiBDYW4g
d2UgY2hhbmdlIHR2T1MgdG8gYmUgbGlrZSB0aGUgb3RoZXIgQ29jb2EgcGxhdGZvcm1zPworI2lm
IFBMQVRGT1JNKENPQ09BKSAmJiAhUExBVEZPUk0oQVBQTEVUVikKKyAgICBXVEY6OnN3aXRjaE9u
KG1fc3RyYXRlZ3ksCisgICAgICAgIFsmXSAoR3JhZGllbnQmIGdyYWRpZW50KSB7CisgICAgICAg
ICAgICBDR0NvbnRleHREcmF3Q29uaWNHcmFkaWVudChwbGF0Zm9ybUNvbnRleHQsIGdyYWRpZW50
LmdyYWRpZW50LmdldCgpLCBjZW50ZXIsIGFuZ2xlKTsKKyAgICAgICAgfSwKKyAgICAgICAgWyZd
IChTaGFkaW5nJiBzaGFkaW5nKSB7CisgICAgICAgICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhw
bGF0Zm9ybUNvbnRleHQsIGFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlQ29uaWMoc1JHQkNvbG9yU3Bh
Y2VSZWYoKSwgY2VudGVyLCBhbmdsZSwgc2hhZGluZy5mdW5jdGlvbi5nZXQoKSkpLmdldCgpKTsK
KyAgICAgICAgfQorICAgICk7CisjZW5kaWYKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDR0FkYXB0b3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENHQWRhcHRvci5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRp
ZW50Q0dBZGFwdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29sb3JDb21wb25lbnRzLmgiCisjaW5jbHVkZSAiQ29s
b3JJbnRlcnBvbGF0aW9uTWV0aG9kLmgiCisjaW5jbHVkZSAiR3JhZGllbnQuaCIKKyNpbmNsdWRl
IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisKK3R5cGVkZWYgc3RydWN0IENHQ29udGV4dCogQ0dDb250ZXh0UmVmOwordHlw
ZWRlZiBzdHJ1Y3QgQ0dGdW5jdGlvbiogQ0dGdW5jdGlvblJlZjsKK3R5cGVkZWYgc3RydWN0IENH
R3JhZGllbnQqIENHR3JhZGllbnRSZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0
IENvbG9yQ29udmVydGVkVG9JbnRlcnBvbGF0aW9uQ29sb3JTcGFjZVN0b3AgeworICAgIGZsb2F0
IG9mZnNldDsKKyAgICBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbG9yQ29tcG9uZW50czsK
K307CisKK2NsYXNzIEdyYWRpZW50Q0dBZGFwdG9yIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPEdyYWRpZW50Q0dBZGFwdG9yPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxHcmFkaWVu
dENHQWRhcHRvcj4gY3JlYXRlKENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBjb2xvckludGVycG9s
YXRpb25NZXRob2QsIGNvbnN0IFdlYkNvcmU6OkdyYWRpZW50OjpDb2xvclN0b3BWZWN0b3ImIHN0
b3BzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR3JhZGllbnRDR0FkYXB0
b3IoY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBzdG9wcykpOworICAgIH0KKworICAgIHZvaWQg
ZHJhd0xpbmVhckdyYWRpZW50KENHQ29udGV4dFJlZiwgQ0dQb2ludCBzdGFydFBvaW50LCBDR1Bv
aW50IGVuZFBvaW50LCBDR0dyYWRpZW50RHJhd2luZ09wdGlvbnMpOworICAgIHZvaWQgZHJhd1Jh
ZGlhbEdyYWRpZW50KENHQ29udGV4dFJlZiwgQ0dQb2ludCBzdGFydENlbnRlciwgQ0dGbG9hdCBz
dGFydFJhZGl1cywgQ0dQb2ludCBlbmRDZW50ZXIsIENHRmxvYXQgZW5kUmFkaXVzLCBDR0dyYWRp
ZW50RHJhd2luZ09wdGlvbnMpOworICAgIHZvaWQgZHJhd0NvbmljR3JhZGllbnQoQ0dDb250ZXh0
UmVmLCBDR1BvaW50IGNlbnRlciwgQ0dGbG9hdCBhbmdsZSk7CisKKyAgICBzdHJ1Y3QgR3JhZGll
bnQgeworICAgICAgICBSZXRhaW5QdHI8Q0dHcmFkaWVudFJlZj4gZ3JhZGllbnQ7CisgICAgfTsK
KworICAgIHN0cnVjdCBTaGFkaW5nIHsKKyAgICAgICAgY2xhc3MgRGF0YSA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxEYXRhPiB7CisgICAgICAgIHB1YmxpYzoKKyAgICAgICAgICAgIHN0
YXRpYyBSZWY8RGF0YT4gY3JlYXRlKENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBjb2xvckludGVy
cG9sYXRpb25NZXRob2QsIFZlY3RvcjxDb2xvckNvbnZlcnRlZFRvSW50ZXJwb2xhdGlvbkNvbG9y
U3BhY2VTdG9wPiBzdG9wcykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEYXRhKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCwgV1RGTW92ZShzdG9w
cykpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgQ29sb3JJbnRlcnBvbGF0aW9uTWV0
aG9kIGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JJbnRl
cnBvbGF0aW9uTWV0aG9kOyB9CisgICAgICAgICAgICBjb25zdCBWZWN0b3I8Q29sb3JDb252ZXJ0
ZWRUb0ludGVycG9sYXRpb25Db2xvclNwYWNlU3RvcD4mIHN0b3BzKCkgY29uc3QgeyByZXR1cm4g
bV9zdG9wczsgfQorCisgICAgICAgIHByaXZhdGU6CisgICAgICAgICAgICBEYXRhKENvbG9ySW50
ZXJwb2xhdGlvbk1ldGhvZCBjb2xvckludGVycG9sYXRpb25NZXRob2QsIFZlY3RvcjxDb2xvckNv
bnZlcnRlZFRvSW50ZXJwb2xhdGlvbkNvbG9yU3BhY2VTdG9wPiBzdG9wcykKKyAgICAgICAgICAg
ICAgICA6IG1fY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIHsgY29sb3JJbnRlcnBvbGF0aW9uTWV0
aG9kIH0KKyAgICAgICAgICAgICAgICAsIG1fc3RvcHMgeyBXVEZNb3ZlKHN0b3BzKSB9CisgICAg
ICAgICAgICB7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIENvbG9ySW50ZXJwb2xhdGlv
bk1ldGhvZCBtX2NvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDsKKyAgICAgICAgICAgIFZlY3RvcjxD
b2xvckNvbnZlcnRlZFRvSW50ZXJwb2xhdGlvbkNvbG9yU3BhY2VTdG9wPiBtX3N0b3BzOworICAg
ICAgICB9OworCisgICAgICAgIFJlZjxEYXRhPiBkYXRhOworICAgICAgICBSZXRhaW5QdHI8Q0dG
dW5jdGlvblJlZj4gZnVuY3Rpb247CisgICAgfTsKKworICAgIHVzaW5nIFN0cmF0ZWd5ID0gc3Rk
Ojp2YXJpYW50PEdyYWRpZW50LCBTaGFkaW5nPjsKKworcHJpdmF0ZToKKyAgICBHcmFkaWVudENH
QWRhcHRvcihDb2xvckludGVycG9sYXRpb25NZXRob2QsIGNvbnN0IFdlYkNvcmU6OkdyYWRpZW50
OjpDb2xvclN0b3BWZWN0b3ImKTsKKyAgICBTdHJhdGVneSBwaWNrU3RyYXRlZ3koQ29sb3JJbnRl
cnBvbGF0aW9uTWV0aG9kLCBjb25zdCBXZWJDb3JlOjpHcmFkaWVudDo6Q29sb3JTdG9wVmVjdG9y
JikgY29uc3Q7CisKKyAgICBTdHJhdGVneSBtYWtlR3JhZGllbnQoQ29sb3JJbnRlcnBvbGF0aW9u
TWV0aG9kLCBjb25zdCBXZWJDb3JlOjpHcmFkaWVudDo6Q29sb3JTdG9wVmVjdG9yJikgY29uc3Q7
CisgICAgU3RyYXRlZ3kgbWFrZVNoYWRpbmcoQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb25z
dCBXZWJDb3JlOjpHcmFkaWVudDo6Q29sb3JTdG9wVmVjdG9yJikgY29uc3Q7CisKKyAgICBTdHJh
dGVneSBtX3N0cmF0ZWd5OworfTsKKworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447569</attachid>
            <date>2021-12-19 18:10:46 -0800</date>
            <delta_ts>2021-12-20 11:31:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234492-20211219181045.patch</filename>
            <type>text/plain</type>
            <size>38838</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDIxLTEyLTE5ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgQ0dTaGFkaW5nUmVmIGJhc2Vk
IGltcGxlbWVudGF0aW9uIG9mIEdyYWRpZW50IGFzIHN0ZXBwaW5nIHN0b25lIHRvd2FyZCBwcmVt
dWx0aXBsaWVkIGludGVycG9sYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNDQ5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtXSVBdIFRoaXMgY29tcGxldGVseSByZXBsYWNlcyB0aGUgQ0dHcmFk
aWVudFJlZiBpbXBsZW1lbnRhdGlvbi4gV2UgbmVlZCB0byBtYWtlIHRoaXMKKyAgICAgICAgY29u
ZGl0aW9uYWwgZm9yIGl0IHRvIGJlIHJlYWwuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvckNvbXBvbmVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9yQ29tcG9uZW50czo6
c2l6ZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkN1c3RvbUNHR3JhZGllbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDdXN0b21DR0dyYWRpZW50OjpmdW5jdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDdXN0b21DR0dyYWRpZW50Ojpjb2xvckludGVycG9sYXRpb25NZXRob2QgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VzdG9tQ0dHcmFkaWVudDo6c3RvcHMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q3VzdG9tQ0dHcmFkaWVudDo6Q3VzdG9tQ0dHcmFkaWVudCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1
bnByZW11bHRpcGxpZWRTaGFkaW5nRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Q0dGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21DR0dyYWRpZW50Ojppbml0aWFs
aXplRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tQ0dHcmFkaWVudDo6Y29sb3JT
cGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudDo6Y3JlYXRlQ3VzdG9tQ0dH
cmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpkcmF3TGluZWFyR3JhZGllbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6ZHJhd1JhZGlhbEdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdD
b25pY0dyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50OjpwYWludCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFkaWVudDo6ZmlsbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVu
dDo6aGFzT25seUJvdW5kZWRTUkdCQ29sb3JTdG9wcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpHcmFkaWVudDo6Y3JlYXRlQ0dHcmFkaWVudCk6IERlbGV0ZWQuCisKIDIwMjEt
MTItMTggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEhhc2ggdGFi
bGVzLCByZWFkL3dyaXRlLCBhbmQgaGVhcCBtZW1vcnkgYXJlIHVzZWQgdW5uZWNlc3NhcmlseSwg
d2hpY2ggbWF5IGh1cnQgcGVyZm9ybWFuY2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
QXBwbGVXaW4uY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBs
ZVdpbi5jbWFrZQkocmV2aXNpb24gMjg3MjMzKQorKysgU291cmNlL1dlYkNvcmUvUGxhdGZvcm1B
cHBsZVdpbi5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3IEBAIGVsc2UgKCkK
ICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRSZWN0Q0cuY3BwCiAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0U2l6ZUNHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFkaWVudENHLmNwcAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFk
aWVudENHQWRhcHRvci5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0R0xDRy5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0Q0cuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuY3Bw
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQkocmV2aXNpb24gMjg3MjMzKQorKysgU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTI5MSw2ICsy
OTEsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9GbG9hdFJlY3RDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFNpemVD
Ry5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENHLmNwcAorICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0dBZGFwdG9yLmNwcAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNl
UG9vbC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjg3MjMzKQor
KysgU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzQ4
LDYgKzM0OCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0UG9pbnRDRy5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0Zsb2F0UmVjdENHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxv
YXRTaXplQ0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENHLmNwcAorcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDR0FkYXB0b3IuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dEdMQ0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmNwcApJbmRl
eDogU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9QQUwvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODcyNDcpCisrKyBTb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMTItMTkg
IFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBDR1NoYWRpbmdS
ZWYgYmFzZWQgaW1wbGVtZW50YXRpb24gb2YgR3JhZGllbnQgYXMgc3RlcHBpbmcgc3RvbmUgdG93
YXJkIHByZW11bHRpcGxpZWQgaW50ZXJwb2xhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0NDkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oOgor
ICAgICAgICBBZGQgQ0dTaGFkaW5nUmVmIFNQSSBmb3IgY3JlYXRpbmcgY29uaWMgc2hhZGluZ3Mu
CisKIDIwMjEtMTItMTYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4NzA1Ni4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCShyZXZpc2lv
biAyODcyMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NT
UEkuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgPENvcmVHcmFw
aGljcy9DR0ZvbnRDYWNoZS5oPgogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR1BhdGhQcml2YXRl
Lmg+CiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljc1ByaXZhdGUuaD4KKyNpbmNs
dWRlIDxDb3JlR3JhcGhpY3MvQ0dTaGFkaW5nUHJpdmF0ZS5oPgogI2luY2x1ZGUgPENvcmVHcmFw
aGljcy9DR1N0eWxlUHJpdmF0ZS5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMzIzLDYgKzMy
NCwxNiBAQCB2b2lkIENHQ29udGV4dFNldFN0eWxlKENHQ29udGV4dFJlZiwgQ0dTdHlsZVJlZik7
CiB2b2lkIENHQ29udGV4dERyYXdDb25pY0dyYWRpZW50KENHQ29udGV4dFJlZiwgQ0dHcmFkaWVu
dFJlZiwgQ0dQb2ludCBjZW50ZXIsIENHRmxvYXQgYW5nbGUpOwogdm9pZCBDR1BhdGhBZGRVbmV2
ZW5Db3JuZXJzUm91bmRlZFJlY3QoQ0dNdXRhYmxlUGF0aFJlZiwgY29uc3QgQ0dBZmZpbmVUcmFu
c2Zvcm0gKiwgQ0dSZWN0LCBjb25zdCBDR1NpemUgY29ybmVyc1s0XSk7CiBib29sIENHRm9udFJl
bmRlcmluZ0dldEZvbnRTbW9vdGhpbmdEaXNhYmxlZCh2b2lkKTsKK0NHU2hhZGluZ1JlZiBDR1No
YWRpbmdDcmVhdGVDb25pYyhDR0NvbG9yU3BhY2VSZWYsIENHUG9pbnQgY2VudGVyLCBDR0Zsb2F0
IGFuZ2xlLCBDR0Z1bmN0aW9uUmVmKTsKKworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19HUkFESUVO
VF9DUkVBVEVfV0lUSF9PUFRJT05TKQorQ0dHcmFkaWVudFJlZiBDR0dyYWRpZW50Q3JlYXRlV2l0
aENvbG9yQ29tcG9uZW50c0FuZE9wdGlvbnMoQ0dDb2xvclNwYWNlUmVmLCBjb25zdCBDR0Zsb2F0
KiwgY29uc3QgQ0dGbG9hdCosIHNpemVfdCwgQ0ZEaWN0aW9uYXJ5UmVmKTsKK0NHR3JhZGllbnRS
ZWYgQ0dHcmFkaWVudENyZWF0ZVdpdGhDb2xvcnNBbmRPcHRpb25zKENHQ29sb3JTcGFjZVJlZiwg
Q0ZBcnJheVJlZiwgY29uc3QgQ0dGbG9hdCosIENGRGljdGlvbmFyeVJlZik7CisjZW5kaWYKKwor
I2lmIEhBVkUoQ09SRV9HUkFQSElDU19QUkVNVUxUSVBMSUVEX0lOVEVSUE9MQVRJT05fR1JBRElF
TlQpCitleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NHR3JhZGllbnRJbnRlcnBvbGF0ZXNQcmVt
dWx0aXBsaWVkOworI2VuZGlmCiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKIApJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMjg3MjMzKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MDgxLDYgKzQwODEsNyBAQAogCQlCQzEy
NEYwMDBDMjY0NDdBMDA5RTIzNDkgLyogSlNCYXJQcm9wLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzEyNEVGRTBDMjY0NDdBMDA5RTIzNDkgLyogSlNC
YXJQcm9wLmggKi87IH07CiAJCUJDMTI4QTczMTM3Qzg2N0MwMENBQzg0NSAvKiBSZW5kZXJHcmlk
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzEyOEE3
MjEzN0M4NjdDMDBDQUM4NDUgLyogUmVuZGVyR3JpZC5oICovOyB9OwogCQlCQzE0MDI4QjBFODM2
ODA4MDAzMTk3MTcgLyogU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMTQwMjg5MEU4MzY4MDgwMDMxOTcxNyAv
KiBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUJDMTlDREYyMjc2RkZDNkQwMDUzRjczNCAvKiBHcmFkaWVu
dENHQWRhcHRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkMxOUNERjAyNzZGRkIyNjAwNTNGNzM0IC8qIEdyYWRpZW50Q0dBZGFwdG9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMxQTdEOTgxOEZD
QjVCMDAwNDIxODc5IC8qIFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzFBN0Q5NjE4RkNC
NUIwMDA0MjE4NzkgLyogUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaCAqLzsg
fTsKIAkJQkMyMjcyODcwRTgyRTcwNzAwRTdGOTc1IC8qIFN0eWxlUmVmbGVjdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyMjcyODYwRTgyRTcw
NzAwRTdGOTc1IC8qIFN0eWxlUmVmbGVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMjI3MkEyMEU4MkU4N0MwMEU3Rjk3NSAvKiBDdXJz
b3JEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzIyNzJBMTBFODJFODdDMDBFN0Y5NzUgLyogQ3Vyc29yRGF0YS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNTExMyw2ICsxNTExNCw4IEBACiAJ
CUJDMTI4QjAwMTM3QzhENDYwMENBQzg0NSAvKiBSZW5kZXJHcmlkLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckdyaWQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQzE0MDI4ODBFODM2ODA4MDAzMTk3MTcgLyogU2Nyb2xsYmFyVGhlbWVD
b21wb3NpdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xs
YmFyVGhlbWVDb21wb3NpdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzE0
MDI4OTBFODM2ODA4MDAzMTk3MTcgLyogU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMxOUNERUYyNzZGRkIyNjAwNTNGNzM0IC8qIEdy
YWRpZW50Q0dBZGFwdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYWRpZW50Q0dBZGFwdG9y
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMxOUNERjAyNzZGRkIyNjAwNTNG
NzM0IC8qIEdyYWRpZW50Q0dBZGFwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYWRpZW50Q0dBZGFw
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMUE3RDk1MThGQ0I1QjAwMDQy
MTg3OSAvKiBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFj
ZWhvbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMUE3RDk2MThGQ0I1
QjAwMDQyMTg3OSAvKiBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFj
ZWhvbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzIwRkI3RTBDMEU4RTZD
MDBEMTQ0N0YgLyogSlNEZXByZWNhdGVkQ1NTT01WYWx1ZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEZXByZWNhdGVkQ1NTT01WYWx1ZUN1c3RvbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODUzNCw2ICsyODUzNyw4IEBACiAJ
CQkJQjI3NTM1MkMwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVjdENHLmNwcCAqLywKIAkJCQlC
Mjc1MzUyRDBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRTaXplQ0cuY3BwICovLAogCQkJCUJDNTND
NjBBMERBNTZDRjEwMDIxRUI1RCAvKiBHcmFkaWVudENHLmNwcCAqLywKKwkJCQlCQzE5Q0RFRjI3
NkZGQjI2MDA1M0Y3MzQgLyogR3JhZGllbnRDR0FkYXB0b3IuY3BwICovLAorCQkJCUJDMTlDREYw
Mjc2RkZCMjYwMDUzRjczNCAvKiBHcmFkaWVudENHQWRhcHRvci5oICovLAogCQkJCUIyRUQ5Nzcw
MEIxRjU1Q0UwMDI1N0QwRiAvKiBHcmFwaGljc0NvbnRleHRDRy5jcHAgKi8sCiAJCQkJOTM0OTA3
RTMxMjVCQkJDODAwN0YyM0EwIC8qIEdyYXBoaWNzQ29udGV4dENHLmggKi8sCiAJCQkJNkUyMUM2
QzExMTI2MzM5OTAwQTdCRTAyIC8qIEdyYXBoaWNzQ29udGV4dEdMQ0cuY3BwICovLApAQCAtMzMz
MDQsNiArMzMzMDksNyBAQAogCQkJCTgzNzg4NzgyMjREOEE2MDkwMDBENEE1QiAvKiBBdWRpb0J1
ZmZlclNvdXJjZU9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDdDMTJCMDI2Rjcw
MEMxQTM1OSAvKiBBdWRpb0J1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwN0UxMkIwMjZG
NzAwQzFBMzU5IC8qIEF1ZGlvQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMxOUNERjIy
NzZGRkM2RDAwNTNGNzM0IC8qIEdyYWRpZW50Q0dBZGFwdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDRDNFRUYzQTI1Nzk5Rjg4MDA2NTYzQkIgLyogQXVkaW9Db25maWd1cmF0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGRDMxNjAwNTEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Db250ZXh0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFNzg1RDk2MjI0QjdGNzM1MDAxNERCMjEgLyogQXVkaW9Db250
ZXh0TGF0ZW5jeUNhdGVnb3J5LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29tcG9uZW50cy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29tcG9uZW50cy5oCShyZXZpc2lvbiAy
ODcyMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbXBvbmVu
dHMuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsOCBAQCBzdHJ1Y3QgQ29sb3JDb21wb25l
bnRzIHsKICAgICB0ZW1wbGF0ZTxzaXplX3QgU3RhcnQsIHNpemVfdCBFbmQ+CiAgICAgY29uc3Rl
eHByIENvbG9yQ29tcG9uZW50czxULCBFbmQgLSBTdGFydD4gc3Vic2V0KCkgY29uc3Q7CiAKKyAg
ICBjb25zdGV4cHIgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBTaXplOyB9CisKICAgICBz
dGQ6OmFycmF5PFQsIE4+IGNvbXBvbmVudHM7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuY3BwCShyZXZpc2lvbiAyODcyMzMpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDYgKzMyLDEwIEBACiAjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaGVyLmg+CiAKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiR3JhZGllbnRD
R0FkYXB0b3IuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlZjxHcmFkaWVu
dD4gR3JhZGllbnQ6OmNyZWF0ZShEYXRhJiYgZGF0YSwgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9k
IGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCkKQEAgLTQ0LDYgKzQ4LDggQEAgR3JhZGllbnQ6Okdy
YWRpZW50KERhdGEmJiBkYXRhLCBDb2xvckludGVycG9sYXRpb25NZXRoCiAgICAgLCBtX2NvbG9y
SW50ZXJwb2xhdGlvbk1ldGhvZCB7IGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCB9CiB7CiB9CisK
K0dyYWRpZW50Ojp+R3JhZGllbnQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgR3JhZGllbnQ6OmFkanVz
dFBhcmFtZXRlcnNGb3JUaWxlZERyYXdpbmcoRmxvYXRTaXplJiBzaXplLCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZykKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaAkocmV2aXNpb24gMjg3MjMzKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzUsMTcgKzM1LDEyIEBACiAjaW5jbHVkZSA8dmFyaWFudD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2VuZGlm
Ci0KICNpZiBVU0UoRElSRUNUMkQpCiAjaW5jbHVkZSAiQ09NUHRyLmgiCiAjZW5kaWYKIAogI2lm
IFVTRShDRykKIHR5cGVkZWYgc3RydWN0IENHQ29udGV4dCogQ0dDb250ZXh0UmVmOwotdHlwZWRl
ZiBzdHJ1Y3QgQ0dHcmFkaWVudCogQ0dHcmFkaWVudFJlZjsKICNlbmRpZgogCiAjaWYgVVNFKERJ
UkVDVDJEKQpAQCAtNjIsNiArNTcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGbG9h
dFJlY3Q7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiAKK2NsYXNzIEdyYWRpZW50Q0dBZGFwdG9y
OworCiBjbGFzcyBHcmFkaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYWRpZW50PiB7CiBwdWJs
aWM6CiAgICAgc3RydWN0IENvbG9yU3RvcCB7CkBAIC0xMDQsNiArMTAxLDcgQEAgY2xhc3MgR3Jh
ZGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmFkaWVudD4geyAocHVibGljCiAgICAgdXNpbmcg
RGF0YSA9IHN0ZDo6dmFyaWFudDxMaW5lYXJEYXRhLCBSYWRpYWxEYXRhLCBDb25pY0RhdGE+Owog
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxHcmFkaWVudD4gY3JlYXRlKERhdGEmJiwg
Q29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+R3JhZGllbnQo
KTsKIAogICAgIGJvb2wgaXNaZXJvU2l6ZSgpIGNvbnN0OwogCkBAIC0xNDQsMTEgKzE0Miw2IEBA
IGNsYXNzIEdyYWRpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8R3JhZGllbnQ+IHsgKHB1YmxpYwog
ICAgIHZvaWQgc29ydFN0b3BzKCkgY29uc3Q7CiAgICAgdm9pZCBzdG9wc0NoYW5nZWQoKTsKIAot
I2lmIFVTRShDRykKLSAgICB2b2lkIGNyZWF0ZUNHR3JhZGllbnQoKTsKLSAgICBib29sIGhhc09u
bHlCb3VuZGVkU1JHQkNvbG9yU3RvcHMoKSBjb25zdDsKLSNlbmRpZgotCiAgICAgRGF0YSBtX2Rh
dGE7CiAgICAgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIG1fY29sb3JJbnRlcnBvbGF0aW9uTWV0
aG9kOwogICAgIG11dGFibGUgQ29sb3JTdG9wVmVjdG9yIG1fc3RvcHM7CkBAIC0xNTcsNyArMTUw
LDcgQEAgY2xhc3MgR3JhZGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmFkaWVudD4geyAocHVi
bGljCiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX2NhY2hlZEhhc2ggeyAwIH07CiAKICNpZiBVU0Uo
Q0cpCi0gICAgUmV0YWluUHRyPENHR3JhZGllbnRSZWY+IG1fZ3JhZGllbnQ7CisgICAgUmVmUHRy
PEdyYWRpZW50Q0dBZGFwdG9yPiBtX2dyYWRpZW50OwogI2VuZGlmCiAKICNpZiBVU0UoRElSRUNU
MkQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENH
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFkaWVudENHLmNwcAkocmV2aXNpb24gMjg3MjMzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDkgKzI5
LDkgQEAKIAogI2lmIFVTRShDRykKIAorI2luY2x1ZGUgIkdyYWRpZW50Q0dBZGFwdG9yLmgiCiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVH
cmFwaGljc1NQSS5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC00MCw2MSArNDAsNiBAQCB2b2lkIEdyYWRpZW50OjpzdG9wc0NoYW5nZWQo
KQogICAgIG1fZ3JhZGllbnQgPSBudWxscHRyOwogfQogCi1ib29sIEdyYWRpZW50OjpoYXNPbmx5
Qm91bmRlZFNSR0JDb2xvclN0b3BzKCkgY29uc3QKLXsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHN0
b3AgOiBtX3N0b3BzKSB7Ci0gICAgICAgIGlmIChzdG9wLmNvbG9yLmNvbG9yU3BhY2UoKSAhPSBD
b2xvclNwYWNlOjpTUkdCKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBHcmFkaWVudDo6Y3JlYXRlQ0dHcmFkaWVudCgpCi17Ci0g
ICAgc29ydFN0b3BzKCk7Ci0KLSAgICB1bnNpZ25lZCBudW1TdG9wcyA9IG1fc3RvcHMuc2l6ZSgp
OwotCi0gICAgY29uc3QgaW50IHJlc2VydmVkU3RvcHMgPSAzOwotICAgIFZlY3RvcjxDR0Zsb2F0
LCByZXNlcnZlZFN0b3BzPiBsb2NhdGlvbnM7Ci0gICAgbG9jYXRpb25zLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkobnVtU3RvcHMpOwotCi0gICAgLy8gSWYgYWxsIHRoZSBzdG9wcyBhcmUgYm91bmRl
ZCBzUkdCIChhcyByZXByZXNlbnRlZCBieSB0aGUgY29sb3IgaGF2aW5nIHRoZSBjb2xvciBzcGFj
ZQotICAgIC8vIENvbG9yU3BhY2U6OlNSR0IpLCBpdCBpcyBmYXN0ZXIgdG8gY3JlYXRlIGEgZ3Jh
ZGllbnQgdXNpbmcgY29tcG9uZW50cyB0aGFuIENHQ29sb3JzLgotICAgIGlmIChoYXNPbmx5Qm91
bmRlZFNSR0JDb2xvclN0b3BzKCkpIHsKLSAgICAgICAgVmVjdG9yPENHRmxvYXQsIDQgKiByZXNl
cnZlZFN0b3BzPiBjb2xvckNvbXBvbmVudHM7Ci0gICAgICAgIGNvbG9yQ29tcG9uZW50cy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KG51bVN0b3BzICogNCk7Ci0KLSAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBzdG9wIDogbV9zdG9wcykgewotICAgICAgICAgICAgYXV0byBbY29sb3JTcGFjZSwgY29t
cG9uZW50c10gPSBzdG9wLmNvbG9yLmNvbG9yU3BhY2VBbmRDb21wb25lbnRzKCk7Ci0gICAgICAg
ICAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IGNvbXBvbmVudHM7Ci0gICAgICAgICAgICBjb2xvckNv
bXBvbmVudHMudW5jaGVja2VkQXBwZW5kKHIpOwotICAgICAgICAgICAgY29sb3JDb21wb25lbnRz
LnVuY2hlY2tlZEFwcGVuZChnKTsKLSAgICAgICAgICAgIGNvbG9yQ29tcG9uZW50cy51bmNoZWNr
ZWRBcHBlbmQoYik7Ci0gICAgICAgICAgICBjb2xvckNvbXBvbmVudHMudW5jaGVja2VkQXBwZW5k
KGEpOwotCi0gICAgICAgICAgICBsb2NhdGlvbnMudW5jaGVja2VkQXBwZW5kKHN0b3Aub2Zmc2V0
KTsKLSAgICAgICAgfQotCi0gICAgICAgIG1fZ3JhZGllbnQgPSBhZG9wdENGKENHR3JhZGllbnRD
cmVhdGVXaXRoQ29sb3JDb21wb25lbnRzKHNSR0JDb2xvclNwYWNlUmVmKCksIGNvbG9yQ29tcG9u
ZW50cy5kYXRhKCksIGxvY2F0aW9ucy5kYXRhKCksIG51bVN0b3BzKSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBhdXRvIGNvbG9yc0FycmF5ID0gYWRvcHRDRihDRkFycmF5Q3JlYXRl
TXV0YWJsZSgwLCBtX3N0b3BzLnNpemUoKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwotICAg
IGZvciAoY29uc3QgYXV0byYgc3RvcCA6IG1fc3RvcHMpIHsKLSAgICAgICAgQ0ZBcnJheUFwcGVu
ZFZhbHVlKGNvbG9yc0FycmF5LmdldCgpLCBjYWNoZWRDR0NvbG9yKHN0b3AuY29sb3IpLmdldCgp
KTsKLSAgICAgICAgbG9jYXRpb25zLnVuY2hlY2tlZEFwcGVuZChzdG9wLm9mZnNldCk7Ci0gICAg
fQotCi0jaWYgSEFWRShDT1JFX0dSQVBISUNTX0VYVEVOREVEX1NSR0JfQ09MT1JfU1BBQ0UpCi0g
ICAgYXV0byBleHRlbmRlZENvbG9yc0dyYWRpZW50Q29sb3JTcGFjZSA9IGV4dGVuZGVkU1JHQkNv
bG9yU3BhY2VSZWYoKTsKLSNlbHNlCi0gICAgYXV0byBleHRlbmRlZENvbG9yc0dyYWRpZW50Q29s
b3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jZW5kaWYKLQotICAgIG1fZ3JhZGllbnQg
PSBhZG9wdENGKENHR3JhZGllbnRDcmVhdGVXaXRoQ29sb3JzKGV4dGVuZGVkQ29sb3JzR3JhZGll
bnRDb2xvclNwYWNlLCBjb2xvcnNBcnJheS5nZXQoKSwgbG9jYXRpb25zLmRhdGEoKSkpOwotfQot
CiB2b2lkIEdyYWRpZW50OjpmaWxsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiByZWN0KQogewogICAgIGNvbnRleHQuY2xpcChyZWN0KTsKQEAgLTExMCw4ICs1NSwx
MCBAQCB2b2lkIEdyYWRpZW50OjpwYWludChDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250ZXh0KQog
ewogICAgIENHR3JhZGllbnREcmF3aW5nT3B0aW9ucyBleHRlbmRPcHRpb25zID0ga0NHR3JhZGll
bnREcmF3c0JlZm9yZVN0YXJ0TG9jYXRpb24gfCBrQ0dHcmFkaWVudERyYXdzQWZ0ZXJFbmRMb2Nh
dGlvbjsKIAotICAgIGlmICghbV9ncmFkaWVudCkKLSAgICAgICAgY3JlYXRlQ0dHcmFkaWVudCgp
OworICAgIGlmICghbV9ncmFkaWVudCkgeworICAgICAgICBzb3J0U3RvcHMoKTsKKyAgICAgICAg
bV9ncmFkaWVudCA9IEdyYWRpZW50Q0dBZGFwdG9yOjpjcmVhdGUobV9jb2xvckludGVycG9sYXRp
b25NZXRob2QsIG1fc3RvcHMpOworICAgIH0KIAogICAgIFdURjo6c3dpdGNoT24obV9kYXRhLAog
ICAgICAgICBbJl0gKGNvbnN0IExpbmVhckRhdGEmIGRhdGEpIHsKQEAgLTE0Myw3ICs5MCw3IEBA
IHZvaWQgR3JhZGllbnQ6OnBhaW50KENHQ29udGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQpCiAgICAg
ICAgICAgICAgICAgICAgIENHUG9pbnQgbGVmdCA9IENHUG9pbnRNYWtlKGZsaXAgPyBlbmQgOiBz
dGFydCwgMCk7CiAgICAgICAgICAgICAgICAgICAgIENHUG9pbnQgcmlnaHQgPSBDR1BvaW50TWFr
ZShmbGlwID8gc3RhcnQgOiBlbmQsIDApOwogCi0gICAgICAgICAgICAgICAgICAgIENHQ29udGV4
dERyYXdMaW5lYXJHcmFkaWVudChwbGF0Zm9ybUNvbnRleHQsIG1fZ3JhZGllbnQuZ2V0KCksIGxl
ZnQsIHJpZ2h0LCBleHRlbmRPcHRpb25zKTsKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFkaWVu
dC0+ZHJhd0xpbmVhckdyYWRpZW50KHBsYXRmb3JtQ29udGV4dCwgbGVmdCwgcmlnaHQsIGV4dGVu
ZE9wdGlvbnMpOwogICAgICAgICAgICAgICAgIH07CiAKICAgICAgICAgICAgICAgICBhdXRvIGlz
TGVmdE9mID0gW10oQ0dGbG9hdCBzdGFydCwgQ0dGbG9hdCBlbmQsIENHUmVjdCBib3VuZGluZ0Jv
eCkgLT4gYm9vbCB7CkBAIC0xODksMTEgKzEzNiwxMCBAQCB2b2lkIEdyYWRpZW50OjpwYWludChD
R0NvbnRleHRSZWYgcGxhdGZvcm1Db250ZXh0KQogICAgICAgICAgICAgICAgICAgICBkcmF3TGlu
ZWFyR3JhZGllbnQoZW5kIC0gZHgsIGVuZCwgZmxpcCk7CiAgICAgICAgICAgICAgICAgICAgIGZs
aXAgPSAhZmxpcCAmJiBtX3NwcmVhZE1ldGhvZCA9PSBHcmFkaWVudFNwcmVhZE1ldGhvZDo6UmVm
bGVjdDsKICAgICAgICAgICAgICAgICB9Ci0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgR3JhZGllbnRTcHJlYWRNZXRob2Q6OlBhZDoKLSAg
ICAgICAgICAgICAgICBDR0NvbnRleHREcmF3TGluZWFyR3JhZGllbnQocGxhdGZvcm1Db250ZXh0
LCBtX2dyYWRpZW50LmdldCgpLCBkYXRhLnBvaW50MCwgZGF0YS5wb2ludDEsIGV4dGVuZE9wdGlv
bnMpOworICAgICAgICAgICAgICAgIG1fZ3JhZGllbnQtPmRyYXdMaW5lYXJHcmFkaWVudChwbGF0
Zm9ybUNvbnRleHQsIGRhdGEucG9pbnQwLCBkYXRhLnBvaW50MSwgZXh0ZW5kT3B0aW9ucyk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0sCiAgICAgICAgIFsmXSAoY29uc3QgUmFkaWFsRGF0YSYg
ZGF0YSkgewpAQCAtMjA4LDcgKzE1NCw3IEBAIHZvaWQgR3JhZGllbnQ6OnBhaW50KENHQ29udGV4
dFJlZiBwbGF0Zm9ybUNvbnRleHQpCiAgICAgICAgICAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRl
Q1RNKHBsYXRmb3JtQ29udGV4dCwgLWRhdGEucG9pbnQwLngoKSwgLWRhdGEucG9pbnQwLnkoKSk7
CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIENHQ29udGV4dERyYXdSYWRpYWxHcmFkaWVu
dChwbGF0Zm9ybUNvbnRleHQsIG1fZ3JhZGllbnQuZ2V0KCksIGRhdGEucG9pbnQwLCBkYXRhLnN0
YXJ0UmFkaXVzLCBkYXRhLnBvaW50MSwgZGF0YS5lbmRSYWRpdXMsIGV4dGVuZE9wdGlvbnMpOwor
ICAgICAgICAgICAgbV9ncmFkaWVudC0+ZHJhd1JhZGlhbEdyYWRpZW50KHBsYXRmb3JtQ29udGV4
dCwgZGF0YS5wb2ludDAsIGRhdGEuc3RhcnRSYWRpdXMsIGRhdGEucG9pbnQxLCBkYXRhLmVuZFJh
ZGl1cywgZXh0ZW5kT3B0aW9ucyk7CiAKICAgICAgICAgICAgIGlmIChuZWVkU2NhbGluZykKICAg
ICAgICAgICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKHBsYXRmb3JtQ29udGV4dCk7CkBA
IC0yMjEsNyArMTY3LDcgQEAgdm9pZCBHcmFkaWVudDo6cGFpbnQoQ0dDb250ZXh0UmVmIHBsYXRm
b3JtQ29udGV4dCkKICAgICAgICAgICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShwbGF0Zm9ybUNv
bnRleHQsIGRhdGEucG9pbnQwLngoKSwgZGF0YS5wb2ludDAueSgpKTsKICAgICAgICAgICAgIENH
Q29udGV4dFJvdGF0ZUNUTShwbGF0Zm9ybUNvbnRleHQsIChDR0Zsb2F0KS1NX1BJXzIpOwogICAg
ICAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKHBsYXRmb3JtQ29udGV4dCwgLWRhdGEucG9p
bnQwLngoKSwgLWRhdGEucG9pbnQwLnkoKSk7Ci0gICAgICAgICAgICBDR0NvbnRleHREcmF3Q29u
aWNHcmFkaWVudChwbGF0Zm9ybUNvbnRleHQsIG1fZ3JhZGllbnQuZ2V0KCksIGRhdGEucG9pbnQw
LCBkYXRhLmFuZ2xlUmFkaWFucyk7CisgICAgICAgICAgICBtX2dyYWRpZW50LT5kcmF3Q29uaWNH
cmFkaWVudChwbGF0Zm9ybUNvbnRleHQsIGRhdGEucG9pbnQwLCBkYXRhLmFuZ2xlUmFkaWFucyk7
CiAgICAgICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKHBsYXRmb3JtQ29udGV4dCk7CiAj
ZWxzZQogICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGRhdGEpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDR0FkYXB0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0dBZGFwdG9y
LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFkaWVudENHQWRhcHRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNTIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHcmFkaWVudENHQWRhcHRvci5o
IgorCisjaW5jbHVkZSAiQ29sb3JJbnRlcnBvbGF0aW9uLmgiCisjaW5jbHVkZSAiQ29sb3JTcGFj
ZUNHLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgSW50ZXJw
b2xhdGlvblNwYWNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGFscGhhUHJlbXVsdGlwbGljYXRp
b24+CitzdGF0aWMgdm9pZCBzaGFkaW5nRnVuY3Rpb24odm9pZCogaW5mbywgY29uc3QgQ0dGbG9h
dCogaW4sIENHRmxvYXQqIG91dCkKK3sKKyAgICB1c2luZyBJbnRlcnBvbGF0aW9uU3BhY2VDb2xv
clR5cGUgPSB0eXBlbmFtZSBJbnRlcnBvbGF0aW9uU3BhY2U6OkNvbG9yVHlwZTsKKyNpZiBIQVZF
KENPUkVfR1JBUEhJQ1NfRVhURU5ERURfU1JHQl9DT0xPUl9TUEFDRSkKKyAgICB1c2luZyBPdXRw
dXRTcGFjZUNvbG9yVHlwZSA9IEV4dGVuZGVkU1JHQkE8ZmxvYXQ+OworI2Vsc2UKKyAgICB1c2lu
ZyBPdXRwdXRTcGFjZUNvbG9yVHlwZSA9IFNSR0JBPGZsb2F0PjsKKyNlbmRpZgorCisgICAgYXV0
byogZGF0YSA9IHN0YXRpY19jYXN0PEdyYWRpZW50Q0dBZGFwdG9yOjpTaGFkaW5nOjpEYXRhKj4o
aW5mbyk7CisKKyAgICAvLyBDb21wdXRlIGNvbG9yIGF0IG9mZnNldCAnaW5bMF0nIGFuZCBhc3Np
Z24gdGhlIGNvbXBvbmVudHMgdG8gb3V0WzAgLT4gM10uCisKKyAgICBmbG9hdCByZXF1ZXN0ZWRP
ZmZzZXQgPSBpblswXTsKKworICAgIC8vIDEuIEZpbmQgc3RvcHMgdGhhdCBib3VuZCB0aGUgcmVx
dWVzdGVkIG9mZnNldC4KKyAgICBhdXRvIFtzdG9wMCwgc3RvcDFdID0gWyZdIHsKKyAgICAgICAg
Zm9yIChzaXplX3Qgc3RvcCA9IDE7IHN0b3AgPCBkYXRhLT5zdG9wcygpLnNpemUoKTsgKytzdG9w
KSB7CisgICAgICAgICAgICBpZiAocmVxdWVzdGVkT2Zmc2V0IDw9IGRhdGEtPnN0b3BzKClbc3Rv
cF0ub2Zmc2V0KQorICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6OnRpZShkYXRhLT5zdG9wcygp
W3N0b3AgLSAxXSwgZGF0YS0+c3RvcHMoKVtzdG9wXSk7CisgICAgICAgIH0KKyAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9KCk7CisKKyAgICAvLyAyLiBDb21wdXRl
IHBlcmNlbnRhZ2Ugb2Zmc2V0IGJldHdlZW4gdGhlIHR3byBzdG9wcy4KKyAgICBmbG9hdCBvZmZz
ZXQgPSAoc3RvcDEub2Zmc2V0ID09IHN0b3AwLm9mZnNldCkgPyAwLjBmIDogKHJlcXVlc3RlZE9m
ZnNldCAtIHN0b3AwLm9mZnNldCkgLyAoc3RvcDEub2Zmc2V0IC0gc3RvcDAub2Zmc2V0KTsKKwor
ICAgIC8vIDMuIEludGVycG9sYXRlIHRoZSB0d28gc3RvcHMnIGNvbG9ycyBieSB0aGUgY29tcHV0
ZWQgb2Zmc2V0LgorICAgIC8vIEZJWE1FOiBXZSBkb24ndCB3YW50IHRvIGR1ZSBodWUgZml4dXAg
Zm9yIGVhY2ggY2FsbCwgc28gd2Ugc2hvdWxkIGZpZ3VyZSBvdXQgaG93IHRvIHByZWNvbXB1dGUg
dGhhdC4KKyAgICBhdXRvIGludGVycG9sYXRlZENvbG9yID0gaW50ZXJwb2xhdGVDb2xvckNvbXBv
bmVudHM8YWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4oCisgICAgICAgIHN0ZDo6Z2V0PEludGVycG9s
YXRpb25TcGFjZT4oZGF0YS0+Y29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kKCkuY29sb3JTcGFjZSks
CisgICAgICAgIG1ha2VGcm9tQ29tcG9uZW50czxJbnRlcnBvbGF0aW9uU3BhY2VDb2xvclR5cGU+
KHN0b3AwLmNvbG9yQ29tcG9uZW50cyksIDEuMGYgLSBvZmZzZXQsCisgICAgICAgIG1ha2VGcm9t
Q29tcG9uZW50czxJbnRlcnBvbGF0aW9uU3BhY2VDb2xvclR5cGU+KHN0b3AxLmNvbG9yQ29tcG9u
ZW50cyksIG9mZnNldCk7CisKKyAgICAvLyA0LiBDb252ZXJ0IHRvIHRoZSBvdXRwdXQgY29sb3Jz
cGFjZS4KKyAgICBhdXRvIGludGVycG9sYXRlZENvbG9yQ29udmVydGVkVG9PdXRwdXRTcGFjZSA9
IGFzQ29sb3JDb21wb25lbnRzKGNvbnZlcnRDb2xvcjxPdXRwdXRTcGFjZUNvbG9yVHlwZT4oaW50
ZXJwb2xhdGVkQ29sb3IpKTsKKworICAgIC8vIDUuIFdyaXRlIGNvbG9yIGNvbXBvbmVudHMgdG8g
J291dCcgcG9pbnRlci4KKyAgICBmb3IgKHNpemVfdCBjb21wb25lbnRJbmRleCA9IDA7IGNvbXBv
bmVudEluZGV4IDwgaW50ZXJwb2xhdGVkQ29sb3JDb252ZXJ0ZWRUb091dHB1dFNwYWNlLnNpemUo
KTsgKytjb21wb25lbnRJbmRleCkKKyAgICAgICAgb3V0W2NvbXBvbmVudEluZGV4XSA9IGludGVy
cG9sYXRlZENvbG9yQ29udmVydGVkVG9PdXRwdXRTcGFjZVtjb21wb25lbnRJbmRleF07Cit9CisK
K0dyYWRpZW50Q0dBZGFwdG9yOjpHcmFkaWVudENHQWRhcHRvcihDb2xvckludGVycG9sYXRpb25N
ZXRob2QgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb25zdCBXZWJDb3JlOjpHcmFkaWVudDo6
Q29sb3JTdG9wVmVjdG9yJiBzdG9wcykKKyAgICA6IG1fc3RyYXRlZ3kgeyBwaWNrU3RyYXRlZ3ko
Y29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBzdG9wcykgfQoreworfQorCitHcmFkaWVudENHQWRh
cHRvcjo6U3RyYXRlZ3kgR3JhZGllbnRDR0FkYXB0b3I6OnBpY2tTdHJhdGVneShDb2xvckludGVy
cG9sYXRpb25NZXRob2QgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb25zdCBXZWJDb3JlOjpH
cmFkaWVudDo6Q29sb3JTdG9wVmVjdG9yJiBzdG9wcykgY29uc3QKK3sKKyAgICByZXR1cm4gV1RG
Ojpzd2l0Y2hPbihjb2xvckludGVycG9sYXRpb25NZXRob2QuY29sb3JTcGFjZSwKKyAgICAgICAg
WyZdIChjb25zdCBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0ImKSAtPiBTdHJhdGVneSB7
CisgICAgICAgICAgICBzd2l0Y2ggKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5hbHBoYVByZW11
bHRpcGxpY2F0aW9uKSB7CisgICAgICAgICAgICBjYXNlIEFscGhhUHJlbXVsdGlwbGljYXRpb246
OlVucHJlbXVsdGlwbGllZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZUdyYWRpZW50KGNv
bG9ySW50ZXJwb2xhdGlvbk1ldGhvZCwgc3RvcHMpOworICAgICAgICAgICAgY2FzZSBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkOgorI2lmIEhBVkUoQ09SRV9HUkFQSElDU19Q
UkVNVUxUSVBMSUVEX0lOVEVSUE9MQVRJT05fR1JBRElFTlQpCisgICAgICAgICAgICAgICAgcmV0
dXJuIG1ha2VHcmFkaWVudChjb2xvckludGVycG9sYXRpb25NZXRob2QsIHN0b3BzKTsKKyNlbHNl
CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VTaGFkaW5nKGNvbG9ySW50ZXJwb2xhdGlvbk1l
dGhvZCwgc3RvcHMpOworI2VuZGlmCisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
IFsmXSAoY29uc3QgYXV0byYpIC0+IFN0cmF0ZWd5IHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBB
ZGQgc3VwcG9ydCBmb3IgdGhlIG90aGVyIGludGVycG9sYXRpb24gY29sb3Igc3BhY2VzLgorICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgICk7
Cit9CisKK0dyYWRpZW50Q0dBZGFwdG9yOjpTdHJhdGVneSBHcmFkaWVudENHQWRhcHRvcjo6bWFr
ZUdyYWRpZW50KENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBjb2xvckludGVycG9sYXRpb25NZXRo
b2QsIGNvbnN0IFdlYkNvcmU6OkdyYWRpZW50OjpDb2xvclN0b3BWZWN0b3ImIHN0b3BzKSBjb25z
dAoreworICAgIEFTU0VSVF9VTlVTRUQoY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQj4oY29sb3JJbnRl
cnBvbGF0aW9uTWV0aG9kLmNvbG9yU3BhY2UpKTsKKyNpZiAhSEFWRShDT1JFX0dSQVBISUNTX1BS
RU1VTFRJUExJRURfSU5URVJQT0xBVElPTl9HUkFESUVOVCkKKyAgICBBU1NFUlRfVU5VU0VEKGNv
bG9ySW50ZXJwb2xhdGlvbk1ldGhvZCwgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLmFscGhhUHJl
bXVsdGlwbGljYXRpb24gPT0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVk
KTsKKyNlbmRpZgorCisjaWYgSEFWRShDT1JFX0dSQVBISUNTX0dSQURJRU5UX0NSRUFURV9XSVRI
X09QVElPTlMpCisjaWYgSEFWRShDT1JFX0dSQVBISUNTX1BSRU1VTFRJUExJRURfSU5URVJQT0xB
VElPTl9HUkFESUVOVCkKKyAgICBhdXRvIGdyYWRpZW50SW50ZXJwb2xhdGVzUHJlbXVsdGlwbGll
ZE9wdGlvbnNEaWN0aW9uYXJ5ID0gW10gKCkgLT4gQ0ZEaWN0aW9uYXJ5UmVmIHsKKyAgICAgICAg
c3RhdGljIENGVHlwZVJlZiBrZXlzW10gPSB7IGtDR0dyYWRpZW50SW50ZXJwb2xhdGVzUHJlbXVs
dGlwbGllZCB9OworICAgICAgICBzdGF0aWMgQ0ZUeXBlUmVmIHZhbHVlc1tdID0geyBrQ0ZCb29s
ZWFuVHJ1ZSB9OworICAgICAgICBzdGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMgPSBDRkRp
Y3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga2V5cywgdmFsdWVzLCBXVEZfQVJS
QVlfTEVOR1RIKGtleXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBl
RGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKKworICAgICAgICByZXR1cm4gb3B0aW9uczsKKyAg
ICB9OworCisgICBhdXRvIGdyYWRpZW50T3B0aW9uc0RpY3Rpb25hcnkgPSBbJl0gKGF1dG8gY29s
b3JJbnRlcnBvbGF0aW9uTWV0aG9kKSAtPiBDRkRpY3Rpb25hcnlSZWYgeworICAgICAgICBzd2l0
Y2ggKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5hbHBoYVByZW11bHRpcGxpY2F0aW9uKSB7Cisg
ICAgICAgIGNhc2UgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkOgorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGNhc2UgQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbjo6UHJlbXVsdGlwbGllZDoKKyAgICAgICAgICAgIHJldHVybiBncmFkaWVudEludGVycG9s
YXRlc1ByZW11bHRpcGxpZWRPcHRpb25zRGljdGlvbmFyeSgpOworICAgICAgICB9CisgICB9Owor
I2Vsc2UKKyAgIGF1dG8gZ3JhZGllbnRPcHRpb25zRGljdGlvbmFyeSA9IFtdIChhdXRvKSAtPiBD
RkRpY3Rpb25hcnlSZWYgeworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgIH07CisjZW5kaWYK
KyNlbmRpZgorCisgICAgYXV0byBoYXNPbmx5Qm91bmRlZFNSR0JDb2xvclN0b3BzID0gW10gKGNv
bnN0IGF1dG8mIHN0b3BzKSB7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgc3RvcCA6IHN0b3Bz
KSB7CisgICAgICAgICAgICBpZiAoc3RvcC5jb2xvci5jb2xvclNwYWNlKCkgIT0gQ29sb3JTcGFj
ZTo6U1JHQikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfTsKKworICAgIGF1dG8gbnVtYmVyT2ZTdG9wcyA9IHN0b3Bz
LnNpemUoKTsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byByZXNlcnZlZFN0b3BzID0gMzsK
KyAgICBWZWN0b3I8Q0dGbG9hdCwgcmVzZXJ2ZWRTdG9wcz4gbG9jYXRpb25zOworICAgIGxvY2F0
aW9ucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG51bWJlck9mU3RvcHMpOworCisgICAgVmVjdG9y
PENHRmxvYXQsIDQgKiByZXNlcnZlZFN0b3BzPiBjb2xvckNvbXBvbmVudHM7CisgICAgY29sb3JD
b21wb25lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVtYmVyT2ZTdG9wcyAqIDQpOworCisg
ICAgYXV0byBncmFkaWVudENvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOworCisgICAg
Ly8gRklYTUU6IE5vdyB0aGF0IHdlIG9ubHkgZXZlciB1c2UgQ0dHcmFkaWVudENyZWF0ZVdpdGhD
b2xvckNvbXBvbmVudHMsIHdlIHNob3VsZCBpbnZlc3RpZ2F0ZQorICAgIC8vIGlmIHRoZXJlIGlz
IGFueSByZWFsIGJlbmVmaXQgdG8gdXNpbmcgc1JHQiB3aGVuIGFsbCB0aGUgc3RvcHMgYXJlIGJv
dW5kZWQgdnMganVzdCB1c2luZworICAgIC8vIGV4dGVuZGVkIHNSR0IgZm9yIGFsbCBncmFkaWVu
dHMuCisgICAgaWYgKGhhc09ubHlCb3VuZGVkU1JHQkNvbG9yU3RvcHMoc3RvcHMpKSB7CisgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgc3RvcCA6IHN0b3BzKSB7CisgICAgICAgICAgICBhdXRvIFtj
b2xvclNwYWNlLCBjb21wb25lbnRzXSA9IHN0b3AuY29sb3IuY29sb3JTcGFjZUFuZENvbXBvbmVu
dHMoKTsKKyAgICAgICAgICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gY29tcG9uZW50czsKKyAgICAg
ICAgICAgIGNvbG9yQ29tcG9uZW50cy51bmNoZWNrZWRBcHBlbmQocik7CisgICAgICAgICAgICBj
b2xvckNvbXBvbmVudHMudW5jaGVja2VkQXBwZW5kKGcpOworICAgICAgICAgICAgY29sb3JDb21w
b25lbnRzLnVuY2hlY2tlZEFwcGVuZChiKTsKKyAgICAgICAgICAgIGNvbG9yQ29tcG9uZW50cy51
bmNoZWNrZWRBcHBlbmQoYSk7CisKKyAgICAgICAgICAgIGxvY2F0aW9ucy51bmNoZWNrZWRBcHBl
bmQoc3RvcC5vZmZzZXQpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBzdG9wIDogc3RvcHMpIHsKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfRVhURU5E
RURfU1JHQl9DT0xPUl9TUEFDRSkKKyAgICAgICAgICAgIGdyYWRpZW50Q29sb3JTcGFjZSA9IGV4
dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKTsKKyAgICAgICAgICAgIGF1dG8gW3IsIGcsIGIsIGFd
ID0gc3RvcC5jb2xvci50b0NvbG9yVHlwZUxvc3N5PEV4dGVuZGVkU1JHQkE8ZmxvYXQ+PigpOwor
I2Vsc2UKKyAgICAgICAgICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gc3RvcC5jb2xvci50b0NvbG9y
VHlwZUxvc3N5PFNSR0JBPGZsb2F0Pj4oKTsKKyNlbmRpZgorICAgICAgICAgICAgY29sb3JDb21w
b25lbnRzLnVuY2hlY2tlZEFwcGVuZChyKTsKKyAgICAgICAgICAgIGNvbG9yQ29tcG9uZW50cy51
bmNoZWNrZWRBcHBlbmQoZyk7CisgICAgICAgICAgICBjb2xvckNvbXBvbmVudHMudW5jaGVja2Vk
QXBwZW5kKGIpOworICAgICAgICAgICAgY29sb3JDb21wb25lbnRzLnVuY2hlY2tlZEFwcGVuZChh
KTsKKworICAgICAgICAgICAgbG9jYXRpb25zLnVuY2hlY2tlZEFwcGVuZChzdG9wLm9mZnNldCk7
CisgICAgICAgIH0KKyAgICB9CisKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfR1JBRElFTlRfQ1JF
QVRFX1dJVEhfT1BUSU9OUykKKyAgICByZXR1cm4gR3JhZGllbnQgeyBhZG9wdENGKENHR3JhZGll
bnRDcmVhdGVXaXRoQ29sb3JDb21wb25lbnRzQW5kT3B0aW9ucyhncmFkaWVudENvbG9yU3BhY2Us
IGNvbG9yQ29tcG9uZW50cy5kYXRhKCksIGxvY2F0aW9ucy5kYXRhKCksIG51bWJlck9mU3RvcHMs
IGdyYWRpZW50T3B0aW9uc0RpY3Rpb25hcnkoY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kKSkpIH07
CisjZWxzZQorICAgIHJldHVybiBHcmFkaWVudCB7IGFkb3B0Q0YoQ0dHcmFkaWVudENyZWF0ZVdp
dGhDb2xvckNvbXBvbmVudHMoZ3JhZGllbnRDb2xvclNwYWNlLCBjb2xvckNvbXBvbmVudHMuZGF0
YSgpLCBsb2NhdGlvbnMuZGF0YSgpLCBudW1iZXJPZlN0b3BzKSkgfTsKKyNlbmRpZgorfQorCitz
dGF0aWMgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBjb252ZXJ0Q29sb3JUb0NvbG9ySW50ZXJw
b2xhdGlvblNwYWNlKGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9k
IGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCkKK3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihj
b2xvckludGVycG9sYXRpb25NZXRob2QuY29sb3JTcGFjZSwKKyAgICAgICAgWyZdIChhdXRvJiBj
b2xvclNwYWNlKSAtPiBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IHsKKyAgICAgICAgICAgIHVz
aW5nIENvbG9yVHlwZSA9IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PGRlY2x0eXBl
KGNvbG9yU3BhY2UpPjo6Q29sb3JUeXBlOworICAgICAgICAgICAgcmV0dXJuIGFzQ29sb3JDb21w
b25lbnRzKGNvbG9yLnRlbXBsYXRlIHRvQ29sb3JUeXBlTG9zc3k8Q29sb3JUeXBlPigpKTsKKyAg
ICAgICAgfQorICAgICk7Cit9CisKK0dyYWRpZW50Q0dBZGFwdG9yOjpTdHJhdGVneSBHcmFkaWVu
dENHQWRhcHRvcjo6bWFrZVNoYWRpbmcoQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIGNvbG9ySW50
ZXJwb2xhdGlvbk1ldGhvZCwgY29uc3QgV2ViQ29yZTo6R3JhZGllbnQ6OkNvbG9yU3RvcFZlY3Rv
ciYgc3RvcHMpIGNvbnN0Cit7CisgICAgYXV0byBtYWtlRGF0YSA9IFsmXSAoYXV0byBjb2xvcklu
dGVycG9sYXRpb25NZXRob2QsIGF1dG8mIHN0b3BzKSB7CisgICAgICAgIGF1dG8gdG90YWxOdW1i
ZXJPZlN0b3BzID0gc3RvcHMuc2l6ZSgpOworICAgICAgICBib29sIGhhc1plcm8gPSBmYWxzZTsK
KyAgICAgICAgYm9vbCBoYXNPbmUgPSBmYWxzZTsKKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IHN0b3AgOiBzdG9wcykgeworICAgICAgICAgICAgYXV0byBvZmZzZXQgPSBzdG9wLm9mZnNldDsK
KyAgICAgICAgICAgIEFTU0VSVChvZmZzZXQgPj0gMCk7CisgICAgICAgICAgICBBU1NFUlQob2Zm
c2V0IDw9IDEpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAob2Zmc2V0ID09IDApCisg
ICAgICAgICAgICAgICAgaGFzWmVybyA9IHRydWU7CisgICAgICAgICAgICBlbHNlIGlmIChvZmZz
ZXQgPT0gMSkKKyAgICAgICAgICAgICAgICBoYXNPbmUgPSB0cnVlOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKCFoYXNaZXJvKQorICAgICAgICAgICAgdG90YWxOdW1iZXJPZlN0b3BzKys7Cisg
ICAgICAgIGlmICghaGFzT25lKQorICAgICAgICAgICAgdG90YWxOdW1iZXJPZlN0b3BzKys7CisK
KyAgICAgICAgVmVjdG9yPENvbG9yQ29udmVydGVkVG9JbnRlcnBvbGF0aW9uQ29sb3JTcGFjZVN0
b3A+IGNvbnZlcnRlZFN0b3BzOworICAgICAgICBjb252ZXJ0ZWRTdG9wcy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KHRvdGFsTnVtYmVyT2ZTdG9wcyk7CisKKyAgICAgICAgaWYgKCFoYXNaZXJvKSB7
CisgICAgICAgICAgICBjb252ZXJ0ZWRTdG9wcy51bmNoZWNrZWRBcHBlbmQoeworICAgICAgICAg
ICAgICAgIC5vZmZzZXQgPSAwLjBmLAorICAgICAgICAgICAgICAgIC5jb2xvckNvbXBvbmVudHMg
PSB7IDAuMGYsIDAuMGYsIDAuMGYsIDAuMGYgfQorICAgICAgICAgICAgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHN0b3AgOiBzdG9wcykgeworICAgICAgICAgICAg
Y29udmVydGVkU3RvcHMudW5jaGVja2VkQXBwZW5kKHsKKyAgICAgICAgICAgICAgICAub2Zmc2V0
ID0gc3RvcC5vZmZzZXQsCisgICAgICAgICAgICAgICAgLmNvbG9yQ29tcG9uZW50cyA9IGNvbnZl
cnRDb2xvclRvQ29sb3JJbnRlcnBvbGF0aW9uU3BhY2Uoc3RvcC5jb2xvciwgY29sb3JJbnRlcnBv
bGF0aW9uTWV0aG9kKQorICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
IWhhc09uZSkgeworICAgICAgICAgICAgY29udmVydGVkU3RvcHMudW5jaGVja2VkQXBwZW5kKHsK
KyAgICAgICAgICAgICAgICAub2Zmc2V0ID0gMS4wZiwKKyAgICAgICAgICAgICAgICAuY29sb3JD
b21wb25lbnRzID0gY29udmVydGVkU3RvcHMubGFzdCgpLmNvbG9yQ29tcG9uZW50cworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWhhc1plcm8pCisgICAgICAgICAg
ICBjb252ZXJ0ZWRTdG9wc1swXS5jb2xvckNvbXBvbmVudHMgPSBjb252ZXJ0ZWRTdG9wc1sxXS5j
b2xvckNvbXBvbmVudHM7CisKKyAgICAgICAgcmV0dXJuIFNoYWRpbmc6OkRhdGE6OmNyZWF0ZShj
b2xvckludGVycG9sYXRpb25NZXRob2QsIFdURk1vdmUoY29udmVydGVkU3RvcHMpKTsKKyAgICB9
OworCisgICAgYXV0byBtYWtlRnVuY3Rpb24gPSBbJl0gKGF1dG8gY29sb3JJbnRlcnBvbGF0aW9u
TWV0aG9kLCBhdXRvJiBkYXRhKSB7CisgICAgICAgIGF1dG8gbWFrZUV2YWx1YXRlQ2FsbGJhY2sg
PSBbJl0gKGF1dG8gY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kKSAtPiBDR0Z1bmN0aW9uRXZhbHVh
dGVDYWxsYmFjayB7CisgICAgICAgICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihjb2xvckludGVy
cG9sYXRpb25NZXRob2QuY29sb3JTcGFjZSwKKyAgICAgICAgICAgICAgICBbJl0gKGF1dG8mIC8q
Y29sb3JTcGFjZSovKSAgLT4gQ0dGdW5jdGlvbkV2YWx1YXRlQ2FsbGJhY2sgeworICAgICAgICAg
ICAgICAgICAgICBzd2l0Y2ggKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5hbHBoYVByZW11bHRp
cGxpY2F0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbjo6VW5wcmVtdWx0aXBsaWVkOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICZz
aGFkaW5nRnVuY3Rpb248Q29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCLCBBbHBoYVByZW11
bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQ+OworICAgICAgICAgICAgICAgICAgICBjYXNl
IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQ6CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gJnNoYWRpbmdGdW5jdGlvbjxDb2xvckludGVycG9sYXRpb25NZXRob2Q6
OlNSR0IsIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQ+OworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKTsKKyAgICAgICAg
fTsKKworICAgICAgICBjb25zdCBDR0Z1bmN0aW9uQ2FsbGJhY2tzIGNhbGxiYWNrcyA9IHsKKyAg
ICAgICAgICAgIC52ZXJzaW9uID0gMCwKKyAgICAgICAgICAgIC5ldmFsdWF0ZSA9IG1ha2VFdmFs
dWF0ZUNhbGxiYWNrKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCksCisgICAgICAgICAgICAucmVs
ZWFzZUluZm8gPSBbXSAodm9pZCogaW5mbykgeworICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PEdyYWRpZW50Q0dBZGFwdG9yOjpTaGFkaW5nOjpEYXRhKj4oaW5mbyktPmRlcmVmKCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgc3RhdGljIGNvbnN0IENHRmxvYXQgZG9t
YWluWzJdID0geyAwLCAxIH07CisgICAgICAgIC8vIEZJWE1FOiBXaGVuIHRoZSBpbnB1dCBpcyBi
b3VuZGVkIHNSR0IsIGl0IG1pZ2h0IG1ha2UgbW9yZSBzZW5zZSB0byBoYXZlIHRoZSByYW5nZSBi
ZSB7IDAsIDEsIDAsIDEsIDAsIDEsIDAsIDEgfQorICAgICAgICBzdGF0aWMgY29uc3QgQ0dGbG9h
dCByYW5nZVs4XSA9IHsgLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBz
dGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgLXN0ZDo6bnVtZXJpY19saW1p
dHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5p
dHkoKSwgLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBzdGQ6Om51bWVy
aWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgMCwgMSB9OworCisgICAgICAgIHJldHVybiBh
ZG9wdENGKENHRnVuY3Rpb25DcmVhdGUoJmRhdGEubGVha1JlZigpLCAxLCBkb21haW4sIDQsIHJh
bmdlLCAmY2FsbGJhY2tzKSk7CisgICAgfTsKKworICAgIGF1dG8gZGF0YSA9IG1ha2VEYXRhKGNv
bG9ySW50ZXJwb2xhdGlvbk1ldGhvZCwgc3RvcHMpOworICAgIGF1dG8gZnVuY3Rpb24gPSBtYWtl
RnVuY3Rpb24oY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBkYXRhKTsKKworICAgIC8vIEZJWE1F
OiBJbnZlc3RpZ2F0ZSB1c2luZyBib3VuZGVkIHNSR0Igd2hlbiB0aGUgaW5wdXQgc3RvcHMgYXJl
IGFsbCBib3VuZGVkIHNSR0IuCisjaWYgSEFWRShDT1JFX0dSQVBISUNTX0VYVEVOREVEX1NSR0Jf
Q09MT1JfU1BBQ0UpCisgICAgYXV0byBjb2xvclNwYWNlID0gZXh0ZW5kZWRTUkdCQ29sb3JTcGFj
ZVJlZigpOworI2Vsc2UKKyAgICBhdXRvIGNvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigp
OworI2VuZGlmCisKKyAgICByZXR1cm4gU2hhZGluZyB7CisgICAgICAgIC5kYXRhID0gV1RGTW92
ZShkYXRhKSwKKyAgICAgICAgLmZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbiksCisgICAgICAg
IC5jb2xvclNwYWNlID0gY29sb3JTcGFjZQorICAgIH07Cit9CisKK3ZvaWQgR3JhZGllbnRDR0Fk
YXB0b3I6OmRyYXdMaW5lYXJHcmFkaWVudChDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250ZXh0LCBD
R1BvaW50IHN0YXJ0UG9pbnQsIENHUG9pbnQgZW5kUG9pbnQsIENHR3JhZGllbnREcmF3aW5nT3B0
aW9ucyBvcHRpb25zKQoreworICAgIFdURjo6c3dpdGNoT24obV9zdHJhdGVneSwKKyAgICAgICAg
WyZdIChHcmFkaWVudCYgZ3JhZGllbnQpIHsKKyAgICAgICAgICAgIENHQ29udGV4dERyYXdMaW5l
YXJHcmFkaWVudChwbGF0Zm9ybUNvbnRleHQsIGdyYWRpZW50LmdyYWRpZW50LmdldCgpLCBzdGFy
dFBvaW50LCBlbmRQb2ludCwgb3B0aW9ucyk7CisgICAgICAgIH0sCisgICAgICAgIFsmXSAoU2hh
ZGluZyYgc2hhZGluZykgeworICAgICAgICAgICAgYm9vbCBzdGFydEV4dGVuZCA9IChvcHRpb25z
ICYga0NHR3JhZGllbnREcmF3c0JlZm9yZVN0YXJ0TG9jYXRpb24pICE9IDA7CisgICAgICAgICAg
ICBib29sIGVuZEV4dGVuZCA9IChvcHRpb25zICYga0NHR3JhZGllbnREcmF3c0FmdGVyRW5kTG9j
YXRpb24pICE9IDA7CisKKyAgICAgICAgICAgIENHQ29udGV4dERyYXdTaGFkaW5nKHBsYXRmb3Jt
Q29udGV4dCwgYWRvcHRDRihDR1NoYWRpbmdDcmVhdGVBeGlhbChzaGFkaW5nLmNvbG9yU3BhY2Uu
Z2V0KCksIHN0YXJ0UG9pbnQsIGVuZFBvaW50LCBzaGFkaW5nLmZ1bmN0aW9uLmdldCgpLCBzdGFy
dEV4dGVuZCwgZW5kRXh0ZW5kKSkuZ2V0KCkpOworICAgICAgICB9CisgICAgKTsKK30KKwordm9p
ZCBHcmFkaWVudENHQWRhcHRvcjo6ZHJhd1JhZGlhbEdyYWRpZW50KENHQ29udGV4dFJlZiBwbGF0
Zm9ybUNvbnRleHQsIENHUG9pbnQgc3RhcnRDZW50ZXIsIENHRmxvYXQgc3RhcnRSYWRpdXMsIENH
UG9pbnQgZW5kQ2VudGVyLCBDR0Zsb2F0IGVuZFJhZGl1cywgQ0dHcmFkaWVudERyYXdpbmdPcHRp
b25zIG9wdGlvbnMpCit7CisgICAgV1RGOjpzd2l0Y2hPbihtX3N0cmF0ZWd5LAorICAgICAgICBb
Jl0gKEdyYWRpZW50JiBncmFkaWVudCkgeworICAgICAgICAgICAgQ0dDb250ZXh0RHJhd1JhZGlh
bEdyYWRpZW50KHBsYXRmb3JtQ29udGV4dCwgZ3JhZGllbnQuZ3JhZGllbnQuZ2V0KCksIHN0YXJ0
Q2VudGVyLCBzdGFydFJhZGl1cywgZW5kQ2VudGVyLCBlbmRSYWRpdXMsIG9wdGlvbnMpOworICAg
ICAgICB9LAorICAgICAgICBbJl0gKFNoYWRpbmcmIHNoYWRpbmcpIHsKKyAgICAgICAgICAgIGJv
b2wgc3RhcnRFeHRlbmQgPSAob3B0aW9ucyAmIGtDR0dyYWRpZW50RHJhd3NCZWZvcmVTdGFydExv
Y2F0aW9uKSAhPSAwOworICAgICAgICAgICAgYm9vbCBlbmRFeHRlbmQgPSAob3B0aW9ucyAmIGtD
R0dyYWRpZW50RHJhd3NBZnRlckVuZExvY2F0aW9uKSAhPSAwOworCisgICAgICAgICAgICBDR0Nv
bnRleHREcmF3U2hhZGluZyhwbGF0Zm9ybUNvbnRleHQsIGFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRl
UmFkaWFsKHNoYWRpbmcuY29sb3JTcGFjZS5nZXQoKSwgc3RhcnRDZW50ZXIsIHN0YXJ0UmFkaXVz
LCBlbmRDZW50ZXIsIGVuZFJhZGl1cywgc2hhZGluZy5mdW5jdGlvbi5nZXQoKSwgc3RhcnRFeHRl
bmQsIGVuZEV4dGVuZCkpLmdldCgpKTsKKyAgICAgICAgfQorICAgICk7Cit9CisKK3ZvaWQgR3Jh
ZGllbnRDR0FkYXB0b3I6OmRyYXdDb25pY0dyYWRpZW50KENHQ29udGV4dFJlZiBwbGF0Zm9ybUNv
bnRleHQsIENHUG9pbnQgY2VudGVyLCBDR0Zsb2F0IGFuZ2xlKQoreworLy8gRklYTUU6IFNlZW1z
IGxpa2UgdGhpcyBzaG91bGQgYmUgSEFWRShDR19DT05URVhUX0RSQVdfQ09OSUNfR1JBRElFTlQp
LgorLy8gRklYTUU6IENhbiB3ZSBjaGFuZ2UgdHZPUyB0byBiZSBsaWtlIHRoZSBvdGhlciBDb2Nv
YSBwbGF0Zm9ybXM/CisjaWYgUExBVEZPUk0oQ09DT0EpICYmICFQTEFURk9STShBUFBMRVRWKQor
ICAgIFdURjo6c3dpdGNoT24obV9zdHJhdGVneSwKKyAgICAgICAgWyZdIChHcmFkaWVudCYgZ3Jh
ZGllbnQpIHsKKyAgICAgICAgICAgIENHQ29udGV4dERyYXdDb25pY0dyYWRpZW50KHBsYXRmb3Jt
Q29udGV4dCwgZ3JhZGllbnQuZ3JhZGllbnQuZ2V0KCksIGNlbnRlciwgYW5nbGUpOworICAgICAg
ICB9LAorICAgICAgICBbJl0gKFNoYWRpbmcmIHNoYWRpbmcpIHsKKyAgICAgICAgICAgIENHQ29u
dGV4dERyYXdTaGFkaW5nKHBsYXRmb3JtQ29udGV4dCwgYWRvcHRDRihDR1NoYWRpbmdDcmVhdGVD
b25pYyhzaGFkaW5nLmNvbG9yU3BhY2UuZ2V0KCksIGNlbnRlciwgYW5nbGUsIHNoYWRpbmcuZnVu
Y3Rpb24uZ2V0KCkpKS5nZXQoKSk7CisgICAgICAgIH0KKyAgICApOworI2Vsc2UKKyAgICBVTlVT
RURfUEFSQU0ocGxhdGZvcm1Db250ZXh0KTsKKyAgICBVTlVTRURfUEFSQU0oY2VudGVyKTsKKyAg
ICBVTlVTRURfUEFSQU0oYW5nbGUpOworI2VuZGlmCit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0dBZGFwdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDR0FkYXB0b3Iu
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFkaWVudENHQWRhcHRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbG9yQ29tcG9uZW50cy5oIgorI2luY2x1ZGUg
IkNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5oIgorI2luY2x1ZGUgIkdyYWRpZW50LmgiCisjaW5j
bHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorCit0eXBlZGVmIHN0cnVjdCBDR0NvbnRleHQqIENHQ29udGV4dFJlZjsK
K3R5cGVkZWYgc3RydWN0IENHRnVuY3Rpb24qIENHRnVuY3Rpb25SZWY7Cit0eXBlZGVmIHN0cnVj
dCBDR0dyYWRpZW50KiBDR0dyYWRpZW50UmVmOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0
cnVjdCBDb2xvckNvbnZlcnRlZFRvSW50ZXJwb2xhdGlvbkNvbG9yU3BhY2VTdG9wIHsKKyAgICBm
bG9hdCBvZmZzZXQ7CisgICAgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBjb2xvckNvbXBvbmVu
dHM7Cit9OworCitjbGFzcyBHcmFkaWVudENHQWRhcHRvciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxHcmFkaWVudENHQWRhcHRvcj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8R3Jh
ZGllbnRDR0FkYXB0b3I+IGNyZWF0ZShDb2xvckludGVycG9sYXRpb25NZXRob2QgY29sb3JJbnRl
cnBvbGF0aW9uTWV0aG9kLCBjb25zdCBXZWJDb3JlOjpHcmFkaWVudDo6Q29sb3JTdG9wVmVjdG9y
JiBzdG9wcykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdyYWRpZW50Q0dB
ZGFwdG9yKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCwgc3RvcHMpKTsKKyAgICB9CisKKyAgICB2
b2lkIGRyYXdMaW5lYXJHcmFkaWVudChDR0NvbnRleHRSZWYsIENHUG9pbnQgc3RhcnRQb2ludCwg
Q0dQb2ludCBlbmRQb2ludCwgQ0dHcmFkaWVudERyYXdpbmdPcHRpb25zKTsKKyAgICB2b2lkIGRy
YXdSYWRpYWxHcmFkaWVudChDR0NvbnRleHRSZWYsIENHUG9pbnQgc3RhcnRDZW50ZXIsIENHRmxv
YXQgc3RhcnRSYWRpdXMsIENHUG9pbnQgZW5kQ2VudGVyLCBDR0Zsb2F0IGVuZFJhZGl1cywgQ0dH
cmFkaWVudERyYXdpbmdPcHRpb25zKTsKKyAgICB2b2lkIGRyYXdDb25pY0dyYWRpZW50KENHQ29u
dGV4dFJlZiwgQ0dQb2ludCBjZW50ZXIsIENHRmxvYXQgYW5nbGUpOworCisgICAgc3RydWN0IEdy
YWRpZW50IHsKKyAgICAgICAgUmV0YWluUHRyPENHR3JhZGllbnRSZWY+IGdyYWRpZW50OworICAg
IH07CisKKyAgICBzdHJ1Y3QgU2hhZGluZyB7CisgICAgICAgIGNsYXNzIERhdGEgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YT4geworICAgICAgICBwdWJsaWM6CisgICAgICAgICAg
ICBzdGF0aWMgUmVmPERhdGE+IGNyZWF0ZShDb2xvckludGVycG9sYXRpb25NZXRob2QgY29sb3JJ
bnRlcnBvbGF0aW9uTWV0aG9kLCBWZWN0b3I8Q29sb3JDb252ZXJ0ZWRUb0ludGVycG9sYXRpb25D
b2xvclNwYWNlU3RvcD4gc3RvcHMpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRGF0YShjb2xvckludGVycG9sYXRpb25NZXRob2QsIFdURk1vdmUo
c3RvcHMpKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIENvbG9ySW50ZXJwb2xhdGlv
bk1ldGhvZCBjb2xvckludGVycG9sYXRpb25NZXRob2QoKSBjb25zdCB7IHJldHVybiBtX2NvbG9y
SW50ZXJwb2xhdGlvbk1ldGhvZDsgfQorICAgICAgICAgICAgY29uc3QgVmVjdG9yPENvbG9yQ29u
dmVydGVkVG9JbnRlcnBvbGF0aW9uQ29sb3JTcGFjZVN0b3A+JiBzdG9wcygpIGNvbnN0IHsgcmV0
dXJuIG1fc3RvcHM7IH0KKworICAgICAgICBwcml2YXRlOgorICAgICAgICAgICAgRGF0YShDb2xv
ckludGVycG9sYXRpb25NZXRob2QgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBWZWN0b3I8Q29s
b3JDb252ZXJ0ZWRUb0ludGVycG9sYXRpb25Db2xvclNwYWNlU3RvcD4gc3RvcHMpCisgICAgICAg
ICAgICAgICAgOiBtX2NvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCB7IGNvbG9ySW50ZXJwb2xhdGlv
bk1ldGhvZCB9CisgICAgICAgICAgICAgICAgLCBtX3N0b3BzIHsgV1RGTW92ZShzdG9wcykgfQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBDb2xvckludGVycG9s
YXRpb25NZXRob2QgbV9jb2xvckludGVycG9sYXRpb25NZXRob2Q7CisgICAgICAgICAgICBWZWN0
b3I8Q29sb3JDb252ZXJ0ZWRUb0ludGVycG9sYXRpb25Db2xvclNwYWNlU3RvcD4gbV9zdG9wczsK
KyAgICAgICAgfTsKKworICAgICAgICBSZWY8RGF0YT4gZGF0YTsKKyAgICAgICAgUmV0YWluUHRy
PENHRnVuY3Rpb25SZWY+IGZ1bmN0aW9uOworICAgICAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNl
UmVmPiBjb2xvclNwYWNlOworICAgIH07CisKKyAgICB1c2luZyBTdHJhdGVneSA9IHN0ZDo6dmFy
aWFudDxHcmFkaWVudCwgU2hhZGluZz47CisKK3ByaXZhdGU6CisgICAgR3JhZGllbnRDR0FkYXB0
b3IoQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb25zdCBXZWJDb3JlOjpHcmFkaWVudDo6Q29s
b3JTdG9wVmVjdG9yJik7CisgICAgU3RyYXRlZ3kgcGlja1N0cmF0ZWd5KENvbG9ySW50ZXJwb2xh
dGlvbk1ldGhvZCwgY29uc3QgV2ViQ29yZTo6R3JhZGllbnQ6OkNvbG9yU3RvcFZlY3RvciYpIGNv
bnN0OworCisgICAgU3RyYXRlZ3kgbWFrZUdyYWRpZW50KENvbG9ySW50ZXJwb2xhdGlvbk1ldGhv
ZCwgY29uc3QgV2ViQ29yZTo6R3JhZGllbnQ6OkNvbG9yU3RvcFZlY3RvciYpIGNvbnN0OworICAg
IFN0cmF0ZWd5IG1ha2VTaGFkaW5nKENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCwgY29uc3QgV2Vi
Q29yZTo6R3JhZGllbnQ6OkNvbG9yU3RvcFZlY3RvciYpIGNvbnN0OworCisgICAgU3RyYXRlZ3kg
bV9zdHJhdGVneTsKK307CisKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447579</attachid>
            <date>2021-12-19 20:59:10 -0800</date>
            <delta_ts>2021-12-19 21:00:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234492-20211219205909.patch</filename>
            <type>text/plain</type>
            <size>48956</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVy
aW1lbnRhbC55YW1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNl
cy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCShyZXZpc2lvbiAyODcyMzMpCisrKyBT
b3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwu
eWFtbAkod29ya2luZyBjb3B5KQpAQCAtMjg0LDYgKzI4NCwxOCBAQCBDU1NDdXN0b21Qcm9wZXJ0
aWVzQW5kVmFsdWVzRW5hYmxlZDoKICAgICBXZWJDb3JlOgogICAgICAgZGVmYXVsdDogZmFsc2UK
IAorQ1NTR3JhZGllbnRBbHBoYVByZW11bHRpcGxpZWRJbnRlcnBvbGF0aW9uRW5hYmxlZDoKKyAg
dHlwZTogYm9vbAorICBodW1hblJlYWRhYmxlTmFtZTogIkFscGhhIFByZW11bHRpcGxpZWQgSW50
ZXJwb2xhdGVkIENTUyBHcmFkaWVudHMiCisgIGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbjogIkVu
YWJsZSBhbHBoYSBwcmVtdWx0aXBsaWVkIGludGVycG9sYXRlZCBDU1MgZ3JhZGllbnRzIgorICBk
ZWZhdWx0VmFsdWU6CisgICAgV2ViS2l0TGVnYWN5OgorICAgICAgZGVmYXVsdDogZmFsc2UKKyAg
ICBXZWJLaXQ6CisgICAgICBkZWZhdWx0OiBmYWxzZQorICAgIFdlYkNvcmU6CisgICAgICBkZWZh
dWx0OiBmYWxzZQorCiAjIEZJWE1FOiBUaGlzIGlzIGVuYWJsZWQgd2hlbiBFTkFCTEUoRVhQRVJJ
TUVOVEFMX0ZFQVRVUkVTKSBpcyB0cnVlIGluIFdlYktpdDIuIFBlcmhhcHMgd2Ugc2hvdWxkIGNv
bnNpZGVyIHVzaW5nIHRoYXQgZm9yIFdlYktpdExlZ2FjeSBhcyB3ZWxsLgogQ1NTSW5kaXZpZHVh
bFRyYW5zZm9ybVByb3BlcnRpZXNFbmFibGVkOgogICB0eXBlOiBib29sCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODcyMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwzNSBAQAorMjAyMS0xMi0xOSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0Bh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIENHU2hhZGluZ1JlZiBiYXNlZCBpbXBsZW1lbnRhdGlv
biBvZiBHcmFkaWVudCBhcyBzdGVwcGluZyBzdG9uZSB0b3dhcmQgcHJlbXVsdGlwbGllZCBpbnRl
cnBvbGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzQ0OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbV0lQXSBUaGlzIGNvbXBsZXRlbHkgcmVwbGFjZXMgdGhlIENHR3JhZGllbnRSZWYgaW1wbGVt
ZW50YXRpb24uIFdlIG5lZWQgdG8gbWFrZSB0aGlzCisgICAgICAgIGNvbmRpdGlvbmFsIGZvciBp
dCB0byBiZSByZWFsLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb21wb25l
bnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNvbXBvbmVudHM6OnNpemUgY29uc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpDdXN0b21DR0dyYWRpZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tQ0dH
cmFkaWVudDo6ZnVuY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tQ0dHcmFk
aWVudDo6Y29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkN1c3RvbUNHR3JhZGllbnQ6OnN0b3BzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3Rv
bUNHR3JhZGllbnQ6OkN1c3RvbUNHR3JhZGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYWRpZW50Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dW5wcmVtdWx0aXBsaWVk
U2hhZGluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNHRnVuY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tQ0dHcmFkaWVudDo6aW5pdGlhbGl6ZUZ1bmN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUNHR3JhZGllbnQ6OmNvbG9yU3BhY2UgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6OmNyZWF0ZUN1c3RvbUNHR3JhZGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6ZHJhd0xpbmVhckdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmRy
YXdSYWRpYWxHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpkcmF3Q29uaWNHcmFkaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhZGllbnQ6OmZpbGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6Omhhc09ubHlCb3Vu
ZGVkU1JHQkNvbG9yU3RvcHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3Jh
ZGllbnQ6OmNyZWF0ZUNHR3JhZGllbnQpOiBEZWxldGVkLgorCiAyMDIxLTEyLTE4ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBIYXNoIHRhYmxlcywgcmVhZC93cml0
ZSwgYW5kIGhlYXAgbWVtb3J5IGFyZSB1c2VkIHVubmVjZXNzYXJpbHksIHdoaWNoIG1heSBodXJ0
IHBlcmZvcm1hbmNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtl
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UJKHJl
dmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UJ
KHdvcmtpbmcgY29weSkKQEAgLTEzMSw2ICsxMzEsNyBAQCBlbHNlICgpCiAgICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0Zsb2F0UmVjdENHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9GbG9hdFNpemVDRy5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGll
bnRDRy5jcHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDR0FkYXB0b3Iu
Y3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3Bw
CiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAogICAg
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmNwcApJbmRleDogU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1NYWMuY21ha2UJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtTWFjLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yOTEsNiArMjkxLDcgQEAgbGlzdChB
UFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRSZWN0
Q0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRTaXplQ0cuY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFkaWVudENHQWRhcHRvci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRHTENHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dENHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuY3BwCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM0OCw2ICszNDgsNyBAQCBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9GbG9hdFJlY3RDRy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0U2l6ZUNHLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYWRpZW50Q0dBZGFwdG9yLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0Q0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML0NoYW5n
ZUxvZwkocmV2aXNpb24gMjg3MjQ3KQorKysgU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIxLTEyLTE5ICBTYW0gV2VpbmlnICA8
d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgQ0dTaGFkaW5nUmVmIGJhc2VkIGltcGxl
bWVudGF0aW9uIG9mIEdyYWRpZW50IGFzIHN0ZXBwaW5nIHN0b25lIHRvd2FyZCBwcmVtdWx0aXBs
aWVkIGludGVycG9sYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNDQ5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaDoKKyAgICAgICAgQWRkIENH
U2hhZGluZ1JlZiBTUEkgZm9yIGNyZWF0aW5nIGNvbmljIHNoYWRpbmdzLgorCiAyMDIxLTEyLTE2
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyODcwNTYuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaAkocmV2aXNpb24gMjg3MjMzKQorKysg
U291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dGb250Q2Fj
aGUuaD4KICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dQYXRoUHJpdmF0ZS5oPgogI2luY2x1ZGUg
PENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3NQcml2YXRlLmg+CisjaW5jbHVkZSA8Q29yZUdyYXBo
aWNzL0NHU2hhZGluZ1ByaXZhdGUuaD4KICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dTdHlsZVBy
aXZhdGUuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTMyMyw2ICszMjQsMTYgQEAgdm9pZCBD
R0NvbnRleHRTZXRTdHlsZShDR0NvbnRleHRSZWYsIENHU3R5bGVSZWYpOwogdm9pZCBDR0NvbnRl
eHREcmF3Q29uaWNHcmFkaWVudChDR0NvbnRleHRSZWYsIENHR3JhZGllbnRSZWYsIENHUG9pbnQg
Y2VudGVyLCBDR0Zsb2F0IGFuZ2xlKTsKIHZvaWQgQ0dQYXRoQWRkVW5ldmVuQ29ybmVyc1JvdW5k
ZWRSZWN0KENHTXV0YWJsZVBhdGhSZWYsIGNvbnN0IENHQWZmaW5lVHJhbnNmb3JtICosIENHUmVj
dCwgY29uc3QgQ0dTaXplIGNvcm5lcnNbNF0pOwogYm9vbCBDR0ZvbnRSZW5kZXJpbmdHZXRGb250
U21vb3RoaW5nRGlzYWJsZWQodm9pZCk7CitDR1NoYWRpbmdSZWYgQ0dTaGFkaW5nQ3JlYXRlQ29u
aWMoQ0dDb2xvclNwYWNlUmVmLCBDR1BvaW50IGNlbnRlciwgQ0dGbG9hdCBhbmdsZSwgQ0dGdW5j
dGlvblJlZik7CisKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfR1JBRElFTlRfQ1JFQVRFX1dJVEhf
T1BUSU9OUykKK0NHR3JhZGllbnRSZWYgQ0dHcmFkaWVudENyZWF0ZVdpdGhDb2xvckNvbXBvbmVu
dHNBbmRPcHRpb25zKENHQ29sb3JTcGFjZVJlZiwgY29uc3QgQ0dGbG9hdCosIGNvbnN0IENHRmxv
YXQqLCBzaXplX3QsIENGRGljdGlvbmFyeVJlZik7CitDR0dyYWRpZW50UmVmIENHR3JhZGllbnRD
cmVhdGVXaXRoQ29sb3JzQW5kT3B0aW9ucyhDR0NvbG9yU3BhY2VSZWYsIENGQXJyYXlSZWYsIGNv
bnN0IENHRmxvYXQqLCBDRkRpY3Rpb25hcnlSZWYpOworI2VuZGlmCisKKyNpZiBIQVZFKENPUkVf
R1JBUEhJQ1NfUFJFTVVMVElQTElFRF9JTlRFUlBPTEFUSU9OX0dSQURJRU5UKQorZXh0ZXJuIGNv
bnN0IENGU3RyaW5nUmVmIGtDR0dyYWRpZW50SW50ZXJwb2xhdGVzUHJlbXVsdGlwbGllZDsKKyNl
bmRpZgogCiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI4NzIz
MykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtNDA4MSw2ICs0MDgxLDcgQEAKIAkJQkMxMjRGMDAwQzI2NDQ3QTAw
OUUyMzQ5IC8qIEpTQmFyUHJvcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkMxMjRFRkUwQzI2NDQ3QTAwOUUyMzQ5IC8qIEpTQmFyUHJvcC5oICovOyB9
OwogCQlCQzEyOEE3MzEzN0M4NjdDMDBDQUM4NDUgLyogUmVuZGVyR3JpZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxMjhBNzIxMzdDODY3QzAwQ0FD
ODQ1IC8qIFJlbmRlckdyaWQuaCAqLzsgfTsKIAkJQkMxNDAyOEIwRTgzNjgwODAwMzE5NzE3IC8q
IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzE0MDI4OTBFODM2ODA4MDAzMTk3MTcgLyogU2Nyb2xsYmFyVGhl
bWVDb21wb3NpdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlCQzE5Q0RGMjI3NkZGQzZEMDA1M0Y3MzQgLyogR3JhZGllbnRDR0FkYXB0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMTlDREYwMjc2
RkZCMjYwMDUzRjczNCAvKiBHcmFkaWVudENHQWRhcHRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMUE3RDk4MThGQ0I1QjAwMDQyMTg3OSAv
KiBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxQTdEOTYxOEZDQjVCMDAwNDIxODc5IC8q
IFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmggKi87IH07CiAJCUJDMjI3Mjg3
MEU4MkU3MDcwMEU3Rjk3NSAvKiBTdHlsZVJlZmxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjI3Mjg2MEU4MkU3MDcwMEU3Rjk3NSAvKiBT
dHlsZVJlZmxlY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlCQzIyNzJBMjBFODJFODdDMDBFN0Y5NzUgLyogQ3Vyc29yRGF0YS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyMjcyQTEwRTgyRTg3
QzAwRTdGOTc1IC8qIEN1cnNvckRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMTUxMTMsNiArMTUxMTQsOCBAQAogCQlCQzEyOEIwMDEzN0M4
RDQ2MDBDQUM4NDUgLyogUmVuZGVyR3JpZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZW5kZXJHcmlkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkMxNDAyODgwRTgzNjgwODAwMzE5NzE3IC8qIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbGJhclRoZW1lQ29tcG9z
aXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMxNDAyODkwRTgzNjgwODAw
MzE5NzE3IC8qIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUJDMTlDREVGMjc2RkZCMjYwMDUzRjczNCAvKiBHcmFkaWVudENHQWRhcHRv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFkaWVudENHQWRhcHRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMTlDREYwMjc2RkZCMjYwMDUzRjczNCAvKiBHcmFkaWVu
dENHQWRhcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFkaWVudENHQWRhcHRvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzFBN0Q5NTE4RkNCNUIwMDA0MjE4NzkgLyogUmVuZGVy
TXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzFBN0Q5NjE4RkNCNUIwMDA0MjE4NzkgLyog
UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyMEZCN0UwQzBFOEU2QzAwRDE0NDdGIC8qIEpT
RGVwcmVjYXRlZENTU09NVmFsdWVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTRGVwcmVjYXRlZENTU09NVmFsdWVDdXN0b20uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjg1MzQsNiArMjg1MzcsOCBAQAogCQkJCUIyNzUzNTJDMEIw
NTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RDRy5jcHAgKi8sCiAJCQkJQjI3NTM1MkQwQjA1Mzgx
NDAwMkNFNjRGIC8qIEZsb2F0U2l6ZUNHLmNwcCAqLywKIAkJCQlCQzUzQzYwQTBEQTU2Q0YxMDAy
MUVCNUQgLyogR3JhZGllbnRDRy5jcHAgKi8sCisJCQkJQkMxOUNERUYyNzZGRkIyNjAwNTNGNzM0
IC8qIEdyYWRpZW50Q0dBZGFwdG9yLmNwcCAqLywKKwkJCQlCQzE5Q0RGMDI3NkZGQjI2MDA1M0Y3
MzQgLyogR3JhZGllbnRDR0FkYXB0b3IuaCAqLywKIAkJCQlCMkVEOTc3MDBCMUY1NUNFMDAyNTdE
MEYgLyogR3JhcGhpY3NDb250ZXh0Q0cuY3BwICovLAogCQkJCTkzNDkwN0UzMTI1QkJCQzgwMDdG
MjNBMCAvKiBHcmFwaGljc0NvbnRleHRDRy5oICovLAogCQkJCTZFMjFDNkMxMTEyNjMzOTkwMEE3
QkUwMiAvKiBHcmFwaGljc0NvbnRleHRHTENHLmNwcCAqLywKQEAgLTMzMzA0LDYgKzMzMzA5LDcg
QEAKIAkJCQk4Mzc4ODc4MjI0RDhBNjA5MDAwRDRBNUIgLyogQXVkaW9CdWZmZXJTb3VyY2VPcHRp
b25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA3QzEyQjAyNkY3MDBDMUEzNTkgLyogQXVk
aW9CdXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDdFMTJCMDI2RjcwMEMxQTM1OSAvKiBB
dWRpb0NoYW5uZWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMTlDREYyMjc2RkZDNkQwMDUzRjcz
NCAvKiBHcmFkaWVudENHQWRhcHRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzRUVGM0EyNTc5
OUY4ODAwNjU2M0JCIC8qIEF1ZGlvQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RkQzMTYwMDUxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvQ29udGV4dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTc4NUQ5NjIyNEI3RjczNTAwMTREQjIxIC8qIEF1ZGlvQ29udGV4dExhdGVuY3lDYXRl
Z29yeS5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1BhcnNlckNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VyQ29udGV4dC5jcHAJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
NiwxMCArMTA2LDExIEBAIENTU1BhcnNlckNvbnRleHQ6OkNTU1BhcnNlckNvbnRleHQoY29uc3Qg
RG9jdW1lbnQmIGRvYwogICAgICwgaGFzUHNldWRvQ2xhc3NFbmFibGVkIHsgZG9jdW1lbnQuc2V0
dGluZ3MoKS5oYXNQc2V1ZG9DbGFzc0VuYWJsZWQoKSB9CiAgICAgLCBjYXNjYWRlTGF5ZXJzRW5h
YmxlZCB7IGRvY3VtZW50LnNldHRpbmdzKCkuY3NzQ2FzY2FkZUxheWVyc0VuYWJsZWQoKSB9CiAg
ICAgLCBjb250YWluZXJRdWVyaWVzRW5hYmxlZCB7IGRvY3VtZW50LnNldHRpbmdzKCkuY3NzQ29u
dGFpbmVyUXVlcmllc0VuYWJsZWQoKSB9CisgICAgLCBvdmVyZmxvd0NsaXBFbmFibGVkIHsgZG9j
dW1lbnQuc2V0dGluZ3MoKS5vdmVyZmxvd0NsaXBFbmFibGVkKCkgfQorICAgICwgZ3JhZGllbnRB
bHBoYVByZW11bHRpcGxpZWRJbnRlcnBvbGF0aW9uRW5hYmxlZCB7IGRvY3VtZW50LnNldHRpbmdz
KCkuY3NzR3JhZGllbnRBbHBoYVByZW11bHRpcGxpZWRJbnRlcnBvbGF0aW9uRW5hYmxlZCgpIH0K
ICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgICwgYXR0YWNobWVudEVuYWJsZWQg
eyBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmF0dGFjaG1lbnRFbGVt
ZW50RW5hYmxlZCgpIH0KICNlbmRpZgotICAgICwgb3ZlcmZsb3dDbGlwRW5hYmxlZCB7IGRvY3Vt
ZW50LnNldHRpbmdzKCkub3ZlcmZsb3dDbGlwRW5hYmxlZCgpIH0KIHsKIH0KIApAQCAtMTUzLDEw
ICsxNTQsMTEgQEAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGEsIGNv
bnN0IENTU1BhCiAgICAgICAgICYmIGEuaGFzUHNldWRvQ2xhc3NFbmFibGVkID09IGIuaGFzUHNl
dWRvQ2xhc3NFbmFibGVkCiAgICAgICAgICYmIGEuY2FzY2FkZUxheWVyc0VuYWJsZWQgPT0gYi5j
YXNjYWRlTGF5ZXJzRW5hYmxlZAogICAgICAgICAmJiBhLmNvbnRhaW5lclF1ZXJpZXNFbmFibGVk
ID09IGIuY29udGFpbmVyUXVlcmllc0VuYWJsZWQKKyAgICAgICAgJiYgYS5vdmVyZmxvd0NsaXBF
bmFibGVkID09IGIub3ZlcmZsb3dDbGlwRW5hYmxlZAorICAgICAgICAmJiBhLmdyYWRpZW50QWxw
aGFQcmVtdWx0aXBsaWVkSW50ZXJwb2xhdGlvbkVuYWJsZWQgPT0gYi5ncmFkaWVudEFscGhhUHJl
bXVsdGlwbGllZEludGVycG9sYXRpb25FbmFibGVkCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxF
TUVOVCkKICAgICAgICAgJiYgYS5hdHRhY2htZW50RW5hYmxlZCA9PSBiLmF0dGFjaG1lbnRFbmFi
bGVkCiAjZW5kaWYKLSAgICAgICAgJiYgYS5vdmVyZmxvd0NsaXBFbmFibGVkID09IGIub3ZlcmZs
b3dDbGlwRW5hYmxlZAogICAgIDsKIH0KIApAQCAtMTkzLDEyICsxOTUsMTMgQEAgdm9pZCBhZGQo
SGFzaGVyJiBoYXNoZXIsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRlCiAgICAgICAgIHwg
Y29udGV4dC5oYXNQc2V1ZG9DbGFzc0VuYWJsZWQgICAgICAgICAgICAgICAgICAgICA8PCAyMgog
ICAgICAgICB8IGNvbnRleHQuY2FzY2FkZUxheWVyc0VuYWJsZWQgICAgICAgICAgICAgICAgICAg
ICAgPDwgMjMKICAgICAgICAgfCBjb250ZXh0LmNvbnRhaW5lclF1ZXJpZXNFbmFibGVkICAgICAg
ICAgICAgICAgICAgIDw8IDI0CisgICAgICAgIHwgY29udGV4dC5vdmVyZmxvd0NsaXBFbmFibGVk
ICAgICAgICAgICAgICAgICAgICAgICA8PCAyNQorICAgICAgICB8IGNvbnRleHQuZ3JhZGllbnRB
bHBoYVByZW11bHRpcGxpZWRJbnRlcnBvbGF0aW9uRW5hYmxlZCA8PCAyNgogI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgICAgIHwgY29udGV4dC5hdHRhY2htZW50RW5hYmxlZCAg
ICAgICAgICAgICAgICAgICAgICAgICA8PCAyNQorICAgICAgICB8IGNvbnRleHQuYXR0YWNobWVu
dEVuYWJsZWQgICAgICAgICAgICAgICAgICAgICAgICAgPDwgMjcKICNlbmRpZgotICAgICAgICB8
IGNvbnRleHQub3ZlcmZsb3dDbGlwRW5hYmxlZCAgICAgICAgICAgICAgICAgICAgICAgPDwgMjYK
LSAgICAgICAgfCBjb250ZXh0LmFjY2VudENvbG9yRW5hYmxlZCAgICAgICAgICAgICAgICAgICAg
ICAgIDw8IDI3Ci0gICAgICAgIHwgY29udGV4dC5tb2RlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8PCAyODsgLy8gVGhpcyBpcyBtdWx0aXBsZSBiaXRzLCBzbyBrZWVwIGl0
IGxhc3QuCisgICAgICAgIHwgY29udGV4dC5hY2NlbnRDb2xvckVuYWJsZWQgICAgICAgICAgICAg
ICAgICAgICAgICA8PCAyOAorICAgICAgICB8IGNvbnRleHQubW9kZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPDwgMjk7IC8vIFRoaXMgaXMgbXVsdGlwbGUgYml0cywgc28g
a2VlcCBpdCBsYXN0LgogICAgIGFkZChoYXNoZXIsIGNvbnRleHQuYmFzZVVSTCwgY29udGV4dC5j
aGFyc2V0LCBiaXRzKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
YXJzZXJDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXJDb250ZXh0LmgJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSwxMyArODUs
MTMgQEAgc3RydWN0IENTU1BhcnNlckNvbnRleHQgewogICAgIGJvb2wgaGFzUHNldWRvQ2xhc3NF
bmFibGVkIHsgZmFsc2UgfTsKICAgICBib29sIGNhc2NhZGVMYXllcnNFbmFibGVkIHsgZmFsc2Ug
fTsKICAgICBib29sIGNvbnRhaW5lclF1ZXJpZXNFbmFibGVkIHsgZmFsc2UgfTsKKyAgICBib29s
IG92ZXJmbG93Q2xpcEVuYWJsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgZ3JhZGllbnRBbHBoYVBy
ZW11bHRpcGxpZWRJbnRlcnBvbGF0aW9uRW5hYmxlZCB7IGZhbHNlIH07CiAKICAgICAvLyBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzLgogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAg
Ym9vbCBhdHRhY2htZW50RW5hYmxlZCB7IGZhbHNlIH07CiAjZW5kaWYKLQotICAgIGJvb2wgb3Zl
cmZsb3dDbGlwRW5hYmxlZCB7IGZhbHNlIH07CiAKICAgICBDU1NQYXJzZXJDb250ZXh0KENTU1Bh
cnNlck1vZGUsIGNvbnN0IFVSTCYgYmFzZVVSTCA9IFVSTCgpKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBDU1NQYXJzZXJDb250ZXh0KGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJMJiBiYXNlVVJMID0g
VVJMKCksIGNvbnN0IFN0cmluZyYgY2hhcnNldCA9IGVtcHR5U3RyaW5nKCkpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzLmNwcAkocmV2aXNpb24gMjg3MjMzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTQ2LDE1ICsy
OTQ2LDIwIEBAIHN0YXRpYyBib29sIGNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnRDb2xvclN0b3Ao
Q1NTUGFycwogICAgIHJldHVybiBzdG9wLmNvbG9yICYmIGFyZ3MuYXRFbmQoKTsKIH0KIAorc3Rh
dGljIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZ3JhZGllbnRBbHBoYVByZW11bHRpcGxpY2F0aW9u
KGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgcmV0dXJuIGNvbnRleHQu
Z3JhZGllbnRBbHBoYVByZW11bHRpcGxpZWRJbnRlcnBvbGF0aW9uRW5hYmxlZCA/IEFscGhhUHJl
bXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQgOiBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpV
bnByZW11bHRpcGxpZWQ7Cit9CisKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVEZXBy
ZWNhdGVkR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2Vy
Q29udGV4dCYgY29udGV4dCkKIHsKICAgICBSZWZQdHI8Q1NTR3JhZGllbnRWYWx1ZT4gcmVzdWx0
OwogICAgIENTU1ZhbHVlSUQgaWQgPSBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCku
aWQoKTsKICAgICBib29sIGlzRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50ID0gKGlkID09IENTU1Zh
bHVlUmFkaWFsKTsKICAgICBpZiAoaXNEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQpCi0gICAgICAg
IHJlc3VsdCA9IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZShOb25SZXBlYXRpbmcsIENT
U0RlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudCwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNS
R0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CisgICAg
ICAgIHJlc3VsdCA9IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZShOb25SZXBlYXRpbmcs
IENTU0RlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudCwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6
OlNSR0IgeyB9LCBncmFkaWVudEFscGhhUHJlbXVsdGlwbGljYXRpb24oY29udGV4dCkgfSk7CiAg
ICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVMaW5lYXIpCi0gICAgICAgIHJlc3VsdCA9IENTU0xp
bmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZShOb25SZXBlYXRpbmcsIENTU0RlcHJlY2F0ZWRMaW5l
YXJHcmFkaWVudCwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CisgICAgICAgIHJlc3VsdCA9IENT
U0xpbmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZShOb25SZXBlYXRpbmcsIENTU0RlcHJlY2F0ZWRM
aW5lYXJHcmFkaWVudCwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBncmFk
aWVudEFscGhhUHJlbXVsdGlwbGljYXRpb24oY29udGV4dCkgfSk7CiAgICAgaWYgKCFyZXN1bHQg
fHwgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCkBAIC0zMDU0LDcgKzMwNTksNyBAQCBzdGF0aWMgYm9vbCBjb25zdW1lR3Jh
ZGllbnRDb2xvclN0b3BzKENTU1BhcnNlclRva2VuUmEKIAogc3RhdGljIFJlZlB0cjxDU1NWYWx1
ZT4gY29uc3VtZURlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBh
cmdzLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBDU1NHcmFkaWVudFJlcGVhdCBy
ZXBlYXRpbmcpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpj
cmVhdGUocmVwZWF0aW5nLCBDU1NQcmVmaXhlZFJhZGlhbEdyYWRpZW50LCB7IENvbG9ySW50ZXJw
b2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVs
dGlwbGllZCB9KTsKKyAgICBhdXRvIHJlc3VsdCA9IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNy
ZWF0ZShyZXBlYXRpbmcsIENTU1ByZWZpeGVkUmFkaWFsR3JhZGllbnQsIHsgQ29sb3JJbnRlcnBv
bGF0aW9uTWV0aG9kOjpTUkdCIHsgfSwgZ3JhZGllbnRBbHBoYVByZW11bHRpcGxpY2F0aW9uKGNv
bnRleHQpIH0pOwogCiAgICAgYXV0byBjZW50ZXJDb29yZGluYXRlID0gY29uc3VtZU9uZU9yVHdv
VmFsdWVkUG9zaXRpb25Db29yZGluYXRlcyhhcmdzLCBjb250ZXh0Lm1vZGUsIFVuaXRsZXNzUXVp
cms6OkZvcmJpZCk7CiAgICAgaWYgKGNlbnRlckNvb3JkaW5hdGUgJiYgIWNvbnN1bWVDb21tYUlu
Y2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCkBAIC0zMDk4LDcgKzMxMDMsNyBAQCBzdGF0aWMgUmVm
UHRyPENTU1ZhbHVlPiBjb25zdW1lRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW4KIAogc3RhdGljIFJl
ZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVJhZGlhbEdyYWRpZW50KENTU1BhcnNlclRva2VuUmFuZ2Um
IGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIENTU0dyYWRpZW50UmVwZWF0
IHJlcGVhdGluZykKIHsKLSAgICBSZWZQdHI8Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZT4gcmVzdWx0
ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGluZywgQ1NTUmFkaWFsR3Jh
ZGllbnQsIHsgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCIHsgfSwgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkIH0pOworICAgIFJlZlB0cjxDU1NSYWRpYWxHcmFk
aWVudFZhbHVlPiByZXN1bHQgPSBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGUocmVwZWF0
aW5nLCBDU1NSYWRpYWxHcmFkaWVudCwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0Ig
eyB9LCBncmFkaWVudEFscGhhUHJlbXVsdGlwbGljYXRpb24oY29udGV4dCkgfSk7CiAKICAgICBS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNoYXBlOwogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gc2l6ZUtleXdvcmQ7CkBAIC0zMTg2LDcgKzMxOTEsNyBAQCBzdGF0aWMgUmVmUHRyPENT
U1ZhbHVlPiBjb25zdW1lUmFkaWFsR3JhZGllbnQoQ1NTUGFyc2UKIAogc3RhdGljIFJlZlB0cjxD
U1NWYWx1ZT4gY29uc3VtZUxpbmVhckdyYWRpZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3Ms
IGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIENTU0dyYWRpZW50UmVwZWF0IHJlcGVh
dGluZywgQ1NTR3JhZGllbnRUeXBlIGdyYWRpZW50VHlwZSkKIHsKLSAgICBSZWZQdHI8Q1NTTGlu
ZWFyR3JhZGllbnRWYWx1ZT4gcmVzdWx0ID0gQ1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRl
KHJlcGVhdGluZywgZ3JhZGllbnRUeXBlLCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JH
QiB7IH0sIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKKyAgICBS
ZWZQdHI8Q1NTTGluZWFyR3JhZGllbnRWYWx1ZT4gcmVzdWx0ID0gQ1NTTGluZWFyR3JhZGllbnRW
YWx1ZTo6Y3JlYXRlKHJlcGVhdGluZywgZ3JhZGllbnRUeXBlLCB7IENvbG9ySW50ZXJwb2xhdGlv
bk1ldGhvZDo6U1JHQiB7IH0sIGdyYWRpZW50QWxwaGFQcmVtdWx0aXBsaWNhdGlvbihjb250ZXh0
KSB9KTsKIAogICAgIGJvb2wgZXhwZWN0Q29tbWEgPSB0cnVlOwogICAgIFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gYW5nbGUgPSBjb25zdW1lQW5nbGUoYXJncywgY29udGV4dC5tb2RlLCBVbml0
bGVzc1F1aXJrOjpGb3JiaWQsIFVuaXRsZXNzWmVyb1F1aXJrOjpBbGxvdyk7CkBAIC0zMjIwLDcg
KzMyMjUsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lTGluZWFyR3JhZGllbnQo
Q1NTUGFyc2UKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVDb25pY0dyYWRpZW50KENT
U1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQs
IENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdGluZykKIHsKICNpZiBFTkFCTEUoQ1NTX0NPTklDX0dS
QURJRU5UUykKLSAgICBSZWZQdHI8Q1NTQ29uaWNHcmFkaWVudFZhbHVlPiByZXN1bHQgPSBDU1ND
b25pY0dyYWRpZW50VmFsdWU6OmNyZWF0ZShyZXBlYXRpbmcsIHsgQ29sb3JJbnRlcnBvbGF0aW9u
TWV0aG9kOjpTUkdCIHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVk
IH0pOworICAgIFJlZlB0cjxDU1NDb25pY0dyYWRpZW50VmFsdWU+IHJlc3VsdCA9IENTU0Nvbmlj
R3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGluZywgeyBDb2xvckludGVycG9sYXRpb25NZXRo
b2Q6OlNSR0IgeyB9LCBncmFkaWVudEFscGhhUHJlbXVsdGlwbGljYXRpb24oY29udGV4dCkgfSk7
CiAKICAgICBib29sIGV4cGVjdENvbW1hID0gZmFsc2U7CiAgICAgaWYgKGFyZ3MucGVlaygpLnR5
cGUoKSA9PSBJZGVudFRva2VuKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvckNvbXBvbmVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvckNvbXBvbmVudHMuaAkocmV2aXNpb24gMjg3MjMzKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb21wb25lbnRzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY4LDYgKzY4LDggQEAgc3RydWN0IENvbG9yQ29tcG9uZW50cyB7CiAgICAgdGVt
cGxhdGU8c2l6ZV90IFN0YXJ0LCBzaXplX3QgRW5kPgogICAgIGNvbnN0ZXhwciBDb2xvckNvbXBv
bmVudHM8VCwgRW5kIC0gU3RhcnQ+IHN1YnNldCgpIGNvbnN0OwogCisgICAgY29uc3RleHByIHNp
emVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gU2l6ZTsgfQorCiAgICAgc3RkOjphcnJheTxULCBO
PiBjb21wb25lbnRzOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhZGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYWRpZW50LmNwcAkocmV2aXNpb24gMjg3MjMzKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICsz
MiwxMCBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hlci5oPgogCisjaWYgVVNFKENHKQorI2luY2x1ZGUgIkdyYWRpZW50Q0dBZGFwdG9yLmgiCisj
ZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZWY8R3JhZGllbnQ+IEdyYWRpZW50Ojpj
cmVhdGUoRGF0YSYmIGRhdGEsIENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBjb2xvckludGVycG9s
YXRpb25NZXRob2QpCkBAIC00NCw2ICs0OCw4IEBAIEdyYWRpZW50OjpHcmFkaWVudChEYXRhJiYg
ZGF0YSwgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aAogICAgICwgbV9jb2xvckludGVycG9sYXRpb25N
ZXRob2QgeyBjb2xvckludGVycG9sYXRpb25NZXRob2QgfQogewogfQorCitHcmFkaWVudDo6fkdy
YWRpZW50KCkgPSBkZWZhdWx0OwogCiB2b2lkIEdyYWRpZW50OjphZGp1c3RQYXJhbWV0ZXJzRm9y
VGlsZWREcmF3aW5nKEZsb2F0U2l6ZSYgc2l6ZSwgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFkaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYWRpZW50LmgJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDE3ICszNSwx
MiBAQAogI2luY2x1ZGUgPHZhcmlhbnQ+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi0jaWYg
VVNFKENHKQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNlbmRpZgotCiAjaWYgVVNFKERJ
UkVDVDJEKQogI2luY2x1ZGUgIkNPTVB0ci5oIgogI2VuZGlmCiAKICNpZiBVU0UoQ0cpCiB0eXBl
ZGVmIHN0cnVjdCBDR0NvbnRleHQqIENHQ29udGV4dFJlZjsKLXR5cGVkZWYgc3RydWN0IENHR3Jh
ZGllbnQqIENHR3JhZGllbnRSZWY7CiAjZW5kaWYKIAogI2lmIFVTRShESVJFQ1QyRCkKQEAgLTYy
LDYgKzU3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3Mg
R3JhcGhpY3NDb250ZXh0OwogCitjbGFzcyBHcmFkaWVudENHQWRhcHRvcjsKKwogY2xhc3MgR3Jh
ZGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmFkaWVudD4gewogcHVibGljOgogICAgIHN0cnVj
dCBDb2xvclN0b3AgewpAQCAtMTA0LDYgKzEwMSw3IEBAIGNsYXNzIEdyYWRpZW50IDogcHVibGlj
IFJlZkNvdW50ZWQ8R3JhZGllbnQ+IHsgKHB1YmxpYwogICAgIHVzaW5nIERhdGEgPSBzdGQ6OnZh
cmlhbnQ8TGluZWFyRGF0YSwgUmFkaWFsRGF0YSwgQ29uaWNEYXRhPjsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8R3JhZGllbnQ+IGNyZWF0ZShEYXRhJiYsIENvbG9ySW50ZXJwb2xh
dGlvbk1ldGhvZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgfkdyYWRpZW50KCk7CiAKICAgICBib29s
IGlzWmVyb1NpemUoKSBjb25zdDsKIApAQCAtMTQ0LDExICsxNDIsNiBAQCBjbGFzcyBHcmFkaWVu
dCA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYWRpZW50PiB7IChwdWJsaWMKICAgICB2b2lkIHNvcnRT
dG9wcygpIGNvbnN0OwogICAgIHZvaWQgc3RvcHNDaGFuZ2VkKCk7CiAKLSNpZiBVU0UoQ0cpCi0g
ICAgdm9pZCBjcmVhdGVDR0dyYWRpZW50KCk7Ci0gICAgYm9vbCBoYXNPbmx5Qm91bmRlZFNSR0JD
b2xvclN0b3BzKCkgY29uc3Q7Ci0jZW5kaWYKLQogICAgIERhdGEgbV9kYXRhOwogICAgIENvbG9y
SW50ZXJwb2xhdGlvbk1ldGhvZCBtX2NvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDsKICAgICBtdXRh
YmxlIENvbG9yU3RvcFZlY3RvciBtX3N0b3BzOwpAQCAtMTU3LDcgKzE1MCw3IEBAIGNsYXNzIEdy
YWRpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8R3JhZGllbnQ+IHsgKHB1YmxpYwogICAgIG11dGFi
bGUgdW5zaWduZWQgbV9jYWNoZWRIYXNoIHsgMCB9OwogCiAjaWYgVVNFKENHKQotICAgIFJldGFp
blB0cjxDR0dyYWRpZW50UmVmPiBtX2dyYWRpZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFk
aWVudENHQWRhcHRvcj4gbV9ncmFkaWVudDsKICNlbmRpZgogCiAjaWYgVVNFKERJUkVDVDJEKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGll
bnRDRy5jcHAJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw5ICsyOSw5IEBA
CiAKICNpZiBVU0UoQ0cpCiAKKyNpbmNsdWRlICJHcmFkaWVudENHQWRhcHRvci5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhp
Y3NTUEkuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtNDAsNjEgKzQwLDYgQEAgdm9pZCBHcmFkaWVudDo6c3RvcHNDaGFuZ2VkKCkKICAg
ICBtX2dyYWRpZW50ID0gbnVsbHB0cjsKIH0KIAotYm9vbCBHcmFkaWVudDo6aGFzT25seUJvdW5k
ZWRTUkdCQ29sb3JTdG9wcygpIGNvbnN0Ci17Ci0gICAgZm9yIChjb25zdCBhdXRvJiBzdG9wIDog
bV9zdG9wcykgewotICAgICAgICBpZiAoc3RvcC5jb2xvci5jb2xvclNwYWNlKCkgIT0gQ29sb3JT
cGFjZTo6U1JHQikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLXZvaWQgR3JhZGllbnQ6OmNyZWF0ZUNHR3JhZGllbnQoKQotewotICAgIHNv
cnRTdG9wcygpOwotCi0gICAgdW5zaWduZWQgbnVtU3RvcHMgPSBtX3N0b3BzLnNpemUoKTsKLQot
ICAgIGNvbnN0IGludCByZXNlcnZlZFN0b3BzID0gMzsKLSAgICBWZWN0b3I8Q0dGbG9hdCwgcmVz
ZXJ2ZWRTdG9wcz4gbG9jYXRpb25zOwotICAgIGxvY2F0aW9ucy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KG51bVN0b3BzKTsKLQotICAgIC8vIElmIGFsbCB0aGUgc3RvcHMgYXJlIGJvdW5kZWQgc1JH
QiAoYXMgcmVwcmVzZW50ZWQgYnkgdGhlIGNvbG9yIGhhdmluZyB0aGUgY29sb3Igc3BhY2UKLSAg
ICAvLyBDb2xvclNwYWNlOjpTUkdCKSwgaXQgaXMgZmFzdGVyIHRvIGNyZWF0ZSBhIGdyYWRpZW50
IHVzaW5nIGNvbXBvbmVudHMgdGhhbiBDR0NvbG9ycy4KLSAgICBpZiAoaGFzT25seUJvdW5kZWRT
UkdCQ29sb3JTdG9wcygpKSB7Ci0gICAgICAgIFZlY3RvcjxDR0Zsb2F0LCA0ICogcmVzZXJ2ZWRT
dG9wcz4gY29sb3JDb21wb25lbnRzOwotICAgICAgICBjb2xvckNvbXBvbmVudHMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShudW1TdG9wcyAqIDQpOwotCi0gICAgICAgIGZvciAoY29uc3QgYXV0byYg
c3RvcCA6IG1fc3RvcHMpIHsKLSAgICAgICAgICAgIGF1dG8gW2NvbG9yU3BhY2UsIGNvbXBvbmVu
dHNdID0gc3RvcC5jb2xvci5jb2xvclNwYWNlQW5kQ29tcG9uZW50cygpOwotICAgICAgICAgICAg
YXV0byBbciwgZywgYiwgYV0gPSBjb21wb25lbnRzOwotICAgICAgICAgICAgY29sb3JDb21wb25l
bnRzLnVuY2hlY2tlZEFwcGVuZChyKTsKLSAgICAgICAgICAgIGNvbG9yQ29tcG9uZW50cy51bmNo
ZWNrZWRBcHBlbmQoZyk7Ci0gICAgICAgICAgICBjb2xvckNvbXBvbmVudHMudW5jaGVja2VkQXBw
ZW5kKGIpOwotICAgICAgICAgICAgY29sb3JDb21wb25lbnRzLnVuY2hlY2tlZEFwcGVuZChhKTsK
LQotICAgICAgICAgICAgbG9jYXRpb25zLnVuY2hlY2tlZEFwcGVuZChzdG9wLm9mZnNldCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBtX2dyYWRpZW50ID0gYWRvcHRDRihDR0dyYWRpZW50Q3JlYXRl
V2l0aENvbG9yQ29tcG9uZW50cyhzUkdCQ29sb3JTcGFjZVJlZigpLCBjb2xvckNvbXBvbmVudHMu
ZGF0YSgpLCBsb2NhdGlvbnMuZGF0YSgpLCBudW1TdG9wcykpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgYXV0byBjb2xvcnNBcnJheSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFi
bGUoMCwgbV9zdG9wcy5zaXplKCksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKLSAgICBmb3Ig
KGNvbnN0IGF1dG8mIHN0b3AgOiBtX3N0b3BzKSB7Ci0gICAgICAgIENGQXJyYXlBcHBlbmRWYWx1
ZShjb2xvcnNBcnJheS5nZXQoKSwgY2FjaGVkQ0dDb2xvcihzdG9wLmNvbG9yKS5nZXQoKSk7Ci0g
ICAgICAgIGxvY2F0aW9ucy51bmNoZWNrZWRBcHBlbmQoc3RvcC5vZmZzZXQpOwotICAgIH0KLQot
I2lmIEhBVkUoQ09SRV9HUkFQSElDU19FWFRFTkRFRF9TUkdCX0NPTE9SX1NQQUNFKQotICAgIGF1
dG8gZXh0ZW5kZWRDb2xvcnNHcmFkaWVudENvbG9yU3BhY2UgPSBleHRlbmRlZFNSR0JDb2xvclNw
YWNlUmVmKCk7Ci0jZWxzZQotICAgIGF1dG8gZXh0ZW5kZWRDb2xvcnNHcmFkaWVudENvbG9yU3Bh
Y2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOwotI2VuZGlmCi0KLSAgICBtX2dyYWRpZW50ID0gYWRv
cHRDRihDR0dyYWRpZW50Q3JlYXRlV2l0aENvbG9ycyhleHRlbmRlZENvbG9yc0dyYWRpZW50Q29s
b3JTcGFjZSwgY29sb3JzQXJyYXkuZ2V0KCksIGxvY2F0aW9ucy5kYXRhKCkpKTsKLX0KLQogdm9p
ZCBHcmFkaWVudDo6ZmlsbChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCkKIHsKICAgICBjb250ZXh0LmNsaXAocmVjdCk7CkBAIC0xMDgsMTggKzUzLDE4IEBA
IHZvaWQgR3JhZGllbnQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIAogdm9pZCBH
cmFkaWVudDo6cGFpbnQoQ0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dCkKIHsKLSAgICBDR0dy
YWRpZW50RHJhd2luZ09wdGlvbnMgZXh0ZW5kT3B0aW9ucyA9IGtDR0dyYWRpZW50RHJhd3NCZWZv
cmVTdGFydExvY2F0aW9uIHwga0NHR3JhZGllbnREcmF3c0FmdGVyRW5kTG9jYXRpb247CisgICAg
aWYgKCFtX2dyYWRpZW50KSB7CisgICAgICAgIHNvcnRTdG9wcygpOworICAgICAgICBtX2dyYWRp
ZW50ID0gR3JhZGllbnRDR0FkYXB0b3I6OmNyZWF0ZShtX2NvbG9ySW50ZXJwb2xhdGlvbk1ldGhv
ZCwgbV9zdG9wcyk7CisgICAgfQogCi0gICAgaWYgKCFtX2dyYWRpZW50KQotICAgICAgICBjcmVh
dGVDR0dyYWRpZW50KCk7Ci0KICAgICBXVEY6OnN3aXRjaE9uKG1fZGF0YSwKICAgICAgICAgWyZd
IChjb25zdCBMaW5lYXJEYXRhJiBkYXRhKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKG1fc3ByZWFk
TWV0aG9kKSB7CiAgICAgICAgICAgICBjYXNlIEdyYWRpZW50U3ByZWFkTWV0aG9kOjpSZXBlYXQ6
CiAgICAgICAgICAgICBjYXNlIEdyYWRpZW50U3ByZWFkTWV0aG9kOjpSZWZsZWN0OiB7CiAgICAg
ICAgICAgICAgICAgQ0dDb250ZXh0U3RhdGVTYXZlciBzYXZlU3RhdGUocGxhdGZvcm1Db250ZXh0
KTsKLSAgICAgICAgICAgICAgICBleHRlbmRPcHRpb25zID0gMDsKKyAgICAgICAgICAgICAgICBD
R0dyYWRpZW50RHJhd2luZ09wdGlvbnMgZXh0ZW5kT3B0aW9ucyA9IDA7CiAKICAgICAgICAgICAg
ICAgICBGbG9hdFBvaW50IGdyYWRpZW50VmVjdG9yTm9ybShkYXRhLnBvaW50MSAtIGRhdGEucG9p
bnQwKTsKICAgICAgICAgICAgICAgICBncmFkaWVudFZlY3Rvck5vcm0ubm9ybWFsaXplKCk7CkBA
IC0xNDMsNyArODgsNyBAQCB2b2lkIEdyYWRpZW50OjpwYWludChDR0NvbnRleHRSZWYgcGxhdGZv
cm1Db250ZXh0KQogICAgICAgICAgICAgICAgICAgICBDR1BvaW50IGxlZnQgPSBDR1BvaW50TWFr
ZShmbGlwID8gZW5kIDogc3RhcnQsIDApOwogICAgICAgICAgICAgICAgICAgICBDR1BvaW50IHJp
Z2h0ID0gQ0dQb2ludE1ha2UoZmxpcCA/IHN0YXJ0IDogZW5kLCAwKTsKIAotICAgICAgICAgICAg
ICAgICAgICBDR0NvbnRleHREcmF3TGluZWFyR3JhZGllbnQocGxhdGZvcm1Db250ZXh0LCBtX2dy
YWRpZW50LmdldCgpLCBsZWZ0LCByaWdodCwgZXh0ZW5kT3B0aW9ucyk7CisgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhZGllbnQtPmRyYXdMaW5lYXJHcmFkaWVudChwbGF0Zm9ybUNvbnRleHQsIGxl
ZnQsIHJpZ2h0LCBleHRlbmRPcHRpb25zKTsKICAgICAgICAgICAgICAgICB9OwogCiAgICAgICAg
ICAgICAgICAgYXV0byBpc0xlZnRPZiA9IFtdKENHRmxvYXQgc3RhcnQsIENHRmxvYXQgZW5kLCBD
R1JlY3QgYm91bmRpbmdCb3gpIC0+IGJvb2wgewpAQCAtMTg5LDEyICsxMzQsMTQgQEAgdm9pZCBH
cmFkaWVudDo6cGFpbnQoQ0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dCkKICAgICAgICAgICAg
ICAgICAgICAgZHJhd0xpbmVhckdyYWRpZW50KGVuZCAtIGR4LCBlbmQsIGZsaXApOwogICAgICAg
ICAgICAgICAgICAgICBmbGlwID0gIWZsaXAgJiYgbV9zcHJlYWRNZXRob2QgPT0gR3JhZGllbnRT
cHJlYWRNZXRob2Q6OlJlZmxlY3Q7CiAgICAgICAgICAgICAgICAgfQotCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlIEdyYWRpZW50U3ByZWFk
TWV0aG9kOjpQYWQ6Ci0gICAgICAgICAgICAgICAgQ0dDb250ZXh0RHJhd0xpbmVhckdyYWRpZW50
KHBsYXRmb3JtQ29udGV4dCwgbV9ncmFkaWVudC5nZXQoKSwgZGF0YS5wb2ludDAsIGRhdGEucG9p
bnQxLCBleHRlbmRPcHRpb25zKTsKKyAgICAgICAgICAgIGNhc2UgR3JhZGllbnRTcHJlYWRNZXRo
b2Q6OlBhZDogeworICAgICAgICAgICAgICAgIENHR3JhZGllbnREcmF3aW5nT3B0aW9ucyBleHRl
bmRPcHRpb25zID0ga0NHR3JhZGllbnREcmF3c0JlZm9yZVN0YXJ0TG9jYXRpb24gfCBrQ0dHcmFk
aWVudERyYXdzQWZ0ZXJFbmRMb2NhdGlvbjsKKyAgICAgICAgICAgICAgICBtX2dyYWRpZW50LT5k
cmF3TGluZWFyR3JhZGllbnQocGxhdGZvcm1Db250ZXh0LCBkYXRhLnBvaW50MCwgZGF0YS5wb2lu
dDEsIGV4dGVuZE9wdGlvbnMpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQogICAgICAgICB9LAogICAgICAgICBbJl0gKGNvbnN0IFJhZGlhbERh
dGEmIGRhdGEpIHsKICAgICAgICAgICAgIGJvb2wgbmVlZFNjYWxpbmcgPSBkYXRhLmFzcGVjdFJh
dGlvICE9IDE7CkBAIC0yMDgsNyArMTU1LDggQEAgdm9pZCBHcmFkaWVudDo6cGFpbnQoQ0dDb250
ZXh0UmVmIHBsYXRmb3JtQ29udGV4dCkKICAgICAgICAgICAgICAgICBDR0NvbnRleHRUcmFuc2xh
dGVDVE0ocGxhdGZvcm1Db250ZXh0LCAtZGF0YS5wb2ludDAueCgpLCAtZGF0YS5wb2ludDAueSgp
KTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgQ0dDb250ZXh0RHJhd1JhZGlhbEdyYWRp
ZW50KHBsYXRmb3JtQ29udGV4dCwgbV9ncmFkaWVudC5nZXQoKSwgZGF0YS5wb2ludDAsIGRhdGEu
c3RhcnRSYWRpdXMsIGRhdGEucG9pbnQxLCBkYXRhLmVuZFJhZGl1cywgZXh0ZW5kT3B0aW9ucyk7
CisgICAgICAgICAgICBDR0dyYWRpZW50RHJhd2luZ09wdGlvbnMgZXh0ZW5kT3B0aW9ucyA9IGtD
R0dyYWRpZW50RHJhd3NCZWZvcmVTdGFydExvY2F0aW9uIHwga0NHR3JhZGllbnREcmF3c0FmdGVy
RW5kTG9jYXRpb247CisgICAgICAgICAgICBtX2dyYWRpZW50LT5kcmF3UmFkaWFsR3JhZGllbnQo
cGxhdGZvcm1Db250ZXh0LCBkYXRhLnBvaW50MCwgZGF0YS5zdGFydFJhZGl1cywgZGF0YS5wb2lu
dDEsIGRhdGEuZW5kUmFkaXVzLCBleHRlbmRPcHRpb25zKTsKIAogICAgICAgICAgICAgaWYgKG5l
ZWRTY2FsaW5nKQogICAgICAgICAgICAgICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUocGxhdGZv
cm1Db250ZXh0KTsKQEAgLTIyMSw3ICsxNjksNyBAQCB2b2lkIEdyYWRpZW50OjpwYWludChDR0Nv
bnRleHRSZWYgcGxhdGZvcm1Db250ZXh0KQogICAgICAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRl
Q1RNKHBsYXRmb3JtQ29udGV4dCwgZGF0YS5wb2ludDAueCgpLCBkYXRhLnBvaW50MC55KCkpOwog
ICAgICAgICAgICAgQ0dDb250ZXh0Um90YXRlQ1RNKHBsYXRmb3JtQ29udGV4dCwgKENHRmxvYXQp
LU1fUElfMik7CiAgICAgICAgICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0ocGxhdGZvcm1Db250
ZXh0LCAtZGF0YS5wb2ludDAueCgpLCAtZGF0YS5wb2ludDAueSgpKTsKLSAgICAgICAgICAgIENH
Q29udGV4dERyYXdDb25pY0dyYWRpZW50KHBsYXRmb3JtQ29udGV4dCwgbV9ncmFkaWVudC5nZXQo
KSwgZGF0YS5wb2ludDAsIGRhdGEuYW5nbGVSYWRpYW5zKTsKKyAgICAgICAgICAgIG1fZ3JhZGll
bnQtPmRyYXdDb25pY0dyYWRpZW50KHBsYXRmb3JtQ29udGV4dCwgZGF0YS5wb2ludDAsIGRhdGEu
YW5nbGVSYWRpYW5zKTsKICAgICAgICAgICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUocGxhdGZv
cm1Db250ZXh0KTsKICNlbHNlCiAgICAgICAgICAgICBVTlVTRURfUEFSQU0oZGF0YSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENHQWRhcHRvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
ZGllbnRDR0FkYXB0b3IuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0dBZGFwdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDM0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdyYWRp
ZW50Q0dBZGFwdG9yLmgiCisKKyNpbmNsdWRlICJDb2xvckludGVycG9sYXRpb24uaCIKKyNpbmNs
dWRlICJDb2xvclNwYWNlQ0cuaCIKKyNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQ
SS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEludGVycG9s
YXRpb25TcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBhbHBoYVByZW11bHRpcGxpY2F0aW9u
Pgorc3RhdGljIHZvaWQgc2hhZGluZ0Z1bmN0aW9uKHZvaWQqIGluZm8sIGNvbnN0IENHRmxvYXQq
IGluLCBDR0Zsb2F0KiBvdXQpCit7CisgICAgdXNpbmcgSW50ZXJwb2xhdGlvblNwYWNlQ29sb3JU
eXBlID0gdHlwZW5hbWUgSW50ZXJwb2xhdGlvblNwYWNlOjpDb2xvclR5cGU7CisjaWYgSEFWRShD
T1JFX0dSQVBISUNTX0VYVEVOREVEX1NSR0JfQ09MT1JfU1BBQ0UpCisgICAgdXNpbmcgT3V0cHV0
U3BhY2VDb2xvclR5cGUgPSBFeHRlbmRlZFNSR0JBPGZsb2F0PjsKKyNlbHNlCisgICAgdXNpbmcg
T3V0cHV0U3BhY2VDb2xvclR5cGUgPSBTUkdCQTxmbG9hdD47CisjZW5kaWYKKworICAgIGF1dG8q
IGRhdGEgPSBzdGF0aWNfY2FzdDxHcmFkaWVudENHQWRhcHRvcjo6U2hhZGluZzo6RGF0YSo+KGlu
Zm8pOworCisgICAgLy8gQ29tcHV0ZSBjb2xvciBhdCBvZmZzZXQgJ2luWzBdJyBhbmQgYXNzaWdu
IHRoZSBjb21wb25lbnRzIHRvIG91dFswIC0+IDNdLgorCisgICAgZmxvYXQgcmVxdWVzdGVkT2Zm
c2V0ID0gaW5bMF07CisKKyAgICAvLyAxLiBGaW5kIHN0b3BzIHRoYXQgYm91bmQgdGhlIHJlcXVl
c3RlZCBvZmZzZXQuCisgICAgYXV0byBbc3RvcDAsIHN0b3AxXSA9IFsmXSB7CisgICAgICAgIGZv
ciAoc2l6ZV90IHN0b3AgPSAxOyBzdG9wIDwgZGF0YS0+c3RvcHMoKS5zaXplKCk7ICsrc3RvcCkg
eworICAgICAgICAgICAgaWYgKHJlcXVlc3RlZE9mZnNldCA8PSBkYXRhLT5zdG9wcygpW3N0b3Bd
Lm9mZnNldCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjp0aWUoZGF0YS0+c3RvcHMoKVtz
dG9wIC0gMV0sIGRhdGEtPnN0b3BzKClbc3RvcF0pOworICAgICAgICB9CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfSgpOworCisgICAgLy8gMi4gQ29tcHV0ZSBw
ZXJjZW50YWdlIG9mZnNldCBiZXR3ZWVuIHRoZSB0d28gc3RvcHMuCisgICAgZmxvYXQgb2Zmc2V0
ID0gKHN0b3AxLm9mZnNldCA9PSBzdG9wMC5vZmZzZXQpID8gMC4wZiA6IChyZXF1ZXN0ZWRPZmZz
ZXQgLSBzdG9wMC5vZmZzZXQpIC8gKHN0b3AxLm9mZnNldCAtIHN0b3AwLm9mZnNldCk7CisKKyAg
ICAvLyAzLiBJbnRlcnBvbGF0ZSB0aGUgdHdvIHN0b3BzJyBjb2xvcnMgYnkgdGhlIGNvbXB1dGVk
IG9mZnNldC4KKyAgICAvLyBGSVhNRTogV2UgZG9uJ3Qgd2FudCB0byBkdWUgaHVlIGZpeHVwIGZv
ciBlYWNoIGNhbGwsIHNvIHdlIHNob3VsZCBmaWd1cmUgb3V0IGhvdyB0byBwcmVjb21wdXRlIHRo
YXQuCisgICAgYXV0byBpbnRlcnBvbGF0ZWRDb2xvciA9IGludGVycG9sYXRlQ29sb3JDb21wb25l
bnRzPGFscGhhUHJlbXVsdGlwbGljYXRpb24+KAorICAgICAgICBzdGQ6OmdldDxJbnRlcnBvbGF0
aW9uU3BhY2U+KGRhdGEtPmNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCgpLmNvbG9yU3BhY2UpLAor
ICAgICAgICBtYWtlRnJvbUNvbXBvbmVudHM8SW50ZXJwb2xhdGlvblNwYWNlQ29sb3JUeXBlPihz
dG9wMC5jb2xvckNvbXBvbmVudHMpLCAxLjBmIC0gb2Zmc2V0LAorICAgICAgICBtYWtlRnJvbUNv
bXBvbmVudHM8SW50ZXJwb2xhdGlvblNwYWNlQ29sb3JUeXBlPihzdG9wMS5jb2xvckNvbXBvbmVu
dHMpLCBvZmZzZXQpOworCisgICAgLy8gNC4gQ29udmVydCB0byB0aGUgb3V0cHV0IGNvbG9yIHNw
YWNlLgorICAgIGF1dG8gaW50ZXJwb2xhdGVkQ29sb3JDb252ZXJ0ZWRUb091dHB1dFNwYWNlID0g
YXNDb2xvckNvbXBvbmVudHMoY29udmVydENvbG9yPE91dHB1dFNwYWNlQ29sb3JUeXBlPihpbnRl
cnBvbGF0ZWRDb2xvcikpOworCisgICAgLy8gNS4gV3JpdGUgY29sb3IgY29tcG9uZW50cyB0byAn
b3V0JyBwb2ludGVyLgorICAgIGZvciAoc2l6ZV90IGNvbXBvbmVudEluZGV4ID0gMDsgY29tcG9u
ZW50SW5kZXggPCBpbnRlcnBvbGF0ZWRDb2xvckNvbnZlcnRlZFRvT3V0cHV0U3BhY2Uuc2l6ZSgp
OyArK2NvbXBvbmVudEluZGV4KQorICAgICAgICBvdXRbY29tcG9uZW50SW5kZXhdID0gaW50ZXJw
b2xhdGVkQ29sb3JDb252ZXJ0ZWRUb091dHB1dFNwYWNlW2NvbXBvbmVudEluZGV4XTsKK30KKwor
R3JhZGllbnRDR0FkYXB0b3I6OkdyYWRpZW50Q0dBZGFwdG9yKENvbG9ySW50ZXJwb2xhdGlvbk1l
dGhvZCBjb2xvckludGVycG9sYXRpb25NZXRob2QsIGNvbnN0IFdlYkNvcmU6OkdyYWRpZW50OjpD
b2xvclN0b3BWZWN0b3ImIHN0b3BzKQorICAgIDogbV9zdHJhdGVneSB7IHBpY2tTdHJhdGVneShj
b2xvckludGVycG9sYXRpb25NZXRob2QsIHN0b3BzKSB9Cit7Cit9CisKK0dyYWRpZW50Q0dBZGFw
dG9yOjpTdHJhdGVneSBHcmFkaWVudENHQWRhcHRvcjo6cGlja1N0cmF0ZWd5KENvbG9ySW50ZXJw
b2xhdGlvbk1ldGhvZCBjb2xvckludGVycG9sYXRpb25NZXRob2QsIGNvbnN0IFdlYkNvcmU6Okdy
YWRpZW50OjpDb2xvclN0b3BWZWN0b3ImIHN0b3BzKSBjb25zdAoreworICAgIHJldHVybiBXVEY6
OnN3aXRjaE9uKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5jb2xvclNwYWNlLAorICAgICAgICBb
Jl0gKGNvbnN0IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiYpIC0+IFN0cmF0ZWd5IHsK
KyAgICAgICAgICAgIHN3aXRjaCAoY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLmFscGhhUHJlbXVs
dGlwbGljYXRpb24pIHsKKyAgICAgICAgICAgIGNhc2UgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6
VW5wcmVtdWx0aXBsaWVkOgorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlR3JhZGllbnQoY29s
b3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBzdG9wcyk7CisgICAgICAgICAgICBjYXNlIEFscGhhUHJl
bXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQ6CisjaWYgSEFWRShDT1JFX0dSQVBISUNTX1BS
RU1VTFRJUExJRURfSU5URVJQT0xBVElPTl9HUkFESUVOVCkKKyAgICAgICAgICAgICAgICByZXR1
cm4gbWFrZUdyYWRpZW50KGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCwgc3RvcHMpOworI2Vsc2UK
KyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVNoYWRpbmcoY29sb3JJbnRlcnBvbGF0aW9uTWV0
aG9kLCBzdG9wcyk7CisjZW5kaWYKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAg
WyZdIChjb25zdCBhdXRvJikgLT4gU3RyYXRlZ3kgeworICAgICAgICAgICAgLy8gRklYTUU6IEFk
ZCBzdXBwb3J0IGZvciB0aGUgb3RoZXIgaW50ZXJwb2xhdGlvbiBjb2xvciBzcGFjZXMuCisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgKTsK
K30KKworR3JhZGllbnRDR0FkYXB0b3I6OlN0cmF0ZWd5IEdyYWRpZW50Q0dBZGFwdG9yOjptYWtl
R3JhZGllbnQoQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhv
ZCwgY29uc3QgV2ViQ29yZTo6R3JhZGllbnQ6OkNvbG9yU3RvcFZlY3RvciYgc3RvcHMpIGNvbnN0
Cit7CisgICAgQVNTRVJUX1VOVVNFRChjb2xvckludGVycG9sYXRpb25NZXRob2QsIHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8Q29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCPihjb2xvckludGVy
cG9sYXRpb25NZXRob2QuY29sb3JTcGFjZSkpOworI2lmICFIQVZFKENPUkVfR1JBUEhJQ1NfUFJF
TVVMVElQTElFRF9JTlRFUlBPTEFUSU9OX0dSQURJRU5UKQorICAgIEFTU0VSVF9VTlVTRUQoY29s
b3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb2xvckludGVycG9sYXRpb25NZXRob2QuYWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiA9PSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQp
OworI2VuZGlmCisKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfR1JBRElFTlRfQ1JFQVRFX1dJVEhf
T1BUSU9OUykKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfUFJFTVVMVElQTElFRF9JTlRFUlBPTEFU
SU9OX0dSQURJRU5UKQorICAgIGF1dG8gZ3JhZGllbnRJbnRlcnBvbGF0ZXNQcmVtdWx0aXBsaWVk
T3B0aW9uc0RpY3Rpb25hcnkgPSBbXSAoKSAtPiBDRkRpY3Rpb25hcnlSZWYgeworICAgICAgICBz
dGF0aWMgQ0ZUeXBlUmVmIGtleXNbXSA9IHsga0NHR3JhZGllbnRJbnRlcnBvbGF0ZXNQcmVtdWx0
aXBsaWVkIH07CisgICAgICAgIHN0YXRpYyBDRlR5cGVSZWYgdmFsdWVzW10gPSB7IGtDRkJvb2xl
YW5UcnVlIH07CisgICAgICAgIHN0YXRpYyBDRkRpY3Rpb25hcnlSZWYgb3B0aW9ucyA9IENGRGlj
dGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrZXlzLCB2YWx1ZXMsIFdURl9BUlJB
WV9MRU5HVEgoa2V5cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVE
aWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOworCisgICAgICAgIHJldHVybiBvcHRpb25zOworICAg
IH07CisKKyAgIGF1dG8gZ3JhZGllbnRPcHRpb25zRGljdGlvbmFyeSA9IFsmXSAoYXV0byBjb2xv
ckludGVycG9sYXRpb25NZXRob2QpIC0+IENGRGljdGlvbmFyeVJlZiB7CisgICAgICAgIHN3aXRj
aCAoY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLmFscGhhUHJlbXVsdGlwbGljYXRpb24pIHsKKyAg
ICAgICAgY2FzZSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQ6CisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgY2FzZSBBbHBoYVByZW11bHRpcGxpY2F0
aW9uOjpQcmVtdWx0aXBsaWVkOgorICAgICAgICAgICAgcmV0dXJuIGdyYWRpZW50SW50ZXJwb2xh
dGVzUHJlbXVsdGlwbGllZE9wdGlvbnNEaWN0aW9uYXJ5KCk7CisgICAgICAgIH0KKyAgIH07Cisj
ZWxzZQorICAgYXV0byBncmFkaWVudE9wdGlvbnNEaWN0aW9uYXJ5ID0gW10gKGF1dG8pIC0+IENG
RGljdGlvbmFyeVJlZiB7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgfTsKKyNlbmRpZgor
I2VuZGlmCisKKyAgICBhdXRvIGhhc09ubHlCb3VuZGVkU1JHQkNvbG9yU3RvcHMgPSBbXSAoY29u
c3QgYXV0byYgc3RvcHMpIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzdG9wIDogc3RvcHMp
IHsKKyAgICAgICAgICAgIGlmIChzdG9wLmNvbG9yLmNvbG9yU3BhY2UoKSAhPSBDb2xvclNwYWNl
OjpTUkdCKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9OworCisgICAgYXV0byBudW1iZXJPZlN0b3BzID0gc3RvcHMu
c2l6ZSgpOworCisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIHJlc2VydmVkU3RvcHMgPSAzOwor
ICAgIFZlY3RvcjxDR0Zsb2F0LCByZXNlcnZlZFN0b3BzPiBsb2NhdGlvbnM7CisgICAgbG9jYXRp
b25zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVtYmVyT2ZTdG9wcyk7CisKKyAgICBWZWN0b3I8
Q0dGbG9hdCwgNCAqIHJlc2VydmVkU3RvcHM+IGNvbG9yQ29tcG9uZW50czsKKyAgICBjb2xvckNv
bXBvbmVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShudW1iZXJPZlN0b3BzICogNCk7CisKKyAg
ICBhdXRvIGdyYWRpZW50Q29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7CisKKyAgICAv
LyBGSVhNRTogTm93IHRoYXQgd2Ugb25seSBldmVyIHVzZSBDR0dyYWRpZW50Q3JlYXRlV2l0aENv
bG9yQ29tcG9uZW50cywgd2Ugc2hvdWxkIGludmVzdGlnYXRlCisgICAgLy8gaWYgdGhlcmUgaXMg
YW55IHJlYWwgYmVuZWZpdCB0byB1c2luZyBzUkdCIHdoZW4gYWxsIHRoZSBzdG9wcyBhcmUgYm91
bmRlZCB2cyBqdXN0IHVzaW5nCisgICAgLy8gZXh0ZW5kZWQgc1JHQiBmb3IgYWxsIGdyYWRpZW50
cy4KKyAgICBpZiAoaGFzT25seUJvdW5kZWRTUkdCQ29sb3JTdG9wcyhzdG9wcykpIHsKKyAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBzdG9wIDogc3RvcHMpIHsKKyAgICAgICAgICAgIGF1dG8gW2Nv
bG9yU3BhY2UsIGNvbXBvbmVudHNdID0gc3RvcC5jb2xvci5jb2xvclNwYWNlQW5kQ29tcG9uZW50
cygpOworICAgICAgICAgICAgYXV0byBbciwgZywgYiwgYV0gPSBjb21wb25lbnRzOworICAgICAg
ICAgICAgY29sb3JDb21wb25lbnRzLnVuY2hlY2tlZEFwcGVuZChyKTsKKyAgICAgICAgICAgIGNv
bG9yQ29tcG9uZW50cy51bmNoZWNrZWRBcHBlbmQoZyk7CisgICAgICAgICAgICBjb2xvckNvbXBv
bmVudHMudW5jaGVja2VkQXBwZW5kKGIpOworICAgICAgICAgICAgY29sb3JDb21wb25lbnRzLnVu
Y2hlY2tlZEFwcGVuZChhKTsKKworICAgICAgICAgICAgbG9jYXRpb25zLnVuY2hlY2tlZEFwcGVu
ZChzdG9wLm9mZnNldCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworI2lmIEhBVkUoQ09SRV9H
UkFQSElDU19FWFRFTkRFRF9TUkdCX0NPTE9SX1NQQUNFKQorICAgICAgICBncmFkaWVudENvbG9y
U3BhY2UgPSBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCk7CisjZW5kaWYKKworICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIHN0b3AgOiBzdG9wcykgeworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19F
WFRFTkRFRF9TUkdCX0NPTE9SX1NQQUNFKQorICAgICAgICAgICAgYXV0byBbciwgZywgYiwgYV0g
PSBzdG9wLmNvbG9yLnRvQ29sb3JUeXBlTG9zc3k8RXh0ZW5kZWRTUkdCQTxmbG9hdD4+KCk7Cisj
ZWxzZQorICAgICAgICAgICAgYXV0byBbciwgZywgYiwgYV0gPSBzdG9wLmNvbG9yLnRvQ29sb3JU
eXBlTG9zc3k8U1JHQkE8ZmxvYXQ+PigpOworI2VuZGlmCisgICAgICAgICAgICBjb2xvckNvbXBv
bmVudHMudW5jaGVja2VkQXBwZW5kKHIpOworICAgICAgICAgICAgY29sb3JDb21wb25lbnRzLnVu
Y2hlY2tlZEFwcGVuZChnKTsKKyAgICAgICAgICAgIGNvbG9yQ29tcG9uZW50cy51bmNoZWNrZWRB
cHBlbmQoYik7CisgICAgICAgICAgICBjb2xvckNvbXBvbmVudHMudW5jaGVja2VkQXBwZW5kKGEp
OworCisgICAgICAgICAgICBsb2NhdGlvbnMudW5jaGVja2VkQXBwZW5kKHN0b3Aub2Zmc2V0KTsK
KyAgICAgICAgfQorICAgIH0KKworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19HUkFESUVOVF9DUkVB
VEVfV0lUSF9PUFRJT05TKQorICAgIHJldHVybiBHcmFkaWVudCB7IGFkb3B0Q0YoQ0dHcmFkaWVu
dENyZWF0ZVdpdGhDb2xvckNvbXBvbmVudHNBbmRPcHRpb25zKGdyYWRpZW50Q29sb3JTcGFjZSwg
Y29sb3JDb21wb25lbnRzLmRhdGEoKSwgbG9jYXRpb25zLmRhdGEoKSwgbnVtYmVyT2ZTdG9wcywg
Z3JhZGllbnRPcHRpb25zRGljdGlvbmFyeShjb2xvckludGVycG9sYXRpb25NZXRob2QpKSkgfTsK
KyNlbHNlCisgICAgcmV0dXJuIEdyYWRpZW50IHsgYWRvcHRDRihDR0dyYWRpZW50Q3JlYXRlV2l0
aENvbG9yQ29tcG9uZW50cyhncmFkaWVudENvbG9yU3BhY2UsIGNvbG9yQ29tcG9uZW50cy5kYXRh
KCksIGxvY2F0aW9ucy5kYXRhKCksIG51bWJlck9mU3RvcHMpKSB9OworI2VuZGlmCit9CisKK3N0
YXRpYyBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbnZlcnRDb2xvclRvQ29sb3JJbnRlcnBv
bGF0aW9uU3BhY2UoY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvckludGVycG9sYXRpb25NZXRob2Qg
Y29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kKQoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGNv
bG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5jb2xvclNwYWNlLAorICAgICAgICBbJl0gKGF1dG8mIGNv
bG9yU3BhY2UpIC0+IENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4geworICAgICAgICAgICAgdXNp
bmcgQ29sb3JUeXBlID0gdHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8ZGVjbHR5cGUo
Y29sb3JTcGFjZSk+OjpDb2xvclR5cGU7CisgICAgICAgICAgICByZXR1cm4gYXNDb2xvckNvbXBv
bmVudHMoY29sb3IudGVtcGxhdGUgdG9Db2xvclR5cGVMb3NzeTxDb2xvclR5cGU+KCkpOworICAg
ICAgICB9CisgICAgKTsKK30KKworR3JhZGllbnRDR0FkYXB0b3I6OlN0cmF0ZWd5IEdyYWRpZW50
Q0dBZGFwdG9yOjptYWtlU2hhZGluZyhDb2xvckludGVycG9sYXRpb25NZXRob2QgY29sb3JJbnRl
cnBvbGF0aW9uTWV0aG9kLCBjb25zdCBXZWJDb3JlOjpHcmFkaWVudDo6Q29sb3JTdG9wVmVjdG9y
JiBzdG9wcykgY29uc3QKK3sKKyAgICBhdXRvIG1ha2VEYXRhID0gWyZdIChhdXRvIGNvbG9ySW50
ZXJwb2xhdGlvbk1ldGhvZCwgYXV0byYgc3RvcHMpIHsKKyAgICAgICAgYXV0byB0b3RhbE51bWJl
ck9mU3RvcHMgPSBzdG9wcy5zaXplKCk7CisgICAgICAgIGJvb2wgaGFzWmVybyA9IGZhbHNlOwor
ICAgICAgICBib29sIGhhc09uZSA9IGZhbHNlOworCisgICAgICAgIGZvciAoY29uc3QgYXV0byYg
c3RvcCA6IHN0b3BzKSB7CisgICAgICAgICAgICBhdXRvIG9mZnNldCA9IHN0b3Aub2Zmc2V0Owor
ICAgICAgICAgICAgQVNTRVJUKG9mZnNldCA+PSAwKTsKKyAgICAgICAgICAgIEFTU0VSVChvZmZz
ZXQgPD0gMSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChvZmZzZXQgPT0gMCkKKyAg
ICAgICAgICAgICAgICBoYXNaZXJvID0gdHJ1ZTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG9mZnNl
dCA9PSAxKQorICAgICAgICAgICAgICAgIGhhc09uZSA9IHRydWU7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoIWhhc1plcm8pCisgICAgICAgICAgICB0b3RhbE51bWJlck9mU3RvcHMrKzsKKyAg
ICAgICAgaWYgKCFoYXNPbmUpCisgICAgICAgICAgICB0b3RhbE51bWJlck9mU3RvcHMrKzsKKwor
ICAgICAgICBWZWN0b3I8Q29sb3JDb252ZXJ0ZWRUb0ludGVycG9sYXRpb25Db2xvclNwYWNlU3Rv
cD4gY29udmVydGVkU3RvcHM7CisgICAgICAgIGNvbnZlcnRlZFN0b3BzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkodG90YWxOdW1iZXJPZlN0b3BzKTsKKworICAgICAgICBpZiAoIWhhc1plcm8pCisg
ICAgICAgICAgICBjb252ZXJ0ZWRTdG9wcy51bmNoZWNrZWRBcHBlbmQoeyAwLjBmLCB7IDAuMGYs
IDAuMGYsIDAuMGYsIDAuMGYgfSB9KTsKKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHN0b3Ag
OiBzdG9wcykKKyAgICAgICAgICAgIGNvbnZlcnRlZFN0b3BzLnVuY2hlY2tlZEFwcGVuZCh7IHN0
b3Aub2Zmc2V0LCBjb252ZXJ0Q29sb3JUb0NvbG9ySW50ZXJwb2xhdGlvblNwYWNlKHN0b3AuY29s
b3IsIGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCkgfSk7CisKKyAgICAgICAgaWYgKCFoYXNPbmUp
CisgICAgICAgICAgICBjb252ZXJ0ZWRTdG9wcy51bmNoZWNrZWRBcHBlbmQoeyAxLjBmLCBjb252
ZXJ0ZWRTdG9wcy5sYXN0KCkuY29sb3JDb21wb25lbnRzIH0pOworCisgICAgICAgIGlmICghaGFz
WmVybykKKyAgICAgICAgICAgIGNvbnZlcnRlZFN0b3BzWzBdLmNvbG9yQ29tcG9uZW50cyA9IGNv
bnZlcnRlZFN0b3BzWzFdLmNvbG9yQ29tcG9uZW50czsKKworICAgICAgICByZXR1cm4gU2hhZGlu
Zzo6RGF0YTo6Y3JlYXRlKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCwgV1RGTW92ZShjb252ZXJ0
ZWRTdG9wcykpOworICAgIH07CisKKyAgICBhdXRvIG1ha2VGdW5jdGlvbiA9IFsmXSAoYXV0byBj
b2xvckludGVycG9sYXRpb25NZXRob2QsIGF1dG8mIGRhdGEpIHsKKyAgICAgICAgYXV0byBtYWtl
RXZhbHVhdGVDYWxsYmFjayA9IFsmXSAoYXV0byBjb2xvckludGVycG9sYXRpb25NZXRob2QpIC0+
IENHRnVuY3Rpb25FdmFsdWF0ZUNhbGxiYWNrIHsKKyAgICAgICAgICAgIHJldHVybiBXVEY6OnN3
aXRjaE9uKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5jb2xvclNwYWNlLAorICAgICAgICAgICAg
ICAgIFsmXSAoYXV0byYgLypjb2xvclNwYWNlKi8pICAtPiBDR0Z1bmN0aW9uRXZhbHVhdGVDYWxs
YmFjayB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY29sb3JJbnRlcnBvbGF0aW9uTWV0
aG9kLmFscGhhUHJlbXVsdGlwbGljYXRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQ6CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gJnNoYWRpbmdGdW5jdGlvbjxDb2xvckludGVycG9sYXRpb25NZXRob2Q6
OlNSR0IsIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZD47CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZDoK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAmc2hhZGluZ0Z1bmN0aW9uPENvbG9ySW50
ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlw
bGllZD47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICApOworICAgICAgICB9OworCisgICAgICAgIGNvbnN0IENHRnVuY3Rpb25DYWxsYmFja3Mg
Y2FsbGJhY2tzID0geworICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIG1ha2VFdmFsdWF0ZUNh
bGxiYWNrKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCksCisgICAgICAgICAgICBbXSAodm9pZCog
aW5mbykgeworICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdyYWRpZW50Q0dBZGFwdG9yOjpT
aGFkaW5nOjpEYXRhKj4oaW5mbyktPmRlcmVmKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH07
CisKKyAgICAgICAgc3RhdGljIGNvbnN0IENHRmxvYXQgZG9tYWluWzJdID0geyAwLCAxIH07Cisg
ICAgICAgIC8vIEZJWE1FOiBXaGVuIHRoZSBpbnB1dCBpcyBib3VuZGVkIHNSR0IgYW5kIHdlIGFy
ZSB1c2luZyB0aGUgU1JCRyBpbnRlcnBvbGF0aW9uIG1ldGhvZCwgaXQgbWlnaHQgbWFrZSBtb3Jl
IHNlbnNlIHRvIGhhdmUgdGhlIHJhbmdlIGJlIHsgMCwgMSwgMCwgMSwgMCwgMSwgMCwgMSB9Cisg
ICAgICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHJhbmdlWzhdID0geyAtc3RkOjpudW1lcmljX2xp
bWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZp
bml0eSgpLCAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9h
dD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCAw
LCAxIH07CisKKyAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dGdW5jdGlvbkNyZWF0ZSgmZGF0YS5s
ZWFrUmVmKCksIDEsIGRvbWFpbiwgNCwgcmFuZ2UsICZjYWxsYmFja3MpKTsKKyAgICB9OworCisg
ICAgYXV0byBkYXRhID0gbWFrZURhdGEoY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBzdG9wcyk7
CisgICAgYXV0byBmdW5jdGlvbiA9IG1ha2VGdW5jdGlvbihjb2xvckludGVycG9sYXRpb25NZXRo
b2QsIGRhdGEpOworCisgICAgLy8gRklYTUU6IEludmVzdGlnYXRlIHVzaW5nIGJvdW5kZWQgc1JH
QiB3aGVuIHRoZSBpbnB1dCBzdG9wcyBhcmUgYWxsIGJvdW5kZWQgc1JHQi4KKyNpZiBIQVZFKENP
UkVfR1JBUEhJQ1NfRVhURU5ERURfU1JHQl9DT0xPUl9TUEFDRSkKKyAgICBhdXRvIGNvbG9yU3Bh
Y2UgPSBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCk7CisjZWxzZQorICAgIGF1dG8gY29sb3JT
cGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7CisjZW5kaWYKKworICAgIHJldHVybiBTaGFkaW5n
IHsgV1RGTW92ZShkYXRhKSwgV1RGTW92ZShmdW5jdGlvbiksIGNvbG9yU3BhY2UgfTsKK30KKwor
dm9pZCBHcmFkaWVudENHQWRhcHRvcjo6ZHJhd0xpbmVhckdyYWRpZW50KENHQ29udGV4dFJlZiBw
bGF0Zm9ybUNvbnRleHQsIENHUG9pbnQgc3RhcnRQb2ludCwgQ0dQb2ludCBlbmRQb2ludCwgQ0dH
cmFkaWVudERyYXdpbmdPcHRpb25zIG9wdGlvbnMpCit7CisgICAgV1RGOjpzd2l0Y2hPbihtX3N0
cmF0ZWd5LAorICAgICAgICBbJl0gKEdyYWRpZW50JiBncmFkaWVudCkgeworICAgICAgICAgICAg
Q0dDb250ZXh0RHJhd0xpbmVhckdyYWRpZW50KHBsYXRmb3JtQ29udGV4dCwgZ3JhZGllbnQuZ3Jh
ZGllbnQuZ2V0KCksIHN0YXJ0UG9pbnQsIGVuZFBvaW50LCBvcHRpb25zKTsKKyAgICAgICAgfSwK
KyAgICAgICAgWyZdIChTaGFkaW5nJiBzaGFkaW5nKSB7CisgICAgICAgICAgICBib29sIHN0YXJ0
RXh0ZW5kID0gKG9wdGlvbnMgJiBrQ0dHcmFkaWVudERyYXdzQmVmb3JlU3RhcnRMb2NhdGlvbikg
IT0gMDsKKyAgICAgICAgICAgIGJvb2wgZW5kRXh0ZW5kID0gKG9wdGlvbnMgJiBrQ0dHcmFkaWVu
dERyYXdzQWZ0ZXJFbmRMb2NhdGlvbikgIT0gMDsKKworICAgICAgICAgICAgQ0dDb250ZXh0RHJh
d1NoYWRpbmcocGxhdGZvcm1Db250ZXh0LCBhZG9wdENGKENHU2hhZGluZ0NyZWF0ZUF4aWFsKHNo
YWRpbmcuY29sb3JTcGFjZS5nZXQoKSwgc3RhcnRQb2ludCwgZW5kUG9pbnQsIHNoYWRpbmcuZnVu
Y3Rpb24uZ2V0KCksIHN0YXJ0RXh0ZW5kLCBlbmRFeHRlbmQpKS5nZXQoKSk7CisgICAgICAgIH0K
KyAgICApOworfQorCit2b2lkIEdyYWRpZW50Q0dBZGFwdG9yOjpkcmF3UmFkaWFsR3JhZGllbnQo
Q0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dCwgQ0dQb2ludCBzdGFydENlbnRlciwgQ0dGbG9h
dCBzdGFydFJhZGl1cywgQ0dQb2ludCBlbmRDZW50ZXIsIENHRmxvYXQgZW5kUmFkaXVzLCBDR0dy
YWRpZW50RHJhd2luZ09wdGlvbnMgb3B0aW9ucykKK3sKKyAgICBXVEY6OnN3aXRjaE9uKG1fc3Ry
YXRlZ3ksCisgICAgICAgIFsmXSAoR3JhZGllbnQmIGdyYWRpZW50KSB7CisgICAgICAgICAgICBD
R0NvbnRleHREcmF3UmFkaWFsR3JhZGllbnQocGxhdGZvcm1Db250ZXh0LCBncmFkaWVudC5ncmFk
aWVudC5nZXQoKSwgc3RhcnRDZW50ZXIsIHN0YXJ0UmFkaXVzLCBlbmRDZW50ZXIsIGVuZFJhZGl1
cywgb3B0aW9ucyk7CisgICAgICAgIH0sCisgICAgICAgIFsmXSAoU2hhZGluZyYgc2hhZGluZykg
eworICAgICAgICAgICAgYm9vbCBzdGFydEV4dGVuZCA9IChvcHRpb25zICYga0NHR3JhZGllbnRE
cmF3c0JlZm9yZVN0YXJ0TG9jYXRpb24pICE9IDA7CisgICAgICAgICAgICBib29sIGVuZEV4dGVu
ZCA9IChvcHRpb25zICYga0NHR3JhZGllbnREcmF3c0FmdGVyRW5kTG9jYXRpb24pICE9IDA7CisK
KyAgICAgICAgICAgIENHQ29udGV4dERyYXdTaGFkaW5nKHBsYXRmb3JtQ29udGV4dCwgYWRvcHRD
RihDR1NoYWRpbmdDcmVhdGVSYWRpYWwoc2hhZGluZy5jb2xvclNwYWNlLmdldCgpLCBzdGFydENl
bnRlciwgc3RhcnRSYWRpdXMsIGVuZENlbnRlciwgZW5kUmFkaXVzLCBzaGFkaW5nLmZ1bmN0aW9u
LmdldCgpLCBzdGFydEV4dGVuZCwgZW5kRXh0ZW5kKSkuZ2V0KCkpOworICAgICAgICB9CisgICAg
KTsKK30KKwordm9pZCBHcmFkaWVudENHQWRhcHRvcjo6ZHJhd0NvbmljR3JhZGllbnQoQ0dDb250
ZXh0UmVmIHBsYXRmb3JtQ29udGV4dCwgQ0dQb2ludCBjZW50ZXIsIENHRmxvYXQgYW5nbGUpCit7
CisvLyBGSVhNRTogU2VlbXMgbGlrZSB0aGlzIHNob3VsZCBiZSBIQVZFKENHX0NPTlRFWFRfRFJB
V19DT05JQ19HUkFESUVOVCkuCisvLyBGSVhNRTogQ2FuIHdlIGNoYW5nZSB0dk9TIHRvIGJlIGxp
a2UgdGhlIG90aGVyIENvY29hIHBsYXRmb3Jtcz8KKyNpZiBQTEFURk9STShDT0NPQSkgJiYgIVBM
QVRGT1JNKEFQUExFVFYpCisgICAgV1RGOjpzd2l0Y2hPbihtX3N0cmF0ZWd5LAorICAgICAgICBb
Jl0gKEdyYWRpZW50JiBncmFkaWVudCkgeworICAgICAgICAgICAgQ0dDb250ZXh0RHJhd0Nvbmlj
R3JhZGllbnQocGxhdGZvcm1Db250ZXh0LCBncmFkaWVudC5ncmFkaWVudC5nZXQoKSwgY2VudGVy
LCBhbmdsZSk7CisgICAgICAgIH0sCisgICAgICAgIFsmXSAoU2hhZGluZyYgc2hhZGluZykgewor
ICAgICAgICAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcocGxhdGZvcm1Db250ZXh0LCBhZG9wdENG
KENHU2hhZGluZ0NyZWF0ZUNvbmljKHNoYWRpbmcuY29sb3JTcGFjZS5nZXQoKSwgY2VudGVyLCBh
bmdsZSwgc2hhZGluZy5mdW5jdGlvbi5nZXQoKSkpLmdldCgpKTsKKyAgICAgICAgfQorICAgICk7
CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShwbGF0Zm9ybUNvbnRleHQpOworICAgIFVOVVNFRF9Q
QVJBTShjZW50ZXIpOworICAgIFVOVVNFRF9QQVJBTShhbmdsZSk7CisjZW5kaWYKK30KKworfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDR0FkYXB0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFkaWVudENHQWRhcHRvci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0dBZGFwdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDb2xvckNvbXBvbmVu
dHMuaCIKKyNpbmNsdWRlICJDb2xvckludGVycG9sYXRpb25NZXRob2QuaCIKKyNpbmNsdWRlICJH
cmFkaWVudC5oIgorI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KKyNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVk
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0
cnVjdCBDb2xvckNvbnZlcnRlZFRvSW50ZXJwb2xhdGlvbkNvbG9yU3BhY2VTdG9wIHsKKyAgICBm
bG9hdCBvZmZzZXQ7CisgICAgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBjb2xvckNvbXBvbmVu
dHM7Cit9OworCitjbGFzcyBHcmFkaWVudENHQWRhcHRvciB7CitwdWJsaWM6CisgICAgLy8gRklY
TUU6IFRoaXMgb25seSB1c2VzIGEgdW5pcXVlX3B0ciB0byBhdm9pZCBjaXJjdWxhciBpbmNsdXNp
b24gaXNzdWVzIGR1ZSB0byBHcmFkaWVudDo6Q29sb3JTdG9wVmVjdG9yIGJlaW5nIGEgbmVzdGVk
IHR5cGUuIElmIEdyYWRpZW50OjpDb2xvclN0b3BWZWN0b3IKKyAgICAvLyBnZXRzIGV4dHJhY3Rl
ZCBpbnRvIGl0cyBvd24gZmlsZSwgd2UgY291bGQgcmVwbGFjZSB0aGUgc3RkOjp1bmlxdWVfcHRy
PEdyYWRpZW50Q0dBZGFwdG9yPiBpbiBHcmFkaWVudCB3aXRoIGEgc3RkOjpvcHRpb25hbDxHcmFk
aWVudENHQWRhcHRvcj4uCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHcmFkaWVudENHQWRh
cHRvcj4gY3JlYXRlKENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBjb2xvckludGVycG9sYXRpb25N
ZXRob2QsIGNvbnN0IFdlYkNvcmU6OkdyYWRpZW50OjpDb2xvclN0b3BWZWN0b3ImIHN0b3BzKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxHcmFkaWVudENHQWRhcHRvcj4o
bmV3IEdyYWRpZW50Q0dBZGFwdG9yKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCwgc3RvcHMpKTsK
KyAgICB9CisKKyAgICB2b2lkIGRyYXdMaW5lYXJHcmFkaWVudChDR0NvbnRleHRSZWYsIENHUG9p
bnQgc3RhcnRQb2ludCwgQ0dQb2ludCBlbmRQb2ludCwgQ0dHcmFkaWVudERyYXdpbmdPcHRpb25z
KTsKKyAgICB2b2lkIGRyYXdSYWRpYWxHcmFkaWVudChDR0NvbnRleHRSZWYsIENHUG9pbnQgc3Rh
cnRDZW50ZXIsIENHRmxvYXQgc3RhcnRSYWRpdXMsIENHUG9pbnQgZW5kQ2VudGVyLCBDR0Zsb2F0
IGVuZFJhZGl1cywgQ0dHcmFkaWVudERyYXdpbmdPcHRpb25zKTsKKyAgICB2b2lkIGRyYXdDb25p
Y0dyYWRpZW50KENHQ29udGV4dFJlZiwgQ0dQb2ludCBjZW50ZXIsIENHRmxvYXQgYW5nbGUpOwor
CisgICAgc3RydWN0IEdyYWRpZW50IHsKKyAgICAgICAgUmV0YWluUHRyPENHR3JhZGllbnRSZWY+
IGdyYWRpZW50OworICAgIH07CisKKyAgICBzdHJ1Y3QgU2hhZGluZyB7CisgICAgICAgIGNsYXNz
IERhdGEgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YT4geworICAgICAgICBwdWJs
aWM6CisgICAgICAgICAgICBzdGF0aWMgUmVmPERhdGE+IGNyZWF0ZShDb2xvckludGVycG9sYXRp
b25NZXRob2QgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBWZWN0b3I8Q29sb3JDb252ZXJ0ZWRU
b0ludGVycG9sYXRpb25Db2xvclNwYWNlU3RvcD4gc3RvcHMpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YShjb2xvckludGVycG9sYXRpb25N
ZXRob2QsIFdURk1vdmUoc3RvcHMpKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIENv
bG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBjb2xvckludGVycG9sYXRpb25NZXRob2QoKSBjb25zdCB7
IHJldHVybiBtX2NvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDsgfQorICAgICAgICAgICAgY29uc3Qg
VmVjdG9yPENvbG9yQ29udmVydGVkVG9JbnRlcnBvbGF0aW9uQ29sb3JTcGFjZVN0b3A+JiBzdG9w
cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcHM7IH0KKworICAgICAgICBwcml2YXRlOgorICAgICAg
ICAgICAgRGF0YShDb2xvckludGVycG9sYXRpb25NZXRob2QgY29sb3JJbnRlcnBvbGF0aW9uTWV0
aG9kLCBWZWN0b3I8Q29sb3JDb252ZXJ0ZWRUb0ludGVycG9sYXRpb25Db2xvclNwYWNlU3RvcD4g
c3RvcHMpCisgICAgICAgICAgICAgICAgOiBtX2NvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCB7IGNv
bG9ySW50ZXJwb2xhdGlvbk1ldGhvZCB9CisgICAgICAgICAgICAgICAgLCBtX3N0b3BzIHsgV1RG
TW92ZShzdG9wcykgfQorICAgICAgICAgICAgeworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBDb2xvckludGVycG9sYXRpb25NZXRob2QgbV9jb2xvckludGVycG9sYXRpb25NZXRob2Q7Cisg
ICAgICAgICAgICBWZWN0b3I8Q29sb3JDb252ZXJ0ZWRUb0ludGVycG9sYXRpb25Db2xvclNwYWNl
U3RvcD4gbV9zdG9wczsKKyAgICAgICAgfTsKKworICAgICAgICBSZWY8RGF0YT4gZGF0YTsKKyAg
ICAgICAgUmV0YWluUHRyPENHRnVuY3Rpb25SZWY+IGZ1bmN0aW9uOworICAgICAgICBSZXRhaW5Q
dHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNwYWNlOworICAgIH07CisKKyAgICB1c2luZyBTdHJh
dGVneSA9IHN0ZDo6dmFyaWFudDxHcmFkaWVudCwgU2hhZGluZz47CisKK3ByaXZhdGU6CisgICAg
R3JhZGllbnRDR0FkYXB0b3IoQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb25zdCBXZWJDb3Jl
OjpHcmFkaWVudDo6Q29sb3JTdG9wVmVjdG9yJik7CisKKyAgICBTdHJhdGVneSBwaWNrU3RyYXRl
Z3koQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb25zdCBXZWJDb3JlOjpHcmFkaWVudDo6Q29s
b3JTdG9wVmVjdG9yJikgY29uc3Q7CisgICAgU3RyYXRlZ3kgbWFrZUdyYWRpZW50KENvbG9ySW50
ZXJwb2xhdGlvbk1ldGhvZCwgY29uc3QgV2ViQ29yZTo6R3JhZGllbnQ6OkNvbG9yU3RvcFZlY3Rv
ciYpIGNvbnN0OworICAgIFN0cmF0ZWd5IG1ha2VTaGFkaW5nKENvbG9ySW50ZXJwb2xhdGlvbk1l
dGhvZCwgY29uc3QgV2ViQ29yZTo6R3JhZGllbnQ6OkNvbG9yU3RvcFZlY3RvciYpIGNvbnN0Owor
CisgICAgU3RyYXRlZ3kgbV9zdHJhdGVneTsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlByZWZlcmVuY2VzQ29jb2EubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447580</attachid>
            <date>2021-12-19 21:00:06 -0800</date>
            <delta_ts>2021-12-19 23:02:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234492-20211219210005.patch</filename>
            <type>text/plain</type>
            <size>48828</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVy
aW1lbnRhbC55YW1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNl
cy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCShyZXZpc2lvbiAyODcyMzMpCisrKyBT
b3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwu
eWFtbAkod29ya2luZyBjb3B5KQpAQCAtMjg0LDYgKzI4NCwxOCBAQCBDU1NDdXN0b21Qcm9wZXJ0
aWVzQW5kVmFsdWVzRW5hYmxlZDoKICAgICBXZWJDb3JlOgogICAgICAgZGVmYXVsdDogZmFsc2UK
IAorQ1NTR3JhZGllbnRBbHBoYVByZW11bHRpcGxpZWRJbnRlcnBvbGF0aW9uRW5hYmxlZDoKKyAg
dHlwZTogYm9vbAorICBodW1hblJlYWRhYmxlTmFtZTogIkFscGhhIFByZW11bHRpcGxpZWQgSW50
ZXJwb2xhdGVkIENTUyBHcmFkaWVudHMiCisgIGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbjogIkVu
YWJsZSBhbHBoYSBwcmVtdWx0aXBsaWVkIGludGVycG9sYXRlZCBDU1MgZ3JhZGllbnRzIgorICBk
ZWZhdWx0VmFsdWU6CisgICAgV2ViS2l0TGVnYWN5OgorICAgICAgZGVmYXVsdDogZmFsc2UKKyAg
ICBXZWJLaXQ6CisgICAgICBkZWZhdWx0OiBmYWxzZQorICAgIFdlYkNvcmU6CisgICAgICBkZWZh
dWx0OiBmYWxzZQorCiAjIEZJWE1FOiBUaGlzIGlzIGVuYWJsZWQgd2hlbiBFTkFCTEUoRVhQRVJJ
TUVOVEFMX0ZFQVRVUkVTKSBpcyB0cnVlIGluIFdlYktpdDIuIFBlcmhhcHMgd2Ugc2hvdWxkIGNv
bnNpZGVyIHVzaW5nIHRoYXQgZm9yIFdlYktpdExlZ2FjeSBhcyB3ZWxsLgogQ1NTSW5kaXZpZHVh
bFRyYW5zZm9ybVByb3BlcnRpZXNFbmFibGVkOgogICB0eXBlOiBib29sCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODcyMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwzNSBAQAorMjAyMS0xMi0xOSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0Bh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIENHU2hhZGluZ1JlZiBiYXNlZCBpbXBsZW1lbnRhdGlv
biBvZiBHcmFkaWVudCBhcyBzdGVwcGluZyBzdG9uZSB0b3dhcmQgcHJlbXVsdGlwbGllZCBpbnRl
cnBvbGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzQ0OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbV0lQXSBUaGlzIGNvbXBsZXRlbHkgcmVwbGFjZXMgdGhlIENHR3JhZGllbnRSZWYgaW1wbGVt
ZW50YXRpb24uIFdlIG5lZWQgdG8gbWFrZSB0aGlzCisgICAgICAgIGNvbmRpdGlvbmFsIGZvciBp
dCB0byBiZSByZWFsLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb21wb25l
bnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNvbXBvbmVudHM6OnNpemUgY29uc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpDdXN0b21DR0dyYWRpZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tQ0dH
cmFkaWVudDo6ZnVuY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tQ0dHcmFk
aWVudDo6Y29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkN1c3RvbUNHR3JhZGllbnQ6OnN0b3BzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3Rv
bUNHR3JhZGllbnQ6OkN1c3RvbUNHR3JhZGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYWRpZW50Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dW5wcmVtdWx0aXBsaWVk
U2hhZGluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNHRnVuY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tQ0dHcmFkaWVudDo6aW5pdGlhbGl6ZUZ1bmN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUNHR3JhZGllbnQ6OmNvbG9yU3BhY2UgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6OmNyZWF0ZUN1c3RvbUNHR3JhZGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6ZHJhd0xpbmVhckdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmRy
YXdSYWRpYWxHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpkcmF3Q29uaWNHcmFkaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhZGllbnQ6OmZpbGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6Omhhc09ubHlCb3Vu
ZGVkU1JHQkNvbG9yU3RvcHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3Jh
ZGllbnQ6OmNyZWF0ZUNHR3JhZGllbnQpOiBEZWxldGVkLgorCiAyMDIxLTEyLTE4ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBIYXNoIHRhYmxlcywgcmVhZC93cml0
ZSwgYW5kIGhlYXAgbWVtb3J5IGFyZSB1c2VkIHVubmVjZXNzYXJpbHksIHdoaWNoIG1heSBodXJ0
IHBlcmZvcm1hbmNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtl
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UJKHJl
dmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UJ
KHdvcmtpbmcgY29weSkKQEAgLTEzMSw2ICsxMzEsNyBAQCBlbHNlICgpCiAgICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0Zsb2F0UmVjdENHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9GbG9hdFNpemVDRy5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGll
bnRDRy5jcHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDR0FkYXB0b3Iu
Y3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3Bw
CiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAogICAg
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmNwcApJbmRleDogU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1NYWMuY21ha2UJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtTWFjLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yOTEsNiArMjkxLDcgQEAgbGlzdChB
UFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRSZWN0
Q0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRTaXplQ0cuY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFkaWVudENHQWRhcHRvci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRHTENHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dENHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuY3BwCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM0OCw2ICszNDgsNyBAQCBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9GbG9hdFJlY3RDRy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0U2l6ZUNHLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYWRpZW50Q0dBZGFwdG9yLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0Q0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML0NoYW5n
ZUxvZwkocmV2aXNpb24gMjg3MjQ3KQorKysgU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIxLTEyLTE5ICBTYW0gV2VpbmlnICA8
d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgQ0dTaGFkaW5nUmVmIGJhc2VkIGltcGxl
bWVudGF0aW9uIG9mIEdyYWRpZW50IGFzIHN0ZXBwaW5nIHN0b25lIHRvd2FyZCBwcmVtdWx0aXBs
aWVkIGludGVycG9sYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNDQ5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaDoKKyAgICAgICAgQWRkIENH
U2hhZGluZ1JlZiBTUEkgZm9yIGNyZWF0aW5nIGNvbmljIHNoYWRpbmdzLgorCiAyMDIxLTEyLTE2
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyODcwNTYuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaAkocmV2aXNpb24gMjg3MjMzKQorKysg
U291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dGb250Q2Fj
aGUuaD4KICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dQYXRoUHJpdmF0ZS5oPgogI2luY2x1ZGUg
PENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3NQcml2YXRlLmg+CisjaW5jbHVkZSA8Q29yZUdyYXBo
aWNzL0NHU2hhZGluZ1ByaXZhdGUuaD4KICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dTdHlsZVBy
aXZhdGUuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTMyMyw2ICszMjQsMTYgQEAgdm9pZCBD
R0NvbnRleHRTZXRTdHlsZShDR0NvbnRleHRSZWYsIENHU3R5bGVSZWYpOwogdm9pZCBDR0NvbnRl
eHREcmF3Q29uaWNHcmFkaWVudChDR0NvbnRleHRSZWYsIENHR3JhZGllbnRSZWYsIENHUG9pbnQg
Y2VudGVyLCBDR0Zsb2F0IGFuZ2xlKTsKIHZvaWQgQ0dQYXRoQWRkVW5ldmVuQ29ybmVyc1JvdW5k
ZWRSZWN0KENHTXV0YWJsZVBhdGhSZWYsIGNvbnN0IENHQWZmaW5lVHJhbnNmb3JtICosIENHUmVj
dCwgY29uc3QgQ0dTaXplIGNvcm5lcnNbNF0pOwogYm9vbCBDR0ZvbnRSZW5kZXJpbmdHZXRGb250
U21vb3RoaW5nRGlzYWJsZWQodm9pZCk7CitDR1NoYWRpbmdSZWYgQ0dTaGFkaW5nQ3JlYXRlQ29u
aWMoQ0dDb2xvclNwYWNlUmVmLCBDR1BvaW50IGNlbnRlciwgQ0dGbG9hdCBhbmdsZSwgQ0dGdW5j
dGlvblJlZik7CisKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfR1JBRElFTlRfQ1JFQVRFX1dJVEhf
T1BUSU9OUykKK0NHR3JhZGllbnRSZWYgQ0dHcmFkaWVudENyZWF0ZVdpdGhDb2xvckNvbXBvbmVu
dHNBbmRPcHRpb25zKENHQ29sb3JTcGFjZVJlZiwgY29uc3QgQ0dGbG9hdCosIGNvbnN0IENHRmxv
YXQqLCBzaXplX3QsIENGRGljdGlvbmFyeVJlZik7CitDR0dyYWRpZW50UmVmIENHR3JhZGllbnRD
cmVhdGVXaXRoQ29sb3JzQW5kT3B0aW9ucyhDR0NvbG9yU3BhY2VSZWYsIENGQXJyYXlSZWYsIGNv
bnN0IENHRmxvYXQqLCBDRkRpY3Rpb25hcnlSZWYpOworI2VuZGlmCisKKyNpZiBIQVZFKENPUkVf
R1JBUEhJQ1NfUFJFTVVMVElQTElFRF9JTlRFUlBPTEFUSU9OX0dSQURJRU5UKQorZXh0ZXJuIGNv
bnN0IENGU3RyaW5nUmVmIGtDR0dyYWRpZW50SW50ZXJwb2xhdGVzUHJlbXVsdGlwbGllZDsKKyNl
bmRpZgogCiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI4NzIz
MykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtNDA4MSw2ICs0MDgxLDcgQEAKIAkJQkMxMjRGMDAwQzI2NDQ3QTAw
OUUyMzQ5IC8qIEpTQmFyUHJvcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkMxMjRFRkUwQzI2NDQ3QTAwOUUyMzQ5IC8qIEpTQmFyUHJvcC5oICovOyB9
OwogCQlCQzEyOEE3MzEzN0M4NjdDMDBDQUM4NDUgLyogUmVuZGVyR3JpZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxMjhBNzIxMzdDODY3QzAwQ0FD
ODQ1IC8qIFJlbmRlckdyaWQuaCAqLzsgfTsKIAkJQkMxNDAyOEIwRTgzNjgwODAwMzE5NzE3IC8q
IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzE0MDI4OTBFODM2ODA4MDAzMTk3MTcgLyogU2Nyb2xsYmFyVGhl
bWVDb21wb3NpdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlCQzE5Q0RGMjI3NkZGQzZEMDA1M0Y3MzQgLyogR3JhZGllbnRDR0FkYXB0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMTlDREYwMjc2
RkZCMjYwMDUzRjczNCAvKiBHcmFkaWVudENHQWRhcHRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMUE3RDk4MThGQ0I1QjAwMDQyMTg3OSAv
KiBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxQTdEOTYxOEZDQjVCMDAwNDIxODc5IC8q
IFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmggKi87IH07CiAJCUJDMjI3Mjg3
MEU4MkU3MDcwMEU3Rjk3NSAvKiBTdHlsZVJlZmxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjI3Mjg2MEU4MkU3MDcwMEU3Rjk3NSAvKiBT
dHlsZVJlZmxlY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlCQzIyNzJBMjBFODJFODdDMDBFN0Y5NzUgLyogQ3Vyc29yRGF0YS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyMjcyQTEwRTgyRTg3
QzAwRTdGOTc1IC8qIEN1cnNvckRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMTUxMTMsNiArMTUxMTQsOCBAQAogCQlCQzEyOEIwMDEzN0M4
RDQ2MDBDQUM4NDUgLyogUmVuZGVyR3JpZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZW5kZXJHcmlkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkMxNDAyODgwRTgzNjgwODAwMzE5NzE3IC8qIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbGJhclRoZW1lQ29tcG9z
aXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMxNDAyODkwRTgzNjgwODAw
MzE5NzE3IC8qIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUJDMTlDREVGMjc2RkZCMjYwMDUzRjczNCAvKiBHcmFkaWVudENHQWRhcHRv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFkaWVudENHQWRhcHRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMTlDREYwMjc2RkZCMjYwMDUzRjczNCAvKiBHcmFkaWVu
dENHQWRhcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFkaWVudENHQWRhcHRvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzFBN0Q5NTE4RkNCNUIwMDA0MjE4NzkgLyogUmVuZGVy
TXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzFBN0Q5NjE4RkNCNUIwMDA0MjE4NzkgLyog
UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyMEZCN0UwQzBFOEU2QzAwRDE0NDdGIC8qIEpT
RGVwcmVjYXRlZENTU09NVmFsdWVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTRGVwcmVjYXRlZENTU09NVmFsdWVDdXN0b20uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjg1MzQsNiArMjg1MzcsOCBAQAogCQkJCUIyNzUzNTJDMEIw
NTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RDRy5jcHAgKi8sCiAJCQkJQjI3NTM1MkQwQjA1Mzgx
NDAwMkNFNjRGIC8qIEZsb2F0U2l6ZUNHLmNwcCAqLywKIAkJCQlCQzUzQzYwQTBEQTU2Q0YxMDAy
MUVCNUQgLyogR3JhZGllbnRDRy5jcHAgKi8sCisJCQkJQkMxOUNERUYyNzZGRkIyNjAwNTNGNzM0
IC8qIEdyYWRpZW50Q0dBZGFwdG9yLmNwcCAqLywKKwkJCQlCQzE5Q0RGMDI3NkZGQjI2MDA1M0Y3
MzQgLyogR3JhZGllbnRDR0FkYXB0b3IuaCAqLywKIAkJCQlCMkVEOTc3MDBCMUY1NUNFMDAyNTdE
MEYgLyogR3JhcGhpY3NDb250ZXh0Q0cuY3BwICovLAogCQkJCTkzNDkwN0UzMTI1QkJCQzgwMDdG
MjNBMCAvKiBHcmFwaGljc0NvbnRleHRDRy5oICovLAogCQkJCTZFMjFDNkMxMTEyNjMzOTkwMEE3
QkUwMiAvKiBHcmFwaGljc0NvbnRleHRHTENHLmNwcCAqLywKQEAgLTMzMzA0LDYgKzMzMzA5LDcg
QEAKIAkJCQk4Mzc4ODc4MjI0RDhBNjA5MDAwRDRBNUIgLyogQXVkaW9CdWZmZXJTb3VyY2VPcHRp
b25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA3QzEyQjAyNkY3MDBDMUEzNTkgLyogQXVk
aW9CdXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDdFMTJCMDI2RjcwMEMxQTM1OSAvKiBB
dWRpb0NoYW5uZWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMTlDREYyMjc2RkZDNkQwMDUzRjcz
NCAvKiBHcmFkaWVudENHQWRhcHRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzRUVGM0EyNTc5
OUY4ODAwNjU2M0JCIC8qIEF1ZGlvQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RkQzMTYwMDUxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvQ29udGV4dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTc4NUQ5NjIyNEI3RjczNTAwMTREQjIxIC8qIEF1ZGlvQ29udGV4dExhdGVuY3lDYXRl
Z29yeS5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1BhcnNlckNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VyQ29udGV4dC5jcHAJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
NiwxMCArMTA2LDExIEBAIENTU1BhcnNlckNvbnRleHQ6OkNTU1BhcnNlckNvbnRleHQoY29uc3Qg
RG9jdW1lbnQmIGRvYwogICAgICwgaGFzUHNldWRvQ2xhc3NFbmFibGVkIHsgZG9jdW1lbnQuc2V0
dGluZ3MoKS5oYXNQc2V1ZG9DbGFzc0VuYWJsZWQoKSB9CiAgICAgLCBjYXNjYWRlTGF5ZXJzRW5h
YmxlZCB7IGRvY3VtZW50LnNldHRpbmdzKCkuY3NzQ2FzY2FkZUxheWVyc0VuYWJsZWQoKSB9CiAg
ICAgLCBjb250YWluZXJRdWVyaWVzRW5hYmxlZCB7IGRvY3VtZW50LnNldHRpbmdzKCkuY3NzQ29u
dGFpbmVyUXVlcmllc0VuYWJsZWQoKSB9CisgICAgLCBvdmVyZmxvd0NsaXBFbmFibGVkIHsgZG9j
dW1lbnQuc2V0dGluZ3MoKS5vdmVyZmxvd0NsaXBFbmFibGVkKCkgfQorICAgICwgZ3JhZGllbnRB
bHBoYVByZW11bHRpcGxpZWRJbnRlcnBvbGF0aW9uRW5hYmxlZCB7IGRvY3VtZW50LnNldHRpbmdz
KCkuY3NzR3JhZGllbnRBbHBoYVByZW11bHRpcGxpZWRJbnRlcnBvbGF0aW9uRW5hYmxlZCgpIH0K
ICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgICwgYXR0YWNobWVudEVuYWJsZWQg
eyBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmF0dGFjaG1lbnRFbGVt
ZW50RW5hYmxlZCgpIH0KICNlbmRpZgotICAgICwgb3ZlcmZsb3dDbGlwRW5hYmxlZCB7IGRvY3Vt
ZW50LnNldHRpbmdzKCkub3ZlcmZsb3dDbGlwRW5hYmxlZCgpIH0KIHsKIH0KIApAQCAtMTUzLDEw
ICsxNTQsMTEgQEAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGEsIGNv
bnN0IENTU1BhCiAgICAgICAgICYmIGEuaGFzUHNldWRvQ2xhc3NFbmFibGVkID09IGIuaGFzUHNl
dWRvQ2xhc3NFbmFibGVkCiAgICAgICAgICYmIGEuY2FzY2FkZUxheWVyc0VuYWJsZWQgPT0gYi5j
YXNjYWRlTGF5ZXJzRW5hYmxlZAogICAgICAgICAmJiBhLmNvbnRhaW5lclF1ZXJpZXNFbmFibGVk
ID09IGIuY29udGFpbmVyUXVlcmllc0VuYWJsZWQKKyAgICAgICAgJiYgYS5vdmVyZmxvd0NsaXBF
bmFibGVkID09IGIub3ZlcmZsb3dDbGlwRW5hYmxlZAorICAgICAgICAmJiBhLmdyYWRpZW50QWxw
aGFQcmVtdWx0aXBsaWVkSW50ZXJwb2xhdGlvbkVuYWJsZWQgPT0gYi5ncmFkaWVudEFscGhhUHJl
bXVsdGlwbGllZEludGVycG9sYXRpb25FbmFibGVkCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxF
TUVOVCkKICAgICAgICAgJiYgYS5hdHRhY2htZW50RW5hYmxlZCA9PSBiLmF0dGFjaG1lbnRFbmFi
bGVkCiAjZW5kaWYKLSAgICAgICAgJiYgYS5vdmVyZmxvd0NsaXBFbmFibGVkID09IGIub3ZlcmZs
b3dDbGlwRW5hYmxlZAogICAgIDsKIH0KIApAQCAtMTkzLDEyICsxOTUsMTMgQEAgdm9pZCBhZGQo
SGFzaGVyJiBoYXNoZXIsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRlCiAgICAgICAgIHwg
Y29udGV4dC5oYXNQc2V1ZG9DbGFzc0VuYWJsZWQgICAgICAgICAgICAgICAgICAgICA8PCAyMgog
ICAgICAgICB8IGNvbnRleHQuY2FzY2FkZUxheWVyc0VuYWJsZWQgICAgICAgICAgICAgICAgICAg
ICAgPDwgMjMKICAgICAgICAgfCBjb250ZXh0LmNvbnRhaW5lclF1ZXJpZXNFbmFibGVkICAgICAg
ICAgICAgICAgICAgIDw8IDI0CisgICAgICAgIHwgY29udGV4dC5vdmVyZmxvd0NsaXBFbmFibGVk
ICAgICAgICAgICAgICAgICAgICAgICA8PCAyNQorICAgICAgICB8IGNvbnRleHQuZ3JhZGllbnRB
bHBoYVByZW11bHRpcGxpZWRJbnRlcnBvbGF0aW9uRW5hYmxlZCA8PCAyNgogI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgICAgIHwgY29udGV4dC5hdHRhY2htZW50RW5hYmxlZCAg
ICAgICAgICAgICAgICAgICAgICAgICA8PCAyNQorICAgICAgICB8IGNvbnRleHQuYXR0YWNobWVu
dEVuYWJsZWQgICAgICAgICAgICAgICAgICAgICAgICAgPDwgMjcKICNlbmRpZgotICAgICAgICB8
IGNvbnRleHQub3ZlcmZsb3dDbGlwRW5hYmxlZCAgICAgICAgICAgICAgICAgICAgICAgPDwgMjYK
LSAgICAgICAgfCBjb250ZXh0LmFjY2VudENvbG9yRW5hYmxlZCAgICAgICAgICAgICAgICAgICAg
ICAgIDw8IDI3Ci0gICAgICAgIHwgY29udGV4dC5tb2RlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8PCAyODsgLy8gVGhpcyBpcyBtdWx0aXBsZSBiaXRzLCBzbyBrZWVwIGl0
IGxhc3QuCisgICAgICAgIHwgY29udGV4dC5hY2NlbnRDb2xvckVuYWJsZWQgICAgICAgICAgICAg
ICAgICAgICAgICA8PCAyOAorICAgICAgICB8IGNvbnRleHQubW9kZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPDwgMjk7IC8vIFRoaXMgaXMgbXVsdGlwbGUgYml0cywgc28g
a2VlcCBpdCBsYXN0LgogICAgIGFkZChoYXNoZXIsIGNvbnRleHQuYmFzZVVSTCwgY29udGV4dC5j
aGFyc2V0LCBiaXRzKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
YXJzZXJDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXJDb250ZXh0LmgJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSwxMyArODUs
MTMgQEAgc3RydWN0IENTU1BhcnNlckNvbnRleHQgewogICAgIGJvb2wgaGFzUHNldWRvQ2xhc3NF
bmFibGVkIHsgZmFsc2UgfTsKICAgICBib29sIGNhc2NhZGVMYXllcnNFbmFibGVkIHsgZmFsc2Ug
fTsKICAgICBib29sIGNvbnRhaW5lclF1ZXJpZXNFbmFibGVkIHsgZmFsc2UgfTsKKyAgICBib29s
IG92ZXJmbG93Q2xpcEVuYWJsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgZ3JhZGllbnRBbHBoYVBy
ZW11bHRpcGxpZWRJbnRlcnBvbGF0aW9uRW5hYmxlZCB7IGZhbHNlIH07CiAKICAgICAvLyBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzLgogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAg
Ym9vbCBhdHRhY2htZW50RW5hYmxlZCB7IGZhbHNlIH07CiAjZW5kaWYKLQotICAgIGJvb2wgb3Zl
cmZsb3dDbGlwRW5hYmxlZCB7IGZhbHNlIH07CiAKICAgICBDU1NQYXJzZXJDb250ZXh0KENTU1Bh
cnNlck1vZGUsIGNvbnN0IFVSTCYgYmFzZVVSTCA9IFVSTCgpKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBDU1NQYXJzZXJDb250ZXh0KGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJMJiBiYXNlVVJMID0g
VVJMKCksIGNvbnN0IFN0cmluZyYgY2hhcnNldCA9IGVtcHR5U3RyaW5nKCkpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzLmNwcAkocmV2aXNpb24gMjg3MjMzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTQ2LDE1ICsy
OTQ2LDIwIEBAIHN0YXRpYyBib29sIGNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnRDb2xvclN0b3Ao
Q1NTUGFycwogICAgIHJldHVybiBzdG9wLmNvbG9yICYmIGFyZ3MuYXRFbmQoKTsKIH0KIAorc3Rh
dGljIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZ3JhZGllbnRBbHBoYVByZW11bHRpcGxpY2F0aW9u
KGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgcmV0dXJuIGNvbnRleHQu
Z3JhZGllbnRBbHBoYVByZW11bHRpcGxpZWRJbnRlcnBvbGF0aW9uRW5hYmxlZCA/IEFscGhhUHJl
bXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQgOiBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpV
bnByZW11bHRpcGxpZWQ7Cit9CisKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVEZXBy
ZWNhdGVkR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2Vy
Q29udGV4dCYgY29udGV4dCkKIHsKICAgICBSZWZQdHI8Q1NTR3JhZGllbnRWYWx1ZT4gcmVzdWx0
OwogICAgIENTU1ZhbHVlSUQgaWQgPSBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCku
aWQoKTsKICAgICBib29sIGlzRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50ID0gKGlkID09IENTU1Zh
bHVlUmFkaWFsKTsKICAgICBpZiAoaXNEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQpCi0gICAgICAg
IHJlc3VsdCA9IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZShOb25SZXBlYXRpbmcsIENT
U0RlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudCwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNS
R0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CisgICAg
ICAgIHJlc3VsdCA9IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZShOb25SZXBlYXRpbmcs
IENTU0RlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudCwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6
OlNSR0IgeyB9LCBncmFkaWVudEFscGhhUHJlbXVsdGlwbGljYXRpb24oY29udGV4dCkgfSk7CiAg
ICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVMaW5lYXIpCi0gICAgICAgIHJlc3VsdCA9IENTU0xp
bmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZShOb25SZXBlYXRpbmcsIENTU0RlcHJlY2F0ZWRMaW5l
YXJHcmFkaWVudCwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CisgICAgICAgIHJlc3VsdCA9IENT
U0xpbmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZShOb25SZXBlYXRpbmcsIENTU0RlcHJlY2F0ZWRM
aW5lYXJHcmFkaWVudCwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBncmFk
aWVudEFscGhhUHJlbXVsdGlwbGljYXRpb24oY29udGV4dCkgfSk7CiAgICAgaWYgKCFyZXN1bHQg
fHwgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCkBAIC0zMDU0LDcgKzMwNTksNyBAQCBzdGF0aWMgYm9vbCBjb25zdW1lR3Jh
ZGllbnRDb2xvclN0b3BzKENTU1BhcnNlclRva2VuUmEKIAogc3RhdGljIFJlZlB0cjxDU1NWYWx1
ZT4gY29uc3VtZURlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBh
cmdzLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBDU1NHcmFkaWVudFJlcGVhdCBy
ZXBlYXRpbmcpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpj
cmVhdGUocmVwZWF0aW5nLCBDU1NQcmVmaXhlZFJhZGlhbEdyYWRpZW50LCB7IENvbG9ySW50ZXJw
b2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVs
dGlwbGllZCB9KTsKKyAgICBhdXRvIHJlc3VsdCA9IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNy
ZWF0ZShyZXBlYXRpbmcsIENTU1ByZWZpeGVkUmFkaWFsR3JhZGllbnQsIHsgQ29sb3JJbnRlcnBv
bGF0aW9uTWV0aG9kOjpTUkdCIHsgfSwgZ3JhZGllbnRBbHBoYVByZW11bHRpcGxpY2F0aW9uKGNv
bnRleHQpIH0pOwogCiAgICAgYXV0byBjZW50ZXJDb29yZGluYXRlID0gY29uc3VtZU9uZU9yVHdv
VmFsdWVkUG9zaXRpb25Db29yZGluYXRlcyhhcmdzLCBjb250ZXh0Lm1vZGUsIFVuaXRsZXNzUXVp
cms6OkZvcmJpZCk7CiAgICAgaWYgKGNlbnRlckNvb3JkaW5hdGUgJiYgIWNvbnN1bWVDb21tYUlu
Y2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCkBAIC0zMDk4LDcgKzMxMDMsNyBAQCBzdGF0aWMgUmVm
UHRyPENTU1ZhbHVlPiBjb25zdW1lRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW4KIAogc3RhdGljIFJl
ZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVJhZGlhbEdyYWRpZW50KENTU1BhcnNlclRva2VuUmFuZ2Um
IGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIENTU0dyYWRpZW50UmVwZWF0
IHJlcGVhdGluZykKIHsKLSAgICBSZWZQdHI8Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZT4gcmVzdWx0
ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGluZywgQ1NTUmFkaWFsR3Jh
ZGllbnQsIHsgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCIHsgfSwgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkIH0pOworICAgIFJlZlB0cjxDU1NSYWRpYWxHcmFk
aWVudFZhbHVlPiByZXN1bHQgPSBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGUocmVwZWF0
aW5nLCBDU1NSYWRpYWxHcmFkaWVudCwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0Ig
eyB9LCBncmFkaWVudEFscGhhUHJlbXVsdGlwbGljYXRpb24oY29udGV4dCkgfSk7CiAKICAgICBS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNoYXBlOwogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gc2l6ZUtleXdvcmQ7CkBAIC0zMTg2LDcgKzMxOTEsNyBAQCBzdGF0aWMgUmVmUHRyPENT
U1ZhbHVlPiBjb25zdW1lUmFkaWFsR3JhZGllbnQoQ1NTUGFyc2UKIAogc3RhdGljIFJlZlB0cjxD
U1NWYWx1ZT4gY29uc3VtZUxpbmVhckdyYWRpZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3Ms
IGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIENTU0dyYWRpZW50UmVwZWF0IHJlcGVh
dGluZywgQ1NTR3JhZGllbnRUeXBlIGdyYWRpZW50VHlwZSkKIHsKLSAgICBSZWZQdHI8Q1NTTGlu
ZWFyR3JhZGllbnRWYWx1ZT4gcmVzdWx0ID0gQ1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRl
KHJlcGVhdGluZywgZ3JhZGllbnRUeXBlLCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JH
QiB7IH0sIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKKyAgICBS
ZWZQdHI8Q1NTTGluZWFyR3JhZGllbnRWYWx1ZT4gcmVzdWx0ID0gQ1NTTGluZWFyR3JhZGllbnRW
YWx1ZTo6Y3JlYXRlKHJlcGVhdGluZywgZ3JhZGllbnRUeXBlLCB7IENvbG9ySW50ZXJwb2xhdGlv
bk1ldGhvZDo6U1JHQiB7IH0sIGdyYWRpZW50QWxwaGFQcmVtdWx0aXBsaWNhdGlvbihjb250ZXh0
KSB9KTsKIAogICAgIGJvb2wgZXhwZWN0Q29tbWEgPSB0cnVlOwogICAgIFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gYW5nbGUgPSBjb25zdW1lQW5nbGUoYXJncywgY29udGV4dC5tb2RlLCBVbml0
bGVzc1F1aXJrOjpGb3JiaWQsIFVuaXRsZXNzWmVyb1F1aXJrOjpBbGxvdyk7CkBAIC0zMjIwLDcg
KzMyMjUsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lTGluZWFyR3JhZGllbnQo
Q1NTUGFyc2UKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVDb25pY0dyYWRpZW50KENT
U1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQs
IENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdGluZykKIHsKICNpZiBFTkFCTEUoQ1NTX0NPTklDX0dS
QURJRU5UUykKLSAgICBSZWZQdHI8Q1NTQ29uaWNHcmFkaWVudFZhbHVlPiByZXN1bHQgPSBDU1ND
b25pY0dyYWRpZW50VmFsdWU6OmNyZWF0ZShyZXBlYXRpbmcsIHsgQ29sb3JJbnRlcnBvbGF0aW9u
TWV0aG9kOjpTUkdCIHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVk
IH0pOworICAgIFJlZlB0cjxDU1NDb25pY0dyYWRpZW50VmFsdWU+IHJlc3VsdCA9IENTU0Nvbmlj
R3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGluZywgeyBDb2xvckludGVycG9sYXRpb25NZXRo
b2Q6OlNSR0IgeyB9LCBncmFkaWVudEFscGhhUHJlbXVsdGlwbGljYXRpb24oY29udGV4dCkgfSk7
CiAKICAgICBib29sIGV4cGVjdENvbW1hID0gZmFsc2U7CiAgICAgaWYgKGFyZ3MucGVlaygpLnR5
cGUoKSA9PSBJZGVudFRva2VuKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvckNvbXBvbmVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvckNvbXBvbmVudHMuaAkocmV2aXNpb24gMjg3MjMzKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb21wb25lbnRzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY4LDYgKzY4LDggQEAgc3RydWN0IENvbG9yQ29tcG9uZW50cyB7CiAgICAgdGVt
cGxhdGU8c2l6ZV90IFN0YXJ0LCBzaXplX3QgRW5kPgogICAgIGNvbnN0ZXhwciBDb2xvckNvbXBv
bmVudHM8VCwgRW5kIC0gU3RhcnQ+IHN1YnNldCgpIGNvbnN0OwogCisgICAgY29uc3RleHByIHNp
emVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gU2l6ZTsgfQorCiAgICAgc3RkOjphcnJheTxULCBO
PiBjb21wb25lbnRzOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhZGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYWRpZW50LmNwcAkocmV2aXNpb24gMjg3MjMzKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICsz
MiwxMCBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hlci5oPgogCisjaWYgVVNFKENHKQorI2luY2x1ZGUgIkdyYWRpZW50Q0dBZGFwdG9yLmgiCisj
ZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZWY8R3JhZGllbnQ+IEdyYWRpZW50Ojpj
cmVhdGUoRGF0YSYmIGRhdGEsIENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBjb2xvckludGVycG9s
YXRpb25NZXRob2QpCkBAIC00NCw2ICs0OCw4IEBAIEdyYWRpZW50OjpHcmFkaWVudChEYXRhJiYg
ZGF0YSwgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aAogICAgICwgbV9jb2xvckludGVycG9sYXRpb25N
ZXRob2QgeyBjb2xvckludGVycG9sYXRpb25NZXRob2QgfQogewogfQorCitHcmFkaWVudDo6fkdy
YWRpZW50KCkgPSBkZWZhdWx0OwogCiB2b2lkIEdyYWRpZW50OjphZGp1c3RQYXJhbWV0ZXJzRm9y
VGlsZWREcmF3aW5nKEZsb2F0U2l6ZSYgc2l6ZSwgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFkaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYWRpZW50LmgJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDE3ICszNSwx
MiBAQAogI2luY2x1ZGUgPHZhcmlhbnQ+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi0jaWYg
VVNFKENHKQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNlbmRpZgotCiAjaWYgVVNFKERJ
UkVDVDJEKQogI2luY2x1ZGUgIkNPTVB0ci5oIgogI2VuZGlmCiAKICNpZiBVU0UoQ0cpCiB0eXBl
ZGVmIHN0cnVjdCBDR0NvbnRleHQqIENHQ29udGV4dFJlZjsKLXR5cGVkZWYgc3RydWN0IENHR3Jh
ZGllbnQqIENHR3JhZGllbnRSZWY7CiAjZW5kaWYKIAogI2lmIFVTRShESVJFQ1QyRCkKQEAgLTYy
LDYgKzU3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3Mg
R3JhcGhpY3NDb250ZXh0OwogCitjbGFzcyBHcmFkaWVudENHQWRhcHRvcjsKKwogY2xhc3MgR3Jh
ZGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmFkaWVudD4gewogcHVibGljOgogICAgIHN0cnVj
dCBDb2xvclN0b3AgewpAQCAtMTA0LDYgKzEwMSw3IEBAIGNsYXNzIEdyYWRpZW50IDogcHVibGlj
IFJlZkNvdW50ZWQ8R3JhZGllbnQ+IHsgKHB1YmxpYwogICAgIHVzaW5nIERhdGEgPSBzdGQ6OnZh
cmlhbnQ8TGluZWFyRGF0YSwgUmFkaWFsRGF0YSwgQ29uaWNEYXRhPjsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8R3JhZGllbnQ+IGNyZWF0ZShEYXRhJiYsIENvbG9ySW50ZXJwb2xh
dGlvbk1ldGhvZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgfkdyYWRpZW50KCk7CiAKICAgICBib29s
IGlzWmVyb1NpemUoKSBjb25zdDsKIApAQCAtMTQ0LDExICsxNDIsNiBAQCBjbGFzcyBHcmFkaWVu
dCA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYWRpZW50PiB7IChwdWJsaWMKICAgICB2b2lkIHNvcnRT
dG9wcygpIGNvbnN0OwogICAgIHZvaWQgc3RvcHNDaGFuZ2VkKCk7CiAKLSNpZiBVU0UoQ0cpCi0g
ICAgdm9pZCBjcmVhdGVDR0dyYWRpZW50KCk7Ci0gICAgYm9vbCBoYXNPbmx5Qm91bmRlZFNSR0JD
b2xvclN0b3BzKCkgY29uc3Q7Ci0jZW5kaWYKLQogICAgIERhdGEgbV9kYXRhOwogICAgIENvbG9y
SW50ZXJwb2xhdGlvbk1ldGhvZCBtX2NvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDsKICAgICBtdXRh
YmxlIENvbG9yU3RvcFZlY3RvciBtX3N0b3BzOwpAQCAtMTU3LDcgKzE1MCw3IEBAIGNsYXNzIEdy
YWRpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8R3JhZGllbnQ+IHsgKHB1YmxpYwogICAgIG11dGFi
bGUgdW5zaWduZWQgbV9jYWNoZWRIYXNoIHsgMCB9OwogCiAjaWYgVVNFKENHKQotICAgIFJldGFp
blB0cjxDR0dyYWRpZW50UmVmPiBtX2dyYWRpZW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFk
aWVudENHQWRhcHRvcj4gbV9ncmFkaWVudDsKICNlbmRpZgogCiAjaWYgVVNFKERJUkVDVDJEKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGll
bnRDRy5jcHAJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw5ICsyOSw5IEBA
CiAKICNpZiBVU0UoQ0cpCiAKKyNpbmNsdWRlICJHcmFkaWVudENHQWRhcHRvci5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhp
Y3NTUEkuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtNDAsNjEgKzQwLDYgQEAgdm9pZCBHcmFkaWVudDo6c3RvcHNDaGFuZ2VkKCkKICAg
ICBtX2dyYWRpZW50ID0gbnVsbHB0cjsKIH0KIAotYm9vbCBHcmFkaWVudDo6aGFzT25seUJvdW5k
ZWRTUkdCQ29sb3JTdG9wcygpIGNvbnN0Ci17Ci0gICAgZm9yIChjb25zdCBhdXRvJiBzdG9wIDog
bV9zdG9wcykgewotICAgICAgICBpZiAoc3RvcC5jb2xvci5jb2xvclNwYWNlKCkgIT0gQ29sb3JT
cGFjZTo6U1JHQikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLXZvaWQgR3JhZGllbnQ6OmNyZWF0ZUNHR3JhZGllbnQoKQotewotICAgIHNv
cnRTdG9wcygpOwotCi0gICAgdW5zaWduZWQgbnVtU3RvcHMgPSBtX3N0b3BzLnNpemUoKTsKLQot
ICAgIGNvbnN0IGludCByZXNlcnZlZFN0b3BzID0gMzsKLSAgICBWZWN0b3I8Q0dGbG9hdCwgcmVz
ZXJ2ZWRTdG9wcz4gbG9jYXRpb25zOwotICAgIGxvY2F0aW9ucy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KG51bVN0b3BzKTsKLQotICAgIC8vIElmIGFsbCB0aGUgc3RvcHMgYXJlIGJvdW5kZWQgc1JH
QiAoYXMgcmVwcmVzZW50ZWQgYnkgdGhlIGNvbG9yIGhhdmluZyB0aGUgY29sb3Igc3BhY2UKLSAg
ICAvLyBDb2xvclNwYWNlOjpTUkdCKSwgaXQgaXMgZmFzdGVyIHRvIGNyZWF0ZSBhIGdyYWRpZW50
IHVzaW5nIGNvbXBvbmVudHMgdGhhbiBDR0NvbG9ycy4KLSAgICBpZiAoaGFzT25seUJvdW5kZWRT
UkdCQ29sb3JTdG9wcygpKSB7Ci0gICAgICAgIFZlY3RvcjxDR0Zsb2F0LCA0ICogcmVzZXJ2ZWRT
dG9wcz4gY29sb3JDb21wb25lbnRzOwotICAgICAgICBjb2xvckNvbXBvbmVudHMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShudW1TdG9wcyAqIDQpOwotCi0gICAgICAgIGZvciAoY29uc3QgYXV0byYg
c3RvcCA6IG1fc3RvcHMpIHsKLSAgICAgICAgICAgIGF1dG8gW2NvbG9yU3BhY2UsIGNvbXBvbmVu
dHNdID0gc3RvcC5jb2xvci5jb2xvclNwYWNlQW5kQ29tcG9uZW50cygpOwotICAgICAgICAgICAg
YXV0byBbciwgZywgYiwgYV0gPSBjb21wb25lbnRzOwotICAgICAgICAgICAgY29sb3JDb21wb25l
bnRzLnVuY2hlY2tlZEFwcGVuZChyKTsKLSAgICAgICAgICAgIGNvbG9yQ29tcG9uZW50cy51bmNo
ZWNrZWRBcHBlbmQoZyk7Ci0gICAgICAgICAgICBjb2xvckNvbXBvbmVudHMudW5jaGVja2VkQXBw
ZW5kKGIpOwotICAgICAgICAgICAgY29sb3JDb21wb25lbnRzLnVuY2hlY2tlZEFwcGVuZChhKTsK
LQotICAgICAgICAgICAgbG9jYXRpb25zLnVuY2hlY2tlZEFwcGVuZChzdG9wLm9mZnNldCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBtX2dyYWRpZW50ID0gYWRvcHRDRihDR0dyYWRpZW50Q3JlYXRl
V2l0aENvbG9yQ29tcG9uZW50cyhzUkdCQ29sb3JTcGFjZVJlZigpLCBjb2xvckNvbXBvbmVudHMu
ZGF0YSgpLCBsb2NhdGlvbnMuZGF0YSgpLCBudW1TdG9wcykpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgYXV0byBjb2xvcnNBcnJheSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFi
bGUoMCwgbV9zdG9wcy5zaXplKCksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKLSAgICBmb3Ig
KGNvbnN0IGF1dG8mIHN0b3AgOiBtX3N0b3BzKSB7Ci0gICAgICAgIENGQXJyYXlBcHBlbmRWYWx1
ZShjb2xvcnNBcnJheS5nZXQoKSwgY2FjaGVkQ0dDb2xvcihzdG9wLmNvbG9yKS5nZXQoKSk7Ci0g
ICAgICAgIGxvY2F0aW9ucy51bmNoZWNrZWRBcHBlbmQoc3RvcC5vZmZzZXQpOwotICAgIH0KLQot
I2lmIEhBVkUoQ09SRV9HUkFQSElDU19FWFRFTkRFRF9TUkdCX0NPTE9SX1NQQUNFKQotICAgIGF1
dG8gZXh0ZW5kZWRDb2xvcnNHcmFkaWVudENvbG9yU3BhY2UgPSBleHRlbmRlZFNSR0JDb2xvclNw
YWNlUmVmKCk7Ci0jZWxzZQotICAgIGF1dG8gZXh0ZW5kZWRDb2xvcnNHcmFkaWVudENvbG9yU3Bh
Y2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOwotI2VuZGlmCi0KLSAgICBtX2dyYWRpZW50ID0gYWRv
cHRDRihDR0dyYWRpZW50Q3JlYXRlV2l0aENvbG9ycyhleHRlbmRlZENvbG9yc0dyYWRpZW50Q29s
b3JTcGFjZSwgY29sb3JzQXJyYXkuZ2V0KCksIGxvY2F0aW9ucy5kYXRhKCkpKTsKLX0KLQogdm9p
ZCBHcmFkaWVudDo6ZmlsbChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCkKIHsKICAgICBjb250ZXh0LmNsaXAocmVjdCk7CkBAIC0xMDgsMTggKzUzLDE4IEBA
IHZvaWQgR3JhZGllbnQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIAogdm9pZCBH
cmFkaWVudDo6cGFpbnQoQ0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dCkKIHsKLSAgICBDR0dy
YWRpZW50RHJhd2luZ09wdGlvbnMgZXh0ZW5kT3B0aW9ucyA9IGtDR0dyYWRpZW50RHJhd3NCZWZv
cmVTdGFydExvY2F0aW9uIHwga0NHR3JhZGllbnREcmF3c0FmdGVyRW5kTG9jYXRpb247CisgICAg
aWYgKCFtX2dyYWRpZW50KSB7CisgICAgICAgIHNvcnRTdG9wcygpOworICAgICAgICBtX2dyYWRp
ZW50ID0gR3JhZGllbnRDR0FkYXB0b3I6OmNyZWF0ZShtX2NvbG9ySW50ZXJwb2xhdGlvbk1ldGhv
ZCwgbV9zdG9wcyk7CisgICAgfQogCi0gICAgaWYgKCFtX2dyYWRpZW50KQotICAgICAgICBjcmVh
dGVDR0dyYWRpZW50KCk7Ci0KICAgICBXVEY6OnN3aXRjaE9uKG1fZGF0YSwKICAgICAgICAgWyZd
IChjb25zdCBMaW5lYXJEYXRhJiBkYXRhKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKG1fc3ByZWFk
TWV0aG9kKSB7CiAgICAgICAgICAgICBjYXNlIEdyYWRpZW50U3ByZWFkTWV0aG9kOjpSZXBlYXQ6
CiAgICAgICAgICAgICBjYXNlIEdyYWRpZW50U3ByZWFkTWV0aG9kOjpSZWZsZWN0OiB7CiAgICAg
ICAgICAgICAgICAgQ0dDb250ZXh0U3RhdGVTYXZlciBzYXZlU3RhdGUocGxhdGZvcm1Db250ZXh0
KTsKLSAgICAgICAgICAgICAgICBleHRlbmRPcHRpb25zID0gMDsKKyAgICAgICAgICAgICAgICBD
R0dyYWRpZW50RHJhd2luZ09wdGlvbnMgZXh0ZW5kT3B0aW9ucyA9IDA7CiAKICAgICAgICAgICAg
ICAgICBGbG9hdFBvaW50IGdyYWRpZW50VmVjdG9yTm9ybShkYXRhLnBvaW50MSAtIGRhdGEucG9p
bnQwKTsKICAgICAgICAgICAgICAgICBncmFkaWVudFZlY3Rvck5vcm0ubm9ybWFsaXplKCk7CkBA
IC0xNDMsNyArODgsNyBAQCB2b2lkIEdyYWRpZW50OjpwYWludChDR0NvbnRleHRSZWYgcGxhdGZv
cm1Db250ZXh0KQogICAgICAgICAgICAgICAgICAgICBDR1BvaW50IGxlZnQgPSBDR1BvaW50TWFr
ZShmbGlwID8gZW5kIDogc3RhcnQsIDApOwogICAgICAgICAgICAgICAgICAgICBDR1BvaW50IHJp
Z2h0ID0gQ0dQb2ludE1ha2UoZmxpcCA/IHN0YXJ0IDogZW5kLCAwKTsKIAotICAgICAgICAgICAg
ICAgICAgICBDR0NvbnRleHREcmF3TGluZWFyR3JhZGllbnQocGxhdGZvcm1Db250ZXh0LCBtX2dy
YWRpZW50LmdldCgpLCBsZWZ0LCByaWdodCwgZXh0ZW5kT3B0aW9ucyk7CisgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhZGllbnQtPmRyYXdMaW5lYXJHcmFkaWVudChwbGF0Zm9ybUNvbnRleHQsIGxl
ZnQsIHJpZ2h0LCBleHRlbmRPcHRpb25zKTsKICAgICAgICAgICAgICAgICB9OwogCiAgICAgICAg
ICAgICAgICAgYXV0byBpc0xlZnRPZiA9IFtdKENHRmxvYXQgc3RhcnQsIENHRmxvYXQgZW5kLCBD
R1JlY3QgYm91bmRpbmdCb3gpIC0+IGJvb2wgewpAQCAtMTg5LDEyICsxMzQsMTQgQEAgdm9pZCBH
cmFkaWVudDo6cGFpbnQoQ0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dCkKICAgICAgICAgICAg
ICAgICAgICAgZHJhd0xpbmVhckdyYWRpZW50KGVuZCAtIGR4LCBlbmQsIGZsaXApOwogICAgICAg
ICAgICAgICAgICAgICBmbGlwID0gIWZsaXAgJiYgbV9zcHJlYWRNZXRob2QgPT0gR3JhZGllbnRT
cHJlYWRNZXRob2Q6OlJlZmxlY3Q7CiAgICAgICAgICAgICAgICAgfQotCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlIEdyYWRpZW50U3ByZWFk
TWV0aG9kOjpQYWQ6Ci0gICAgICAgICAgICAgICAgQ0dDb250ZXh0RHJhd0xpbmVhckdyYWRpZW50
KHBsYXRmb3JtQ29udGV4dCwgbV9ncmFkaWVudC5nZXQoKSwgZGF0YS5wb2ludDAsIGRhdGEucG9p
bnQxLCBleHRlbmRPcHRpb25zKTsKKyAgICAgICAgICAgIGNhc2UgR3JhZGllbnRTcHJlYWRNZXRo
b2Q6OlBhZDogeworICAgICAgICAgICAgICAgIENHR3JhZGllbnREcmF3aW5nT3B0aW9ucyBleHRl
bmRPcHRpb25zID0ga0NHR3JhZGllbnREcmF3c0JlZm9yZVN0YXJ0TG9jYXRpb24gfCBrQ0dHcmFk
aWVudERyYXdzQWZ0ZXJFbmRMb2NhdGlvbjsKKyAgICAgICAgICAgICAgICBtX2dyYWRpZW50LT5k
cmF3TGluZWFyR3JhZGllbnQocGxhdGZvcm1Db250ZXh0LCBkYXRhLnBvaW50MCwgZGF0YS5wb2lu
dDEsIGV4dGVuZE9wdGlvbnMpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQogICAgICAgICB9LAogICAgICAgICBbJl0gKGNvbnN0IFJhZGlhbERh
dGEmIGRhdGEpIHsKICAgICAgICAgICAgIGJvb2wgbmVlZFNjYWxpbmcgPSBkYXRhLmFzcGVjdFJh
dGlvICE9IDE7CkBAIC0yMDgsNyArMTU1LDggQEAgdm9pZCBHcmFkaWVudDo6cGFpbnQoQ0dDb250
ZXh0UmVmIHBsYXRmb3JtQ29udGV4dCkKICAgICAgICAgICAgICAgICBDR0NvbnRleHRUcmFuc2xh
dGVDVE0ocGxhdGZvcm1Db250ZXh0LCAtZGF0YS5wb2ludDAueCgpLCAtZGF0YS5wb2ludDAueSgp
KTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgQ0dDb250ZXh0RHJhd1JhZGlhbEdyYWRp
ZW50KHBsYXRmb3JtQ29udGV4dCwgbV9ncmFkaWVudC5nZXQoKSwgZGF0YS5wb2ludDAsIGRhdGEu
c3RhcnRSYWRpdXMsIGRhdGEucG9pbnQxLCBkYXRhLmVuZFJhZGl1cywgZXh0ZW5kT3B0aW9ucyk7
CisgICAgICAgICAgICBDR0dyYWRpZW50RHJhd2luZ09wdGlvbnMgZXh0ZW5kT3B0aW9ucyA9IGtD
R0dyYWRpZW50RHJhd3NCZWZvcmVTdGFydExvY2F0aW9uIHwga0NHR3JhZGllbnREcmF3c0FmdGVy
RW5kTG9jYXRpb247CisgICAgICAgICAgICBtX2dyYWRpZW50LT5kcmF3UmFkaWFsR3JhZGllbnQo
cGxhdGZvcm1Db250ZXh0LCBkYXRhLnBvaW50MCwgZGF0YS5zdGFydFJhZGl1cywgZGF0YS5wb2lu
dDEsIGRhdGEuZW5kUmFkaXVzLCBleHRlbmRPcHRpb25zKTsKIAogICAgICAgICAgICAgaWYgKG5l
ZWRTY2FsaW5nKQogICAgICAgICAgICAgICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUocGxhdGZv
cm1Db250ZXh0KTsKQEAgLTIyMSw3ICsxNjksNyBAQCB2b2lkIEdyYWRpZW50OjpwYWludChDR0Nv
bnRleHRSZWYgcGxhdGZvcm1Db250ZXh0KQogICAgICAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRl
Q1RNKHBsYXRmb3JtQ29udGV4dCwgZGF0YS5wb2ludDAueCgpLCBkYXRhLnBvaW50MC55KCkpOwog
ICAgICAgICAgICAgQ0dDb250ZXh0Um90YXRlQ1RNKHBsYXRmb3JtQ29udGV4dCwgKENHRmxvYXQp
LU1fUElfMik7CiAgICAgICAgICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0ocGxhdGZvcm1Db250
ZXh0LCAtZGF0YS5wb2ludDAueCgpLCAtZGF0YS5wb2ludDAueSgpKTsKLSAgICAgICAgICAgIENH
Q29udGV4dERyYXdDb25pY0dyYWRpZW50KHBsYXRmb3JtQ29udGV4dCwgbV9ncmFkaWVudC5nZXQo
KSwgZGF0YS5wb2ludDAsIGRhdGEuYW5nbGVSYWRpYW5zKTsKKyAgICAgICAgICAgIG1fZ3JhZGll
bnQtPmRyYXdDb25pY0dyYWRpZW50KHBsYXRmb3JtQ29udGV4dCwgZGF0YS5wb2ludDAsIGRhdGEu
YW5nbGVSYWRpYW5zKTsKICAgICAgICAgICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUocGxhdGZv
cm1Db250ZXh0KTsKICNlbHNlCiAgICAgICAgICAgICBVTlVTRURfUEFSQU0oZGF0YSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENHQWRhcHRvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
ZGllbnRDR0FkYXB0b3IuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0dBZGFwdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDM0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdyYWRp
ZW50Q0dBZGFwdG9yLmgiCisKKyNpbmNsdWRlICJDb2xvckludGVycG9sYXRpb24uaCIKKyNpbmNs
dWRlICJDb2xvclNwYWNlQ0cuaCIKKyNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQ
SS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEludGVycG9s
YXRpb25TcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBhbHBoYVByZW11bHRpcGxpY2F0aW9u
Pgorc3RhdGljIHZvaWQgc2hhZGluZ0Z1bmN0aW9uKHZvaWQqIGluZm8sIGNvbnN0IENHRmxvYXQq
IGluLCBDR0Zsb2F0KiBvdXQpCit7CisgICAgdXNpbmcgSW50ZXJwb2xhdGlvblNwYWNlQ29sb3JU
eXBlID0gdHlwZW5hbWUgSW50ZXJwb2xhdGlvblNwYWNlOjpDb2xvclR5cGU7CisjaWYgSEFWRShD
T1JFX0dSQVBISUNTX0VYVEVOREVEX1NSR0JfQ09MT1JfU1BBQ0UpCisgICAgdXNpbmcgT3V0cHV0
U3BhY2VDb2xvclR5cGUgPSBFeHRlbmRlZFNSR0JBPGZsb2F0PjsKKyNlbHNlCisgICAgdXNpbmcg
T3V0cHV0U3BhY2VDb2xvclR5cGUgPSBTUkdCQTxmbG9hdD47CisjZW5kaWYKKworICAgIGF1dG8q
IGRhdGEgPSBzdGF0aWNfY2FzdDxHcmFkaWVudENHQWRhcHRvcjo6U2hhZGluZzo6RGF0YSo+KGlu
Zm8pOworCisgICAgLy8gQ29tcHV0ZSBjb2xvciBhdCBvZmZzZXQgJ2luWzBdJyBhbmQgYXNzaWdu
IHRoZSBjb21wb25lbnRzIHRvIG91dFswIC0+IDNdLgorCisgICAgZmxvYXQgcmVxdWVzdGVkT2Zm
c2V0ID0gaW5bMF07CisKKyAgICAvLyAxLiBGaW5kIHN0b3BzIHRoYXQgYm91bmQgdGhlIHJlcXVl
c3RlZCBvZmZzZXQuCisgICAgYXV0byBbc3RvcDAsIHN0b3AxXSA9IFsmXSB7CisgICAgICAgIGZv
ciAoc2l6ZV90IHN0b3AgPSAxOyBzdG9wIDwgZGF0YS0+c3RvcHMoKS5zaXplKCk7ICsrc3RvcCkg
eworICAgICAgICAgICAgaWYgKHJlcXVlc3RlZE9mZnNldCA8PSBkYXRhLT5zdG9wcygpW3N0b3Bd
Lm9mZnNldCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjp0aWUoZGF0YS0+c3RvcHMoKVtz
dG9wIC0gMV0sIGRhdGEtPnN0b3BzKClbc3RvcF0pOworICAgICAgICB9CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfSgpOworCisgICAgLy8gMi4gQ29tcHV0ZSBw
ZXJjZW50YWdlIG9mZnNldCBiZXR3ZWVuIHRoZSB0d28gc3RvcHMuCisgICAgZmxvYXQgb2Zmc2V0
ID0gKHN0b3AxLm9mZnNldCA9PSBzdG9wMC5vZmZzZXQpID8gMC4wZiA6IChyZXF1ZXN0ZWRPZmZz
ZXQgLSBzdG9wMC5vZmZzZXQpIC8gKHN0b3AxLm9mZnNldCAtIHN0b3AwLm9mZnNldCk7CisKKyAg
ICAvLyAzLiBJbnRlcnBvbGF0ZSB0aGUgdHdvIHN0b3BzJyBjb2xvcnMgYnkgdGhlIGNvbXB1dGVk
IG9mZnNldC4KKyAgICAvLyBGSVhNRTogV2UgZG9uJ3Qgd2FudCB0byBkdWUgaHVlIGZpeHVwIGZv
ciBlYWNoIGNhbGwsIHNvIHdlIHNob3VsZCBmaWd1cmUgb3V0IGhvdyB0byBwcmVjb21wdXRlIHRo
YXQuCisgICAgYXV0byBpbnRlcnBvbGF0ZWRDb2xvciA9IGludGVycG9sYXRlQ29sb3JDb21wb25l
bnRzPGFscGhhUHJlbXVsdGlwbGljYXRpb24+KAorICAgICAgICBzdGQ6OmdldDxJbnRlcnBvbGF0
aW9uU3BhY2U+KGRhdGEtPmNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCgpLmNvbG9yU3BhY2UpLAor
ICAgICAgICBtYWtlRnJvbUNvbXBvbmVudHM8SW50ZXJwb2xhdGlvblNwYWNlQ29sb3JUeXBlPihz
dG9wMC5jb2xvckNvbXBvbmVudHMpLCAxLjBmIC0gb2Zmc2V0LAorICAgICAgICBtYWtlRnJvbUNv
bXBvbmVudHM8SW50ZXJwb2xhdGlvblNwYWNlQ29sb3JUeXBlPihzdG9wMS5jb2xvckNvbXBvbmVu
dHMpLCBvZmZzZXQpOworCisgICAgLy8gNC4gQ29udmVydCB0byB0aGUgb3V0cHV0IGNvbG9yIHNw
YWNlLgorICAgIGF1dG8gaW50ZXJwb2xhdGVkQ29sb3JDb252ZXJ0ZWRUb091dHB1dFNwYWNlID0g
YXNDb2xvckNvbXBvbmVudHMoY29udmVydENvbG9yPE91dHB1dFNwYWNlQ29sb3JUeXBlPihpbnRl
cnBvbGF0ZWRDb2xvcikpOworCisgICAgLy8gNS4gV3JpdGUgY29sb3IgY29tcG9uZW50cyB0byAn
b3V0JyBwb2ludGVyLgorICAgIGZvciAoc2l6ZV90IGNvbXBvbmVudEluZGV4ID0gMDsgY29tcG9u
ZW50SW5kZXggPCBpbnRlcnBvbGF0ZWRDb2xvckNvbnZlcnRlZFRvT3V0cHV0U3BhY2Uuc2l6ZSgp
OyArK2NvbXBvbmVudEluZGV4KQorICAgICAgICBvdXRbY29tcG9uZW50SW5kZXhdID0gaW50ZXJw
b2xhdGVkQ29sb3JDb252ZXJ0ZWRUb091dHB1dFNwYWNlW2NvbXBvbmVudEluZGV4XTsKK30KKwor
R3JhZGllbnRDR0FkYXB0b3I6OkdyYWRpZW50Q0dBZGFwdG9yKENvbG9ySW50ZXJwb2xhdGlvbk1l
dGhvZCBjb2xvckludGVycG9sYXRpb25NZXRob2QsIGNvbnN0IFdlYkNvcmU6OkdyYWRpZW50OjpD
b2xvclN0b3BWZWN0b3ImIHN0b3BzKQorICAgIDogbV9zdHJhdGVneSB7IHBpY2tTdHJhdGVneShj
b2xvckludGVycG9sYXRpb25NZXRob2QsIHN0b3BzKSB9Cit7Cit9CisKK0dyYWRpZW50Q0dBZGFw
dG9yOjpTdHJhdGVneSBHcmFkaWVudENHQWRhcHRvcjo6cGlja1N0cmF0ZWd5KENvbG9ySW50ZXJw
b2xhdGlvbk1ldGhvZCBjb2xvckludGVycG9sYXRpb25NZXRob2QsIGNvbnN0IFdlYkNvcmU6Okdy
YWRpZW50OjpDb2xvclN0b3BWZWN0b3ImIHN0b3BzKSBjb25zdAoreworICAgIHJldHVybiBXVEY6
OnN3aXRjaE9uKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5jb2xvclNwYWNlLAorICAgICAgICBb
Jl0gKGNvbnN0IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiYpIC0+IFN0cmF0ZWd5IHsK
KyAgICAgICAgICAgIHN3aXRjaCAoY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLmFscGhhUHJlbXVs
dGlwbGljYXRpb24pIHsKKyAgICAgICAgICAgIGNhc2UgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6
VW5wcmVtdWx0aXBsaWVkOgorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlR3JhZGllbnQoY29s
b3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBzdG9wcyk7CisgICAgICAgICAgICBjYXNlIEFscGhhUHJl
bXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQ6CisjaWYgSEFWRShDT1JFX0dSQVBISUNTX1BS
RU1VTFRJUExJRURfSU5URVJQT0xBVElPTl9HUkFESUVOVCkKKyAgICAgICAgICAgICAgICByZXR1
cm4gbWFrZUdyYWRpZW50KGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCwgc3RvcHMpOworI2Vsc2UK
KyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVNoYWRpbmcoY29sb3JJbnRlcnBvbGF0aW9uTWV0
aG9kLCBzdG9wcyk7CisjZW5kaWYKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAg
WyZdIChjb25zdCBhdXRvJikgLT4gU3RyYXRlZ3kgeworICAgICAgICAgICAgLy8gRklYTUU6IEFk
ZCBzdXBwb3J0IGZvciB0aGUgb3RoZXIgaW50ZXJwb2xhdGlvbiBjb2xvciBzcGFjZXMuCisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgKTsK
K30KKworR3JhZGllbnRDR0FkYXB0b3I6OlN0cmF0ZWd5IEdyYWRpZW50Q0dBZGFwdG9yOjptYWtl
R3JhZGllbnQoQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhv
ZCwgY29uc3QgV2ViQ29yZTo6R3JhZGllbnQ6OkNvbG9yU3RvcFZlY3RvciYgc3RvcHMpIGNvbnN0
Cit7CisgICAgQVNTRVJUX1VOVVNFRChjb2xvckludGVycG9sYXRpb25NZXRob2QsIHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8Q29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCPihjb2xvckludGVy
cG9sYXRpb25NZXRob2QuY29sb3JTcGFjZSkpOworI2lmICFIQVZFKENPUkVfR1JBUEhJQ1NfUFJF
TVVMVElQTElFRF9JTlRFUlBPTEFUSU9OX0dSQURJRU5UKQorICAgIEFTU0VSVF9VTlVTRUQoY29s
b3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb2xvckludGVycG9sYXRpb25NZXRob2QuYWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiA9PSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQp
OworI2VuZGlmCisKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfR1JBRElFTlRfQ1JFQVRFX1dJVEhf
T1BUSU9OUykKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfUFJFTVVMVElQTElFRF9JTlRFUlBPTEFU
SU9OX0dSQURJRU5UKQorICAgIGF1dG8gZ3JhZGllbnRJbnRlcnBvbGF0ZXNQcmVtdWx0aXBsaWVk
T3B0aW9uc0RpY3Rpb25hcnkgPSBbXSAoKSAtPiBDRkRpY3Rpb25hcnlSZWYgeworICAgICAgICBz
dGF0aWMgQ0ZUeXBlUmVmIGtleXNbXSA9IHsga0NHR3JhZGllbnRJbnRlcnBvbGF0ZXNQcmVtdWx0
aXBsaWVkIH07CisgICAgICAgIHN0YXRpYyBDRlR5cGVSZWYgdmFsdWVzW10gPSB7IGtDRkJvb2xl
YW5UcnVlIH07CisgICAgICAgIHN0YXRpYyBDRkRpY3Rpb25hcnlSZWYgb3B0aW9ucyA9IENGRGlj
dGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrZXlzLCB2YWx1ZXMsIFdURl9BUlJB
WV9MRU5HVEgoa2V5cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVE
aWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOworCisgICAgICAgIHJldHVybiBvcHRpb25zOworICAg
IH07CisKKyAgIGF1dG8gZ3JhZGllbnRPcHRpb25zRGljdGlvbmFyeSA9IFsmXSAoYXV0byBjb2xv
ckludGVycG9sYXRpb25NZXRob2QpIC0+IENGRGljdGlvbmFyeVJlZiB7CisgICAgICAgIHN3aXRj
aCAoY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLmFscGhhUHJlbXVsdGlwbGljYXRpb24pIHsKKyAg
ICAgICAgY2FzZSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQ6CisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgY2FzZSBBbHBoYVByZW11bHRpcGxpY2F0
aW9uOjpQcmVtdWx0aXBsaWVkOgorICAgICAgICAgICAgcmV0dXJuIGdyYWRpZW50SW50ZXJwb2xh
dGVzUHJlbXVsdGlwbGllZE9wdGlvbnNEaWN0aW9uYXJ5KCk7CisgICAgICAgIH0KKyAgIH07Cisj
ZWxzZQorICAgYXV0byBncmFkaWVudE9wdGlvbnNEaWN0aW9uYXJ5ID0gW10gKGF1dG8pIC0+IENG
RGljdGlvbmFyeVJlZiB7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgfTsKKyNlbmRpZgor
I2VuZGlmCisKKyAgICBhdXRvIGhhc09ubHlCb3VuZGVkU1JHQkNvbG9yU3RvcHMgPSBbXSAoY29u
c3QgYXV0byYgc3RvcHMpIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzdG9wIDogc3RvcHMp
IHsKKyAgICAgICAgICAgIGlmIChzdG9wLmNvbG9yLmNvbG9yU3BhY2UoKSAhPSBDb2xvclNwYWNl
OjpTUkdCKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9OworCisgICAgYXV0byBudW1iZXJPZlN0b3BzID0gc3RvcHMu
c2l6ZSgpOworCisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIHJlc2VydmVkU3RvcHMgPSAzOwor
ICAgIFZlY3RvcjxDR0Zsb2F0LCByZXNlcnZlZFN0b3BzPiBsb2NhdGlvbnM7CisgICAgbG9jYXRp
b25zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVtYmVyT2ZTdG9wcyk7CisKKyAgICBWZWN0b3I8
Q0dGbG9hdCwgNCAqIHJlc2VydmVkU3RvcHM+IGNvbG9yQ29tcG9uZW50czsKKyAgICBjb2xvckNv
bXBvbmVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShudW1iZXJPZlN0b3BzICogNCk7CisKKyAg
ICBhdXRvIGdyYWRpZW50Q29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7CisKKyAgICAv
LyBGSVhNRTogTm93IHRoYXQgd2Ugb25seSBldmVyIHVzZSBDR0dyYWRpZW50Q3JlYXRlV2l0aENv
bG9yQ29tcG9uZW50cywgd2Ugc2hvdWxkIGludmVzdGlnYXRlCisgICAgLy8gaWYgdGhlcmUgaXMg
YW55IHJlYWwgYmVuZWZpdCB0byB1c2luZyBzUkdCIHdoZW4gYWxsIHRoZSBzdG9wcyBhcmUgYm91
bmRlZCB2cyBqdXN0IHVzaW5nCisgICAgLy8gZXh0ZW5kZWQgc1JHQiBmb3IgYWxsIGdyYWRpZW50
cy4KKyAgICBpZiAoaGFzT25seUJvdW5kZWRTUkdCQ29sb3JTdG9wcyhzdG9wcykpIHsKKyAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBzdG9wIDogc3RvcHMpIHsKKyAgICAgICAgICAgIGF1dG8gW2Nv
bG9yU3BhY2UsIGNvbXBvbmVudHNdID0gc3RvcC5jb2xvci5jb2xvclNwYWNlQW5kQ29tcG9uZW50
cygpOworICAgICAgICAgICAgYXV0byBbciwgZywgYiwgYV0gPSBjb21wb25lbnRzOworICAgICAg
ICAgICAgY29sb3JDb21wb25lbnRzLnVuY2hlY2tlZEFwcGVuZChyKTsKKyAgICAgICAgICAgIGNv
bG9yQ29tcG9uZW50cy51bmNoZWNrZWRBcHBlbmQoZyk7CisgICAgICAgICAgICBjb2xvckNvbXBv
bmVudHMudW5jaGVja2VkQXBwZW5kKGIpOworICAgICAgICAgICAgY29sb3JDb21wb25lbnRzLnVu
Y2hlY2tlZEFwcGVuZChhKTsKKworICAgICAgICAgICAgbG9jYXRpb25zLnVuY2hlY2tlZEFwcGVu
ZChzdG9wLm9mZnNldCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworI2lmIEhBVkUoQ09SRV9H
UkFQSElDU19FWFRFTkRFRF9TUkdCX0NPTE9SX1NQQUNFKQorICAgICAgICBncmFkaWVudENvbG9y
U3BhY2UgPSBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCk7CisjZW5kaWYKKworICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIHN0b3AgOiBzdG9wcykgeworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19F
WFRFTkRFRF9TUkdCX0NPTE9SX1NQQUNFKQorICAgICAgICAgICAgYXV0byBbciwgZywgYiwgYV0g
PSBzdG9wLmNvbG9yLnRvQ29sb3JUeXBlTG9zc3k8RXh0ZW5kZWRTUkdCQTxmbG9hdD4+KCk7Cisj
ZWxzZQorICAgICAgICAgICAgYXV0byBbciwgZywgYiwgYV0gPSBzdG9wLmNvbG9yLnRvQ29sb3JU
eXBlTG9zc3k8U1JHQkE8ZmxvYXQ+PigpOworI2VuZGlmCisgICAgICAgICAgICBjb2xvckNvbXBv
bmVudHMudW5jaGVja2VkQXBwZW5kKHIpOworICAgICAgICAgICAgY29sb3JDb21wb25lbnRzLnVu
Y2hlY2tlZEFwcGVuZChnKTsKKyAgICAgICAgICAgIGNvbG9yQ29tcG9uZW50cy51bmNoZWNrZWRB
cHBlbmQoYik7CisgICAgICAgICAgICBjb2xvckNvbXBvbmVudHMudW5jaGVja2VkQXBwZW5kKGEp
OworCisgICAgICAgICAgICBsb2NhdGlvbnMudW5jaGVja2VkQXBwZW5kKHN0b3Aub2Zmc2V0KTsK
KyAgICAgICAgfQorICAgIH0KKworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19HUkFESUVOVF9DUkVB
VEVfV0lUSF9PUFRJT05TKQorICAgIHJldHVybiBHcmFkaWVudCB7IGFkb3B0Q0YoQ0dHcmFkaWVu
dENyZWF0ZVdpdGhDb2xvckNvbXBvbmVudHNBbmRPcHRpb25zKGdyYWRpZW50Q29sb3JTcGFjZSwg
Y29sb3JDb21wb25lbnRzLmRhdGEoKSwgbG9jYXRpb25zLmRhdGEoKSwgbnVtYmVyT2ZTdG9wcywg
Z3JhZGllbnRPcHRpb25zRGljdGlvbmFyeShjb2xvckludGVycG9sYXRpb25NZXRob2QpKSkgfTsK
KyNlbHNlCisgICAgcmV0dXJuIEdyYWRpZW50IHsgYWRvcHRDRihDR0dyYWRpZW50Q3JlYXRlV2l0
aENvbG9yQ29tcG9uZW50cyhncmFkaWVudENvbG9yU3BhY2UsIGNvbG9yQ29tcG9uZW50cy5kYXRh
KCksIGxvY2F0aW9ucy5kYXRhKCksIG51bWJlck9mU3RvcHMpKSB9OworI2VuZGlmCit9CisKK3N0
YXRpYyBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbnZlcnRDb2xvclRvQ29sb3JJbnRlcnBv
bGF0aW9uU3BhY2UoY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvckludGVycG9sYXRpb25NZXRob2Qg
Y29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kKQoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGNv
bG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5jb2xvclNwYWNlLAorICAgICAgICBbJl0gKGF1dG8mIGNv
bG9yU3BhY2UpIC0+IENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4geworICAgICAgICAgICAgdXNp
bmcgQ29sb3JUeXBlID0gdHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8ZGVjbHR5cGUo
Y29sb3JTcGFjZSk+OjpDb2xvclR5cGU7CisgICAgICAgICAgICByZXR1cm4gYXNDb2xvckNvbXBv
bmVudHMoY29sb3IudGVtcGxhdGUgdG9Db2xvclR5cGVMb3NzeTxDb2xvclR5cGU+KCkpOworICAg
ICAgICB9CisgICAgKTsKK30KKworR3JhZGllbnRDR0FkYXB0b3I6OlN0cmF0ZWd5IEdyYWRpZW50
Q0dBZGFwdG9yOjptYWtlU2hhZGluZyhDb2xvckludGVycG9sYXRpb25NZXRob2QgY29sb3JJbnRl
cnBvbGF0aW9uTWV0aG9kLCBjb25zdCBXZWJDb3JlOjpHcmFkaWVudDo6Q29sb3JTdG9wVmVjdG9y
JiBzdG9wcykgY29uc3QKK3sKKyAgICBhdXRvIG1ha2VEYXRhID0gWyZdIChhdXRvIGNvbG9ySW50
ZXJwb2xhdGlvbk1ldGhvZCwgYXV0byYgc3RvcHMpIHsKKyAgICAgICAgYXV0byB0b3RhbE51bWJl
ck9mU3RvcHMgPSBzdG9wcy5zaXplKCk7CisgICAgICAgIGJvb2wgaGFzWmVybyA9IGZhbHNlOwor
ICAgICAgICBib29sIGhhc09uZSA9IGZhbHNlOworCisgICAgICAgIGZvciAoY29uc3QgYXV0byYg
c3RvcCA6IHN0b3BzKSB7CisgICAgICAgICAgICBhdXRvIG9mZnNldCA9IHN0b3Aub2Zmc2V0Owor
ICAgICAgICAgICAgQVNTRVJUKG9mZnNldCA+PSAwKTsKKyAgICAgICAgICAgIEFTU0VSVChvZmZz
ZXQgPD0gMSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChvZmZzZXQgPT0gMCkKKyAg
ICAgICAgICAgICAgICBoYXNaZXJvID0gdHJ1ZTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG9mZnNl
dCA9PSAxKQorICAgICAgICAgICAgICAgIGhhc09uZSA9IHRydWU7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoIWhhc1plcm8pCisgICAgICAgICAgICB0b3RhbE51bWJlck9mU3RvcHMrKzsKKyAg
ICAgICAgaWYgKCFoYXNPbmUpCisgICAgICAgICAgICB0b3RhbE51bWJlck9mU3RvcHMrKzsKKwor
ICAgICAgICBWZWN0b3I8Q29sb3JDb252ZXJ0ZWRUb0ludGVycG9sYXRpb25Db2xvclNwYWNlU3Rv
cD4gY29udmVydGVkU3RvcHM7CisgICAgICAgIGNvbnZlcnRlZFN0b3BzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkodG90YWxOdW1iZXJPZlN0b3BzKTsKKworICAgICAgICBpZiAoIWhhc1plcm8pCisg
ICAgICAgICAgICBjb252ZXJ0ZWRTdG9wcy51bmNoZWNrZWRBcHBlbmQoeyAwLjBmLCB7IDAuMGYs
IDAuMGYsIDAuMGYsIDAuMGYgfSB9KTsKKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHN0b3Ag
OiBzdG9wcykKKyAgICAgICAgICAgIGNvbnZlcnRlZFN0b3BzLnVuY2hlY2tlZEFwcGVuZCh7IHN0
b3Aub2Zmc2V0LCBjb252ZXJ0Q29sb3JUb0NvbG9ySW50ZXJwb2xhdGlvblNwYWNlKHN0b3AuY29s
b3IsIGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCkgfSk7CisKKyAgICAgICAgaWYgKCFoYXNPbmUp
CisgICAgICAgICAgICBjb252ZXJ0ZWRTdG9wcy51bmNoZWNrZWRBcHBlbmQoeyAxLjBmLCBjb252
ZXJ0ZWRTdG9wcy5sYXN0KCkuY29sb3JDb21wb25lbnRzIH0pOworCisgICAgICAgIGlmICghaGFz
WmVybykKKyAgICAgICAgICAgIGNvbnZlcnRlZFN0b3BzWzBdLmNvbG9yQ29tcG9uZW50cyA9IGNv
bnZlcnRlZFN0b3BzWzFdLmNvbG9yQ29tcG9uZW50czsKKworICAgICAgICByZXR1cm4gU2hhZGlu
Zzo6RGF0YTo6Y3JlYXRlKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCwgV1RGTW92ZShjb252ZXJ0
ZWRTdG9wcykpOworICAgIH07CisKKyAgICBhdXRvIG1ha2VGdW5jdGlvbiA9IFsmXSAoYXV0byBj
b2xvckludGVycG9sYXRpb25NZXRob2QsIGF1dG8mIGRhdGEpIHsKKyAgICAgICAgYXV0byBtYWtl
RXZhbHVhdGVDYWxsYmFjayA9IFsmXSAoYXV0byBjb2xvckludGVycG9sYXRpb25NZXRob2QpIC0+
IENHRnVuY3Rpb25FdmFsdWF0ZUNhbGxiYWNrIHsKKyAgICAgICAgICAgIHJldHVybiBXVEY6OnN3
aXRjaE9uKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5jb2xvclNwYWNlLAorICAgICAgICAgICAg
ICAgIFsmXSAoYXV0byYgLypjb2xvclNwYWNlKi8pICAtPiBDR0Z1bmN0aW9uRXZhbHVhdGVDYWxs
YmFjayB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY29sb3JJbnRlcnBvbGF0aW9uTWV0
aG9kLmFscGhhUHJlbXVsdGlwbGljYXRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQ6CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gJnNoYWRpbmdGdW5jdGlvbjxDb2xvckludGVycG9sYXRpb25NZXRob2Q6
OlNSR0IsIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZD47CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZDoK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAmc2hhZGluZ0Z1bmN0aW9uPENvbG9ySW50
ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlw
bGllZD47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICApOworICAgICAgICB9OworCisgICAgICAgIGNvbnN0IENHRnVuY3Rpb25DYWxsYmFja3Mg
Y2FsbGJhY2tzID0geworICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIG1ha2VFdmFsdWF0ZUNh
bGxiYWNrKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCksCisgICAgICAgICAgICBbXSAodm9pZCog
aW5mbykgeworICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdyYWRpZW50Q0dBZGFwdG9yOjpT
aGFkaW5nOjpEYXRhKj4oaW5mbyktPmRlcmVmKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH07
CisKKyAgICAgICAgc3RhdGljIGNvbnN0IENHRmxvYXQgZG9tYWluWzJdID0geyAwLCAxIH07Cisg
ICAgICAgIC8vIEZJWE1FOiBXaGVuIHRoZSBpbnB1dCBpcyBib3VuZGVkIHNSR0IgYW5kIHdlIGFy
ZSB1c2luZyB0aGUgU1JCRyBpbnRlcnBvbGF0aW9uIG1ldGhvZCwgaXQgbWlnaHQgbWFrZSBtb3Jl
IHNlbnNlIHRvIGhhdmUgdGhlIHJhbmdlIGJlIHsgMCwgMSwgMCwgMSwgMCwgMSwgMCwgMSB9Cisg
ICAgICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHJhbmdlWzhdID0geyAtc3RkOjpudW1lcmljX2xp
bWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZp
bml0eSgpLCAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9h
dD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCAw
LCAxIH07CisKKyAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dGdW5jdGlvbkNyZWF0ZSgmZGF0YS5s
ZWFrUmVmKCksIDEsIGRvbWFpbiwgNCwgcmFuZ2UsICZjYWxsYmFja3MpKTsKKyAgICB9OworCisg
ICAgYXV0byBkYXRhID0gbWFrZURhdGEoY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBzdG9wcyk7
CisgICAgYXV0byBmdW5jdGlvbiA9IG1ha2VGdW5jdGlvbihjb2xvckludGVycG9sYXRpb25NZXRo
b2QsIGRhdGEpOworCisgICAgLy8gRklYTUU6IEludmVzdGlnYXRlIHVzaW5nIGJvdW5kZWQgc1JH
QiB3aGVuIHRoZSBpbnB1dCBzdG9wcyBhcmUgYWxsIGJvdW5kZWQgc1JHQi4KKyNpZiBIQVZFKENP
UkVfR1JBUEhJQ1NfRVhURU5ERURfU1JHQl9DT0xPUl9TUEFDRSkKKyAgICBhdXRvIGNvbG9yU3Bh
Y2UgPSBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCk7CisjZWxzZQorICAgIGF1dG8gY29sb3JT
cGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7CisjZW5kaWYKKworICAgIHJldHVybiBTaGFkaW5n
IHsgV1RGTW92ZShkYXRhKSwgV1RGTW92ZShmdW5jdGlvbiksIGNvbG9yU3BhY2UgfTsKK30KKwor
dm9pZCBHcmFkaWVudENHQWRhcHRvcjo6ZHJhd0xpbmVhckdyYWRpZW50KENHQ29udGV4dFJlZiBw
bGF0Zm9ybUNvbnRleHQsIENHUG9pbnQgc3RhcnRQb2ludCwgQ0dQb2ludCBlbmRQb2ludCwgQ0dH
cmFkaWVudERyYXdpbmdPcHRpb25zIG9wdGlvbnMpCit7CisgICAgV1RGOjpzd2l0Y2hPbihtX3N0
cmF0ZWd5LAorICAgICAgICBbJl0gKEdyYWRpZW50JiBncmFkaWVudCkgeworICAgICAgICAgICAg
Q0dDb250ZXh0RHJhd0xpbmVhckdyYWRpZW50KHBsYXRmb3JtQ29udGV4dCwgZ3JhZGllbnQuZ3Jh
ZGllbnQuZ2V0KCksIHN0YXJ0UG9pbnQsIGVuZFBvaW50LCBvcHRpb25zKTsKKyAgICAgICAgfSwK
KyAgICAgICAgWyZdIChTaGFkaW5nJiBzaGFkaW5nKSB7CisgICAgICAgICAgICBib29sIHN0YXJ0
RXh0ZW5kID0gKG9wdGlvbnMgJiBrQ0dHcmFkaWVudERyYXdzQmVmb3JlU3RhcnRMb2NhdGlvbikg
IT0gMDsKKyAgICAgICAgICAgIGJvb2wgZW5kRXh0ZW5kID0gKG9wdGlvbnMgJiBrQ0dHcmFkaWVu
dERyYXdzQWZ0ZXJFbmRMb2NhdGlvbikgIT0gMDsKKworICAgICAgICAgICAgQ0dDb250ZXh0RHJh
d1NoYWRpbmcocGxhdGZvcm1Db250ZXh0LCBhZG9wdENGKENHU2hhZGluZ0NyZWF0ZUF4aWFsKHNo
YWRpbmcuY29sb3JTcGFjZS5nZXQoKSwgc3RhcnRQb2ludCwgZW5kUG9pbnQsIHNoYWRpbmcuZnVu
Y3Rpb24uZ2V0KCksIHN0YXJ0RXh0ZW5kLCBlbmRFeHRlbmQpKS5nZXQoKSk7CisgICAgICAgIH0K
KyAgICApOworfQorCit2b2lkIEdyYWRpZW50Q0dBZGFwdG9yOjpkcmF3UmFkaWFsR3JhZGllbnQo
Q0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dCwgQ0dQb2ludCBzdGFydENlbnRlciwgQ0dGbG9h
dCBzdGFydFJhZGl1cywgQ0dQb2ludCBlbmRDZW50ZXIsIENHRmxvYXQgZW5kUmFkaXVzLCBDR0dy
YWRpZW50RHJhd2luZ09wdGlvbnMgb3B0aW9ucykKK3sKKyAgICBXVEY6OnN3aXRjaE9uKG1fc3Ry
YXRlZ3ksCisgICAgICAgIFsmXSAoR3JhZGllbnQmIGdyYWRpZW50KSB7CisgICAgICAgICAgICBD
R0NvbnRleHREcmF3UmFkaWFsR3JhZGllbnQocGxhdGZvcm1Db250ZXh0LCBncmFkaWVudC5ncmFk
aWVudC5nZXQoKSwgc3RhcnRDZW50ZXIsIHN0YXJ0UmFkaXVzLCBlbmRDZW50ZXIsIGVuZFJhZGl1
cywgb3B0aW9ucyk7CisgICAgICAgIH0sCisgICAgICAgIFsmXSAoU2hhZGluZyYgc2hhZGluZykg
eworICAgICAgICAgICAgYm9vbCBzdGFydEV4dGVuZCA9IChvcHRpb25zICYga0NHR3JhZGllbnRE
cmF3c0JlZm9yZVN0YXJ0TG9jYXRpb24pICE9IDA7CisgICAgICAgICAgICBib29sIGVuZEV4dGVu
ZCA9IChvcHRpb25zICYga0NHR3JhZGllbnREcmF3c0FmdGVyRW5kTG9jYXRpb24pICE9IDA7CisK
KyAgICAgICAgICAgIENHQ29udGV4dERyYXdTaGFkaW5nKHBsYXRmb3JtQ29udGV4dCwgYWRvcHRD
RihDR1NoYWRpbmdDcmVhdGVSYWRpYWwoc2hhZGluZy5jb2xvclNwYWNlLmdldCgpLCBzdGFydENl
bnRlciwgc3RhcnRSYWRpdXMsIGVuZENlbnRlciwgZW5kUmFkaXVzLCBzaGFkaW5nLmZ1bmN0aW9u
LmdldCgpLCBzdGFydEV4dGVuZCwgZW5kRXh0ZW5kKSkuZ2V0KCkpOworICAgICAgICB9CisgICAg
KTsKK30KKwordm9pZCBHcmFkaWVudENHQWRhcHRvcjo6ZHJhd0NvbmljR3JhZGllbnQoQ0dDb250
ZXh0UmVmIHBsYXRmb3JtQ29udGV4dCwgQ0dQb2ludCBjZW50ZXIsIENHRmxvYXQgYW5nbGUpCit7
CisvLyBGSVhNRTogU2VlbXMgbGlrZSB0aGlzIHNob3VsZCBiZSBIQVZFKENHX0NPTlRFWFRfRFJB
V19DT05JQ19HUkFESUVOVCkuCisvLyBGSVhNRTogQ2FuIHdlIGNoYW5nZSB0dk9TIHRvIGJlIGxp
a2UgdGhlIG90aGVyIENvY29hIHBsYXRmb3Jtcz8KKyNpZiBQTEFURk9STShDT0NPQSkgJiYgIVBM
QVRGT1JNKEFQUExFVFYpCisgICAgV1RGOjpzd2l0Y2hPbihtX3N0cmF0ZWd5LAorICAgICAgICBb
Jl0gKEdyYWRpZW50JiBncmFkaWVudCkgeworICAgICAgICAgICAgQ0dDb250ZXh0RHJhd0Nvbmlj
R3JhZGllbnQocGxhdGZvcm1Db250ZXh0LCBncmFkaWVudC5ncmFkaWVudC5nZXQoKSwgY2VudGVy
LCBhbmdsZSk7CisgICAgICAgIH0sCisgICAgICAgIFsmXSAoU2hhZGluZyYgc2hhZGluZykgewor
ICAgICAgICAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcocGxhdGZvcm1Db250ZXh0LCBhZG9wdENG
KENHU2hhZGluZ0NyZWF0ZUNvbmljKHNoYWRpbmcuY29sb3JTcGFjZS5nZXQoKSwgY2VudGVyLCBh
bmdsZSwgc2hhZGluZy5mdW5jdGlvbi5nZXQoKSkpLmdldCgpKTsKKyAgICAgICAgfQorICAgICk7
CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShwbGF0Zm9ybUNvbnRleHQpOworICAgIFVOVVNFRF9Q
QVJBTShjZW50ZXIpOworICAgIFVOVVNFRF9QQVJBTShhbmdsZSk7CisjZW5kaWYKK30KKworfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDR0FkYXB0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFkaWVudENHQWRhcHRvci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0dBZGFwdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDb2xvckNvbXBvbmVu
dHMuaCIKKyNpbmNsdWRlICJDb2xvckludGVycG9sYXRpb25NZXRob2QuaCIKKyNpbmNsdWRlICJH
cmFkaWVudC5oIgorI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KKyNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVk
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0
cnVjdCBDb2xvckNvbnZlcnRlZFRvSW50ZXJwb2xhdGlvbkNvbG9yU3BhY2VTdG9wIHsKKyAgICBm
bG9hdCBvZmZzZXQ7CisgICAgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBjb2xvckNvbXBvbmVu
dHM7Cit9OworCitjbGFzcyBHcmFkaWVudENHQWRhcHRvciB7CitwdWJsaWM6CisgICAgLy8gRklY
TUU6IFRoaXMgb25seSB1c2VzIGEgdW5pcXVlX3B0ciB0byBhdm9pZCBjaXJjdWxhciBpbmNsdXNp
b24gaXNzdWVzIGR1ZSB0byBHcmFkaWVudDo6Q29sb3JTdG9wVmVjdG9yIGJlaW5nIGEgbmVzdGVk
IHR5cGUuIElmIEdyYWRpZW50OjpDb2xvclN0b3BWZWN0b3IKKyAgICAvLyBnZXRzIGV4dHJhY3Rl
ZCBpbnRvIGl0cyBvd24gZmlsZSwgd2UgY291bGQgcmVwbGFjZSB0aGUgc3RkOjp1bmlxdWVfcHRy
PEdyYWRpZW50Q0dBZGFwdG9yPiBpbiBHcmFkaWVudCB3aXRoIGEgc3RkOjpvcHRpb25hbDxHcmFk
aWVudENHQWRhcHRvcj4uCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHcmFkaWVudENHQWRh
cHRvcj4gY3JlYXRlKENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBjb2xvckludGVycG9sYXRpb25N
ZXRob2QsIGNvbnN0IFdlYkNvcmU6OkdyYWRpZW50OjpDb2xvclN0b3BWZWN0b3ImIHN0b3BzKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxHcmFkaWVudENHQWRhcHRvcj4o
bmV3IEdyYWRpZW50Q0dBZGFwdG9yKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCwgc3RvcHMpKTsK
KyAgICB9CisKKyAgICB2b2lkIGRyYXdMaW5lYXJHcmFkaWVudChDR0NvbnRleHRSZWYsIENHUG9p
bnQgc3RhcnRQb2ludCwgQ0dQb2ludCBlbmRQb2ludCwgQ0dHcmFkaWVudERyYXdpbmdPcHRpb25z
KTsKKyAgICB2b2lkIGRyYXdSYWRpYWxHcmFkaWVudChDR0NvbnRleHRSZWYsIENHUG9pbnQgc3Rh
cnRDZW50ZXIsIENHRmxvYXQgc3RhcnRSYWRpdXMsIENHUG9pbnQgZW5kQ2VudGVyLCBDR0Zsb2F0
IGVuZFJhZGl1cywgQ0dHcmFkaWVudERyYXdpbmdPcHRpb25zKTsKKyAgICB2b2lkIGRyYXdDb25p
Y0dyYWRpZW50KENHQ29udGV4dFJlZiwgQ0dQb2ludCBjZW50ZXIsIENHRmxvYXQgYW5nbGUpOwor
CisgICAgc3RydWN0IEdyYWRpZW50IHsKKyAgICAgICAgUmV0YWluUHRyPENHR3JhZGllbnRSZWY+
IGdyYWRpZW50OworICAgIH07CisKKyAgICBzdHJ1Y3QgU2hhZGluZyB7CisgICAgICAgIGNsYXNz
IERhdGEgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YT4geworICAgICAgICBwdWJs
aWM6CisgICAgICAgICAgICBzdGF0aWMgUmVmPERhdGE+IGNyZWF0ZShDb2xvckludGVycG9sYXRp
b25NZXRob2QgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBWZWN0b3I8Q29sb3JDb252ZXJ0ZWRU
b0ludGVycG9sYXRpb25Db2xvclNwYWNlU3RvcD4gc3RvcHMpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YShjb2xvckludGVycG9sYXRpb25N
ZXRob2QsIFdURk1vdmUoc3RvcHMpKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIENv
bG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBjb2xvckludGVycG9sYXRpb25NZXRob2QoKSBjb25zdCB7
IHJldHVybiBtX2NvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDsgfQorICAgICAgICAgICAgY29uc3Qg
VmVjdG9yPENvbG9yQ29udmVydGVkVG9JbnRlcnBvbGF0aW9uQ29sb3JTcGFjZVN0b3A+JiBzdG9w
cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcHM7IH0KKworICAgICAgICBwcml2YXRlOgorICAgICAg
ICAgICAgRGF0YShDb2xvckludGVycG9sYXRpb25NZXRob2QgY29sb3JJbnRlcnBvbGF0aW9uTWV0
aG9kLCBWZWN0b3I8Q29sb3JDb252ZXJ0ZWRUb0ludGVycG9sYXRpb25Db2xvclNwYWNlU3RvcD4g
c3RvcHMpCisgICAgICAgICAgICAgICAgOiBtX2NvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCB7IGNv
bG9ySW50ZXJwb2xhdGlvbk1ldGhvZCB9CisgICAgICAgICAgICAgICAgLCBtX3N0b3BzIHsgV1RG
TW92ZShzdG9wcykgfQorICAgICAgICAgICAgeworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBDb2xvckludGVycG9sYXRpb25NZXRob2QgbV9jb2xvckludGVycG9sYXRpb25NZXRob2Q7Cisg
ICAgICAgICAgICBWZWN0b3I8Q29sb3JDb252ZXJ0ZWRUb0ludGVycG9sYXRpb25Db2xvclNwYWNl
U3RvcD4gbV9zdG9wczsKKyAgICAgICAgfTsKKworICAgICAgICBSZWY8RGF0YT4gZGF0YTsKKyAg
ICAgICAgUmV0YWluUHRyPENHRnVuY3Rpb25SZWY+IGZ1bmN0aW9uOworICAgICAgICBSZXRhaW5Q
dHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNwYWNlOworICAgIH07CisKKyAgICB1c2luZyBTdHJh
dGVneSA9IHN0ZDo6dmFyaWFudDxHcmFkaWVudCwgU2hhZGluZz47CisKK3ByaXZhdGU6CisgICAg
R3JhZGllbnRDR0FkYXB0b3IoQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb25zdCBXZWJDb3Jl
OjpHcmFkaWVudDo6Q29sb3JTdG9wVmVjdG9yJik7CisKKyAgICBTdHJhdGVneSBwaWNrU3RyYXRl
Z3koQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb25zdCBXZWJDb3JlOjpHcmFkaWVudDo6Q29s
b3JTdG9wVmVjdG9yJikgY29uc3Q7CisgICAgU3RyYXRlZ3kgbWFrZUdyYWRpZW50KENvbG9ySW50
ZXJwb2xhdGlvbk1ldGhvZCwgY29uc3QgV2ViQ29yZTo6R3JhZGllbnQ6OkNvbG9yU3RvcFZlY3Rv
ciYpIGNvbnN0OworICAgIFN0cmF0ZWd5IG1ha2VTaGFkaW5nKENvbG9ySW50ZXJwb2xhdGlvbk1l
dGhvZCwgY29uc3QgV2ViQ29yZTo6R3JhZGllbnQ6OkNvbG9yU3RvcFZlY3RvciYpIGNvbnN0Owor
CisgICAgU3RyYXRlZ3kgbV9zdHJhdGVneTsKK307CisKK30K
</data>
<flag name="commit-queue"
          id="473259"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447582</attachid>
            <date>2021-12-19 21:55:27 -0800</date>
            <delta_ts>2021-12-20 11:31:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234492-20211219215526.patch</filename>
            <type>text/plain</type>
            <size>59741</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVy
aW1lbnRhbC55YW1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNl
cy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCShyZXZpc2lvbiAyODcyMzMpCisrKyBT
b3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwu
eWFtbAkod29ya2luZyBjb3B5KQpAQCAtMjg0LDYgKzI4NCwxOCBAQCBDU1NDdXN0b21Qcm9wZXJ0
aWVzQW5kVmFsdWVzRW5hYmxlZDoKICAgICBXZWJDb3JlOgogICAgICAgZGVmYXVsdDogZmFsc2UK
IAorQ1NTR3JhZGllbnRBbHBoYVByZW11bHRpcGxpZWRJbnRlcnBvbGF0aW9uRW5hYmxlZDoKKyAg
dHlwZTogYm9vbAorICBodW1hblJlYWRhYmxlTmFtZTogIkFscGhhIFByZW11bHRpcGxpZWQgSW50
ZXJwb2xhdGVkIENTUyBHcmFkaWVudHMiCisgIGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbjogIkVu
YWJsZSBhbHBoYSBwcmVtdWx0aXBsaWVkIGludGVycG9sYXRlZCBDU1MgZ3JhZGllbnRzIgorICBk
ZWZhdWx0VmFsdWU6CisgICAgV2ViS2l0TGVnYWN5OgorICAgICAgZGVmYXVsdDogZmFsc2UKKyAg
ICBXZWJLaXQ6CisgICAgICBkZWZhdWx0OiBmYWxzZQorICAgIFdlYkNvcmU6CisgICAgICBkZWZh
dWx0OiBmYWxzZQorCiAjIEZJWE1FOiBUaGlzIGlzIGVuYWJsZWQgd2hlbiBFTkFCTEUoRVhQRVJJ
TUVOVEFMX0ZFQVRVUkVTKSBpcyB0cnVlIGluIFdlYktpdDIuIFBlcmhhcHMgd2Ugc2hvdWxkIGNv
bnNpZGVyIHVzaW5nIHRoYXQgZm9yIFdlYktpdExlZ2FjeSBhcyB3ZWxsLgogQ1NTSW5kaXZpZHVh
bFRyYW5zZm9ybVByb3BlcnRpZXNFbmFibGVkOgogICB0eXBlOiBib29sCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODcyMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwzNSBAQAorMjAyMS0xMi0xOSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0Bh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIENHU2hhZGluZ1JlZiBiYXNlZCBpbXBsZW1lbnRhdGlv
biBvZiBHcmFkaWVudCBhcyBzdGVwcGluZyBzdG9uZSB0b3dhcmQgcHJlbXVsdGlwbGllZCBpbnRl
cnBvbGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzQ0OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbV0lQXSBUaGlzIGNvbXBsZXRlbHkgcmVwbGFjZXMgdGhlIENHR3JhZGllbnRSZWYgaW1wbGVt
ZW50YXRpb24uIFdlIG5lZWQgdG8gbWFrZSB0aGlzCisgICAgICAgIGNvbmRpdGlvbmFsIGZvciBp
dCB0byBiZSByZWFsLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb21wb25l
bnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNvbXBvbmVudHM6OnNpemUgY29uc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpDdXN0b21DR0dyYWRpZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tQ0dH
cmFkaWVudDo6ZnVuY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tQ0dHcmFk
aWVudDo6Y29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkN1c3RvbUNHR3JhZGllbnQ6OnN0b3BzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3Rv
bUNHR3JhZGllbnQ6OkN1c3RvbUNHR3JhZGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYWRpZW50Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dW5wcmVtdWx0aXBsaWVk
U2hhZGluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNHRnVuY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tQ0dHcmFkaWVudDo6aW5pdGlhbGl6ZUZ1bmN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUNHR3JhZGllbnQ6OmNvbG9yU3BhY2UgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6OmNyZWF0ZUN1c3RvbUNHR3JhZGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6ZHJhd0xpbmVhckdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmRy
YXdSYWRpYWxHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpkcmF3Q29uaWNHcmFkaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhZGllbnQ6OmZpbGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6Omhhc09ubHlCb3Vu
ZGVkU1JHQkNvbG9yU3RvcHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3Jh
ZGllbnQ6OmNyZWF0ZUNHR3JhZGllbnQpOiBEZWxldGVkLgorCiAyMDIxLTEyLTE4ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBIYXNoIHRhYmxlcywgcmVhZC93cml0
ZSwgYW5kIGhlYXAgbWVtb3J5IGFyZSB1c2VkIHVubmVjZXNzYXJpbHksIHdoaWNoIG1heSBodXJ0
IHBlcmZvcm1hbmNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtl
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UJKHJl
dmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UJ
KHdvcmtpbmcgY29weSkKQEAgLTEzMSw2ICsxMzEsNyBAQCBlbHNlICgpCiAgICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0Zsb2F0UmVjdENHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9GbG9hdFNpemVDRy5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGll
bnRDRy5jcHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDR0FkYXB0b3Iu
Y3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3Bw
CiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAogICAg
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmNwcApJbmRleDogU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1NYWMuY21ha2UJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtTWFjLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yOTEsNiArMjkxLDcgQEAgbGlzdChB
UFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRSZWN0
Q0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRTaXplQ0cuY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFkaWVudENHQWRhcHRvci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRHTENHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dENHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuY3BwCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM0OCw2ICszNDgsNyBAQCBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9GbG9hdFJlY3RDRy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0U2l6ZUNHLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYWRpZW50Q0dBZGFwdG9yLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0Q0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML0NoYW5n
ZUxvZwkocmV2aXNpb24gMjg3MjQ3KQorKysgU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIxLTEyLTE5ICBTYW0gV2VpbmlnICA8
d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgQ0dTaGFkaW5nUmVmIGJhc2VkIGltcGxl
bWVudGF0aW9uIG9mIEdyYWRpZW50IGFzIHN0ZXBwaW5nIHN0b25lIHRvd2FyZCBwcmVtdWx0aXBs
aWVkIGludGVycG9sYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNDQ5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaDoKKyAgICAgICAgQWRkIENH
U2hhZGluZ1JlZiBTUEkgZm9yIGNyZWF0aW5nIGNvbmljIHNoYWRpbmdzLgorCiAyMDIxLTEyLTE2
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyODcwNTYuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaAkocmV2aXNpb24gMjg3MjMzKQorKysg
U291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dGb250Q2Fj
aGUuaD4KICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dQYXRoUHJpdmF0ZS5oPgogI2luY2x1ZGUg
PENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3NQcml2YXRlLmg+CisjaW5jbHVkZSA8Q29yZUdyYXBo
aWNzL0NHU2hhZGluZ1ByaXZhdGUuaD4KICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dTdHlsZVBy
aXZhdGUuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTMyMyw2ICszMjQsMTYgQEAgdm9pZCBD
R0NvbnRleHRTZXRTdHlsZShDR0NvbnRleHRSZWYsIENHU3R5bGVSZWYpOwogdm9pZCBDR0NvbnRl
eHREcmF3Q29uaWNHcmFkaWVudChDR0NvbnRleHRSZWYsIENHR3JhZGllbnRSZWYsIENHUG9pbnQg
Y2VudGVyLCBDR0Zsb2F0IGFuZ2xlKTsKIHZvaWQgQ0dQYXRoQWRkVW5ldmVuQ29ybmVyc1JvdW5k
ZWRSZWN0KENHTXV0YWJsZVBhdGhSZWYsIGNvbnN0IENHQWZmaW5lVHJhbnNmb3JtICosIENHUmVj
dCwgY29uc3QgQ0dTaXplIGNvcm5lcnNbNF0pOwogYm9vbCBDR0ZvbnRSZW5kZXJpbmdHZXRGb250
U21vb3RoaW5nRGlzYWJsZWQodm9pZCk7CitDR1NoYWRpbmdSZWYgQ0dTaGFkaW5nQ3JlYXRlQ29u
aWMoQ0dDb2xvclNwYWNlUmVmLCBDR1BvaW50IGNlbnRlciwgQ0dGbG9hdCBhbmdsZSwgQ0dGdW5j
dGlvblJlZik7CisKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfR1JBRElFTlRfQ1JFQVRFX1dJVEhf
T1BUSU9OUykKK0NHR3JhZGllbnRSZWYgQ0dHcmFkaWVudENyZWF0ZVdpdGhDb2xvckNvbXBvbmVu
dHNBbmRPcHRpb25zKENHQ29sb3JTcGFjZVJlZiwgY29uc3QgQ0dGbG9hdCosIGNvbnN0IENHRmxv
YXQqLCBzaXplX3QsIENGRGljdGlvbmFyeVJlZik7CitDR0dyYWRpZW50UmVmIENHR3JhZGllbnRD
cmVhdGVXaXRoQ29sb3JzQW5kT3B0aW9ucyhDR0NvbG9yU3BhY2VSZWYsIENGQXJyYXlSZWYsIGNv
bnN0IENHRmxvYXQqLCBDRkRpY3Rpb25hcnlSZWYpOworI2VuZGlmCisKKyNpZiBIQVZFKENPUkVf
R1JBUEhJQ1NfUFJFTVVMVElQTElFRF9JTlRFUlBPTEFUSU9OX0dSQURJRU5UKQorZXh0ZXJuIGNv
bnN0IENGU3RyaW5nUmVmIGtDR0dyYWRpZW50SW50ZXJwb2xhdGVzUHJlbXVsdGlwbGllZDsKKyNl
bmRpZgogCiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI4NzIz
MykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtNDA4MSw2ICs0MDgxLDcgQEAKIAkJQkMxMjRGMDAwQzI2NDQ3QTAw
OUUyMzQ5IC8qIEpTQmFyUHJvcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkMxMjRFRkUwQzI2NDQ3QTAwOUUyMzQ5IC8qIEpTQmFyUHJvcC5oICovOyB9
OwogCQlCQzEyOEE3MzEzN0M4NjdDMDBDQUM4NDUgLyogUmVuZGVyR3JpZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxMjhBNzIxMzdDODY3QzAwQ0FD
ODQ1IC8qIFJlbmRlckdyaWQuaCAqLzsgfTsKIAkJQkMxNDAyOEIwRTgzNjgwODAwMzE5NzE3IC8q
IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzE0MDI4OTBFODM2ODA4MDAzMTk3MTcgLyogU2Nyb2xsYmFyVGhl
bWVDb21wb3NpdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlCQzE5Q0RGMjI3NkZGQzZEMDA1M0Y3MzQgLyogR3JhZGllbnRDR0FkYXB0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMTlDREYwMjc2
RkZCMjYwMDUzRjczNCAvKiBHcmFkaWVudENHQWRhcHRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMUE3RDk4MThGQ0I1QjAwMDQyMTg3OSAv
KiBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxQTdEOTYxOEZDQjVCMDAwNDIxODc5IC8q
IFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmggKi87IH07CiAJCUJDMjI3Mjg3
MEU4MkU3MDcwMEU3Rjk3NSAvKiBTdHlsZVJlZmxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjI3Mjg2MEU4MkU3MDcwMEU3Rjk3NSAvKiBT
dHlsZVJlZmxlY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlCQzIyNzJBMjBFODJFODdDMDBFN0Y5NzUgLyogQ3Vyc29yRGF0YS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyMjcyQTEwRTgyRTg3
QzAwRTdGOTc1IC8qIEN1cnNvckRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMTUxMTMsNiArMTUxMTQsOCBAQAogCQlCQzEyOEIwMDEzN0M4
RDQ2MDBDQUM4NDUgLyogUmVuZGVyR3JpZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZW5kZXJHcmlkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkMxNDAyODgwRTgzNjgwODAwMzE5NzE3IC8qIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbGJhclRoZW1lQ29tcG9z
aXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMxNDAyODkwRTgzNjgwODAw
MzE5NzE3IC8qIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUJDMTlDREVGMjc2RkZCMjYwMDUzRjczNCAvKiBHcmFkaWVudENHQWRhcHRv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFkaWVudENHQWRhcHRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMTlDREYwMjc2RkZCMjYwMDUzRjczNCAvKiBHcmFkaWVu
dENHQWRhcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFkaWVudENHQWRhcHRvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzFBN0Q5NTE4RkNCNUIwMDA0MjE4NzkgLyogUmVuZGVy
TXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzFBN0Q5NjE4RkNCNUIwMDA0MjE4NzkgLyog
UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyMEZCN0UwQzBFOEU2QzAwRDE0NDdGIC8qIEpT
RGVwcmVjYXRlZENTU09NVmFsdWVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTRGVwcmVjYXRlZENTU09NVmFsdWVDdXN0b20uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjg1MzQsNiArMjg1MzcsOCBAQAogCQkJCUIyNzUzNTJDMEIw
NTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RDRy5jcHAgKi8sCiAJCQkJQjI3NTM1MkQwQjA1Mzgx
NDAwMkNFNjRGIC8qIEZsb2F0U2l6ZUNHLmNwcCAqLywKIAkJCQlCQzUzQzYwQTBEQTU2Q0YxMDAy
MUVCNUQgLyogR3JhZGllbnRDRy5jcHAgKi8sCisJCQkJQkMxOUNERUYyNzZGRkIyNjAwNTNGNzM0
IC8qIEdyYWRpZW50Q0dBZGFwdG9yLmNwcCAqLywKKwkJCQlCQzE5Q0RGMDI3NkZGQjI2MDA1M0Y3
MzQgLyogR3JhZGllbnRDR0FkYXB0b3IuaCAqLywKIAkJCQlCMkVEOTc3MDBCMUY1NUNFMDAyNTdE
MEYgLyogR3JhcGhpY3NDb250ZXh0Q0cuY3BwICovLAogCQkJCTkzNDkwN0UzMTI1QkJCQzgwMDdG
MjNBMCAvKiBHcmFwaGljc0NvbnRleHRDRy5oICovLAogCQkJCTZFMjFDNkMxMTEyNjMzOTkwMEE3
QkUwMiAvKiBHcmFwaGljc0NvbnRleHRHTENHLmNwcCAqLywKQEAgLTMzMzA0LDYgKzMzMzA5LDcg
QEAKIAkJCQk4Mzc4ODc4MjI0RDhBNjA5MDAwRDRBNUIgLyogQXVkaW9CdWZmZXJTb3VyY2VPcHRp
b25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA3QzEyQjAyNkY3MDBDMUEzNTkgLyogQXVk
aW9CdXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDdFMTJCMDI2RjcwMEMxQTM1OSAvKiBB
dWRpb0NoYW5uZWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMTlDREYyMjc2RkZDNkQwMDUzRjcz
NCAvKiBHcmFkaWVudENHQWRhcHRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzRUVGM0EyNTc5
OUY4ODAwNjU2M0JCIC8qIEF1ZGlvQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RkQzMTYwMDUxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvQ29udGV4dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTc4NUQ5NjIyNEI3RjczNTAwMTREQjIxIC8qIEF1ZGlvQ29udGV4dExhdGVuY3lDYXRl
Z29yeS5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1BhcnNlckNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VyQ29udGV4dC5jcHAJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
NiwxMCArMTA2LDExIEBAIENTU1BhcnNlckNvbnRleHQ6OkNTU1BhcnNlckNvbnRleHQoY29uc3Qg
RG9jdW1lbnQmIGRvYwogICAgICwgaGFzUHNldWRvQ2xhc3NFbmFibGVkIHsgZG9jdW1lbnQuc2V0
dGluZ3MoKS5oYXNQc2V1ZG9DbGFzc0VuYWJsZWQoKSB9CiAgICAgLCBjYXNjYWRlTGF5ZXJzRW5h
YmxlZCB7IGRvY3VtZW50LnNldHRpbmdzKCkuY3NzQ2FzY2FkZUxheWVyc0VuYWJsZWQoKSB9CiAg
ICAgLCBjb250YWluZXJRdWVyaWVzRW5hYmxlZCB7IGRvY3VtZW50LnNldHRpbmdzKCkuY3NzQ29u
dGFpbmVyUXVlcmllc0VuYWJsZWQoKSB9CisgICAgLCBvdmVyZmxvd0NsaXBFbmFibGVkIHsgZG9j
dW1lbnQuc2V0dGluZ3MoKS5vdmVyZmxvd0NsaXBFbmFibGVkKCkgfQorICAgICwgZ3JhZGllbnRB
bHBoYVByZW11bHRpcGxpZWRJbnRlcnBvbGF0aW9uRW5hYmxlZCB7IGRvY3VtZW50LnNldHRpbmdz
KCkuY3NzR3JhZGllbnRBbHBoYVByZW11bHRpcGxpZWRJbnRlcnBvbGF0aW9uRW5hYmxlZCgpIH0K
ICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgICwgYXR0YWNobWVudEVuYWJsZWQg
eyBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmF0dGFjaG1lbnRFbGVt
ZW50RW5hYmxlZCgpIH0KICNlbmRpZgotICAgICwgb3ZlcmZsb3dDbGlwRW5hYmxlZCB7IGRvY3Vt
ZW50LnNldHRpbmdzKCkub3ZlcmZsb3dDbGlwRW5hYmxlZCgpIH0KIHsKIH0KIApAQCAtMTUzLDEw
ICsxNTQsMTEgQEAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGEsIGNv
bnN0IENTU1BhCiAgICAgICAgICYmIGEuaGFzUHNldWRvQ2xhc3NFbmFibGVkID09IGIuaGFzUHNl
dWRvQ2xhc3NFbmFibGVkCiAgICAgICAgICYmIGEuY2FzY2FkZUxheWVyc0VuYWJsZWQgPT0gYi5j
YXNjYWRlTGF5ZXJzRW5hYmxlZAogICAgICAgICAmJiBhLmNvbnRhaW5lclF1ZXJpZXNFbmFibGVk
ID09IGIuY29udGFpbmVyUXVlcmllc0VuYWJsZWQKKyAgICAgICAgJiYgYS5vdmVyZmxvd0NsaXBF
bmFibGVkID09IGIub3ZlcmZsb3dDbGlwRW5hYmxlZAorICAgICAgICAmJiBhLmdyYWRpZW50QWxw
aGFQcmVtdWx0aXBsaWVkSW50ZXJwb2xhdGlvbkVuYWJsZWQgPT0gYi5ncmFkaWVudEFscGhhUHJl
bXVsdGlwbGllZEludGVycG9sYXRpb25FbmFibGVkCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxF
TUVOVCkKICAgICAgICAgJiYgYS5hdHRhY2htZW50RW5hYmxlZCA9PSBiLmF0dGFjaG1lbnRFbmFi
bGVkCiAjZW5kaWYKLSAgICAgICAgJiYgYS5vdmVyZmxvd0NsaXBFbmFibGVkID09IGIub3ZlcmZs
b3dDbGlwRW5hYmxlZAogICAgIDsKIH0KIApAQCAtMTkzLDEyICsxOTUsMTMgQEAgdm9pZCBhZGQo
SGFzaGVyJiBoYXNoZXIsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRlCiAgICAgICAgIHwg
Y29udGV4dC5oYXNQc2V1ZG9DbGFzc0VuYWJsZWQgICAgICAgICAgICAgICAgICAgICA8PCAyMgog
ICAgICAgICB8IGNvbnRleHQuY2FzY2FkZUxheWVyc0VuYWJsZWQgICAgICAgICAgICAgICAgICAg
ICAgPDwgMjMKICAgICAgICAgfCBjb250ZXh0LmNvbnRhaW5lclF1ZXJpZXNFbmFibGVkICAgICAg
ICAgICAgICAgICAgIDw8IDI0CisgICAgICAgIHwgY29udGV4dC5vdmVyZmxvd0NsaXBFbmFibGVk
ICAgICAgICAgICAgICAgICAgICAgICA8PCAyNQorICAgICAgICB8IGNvbnRleHQuZ3JhZGllbnRB
bHBoYVByZW11bHRpcGxpZWRJbnRlcnBvbGF0aW9uRW5hYmxlZCA8PCAyNgogI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgICAgIHwgY29udGV4dC5hdHRhY2htZW50RW5hYmxlZCAg
ICAgICAgICAgICAgICAgICAgICAgICA8PCAyNQorICAgICAgICB8IGNvbnRleHQuYXR0YWNobWVu
dEVuYWJsZWQgICAgICAgICAgICAgICAgICAgICAgICAgPDwgMjcKICNlbmRpZgotICAgICAgICB8
IGNvbnRleHQub3ZlcmZsb3dDbGlwRW5hYmxlZCAgICAgICAgICAgICAgICAgICAgICAgPDwgMjYK
LSAgICAgICAgfCBjb250ZXh0LmFjY2VudENvbG9yRW5hYmxlZCAgICAgICAgICAgICAgICAgICAg
ICAgIDw8IDI3Ci0gICAgICAgIHwgY29udGV4dC5tb2RlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8PCAyODsgLy8gVGhpcyBpcyBtdWx0aXBsZSBiaXRzLCBzbyBrZWVwIGl0
IGxhc3QuCisgICAgICAgIHwgY29udGV4dC5hY2NlbnRDb2xvckVuYWJsZWQgICAgICAgICAgICAg
ICAgICAgICAgICA8PCAyOAorICAgICAgICB8IGNvbnRleHQubW9kZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPDwgMjk7IC8vIFRoaXMgaXMgbXVsdGlwbGUgYml0cywgc28g
a2VlcCBpdCBsYXN0LgogICAgIGFkZChoYXNoZXIsIGNvbnRleHQuYmFzZVVSTCwgY29udGV4dC5j
aGFyc2V0LCBiaXRzKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
YXJzZXJDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXJDb250ZXh0LmgJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSwxMyArODUs
MTMgQEAgc3RydWN0IENTU1BhcnNlckNvbnRleHQgewogICAgIGJvb2wgaGFzUHNldWRvQ2xhc3NF
bmFibGVkIHsgZmFsc2UgfTsKICAgICBib29sIGNhc2NhZGVMYXllcnNFbmFibGVkIHsgZmFsc2Ug
fTsKICAgICBib29sIGNvbnRhaW5lclF1ZXJpZXNFbmFibGVkIHsgZmFsc2UgfTsKKyAgICBib29s
IG92ZXJmbG93Q2xpcEVuYWJsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgZ3JhZGllbnRBbHBoYVBy
ZW11bHRpcGxpZWRJbnRlcnBvbGF0aW9uRW5hYmxlZCB7IGZhbHNlIH07CiAKICAgICAvLyBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzLgogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAg
Ym9vbCBhdHRhY2htZW50RW5hYmxlZCB7IGZhbHNlIH07CiAjZW5kaWYKLQotICAgIGJvb2wgb3Zl
cmZsb3dDbGlwRW5hYmxlZCB7IGZhbHNlIH07CiAKICAgICBDU1NQYXJzZXJDb250ZXh0KENTU1Bh
cnNlck1vZGUsIGNvbnN0IFVSTCYgYmFzZVVSTCA9IFVSTCgpKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBDU1NQYXJzZXJDb250ZXh0KGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJMJiBiYXNlVVJMID0g
VVJMKCksIGNvbnN0IFN0cmluZyYgY2hhcnNldCA9IGVtcHR5U3RyaW5nKCkpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzLmNwcAkocmV2aXNpb24gMjg3MjMzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTQ2LDE1ICsy
OTQ2LDIwIEBAIHN0YXRpYyBib29sIGNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnRDb2xvclN0b3Ao
Q1NTUGFycwogICAgIHJldHVybiBzdG9wLmNvbG9yICYmIGFyZ3MuYXRFbmQoKTsKIH0KIAorc3Rh
dGljIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZ3JhZGllbnRBbHBoYVByZW11bHRpcGxpY2F0aW9u
KGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCit7CisgICAgcmV0dXJuIGNvbnRleHQu
Z3JhZGllbnRBbHBoYVByZW11bHRpcGxpZWRJbnRlcnBvbGF0aW9uRW5hYmxlZCA/IEFscGhhUHJl
bXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQgOiBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpV
bnByZW11bHRpcGxpZWQ7Cit9CisKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVEZXBy
ZWNhdGVkR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2Vy
Q29udGV4dCYgY29udGV4dCkKIHsKICAgICBSZWZQdHI8Q1NTR3JhZGllbnRWYWx1ZT4gcmVzdWx0
OwogICAgIENTU1ZhbHVlSUQgaWQgPSBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCku
aWQoKTsKICAgICBib29sIGlzRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50ID0gKGlkID09IENTU1Zh
bHVlUmFkaWFsKTsKICAgICBpZiAoaXNEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQpCi0gICAgICAg
IHJlc3VsdCA9IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZShOb25SZXBlYXRpbmcsIENT
U0RlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudCwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNS
R0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CisgICAg
ICAgIHJlc3VsdCA9IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZShOb25SZXBlYXRpbmcs
IENTU0RlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudCwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6
OlNSR0IgeyB9LCBncmFkaWVudEFscGhhUHJlbXVsdGlwbGljYXRpb24oY29udGV4dCkgfSk7CiAg
ICAgZWxzZSBpZiAoaWQgPT0gQ1NTVmFsdWVMaW5lYXIpCi0gICAgICAgIHJlc3VsdCA9IENTU0xp
bmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZShOb25SZXBlYXRpbmcsIENTU0RlcHJlY2F0ZWRMaW5l
YXJHcmFkaWVudCwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CisgICAgICAgIHJlc3VsdCA9IENT
U0xpbmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZShOb25SZXBlYXRpbmcsIENTU0RlcHJlY2F0ZWRM
aW5lYXJHcmFkaWVudCwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBncmFk
aWVudEFscGhhUHJlbXVsdGlwbGljYXRpb24oY29udGV4dCkgfSk7CiAgICAgaWYgKCFyZXN1bHQg
fHwgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCkBAIC0zMDU0LDcgKzMwNTksNyBAQCBzdGF0aWMgYm9vbCBjb25zdW1lR3Jh
ZGllbnRDb2xvclN0b3BzKENTU1BhcnNlclRva2VuUmEKIAogc3RhdGljIFJlZlB0cjxDU1NWYWx1
ZT4gY29uc3VtZURlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBh
cmdzLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBDU1NHcmFkaWVudFJlcGVhdCBy
ZXBlYXRpbmcpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpj
cmVhdGUocmVwZWF0aW5nLCBDU1NQcmVmaXhlZFJhZGlhbEdyYWRpZW50LCB7IENvbG9ySW50ZXJw
b2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVs
dGlwbGllZCB9KTsKKyAgICBhdXRvIHJlc3VsdCA9IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNy
ZWF0ZShyZXBlYXRpbmcsIENTU1ByZWZpeGVkUmFkaWFsR3JhZGllbnQsIHsgQ29sb3JJbnRlcnBv
bGF0aW9uTWV0aG9kOjpTUkdCIHsgfSwgZ3JhZGllbnRBbHBoYVByZW11bHRpcGxpY2F0aW9uKGNv
bnRleHQpIH0pOwogCiAgICAgYXV0byBjZW50ZXJDb29yZGluYXRlID0gY29uc3VtZU9uZU9yVHdv
VmFsdWVkUG9zaXRpb25Db29yZGluYXRlcyhhcmdzLCBjb250ZXh0Lm1vZGUsIFVuaXRsZXNzUXVp
cms6OkZvcmJpZCk7CiAgICAgaWYgKGNlbnRlckNvb3JkaW5hdGUgJiYgIWNvbnN1bWVDb21tYUlu
Y2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCkBAIC0zMDk4LDcgKzMxMDMsNyBAQCBzdGF0aWMgUmVm
UHRyPENTU1ZhbHVlPiBjb25zdW1lRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW4KIAogc3RhdGljIFJl
ZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVJhZGlhbEdyYWRpZW50KENTU1BhcnNlclRva2VuUmFuZ2Um
IGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIENTU0dyYWRpZW50UmVwZWF0
IHJlcGVhdGluZykKIHsKLSAgICBSZWZQdHI8Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZT4gcmVzdWx0
ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGluZywgQ1NTUmFkaWFsR3Jh
ZGllbnQsIHsgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCIHsgfSwgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkIH0pOworICAgIFJlZlB0cjxDU1NSYWRpYWxHcmFk
aWVudFZhbHVlPiByZXN1bHQgPSBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGUocmVwZWF0
aW5nLCBDU1NSYWRpYWxHcmFkaWVudCwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0Ig
eyB9LCBncmFkaWVudEFscGhhUHJlbXVsdGlwbGljYXRpb24oY29udGV4dCkgfSk7CiAKICAgICBS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNoYXBlOwogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gc2l6ZUtleXdvcmQ7CkBAIC0zMTg2LDcgKzMxOTEsNyBAQCBzdGF0aWMgUmVmUHRyPENT
U1ZhbHVlPiBjb25zdW1lUmFkaWFsR3JhZGllbnQoQ1NTUGFyc2UKIAogc3RhdGljIFJlZlB0cjxD
U1NWYWx1ZT4gY29uc3VtZUxpbmVhckdyYWRpZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3Ms
IGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIENTU0dyYWRpZW50UmVwZWF0IHJlcGVh
dGluZywgQ1NTR3JhZGllbnRUeXBlIGdyYWRpZW50VHlwZSkKIHsKLSAgICBSZWZQdHI8Q1NTTGlu
ZWFyR3JhZGllbnRWYWx1ZT4gcmVzdWx0ID0gQ1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRl
KHJlcGVhdGluZywgZ3JhZGllbnRUeXBlLCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JH
QiB7IH0sIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKKyAgICBS
ZWZQdHI8Q1NTTGluZWFyR3JhZGllbnRWYWx1ZT4gcmVzdWx0ID0gQ1NTTGluZWFyR3JhZGllbnRW
YWx1ZTo6Y3JlYXRlKHJlcGVhdGluZywgZ3JhZGllbnRUeXBlLCB7IENvbG9ySW50ZXJwb2xhdGlv
bk1ldGhvZDo6U1JHQiB7IH0sIGdyYWRpZW50QWxwaGFQcmVtdWx0aXBsaWNhdGlvbihjb250ZXh0
KSB9KTsKIAogICAgIGJvb2wgZXhwZWN0Q29tbWEgPSB0cnVlOwogICAgIFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gYW5nbGUgPSBjb25zdW1lQW5nbGUoYXJncywgY29udGV4dC5tb2RlLCBVbml0
bGVzc1F1aXJrOjpGb3JiaWQsIFVuaXRsZXNzWmVyb1F1aXJrOjpBbGxvdyk7CkBAIC0zMjIwLDcg
KzMyMjUsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lTGluZWFyR3JhZGllbnQo
Q1NTUGFyc2UKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVDb25pY0dyYWRpZW50KENT
U1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQs
IENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdGluZykKIHsKICNpZiBFTkFCTEUoQ1NTX0NPTklDX0dS
QURJRU5UUykKLSAgICBSZWZQdHI8Q1NTQ29uaWNHcmFkaWVudFZhbHVlPiByZXN1bHQgPSBDU1ND
b25pY0dyYWRpZW50VmFsdWU6OmNyZWF0ZShyZXBlYXRpbmcsIHsgQ29sb3JJbnRlcnBvbGF0aW9u
TWV0aG9kOjpTUkdCIHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVk
IH0pOworICAgIFJlZlB0cjxDU1NDb25pY0dyYWRpZW50VmFsdWU+IHJlc3VsdCA9IENTU0Nvbmlj
R3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGluZywgeyBDb2xvckludGVycG9sYXRpb25NZXRo
b2Q6OlNSR0IgeyB9LCBncmFkaWVudEFscGhhUHJlbXVsdGlwbGljYXRpb24oY29udGV4dCkgfSk7
CiAKICAgICBib29sIGV4cGVjdENvbW1hID0gZmFsc2U7CiAgICAgaWYgKGFyZ3MucGVlaygpLnR5
cGUoKSA9PSBJZGVudFRva2VuKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvckNvbXBvbmVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvckNvbXBvbmVudHMuaAkocmV2aXNpb24gMjg3MjMzKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb21wb25lbnRzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY4LDYgKzY4LDggQEAgc3RydWN0IENvbG9yQ29tcG9uZW50cyB7CiAgICAgdGVt
cGxhdGU8c2l6ZV90IFN0YXJ0LCBzaXplX3QgRW5kPgogICAgIGNvbnN0ZXhwciBDb2xvckNvbXBv
bmVudHM8VCwgRW5kIC0gU3RhcnQ+IHN1YnNldCgpIGNvbnN0OwogCisgICAgY29uc3RleHByIHNp
emVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gU2l6ZTsgfQorCiAgICAgc3RkOjphcnJheTxULCBO
PiBjb21wb25lbnRzOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JJbnRlcnBvbGF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JJbnRlcnBvbGF0aW9uLmgJKHJldmlzaW9uIDI4NzIzMykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9ySW50ZXJwb2xhdGlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiwxNCArMzYsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBz
dGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiBmaXh1cEh1ZUNvbXBvbmVudHNQcmlvclRvSW50ZXJwb2xh
dGlvbihIdWVJbnRlcnBvbGF0aW9uTWV0aG9kLCBmbG9hdCwgZmxvYXQpOwogCi10ZW1wbGF0ZTxz
aXplX3QgSSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBhbHBoYVByZW11bHRpcGxpY2F0aW9uLCB0
eXBlbmFtZSBJbnRlcnBvbGF0aW9uTWV0aG9kPgotc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gcHJl
SW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb25Gb3JDb21wb25lbnQoSW50ZXJwb2xhdGlvbk1ldGhv
ZCBpbnRlcnBvbGF0aW9uTWV0aG9kLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbG9yQ29t
cG9uZW50czEsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gY29sb3JDb21wb25lbnRzMikKK3Rl
bXBsYXRlPHNpemVfdCBJLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGFscGhhUHJlbXVsdGlwbGlj
YXRpb24sIHR5cGVuYW1lIEludGVycG9sYXRpb25NZXRob2RDb2xvclNwYWNlPgorc3RkOjpwYWly
PGZsb2F0LCBmbG9hdD4gcHJlSW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb25Gb3JDb21wb25lbnQo
SW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2UgaW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3Bh
Y2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gY29sb3JDb21wb25lbnRzMSwgQ29sb3JDb21w
b25lbnRzPGZsb2F0LCA0PiBjb2xvckNvbXBvbmVudHMyKQogewotICAgIHVzaW5nIENvbG9yVHlw
ZSA9IHR5cGVuYW1lIEludGVycG9sYXRpb25NZXRob2Q6OkNvbG9yVHlwZTsKKyAgICB1c2luZyBD
b2xvclR5cGUgPSB0eXBlbmFtZSBJbnRlcnBvbGF0aW9uTWV0aG9kQ29sb3JTcGFjZTo6Q29sb3JU
eXBlOwogICAgIGNvbnN0ZXhwciBhdXRvIGNvbXBvbmVudEluZm8gPSBDb2xvclR5cGU6Ok1vZGVs
Ojpjb21wb25lbnRJbmZvOwogCiAgICAgaWYgY29uc3RleHByIChjb21wb25lbnRJbmZvW0ldLnR5
cGUgPT0gQ29sb3JDb21wb25lbnRUeXBlOjpBbmdsZSkKLSAgICAgICAgcmV0dXJuIGZpeHVwSHVl
Q29tcG9uZW50c1ByaW9yVG9JbnRlcnBvbGF0aW9uKGludGVycG9sYXRpb25NZXRob2QuaHVlSW50
ZXJwb2xhdGlvbk1ldGhvZCwgY29sb3JDb21wb25lbnRzMVtJXSwgY29sb3JDb21wb25lbnRzMltJ
XSk7CisgICAgICAgIHJldHVybiBmaXh1cEh1ZUNvbXBvbmVudHNQcmlvclRvSW50ZXJwb2xhdGlv
bihpbnRlcnBvbGF0aW9uTWV0aG9kQ29sb3JTcGFjZS5odWVJbnRlcnBvbGF0aW9uTWV0aG9kLCBj
b2xvckNvbXBvbmVudHMxW0ldLCBjb2xvckNvbXBvbmVudHMyW0ldKTsKICAgICBlbHNlIHsKICAg
ICAgICAgaWYgY29uc3RleHByIChhbHBoYVByZW11bHRpcGxpY2F0aW9uID09IEFscGhhUHJlbXVs
dGlwbGljYXRpb246OlByZW11bHRpcGxpZWQpCiAgICAgICAgICAgICByZXR1cm4geyBjb2xvckNv
bXBvbmVudHMxW0ldICogY29sb3JDb21wb25lbnRzMVszXSwgY29sb3JDb21wb25lbnRzMltJXSAq
IGNvbG9yQ29tcG9uZW50czJbM10gfTsKQEAgLTUyLDEyICs1MiwxMiBAQCBzdGQ6OnBhaXI8Zmxv
YXQsIGZsb2F0PiBwcmVJbnRlcnBvbGF0aW9uTm9ybWFsaXphdGlvbkYKICAgICB9CiB9CiAKLXRl
bXBsYXRlPEFscGhhUHJlbXVsdGlwbGljYXRpb24gYWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwgdHlw
ZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhvZD4KLXN0ZDo6cGFpcjxDb2xvckNvbXBvbmVudHM8Zmxv
YXQsIDQ+LCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+PiBwcmVJbnRlcnBvbGF0aW9uTm9ybWFs
aXphdGlvbihJbnRlcnBvbGF0aW9uTWV0aG9kIGludGVycG9sYXRpb25NZXRob2QsIENvbG9yQ29t
cG9uZW50czxmbG9hdCwgND4gY29sb3JDb21wb25lbnRzMSwgQ29sb3JDb21wb25lbnRzPGZsb2F0
LCA0PiBjb2xvckNvbXBvbmVudHMyKQordGVtcGxhdGU8QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBh
bHBoYVByZW11bHRpcGxpY2F0aW9uLCB0eXBlbmFtZSBJbnRlcnBvbGF0aW9uTWV0aG9kQ29sb3JT
cGFjZT4KK3N0ZDo6cGFpcjxDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+LCBDb2xvckNvbXBvbmVu
dHM8ZmxvYXQsIDQ+PiBwcmVJbnRlcnBvbGF0aW9uTm9ybWFsaXphdGlvbihJbnRlcnBvbGF0aW9u
TWV0aG9kQ29sb3JTcGFjZSBpbnRlcnBvbGF0aW9uTWV0aG9kQ29sb3JTcGFjZSwgQ29sb3JDb21w
b25lbnRzPGZsb2F0LCA0PiBjb2xvckNvbXBvbmVudHMxLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQs
IDQ+IGNvbG9yQ29tcG9uZW50czIpCiB7Ci0gICAgYXV0byBbY29sb3JBMCwgY29sb3JCMF0gPSBw
cmVJbnRlcnBvbGF0aW9uTm9ybWFsaXphdGlvbkZvckNvbXBvbmVudDwwLCBhbHBoYVByZW11bHRp
cGxpY2F0aW9uPihpbnRlcnBvbGF0aW9uTWV0aG9kLCBjb2xvckNvbXBvbmVudHMxLCBjb2xvckNv
bXBvbmVudHMyKTsKLSAgICBhdXRvIFtjb2xvckExLCBjb2xvckIxXSA9IHByZUludGVycG9sYXRp
b25Ob3JtYWxpemF0aW9uRm9yQ29tcG9uZW50PDEsIGFscGhhUHJlbXVsdGlwbGljYXRpb24+KGlu
dGVycG9sYXRpb25NZXRob2QsIGNvbG9yQ29tcG9uZW50czEsIGNvbG9yQ29tcG9uZW50czIpOwot
ICAgIGF1dG8gW2NvbG9yQTIsIGNvbG9yQjJdID0gcHJlSW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRp
b25Gb3JDb21wb25lbnQ8MiwgYWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4oaW50ZXJwb2xhdGlvbk1l
dGhvZCwgY29sb3JDb21wb25lbnRzMSwgY29sb3JDb21wb25lbnRzMik7CisgICAgYXV0byBbY29s
b3JBMCwgY29sb3JCMF0gPSBwcmVJbnRlcnBvbGF0aW9uTm9ybWFsaXphdGlvbkZvckNvbXBvbmVu
dDwwLCBhbHBoYVByZW11bHRpcGxpY2F0aW9uPihpbnRlcnBvbGF0aW9uTWV0aG9kQ29sb3JTcGFj
ZSwgY29sb3JDb21wb25lbnRzMSwgY29sb3JDb21wb25lbnRzMik7CisgICAgYXV0byBbY29sb3JB
MSwgY29sb3JCMV0gPSBwcmVJbnRlcnBvbGF0aW9uTm9ybWFsaXphdGlvbkZvckNvbXBvbmVudDwx
LCBhbHBoYVByZW11bHRpcGxpY2F0aW9uPihpbnRlcnBvbGF0aW9uTWV0aG9kQ29sb3JTcGFjZSwg
Y29sb3JDb21wb25lbnRzMSwgY29sb3JDb21wb25lbnRzMik7CisgICAgYXV0byBbY29sb3JBMiwg
Y29sb3JCMl0gPSBwcmVJbnRlcnBvbGF0aW9uTm9ybWFsaXphdGlvbkZvckNvbXBvbmVudDwyLCBh
bHBoYVByZW11bHRpcGxpY2F0aW9uPihpbnRlcnBvbGF0aW9uTWV0aG9kQ29sb3JTcGFjZSwgY29s
b3JDb21wb25lbnRzMSwgY29sb3JDb21wb25lbnRzMik7CiAKICAgICByZXR1cm4gewogICAgICAg
ICB7IGNvbG9yQTAsIGNvbG9yQTEsIGNvbG9yQTIsIGNvbG9yQ29tcG9uZW50czFbM10gfSwKQEAg
LTY4LDEwICs2OCwxMCBAQCBzdGQ6OnBhaXI8Q29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiwgQ29s
b3JDb21wb25lbnRzPGYKIAogLy8gTUFSSzogLSBQb3N0LWludGVycG9sYXRpb24gbm9ybWFsaXph
dGlvbi9maXh1cAogCi10ZW1wbGF0ZTxzaXplX3QgSSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBh
bHBoYVByZW11bHRpcGxpY2F0aW9uLCB0eXBlbmFtZSBJbnRlcnBvbGF0aW9uTWV0aG9kPgotZmxv
YXQgcG9zdEludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uRm9yQ29tcG9uZW50KEludGVycG9sYXRp
b25NZXRob2QsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gY29sb3JDb21wb25lbnRzKQordGVt
cGxhdGU8c2l6ZV90IEksIEFscGhhUHJlbXVsdGlwbGljYXRpb24gYWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiwgdHlwZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2U+CitmbG9hdCBwb3N0
SW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb25Gb3JDb21wb25lbnQoSW50ZXJwb2xhdGlvbk1ldGhv
ZENvbG9yU3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gY29sb3JDb21wb25lbnRzKQog
ewotICAgIHVzaW5nIENvbG9yVHlwZSA9IHR5cGVuYW1lIEludGVycG9sYXRpb25NZXRob2Q6OkNv
bG9yVHlwZTsKKyAgICB1c2luZyBDb2xvclR5cGUgPSB0eXBlbmFtZSBJbnRlcnBvbGF0aW9uTWV0
aG9kQ29sb3JTcGFjZTo6Q29sb3JUeXBlOwogICAgIGNvbnN0ZXhwciBhdXRvIGNvbXBvbmVudElu
Zm8gPSBDb2xvclR5cGU6Ok1vZGVsOjpjb21wb25lbnRJbmZvOwogCiAgICAgaWYgY29uc3RleHBy
IChjb21wb25lbnRJbmZvW0ldLnR5cGUgIT0gQ29sb3JDb21wb25lbnRUeXBlOjpBbmdsZSAmJiBh
bHBoYVByZW11bHRpcGxpY2F0aW9uID09IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRp
cGxpZWQpIHsKQEAgLTgyLDEzICs4MiwxMyBAQCBmbG9hdCBwb3N0SW50ZXJwb2xhdGlvbk5vcm1h
bGl6YXRpb25Gb3JDb21wb25lbnQoSW50ZXIKICAgICAgICAgcmV0dXJuIGNvbG9yQ29tcG9uZW50
c1tJXTsKIH0KIAotdGVtcGxhdGU8QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBhbHBoYVByZW11bHRp
cGxpY2F0aW9uLCB0eXBlbmFtZSBJbnRlcnBvbGF0aW9uTWV0aG9kPgotQ29sb3JDb21wb25lbnRz
PGZsb2F0LCA0PiBwb3N0SW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb24oSW50ZXJwb2xhdGlvbk1l
dGhvZCBpbnRlcnBvbGF0aW9uTWV0aG9kLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbG9y
Q29tcG9uZW50cykKK3RlbXBsYXRlPEFscGhhUHJlbXVsdGlwbGljYXRpb24gYWxwaGFQcmVtdWx0
aXBsaWNhdGlvbiwgdHlwZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2U+CitDb2xv
ckNvbXBvbmVudHM8ZmxvYXQsIDQ+IHBvc3RJbnRlcnBvbGF0aW9uTm9ybWFsaXphdGlvbihJbnRl
cnBvbGF0aW9uTWV0aG9kQ29sb3JTcGFjZSBpbnRlcnBvbGF0aW9uTWV0aG9kQ29sb3JTcGFjZSwg
Q29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBjb2xvckNvbXBvbmVudHMpCiB7CiAgICAgcmV0dXJu
IHsKLSAgICAgICAgcG9zdEludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uRm9yQ29tcG9uZW50PDAs
IGFscGhhUHJlbXVsdGlwbGljYXRpb24+KGludGVycG9sYXRpb25NZXRob2QsIGNvbG9yQ29tcG9u
ZW50cyksCi0gICAgICAgIHBvc3RJbnRlcnBvbGF0aW9uTm9ybWFsaXphdGlvbkZvckNvbXBvbmVu
dDwxLCBhbHBoYVByZW11bHRpcGxpY2F0aW9uPihpbnRlcnBvbGF0aW9uTWV0aG9kLCBjb2xvckNv
bXBvbmVudHMpLAotICAgICAgICBwb3N0SW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb25Gb3JDb21w
b25lbnQ8MiwgYWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4oaW50ZXJwb2xhdGlvbk1ldGhvZCwgY29s
b3JDb21wb25lbnRzKSwKKyAgICAgICAgcG9zdEludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uRm9y
Q29tcG9uZW50PDAsIGFscGhhUHJlbXVsdGlwbGljYXRpb24+KGludGVycG9sYXRpb25NZXRob2RD
b2xvclNwYWNlLCBjb2xvckNvbXBvbmVudHMpLAorICAgICAgICBwb3N0SW50ZXJwb2xhdGlvbk5v
cm1hbGl6YXRpb25Gb3JDb21wb25lbnQ8MSwgYWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4oaW50ZXJw
b2xhdGlvbk1ldGhvZENvbG9yU3BhY2UsIGNvbG9yQ29tcG9uZW50cyksCisgICAgICAgIHBvc3RJ
bnRlcnBvbGF0aW9uTm9ybWFsaXphdGlvbkZvckNvbXBvbmVudDwyLCBhbHBoYVByZW11bHRpcGxp
Y2F0aW9uPihpbnRlcnBvbGF0aW9uTWV0aG9kQ29sb3JTcGFjZSwgY29sb3JDb21wb25lbnRzKSwK
ICAgICAgICAgY29sb3JDb21wb25lbnRzWzNdCiAgICAgfTsKICB9CkBAIC05NiwxMSArOTYsMTEg
QEAgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBwb3N0SW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRp
CiAKIC8vIE1BUks6IC0gSW50ZXJwb2xhdGlvbgogCi10ZW1wbGF0ZTxBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIGFscGhhUHJlbXVsdGlwbGljYXRpb24sIHR5cGVuYW1lIEludGVycG9sYXRpb25NZXRo
b2Q+Ci10eXBlbmFtZSBJbnRlcnBvbGF0aW9uTWV0aG9kOjpDb2xvclR5cGUgaW50ZXJwb2xhdGVD
b2xvckNvbXBvbmVudHMoSW50ZXJwb2xhdGlvbk1ldGhvZCBpbnRlcnBvbGF0aW9uTWV0aG9kLCB0
eXBlbmFtZSBJbnRlcnBvbGF0aW9uTWV0aG9kOjpDb2xvclR5cGUgY29sb3IxLCBkb3VibGUgY29s
b3IxTXVsdGlwbGllciwgdHlwZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhvZDo6Q29sb3JUeXBlIGNv
bG9yMiwgZG91YmxlIGNvbG9yMk11bHRpcGxpZXIpCit0ZW1wbGF0ZTxBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIGFscGhhUHJlbXVsdGlwbGljYXRpb24sIHR5cGVuYW1lIEludGVycG9sYXRpb25NZXRo
b2RDb2xvclNwYWNlPgordHlwZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2U6OkNv
bG9yVHlwZSBpbnRlcnBvbGF0ZUNvbG9yQ29tcG9uZW50cyhJbnRlcnBvbGF0aW9uTWV0aG9kQ29s
b3JTcGFjZSBpbnRlcnBvbGF0aW9uTWV0aG9kQ29sb3JTcGFjZSwgdHlwZW5hbWUgSW50ZXJwb2xh
dGlvbk1ldGhvZENvbG9yU3BhY2U6OkNvbG9yVHlwZSBjb2xvcjEsIGRvdWJsZSBjb2xvcjFNdWx0
aXBsaWVyLCB0eXBlbmFtZSBJbnRlcnBvbGF0aW9uTWV0aG9kQ29sb3JTcGFjZTo6Q29sb3JUeXBl
IGNvbG9yMiwgZG91YmxlIGNvbG9yMk11bHRpcGxpZXIpCiB7CiAgICAgLy8gMS4gQXBwbHkgcHJl
LWludGVycG9sYXRpb24gdHJhbnNmb3JtcyAoaHVlIGZpeHVwIGZvciBwb2xhciBjb2xvciBzcGFj
ZXMsIGFscGhhIHByZW11bHRpcGxpY2F0aW9uIGlmIHJlcXVpcmVkKS4KLSAgICBhdXRvIFtub3Jt
YWxpemVkQ29sb3JDb21wb25lbnRzMSwgbm9ybWFsaXplZENvbG9yQ29tcG9uZW50czJdID0gcHJl
SW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb248YWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4oaW50ZXJw
b2xhdGlvbk1ldGhvZCwgYXNDb2xvckNvbXBvbmVudHMoY29sb3IxKSwgYXNDb2xvckNvbXBvbmVu
dHMoY29sb3IyKSk7CisgICAgYXV0byBbbm9ybWFsaXplZENvbG9yQ29tcG9uZW50czEsIG5vcm1h
bGl6ZWRDb2xvckNvbXBvbmVudHMyXSA9IHByZUludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uPGFs
cGhhUHJlbXVsdGlwbGljYXRpb24+KGludGVycG9sYXRpb25NZXRob2RDb2xvclNwYWNlLCBhc0Nv
bG9yQ29tcG9uZW50cyhjb2xvcjEpLCBhc0NvbG9yQ29tcG9uZW50cyhjb2xvcjIpKTsKIAogICAg
IC8vIDIuIEludGVycG9sYXRlIHVzaW5nIHRoZSBub3JtYWxpemVkIGNvbXBvbmVudHMuCiAgICAg
YXV0byBpbnRlcnBvbGF0ZWRDb2xvckNvbXBvbmVudHMgPSBtYXBDb2xvckNvbXBvbmVudHMoWyZd
IChhdXRvIGNvbXBvbmVudEZyb21Db2xvcjEsIGF1dG8gY29tcG9uZW50RnJvbUNvbG9yMikgLT4g
ZmxvYXQgewpAQCAtMTA4LDEwICsxMDgsNDQgQEAgdHlwZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhv
ZDo6Q29sb3JUeXBlIGludGVycG9sYXRlQ29sCiAgICAgfSwgbm9ybWFsaXplZENvbG9yQ29tcG9u
ZW50czEsIG5vcm1hbGl6ZWRDb2xvckNvbXBvbmVudHMyKTsKIAogICAgIC8vIDMuIEFwcGx5IHBv
c3QtaW50ZXJwb2xhdGlvbiB0cmFzZm9ybXMgKGFscGhhIHVuLXByZW11bHRpcGxpY2F0aW9uIGlm
IHJlcXVpcmVkKS4KLSAgICBhdXRvIG5vcm1hbGl6ZWRJbnRlcnBvbGF0ZWRDb2xvckNvbXBvbmVu
dHMgPSBwb3N0SW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb248YWxwaGFQcmVtdWx0aXBsaWNhdGlv
bj4oaW50ZXJwb2xhdGlvbk1ldGhvZCwgaW50ZXJwb2xhdGVkQ29sb3JDb21wb25lbnRzKTsKKyAg
ICBhdXRvIG5vcm1hbGl6ZWRJbnRlcnBvbGF0ZWRDb2xvckNvbXBvbmVudHMgPSBwb3N0SW50ZXJw
b2xhdGlvbk5vcm1hbGl6YXRpb248YWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4oaW50ZXJwb2xhdGlv
bk1ldGhvZENvbG9yU3BhY2UsIGludGVycG9sYXRlZENvbG9yQ29tcG9uZW50cyk7CiAKICAgICAv
LyA0LiBDcmVhdGUgY29sb3IgdHlwZSBmcm9tIGNvbXBvbmVudHMsIG5vcm1hbGl6aW5nIGFueSBj
b21wb25lbnRzIHRoYXQgbWF5IGJlIG91dCBvZiByYW5nZS4KLSAgICByZXR1cm4gbWFrZUNvbG9y
VHlwZUJ5Tm9ybWFsaXppbmdDb21wb25lbnRzPHR5cGVuYW1lIEludGVycG9sYXRpb25NZXRob2Q6
OkNvbG9yVHlwZT4obm9ybWFsaXplZEludGVycG9sYXRlZENvbG9yQ29tcG9uZW50cyk7CisgICAg
cmV0dXJuIG1ha2VDb2xvclR5cGVCeU5vcm1hbGl6aW5nQ29tcG9uZW50czx0eXBlbmFtZSBJbnRl
cnBvbGF0aW9uTWV0aG9kQ29sb3JTcGFjZTo6Q29sb3JUeXBlPihub3JtYWxpemVkSW50ZXJwb2xh
dGVkQ29sb3JDb21wb25lbnRzKTsKIH0KKy8qCit0ZW1wbGF0ZTxBbHBoYVByZW11bHRpcGxpY2F0
aW9uIGFscGhhUHJlbXVsdGlwbGljYXRpb24sIHR5cGVuYW1lIEludGVycG9sYXRpb25NZXRob2RD
b2xvclNwYWNlPgordHlwZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2U6OkNvbG9y
VHlwZSBpbnRlcnBvbGF0ZUNvbG9yQ29tcG9uZW50cyhJbnRlcnBvbGF0aW9uTWV0aG9kQ29sb3JT
cGFjZSBpbnRlcnBvbGF0aW9uTWV0aG9kQ29sb3JTcGFjZSwgdHlwZW5hbWUgSW50ZXJwb2xhdGlv
bk1ldGhvZENvbG9yU3BhY2U6OkNvbG9yVHlwZSBjb2xvcjEsIHR5cGVuYW1lIEludGVycG9sYXRp
b25NZXRob2RDb2xvclNwYWNlOjpDb2xvclR5cGUgY29sb3IyLCBkb3VibGUgcHJvZ3Jlc3MpCit7
CisgICAgcmV0dXJuIGludGVycG9sYXRlQ29sb3JDb21wb25lbnRzKGludGVycG9sYXRpb25NZXRo
b2RDb2xvclNwYWNlLCBjb2xvcjEsIDEuMCAtIHByb2dyZXNzLCBjb2xvcjIsIHByb2dyZXNzKTsK
Ky59CiAKK2lubGluZSBDb2xvckNvbXBvbmVudHMgaW50ZXJwb2xhdGVDb2xvckNvbXBvbmVudHMo
Q29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCwgQ29sb3Ig
Y29sb3IxLCBkb3VibGUgY29sb3IxTXVsdGlwbGllciwgQ29sb3IgY29sb3IyLCBkb3VibGUgY29s
b3IyTXVsdGlwbGllcikKK3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihjb2xvckludGVycG9s
YXRpb25NZXRob2QuY29sb3JTcGFjZSwKKyAgICAgICAgWyZdIChhdXRvJiBjb2xvclNwYWNlKSB7
CisgICAgICAgICAgICBzd2l0Y2ggKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5hbHBoYVByZW11
bHRpcGxpY2F0aW9uKSB7CisgICAgICAgICAgICBjYXNlIEFscGhhUHJlbXVsdGlwbGljYXRpb246
OlByZW11bHRpcGxpZWQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVycG9sYXRlQ29sb3JD
b21wb25lbnRzPEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQ+KGNvbG9yU3Bh
Y2UsIGNvbG9yMS50b0NvbG9yVHlwZUxvc3N5PENvbG9yVHlwZT4oKSwgY29sb3IxTXVsdGlwbGll
ciwgY29sb3IyLnRvQ29sb3JUeXBlTG9zc3k8Q29sb3JUeXBlPigpLCBjb2xvcjJNdWx0aXBsaWVy
KTsKKyAgICAgICAgICAgIGNhc2UgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBs
aWVkOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcnBvbGF0ZUNvbG9yQ29tcG9uZW50czxB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQ+KGNvbG9yU3BhY2UsIGNvbG9y
MS50b0NvbG9yVHlwZUxvc3N5PENvbG9yVHlwZT4oKSwgY29sb3IxTXVsdGlwbGllciwgY29sb3Iy
LnRvQ29sb3JUeXBlTG9zc3k8Q29sb3JUeXBlPigpLCBjb2xvcjJNdWx0aXBsaWVyKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICk7Cit9CisKK2lubGluZSBDb2xvckNvbXBvbmVudHMg
aW50ZXJwb2xhdGVDb2xvckNvbXBvbmVudHMoQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIGNvbG9y
SW50ZXJwb2xhdGlvbk1ldGhvZCwgQ29sb3IgY29sb3IxLCBDb2xvciBjb2xvcjIsIGRvdWJsZSBw
cm9ncmVzcykKK3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihjb2xvckludGVycG9sYXRpb25N
ZXRob2QuY29sb3JTcGFjZSwKKyAgICAgICAgWyZdIChhdXRvJiBjb2xvclNwYWNlKSB7CisgICAg
ICAgICAgICBzd2l0Y2ggKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5hbHBoYVByZW11bHRpcGxp
Y2F0aW9uKSB7CisgICAgICAgICAgICBjYXNlIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11
bHRpcGxpZWQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVycG9sYXRlQ29sb3JDb21wb25l
bnRzPEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQ+KGNvbG9yU3BhY2UsIGNv
bG9yMS50b0NvbG9yVHlwZUxvc3N5PENvbG9yVHlwZT4oKSwgY29sb3IyLnRvQ29sb3JUeXBlTG9z
c3k8Q29sb3JUeXBlPigpLCBwcm9ncmVzcyk7CisgICAgICAgICAgICBjYXNlIEFscGhhUHJlbXVs
dGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50
ZXJwb2xhdGVDb2xvckNvbXBvbmVudHM8QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0
aXBsaWVkPihjb2xvclNwYWNlLCBjb2xvcjEudG9Db2xvclR5cGVMb3NzeTxDb2xvclR5cGU+KCks
IGNvbG9yMi50b0NvbG9yVHlwZUxvc3N5PENvbG9yVHlwZT4oKSwgcHJvZ3Jlc3MpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgKTsKK30KKyovCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuY3BwCShyZXZpc2lvbiAyODcyMzMpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDYgKzMyLDEwIEBACiAjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CiAKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiR3JhZGll
bnRDR0FkYXB0b3IuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlZjxHcmFk
aWVudD4gR3JhZGllbnQ6OmNyZWF0ZShEYXRhJiYgZGF0YSwgQ29sb3JJbnRlcnBvbGF0aW9uTWV0
aG9kIGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCkKQEAgLTQ0LDYgKzQ4LDggQEAgR3JhZGllbnQ6
OkdyYWRpZW50KERhdGEmJiBkYXRhLCBDb2xvckludGVycG9sYXRpb25NZXRoCiAgICAgLCBtX2Nv
bG9ySW50ZXJwb2xhdGlvbk1ldGhvZCB7IGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCB9CiB7CiB9
CisKK0dyYWRpZW50Ojp+R3JhZGllbnQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgR3JhZGllbnQ6OmFk
anVzdFBhcmFtZXRlcnNGb3JUaWxlZERyYXdpbmcoRmxvYXRTaXplJiBzaXplLCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZykKIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaAkocmV2aXNpb24gMjg3MjMzKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzUsMTcgKzM1LDEyIEBACiAjaW5jbHVkZSA8dmFyaWFudD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2Vu
ZGlmCi0KICNpZiBVU0UoRElSRUNUMkQpCiAjaW5jbHVkZSAiQ09NUHRyLmgiCiAjZW5kaWYKIAog
I2lmIFVTRShDRykKIHR5cGVkZWYgc3RydWN0IENHQ29udGV4dCogQ0dDb250ZXh0UmVmOwotdHlw
ZWRlZiBzdHJ1Y3QgQ0dHcmFkaWVudCogQ0dHcmFkaWVudFJlZjsKICNlbmRpZgogCiAjaWYgVVNF
KERJUkVDVDJEKQpAQCAtNjIsNiArNTcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBG
bG9hdFJlY3Q7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiAKK2NsYXNzIEdyYWRpZW50Q0dBZGFw
dG9yOworCiBjbGFzcyBHcmFkaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYWRpZW50PiB7CiBw
dWJsaWM6CiAgICAgc3RydWN0IENvbG9yU3RvcCB7CkBAIC0xMDQsNiArMTAxLDcgQEAgY2xhc3Mg
R3JhZGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmFkaWVudD4geyAocHVibGljCiAgICAgdXNp
bmcgRGF0YSA9IHN0ZDo6dmFyaWFudDxMaW5lYXJEYXRhLCBSYWRpYWxEYXRhLCBDb25pY0RhdGE+
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxHcmFkaWVudD4gY3JlYXRlKERhdGEm
JiwgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+R3JhZGll
bnQoKTsKIAogICAgIGJvb2wgaXNaZXJvU2l6ZSgpIGNvbnN0OwogCkBAIC0xNDQsMTEgKzE0Miw2
IEBAIGNsYXNzIEdyYWRpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8R3JhZGllbnQ+IHsgKHB1Ymxp
YwogICAgIHZvaWQgc29ydFN0b3BzKCkgY29uc3Q7CiAgICAgdm9pZCBzdG9wc0NoYW5nZWQoKTsK
IAotI2lmIFVTRShDRykKLSAgICB2b2lkIGNyZWF0ZUNHR3JhZGllbnQoKTsKLSAgICBib29sIGhh
c09ubHlCb3VuZGVkU1JHQkNvbG9yU3RvcHMoKSBjb25zdDsKLSNlbmRpZgotCiAgICAgRGF0YSBt
X2RhdGE7CiAgICAgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIG1fY29sb3JJbnRlcnBvbGF0aW9u
TWV0aG9kOwogICAgIG11dGFibGUgQ29sb3JTdG9wVmVjdG9yIG1fc3RvcHM7CkBAIC0xNTcsNyAr
MTUwLDcgQEAgY2xhc3MgR3JhZGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmFkaWVudD4geyAo
cHVibGljCiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX2NhY2hlZEhhc2ggeyAwIH07CiAKICNpZiBV
U0UoQ0cpCi0gICAgUmV0YWluUHRyPENHR3JhZGllbnRSZWY+IG1fZ3JhZGllbnQ7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEdyYWRpZW50Q0dBZGFwdG9yPiBtX2dyYWRpZW50OwogI2VuZGlmCiAKICNp
ZiBVU0UoRElSRUNUMkQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFkaWVudENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFkaWVudENHLmNwcAkocmV2aXNpb24gMjg3MjMzKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDkgKzI5LDkgQEAKIAogI2lmIFVTRShDRykKIAorI2luY2x1ZGUgIkdyYWRpZW50Q0dB
ZGFwdG9yLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbmNsdWRlIDxwYWwv
c3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MCw2MSArNDAsNiBAQCB2b2lkIEdyYWRpZW50Ojpz
dG9wc0NoYW5nZWQoKQogICAgIG1fZ3JhZGllbnQgPSBudWxscHRyOwogfQogCi1ib29sIEdyYWRp
ZW50OjpoYXNPbmx5Qm91bmRlZFNSR0JDb2xvclN0b3BzKCkgY29uc3QKLXsKLSAgICBmb3IgKGNv
bnN0IGF1dG8mIHN0b3AgOiBtX3N0b3BzKSB7Ci0gICAgICAgIGlmIChzdG9wLmNvbG9yLmNvbG9y
U3BhY2UoKSAhPSBDb2xvclNwYWNlOjpTUkdCKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBHcmFkaWVudDo6Y3JlYXRlQ0dHcmFk
aWVudCgpCi17Ci0gICAgc29ydFN0b3BzKCk7Ci0KLSAgICB1bnNpZ25lZCBudW1TdG9wcyA9IG1f
c3RvcHMuc2l6ZSgpOwotCi0gICAgY29uc3QgaW50IHJlc2VydmVkU3RvcHMgPSAzOwotICAgIFZl
Y3RvcjxDR0Zsb2F0LCByZXNlcnZlZFN0b3BzPiBsb2NhdGlvbnM7Ci0gICAgbG9jYXRpb25zLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkobnVtU3RvcHMpOwotCi0gICAgLy8gSWYgYWxsIHRoZSBzdG9w
cyBhcmUgYm91bmRlZCBzUkdCIChhcyByZXByZXNlbnRlZCBieSB0aGUgY29sb3IgaGF2aW5nIHRo
ZSBjb2xvciBzcGFjZQotICAgIC8vIENvbG9yU3BhY2U6OlNSR0IpLCBpdCBpcyBmYXN0ZXIgdG8g
Y3JlYXRlIGEgZ3JhZGllbnQgdXNpbmcgY29tcG9uZW50cyB0aGFuIENHQ29sb3JzLgotICAgIGlm
IChoYXNPbmx5Qm91bmRlZFNSR0JDb2xvclN0b3BzKCkpIHsKLSAgICAgICAgVmVjdG9yPENHRmxv
YXQsIDQgKiByZXNlcnZlZFN0b3BzPiBjb2xvckNvbXBvbmVudHM7Ci0gICAgICAgIGNvbG9yQ29t
cG9uZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG51bVN0b3BzICogNCk7Ci0KLSAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiBzdG9wIDogbV9zdG9wcykgewotICAgICAgICAgICAgYXV0byBbY29s
b3JTcGFjZSwgY29tcG9uZW50c10gPSBzdG9wLmNvbG9yLmNvbG9yU3BhY2VBbmRDb21wb25lbnRz
KCk7Ci0gICAgICAgICAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IGNvbXBvbmVudHM7Ci0gICAgICAg
ICAgICBjb2xvckNvbXBvbmVudHMudW5jaGVja2VkQXBwZW5kKHIpOwotICAgICAgICAgICAgY29s
b3JDb21wb25lbnRzLnVuY2hlY2tlZEFwcGVuZChnKTsKLSAgICAgICAgICAgIGNvbG9yQ29tcG9u
ZW50cy51bmNoZWNrZWRBcHBlbmQoYik7Ci0gICAgICAgICAgICBjb2xvckNvbXBvbmVudHMudW5j
aGVja2VkQXBwZW5kKGEpOwotCi0gICAgICAgICAgICBsb2NhdGlvbnMudW5jaGVja2VkQXBwZW5k
KHN0b3Aub2Zmc2V0KTsKLSAgICAgICAgfQotCi0gICAgICAgIG1fZ3JhZGllbnQgPSBhZG9wdENG
KENHR3JhZGllbnRDcmVhdGVXaXRoQ29sb3JDb21wb25lbnRzKHNSR0JDb2xvclNwYWNlUmVmKCks
IGNvbG9yQ29tcG9uZW50cy5kYXRhKCksIGxvY2F0aW9ucy5kYXRhKCksIG51bVN0b3BzKSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvIGNvbG9yc0FycmF5ID0gYWRvcHRDRihD
RkFycmF5Q3JlYXRlTXV0YWJsZSgwLCBtX3N0b3BzLnNpemUoKSwgJmtDRlR5cGVBcnJheUNhbGxC
YWNrcykpOwotICAgIGZvciAoY29uc3QgYXV0byYgc3RvcCA6IG1fc3RvcHMpIHsKLSAgICAgICAg
Q0ZBcnJheUFwcGVuZFZhbHVlKGNvbG9yc0FycmF5LmdldCgpLCBjYWNoZWRDR0NvbG9yKHN0b3Au
Y29sb3IpLmdldCgpKTsKLSAgICAgICAgbG9jYXRpb25zLnVuY2hlY2tlZEFwcGVuZChzdG9wLm9m
ZnNldCk7Ci0gICAgfQotCi0jaWYgSEFWRShDT1JFX0dSQVBISUNTX0VYVEVOREVEX1NSR0JfQ09M
T1JfU1BBQ0UpCi0gICAgYXV0byBleHRlbmRlZENvbG9yc0dyYWRpZW50Q29sb3JTcGFjZSA9IGV4
dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKTsKLSNlbHNlCi0gICAgYXV0byBleHRlbmRlZENvbG9y
c0dyYWRpZW50Q29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jZW5kaWYKLQotICAg
IG1fZ3JhZGllbnQgPSBhZG9wdENGKENHR3JhZGllbnRDcmVhdGVXaXRoQ29sb3JzKGV4dGVuZGVk
Q29sb3JzR3JhZGllbnRDb2xvclNwYWNlLCBjb2xvcnNBcnJheS5nZXQoKSwgbG9jYXRpb25zLmRh
dGEoKSkpOwotfQotCiB2b2lkIEdyYWRpZW50OjpmaWxsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAgIGNvbnRleHQuY2xpcChyZWN0KTsKQEAg
LTEwOCwxOCArNTMsMTggQEAgdm9pZCBHcmFkaWVudDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0KQogCiB2b2lkIEdyYWRpZW50OjpwYWludChDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250
ZXh0KQogewotICAgIENHR3JhZGllbnREcmF3aW5nT3B0aW9ucyBleHRlbmRPcHRpb25zID0ga0NH
R3JhZGllbnREcmF3c0JlZm9yZVN0YXJ0TG9jYXRpb24gfCBrQ0dHcmFkaWVudERyYXdzQWZ0ZXJF
bmRMb2NhdGlvbjsKKyAgICBpZiAoIW1fZ3JhZGllbnQpIHsKKyAgICAgICAgc29ydFN0b3BzKCk7
CisgICAgICAgIG1fZ3JhZGllbnQgPSBHcmFkaWVudENHQWRhcHRvcjo6Y3JlYXRlKG1fY29sb3JJ
bnRlcnBvbGF0aW9uTWV0aG9kLCBtX3N0b3BzKTsKKyAgICB9CiAKLSAgICBpZiAoIW1fZ3JhZGll
bnQpCi0gICAgICAgIGNyZWF0ZUNHR3JhZGllbnQoKTsKLQogICAgIFdURjo6c3dpdGNoT24obV9k
YXRhLAogICAgICAgICBbJl0gKGNvbnN0IExpbmVhckRhdGEmIGRhdGEpIHsKICAgICAgICAgICAg
IHN3aXRjaCAobV9zcHJlYWRNZXRob2QpIHsKICAgICAgICAgICAgIGNhc2UgR3JhZGllbnRTcHJl
YWRNZXRob2Q6OlJlcGVhdDoKICAgICAgICAgICAgIGNhc2UgR3JhZGllbnRTcHJlYWRNZXRob2Q6
OlJlZmxlY3Q6IHsKICAgICAgICAgICAgICAgICBDR0NvbnRleHRTdGF0ZVNhdmVyIHNhdmVTdGF0
ZShwbGF0Zm9ybUNvbnRleHQpOwotICAgICAgICAgICAgICAgIGV4dGVuZE9wdGlvbnMgPSAwOwor
ICAgICAgICAgICAgICAgIENHR3JhZGllbnREcmF3aW5nT3B0aW9ucyBleHRlbmRPcHRpb25zID0g
MDsKIAogICAgICAgICAgICAgICAgIEZsb2F0UG9pbnQgZ3JhZGllbnRWZWN0b3JOb3JtKGRhdGEu
cG9pbnQxIC0gZGF0YS5wb2ludDApOwogICAgICAgICAgICAgICAgIGdyYWRpZW50VmVjdG9yTm9y
bS5ub3JtYWxpemUoKTsKQEAgLTE0Myw3ICs4OCw3IEBAIHZvaWQgR3JhZGllbnQ6OnBhaW50KENH
Q29udGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQpCiAgICAgICAgICAgICAgICAgICAgIENHUG9pbnQg
bGVmdCA9IENHUG9pbnRNYWtlKGZsaXAgPyBlbmQgOiBzdGFydCwgMCk7CiAgICAgICAgICAgICAg
ICAgICAgIENHUG9pbnQgcmlnaHQgPSBDR1BvaW50TWFrZShmbGlwID8gc3RhcnQgOiBlbmQsIDAp
OwogCi0gICAgICAgICAgICAgICAgICAgIENHQ29udGV4dERyYXdMaW5lYXJHcmFkaWVudChwbGF0
Zm9ybUNvbnRleHQsIG1fZ3JhZGllbnQuZ2V0KCksIGxlZnQsIHJpZ2h0LCBleHRlbmRPcHRpb25z
KTsKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFkaWVudC0+ZHJhd0xpbmVhckdyYWRpZW50KHBs
YXRmb3JtQ29udGV4dCwgbGVmdCwgcmlnaHQsIGV4dGVuZE9wdGlvbnMpOwogICAgICAgICAgICAg
ICAgIH07CiAKICAgICAgICAgICAgICAgICBhdXRvIGlzTGVmdE9mID0gW10oQ0dGbG9hdCBzdGFy
dCwgQ0dGbG9hdCBlbmQsIENHUmVjdCBib3VuZGluZ0JveCkgLT4gYm9vbCB7CkBAIC0xODksMTIg
KzEzNCwxNCBAQCB2b2lkIEdyYWRpZW50OjpwYWludChDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250
ZXh0KQogICAgICAgICAgICAgICAgICAgICBkcmF3TGluZWFyR3JhZGllbnQoZW5kIC0gZHgsIGVu
ZCwgZmxpcCk7CiAgICAgICAgICAgICAgICAgICAgIGZsaXAgPSAhZmxpcCAmJiBtX3NwcmVhZE1l
dGhvZCA9PSBHcmFkaWVudFNwcmVhZE1ldGhvZDo6UmVmbGVjdDsKICAgICAgICAgICAgICAgICB9
Ci0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNh
c2UgR3JhZGllbnRTcHJlYWRNZXRob2Q6OlBhZDoKLSAgICAgICAgICAgICAgICBDR0NvbnRleHRE
cmF3TGluZWFyR3JhZGllbnQocGxhdGZvcm1Db250ZXh0LCBtX2dyYWRpZW50LmdldCgpLCBkYXRh
LnBvaW50MCwgZGF0YS5wb2ludDEsIGV4dGVuZE9wdGlvbnMpOworICAgICAgICAgICAgY2FzZSBH
cmFkaWVudFNwcmVhZE1ldGhvZDo6UGFkOiB7CisgICAgICAgICAgICAgICAgQ0dHcmFkaWVudERy
YXdpbmdPcHRpb25zIGV4dGVuZE9wdGlvbnMgPSBrQ0dHcmFkaWVudERyYXdzQmVmb3JlU3RhcnRM
b2NhdGlvbiB8IGtDR0dyYWRpZW50RHJhd3NBZnRlckVuZExvY2F0aW9uOworICAgICAgICAgICAg
ICAgIG1fZ3JhZGllbnQtPmRyYXdMaW5lYXJHcmFkaWVudChwbGF0Zm9ybUNvbnRleHQsIGRhdGEu
cG9pbnQwLCBkYXRhLnBvaW50MSwgZXh0ZW5kT3B0aW9ucyk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgIH0sCiAgICAgICAgIFsm
XSAoY29uc3QgUmFkaWFsRGF0YSYgZGF0YSkgewogICAgICAgICAgICAgYm9vbCBuZWVkU2NhbGlu
ZyA9IGRhdGEuYXNwZWN0UmF0aW8gIT0gMTsKQEAgLTIwOCw3ICsxNTUsOCBAQCB2b2lkIEdyYWRp
ZW50OjpwYWludChDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250ZXh0KQogICAgICAgICAgICAgICAg
IENHQ29udGV4dFRyYW5zbGF0ZUNUTShwbGF0Zm9ybUNvbnRleHQsIC1kYXRhLnBvaW50MC54KCks
IC1kYXRhLnBvaW50MC55KCkpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBDR0NvbnRl
eHREcmF3UmFkaWFsR3JhZGllbnQocGxhdGZvcm1Db250ZXh0LCBtX2dyYWRpZW50LmdldCgpLCBk
YXRhLnBvaW50MCwgZGF0YS5zdGFydFJhZGl1cywgZGF0YS5wb2ludDEsIGRhdGEuZW5kUmFkaXVz
LCBleHRlbmRPcHRpb25zKTsKKyAgICAgICAgICAgIENHR3JhZGllbnREcmF3aW5nT3B0aW9ucyBl
eHRlbmRPcHRpb25zID0ga0NHR3JhZGllbnREcmF3c0JlZm9yZVN0YXJ0TG9jYXRpb24gfCBrQ0dH
cmFkaWVudERyYXdzQWZ0ZXJFbmRMb2NhdGlvbjsKKyAgICAgICAgICAgIG1fZ3JhZGllbnQtPmRy
YXdSYWRpYWxHcmFkaWVudChwbGF0Zm9ybUNvbnRleHQsIGRhdGEucG9pbnQwLCBkYXRhLnN0YXJ0
UmFkaXVzLCBkYXRhLnBvaW50MSwgZGF0YS5lbmRSYWRpdXMsIGV4dGVuZE9wdGlvbnMpOwogCiAg
ICAgICAgICAgICBpZiAobmVlZFNjYWxpbmcpCiAgICAgICAgICAgICAgICAgQ0dDb250ZXh0UmVz
dG9yZUdTdGF0ZShwbGF0Zm9ybUNvbnRleHQpOwpAQCAtMjIxLDcgKzE2OSw3IEBAIHZvaWQgR3Jh
ZGllbnQ6OnBhaW50KENHQ29udGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQpCiAgICAgICAgICAgICBD
R0NvbnRleHRUcmFuc2xhdGVDVE0ocGxhdGZvcm1Db250ZXh0LCBkYXRhLnBvaW50MC54KCksIGRh
dGEucG9pbnQwLnkoKSk7CiAgICAgICAgICAgICBDR0NvbnRleHRSb3RhdGVDVE0ocGxhdGZvcm1D
b250ZXh0LCAoQ0dGbG9hdCktTV9QSV8yKTsKICAgICAgICAgICAgIENHQ29udGV4dFRyYW5zbGF0
ZUNUTShwbGF0Zm9ybUNvbnRleHQsIC1kYXRhLnBvaW50MC54KCksIC1kYXRhLnBvaW50MC55KCkp
OwotICAgICAgICAgICAgQ0dDb250ZXh0RHJhd0NvbmljR3JhZGllbnQocGxhdGZvcm1Db250ZXh0
LCBtX2dyYWRpZW50LmdldCgpLCBkYXRhLnBvaW50MCwgZGF0YS5hbmdsZVJhZGlhbnMpOworICAg
ICAgICAgICAgbV9ncmFkaWVudC0+ZHJhd0NvbmljR3JhZGllbnQocGxhdGZvcm1Db250ZXh0LCBk
YXRhLnBvaW50MCwgZGF0YS5hbmdsZVJhZGlhbnMpOwogICAgICAgICAgICAgQ0dDb250ZXh0UmVz
dG9yZUdTdGF0ZShwbGF0Zm9ybUNvbnRleHQpOwogI2Vsc2UKICAgICAgICAgICAgIFVOVVNFRF9Q
QVJBTShkYXRhKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YWRpZW50Q0dBZGFwdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9HcmFkaWVudENHQWRhcHRvci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDR0FkYXB0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiR3JhZGllbnRDR0FkYXB0b3IuaCIKKworI2luY2x1ZGUgIkNvbG9ySW50ZXJw
b2xhdGlvbi5oIgorI2luY2x1ZGUgIkNvbG9yU3BhY2VDRy5oIgorI2luY2x1ZGUgPHBhbC9zcGkv
Y2cvQ29yZUdyYXBoaWNzU1BJLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR3JhZGllbnRD
R0FkYXB0b3I6OkdyYWRpZW50Q0dBZGFwdG9yKENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBjb2xv
ckludGVycG9sYXRpb25NZXRob2QsIGNvbnN0IFdlYkNvcmU6OkdyYWRpZW50OjpDb2xvclN0b3BW
ZWN0b3ImIHN0b3BzKQorICAgIDogbV9zdHJhdGVneSB7IHBpY2tTdHJhdGVneShjb2xvckludGVy
cG9sYXRpb25NZXRob2QsIHN0b3BzKSB9Cit7Cit9CisKKy8vIE1BUks6IC0gU3RyYXRlZ3kgc2Vs
ZWN0aW9uLgorCitHcmFkaWVudENHQWRhcHRvcjo6U3RyYXRlZ3kgR3JhZGllbnRDR0FkYXB0b3I6
OnBpY2tTdHJhdGVneShDb2xvckludGVycG9sYXRpb25NZXRob2QgY29sb3JJbnRlcnBvbGF0aW9u
TWV0aG9kLCBjb25zdCBXZWJDb3JlOjpHcmFkaWVudDo6Q29sb3JTdG9wVmVjdG9yJiBzdG9wcykg
Y29uc3QKK3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihjb2xvckludGVycG9sYXRpb25NZXRo
b2QuY29sb3JTcGFjZSwKKyAgICAgICAgWyZdIChjb25zdCBDb2xvckludGVycG9sYXRpb25NZXRo
b2Q6OlNSR0ImKSAtPiBTdHJhdGVneSB7CisgICAgICAgICAgICBzd2l0Y2ggKGNvbG9ySW50ZXJw
b2xhdGlvbk1ldGhvZC5hbHBoYVByZW11bHRpcGxpY2F0aW9uKSB7CisgICAgICAgICAgICBjYXNl
IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZDoKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbWFrZUdyYWRpZW50KGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCwgc3RvcHMpOwor
ICAgICAgICAgICAgY2FzZSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkOgor
I2lmIEhBVkUoQ09SRV9HUkFQSElDU19QUkVNVUxUSVBMSUVEX0lOVEVSUE9MQVRJT05fR1JBRElF
TlQpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VHcmFkaWVudChjb2xvckludGVycG9sYXRp
b25NZXRob2QsIHN0b3BzKTsKKyNlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VTaGFk
aW5nKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCwgc3RvcHMpOworI2VuZGlmCisgICAgICAgICAg
ICB9CisgICAgICAgIH0sCisgICAgICAgIFsmXSAoY29uc3QgYXV0byYpIC0+IFN0cmF0ZWd5IHsK
KyAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgdGhlIG90aGVyIGludGVycG9s
YXRpb24gY29sb3Igc3BhY2VzLgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgfQorICAgICk7Cit9CisKKy8vIE1BUks6IC0gR3JhZGllbnQgc3RyYXRl
Z3kuCisKK0dyYWRpZW50Q0dBZGFwdG9yOjpTdHJhdGVneSBHcmFkaWVudENHQWRhcHRvcjo6bWFr
ZUdyYWRpZW50KENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBjb2xvckludGVycG9sYXRpb25NZXRo
b2QsIGNvbnN0IFdlYkNvcmU6OkdyYWRpZW50OjpDb2xvclN0b3BWZWN0b3ImIHN0b3BzKSBjb25z
dAoreworICAgIEFTU0VSVF9VTlVTRUQoY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQj4oY29sb3JJbnRl
cnBvbGF0aW9uTWV0aG9kLmNvbG9yU3BhY2UpKTsKKyNpZiAhSEFWRShDT1JFX0dSQVBISUNTX1BS
RU1VTFRJUExJRURfSU5URVJQT0xBVElPTl9HUkFESUVOVCkKKyAgICBBU1NFUlRfVU5VU0VEKGNv
bG9ySW50ZXJwb2xhdGlvbk1ldGhvZCwgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLmFscGhhUHJl
bXVsdGlwbGljYXRpb24gPT0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVk
KTsKKyNlbmRpZgorCisjaWYgSEFWRShDT1JFX0dSQVBISUNTX0dSQURJRU5UX0NSRUFURV9XSVRI
X09QVElPTlMpCisjaWYgSEFWRShDT1JFX0dSQVBISUNTX1BSRU1VTFRJUExJRURfSU5URVJQT0xB
VElPTl9HUkFESUVOVCkKKyAgICBhdXRvIGdyYWRpZW50SW50ZXJwb2xhdGVzUHJlbXVsdGlwbGll
ZE9wdGlvbnNEaWN0aW9uYXJ5ID0gW10gKCkgLT4gQ0ZEaWN0aW9uYXJ5UmVmIHsKKyAgICAgICAg
c3RhdGljIENGVHlwZVJlZiBrZXlzW10gPSB7IGtDR0dyYWRpZW50SW50ZXJwb2xhdGVzUHJlbXVs
dGlwbGllZCB9OworICAgICAgICBzdGF0aWMgQ0ZUeXBlUmVmIHZhbHVlc1tdID0geyBrQ0ZCb29s
ZWFuVHJ1ZSB9OworICAgICAgICBzdGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIG9wdGlvbnMgPSBDRkRp
Y3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga2V5cywgdmFsdWVzLCBXVEZfQVJS
QVlfTEVOR1RIKGtleXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBl
RGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKKworICAgICAgICByZXR1cm4gb3B0aW9uczsKKyAg
ICB9OworCisgICBhdXRvIGdyYWRpZW50T3B0aW9uc0RpY3Rpb25hcnkgPSBbJl0gKGF1dG8gY29s
b3JJbnRlcnBvbGF0aW9uTWV0aG9kKSAtPiBDRkRpY3Rpb25hcnlSZWYgeworICAgICAgICBzd2l0
Y2ggKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5hbHBoYVByZW11bHRpcGxpY2F0aW9uKSB7Cisg
ICAgICAgIGNhc2UgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkOgorICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGNhc2UgQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbjo6UHJlbXVsdGlwbGllZDoKKyAgICAgICAgICAgIHJldHVybiBncmFkaWVudEludGVycG9s
YXRlc1ByZW11bHRpcGxpZWRPcHRpb25zRGljdGlvbmFyeSgpOworICAgICAgICB9CisgICB9Owor
I2Vsc2UKKyAgIGF1dG8gZ3JhZGllbnRPcHRpb25zRGljdGlvbmFyeSA9IFtdIChhdXRvKSAtPiBD
RkRpY3Rpb25hcnlSZWYgeworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgIH07CisjZW5kaWYK
KyNlbmRpZgorCisgICAgYXV0byBoYXNPbmx5Qm91bmRlZFNSR0JDb2xvclN0b3BzID0gW10gKGNv
bnN0IGF1dG8mIHN0b3BzKSB7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgc3RvcCA6IHN0b3Bz
KSB7CisgICAgICAgICAgICBpZiAoc3RvcC5jb2xvci5jb2xvclNwYWNlKCkgIT0gQ29sb3JTcGFj
ZTo6U1JHQikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfTsKKworICAgIGF1dG8gbnVtYmVyT2ZTdG9wcyA9IHN0b3Bz
LnNpemUoKTsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byByZXNlcnZlZFN0b3BzID0gMzsK
KyAgICBWZWN0b3I8Q0dGbG9hdCwgcmVzZXJ2ZWRTdG9wcz4gbG9jYXRpb25zOworICAgIGxvY2F0
aW9ucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG51bWJlck9mU3RvcHMpOworCisgICAgVmVjdG9y
PENHRmxvYXQsIDQgKiByZXNlcnZlZFN0b3BzPiBjb2xvckNvbXBvbmVudHM7CisgICAgY29sb3JD
b21wb25lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVtYmVyT2ZTdG9wcyAqIDQpOworCisg
ICAgYXV0byBncmFkaWVudENvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOworCisgICAg
Ly8gRklYTUU6IE5vdyB0aGF0IHdlIG9ubHkgZXZlciB1c2UgQ0dHcmFkaWVudENyZWF0ZVdpdGhD
b2xvckNvbXBvbmVudHMsIHdlIHNob3VsZCBpbnZlc3RpZ2F0ZQorICAgIC8vIGlmIHRoZXJlIGlz
IGFueSByZWFsIGJlbmVmaXQgdG8gdXNpbmcgc1JHQiB3aGVuIGFsbCB0aGUgc3RvcHMgYXJlIGJv
dW5kZWQgdnMganVzdCB1c2luZworICAgIC8vIGV4dGVuZGVkIHNSR0IgZm9yIGFsbCBncmFkaWVu
dHMuCisgICAgaWYgKGhhc09ubHlCb3VuZGVkU1JHQkNvbG9yU3RvcHMoc3RvcHMpKSB7CisgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgc3RvcCA6IHN0b3BzKSB7CisgICAgICAgICAgICBhdXRvIFtj
b2xvclNwYWNlLCBjb21wb25lbnRzXSA9IHN0b3AuY29sb3IuY29sb3JTcGFjZUFuZENvbXBvbmVu
dHMoKTsKKyAgICAgICAgICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gY29tcG9uZW50czsKKyAgICAg
ICAgICAgIGNvbG9yQ29tcG9uZW50cy51bmNoZWNrZWRBcHBlbmQocik7CisgICAgICAgICAgICBj
b2xvckNvbXBvbmVudHMudW5jaGVja2VkQXBwZW5kKGcpOworICAgICAgICAgICAgY29sb3JDb21w
b25lbnRzLnVuY2hlY2tlZEFwcGVuZChiKTsKKyAgICAgICAgICAgIGNvbG9yQ29tcG9uZW50cy51
bmNoZWNrZWRBcHBlbmQoYSk7CisKKyAgICAgICAgICAgIGxvY2F0aW9ucy51bmNoZWNrZWRBcHBl
bmQoc3RvcC5vZmZzZXQpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyNpZiBIQVZFKENPUkVf
R1JBUEhJQ1NfRVhURU5ERURfU1JHQl9DT0xPUl9TUEFDRSkKKyAgICAgICAgZ3JhZGllbnRDb2xv
clNwYWNlID0gZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpOworI2VuZGlmCisKKyAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiBzdG9wIDogc3RvcHMpIHsKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1Nf
RVhURU5ERURfU1JHQl9DT0xPUl9TUEFDRSkKKyAgICAgICAgICAgIGF1dG8gW3IsIGcsIGIsIGFd
ID0gc3RvcC5jb2xvci50b0NvbG9yVHlwZUxvc3N5PEV4dGVuZGVkU1JHQkE8ZmxvYXQ+PigpOwor
I2Vsc2UKKyAgICAgICAgICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gc3RvcC5jb2xvci50b0NvbG9y
VHlwZUxvc3N5PFNSR0JBPGZsb2F0Pj4oKTsKKyNlbmRpZgorICAgICAgICAgICAgY29sb3JDb21w
b25lbnRzLnVuY2hlY2tlZEFwcGVuZChyKTsKKyAgICAgICAgICAgIGNvbG9yQ29tcG9uZW50cy51
bmNoZWNrZWRBcHBlbmQoZyk7CisgICAgICAgICAgICBjb2xvckNvbXBvbmVudHMudW5jaGVja2Vk
QXBwZW5kKGIpOworICAgICAgICAgICAgY29sb3JDb21wb25lbnRzLnVuY2hlY2tlZEFwcGVuZChh
KTsKKworICAgICAgICAgICAgbG9jYXRpb25zLnVuY2hlY2tlZEFwcGVuZChzdG9wLm9mZnNldCk7
CisgICAgICAgIH0KKyAgICB9CisKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfR1JBRElFTlRfQ1JF
QVRFX1dJVEhfT1BUSU9OUykKKyAgICByZXR1cm4gR3JhZGllbnQgeyBhZG9wdENGKENHR3JhZGll
bnRDcmVhdGVXaXRoQ29sb3JDb21wb25lbnRzQW5kT3B0aW9ucyhncmFkaWVudENvbG9yU3BhY2Us
IGNvbG9yQ29tcG9uZW50cy5kYXRhKCksIGxvY2F0aW9ucy5kYXRhKCksIG51bWJlck9mU3RvcHMs
IGdyYWRpZW50T3B0aW9uc0RpY3Rpb25hcnkoY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kKSkpIH07
CisjZWxzZQorICAgIHJldHVybiBHcmFkaWVudCB7IGFkb3B0Q0YoQ0dHcmFkaWVudENyZWF0ZVdp
dGhDb2xvckNvbXBvbmVudHMoZ3JhZGllbnRDb2xvclNwYWNlLCBjb2xvckNvbXBvbmVudHMuZGF0
YSgpLCBsb2NhdGlvbnMuZGF0YSgpLCBudW1iZXJPZlN0b3BzKSkgfTsKKyNlbmRpZgorfQorCisv
LyBNQVJLOiAtIFNoYWRpbmcgc3RyYXRlZ3kuCisKK3RlbXBsYXRlPHR5cGVuYW1lIEludGVycG9s
YXRpb25TcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBhbHBoYVByZW11bHRpcGxpY2F0aW9u
Pgorc3RhdGljIHZvaWQgc2hhZGluZ0Z1bmN0aW9uKHZvaWQqIGluZm8sIGNvbnN0IENHRmxvYXQq
IGluLCBDR0Zsb2F0KiBvdXQpCit7CisgICAgdXNpbmcgSW50ZXJwb2xhdGlvblNwYWNlQ29sb3JU
eXBlID0gdHlwZW5hbWUgSW50ZXJwb2xhdGlvblNwYWNlOjpDb2xvclR5cGU7CisjaWYgSEFWRShD
T1JFX0dSQVBISUNTX0VYVEVOREVEX1NSR0JfQ09MT1JfU1BBQ0UpCisgICAgdXNpbmcgT3V0cHV0
U3BhY2VDb2xvclR5cGUgPSBFeHRlbmRlZFNSR0JBPGZsb2F0PjsKKyNlbHNlCisgICAgdXNpbmcg
T3V0cHV0U3BhY2VDb2xvclR5cGUgPSBTUkdCQTxmbG9hdD47CisjZW5kaWYKKworICAgIGF1dG8q
IGRhdGEgPSBzdGF0aWNfY2FzdDxHcmFkaWVudENHQWRhcHRvcjo6U2hhZGluZzo6RGF0YSo+KGlu
Zm8pOworCisgICAgLy8gQ29tcHV0ZSBjb2xvciBhdCBvZmZzZXQgJ2luWzBdJyBhbmQgYXNzaWdu
IHRoZSBjb21wb25lbnRzIHRvIG91dFswIC0+IDNdLgorCisgICAgZmxvYXQgcmVxdWVzdGVkT2Zm
c2V0ID0gaW5bMF07CisKKyAgICAvLyAxLiBGaW5kIHN0b3BzIHRoYXQgYm91bmQgdGhlIHJlcXVl
c3RlZCBvZmZzZXQuCisgICAgYXV0byBbc3RvcDAsIHN0b3AxXSA9IFsmXSB7CisgICAgICAgIGZv
ciAoc2l6ZV90IHN0b3AgPSAxOyBzdG9wIDwgZGF0YS0+c3RvcHMoKS5zaXplKCk7ICsrc3RvcCkg
eworICAgICAgICAgICAgaWYgKHJlcXVlc3RlZE9mZnNldCA8PSBkYXRhLT5zdG9wcygpW3N0b3Bd
Lm9mZnNldCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjp0aWUoZGF0YS0+c3RvcHMoKVtz
dG9wIC0gMV0sIGRhdGEtPnN0b3BzKClbc3RvcF0pOworICAgICAgICB9CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfSgpOworCisgICAgLy8gMi4gQ29tcHV0ZSBw
ZXJjZW50YWdlIG9mZnNldCBiZXR3ZWVuIHRoZSB0d28gc3RvcHMuCisgICAgZmxvYXQgb2Zmc2V0
ID0gKHN0b3AxLm9mZnNldCA9PSBzdG9wMC5vZmZzZXQpID8gMC4wZiA6IChyZXF1ZXN0ZWRPZmZz
ZXQgLSBzdG9wMC5vZmZzZXQpIC8gKHN0b3AxLm9mZnNldCAtIHN0b3AwLm9mZnNldCk7CisKKyAg
ICAvLyAzLiBJbnRlcnBvbGF0ZSB0aGUgdHdvIHN0b3BzJyBjb2xvcnMgYnkgdGhlIGNvbXB1dGVk
IG9mZnNldC4KKyAgICAvLyBGSVhNRTogV2UgZG9uJ3Qgd2FudCB0byBkdWUgaHVlIGZpeHVwIGZv
ciBlYWNoIGNhbGwsIHNvIHdlIHNob3VsZCBmaWd1cmUgb3V0IGhvdyB0byBwcmVjb21wdXRlIHRo
YXQuCisgICAgYXV0byBpbnRlcnBvbGF0ZWRDb2xvciA9IGludGVycG9sYXRlQ29sb3JDb21wb25l
bnRzPGFscGhhUHJlbXVsdGlwbGljYXRpb24+KAorICAgICAgICBzdGQ6OmdldDxJbnRlcnBvbGF0
aW9uU3BhY2U+KGRhdGEtPmNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCgpLmNvbG9yU3BhY2UpLAor
ICAgICAgICBtYWtlRnJvbUNvbXBvbmVudHM8SW50ZXJwb2xhdGlvblNwYWNlQ29sb3JUeXBlPihz
dG9wMC5jb2xvckNvbXBvbmVudHMpLCAxLjBmIC0gb2Zmc2V0LAorICAgICAgICBtYWtlRnJvbUNv
bXBvbmVudHM8SW50ZXJwb2xhdGlvblNwYWNlQ29sb3JUeXBlPihzdG9wMS5jb2xvckNvbXBvbmVu
dHMpLCBvZmZzZXQpOworCisgICAgLy8gNC4gQ29udmVydCB0byB0aGUgb3V0cHV0IGNvbG9yIHNw
YWNlLgorICAgIGF1dG8gaW50ZXJwb2xhdGVkQ29sb3JDb252ZXJ0ZWRUb091dHB1dFNwYWNlID0g
YXNDb2xvckNvbXBvbmVudHMoY29udmVydENvbG9yPE91dHB1dFNwYWNlQ29sb3JUeXBlPihpbnRl
cnBvbGF0ZWRDb2xvcikpOworCisgICAgLy8gNS4gV3JpdGUgY29sb3IgY29tcG9uZW50cyB0byAn
b3V0JyBwb2ludGVyLgorICAgIGZvciAoc2l6ZV90IGNvbXBvbmVudEluZGV4ID0gMDsgY29tcG9u
ZW50SW5kZXggPCBpbnRlcnBvbGF0ZWRDb2xvckNvbnZlcnRlZFRvT3V0cHV0U3BhY2Uuc2l6ZSgp
OyArK2NvbXBvbmVudEluZGV4KQorICAgICAgICBvdXRbY29tcG9uZW50SW5kZXhdID0gaW50ZXJw
b2xhdGVkQ29sb3JDb252ZXJ0ZWRUb091dHB1dFNwYWNlW2NvbXBvbmVudEluZGV4XTsKK30KKwor
c3RhdGljIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gY29udmVydENvbG9yVG9Db2xvckludGVy
cG9sYXRpb25TcGFjZShjb25zdCBDb2xvciYgY29sb3IsIENvbG9ySW50ZXJwb2xhdGlvbk1ldGhv
ZCBjb2xvckludGVycG9sYXRpb25NZXRob2QpCit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24o
Y29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLmNvbG9yU3BhY2UsCisgICAgICAgIFsmXSAoYXV0byYg
Y29sb3JTcGFjZSkgLT4gQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiB7CisgICAgICAgICAgICB1
c2luZyBDb2xvclR5cGUgPSB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxkZWNsdHlw
ZShjb2xvclNwYWNlKT46OkNvbG9yVHlwZTsKKyAgICAgICAgICAgIHJldHVybiBhc0NvbG9yQ29t
cG9uZW50cyhjb2xvci50ZW1wbGF0ZSB0b0NvbG9yVHlwZUxvc3N5PENvbG9yVHlwZT4oKSk7Cisg
ICAgICAgIH0KKyAgICApOworfQorCitHcmFkaWVudENHQWRhcHRvcjo6U3RyYXRlZ3kgR3JhZGll
bnRDR0FkYXB0b3I6Om1ha2VTaGFkaW5nKENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBjb2xvcklu
dGVycG9sYXRpb25NZXRob2QsIGNvbnN0IFdlYkNvcmU6OkdyYWRpZW50OjpDb2xvclN0b3BWZWN0
b3ImIHN0b3BzKSBjb25zdAoreworICAgIGF1dG8gbWFrZURhdGEgPSBbJl0gKGF1dG8gY29sb3JJ
bnRlcnBvbGF0aW9uTWV0aG9kLCBhdXRvJiBzdG9wcykgeworICAgICAgICBhdXRvIHRvdGFsTnVt
YmVyT2ZTdG9wcyA9IHN0b3BzLnNpemUoKTsKKyAgICAgICAgYm9vbCBoYXNaZXJvID0gZmFsc2U7
CisgICAgICAgIGJvb2wgaGFzT25lID0gZmFsc2U7CisKKyAgICAgICAgZm9yIChjb25zdCBhdXRv
JiBzdG9wIDogc3RvcHMpIHsKKyAgICAgICAgICAgIGF1dG8gb2Zmc2V0ID0gc3RvcC5vZmZzZXQ7
CisgICAgICAgICAgICBBU1NFUlQob2Zmc2V0ID49IDApOworICAgICAgICAgICAgQVNTRVJUKG9m
ZnNldCA8PSAxKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG9mZnNldCA9PSAwKQor
ICAgICAgICAgICAgICAgIGhhc1plcm8gPSB0cnVlOworICAgICAgICAgICAgZWxzZSBpZiAob2Zm
c2V0ID09IDEpCisgICAgICAgICAgICAgICAgaGFzT25lID0gdHJ1ZTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICghaGFzWmVybykKKyAgICAgICAgICAgIHRvdGFsTnVtYmVyT2ZTdG9wcysrOwor
ICAgICAgICBpZiAoIWhhc09uZSkKKyAgICAgICAgICAgIHRvdGFsTnVtYmVyT2ZTdG9wcysrOwor
CisgICAgICAgIFZlY3RvcjxDb2xvckNvbnZlcnRlZFRvSW50ZXJwb2xhdGlvbkNvbG9yU3BhY2VT
dG9wPiBjb252ZXJ0ZWRTdG9wczsKKyAgICAgICAgY29udmVydGVkU3RvcHMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eSh0b3RhbE51bWJlck9mU3RvcHMpOworCisgICAgICAgIGlmICghaGFzWmVybykK
KyAgICAgICAgICAgIGNvbnZlcnRlZFN0b3BzLnVuY2hlY2tlZEFwcGVuZCh7IDAuMGYsIHsgMC4w
ZiwgMC4wZiwgMC4wZiwgMC4wZiB9IH0pOworCisgICAgICAgIGZvciAoY29uc3QgYXV0byYgc3Rv
cCA6IHN0b3BzKQorICAgICAgICAgICAgY29udmVydGVkU3RvcHMudW5jaGVja2VkQXBwZW5kKHsg
c3RvcC5vZmZzZXQsIGNvbnZlcnRDb2xvclRvQ29sb3JJbnRlcnBvbGF0aW9uU3BhY2Uoc3RvcC5j
b2xvciwgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kKSB9KTsKKworICAgICAgICBpZiAoIWhhc09u
ZSkKKyAgICAgICAgICAgIGNvbnZlcnRlZFN0b3BzLnVuY2hlY2tlZEFwcGVuZCh7IDEuMGYsIGNv
bnZlcnRlZFN0b3BzLmxhc3QoKS5jb2xvckNvbXBvbmVudHMgfSk7CisKKyAgICAgICAgaWYgKCFo
YXNaZXJvKQorICAgICAgICAgICAgY29udmVydGVkU3RvcHNbMF0uY29sb3JDb21wb25lbnRzID0g
Y29udmVydGVkU3RvcHNbMV0uY29sb3JDb21wb25lbnRzOworCisgICAgICAgIHJldHVybiBTaGFk
aW5nOjpEYXRhOjpjcmVhdGUoY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBXVEZNb3ZlKGNvbnZl
cnRlZFN0b3BzKSk7CisgICAgfTsKKworICAgIGF1dG8gbWFrZUZ1bmN0aW9uID0gWyZdIChhdXRv
IGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCwgYXV0byYgZGF0YSkgeworICAgICAgICBhdXRvIG1h
a2VFdmFsdWF0ZUNhbGxiYWNrID0gWyZdIChhdXRvIGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCkg
LT4gQ0dGdW5jdGlvbkV2YWx1YXRlQ2FsbGJhY2sgeworICAgICAgICAgICAgcmV0dXJuIFdURjo6
c3dpdGNoT24oY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLmNvbG9yU3BhY2UsCisgICAgICAgICAg
ICAgICAgWyZdIChhdXRvJiAvKmNvbG9yU3BhY2UqLykgIC0+IENHRnVuY3Rpb25FdmFsdWF0ZUNh
bGxiYWNrIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChjb2xvckludGVycG9sYXRpb25N
ZXRob2QuYWxwaGFQcmVtdWx0aXBsaWNhdGlvbikgeworICAgICAgICAgICAgICAgICAgICBjYXNl
IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZDoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAmc2hhZGluZ0Z1bmN0aW9uPENvbG9ySW50ZXJwb2xhdGlvbk1ldGhv
ZDo6U1JHQiwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkPjsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVk
OgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICZzaGFkaW5nRnVuY3Rpb248Q29sb3JJ
bnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0
aXBsaWVkPjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICk7CisgICAgICAgIH07CisKKyAgICAgICAgY29uc3QgQ0dGdW5jdGlvbkNhbGxiYWNr
cyBjYWxsYmFja3MgPSB7CisgICAgICAgICAgICAwLAorICAgICAgICAgICAgbWFrZUV2YWx1YXRl
Q2FsbGJhY2soY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kKSwKKyAgICAgICAgICAgIFtdICh2b2lk
KiBpbmZvKSB7CisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R3JhZGllbnRDR0FkYXB0b3I6
OlNoYWRpbmc6OkRhdGEqPihpbmZvKS0+ZGVyZWYoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fTsKKworICAgICAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBkb21haW5bMl0gPSB7IDAsIDEgfTsK
KyAgICAgICAgLy8gRklYTUU6IFdoZW4gdGhlIGlucHV0IGlzIGJvdW5kZWQgc1JHQiBhbmQgd2Ug
YXJlIHVzaW5nIHRoZSBTUkJHIGludGVycG9sYXRpb24gbWV0aG9kLCBpdCBtaWdodCBtYWtlIG1v
cmUgc2Vuc2UgdG8gaGF2ZSB0aGUgcmFuZ2UgYmUgeyAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxIH0K
KyAgICAgICAgc3RhdGljIGNvbnN0IENHRmxvYXQgcmFuZ2VbOF0gPSB7IC1zdGQ6Om51bWVyaWNf
bGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Omlu
ZmluaXR5KCksIC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpu
dW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIC1zdGQ6Om51bWVyaWNfbGltaXRzPGZs
b2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCks
IDAsIDEgfTsKKyAgICAgICAgCisgICAgICAgIFJlZiBkYXRhUmVmQ29weSA9IGRhdGE7CisgICAg
ICAgIHJldHVybiBhZG9wdENGKENHRnVuY3Rpb25DcmVhdGUoJmRhdGFSZWZDb3B5LmxlYWtSZWYo
KSwgMSwgZG9tYWluLCA0LCByYW5nZSwgJmNhbGxiYWNrcykpOworICAgIH07CisKKyAgICBhdXRv
IGRhdGEgPSBtYWtlRGF0YShjb2xvckludGVycG9sYXRpb25NZXRob2QsIHN0b3BzKTsKKyAgICBh
dXRvIGZ1bmN0aW9uID0gbWFrZUZ1bmN0aW9uKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCwgZGF0
YSk7CisKKyAgICAvLyBGSVhNRTogSW52ZXN0aWdhdGUgdXNpbmcgYm91bmRlZCBzUkdCIHdoZW4g
dGhlIGlucHV0IHN0b3BzIGFyZSBhbGwgYm91bmRlZCBzUkdCLgorI2lmIEhBVkUoQ09SRV9HUkFQ
SElDU19FWFRFTkRFRF9TUkdCX0NPTE9SX1NQQUNFKQorICAgIGF1dG8gY29sb3JTcGFjZSA9IGV4
dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKTsKKyNlbHNlCisgICAgYXV0byBjb2xvclNwYWNlID0g
c1JHQkNvbG9yU3BhY2VSZWYoKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIFNoYWRpbmcgeyBXVEZN
b3ZlKGRhdGEpLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgY29sb3JTcGFjZSB9OworfQorCisvLyBNQVJL
OiAtIERyYXdpbmcgZnVuY3Rpb25zLgorCit2b2lkIEdyYWRpZW50Q0dBZGFwdG9yOjpkcmF3TGlu
ZWFyR3JhZGllbnQoQ0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dCwgQ0dQb2ludCBzdGFydFBv
aW50LCBDR1BvaW50IGVuZFBvaW50LCBDR0dyYWRpZW50RHJhd2luZ09wdGlvbnMgb3B0aW9ucykK
K3sKKyAgICBXVEY6OnN3aXRjaE9uKG1fc3RyYXRlZ3ksCisgICAgICAgIFsmXSAoR3JhZGllbnQm
IGdyYWRpZW50KSB7CisgICAgICAgICAgICBDR0NvbnRleHREcmF3TGluZWFyR3JhZGllbnQocGxh
dGZvcm1Db250ZXh0LCBncmFkaWVudC5ncmFkaWVudC5nZXQoKSwgc3RhcnRQb2ludCwgZW5kUG9p
bnQsIG9wdGlvbnMpOworICAgICAgICB9LAorICAgICAgICBbJl0gKFNoYWRpbmcmIHNoYWRpbmcp
IHsKKyAgICAgICAgICAgIGJvb2wgc3RhcnRFeHRlbmQgPSAob3B0aW9ucyAmIGtDR0dyYWRpZW50
RHJhd3NCZWZvcmVTdGFydExvY2F0aW9uKSAhPSAwOworICAgICAgICAgICAgYm9vbCBlbmRFeHRl
bmQgPSAob3B0aW9ucyAmIGtDR0dyYWRpZW50RHJhd3NBZnRlckVuZExvY2F0aW9uKSAhPSAwOwor
CisgICAgICAgICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhwbGF0Zm9ybUNvbnRleHQsIGFkb3B0
Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoc2hhZGluZy5jb2xvclNwYWNlLmdldCgpLCBzdGFydFBv
aW50LCBlbmRQb2ludCwgc2hhZGluZy5mdW5jdGlvbi5nZXQoKSwgc3RhcnRFeHRlbmQsIGVuZEV4
dGVuZCkpLmdldCgpKTsKKyAgICAgICAgfQorICAgICk7Cit9CisKK3ZvaWQgR3JhZGllbnRDR0Fk
YXB0b3I6OmRyYXdSYWRpYWxHcmFkaWVudChDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250ZXh0LCBD
R1BvaW50IHN0YXJ0Q2VudGVyLCBDR0Zsb2F0IHN0YXJ0UmFkaXVzLCBDR1BvaW50IGVuZENlbnRl
ciwgQ0dGbG9hdCBlbmRSYWRpdXMsIENHR3JhZGllbnREcmF3aW5nT3B0aW9ucyBvcHRpb25zKQor
eworICAgIFdURjo6c3dpdGNoT24obV9zdHJhdGVneSwKKyAgICAgICAgWyZdIChHcmFkaWVudCYg
Z3JhZGllbnQpIHsKKyAgICAgICAgICAgIENHQ29udGV4dERyYXdSYWRpYWxHcmFkaWVudChwbGF0
Zm9ybUNvbnRleHQsIGdyYWRpZW50LmdyYWRpZW50LmdldCgpLCBzdGFydENlbnRlciwgc3RhcnRS
YWRpdXMsIGVuZENlbnRlciwgZW5kUmFkaXVzLCBvcHRpb25zKTsKKyAgICAgICAgfSwKKyAgICAg
ICAgWyZdIChTaGFkaW5nJiBzaGFkaW5nKSB7CisgICAgICAgICAgICBib29sIHN0YXJ0RXh0ZW5k
ID0gKG9wdGlvbnMgJiBrQ0dHcmFkaWVudERyYXdzQmVmb3JlU3RhcnRMb2NhdGlvbikgIT0gMDsK
KyAgICAgICAgICAgIGJvb2wgZW5kRXh0ZW5kID0gKG9wdGlvbnMgJiBrQ0dHcmFkaWVudERyYXdz
QWZ0ZXJFbmRMb2NhdGlvbikgIT0gMDsKKworICAgICAgICAgICAgQ0dDb250ZXh0RHJhd1NoYWRp
bmcocGxhdGZvcm1Db250ZXh0LCBhZG9wdENGKENHU2hhZGluZ0NyZWF0ZVJhZGlhbChzaGFkaW5n
LmNvbG9yU3BhY2UuZ2V0KCksIHN0YXJ0Q2VudGVyLCBzdGFydFJhZGl1cywgZW5kQ2VudGVyLCBl
bmRSYWRpdXMsIHNoYWRpbmcuZnVuY3Rpb24uZ2V0KCksIHN0YXJ0RXh0ZW5kLCBlbmRFeHRlbmQp
KS5nZXQoKSk7CisgICAgICAgIH0KKyAgICApOworfQorCit2b2lkIEdyYWRpZW50Q0dBZGFwdG9y
OjpkcmF3Q29uaWNHcmFkaWVudChDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250ZXh0LCBDR1BvaW50
IGNlbnRlciwgQ0dGbG9hdCBhbmdsZSkKK3sKKy8vIEZJWE1FOiBTZWVtcyBsaWtlIHRoaXMgc2hv
dWxkIGJlIEhBVkUoQ0dfQ09OVEVYVF9EUkFXX0NPTklDX0dSQURJRU5UKS4KKy8vIEZJWE1FOiBD
YW4gd2UgY2hhbmdlIHR2T1MgdG8gYmUgbGlrZSB0aGUgb3RoZXIgQ29jb2EgcGxhdGZvcm1zPwor
I2lmIFBMQVRGT1JNKENPQ09BKSAmJiAhUExBVEZPUk0oQVBQTEVUVikKKyAgICBXVEY6OnN3aXRj
aE9uKG1fc3RyYXRlZ3ksCisgICAgICAgIFsmXSAoR3JhZGllbnQmIGdyYWRpZW50KSB7CisgICAg
ICAgICAgICBDR0NvbnRleHREcmF3Q29uaWNHcmFkaWVudChwbGF0Zm9ybUNvbnRleHQsIGdyYWRp
ZW50LmdyYWRpZW50LmdldCgpLCBjZW50ZXIsIGFuZ2xlKTsKKyAgICAgICAgfSwKKyAgICAgICAg
WyZdIChTaGFkaW5nJiBzaGFkaW5nKSB7CisgICAgICAgICAgICBDR0NvbnRleHREcmF3U2hhZGlu
ZyhwbGF0Zm9ybUNvbnRleHQsIGFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlQ29uaWMoc2hhZGluZy5j
b2xvclNwYWNlLmdldCgpLCBjZW50ZXIsIGFuZ2xlLCBzaGFkaW5nLmZ1bmN0aW9uLmdldCgpKSku
Z2V0KCkpOworICAgICAgICB9CisgICAgKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHBsYXRm
b3JtQ29udGV4dCk7CisgICAgVU5VU0VEX1BBUkFNKGNlbnRlcik7CisgICAgVU5VU0VEX1BBUkFN
KGFuZ2xlKTsKKyNlbmRpZgorfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFkaWVudENHQWRhcHRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0dBZGFwdG9yLmgJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDR0FkYXB0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkNvbG9yQ29tcG9uZW50cy5oIgorI2luY2x1ZGUgIkNvbG9ySW50ZXJwb2xh
dGlvbk1ldGhvZC5oIgorI2luY2x1ZGUgIkdyYWRpZW50LmgiCisjaW5jbHVkZSA8Q29yZUdyYXBo
aWNzL0NvcmVHcmFwaGljcy5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IENvbG9yQ29udmVydGVkVG9JbnRlcnBvbGF0
aW9uQ29sb3JTcGFjZVN0b3AgeworICAgIGZsb2F0IG9mZnNldDsKKyAgICBDb2xvckNvbXBvbmVu
dHM8ZmxvYXQsIDQ+IGNvbG9yQ29tcG9uZW50czsKK307CisKK2NsYXNzIEdyYWRpZW50Q0dBZGFw
dG9yIHsKK3B1YmxpYzoKKyAgICAvLyBGSVhNRTogVGhpcyBvbmx5IHVzZXMgYSB1bmlxdWVfcHRy
IHRvIGF2b2lkIGNpcmN1bGFyIGluY2x1c2lvbiBpc3N1ZXMgZHVlIHRvIEdyYWRpZW50OjpDb2xv
clN0b3BWZWN0b3IgYmVpbmcgYSBuZXN0ZWQgdHlwZS4gSWYgR3JhZGllbnQ6OkNvbG9yU3RvcFZl
Y3RvcgorICAgIC8vIGdldHMgZXh0cmFjdGVkIGludG8gaXRzIG93biBmaWxlLCB3ZSBjb3VsZCBy
ZXBsYWNlIHRoZSBzdGQ6OnVuaXF1ZV9wdHI8R3JhZGllbnRDR0FkYXB0b3I+IGluIEdyYWRpZW50
IHdpdGggYSBzdGQ6Om9wdGlvbmFsPEdyYWRpZW50Q0dBZGFwdG9yPi4KKyAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPEdyYWRpZW50Q0dBZGFwdG9yPiBjcmVhdGUoQ29sb3JJbnRlcnBvbGF0aW9u
TWV0aG9kIGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCwgY29uc3QgV2ViQ29yZTo6R3JhZGllbnQ6
OkNvbG9yU3RvcFZlY3RvciYgc3RvcHMpCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjp1bmlx
dWVfcHRyPEdyYWRpZW50Q0dBZGFwdG9yPihuZXcgR3JhZGllbnRDR0FkYXB0b3IoY29sb3JJbnRl
cnBvbGF0aW9uTWV0aG9kLCBzdG9wcykpOworICAgIH0KKworICAgIHZvaWQgZHJhd0xpbmVhckdy
YWRpZW50KENHQ29udGV4dFJlZiwgQ0dQb2ludCBzdGFydFBvaW50LCBDR1BvaW50IGVuZFBvaW50
LCBDR0dyYWRpZW50RHJhd2luZ09wdGlvbnMpOworICAgIHZvaWQgZHJhd1JhZGlhbEdyYWRpZW50
KENHQ29udGV4dFJlZiwgQ0dQb2ludCBzdGFydENlbnRlciwgQ0dGbG9hdCBzdGFydFJhZGl1cywg
Q0dQb2ludCBlbmRDZW50ZXIsIENHRmxvYXQgZW5kUmFkaXVzLCBDR0dyYWRpZW50RHJhd2luZ09w
dGlvbnMpOworICAgIHZvaWQgZHJhd0NvbmljR3JhZGllbnQoQ0dDb250ZXh0UmVmLCBDR1BvaW50
IGNlbnRlciwgQ0dGbG9hdCBhbmdsZSk7CisKKyAgICBzdHJ1Y3QgR3JhZGllbnQgeworICAgICAg
ICBSZXRhaW5QdHI8Q0dHcmFkaWVudFJlZj4gZ3JhZGllbnQ7CisgICAgfTsKKworICAgIHN0cnVj
dCBTaGFkaW5nIHsKKyAgICAgICAgY2xhc3MgRGF0YSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxEYXRhPiB7CisgICAgICAgIHB1YmxpYzoKKyAgICAgICAgICAgIHN0YXRpYyBSZWY8RGF0
YT4gY3JlYXRlKENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBjb2xvckludGVycG9sYXRpb25NZXRo
b2QsIFZlY3RvcjxDb2xvckNvbnZlcnRlZFRvSW50ZXJwb2xhdGlvbkNvbG9yU3BhY2VTdG9wPiBz
dG9wcykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEYXRhKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCwgV1RGTW92ZShzdG9wcykpKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIGNvbG9ySW50
ZXJwb2xhdGlvbk1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JJbnRlcnBvbGF0aW9uTWV0
aG9kOyB9CisgICAgICAgICAgICBjb25zdCBWZWN0b3I8Q29sb3JDb252ZXJ0ZWRUb0ludGVycG9s
YXRpb25Db2xvclNwYWNlU3RvcD4mIHN0b3BzKCkgY29uc3QgeyByZXR1cm4gbV9zdG9wczsgfQor
CisgICAgICAgIHByaXZhdGU6CisgICAgICAgICAgICBEYXRhKENvbG9ySW50ZXJwb2xhdGlvbk1l
dGhvZCBjb2xvckludGVycG9sYXRpb25NZXRob2QsIFZlY3RvcjxDb2xvckNvbnZlcnRlZFRvSW50
ZXJwb2xhdGlvbkNvbG9yU3BhY2VTdG9wPiBzdG9wcykKKyAgICAgICAgICAgICAgICA6IG1fY29s
b3JJbnRlcnBvbGF0aW9uTWV0aG9kIHsgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIH0KKyAgICAg
ICAgICAgICAgICAsIG1fc3RvcHMgeyBXVEZNb3ZlKHN0b3BzKSB9CisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBtX2Nv
bG9ySW50ZXJwb2xhdGlvbk1ldGhvZDsKKyAgICAgICAgICAgIFZlY3RvcjxDb2xvckNvbnZlcnRl
ZFRvSW50ZXJwb2xhdGlvbkNvbG9yU3BhY2VTdG9wPiBtX3N0b3BzOworICAgICAgICB9OworCisg
ICAgICAgIFJlZjxEYXRhPiBkYXRhOworICAgICAgICBSZXRhaW5QdHI8Q0dGdW5jdGlvblJlZj4g
ZnVuY3Rpb247CisgICAgICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2U7
CisgICAgfTsKKworICAgIHVzaW5nIFN0cmF0ZWd5ID0gc3RkOjp2YXJpYW50PEdyYWRpZW50LCBT
aGFkaW5nPjsKKworcHJpdmF0ZToKKyAgICBHcmFkaWVudENHQWRhcHRvcihDb2xvckludGVycG9s
YXRpb25NZXRob2QsIGNvbnN0IFdlYkNvcmU6OkdyYWRpZW50OjpDb2xvclN0b3BWZWN0b3ImKTsK
KworICAgIFN0cmF0ZWd5IHBpY2tTdHJhdGVneShDb2xvckludGVycG9sYXRpb25NZXRob2QsIGNv
bnN0IFdlYkNvcmU6OkdyYWRpZW50OjpDb2xvclN0b3BWZWN0b3ImKSBjb25zdDsKKyAgICBTdHJh
dGVneSBtYWtlR3JhZGllbnQoQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb25zdCBXZWJDb3Jl
OjpHcmFkaWVudDo6Q29sb3JTdG9wVmVjdG9yJikgY29uc3Q7CisgICAgU3RyYXRlZ3kgbWFrZVNo
YWRpbmcoQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb25zdCBXZWJDb3JlOjpHcmFkaWVudDo6
Q29sb3JTdG9wVmVjdG9yJikgY29uc3Q7CisKKyAgICBTdHJhdGVneSBtX3N0cmF0ZWd5OworfTsK
KworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447614</attachid>
            <date>2021-12-20 11:31:20 -0800</date>
            <delta_ts>2021-12-20 17:20:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234492-20211220113119.patch</filename>
            <type>text/plain</type>
            <size>70433</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVy
aW1lbnRhbC55YW1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNl
cy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCShyZXZpc2lvbiAyODcyMzMpCisrKyBT
b3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwu
eWFtbAkod29ya2luZyBjb3B5KQpAQCAtMjg0LDYgKzI4NCwxOCBAQCBDU1NDdXN0b21Qcm9wZXJ0
aWVzQW5kVmFsdWVzRW5hYmxlZDoKICAgICBXZWJDb3JlOgogICAgICAgZGVmYXVsdDogZmFsc2UK
IAorQ1NTR3JhZGllbnRBbHBoYVByZW11bHRpcGxpZWRJbnRlcnBvbGF0aW9uRW5hYmxlZDoKKyAg
dHlwZTogYm9vbAorICBodW1hblJlYWRhYmxlTmFtZTogIkFscGhhIFByZW11bHRpcGxpZWQgSW50
ZXJwb2xhdGVkIENTUyBHcmFkaWVudHMiCisgIGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbjogIkVu
YWJsZSBhbHBoYSBwcmVtdWx0aXBsaWVkIGludGVycG9sYXRlZCBDU1MgZ3JhZGllbnRzIgorICBk
ZWZhdWx0VmFsdWU6CisgICAgV2ViS2l0TGVnYWN5OgorICAgICAgZGVmYXVsdDogZmFsc2UKKyAg
ICBXZWJLaXQ6CisgICAgICBkZWZhdWx0OiBmYWxzZQorICAgIFdlYkNvcmU6CisgICAgICBkZWZh
dWx0OiBmYWxzZQorCiAjIEZJWE1FOiBUaGlzIGlzIGVuYWJsZWQgd2hlbiBFTkFCTEUoRVhQRVJJ
TUVOVEFMX0ZFQVRVUkVTKSBpcyB0cnVlIGluIFdlYktpdDIuIFBlcmhhcHMgd2Ugc2hvdWxkIGNv
bnNpZGVyIHVzaW5nIHRoYXQgZm9yIFdlYktpdExlZ2FjeSBhcyB3ZWxsLgogQ1NTSW5kaXZpZHVh
bFRyYW5zZm9ybVByb3BlcnRpZXNFbmFibGVkOgogICB0eXBlOiBib29sCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODcyMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwzNSBAQAorMjAyMS0xMi0xOSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0Bh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIENHU2hhZGluZ1JlZiBiYXNlZCBpbXBsZW1lbnRhdGlv
biBvZiBHcmFkaWVudCBhcyBzdGVwcGluZyBzdG9uZSB0b3dhcmQgcHJlbXVsdGlwbGllZCBpbnRl
cnBvbGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzQ0OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbV0lQXSBUaGlzIGNvbXBsZXRlbHkgcmVwbGFjZXMgdGhlIENHR3JhZGllbnRSZWYgaW1wbGVt
ZW50YXRpb24uIFdlIG5lZWQgdG8gbWFrZSB0aGlzCisgICAgICAgIGNvbmRpdGlvbmFsIGZvciBp
dCB0byBiZSByZWFsLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb21wb25l
bnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNvbXBvbmVudHM6OnNpemUgY29uc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpDdXN0b21DR0dyYWRpZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tQ0dH
cmFkaWVudDo6ZnVuY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tQ0dHcmFk
aWVudDo6Y29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkN1c3RvbUNHR3JhZGllbnQ6OnN0b3BzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3Rv
bUNHR3JhZGllbnQ6OkN1c3RvbUNHR3JhZGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYWRpZW50Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dW5wcmVtdWx0aXBsaWVk
U2hhZGluZ0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNHRnVuY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tQ0dHcmFkaWVudDo6aW5pdGlhbGl6ZUZ1bmN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUNHR3JhZGllbnQ6OmNvbG9yU3BhY2UgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6OmNyZWF0ZUN1c3RvbUNHR3JhZGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6ZHJhd0xpbmVhckdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmRy
YXdSYWRpYWxHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpkcmF3Q29uaWNHcmFkaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhZGllbnQ6OmZpbGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6Omhhc09ubHlCb3Vu
ZGVkU1JHQkNvbG9yU3RvcHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3Jh
ZGllbnQ6OmNyZWF0ZUNHR3JhZGllbnQpOiBEZWxldGVkLgorCiAyMDIxLTEyLTE4ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBIYXNoIHRhYmxlcywgcmVhZC93cml0
ZSwgYW5kIGhlYXAgbWVtb3J5IGFyZSB1c2VkIHVubmVjZXNzYXJpbHksIHdoaWNoIG1heSBodXJ0
IHBlcmZvcm1hbmNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHJldmlzaW9uIDI4NzIzMykKKysr
IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTE0NjEsNiAr
MTQ2MSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ds
eXBoUGFnZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaAorICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYWRpZW50Q29sb3JTdG9wLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEZsdXNo
SWRlbnRpZmllci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApJ
bmRleDogU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCShyZXZpc2lvbiAyODcyMzMp
CisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzEsNiArMTMxLDcgQEAgZWxzZSAoKQogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9GbG9hdFJlY3RDRy5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRTaXpl
Q0cuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwCisgICAg
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0dTdHJhdGVneS5jcHAKICAgICAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAKICAgICAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCiAgICAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybU1hYy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5j
bWFrZQkocmV2aXNpb24gMjg3MjMzKQorKysgU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21h
a2UJKHdvcmtpbmcgY29weSkKQEAgLTI5MSw2ICsyOTEsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3Jl
X1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFJlY3RDRy5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFNpemVDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFkaWVudENHLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0dT
dHJhdGVneS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENH
LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuY3BwCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzQ29jb2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1NvdXJj
ZXNDb2NvYS50eHQJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXND
b2NvYS50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM0OCw2ICszNDgsNyBAQCBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9GbG9hdFBvaW50Q0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFJlY3RD
Ry5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0U2l6ZUNHLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhZGllbnRDRy5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0dT
dHJhdGVneS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI4NzI0NykKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0xMi0xOSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIENHU2hhZGluZ1JlZiBiYXNlZCBpbXBsZW1lbnRhdGlvbiBv
ZiBHcmFkaWVudCBhcyBzdGVwcGluZyBzdG9uZSB0b3dhcmQgcHJlbXVsdGlwbGllZCBpbnRlcnBv
bGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzQ0OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg6CisgICAgICAgIEFkZCBDR1NoYWRpbmdSZWYg
U1BJIGZvciBjcmVhdGluZyBjb25pYyBzaGFkaW5ncy4KKwogMjAyMS0xMi0xNiAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJldmVydGluZyByMjg3MDU2LgpJbmRleDogU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cv
Q29yZUdyYXBoaWNzU1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
cGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MSw4ICs0MSw5IEBACiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHQ29udGV4dERlbGVnYXRlUHJp
dmF0ZS5oPgogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0ZvbnRDYWNoZS5oPgogI2luY2x1ZGUg
PENvcmVHcmFwaGljcy9DR1BhdGhQcml2YXRlLmg+Ci0jaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0Nv
cmVHcmFwaGljc1ByaXZhdGUuaD4KKyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dTaGFkaW5nUHJp
dmF0ZS5oPgogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR1N0eWxlUHJpdmF0ZS5oPgorI2luY2x1
ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3NQcml2YXRlLmg+CiAKICNpZiBQTEFURk9STShN
QUMpCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHQWNjZXNzaWJpbGl0eS5oPgpAQCAtMzIzLDYg
KzMyNCwxNiBAQCB2b2lkIENHQ29udGV4dFNldFN0eWxlKENHQ29udGV4dFJlZiwgQ0dTdHlsZVJl
Zik7CiB2b2lkIENHQ29udGV4dERyYXdDb25pY0dyYWRpZW50KENHQ29udGV4dFJlZiwgQ0dHcmFk
aWVudFJlZiwgQ0dQb2ludCBjZW50ZXIsIENHRmxvYXQgYW5nbGUpOwogdm9pZCBDR1BhdGhBZGRV
bmV2ZW5Db3JuZXJzUm91bmRlZFJlY3QoQ0dNdXRhYmxlUGF0aFJlZiwgY29uc3QgQ0dBZmZpbmVU
cmFuc2Zvcm0gKiwgQ0dSZWN0LCBjb25zdCBDR1NpemUgY29ybmVyc1s0XSk7CiBib29sIENHRm9u
dFJlbmRlcmluZ0dldEZvbnRTbW9vdGhpbmdEaXNhYmxlZCh2b2lkKTsKK0NHU2hhZGluZ1JlZiBD
R1NoYWRpbmdDcmVhdGVDb25pYyhDR0NvbG9yU3BhY2VSZWYsIENHUG9pbnQgY2VudGVyLCBDR0Zs
b2F0IGFuZ2xlLCBDR0Z1bmN0aW9uUmVmKTsKKworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19HUkFE
SUVOVF9DUkVBVEVfV0lUSF9PUFRJT05TKQorQ0dHcmFkaWVudFJlZiBDR0dyYWRpZW50Q3JlYXRl
V2l0aENvbG9yQ29tcG9uZW50c0FuZE9wdGlvbnMoQ0dDb2xvclNwYWNlUmVmLCBjb25zdCBDR0Zs
b2F0KiwgY29uc3QgQ0dGbG9hdCosIHNpemVfdCwgQ0ZEaWN0aW9uYXJ5UmVmKTsKK0NHR3JhZGll
bnRSZWYgQ0dHcmFkaWVudENyZWF0ZVdpdGhDb2xvcnNBbmRPcHRpb25zKENHQ29sb3JTcGFjZVJl
ZiwgQ0ZBcnJheVJlZiwgY29uc3QgQ0dGbG9hdCosIENGRGljdGlvbmFyeVJlZik7CisjZW5kaWYK
KworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19QUkVNVUxUSVBMSUVEX0lOVEVSUE9MQVRJT05fR1JB
RElFTlQpCitleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NHR3JhZGllbnRJbnRlcnBvbGF0ZXNQ
cmVtdWx0aXBsaWVkOworI2VuZGlmCiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMjg3MjMzKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MDgxLDYgKzQwODEsOCBAQAogCQlC
QzEyNEYwMDBDMjY0NDdBMDA5RTIzNDkgLyogSlNCYXJQcm9wLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzEyNEVGRTBDMjY0NDdBMDA5RTIzNDkgLyog
SlNCYXJQcm9wLmggKi87IH07CiAJCUJDMTI4QTczMTM3Qzg2N0MwMENBQzg0NSAvKiBSZW5kZXJH
cmlkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzEy
OEE3MjEzN0M4NjdDMDBDQUM4NDUgLyogUmVuZGVyR3JpZC5oICovOyB9OwogCQlCQzE0MDI4QjBF
ODM2ODA4MDAzMTk3MTcgLyogU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMTQwMjg5MEU4MzY4MDgwMDMxOTcx
NyAvKiBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDMTlDREYyMjc2RkZDNkQwMDUzRjczNCAvKiBHcmFk
aWVudENHU3RyYXRlZ3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDMTlDREYwMjc2RkZCMjYwMDUzRjczNCAvKiBHcmFkaWVudENHU3RyYXRlZ3kuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzE5Q0RG
NDI3NzEwNjM5MDA1M0Y3MzQgLyogR3JhZGllbnRDb2xvclN0b3AuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMTlDREYzMjc3MTA2MzkwMDUzRjczNCAv
KiBHcmFkaWVudENvbG9yU3RvcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUJDMUE3RDk4MThGQ0I1QjAwMDQyMTg3OSAvKiBSZW5kZXJNdWx0aUNv
bHVtblNwYW5uZXJQbGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkMxQTdEOTYxOEZDQjVCMDAwNDIxODc5IC8qIFJlbmRlck11bHRpQ29s
dW1uU3Bhbm5lclBsYWNlaG9sZGVyLmggKi87IH07CiAJCUJDMjI3Mjg3MEU4MkU3MDcwMEU3Rjk3
NSAvKiBTdHlsZVJlZmxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDMjI3Mjg2MEU4MkU3MDcwMEU3Rjk3NSAvKiBTdHlsZVJlZmxlY3Rpb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzIy
NzJBMjBFODJFODdDMDBFN0Y5NzUgLyogQ3Vyc29yRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyMjcyQTEwRTgyRTg3QzAwRTdGOTc1IC8qIEN1
cnNvckRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTUxMTMsNiArMTUxMTUsOSBAQAogCQlCQzEyOEIwMDEzN0M4RDQ2MDBDQUM4NDUgLyog
UmVuZGVyR3JpZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5k
ZXJHcmlkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMxNDAyODgwRTgzNjgw
ODAwMzE5NzE3IC8qIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMxNDAyODkwRTgzNjgwODAwMzE5NzE3IC8qIFNjcm9s
bGJhclRoZW1lQ29tcG9zaXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNj
cm9sbGJhclRoZW1lQ29tcG9zaXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJD
MTlDREVGMjc2RkZCMjYwMDUzRjczNCAvKiBHcmFkaWVudENHU3RyYXRlZ3kuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gR3JhZGllbnRDR1N0cmF0ZWd5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQkMxOUNERjAyNzZGRkIyNjAwNTNGNzM0IC8qIEdyYWRpZW50Q0dTdHJhdGVneS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHcmFkaWVudENHU3RyYXRlZ3kuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQkMxOUNERjMyNzcxMDYzOTAwNTNGNzM0IC8qIEdyYWRpZW50Q29sb3JTdG9w
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdyYWRpZW50Q29sb3JTdG9wLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDMUE3RDk1MThGQ0I1QjAwMDQyMTg3OSAvKiBSZW5kZXJNdWx0aUNvbHVt
blNwYW5uZXJQbGFjZWhvbGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDMUE3RDk2MThGQ0I1QjAwMDQyMTg3OSAvKiBSZW5kZXJNdWx0
aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCQzIwRkI3RTBDMEU4RTZDMDBEMTQ0N0YgLyogSlNEZXByZWNhdGVk
Q1NTT01WYWx1ZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNEZXByZWNhdGVkQ1NTT01WYWx1ZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yODUzNCw2ICsyODUzOSw4IEBACiAJCQkJQjI3NTM1MkMwQjA1MzgxNDAwMkNF
NjRGIC8qIEZsb2F0UmVjdENHLmNwcCAqLywKIAkJCQlCMjc1MzUyRDBCMDUzODE0MDAyQ0U2NEYg
LyogRmxvYXRTaXplQ0cuY3BwICovLAogCQkJCUJDNTNDNjBBMERBNTZDRjEwMDIxRUI1RCAvKiBH
cmFkaWVudENHLmNwcCAqLywKKwkJCQlCQzE5Q0RFRjI3NkZGQjI2MDA1M0Y3MzQgLyogR3JhZGll
bnRDR1N0cmF0ZWd5LmNwcCAqLywKKwkJCQlCQzE5Q0RGMDI3NkZGQjI2MDA1M0Y3MzQgLyogR3Jh
ZGllbnRDR1N0cmF0ZWd5LmggKi8sCiAJCQkJQjJFRDk3NzAwQjFGNTVDRTAwMjU3RDBGIC8qIEdy
YXBoaWNzQ29udGV4dENHLmNwcCAqLywKIAkJCQk5MzQ5MDdFMzEyNUJCQkM4MDA3RjIzQTAgLyog
R3JhcGhpY3NDb250ZXh0Q0cuaCAqLywKIAkJCQk2RTIxQzZDMTExMjYzMzk5MDBBN0JFMDIgLyog
R3JhcGhpY3NDb250ZXh0R0xDRy5jcHAgKi8sCkBAIC0yODc0Myw2ICsyODc1MCw3IEBACiAJCQkJ
MDg3M0I4NkExMzYwNjRFQTAwQTUyMkMyIC8qIEdseXBoUGFnZS5oICovLAogCQkJCUJDNTNDNjA3
MERBNTZDNTcwMDIxRUI1RCAvKiBHcmFkaWVudC5jcHAgKi8sCiAJCQkJQkM1M0M1RjQwREE1NkI5
MjAwMjFFQjVEIC8qIEdyYWRpZW50LmggKi8sCisJCQkJQkMxOUNERjMyNzcxMDYzOTAwNTNGNzM0
IC8qIEdyYWRpZW50Q29sb3JTdG9wLmggKi8sCiAJCQkJMkQyRkMwNTYxNDYwQ0Q2RjAwMjYzNjMz
IC8qIEdyYWRpZW50SW1hZ2UuY3BwICovLAogCQkJCTJEMkZDMDU3MTQ2MENENkYwMDI2MzYzMyAv
KiBHcmFkaWVudEltYWdlLmggKi8sCiAJCQkJQjJBMDE1OTIwQUY2Q0Q1MzAwNkJDRTBFIC8qIEdy
YXBoaWNzQ29udGV4dC5jcHAgKi8sCkBAIC0zMzMwNCw2ICszMzMxMiw3IEBACiAJCQkJODM3ODg3
ODIyNEQ4QTYwOTAwMEQ0QTVCIC8qIEF1ZGlvQnVmZmVyU291cmNlT3B0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkQzMTYwN0MxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvQnVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGRDMxNjA3RTEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9DaGFubmVsLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlCQzE5Q0RGMjI3NkZGQzZEMDA1M0Y3MzQgLyogR3JhZGllbnRD
R1N0cmF0ZWd5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDNFRUYzQTI1Nzk5Rjg4MDA2NTYzQkIg
LyogQXVkaW9Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAwNTEyQjAy
Njc2MDBDMUEzNTkgLyogQXVkaW9Db250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNzg1RDk2
MjI0QjdGNzM1MDAxNERCMjEgLyogQXVkaW9Db250ZXh0TGF0ZW5jeUNhdGVnb3J5LmggaW4gSGVh
ZGVycyAqLywKQEAgLTM0ODYwLDYgKzM0ODY5LDcgQEAKIAkJCQlBNUI4MUNBRDFGQUE0NDYyMDAz
N0QxRTYgLyogSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5
OTRDNjAzQTI1M0EyNzczMDBCREYwNjAgLyogSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGMzQ0QzcxNDExMjVCODJDMDBGMjZFRUUgLyogSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMTlDREY0Mjc3MTA2Mzkw
MDUzRjczNCAvKiBHcmFkaWVudENvbG9yU3RvcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjM0NEM3
NTMxMTI5NEQ5RDAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTdBMEU3NzBGMTBDMDBBODgwMEEwMjc2RSAvKiBJbnNwZWN0b3JGcm9u
dGVuZEhvc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBNTQ4NTgwMTRFMDJENTEwMDZBRTA1QSAv
KiBJbnNwZWN0b3JIaXN0b3J5LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmNwcAkocmV2aXNpb24gMjg3MjMzKQor
KysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA2LDEwICsxMDYsMTEgQEAgQ1NTUGFyc2VyQ29udGV4dDo6Q1NTUGFyc2Vy
Q29udGV4dChjb25zdCBEb2N1bWVudCYgZG9jCiAgICAgLCBoYXNQc2V1ZG9DbGFzc0VuYWJsZWQg
eyBkb2N1bWVudC5zZXR0aW5ncygpLmhhc1BzZXVkb0NsYXNzRW5hYmxlZCgpIH0KICAgICAsIGNh
c2NhZGVMYXllcnNFbmFibGVkIHsgZG9jdW1lbnQuc2V0dGluZ3MoKS5jc3NDYXNjYWRlTGF5ZXJz
RW5hYmxlZCgpIH0KICAgICAsIGNvbnRhaW5lclF1ZXJpZXNFbmFibGVkIHsgZG9jdW1lbnQuc2V0
dGluZ3MoKS5jc3NDb250YWluZXJRdWVyaWVzRW5hYmxlZCgpIH0KKyAgICAsIG92ZXJmbG93Q2xp
cEVuYWJsZWQgeyBkb2N1bWVudC5zZXR0aW5ncygpLm92ZXJmbG93Q2xpcEVuYWJsZWQoKSB9Cisg
ICAgLCBncmFkaWVudEFscGhhUHJlbXVsdGlwbGllZEludGVycG9sYXRpb25FbmFibGVkIHsgZG9j
dW1lbnQuc2V0dGluZ3MoKS5jc3NHcmFkaWVudEFscGhhUHJlbXVsdGlwbGllZEludGVycG9sYXRp
b25FbmFibGVkKCkgfQogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgLCBhdHRh
Y2htZW50RW5hYmxlZCB7IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
YXR0YWNobWVudEVsZW1lbnRFbmFibGVkKCkgfQogI2VuZGlmCi0gICAgLCBvdmVyZmxvd0NsaXBF
bmFibGVkIHsgZG9jdW1lbnQuc2V0dGluZ3MoKS5vdmVyZmxvd0NsaXBFbmFibGVkKCkgfQogewog
fQogCkBAIC0xNTMsMTAgKzE1NCwxMSBAQCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTUGFyc2Vy
Q29udGV4dCYgYSwgY29uc3QgQ1NTUGEKICAgICAgICAgJiYgYS5oYXNQc2V1ZG9DbGFzc0VuYWJs
ZWQgPT0gYi5oYXNQc2V1ZG9DbGFzc0VuYWJsZWQKICAgICAgICAgJiYgYS5jYXNjYWRlTGF5ZXJz
RW5hYmxlZCA9PSBiLmNhc2NhZGVMYXllcnNFbmFibGVkCiAgICAgICAgICYmIGEuY29udGFpbmVy
UXVlcmllc0VuYWJsZWQgPT0gYi5jb250YWluZXJRdWVyaWVzRW5hYmxlZAorICAgICAgICAmJiBh
Lm92ZXJmbG93Q2xpcEVuYWJsZWQgPT0gYi5vdmVyZmxvd0NsaXBFbmFibGVkCisgICAgICAgICYm
IGEuZ3JhZGllbnRBbHBoYVByZW11bHRpcGxpZWRJbnRlcnBvbGF0aW9uRW5hYmxlZCA9PSBiLmdy
YWRpZW50QWxwaGFQcmVtdWx0aXBsaWVkSW50ZXJwb2xhdGlvbkVuYWJsZWQKICNpZiBFTkFCTEUo
QVRUQUNITUVOVF9FTEVNRU5UKQogICAgICAgICAmJiBhLmF0dGFjaG1lbnRFbmFibGVkID09IGIu
YXR0YWNobWVudEVuYWJsZWQKICNlbmRpZgotICAgICAgICAmJiBhLm92ZXJmbG93Q2xpcEVuYWJs
ZWQgPT0gYi5vdmVyZmxvd0NsaXBFbmFibGVkCiAgICAgOwogfQogCkBAIC0xOTMsMTIgKzE5NSwx
MyBAQCB2b2lkIGFkZChIYXNoZXImIGhhc2hlciwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29u
dGUKICAgICAgICAgfCBjb250ZXh0Lmhhc1BzZXVkb0NsYXNzRW5hYmxlZCAgICAgICAgICAgICAg
ICAgICAgIDw8IDIyCiAgICAgICAgIHwgY29udGV4dC5jYXNjYWRlTGF5ZXJzRW5hYmxlZCAgICAg
ICAgICAgICAgICAgICAgICA8PCAyMwogICAgICAgICB8IGNvbnRleHQuY29udGFpbmVyUXVlcmll
c0VuYWJsZWQgICAgICAgICAgICAgICAgICAgPDwgMjQKKyAgICAgICAgfCBjb250ZXh0Lm92ZXJm
bG93Q2xpcEVuYWJsZWQgICAgICAgICAgICAgICAgICAgICAgIDw8IDI1CisgICAgICAgIHwgY29u
dGV4dC5ncmFkaWVudEFscGhhUHJlbXVsdGlwbGllZEludGVycG9sYXRpb25FbmFibGVkIDw8IDI2
CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICAgICAgfCBjb250ZXh0LmF0dGFj
aG1lbnRFbmFibGVkICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDI1CisgICAgICAgIHwgY29u
dGV4dC5hdHRhY2htZW50RW5hYmxlZCAgICAgICAgICAgICAgICAgICAgICAgICA8PCAyNwogI2Vu
ZGlmCi0gICAgICAgIHwgY29udGV4dC5vdmVyZmxvd0NsaXBFbmFibGVkICAgICAgICAgICAgICAg
ICAgICAgICA8PCAyNgotICAgICAgICB8IGNvbnRleHQuYWNjZW50Q29sb3JFbmFibGVkICAgICAg
ICAgICAgICAgICAgICAgICAgPDwgMjcKLSAgICAgICAgfCBjb250ZXh0Lm1vZGUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDI4OyAvLyBUaGlzIGlzIG11bHRpcGxlIGJp
dHMsIHNvIGtlZXAgaXQgbGFzdC4KKyAgICAgICAgfCBjb250ZXh0LmFjY2VudENvbG9yRW5hYmxl
ZCAgICAgICAgICAgICAgICAgICAgICAgIDw8IDI4CisgICAgICAgIHwgY29udGV4dC5tb2RlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAyOTsgLy8gVGhpcyBpcyBtdWx0
aXBsZSBiaXRzLCBzbyBrZWVwIGl0IGxhc3QuCiAgICAgYWRkKGhhc2hlciwgY29udGV4dC5iYXNl
VVJMLCBjb250ZXh0LmNoYXJzZXQsIGJpdHMpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaAkocmV2aXNpb24gMjg3MjMzKQorKysgU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTg1LDEzICs4NSwxMyBAQCBzdHJ1Y3QgQ1NTUGFyc2VyQ29udGV4dCB7CiAgICAgYm9vbCBo
YXNQc2V1ZG9DbGFzc0VuYWJsZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgY2FzY2FkZUxheWVyc0Vu
YWJsZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgY29udGFpbmVyUXVlcmllc0VuYWJsZWQgeyBmYWxz
ZSB9OworICAgIGJvb2wgb3ZlcmZsb3dDbGlwRW5hYmxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBn
cmFkaWVudEFscGhhUHJlbXVsdGlwbGllZEludGVycG9sYXRpb25FbmFibGVkIHsgZmFsc2UgfTsK
IAogICAgIC8vIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKICAgICBib29sIGF0dGFjaG1lbnRFbmFibGVkIHsgZmFsc2UgfTsKICNlbmRpZgot
Ci0gICAgYm9vbCBvdmVyZmxvd0NsaXBFbmFibGVkIHsgZmFsc2UgfTsKIAogICAgIENTU1BhcnNl
ckNvbnRleHQoQ1NTUGFyc2VyTW9kZSwgY29uc3QgVVJMJiBiYXNlVVJMID0gVVJMKCkpOwogICAg
IFdFQkNPUkVfRVhQT1JUIENTU1BhcnNlckNvbnRleHQoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBV
UkwmIGJhc2VVUkwgPSBVUkwoKSwgY29uc3QgU3RyaW5nJiBjaGFyc2V0ID0gZW1wdHlTdHJpbmco
KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVs
cGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9w
ZXJ0eVBhcnNlckhlbHBlcnMuY3BwCShyZXZpc2lvbiAyODcyMzMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI5NDYsMTUgKzI5NDYsMjAgQEAgc3RhdGljIGJvb2wgY29uc3VtZURlcHJlY2F0ZWRHcmFk
aWVudENvbG9yU3RvcChDU1NQYXJzCiAgICAgcmV0dXJuIHN0b3AuY29sb3IgJiYgYXJncy5hdEVu
ZCgpOwogfQogCitzdGF0aWMgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBncmFkaWVudEFscGhhUHJl
bXVsdGlwbGljYXRpb24oY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBy
ZXR1cm4gY29udGV4dC5ncmFkaWVudEFscGhhUHJlbXVsdGlwbGllZEludGVycG9sYXRpb25FbmFi
bGVkID8gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCA6IEFscGhhUHJlbXVs
dGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZDsKK30KKwogc3RhdGljIFJlZlB0cjxDU1NWYWx1
ZT4gY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBj
b25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQogewogICAgIFJlZlB0cjxDU1NHcmFkaWVu
dFZhbHVlPiByZXN1bHQ7CiAgICAgQ1NTVmFsdWVJRCBpZCA9IGFyZ3MuY29uc3VtZUluY2x1ZGlu
Z1doaXRlc3BhY2UoKS5pZCgpOwogICAgIGJvb2wgaXNEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQg
PSAoaWQgPT0gQ1NTVmFsdWVSYWRpYWwpOwogICAgIGlmIChpc0RlcHJlY2F0ZWRSYWRpYWxHcmFk
aWVudCkKLSAgICAgICAgcmVzdWx0ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKE5v
blJlcGVhdGluZywgQ1NTRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50LCB7IENvbG9ySW50ZXJwb2xh
dGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlw
bGllZCB9KTsKKyAgICAgICAgcmVzdWx0ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRl
KE5vblJlcGVhdGluZywgQ1NTRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50LCB7IENvbG9ySW50ZXJw
b2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIGdyYWRpZW50QWxwaGFQcmVtdWx0aXBsaWNhdGlvbihj
b250ZXh0KSB9KTsKICAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZUxpbmVhcikKLSAgICAgICAg
cmVzdWx0ID0gQ1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKE5vblJlcGVhdGluZywgQ1NT
RGVwcmVjYXRlZExpbmVhckdyYWRpZW50LCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JH
QiB7IH0sIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKKyAgICAg
ICAgcmVzdWx0ID0gQ1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKE5vblJlcGVhdGluZywg
Q1NTRGVwcmVjYXRlZExpbmVhckdyYWRpZW50LCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6
U1JHQiB7IH0sIGdyYWRpZW50QWxwaGFQcmVtdWx0aXBsaWNhdGlvbihjb250ZXh0KSB9KTsKICAg
ICBpZiAoIXJlc3VsdCB8fCAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTMwNTQsNyArMzA1OSw3IEBAIHN0YXRpYyBi
b29sIGNvbnN1bWVHcmFkaWVudENvbG9yU3RvcHMoQ1NTUGFyc2VyVG9rZW5SYQogCiBzdGF0aWMg
UmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KENTU1BhcnNl
clRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIENTU0dy
YWRpZW50UmVwZWF0IHJlcGVhdGluZykKIHsKLSAgICBhdXRvIHJlc3VsdCA9IENTU1JhZGlhbEdy
YWRpZW50VmFsdWU6OmNyZWF0ZShyZXBlYXRpbmcsIENTU1ByZWZpeGVkUmFkaWFsR3JhZGllbnQs
IHsgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCIHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbjo6VW5wcmVtdWx0aXBsaWVkIH0pOworICAgIGF1dG8gcmVzdWx0ID0gQ1NTUmFkaWFsR3Jh
ZGllbnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGluZywgQ1NTUHJlZml4ZWRSYWRpYWxHcmFkaWVudCwg
eyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBncmFkaWVudEFscGhhUHJlbXVs
dGlwbGljYXRpb24oY29udGV4dCkgfSk7CiAKICAgICBhdXRvIGNlbnRlckNvb3JkaW5hdGUgPSBj
b25zdW1lT25lT3JUd29WYWx1ZWRQb3NpdGlvbkNvb3JkaW5hdGVzKGFyZ3MsIGNvbnRleHQubW9k
ZSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKICAgICBpZiAoY2VudGVyQ29vcmRpbmF0ZSAmJiAh
Y29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKQEAgLTMwOTgsNyArMzEwMyw3
IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVEZXByZWNhdGVkUmFkaWFsR3JhZGll
bgogCiBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lUmFkaWFsR3JhZGllbnQoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgQ1NT
R3JhZGllbnRSZXBlYXQgcmVwZWF0aW5nKQogewotICAgIFJlZlB0cjxDU1NSYWRpYWxHcmFkaWVu
dFZhbHVlPiByZXN1bHQgPSBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGUocmVwZWF0aW5n
LCBDU1NSYWRpYWxHcmFkaWVudCwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9
LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CisgICAgUmVmUHRy
PENTU1JhZGlhbEdyYWRpZW50VmFsdWU+IHJlc3VsdCA9IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6
OmNyZWF0ZShyZXBlYXRpbmcsIENTU1JhZGlhbEdyYWRpZW50LCB7IENvbG9ySW50ZXJwb2xhdGlv
bk1ldGhvZDo6U1JHQiB7IH0sIGdyYWRpZW50QWxwaGFQcmVtdWx0aXBsaWNhdGlvbihjb250ZXh0
KSB9KTsKIAogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc2hhcGU7CiAgICAgUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiBzaXplS2V5d29yZDsKQEAgLTMxODYsNyArMzE5MSw3IEBAIHN0
YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVSYWRpYWxHcmFkaWVudChDU1NQYXJzZQogCiBz
dGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lTGluZWFyR3JhZGllbnQoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgQ1NTR3JhZGll
bnRSZXBlYXQgcmVwZWF0aW5nLCBDU1NHcmFkaWVudFR5cGUgZ3JhZGllbnRUeXBlKQogewotICAg
IFJlZlB0cjxDU1NMaW5lYXJHcmFkaWVudFZhbHVlPiByZXN1bHQgPSBDU1NMaW5lYXJHcmFkaWVu
dFZhbHVlOjpjcmVhdGUocmVwZWF0aW5nLCBncmFkaWVudFR5cGUsIHsgQ29sb3JJbnRlcnBvbGF0
aW9uTWV0aG9kOjpTUkdCIHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBs
aWVkIH0pOworICAgIFJlZlB0cjxDU1NMaW5lYXJHcmFkaWVudFZhbHVlPiByZXN1bHQgPSBDU1NM
aW5lYXJHcmFkaWVudFZhbHVlOjpjcmVhdGUocmVwZWF0aW5nLCBncmFkaWVudFR5cGUsIHsgQ29s
b3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCIHsgfSwgZ3JhZGllbnRBbHBoYVByZW11bHRpcGxp
Y2F0aW9uKGNvbnRleHQpIH0pOwogCiAgICAgYm9vbCBleHBlY3RDb21tYSA9IHRydWU7CiAgICAg
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBhbmdsZSA9IGNvbnN1bWVBbmdsZShhcmdzLCBjb250
ZXh0Lm1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCwgVW5pdGxlc3NaZXJvUXVpcms6OkFsbG93
KTsKQEAgLTMyMjAsNyArMzIyNSw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVM
aW5lYXJHcmFkaWVudChDU1NQYXJzZQogc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUNv
bmljR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2VyQ29u
dGV4dCYgY29udGV4dCwgQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0aW5nKQogewogI2lmIEVOQUJM
RShDU1NfQ09OSUNfR1JBRElFTlRTKQotICAgIFJlZlB0cjxDU1NDb25pY0dyYWRpZW50VmFsdWU+
IHJlc3VsdCA9IENTU0NvbmljR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGluZywgeyBDb2xv
ckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpV
bnByZW11bHRpcGxpZWQgfSk7CisgICAgUmVmUHRyPENTU0NvbmljR3JhZGllbnRWYWx1ZT4gcmVz
dWx0ID0gQ1NTQ29uaWNHcmFkaWVudFZhbHVlOjpjcmVhdGUocmVwZWF0aW5nLCB7IENvbG9ySW50
ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIGdyYWRpZW50QWxwaGFQcmVtdWx0aXBsaWNhdGlv
bihjb250ZXh0KSB9KTsKIAogICAgIGJvb2wgZXhwZWN0Q29tbWEgPSBmYWxzZTsKICAgICBpZiAo
YXJncy5wZWVrKCkudHlwZSgpID09IElkZW50VG9rZW4pIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29tcG9uZW50cy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29tcG9uZW50cy5oCShyZXZpc2lvbiAy
ODcyMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbXBvbmVu
dHMuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsOCBAQCBzdHJ1Y3QgQ29sb3JDb21wb25l
bnRzIHsKICAgICB0ZW1wbGF0ZTxzaXplX3QgU3RhcnQsIHNpemVfdCBFbmQ+CiAgICAgY29uc3Rl
eHByIENvbG9yQ29tcG9uZW50czxULCBFbmQgLSBTdGFydD4gc3Vic2V0KCkgY29uc3Q7CiAKKyAg
ICBjb25zdGV4cHIgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBTaXplOyB9CisKICAgICBz
dGQ6OmFycmF5PFQsIE4+IGNvbXBvbmVudHM7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvckludGVycG9sYXRpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckludGVycG9sYXRpb24uaAkocmV2aXNp
b24gMjg3MjMzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JJbnRl
cnBvbGF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDE0ICszNiwxNCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IGZpeHVwSHVlQ29tcG9uZW50c1By
aW9yVG9JbnRlcnBvbGF0aW9uKEh1ZUludGVycG9sYXRpb25NZXRob2QsIGZsb2F0LCBmbG9hdCk7
CiAKLXRlbXBsYXRlPHNpemVfdCBJLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGFscGhhUHJlbXVs
dGlwbGljYXRpb24sIHR5cGVuYW1lIEludGVycG9sYXRpb25NZXRob2Q+Ci1zdGQ6OnBhaXI8Zmxv
YXQsIGZsb2F0PiBwcmVJbnRlcnBvbGF0aW9uTm9ybWFsaXphdGlvbkZvckNvbXBvbmVudChJbnRl
cnBvbGF0aW9uTWV0aG9kIGludGVycG9sYXRpb25NZXRob2QsIENvbG9yQ29tcG9uZW50czxmbG9h
dCwgND4gY29sb3JDb21wb25lbnRzMSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBjb2xvckNv
bXBvbmVudHMyKQordGVtcGxhdGU8c2l6ZV90IEksIEFscGhhUHJlbXVsdGlwbGljYXRpb24gYWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiwgdHlwZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3Bh
Y2U+CitzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiBwcmVJbnRlcnBvbGF0aW9uTm9ybWFsaXphdGlv
bkZvckNvbXBvbmVudChJbnRlcnBvbGF0aW9uTWV0aG9kQ29sb3JTcGFjZSBpbnRlcnBvbGF0aW9u
TWV0aG9kQ29sb3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBjb2xvckNvbXBvbmVu
dHMxLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbG9yQ29tcG9uZW50czIpCiB7Ci0gICAg
dXNpbmcgQ29sb3JUeXBlID0gdHlwZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhvZDo6Q29sb3JUeXBl
OworICAgIHVzaW5nIENvbG9yVHlwZSA9IHR5cGVuYW1lIEludGVycG9sYXRpb25NZXRob2RDb2xv
clNwYWNlOjpDb2xvclR5cGU7CiAgICAgY29uc3RleHByIGF1dG8gY29tcG9uZW50SW5mbyA9IENv
bG9yVHlwZTo6TW9kZWw6OmNvbXBvbmVudEluZm87CiAKICAgICBpZiBjb25zdGV4cHIgKGNvbXBv
bmVudEluZm9bSV0udHlwZSA9PSBDb2xvckNvbXBvbmVudFR5cGU6OkFuZ2xlKQotICAgICAgICBy
ZXR1cm4gZml4dXBIdWVDb21wb25lbnRzUHJpb3JUb0ludGVycG9sYXRpb24oaW50ZXJwb2xhdGlv
bk1ldGhvZC5odWVJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb2xvckNvbXBvbmVudHMxW0ldLCBjb2xv
ckNvbXBvbmVudHMyW0ldKTsKKyAgICAgICAgcmV0dXJuIGZpeHVwSHVlQ29tcG9uZW50c1ByaW9y
VG9JbnRlcnBvbGF0aW9uKGludGVycG9sYXRpb25NZXRob2RDb2xvclNwYWNlLmh1ZUludGVycG9s
YXRpb25NZXRob2QsIGNvbG9yQ29tcG9uZW50czFbSV0sIGNvbG9yQ29tcG9uZW50czJbSV0pOwog
ICAgIGVsc2UgewogICAgICAgICBpZiBjb25zdGV4cHIgKGFscGhhUHJlbXVsdGlwbGljYXRpb24g
PT0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCkKICAgICAgICAgICAgIHJl
dHVybiB7IGNvbG9yQ29tcG9uZW50czFbSV0gKiBjb2xvckNvbXBvbmVudHMxWzNdLCBjb2xvckNv
bXBvbmVudHMyW0ldICogY29sb3JDb21wb25lbnRzMlszXSB9OwpAQCAtNTIsMTIgKzUyLDEyIEBA
IHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IHByZUludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uRgog
ICAgIH0KIH0KIAotdGVtcGxhdGU8QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBhbHBoYVByZW11bHRp
cGxpY2F0aW9uLCB0eXBlbmFtZSBJbnRlcnBvbGF0aW9uTWV0aG9kPgotc3RkOjpwYWlyPENvbG9y
Q29tcG9uZW50czxmbG9hdCwgND4sIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4+IHByZUludGVy
cG9sYXRpb25Ob3JtYWxpemF0aW9uKEludGVycG9sYXRpb25NZXRob2QgaW50ZXJwb2xhdGlvbk1l
dGhvZCwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBjb2xvckNvbXBvbmVudHMxLCBDb2xvckNv
bXBvbmVudHM8ZmxvYXQsIDQ+IGNvbG9yQ29tcG9uZW50czIpCit0ZW1wbGF0ZTxBbHBoYVByZW11
bHRpcGxpY2F0aW9uIGFscGhhUHJlbXVsdGlwbGljYXRpb24sIHR5cGVuYW1lIEludGVycG9sYXRp
b25NZXRob2RDb2xvclNwYWNlPgorc3RkOjpwYWlyPENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4s
IENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4+IHByZUludGVycG9sYXRpb25Ob3JtYWxpemF0aW9u
KEludGVycG9sYXRpb25NZXRob2RDb2xvclNwYWNlIGludGVycG9sYXRpb25NZXRob2RDb2xvclNw
YWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbG9yQ29tcG9uZW50czEsIENvbG9yQ29t
cG9uZW50czxmbG9hdCwgND4gY29sb3JDb21wb25lbnRzMikKIHsKLSAgICBhdXRvIFtjb2xvckEw
LCBjb2xvckIwXSA9IHByZUludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uRm9yQ29tcG9uZW50PDAs
IGFscGhhUHJlbXVsdGlwbGljYXRpb24+KGludGVycG9sYXRpb25NZXRob2QsIGNvbG9yQ29tcG9u
ZW50czEsIGNvbG9yQ29tcG9uZW50czIpOwotICAgIGF1dG8gW2NvbG9yQTEsIGNvbG9yQjFdID0g
cHJlSW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb25Gb3JDb21wb25lbnQ8MSwgYWxwaGFQcmVtdWx0
aXBsaWNhdGlvbj4oaW50ZXJwb2xhdGlvbk1ldGhvZCwgY29sb3JDb21wb25lbnRzMSwgY29sb3JD
b21wb25lbnRzMik7Ci0gICAgYXV0byBbY29sb3JBMiwgY29sb3JCMl0gPSBwcmVJbnRlcnBvbGF0
aW9uTm9ybWFsaXphdGlvbkZvckNvbXBvbmVudDwyLCBhbHBoYVByZW11bHRpcGxpY2F0aW9uPihp
bnRlcnBvbGF0aW9uTWV0aG9kLCBjb2xvckNvbXBvbmVudHMxLCBjb2xvckNvbXBvbmVudHMyKTsK
KyAgICBhdXRvIFtjb2xvckEwLCBjb2xvckIwXSA9IHByZUludGVycG9sYXRpb25Ob3JtYWxpemF0
aW9uRm9yQ29tcG9uZW50PDAsIGFscGhhUHJlbXVsdGlwbGljYXRpb24+KGludGVycG9sYXRpb25N
ZXRob2RDb2xvclNwYWNlLCBjb2xvckNvbXBvbmVudHMxLCBjb2xvckNvbXBvbmVudHMyKTsKKyAg
ICBhdXRvIFtjb2xvckExLCBjb2xvckIxXSA9IHByZUludGVycG9sYXRpb25Ob3JtYWxpemF0aW9u
Rm9yQ29tcG9uZW50PDEsIGFscGhhUHJlbXVsdGlwbGljYXRpb24+KGludGVycG9sYXRpb25NZXRo
b2RDb2xvclNwYWNlLCBjb2xvckNvbXBvbmVudHMxLCBjb2xvckNvbXBvbmVudHMyKTsKKyAgICBh
dXRvIFtjb2xvckEyLCBjb2xvckIyXSA9IHByZUludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uRm9y
Q29tcG9uZW50PDIsIGFscGhhUHJlbXVsdGlwbGljYXRpb24+KGludGVycG9sYXRpb25NZXRob2RD
b2xvclNwYWNlLCBjb2xvckNvbXBvbmVudHMxLCBjb2xvckNvbXBvbmVudHMyKTsKIAogICAgIHJl
dHVybiB7CiAgICAgICAgIHsgY29sb3JBMCwgY29sb3JBMSwgY29sb3JBMiwgY29sb3JDb21wb25l
bnRzMVszXSB9LApAQCAtNjgsMTAgKzY4LDEwIEBAIHN0ZDo6cGFpcjxDb2xvckNvbXBvbmVudHM8
ZmxvYXQsIDQ+LCBDb2xvckNvbXBvbmVudHM8ZgogCiAvLyBNQVJLOiAtIFBvc3QtaW50ZXJwb2xh
dGlvbiBub3JtYWxpemF0aW9uL2ZpeHVwCiAKLXRlbXBsYXRlPHNpemVfdCBJLCBBbHBoYVByZW11
bHRpcGxpY2F0aW9uIGFscGhhUHJlbXVsdGlwbGljYXRpb24sIHR5cGVuYW1lIEludGVycG9sYXRp
b25NZXRob2Q+Ci1mbG9hdCBwb3N0SW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb25Gb3JDb21wb25l
bnQoSW50ZXJwb2xhdGlvbk1ldGhvZCwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBjb2xvckNv
bXBvbmVudHMpCit0ZW1wbGF0ZTxzaXplX3QgSSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBhbHBo
YVByZW11bHRpcGxpY2F0aW9uLCB0eXBlbmFtZSBJbnRlcnBvbGF0aW9uTWV0aG9kQ29sb3JTcGFj
ZT4KK2Zsb2F0IHBvc3RJbnRlcnBvbGF0aW9uTm9ybWFsaXphdGlvbkZvckNvbXBvbmVudChJbnRl
cnBvbGF0aW9uTWV0aG9kQ29sb3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBjb2xv
ckNvbXBvbmVudHMpCiB7Ci0gICAgdXNpbmcgQ29sb3JUeXBlID0gdHlwZW5hbWUgSW50ZXJwb2xh
dGlvbk1ldGhvZDo6Q29sb3JUeXBlOworICAgIHVzaW5nIENvbG9yVHlwZSA9IHR5cGVuYW1lIElu
dGVycG9sYXRpb25NZXRob2RDb2xvclNwYWNlOjpDb2xvclR5cGU7CiAgICAgY29uc3RleHByIGF1
dG8gY29tcG9uZW50SW5mbyA9IENvbG9yVHlwZTo6TW9kZWw6OmNvbXBvbmVudEluZm87CiAKICAg
ICBpZiBjb25zdGV4cHIgKGNvbXBvbmVudEluZm9bSV0udHlwZSAhPSBDb2xvckNvbXBvbmVudFR5
cGU6OkFuZ2xlICYmIGFscGhhUHJlbXVsdGlwbGljYXRpb24gPT0gQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbjo6UHJlbXVsdGlwbGllZCkgewpAQCAtODIsMTMgKzgyLDEzIEBAIGZsb2F0IHBvc3RJbnRl
cnBvbGF0aW9uTm9ybWFsaXphdGlvbkZvckNvbXBvbmVudChJbnRlcgogICAgICAgICByZXR1cm4g
Y29sb3JDb21wb25lbnRzW0ldOwogfQogCi10ZW1wbGF0ZTxBbHBoYVByZW11bHRpcGxpY2F0aW9u
IGFscGhhUHJlbXVsdGlwbGljYXRpb24sIHR5cGVuYW1lIEludGVycG9sYXRpb25NZXRob2Q+Ci1D
b2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IHBvc3RJbnRlcnBvbGF0aW9uTm9ybWFsaXphdGlvbihJ
bnRlcnBvbGF0aW9uTWV0aG9kIGludGVycG9sYXRpb25NZXRob2QsIENvbG9yQ29tcG9uZW50czxm
bG9hdCwgND4gY29sb3JDb21wb25lbnRzKQordGVtcGxhdGU8QWxwaGFQcmVtdWx0aXBsaWNhdGlv
biBhbHBoYVByZW11bHRpcGxpY2F0aW9uLCB0eXBlbmFtZSBJbnRlcnBvbGF0aW9uTWV0aG9kQ29s
b3JTcGFjZT4KK0NvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gcG9zdEludGVycG9sYXRpb25Ob3Jt
YWxpemF0aW9uKEludGVycG9sYXRpb25NZXRob2RDb2xvclNwYWNlIGludGVycG9sYXRpb25NZXRo
b2RDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbG9yQ29tcG9uZW50cykK
IHsKICAgICByZXR1cm4gewotICAgICAgICBwb3N0SW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb25G
b3JDb21wb25lbnQ8MCwgYWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4oaW50ZXJwb2xhdGlvbk1ldGhv
ZCwgY29sb3JDb21wb25lbnRzKSwKLSAgICAgICAgcG9zdEludGVycG9sYXRpb25Ob3JtYWxpemF0
aW9uRm9yQ29tcG9uZW50PDEsIGFscGhhUHJlbXVsdGlwbGljYXRpb24+KGludGVycG9sYXRpb25N
ZXRob2QsIGNvbG9yQ29tcG9uZW50cyksCi0gICAgICAgIHBvc3RJbnRlcnBvbGF0aW9uTm9ybWFs
aXphdGlvbkZvckNvbXBvbmVudDwyLCBhbHBoYVByZW11bHRpcGxpY2F0aW9uPihpbnRlcnBvbGF0
aW9uTWV0aG9kLCBjb2xvckNvbXBvbmVudHMpLAorICAgICAgICBwb3N0SW50ZXJwb2xhdGlvbk5v
cm1hbGl6YXRpb25Gb3JDb21wb25lbnQ8MCwgYWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4oaW50ZXJw
b2xhdGlvbk1ldGhvZENvbG9yU3BhY2UsIGNvbG9yQ29tcG9uZW50cyksCisgICAgICAgIHBvc3RJ
bnRlcnBvbGF0aW9uTm9ybWFsaXphdGlvbkZvckNvbXBvbmVudDwxLCBhbHBoYVByZW11bHRpcGxp
Y2F0aW9uPihpbnRlcnBvbGF0aW9uTWV0aG9kQ29sb3JTcGFjZSwgY29sb3JDb21wb25lbnRzKSwK
KyAgICAgICAgcG9zdEludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uRm9yQ29tcG9uZW50PDIsIGFs
cGhhUHJlbXVsdGlwbGljYXRpb24+KGludGVycG9sYXRpb25NZXRob2RDb2xvclNwYWNlLCBjb2xv
ckNvbXBvbmVudHMpLAogICAgICAgICBjb2xvckNvbXBvbmVudHNbM10KICAgICB9OwogIH0KQEAg
LTk2LDExICs5NiwxMSBAQCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IHBvc3RJbnRlcnBvbGF0
aW9uTm9ybWFsaXphdGkKIAogLy8gTUFSSzogLSBJbnRlcnBvbGF0aW9uCiAKLXRlbXBsYXRlPEFs
cGhhUHJlbXVsdGlwbGljYXRpb24gYWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwgdHlwZW5hbWUgSW50
ZXJwb2xhdGlvbk1ldGhvZD4KLXR5cGVuYW1lIEludGVycG9sYXRpb25NZXRob2Q6OkNvbG9yVHlw
ZSBpbnRlcnBvbGF0ZUNvbG9yQ29tcG9uZW50cyhJbnRlcnBvbGF0aW9uTWV0aG9kIGludGVycG9s
YXRpb25NZXRob2QsIHR5cGVuYW1lIEludGVycG9sYXRpb25NZXRob2Q6OkNvbG9yVHlwZSBjb2xv
cjEsIGRvdWJsZSBjb2xvcjFNdWx0aXBsaWVyLCB0eXBlbmFtZSBJbnRlcnBvbGF0aW9uTWV0aG9k
OjpDb2xvclR5cGUgY29sb3IyLCBkb3VibGUgY29sb3IyTXVsdGlwbGllcikKK3RlbXBsYXRlPEFs
cGhhUHJlbXVsdGlwbGljYXRpb24gYWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwgdHlwZW5hbWUgSW50
ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2U+Cit0eXBlbmFtZSBJbnRlcnBvbGF0aW9uTWV0aG9k
Q29sb3JTcGFjZTo6Q29sb3JUeXBlIGludGVycG9sYXRlQ29sb3JDb21wb25lbnRzKEludGVycG9s
YXRpb25NZXRob2RDb2xvclNwYWNlIGludGVycG9sYXRpb25NZXRob2RDb2xvclNwYWNlLCB0eXBl
bmFtZSBJbnRlcnBvbGF0aW9uTWV0aG9kQ29sb3JTcGFjZTo6Q29sb3JUeXBlIGNvbG9yMSwgZG91
YmxlIGNvbG9yMU11bHRpcGxpZXIsIHR5cGVuYW1lIEludGVycG9sYXRpb25NZXRob2RDb2xvclNw
YWNlOjpDb2xvclR5cGUgY29sb3IyLCBkb3VibGUgY29sb3IyTXVsdGlwbGllcikKIHsKICAgICAv
LyAxLiBBcHBseSBwcmUtaW50ZXJwb2xhdGlvbiB0cmFuc2Zvcm1zIChodWUgZml4dXAgZm9yIHBv
bGFyIGNvbG9yIHNwYWNlcywgYWxwaGEgcHJlbXVsdGlwbGljYXRpb24gaWYgcmVxdWlyZWQpLgot
ICAgIGF1dG8gW25vcm1hbGl6ZWRDb2xvckNvbXBvbmVudHMxLCBub3JtYWxpemVkQ29sb3JDb21w
b25lbnRzMl0gPSBwcmVJbnRlcnBvbGF0aW9uTm9ybWFsaXphdGlvbjxhbHBoYVByZW11bHRpcGxp
Y2F0aW9uPihpbnRlcnBvbGF0aW9uTWV0aG9kLCBhc0NvbG9yQ29tcG9uZW50cyhjb2xvcjEpLCBh
c0NvbG9yQ29tcG9uZW50cyhjb2xvcjIpKTsKKyAgICBhdXRvIFtub3JtYWxpemVkQ29sb3JDb21w
b25lbnRzMSwgbm9ybWFsaXplZENvbG9yQ29tcG9uZW50czJdID0gcHJlSW50ZXJwb2xhdGlvbk5v
cm1hbGl6YXRpb248YWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4oaW50ZXJwb2xhdGlvbk1ldGhvZENv
bG9yU3BhY2UsIGFzQ29sb3JDb21wb25lbnRzKGNvbG9yMSksIGFzQ29sb3JDb21wb25lbnRzKGNv
bG9yMikpOwogCiAgICAgLy8gMi4gSW50ZXJwb2xhdGUgdXNpbmcgdGhlIG5vcm1hbGl6ZWQgY29t
cG9uZW50cy4KICAgICBhdXRvIGludGVycG9sYXRlZENvbG9yQ29tcG9uZW50cyA9IG1hcENvbG9y
Q29tcG9uZW50cyhbJl0gKGF1dG8gY29tcG9uZW50RnJvbUNvbG9yMSwgYXV0byBjb21wb25lbnRG
cm9tQ29sb3IyKSAtPiBmbG9hdCB7CkBAIC0xMDgsMTAgKzEwOCwxMCBAQCB0eXBlbmFtZSBJbnRl
cnBvbGF0aW9uTWV0aG9kOjpDb2xvclR5cGUgaW50ZXJwb2xhdGVDb2wKICAgICB9LCBub3JtYWxp
emVkQ29sb3JDb21wb25lbnRzMSwgbm9ybWFsaXplZENvbG9yQ29tcG9uZW50czIpOwogCiAgICAg
Ly8gMy4gQXBwbHkgcG9zdC1pbnRlcnBvbGF0aW9uIHRyYXNmb3JtcyAoYWxwaGEgdW4tcHJlbXVs
dGlwbGljYXRpb24gaWYgcmVxdWlyZWQpLgotICAgIGF1dG8gbm9ybWFsaXplZEludGVycG9sYXRl
ZENvbG9yQ29tcG9uZW50cyA9IHBvc3RJbnRlcnBvbGF0aW9uTm9ybWFsaXphdGlvbjxhbHBoYVBy
ZW11bHRpcGxpY2F0aW9uPihpbnRlcnBvbGF0aW9uTWV0aG9kLCBpbnRlcnBvbGF0ZWRDb2xvckNv
bXBvbmVudHMpOworICAgIGF1dG8gbm9ybWFsaXplZEludGVycG9sYXRlZENvbG9yQ29tcG9uZW50
cyA9IHBvc3RJbnRlcnBvbGF0aW9uTm9ybWFsaXphdGlvbjxhbHBoYVByZW11bHRpcGxpY2F0aW9u
PihpbnRlcnBvbGF0aW9uTWV0aG9kQ29sb3JTcGFjZSwgaW50ZXJwb2xhdGVkQ29sb3JDb21wb25l
bnRzKTsKIAogICAgIC8vIDQuIENyZWF0ZSBjb2xvciB0eXBlIGZyb20gY29tcG9uZW50cywgbm9y
bWFsaXppbmcgYW55IGNvbXBvbmVudHMgdGhhdCBtYXkgYmUgb3V0IG9mIHJhbmdlLgotICAgIHJl
dHVybiBtYWtlQ29sb3JUeXBlQnlOb3JtYWxpemluZ0NvbXBvbmVudHM8dHlwZW5hbWUgSW50ZXJw
b2xhdGlvbk1ldGhvZDo6Q29sb3JUeXBlPihub3JtYWxpemVkSW50ZXJwb2xhdGVkQ29sb3JDb21w
b25lbnRzKTsKKyAgICByZXR1cm4gbWFrZUNvbG9yVHlwZUJ5Tm9ybWFsaXppbmdDb21wb25lbnRz
PHR5cGVuYW1lIEludGVycG9sYXRpb25NZXRob2RDb2xvclNwYWNlOjpDb2xvclR5cGU+KG5vcm1h
bGl6ZWRJbnRlcnBvbGF0ZWRDb2xvckNvbXBvbmVudHMpOwogfQogCiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmgJKHJldmlzaW9uIDI4NzIzMykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDE2ICsyNywxNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkFm
ZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiQ29sb3JJbnRl
cnBvbGF0aW9uTWV0aG9kLmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIkdy
YWRpZW50Q29sb3JTdG9wLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgogI2luY2x1ZGUg
PHZhcmlhbnQ+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgVVNFKENHKQotI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlICJHcmFkaWVudENHU3RyYXRlZ3kuaCIKICNl
bmRpZgogCiAjaWYgVVNFKERJUkVDVDJEKQpAQCAtNDUsNyArNDUsNiBAQAogCiAjaWYgVVNFKENH
KQogdHlwZWRlZiBzdHJ1Y3QgQ0dDb250ZXh0KiBDR0NvbnRleHRSZWY7Ci10eXBlZGVmIHN0cnVj
dCBDR0dyYWRpZW50KiBDR0dyYWRpZW50UmVmOwogI2VuZGlmCiAKICNpZiBVU0UoRElSRUNUMkQp
CkBAIC01OSwyMSArNTgsMTUgQEAgdHlwZWRlZiBzdHJ1Y3QgX2NhaXJvX3BhdHRlcm4gY2Fpcm9f
cGF0dGVybl90OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFmZmluZVRyYW5zZm9y
bTsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIAogY2xhc3MgR3Jh
ZGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxHcmFkaWVudD4gewogcHVibGljOgotICAgIHN0cnVj
dCBDb2xvclN0b3AgewotICAgICAgICBmbG9hdCBvZmZzZXQgeyAwIH07Ci0gICAgICAgIENvbG9y
IGNvbG9yOworICAgIHVzaW5nIENvbG9yU3RvcCA9IEdyYWRpZW50Q29sb3JTdG9wOworICAgIHVz
aW5nIENvbG9yU3RvcFZlY3RvciA9IEdyYWRpZW50Q29sb3JTdG9wVmVjdG9yOwogCi0gICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
LSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8
Q29sb3JTdG9wPiBkZWNvZGUoRGVjb2RlciYpOwotICAgIH07Ci0KLSAgICB1c2luZyBDb2xvclN0
b3BWZWN0b3IgPSBWZWN0b3I8Q29sb3JTdG9wLCAyPjsKLQogICAgIHN0cnVjdCBMaW5lYXJEYXRh
IHsKICAgICAgICAgRmxvYXRQb2ludCBwb2ludDA7CiAgICAgICAgIEZsb2F0UG9pbnQgcG9pbnQx
OwpAQCAtMTQ0LDExICsxMzcsNiBAQCBjbGFzcyBHcmFkaWVudCA6IHB1YmxpYyBSZWZDb3VudGVk
PEdyYWRpZW50PiB7IChwcml2YXQKICAgICB2b2lkIHNvcnRTdG9wcygpIGNvbnN0OwogICAgIHZv
aWQgc3RvcHNDaGFuZ2VkKCk7CiAKLSNpZiBVU0UoQ0cpCi0gICAgdm9pZCBjcmVhdGVDR0dyYWRp
ZW50KCk7Ci0gICAgYm9vbCBoYXNPbmx5Qm91bmRlZFNSR0JDb2xvclN0b3BzKCkgY29uc3Q7Ci0j
ZW5kaWYKLQogICAgIERhdGEgbV9kYXRhOwogICAgIENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBt
X2NvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDsKICAgICBtdXRhYmxlIENvbG9yU3RvcFZlY3RvciBt
X3N0b3BzOwpAQCAtMTU3LDM0ICsxNDUsMTMgQEAgY2xhc3MgR3JhZGllbnQgOiBwdWJsaWMgUmVm
Q291bnRlZDxHcmFkaWVudD4geyAocHJpdmF0CiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX2NhY2hl
ZEhhc2ggeyAwIH07CiAKICNpZiBVU0UoQ0cpCi0gICAgUmV0YWluUHRyPENHR3JhZGllbnRSZWY+
IG1fZ3JhZGllbnQ7CisgICAgc3RkOjpvcHRpb25hbDxHcmFkaWVudENHU3RyYXRlZ3k+IG1fZ3Jh
ZGllbnQ7CiAjZW5kaWYKIAogI2lmIFVTRShESVJFQ1QyRCkKICAgICBDT01QdHI8SUQyRDFCcnVz
aD4gbV9icnVzaDsKICNlbmRpZgogfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9p
ZCBHcmFkaWVudDo6Q29sb3JTdG9wOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsK
LSAgICBlbmNvZGVyIDw8IG9mZnNldDsKLSAgICBlbmNvZGVyIDw8IGNvbG9yOwotfQotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPEdyYWRpZW50OjpDb2xvclN0b3A+
IEdyYWRpZW50OjpDb2xvclN0b3A6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIHN0
ZDo6b3B0aW9uYWw8ZmxvYXQ+IG9mZnNldDsKLSAgICBkZWNvZGVyID4+IG9mZnNldDsKLSAgICBp
ZiAoIW9mZnNldCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIHN0ZDo6b3B0
aW9uYWw8Q29sb3I+IGNvbG9yOwotICAgIGRlY29kZXIgPj4gY29sb3I7Ci0gICAgaWYgKCFjb2xv
cikKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIHJldHVybiB7eyAqb2Zmc2V0
LCAqY29sb3IgfX07Ci19CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgR3JhZGll
bnQ6OkxpbmVhckRhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRDb2xvclN0b3AuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudENvbG9y
U3RvcC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYWRpZW50Q29sb3JTdG9wLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgPG9wdGlvbmFs
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1
Y3QgR3JhZGllbnRDb2xvclN0b3AgeworICAgIGZsb2F0IG9mZnNldCB7IDAgfTsKKyAgICBDb2xv
ciBjb2xvcjsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxHcmFkaWVudENvbG9yU3RvcD4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3Vz
aW5nIEdyYWRpZW50Q29sb3JTdG9wVmVjdG9yID0gVmVjdG9yPEdyYWRpZW50Q29sb3JTdG9wLCAy
PjsKKwordGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBHcmFkaWVudENvbG9yU3RvcDo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBvZmZzZXQ7
CisgICAgZW5jb2RlciA8PCBjb2xvcjsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4g
c3RkOjpvcHRpb25hbDxHcmFkaWVudENvbG9yU3RvcD4gR3JhZGllbnRDb2xvclN0b3A6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG9mZnNldDsK
KyAgICBkZWNvZGVyID4+IG9mZnNldDsKKyAgICBpZiAoIW9mZnNldCkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGNvbG9yOworICAgIGRl
Y29kZXIgPj4gY29sb3I7CisgICAgaWYgKCFjb2xvcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgIHJldHVybiB7eyAqb2Zmc2V0LCAqY29sb3IgfX07Cit9CisKK30KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cu
Y3BwCShyZXZpc2lvbiAyODcyMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFkaWVudENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNzIgKzI5LDE3IEBACiAK
ICNpZiBVU0UoQ0cpCiAKKyNpbmNsdWRlICJHcmFkaWVudENHU3RyYXRlZ3kuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNz
U1BJLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHZvaWQgR3JhZGllbnQ6OnN0b3BzQ2hhbmdlZCgpCiB7Ci0gICAgbV9ncmFkaWVudCA9IG51
bGxwdHI7CisgICAgbV9ncmFkaWVudCA9IHsgfTsKIH0KIAotYm9vbCBHcmFkaWVudDo6aGFzT25s
eUJvdW5kZWRTUkdCQ29sb3JTdG9wcygpIGNvbnN0Ci17Ci0gICAgZm9yIChjb25zdCBhdXRvJiBz
dG9wIDogbV9zdG9wcykgewotICAgICAgICBpZiAoc3RvcC5jb2xvci5jb2xvclNwYWNlKCkgIT0g
Q29sb3JTcGFjZTo6U1JHQikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgR3JhZGllbnQ6OmNyZWF0ZUNHR3JhZGllbnQoKQotewot
ICAgIHNvcnRTdG9wcygpOwotCi0gICAgdW5zaWduZWQgbnVtU3RvcHMgPSBtX3N0b3BzLnNpemUo
KTsKLQotICAgIGNvbnN0IGludCByZXNlcnZlZFN0b3BzID0gMzsKLSAgICBWZWN0b3I8Q0dGbG9h
dCwgcmVzZXJ2ZWRTdG9wcz4gbG9jYXRpb25zOwotICAgIGxvY2F0aW9ucy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KG51bVN0b3BzKTsKLQotICAgIC8vIElmIGFsbCB0aGUgc3RvcHMgYXJlIGJvdW5k
ZWQgc1JHQiAoYXMgcmVwcmVzZW50ZWQgYnkgdGhlIGNvbG9yIGhhdmluZyB0aGUgY29sb3Igc3Bh
Y2UKLSAgICAvLyBDb2xvclNwYWNlOjpTUkdCKSwgaXQgaXMgZmFzdGVyIHRvIGNyZWF0ZSBhIGdy
YWRpZW50IHVzaW5nIGNvbXBvbmVudHMgdGhhbiBDR0NvbG9ycy4KLSAgICBpZiAoaGFzT25seUJv
dW5kZWRTUkdCQ29sb3JTdG9wcygpKSB7Ci0gICAgICAgIFZlY3RvcjxDR0Zsb2F0LCA0ICogcmVz
ZXJ2ZWRTdG9wcz4gY29sb3JDb21wb25lbnRzOwotICAgICAgICBjb2xvckNvbXBvbmVudHMucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShudW1TdG9wcyAqIDQpOwotCi0gICAgICAgIGZvciAoY29uc3Qg
YXV0byYgc3RvcCA6IG1fc3RvcHMpIHsKLSAgICAgICAgICAgIGF1dG8gW2NvbG9yU3BhY2UsIGNv
bXBvbmVudHNdID0gc3RvcC5jb2xvci5jb2xvclNwYWNlQW5kQ29tcG9uZW50cygpOwotICAgICAg
ICAgICAgYXV0byBbciwgZywgYiwgYV0gPSBjb21wb25lbnRzOwotICAgICAgICAgICAgY29sb3JD
b21wb25lbnRzLnVuY2hlY2tlZEFwcGVuZChyKTsKLSAgICAgICAgICAgIGNvbG9yQ29tcG9uZW50
cy51bmNoZWNrZWRBcHBlbmQoZyk7Ci0gICAgICAgICAgICBjb2xvckNvbXBvbmVudHMudW5jaGVj
a2VkQXBwZW5kKGIpOwotICAgICAgICAgICAgY29sb3JDb21wb25lbnRzLnVuY2hlY2tlZEFwcGVu
ZChhKTsKLQotICAgICAgICAgICAgbG9jYXRpb25zLnVuY2hlY2tlZEFwcGVuZChzdG9wLm9mZnNl
dCk7Ci0gICAgICAgIH0KLQotICAgICAgICBtX2dyYWRpZW50ID0gYWRvcHRDRihDR0dyYWRpZW50
Q3JlYXRlV2l0aENvbG9yQ29tcG9uZW50cyhzUkdCQ29sb3JTcGFjZVJlZigpLCBjb2xvckNvbXBv
bmVudHMuZGF0YSgpLCBsb2NhdGlvbnMuZGF0YSgpLCBudW1TdG9wcykpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgYXV0byBjb2xvcnNBcnJheSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0
ZU11dGFibGUoMCwgbV9zdG9wcy5zaXplKCksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKLSAg
ICBmb3IgKGNvbnN0IGF1dG8mIHN0b3AgOiBtX3N0b3BzKSB7Ci0gICAgICAgIENGQXJyYXlBcHBl
bmRWYWx1ZShjb2xvcnNBcnJheS5nZXQoKSwgY2FjaGVkQ0dDb2xvcihzdG9wLmNvbG9yKS5nZXQo
KSk7Ci0gICAgICAgIGxvY2F0aW9ucy51bmNoZWNrZWRBcHBlbmQoc3RvcC5vZmZzZXQpOwotICAg
IH0KLQotI2lmIEhBVkUoQ09SRV9HUkFQSElDU19FWFRFTkRFRF9TUkdCX0NPTE9SX1NQQUNFKQot
ICAgIGF1dG8gZXh0ZW5kZWRDb2xvcnNHcmFkaWVudENvbG9yU3BhY2UgPSBleHRlbmRlZFNSR0JD
b2xvclNwYWNlUmVmKCk7Ci0jZWxzZQotICAgIGF1dG8gZXh0ZW5kZWRDb2xvcnNHcmFkaWVudENv
bG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOwotI2VuZGlmCi0KLSAgICBtX2dyYWRpZW50
ID0gYWRvcHRDRihDR0dyYWRpZW50Q3JlYXRlV2l0aENvbG9ycyhleHRlbmRlZENvbG9yc0dyYWRp
ZW50Q29sb3JTcGFjZSwgY29sb3JzQXJyYXkuZ2V0KCksIGxvY2F0aW9ucy5kYXRhKCkpKTsKLX0K
LQogdm9pZCBHcmFkaWVudDo6ZmlsbChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKIHsKICAgICBjb250ZXh0LmNsaXAocmVjdCk7CkBAIC0xMDgsMTggKzUz
LDE4IEBAIHZvaWQgR3JhZGllbnQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIAog
dm9pZCBHcmFkaWVudDo6cGFpbnQoQ0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dCkKIHsKLSAg
ICBDR0dyYWRpZW50RHJhd2luZ09wdGlvbnMgZXh0ZW5kT3B0aW9ucyA9IGtDR0dyYWRpZW50RHJh
d3NCZWZvcmVTdGFydExvY2F0aW9uIHwga0NHR3JhZGllbnREcmF3c0FmdGVyRW5kTG9jYXRpb247
CisgICAgaWYgKCFtX2dyYWRpZW50KSB7CisgICAgICAgIHNvcnRTdG9wcygpOworICAgICAgICBt
X2dyYWRpZW50ID0gR3JhZGllbnRDR1N0cmF0ZWd5IHsgbV9jb2xvckludGVycG9sYXRpb25NZXRo
b2QsIG1fc3RvcHMgfTsKKyAgICB9CiAKLSAgICBpZiAoIW1fZ3JhZGllbnQpCi0gICAgICAgIGNy
ZWF0ZUNHR3JhZGllbnQoKTsKLQogICAgIFdURjo6c3dpdGNoT24obV9kYXRhLAogICAgICAgICBb
Jl0gKGNvbnN0IExpbmVhckRhdGEmIGRhdGEpIHsKICAgICAgICAgICAgIHN3aXRjaCAobV9zcHJl
YWRNZXRob2QpIHsKICAgICAgICAgICAgIGNhc2UgR3JhZGllbnRTcHJlYWRNZXRob2Q6OlJlcGVh
dDoKICAgICAgICAgICAgIGNhc2UgR3JhZGllbnRTcHJlYWRNZXRob2Q6OlJlZmxlY3Q6IHsKICAg
ICAgICAgICAgICAgICBDR0NvbnRleHRTdGF0ZVNhdmVyIHNhdmVTdGF0ZShwbGF0Zm9ybUNvbnRl
eHQpOwotICAgICAgICAgICAgICAgIGV4dGVuZE9wdGlvbnMgPSAwOworICAgICAgICAgICAgICAg
IENHR3JhZGllbnREcmF3aW5nT3B0aW9ucyBleHRlbmRPcHRpb25zID0gMDsKIAogICAgICAgICAg
ICAgICAgIEZsb2F0UG9pbnQgZ3JhZGllbnRWZWN0b3JOb3JtKGRhdGEucG9pbnQxIC0gZGF0YS5w
b2ludDApOwogICAgICAgICAgICAgICAgIGdyYWRpZW50VmVjdG9yTm9ybS5ub3JtYWxpemUoKTsK
QEAgLTE0Myw3ICs4OCw3IEBAIHZvaWQgR3JhZGllbnQ6OnBhaW50KENHQ29udGV4dFJlZiBwbGF0
Zm9ybUNvbnRleHQpCiAgICAgICAgICAgICAgICAgICAgIENHUG9pbnQgbGVmdCA9IENHUG9pbnRN
YWtlKGZsaXAgPyBlbmQgOiBzdGFydCwgMCk7CiAgICAgICAgICAgICAgICAgICAgIENHUG9pbnQg
cmlnaHQgPSBDR1BvaW50TWFrZShmbGlwID8gc3RhcnQgOiBlbmQsIDApOwogCi0gICAgICAgICAg
ICAgICAgICAgIENHQ29udGV4dERyYXdMaW5lYXJHcmFkaWVudChwbGF0Zm9ybUNvbnRleHQsIG1f
Z3JhZGllbnQuZ2V0KCksIGxlZnQsIHJpZ2h0LCBleHRlbmRPcHRpb25zKTsKKyAgICAgICAgICAg
ICAgICAgICAgbV9ncmFkaWVudC0+ZHJhd0xpbmVhckdyYWRpZW50KHBsYXRmb3JtQ29udGV4dCwg
bGVmdCwgcmlnaHQsIGV4dGVuZE9wdGlvbnMpOwogICAgICAgICAgICAgICAgIH07CiAKICAgICAg
ICAgICAgICAgICBhdXRvIGlzTGVmdE9mID0gW10oQ0dGbG9hdCBzdGFydCwgQ0dGbG9hdCBlbmQs
IENHUmVjdCBib3VuZGluZ0JveCkgLT4gYm9vbCB7CkBAIC0xODksMTIgKzEzNCwxNCBAQCB2b2lk
IEdyYWRpZW50OjpwYWludChDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250ZXh0KQogICAgICAgICAg
ICAgICAgICAgICBkcmF3TGluZWFyR3JhZGllbnQoZW5kIC0gZHgsIGVuZCwgZmxpcCk7CiAgICAg
ICAgICAgICAgICAgICAgIGZsaXAgPSAhZmxpcCAmJiBtX3NwcmVhZE1ldGhvZCA9PSBHcmFkaWVu
dFNwcmVhZE1ldGhvZDo6UmVmbGVjdDsKICAgICAgICAgICAgICAgICB9Ci0KICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgR3JhZGllbnRTcHJl
YWRNZXRob2Q6OlBhZDoKLSAgICAgICAgICAgICAgICBDR0NvbnRleHREcmF3TGluZWFyR3JhZGll
bnQocGxhdGZvcm1Db250ZXh0LCBtX2dyYWRpZW50LmdldCgpLCBkYXRhLnBvaW50MCwgZGF0YS5w
b2ludDEsIGV4dGVuZE9wdGlvbnMpOworICAgICAgICAgICAgY2FzZSBHcmFkaWVudFNwcmVhZE1l
dGhvZDo6UGFkOiB7CisgICAgICAgICAgICAgICAgQ0dHcmFkaWVudERyYXdpbmdPcHRpb25zIGV4
dGVuZE9wdGlvbnMgPSBrQ0dHcmFkaWVudERyYXdzQmVmb3JlU3RhcnRMb2NhdGlvbiB8IGtDR0dy
YWRpZW50RHJhd3NBZnRlckVuZExvY2F0aW9uOworICAgICAgICAgICAgICAgIG1fZ3JhZGllbnQt
PmRyYXdMaW5lYXJHcmFkaWVudChwbGF0Zm9ybUNvbnRleHQsIGRhdGEucG9pbnQwLCBkYXRhLnBv
aW50MSwgZXh0ZW5kT3B0aW9ucyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CiAgICAgICAgIH0sCiAgICAgICAgIFsmXSAoY29uc3QgUmFkaWFs
RGF0YSYgZGF0YSkgewogICAgICAgICAgICAgYm9vbCBuZWVkU2NhbGluZyA9IGRhdGEuYXNwZWN0
UmF0aW8gIT0gMTsKQEAgLTIwOCw3ICsxNTUsOCBAQCB2b2lkIEdyYWRpZW50OjpwYWludChDR0Nv
bnRleHRSZWYgcGxhdGZvcm1Db250ZXh0KQogICAgICAgICAgICAgICAgIENHQ29udGV4dFRyYW5z
bGF0ZUNUTShwbGF0Zm9ybUNvbnRleHQsIC1kYXRhLnBvaW50MC54KCksIC1kYXRhLnBvaW50MC55
KCkpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBDR0NvbnRleHREcmF3UmFkaWFsR3Jh
ZGllbnQocGxhdGZvcm1Db250ZXh0LCBtX2dyYWRpZW50LmdldCgpLCBkYXRhLnBvaW50MCwgZGF0
YS5zdGFydFJhZGl1cywgZGF0YS5wb2ludDEsIGRhdGEuZW5kUmFkaXVzLCBleHRlbmRPcHRpb25z
KTsKKyAgICAgICAgICAgIENHR3JhZGllbnREcmF3aW5nT3B0aW9ucyBleHRlbmRPcHRpb25zID0g
a0NHR3JhZGllbnREcmF3c0JlZm9yZVN0YXJ0TG9jYXRpb24gfCBrQ0dHcmFkaWVudERyYXdzQWZ0
ZXJFbmRMb2NhdGlvbjsKKyAgICAgICAgICAgIG1fZ3JhZGllbnQtPmRyYXdSYWRpYWxHcmFkaWVu
dChwbGF0Zm9ybUNvbnRleHQsIGRhdGEucG9pbnQwLCBkYXRhLnN0YXJ0UmFkaXVzLCBkYXRhLnBv
aW50MSwgZGF0YS5lbmRSYWRpdXMsIGV4dGVuZE9wdGlvbnMpOwogCiAgICAgICAgICAgICBpZiAo
bmVlZFNjYWxpbmcpCiAgICAgICAgICAgICAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShwbGF0
Zm9ybUNvbnRleHQpOwpAQCAtMjIxLDcgKzE2OSw3IEBAIHZvaWQgR3JhZGllbnQ6OnBhaW50KENH
Q29udGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQpCiAgICAgICAgICAgICBDR0NvbnRleHRUcmFuc2xh
dGVDVE0ocGxhdGZvcm1Db250ZXh0LCBkYXRhLnBvaW50MC54KCksIGRhdGEucG9pbnQwLnkoKSk7
CiAgICAgICAgICAgICBDR0NvbnRleHRSb3RhdGVDVE0ocGxhdGZvcm1Db250ZXh0LCAoQ0dGbG9h
dCktTV9QSV8yKTsKICAgICAgICAgICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShwbGF0Zm9ybUNv
bnRleHQsIC1kYXRhLnBvaW50MC54KCksIC1kYXRhLnBvaW50MC55KCkpOwotICAgICAgICAgICAg
Q0dDb250ZXh0RHJhd0NvbmljR3JhZGllbnQocGxhdGZvcm1Db250ZXh0LCBtX2dyYWRpZW50Lmdl
dCgpLCBkYXRhLnBvaW50MCwgZGF0YS5hbmdsZVJhZGlhbnMpOworICAgICAgICAgICAgbV9ncmFk
aWVudC0+ZHJhd0NvbmljR3JhZGllbnQocGxhdGZvcm1Db250ZXh0LCBkYXRhLnBvaW50MCwgZGF0
YS5hbmdsZVJhZGlhbnMpOwogICAgICAgICAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShwbGF0
Zm9ybUNvbnRleHQpOwogI2Vsc2UKICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0dTdHJhdGVn
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhZGllbnRDR1N0cmF0ZWd5LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENHU3RyYXRlZ3kuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMzUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
R3JhZGllbnRDR1N0cmF0ZWd5LmgiCisKKyNpbmNsdWRlICJDb2xvckludGVycG9sYXRpb24uaCIK
KyNpbmNsdWRlICJDb2xvclNwYWNlQ0cuaCIKKyNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFw
aGljc1NQSS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dyYWRpZW50Q0dTdHJhdGVneTo6
R3JhZGllbnRDR1N0cmF0ZWd5KENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBjb2xvckludGVycG9s
YXRpb25NZXRob2QsIGNvbnN0IEdyYWRpZW50Q29sb3JTdG9wVmVjdG9yJiBzdG9wcykKKyAgICA6
IG1fc3RyYXRlZ3kgeyBwaWNrU3RyYXRlZ3koY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBzdG9w
cykgfQoreworfQorCisvLyBNQVJLOiAtIFN0cmF0ZWd5IHNlbGVjdGlvbi4KKworR3JhZGllbnRD
R1N0cmF0ZWd5OjpTdHJhdGVneSBHcmFkaWVudENHU3RyYXRlZ3k6OnBpY2tTdHJhdGVneShDb2xv
ckludGVycG9sYXRpb25NZXRob2QgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb25zdCBHcmFk
aWVudENvbG9yU3RvcFZlY3RvciYgc3RvcHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6c3dp
dGNoT24oY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLmNvbG9yU3BhY2UsCisgICAgICAgIFsmXSAo
Y29uc3QgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCJikgLT4gU3RyYXRlZ3kgeworICAg
ICAgICAgICAgc3dpdGNoIChjb2xvckludGVycG9sYXRpb25NZXRob2QuYWxwaGFQcmVtdWx0aXBs
aWNhdGlvbikgeworICAgICAgICAgICAgY2FzZSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnBy
ZW11bHRpcGxpZWQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VHcmFkaWVudChjb2xvcklu
dGVycG9sYXRpb25NZXRob2QsIHN0b3BzKTsKKyAgICAgICAgICAgIGNhc2UgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZDoKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfUFJFTVVM
VElQTElFRF9JTlRFUlBPTEFUSU9OX0dSQURJRU5UKQorICAgICAgICAgICAgICAgIHJldHVybiBt
YWtlR3JhZGllbnQoY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBzdG9wcyk7CisjZWxzZQorICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBVc2UgZ3JhZGllbnQgc3RyYXRlZ3kgaWYgbm9uZSBvZiB0
aGUgc3RvcHMgaGF2ZSBhbHBoYS4KKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVNoYWRpbmco
Y29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBzdG9wcyk7CisjZW5kaWYKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgWyZdIChjb25zdCBhdXRvJikgLT4gU3RyYXRlZ3kgeworICAg
ICAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciB0aGUgb3RoZXIgaW50ZXJwb2xhdGlv
biBjb2xvciBzcGFjZXMuCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICB9CisgICAgKTsKK30KKworLy8gTUFSSzogLSBHcmFkaWVudCBzdHJhdGVneS4K
KworR3JhZGllbnRDR1N0cmF0ZWd5OjpTdHJhdGVneSBHcmFkaWVudENHU3RyYXRlZ3k6Om1ha2VH
cmFkaWVudChDb2xvckludGVycG9sYXRpb25NZXRob2QgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9k
LCBjb25zdCBHcmFkaWVudENvbG9yU3RvcFZlY3RvciYgc3RvcHMpIGNvbnN0Cit7CisgICAgQVNT
RVJUX1VOVVNFRChjb2xvckludGVycG9sYXRpb25NZXRob2QsIHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8Q29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCPihjb2xvckludGVycG9sYXRpb25NZXRo
b2QuY29sb3JTcGFjZSkpOworI2lmICFIQVZFKENPUkVfR1JBUEhJQ1NfUFJFTVVMVElQTElFRF9J
TlRFUlBPTEFUSU9OX0dSQURJRU5UKQorICAgIEFTU0VSVF9VTlVTRUQoY29sb3JJbnRlcnBvbGF0
aW9uTWV0aG9kLCBjb2xvckludGVycG9sYXRpb25NZXRob2QuYWxwaGFQcmVtdWx0aXBsaWNhdGlv
biA9PSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQpOworI2VuZGlmCisK
KyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfR1JBRElFTlRfQ1JFQVRFX1dJVEhfT1BUSU9OUykKKyNp
ZiBIQVZFKENPUkVfR1JBUEhJQ1NfUFJFTVVMVElQTElFRF9JTlRFUlBPTEFUSU9OX0dSQURJRU5U
KQorICAgIGF1dG8gZ3JhZGllbnRJbnRlcnBvbGF0ZXNQcmVtdWx0aXBsaWVkT3B0aW9uc0RpY3Rp
b25hcnkgPSBbXSAoKSAtPiBDRkRpY3Rpb25hcnlSZWYgeworICAgICAgICBzdGF0aWMgQ0ZUeXBl
UmVmIGtleXNbXSA9IHsga0NHR3JhZGllbnRJbnRlcnBvbGF0ZXNQcmVtdWx0aXBsaWVkIH07Cisg
ICAgICAgIHN0YXRpYyBDRlR5cGVSZWYgdmFsdWVzW10gPSB7IGtDRkJvb2xlYW5UcnVlIH07Cisg
ICAgICAgIHN0YXRpYyBDRkRpY3Rpb25hcnlSZWYgb3B0aW9ucyA9IENGRGljdGlvbmFyeUNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrZXlzLCB2YWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgoa2V5
cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFs
dWVDYWxsQmFja3MpOworCisgICAgICAgIHJldHVybiBvcHRpb25zOworICAgIH07CisKKyAgIGF1
dG8gZ3JhZGllbnRPcHRpb25zRGljdGlvbmFyeSA9IFsmXSAoYXV0byBjb2xvckludGVycG9sYXRp
b25NZXRob2QpIC0+IENGRGljdGlvbmFyeVJlZiB7CisgICAgICAgIHN3aXRjaCAoY29sb3JJbnRl
cnBvbGF0aW9uTWV0aG9kLmFscGhhUHJlbXVsdGlwbGljYXRpb24pIHsKKyAgICAgICAgY2FzZSBB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQ6CisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgY2FzZSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0
aXBsaWVkOgorICAgICAgICAgICAgcmV0dXJuIGdyYWRpZW50SW50ZXJwb2xhdGVzUHJlbXVsdGlw
bGllZE9wdGlvbnNEaWN0aW9uYXJ5KCk7CisgICAgICAgIH0KKyAgIH07CisjZWxzZQorICAgYXV0
byBncmFkaWVudE9wdGlvbnNEaWN0aW9uYXJ5ID0gW10gKGF1dG8pIC0+IENGRGljdGlvbmFyeVJl
ZiB7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgfTsKKyNlbmRpZgorI2VuZGlmCisKKyAg
ICBhdXRvIGhhc09ubHlCb3VuZGVkU1JHQkNvbG9yU3RvcHMgPSBbXSAoY29uc3QgYXV0byYgc3Rv
cHMpIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzdG9wIDogc3RvcHMpIHsKKyAgICAgICAg
ICAgIGlmIChzdG9wLmNvbG9yLmNvbG9yU3BhY2UoKSAhPSBDb2xvclNwYWNlOjpTUkdCKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9OworCisgICAgYXV0byBudW1iZXJPZlN0b3BzID0gc3RvcHMuc2l6ZSgpOworCisg
ICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIHJlc2VydmVkU3RvcHMgPSAzOworICAgIFZlY3RvcjxD
R0Zsb2F0LCByZXNlcnZlZFN0b3BzPiBsb2NhdGlvbnM7CisgICAgbG9jYXRpb25zLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkobnVtYmVyT2ZTdG9wcyk7CisKKyAgICBWZWN0b3I8Q0dGbG9hdCwgNCAq
IHJlc2VydmVkU3RvcHM+IGNvbG9yQ29tcG9uZW50czsKKyAgICBjb2xvckNvbXBvbmVudHMucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShudW1iZXJPZlN0b3BzICogNCk7CisKKyAgICBhdXRvIGdyYWRp
ZW50Q29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7CisKKyAgICAvLyBGSVhNRTogTm93
IHRoYXQgd2Ugb25seSBldmVyIHVzZSBDR0dyYWRpZW50Q3JlYXRlV2l0aENvbG9yQ29tcG9uZW50
cywgd2Ugc2hvdWxkIGludmVzdGlnYXRlCisgICAgLy8gaWYgdGhlcmUgaXMgYW55IHJlYWwgYmVu
ZWZpdCB0byB1c2luZyBzUkdCIHdoZW4gYWxsIHRoZSBzdG9wcyBhcmUgYm91bmRlZCB2cyBqdXN0
IHVzaW5nCisgICAgLy8gZXh0ZW5kZWQgc1JHQiBmb3IgYWxsIGdyYWRpZW50cy4KKyAgICBpZiAo
aGFzT25seUJvdW5kZWRTUkdCQ29sb3JTdG9wcyhzdG9wcykpIHsKKyAgICAgICAgZm9yIChjb25z
dCBhdXRvJiBzdG9wIDogc3RvcHMpIHsKKyAgICAgICAgICAgIGF1dG8gW2NvbG9yU3BhY2UsIGNv
bXBvbmVudHNdID0gc3RvcC5jb2xvci5jb2xvclNwYWNlQW5kQ29tcG9uZW50cygpOworICAgICAg
ICAgICAgYXV0byBbciwgZywgYiwgYV0gPSBjb21wb25lbnRzOworICAgICAgICAgICAgY29sb3JD
b21wb25lbnRzLnVuY2hlY2tlZEFwcGVuZChyKTsKKyAgICAgICAgICAgIGNvbG9yQ29tcG9uZW50
cy51bmNoZWNrZWRBcHBlbmQoZyk7CisgICAgICAgICAgICBjb2xvckNvbXBvbmVudHMudW5jaGVj
a2VkQXBwZW5kKGIpOworICAgICAgICAgICAgY29sb3JDb21wb25lbnRzLnVuY2hlY2tlZEFwcGVu
ZChhKTsKKworICAgICAgICAgICAgbG9jYXRpb25zLnVuY2hlY2tlZEFwcGVuZChzdG9wLm9mZnNl
dCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19FWFRF
TkRFRF9TUkdCX0NPTE9SX1NQQUNFKQorICAgICAgICBncmFkaWVudENvbG9yU3BhY2UgPSBleHRl
bmRlZFNSR0JDb2xvclNwYWNlUmVmKCk7CisjZW5kaWYKKworICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIHN0b3AgOiBzdG9wcykgeworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19FWFRFTkRFRF9TUkdC
X0NPTE9SX1NQQUNFKQorICAgICAgICAgICAgYXV0byBbciwgZywgYiwgYV0gPSBzdG9wLmNvbG9y
LnRvQ29sb3JUeXBlTG9zc3k8RXh0ZW5kZWRTUkdCQTxmbG9hdD4+KCk7CisjZWxzZQorICAgICAg
ICAgICAgYXV0byBbciwgZywgYiwgYV0gPSBzdG9wLmNvbG9yLnRvQ29sb3JUeXBlTG9zc3k8U1JH
QkE8ZmxvYXQ+PigpOworI2VuZGlmCisgICAgICAgICAgICBjb2xvckNvbXBvbmVudHMudW5jaGVj
a2VkQXBwZW5kKHIpOworICAgICAgICAgICAgY29sb3JDb21wb25lbnRzLnVuY2hlY2tlZEFwcGVu
ZChnKTsKKyAgICAgICAgICAgIGNvbG9yQ29tcG9uZW50cy51bmNoZWNrZWRBcHBlbmQoYik7Cisg
ICAgICAgICAgICBjb2xvckNvbXBvbmVudHMudW5jaGVja2VkQXBwZW5kKGEpOworCisgICAgICAg
ICAgICBsb2NhdGlvbnMudW5jaGVja2VkQXBwZW5kKHN0b3Aub2Zmc2V0KTsKKyAgICAgICAgfQor
ICAgIH0KKworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19HUkFESUVOVF9DUkVBVEVfV0lUSF9PUFRJ
T05TKQorICAgIHJldHVybiBHcmFkaWVudCB7IGFkb3B0Q0YoQ0dHcmFkaWVudENyZWF0ZVdpdGhD
b2xvckNvbXBvbmVudHNBbmRPcHRpb25zKGdyYWRpZW50Q29sb3JTcGFjZSwgY29sb3JDb21wb25l
bnRzLmRhdGEoKSwgbG9jYXRpb25zLmRhdGEoKSwgbnVtYmVyT2ZTdG9wcywgZ3JhZGllbnRPcHRp
b25zRGljdGlvbmFyeShjb2xvckludGVycG9sYXRpb25NZXRob2QpKSkgfTsKKyNlbHNlCisgICAg
cmV0dXJuIEdyYWRpZW50IHsgYWRvcHRDRihDR0dyYWRpZW50Q3JlYXRlV2l0aENvbG9yQ29tcG9u
ZW50cyhncmFkaWVudENvbG9yU3BhY2UsIGNvbG9yQ29tcG9uZW50cy5kYXRhKCksIGxvY2F0aW9u
cy5kYXRhKCksIG51bWJlck9mU3RvcHMpKSB9OworI2VuZGlmCit9CisKKy8vIE1BUks6IC0gU2hh
ZGluZyBzdHJhdGVneS4KKwordGVtcGxhdGU8dHlwZW5hbWUgSW50ZXJwb2xhdGlvblNwYWNlLCBB
bHBoYVByZW11bHRpcGxpY2F0aW9uIGFscGhhUHJlbXVsdGlwbGljYXRpb24+CitzdGF0aWMgdm9p
ZCBzaGFkaW5nRnVuY3Rpb24odm9pZCogaW5mbywgY29uc3QgQ0dGbG9hdCogaW4sIENHRmxvYXQq
IG91dCkKK3sKKyAgICB1c2luZyBJbnRlcnBvbGF0aW9uU3BhY2VDb2xvclR5cGUgPSB0eXBlbmFt
ZSBJbnRlcnBvbGF0aW9uU3BhY2U6OkNvbG9yVHlwZTsKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1Nf
RVhURU5ERURfU1JHQl9DT0xPUl9TUEFDRSkKKyAgICB1c2luZyBPdXRwdXRTcGFjZUNvbG9yVHlw
ZSA9IEV4dGVuZGVkU1JHQkE8ZmxvYXQ+OworI2Vsc2UKKyAgICB1c2luZyBPdXRwdXRTcGFjZUNv
bG9yVHlwZSA9IFNSR0JBPGZsb2F0PjsKKyNlbmRpZgorCisgICAgYXV0byogZGF0YSA9IHN0YXRp
Y19jYXN0PEdyYWRpZW50Q0dTdHJhdGVneTo6U2hhZGluZzo6RGF0YSo+KGluZm8pOworCisgICAg
Ly8gQ29tcHV0ZSBjb2xvciBhdCBvZmZzZXQgJ2luWzBdJyBhbmQgYXNzaWduIHRoZSBjb21wb25l
bnRzIHRvIG91dFswIC0+IDNdLgorCisgICAgZmxvYXQgcmVxdWVzdGVkT2Zmc2V0ID0gaW5bMF07
CisKKyAgICAvLyAxLiBGaW5kIHN0b3BzIHRoYXQgYm91bmQgdGhlIHJlcXVlc3RlZCBvZmZzZXQu
CisgICAgYXV0byBbc3RvcDAsIHN0b3AxXSA9IFsmXSB7CisgICAgICAgIGZvciAoc2l6ZV90IHN0
b3AgPSAxOyBzdG9wIDwgZGF0YS0+c3RvcHMoKS5zaXplKCk7ICsrc3RvcCkgeworICAgICAgICAg
ICAgaWYgKHJlcXVlc3RlZE9mZnNldCA8PSBkYXRhLT5zdG9wcygpW3N0b3BdLm9mZnNldCkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjp0aWUoZGF0YS0+c3RvcHMoKVtzdG9wIC0gMV0sIGRh
dGEtPnN0b3BzKClbc3RvcF0pOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgfSgpOworCisgICAgLy8gMi4gQ29tcHV0ZSBwZXJjZW50YWdlIG9m
ZnNldCBiZXR3ZWVuIHRoZSB0d28gc3RvcHMuCisgICAgZmxvYXQgb2Zmc2V0ID0gKHN0b3AxLm9m
ZnNldCA9PSBzdG9wMC5vZmZzZXQpID8gMC4wZiA6IChyZXF1ZXN0ZWRPZmZzZXQgLSBzdG9wMC5v
ZmZzZXQpIC8gKHN0b3AxLm9mZnNldCAtIHN0b3AwLm9mZnNldCk7CisKKyAgICAvLyAzLiBJbnRl
cnBvbGF0ZSB0aGUgdHdvIHN0b3BzJyBjb2xvcnMgYnkgdGhlIGNvbXB1dGVkIG9mZnNldC4KKyAg
ICAvLyBGSVhNRTogV2UgZG9uJ3Qgd2FudCB0byBkdWUgaHVlIGZpeHVwIGZvciBlYWNoIGNhbGws
IHNvIHdlIHNob3VsZCBmaWd1cmUgb3V0IGhvdyB0byBwcmVjb21wdXRlIHRoYXQuCisgICAgYXV0
byBpbnRlcnBvbGF0ZWRDb2xvciA9IGludGVycG9sYXRlQ29sb3JDb21wb25lbnRzPGFscGhhUHJl
bXVsdGlwbGljYXRpb24+KAorICAgICAgICBzdGQ6OmdldDxJbnRlcnBvbGF0aW9uU3BhY2U+KGRh
dGEtPmNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCgpLmNvbG9yU3BhY2UpLAorICAgICAgICBtYWtl
RnJvbUNvbXBvbmVudHM8SW50ZXJwb2xhdGlvblNwYWNlQ29sb3JUeXBlPihzdG9wMC5jb2xvckNv
bXBvbmVudHMpLCAxLjBmIC0gb2Zmc2V0LAorICAgICAgICBtYWtlRnJvbUNvbXBvbmVudHM8SW50
ZXJwb2xhdGlvblNwYWNlQ29sb3JUeXBlPihzdG9wMS5jb2xvckNvbXBvbmVudHMpLCBvZmZzZXQp
OworCisgICAgLy8gNC4gQ29udmVydCB0byB0aGUgb3V0cHV0IGNvbG9yIHNwYWNlLgorICAgIGF1
dG8gaW50ZXJwb2xhdGVkQ29sb3JDb252ZXJ0ZWRUb091dHB1dFNwYWNlID0gYXNDb2xvckNvbXBv
bmVudHMoY29udmVydENvbG9yPE91dHB1dFNwYWNlQ29sb3JUeXBlPihpbnRlcnBvbGF0ZWRDb2xv
cikpOworCisgICAgLy8gNS4gV3JpdGUgY29sb3IgY29tcG9uZW50cyB0byAnb3V0JyBwb2ludGVy
LgorICAgIGZvciAoc2l6ZV90IGNvbXBvbmVudEluZGV4ID0gMDsgY29tcG9uZW50SW5kZXggPCBp
bnRlcnBvbGF0ZWRDb2xvckNvbnZlcnRlZFRvT3V0cHV0U3BhY2Uuc2l6ZSgpOyArK2NvbXBvbmVu
dEluZGV4KQorICAgICAgICBvdXRbY29tcG9uZW50SW5kZXhdID0gaW50ZXJwb2xhdGVkQ29sb3JD
b252ZXJ0ZWRUb091dHB1dFNwYWNlW2NvbXBvbmVudEluZGV4XTsKK30KKworc3RhdGljIENvbG9y
Q29tcG9uZW50czxmbG9hdCwgND4gY29udmVydENvbG9yVG9Db2xvckludGVycG9sYXRpb25TcGFj
ZShjb25zdCBDb2xvciYgY29sb3IsIENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBjb2xvckludGVy
cG9sYXRpb25NZXRob2QpCit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oY29sb3JJbnRlcnBv
bGF0aW9uTWV0aG9kLmNvbG9yU3BhY2UsCisgICAgICAgIFsmXSAoYXV0byYgY29sb3JTcGFjZSkg
LT4gQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiB7CisgICAgICAgICAgICB1c2luZyBDb2xvclR5
cGUgPSB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxkZWNsdHlwZShjb2xvclNwYWNl
KT46OkNvbG9yVHlwZTsKKyAgICAgICAgICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhjb2xv
ci50ZW1wbGF0ZSB0b0NvbG9yVHlwZUxvc3N5PENvbG9yVHlwZT4oKSk7CisgICAgICAgIH0KKyAg
ICApOworfQorCitHcmFkaWVudENHU3RyYXRlZ3k6OlN0cmF0ZWd5IEdyYWRpZW50Q0dTdHJhdGVn
eTo6bWFrZVNoYWRpbmcoQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIGNvbG9ySW50ZXJwb2xhdGlv
bk1ldGhvZCwgY29uc3QgR3JhZGllbnRDb2xvclN0b3BWZWN0b3ImIHN0b3BzKSBjb25zdAorewor
ICAgIGF1dG8gbWFrZURhdGEgPSBbJl0gKGF1dG8gY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBh
dXRvJiBzdG9wcykgeworICAgICAgICBhdXRvIHRvdGFsTnVtYmVyT2ZTdG9wcyA9IHN0b3BzLnNp
emUoKTsKKyAgICAgICAgYm9vbCBoYXNaZXJvID0gZmFsc2U7CisgICAgICAgIGJvb2wgaGFzT25l
ID0gZmFsc2U7CisKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzdG9wIDogc3RvcHMpIHsKKyAg
ICAgICAgICAgIGF1dG8gb2Zmc2V0ID0gc3RvcC5vZmZzZXQ7CisgICAgICAgICAgICBBU1NFUlQo
b2Zmc2V0ID49IDApOworICAgICAgICAgICAgQVNTRVJUKG9mZnNldCA8PSAxKTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgaWYgKG9mZnNldCA9PSAwKQorICAgICAgICAgICAgICAgIGhhc1pl
cm8gPSB0cnVlOworICAgICAgICAgICAgZWxzZSBpZiAob2Zmc2V0ID09IDEpCisgICAgICAgICAg
ICAgICAgaGFzT25lID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghaGFzWmVybykK
KyAgICAgICAgICAgIHRvdGFsTnVtYmVyT2ZTdG9wcysrOworICAgICAgICBpZiAoIWhhc09uZSkK
KyAgICAgICAgICAgIHRvdGFsTnVtYmVyT2ZTdG9wcysrOworCisgICAgICAgIFZlY3RvcjxDb2xv
ckNvbnZlcnRlZFRvSW50ZXJwb2xhdGlvbkNvbG9yU3BhY2VTdG9wPiBjb252ZXJ0ZWRTdG9wczsK
KyAgICAgICAgY29udmVydGVkU3RvcHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh0b3RhbE51bWJl
ck9mU3RvcHMpOworCisgICAgICAgIGlmICghaGFzWmVybykKKyAgICAgICAgICAgIGNvbnZlcnRl
ZFN0b3BzLnVuY2hlY2tlZEFwcGVuZCh7IDAuMGYsIHsgMC4wZiwgMC4wZiwgMC4wZiwgMC4wZiB9
IH0pOworCisgICAgICAgIGZvciAoY29uc3QgYXV0byYgc3RvcCA6IHN0b3BzKQorICAgICAgICAg
ICAgY29udmVydGVkU3RvcHMudW5jaGVja2VkQXBwZW5kKHsgc3RvcC5vZmZzZXQsIGNvbnZlcnRD
b2xvclRvQ29sb3JJbnRlcnBvbGF0aW9uU3BhY2Uoc3RvcC5jb2xvciwgY29sb3JJbnRlcnBvbGF0
aW9uTWV0aG9kKSB9KTsKKworICAgICAgICBpZiAoIWhhc09uZSkKKyAgICAgICAgICAgIGNvbnZl
cnRlZFN0b3BzLnVuY2hlY2tlZEFwcGVuZCh7IDEuMGYsIGNvbnZlcnRlZFN0b3BzLmxhc3QoKS5j
b2xvckNvbXBvbmVudHMgfSk7CisKKyAgICAgICAgaWYgKCFoYXNaZXJvKQorICAgICAgICAgICAg
Y29udmVydGVkU3RvcHNbMF0uY29sb3JDb21wb25lbnRzID0gY29udmVydGVkU3RvcHNbMV0uY29s
b3JDb21wb25lbnRzOworCisgICAgICAgIHJldHVybiBTaGFkaW5nOjpEYXRhOjpjcmVhdGUoY29s
b3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBXVEZNb3ZlKGNvbnZlcnRlZFN0b3BzKSk7CisgICAgfTsK
KworICAgIGF1dG8gbWFrZUZ1bmN0aW9uID0gWyZdIChhdXRvIGNvbG9ySW50ZXJwb2xhdGlvbk1l
dGhvZCwgYXV0byYgZGF0YSkgeworICAgICAgICBhdXRvIG1ha2VFdmFsdWF0ZUNhbGxiYWNrID0g
WyZdIChhdXRvIGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCkgLT4gQ0dGdW5jdGlvbkV2YWx1YXRl
Q2FsbGJhY2sgeworICAgICAgICAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oY29sb3JJbnRlcnBv
bGF0aW9uTWV0aG9kLmNvbG9yU3BhY2UsCisgICAgICAgICAgICAgICAgWyZdIChhdXRvJiAvKmNv
bG9yU3BhY2UqLykgIC0+IENHRnVuY3Rpb25FdmFsdWF0ZUNhbGxiYWNrIHsKKyAgICAgICAgICAg
ICAgICAgICAgc3dpdGNoIChjb2xvckludGVycG9sYXRpb25NZXRob2QuYWxwaGFQcmVtdWx0aXBs
aWNhdGlvbikgeworICAgICAgICAgICAgICAgICAgICBjYXNlIEFscGhhUHJlbXVsdGlwbGljYXRp
b246OlVucHJlbXVsdGlwbGllZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAmc2hh
ZGluZ0Z1bmN0aW9uPENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiwgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkPjsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkOgorICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuICZzaGFkaW5nRnVuY3Rpb248Q29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpT
UkdCLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkPjsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICk7CisgICAgICAgIH07
CisKKyAgICAgICAgY29uc3QgQ0dGdW5jdGlvbkNhbGxiYWNrcyBjYWxsYmFja3MgPSB7CisgICAg
ICAgICAgICAwLAorICAgICAgICAgICAgbWFrZUV2YWx1YXRlQ2FsbGJhY2soY29sb3JJbnRlcnBv
bGF0aW9uTWV0aG9kKSwKKyAgICAgICAgICAgIFtdICh2b2lkKiBpbmZvKSB7CisgICAgICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8R3JhZGllbnRDR1N0cmF0ZWd5OjpTaGFkaW5nOjpEYXRhKj4oaW5m
byktPmRlcmVmKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgc3RhdGlj
IGNvbnN0IENHRmxvYXQgZG9tYWluWzJdID0geyAwLCAxIH07CisgICAgICAgIC8vIEZJWE1FOiBX
aGVuIHRoZSBpbnB1dCBpcyBib3VuZGVkIHNSR0IgYW5kIHdlIGFyZSB1c2luZyB0aGUgU1JCRyBp
bnRlcnBvbGF0aW9uIG1ldGhvZCwgaXQgbWlnaHQgbWFrZSBtb3JlIHNlbnNlIHRvIGhhdmUgdGhl
IHJhbmdlIGJlIHsgMCwgMSwgMCwgMSwgMCwgMSwgMCwgMSB9CisgICAgICAgIHN0YXRpYyBjb25z
dCBDR0Zsb2F0IHJhbmdlWzhdID0geyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmlu
aXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCAtc3RkOjpudW1l
cmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+
OjppbmZpbml0eSgpLCAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0
ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCAwLCAxIH07CisgICAgICAgIAor
ICAgICAgICBSZWYgZGF0YVJlZkNvcHkgPSBkYXRhOworICAgICAgICByZXR1cm4gYWRvcHRDRihD
R0Z1bmN0aW9uQ3JlYXRlKCZkYXRhUmVmQ29weS5sZWFrUmVmKCksIDEsIGRvbWFpbiwgNCwgcmFu
Z2UsICZjYWxsYmFja3MpKTsKKyAgICB9OworCisgICAgYXV0byBkYXRhID0gbWFrZURhdGEoY29s
b3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBzdG9wcyk7CisgICAgYXV0byBmdW5jdGlvbiA9IG1ha2VG
dW5jdGlvbihjb2xvckludGVycG9sYXRpb25NZXRob2QsIGRhdGEpOworCisgICAgLy8gRklYTUU6
IEludmVzdGlnYXRlIHVzaW5nIGJvdW5kZWQgc1JHQiB3aGVuIHRoZSBpbnB1dCBzdG9wcyBhcmUg
YWxsIGJvdW5kZWQgc1JHQi4KKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfRVhURU5ERURfU1JHQl9D
T0xPUl9TUEFDRSkKKyAgICBhdXRvIGNvbG9yU3BhY2UgPSBleHRlbmRlZFNSR0JDb2xvclNwYWNl
UmVmKCk7CisjZWxzZQorICAgIGF1dG8gY29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7
CisjZW5kaWYKKworICAgIHJldHVybiBTaGFkaW5nIHsgV1RGTW92ZShkYXRhKSwgV1RGTW92ZShm
dW5jdGlvbiksIGNvbG9yU3BhY2UgfTsKK30KKworLy8gTUFSSzogLSBEcmF3aW5nIGZ1bmN0aW9u
cy4KKwordm9pZCBHcmFkaWVudENHU3RyYXRlZ3k6OmRyYXdMaW5lYXJHcmFkaWVudChDR0NvbnRl
eHRSZWYgcGxhdGZvcm1Db250ZXh0LCBDR1BvaW50IHN0YXJ0UG9pbnQsIENHUG9pbnQgZW5kUG9p
bnQsIENHR3JhZGllbnREcmF3aW5nT3B0aW9ucyBvcHRpb25zKQoreworICAgIFdURjo6c3dpdGNo
T24obV9zdHJhdGVneSwKKyAgICAgICAgWyZdIChHcmFkaWVudCYgZ3JhZGllbnQpIHsKKyAgICAg
ICAgICAgIENHQ29udGV4dERyYXdMaW5lYXJHcmFkaWVudChwbGF0Zm9ybUNvbnRleHQsIGdyYWRp
ZW50LmdyYWRpZW50LmdldCgpLCBzdGFydFBvaW50LCBlbmRQb2ludCwgb3B0aW9ucyk7CisgICAg
ICAgIH0sCisgICAgICAgIFsmXSAoU2hhZGluZyYgc2hhZGluZykgeworICAgICAgICAgICAgYm9v
bCBzdGFydEV4dGVuZCA9IChvcHRpb25zICYga0NHR3JhZGllbnREcmF3c0JlZm9yZVN0YXJ0TG9j
YXRpb24pICE9IDA7CisgICAgICAgICAgICBib29sIGVuZEV4dGVuZCA9IChvcHRpb25zICYga0NH
R3JhZGllbnREcmF3c0FmdGVyRW5kTG9jYXRpb24pICE9IDA7CisKKyAgICAgICAgICAgIENHQ29u
dGV4dERyYXdTaGFkaW5nKHBsYXRmb3JtQ29udGV4dCwgYWRvcHRDRihDR1NoYWRpbmdDcmVhdGVB
eGlhbChzaGFkaW5nLmNvbG9yU3BhY2UuZ2V0KCksIHN0YXJ0UG9pbnQsIGVuZFBvaW50LCBzaGFk
aW5nLmZ1bmN0aW9uLmdldCgpLCBzdGFydEV4dGVuZCwgZW5kRXh0ZW5kKSkuZ2V0KCkpOworICAg
ICAgICB9CisgICAgKTsKK30KKwordm9pZCBHcmFkaWVudENHU3RyYXRlZ3k6OmRyYXdSYWRpYWxH
cmFkaWVudChDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250ZXh0LCBDR1BvaW50IHN0YXJ0Q2VudGVy
LCBDR0Zsb2F0IHN0YXJ0UmFkaXVzLCBDR1BvaW50IGVuZENlbnRlciwgQ0dGbG9hdCBlbmRSYWRp
dXMsIENHR3JhZGllbnREcmF3aW5nT3B0aW9ucyBvcHRpb25zKQoreworICAgIFdURjo6c3dpdGNo
T24obV9zdHJhdGVneSwKKyAgICAgICAgWyZdIChHcmFkaWVudCYgZ3JhZGllbnQpIHsKKyAgICAg
ICAgICAgIENHQ29udGV4dERyYXdSYWRpYWxHcmFkaWVudChwbGF0Zm9ybUNvbnRleHQsIGdyYWRp
ZW50LmdyYWRpZW50LmdldCgpLCBzdGFydENlbnRlciwgc3RhcnRSYWRpdXMsIGVuZENlbnRlciwg
ZW5kUmFkaXVzLCBvcHRpb25zKTsKKyAgICAgICAgfSwKKyAgICAgICAgWyZdIChTaGFkaW5nJiBz
aGFkaW5nKSB7CisgICAgICAgICAgICBib29sIHN0YXJ0RXh0ZW5kID0gKG9wdGlvbnMgJiBrQ0dH
cmFkaWVudERyYXdzQmVmb3JlU3RhcnRMb2NhdGlvbikgIT0gMDsKKyAgICAgICAgICAgIGJvb2wg
ZW5kRXh0ZW5kID0gKG9wdGlvbnMgJiBrQ0dHcmFkaWVudERyYXdzQWZ0ZXJFbmRMb2NhdGlvbikg
IT0gMDsKKworICAgICAgICAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcocGxhdGZvcm1Db250ZXh0
LCBhZG9wdENGKENHU2hhZGluZ0NyZWF0ZVJhZGlhbChzaGFkaW5nLmNvbG9yU3BhY2UuZ2V0KCks
IHN0YXJ0Q2VudGVyLCBzdGFydFJhZGl1cywgZW5kQ2VudGVyLCBlbmRSYWRpdXMsIHNoYWRpbmcu
ZnVuY3Rpb24uZ2V0KCksIHN0YXJ0RXh0ZW5kLCBlbmRFeHRlbmQpKS5nZXQoKSk7CisgICAgICAg
IH0KKyAgICApOworfQorCit2b2lkIEdyYWRpZW50Q0dTdHJhdGVneTo6ZHJhd0NvbmljR3JhZGll
bnQoQ0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dCwgQ0dQb2ludCBjZW50ZXIsIENHRmxvYXQg
YW5nbGUpCit7CisvLyBGSVhNRTogU2VlbXMgbGlrZSB0aGlzIHNob3VsZCBiZSBIQVZFKENHX0NP
TlRFWFRfRFJBV19DT05JQ19HUkFESUVOVCkuCisvLyBGSVhNRTogQ2FuIHdlIGNoYW5nZSB0dk9T
IHRvIGJlIGxpa2UgdGhlIG90aGVyIENvY29hIHBsYXRmb3Jtcz8KKyNpZiBQTEFURk9STShDT0NP
QSkgJiYgIVBMQVRGT1JNKEFQUExFVFYpCisgICAgV1RGOjpzd2l0Y2hPbihtX3N0cmF0ZWd5LAor
ICAgICAgICBbJl0gKEdyYWRpZW50JiBncmFkaWVudCkgeworICAgICAgICAgICAgQ0dDb250ZXh0
RHJhd0NvbmljR3JhZGllbnQocGxhdGZvcm1Db250ZXh0LCBncmFkaWVudC5ncmFkaWVudC5nZXQo
KSwgY2VudGVyLCBhbmdsZSk7CisgICAgICAgIH0sCisgICAgICAgIFsmXSAoU2hhZGluZyYgc2hh
ZGluZykgeworICAgICAgICAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcocGxhdGZvcm1Db250ZXh0
LCBhZG9wdENGKENHU2hhZGluZ0NyZWF0ZUNvbmljKHNoYWRpbmcuY29sb3JTcGFjZS5nZXQoKSwg
Y2VudGVyLCBhbmdsZSwgc2hhZGluZy5mdW5jdGlvbi5nZXQoKSkpLmdldCgpKTsKKyAgICAgICAg
fQorICAgICk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShwbGF0Zm9ybUNvbnRleHQpOworICAg
IFVOVVNFRF9QQVJBTShjZW50ZXIpOworICAgIFVOVVNFRF9QQVJBTShhbmdsZSk7CisjZW5kaWYK
K30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGll
bnRDR1N0cmF0ZWd5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhZGllbnRDR1N0cmF0ZWd5LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDR1N0cmF0ZWd5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJD
b2xvckNvbXBvbmVudHMuaCIKKyNpbmNsdWRlICJDb2xvckludGVycG9sYXRpb25NZXRob2QuaCIK
KyNpbmNsdWRlICJHcmFkaWVudENvbG9yU3RvcC5oIgorI2luY2x1ZGUgPENvcmVHcmFwaGljcy9D
b3JlR3JhcGhpY3MuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBDb2xvckNvbnZlcnRlZFRvSW50ZXJwb2xhdGlvbkNv
bG9yU3BhY2VTdG9wIHsKKyAgICBmbG9hdCBvZmZzZXQ7CisgICAgQ29sb3JDb21wb25lbnRzPGZs
b2F0LCA0PiBjb2xvckNvbXBvbmVudHM7Cit9OworCitjbGFzcyBHcmFkaWVudENHU3RyYXRlZ3kg
eworcHVibGljOgorICAgIEdyYWRpZW50Q0dTdHJhdGVneShDb2xvckludGVycG9sYXRpb25NZXRo
b2QsIGNvbnN0IEdyYWRpZW50Q29sb3JTdG9wVmVjdG9yJik7CisKKyAgICB2b2lkIGRyYXdMaW5l
YXJHcmFkaWVudChDR0NvbnRleHRSZWYsIENHUG9pbnQgc3RhcnRQb2ludCwgQ0dQb2ludCBlbmRQ
b2ludCwgQ0dHcmFkaWVudERyYXdpbmdPcHRpb25zKTsKKyAgICB2b2lkIGRyYXdSYWRpYWxHcmFk
aWVudChDR0NvbnRleHRSZWYsIENHUG9pbnQgc3RhcnRDZW50ZXIsIENHRmxvYXQgc3RhcnRSYWRp
dXMsIENHUG9pbnQgZW5kQ2VudGVyLCBDR0Zsb2F0IGVuZFJhZGl1cywgQ0dHcmFkaWVudERyYXdp
bmdPcHRpb25zKTsKKyAgICB2b2lkIGRyYXdDb25pY0dyYWRpZW50KENHQ29udGV4dFJlZiwgQ0dQ
b2ludCBjZW50ZXIsIENHRmxvYXQgYW5nbGUpOworCisgICAgc3RydWN0IEdyYWRpZW50IHsKKyAg
ICAgICAgUmV0YWluUHRyPENHR3JhZGllbnRSZWY+IGdyYWRpZW50OworICAgIH07CisKKyAgICBz
dHJ1Y3QgU2hhZGluZyB7CisgICAgICAgIGNsYXNzIERhdGEgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8RGF0YT4geworICAgICAgICBwdWJsaWM6CisgICAgICAgICAgICBzdGF0aWMgUmVm
PERhdGE+IGNyZWF0ZShDb2xvckludGVycG9sYXRpb25NZXRob2QgY29sb3JJbnRlcnBvbGF0aW9u
TWV0aG9kLCBWZWN0b3I8Q29sb3JDb252ZXJ0ZWRUb0ludGVycG9sYXRpb25Db2xvclNwYWNlU3Rv
cD4gc3RvcHMpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRGF0YShjb2xvckludGVycG9sYXRpb25NZXRob2QsIFdURk1vdmUoc3RvcHMpKSk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBjb2xv
ckludGVycG9sYXRpb25NZXRob2QoKSBjb25zdCB7IHJldHVybiBtX2NvbG9ySW50ZXJwb2xhdGlv
bk1ldGhvZDsgfQorICAgICAgICAgICAgY29uc3QgVmVjdG9yPENvbG9yQ29udmVydGVkVG9JbnRl
cnBvbGF0aW9uQ29sb3JTcGFjZVN0b3A+JiBzdG9wcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcHM7
IH0KKworICAgICAgICBwcml2YXRlOgorICAgICAgICAgICAgRGF0YShDb2xvckludGVycG9sYXRp
b25NZXRob2QgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBWZWN0b3I8Q29sb3JDb252ZXJ0ZWRU
b0ludGVycG9sYXRpb25Db2xvclNwYWNlU3RvcD4gc3RvcHMpCisgICAgICAgICAgICAgICAgOiBt
X2NvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCB7IGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCB9Cisg
ICAgICAgICAgICAgICAgLCBtX3N0b3BzIHsgV1RGTW92ZShzdG9wcykgfQorICAgICAgICAgICAg
eworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBDb2xvckludGVycG9sYXRpb25NZXRob2Qg
bV9jb2xvckludGVycG9sYXRpb25NZXRob2Q7CisgICAgICAgICAgICBWZWN0b3I8Q29sb3JDb252
ZXJ0ZWRUb0ludGVycG9sYXRpb25Db2xvclNwYWNlU3RvcD4gbV9zdG9wczsKKyAgICAgICAgfTsK
KworICAgICAgICBSZWY8RGF0YT4gZGF0YTsKKyAgICAgICAgUmV0YWluUHRyPENHRnVuY3Rpb25S
ZWY+IGZ1bmN0aW9uOworICAgICAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNw
YWNlOworICAgIH07CisKKyAgICB1c2luZyBTdHJhdGVneSA9IHN0ZDo6dmFyaWFudDxHcmFkaWVu
dCwgU2hhZGluZz47CisKK3ByaXZhdGU6CisgICAgU3RyYXRlZ3kgcGlja1N0cmF0ZWd5KENvbG9y
SW50ZXJwb2xhdGlvbk1ldGhvZCwgY29uc3QgR3JhZGllbnRDb2xvclN0b3BWZWN0b3ImKSBjb25z
dDsKKyAgICBTdHJhdGVneSBtYWtlR3JhZGllbnQoQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBj
b25zdCBHcmFkaWVudENvbG9yU3RvcFZlY3RvciYpIGNvbnN0OworICAgIFN0cmF0ZWd5IG1ha2VT
aGFkaW5nKENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCwgY29uc3QgR3JhZGllbnRDb2xvclN0b3BW
ZWN0b3ImKSBjb25zdDsKKworICAgIFN0cmF0ZWd5IG1fc3RyYXRlZ3k7Cit9OworCit9CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2dyYWRpZW50cy9hbHBoYS1wcmVtdWx0aXBsaWVkLWV4cGVjdGVk
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVudHMvYWxwaGEtcHJl
bXVsdGlwbGllZC1leHBlY3RlZC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zh
c3QvZ3JhZGllbnRzL2FscGhhLXByZW11bHRpcGxpZWQtZXhwZWN0ZWQuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQ0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
c3R5bGU+CisgICAgZGl2IHsgCisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0
OiAxMDBweDsKKyAgICB9CisKKyAgICAjbGluZWFyIHsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFn
ZTogbGluZWFyLWdyYWRpZW50KHRyYW5zcGFyZW50LCByZ2IoMCwgMCwgMjU1KSk7CisgICAgfQor
CisgICAgI2xpbmVhci1yZXBlYXRpbmcgeworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiByZXBl
YXRpbmctbGluZWFyLWdyYWRpZW50KHRyYW5zcGFyZW50LCByZ2IoMCwgMCwgMjU1KSAyNXB4KTsK
KyAgICB9CisKKyAgICAjcmFkaWFsIHsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogcmFkaWFs
LWdyYWRpZW50KHRyYW5zcGFyZW50LCByZ2IoMCwgMCwgMjU1KSk7CisgICAgfQorCisgICAgI3Jh
ZGlhbC1yZXBlYXRpbmcgeworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiByZXBlYXRpbmctcmFk
aWFsLWdyYWRpZW50KHRyYW5zcGFyZW50LCByZ2IoMCwgMCwgMjU1KSAyNXB4KTsKKyAgICB9CisK
KyAgICAjY29uaWMgeworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBjb25pYy1ncmFkaWVudCh0
cmFuc3BhcmVudCwgcmdiKDAsIDAsIDI1NSkpOworICAgIH0KKworICAgICNjb25pYy1yZXBlYXRp
bmcgeworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiByZXBlYXRpbmctY29uaWMtZ3JhZGllbnQo
dHJhbnNwYXJlbnQsIHJnYigwLCAwLCAyNTUpIDMwZGVnKTsKKyAgICB9CisgICAgCis8L3N0eWxl
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJsaW5lYXIiPjwvZGl2PgorPGRpdiBpZD0ibGlu
ZWFyLXJlcGVhdGluZyI+PC9kaXY+Cis8ZGl2IGlkPSJyYWRpYWwiPjwvZGl2PgorPGRpdiBpZD0i
cmFkaWFsLXJlcGVhdGluZyI+PC9kaXY+Cis8ZGl2IGlkPSJjb25pYyI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25pYy1yZXBlYXRpbmciPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9ncmFkaWVudHMvYWxwaGEtcHJlbXVsdGlwbGllZC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZ3JhZGllbnRzL2FscGhhLXByZW11bHRpcGxpZWQuaHRtbAko
bm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2dyYWRpZW50cy9hbHBoYS1wcmVtdWx0
aXBsaWVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorICAgIGRpdiB7IAorICAgICAgICB3aWR0aDog
MTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorCisgICAgI2xpbmVhciB7Cisg
ICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwgMCwgMjU1
LCAwKSwgcmdiKDAsIDAsIDI1NSkpOworICAgIH0KKworICAgICNsaW5lYXItcmVwZWF0aW5nIHsK
KyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudChyZ2Jh
KDI1NSwgMCwgMjU1LCAwKSwgcmdiKDAsIDAsIDI1NSkgMjVweCk7CisgICAgfQorCisgICAgI3Jh
ZGlhbCB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHJhZGlhbC1ncmFkaWVudChyZ2JhKDI1
NSwgMCwgMjU1LCAwKSwgcmdiKDAsIDAsIDI1NSkpOworICAgIH0KKworICAgICNyYWRpYWwtcmVw
ZWF0aW5nIHsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogcmVwZWF0aW5nLXJhZGlhbC1ncmFk
aWVudChyZ2JhKDI1NSwgMCwgMjU1LCAwKSwgcmdiKDAsIDAsIDI1NSkgMjVweCk7CisgICAgfQor
CisgICAgI2NvbmljIHsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogY29uaWMtZ3JhZGllbnQo
cmdiYSgyNTUsIDAsIDI1NSwgMCksIHJnYigwLCAwLCAyNTUpKTsKKyAgICB9CisKKyAgICAjY29u
aWMtcmVwZWF0aW5nIHsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogcmVwZWF0aW5nLWNvbmlj
LWdyYWRpZW50KHJnYmEoMjU1LCAwLCAyNTUsIDApLCByZ2IoMCwgMCwgMjU1KSAzMGRlZyk7Cisg
ICAgfQorICAgIAorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ibGluZWFyIj48
L2Rpdj4KKzxkaXYgaWQ9ImxpbmVhci1yZXBlYXRpbmciPjwvZGl2PgorPGRpdiBpZD0icmFkaWFs
Ij48L2Rpdj4KKzxkaXYgaWQ9InJhZGlhbC1yZXBlYXRpbmciPjwvZGl2PgorPGRpdiBpZD0iY29u
aWMiPjwvZGl2PgorPGRpdiBpZD0iY29uaWMtcmVwZWF0aW5nIj48L2Rpdj4KKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZ3JhZGllbnRzL2NvbmljLWdyYWRpZW50LWFs
cGhhLWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVu
dHMvY29uaWMtZ3JhZGllbnQtYWxwaGEtZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24gMjg3MjMzKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGllbnQtYWxwaGEtZXhwZWN0
ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsMjcgKzEwLDI3IEBACiAgICAgICAgICN0b3Bs
ZWZ0IHsKICAgICAgICAgICAgIHdpZHRoOiAwOyAKICAgICAgICAgICAgIGhlaWdodDogMDsgCi0g
ICAgICAgICAgICBib3JkZXItbGVmdDogMTAwcHggc29saWQgcmdiKDY0LDg3LDY0KTsKKyAgICAg
ICAgICAgIGJvcmRlci1sZWZ0OiAxMDBweCBzb2xpZCByZ2IoNjQsNjQsNjQpOwogICAgICAgICAg
ICAgYm9yZGVyLXRvcDogMTAwcHggc29saWQgcmdiKDMyLDMyLDMyKTsKICAgICAgICAgfQogICAg
ICAgICAjdG9wcmlnaHQgewogICAgICAgICAgICAgd2lkdGg6IDA7IAogICAgICAgICAgICAgaGVp
Z2h0OiAwOyAKLSAgICAgICAgICAgIGJvcmRlci1yaWdodDogMTAwcHggc29saWQgcmdiKDIyNSwy
NDYsMjI1KTsKLSAgICAgICAgICAgIGJvcmRlci10b3A6IDEwMHB4IHNvbGlkIHJnYigyNTQsMjU0
LDI1NCk7CisgICAgICAgICAgICBib3JkZXItcmlnaHQ6IDEwMHB4IHNvbGlkIHJnYigyMjQsMjI0
LDIyNCk7CisgICAgICAgICAgICBib3JkZXItdG9wOiAxMDBweCBzb2xpZCByZ2IoMjU1LDI1NSwy
NTUpOwogICAgICAgICB9CiAgICAgICAgICNib3R0b21sZWZ0IHsKICAgICAgICAgICAgIGNsZWFy
OiBsZWZ0OwogICAgICAgICAgICAgd2lkdGg6IDA7IAogICAgICAgICAgICAgaGVpZ2h0OiAwOyAK
LSAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxMDBweCBzb2xpZCByZ2IoOTYsMTM1LDk2KTsKLSAg
ICAgICAgICAgIGJvcmRlci1ib3R0b206IDEwMHB4IHNvbGlkIHJnYigxMjgsMTc1LDEyOCk7Cisg
ICAgICAgICAgICBib3JkZXItbGVmdDogMTAwcHggc29saWQgcmdiKDk2LDk2LDk2KTsKKyAgICAg
ICAgICAgIGJvcmRlci1ib3R0b206IDEwMHB4IHNvbGlkIHJnYigxMjgsMTI4LDEyOCk7CiAgICAg
ICAgIH0KICAgICAgICAgI2JvdHRvbXJpZ2h0IHsKICAgICAgICAgICAgIHdpZHRoOiAwOyAKICAg
ICAgICAgICAgIGhlaWdodDogMDsgCi0gICAgICAgICAgICBib3JkZXItcmlnaHQ6IDEwMHB4IHNv
bGlkIHJnYigxOTMsMjMxLDE5Myk7Ci0gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxMDBweCBz
b2xpZCByZ2IoMTYwLDIwNywxNjApOworICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxMDBweCBz
b2xpZCByZ2IoMTkyLDE5MiwxOTIpOworICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMTAwcHgg
c29saWQgcmdiKDE2MCwxNjAsMTYwKTsKICAgICAgICAgfQogICAgICAgICAuYm94IHsKICAgICAg
ICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZ3JhZGll
bnRzL2NvbmljLWdyYWRpZW50LWFscGhhLXVucHJlbXVsdGlwbGllZC1leHBlY3RlZC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZ3JhZGllbnRzL2NvbmljLWdyYWRpZW50LWFs
cGhhLXVucHJlbXVsdGlwbGllZC1leHBlY3RlZC5odG1sCShub25leGlzdGVudCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZ3JhZGllbnRzL2NvbmljLWdyYWRpZW50LWFscGhhLXVucHJlbXVsdGlwbGll
ZC1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjcgQEAKKzxodG1sPjwh
LS0gd2Via2l0LXRlc3QtcnVubmVyIFsgQ1NTR3JhZGllbnRBbHBoYVByZW11bHRpcGxpZWRJbnRl
cnBvbGF0aW9uRW5hYmxlZD1mYWxzZSBdIC0tPgorPGhlYWQ+CisgICAgPHN0eWxlPgorICAgICAg
ICBkaXYgeworICAgICAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICAgICAgaGVpZ2h0OiAy
MDBweDsKKyAgICAgICAgICAgIGZsb2F0OiBsZWZ0OworICAgICAgICB9CisgICAgICAgIC8qdHdl
YWsgdGhpcyB1bnRpbCBpdCdzIGFjdHVhbGx5IHJpZ2h0Li4uICovCisgICAgICAgICN0b3BsZWZ0
IHsKKyAgICAgICAgICAgIHdpZHRoOiAwOyAKKyAgICAgICAgICAgIGhlaWdodDogMDsgCisgICAg
ICAgICAgICBib3JkZXItbGVmdDogMTAwcHggc29saWQgcmdiKDY0LDg3LDY0KTsKKyAgICAgICAg
ICAgIGJvcmRlci10b3A6IDEwMHB4IHNvbGlkIHJnYigzMiwzMiwzMik7CisgICAgICAgIH0KKyAg
ICAgICAgI3RvcHJpZ2h0IHsKKyAgICAgICAgICAgIHdpZHRoOiAwOyAKKyAgICAgICAgICAgIGhl
aWdodDogMDsgCisgICAgICAgICAgICBib3JkZXItcmlnaHQ6IDEwMHB4IHNvbGlkIHJnYigyMjUs
MjQ2LDIyNSk7CisgICAgICAgICAgICBib3JkZXItdG9wOiAxMDBweCBzb2xpZCByZ2IoMjU0LDI1
NCwyNTQpOworICAgICAgICB9CisgICAgICAgICNib3R0b21sZWZ0IHsKKyAgICAgICAgICAgIGNs
ZWFyOiBsZWZ0OworICAgICAgICAgICAgd2lkdGg6IDA7IAorICAgICAgICAgICAgaGVpZ2h0OiAw
OyAKKyAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxMDBweCBzb2xpZCByZ2IoOTYsMTM1LDk2KTsK
KyAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDEwMHB4IHNvbGlkIHJnYigxMjgsMTc1LDEyOCk7
CisgICAgICAgIH0KKyAgICAgICAgI2JvdHRvbXJpZ2h0IHsKKyAgICAgICAgICAgIHdpZHRoOiAw
OyAKKyAgICAgICAgICAgIGhlaWdodDogMDsgCisgICAgICAgICAgICBib3JkZXItcmlnaHQ6IDEw
MHB4IHNvbGlkIHJnYigxOTMsMjMxLDE5Myk7CisgICAgICAgICAgICBib3JkZXItYm90dG9tOiAx
MDBweCBzb2xpZCByZ2IoMTYwLDIwNywxNjApOworICAgICAgICB9CisgICAgICAgIC5ib3ggewor
ICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICB9CisgICAgICAgIC54IHsK
KyAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgICAgIC13ZWJraXQtY2xp
cC1wYXRoOiBwb2x5Z29uKDAlIDAlLCAwJSAxMCUsIDQwJSA1MCUsIDAlIDkwJSwgMCUgMTAwJSwg
MTAlIDEwMCUsIDUwJSA2MCUsIDkwJSAxMDAlLCAxMDAlIDEwMCUsIDEwMCUgOTAlLCA2MCUgNTAl
LCAxMDAlIDEwJSwgMTAwJSAwJSwgOTAlIDAlLCA1MCUgNDAlLCAxMCUgMCUpOworICAgICAgICB9
CisgICAgICAgICN4IHsKKyAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6d2hpdGU7CisgICAg
ICAgIH0KKyAgICAgICAgLnBsdXMgeworICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwor
ICAgICAgICAgICAgLXdlYmtpdC1jbGlwLXBhdGg6IHBvbHlnb24oNDUlIDAlLCA1NSUgMCUsIDU1
JSA0NSUsIDEwMCUgNDUlLCAxMDAlIDU1JSwgNTUlIDU1JSwgNTUlIDEwMCUsIDQ1JSAxMDAlLCA0
NSUgNTUlLCAwJSA1NSUsIDAlIDQ1JSwgNDUlIDQ1JSk7CisgICAgICAgIH0KKyAgICAgICAgI3Bs
dXMgeworICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICA8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdj4KKyAgICAgICAg
PGRpdiBjbGFzcz0iYm94Ij4KKyAgICAgICAgICAgIDxkaXYgaWQ9InRvcGxlZnQiPjwvZGl2Pgor
ICAgICAgICAgICAgPGRpdiBpZD0idG9wcmlnaHQiPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBp
ZD0iYm90dG9tbGVmdCI+PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGlkPSJib3R0b21yaWdodCI+
PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgICAgICA8ZGl2IGlkPSJ4IiBjbGFzcz0ieCI+PC9k
aXY+CisgICAgICAgIDxkaXYgaWQ9InBsdXMiIGNsYXNzPSJwbHVzIj48L2Rpdj4KKyAgICA8L2Rp
dj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZ3JhZGllbnRzL2Nv
bmljLWdyYWRpZW50LWFscGhhLXVucHJlbXVsdGlwbGllZC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZ3JhZGllbnRzL2NvbmljLWdyYWRpZW50LWFscGhhLXVucHJlbXVsdGlw
bGllZC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZ3JhZGllbnRzL2Nv
bmljLWdyYWRpZW50LWFscGhhLXVucHJlbXVsdGlwbGllZC5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNTYgQEAKKzxodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgQ1NTR3JhZGll
bnRBbHBoYVByZW11bHRpcGxpZWRJbnRlcnBvbGF0aW9uRW5hYmxlZD1mYWxzZSBdIC0tPgorPGhl
YWQ+Cis8c3R5bGU+CisgICAgc3ZnIHsKKyAgICAgICAgd2lkdGg6IDgwMHB4OworICAgICAgICBk
aXNwbGF5OiBub25lOworICAgIH0KKyAgICBkaXYgeworICAgICAgICB3aWR0aDogMjAwcHg7Cisg
ICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgfQorICAgICNncmFkaWVudCB7CisgICAgICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICBoZWlnaHQ6
IDIwMHB4OworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBjb25pYy1ncmFkaWVudChyZ2JhKDAs
MjU1LDAsMCksIGJsYWNrKTsKKyAgICAgICAgZmlsdGVyOiB1cmwoI3Bvc3Rlcml6ZSk7CisgICAg
fQorCisgICAgLnggeworICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIC13ZWJr
aXQtY2xpcC1wYXRoOiBwb2x5Z29uKDAlIDAlLCAwJSAxMCUsIDQwJSA1MCUsIDAlIDkwJSwgMCUg
MTAwJSwgMTAlIDEwMCUsIDUwJSA2MCUsIDkwJSAxMDAlLCAxMDAlIDEwMCUsIDEwMCUgOTAlLCA2
MCUgNTAlLCAxMDAlIDEwJSwgMTAwJSAwJSwgOTAlIDAlLCA1MCUgNDAlLCAxMCUgMCUpOworICAg
IH0KKyAgICAjeCB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6d2hpdGU7CisgICAgfQorICAg
IC5wbHVzIHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICAtd2Via2l0LWNs
aXAtcGF0aDogcG9seWdvbig0NSUgMCUsIDU1JSAwJSwgNTUlIDQ1JSwgMTAwJSA0NSUsIDEwMCUg
NTUlLCA1NSUgNTUlLCA1NSUgMTAwJSwgNDUlIDEwMCUsIDQ1JSA1NSUsIDAlIDU1JSwgMCUgNDUl
LCA0NSUgNDUlKTsKKyAgICB9CisgICAgI3BsdXMgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9y
OndoaXRlOworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+CisKKzxib2R5PgorPHN2ZyB2aWV3Qm94
PSIwIDAgNzAwIDEwMCI+Cis8ZGVmcz4KKyAgICA8ZmlsdGVyIGlkPSJwb3N0ZXJpemUiIGZpbHRl
clVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5n
Qm94Ij4KKyAgICAgICAgPGZlQ29tcG9uZW50VHJhbnNmZXI+CisgICAgICAgICAgICA8ZmVGdW5j
UiB0eXBlPSJkaXNjcmV0ZSIgdGFibGVWYWx1ZXM9IjAgMC4xMjUgMC4yNSAwLjM3NSAwLjUgMC42
MjUgMC43NSAwLjg3NSIvPgorICAgICAgICAgICAgPGZlRnVuY0cgdHlwZT0iZGlzY3JldGUiIHRh
YmxlVmFsdWVzPSIwIDAuMTI1IDAuMjUgMC4zNzUgMC41IDAuNjI1IDAuNzUgMC44NzUiLz4KKyAg
ICAgICAgICAgIDxmZUZ1bmNCIHR5cGU9ImRpc2NyZXRlIiB0YWJsZVZhbHVlcz0iMCAwLjEyNSAw
LjI1IDAuMzc1IDAuNSAwLjYyNSAwLjc1IDAuODc1Ii8+CisgICAgICAgICAgICA8ZmVGdW5jQSB0
eXBlPSJkaXNjcmV0ZSIgdGFibGVWYWx1ZXM9IjAgMC4xMjUgMC4yNSAwLjM3NSAwLjUgMC42MjUg
MC43NSAwLjg3NSIvPgorICAgICAgICA8L2ZlQ29tcG9uZW50VHJhbnNmZXI+CisgICAgPC9maWx0
ZXI+Cis8L2RlZnM+Cis8L3N2Zz4KKworPGRpdj4KKyAgICA8ZGl2IGlkPSJncmFkaWVudCI+PC9k
aXY+CisgICAgPGRpdiBpZD0ieCIgY2xhc3M9IngiPjwvZGl2PgorICAgIDxkaXYgaWQ9InBsdXMi
IGNsYXNzPSJwbHVzIj48L2Rpdj4KKzwvZGl2PgorPC9odG1sPgo=
</data>
<flag name="commit-queue"
          id="473299"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447654</attachid>
            <date>2021-12-20 15:16:10 -0800</date>
            <delta_ts>2021-12-20 21:23:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234492-20211220151609.patch</filename>
            <type>text/plain</type>
            <size>86571</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODcyMzMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIxLTEyLTIwICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgQ0dTaGFkaW5nUmVmIGJhc2VkIGltcGxlbWVudGF0
aW9uIG9mIEdyYWRpZW50IGFzIHN0ZXBwaW5nIHN0b25lIHRvd2FyZCBwcmVtdWx0aXBsaWVkIGlu
dGVycG9sYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNDQ5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1s
OgorICAgICAgICBBZGQgYSBuZXcgZXhwZXJpbWVudGFsIHNldHRpbmcgdG8gZW5hYmxlIGFscGhh
IHByZW11bHRpcGxpZWQgQ1NTIGdyYWRpZW50cy4gCisKIDIwMjEtMTItMTggIERhcmluIEFkbGVy
ICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEhhc2ggdGFibGVzLCByZWFkL3dyaXRlLCBh
bmQgaGVhcCBtZW1vcnkgYXJlIHVzZWQgdW5uZWNlc3NhcmlseSwgd2hpY2ggbWF5IGh1cnQgcGVy
Zm9ybWFuY2UKSW5kZXg6IFNvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJl
bmNlc0V4cGVyaW1lbnRhbC55YW1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvU2NyaXB0cy9Q
cmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCShyZXZpc2lvbiAyODcy
MzMpCisrKyBTb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBl
cmltZW50YWwueWFtbAkod29ya2luZyBjb3B5KQpAQCAtMjg0LDYgKzI4NCwxOCBAQCBDU1NDdXN0
b21Qcm9wZXJ0aWVzQW5kVmFsdWVzRW5hYmxlZDoKICAgICBXZWJDb3JlOgogICAgICAgZGVmYXVs
dDogZmFsc2UKIAorQ1NTR3JhZGllbnRBbHBoYVByZW11bHRpcGxpZWRJbnRlcnBvbGF0aW9uRW5h
YmxlZDoKKyAgdHlwZTogYm9vbAorICBodW1hblJlYWRhYmxlTmFtZTogIkNTUyBHcmFkaWVudCBQ
cmVtdWx0aXBsaWVkIEludGVycG9sYXRpb24iCisgIGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbjog
IkVuYWJsZSBhbHBoYSBwcmVtdWx0aXBsaWVkIGludGVycG9sYXRlZCBDU1MgZ3JhZGllbnRzIgor
ICBkZWZhdWx0VmFsdWU6CisgICAgV2ViS2l0TGVnYWN5OgorICAgICAgZGVmYXVsdDogZmFsc2UK
KyAgICBXZWJLaXQ6CisgICAgICBkZWZhdWx0OiBmYWxzZQorICAgIFdlYkNvcmU6CisgICAgICBk
ZWZhdWx0OiBmYWxzZQorCiAjIEZJWE1FOiBUaGlzIGlzIGVuYWJsZWQgd2hlbiBFTkFCTEUoRVhQ
RVJJTUVOVEFMX0ZFQVRVUkVTKSBpcyB0cnVlIGluIFdlYktpdDIuIFBlcmhhcHMgd2Ugc2hvdWxk
IGNvbnNpZGVyIHVzaW5nIHRoYXQgZm9yIFdlYktpdExlZ2FjeSBhcyB3ZWxsLgogQ1NTSW5kaXZp
ZHVhbFRyYW5zZm9ybVByb3BlcnRpZXNFbmFibGVkOgogICB0eXBlOiBib29sCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyODcyMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxMTAgQEAKKzIwMjEtMTItMjAgIFNhbSBXZWluaWcgIDx3ZWlu
aWdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBDR1NoYWRpbmdSZWYgYmFzZWQgaW1wbGVtZW50
YXRpb24gb2YgR3JhZGllbnQgYXMgc3RlcHBpbmcgc3RvbmUgdG93YXJkIHByZW11bHRpcGxpZWQg
aW50ZXJwb2xhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM0NDkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGVzdHM6IGZhc3QvZ3JhZGllbnRzL2FscGhhLXByZW11bHRpcGxpZWQuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGllbnQtYWxwaGEtdW5wcmVtdWx0
aXBsaWVkLmh0bWwKKworICAgICAgICBFeHRyYWN0cyB1c2Ugb2YgQ0dHcmFkaWVudFJlZiBvdXQg
b2YgR3JhZGllbnQgYW5kIGludG8gdGhlIG5ldyBHcmFkaWVudENHU3RyYXRlZ3kgd2hpY2ggYWxz
byBpbXBsZW1lbnRzCisgICAgICAgIGEgQ0dTaGFkaW5nUmVmIGJhc2VkIGdyYWRpZW50IGRyYXdp
bmcgcGF0aC4gVGhlIEdyYWRpZW50Q0dTdHJhdGVneSBwaWNrcyB3aGljaCBzdHJhdGVneSwgQ0dH
cmFkaWVudFJlZgorICAgICAgICBvciBDR1NoYWRpbmdSZWYsIGJhc2VkIG9uIHRoZSBpbnRlcG9s
YXRpb24gbW9kZSBhbmQgY2FwYWJpbGl0aWVzIG9mIHRoZSB1bmRlcmx5aW5nIENvcmVHcmFwaGlj
cy4gRm9yIAorICAgICAgICBuZXcgZW5vdWdoIENvcmVHcmFwaGljcywgYm90aCBwcmVtdWx0aXBs
aWVkIGFuZCBub24tcHJlbXVsdGlwbGllZCBhbHBoYSBpbnRlcnBvbGF0aW9uIGZvciBzUkdCIG91
dHB1dAorICAgICAgICBhcmUgc3VwcG9ydGVkIGluIHRoZSBtb3JlIG9wdGltaXphYmxlIENHR3Jh
ZGllbnRSZWYgcGF0aCwgYnV0IG9uIG9sZGVyIHN5c3RlbXMgd2Ugd2lsbCBmYWxsYmFjayB0byBh
IAorICAgICAgICBhIG5ld2x5IGltcGxlbWVudGVkIENHU2hhZGluZ1JlZiBiYXNlZCBpbXBsZW1l
bnRhdGlvbi4KKworICAgICAgICBJbiBhZGRpdGlvbiB0byB0aGUgcGxhdGZvcm0gbGV2ZWwgd29y
ayBpbiBHcmFkaWVudCwgdGhpcyBhZGRzIGEgbmV3IHNldHRpbmcsIENTU0dyYWRpZW50QWxwaGFQ
cmVtdWx0aXBsaWVkSW50ZXJwb2xhdGlvbkVuYWJsZWQsCisgICAgICAgIHdoaWNoIGRlZmF1bHRz
IHRvIG9mZiBmb3Igbm93IGFuZCBzd2l0Y2hlcyB3aGF0IHR5cGUgb2YgaW50ZXJwb2xhdGlvbiB3
ZSB1c2UgZm9yIENTUyBncmFkaWVudHMuIEl0CisgICAgICAgIGRvZXMgbm90IGVmZmVjdCBvdGhl
ciBncmFkaWVudCB1c2VzIHN1Y2ggYXMgYnkgY2FudmFzIG9yIFNWRy4gVGhvc2Ugd2lsbCBiZSBl
bmFibGVkIHNlcGFyYXRlbHkuCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAq
IFBsYXRmb3JtQXBwbGVXaW4uY21ha2U6CisgICAgICAgICogUGxhdGZvcm1NYWMuY21ha2U6Cisg
ICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZCBuZXcgZmlsZXMuCisKKyAgICAgICAgKiBjc3Mv
Q1NTR3JhZGllbnRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaW5lYXJHcmFkaWVudEFk
YXB0ZXI6Om5vcm1hbGl6ZVN0b3BzQW5kRW5kcG9pbnRzT3V0c2lkZVJhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJhZGlhbEdyYWRpZW50QWRhcHRlcjo6bm9ybWFsaXplU3RvcHNBbmRFbmRwb2lu
dHNPdXRzaWRlUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29uaWNHcmFkaWVudEFkYXB0ZXI6
Om5vcm1hbGl6ZVN0b3BzQW5kRW5kcG9pbnRzT3V0c2lkZVJhbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0dyYWRpZW50VmFsdWU6OmNvbXB1dGVTdG9wcyk6CisgICAgICAgIFN3aXRjaCB0byB1
c2luZyB0aGUgbmV3IGludGVycG9sYXRlQ29sb3JzKCkgZnVuY3Rpb24gZnJvbSBDb2xvckludGVy
cG9sYXRpb24uaAorICAgICAgICB3aGljaCBhY2N1cmF0ZWx5IHRha2VzIGludG8gYWNjb3VudCB0
aGUgY3VycmVudCBpbnRlcnBvbGF0aW9uIG1vZGUuIFRoZXNlCisgICAgICAgIGJsZW5kcyBub3cg
bWF0Y2ggd2hhdCB0aGUgY3JlYXRlZCBncmFkaWVudCBkb2VzLgorCisgICAgICAgICogY3NzL3Bh
cnNlci9DU1NQYXJzZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNl
ckNvbnRleHQuaDoKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHF1ZXJ5aW5nIENTU0dyYWRpZW50
QWxwaGFQcmVtdWx0aXBsaWVkSW50ZXJwb2xhdGlvbkVuYWJsZWQgZnJvbSB0aGUgQ1NTIHBhcnNl
ci4KKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Z3JhZGllbnRBbHBo
YVByZW11bHRpcGxpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2Vy
SGVscGVyczo6Y29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lUmFk
aWFsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJz
Ojpjb25zdW1lTGluZWFyR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQ
YXJzZXJIZWxwZXJzOjpjb25zdW1lQ29uaWNHcmFkaWVudCk6CisgICAgICAgIERlcGVuZGluZyBv
biBob3cgQ1NTR3JhZGllbnRBbHBoYVByZW11bHRpcGxpZWRJbnRlcnBvbGF0aW9uRW5hYmxlZCBp
cyBzZXQsIHVzZSBlaXRoZXIgcHJlbXVsdGlwbGllZAorICAgICAgICBvciBub24tcHJlbXVsdGlw
bGllZCBpbnRlcnBvbGF0aW9uIGZvciBDU1MgZ3JhZGllbnRzLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3JDb21wb25lbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckNv
bXBvbmVudHM6OnNpemUgY29uc3QpOgorICAgICAgICBBZGQgc2l6ZSgpIGZ1bmN0aW9uIGZvciB1
c2UgYnkgdGhlIHNoYWRpbmcgc3RyYXRlZ3kuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvckludGVycG9sYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OnByZUludGVycG9sYXRp
b25Ob3JtYWxpemF0aW9uRm9yQ29tcG9uZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnByZUludGVy
cG9sYXRpb25Ob3JtYWxpemF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnBvc3RJbnRlcnBvbGF0
aW9uTm9ybWFsaXphdGlvbkZvckNvbXBvbmVudCk6CisgICAgICAgIChXZWJDb3JlOjpwb3N0SW50
ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6aW50ZXJwb2xhdGVD
b2xvckNvbXBvbmVudHMpOgorICAgICAgICBVcGRhdGUgdG8gdXNlIHRoZSBuYW1lIEludGVycG9s
YXRpb25NZXRob2RDb2xvclNwYWNlIGNvbnNpc3Rlbmx5IGZvciB0aGUgY29sb3Igc3BhY2UgcGFy
dCBvZiB0aGUKKyAgICAgICAgaW50ZXJwb2xhdGlvbiBtZXRob2QuCisgIAorICAgICAgICAoV2Vi
Q29yZTo6aW50ZXJwb2xhdGVDb2xvcnMpOgorICAgICAgICBBZGQgaGVscGVyIHdoaWNoIHRha2Vz
IGFuZCByZXR1cm5zIENvbG9yIG9iamVjdHMgcmF0aGVyIHRoYW4gdGhlIHN0cm9uZ2x5IHR5cGVk
IGNvbG9yIHR5cGVzLCAKKyAgICAgICAgYXV0b21hdGljYWxseSBjb252ZXJ0aW5nIHRvIHRoZSBh
cHByb3ByaWF0ZSBpbnRlcnBvbGF0aW9uIGNvbG9yIHNwYWNlIGJhc2VkIG9uIHRoZSBwcm92aWRl
ZAorICAgICAgICBDb2xvckludGVycG9sYXRpb25NZXRob2Qgb2JqZWN0LgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFkaWVudENvbG9yU3RvcC5oOiBBZGRlZC4KKyAgICAgICAgTW92ZSBDb2xvclN0b3AgYW5k
IENvbG9yU3RvcFZlY3RvciBkZWZpbnRpb25zIHRvIG5ldyBHcmFkaWVudENvbG9yU3RvcCBmaWxl
LCBidXQga2VlcCB0aGUKKyAgICAgICAgb2xkIG5lc3RlZCBuYW1lcyB2aWEgdXNpbmcgZGlyZWN0
aXZlcy4gVGhpcyBpcyBuZWVkZWQgdG8gbWFrZSB1c2luZyB0aGUgQ29sb3JTdG9wVmVjdG9yCisg
ICAgICAgIGZyb20gR3JhZGllbnRDR1N0cmF0ZWd5ICh3aGljaCB3ZSBhbHNvIHdhbnQgdG8gdXNl
IGluIEdyYWRpZW50LmgpIHBvc3NpYmxlIHdpdGhvdXQgcmVkZWNsYXJhdGlvbi4KKyAgICAgICAg
UmVwbGFjZSBDR0dyYWRpZW50UmVmIG1lbWJlciB3aXRoIEdyYWRpZW50Q0dTdHJhdGVneSB3aGlj
aCBhbGxvd3MgY2hvb3NpbmcgYmV0d2VlbiBlaXRoZXIKKyAgICAgICAgYSBDR0dyYWRpZW50UmVm
IGJhc2VkIGltcGxlbWVudGF0aW9uIG9yIENHU2hhZGluZ1JlZiBiYXNlZCBvbmUuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENHLmNwcDoKKyAgICAgICAgVXBkYXRl
IHRvIHVzZSB0aGUgR3JhZGllbnRDR1N0cmF0ZWd5IHJhdGhlcm4gdGhhbiBhIENHR3JhZGllbnRS
ZWYgZGlyZWN0bHksIGNhbGxpbmcgaW50byBpdAorICAgICAgICB0byBkbyB0aGUgYWN0dWFsIGRy
YXcgY2FsbHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENHU3Ry
YXRlZ3kuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRD
R1N0cmF0ZWd5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudENHU3RyYXRl
Z3k6OnBpY2tTdHJhdGVneSBjb25zdCk6CisgICAgICAgIENlbnRyYWwgZnVuY3Rpb24gdG8gY2hv
b3NlIHdoaWNoIHN0cmF0ZWd5IHRvIHVzZSBiYXNlZCBvbiBzeXN0ZW0gY2FwYWJpbGl0aWVzIGFu
ZCBpbnRlcnBvbGF0aW9uIG5lZWRzLgorCisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudENHU3Ry
YXRlZ3k6Om1ha2VHcmFkaWVudCBjb25zdCk6CisgICAgICAgIE1vdmVkIGZyb20gR3JhZGllbnRD
Ry5jcHAuIFJlbW92ZWQgdGhlIENHR3JhZGllbnRDcmVhdGVXaXRoQ29sb3JzKCkgcGF0aCwgYXMg
d2UgY2FuIGFsd2F5cyB1c2UgdGhlCisgICAgICAgIG1vcmUgZWZmaWNpZW50IENHR3JhZGllbnRD
cmVhdGVXaXRoQ29sb3JDb21wb25lbnRzKCkgYnkgZG9pbmcgdGhlIGNvbnZlcnNpb24gdG8gZXh0
ZW5kZWQgc1JHQiBvdXJzZWx2ZXMuCisgICAgICAgIEFsc28gYWRkcyB1c2Ugb2YgdGhlIGtDR0dy
YWRpZW50SW50ZXJwb2xhdGVzUHJlbXVsdGlwbGllZCBvcHRpb24gb24gc3VwcG9ydGVkIHN5c3Rl
bXMgdG8gdGVsbCBDb3JlR3JhcGhpY3MKKyAgICAgICAgdG8gdXNlIHByZW11bGl0cGxpZWQgaW50
ZXJwb2xhdGlvbi4KKworICAgICAgICAoV2ViQ29yZTo6c2hhZGluZ0Z1bmN0aW9uKToKKyAgICAg
ICAgQ29yZSBmdW5jdGlvbiB1c2VkIGJ5IENHU2hhZGluZ1JlZiB0byBpbnRlcnBvbGF0ZSBiZXR3
ZWVuIGNvbG9yIHN0b3BzLiBUZW1wbGF0aXplZCB0byBhbGxvdyBmb3Igb3B0aW1pemVkCisgICAg
ICAgIHZlcnNpb25zIGZvciBldmVyeSBDb2xvckludGVycG9sYXRpb25Db2xvclNwYWNlIC8gQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiBwYWlyLiAKKworICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRD
R1N0cmF0ZWd5OjptYWtlU2hhZGluZyBjb25zdCk6CisgICAgICAgIEJ1aWxkcyBzaGFkaW5nIHN0
cmF0ZWd5IGJ5IGNvbnZlcnRpbmcgYWxsIGNvbG9yIHN0b3BzIHRvIHRoZSBpbnRlcnBvbGF0aW9u
IGNvbG9yIHNwYWNlLCBhZGRpbmcgc3RvcHMgYXQKKyAgICAgICAgMCBhbmQgMSBpZiBuZWNlc3Nh
cnksIGFuZCBjcmVhdGluZyB0aGUgQ0dGdW5jdGlvblJlZiB0aGF0IHRoZSBzaGFkaW5nIHdpbGwg
b3duLiBUbyBhdm9pZCBhIGNpcmN1bGFyIAorICAgICAgICByZWZlcmVuY2UsIHRoZSBHcmFkaWVu
dENHU3RyYXRlZ3kgaXRzZWxmIGlzIG5vdCB3aGF0IHRoZSBDR0Z1bmN0aW9uUmVmIHJldGFpbnMs
IGJ1dCByYXRoZXIgYSBzdWJvYmplY3QKKyAgICAgICAgRGF0YSwgd2hpY2ggaXMgYSBwZWVyIHRv
IHRoZSBDR0Z1bmN0aW9uUmVmLgorCisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudENHU3RyYXRl
Z3k6OmRyYXdMaW5lYXJHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudENHU3Ry
YXRlZ3k6OmRyYXdSYWRpYWxHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudENH
U3RyYXRlZ3k6OmRyYXdDb25pY0dyYWRpZW50KToKKyAgICAgICAgRHJhdyB0aGUgZ3JhZGllbnQg
b3Igc2hhZGluZyBiYXNlZCBvbiB0aGUgc3RyYXRlZ3kgc2VsZWN0ZWQgYXQgY29uc3RydWN0aW9u
LgorCiAyMDIxLTEyLTE4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAg
ICBIYXNoIHRhYmxlcywgcmVhZC93cml0ZSwgYW5kIGhlYXAgbWVtb3J5IGFyZSB1c2VkIHVubmVj
ZXNzYXJpbHksIHdoaWNoIG1heSBodXJ0IHBlcmZvcm1hbmNlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHdv
cmtpbmcgY29weSkKQEAgLTE0NjEsNiArMTQ2MSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJB
TUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoUGFnZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhZGllbnQuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50Q29sb3JTdG9wLmgKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEZsdXNoSWRlbnRpZmllci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0R0wuaApJbmRleDogU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBs
ZVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2lu
LmNtYWtlCShyZXZpc2lvbiAyODcyMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxl
V2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsNiArMTMxLDcgQEAgZWxzZSAoKQogICAg
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFJlY3RDRy5jcHAKICAgICAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvRmxvYXRTaXplQ0cuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYWRpZW50Q0cuY3BwCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50
Q0dTdHJhdGVneS5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0R0xDRy5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
Q0cuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuY3BwCkBA
IC0xODIsNiArMTgzLDcgQEAgZWxzZSAoKQogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luLmgKIAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9D
b2xvclNwYWNlQ0cuaAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENHU3Ry
YXRlZ3kuaAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5o
CiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuaAogICAgICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5oCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybU1hYy5jbWFrZQkocmV2aXNpb24gMjg3MjMzKQorKysgU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1NYWMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTI5MSw2ICsyOTEsNyBAQCBsaXN0KEFQ
UEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFJlY3RD
Ry5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFNpemVDRy5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENHLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYWRpZW50Q0dTdHJhdGVneS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRHTENHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dENHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuY3BwCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM0OCw2ICszNDgsNyBAQCBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9GbG9hdFJlY3RDRy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0U2l6ZUNHLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYWRpZW50Q0dTdHJhdGVneS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dENHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuY3BwCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9QQUwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFu
Z2VMb2cJKHJldmlzaW9uIDI4NzI3OSkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0xMi0yMCAgU2FtIFdlaW5pZyAg
PHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIENHU2hhZGluZ1JlZiBiYXNlZCBpbXBs
ZW1lbnRhdGlvbiBvZiBHcmFkaWVudCBhcyBzdGVwcGluZyBzdG9uZSB0b3dhcmQgcHJlbXVsdGlw
bGllZCBpbnRlcnBvbGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzQ0OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg6CisgICAgICAgIEFkZCBm
b3J3YXJkcyBmb3IgY3JlYXRpbmcgY29uaWMgc2hhZGluZ3MgYW5kIGVuYWJsaW5nIHByZW11bHRp
cGxpZWQgYWxwaGEgaW50ZXJwb2xhdGlvbiBmb3IgZ3JhZGllbnRzLgorCiAyMDIxLTEyLTIwICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBQQUwg
c29mdCBsaW5raW5nIGhlYWRlcnMgZm9yIENvcmVNTCBhbmQgTmF0dXJhbExhbmd1YWdlIGZyYW1l
d29ya3MKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQ
SS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFw
aGljc1NQSS5oCShyZXZpc2lvbiAyODcyMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9jZy9Db3JlR3JhcGhpY3NTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsOCArNDEsOSBAQAog
I2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0NvbnRleHREZWxlZ2F0ZVByaXZhdGUuaD4KICNpbmNs
dWRlIDxDb3JlR3JhcGhpY3MvQ0dGb250Q2FjaGUuaD4KICNpbmNsdWRlIDxDb3JlR3JhcGhpY3Mv
Q0dQYXRoUHJpdmF0ZS5oPgotI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3NQcml2
YXRlLmg+CisjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHU2hhZGluZ1ByaXZhdGUuaD4KICNpbmNs
dWRlIDxDb3JlR3JhcGhpY3MvQ0dTdHlsZVByaXZhdGUuaD4KKyNpbmNsdWRlIDxDb3JlR3JhcGhp
Y3MvQ29yZUdyYXBoaWNzUHJpdmF0ZS5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUg
PENvcmVHcmFwaGljcy9DR0FjY2Vzc2liaWxpdHkuaD4KQEAgLTMyMyw2ICszMjQsMTYgQEAgdm9p
ZCBDR0NvbnRleHRTZXRTdHlsZShDR0NvbnRleHRSZWYsIENHU3R5bGVSZWYpOwogdm9pZCBDR0Nv
bnRleHREcmF3Q29uaWNHcmFkaWVudChDR0NvbnRleHRSZWYsIENHR3JhZGllbnRSZWYsIENHUG9p
bnQgY2VudGVyLCBDR0Zsb2F0IGFuZ2xlKTsKIHZvaWQgQ0dQYXRoQWRkVW5ldmVuQ29ybmVyc1Jv
dW5kZWRSZWN0KENHTXV0YWJsZVBhdGhSZWYsIGNvbnN0IENHQWZmaW5lVHJhbnNmb3JtICosIENH
UmVjdCwgY29uc3QgQ0dTaXplIGNvcm5lcnNbNF0pOwogYm9vbCBDR0ZvbnRSZW5kZXJpbmdHZXRG
b250U21vb3RoaW5nRGlzYWJsZWQodm9pZCk7CitDR1NoYWRpbmdSZWYgQ0dTaGFkaW5nQ3JlYXRl
Q29uaWMoQ0dDb2xvclNwYWNlUmVmLCBDR1BvaW50IGNlbnRlciwgQ0dGbG9hdCBhbmdsZSwgQ0dG
dW5jdGlvblJlZik7CisKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfR1JBRElFTlRfQ1JFQVRFX1dJ
VEhfT1BUSU9OUykKK0NHR3JhZGllbnRSZWYgQ0dHcmFkaWVudENyZWF0ZVdpdGhDb2xvckNvbXBv
bmVudHNBbmRPcHRpb25zKENHQ29sb3JTcGFjZVJlZiwgY29uc3QgQ0dGbG9hdCosIGNvbnN0IENH
RmxvYXQqLCBzaXplX3QsIENGRGljdGlvbmFyeVJlZik7CitDR0dyYWRpZW50UmVmIENHR3JhZGll
bnRDcmVhdGVXaXRoQ29sb3JzQW5kT3B0aW9ucyhDR0NvbG9yU3BhY2VSZWYsIENGQXJyYXlSZWYs
IGNvbnN0IENHRmxvYXQqLCBDRkRpY3Rpb25hcnlSZWYpOworI2VuZGlmCisKKyNpZiBIQVZFKENP
UkVfR1JBUEhJQ1NfUFJFTVVMVElQTElFRF9JTlRFUlBPTEFUSU9OX0dSQURJRU5UKQorZXh0ZXJu
IGNvbnN0IENGU3RyaW5nUmVmIGtDR0dyYWRpZW50SW50ZXJwb2xhdGVzUHJlbXVsdGlwbGllZDsK
KyNlbmRpZgogCiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI4
NzIzMykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtNDA4MSw2ICs0MDgxLDggQEAKIAkJQkMxMjRGMDAwQzI2NDQ3
QTAwOUUyMzQ5IC8qIEpTQmFyUHJvcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkMxMjRFRkUwQzI2NDQ3QTAwOUUyMzQ5IC8qIEpTQmFyUHJvcC5oICov
OyB9OwogCQlCQzEyOEE3MzEzN0M4NjdDMDBDQUM4NDUgLyogUmVuZGVyR3JpZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxMjhBNzIxMzdDODY3QzAw
Q0FDODQ1IC8qIFJlbmRlckdyaWQuaCAqLzsgfTsKIAkJQkMxNDAyOEIwRTgzNjgwODAwMzE5NzE3
IC8qIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE0MDI4OTBFODM2ODA4MDAzMTk3MTcgLyogU2Nyb2xsYmFy
VGhlbWVDb21wb3NpdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlCQzE5Q0RGMjI3NkZGQzZEMDA1M0Y3MzQgLyogR3JhZGllbnRDR1N0cmF0ZWd5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE5Q0RG
MDI3NkZGQjI2MDA1M0Y3MzQgLyogR3JhZGllbnRDR1N0cmF0ZWd5LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkMxOUNERjQyNzcxMDYzOTAwNTNG
NzM0IC8qIEdyYWRpZW50Q29sb3JTdG9wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzE5Q0RGMzI3NzEwNjM5MDA1M0Y3MzQgLyogR3JhZGllbnRDb2xv
clN0b3AuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlCQzFBN0Q5ODE4RkNCNUIwMDA0MjE4NzkgLyogUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxh
Y2Vob2xkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMUE3RDk2MThGQ0I1QjAwMDQyMTg3OSAvKiBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFj
ZWhvbGRlci5oICovOyB9OwogCQlCQzIyNzI4NzBFODJFNzA3MDBFN0Y5NzUgLyogU3R5bGVSZWZs
ZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzIyNzI4NjBFODJFNzA3MDBFN0Y5NzUgLyogU3R5bGVSZWZsZWN0aW9uLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMyMjcyQTIwRTgyRTg3QzAw
RTdGOTc1IC8qIEN1cnNvckRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDMjI3MkExMEU4MkU4N0MwMEU3Rjk3NSAvKiBDdXJzb3JEYXRhLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE1MTEzLDYg
KzE1MTE1LDkgQEAKIAkJQkMxMjhCMDAxMzdDOEQ0NjAwQ0FDODQ1IC8qIFJlbmRlckdyaWQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyR3JpZC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMTQwMjg4MEU4MzY4MDgwMDMxOTcxNyAvKiBT
Y3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDMTQwMjg5MEU4MzY4MDgwMDMxOTcxNyAvKiBTY3JvbGxiYXJUaGVtZUNvbXBv
c2l0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxiYXJUaGVtZUNv
bXBvc2l0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzE5Q0RFRjI3NkZGQjI2
MDA1M0Y3MzQgLyogR3JhZGllbnRDR1N0cmF0ZWd5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdy
YWRpZW50Q0dTdHJhdGVneS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMTlD
REYwMjc2RkZCMjYwMDUzRjczNCAvKiBHcmFkaWVudENHU3RyYXRlZ3kuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR3JhZGllbnRDR1N0cmF0ZWd5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJD
MTlDREYzMjc3MTA2MzkwMDUzRjczNCAvKiBHcmFkaWVudENvbG9yU3RvcC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBHcmFkaWVudENvbG9yU3RvcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
QzFBN0Q5NTE4RkNCNUIwMDA0MjE4NzkgLyogUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vo
b2xkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTXVs
dGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQzFBN0Q5NjE4RkNCNUIwMDA0MjE4NzkgLyogUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVy
UGxhY2Vob2xkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTXVs
dGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkMyMEZCN0UwQzBFOEU2QzAwRDE0NDdGIC8qIEpTRGVwcmVjYXRlZENTU09NVmFsdWVDdXN0
b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRGVwcmVjYXRl
ZENTU09NVmFsdWVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjg1
MzQsNiArMjg1MzksOCBAQAogCQkJCUIyNzUzNTJDMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJl
Y3RDRy5jcHAgKi8sCiAJCQkJQjI3NTM1MkQwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZUNH
LmNwcCAqLywKIAkJCQlCQzUzQzYwQTBEQTU2Q0YxMDAyMUVCNUQgLyogR3JhZGllbnRDRy5jcHAg
Ki8sCisJCQkJQkMxOUNERUYyNzZGRkIyNjAwNTNGNzM0IC8qIEdyYWRpZW50Q0dTdHJhdGVneS5j
cHAgKi8sCisJCQkJQkMxOUNERjAyNzZGRkIyNjAwNTNGNzM0IC8qIEdyYWRpZW50Q0dTdHJhdGVn
eS5oICovLAogCQkJCUIyRUQ5NzcwMEIxRjU1Q0UwMDI1N0QwRiAvKiBHcmFwaGljc0NvbnRleHRD
Ry5jcHAgKi8sCiAJCQkJOTM0OTA3RTMxMjVCQkJDODAwN0YyM0EwIC8qIEdyYXBoaWNzQ29udGV4
dENHLmggKi8sCiAJCQkJNkUyMUM2QzExMTI2MzM5OTAwQTdCRTAyIC8qIEdyYXBoaWNzQ29udGV4
dEdMQ0cuY3BwICovLApAQCAtMjg3NDMsNiArMjg3NTAsNyBAQAogCQkJCTA4NzNCODZBMTM2MDY0
RUEwMEE1MjJDMiAvKiBHbHlwaFBhZ2UuaCAqLywKIAkJCQlCQzUzQzYwNzBEQTU2QzU3MDAyMUVC
NUQgLyogR3JhZGllbnQuY3BwICovLAogCQkJCUJDNTNDNUY0MERBNTZCOTIwMDIxRUI1RCAvKiBH
cmFkaWVudC5oICovLAorCQkJCUJDMTlDREYzMjc3MTA2MzkwMDUzRjczNCAvKiBHcmFkaWVudENv
bG9yU3RvcC5oICovLAogCQkJCTJEMkZDMDU2MTQ2MENENkYwMDI2MzYzMyAvKiBHcmFkaWVudElt
YWdlLmNwcCAqLywKIAkJCQkyRDJGQzA1NzE0NjBDRDZGMDAyNjM2MzMgLyogR3JhZGllbnRJbWFn
ZS5oICovLAogCQkJCUIyQTAxNTkyMEFGNkNENTMwMDZCQ0UwRSAvKiBHcmFwaGljc0NvbnRleHQu
Y3BwICovLApAQCAtMzMzMDQsNiArMzMzMTIsNyBAQAogCQkJCTgzNzg4NzgyMjREOEE2MDkwMDBE
NEE1QiAvKiBBdWRpb0J1ZmZlclNvdXJjZU9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZE
MzE2MDdDMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0J1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RkQzMTYwN0UxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQkMxOUNERjIyNzZGRkM2RDAwNTNGNzM0IC8qIEdyYWRpZW50Q0dTdHJhdGVneS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0QzRUVGM0EyNTc5OUY4ODAwNjU2M0JCIC8qIEF1ZGlvQ29uZmln
dXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMDUxMkIwMjY3NjAwQzFBMzU5IC8q
IEF1ZGlvQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTc4NUQ5NjIyNEI3RjczNTAwMTRE
QjIxIC8qIEF1ZGlvQ29udGV4dExhdGVuY3lDYXRlZ29yeS5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
NDg2MCw2ICszNDg2OSw3IEBACiAJCQkJQTVCODFDQUQxRkFBNDQ2MjAwMzdEMUU2IC8qIEluc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk0QzYwM0EyNTNBMjc3
MzAwQkRGMDYwIC8qIEluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRjM0NEM3MTQxMTI1QjgyQzAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzE5Q0RGNDI3NzEwNjM5MDA1M0Y3MzQgLyogR3Jh
ZGllbnRDb2xvclN0b3AuaCBpbiBIZWFkZXJzICovLAogCQkJCUYzNDRDNzUzMTEyOTREOUQwMEYy
NkVFRSAvKiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3QTBFNzcwRjEwQzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk3QTU0ODU4MDE0RTAyRDUxMDA2QUUwNUEgLyogSW5zcGVjdG9ySGlz
dG9yeS5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGll
bnRWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50
VmFsdWUuY3BwCShyZXZpc2lvbiAyODcyMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3Jh
ZGllbnRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDExICsyNiwxMCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNTU0dyYWRpZW50VmFsdWUuaCIKIAotI2luY2x1ZGUg
IkFuaW1hdGlvblV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkNTU0NhbGNWYWx1ZS5oIgogI2luY2x1
ZGUgIkNTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdv
cmRzLmgiCi0jaW5jbHVkZSAiQ29sb3JCbGVuZGluZy5oIgorI2luY2x1ZGUgIkNvbG9ySW50ZXJw
b2xhdGlvbi5oIgogI2luY2x1ZGUgIkdyYWRpZW50SW1hZ2UuaCIKICNpbmNsdWRlICJOb2RlUmVu
ZGVyU3R5bGUuaCIKICNpbmNsdWRlICJQYWlyLmgiCkBAIC0xMzgsNyArMTM3LDcgQEAgY2xhc3Mg
TGluZWFyR3JhZGllbnRBZGFwdGVyIHsgKHB1YmxpYykKICAgICB9CiAgICAgZmxvYXQgbWF4RXh0
ZW50KGZsb2F0LCBmbG9hdCkgY29uc3QgeyByZXR1cm4gMTsgfQogCi0gICAgdm9pZCBub3JtYWxp
emVTdG9wc0FuZEVuZHBvaW50c091dHNpZGVSYW5nZShWZWN0b3I8R3JhZGllbnRTdG9wPiYgc3Rv
cHMpCisgICAgdm9pZCBub3JtYWxpemVTdG9wc0FuZEVuZHBvaW50c091dHNpZGVSYW5nZShWZWN0
b3I8R3JhZGllbnRTdG9wPiYgc3RvcHMsIENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCkKICAgICB7
CiAgICAgICAgIGZsb2F0IGZpcnN0T2Zmc2V0ID0gKnN0b3BzLmZpcnN0KCkub2Zmc2V0OwogICAg
ICAgICBmbG9hdCBsYXN0T2Zmc2V0ID0gKnN0b3BzLmxhc3QoKS5vZmZzZXQ7CkBAIC0xODEsNyAr
MTgwLDcgQEAgY2xhc3MgUmFkaWFsR3JhZGllbnRBZGFwdGVyIHsgKHB1YmxpYykKICAgICAgICAg
cmV0dXJuIDE7CiAgICAgfQogCi0gICAgdm9pZCBub3JtYWxpemVTdG9wc0FuZEVuZHBvaW50c091
dHNpZGVSYW5nZShWZWN0b3I8R3JhZGllbnRTdG9wPiYgc3RvcHMpCisgICAgdm9pZCBub3JtYWxp
emVTdG9wc0FuZEVuZHBvaW50c091dHNpZGVSYW5nZShWZWN0b3I8R3JhZGllbnRTdG9wPiYgc3Rv
cHMsIENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBjb2xvckludGVycG9sYXRpb25NZXRob2QpCiAg
ICAgewogICAgICAgICBhdXRvIG51bVN0b3BzID0gc3RvcHMuc2l6ZSgpOwogCkBAIC0yMDUsOCAr
MjA0LDcgQEAgY2xhc3MgUmFkaWFsR3JhZGllbnRBZGFwdGVyIHsgKHB1YmxpYykKICAgICAgICAg
ICAgICAgICBmbG9hdCBuZXh0T2Zmc2V0ID0gKnN0b3BzW2ZpcnN0WmVyb09yR3JlYXRlckluZGV4
XS5vZmZzZXQ7CiAKICAgICAgICAgICAgICAgICBmbG9hdCBpbnRlclN0b3BQcm9wb3J0aW9uID0g
LXByZXZPZmZzZXQgLyAobmV4dE9mZnNldCAtIHByZXZPZmZzZXQpOwotICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiB3aGVuIHdlIGludGVycG9sYXRlIGdyYWRpZW50cyB1c2luZyBwcmVtdWx0aXBs
aWVkIGNvbG9ycywgdGhpcyBzaG91bGQgZG8gcHJlbXVsdGlwbGljYXRpb24uCi0gICAgICAgICAg
ICAgICAgQ29sb3IgYmxlbmRlZENvbG9yID0gYmxlbmQoc3RvcHNbZmlyc3RaZXJvT3JHcmVhdGVy
SW5kZXggLSAxXS5jb2xvciwgc3RvcHNbZmlyc3RaZXJvT3JHcmVhdGVySW5kZXhdLmNvbG9yLCB7
IGludGVyU3RvcFByb3BvcnRpb24gfSk7CisgICAgICAgICAgICAgICAgYXV0byBibGVuZGVkQ29s
b3IgPSBpbnRlcnBvbGF0ZUNvbG9ycyhjb2xvckludGVycG9sYXRpb25NZXRob2QsIHN0b3BzW2Zp
cnN0WmVyb09yR3JlYXRlckluZGV4IC0gMV0uY29sb3IsIDEuMGYgLSBpbnRlclN0b3BQcm9wb3J0
aW9uLCBzdG9wc1tmaXJzdFplcm9PckdyZWF0ZXJJbmRleF0uY29sb3IsIGludGVyU3RvcFByb3Bv
cnRpb24pOwogCiAgICAgICAgICAgICAgICAgLy8gQ2xhbXAgdGhlIHBvc2l0aW9ucyB0byAwIGFu
ZCBzZXQgdGhlIGNvbG9yLgogICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
Zmlyc3RaZXJvT3JHcmVhdGVySW5kZXg7ICsraSkgewpAQCAtMjM2LDcgKzIzNCw3IEBAIGNsYXNz
IENvbmljR3JhZGllbnRBZGFwdGVyIHsgKHB1YmxpYykKICAgICBmbG9hdCBncmFkaWVudExlbmd0
aCgpIGNvbnN0IHsgcmV0dXJuIDE7IH0KICAgICBmbG9hdCBtYXhFeHRlbnQoZmxvYXQsIGZsb2F0
KSBjb25zdCB7IHJldHVybiAxOyB9CiAKLSAgICB2b2lkIG5vcm1hbGl6ZVN0b3BzQW5kRW5kcG9p
bnRzT3V0c2lkZVJhbmdlKFZlY3RvcjxHcmFkaWVudFN0b3A+JiBzdG9wcykKKyAgICB2b2lkIG5v
cm1hbGl6ZVN0b3BzQW5kRW5kcG9pbnRzT3V0c2lkZVJhbmdlKFZlY3RvcjxHcmFkaWVudFN0b3A+
JiBzdG9wcywgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhv
ZCkKICAgICB7CiAgICAgICAgIHNpemVfdCBudW1TdG9wcyA9IHN0b3BzLnNpemUoKTsKICAgICAg
ICAgc2l6ZV90IGxhc3RTdG9wSW5kZXggPSBudW1TdG9wcyAtIDE7CkBAIC0yNTYsOCArMjU0LDcg
QEAgY2xhc3MgQ29uaWNHcmFkaWVudEFkYXB0ZXIgeyAocHVibGljKQogICAgICAgICAgICAgICAg
IGZsb2F0IG5leHRPZmZzZXQgPSAqc3RvcHNbaW5kZXhdLm9mZnNldDsKIAogICAgICAgICAgICAg
ICAgIGZsb2F0IGludGVyU3RvcFByb3BvcnRpb24gPSAtcHJldmlvdXNPZmZzZXQgLyAobmV4dE9m
ZnNldCAtIHByZXZpb3VzT2Zmc2V0KTsKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogd2hlbiB3
ZSBpbnRlcnBvbGF0ZSBncmFkaWVudHMgdXNpbmcgcHJlbXVsdGlwbGllZCBjb2xvcnMsIHRoaXMg
c2hvdWxkIGRvIHByZW11bHRpcGxpY2F0aW9uLgotICAgICAgICAgICAgICAgIENvbG9yIGJsZW5k
ZWRDb2xvciA9IGJsZW5kKHN0b3BzW2luZGV4IC0gMV0uY29sb3IsIHN0b3BzW2luZGV4XS5jb2xv
ciwgeyBpbnRlclN0b3BQcm9wb3J0aW9uIH0pOworICAgICAgICAgICAgICAgIGF1dG8gYmxlbmRl
ZENvbG9yID0gaW50ZXJwb2xhdGVDb2xvcnMoY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBzdG9w
c1tpbmRleCAtIDFdLmNvbG9yLCAxLjBmIC0gaW50ZXJTdG9wUHJvcG9ydGlvbiwgc3RvcHNbaW5k
ZXhdLmNvbG9yLCBpbnRlclN0b3BQcm9wb3J0aW9uKTsKIAogICAgICAgICAgICAgICAgIC8vIENs
YW1wIHRoZSBwb3NpdGlvbnMgdG8gMCBhbmQgc2V0IHRoZSBjb2xvci4KICAgICAgICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluZGV4OyArK2kpIHsKQEAgLTI4Niw4ICsyODMsNyBA
QCBjbGFzcyBDb25pY0dyYWRpZW50QWRhcHRlciB7IChwdWJsaWMpCiAgICAgICAgICAgICAgICAg
ZmxvYXQgbmV4dE9mZnNldCA9ICpzdG9wc1tpbmRleCArIDFdLm9mZnNldDsKIAogICAgICAgICAg
ICAgICAgIGZsb2F0IGludGVyU3RvcFByb3BvcnRpb24gPSAoMSAtIHByZXZpb3VzT2Zmc2V0KSAv
IChuZXh0T2Zmc2V0IC0gcHJldmlvdXNPZmZzZXQpOwotICAgICAgICAgICAgICAgIC8vIEZJWE1F
OiB3aGVuIHdlIGludGVycG9sYXRlIGdyYWRpZW50cyB1c2luZyBwcmVtdWx0aXBsaWVkIGNvbG9y
cywgdGhpcyBzaG91bGQgZG8gcHJlbXVsdGlwbGljYXRpb24uCi0gICAgICAgICAgICAgICAgQ29s
b3IgYmxlbmRlZENvbG9yID0gYmxlbmQoc3RvcHNbaW5kZXhdLmNvbG9yLCBzdG9wc1tpbmRleCAr
IDFdLmNvbG9yLCB7IGludGVyU3RvcFByb3BvcnRpb24gfSk7CisgICAgICAgICAgICAgICAgYXV0
byBibGVuZGVkQ29sb3IgPSBpbnRlcnBvbGF0ZUNvbG9ycyhjb2xvckludGVycG9sYXRpb25NZXRo
b2QsIHN0b3BzW2luZGV4XS5jb2xvciwgMS4wZiAtIGludGVyU3RvcFByb3BvcnRpb24sIHN0b3Bz
W2luZGV4ICsgMV0uY29sb3IsIGludGVyU3RvcFByb3BvcnRpb24pOwogCiAgICAgICAgICAgICAg
ICAgLy8gQ2xhbXAgdGhlIHBvc2l0aW9ucyB0byAxIGFuZCBzZXQgdGhlIGNvbG9yLgogICAgICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSBpbmRleCArIDE7IGkgPCBudW1TdG9wczsgKytpKSB7
CkBAIC00ODUsOCArNDgxLDcgQEAgR3JhZGllbnQ6OkNvbG9yU3RvcFZlY3RvciBDU1NHcmFkaWVu
dFZhbHVlOjpjb21wdXRlU3RvCiAgICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgOTsgKyt5
KSB7CiAgICAgICAgICAgICBmbG9hdCByZWxhdGl2ZU9mZnNldCA9ICgqbmV3U3RvcHNbeV0ub2Zm
c2V0IC0gb2Zmc2V0MSkgLyAob2Zmc2V0MiAtIG9mZnNldDEpOwogICAgICAgICAgICAgZmxvYXQg
bXVsdGlwbGllciA9IHN0ZDo6cG93KHJlbGF0aXZlT2Zmc2V0LCBzdGQ6OmxvZyguNWYpIC8gc3Rk
Ojpsb2cobWlkcG9pbnQpKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBXaHkgbm90IHByZW11bHRp
cGx5IGhlcmU/Ci0gICAgICAgICAgICBuZXdTdG9wc1t5XS5jb2xvciA9IGJsZW5kV2l0aG91dFBy
ZW11bHRpcGx5KGNvbG9yMSwgY29sb3IyLCB7IG11bHRpcGxpZXIgfSk7CisgICAgICAgICAgICBu
ZXdTdG9wc1t5XS5jb2xvciA9IGludGVycG9sYXRlQ29sb3JzKG1fY29sb3JJbnRlcnBvbGF0aW9u
TWV0aG9kLCBjb2xvcjEsIDEuMGYgLSBtdWx0aXBsaWVyLCBjb2xvcjIsIG11bHRpcGxpZXIpOwog
ICAgICAgICB9CiAKICAgICAgICAgc3RvcHMucmVtb3ZlKHgpOwpAQCAtNTU3LDcgKzU1Miw3IEBA
IEdyYWRpZW50OjpDb2xvclN0b3BWZWN0b3IgQ1NTR3JhZGllbnRWYWx1ZTo6Y29tcHV0ZVN0bwog
CiAgICAgLy8gSWYgdGhlIGdyYWRpZW50IGdvZXMgb3V0c2lkZSB0aGUgMC0xIHJhbmdlLCBub3Jt
YWxpemUgaXQgYnkgbW92aW5nIHRoZSBlbmRwb2ludHMsIGFuZCBhZGp1c3RpbmcgdGhlIHN0b3Bz
LgogICAgIGlmIChzdG9wcy5zaXplKCkgPiAxICYmICgqc3RvcHMuZmlyc3QoKS5vZmZzZXQgPCAw
IHx8ICpzdG9wcy5sYXN0KCkub2Zmc2V0ID4gMSkpCi0gICAgICAgIGdyYWRpZW50QWRhcHRlci5u
b3JtYWxpemVTdG9wc0FuZEVuZHBvaW50c091dHNpZGVSYW5nZShzdG9wcyk7CisgICAgICAgIGdy
YWRpZW50QWRhcHRlci5ub3JtYWxpemVTdG9wc0FuZEVuZHBvaW50c091dHNpZGVSYW5nZShzdG9w
cywgbV9jb2xvckludGVycG9sYXRpb25NZXRob2QpOwogICAgIAogICAgIEdyYWRpZW50OjpDb2xv
clN0b3BWZWN0b3IgcmVzdWx0OwogICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHN0
b3BzLnNpemUoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNv
bnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFy
c2VyQ29udGV4dC5jcHAJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiwxMCArMTA2
LDExIEBAIENTU1BhcnNlckNvbnRleHQ6OkNTU1BhcnNlckNvbnRleHQoY29uc3QgRG9jdW1lbnQm
IGRvYwogICAgICwgaGFzUHNldWRvQ2xhc3NFbmFibGVkIHsgZG9jdW1lbnQuc2V0dGluZ3MoKS5o
YXNQc2V1ZG9DbGFzc0VuYWJsZWQoKSB9CiAgICAgLCBjYXNjYWRlTGF5ZXJzRW5hYmxlZCB7IGRv
Y3VtZW50LnNldHRpbmdzKCkuY3NzQ2FzY2FkZUxheWVyc0VuYWJsZWQoKSB9CiAgICAgLCBjb250
YWluZXJRdWVyaWVzRW5hYmxlZCB7IGRvY3VtZW50LnNldHRpbmdzKCkuY3NzQ29udGFpbmVyUXVl
cmllc0VuYWJsZWQoKSB9CisgICAgLCBvdmVyZmxvd0NsaXBFbmFibGVkIHsgZG9jdW1lbnQuc2V0
dGluZ3MoKS5vdmVyZmxvd0NsaXBFbmFibGVkKCkgfQorICAgICwgZ3JhZGllbnRBbHBoYVByZW11
bHRpcGxpZWRJbnRlcnBvbGF0aW9uRW5hYmxlZCB7IGRvY3VtZW50LnNldHRpbmdzKCkuY3NzR3Jh
ZGllbnRBbHBoYVByZW11bHRpcGxpZWRJbnRlcnBvbGF0aW9uRW5hYmxlZCgpIH0KICNpZiBFTkFC
TEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgICwgYXR0YWNobWVudEVuYWJsZWQgeyBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmF0dGFjaG1lbnRFbGVtZW50RW5hYmxl
ZCgpIH0KICNlbmRpZgotICAgICwgb3ZlcmZsb3dDbGlwRW5hYmxlZCB7IGRvY3VtZW50LnNldHRp
bmdzKCkub3ZlcmZsb3dDbGlwRW5hYmxlZCgpIH0KIHsKIH0KIApAQCAtMTUzLDEwICsxNTQsMTEg
QEAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGEsIGNvbnN0IENTU1Bh
CiAgICAgICAgICYmIGEuaGFzUHNldWRvQ2xhc3NFbmFibGVkID09IGIuaGFzUHNldWRvQ2xhc3NF
bmFibGVkCiAgICAgICAgICYmIGEuY2FzY2FkZUxheWVyc0VuYWJsZWQgPT0gYi5jYXNjYWRlTGF5
ZXJzRW5hYmxlZAogICAgICAgICAmJiBhLmNvbnRhaW5lclF1ZXJpZXNFbmFibGVkID09IGIuY29u
dGFpbmVyUXVlcmllc0VuYWJsZWQKKyAgICAgICAgJiYgYS5vdmVyZmxvd0NsaXBFbmFibGVkID09
IGIub3ZlcmZsb3dDbGlwRW5hYmxlZAorICAgICAgICAmJiBhLmdyYWRpZW50QWxwaGFQcmVtdWx0
aXBsaWVkSW50ZXJwb2xhdGlvbkVuYWJsZWQgPT0gYi5ncmFkaWVudEFscGhhUHJlbXVsdGlwbGll
ZEludGVycG9sYXRpb25FbmFibGVkCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAg
ICAgICAgJiYgYS5hdHRhY2htZW50RW5hYmxlZCA9PSBiLmF0dGFjaG1lbnRFbmFibGVkCiAjZW5k
aWYKLSAgICAgICAgJiYgYS5vdmVyZmxvd0NsaXBFbmFibGVkID09IGIub3ZlcmZsb3dDbGlwRW5h
YmxlZAogICAgIDsKIH0KIApAQCAtMTkzLDEyICsxOTUsMTMgQEAgdm9pZCBhZGQoSGFzaGVyJiBo
YXNoZXIsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRlCiAgICAgICAgIHwgY29udGV4dC5o
YXNQc2V1ZG9DbGFzc0VuYWJsZWQgICAgICAgICAgICAgICAgICAgICA8PCAyMgogICAgICAgICB8
IGNvbnRleHQuY2FzY2FkZUxheWVyc0VuYWJsZWQgICAgICAgICAgICAgICAgICAgICAgPDwgMjMK
ICAgICAgICAgfCBjb250ZXh0LmNvbnRhaW5lclF1ZXJpZXNFbmFibGVkICAgICAgICAgICAgICAg
ICAgIDw8IDI0CisgICAgICAgIHwgY29udGV4dC5vdmVyZmxvd0NsaXBFbmFibGVkICAgICAgICAg
ICAgICAgICAgICAgICA8PCAyNQorICAgICAgICB8IGNvbnRleHQuZ3JhZGllbnRBbHBoYVByZW11
bHRpcGxpZWRJbnRlcnBvbGF0aW9uRW5hYmxlZCA8PCAyNgogI2lmIEVOQUJMRShBVFRBQ0hNRU5U
X0VMRU1FTlQpCi0gICAgICAgIHwgY29udGV4dC5hdHRhY2htZW50RW5hYmxlZCAgICAgICAgICAg
ICAgICAgICAgICAgICA8PCAyNQorICAgICAgICB8IGNvbnRleHQuYXR0YWNobWVudEVuYWJsZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgPDwgMjcKICNlbmRpZgotICAgICAgICB8IGNvbnRleHQu
b3ZlcmZsb3dDbGlwRW5hYmxlZCAgICAgICAgICAgICAgICAgICAgICAgPDwgMjYKLSAgICAgICAg
fCBjb250ZXh0LmFjY2VudENvbG9yRW5hYmxlZCAgICAgICAgICAgICAgICAgICAgICAgIDw8IDI3
Ci0gICAgICAgIHwgY29udGV4dC5tb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8PCAyODsgLy8gVGhpcyBpcyBtdWx0aXBsZSBiaXRzLCBzbyBrZWVwIGl0IGxhc3QuCisg
ICAgICAgIHwgY29udGV4dC5hY2NlbnRDb2xvckVuYWJsZWQgICAgICAgICAgICAgICAgICAgICAg
ICA8PCAyOAorICAgICAgICB8IGNvbnRleHQubW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPDwgMjk7IC8vIFRoaXMgaXMgbXVsdGlwbGUgYml0cywgc28ga2VlcCBpdCBs
YXN0LgogICAgIGFkZChoYXNoZXIsIGNvbnRleHQuYmFzZVVSTCwgY29udGV4dC5jaGFyc2V0LCBi
aXRzKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250
ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJD
b250ZXh0LmgJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUGFyc2VyQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSwxMyArODUsMTMgQEAgc3Ry
dWN0IENTU1BhcnNlckNvbnRleHQgewogICAgIGJvb2wgaGFzUHNldWRvQ2xhc3NFbmFibGVkIHsg
ZmFsc2UgfTsKICAgICBib29sIGNhc2NhZGVMYXllcnNFbmFibGVkIHsgZmFsc2UgfTsKICAgICBi
b29sIGNvbnRhaW5lclF1ZXJpZXNFbmFibGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG92ZXJmbG93
Q2xpcEVuYWJsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgZ3JhZGllbnRBbHBoYVByZW11bHRpcGxp
ZWRJbnRlcnBvbGF0aW9uRW5hYmxlZCB7IGZhbHNlIH07CiAKICAgICAvLyBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLgogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgYm9vbCBhdHRh
Y2htZW50RW5hYmxlZCB7IGZhbHNlIH07CiAjZW5kaWYKLQotICAgIGJvb2wgb3ZlcmZsb3dDbGlw
RW5hYmxlZCB7IGZhbHNlIH07CiAKICAgICBDU1NQYXJzZXJDb250ZXh0KENTU1BhcnNlck1vZGUs
IGNvbnN0IFVSTCYgYmFzZVVSTCA9IFVSTCgpKTsKICAgICBXRUJDT1JFX0VYUE9SVCBDU1NQYXJz
ZXJDb250ZXh0KGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJMJiBiYXNlVVJMID0gVVJMKCksIGNv
bnN0IFN0cmluZyYgY2hhcnNldCA9IGVtcHR5U3RyaW5nKCkpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAko
cmV2aXNpb24gMjg3MjMzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDM5LDI0ICsyNDM5LDYgQEAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29sb3JNaXhQZXJjZW50YWdlcz4gbm9ybWFsaXplZE1pCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotLy8gQWZ0ZXIgaW50ZXJwb2xhdGlvbiwgaWYgdGhlIGNv
bG9yIGlzIGluIHRoZSBIV0Igb3IgSFNMIGNvbG9yIHNwYWNlLCBpdCBuZWVkcyB0byBiZSBjYW5v
bmljYWxpemVkIGJhY2sgdG8gc1JHQiBhcwotLy8gaXMgZG9uZSBhdCBwYXJzZSB0aW1lLgotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGU+IENvbG9yIG1ha2VDYW5vbmljYWxDb2xvcihDb2xv
clR5cGUgY29sb3IpCi17Ci0gICAgcmV0dXJuIGNvbG9yOwotfQotCi10ZW1wbGF0ZTw+IENvbG9y
IG1ha2VDYW5vbmljYWxDb2xvcjxIV0JBPGZsb2F0Pj4oSFdCQTxmbG9hdD4gY29sb3IpCi17Ci0g
ICAgcmV0dXJuIGNvbnZlcnRDb2xvcjxTUkdCQTx1aW50OF90Pj4oY29sb3IpOwotfQotCi10ZW1w
bGF0ZTw+IENvbG9yIG1ha2VDYW5vbmljYWxDb2xvcjxIU0xBPGZsb2F0Pj4oSFNMQTxmbG9hdD4g
Y29sb3IpCi17Ci0gICAgcmV0dXJuIGNvbnZlcnRDb2xvcjxTUkdCQTx1aW50OF90Pj4oY29sb3Ip
OwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRlcnBvbGF0aW9uTWV0aG9kPiBzdGF0aWMgQ29s
b3IgbWl4Q29sb3JDb21wb25lbnRzVXNpbmdDb2xvckludGVycG9sYXRpb25NZXRob2QoSW50ZXJw
b2xhdGlvbk1ldGhvZCBpbnRlcnBvbGF0aW9uTWV0aG9kLCBDb2xvck1peFBlcmNlbnRhZ2VzIG1p
eFBlcmNlbnRhZ2VzLCBjb25zdCBDb2xvciYgY29sb3IxLCBjb25zdCBDb2xvciYgY29sb3IyKQog
ewogICAgIHVzaW5nIENvbG9yVHlwZSA9IHR5cGVuYW1lIEludGVycG9sYXRpb25NZXRob2Q6OkNv
bG9yVHlwZTsKQEAgLTI5NDYsMTUgKzI5MjgsMjAgQEAgc3RhdGljIGJvb2wgY29uc3VtZURlcHJl
Y2F0ZWRHcmFkaWVudENvbG9yU3RvcChDU1NQYXJzCiAgICAgcmV0dXJuIHN0b3AuY29sb3IgJiYg
YXJncy5hdEVuZCgpOwogfQogCitzdGF0aWMgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBncmFkaWVu
dEFscGhhUHJlbXVsdGlwbGljYXRpb24oY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkK
K3sKKyAgICByZXR1cm4gY29udGV4dC5ncmFkaWVudEFscGhhUHJlbXVsdGlwbGllZEludGVycG9s
YXRpb25FbmFibGVkID8gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCA6IEFs
cGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZDsKK30KKwogc3RhdGljIFJlZlB0
cjxDU1NWYWx1ZT4gY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdl
JiBhcmdzLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQogewogICAgIFJlZlB0cjxD
U1NHcmFkaWVudFZhbHVlPiByZXN1bHQ7CiAgICAgQ1NTVmFsdWVJRCBpZCA9IGFyZ3MuY29uc3Vt
ZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpOwogICAgIGJvb2wgaXNEZXByZWNhdGVkUmFkaWFs
R3JhZGllbnQgPSAoaWQgPT0gQ1NTVmFsdWVSYWRpYWwpOwogICAgIGlmIChpc0RlcHJlY2F0ZWRS
YWRpYWxHcmFkaWVudCkKLSAgICAgICAgcmVzdWx0ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6
Y3JlYXRlKE5vblJlcGVhdGluZywgQ1NTRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50LCB7IENvbG9y
SW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVu
cHJlbXVsdGlwbGllZCB9KTsKKyAgICAgICAgcmVzdWx0ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1
ZTo6Y3JlYXRlKE5vblJlcGVhdGluZywgQ1NTRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50LCB7IENv
bG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIGdyYWRpZW50QWxwaGFQcmVtdWx0aXBs
aWNhdGlvbihjb250ZXh0KSB9KTsKICAgICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZUxpbmVhcikK
LSAgICAgICAgcmVzdWx0ID0gQ1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKE5vblJlcGVh
dGluZywgQ1NTRGVwcmVjYXRlZExpbmVhckdyYWRpZW50LCB7IENvbG9ySW50ZXJwb2xhdGlvbk1l
dGhvZDo6U1JHQiB7IH0sIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9
KTsKKyAgICAgICAgcmVzdWx0ID0gQ1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKE5vblJl
cGVhdGluZywgQ1NTRGVwcmVjYXRlZExpbmVhckdyYWRpZW50LCB7IENvbG9ySW50ZXJwb2xhdGlv
bk1ldGhvZDo6U1JHQiB7IH0sIGdyYWRpZW50QWxwaGFQcmVtdWx0aXBsaWNhdGlvbihjb250ZXh0
KSB9KTsKICAgICBpZiAoIXJlc3VsdCB8fCAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFj
ZShhcmdzKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTMwNTQsNyArMzA0MSw3IEBA
IHN0YXRpYyBib29sIGNvbnN1bWVHcmFkaWVudENvbG9yU3RvcHMoQ1NTUGFyc2VyVG9rZW5SYQog
CiBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50
KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRl
eHQsIENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdGluZykKIHsKLSAgICBhdXRvIHJlc3VsdCA9IENT
U1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZShyZXBlYXRpbmcsIENTU1ByZWZpeGVkUmFkaWFs
R3JhZGllbnQsIHsgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCIHsgfSwgQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkIH0pOworICAgIGF1dG8gcmVzdWx0ID0gQ1NT
UmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGluZywgQ1NTUHJlZml4ZWRSYWRpYWxH
cmFkaWVudCwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBncmFkaWVudEFs
cGhhUHJlbXVsdGlwbGljYXRpb24oY29udGV4dCkgfSk7CiAKICAgICBhdXRvIGNlbnRlckNvb3Jk
aW5hdGUgPSBjb25zdW1lT25lT3JUd29WYWx1ZWRQb3NpdGlvbkNvb3JkaW5hdGVzKGFyZ3MsIGNv
bnRleHQubW9kZSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsKICAgICBpZiAoY2VudGVyQ29vcmRp
bmF0ZSAmJiAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKQEAgLTMwOTgs
NyArMzA4NSw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVEZXByZWNhdGVkUmFk
aWFsR3JhZGllbgogCiBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lUmFkaWFsR3JhZGll
bnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29u
dGV4dCwgQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0aW5nKQogewotICAgIFJlZlB0cjxDU1NSYWRp
YWxHcmFkaWVudFZhbHVlPiByZXN1bHQgPSBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGUo
cmVwZWF0aW5nLCBDU1NSYWRpYWxHcmFkaWVudCwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6
OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7Cisg
ICAgUmVmUHRyPENTU1JhZGlhbEdyYWRpZW50VmFsdWU+IHJlc3VsdCA9IENTU1JhZGlhbEdyYWRp
ZW50VmFsdWU6OmNyZWF0ZShyZXBlYXRpbmcsIENTU1JhZGlhbEdyYWRpZW50LCB7IENvbG9ySW50
ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIGdyYWRpZW50QWxwaGFQcmVtdWx0aXBsaWNhdGlv
bihjb250ZXh0KSB9KTsKIAogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc2hhcGU7CiAg
ICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzaXplS2V5d29yZDsKQEAgLTMxODYsNyArMzE3
Myw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVSYWRpYWxHcmFkaWVudChDU1NQ
YXJzZQogCiBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lTGluZWFyR3JhZGllbnQoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwg
Q1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0aW5nLCBDU1NHcmFkaWVudFR5cGUgZ3JhZGllbnRUeXBl
KQogewotICAgIFJlZlB0cjxDU1NMaW5lYXJHcmFkaWVudFZhbHVlPiByZXN1bHQgPSBDU1NMaW5l
YXJHcmFkaWVudFZhbHVlOjpjcmVhdGUocmVwZWF0aW5nLCBncmFkaWVudFR5cGUsIHsgQ29sb3JJ
bnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCIHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5w
cmVtdWx0aXBsaWVkIH0pOworICAgIFJlZlB0cjxDU1NMaW5lYXJHcmFkaWVudFZhbHVlPiByZXN1
bHQgPSBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjcmVhdGUocmVwZWF0aW5nLCBncmFkaWVudFR5
cGUsIHsgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCIHsgfSwgZ3JhZGllbnRBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uKGNvbnRleHQpIH0pOwogCiAgICAgYm9vbCBleHBlY3RDb21tYSA9IHRy
dWU7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBhbmdsZSA9IGNvbnN1bWVBbmdsZShh
cmdzLCBjb250ZXh0Lm1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCwgVW5pdGxlc3NaZXJvUXVp
cms6OkFsbG93KTsKQEAgLTMyMjAsNyArMzIwNyw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+
IGNvbnN1bWVMaW5lYXJHcmFkaWVudChDU1NQYXJzZQogc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4g
Y29uc3VtZUNvbmljR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NT
UGFyc2VyQ29udGV4dCYgY29udGV4dCwgQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0aW5nKQogewog
I2lmIEVOQUJMRShDU1NfQ09OSUNfR1JBRElFTlRTKQotICAgIFJlZlB0cjxDU1NDb25pY0dyYWRp
ZW50VmFsdWU+IHJlc3VsdCA9IENTU0NvbmljR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGlu
ZywgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CisgICAgUmVmUHRyPENTU0NvbmljR3JhZGllbnRW
YWx1ZT4gcmVzdWx0ID0gQ1NTQ29uaWNHcmFkaWVudFZhbHVlOjpjcmVhdGUocmVwZWF0aW5nLCB7
IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIGdyYWRpZW50QWxwaGFQcmVtdWx0
aXBsaWNhdGlvbihjb250ZXh0KSB9KTsKIAogICAgIGJvb2wgZXhwZWN0Q29tbWEgPSBmYWxzZTsK
ICAgICBpZiAoYXJncy5wZWVrKCkudHlwZSgpID09IElkZW50VG9rZW4pIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29tcG9uZW50cy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29tcG9uZW50cy5oCShy
ZXZpc2lvbiAyODcyMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ckNvbXBvbmVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsOCBAQCBzdHJ1Y3QgQ29s
b3JDb21wb25lbnRzIHsKICAgICB0ZW1wbGF0ZTxzaXplX3QgU3RhcnQsIHNpemVfdCBFbmQ+CiAg
ICAgY29uc3RleHByIENvbG9yQ29tcG9uZW50czxULCBFbmQgLSBTdGFydD4gc3Vic2V0KCkgY29u
c3Q7CiAKKyAgICBjb25zdGV4cHIgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBTaXplOyB9
CisKICAgICBzdGQ6OmFycmF5PFQsIE4+IGNvbXBvbmVudHM7CiB9OwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckludGVycG9sYXRpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckludGVycG9sYXRpb24u
aAkocmV2aXNpb24gMjg3MjMzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JJbnRlcnBvbGF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIgorI2luY2x1
ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLmgiCiAjaW5j
bHVkZSAiQ29sb3JOb3JtYWxpemF0aW9uLmgiCiAjaW5jbHVkZSAiQ29sb3JUeXBlcy5oIgpAQCAt
MzYsMTQgKzM3LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjpwYWlyPGZsb2F0LCBm
bG9hdD4gZml4dXBIdWVDb21wb25lbnRzUHJpb3JUb0ludGVycG9sYXRpb24oSHVlSW50ZXJwb2xh
dGlvbk1ldGhvZCwgZmxvYXQsIGZsb2F0KTsKIAotdGVtcGxhdGU8c2l6ZV90IEksIEFscGhhUHJl
bXVsdGlwbGljYXRpb24gYWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwgdHlwZW5hbWUgSW50ZXJwb2xh
dGlvbk1ldGhvZD4KLXN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IHByZUludGVycG9sYXRpb25Ob3Jt
YWxpemF0aW9uRm9yQ29tcG9uZW50KEludGVycG9sYXRpb25NZXRob2QgaW50ZXJwb2xhdGlvbk1l
dGhvZCwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBjb2xvckNvbXBvbmVudHMxLCBDb2xvckNv
bXBvbmVudHM8ZmxvYXQsIDQ+IGNvbG9yQ29tcG9uZW50czIpCit0ZW1wbGF0ZTxzaXplX3QgSSwg
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBhbHBoYVByZW11bHRpcGxpY2F0aW9uLCB0eXBlbmFtZSBJ
bnRlcnBvbGF0aW9uTWV0aG9kQ29sb3JTcGFjZT4KK3N0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IHBy
ZUludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uRm9yQ29tcG9uZW50KEludGVycG9sYXRpb25NZXRo
b2RDb2xvclNwYWNlIGludGVycG9sYXRpb25NZXRob2RDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVu
dHM8ZmxvYXQsIDQ+IGNvbG9yQ29tcG9uZW50czEsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4g
Y29sb3JDb21wb25lbnRzMikKIHsKLSAgICB1c2luZyBDb2xvclR5cGUgPSB0eXBlbmFtZSBJbnRl
cnBvbGF0aW9uTWV0aG9kOjpDb2xvclR5cGU7CisgICAgdXNpbmcgQ29sb3JUeXBlID0gdHlwZW5h
bWUgSW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2U6OkNvbG9yVHlwZTsKICAgICBjb25zdGV4
cHIgYXV0byBjb21wb25lbnRJbmZvID0gQ29sb3JUeXBlOjpNb2RlbDo6Y29tcG9uZW50SW5mbzsK
IAogICAgIGlmIGNvbnN0ZXhwciAoY29tcG9uZW50SW5mb1tJXS50eXBlID09IENvbG9yQ29tcG9u
ZW50VHlwZTo6QW5nbGUpCi0gICAgICAgIHJldHVybiBmaXh1cEh1ZUNvbXBvbmVudHNQcmlvclRv
SW50ZXJwb2xhdGlvbihpbnRlcnBvbGF0aW9uTWV0aG9kLmh1ZUludGVycG9sYXRpb25NZXRob2Qs
IGNvbG9yQ29tcG9uZW50czFbSV0sIGNvbG9yQ29tcG9uZW50czJbSV0pOworICAgICAgICByZXR1
cm4gZml4dXBIdWVDb21wb25lbnRzUHJpb3JUb0ludGVycG9sYXRpb24oaW50ZXJwb2xhdGlvbk1l
dGhvZENvbG9yU3BhY2UuaHVlSW50ZXJwb2xhdGlvbk1ldGhvZCwgY29sb3JDb21wb25lbnRzMVtJ
XSwgY29sb3JDb21wb25lbnRzMltJXSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIGNvbnN0ZXhw
ciAoYWxwaGFQcmVtdWx0aXBsaWNhdGlvbiA9PSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVt
dWx0aXBsaWVkKQogICAgICAgICAgICAgcmV0dXJuIHsgY29sb3JDb21wb25lbnRzMVtJXSAqIGNv
bG9yQ29tcG9uZW50czFbM10sIGNvbG9yQ29tcG9uZW50czJbSV0gKiBjb2xvckNvbXBvbmVudHMy
WzNdIH07CkBAIC01MiwxMiArNTMsMTIgQEAgc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gcHJlSW50
ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb25GCiAgICAgfQogfQogCi10ZW1wbGF0ZTxBbHBoYVByZW11
bHRpcGxpY2F0aW9uIGFscGhhUHJlbXVsdGlwbGljYXRpb24sIHR5cGVuYW1lIEludGVycG9sYXRp
b25NZXRob2Q+Ci1zdGQ6OnBhaXI8Q29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiwgQ29sb3JDb21w
b25lbnRzPGZsb2F0LCA0Pj4gcHJlSW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb24oSW50ZXJwb2xh
dGlvbk1ldGhvZCBpbnRlcnBvbGF0aW9uTWV0aG9kLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+
IGNvbG9yQ29tcG9uZW50czEsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gY29sb3JDb21wb25l
bnRzMikKK3RlbXBsYXRlPEFscGhhUHJlbXVsdGlwbGljYXRpb24gYWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiwgdHlwZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2U+CitzdGQ6OnBhaXI8
Q29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0Pj4gcHJl
SW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb24oSW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2Ug
aW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4g
Y29sb3JDb21wb25lbnRzMSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBjb2xvckNvbXBvbmVu
dHMyKQogewotICAgIGF1dG8gW2NvbG9yQTAsIGNvbG9yQjBdID0gcHJlSW50ZXJwb2xhdGlvbk5v
cm1hbGl6YXRpb25Gb3JDb21wb25lbnQ8MCwgYWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4oaW50ZXJw
b2xhdGlvbk1ldGhvZCwgY29sb3JDb21wb25lbnRzMSwgY29sb3JDb21wb25lbnRzMik7Ci0gICAg
YXV0byBbY29sb3JBMSwgY29sb3JCMV0gPSBwcmVJbnRlcnBvbGF0aW9uTm9ybWFsaXphdGlvbkZv
ckNvbXBvbmVudDwxLCBhbHBoYVByZW11bHRpcGxpY2F0aW9uPihpbnRlcnBvbGF0aW9uTWV0aG9k
LCBjb2xvckNvbXBvbmVudHMxLCBjb2xvckNvbXBvbmVudHMyKTsKLSAgICBhdXRvIFtjb2xvckEy
LCBjb2xvckIyXSA9IHByZUludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uRm9yQ29tcG9uZW50PDIs
IGFscGhhUHJlbXVsdGlwbGljYXRpb24+KGludGVycG9sYXRpb25NZXRob2QsIGNvbG9yQ29tcG9u
ZW50czEsIGNvbG9yQ29tcG9uZW50czIpOworICAgIGF1dG8gW2NvbG9yQTAsIGNvbG9yQjBdID0g
cHJlSW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb25Gb3JDb21wb25lbnQ8MCwgYWxwaGFQcmVtdWx0
aXBsaWNhdGlvbj4oaW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2UsIGNvbG9yQ29tcG9uZW50
czEsIGNvbG9yQ29tcG9uZW50czIpOworICAgIGF1dG8gW2NvbG9yQTEsIGNvbG9yQjFdID0gcHJl
SW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb25Gb3JDb21wb25lbnQ8MSwgYWxwaGFQcmVtdWx0aXBs
aWNhdGlvbj4oaW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2UsIGNvbG9yQ29tcG9uZW50czEs
IGNvbG9yQ29tcG9uZW50czIpOworICAgIGF1dG8gW2NvbG9yQTIsIGNvbG9yQjJdID0gcHJlSW50
ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb25Gb3JDb21wb25lbnQ8MiwgYWxwaGFQcmVtdWx0aXBsaWNh
dGlvbj4oaW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2UsIGNvbG9yQ29tcG9uZW50czEsIGNv
bG9yQ29tcG9uZW50czIpOwogCiAgICAgcmV0dXJuIHsKICAgICAgICAgeyBjb2xvckEwLCBjb2xv
ckExLCBjb2xvckEyLCBjb2xvckNvbXBvbmVudHMxWzNdIH0sCkBAIC02OCwxMCArNjksMTAgQEAg
c3RkOjpwYWlyPENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4sIENvbG9yQ29tcG9uZW50czxmCiAK
IC8vIE1BUks6IC0gUG9zdC1pbnRlcnBvbGF0aW9uIG5vcm1hbGl6YXRpb24vZml4dXAKIAotdGVt
cGxhdGU8c2l6ZV90IEksIEFscGhhUHJlbXVsdGlwbGljYXRpb24gYWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiwgdHlwZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhvZD4KLWZsb2F0IHBvc3RJbnRlcnBvbGF0
aW9uTm9ybWFsaXphdGlvbkZvckNvbXBvbmVudChJbnRlcnBvbGF0aW9uTWV0aG9kLCBDb2xvckNv
bXBvbmVudHM8ZmxvYXQsIDQ+IGNvbG9yQ29tcG9uZW50cykKK3RlbXBsYXRlPHNpemVfdCBJLCBB
bHBoYVByZW11bHRpcGxpY2F0aW9uIGFscGhhUHJlbXVsdGlwbGljYXRpb24sIHR5cGVuYW1lIElu
dGVycG9sYXRpb25NZXRob2RDb2xvclNwYWNlPgorZmxvYXQgcG9zdEludGVycG9sYXRpb25Ob3Jt
YWxpemF0aW9uRm9yQ29tcG9uZW50KEludGVycG9sYXRpb25NZXRob2RDb2xvclNwYWNlLCBDb2xv
ckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbG9yQ29tcG9uZW50cykKIHsKLSAgICB1c2luZyBDb2xv
clR5cGUgPSB0eXBlbmFtZSBJbnRlcnBvbGF0aW9uTWV0aG9kOjpDb2xvclR5cGU7CisgICAgdXNp
bmcgQ29sb3JUeXBlID0gdHlwZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2U6OkNv
bG9yVHlwZTsKICAgICBjb25zdGV4cHIgYXV0byBjb21wb25lbnRJbmZvID0gQ29sb3JUeXBlOjpN
b2RlbDo6Y29tcG9uZW50SW5mbzsKIAogICAgIGlmIGNvbnN0ZXhwciAoY29tcG9uZW50SW5mb1tJ
XS50eXBlICE9IENvbG9yQ29tcG9uZW50VHlwZTo6QW5nbGUgJiYgYWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiA9PSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkKSB7CkBAIC04Miwx
MyArODMsMTMgQEAgZmxvYXQgcG9zdEludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uRm9yQ29tcG9u
ZW50KEludGVyCiAgICAgICAgIHJldHVybiBjb2xvckNvbXBvbmVudHNbSV07CiB9CiAKLXRlbXBs
YXRlPEFscGhhUHJlbXVsdGlwbGljYXRpb24gYWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwgdHlwZW5h
bWUgSW50ZXJwb2xhdGlvbk1ldGhvZD4KLUNvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gcG9zdElu
dGVycG9sYXRpb25Ob3JtYWxpemF0aW9uKEludGVycG9sYXRpb25NZXRob2QgaW50ZXJwb2xhdGlv
bk1ldGhvZCwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBjb2xvckNvbXBvbmVudHMpCit0ZW1w
bGF0ZTxBbHBoYVByZW11bHRpcGxpY2F0aW9uIGFscGhhUHJlbXVsdGlwbGljYXRpb24sIHR5cGVu
YW1lIEludGVycG9sYXRpb25NZXRob2RDb2xvclNwYWNlPgorQ29sb3JDb21wb25lbnRzPGZsb2F0
LCA0PiBwb3N0SW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb24oSW50ZXJwb2xhdGlvbk1ldGhvZENv
bG9yU3BhY2UgaW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2UsIENvbG9yQ29tcG9uZW50czxm
bG9hdCwgND4gY29sb3JDb21wb25lbnRzKQogewogICAgIHJldHVybiB7Ci0gICAgICAgIHBvc3RJ
bnRlcnBvbGF0aW9uTm9ybWFsaXphdGlvbkZvckNvbXBvbmVudDwwLCBhbHBoYVByZW11bHRpcGxp
Y2F0aW9uPihpbnRlcnBvbGF0aW9uTWV0aG9kLCBjb2xvckNvbXBvbmVudHMpLAotICAgICAgICBw
b3N0SW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb25Gb3JDb21wb25lbnQ8MSwgYWxwaGFQcmVtdWx0
aXBsaWNhdGlvbj4oaW50ZXJwb2xhdGlvbk1ldGhvZCwgY29sb3JDb21wb25lbnRzKSwKLSAgICAg
ICAgcG9zdEludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uRm9yQ29tcG9uZW50PDIsIGFscGhhUHJl
bXVsdGlwbGljYXRpb24+KGludGVycG9sYXRpb25NZXRob2QsIGNvbG9yQ29tcG9uZW50cyksCisg
ICAgICAgIHBvc3RJbnRlcnBvbGF0aW9uTm9ybWFsaXphdGlvbkZvckNvbXBvbmVudDwwLCBhbHBo
YVByZW11bHRpcGxpY2F0aW9uPihpbnRlcnBvbGF0aW9uTWV0aG9kQ29sb3JTcGFjZSwgY29sb3JD
b21wb25lbnRzKSwKKyAgICAgICAgcG9zdEludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uRm9yQ29t
cG9uZW50PDEsIGFscGhhUHJlbXVsdGlwbGljYXRpb24+KGludGVycG9sYXRpb25NZXRob2RDb2xv
clNwYWNlLCBjb2xvckNvbXBvbmVudHMpLAorICAgICAgICBwb3N0SW50ZXJwb2xhdGlvbk5vcm1h
bGl6YXRpb25Gb3JDb21wb25lbnQ8MiwgYWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4oaW50ZXJwb2xh
dGlvbk1ldGhvZENvbG9yU3BhY2UsIGNvbG9yQ29tcG9uZW50cyksCiAgICAgICAgIGNvbG9yQ29t
cG9uZW50c1szXQogICAgIH07CiAgfQpAQCAtOTYsMTEgKzk3LDExIEBAIENvbG9yQ29tcG9uZW50
czxmbG9hdCwgND4gcG9zdEludGVycG9sYXRpb25Ob3JtYWxpemF0aQogCiAvLyBNQVJLOiAtIElu
dGVycG9sYXRpb24KIAotdGVtcGxhdGU8QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBhbHBoYVByZW11
bHRpcGxpY2F0aW9uLCB0eXBlbmFtZSBJbnRlcnBvbGF0aW9uTWV0aG9kPgotdHlwZW5hbWUgSW50
ZXJwb2xhdGlvbk1ldGhvZDo6Q29sb3JUeXBlIGludGVycG9sYXRlQ29sb3JDb21wb25lbnRzKElu
dGVycG9sYXRpb25NZXRob2QgaW50ZXJwb2xhdGlvbk1ldGhvZCwgdHlwZW5hbWUgSW50ZXJwb2xh
dGlvbk1ldGhvZDo6Q29sb3JUeXBlIGNvbG9yMSwgZG91YmxlIGNvbG9yMU11bHRpcGxpZXIsIHR5
cGVuYW1lIEludGVycG9sYXRpb25NZXRob2Q6OkNvbG9yVHlwZSBjb2xvcjIsIGRvdWJsZSBjb2xv
cjJNdWx0aXBsaWVyKQordGVtcGxhdGU8QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBhbHBoYVByZW11
bHRpcGxpY2F0aW9uLCB0eXBlbmFtZSBJbnRlcnBvbGF0aW9uTWV0aG9kQ29sb3JTcGFjZT4KK3R5
cGVuYW1lIEludGVycG9sYXRpb25NZXRob2RDb2xvclNwYWNlOjpDb2xvclR5cGUgaW50ZXJwb2xh
dGVDb2xvckNvbXBvbmVudHMoSW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2UgaW50ZXJwb2xh
dGlvbk1ldGhvZENvbG9yU3BhY2UsIHR5cGVuYW1lIEludGVycG9sYXRpb25NZXRob2RDb2xvclNw
YWNlOjpDb2xvclR5cGUgY29sb3IxLCBkb3VibGUgY29sb3IxTXVsdGlwbGllciwgdHlwZW5hbWUg
SW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2U6OkNvbG9yVHlwZSBjb2xvcjIsIGRvdWJsZSBj
b2xvcjJNdWx0aXBsaWVyKQogewogICAgIC8vIDEuIEFwcGx5IHByZS1pbnRlcnBvbGF0aW9uIHRy
YW5zZm9ybXMgKGh1ZSBmaXh1cCBmb3IgcG9sYXIgY29sb3Igc3BhY2VzLCBhbHBoYSBwcmVtdWx0
aXBsaWNhdGlvbiBpZiByZXF1aXJlZCkuCi0gICAgYXV0byBbbm9ybWFsaXplZENvbG9yQ29tcG9u
ZW50czEsIG5vcm1hbGl6ZWRDb2xvckNvbXBvbmVudHMyXSA9IHByZUludGVycG9sYXRpb25Ob3Jt
YWxpemF0aW9uPGFscGhhUHJlbXVsdGlwbGljYXRpb24+KGludGVycG9sYXRpb25NZXRob2QsIGFz
Q29sb3JDb21wb25lbnRzKGNvbG9yMSksIGFzQ29sb3JDb21wb25lbnRzKGNvbG9yMikpOworICAg
IGF1dG8gW25vcm1hbGl6ZWRDb2xvckNvbXBvbmVudHMxLCBub3JtYWxpemVkQ29sb3JDb21wb25l
bnRzMl0gPSBwcmVJbnRlcnBvbGF0aW9uTm9ybWFsaXphdGlvbjxhbHBoYVByZW11bHRpcGxpY2F0
aW9uPihpbnRlcnBvbGF0aW9uTWV0aG9kQ29sb3JTcGFjZSwgYXNDb2xvckNvbXBvbmVudHMoY29s
b3IxKSwgYXNDb2xvckNvbXBvbmVudHMoY29sb3IyKSk7CiAKICAgICAvLyAyLiBJbnRlcnBvbGF0
ZSB1c2luZyB0aGUgbm9ybWFsaXplZCBjb21wb25lbnRzLgogICAgIGF1dG8gaW50ZXJwb2xhdGVk
Q29sb3JDb21wb25lbnRzID0gbWFwQ29sb3JDb21wb25lbnRzKFsmXSAoYXV0byBjb21wb25lbnRG
cm9tQ29sb3IxLCBhdXRvIGNvbXBvbmVudEZyb21Db2xvcjIpIC0+IGZsb2F0IHsKQEAgLTEwOCwx
MCArMTA5LDI1IEBAIHR5cGVuYW1lIEludGVycG9sYXRpb25NZXRob2Q6OkNvbG9yVHlwZSBpbnRl
cnBvbGF0ZUNvbAogICAgIH0sIG5vcm1hbGl6ZWRDb2xvckNvbXBvbmVudHMxLCBub3JtYWxpemVk
Q29sb3JDb21wb25lbnRzMik7CiAKICAgICAvLyAzLiBBcHBseSBwb3N0LWludGVycG9sYXRpb24g
dHJhc2Zvcm1zIChhbHBoYSB1bi1wcmVtdWx0aXBsaWNhdGlvbiBpZiByZXF1aXJlZCkuCi0gICAg
YXV0byBub3JtYWxpemVkSW50ZXJwb2xhdGVkQ29sb3JDb21wb25lbnRzID0gcG9zdEludGVycG9s
YXRpb25Ob3JtYWxpemF0aW9uPGFscGhhUHJlbXVsdGlwbGljYXRpb24+KGludGVycG9sYXRpb25N
ZXRob2QsIGludGVycG9sYXRlZENvbG9yQ29tcG9uZW50cyk7CisgICAgYXV0byBub3JtYWxpemVk
SW50ZXJwb2xhdGVkQ29sb3JDb21wb25lbnRzID0gcG9zdEludGVycG9sYXRpb25Ob3JtYWxpemF0
aW9uPGFscGhhUHJlbXVsdGlwbGljYXRpb24+KGludGVycG9sYXRpb25NZXRob2RDb2xvclNwYWNl
LCBpbnRlcnBvbGF0ZWRDb2xvckNvbXBvbmVudHMpOwogCiAgICAgLy8gNC4gQ3JlYXRlIGNvbG9y
IHR5cGUgZnJvbSBjb21wb25lbnRzLCBub3JtYWxpemluZyBhbnkgY29tcG9uZW50cyB0aGF0IG1h
eSBiZSBvdXQgb2YgcmFuZ2UuCi0gICAgcmV0dXJuIG1ha2VDb2xvclR5cGVCeU5vcm1hbGl6aW5n
Q29tcG9uZW50czx0eXBlbmFtZSBJbnRlcnBvbGF0aW9uTWV0aG9kOjpDb2xvclR5cGU+KG5vcm1h
bGl6ZWRJbnRlcnBvbGF0ZWRDb2xvckNvbXBvbmVudHMpOworICAgIHJldHVybiBtYWtlQ29sb3JU
eXBlQnlOb3JtYWxpemluZ0NvbXBvbmVudHM8dHlwZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhvZENv
bG9yU3BhY2U6OkNvbG9yVHlwZT4obm9ybWFsaXplZEludGVycG9sYXRlZENvbG9yQ29tcG9uZW50
cyk7Cit9CisKK2lubGluZSBDb2xvciBpbnRlcnBvbGF0ZUNvbG9ycyhDb2xvckludGVycG9sYXRp
b25NZXRob2QgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBDb2xvciBjb2xvcjEsIGRvdWJsZSBj
b2xvcjFNdWx0aXBsaWVyLCBDb2xvciBjb2xvcjIsIGRvdWJsZSBjb2xvcjJNdWx0aXBsaWVyKQor
eworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5jb2xv
clNwYWNlLAorICAgICAgICBbJl0gKGF1dG8mIGNvbG9yU3BhY2UpIHsKKyAgICAgICAgICAgIHVz
aW5nIENvbG9yVHlwZSA9IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PGRlY2x0eXBl
KGNvbG9yU3BhY2UpPjo6Q29sb3JUeXBlOworICAgICAgICAgICAgc3dpdGNoIChjb2xvckludGVy
cG9sYXRpb25NZXRob2QuYWxwaGFQcmVtdWx0aXBsaWNhdGlvbikgeworICAgICAgICAgICAgY2Fz
ZSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkOgorICAgICAgICAgICAgICAg
IHJldHVybiBtYWtlQ2Fub25pY2FsQ29sb3IoaW50ZXJwb2xhdGVDb2xvckNvbXBvbmVudHM8QWxw
aGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZD4oY29sb3JTcGFjZSwgY29sb3IxLnRv
Q29sb3JUeXBlTG9zc3k8Q29sb3JUeXBlPigpLCBjb2xvcjFNdWx0aXBsaWVyLCBjb2xvcjIudG9D
b2xvclR5cGVMb3NzeTxDb2xvclR5cGU+KCksIGNvbG9yMk11bHRpcGxpZXIpKTsKKyAgICAgICAg
ICAgIGNhc2UgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkOgorICAgICAg
ICAgICAgICAgIHJldHVybiBtYWtlQ2Fub25pY2FsQ29sb3IoaW50ZXJwb2xhdGVDb2xvckNvbXBv
bmVudHM8QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkPihjb2xvclNwYWNl
LCBjb2xvcjEudG9Db2xvclR5cGVMb3NzeTxDb2xvclR5cGU+KCksIGNvbG9yMU11bHRpcGxpZXIs
IGNvbG9yMi50b0NvbG9yVHlwZUxvc3N5PENvbG9yVHlwZT4oKSwgY29sb3IyTXVsdGlwbGllcikp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgKTsKIH0KIAogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JOb3JtYWxpemF0aW9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JOb3JtYWxpemF0aW9u
LmgJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yTm9ybWFsaXphdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxNCArMjUsMTkgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkNvbG9yQ29u
dmVyc2lvbi5oIgogI2luY2x1ZGUgIkNvbG9yVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4
dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbG9y
VHlwZT4gQ29sb3JUeXBlIG1ha2VDb2xvclR5cGVCeU5vcm1hbGl6aW5nQ29tcG9uZW50cyhjb25z
dCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+Jik7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5
cGU+IENvbG9yIG1ha2VDYW5vbmljYWxDb2xvcihDb2xvclR5cGUpOwogCiAKKy8vIE1BUks6IC0g
Tm9ybWFsaXphdGlvbgorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb21wb25lbnRUeXBlPiBzdHJ1Y3Qg
V2hpdGVuZXNzQmxhY2tuZXNzIHsKICAgICBDb21wb25lbnRUeXBlIHdoaXRlbmVzczsKICAgICBD
b21wb25lbnRUeXBlIGJsYWNrbmVzczsKQEAgLTk5LDYgKzEwNCwyMyBAQCB0ZW1wbGF0ZTw+IGlu
bGluZSBPS0xDSEE8ZmxvYXQ+IG1ha2VDb2xvclR5cGVCeU5vcm1hbGkKICAgICBmbG9hdCBub3Jt
YWxpemVkSHVlID0gbm9ybWFsaXplSHVlKGh1ZSk7CiAKICAgICByZXR1cm4geyBsaWdodG5lc3Ms
IGNocm9tYSwgbm9ybWFsaXplZEh1ZSwgYWxwaGEgfTsKK30KKworLy8gTUFSSzogLSBDYW5vbmlj
YWxpemF0aW9uCisKK3RlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZT4gaW5saW5lIENvbG9yIG1h
a2VDYW5vbmljYWxDb2xvcihDb2xvclR5cGUgY29sb3IpCit7CisgICAgcmV0dXJuIGNvbG9yOwor
fQorCit0ZW1wbGF0ZTw+IGlubGluZSBDb2xvciBtYWtlQ2Fub25pY2FsQ29sb3I8SFdCQTxmbG9h
dD4+KEhXQkE8ZmxvYXQ+IGNvbG9yKQoreworICAgIHJldHVybiBjb252ZXJ0Q29sb3I8U1JHQkE8
dWludDhfdD4+KGNvbG9yKTsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUgQ29sb3IgbWFrZUNhbm9u
aWNhbENvbG9yPEhTTEE8ZmxvYXQ+PihIU0xBPGZsb2F0PiBjb2xvcikKK3sKKyAgICByZXR1cm4g
Y29udmVydENvbG9yPFNSR0JBPHVpbnQ4X3Q+Pihjb2xvcik7CiB9CiAKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaAkocmV2aXNpb24gMjg3MjMz
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsMTYgKzI3LDE2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAi
QWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJDb2xvcklu
dGVycG9sYXRpb25NZXRob2QuaCIKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAi
R3JhZGllbnRDb2xvclN0b3AuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCiAjaW5jbHVk
ZSA8dmFyaWFudD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKICNpZiBVU0UoQ0cpCi0jaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgIkdyYWRpZW50Q0dTdHJhdGVneS5oIgog
I2VuZGlmCiAKICNpZiBVU0UoRElSRUNUMkQpCkBAIC00NSw3ICs0NSw2IEBACiAKICNpZiBVU0Uo
Q0cpCiB0eXBlZGVmIHN0cnVjdCBDR0NvbnRleHQqIENHQ29udGV4dFJlZjsKLXR5cGVkZWYgc3Ry
dWN0IENHR3JhZGllbnQqIENHR3JhZGllbnRSZWY7CiAjZW5kaWYKIAogI2lmIFVTRShESVJFQ1Qy
RCkKQEAgLTU5LDIxICs1OCwxNSBAQCB0eXBlZGVmIHN0cnVjdCBfY2Fpcm9fcGF0dGVybiBjYWly
b19wYXR0ZXJuX3Q7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQWZmaW5lVHJhbnNm
b3JtOwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogCiBjbGFzcyBH
cmFkaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYWRpZW50PiB7CiBwdWJsaWM6Ci0gICAgc3Ry
dWN0IENvbG9yU3RvcCB7Ci0gICAgICAgIGZsb2F0IG9mZnNldCB7IDAgfTsKLSAgICAgICAgQ29s
b3IgY29sb3I7CisgICAgdXNpbmcgQ29sb3JTdG9wID0gR3JhZGllbnRDb2xvclN0b3A7CisgICAg
dXNpbmcgQ29sb3JTdG9wVmVjdG9yID0gR3JhZGllbnRDb2xvclN0b3BWZWN0b3I7CiAKLSAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxDb2xvclN0b3A+IGRlY29kZShEZWNvZGVyJik7Ci0gICAgfTsKLQotICAgIHVzaW5nIENvbG9y
U3RvcFZlY3RvciA9IFZlY3RvcjxDb2xvclN0b3AsIDI+OwotCiAgICAgc3RydWN0IExpbmVhckRh
dGEgewogICAgICAgICBGbG9hdFBvaW50IHBvaW50MDsKICAgICAgICAgRmxvYXRQb2ludCBwb2lu
dDE7CkBAIC0xNDQsMTEgKzEzNyw2IEBAIGNsYXNzIEdyYWRpZW50IDogcHVibGljIFJlZkNvdW50
ZWQ8R3JhZGllbnQ+IHsgKHByaXZhdAogICAgIHZvaWQgc29ydFN0b3BzKCkgY29uc3Q7CiAgICAg
dm9pZCBzdG9wc0NoYW5nZWQoKTsKIAotI2lmIFVTRShDRykKLSAgICB2b2lkIGNyZWF0ZUNHR3Jh
ZGllbnQoKTsKLSAgICBib29sIGhhc09ubHlCb3VuZGVkU1JHQkNvbG9yU3RvcHMoKSBjb25zdDsK
LSNlbmRpZgotCiAgICAgRGF0YSBtX2RhdGE7CiAgICAgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9k
IG1fY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOwogICAgIG11dGFibGUgQ29sb3JTdG9wVmVjdG9y
IG1fc3RvcHM7CkBAIC0xNTcsMzQgKzE0NSwxMyBAQCBjbGFzcyBHcmFkaWVudCA6IHB1YmxpYyBS
ZWZDb3VudGVkPEdyYWRpZW50PiB7IChwcml2YXQKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fY2Fj
aGVkSGFzaCB7IDAgfTsKIAogI2lmIFVTRShDRykKLSAgICBSZXRhaW5QdHI8Q0dHcmFkaWVudFJl
Zj4gbV9ncmFkaWVudDsKKyAgICBzdGQ6Om9wdGlvbmFsPEdyYWRpZW50Q0dTdHJhdGVneT4gbV9n
cmFkaWVudDsKICNlbmRpZgogCiAjaWYgVVNFKERJUkVDVDJEKQogICAgIENPTVB0cjxJRDJEMUJy
dXNoPiBtX2JydXNoOwogI2VuZGlmCiB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2
b2lkIEdyYWRpZW50OjpDb2xvclN0b3A6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAot
ewotICAgIGVuY29kZXIgPDwgb2Zmc2V0OwotICAgIGVuY29kZXIgPDwgY29sb3I7Ci19Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8R3JhZGllbnQ6OkNvbG9yU3Rv
cD4gR3JhZGllbnQ6OkNvbG9yU3RvcDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCi17Ci0gICAg
c3RkOjpvcHRpb25hbDxmbG9hdD4gb2Zmc2V0OwotICAgIGRlY29kZXIgPj4gb2Zmc2V0OwotICAg
IGlmICghb2Zmc2V0KQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgc3RkOjpv
cHRpb25hbDxDb2xvcj4gY29sb3I7Ci0gICAgZGVjb2RlciA+PiBjb2xvcjsKLSAgICBpZiAoIWNv
bG9yKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgcmV0dXJuIHt7ICpvZmZz
ZXQsICpjb2xvciB9fTsKLX0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBHcmFk
aWVudDo6TGluZWFyRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudENvbG9yU3RvcC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50Q29s
b3JTdG9wLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhZGllbnRDb2xvclN0b3AuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSA8b3B0aW9u
YWw+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0
cnVjdCBHcmFkaWVudENvbG9yU3RvcCB7CisgICAgZmxvYXQgb2Zmc2V0IHsgMCB9OworICAgIENv
bG9yIGNvbG9yOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPEdyYWRpZW50Q29sb3JTdG9wPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwor
dXNpbmcgR3JhZGllbnRDb2xvclN0b3BWZWN0b3IgPSBWZWN0b3I8R3JhZGllbnRDb2xvclN0b3As
IDI+OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIEdyYWRpZW50Q29sb3JTdG9w
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG9mZnNl
dDsKKyAgICBlbmNvZGVyIDw8IGNvbG9yOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVy
PiBzdGQ6Om9wdGlvbmFsPEdyYWRpZW50Q29sb3JTdG9wPiBHcmFkaWVudENvbG9yU3RvcDo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gb2Zmc2V0
OworICAgIGRlY29kZXIgPj4gb2Zmc2V0OworICAgIGlmICghb2Zmc2V0KQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxDb2xvcj4gY29sb3I7CisgICAg
ZGVjb2RlciA+PiBjb2xvcjsKKyAgICBpZiAoIWNvbG9yKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCisgICAgcmV0dXJuIHt7ICpvZmZzZXQsICpjb2xvciB9fTsKK30KKworfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRD
Ry5jcHAJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYWRpZW50Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3MiArMjksMTcgQEAK
IAogI2lmIFVTRShDRykKIAorI2luY2x1ZGUgIkdyYWRpZW50Q0dTdHJhdGVneS5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhp
Y3NTUEkuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdm9pZCBHcmFkaWVudDo6c3RvcHNDaGFuZ2VkKCkKIHsKLSAgICBtX2dyYWRpZW50ID0g
bnVsbHB0cjsKKyAgICBtX2dyYWRpZW50ID0geyB9OwogfQogCi1ib29sIEdyYWRpZW50OjpoYXNP
bmx5Qm91bmRlZFNSR0JDb2xvclN0b3BzKCkgY29uc3QKLXsKLSAgICBmb3IgKGNvbnN0IGF1dG8m
IHN0b3AgOiBtX3N0b3BzKSB7Ci0gICAgICAgIGlmIChzdG9wLmNvbG9yLmNvbG9yU3BhY2UoKSAh
PSBDb2xvclNwYWNlOjpTUkdCKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBHcmFkaWVudDo6Y3JlYXRlQ0dHcmFkaWVudCgpCi17
Ci0gICAgc29ydFN0b3BzKCk7Ci0KLSAgICB1bnNpZ25lZCBudW1TdG9wcyA9IG1fc3RvcHMuc2l6
ZSgpOwotCi0gICAgY29uc3QgaW50IHJlc2VydmVkU3RvcHMgPSAzOwotICAgIFZlY3RvcjxDR0Zs
b2F0LCByZXNlcnZlZFN0b3BzPiBsb2NhdGlvbnM7Ci0gICAgbG9jYXRpb25zLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkobnVtU3RvcHMpOwotCi0gICAgLy8gSWYgYWxsIHRoZSBzdG9wcyBhcmUgYm91
bmRlZCBzUkdCIChhcyByZXByZXNlbnRlZCBieSB0aGUgY29sb3IgaGF2aW5nIHRoZSBjb2xvciBz
cGFjZQotICAgIC8vIENvbG9yU3BhY2U6OlNSR0IpLCBpdCBpcyBmYXN0ZXIgdG8gY3JlYXRlIGEg
Z3JhZGllbnQgdXNpbmcgY29tcG9uZW50cyB0aGFuIENHQ29sb3JzLgotICAgIGlmIChoYXNPbmx5
Qm91bmRlZFNSR0JDb2xvclN0b3BzKCkpIHsKLSAgICAgICAgVmVjdG9yPENHRmxvYXQsIDQgKiBy
ZXNlcnZlZFN0b3BzPiBjb2xvckNvbXBvbmVudHM7Ci0gICAgICAgIGNvbG9yQ29tcG9uZW50cy5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KG51bVN0b3BzICogNCk7Ci0KLSAgICAgICAgZm9yIChjb25z
dCBhdXRvJiBzdG9wIDogbV9zdG9wcykgewotICAgICAgICAgICAgYXV0byBbY29sb3JTcGFjZSwg
Y29tcG9uZW50c10gPSBzdG9wLmNvbG9yLmNvbG9yU3BhY2VBbmRDb21wb25lbnRzKCk7Ci0gICAg
ICAgICAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IGNvbXBvbmVudHM7Ci0gICAgICAgICAgICBjb2xv
ckNvbXBvbmVudHMudW5jaGVja2VkQXBwZW5kKHIpOwotICAgICAgICAgICAgY29sb3JDb21wb25l
bnRzLnVuY2hlY2tlZEFwcGVuZChnKTsKLSAgICAgICAgICAgIGNvbG9yQ29tcG9uZW50cy51bmNo
ZWNrZWRBcHBlbmQoYik7Ci0gICAgICAgICAgICBjb2xvckNvbXBvbmVudHMudW5jaGVja2VkQXBw
ZW5kKGEpOwotCi0gICAgICAgICAgICBsb2NhdGlvbnMudW5jaGVja2VkQXBwZW5kKHN0b3Aub2Zm
c2V0KTsKLSAgICAgICAgfQotCi0gICAgICAgIG1fZ3JhZGllbnQgPSBhZG9wdENGKENHR3JhZGll
bnRDcmVhdGVXaXRoQ29sb3JDb21wb25lbnRzKHNSR0JDb2xvclNwYWNlUmVmKCksIGNvbG9yQ29t
cG9uZW50cy5kYXRhKCksIGxvY2F0aW9ucy5kYXRhKCksIG51bVN0b3BzKSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBhdXRvIGNvbG9yc0FycmF5ID0gYWRvcHRDRihDRkFycmF5Q3Jl
YXRlTXV0YWJsZSgwLCBtX3N0b3BzLnNpemUoKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwot
ICAgIGZvciAoY29uc3QgYXV0byYgc3RvcCA6IG1fc3RvcHMpIHsKLSAgICAgICAgQ0ZBcnJheUFw
cGVuZFZhbHVlKGNvbG9yc0FycmF5LmdldCgpLCBjYWNoZWRDR0NvbG9yKHN0b3AuY29sb3IpLmdl
dCgpKTsKLSAgICAgICAgbG9jYXRpb25zLnVuY2hlY2tlZEFwcGVuZChzdG9wLm9mZnNldCk7Ci0g
ICAgfQotCi0jaWYgSEFWRShDT1JFX0dSQVBISUNTX0VYVEVOREVEX1NSR0JfQ09MT1JfU1BBQ0Up
Ci0gICAgYXV0byBleHRlbmRlZENvbG9yc0dyYWRpZW50Q29sb3JTcGFjZSA9IGV4dGVuZGVkU1JH
QkNvbG9yU3BhY2VSZWYoKTsKLSNlbHNlCi0gICAgYXV0byBleHRlbmRlZENvbG9yc0dyYWRpZW50
Q29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jZW5kaWYKLQotICAgIG1fZ3JhZGll
bnQgPSBhZG9wdENGKENHR3JhZGllbnRDcmVhdGVXaXRoQ29sb3JzKGV4dGVuZGVkQ29sb3JzR3Jh
ZGllbnRDb2xvclNwYWNlLCBjb2xvcnNBcnJheS5nZXQoKSwgbG9jYXRpb25zLmRhdGEoKSkpOwot
fQotCiB2b2lkIEdyYWRpZW50OjpmaWxsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiByZWN0KQogewogICAgIGNvbnRleHQuY2xpcChyZWN0KTsKQEAgLTEwOCwxOCAr
NTMsMTggQEAgdm9pZCBHcmFkaWVudDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQog
CiB2b2lkIEdyYWRpZW50OjpwYWludChDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250ZXh0KQogewot
ICAgIENHR3JhZGllbnREcmF3aW5nT3B0aW9ucyBleHRlbmRPcHRpb25zID0ga0NHR3JhZGllbnRE
cmF3c0JlZm9yZVN0YXJ0TG9jYXRpb24gfCBrQ0dHcmFkaWVudERyYXdzQWZ0ZXJFbmRMb2NhdGlv
bjsKKyAgICBpZiAoIW1fZ3JhZGllbnQpIHsKKyAgICAgICAgc29ydFN0b3BzKCk7CisgICAgICAg
IG1fZ3JhZGllbnQgPSBHcmFkaWVudENHU3RyYXRlZ3kgeyBtX2NvbG9ySW50ZXJwb2xhdGlvbk1l
dGhvZCwgbV9zdG9wcyB9OworICAgIH0KIAotICAgIGlmICghbV9ncmFkaWVudCkKLSAgICAgICAg
Y3JlYXRlQ0dHcmFkaWVudCgpOwotCiAgICAgV1RGOjpzd2l0Y2hPbihtX2RhdGEsCiAgICAgICAg
IFsmXSAoY29uc3QgTGluZWFyRGF0YSYgZGF0YSkgewogICAgICAgICAgICAgc3dpdGNoIChtX3Nw
cmVhZE1ldGhvZCkgewogICAgICAgICAgICAgY2FzZSBHcmFkaWVudFNwcmVhZE1ldGhvZDo6UmVw
ZWF0OgogICAgICAgICAgICAgY2FzZSBHcmFkaWVudFNwcmVhZE1ldGhvZDo6UmVmbGVjdDogewog
ICAgICAgICAgICAgICAgIENHQ29udGV4dFN0YXRlU2F2ZXIgc2F2ZVN0YXRlKHBsYXRmb3JtQ29u
dGV4dCk7Ci0gICAgICAgICAgICAgICAgZXh0ZW5kT3B0aW9ucyA9IDA7CisgICAgICAgICAgICAg
ICAgQ0dHcmFkaWVudERyYXdpbmdPcHRpb25zIGV4dGVuZE9wdGlvbnMgPSAwOwogCiAgICAgICAg
ICAgICAgICAgRmxvYXRQb2ludCBncmFkaWVudFZlY3Rvck5vcm0oZGF0YS5wb2ludDEgLSBkYXRh
LnBvaW50MCk7CiAgICAgICAgICAgICAgICAgZ3JhZGllbnRWZWN0b3JOb3JtLm5vcm1hbGl6ZSgp
OwpAQCAtMTQzLDcgKzg4LDcgQEAgdm9pZCBHcmFkaWVudDo6cGFpbnQoQ0dDb250ZXh0UmVmIHBs
YXRmb3JtQ29udGV4dCkKICAgICAgICAgICAgICAgICAgICAgQ0dQb2ludCBsZWZ0ID0gQ0dQb2lu
dE1ha2UoZmxpcCA/IGVuZCA6IHN0YXJ0LCAwKTsKICAgICAgICAgICAgICAgICAgICAgQ0dQb2lu
dCByaWdodCA9IENHUG9pbnRNYWtlKGZsaXAgPyBzdGFydCA6IGVuZCwgMCk7CiAKLSAgICAgICAg
ICAgICAgICAgICAgQ0dDb250ZXh0RHJhd0xpbmVhckdyYWRpZW50KHBsYXRmb3JtQ29udGV4dCwg
bV9ncmFkaWVudC5nZXQoKSwgbGVmdCwgcmlnaHQsIGV4dGVuZE9wdGlvbnMpOworICAgICAgICAg
ICAgICAgICAgICBtX2dyYWRpZW50LT5kcmF3TGluZWFyR3JhZGllbnQocGxhdGZvcm1Db250ZXh0
LCBsZWZ0LCByaWdodCwgZXh0ZW5kT3B0aW9ucyk7CiAgICAgICAgICAgICAgICAgfTsKIAogICAg
ICAgICAgICAgICAgIGF1dG8gaXNMZWZ0T2YgPSBbXShDR0Zsb2F0IHN0YXJ0LCBDR0Zsb2F0IGVu
ZCwgQ0dSZWN0IGJvdW5kaW5nQm94KSAtPiBib29sIHsKQEAgLTE4OSwxMiArMTM0LDE0IEBAIHZv
aWQgR3JhZGllbnQ6OnBhaW50KENHQ29udGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQpCiAgICAgICAg
ICAgICAgICAgICAgIGRyYXdMaW5lYXJHcmFkaWVudChlbmQgLSBkeCwgZW5kLCBmbGlwKTsKICAg
ICAgICAgICAgICAgICAgICAgZmxpcCA9ICFmbGlwICYmIG1fc3ByZWFkTWV0aG9kID09IEdyYWRp
ZW50U3ByZWFkTWV0aG9kOjpSZWZsZWN0OwogICAgICAgICAgICAgICAgIH0KLQogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSBHcmFkaWVudFNw
cmVhZE1ldGhvZDo6UGFkOgotICAgICAgICAgICAgICAgIENHQ29udGV4dERyYXdMaW5lYXJHcmFk
aWVudChwbGF0Zm9ybUNvbnRleHQsIG1fZ3JhZGllbnQuZ2V0KCksIGRhdGEucG9pbnQwLCBkYXRh
LnBvaW50MSwgZXh0ZW5kT3B0aW9ucyk7CisgICAgICAgICAgICBjYXNlIEdyYWRpZW50U3ByZWFk
TWV0aG9kOjpQYWQ6IHsKKyAgICAgICAgICAgICAgICBDR0dyYWRpZW50RHJhd2luZ09wdGlvbnMg
ZXh0ZW5kT3B0aW9ucyA9IGtDR0dyYWRpZW50RHJhd3NCZWZvcmVTdGFydExvY2F0aW9uIHwga0NH
R3JhZGllbnREcmF3c0FmdGVyRW5kTG9jYXRpb247CisgICAgICAgICAgICAgICAgbV9ncmFkaWVu
dC0+ZHJhd0xpbmVhckdyYWRpZW50KHBsYXRmb3JtQ29udGV4dCwgZGF0YS5wb2ludDAsIGRhdGEu
cG9pbnQxLCBleHRlbmRPcHRpb25zKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgfSwKICAgICAgICAgWyZdIChjb25zdCBSYWRp
YWxEYXRhJiBkYXRhKSB7CiAgICAgICAgICAgICBib29sIG5lZWRTY2FsaW5nID0gZGF0YS5hc3Bl
Y3RSYXRpbyAhPSAxOwpAQCAtMjA4LDcgKzE1NSw4IEBAIHZvaWQgR3JhZGllbnQ6OnBhaW50KENH
Q29udGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQpCiAgICAgICAgICAgICAgICAgQ0dDb250ZXh0VHJh
bnNsYXRlQ1RNKHBsYXRmb3JtQ29udGV4dCwgLWRhdGEucG9pbnQwLngoKSwgLWRhdGEucG9pbnQw
LnkoKSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIENHQ29udGV4dERyYXdSYWRpYWxH
cmFkaWVudChwbGF0Zm9ybUNvbnRleHQsIG1fZ3JhZGllbnQuZ2V0KCksIGRhdGEucG9pbnQwLCBk
YXRhLnN0YXJ0UmFkaXVzLCBkYXRhLnBvaW50MSwgZGF0YS5lbmRSYWRpdXMsIGV4dGVuZE9wdGlv
bnMpOworICAgICAgICAgICAgQ0dHcmFkaWVudERyYXdpbmdPcHRpb25zIGV4dGVuZE9wdGlvbnMg
PSBrQ0dHcmFkaWVudERyYXdzQmVmb3JlU3RhcnRMb2NhdGlvbiB8IGtDR0dyYWRpZW50RHJhd3NB
ZnRlckVuZExvY2F0aW9uOworICAgICAgICAgICAgbV9ncmFkaWVudC0+ZHJhd1JhZGlhbEdyYWRp
ZW50KHBsYXRmb3JtQ29udGV4dCwgZGF0YS5wb2ludDAsIGRhdGEuc3RhcnRSYWRpdXMsIGRhdGEu
cG9pbnQxLCBkYXRhLmVuZFJhZGl1cywgZXh0ZW5kT3B0aW9ucyk7CiAKICAgICAgICAgICAgIGlm
IChuZWVkU2NhbGluZykKICAgICAgICAgICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKHBs
YXRmb3JtQ29udGV4dCk7CkBAIC0yMjEsNyArMTY5LDcgQEAgdm9pZCBHcmFkaWVudDo6cGFpbnQo
Q0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dCkKICAgICAgICAgICAgIENHQ29udGV4dFRyYW5z
bGF0ZUNUTShwbGF0Zm9ybUNvbnRleHQsIGRhdGEucG9pbnQwLngoKSwgZGF0YS5wb2ludDAueSgp
KTsKICAgICAgICAgICAgIENHQ29udGV4dFJvdGF0ZUNUTShwbGF0Zm9ybUNvbnRleHQsIChDR0Zs
b2F0KS1NX1BJXzIpOwogICAgICAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKHBsYXRmb3Jt
Q29udGV4dCwgLWRhdGEucG9pbnQwLngoKSwgLWRhdGEucG9pbnQwLnkoKSk7Ci0gICAgICAgICAg
ICBDR0NvbnRleHREcmF3Q29uaWNHcmFkaWVudChwbGF0Zm9ybUNvbnRleHQsIG1fZ3JhZGllbnQu
Z2V0KCksIGRhdGEucG9pbnQwLCBkYXRhLmFuZ2xlUmFkaWFucyk7CisgICAgICAgICAgICBtX2dy
YWRpZW50LT5kcmF3Q29uaWNHcmFkaWVudChwbGF0Zm9ybUNvbnRleHQsIGRhdGEucG9pbnQwLCBk
YXRhLmFuZ2xlUmFkaWFucyk7CiAgICAgICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKHBs
YXRmb3JtQ29udGV4dCk7CiAjZWxzZQogICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGRhdGEpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDR1N0cmF0
ZWd5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFkaWVudENHU3RyYXRlZ3kuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0dTdHJhdGVneS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwzNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJHcmFkaWVudENHU3RyYXRlZ3kuaCIKKworI2luY2x1ZGUgIkNvbG9ySW50ZXJwb2xhdGlvbi5o
IgorI2luY2x1ZGUgIkNvbG9yU3BhY2VDRy5oIgorI2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdy
YXBoaWNzU1BJLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR3JhZGllbnRDR1N0cmF0ZWd5
OjpHcmFkaWVudENHU3RyYXRlZ3koQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIGNvbG9ySW50ZXJw
b2xhdGlvbk1ldGhvZCwgY29uc3QgR3JhZGllbnRDb2xvclN0b3BWZWN0b3ImIHN0b3BzKQorICAg
IDogbV9zdHJhdGVneSB7IHBpY2tTdHJhdGVneShjb2xvckludGVycG9sYXRpb25NZXRob2QsIHN0
b3BzKSB9Cit7Cit9CisKKy8vIE1BUks6IC0gU3RyYXRlZ3kgc2VsZWN0aW9uLgorCitHcmFkaWVu
dENHU3RyYXRlZ3k6OlN0cmF0ZWd5IEdyYWRpZW50Q0dTdHJhdGVneTo6cGlja1N0cmF0ZWd5KENv
bG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBjb2xvckludGVycG9sYXRpb25NZXRob2QsIGNvbnN0IEdy
YWRpZW50Q29sb3JTdG9wVmVjdG9yJiBzdG9wcykgY29uc3QKK3sKKyAgICByZXR1cm4gV1RGOjpz
d2l0Y2hPbihjb2xvckludGVycG9sYXRpb25NZXRob2QuY29sb3JTcGFjZSwKKyAgICAgICAgWyZd
IChjb25zdCBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0ImKSAtPiBTdHJhdGVneSB7Cisg
ICAgICAgICAgICBzd2l0Y2ggKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5hbHBoYVByZW11bHRp
cGxpY2F0aW9uKSB7CisgICAgICAgICAgICBjYXNlIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVu
cHJlbXVsdGlwbGllZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZUdyYWRpZW50KGNvbG9y
SW50ZXJwb2xhdGlvbk1ldGhvZCwgc3RvcHMpOworICAgICAgICAgICAgY2FzZSBBbHBoYVByZW11
bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkOgorI2lmIEhBVkUoQ09SRV9HUkFQSElDU19QUkVN
VUxUSVBMSUVEX0lOVEVSUE9MQVRJT05fR1JBRElFTlQpCisgICAgICAgICAgICAgICAgcmV0dXJu
IG1ha2VHcmFkaWVudChjb2xvckludGVycG9sYXRpb25NZXRob2QsIHN0b3BzKTsKKyNlbHNlCisg
ICAgICAgICAgICAgICAgLy8gRklYTUU6IFVzZSBncmFkaWVudCBzdHJhdGVneSBpZiBub25lIG9m
IHRoZSBzdG9wcyBoYXZlIGFscGhhLgorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlU2hhZGlu
Zyhjb2xvckludGVycG9sYXRpb25NZXRob2QsIHN0b3BzKTsKKyNlbmRpZgorICAgICAgICAgICAg
fQorICAgICAgICB9LAorICAgICAgICBbJl0gKGNvbnN0IGF1dG8mKSAtPiBTdHJhdGVneSB7Cisg
ICAgICAgICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIHRoZSBvdGhlciBpbnRlcnBvbGF0
aW9uIGNvbG9yIHNwYWNlcy4KKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIH0KKyAgICApOworfQorCisvLyBNQVJLOiAtIEdyYWRpZW50IHN0cmF0ZWd5
LgorCitHcmFkaWVudENHU3RyYXRlZ3k6OlN0cmF0ZWd5IEdyYWRpZW50Q0dTdHJhdGVneTo6bWFr
ZUdyYWRpZW50KENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBjb2xvckludGVycG9sYXRpb25NZXRo
b2QsIGNvbnN0IEdyYWRpZW50Q29sb3JTdG9wVmVjdG9yJiBzdG9wcykgY29uc3QKK3sKKyAgICBB
U1NFUlRfVU5VU0VEKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCwgc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0I+KGNvbG9ySW50ZXJwb2xhdGlvbk1l
dGhvZC5jb2xvclNwYWNlKSk7CisjaWYgIUhBVkUoQ09SRV9HUkFQSElDU19QUkVNVUxUSVBMSUVE
X0lOVEVSUE9MQVRJT05fR1JBRElFTlQpCisgICAgQVNTRVJUX1VOVVNFRChjb2xvckludGVycG9s
YXRpb25NZXRob2QsIGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5hbHBoYVByZW11bHRpcGxpY2F0
aW9uID09IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCk7CisjZW5kaWYK
KworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19HUkFESUVOVF9DUkVBVEVfV0lUSF9PUFRJT05TKQor
I2lmIEhBVkUoQ09SRV9HUkFQSElDU19QUkVNVUxUSVBMSUVEX0lOVEVSUE9MQVRJT05fR1JBRElF
TlQpCisgICAgYXV0byBncmFkaWVudEludGVycG9sYXRlc1ByZW11bHRpcGxpZWRPcHRpb25zRGlj
dGlvbmFyeSA9IFtdICgpIC0+IENGRGljdGlvbmFyeVJlZiB7CisgICAgICAgIHN0YXRpYyBDRlR5
cGVSZWYga2V5c1tdID0geyBrQ0dHcmFkaWVudEludGVycG9sYXRlc1ByZW11bHRpcGxpZWQgfTsK
KyAgICAgICAgc3RhdGljIENGVHlwZVJlZiB2YWx1ZXNbXSA9IHsga0NGQm9vbGVhblRydWUgfTsK
KyAgICAgICAgc3RhdGljIENGRGljdGlvbmFyeVJlZiBvcHRpb25zID0gQ0ZEaWN0aW9uYXJ5Q3Jl
YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtleXMsIHZhbHVlcywgV1RGX0FSUkFZX0xFTkdUSChr
ZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlW
YWx1ZUNhbGxCYWNrcyk7CisKKyAgICAgICAgcmV0dXJuIG9wdGlvbnM7CisgICAgfTsKKworICAg
YXV0byBncmFkaWVudE9wdGlvbnNEaWN0aW9uYXJ5ID0gWyZdIChhdXRvIGNvbG9ySW50ZXJwb2xh
dGlvbk1ldGhvZCkgLT4gQ0ZEaWN0aW9uYXJ5UmVmIHsKKyAgICAgICAgc3dpdGNoIChjb2xvcklu
dGVycG9sYXRpb25NZXRob2QuYWxwaGFQcmVtdWx0aXBsaWNhdGlvbikgeworICAgICAgICBjYXNl
IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZDoKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICBjYXNlIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11
bHRpcGxpZWQ6CisgICAgICAgICAgICByZXR1cm4gZ3JhZGllbnRJbnRlcnBvbGF0ZXNQcmVtdWx0
aXBsaWVkT3B0aW9uc0RpY3Rpb25hcnkoKTsKKyAgICAgICAgfQorICAgfTsKKyNlbHNlCisgICBh
dXRvIGdyYWRpZW50T3B0aW9uc0RpY3Rpb25hcnkgPSBbXSAoYXV0bykgLT4gQ0ZEaWN0aW9uYXJ5
UmVmIHsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICB9OworI2VuZGlmCisjZW5kaWYKKwor
ICAgIGF1dG8gaGFzT25seUJvdW5kZWRTUkdCQ29sb3JTdG9wcyA9IFtdIChjb25zdCBhdXRvJiBz
dG9wcykgeworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHN0b3AgOiBzdG9wcykgeworICAgICAg
ICAgICAgaWYgKHN0b3AuY29sb3IuY29sb3JTcGFjZSgpICE9IENvbG9yU3BhY2U6OlNSR0IpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH07CisKKyAgICBhdXRvIG51bWJlck9mU3RvcHMgPSBzdG9wcy5zaXplKCk7CisK
KyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gcmVzZXJ2ZWRTdG9wcyA9IDM7CisgICAgVmVjdG9y
PENHRmxvYXQsIHJlc2VydmVkU3RvcHM+IGxvY2F0aW9uczsKKyAgICBsb2NhdGlvbnMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShudW1iZXJPZlN0b3BzKTsKKworICAgIFZlY3RvcjxDR0Zsb2F0LCA0
ICogcmVzZXJ2ZWRTdG9wcz4gY29sb3JDb21wb25lbnRzOworICAgIGNvbG9yQ29tcG9uZW50cy5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KG51bWJlck9mU3RvcHMgKiA0KTsKKworICAgIGF1dG8gZ3Jh
ZGllbnRDb2xvclNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKKworICAgIC8vIEZJWE1FOiBO
b3cgdGhhdCB3ZSBvbmx5IGV2ZXIgdXNlIENHR3JhZGllbnRDcmVhdGVXaXRoQ29sb3JDb21wb25l
bnRzLCB3ZSBzaG91bGQgaW52ZXN0aWdhdGUKKyAgICAvLyBpZiB0aGVyZSBpcyBhbnkgcmVhbCBi
ZW5lZml0IHRvIHVzaW5nIHNSR0Igd2hlbiBhbGwgdGhlIHN0b3BzIGFyZSBib3VuZGVkIHZzIGp1
c3QgdXNpbmcKKyAgICAvLyBleHRlbmRlZCBzUkdCIGZvciBhbGwgZ3JhZGllbnRzLgorICAgIGlm
IChoYXNPbmx5Qm91bmRlZFNSR0JDb2xvclN0b3BzKHN0b3BzKSkgeworICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIHN0b3AgOiBzdG9wcykgeworICAgICAgICAgICAgYXV0byBbY29sb3JTcGFjZSwg
Y29tcG9uZW50c10gPSBzdG9wLmNvbG9yLmNvbG9yU3BhY2VBbmRDb21wb25lbnRzKCk7CisgICAg
ICAgICAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IGNvbXBvbmVudHM7CisgICAgICAgICAgICBjb2xv
ckNvbXBvbmVudHMudW5jaGVja2VkQXBwZW5kKHIpOworICAgICAgICAgICAgY29sb3JDb21wb25l
bnRzLnVuY2hlY2tlZEFwcGVuZChnKTsKKyAgICAgICAgICAgIGNvbG9yQ29tcG9uZW50cy51bmNo
ZWNrZWRBcHBlbmQoYik7CisgICAgICAgICAgICBjb2xvckNvbXBvbmVudHMudW5jaGVja2VkQXBw
ZW5kKGEpOworCisgICAgICAgICAgICBsb2NhdGlvbnMudW5jaGVja2VkQXBwZW5kKHN0b3Aub2Zm
c2V0KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisjaWYgSEFWRShDT1JFX0dSQVBISUNTX0VY
VEVOREVEX1NSR0JfQ09MT1JfU1BBQ0UpCisgICAgICAgIGdyYWRpZW50Q29sb3JTcGFjZSA9IGV4
dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKTsKKyNlbmRpZgorCisgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgc3RvcCA6IHN0b3BzKSB7CisjaWYgSEFWRShDT1JFX0dSQVBISUNTX0VYVEVOREVEX1NS
R0JfQ09MT1JfU1BBQ0UpCisgICAgICAgICAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IHN0b3AuY29s
b3IudG9Db2xvclR5cGVMb3NzeTxFeHRlbmRlZFNSR0JBPGZsb2F0Pj4oKTsKKyNlbHNlCisgICAg
ICAgICAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IHN0b3AuY29sb3IudG9Db2xvclR5cGVMb3NzeTxT
UkdCQTxmbG9hdD4+KCk7CisjZW5kaWYKKyAgICAgICAgICAgIGNvbG9yQ29tcG9uZW50cy51bmNo
ZWNrZWRBcHBlbmQocik7CisgICAgICAgICAgICBjb2xvckNvbXBvbmVudHMudW5jaGVja2VkQXBw
ZW5kKGcpOworICAgICAgICAgICAgY29sb3JDb21wb25lbnRzLnVuY2hlY2tlZEFwcGVuZChiKTsK
KyAgICAgICAgICAgIGNvbG9yQ29tcG9uZW50cy51bmNoZWNrZWRBcHBlbmQoYSk7CisKKyAgICAg
ICAgICAgIGxvY2F0aW9ucy51bmNoZWNrZWRBcHBlbmQoc3RvcC5vZmZzZXQpOworICAgICAgICB9
CisgICAgfQorCisjaWYgSEFWRShDT1JFX0dSQVBISUNTX0dSQURJRU5UX0NSRUFURV9XSVRIX09Q
VElPTlMpCisgICAgcmV0dXJuIEdyYWRpZW50IHsgYWRvcHRDRihDR0dyYWRpZW50Q3JlYXRlV2l0
aENvbG9yQ29tcG9uZW50c0FuZE9wdGlvbnMoZ3JhZGllbnRDb2xvclNwYWNlLCBjb2xvckNvbXBv
bmVudHMuZGF0YSgpLCBsb2NhdGlvbnMuZGF0YSgpLCBudW1iZXJPZlN0b3BzLCBncmFkaWVudE9w
dGlvbnNEaWN0aW9uYXJ5KGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCkpKSB9OworI2Vsc2UKKyAg
ICByZXR1cm4gR3JhZGllbnQgeyBhZG9wdENGKENHR3JhZGllbnRDcmVhdGVXaXRoQ29sb3JDb21w
b25lbnRzKGdyYWRpZW50Q29sb3JTcGFjZSwgY29sb3JDb21wb25lbnRzLmRhdGEoKSwgbG9jYXRp
b25zLmRhdGEoKSwgbnVtYmVyT2ZTdG9wcykpIH07CisjZW5kaWYKK30KKworLy8gTUFSSzogLSBT
aGFkaW5nIHN0cmF0ZWd5LgorCit0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRlcnBvbGF0aW9uU3BhY2Us
IEFscGhhUHJlbXVsdGlwbGljYXRpb24gYWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4KK3N0YXRpYyB2
b2lkIHNoYWRpbmdGdW5jdGlvbih2b2lkKiBpbmZvLCBjb25zdCBDR0Zsb2F0KiBpbiwgQ0dGbG9h
dCogb3V0KQoreworICAgIHVzaW5nIEludGVycG9sYXRpb25TcGFjZUNvbG9yVHlwZSA9IHR5cGVu
YW1lIEludGVycG9sYXRpb25TcGFjZTo6Q29sb3JUeXBlOworI2lmIEhBVkUoQ09SRV9HUkFQSElD
U19FWFRFTkRFRF9TUkdCX0NPTE9SX1NQQUNFKQorICAgIHVzaW5nIE91dHB1dFNwYWNlQ29sb3JU
eXBlID0gRXh0ZW5kZWRTUkdCQTxmbG9hdD47CisjZWxzZQorICAgIHVzaW5nIE91dHB1dFNwYWNl
Q29sb3JUeXBlID0gU1JHQkE8ZmxvYXQ+OworI2VuZGlmCisKKyAgICBhdXRvKiBkYXRhID0gc3Rh
dGljX2Nhc3Q8R3JhZGllbnRDR1N0cmF0ZWd5OjpTaGFkaW5nOjpEYXRhKj4oaW5mbyk7CisKKyAg
ICAvLyBDb21wdXRlIGNvbG9yIGF0IG9mZnNldCAnaW5bMF0nIGFuZCBhc3NpZ24gdGhlIGNvbXBv
bmVudHMgdG8gb3V0WzAgLT4gM10uCisKKyAgICBmbG9hdCByZXF1ZXN0ZWRPZmZzZXQgPSBpblsw
XTsKKworICAgIC8vIDEuIEZpbmQgc3RvcHMgdGhhdCBib3VuZCB0aGUgcmVxdWVzdGVkIG9mZnNl
dC4KKyAgICBhdXRvIFtzdG9wMCwgc3RvcDFdID0gWyZdIHsKKyAgICAgICAgZm9yIChzaXplX3Qg
c3RvcCA9IDE7IHN0b3AgPCBkYXRhLT5zdG9wcygpLnNpemUoKTsgKytzdG9wKSB7CisgICAgICAg
ICAgICBpZiAocmVxdWVzdGVkT2Zmc2V0IDw9IGRhdGEtPnN0b3BzKClbc3RvcF0ub2Zmc2V0KQor
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6OnRpZShkYXRhLT5zdG9wcygpW3N0b3AgLSAxXSwg
ZGF0YS0+c3RvcHMoKVtzdG9wXSk7CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICB9KCk7CisKKyAgICAvLyAyLiBDb21wdXRlIHBlcmNlbnRhZ2Ug
b2Zmc2V0IGJldHdlZW4gdGhlIHR3byBzdG9wcy4KKyAgICBmbG9hdCBvZmZzZXQgPSAoc3RvcDEu
b2Zmc2V0ID09IHN0b3AwLm9mZnNldCkgPyAwLjBmIDogKHJlcXVlc3RlZE9mZnNldCAtIHN0b3Aw
Lm9mZnNldCkgLyAoc3RvcDEub2Zmc2V0IC0gc3RvcDAub2Zmc2V0KTsKKworICAgIC8vIDMuIElu
dGVycG9sYXRlIHRoZSB0d28gc3RvcHMnIGNvbG9ycyBieSB0aGUgY29tcHV0ZWQgb2Zmc2V0Lgor
ICAgIC8vIEZJWE1FOiBXZSBkb24ndCB3YW50IHRvIGR1ZSBodWUgZml4dXAgZm9yIGVhY2ggY2Fs
bCwgc28gd2Ugc2hvdWxkIGZpZ3VyZSBvdXQgaG93IHRvIHByZWNvbXB1dGUgdGhhdC4KKyAgICBh
dXRvIGludGVycG9sYXRlZENvbG9yID0gaW50ZXJwb2xhdGVDb2xvckNvbXBvbmVudHM8YWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbj4oCisgICAgICAgIHN0ZDo6Z2V0PEludGVycG9sYXRpb25TcGFjZT4o
ZGF0YS0+Y29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kKCkuY29sb3JTcGFjZSksCisgICAgICAgIG1h
a2VGcm9tQ29tcG9uZW50czxJbnRlcnBvbGF0aW9uU3BhY2VDb2xvclR5cGU+KHN0b3AwLmNvbG9y
Q29tcG9uZW50cyksIDEuMGYgLSBvZmZzZXQsCisgICAgICAgIG1ha2VGcm9tQ29tcG9uZW50czxJ
bnRlcnBvbGF0aW9uU3BhY2VDb2xvclR5cGU+KHN0b3AxLmNvbG9yQ29tcG9uZW50cyksIG9mZnNl
dCk7CisKKyAgICAvLyA0LiBDb252ZXJ0IHRvIHRoZSBvdXRwdXQgY29sb3Igc3BhY2UuCisgICAg
YXV0byBpbnRlcnBvbGF0ZWRDb2xvckNvbnZlcnRlZFRvT3V0cHV0U3BhY2UgPSBhc0NvbG9yQ29t
cG9uZW50cyhjb252ZXJ0Q29sb3I8T3V0cHV0U3BhY2VDb2xvclR5cGU+KGludGVycG9sYXRlZENv
bG9yKSk7CisKKyAgICAvLyA1LiBXcml0ZSBjb2xvciBjb21wb25lbnRzIHRvICdvdXQnIHBvaW50
ZXIuCisgICAgZm9yIChzaXplX3QgY29tcG9uZW50SW5kZXggPSAwOyBjb21wb25lbnRJbmRleCA8
IGludGVycG9sYXRlZENvbG9yQ29udmVydGVkVG9PdXRwdXRTcGFjZS5zaXplKCk7ICsrY29tcG9u
ZW50SW5kZXgpCisgICAgICAgIG91dFtjb21wb25lbnRJbmRleF0gPSBpbnRlcnBvbGF0ZWRDb2xv
ckNvbnZlcnRlZFRvT3V0cHV0U3BhY2VbY29tcG9uZW50SW5kZXhdOworfQorCitzdGF0aWMgQ29s
b3JDb21wb25lbnRzPGZsb2F0LCA0PiBjb252ZXJ0Q29sb3JUb0NvbG9ySW50ZXJwb2xhdGlvblNw
YWNlKGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIGNvbG9ySW50
ZXJwb2xhdGlvbk1ldGhvZCkKK3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihjb2xvckludGVy
cG9sYXRpb25NZXRob2QuY29sb3JTcGFjZSwKKyAgICAgICAgWyZdIChhdXRvJiBjb2xvclNwYWNl
KSAtPiBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IHsKKyAgICAgICAgICAgIHVzaW5nIENvbG9y
VHlwZSA9IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PGRlY2x0eXBlKGNvbG9yU3Bh
Y2UpPjo6Q29sb3JUeXBlOworICAgICAgICAgICAgcmV0dXJuIGFzQ29sb3JDb21wb25lbnRzKGNv
bG9yLnRlbXBsYXRlIHRvQ29sb3JUeXBlTG9zc3k8Q29sb3JUeXBlPigpKTsKKyAgICAgICAgfQor
ICAgICk7Cit9CisKK0dyYWRpZW50Q0dTdHJhdGVneTo6U3RyYXRlZ3kgR3JhZGllbnRDR1N0cmF0
ZWd5OjptYWtlU2hhZGluZyhDb2xvckludGVycG9sYXRpb25NZXRob2QgY29sb3JJbnRlcnBvbGF0
aW9uTWV0aG9kLCBjb25zdCBHcmFkaWVudENvbG9yU3RvcFZlY3RvciYgc3RvcHMpIGNvbnN0Cit7
CisgICAgYXV0byBtYWtlRGF0YSA9IFsmXSAoYXV0byBjb2xvckludGVycG9sYXRpb25NZXRob2Qs
IGF1dG8mIHN0b3BzKSB7CisgICAgICAgIGF1dG8gdG90YWxOdW1iZXJPZlN0b3BzID0gc3RvcHMu
c2l6ZSgpOworICAgICAgICBib29sIGhhc1plcm8gPSBmYWxzZTsKKyAgICAgICAgYm9vbCBoYXNP
bmUgPSBmYWxzZTsKKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHN0b3AgOiBzdG9wcykgewor
ICAgICAgICAgICAgYXV0byBvZmZzZXQgPSBzdG9wLm9mZnNldDsKKyAgICAgICAgICAgIEFTU0VS
VChvZmZzZXQgPj0gMCk7CisgICAgICAgICAgICBBU1NFUlQob2Zmc2V0IDw9IDEpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBpZiAob2Zmc2V0ID09IDApCisgICAgICAgICAgICAgICAgaGFz
WmVybyA9IHRydWU7CisgICAgICAgICAgICBlbHNlIGlmIChvZmZzZXQgPT0gMSkKKyAgICAgICAg
ICAgICAgICBoYXNPbmUgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFoYXNaZXJv
KQorICAgICAgICAgICAgdG90YWxOdW1iZXJPZlN0b3BzKys7CisgICAgICAgIGlmICghaGFzT25l
KQorICAgICAgICAgICAgdG90YWxOdW1iZXJPZlN0b3BzKys7CisKKyAgICAgICAgVmVjdG9yPENv
bG9yQ29udmVydGVkVG9JbnRlcnBvbGF0aW9uQ29sb3JTcGFjZVN0b3A+IGNvbnZlcnRlZFN0b3Bz
OworICAgICAgICBjb252ZXJ0ZWRTdG9wcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHRvdGFsTnVt
YmVyT2ZTdG9wcyk7CisKKyAgICAgICAgaWYgKCFoYXNaZXJvKQorICAgICAgICAgICAgY29udmVy
dGVkU3RvcHMudW5jaGVja2VkQXBwZW5kKHsgMC4wZiwgeyAwLjBmLCAwLjBmLCAwLjBmLCAwLjBm
IH0gfSk7CisKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzdG9wIDogc3RvcHMpCisgICAgICAg
ICAgICBjb252ZXJ0ZWRTdG9wcy51bmNoZWNrZWRBcHBlbmQoeyBzdG9wLm9mZnNldCwgY29udmVy
dENvbG9yVG9Db2xvckludGVycG9sYXRpb25TcGFjZShzdG9wLmNvbG9yLCBjb2xvckludGVycG9s
YXRpb25NZXRob2QpIH0pOworCisgICAgICAgIGlmICghaGFzT25lKQorICAgICAgICAgICAgY29u
dmVydGVkU3RvcHMudW5jaGVja2VkQXBwZW5kKHsgMS4wZiwgY29udmVydGVkU3RvcHMubGFzdCgp
LmNvbG9yQ29tcG9uZW50cyB9KTsKKworICAgICAgICBpZiAoIWhhc1plcm8pCisgICAgICAgICAg
ICBjb252ZXJ0ZWRTdG9wc1swXS5jb2xvckNvbXBvbmVudHMgPSBjb252ZXJ0ZWRTdG9wc1sxXS5j
b2xvckNvbXBvbmVudHM7CisKKyAgICAgICAgcmV0dXJuIFNoYWRpbmc6OkRhdGE6OmNyZWF0ZShj
b2xvckludGVycG9sYXRpb25NZXRob2QsIFdURk1vdmUoY29udmVydGVkU3RvcHMpKTsKKyAgICB9
OworCisgICAgYXV0byBtYWtlRnVuY3Rpb24gPSBbJl0gKGF1dG8gY29sb3JJbnRlcnBvbGF0aW9u
TWV0aG9kLCBhdXRvJiBkYXRhKSB7CisgICAgICAgIGF1dG8gbWFrZUV2YWx1YXRlQ2FsbGJhY2sg
PSBbJl0gKGF1dG8gY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kKSAtPiBDR0Z1bmN0aW9uRXZhbHVh
dGVDYWxsYmFjayB7CisgICAgICAgICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihjb2xvckludGVy
cG9sYXRpb25NZXRob2QuY29sb3JTcGFjZSwKKyAgICAgICAgICAgICAgICBbJl0gKGF1dG8mIC8q
Y29sb3JTcGFjZSovKSAgLT4gQ0dGdW5jdGlvbkV2YWx1YXRlQ2FsbGJhY2sgeworICAgICAgICAg
ICAgICAgICAgICBzd2l0Y2ggKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5hbHBoYVByZW11bHRp
cGxpY2F0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbjo6VW5wcmVtdWx0aXBsaWVkOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICZz
aGFkaW5nRnVuY3Rpb248Q29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCLCBBbHBoYVByZW11
bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQ+OworICAgICAgICAgICAgICAgICAgICBjYXNl
IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQ6CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gJnNoYWRpbmdGdW5jdGlvbjxDb2xvckludGVycG9sYXRpb25NZXRob2Q6
OlNSR0IsIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQ+OworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKTsKKyAgICAgICAg
fTsKKworICAgICAgICBjb25zdCBDR0Z1bmN0aW9uQ2FsbGJhY2tzIGNhbGxiYWNrcyA9IHsKKyAg
ICAgICAgICAgIDAsCisgICAgICAgICAgICBtYWtlRXZhbHVhdGVDYWxsYmFjayhjb2xvckludGVy
cG9sYXRpb25NZXRob2QpLAorICAgICAgICAgICAgW10gKHZvaWQqIGluZm8pIHsKKyAgICAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxHcmFkaWVudENHU3RyYXRlZ3k6OlNoYWRpbmc6OkRhdGEqPihp
bmZvKS0+ZGVyZWYoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBzdGF0
aWMgY29uc3QgQ0dGbG9hdCBkb21haW5bMl0gPSB7IDAsIDEgfTsKKyAgICAgICAgLy8gRklYTUU6
IFdoZW4gdGhlIGlucHV0IGlzIGJvdW5kZWQgc1JHQiBhbmQgd2UgYXJlIHVzaW5nIHRoZSBTUkJH
IGludGVycG9sYXRpb24gbWV0aG9kLCBpdCBtaWdodCBtYWtlIG1vcmUgc2Vuc2UgdG8gaGF2ZSB0
aGUgcmFuZ2UgYmUgeyAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxIH0KKyAgICAgICAgc3RhdGljIGNv
bnN0IENHRmxvYXQgcmFuZ2VbOF0gPSB7IC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5m
aW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIC1zdGQ6Om51
bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9h
dD46OmluZmluaXR5KCksIC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwg
c3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIDAsIDEgfTsKKyAgICAgICAg
CisgICAgICAgIFJlZiBkYXRhUmVmQ29weSA9IGRhdGE7CisgICAgICAgIHJldHVybiBhZG9wdENG
KENHRnVuY3Rpb25DcmVhdGUoJmRhdGFSZWZDb3B5LmxlYWtSZWYoKSwgMSwgZG9tYWluLCA0LCBy
YW5nZSwgJmNhbGxiYWNrcykpOworICAgIH07CisKKyAgICBhdXRvIGRhdGEgPSBtYWtlRGF0YShj
b2xvckludGVycG9sYXRpb25NZXRob2QsIHN0b3BzKTsKKyAgICBhdXRvIGZ1bmN0aW9uID0gbWFr
ZUZ1bmN0aW9uKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCwgZGF0YSk7CisKKyAgICAvLyBGSVhN
RTogSW52ZXN0aWdhdGUgdXNpbmcgYm91bmRlZCBzUkdCIHdoZW4gdGhlIGlucHV0IHN0b3BzIGFy
ZSBhbGwgYm91bmRlZCBzUkdCLgorI2lmIEhBVkUoQ09SRV9HUkFQSElDU19FWFRFTkRFRF9TUkdC
X0NPTE9SX1NQQUNFKQorICAgIGF1dG8gY29sb3JTcGFjZSA9IGV4dGVuZGVkU1JHQkNvbG9yU3Bh
Y2VSZWYoKTsKKyNlbHNlCisgICAgYXV0byBjb2xvclNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYo
KTsKKyNlbmRpZgorCisgICAgcmV0dXJuIFNoYWRpbmcgeyBXVEZNb3ZlKGRhdGEpLCBXVEZNb3Zl
KGZ1bmN0aW9uKSwgY29sb3JTcGFjZSB9OworfQorCisvLyBNQVJLOiAtIERyYXdpbmcgZnVuY3Rp
b25zLgorCit2b2lkIEdyYWRpZW50Q0dTdHJhdGVneTo6ZHJhd0xpbmVhckdyYWRpZW50KENHQ29u
dGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQsIENHUG9pbnQgc3RhcnRQb2ludCwgQ0dQb2ludCBlbmRQ
b2ludCwgQ0dHcmFkaWVudERyYXdpbmdPcHRpb25zIG9wdGlvbnMpCit7CisgICAgV1RGOjpzd2l0
Y2hPbihtX3N0cmF0ZWd5LAorICAgICAgICBbJl0gKEdyYWRpZW50JiBncmFkaWVudCkgeworICAg
ICAgICAgICAgQ0dDb250ZXh0RHJhd0xpbmVhckdyYWRpZW50KHBsYXRmb3JtQ29udGV4dCwgZ3Jh
ZGllbnQuZ3JhZGllbnQuZ2V0KCksIHN0YXJ0UG9pbnQsIGVuZFBvaW50LCBvcHRpb25zKTsKKyAg
ICAgICAgfSwKKyAgICAgICAgWyZdIChTaGFkaW5nJiBzaGFkaW5nKSB7CisgICAgICAgICAgICBi
b29sIHN0YXJ0RXh0ZW5kID0gKG9wdGlvbnMgJiBrQ0dHcmFkaWVudERyYXdzQmVmb3JlU3RhcnRM
b2NhdGlvbikgIT0gMDsKKyAgICAgICAgICAgIGJvb2wgZW5kRXh0ZW5kID0gKG9wdGlvbnMgJiBr
Q0dHcmFkaWVudERyYXdzQWZ0ZXJFbmRMb2NhdGlvbikgIT0gMDsKKworICAgICAgICAgICAgQ0dD
b250ZXh0RHJhd1NoYWRpbmcocGxhdGZvcm1Db250ZXh0LCBhZG9wdENGKENHU2hhZGluZ0NyZWF0
ZUF4aWFsKHNoYWRpbmcuY29sb3JTcGFjZS5nZXQoKSwgc3RhcnRQb2ludCwgZW5kUG9pbnQsIHNo
YWRpbmcuZnVuY3Rpb24uZ2V0KCksIHN0YXJ0RXh0ZW5kLCBlbmRFeHRlbmQpKS5nZXQoKSk7Cisg
ICAgICAgIH0KKyAgICApOworfQorCit2b2lkIEdyYWRpZW50Q0dTdHJhdGVneTo6ZHJhd1JhZGlh
bEdyYWRpZW50KENHQ29udGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQsIENHUG9pbnQgc3RhcnRDZW50
ZXIsIENHRmxvYXQgc3RhcnRSYWRpdXMsIENHUG9pbnQgZW5kQ2VudGVyLCBDR0Zsb2F0IGVuZFJh
ZGl1cywgQ0dHcmFkaWVudERyYXdpbmdPcHRpb25zIG9wdGlvbnMpCit7CisgICAgV1RGOjpzd2l0
Y2hPbihtX3N0cmF0ZWd5LAorICAgICAgICBbJl0gKEdyYWRpZW50JiBncmFkaWVudCkgeworICAg
ICAgICAgICAgQ0dDb250ZXh0RHJhd1JhZGlhbEdyYWRpZW50KHBsYXRmb3JtQ29udGV4dCwgZ3Jh
ZGllbnQuZ3JhZGllbnQuZ2V0KCksIHN0YXJ0Q2VudGVyLCBzdGFydFJhZGl1cywgZW5kQ2VudGVy
LCBlbmRSYWRpdXMsIG9wdGlvbnMpOworICAgICAgICB9LAorICAgICAgICBbJl0gKFNoYWRpbmcm
IHNoYWRpbmcpIHsKKyAgICAgICAgICAgIGJvb2wgc3RhcnRFeHRlbmQgPSAob3B0aW9ucyAmIGtD
R0dyYWRpZW50RHJhd3NCZWZvcmVTdGFydExvY2F0aW9uKSAhPSAwOworICAgICAgICAgICAgYm9v
bCBlbmRFeHRlbmQgPSAob3B0aW9ucyAmIGtDR0dyYWRpZW50RHJhd3NBZnRlckVuZExvY2F0aW9u
KSAhPSAwOworCisgICAgICAgICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhwbGF0Zm9ybUNvbnRl
eHQsIGFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlUmFkaWFsKHNoYWRpbmcuY29sb3JTcGFjZS5nZXQo
KSwgc3RhcnRDZW50ZXIsIHN0YXJ0UmFkaXVzLCBlbmRDZW50ZXIsIGVuZFJhZGl1cywgc2hhZGlu
Zy5mdW5jdGlvbi5nZXQoKSwgc3RhcnRFeHRlbmQsIGVuZEV4dGVuZCkpLmdldCgpKTsKKyAgICAg
ICAgfQorICAgICk7Cit9CisKK3ZvaWQgR3JhZGllbnRDR1N0cmF0ZWd5OjpkcmF3Q29uaWNHcmFk
aWVudChDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250ZXh0LCBDR1BvaW50IGNlbnRlciwgQ0dGbG9h
dCBhbmdsZSkKK3sKKy8vIEZJWE1FOiBTZWVtcyBsaWtlIHRoaXMgc2hvdWxkIGJlIEhBVkUoQ0df
Q09OVEVYVF9EUkFXX0NPTklDX0dSQURJRU5UKS4KKy8vIEZJWE1FOiBDYW4gd2UgY2hhbmdlIHR2
T1MgdG8gYmUgbGlrZSB0aGUgb3RoZXIgQ29jb2EgcGxhdGZvcm1zPworI2lmIFBMQVRGT1JNKENP
Q09BKSAmJiAhUExBVEZPUk0oQVBQTEVUVikKKyAgICBXVEY6OnN3aXRjaE9uKG1fc3RyYXRlZ3ks
CisgICAgICAgIFsmXSAoR3JhZGllbnQmIGdyYWRpZW50KSB7CisgICAgICAgICAgICBDR0NvbnRl
eHREcmF3Q29uaWNHcmFkaWVudChwbGF0Zm9ybUNvbnRleHQsIGdyYWRpZW50LmdyYWRpZW50Lmdl
dCgpLCBjZW50ZXIsIGFuZ2xlKTsKKyAgICAgICAgfSwKKyAgICAgICAgWyZdIChTaGFkaW5nJiBz
aGFkaW5nKSB7CisgICAgICAgICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhwbGF0Zm9ybUNvbnRl
eHQsIGFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlQ29uaWMoc2hhZGluZy5jb2xvclNwYWNlLmdldCgp
LCBjZW50ZXIsIGFuZ2xlLCBzaGFkaW5nLmZ1bmN0aW9uLmdldCgpKSkuZ2V0KCkpOworICAgICAg
ICB9CisgICAgKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHBsYXRmb3JtQ29udGV4dCk7Cisg
ICAgVU5VU0VEX1BBUkFNKGNlbnRlcik7CisgICAgVU5VU0VEX1BBUkFNKGFuZ2xlKTsKKyNlbmRp
ZgorfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFk
aWVudENHU3RyYXRlZ3kuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFkaWVudENHU3RyYXRlZ3kuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENHU3RyYXRlZ3kuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkNvbG9yQ29tcG9uZW50cy5oIgorI2luY2x1ZGUgIkNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5o
IgorI2luY2x1ZGUgIkdyYWRpZW50Q29sb3JTdG9wLmgiCisjaW5jbHVkZSA8Q29yZUdyYXBoaWNz
L0NvcmVHcmFwaGljcy5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3
dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IENvbG9yQ29udmVydGVkVG9JbnRlcnBvbGF0aW9u
Q29sb3JTcGFjZVN0b3AgeworICAgIGZsb2F0IG9mZnNldDsKKyAgICBDb2xvckNvbXBvbmVudHM8
ZmxvYXQsIDQ+IGNvbG9yQ29tcG9uZW50czsKK307CisKK2NsYXNzIEdyYWRpZW50Q0dTdHJhdGVn
eSB7CitwdWJsaWM6CisgICAgR3JhZGllbnRDR1N0cmF0ZWd5KENvbG9ySW50ZXJwb2xhdGlvbk1l
dGhvZCwgY29uc3QgR3JhZGllbnRDb2xvclN0b3BWZWN0b3ImKTsKKworICAgIHZvaWQgZHJhd0xp
bmVhckdyYWRpZW50KENHQ29udGV4dFJlZiwgQ0dQb2ludCBzdGFydFBvaW50LCBDR1BvaW50IGVu
ZFBvaW50LCBDR0dyYWRpZW50RHJhd2luZ09wdGlvbnMpOworICAgIHZvaWQgZHJhd1JhZGlhbEdy
YWRpZW50KENHQ29udGV4dFJlZiwgQ0dQb2ludCBzdGFydENlbnRlciwgQ0dGbG9hdCBzdGFydFJh
ZGl1cywgQ0dQb2ludCBlbmRDZW50ZXIsIENHRmxvYXQgZW5kUmFkaXVzLCBDR0dyYWRpZW50RHJh
d2luZ09wdGlvbnMpOworICAgIHZvaWQgZHJhd0NvbmljR3JhZGllbnQoQ0dDb250ZXh0UmVmLCBD
R1BvaW50IGNlbnRlciwgQ0dGbG9hdCBhbmdsZSk7CisKKyAgICBzdHJ1Y3QgR3JhZGllbnQgewor
ICAgICAgICBSZXRhaW5QdHI8Q0dHcmFkaWVudFJlZj4gZ3JhZGllbnQ7CisgICAgfTsKKworICAg
IHN0cnVjdCBTaGFkaW5nIHsKKyAgICAgICAgY2xhc3MgRGF0YSA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxEYXRhPiB7CisgICAgICAgIHB1YmxpYzoKKyAgICAgICAgICAgIHN0YXRpYyBS
ZWY8RGF0YT4gY3JlYXRlKENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBjb2xvckludGVycG9sYXRp
b25NZXRob2QsIFZlY3RvcjxDb2xvckNvbnZlcnRlZFRvSW50ZXJwb2xhdGlvbkNvbG9yU3BhY2VT
dG9wPiBzdG9wcykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBEYXRhKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCwgV1RGTW92ZShzdG9wcykpKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIGNv
bG9ySW50ZXJwb2xhdGlvbk1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JJbnRlcnBvbGF0
aW9uTWV0aG9kOyB9CisgICAgICAgICAgICBjb25zdCBWZWN0b3I8Q29sb3JDb252ZXJ0ZWRUb0lu
dGVycG9sYXRpb25Db2xvclNwYWNlU3RvcD4mIHN0b3BzKCkgY29uc3QgeyByZXR1cm4gbV9zdG9w
czsgfQorCisgICAgICAgIHByaXZhdGU6CisgICAgICAgICAgICBEYXRhKENvbG9ySW50ZXJwb2xh
dGlvbk1ldGhvZCBjb2xvckludGVycG9sYXRpb25NZXRob2QsIFZlY3RvcjxDb2xvckNvbnZlcnRl
ZFRvSW50ZXJwb2xhdGlvbkNvbG9yU3BhY2VTdG9wPiBzdG9wcykKKyAgICAgICAgICAgICAgICA6
IG1fY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIHsgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIH0K
KyAgICAgICAgICAgICAgICAsIG1fc3RvcHMgeyBXVEZNb3ZlKHN0b3BzKSB9CisgICAgICAgICAg
ICB7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIENvbG9ySW50ZXJwb2xhdGlvbk1ldGhv
ZCBtX2NvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDsKKyAgICAgICAgICAgIFZlY3RvcjxDb2xvckNv
bnZlcnRlZFRvSW50ZXJwb2xhdGlvbkNvbG9yU3BhY2VTdG9wPiBtX3N0b3BzOworICAgICAgICB9
OworCisgICAgICAgIFJlZjxEYXRhPiBkYXRhOworICAgICAgICBSZXRhaW5QdHI8Q0dGdW5jdGlv
blJlZj4gZnVuY3Rpb247CisgICAgICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbG9y
U3BhY2U7CisgICAgfTsKKworICAgIHVzaW5nIFN0cmF0ZWd5ID0gc3RkOjp2YXJpYW50PEdyYWRp
ZW50LCBTaGFkaW5nPjsKKworcHJpdmF0ZToKKyAgICBTdHJhdGVneSBwaWNrU3RyYXRlZ3koQ29s
b3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb25zdCBHcmFkaWVudENvbG9yU3RvcFZlY3RvciYpIGNv
bnN0OworICAgIFN0cmF0ZWd5IG1ha2VHcmFkaWVudChDb2xvckludGVycG9sYXRpb25NZXRob2Qs
IGNvbnN0IEdyYWRpZW50Q29sb3JTdG9wVmVjdG9yJikgY29uc3Q7CisgICAgU3RyYXRlZ3kgbWFr
ZVNoYWRpbmcoQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb25zdCBHcmFkaWVudENvbG9yU3Rv
cFZlY3RvciYpIGNvbnN0OworCisgICAgU3RyYXRlZ3kgbV9zdHJhdGVneTsKK307CisKK30KSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDI4NzIzMykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDIxLTEyLTIwICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgQ0dTaGFkaW5nUmVmIGJhc2VkIGltcGxlbWVudGF0
aW9uIG9mIEdyYWRpZW50IGFzIHN0ZXBwaW5nIHN0b25lIHRvd2FyZCBwcmVtdWx0aXBsaWVkIGlu
dGVycG9sYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNDQ5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBhbmQgdXBkYXRlIHRlc3RzIGZvciBncmFkaWVudHMgd2l0aCBhbHBoYSBub3cgdGhh
dCB3ZSBoYXZlIHN1cHBvcnQgZm9yIHByZW11bHRpcGxpZWQgaW50ZXJwb2xhdGlvbi4KKyAgICAg
ICAgQnkgZGVmYXVsdCwgdGhlIHRlc3RzIG5vdyBlbmFibGUgcHJlbXVsdGlwbGllZCBpbnRlcnBv
bGF0aW9uIChzaW5jZSBpdCBpcyBhbiBleHBlcmltZW50YWwgZmVhdHVyZSkgc28KKyAgICAgICAg
dG8gY29udGludWUgdGVzdGluZyB0aGUgb2xkIHBhdGgsIHRoZSBzZXR0aW5nIG11c3QgYmUgZXhw
bGljaXRseSBkaXNhYmxlZC4KKworICAgICAgICAqIGZhc3QvZ3JhZGllbnRzL2FscGhhLXByZW11
bHRpcGxpZWQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9ncmFkaWVudHMv
YWxwaGEtcHJlbXVsdGlwbGllZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2dyYWRpZW50
cy9jb25pYy1ncmFkaWVudC1hbHBoYS1leHBlY3RlZC5odG1sOgorICAgICAgICAqIGZhc3QvZ3Jh
ZGllbnRzL2NvbmljLWdyYWRpZW50LWFscGhhLXVucHJlbXVsdGlwbGllZC1leHBlY3RlZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2dyYWRpZW50cy9jb25pYy1ncmFkaWVudC1hbHBoYS11
bnByZW11bHRpcGxpZWQuaHRtbDogQWRkZWQuCisKIDIwMjEtMTItMTcgIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVhZCB0aGUgZGVmYXVsdCB2YWx1
ZSBvZiB0aGUgU2Nyb2xsQW5pbWF0b3JFbmFibGVkIHNldHRpbmcgZnJvbSBOU1VzZXJEZWZhdWx0
cwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVudHMvYWxwaGEtcHJlbXVsdGlwbGllZC1l
eHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZ3JhZGllbnRzL2Fs
cGhhLXByZW11bHRpcGxpZWQtZXhwZWN0ZWQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2dyYWRpZW50cy9hbHBoYS1wcmVtdWx0aXBsaWVkLWV4cGVjdGVkLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHN0eWxlPgorICAgIGRpdiB7IAorICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAg
IGhlaWdodDogMTAwcHg7CisgICAgfQorCisgICAgI2xpbmVhciB7CisgICAgICAgIGJhY2tncm91
bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0cmFuc3BhcmVudCwgcmdiKDAsIDAsIDI1NSkpOwor
ICAgIH0KKworICAgICNsaW5lYXItcmVwZWF0aW5nIHsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFn
ZTogcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh0cmFuc3BhcmVudCwgcmdiKDAsIDAsIDI1NSkg
MjVweCk7CisgICAgfQorCisgICAgI3JhZGlhbCB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6
IHJhZGlhbC1ncmFkaWVudCh0cmFuc3BhcmVudCwgcmdiKDAsIDAsIDI1NSkpOworICAgIH0KKwor
ICAgICNyYWRpYWwtcmVwZWF0aW5nIHsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogcmVwZWF0
aW5nLXJhZGlhbC1ncmFkaWVudCh0cmFuc3BhcmVudCwgcmdiKDAsIDAsIDI1NSkgMjVweCk7Cisg
ICAgfQorCisgICAgI2NvbmljIHsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogY29uaWMtZ3Jh
ZGllbnQodHJhbnNwYXJlbnQsIHJnYigwLCAwLCAyNTUpKTsKKyAgICB9CisKKyAgICAjY29uaWMt
cmVwZWF0aW5nIHsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogcmVwZWF0aW5nLWNvbmljLWdy
YWRpZW50KHRyYW5zcGFyZW50LCByZ2IoMCwgMCwgMjU1KSAzMGRlZyk7CisgICAgfQorICAgIAor
PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ibGluZWFyIj48L2Rpdj4KKzxkaXYg
aWQ9ImxpbmVhci1yZXBlYXRpbmciPjwvZGl2PgorPGRpdiBpZD0icmFkaWFsIj48L2Rpdj4KKzxk
aXYgaWQ9InJhZGlhbC1yZXBlYXRpbmciPjwvZGl2PgorPGRpdiBpZD0iY29uaWMiPjwvZGl2Pgor
PGRpdiBpZD0iY29uaWMtcmVwZWF0aW5nIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZ3JhZGllbnRzL2FscGhhLXByZW11bHRpcGxpZWQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2dyYWRpZW50cy9hbHBoYS1wcmVtdWx0aXBsaWVk
Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVudHMvYWxwaGEt
cHJlbXVsdGlwbGllZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKyAgICBkaXYgeyAKKyAgICAgICAg
d2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgIH0KKworICAgICNsaW5l
YXIgeworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgyNTUs
IDAsIDI1NSwgMCksIHJnYigwLCAwLCAyNTUpKTsKKyAgICB9CisKKyAgICAjbGluZWFyLXJlcGVh
dGluZyB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHJlcGVhdGluZy1saW5lYXItZ3JhZGll
bnQocmdiYSgyNTUsIDAsIDI1NSwgMCksIHJnYigwLCAwLCAyNTUpIDI1cHgpOworICAgIH0KKwor
ICAgICNyYWRpYWwgeworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiByYWRpYWwtZ3JhZGllbnQo
cmdiYSgyNTUsIDAsIDI1NSwgMCksIHJnYigwLCAwLCAyNTUpKTsKKyAgICB9CisKKyAgICAjcmFk
aWFsLXJlcGVhdGluZyB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHJlcGVhdGluZy1yYWRp
YWwtZ3JhZGllbnQocmdiYSgyNTUsIDAsIDI1NSwgMCksIHJnYigwLCAwLCAyNTUpIDI1cHgpOwor
ICAgIH0KKworICAgICNjb25pYyB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGNvbmljLWdy
YWRpZW50KHJnYmEoMjU1LCAwLCAyNTUsIDApLCByZ2IoMCwgMCwgMjU1KSk7CisgICAgfQorCisg
ICAgI2NvbmljLXJlcGVhdGluZyB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHJlcGVhdGlu
Zy1jb25pYy1ncmFkaWVudChyZ2JhKDI1NSwgMCwgMjU1LCAwKSwgcmdiKDAsIDAsIDI1NSkgMzBk
ZWcpOworICAgIH0KKyAgICAKKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9Imxp
bmVhciI+PC9kaXY+Cis8ZGl2IGlkPSJsaW5lYXItcmVwZWF0aW5nIj48L2Rpdj4KKzxkaXYgaWQ9
InJhZGlhbCI+PC9kaXY+Cis8ZGl2IGlkPSJyYWRpYWwtcmVwZWF0aW5nIj48L2Rpdj4KKzxkaXYg
aWQ9ImNvbmljIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbmljLXJlcGVhdGluZyI+PC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2dyYWRpZW50cy9jb25pYy1ncmFk
aWVudC1hbHBoYS1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Z3JhZGllbnRzL2NvbmljLWdyYWRpZW50LWFscGhhLWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDI4
NzIzMykKKysrIExheW91dFRlc3RzL2Zhc3QvZ3JhZGllbnRzL2NvbmljLWdyYWRpZW50LWFscGhh
LWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDI3ICsxMCwyNyBAQAogICAgICAg
ICAjdG9wbGVmdCB7CiAgICAgICAgICAgICB3aWR0aDogMDsgCiAgICAgICAgICAgICBoZWlnaHQ6
IDA7IAotICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDEwMHB4IHNvbGlkIHJnYig2NCw4Nyw2NCk7
CisgICAgICAgICAgICBib3JkZXItbGVmdDogMTAwcHggc29saWQgcmdiKDY0LDY0LDY0KTsKICAg
ICAgICAgICAgIGJvcmRlci10b3A6IDEwMHB4IHNvbGlkIHJnYigzMiwzMiwzMik7CiAgICAgICAg
IH0KICAgICAgICAgI3RvcHJpZ2h0IHsKICAgICAgICAgICAgIHdpZHRoOiAwOyAKICAgICAgICAg
ICAgIGhlaWdodDogMDsgCi0gICAgICAgICAgICBib3JkZXItcmlnaHQ6IDEwMHB4IHNvbGlkIHJn
YigyMjUsMjQ2LDIyNSk7Ci0gICAgICAgICAgICBib3JkZXItdG9wOiAxMDBweCBzb2xpZCByZ2Io
MjU0LDI1NCwyNTQpOworICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxMDBweCBzb2xpZCByZ2Io
MjI0LDIyNCwyMjQpOworICAgICAgICAgICAgYm9yZGVyLXRvcDogMTAwcHggc29saWQgcmdiKDI1
NSwyNTUsMjU1KTsKICAgICAgICAgfQogICAgICAgICAjYm90dG9tbGVmdCB7CiAgICAgICAgICAg
ICBjbGVhcjogbGVmdDsKICAgICAgICAgICAgIHdpZHRoOiAwOyAKICAgICAgICAgICAgIGhlaWdo
dDogMDsgCi0gICAgICAgICAgICBib3JkZXItbGVmdDogMTAwcHggc29saWQgcmdiKDk2LDEzNSw5
Nik7Ci0gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxMDBweCBzb2xpZCByZ2IoMTI4LDE3NSwx
MjgpOworICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDEwMHB4IHNvbGlkIHJnYig5Niw5Niw5Nik7
CisgICAgICAgICAgICBib3JkZXItYm90dG9tOiAxMDBweCBzb2xpZCByZ2IoMTI4LDEyOCwxMjgp
OwogICAgICAgICB9CiAgICAgICAgICNib3R0b21yaWdodCB7CiAgICAgICAgICAgICB3aWR0aDog
MDsgCiAgICAgICAgICAgICBoZWlnaHQ6IDA7IAotICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAx
MDBweCBzb2xpZCByZ2IoMTkzLDIzMSwxOTMpOwotICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTog
MTAwcHggc29saWQgcmdiKDE2MCwyMDcsMTYwKTsKKyAgICAgICAgICAgIGJvcmRlci1yaWdodDog
MTAwcHggc29saWQgcmdiKDE5MiwxOTIsMTkyKTsKKyAgICAgICAgICAgIGJvcmRlci1ib3R0b206
IDEwMHB4IHNvbGlkIHJnYigxNjAsMTYwLDE2MCk7CiAgICAgICAgIH0KICAgICAgICAgLmJveCB7
CiAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2dyYWRpZW50cy9jb25pYy1ncmFkaWVudC1hbHBoYS11bnByZW11bHRpcGxpZWQtZXhwZWN0ZWQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2dyYWRpZW50cy9jb25pYy1ncmFk
aWVudC1hbHBoYS11bnByZW11bHRpcGxpZWQtZXhwZWN0ZWQuaHRtbAkobm9uZXhpc3RlbnQpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2dyYWRpZW50cy9jb25pYy1ncmFkaWVudC1hbHBoYS11bnByZW11
bHRpcGxpZWQtZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY3IEBACis8
aHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIENTU0dyYWRpZW50QWxwaGFQcmVtdWx0aXBs
aWVkSW50ZXJwb2xhdGlvbkVuYWJsZWQ9ZmFsc2UgXSAtLT4KKzxoZWFkPgorICAgIDxzdHlsZT4K
KyAgICAgICAgZGl2IHsKKyAgICAgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgICAgIGhl
aWdodDogMjAwcHg7CisgICAgICAgICAgICBmbG9hdDogbGVmdDsKKyAgICAgICAgfQorICAgICAg
ICAvKnR3ZWFrIHRoaXMgdW50aWwgaXQncyBhY3R1YWxseSByaWdodC4uLiAqLworICAgICAgICAj
dG9wbGVmdCB7CisgICAgICAgICAgICB3aWR0aDogMDsgCisgICAgICAgICAgICBoZWlnaHQ6IDA7
IAorICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDEwMHB4IHNvbGlkIHJnYig2NCw4Nyw2NCk7Cisg
ICAgICAgICAgICBib3JkZXItdG9wOiAxMDBweCBzb2xpZCByZ2IoMzIsMzIsMzIpOworICAgICAg
ICB9CisgICAgICAgICN0b3ByaWdodCB7CisgICAgICAgICAgICB3aWR0aDogMDsgCisgICAgICAg
ICAgICBoZWlnaHQ6IDA7IAorICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxMDBweCBzb2xpZCBy
Z2IoMjI1LDI0NiwyMjUpOworICAgICAgICAgICAgYm9yZGVyLXRvcDogMTAwcHggc29saWQgcmdi
KDI1NCwyNTQsMjU0KTsKKyAgICAgICAgfQorICAgICAgICAjYm90dG9tbGVmdCB7CisgICAgICAg
ICAgICBjbGVhcjogbGVmdDsKKyAgICAgICAgICAgIHdpZHRoOiAwOyAKKyAgICAgICAgICAgIGhl
aWdodDogMDsgCisgICAgICAgICAgICBib3JkZXItbGVmdDogMTAwcHggc29saWQgcmdiKDk2LDEz
NSw5Nik7CisgICAgICAgICAgICBib3JkZXItYm90dG9tOiAxMDBweCBzb2xpZCByZ2IoMTI4LDE3
NSwxMjgpOworICAgICAgICB9CisgICAgICAgICNib3R0b21yaWdodCB7CisgICAgICAgICAgICB3
aWR0aDogMDsgCisgICAgICAgICAgICBoZWlnaHQ6IDA7IAorICAgICAgICAgICAgYm9yZGVyLXJp
Z2h0OiAxMDBweCBzb2xpZCByZ2IoMTkzLDIzMSwxOTMpOworICAgICAgICAgICAgYm9yZGVyLWJv
dHRvbTogMTAwcHggc29saWQgcmdiKDE2MCwyMDcsMTYwKTsKKyAgICAgICAgfQorICAgICAgICAu
Ym94IHsKKyAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgfQorICAgICAg
ICAueCB7CisgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgICAgICAtd2Vi
a2l0LWNsaXAtcGF0aDogcG9seWdvbigwJSAwJSwgMCUgMTAlLCA0MCUgNTAlLCAwJSA5MCUsIDAl
IDEwMCUsIDEwJSAxMDAlLCA1MCUgNjAlLCA5MCUgMTAwJSwgMTAwJSAxMDAlLCAxMDAlIDkwJSwg
NjAlIDUwJSwgMTAwJSAxMCUsIDEwMCUgMCUsIDkwJSAwJSwgNTAlIDQwJSwgMTAlIDAlKTsKKyAg
ICAgICAgfQorICAgICAgICAjeCB7CisgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOndoaXRl
OworICAgICAgICB9CisgICAgICAgIC5wbHVzIHsKKyAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKKyAgICAgICAgICAgIC13ZWJraXQtY2xpcC1wYXRoOiBwb2x5Z29uKDQ1JSAwJSwgNTUl
IDAlLCA1NSUgNDUlLCAxMDAlIDQ1JSwgMTAwJSA1NSUsIDU1JSA1NSUsIDU1JSAxMDAlLCA0NSUg
MTAwJSwgNDUlIDU1JSwgMCUgNTUlLCAwJSA0NSUsIDQ1JSA0NSUpOworICAgICAgICB9CisgICAg
ICAgICNwbHVzIHsKKyAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6d2hpdGU7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXY+Cisg
ICAgICAgIDxkaXYgY2xhc3M9ImJveCI+CisgICAgICAgICAgICA8ZGl2IGlkPSJ0b3BsZWZ0Ij48
L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgaWQ9InRvcHJpZ2h0Ij48L2Rpdj4KKyAgICAgICAgICAg
IDxkaXYgaWQ9ImJvdHRvbWxlZnQiPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBpZD0iYm90dG9t
cmlnaHQiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdiBpZD0ieCIgY2xhc3M9
IngiPjwvZGl2PgorICAgICAgICA8ZGl2IGlkPSJwbHVzIiBjbGFzcz0icGx1cyI+PC9kaXY+Cisg
ICAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2dyYWRp
ZW50cy9jb25pYy1ncmFkaWVudC1hbHBoYS11bnByZW11bHRpcGxpZWQuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2dyYWRpZW50cy9jb25pYy1ncmFkaWVudC1hbHBoYS11bnBy
ZW11bHRpcGxpZWQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2dyYWRp
ZW50cy9jb25pYy1ncmFkaWVudC1hbHBoYS11bnByZW11bHRpcGxpZWQuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDU2IEBACis8aHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIENT
U0dyYWRpZW50QWxwaGFQcmVtdWx0aXBsaWVkSW50ZXJwb2xhdGlvbkVuYWJsZWQ9ZmFsc2UgXSAt
LT4KKzxoZWFkPgorPHN0eWxlPgorICAgIHN2ZyB7CisgICAgICAgIHdpZHRoOiA4MDBweDsKKyAg
ICAgICAgZGlzcGxheTogbm9uZTsKKyAgICB9CisgICAgZGl2IHsKKyAgICAgICAgd2lkdGg6IDIw
MHB4OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKyAgICAjZ3JhZGllbnQgeworICAg
ICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAg
aGVpZ2h0OiAyMDBweDsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogY29uaWMtZ3JhZGllbnQo
cmdiYSgwLDI1NSwwLDApLCBibGFjayk7CisgICAgICAgIGZpbHRlcjogdXJsKCNwb3N0ZXJpemUp
OworICAgIH0KKworICAgIC54IHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAg
ICAtd2Via2l0LWNsaXAtcGF0aDogcG9seWdvbigwJSAwJSwgMCUgMTAlLCA0MCUgNTAlLCAwJSA5
MCUsIDAlIDEwMCUsIDEwJSAxMDAlLCA1MCUgNjAlLCA5MCUgMTAwJSwgMTAwJSAxMDAlLCAxMDAl
IDkwJSwgNjAlIDUwJSwgMTAwJSAxMCUsIDEwMCUgMCUsIDkwJSAwJSwgNTAlIDQwJSwgMTAlIDAl
KTsKKyAgICB9CisgICAgI3ggeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOworICAg
IH0KKyAgICAucGx1cyB7CisgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgLXdl
YmtpdC1jbGlwLXBhdGg6IHBvbHlnb24oNDUlIDAlLCA1NSUgMCUsIDU1JSA0NSUsIDEwMCUgNDUl
LCAxMDAlIDU1JSwgNTUlIDU1JSwgNTUlIDEwMCUsIDQ1JSAxMDAlLCA0NSUgNTUlLCAwJSA1NSUs
IDAlIDQ1JSwgNDUlIDQ1JSk7CisgICAgfQorICAgICNwbHVzIHsKKyAgICAgICAgYmFja2dyb3Vu
ZC1jb2xvcjp3aGl0ZTsKKyAgICB9Cis8L3N0eWxlPgorPC9oZWFkPgorCis8Ym9keT4KKzxzdmcg
dmlld0JveD0iMCAwIDcwMCAxMDAiPgorPGRlZnM+CisgICAgPGZpbHRlciBpZD0icG9zdGVyaXpl
IiBmaWx0ZXJVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIHByaW1pdGl2ZVVuaXRzPSJvYmplY3RC
b3VuZGluZ0JveCI+CisgICAgICAgIDxmZUNvbXBvbmVudFRyYW5zZmVyPgorICAgICAgICAgICAg
PGZlRnVuY1IgdHlwZT0iZGlzY3JldGUiIHRhYmxlVmFsdWVzPSIwIDAuMTI1IDAuMjUgMC4zNzUg
MC41IDAuNjI1IDAuNzUgMC44NzUiLz4KKyAgICAgICAgICAgIDxmZUZ1bmNHIHR5cGU9ImRpc2Ny
ZXRlIiB0YWJsZVZhbHVlcz0iMCAwLjEyNSAwLjI1IDAuMzc1IDAuNSAwLjYyNSAwLjc1IDAuODc1
Ii8+CisgICAgICAgICAgICA8ZmVGdW5jQiB0eXBlPSJkaXNjcmV0ZSIgdGFibGVWYWx1ZXM9IjAg
MC4xMjUgMC4yNSAwLjM3NSAwLjUgMC42MjUgMC43NSAwLjg3NSIvPgorICAgICAgICAgICAgPGZl
RnVuY0EgdHlwZT0iZGlzY3JldGUiIHRhYmxlVmFsdWVzPSIwIDAuMTI1IDAuMjUgMC4zNzUgMC41
IDAuNjI1IDAuNzUgMC44NzUiLz4KKyAgICAgICAgPC9mZUNvbXBvbmVudFRyYW5zZmVyPgorICAg
IDwvZmlsdGVyPgorPC9kZWZzPgorPC9zdmc+CisKKzxkaXY+CisgICAgPGRpdiBpZD0iZ3JhZGll
bnQiPjwvZGl2PgorICAgIDxkaXYgaWQ9IngiIGNsYXNzPSJ4Ij48L2Rpdj4KKyAgICA8ZGl2IGlk
PSJwbHVzIiBjbGFzcz0icGx1cyI+PC9kaXY+Cis8L2Rpdj4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447668</attachid>
            <date>2021-12-20 17:16:57 -0800</date>
            <delta_ts>2021-12-20 21:23:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234492-20211220171656.patch</filename>
            <type>text/plain</type>
            <size>91471</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODcyMzMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIxLTEyLTIwICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgcHJlbXVsdGlwbGllZCBhbHBo
YSBpbnRlcnBvbGF0ZWQgZ3JhZGllbnRzIGFuZCBkZWZhdWx0ZWQgb2ZmIG9wdGlvbiB0byB1c2Ug
dGhlbSBmb3IgQ1NTIEdyYWRpZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM0NDkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2Vy
LgorCisgICAgICAgICogU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1l
bnRhbC55YW1sOgorICAgICAgICBBZGQgYSBuZXcgZXhwZXJpbWVudGFsIHNldHRpbmcgdG8gZW5h
YmxlIHByZW11bHRpcGxpZWQgYWxwaGEgQ1NTIGdyYWRpZW50cy4gCisKIDIwMjEtMTItMTggIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEhhc2ggdGFibGVzLCByZWFk
L3dyaXRlLCBhbmQgaGVhcCBtZW1vcnkgYXJlIHVzZWQgdW5uZWNlc3NhcmlseSwgd2hpY2ggbWF5
IGh1cnQgcGVyZm9ybWFuY2UKSW5kZXg6IFNvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9X
ZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
U2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCShyZXZp
c2lvbiAyODcyMzMpCisrKyBTb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVy
ZW5jZXNFeHBlcmltZW50YWwueWFtbAkod29ya2luZyBjb3B5KQpAQCAtMjg0LDYgKzI4NCwxOCBA
QCBDU1NDdXN0b21Qcm9wZXJ0aWVzQW5kVmFsdWVzRW5hYmxlZDoKICAgICBXZWJDb3JlOgogICAg
ICAgZGVmYXVsdDogZmFsc2UKIAorQ1NTR3JhZGllbnRQcmVtdWx0aXBsaWVkQWxwaGFJbnRlcnBv
bGF0aW9uRW5hYmxlZDoKKyAgdHlwZTogYm9vbAorICBodW1hblJlYWRhYmxlTmFtZTogIkNTUyBH
cmFkaWVudCBQcmVtdWx0aXBsaWVkIEFscGhhIEludGVycG9sYXRpb24iCisgIGh1bWFuUmVhZGFi
bGVEZXNjcmlwdGlvbjogIkVuYWJsZSBwcmVtdWx0aXBsaWVkIGFscGhhIGludGVycG9sYXRlZCBD
U1MgZ3JhZGllbnRzIgorICBkZWZhdWx0VmFsdWU6CisgICAgV2ViS2l0TGVnYWN5OgorICAgICAg
ZGVmYXVsdDogZmFsc2UKKyAgICBXZWJLaXQ6CisgICAgICBkZWZhdWx0OiBmYWxzZQorICAgIFdl
YkNvcmU6CisgICAgICBkZWZhdWx0OiBmYWxzZQorCiAjIEZJWE1FOiBUaGlzIGlzIGVuYWJsZWQg
d2hlbiBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkVTKSBpcyB0cnVlIGluIFdlYktpdDIuIFBl
cmhhcHMgd2Ugc2hvdWxkIGNvbnNpZGVyIHVzaW5nIHRoYXQgZm9yIFdlYktpdExlZ2FjeSBhcyB3
ZWxsLgogQ1NTSW5kaXZpZHVhbFRyYW5zZm9ybVByb3BlcnRpZXNFbmFibGVkOgogICB0eXBlOiBi
b29sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODcyMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMTAgQEAKKzIwMjEtMTItMjAgIFNh
bSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBw
cmVtdWx0aXBsaWVkIGFscGhhIGludGVycG9sYXRlZCBncmFkaWVudHMgYW5kIGRlZmF1bHRlZCBv
ZmYgb3B0aW9uIHRvIHVzZSB0aGVtIGZvciBDU1MgR3JhZGllbnRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ0OTIKKworICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZ3JhZGllbnRzL2FscGhh
LXByZW11bHRpcGxpZWQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ncmFkaWVudHMvY29uaWMt
Z3JhZGllbnQtYWxwaGEtdW5wcmVtdWx0aXBsaWVkLmh0bWwKKworICAgICAgICBFeHRyYWN0cyB1
c2Ugb2YgQ0dHcmFkaWVudFJlZiBvdXQgb2YgR3JhZGllbnQgYW5kIGludG8gdGhlIG5ldyBHcmFk
aWVudFJlbmRlcmVyQ0cgd2hpY2ggYWxzbyBpbXBsZW1lbnRzCisgICAgICAgIGEgQ0dTaGFkaW5n
UmVmIGJhc2VkIGdyYWRpZW50IGRyYXdpbmcgcGF0aC4gVGhlIEdyYWRpZW50UmVuZGVyZXJDRyBw
aWNrcyB3aGljaCBzdHJhdGVneSwgQ0dHcmFkaWVudFJlZgorICAgICAgICBvciBDR1NoYWRpbmdS
ZWYsIGJhc2VkIG9uIHRoZSBpbnRlcG9sYXRpb24gbW9kZSBhbmQgY2FwYWJpbGl0aWVzIG9mIHRo
ZSB1bmRlcmx5aW5nIENvcmVHcmFwaGljcy4gRm9yIAorICAgICAgICBuZXcgZW5vdWdoIENvcmVH
cmFwaGljcywgYm90aCBwcmVtdWx0aXBsaWVkIGFuZCBub24tcHJlbXVsdGlwbGllZCBhbHBoYSBp
bnRlcnBvbGF0aW9uIGZvciBzUkdCIG91dHB1dAorICAgICAgICBhcmUgc3VwcG9ydGVkIGluIHRo
ZSBtb3JlIG9wdGltaXphYmxlIENHR3JhZGllbnRSZWYgcGF0aCwgYnV0IG9uIG9sZGVyIHN5c3Rl
bXMgd2Ugd2lsbCBmYWxsYmFjayB0byBhIAorICAgICAgICBhIG5ld2x5IGltcGxlbWVudGVkIENH
U2hhZGluZ1JlZiBiYXNlZCBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICBJbiBhZGRpdGlvbiB0
byB0aGUgcGxhdGZvcm0gbGV2ZWwgd29yayBpbiBHcmFkaWVudCwgdGhpcyBhZGRzIGEgbmV3IHNl
dHRpbmcsIENTU0dyYWRpZW50UHJlbXVsdGlwbGllZEFscGhhSW50ZXJwb2xhdGlvbkVuYWJsZWQs
CisgICAgICAgIHdoaWNoIGRlZmF1bHRzIHRvIG9mZiBmb3Igbm93IGFuZCBzd2l0Y2hlcyB3aGF0
IHR5cGUgb2YgaW50ZXJwb2xhdGlvbiB3ZSB1c2UgZm9yIENTUyBncmFkaWVudHMuIEl0CisgICAg
ICAgIGRvZXMgbm90IGVmZmVjdCBvdGhlciBncmFkaWVudCB1c2VzIHN1Y2ggYXMgYnkgY2FudmFz
IG9yIFNWRy4gVGhvc2Ugd2lsbCBiZSBlbmFibGVkIHNlcGFyYXRlbHkuCisKKyAgICAgICAgKiBI
ZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtQXBwbGVXaW4uY21ha2U6CisgICAgICAg
ICogUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZCBuZXcg
ZmlsZXMuCisKKyAgICAgICAgKiBjc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMaW5lYXJHcmFkaWVudEFkYXB0ZXI6Om5vcm1hbGl6ZVN0b3BzQW5kRW5kcG9pbnRz
T3V0c2lkZVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlhbEdyYWRpZW50QWRhcHRlcjo6
bm9ybWFsaXplU3RvcHNBbmRFbmRwb2ludHNPdXRzaWRlUmFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29uaWNHcmFkaWVudEFkYXB0ZXI6Om5vcm1hbGl6ZVN0b3BzQW5kRW5kcG9pbnRzT3V0c2lk
ZVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyYWRpZW50VmFsdWU6OmNvbXB1dGVTdG9w
cyk6CisgICAgICAgIFN3aXRjaCB0byB1c2luZyB0aGUgbmV3IGludGVycG9sYXRlQ29sb3JzKCkg
ZnVuY3Rpb24gZnJvbSBDb2xvckludGVycG9sYXRpb24uaAorICAgICAgICB3aGljaCBhY2N1cmF0
ZWx5IHRha2VzIGludG8gYWNjb3VudCB0aGUgY3VycmVudCBpbnRlcnBvbGF0aW9uIG1vZGUuIFRo
ZXNlCisgICAgICAgIGJsZW5kcyBub3cgbWF0Y2ggd2hhdCB0aGUgY3JlYXRlZCBncmFkaWVudCBk
b2VzLgorCisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmNwcDoKKyAgICAg
ICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaDoKKyAgICAgICAgQWRkIHN1cHBvcnQg
Zm9yIHF1ZXJ5aW5nIENTU0dyYWRpZW50UHJlbXVsdGlwbGllZEFscGhhSW50ZXJwb2xhdGlvbkVu
YWJsZWQgZnJvbSB0aGUgQ1NTIHBhcnNlci4KKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFy
c2VySGVscGVyczo6Z3JhZGllbnRBbHBoYVByZW11bHRpcGxpY2F0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZURlcHJlY2F0ZWRHcmFkaWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVE
ZXByZWNhdGVkUmFkaWFsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQ
YXJzZXJIZWxwZXJzOjpjb25zdW1lUmFkaWFsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lTGluZWFyR3JhZGllbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lQ29uaWNHcmFkaWVu
dCk6CisgICAgICAgIERlcGVuZGluZyBvbiBob3cgQ1NTR3JhZGllbnRQcmVtdWx0aXBsaWVkQWxw
aGFJbnRlcnBvbGF0aW9uRW5hYmxlZCBpcyBzZXQsIHVzZSBlaXRoZXIgcHJlbXVsdGlwbGllZAor
ICAgICAgICBvciBub24tcHJlbXVsdGlwbGllZCBpbnRlcnBvbGF0aW9uIGZvciBDU1MgZ3JhZGll
bnRzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb21wb25lbnRzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDb2xvckNvbXBvbmVudHM6OnNpemUgY29uc3QpOgorICAgICAgICBB
ZGQgc2l6ZSgpIGZ1bmN0aW9uIGZvciB1c2UgYnkgdGhlIHNoYWRpbmcgc3RyYXRlZ3kuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckludGVycG9sYXRpb24uaDoKKyAgICAgICAg
KFdlYkNvcmU6OnByZUludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uRm9yQ29tcG9uZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OnByZUludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OnBvc3RJbnRlcnBvbGF0aW9uTm9ybWFsaXphdGlvbkZvckNvbXBvbmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpwb3N0SW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6aW50ZXJwb2xhdGVDb2xvckNvbXBvbmVudHMpOgorICAgICAgICBVcGRhdGUg
dG8gdXNlIHRoZSBuYW1lIEludGVycG9sYXRpb25NZXRob2RDb2xvclNwYWNlIGNvbnNpc3Rlbmx5
IGZvciB0aGUgY29sb3Igc3BhY2UgcGFydCBvZiB0aGUKKyAgICAgICAgaW50ZXJwb2xhdGlvbiBt
ZXRob2QuCisgIAorICAgICAgICAoV2ViQ29yZTo6aW50ZXJwb2xhdGVDb2xvcnMpOgorICAgICAg
ICBBZGQgaGVscGVyIHdoaWNoIHRha2VzIGFuZCByZXR1cm5zIENvbG9yIG9iamVjdHMgcmF0aGVy
IHRoYW4gdGhlIHN0cm9uZ2x5IHR5cGVkIGNvbG9yIHR5cGVzLCAKKyAgICAgICAgYXV0b21hdGlj
YWxseSBjb252ZXJ0aW5nIHRvIHRoZSBhcHByb3ByaWF0ZSBpbnRlcnBvbGF0aW9uIGNvbG9yIHNw
YWNlIGJhc2VkIG9uIHRoZSBwcm92aWRlZAorICAgICAgICBDb2xvckludGVycG9sYXRpb25NZXRo
b2Qgb2JqZWN0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudENvbG9yU3RvcC5oOiBBZGRlZC4KKyAg
ICAgICAgTW92ZSBDb2xvclN0b3AgYW5kIENvbG9yU3RvcFZlY3RvciBkZWZpbnRpb25zIHRvIG5l
dyBHcmFkaWVudENvbG9yU3RvcCBmaWxlLCBidXQga2VlcCB0aGUKKyAgICAgICAgb2xkIG5lc3Rl
ZCBuYW1lcyB2aWEgdXNpbmcgZGlyZWN0aXZlcy4gVGhpcyBpcyBuZWVkZWQgdG8gbWFrZSB1c2lu
ZyB0aGUgQ29sb3JTdG9wVmVjdG9yCisgICAgICAgIGZyb20gR3JhZGllbnRSZW5kZXJlckNHICh3
aGljaCB3ZSBhbHNvIHdhbnQgdG8gdXNlIGluIEdyYWRpZW50LmgpIHBvc3NpYmxlIHdpdGhvdXQg
cmVkZWNsYXJhdGlvbi4KKyAgICAgICAgUmVwbGFjZSBDR0dyYWRpZW50UmVmIG1lbWJlciB3aXRo
IEdyYWRpZW50UmVuZGVyZXJDRyB3aGljaCBhbGxvd3MgY2hvb3NpbmcgYmV0d2VlbiBlaXRoZXIK
KyAgICAgICAgYSBDR0dyYWRpZW50UmVmIGJhc2VkIGltcGxlbWVudGF0aW9uIG9yIENHU2hhZGlu
Z1JlZiBiYXNlZCBvbmUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVu
dENHLmNwcDoKKyAgICAgICAgVXBkYXRlIHRvIHVzZSB0aGUgR3JhZGllbnRSZW5kZXJlckNHIHJh
dGhlcm4gdGhhbiBhIENHR3JhZGllbnRSZWYgZGlyZWN0bHksIGNhbGxpbmcgaW50byBpdAorICAg
ICAgICB0byBkbyB0aGUgYWN0dWFsIGRyYXcgY2FsbHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFkaWVudFJlbmRlcmVyQ0cuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRSZW5kZXJlckNHLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpHcmFkaWVudFJlbmRlcmVyQ0c6OnBpY2tTdHJhdGVneSBjb25zdCk6CisgICAgICAg
IENlbnRyYWwgZnVuY3Rpb24gdG8gY2hvb3NlIHdoaWNoIHN0cmF0ZWd5IHRvIHVzZSBiYXNlZCBv
biBzeXN0ZW0gY2FwYWJpbGl0aWVzIGFuZCBpbnRlcnBvbGF0aW9uIG5lZWRzLgorCisgICAgICAg
IChXZWJDb3JlOjpHcmFkaWVudFJlbmRlcmVyQ0c6Om1ha2VHcmFkaWVudCBjb25zdCk6CisgICAg
ICAgIE1vdmVkIGZyb20gR3JhZGllbnRDRy5jcHAuIFJlbW92ZWQgdGhlIENHR3JhZGllbnRDcmVh
dGVXaXRoQ29sb3JzKCkgcGF0aCwgYXMgd2UgY2FuIGFsd2F5cyB1c2UgdGhlCisgICAgICAgIG1v
cmUgZWZmaWNpZW50IENHR3JhZGllbnRDcmVhdGVXaXRoQ29sb3JDb21wb25lbnRzKCkgYnkgZG9p
bmcgdGhlIGNvbnZlcnNpb24gdG8gZXh0ZW5kZWQgc1JHQiBvdXJzZWx2ZXMuCisgICAgICAgIEFs
c28gYWRkcyB1c2Ugb2YgdGhlIGtDR0dyYWRpZW50SW50ZXJwb2xhdGVzUHJlbXVsdGlwbGllZCBv
cHRpb24gb24gc3VwcG9ydGVkIHN5c3RlbXMgdG8gdGVsbCBDb3JlR3JhcGhpY3MKKyAgICAgICAg
dG8gdXNlIHByZW11bGl0cGxpZWQgaW50ZXJwb2xhdGlvbi4KKworICAgICAgICAoV2ViQ29yZTo6
c2hhZGluZ0Z1bmN0aW9uKToKKyAgICAgICAgQ29yZSBmdW5jdGlvbiB1c2VkIGJ5IENHU2hhZGlu
Z1JlZiB0byBpbnRlcnBvbGF0ZSBiZXR3ZWVuIGNvbG9yIHN0b3BzLiBUZW1wbGF0aXplZCB0byBh
bGxvdyBmb3Igb3B0aW1pemVkCisgICAgICAgIHZlcnNpb25zIGZvciBldmVyeSBDb2xvckludGVy
cG9sYXRpb25Db2xvclNwYWNlIC8gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBwYWlyLiAKKworICAg
ICAgICAoV2ViQ29yZTo6R3JhZGllbnRSZW5kZXJlckNHOjptYWtlU2hhZGluZyBjb25zdCk6Cisg
ICAgICAgIEJ1aWxkcyBzaGFkaW5nIHN0cmF0ZWd5IGJ5IGNvbnZlcnRpbmcgYWxsIGNvbG9yIHN0
b3BzIHRvIHRoZSBpbnRlcnBvbGF0aW9uIGNvbG9yIHNwYWNlLCBhZGRpbmcgc3RvcHMgYXQKKyAg
ICAgICAgMCBhbmQgMSBpZiBuZWNlc3NhcnksIGFuZCBjcmVhdGluZyB0aGUgQ0dGdW5jdGlvblJl
ZiB0aGF0IHRoZSBzaGFkaW5nIHdpbGwgb3duLiBUbyBhdm9pZCBhIGNpcmN1bGFyIAorICAgICAg
ICByZWZlcmVuY2UsIHRoZSBHcmFkaWVudFJlbmRlcmVyQ0cgaXRzZWxmIGlzIG5vdCB3aGF0IHRo
ZSBDR0Z1bmN0aW9uUmVmIHJldGFpbnMsIGJ1dCByYXRoZXIgYSBzdWJvYmplY3QKKyAgICAgICAg
RGF0YSwgd2hpY2ggaXMgYSBwZWVyIHRvIHRoZSBDR0Z1bmN0aW9uUmVmLgorCisgICAgICAgIChX
ZWJDb3JlOjpHcmFkaWVudFJlbmRlcmVyQ0c6OmRyYXdMaW5lYXJHcmFkaWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFkaWVudFJlbmRlcmVyQ0c6OmRyYXdSYWRpYWxHcmFkaWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFkaWVudFJlbmRlcmVyQ0c6OmRyYXdDb25pY0dyYWRpZW50KToKKyAg
ICAgICAgRHJhdyB0aGUgZ3JhZGllbnQgb3Igc2hhZGluZyBiYXNlZCBvbiB0aGUgc3RyYXRlZ3kg
c2VsZWN0ZWQgYXQgY29uc3RydWN0aW9uLgorCiAyMDIxLTEyLTE4ICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KIAogICAgICAgICBIYXNoIHRhYmxlcywgcmVhZC93cml0ZSwgYW5kIGhl
YXAgbWVtb3J5IGFyZSB1c2VkIHVubmVjZXNzYXJpbHksIHdoaWNoIG1heSBodXJ0IHBlcmZvcm1h
bmNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9X
ZWJDb3JlL0hlYWRlcnMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTE0NjEsNiArMTQ2MSw3IEBA
IHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9HbHlwaE1ldHJpY3NNYXAuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoUGFnZS5o
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYWRpZW50Q29sb3JTdG9wLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEZsdXNoSWRlbnRpZmll
ci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApJbmRleDogU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCShyZXZpc2lvbiAyODcyMzMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEs
NiArMTMxLDcgQEAgZWxzZSAoKQogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFJl
Y3RDRy5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRTaXplQ0cuY3BwCiAg
ICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwCisgICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50UmVuZGVyZXJDRy5jcHAKICAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0lPU3VyZmFjZVBvb2wuY3BwCkBAIC0xODIsNiArMTgzLDcgQEAgZWxzZSAoKQogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmgKIAogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAorICAgICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFkaWVudFJlbmRlcmVyQ0cuaAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5oCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lP
U3VyZmFjZVBvb2wuaAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNH
QmFja2VuZC5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQkocmV2aXNpb24gMjg3MjMz
KQorKysgU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAg
LTI5MSw2ICsyOTEsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9GbG9hdFJlY3RDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9G
bG9hdFNpemVDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENHLmNwcAor
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50UmVuZGVyZXJDRy5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0lPU3VyZmFjZVBvb2wuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9u
IDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTM0OCw2ICszNDgsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cu
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFJlY3RDRy5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0Zsb2F0U2l6ZUNHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5j
cHAKK3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50UmVuZGVyZXJDRy5jcHAKIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0R0xDRy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBv
b2wuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NzI3OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAor
MjAyMS0xMi0yMCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRk
IHN1cHBvcnQgZm9yIHByZW11bHRpcGxpZWQgYWxwaGEgaW50ZXJwb2xhdGVkIGdyYWRpZW50cyBh
bmQgZGVmYXVsdGVkIG9mZiBvcHRpb24gdG8gdXNlIHRoZW0gZm9yIENTUyBHcmFkaWVudHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDQ5MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICAqIHBhbC9zcGkvY2cv
Q29yZUdyYXBoaWNzU1BJLmg6CisgICAgICAgIEFkZCBmb3J3YXJkcyBmb3IgY3JlYXRpbmcgY29u
aWMgc2hhZGluZ3MgYW5kIGVuYWJsaW5nIHByZW11bHRpcGxpZWQgYWxwaGEgaW50ZXJwb2xhdGlv
biBmb3IgZ3JhZGllbnRzLgorCiAyMDIxLTEyLTIwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNp
ZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBQQUwgc29mdCBsaW5raW5nIGhlYWRlcnMgZm9y
IENvcmVNTCBhbmQgTmF0dXJhbExhbmd1YWdlIGZyYW1ld29ya3MKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCShyZXZpc2lvbiAyODcy
MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaAko
d29ya2luZyBjb3B5KQpAQCAtNDEsOCArNDEsOSBAQAogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9D
R0NvbnRleHREZWxlZ2F0ZVByaXZhdGUuaD4KICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dGb250
Q2FjaGUuaD4KICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dQYXRoUHJpdmF0ZS5oPgotI2luY2x1
ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3NQcml2YXRlLmg+CisjaW5jbHVkZSA8Q29yZUdy
YXBoaWNzL0NHU2hhZGluZ1ByaXZhdGUuaD4KICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dTdHls
ZVByaXZhdGUuaD4KKyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzUHJpdmF0ZS5o
PgogCiAjaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0FjY2Vzc2li
aWxpdHkuaD4KQEAgLTMyMyw2ICszMjQsMTYgQEAgdm9pZCBDR0NvbnRleHRTZXRTdHlsZShDR0Nv
bnRleHRSZWYsIENHU3R5bGVSZWYpOwogdm9pZCBDR0NvbnRleHREcmF3Q29uaWNHcmFkaWVudChD
R0NvbnRleHRSZWYsIENHR3JhZGllbnRSZWYsIENHUG9pbnQgY2VudGVyLCBDR0Zsb2F0IGFuZ2xl
KTsKIHZvaWQgQ0dQYXRoQWRkVW5ldmVuQ29ybmVyc1JvdW5kZWRSZWN0KENHTXV0YWJsZVBhdGhS
ZWYsIGNvbnN0IENHQWZmaW5lVHJhbnNmb3JtICosIENHUmVjdCwgY29uc3QgQ0dTaXplIGNvcm5l
cnNbNF0pOwogYm9vbCBDR0ZvbnRSZW5kZXJpbmdHZXRGb250U21vb3RoaW5nRGlzYWJsZWQodm9p
ZCk7CitDR1NoYWRpbmdSZWYgQ0dTaGFkaW5nQ3JlYXRlQ29uaWMoQ0dDb2xvclNwYWNlUmVmLCBD
R1BvaW50IGNlbnRlciwgQ0dGbG9hdCBhbmdsZSwgQ0dGdW5jdGlvblJlZik7CisKKyNpZiBIQVZF
KENPUkVfR1JBUEhJQ1NfR1JBRElFTlRfQ1JFQVRFX1dJVEhfT1BUSU9OUykKK0NHR3JhZGllbnRS
ZWYgQ0dHcmFkaWVudENyZWF0ZVdpdGhDb2xvckNvbXBvbmVudHNBbmRPcHRpb25zKENHQ29sb3JT
cGFjZVJlZiwgY29uc3QgQ0dGbG9hdCosIGNvbnN0IENHRmxvYXQqLCBzaXplX3QsIENGRGljdGlv
bmFyeVJlZik7CitDR0dyYWRpZW50UmVmIENHR3JhZGllbnRDcmVhdGVXaXRoQ29sb3JzQW5kT3B0
aW9ucyhDR0NvbG9yU3BhY2VSZWYsIENGQXJyYXlSZWYsIGNvbnN0IENHRmxvYXQqLCBDRkRpY3Rp
b25hcnlSZWYpOworI2VuZGlmCisKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfUFJFTVVMVElQTElF
RF9JTlRFUlBPTEFUSU9OX0dSQURJRU5UKQorZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDR0dy
YWRpZW50SW50ZXJwb2xhdGVzUHJlbXVsdGlwbGllZDsKKyNlbmRpZgogCiAjZW5kaWYgLy8gUExB
VEZPUk0oQ09DT0EpCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDA4
MSw2ICs0MDgxLDggQEAKIAkJQkMxMjRGMDAwQzI2NDQ3QTAwOUUyMzQ5IC8qIEpTQmFyUHJvcC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxMjRFRkUw
QzI2NDQ3QTAwOUUyMzQ5IC8qIEpTQmFyUHJvcC5oICovOyB9OwogCQlCQzEyOEE3MzEzN0M4NjdD
MDBDQUM4NDUgLyogUmVuZGVyR3JpZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkMxMjhBNzIxMzdDODY3QzAwQ0FDODQ1IC8qIFJlbmRlckdyaWQuaCAq
LzsgfTsKIAkJQkMxNDAyOEIwRTgzNjgwODAwMzE5NzE3IC8qIFNjcm9sbGJhclRoZW1lQ29tcG9z
aXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE0
MDI4OTBFODM2ODA4MDAzMTk3MTcgLyogU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzE5Q0RGMjI3NkZG
QzZEMDA1M0Y3MzQgLyogR3JhZGllbnRSZW5kZXJlckNHLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE5Q0RGMDI3NkZGQjI2MDA1M0Y3MzQgLyogR3Jh
ZGllbnRSZW5kZXJlckNHLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJQkMxOUNERjQyNzcxMDYzOTAwNTNGNzM0IC8qIEdyYWRpZW50Q29sb3JTdG9w
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE5Q0RG
MzI3NzEwNjM5MDA1M0Y3MzQgLyogR3JhZGllbnRDb2xvclN0b3AuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzFBN0Q5ODE4RkNCNUIwMDA0MjE4
NzkgLyogUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMUE3RDk2MThGQ0I1QjAwMDQyMTg3
OSAvKiBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5oICovOyB9OwogCQlCQzIy
NzI4NzBFODJFNzA3MDBFN0Y5NzUgLyogU3R5bGVSZWZsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzIyNzI4NjBFODJFNzA3MDBFN0Y5NzUg
LyogU3R5bGVSZWZsZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQkMyMjcyQTIwRTgyRTg3QzAwRTdGOTc1IC8qIEN1cnNvckRhdGEuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjI3MkExMEU4
MkU4N0MwMEU3Rjk3NSAvKiBDdXJzb3JEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE1MTEzLDYgKzE1MTE1LDkgQEAKIAkJQkMxMjhCMDAx
MzdDOEQ0NjAwQ0FDODQ1IC8qIFJlbmRlckdyaWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVuZGVyR3JpZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDMTQwMjg4MEU4MzY4MDgwMDMxOTcxNyAvKiBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxiYXJUaGVtZUNv
bXBvc2l0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMTQwMjg5MEU4MzY4
MDgwMDMxOTcxNyAvKiBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlCQzE5Q0RFRjI3NkZGQjI2MDA1M0Y3MzQgLyogR3JhZGllbnRSZW5k
ZXJlckNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYWRpZW50UmVuZGVyZXJDRy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMTlDREYwMjc2RkZCMjYwMDUzRjczNCAvKiBH
cmFkaWVudFJlbmRlcmVyQ0cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhZGllbnRSZW5kZXJlckNHLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMTlDREYzMjc3MTA2MzkwMDUzRjczNCAv
KiBHcmFkaWVudENvbG9yU3RvcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFkaWVudENvbG9yU3RvcC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzFBN0Q5NTE4RkNCNUIwMDA0MjE4Nzkg
LyogUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xk
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzFBN0Q5NjE4RkNCNUIwMDA0
MjE4NzkgLyogUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xk
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyMEZCN0UwQzBFOEU2QzAwRDE0
NDdGIC8qIEpTRGVwcmVjYXRlZENTU09NVmFsdWVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRGVwcmVjYXRlZENTU09NVmFsdWVDdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjg1MzQsNiArMjg1MzksOCBAQAogCQkJCUIy
NzUzNTJDMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RDRy5jcHAgKi8sCiAJCQkJQjI3NTM1
MkQwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZUNHLmNwcCAqLywKIAkJCQlCQzUzQzYwQTBE
QTU2Q0YxMDAyMUVCNUQgLyogR3JhZGllbnRDRy5jcHAgKi8sCisJCQkJQkMxOUNERUYyNzZGRkIy
NjAwNTNGNzM0IC8qIEdyYWRpZW50UmVuZGVyZXJDRy5jcHAgKi8sCisJCQkJQkMxOUNERjAyNzZG
RkIyNjAwNTNGNzM0IC8qIEdyYWRpZW50UmVuZGVyZXJDRy5oICovLAogCQkJCUIyRUQ5NzcwMEIx
RjU1Q0UwMDI1N0QwRiAvKiBHcmFwaGljc0NvbnRleHRDRy5jcHAgKi8sCiAJCQkJOTM0OTA3RTMx
MjVCQkJDODAwN0YyM0EwIC8qIEdyYXBoaWNzQ29udGV4dENHLmggKi8sCiAJCQkJNkUyMUM2QzEx
MTI2MzM5OTAwQTdCRTAyIC8qIEdyYXBoaWNzQ29udGV4dEdMQ0cuY3BwICovLApAQCAtMjg3NDMs
NiArMjg3NTAsNyBAQAogCQkJCTA4NzNCODZBMTM2MDY0RUEwMEE1MjJDMiAvKiBHbHlwaFBhZ2Uu
aCAqLywKIAkJCQlCQzUzQzYwNzBEQTU2QzU3MDAyMUVCNUQgLyogR3JhZGllbnQuY3BwICovLAog
CQkJCUJDNTNDNUY0MERBNTZCOTIwMDIxRUI1RCAvKiBHcmFkaWVudC5oICovLAorCQkJCUJDMTlD
REYzMjc3MTA2MzkwMDUzRjczNCAvKiBHcmFkaWVudENvbG9yU3RvcC5oICovLAogCQkJCTJEMkZD
MDU2MTQ2MENENkYwMDI2MzYzMyAvKiBHcmFkaWVudEltYWdlLmNwcCAqLywKIAkJCQkyRDJGQzA1
NzE0NjBDRDZGMDAyNjM2MzMgLyogR3JhZGllbnRJbWFnZS5oICovLAogCQkJCUIyQTAxNTkyMEFG
NkNENTMwMDZCQ0UwRSAvKiBHcmFwaGljc0NvbnRleHQuY3BwICovLApAQCAtMzMzMDQsNiArMzMz
MTIsNyBAQAogCQkJCTgzNzg4NzgyMjREOEE2MDkwMDBENEE1QiAvKiBBdWRpb0J1ZmZlclNvdXJj
ZU9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDdDMTJCMDI2RjcwMEMxQTM1OSAv
KiBBdWRpb0J1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwN0UxMkIwMjZGNzAwQzFBMzU5
IC8qIEF1ZGlvQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMxOUNERjIyNzZGRkM2RDAw
NTNGNzM0IC8qIEdyYWRpZW50UmVuZGVyZXJDRy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzRUVG
M0EyNTc5OUY4ODAwNjU2M0JCIC8qIEF1ZGlvQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkQzMTYwMDUxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvQ29udGV4dC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTc4NUQ5NjIyNEI3RjczNTAwMTREQjIxIC8qIEF1ZGlvQ29udGV4dExhdGVu
Y3lDYXRlZ29yeS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDg2MCw2ICszNDg2OSw3IEBACiAJCQkJ
QTVCODFDQUQxRkFBNDQ2MjAwMzdEMUU2IC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTk0QzYwM0EyNTNBMjc3MzAwQkRGMDYwIC8qIEluc3BlY3RvckZy
b250ZW5kQVBJRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjM0NEM3MTQxMTI1Qjgy
QzAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlCQzE5Q0RGNDI3NzEwNjM5MDA1M0Y3MzQgLyogR3JhZGllbnRDb2xvclN0b3AuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUYzNDRDNzUzMTEyOTREOUQwMEYyNkVFRSAvKiBJbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTBFNzcwRjEwQzAwQTg4MDBBMDI3
NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTU0ODU4
MDE0RTAyRDUxMDA2QUUwNUEgLyogSW5zcGVjdG9ySGlzdG9yeS5oIGluIEhlYWRlcnMgKi8sCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCShyZXZpc2lvbiAyODcy
MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDExICsyNiwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkNTU0dyYWRpZW50VmFsdWUuaCIKIAotI2luY2x1ZGUgIkFuaW1hdGlvblV0aWxpdGllcy5oIgog
I2luY2x1ZGUgIkNTU0NhbGNWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCi0jaW5jbHVkZSAiQ29sb3JC
bGVuZGluZy5oIgorI2luY2x1ZGUgIkNvbG9ySW50ZXJwb2xhdGlvbi5oIgogI2luY2x1ZGUgIkdy
YWRpZW50SW1hZ2UuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJQ
YWlyLmgiCkBAIC0xMzgsNyArMTM3LDcgQEAgY2xhc3MgTGluZWFyR3JhZGllbnRBZGFwdGVyIHsg
KHB1YmxpYykKICAgICB9CiAgICAgZmxvYXQgbWF4RXh0ZW50KGZsb2F0LCBmbG9hdCkgY29uc3Qg
eyByZXR1cm4gMTsgfQogCi0gICAgdm9pZCBub3JtYWxpemVTdG9wc0FuZEVuZHBvaW50c091dHNp
ZGVSYW5nZShWZWN0b3I8R3JhZGllbnRTdG9wPiYgc3RvcHMpCisgICAgdm9pZCBub3JtYWxpemVT
dG9wc0FuZEVuZHBvaW50c091dHNpZGVSYW5nZShWZWN0b3I8R3JhZGllbnRTdG9wPiYgc3RvcHMs
IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCkKICAgICB7CiAgICAgICAgIGZsb2F0IGZpcnN0T2Zm
c2V0ID0gKnN0b3BzLmZpcnN0KCkub2Zmc2V0OwogICAgICAgICBmbG9hdCBsYXN0T2Zmc2V0ID0g
KnN0b3BzLmxhc3QoKS5vZmZzZXQ7CkBAIC0xODEsNyArMTgwLDcgQEAgY2xhc3MgUmFkaWFsR3Jh
ZGllbnRBZGFwdGVyIHsgKHB1YmxpYykKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogCi0gICAg
dm9pZCBub3JtYWxpemVTdG9wc0FuZEVuZHBvaW50c091dHNpZGVSYW5nZShWZWN0b3I8R3JhZGll
bnRTdG9wPiYgc3RvcHMpCisgICAgdm9pZCBub3JtYWxpemVTdG9wc0FuZEVuZHBvaW50c091dHNp
ZGVSYW5nZShWZWN0b3I8R3JhZGllbnRTdG9wPiYgc3RvcHMsIENvbG9ySW50ZXJwb2xhdGlvbk1l
dGhvZCBjb2xvckludGVycG9sYXRpb25NZXRob2QpCiAgICAgewogICAgICAgICBhdXRvIG51bVN0
b3BzID0gc3RvcHMuc2l6ZSgpOwogCkBAIC0yMDUsOCArMjA0LDcgQEAgY2xhc3MgUmFkaWFsR3Jh
ZGllbnRBZGFwdGVyIHsgKHB1YmxpYykKICAgICAgICAgICAgICAgICBmbG9hdCBuZXh0T2Zmc2V0
ID0gKnN0b3BzW2ZpcnN0WmVyb09yR3JlYXRlckluZGV4XS5vZmZzZXQ7CiAKICAgICAgICAgICAg
ICAgICBmbG9hdCBpbnRlclN0b3BQcm9wb3J0aW9uID0gLXByZXZPZmZzZXQgLyAobmV4dE9mZnNl
dCAtIHByZXZPZmZzZXQpOwotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiB3aGVuIHdlIGludGVy
cG9sYXRlIGdyYWRpZW50cyB1c2luZyBwcmVtdWx0aXBsaWVkIGNvbG9ycywgdGhpcyBzaG91bGQg
ZG8gcHJlbXVsdGlwbGljYXRpb24uCi0gICAgICAgICAgICAgICAgQ29sb3IgYmxlbmRlZENvbG9y
ID0gYmxlbmQoc3RvcHNbZmlyc3RaZXJvT3JHcmVhdGVySW5kZXggLSAxXS5jb2xvciwgc3RvcHNb
Zmlyc3RaZXJvT3JHcmVhdGVySW5kZXhdLmNvbG9yLCB7IGludGVyU3RvcFByb3BvcnRpb24gfSk7
CisgICAgICAgICAgICAgICAgYXV0byBibGVuZGVkQ29sb3IgPSBpbnRlcnBvbGF0ZUNvbG9ycyhj
b2xvckludGVycG9sYXRpb25NZXRob2QsIHN0b3BzW2ZpcnN0WmVyb09yR3JlYXRlckluZGV4IC0g
MV0uY29sb3IsIDEuMGYgLSBpbnRlclN0b3BQcm9wb3J0aW9uLCBzdG9wc1tmaXJzdFplcm9Pckdy
ZWF0ZXJJbmRleF0uY29sb3IsIGludGVyU3RvcFByb3BvcnRpb24pOwogCiAgICAgICAgICAgICAg
ICAgLy8gQ2xhbXAgdGhlIHBvc2l0aW9ucyB0byAwIGFuZCBzZXQgdGhlIGNvbG9yLgogICAgICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlyc3RaZXJvT3JHcmVhdGVySW5kZXg7
ICsraSkgewpAQCAtMjM2LDcgKzIzNCw3IEBAIGNsYXNzIENvbmljR3JhZGllbnRBZGFwdGVyIHsg
KHB1YmxpYykKICAgICBmbG9hdCBncmFkaWVudExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIDE7IH0K
ICAgICBmbG9hdCBtYXhFeHRlbnQoZmxvYXQsIGZsb2F0KSBjb25zdCB7IHJldHVybiAxOyB9CiAK
LSAgICB2b2lkIG5vcm1hbGl6ZVN0b3BzQW5kRW5kcG9pbnRzT3V0c2lkZVJhbmdlKFZlY3RvcjxH
cmFkaWVudFN0b3A+JiBzdG9wcykKKyAgICB2b2lkIG5vcm1hbGl6ZVN0b3BzQW5kRW5kcG9pbnRz
T3V0c2lkZVJhbmdlKFZlY3RvcjxHcmFkaWVudFN0b3A+JiBzdG9wcywgQ29sb3JJbnRlcnBvbGF0
aW9uTWV0aG9kIGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCkKICAgICB7CiAgICAgICAgIHNpemVf
dCBudW1TdG9wcyA9IHN0b3BzLnNpemUoKTsKICAgICAgICAgc2l6ZV90IGxhc3RTdG9wSW5kZXgg
PSBudW1TdG9wcyAtIDE7CkBAIC0yNTYsOCArMjU0LDcgQEAgY2xhc3MgQ29uaWNHcmFkaWVudEFk
YXB0ZXIgeyAocHVibGljKQogICAgICAgICAgICAgICAgIGZsb2F0IG5leHRPZmZzZXQgPSAqc3Rv
cHNbaW5kZXhdLm9mZnNldDsKIAogICAgICAgICAgICAgICAgIGZsb2F0IGludGVyU3RvcFByb3Bv
cnRpb24gPSAtcHJldmlvdXNPZmZzZXQgLyAobmV4dE9mZnNldCAtIHByZXZpb3VzT2Zmc2V0KTsK
LSAgICAgICAgICAgICAgICAvLyBGSVhNRTogd2hlbiB3ZSBpbnRlcnBvbGF0ZSBncmFkaWVudHMg
dXNpbmcgcHJlbXVsdGlwbGllZCBjb2xvcnMsIHRoaXMgc2hvdWxkIGRvIHByZW11bHRpcGxpY2F0
aW9uLgotICAgICAgICAgICAgICAgIENvbG9yIGJsZW5kZWRDb2xvciA9IGJsZW5kKHN0b3BzW2lu
ZGV4IC0gMV0uY29sb3IsIHN0b3BzW2luZGV4XS5jb2xvciwgeyBpbnRlclN0b3BQcm9wb3J0aW9u
IH0pOworICAgICAgICAgICAgICAgIGF1dG8gYmxlbmRlZENvbG9yID0gaW50ZXJwb2xhdGVDb2xv
cnMoY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBzdG9wc1tpbmRleCAtIDFdLmNvbG9yLCAxLjBm
IC0gaW50ZXJTdG9wUHJvcG9ydGlvbiwgc3RvcHNbaW5kZXhdLmNvbG9yLCBpbnRlclN0b3BQcm9w
b3J0aW9uKTsKIAogICAgICAgICAgICAgICAgIC8vIENsYW1wIHRoZSBwb3NpdGlvbnMgdG8gMCBh
bmQgc2V0IHRoZSBjb2xvci4KICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGluZGV4OyArK2kpIHsKQEAgLTI4Niw4ICsyODMsNyBAQCBjbGFzcyBDb25pY0dyYWRpZW50QWRh
cHRlciB7IChwdWJsaWMpCiAgICAgICAgICAgICAgICAgZmxvYXQgbmV4dE9mZnNldCA9ICpzdG9w
c1tpbmRleCArIDFdLm9mZnNldDsKIAogICAgICAgICAgICAgICAgIGZsb2F0IGludGVyU3RvcFBy
b3BvcnRpb24gPSAoMSAtIHByZXZpb3VzT2Zmc2V0KSAvIChuZXh0T2Zmc2V0IC0gcHJldmlvdXNP
ZmZzZXQpOwotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiB3aGVuIHdlIGludGVycG9sYXRlIGdy
YWRpZW50cyB1c2luZyBwcmVtdWx0aXBsaWVkIGNvbG9ycywgdGhpcyBzaG91bGQgZG8gcHJlbXVs
dGlwbGljYXRpb24uCi0gICAgICAgICAgICAgICAgQ29sb3IgYmxlbmRlZENvbG9yID0gYmxlbmQo
c3RvcHNbaW5kZXhdLmNvbG9yLCBzdG9wc1tpbmRleCArIDFdLmNvbG9yLCB7IGludGVyU3RvcFBy
b3BvcnRpb24gfSk7CisgICAgICAgICAgICAgICAgYXV0byBibGVuZGVkQ29sb3IgPSBpbnRlcnBv
bGF0ZUNvbG9ycyhjb2xvckludGVycG9sYXRpb25NZXRob2QsIHN0b3BzW2luZGV4XS5jb2xvciwg
MS4wZiAtIGludGVyU3RvcFByb3BvcnRpb24sIHN0b3BzW2luZGV4ICsgMV0uY29sb3IsIGludGVy
U3RvcFByb3BvcnRpb24pOwogCiAgICAgICAgICAgICAgICAgLy8gQ2xhbXAgdGhlIHBvc2l0aW9u
cyB0byAxIGFuZCBzZXQgdGhlIGNvbG9yLgogICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSBpbmRleCArIDE7IGkgPCBudW1TdG9wczsgKytpKSB7CkBAIC00ODUsOCArNDgxLDcgQEAgR3Jh
ZGllbnQ6OkNvbG9yU3RvcFZlY3RvciBDU1NHcmFkaWVudFZhbHVlOjpjb21wdXRlU3RvCiAgICAg
ICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgOTsgKyt5KSB7CiAgICAgICAgICAgICBmbG9hdCBy
ZWxhdGl2ZU9mZnNldCA9ICgqbmV3U3RvcHNbeV0ub2Zmc2V0IC0gb2Zmc2V0MSkgLyAob2Zmc2V0
MiAtIG9mZnNldDEpOwogICAgICAgICAgICAgZmxvYXQgbXVsdGlwbGllciA9IHN0ZDo6cG93KHJl
bGF0aXZlT2Zmc2V0LCBzdGQ6OmxvZyguNWYpIC8gc3RkOjpsb2cobWlkcG9pbnQpKTsKLSAgICAg
ICAgICAgIC8vIEZJWE1FOiBXaHkgbm90IHByZW11bHRpcGx5IGhlcmU/Ci0gICAgICAgICAgICBu
ZXdTdG9wc1t5XS5jb2xvciA9IGJsZW5kV2l0aG91dFByZW11bHRpcGx5KGNvbG9yMSwgY29sb3Iy
LCB7IG11bHRpcGxpZXIgfSk7CisgICAgICAgICAgICBuZXdTdG9wc1t5XS5jb2xvciA9IGludGVy
cG9sYXRlQ29sb3JzKG1fY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb2xvcjEsIDEuMGYgLSBt
dWx0aXBsaWVyLCBjb2xvcjIsIG11bHRpcGxpZXIpOwogICAgICAgICB9CiAKICAgICAgICAgc3Rv
cHMucmVtb3ZlKHgpOwpAQCAtNTU3LDcgKzU1Miw3IEBAIEdyYWRpZW50OjpDb2xvclN0b3BWZWN0
b3IgQ1NTR3JhZGllbnRWYWx1ZTo6Y29tcHV0ZVN0bwogCiAgICAgLy8gSWYgdGhlIGdyYWRpZW50
IGdvZXMgb3V0c2lkZSB0aGUgMC0xIHJhbmdlLCBub3JtYWxpemUgaXQgYnkgbW92aW5nIHRoZSBl
bmRwb2ludHMsIGFuZCBhZGp1c3RpbmcgdGhlIHN0b3BzLgogICAgIGlmIChzdG9wcy5zaXplKCkg
PiAxICYmICgqc3RvcHMuZmlyc3QoKS5vZmZzZXQgPCAwIHx8ICpzdG9wcy5sYXN0KCkub2Zmc2V0
ID4gMSkpCi0gICAgICAgIGdyYWRpZW50QWRhcHRlci5ub3JtYWxpemVTdG9wc0FuZEVuZHBvaW50
c091dHNpZGVSYW5nZShzdG9wcyk7CisgICAgICAgIGdyYWRpZW50QWRhcHRlci5ub3JtYWxpemVT
dG9wc0FuZEVuZHBvaW50c091dHNpZGVSYW5nZShzdG9wcywgbV9jb2xvckludGVycG9sYXRpb25N
ZXRob2QpOwogICAgIAogICAgIEdyYWRpZW50OjpDb2xvclN0b3BWZWN0b3IgcmVzdWx0OwogICAg
IHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHN0b3BzLnNpemUoKSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5jcHAJKHJldmlzaW9u
IDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiwxMCArMTA2LDExIEBAIENTU1BhcnNlckNvbnRleHQ6
OkNTU1BhcnNlckNvbnRleHQoY29uc3QgRG9jdW1lbnQmIGRvYwogICAgICwgaGFzUHNldWRvQ2xh
c3NFbmFibGVkIHsgZG9jdW1lbnQuc2V0dGluZ3MoKS5oYXNQc2V1ZG9DbGFzc0VuYWJsZWQoKSB9
CiAgICAgLCBjYXNjYWRlTGF5ZXJzRW5hYmxlZCB7IGRvY3VtZW50LnNldHRpbmdzKCkuY3NzQ2Fz
Y2FkZUxheWVyc0VuYWJsZWQoKSB9CiAgICAgLCBjb250YWluZXJRdWVyaWVzRW5hYmxlZCB7IGRv
Y3VtZW50LnNldHRpbmdzKCkuY3NzQ29udGFpbmVyUXVlcmllc0VuYWJsZWQoKSB9CisgICAgLCBv
dmVyZmxvd0NsaXBFbmFibGVkIHsgZG9jdW1lbnQuc2V0dGluZ3MoKS5vdmVyZmxvd0NsaXBFbmFi
bGVkKCkgfQorICAgICwgZ3JhZGllbnRQcmVtdWx0aXBsaWVkQWxwaGFJbnRlcnBvbGF0aW9uRW5h
YmxlZCB7IGRvY3VtZW50LnNldHRpbmdzKCkuY3NzR3JhZGllbnRQcmVtdWx0aXBsaWVkQWxwaGFJ
bnRlcnBvbGF0aW9uRW5hYmxlZCgpIH0KICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQog
ICAgICwgYXR0YWNobWVudEVuYWJsZWQgeyBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLmF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCgpIH0KICNlbmRpZgotICAgICwgb3Zl
cmZsb3dDbGlwRW5hYmxlZCB7IGRvY3VtZW50LnNldHRpbmdzKCkub3ZlcmZsb3dDbGlwRW5hYmxl
ZCgpIH0KIHsKIH0KIApAQCAtMTUzLDEwICsxNTQsMTEgQEAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IENTU1BhcnNlckNvbnRleHQmIGEsIGNvbnN0IENTU1BhCiAgICAgICAgICYmIGEuaGFzUHNldWRv
Q2xhc3NFbmFibGVkID09IGIuaGFzUHNldWRvQ2xhc3NFbmFibGVkCiAgICAgICAgICYmIGEuY2Fz
Y2FkZUxheWVyc0VuYWJsZWQgPT0gYi5jYXNjYWRlTGF5ZXJzRW5hYmxlZAogICAgICAgICAmJiBh
LmNvbnRhaW5lclF1ZXJpZXNFbmFibGVkID09IGIuY29udGFpbmVyUXVlcmllc0VuYWJsZWQKKyAg
ICAgICAgJiYgYS5vdmVyZmxvd0NsaXBFbmFibGVkID09IGIub3ZlcmZsb3dDbGlwRW5hYmxlZAor
ICAgICAgICAmJiBhLmdyYWRpZW50UHJlbXVsdGlwbGllZEFscGhhSW50ZXJwb2xhdGlvbkVuYWJs
ZWQgPT0gYi5ncmFkaWVudFByZW11bHRpcGxpZWRBbHBoYUludGVycG9sYXRpb25FbmFibGVkCiAj
aWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICAgICAgJiYgYS5hdHRhY2htZW50RW5h
YmxlZCA9PSBiLmF0dGFjaG1lbnRFbmFibGVkCiAjZW5kaWYKLSAgICAgICAgJiYgYS5vdmVyZmxv
d0NsaXBFbmFibGVkID09IGIub3ZlcmZsb3dDbGlwRW5hYmxlZAogICAgIDsKIH0KIApAQCAtMTkz
LDEyICsxOTUsMTMgQEAgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIGNvbnN0IENTU1BhcnNlckNv
bnRleHQmIGNvbnRlCiAgICAgICAgIHwgY29udGV4dC5oYXNQc2V1ZG9DbGFzc0VuYWJsZWQgICAg
ICAgICAgICAgICAgICAgICA8PCAyMgogICAgICAgICB8IGNvbnRleHQuY2FzY2FkZUxheWVyc0Vu
YWJsZWQgICAgICAgICAgICAgICAgICAgICAgPDwgMjMKICAgICAgICAgfCBjb250ZXh0LmNvbnRh
aW5lclF1ZXJpZXNFbmFibGVkICAgICAgICAgICAgICAgICAgIDw8IDI0CisgICAgICAgIHwgY29u
dGV4dC5vdmVyZmxvd0NsaXBFbmFibGVkICAgICAgICAgICAgICAgICAgICAgICA8PCAyNQorICAg
ICAgICB8IGNvbnRleHQuZ3JhZGllbnRQcmVtdWx0aXBsaWVkQWxwaGFJbnRlcnBvbGF0aW9uRW5h
YmxlZCA8PCAyNgogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgICAgIHwgY29u
dGV4dC5hdHRhY2htZW50RW5hYmxlZCAgICAgICAgICAgICAgICAgICAgICAgICA8PCAyNQorICAg
ICAgICB8IGNvbnRleHQuYXR0YWNobWVudEVuYWJsZWQgICAgICAgICAgICAgICAgICAgICAgICAg
PDwgMjcKICNlbmRpZgotICAgICAgICB8IGNvbnRleHQub3ZlcmZsb3dDbGlwRW5hYmxlZCAgICAg
ICAgICAgICAgICAgICAgICAgPDwgMjYKLSAgICAgICAgfCBjb250ZXh0LmFjY2VudENvbG9yRW5h
YmxlZCAgICAgICAgICAgICAgICAgICAgICAgIDw8IDI3Ci0gICAgICAgIHwgY29udGV4dC5tb2Rl
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAyODsgLy8gVGhpcyBpcyBt
dWx0aXBsZSBiaXRzLCBzbyBrZWVwIGl0IGxhc3QuCisgICAgICAgIHwgY29udGV4dC5hY2NlbnRD
b2xvckVuYWJsZWQgICAgICAgICAgICAgICAgICAgICAgICA8PCAyOAorICAgICAgICB8IGNvbnRl
eHQubW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgMjk7IC8vIFRo
aXMgaXMgbXVsdGlwbGUgYml0cywgc28ga2VlcCBpdCBsYXN0LgogICAgIGFkZChoYXNoZXIsIGNv
bnRleHQuYmFzZVVSTCwgY29udGV4dC5jaGFyc2V0LCBiaXRzKTsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmgJKHJldmlzaW9uIDI4NzIz
MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NSwxMyArODUsMTMgQEAgc3RydWN0IENTU1BhcnNlckNvbnRleHQgewog
ICAgIGJvb2wgaGFzUHNldWRvQ2xhc3NFbmFibGVkIHsgZmFsc2UgfTsKICAgICBib29sIGNhc2Nh
ZGVMYXllcnNFbmFibGVkIHsgZmFsc2UgfTsKICAgICBib29sIGNvbnRhaW5lclF1ZXJpZXNFbmFi
bGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG92ZXJmbG93Q2xpcEVuYWJsZWQgeyBmYWxzZSB9Owor
ICAgIGJvb2wgZ3JhZGllbnRQcmVtdWx0aXBsaWVkQWxwaGFJbnRlcnBvbGF0aW9uRW5hYmxlZCB7
IGZhbHNlIH07CiAKICAgICAvLyBSdW50aW1lRW5hYmxlZEZlYXR1cmVzLgogI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgYm9vbCBhdHRhY2htZW50RW5hYmxlZCB7IGZhbHNlIH07
CiAjZW5kaWYKLQotICAgIGJvb2wgb3ZlcmZsb3dDbGlwRW5hYmxlZCB7IGZhbHNlIH07CiAKICAg
ICBDU1NQYXJzZXJDb250ZXh0KENTU1BhcnNlck1vZGUsIGNvbnN0IFVSTCYgYmFzZVVSTCA9IFVS
TCgpKTsKICAgICBXRUJDT1JFX0VYUE9SVCBDU1NQYXJzZXJDb250ZXh0KGNvbnN0IERvY3VtZW50
JiwgY29uc3QgVVJMJiBiYXNlVVJMID0gVVJMKCksIGNvbnN0IFN0cmluZyYgY2hhcnNldCA9IGVt
cHR5U3RyaW5nKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAkocmV2aXNpb24gMjg3MjMzKQorKysgU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNDM5LDI0ICsyNDM5LDYgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29s
b3JNaXhQZXJjZW50YWdlcz4gbm9ybWFsaXplZE1pCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
Ly8gQWZ0ZXIgaW50ZXJwb2xhdGlvbiwgaWYgdGhlIGNvbG9yIGlzIGluIHRoZSBIV0Igb3IgSFNM
IGNvbG9yIHNwYWNlLCBpdCBuZWVkcyB0byBiZSBjYW5vbmljYWxpemVkIGJhY2sgdG8gc1JHQiBh
cwotLy8gaXMgZG9uZSBhdCBwYXJzZSB0aW1lLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5
cGU+IENvbG9yIG1ha2VDYW5vbmljYWxDb2xvcihDb2xvclR5cGUgY29sb3IpCi17Ci0gICAgcmV0
dXJuIGNvbG9yOwotfQotCi10ZW1wbGF0ZTw+IENvbG9yIG1ha2VDYW5vbmljYWxDb2xvcjxIV0JB
PGZsb2F0Pj4oSFdCQTxmbG9hdD4gY29sb3IpCi17Ci0gICAgcmV0dXJuIGNvbnZlcnRDb2xvcjxT
UkdCQTx1aW50OF90Pj4oY29sb3IpOwotfQotCi10ZW1wbGF0ZTw+IENvbG9yIG1ha2VDYW5vbmlj
YWxDb2xvcjxIU0xBPGZsb2F0Pj4oSFNMQTxmbG9hdD4gY29sb3IpCi17Ci0gICAgcmV0dXJuIGNv
bnZlcnRDb2xvcjxTUkdCQTx1aW50OF90Pj4oY29sb3IpOwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBJbnRlcnBvbGF0aW9uTWV0aG9kPiBzdGF0aWMgQ29sb3IgbWl4Q29sb3JDb21wb25lbnRzVXNp
bmdDb2xvckludGVycG9sYXRpb25NZXRob2QoSW50ZXJwb2xhdGlvbk1ldGhvZCBpbnRlcnBvbGF0
aW9uTWV0aG9kLCBDb2xvck1peFBlcmNlbnRhZ2VzIG1peFBlcmNlbnRhZ2VzLCBjb25zdCBDb2xv
ciYgY29sb3IxLCBjb25zdCBDb2xvciYgY29sb3IyKQogewogICAgIHVzaW5nIENvbG9yVHlwZSA9
IHR5cGVuYW1lIEludGVycG9sYXRpb25NZXRob2Q6OkNvbG9yVHlwZTsKQEAgLTI5NDYsMTUgKzI5
MjgsMjAgQEAgc3RhdGljIGJvb2wgY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudENvbG9yU3RvcChD
U1NQYXJzCiAgICAgcmV0dXJuIHN0b3AuY29sb3IgJiYgYXJncy5hdEVuZCgpOwogfQogCitzdGF0
aWMgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBncmFkaWVudEFscGhhUHJlbXVsdGlwbGljYXRpb24o
Y29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICByZXR1cm4gY29udGV4dC5n
cmFkaWVudFByZW11bHRpcGxpZWRBbHBoYUludGVycG9sYXRpb25FbmFibGVkID8gQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCA6IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVu
cHJlbXVsdGlwbGllZDsKK30KKwogc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZURlcHJl
Y2F0ZWRHcmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBjb25zdCBDU1NQYXJzZXJD
b250ZXh0JiBjb250ZXh0KQogewogICAgIFJlZlB0cjxDU1NHcmFkaWVudFZhbHVlPiByZXN1bHQ7
CiAgICAgQ1NTVmFsdWVJRCBpZCA9IGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5p
ZCgpOwogICAgIGJvb2wgaXNEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQgPSAoaWQgPT0gQ1NTVmFs
dWVSYWRpYWwpOwogICAgIGlmIChpc0RlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudCkKLSAgICAgICAg
cmVzdWx0ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKE5vblJlcGVhdGluZywgQ1NT
RGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50LCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JH
QiB7IH0sIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKKyAgICAg
ICAgcmVzdWx0ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKE5vblJlcGVhdGluZywg
Q1NTRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50LCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6
U1JHQiB7IH0sIGdyYWRpZW50QWxwaGFQcmVtdWx0aXBsaWNhdGlvbihjb250ZXh0KSB9KTsKICAg
ICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZUxpbmVhcikKLSAgICAgICAgcmVzdWx0ID0gQ1NTTGlu
ZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKE5vblJlcGVhdGluZywgQ1NTRGVwcmVjYXRlZExpbmVh
ckdyYWRpZW50LCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhhUHJl
bXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKKyAgICAgICAgcmVzdWx0ID0gQ1NT
TGluZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKE5vblJlcGVhdGluZywgQ1NTRGVwcmVjYXRlZExp
bmVhckdyYWRpZW50LCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIGdyYWRp
ZW50QWxwaGFQcmVtdWx0aXBsaWNhdGlvbihjb250ZXh0KSB9KTsKICAgICBpZiAoIXJlc3VsdCB8
fCAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKQEAgLTMwNTQsNyArMzA0MSw3IEBAIHN0YXRpYyBib29sIGNvbnN1bWVHcmFk
aWVudENvbG9yU3RvcHMoQ1NTUGFyc2VyVG9rZW5SYQogCiBzdGF0aWMgUmVmUHRyPENTU1ZhbHVl
PiBjb25zdW1lRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFy
Z3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIENTU0dyYWRpZW50UmVwZWF0IHJl
cGVhdGluZykKIHsKLSAgICBhdXRvIHJlc3VsdCA9IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNy
ZWF0ZShyZXBlYXRpbmcsIENTU1ByZWZpeGVkUmFkaWFsR3JhZGllbnQsIHsgQ29sb3JJbnRlcnBv
bGF0aW9uTWV0aG9kOjpTUkdCIHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0
aXBsaWVkIH0pOworICAgIGF1dG8gcmVzdWx0ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3Jl
YXRlKHJlcGVhdGluZywgQ1NTUHJlZml4ZWRSYWRpYWxHcmFkaWVudCwgeyBDb2xvckludGVycG9s
YXRpb25NZXRob2Q6OlNSR0IgeyB9LCBncmFkaWVudEFscGhhUHJlbXVsdGlwbGljYXRpb24oY29u
dGV4dCkgfSk7CiAKICAgICBhdXRvIGNlbnRlckNvb3JkaW5hdGUgPSBjb25zdW1lT25lT3JUd29W
YWx1ZWRQb3NpdGlvbkNvb3JkaW5hdGVzKGFyZ3MsIGNvbnRleHQubW9kZSwgVW5pdGxlc3NRdWly
azo6Rm9yYmlkKTsKICAgICBpZiAoY2VudGVyQ29vcmRpbmF0ZSAmJiAhY29uc3VtZUNvbW1hSW5j
bHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKQEAgLTMwOTgsNyArMzA4NSw3IEBAIHN0YXRpYyBSZWZQ
dHI8Q1NTVmFsdWU+IGNvbnN1bWVEZXByZWNhdGVkUmFkaWFsR3JhZGllbgogCiBzdGF0aWMgUmVm
UHRyPENTU1ZhbHVlPiBjb25zdW1lUmFkaWFsR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
YXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgQ1NTR3JhZGllbnRSZXBlYXQg
cmVwZWF0aW5nKQogewotICAgIFJlZlB0cjxDU1NSYWRpYWxHcmFkaWVudFZhbHVlPiByZXN1bHQg
PSBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGUocmVwZWF0aW5nLCBDU1NSYWRpYWxHcmFk
aWVudCwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRp
cGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CisgICAgUmVmUHRyPENTU1JhZGlhbEdyYWRp
ZW50VmFsdWU+IHJlc3VsdCA9IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZShyZXBlYXRp
bmcsIENTU1JhZGlhbEdyYWRpZW50LCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7
IH0sIGdyYWRpZW50QWxwaGFQcmVtdWx0aXBsaWNhdGlvbihjb250ZXh0KSB9KTsKIAogICAgIFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc2hhcGU7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBzaXplS2V5d29yZDsKQEAgLTMxODYsNyArMzE3Myw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NT
VmFsdWU+IGNvbnN1bWVSYWRpYWxHcmFkaWVudChDU1NQYXJzZQogCiBzdGF0aWMgUmVmUHRyPENT
U1ZhbHVlPiBjb25zdW1lTGluZWFyR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywg
Y29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0
aW5nLCBDU1NHcmFkaWVudFR5cGUgZ3JhZGllbnRUeXBlKQogewotICAgIFJlZlB0cjxDU1NMaW5l
YXJHcmFkaWVudFZhbHVlPiByZXN1bHQgPSBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjcmVhdGUo
cmVwZWF0aW5nLCBncmFkaWVudFR5cGUsIHsgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdC
IHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkIH0pOworICAgIFJl
ZlB0cjxDU1NMaW5lYXJHcmFkaWVudFZhbHVlPiByZXN1bHQgPSBDU1NMaW5lYXJHcmFkaWVudFZh
bHVlOjpjcmVhdGUocmVwZWF0aW5nLCBncmFkaWVudFR5cGUsIHsgQ29sb3JJbnRlcnBvbGF0aW9u
TWV0aG9kOjpTUkdCIHsgfSwgZ3JhZGllbnRBbHBoYVByZW11bHRpcGxpY2F0aW9uKGNvbnRleHQp
IH0pOwogCiAgICAgYm9vbCBleHBlY3RDb21tYSA9IHRydWU7CiAgICAgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBhbmdsZSA9IGNvbnN1bWVBbmdsZShhcmdzLCBjb250ZXh0Lm1vZGUsIFVuaXRs
ZXNzUXVpcms6OkZvcmJpZCwgVW5pdGxlc3NaZXJvUXVpcms6OkFsbG93KTsKQEAgLTMyMjAsNyAr
MzIwNyw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVMaW5lYXJHcmFkaWVudChD
U1NQYXJzZQogc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUNvbmljR3JhZGllbnQoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwg
Q1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0aW5nKQogewogI2lmIEVOQUJMRShDU1NfQ09OSUNfR1JB
RElFTlRTKQotICAgIFJlZlB0cjxDU1NDb25pY0dyYWRpZW50VmFsdWU+IHJlc3VsdCA9IENTU0Nv
bmljR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGluZywgeyBDb2xvckludGVycG9sYXRpb25N
ZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQg
fSk7CisgICAgUmVmUHRyPENTU0NvbmljR3JhZGllbnRWYWx1ZT4gcmVzdWx0ID0gQ1NTQ29uaWNH
cmFkaWVudFZhbHVlOjpjcmVhdGUocmVwZWF0aW5nLCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhv
ZDo6U1JHQiB7IH0sIGdyYWRpZW50QWxwaGFQcmVtdWx0aXBsaWNhdGlvbihjb250ZXh0KSB9KTsK
IAogICAgIGJvb2wgZXhwZWN0Q29tbWEgPSBmYWxzZTsKICAgICBpZiAoYXJncy5wZWVrKCkudHlw
ZSgpID09IElkZW50VG9rZW4pIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yQ29tcG9uZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yQ29tcG9uZW50cy5oCShyZXZpc2lvbiAyODcyMzMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbXBvbmVudHMuaAkod29ya2luZyBj
b3B5KQpAQCAtNjgsNiArNjgsOCBAQCBzdHJ1Y3QgQ29sb3JDb21wb25lbnRzIHsKICAgICB0ZW1w
bGF0ZTxzaXplX3QgU3RhcnQsIHNpemVfdCBFbmQ+CiAgICAgY29uc3RleHByIENvbG9yQ29tcG9u
ZW50czxULCBFbmQgLSBTdGFydD4gc3Vic2V0KCkgY29uc3Q7CiAKKyAgICBjb25zdGV4cHIgc2l6
ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBTaXplOyB9CisKICAgICBzdGQ6OmFycmF5PFQsIE4+
IGNvbXBvbmVudHM7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvckludGVycG9sYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvckludGVycG9sYXRpb24uaAkocmV2aXNpb24gMjg3MjMzKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JJbnRlcnBvbGF0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIgorI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAi
Q29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLmgiCiAjaW5jbHVkZSAiQ29sb3JOb3JtYWxpemF0aW9u
LmgiCiAjaW5jbHVkZSAiQ29sb3JUeXBlcy5oIgpAQCAtMzYsMTQgKzM3LDE0IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gZml4dXBIdWVDb21wb25lbnRz
UHJpb3JUb0ludGVycG9sYXRpb24oSHVlSW50ZXJwb2xhdGlvbk1ldGhvZCwgZmxvYXQsIGZsb2F0
KTsKIAotdGVtcGxhdGU8c2l6ZV90IEksIEFscGhhUHJlbXVsdGlwbGljYXRpb24gYWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiwgdHlwZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhvZD4KLXN0ZDo6cGFpcjxm
bG9hdCwgZmxvYXQ+IHByZUludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uRm9yQ29tcG9uZW50KElu
dGVycG9sYXRpb25NZXRob2QgaW50ZXJwb2xhdGlvbk1ldGhvZCwgQ29sb3JDb21wb25lbnRzPGZs
b2F0LCA0PiBjb2xvckNvbXBvbmVudHMxLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbG9y
Q29tcG9uZW50czIpCit0ZW1wbGF0ZTxzaXplX3QgSSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBh
bHBoYVByZW11bHRpcGxpY2F0aW9uLCB0eXBlbmFtZSBJbnRlcnBvbGF0aW9uTWV0aG9kQ29sb3JT
cGFjZT4KK3N0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IHByZUludGVycG9sYXRpb25Ob3JtYWxpemF0
aW9uRm9yQ29tcG9uZW50KEludGVycG9sYXRpb25NZXRob2RDb2xvclNwYWNlIGludGVycG9sYXRp
b25NZXRob2RDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbG9yQ29tcG9u
ZW50czEsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gY29sb3JDb21wb25lbnRzMikKIHsKLSAg
ICB1c2luZyBDb2xvclR5cGUgPSB0eXBlbmFtZSBJbnRlcnBvbGF0aW9uTWV0aG9kOjpDb2xvclR5
cGU7CisgICAgdXNpbmcgQ29sb3JUeXBlID0gdHlwZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhvZENv
bG9yU3BhY2U6OkNvbG9yVHlwZTsKICAgICBjb25zdGV4cHIgYXV0byBjb21wb25lbnRJbmZvID0g
Q29sb3JUeXBlOjpNb2RlbDo6Y29tcG9uZW50SW5mbzsKIAogICAgIGlmIGNvbnN0ZXhwciAoY29t
cG9uZW50SW5mb1tJXS50eXBlID09IENvbG9yQ29tcG9uZW50VHlwZTo6QW5nbGUpCi0gICAgICAg
IHJldHVybiBmaXh1cEh1ZUNvbXBvbmVudHNQcmlvclRvSW50ZXJwb2xhdGlvbihpbnRlcnBvbGF0
aW9uTWV0aG9kLmh1ZUludGVycG9sYXRpb25NZXRob2QsIGNvbG9yQ29tcG9uZW50czFbSV0sIGNv
bG9yQ29tcG9uZW50czJbSV0pOworICAgICAgICByZXR1cm4gZml4dXBIdWVDb21wb25lbnRzUHJp
b3JUb0ludGVycG9sYXRpb24oaW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2UuaHVlSW50ZXJw
b2xhdGlvbk1ldGhvZCwgY29sb3JDb21wb25lbnRzMVtJXSwgY29sb3JDb21wb25lbnRzMltJXSk7
CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoYWxwaGFQcmVtdWx0aXBsaWNhdGlv
biA9PSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkKQogICAgICAgICAgICAg
cmV0dXJuIHsgY29sb3JDb21wb25lbnRzMVtJXSAqIGNvbG9yQ29tcG9uZW50czFbM10sIGNvbG9y
Q29tcG9uZW50czJbSV0gKiBjb2xvckNvbXBvbmVudHMyWzNdIH07CkBAIC01MiwxMiArNTMsMTIg
QEAgc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gcHJlSW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb25G
CiAgICAgfQogfQogCi10ZW1wbGF0ZTxBbHBoYVByZW11bHRpcGxpY2F0aW9uIGFscGhhUHJlbXVs
dGlwbGljYXRpb24sIHR5cGVuYW1lIEludGVycG9sYXRpb25NZXRob2Q+Ci1zdGQ6OnBhaXI8Q29s
b3JDb21wb25lbnRzPGZsb2F0LCA0PiwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0Pj4gcHJlSW50
ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb24oSW50ZXJwb2xhdGlvbk1ldGhvZCBpbnRlcnBvbGF0aW9u
TWV0aG9kLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbG9yQ29tcG9uZW50czEsIENvbG9y
Q29tcG9uZW50czxmbG9hdCwgND4gY29sb3JDb21wb25lbnRzMikKK3RlbXBsYXRlPEFscGhhUHJl
bXVsdGlwbGljYXRpb24gYWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwgdHlwZW5hbWUgSW50ZXJwb2xh
dGlvbk1ldGhvZENvbG9yU3BhY2U+CitzdGQ6OnBhaXI8Q29sb3JDb21wb25lbnRzPGZsb2F0LCA0
PiwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0Pj4gcHJlSW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRp
b24oSW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2UgaW50ZXJwb2xhdGlvbk1ldGhvZENvbG9y
U3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gY29sb3JDb21wb25lbnRzMSwgQ29sb3JD
b21wb25lbnRzPGZsb2F0LCA0PiBjb2xvckNvbXBvbmVudHMyKQogewotICAgIGF1dG8gW2NvbG9y
QTAsIGNvbG9yQjBdID0gcHJlSW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb25Gb3JDb21wb25lbnQ8
MCwgYWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4oaW50ZXJwb2xhdGlvbk1ldGhvZCwgY29sb3JDb21w
b25lbnRzMSwgY29sb3JDb21wb25lbnRzMik7Ci0gICAgYXV0byBbY29sb3JBMSwgY29sb3JCMV0g
PSBwcmVJbnRlcnBvbGF0aW9uTm9ybWFsaXphdGlvbkZvckNvbXBvbmVudDwxLCBhbHBoYVByZW11
bHRpcGxpY2F0aW9uPihpbnRlcnBvbGF0aW9uTWV0aG9kLCBjb2xvckNvbXBvbmVudHMxLCBjb2xv
ckNvbXBvbmVudHMyKTsKLSAgICBhdXRvIFtjb2xvckEyLCBjb2xvckIyXSA9IHByZUludGVycG9s
YXRpb25Ob3JtYWxpemF0aW9uRm9yQ29tcG9uZW50PDIsIGFscGhhUHJlbXVsdGlwbGljYXRpb24+
KGludGVycG9sYXRpb25NZXRob2QsIGNvbG9yQ29tcG9uZW50czEsIGNvbG9yQ29tcG9uZW50czIp
OworICAgIGF1dG8gW2NvbG9yQTAsIGNvbG9yQjBdID0gcHJlSW50ZXJwb2xhdGlvbk5vcm1hbGl6
YXRpb25Gb3JDb21wb25lbnQ8MCwgYWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4oaW50ZXJwb2xhdGlv
bk1ldGhvZENvbG9yU3BhY2UsIGNvbG9yQ29tcG9uZW50czEsIGNvbG9yQ29tcG9uZW50czIpOwor
ICAgIGF1dG8gW2NvbG9yQTEsIGNvbG9yQjFdID0gcHJlSW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRp
b25Gb3JDb21wb25lbnQ8MSwgYWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4oaW50ZXJwb2xhdGlvbk1l
dGhvZENvbG9yU3BhY2UsIGNvbG9yQ29tcG9uZW50czEsIGNvbG9yQ29tcG9uZW50czIpOworICAg
IGF1dG8gW2NvbG9yQTIsIGNvbG9yQjJdID0gcHJlSW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb25G
b3JDb21wb25lbnQ8MiwgYWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4oaW50ZXJwb2xhdGlvbk1ldGhv
ZENvbG9yU3BhY2UsIGNvbG9yQ29tcG9uZW50czEsIGNvbG9yQ29tcG9uZW50czIpOwogCiAgICAg
cmV0dXJuIHsKICAgICAgICAgeyBjb2xvckEwLCBjb2xvckExLCBjb2xvckEyLCBjb2xvckNvbXBv
bmVudHMxWzNdIH0sCkBAIC02OCwxMCArNjksMTAgQEAgc3RkOjpwYWlyPENvbG9yQ29tcG9uZW50
czxmbG9hdCwgND4sIENvbG9yQ29tcG9uZW50czxmCiAKIC8vIE1BUks6IC0gUG9zdC1pbnRlcnBv
bGF0aW9uIG5vcm1hbGl6YXRpb24vZml4dXAKIAotdGVtcGxhdGU8c2l6ZV90IEksIEFscGhhUHJl
bXVsdGlwbGljYXRpb24gYWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwgdHlwZW5hbWUgSW50ZXJwb2xh
dGlvbk1ldGhvZD4KLWZsb2F0IHBvc3RJbnRlcnBvbGF0aW9uTm9ybWFsaXphdGlvbkZvckNvbXBv
bmVudChJbnRlcnBvbGF0aW9uTWV0aG9kLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbG9y
Q29tcG9uZW50cykKK3RlbXBsYXRlPHNpemVfdCBJLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGFs
cGhhUHJlbXVsdGlwbGljYXRpb24sIHR5cGVuYW1lIEludGVycG9sYXRpb25NZXRob2RDb2xvclNw
YWNlPgorZmxvYXQgcG9zdEludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uRm9yQ29tcG9uZW50KElu
dGVycG9sYXRpb25NZXRob2RDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNv
bG9yQ29tcG9uZW50cykKIHsKLSAgICB1c2luZyBDb2xvclR5cGUgPSB0eXBlbmFtZSBJbnRlcnBv
bGF0aW9uTWV0aG9kOjpDb2xvclR5cGU7CisgICAgdXNpbmcgQ29sb3JUeXBlID0gdHlwZW5hbWUg
SW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2U6OkNvbG9yVHlwZTsKICAgICBjb25zdGV4cHIg
YXV0byBjb21wb25lbnRJbmZvID0gQ29sb3JUeXBlOjpNb2RlbDo6Y29tcG9uZW50SW5mbzsKIAog
ICAgIGlmIGNvbnN0ZXhwciAoY29tcG9uZW50SW5mb1tJXS50eXBlICE9IENvbG9yQ29tcG9uZW50
VHlwZTo6QW5nbGUgJiYgYWxwaGFQcmVtdWx0aXBsaWNhdGlvbiA9PSBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpQcmVtdWx0aXBsaWVkKSB7CkBAIC04MiwxMyArODMsMTMgQEAgZmxvYXQgcG9zdElu
dGVycG9sYXRpb25Ob3JtYWxpemF0aW9uRm9yQ29tcG9uZW50KEludGVyCiAgICAgICAgIHJldHVy
biBjb2xvckNvbXBvbmVudHNbSV07CiB9CiAKLXRlbXBsYXRlPEFscGhhUHJlbXVsdGlwbGljYXRp
b24gYWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwgdHlwZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhvZD4K
LUNvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gcG9zdEludGVycG9sYXRpb25Ob3JtYWxpemF0aW9u
KEludGVycG9sYXRpb25NZXRob2QgaW50ZXJwb2xhdGlvbk1ldGhvZCwgQ29sb3JDb21wb25lbnRz
PGZsb2F0LCA0PiBjb2xvckNvbXBvbmVudHMpCit0ZW1wbGF0ZTxBbHBoYVByZW11bHRpcGxpY2F0
aW9uIGFscGhhUHJlbXVsdGlwbGljYXRpb24sIHR5cGVuYW1lIEludGVycG9sYXRpb25NZXRob2RD
b2xvclNwYWNlPgorQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBwb3N0SW50ZXJwb2xhdGlvbk5v
cm1hbGl6YXRpb24oSW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2UgaW50ZXJwb2xhdGlvbk1l
dGhvZENvbG9yU3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gY29sb3JDb21wb25lbnRz
KQogewogICAgIHJldHVybiB7Ci0gICAgICAgIHBvc3RJbnRlcnBvbGF0aW9uTm9ybWFsaXphdGlv
bkZvckNvbXBvbmVudDwwLCBhbHBoYVByZW11bHRpcGxpY2F0aW9uPihpbnRlcnBvbGF0aW9uTWV0
aG9kLCBjb2xvckNvbXBvbmVudHMpLAotICAgICAgICBwb3N0SW50ZXJwb2xhdGlvbk5vcm1hbGl6
YXRpb25Gb3JDb21wb25lbnQ8MSwgYWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4oaW50ZXJwb2xhdGlv
bk1ldGhvZCwgY29sb3JDb21wb25lbnRzKSwKLSAgICAgICAgcG9zdEludGVycG9sYXRpb25Ob3Jt
YWxpemF0aW9uRm9yQ29tcG9uZW50PDIsIGFscGhhUHJlbXVsdGlwbGljYXRpb24+KGludGVycG9s
YXRpb25NZXRob2QsIGNvbG9yQ29tcG9uZW50cyksCisgICAgICAgIHBvc3RJbnRlcnBvbGF0aW9u
Tm9ybWFsaXphdGlvbkZvckNvbXBvbmVudDwwLCBhbHBoYVByZW11bHRpcGxpY2F0aW9uPihpbnRl
cnBvbGF0aW9uTWV0aG9kQ29sb3JTcGFjZSwgY29sb3JDb21wb25lbnRzKSwKKyAgICAgICAgcG9z
dEludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uRm9yQ29tcG9uZW50PDEsIGFscGhhUHJlbXVsdGlw
bGljYXRpb24+KGludGVycG9sYXRpb25NZXRob2RDb2xvclNwYWNlLCBjb2xvckNvbXBvbmVudHMp
LAorICAgICAgICBwb3N0SW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb25Gb3JDb21wb25lbnQ8Miwg
YWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4oaW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2UsIGNv
bG9yQ29tcG9uZW50cyksCiAgICAgICAgIGNvbG9yQ29tcG9uZW50c1szXQogICAgIH07CiAgfQpA
QCAtOTYsMTEgKzk3LDExIEBAIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gcG9zdEludGVycG9s
YXRpb25Ob3JtYWxpemF0aQogCiAvLyBNQVJLOiAtIEludGVycG9sYXRpb24KIAotdGVtcGxhdGU8
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBhbHBoYVByZW11bHRpcGxpY2F0aW9uLCB0eXBlbmFtZSBJ
bnRlcnBvbGF0aW9uTWV0aG9kPgotdHlwZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhvZDo6Q29sb3JU
eXBlIGludGVycG9sYXRlQ29sb3JDb21wb25lbnRzKEludGVycG9sYXRpb25NZXRob2QgaW50ZXJw
b2xhdGlvbk1ldGhvZCwgdHlwZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhvZDo6Q29sb3JUeXBlIGNv
bG9yMSwgZG91YmxlIGNvbG9yMU11bHRpcGxpZXIsIHR5cGVuYW1lIEludGVycG9sYXRpb25NZXRo
b2Q6OkNvbG9yVHlwZSBjb2xvcjIsIGRvdWJsZSBjb2xvcjJNdWx0aXBsaWVyKQordGVtcGxhdGU8
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBhbHBoYVByZW11bHRpcGxpY2F0aW9uLCB0eXBlbmFtZSBJ
bnRlcnBvbGF0aW9uTWV0aG9kQ29sb3JTcGFjZT4KK3R5cGVuYW1lIEludGVycG9sYXRpb25NZXRo
b2RDb2xvclNwYWNlOjpDb2xvclR5cGUgaW50ZXJwb2xhdGVDb2xvckNvbXBvbmVudHMoSW50ZXJw
b2xhdGlvbk1ldGhvZENvbG9yU3BhY2UgaW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2UsIHR5
cGVuYW1lIEludGVycG9sYXRpb25NZXRob2RDb2xvclNwYWNlOjpDb2xvclR5cGUgY29sb3IxLCBk
b3VibGUgY29sb3IxTXVsdGlwbGllciwgdHlwZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhvZENvbG9y
U3BhY2U6OkNvbG9yVHlwZSBjb2xvcjIsIGRvdWJsZSBjb2xvcjJNdWx0aXBsaWVyKQogewogICAg
IC8vIDEuIEFwcGx5IHByZS1pbnRlcnBvbGF0aW9uIHRyYW5zZm9ybXMgKGh1ZSBmaXh1cCBmb3Ig
cG9sYXIgY29sb3Igc3BhY2VzLCBhbHBoYSBwcmVtdWx0aXBsaWNhdGlvbiBpZiByZXF1aXJlZCku
Ci0gICAgYXV0byBbbm9ybWFsaXplZENvbG9yQ29tcG9uZW50czEsIG5vcm1hbGl6ZWRDb2xvckNv
bXBvbmVudHMyXSA9IHByZUludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uPGFscGhhUHJlbXVsdGlw
bGljYXRpb24+KGludGVycG9sYXRpb25NZXRob2QsIGFzQ29sb3JDb21wb25lbnRzKGNvbG9yMSks
IGFzQ29sb3JDb21wb25lbnRzKGNvbG9yMikpOworICAgIGF1dG8gW25vcm1hbGl6ZWRDb2xvckNv
bXBvbmVudHMxLCBub3JtYWxpemVkQ29sb3JDb21wb25lbnRzMl0gPSBwcmVJbnRlcnBvbGF0aW9u
Tm9ybWFsaXphdGlvbjxhbHBoYVByZW11bHRpcGxpY2F0aW9uPihpbnRlcnBvbGF0aW9uTWV0aG9k
Q29sb3JTcGFjZSwgYXNDb2xvckNvbXBvbmVudHMoY29sb3IxKSwgYXNDb2xvckNvbXBvbmVudHMo
Y29sb3IyKSk7CiAKICAgICAvLyAyLiBJbnRlcnBvbGF0ZSB1c2luZyB0aGUgbm9ybWFsaXplZCBj
b21wb25lbnRzLgogICAgIGF1dG8gaW50ZXJwb2xhdGVkQ29sb3JDb21wb25lbnRzID0gbWFwQ29s
b3JDb21wb25lbnRzKFsmXSAoYXV0byBjb21wb25lbnRGcm9tQ29sb3IxLCBhdXRvIGNvbXBvbmVu
dEZyb21Db2xvcjIpIC0+IGZsb2F0IHsKQEAgLTEwOCwxMCArMTA5LDI1IEBAIHR5cGVuYW1lIElu
dGVycG9sYXRpb25NZXRob2Q6OkNvbG9yVHlwZSBpbnRlcnBvbGF0ZUNvbAogICAgIH0sIG5vcm1h
bGl6ZWRDb2xvckNvbXBvbmVudHMxLCBub3JtYWxpemVkQ29sb3JDb21wb25lbnRzMik7CiAKICAg
ICAvLyAzLiBBcHBseSBwb3N0LWludGVycG9sYXRpb24gdHJhc2Zvcm1zIChhbHBoYSB1bi1wcmVt
dWx0aXBsaWNhdGlvbiBpZiByZXF1aXJlZCkuCi0gICAgYXV0byBub3JtYWxpemVkSW50ZXJwb2xh
dGVkQ29sb3JDb21wb25lbnRzID0gcG9zdEludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uPGFscGhh
UHJlbXVsdGlwbGljYXRpb24+KGludGVycG9sYXRpb25NZXRob2QsIGludGVycG9sYXRlZENvbG9y
Q29tcG9uZW50cyk7CisgICAgYXV0byBub3JtYWxpemVkSW50ZXJwb2xhdGVkQ29sb3JDb21wb25l
bnRzID0gcG9zdEludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uPGFscGhhUHJlbXVsdGlwbGljYXRp
b24+KGludGVycG9sYXRpb25NZXRob2RDb2xvclNwYWNlLCBpbnRlcnBvbGF0ZWRDb2xvckNvbXBv
bmVudHMpOwogCiAgICAgLy8gNC4gQ3JlYXRlIGNvbG9yIHR5cGUgZnJvbSBjb21wb25lbnRzLCBu
b3JtYWxpemluZyBhbnkgY29tcG9uZW50cyB0aGF0IG1heSBiZSBvdXQgb2YgcmFuZ2UuCi0gICAg
cmV0dXJuIG1ha2VDb2xvclR5cGVCeU5vcm1hbGl6aW5nQ29tcG9uZW50czx0eXBlbmFtZSBJbnRl
cnBvbGF0aW9uTWV0aG9kOjpDb2xvclR5cGU+KG5vcm1hbGl6ZWRJbnRlcnBvbGF0ZWRDb2xvckNv
bXBvbmVudHMpOworICAgIHJldHVybiBtYWtlQ29sb3JUeXBlQnlOb3JtYWxpemluZ0NvbXBvbmVu
dHM8dHlwZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2U6OkNvbG9yVHlwZT4obm9y
bWFsaXplZEludGVycG9sYXRlZENvbG9yQ29tcG9uZW50cyk7Cit9CisKK2lubGluZSBDb2xvciBp
bnRlcnBvbGF0ZUNvbG9ycyhDb2xvckludGVycG9sYXRpb25NZXRob2QgY29sb3JJbnRlcnBvbGF0
aW9uTWV0aG9kLCBDb2xvciBjb2xvcjEsIGRvdWJsZSBjb2xvcjFNdWx0aXBsaWVyLCBDb2xvciBj
b2xvcjIsIGRvdWJsZSBjb2xvcjJNdWx0aXBsaWVyKQoreworICAgIHJldHVybiBXVEY6OnN3aXRj
aE9uKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5jb2xvclNwYWNlLAorICAgICAgICBbJl0gKGF1
dG8mIGNvbG9yU3BhY2UpIHsKKyAgICAgICAgICAgIHVzaW5nIENvbG9yVHlwZSA9IHR5cGVuYW1l
IHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PGRlY2x0eXBlKGNvbG9yU3BhY2UpPjo6Q29sb3JUeXBl
OworICAgICAgICAgICAgc3dpdGNoIChjb2xvckludGVycG9sYXRpb25NZXRob2QuYWxwaGFQcmVt
dWx0aXBsaWNhdGlvbikgeworICAgICAgICAgICAgY2FzZSBBbHBoYVByZW11bHRpcGxpY2F0aW9u
OjpQcmVtdWx0aXBsaWVkOgorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlQ2Fub25pY2FsQ29s
b3IoaW50ZXJwb2xhdGVDb2xvckNvbXBvbmVudHM8QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJl
bXVsdGlwbGllZD4oY29sb3JTcGFjZSwgY29sb3IxLnRvQ29sb3JUeXBlTG9zc3k8Q29sb3JUeXBl
PigpLCBjb2xvcjFNdWx0aXBsaWVyLCBjb2xvcjIudG9Db2xvclR5cGVMb3NzeTxDb2xvclR5cGU+
KCksIGNvbG9yMk11bHRpcGxpZXIpKTsKKyAgICAgICAgICAgIGNhc2UgQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkOgorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlQ2Fu
b25pY2FsQ29sb3IoaW50ZXJwb2xhdGVDb2xvckNvbXBvbmVudHM8QWxwaGFQcmVtdWx0aXBsaWNh
dGlvbjo6VW5wcmVtdWx0aXBsaWVkPihjb2xvclNwYWNlLCBjb2xvcjEudG9Db2xvclR5cGVMb3Nz
eTxDb2xvclR5cGU+KCksIGNvbG9yMU11bHRpcGxpZXIsIGNvbG9yMi50b0NvbG9yVHlwZUxvc3N5
PENvbG9yVHlwZT4oKSwgY29sb3IyTXVsdGlwbGllcikpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JOb3JtYWxpemF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JOb3JtYWxpemF0aW9uLmgJKHJldmlzaW9uIDI4NzIzMykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTm9ybWFsaXphdGlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSwxNCArMjUsMTkgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkNvbG9yQ29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkNv
bG9yVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZT4gQ29sb3JUeXBlIG1ha2VDb2xv
clR5cGVCeU5vcm1hbGl6aW5nQ29tcG9uZW50cyhjb25zdCBDb2xvckNvbXBvbmVudHM8ZmxvYXQs
IDQ+Jik7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGU+IENvbG9yIG1ha2VDYW5vbmljYWxD
b2xvcihDb2xvclR5cGUpOwogCiAKKy8vIE1BUks6IC0gTm9ybWFsaXphdGlvbgorCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb21wb25lbnRUeXBlPiBzdHJ1Y3QgV2hpdGVuZXNzQmxhY2tuZXNzIHsKICAg
ICBDb21wb25lbnRUeXBlIHdoaXRlbmVzczsKICAgICBDb21wb25lbnRUeXBlIGJsYWNrbmVzczsK
QEAgLTk5LDYgKzEwNCwyMyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBPS0xDSEE8ZmxvYXQ+IG1ha2VD
b2xvclR5cGVCeU5vcm1hbGkKICAgICBmbG9hdCBub3JtYWxpemVkSHVlID0gbm9ybWFsaXplSHVl
KGh1ZSk7CiAKICAgICByZXR1cm4geyBsaWdodG5lc3MsIGNocm9tYSwgbm9ybWFsaXplZEh1ZSwg
YWxwaGEgfTsKK30KKworLy8gTUFSSzogLSBDYW5vbmljYWxpemF0aW9uCisKK3RlbXBsYXRlPHR5
cGVuYW1lIENvbG9yVHlwZT4gaW5saW5lIENvbG9yIG1ha2VDYW5vbmljYWxDb2xvcihDb2xvclR5
cGUgY29sb3IpCit7CisgICAgcmV0dXJuIGNvbG9yOworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBD
b2xvciBtYWtlQ2Fub25pY2FsQ29sb3I8SFdCQTxmbG9hdD4+KEhXQkE8ZmxvYXQ+IGNvbG9yKQor
eworICAgIHJldHVybiBjb252ZXJ0Q29sb3I8U1JHQkE8dWludDhfdD4+KGNvbG9yKTsKK30KKwor
dGVtcGxhdGU8PiBpbmxpbmUgQ29sb3IgbWFrZUNhbm9uaWNhbENvbG9yPEhTTEE8ZmxvYXQ+PihI
U0xBPGZsb2F0PiBjb2xvcikKK3sKKyAgICByZXR1cm4gY29udmVydENvbG9yPFNSR0JBPHVpbnQ4
X3Q+Pihjb2xvcik7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYWRpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhZGllbnQuaAkocmV2aXNpb24gMjg3MjMzKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTYgKzI3LDE2
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5j
bHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJDb2xvckludGVycG9sYXRpb25NZXRob2QuaCIKICNp
bmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAiR3JhZGllbnRDb2xvclN0b3AuaCIKICNp
bmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCiAjaW5jbHVkZSA8dmFyaWFudD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKICNpZiBVU0UoQ0cpCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgor
I2luY2x1ZGUgIkdyYWRpZW50UmVuZGVyZXJDRy5oIgogI2VuZGlmCiAKICNpZiBVU0UoRElSRUNU
MkQpCkBAIC00NSw3ICs0NSw2IEBACiAKICNpZiBVU0UoQ0cpCiB0eXBlZGVmIHN0cnVjdCBDR0Nv
bnRleHQqIENHQ29udGV4dFJlZjsKLXR5cGVkZWYgc3RydWN0IENHR3JhZGllbnQqIENHR3JhZGll
bnRSZWY7CiAjZW5kaWYKIAogI2lmIFVTRShESVJFQ1QyRCkKQEAgLTU5LDIxICs1OCwxNSBAQCB0
eXBlZGVmIHN0cnVjdCBfY2Fpcm9fcGF0dGVybiBjYWlyb19wYXR0ZXJuX3Q7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgRmxvYXRSZWN0Owog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0OwogCiBjbGFzcyBHcmFkaWVudCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEdyYWRpZW50PiB7CiBwdWJsaWM6Ci0gICAgc3RydWN0IENvbG9yU3RvcCB7Ci0gICAgICAg
IGZsb2F0IG9mZnNldCB7IDAgfTsKLSAgICAgICAgQ29sb3IgY29sb3I7CisgICAgdXNpbmcgQ29s
b3JTdG9wID0gR3JhZGllbnRDb2xvclN0b3A7CisgICAgdXNpbmcgQ29sb3JTdG9wVmVjdG9yID0g
R3JhZGllbnRDb2xvclN0b3BWZWN0b3I7CiAKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxDb2xvclN0b3A+IGRlY29kZShEZWNv
ZGVyJik7Ci0gICAgfTsKLQotICAgIHVzaW5nIENvbG9yU3RvcFZlY3RvciA9IFZlY3RvcjxDb2xv
clN0b3AsIDI+OwotCiAgICAgc3RydWN0IExpbmVhckRhdGEgewogICAgICAgICBGbG9hdFBvaW50
IHBvaW50MDsKICAgICAgICAgRmxvYXRQb2ludCBwb2ludDE7CkBAIC0xNDQsMTEgKzEzNyw2IEBA
IGNsYXNzIEdyYWRpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8R3JhZGllbnQ+IHsgKHByaXZhdAog
ICAgIHZvaWQgc29ydFN0b3BzKCkgY29uc3Q7CiAgICAgdm9pZCBzdG9wc0NoYW5nZWQoKTsKIAot
I2lmIFVTRShDRykKLSAgICB2b2lkIGNyZWF0ZUNHR3JhZGllbnQoKTsKLSAgICBib29sIGhhc09u
bHlCb3VuZGVkU1JHQkNvbG9yU3RvcHMoKSBjb25zdDsKLSNlbmRpZgotCiAgICAgRGF0YSBtX2Rh
dGE7CiAgICAgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIG1fY29sb3JJbnRlcnBvbGF0aW9uTWV0
aG9kOwogICAgIG11dGFibGUgQ29sb3JTdG9wVmVjdG9yIG1fc3RvcHM7CkBAIC0xNTcsMzQgKzE0
NSwxMyBAQCBjbGFzcyBHcmFkaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYWRpZW50PiB7IChw
cml2YXQKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fY2FjaGVkSGFzaCB7IDAgfTsKIAogI2lmIFVT
RShDRykKLSAgICBSZXRhaW5QdHI8Q0dHcmFkaWVudFJlZj4gbV9ncmFkaWVudDsKKyAgICBzdGQ6
Om9wdGlvbmFsPEdyYWRpZW50UmVuZGVyZXJDRz4gbV9wbGF0Zm9ybVJlbmRlcmVyOwogI2VuZGlm
CiAKICNpZiBVU0UoRElSRUNUMkQpCiAgICAgQ09NUHRyPElEMkQxQnJ1c2g+IG1fYnJ1c2g7CiAj
ZW5kaWYKIH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgR3JhZGllbnQ6OkNv
bG9yU3RvcDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8
PCBvZmZzZXQ7Ci0gICAgZW5jb2RlciA8PCBjb2xvcjsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
RGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxHcmFkaWVudDo6Q29sb3JTdG9wPiBHcmFkaWVudDo6Q29s
b3JTdG9wOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBzdGQ6Om9wdGlvbmFsPGZs
b2F0PiBvZmZzZXQ7Ci0gICAgZGVjb2RlciA+PiBvZmZzZXQ7Ci0gICAgaWYgKCFvZmZzZXQpCi0g
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPENvbG9yPiBj
b2xvcjsKLSAgICBkZWNvZGVyID4+IGNvbG9yOwotICAgIGlmICghY29sb3IpCi0gICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4ge3sgKm9mZnNldCwgKmNvbG9yIH19Owot
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIEdyYWRpZW50OjpMaW5lYXJEYXRh
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50Q29sb3JTdG9wLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRDb2xvclN0b3AuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudENvbG9y
U3RvcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlIDxvcHRpb25hbD4KKyNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEdyYWRpZW50Q29s
b3JTdG9wIHsKKyAgICBmbG9hdCBvZmZzZXQgeyAwIH07CisgICAgQ29sb3IgY29sb3I7CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8R3Jh
ZGllbnRDb2xvclN0b3A+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit1c2luZyBHcmFkaWVudENv
bG9yU3RvcFZlY3RvciA9IFZlY3RvcjxHcmFkaWVudENvbG9yU3RvcCwgMj47CisKK3RlbXBsYXRl
PHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgR3JhZGllbnRDb2xvclN0b3A6OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgb2Zmc2V0OworICAgIGVuY29kZXIg
PDwgY29sb3I7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8
R3JhZGllbnRDb2xvclN0b3A+IEdyYWRpZW50Q29sb3JTdG9wOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBvZmZzZXQ7CisgICAgZGVjb2RlciA+
PiBvZmZzZXQ7CisgICAgaWYgKCFvZmZzZXQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICBzdGQ6Om9wdGlvbmFsPENvbG9yPiBjb2xvcjsKKyAgICBkZWNvZGVyID4+IGNvbG9y
OworICAgIGlmICghY29sb3IpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBy
ZXR1cm4ge3sgKm9mZnNldCwgKmNvbG9yIH19OworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENHLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENHLmNwcAkocmV2aXNpb24g
Mjg3MjMzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRD
Ry5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcyICsyOSwxNyBAQAogCiAjaWYgVVNFKENHKQog
CisjaW5jbHVkZSAiR3JhZGllbnRSZW5kZXJlckNHLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0Q0cuaCIKICNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgotI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEdyYWRp
ZW50OjpzdG9wc0NoYW5nZWQoKQogewotICAgIG1fZ3JhZGllbnQgPSBudWxscHRyOworICAgIG1f
cGxhdGZvcm1SZW5kZXJlciA9IHsgfTsKIH0KIAotYm9vbCBHcmFkaWVudDo6aGFzT25seUJvdW5k
ZWRTUkdCQ29sb3JTdG9wcygpIGNvbnN0Ci17Ci0gICAgZm9yIChjb25zdCBhdXRvJiBzdG9wIDog
bV9zdG9wcykgewotICAgICAgICBpZiAoc3RvcC5jb2xvci5jb2xvclNwYWNlKCkgIT0gQ29sb3JT
cGFjZTo6U1JHQikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLXZvaWQgR3JhZGllbnQ6OmNyZWF0ZUNHR3JhZGllbnQoKQotewotICAgIHNv
cnRTdG9wcygpOwotCi0gICAgdW5zaWduZWQgbnVtU3RvcHMgPSBtX3N0b3BzLnNpemUoKTsKLQot
ICAgIGNvbnN0IGludCByZXNlcnZlZFN0b3BzID0gMzsKLSAgICBWZWN0b3I8Q0dGbG9hdCwgcmVz
ZXJ2ZWRTdG9wcz4gbG9jYXRpb25zOwotICAgIGxvY2F0aW9ucy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KG51bVN0b3BzKTsKLQotICAgIC8vIElmIGFsbCB0aGUgc3RvcHMgYXJlIGJvdW5kZWQgc1JH
QiAoYXMgcmVwcmVzZW50ZWQgYnkgdGhlIGNvbG9yIGhhdmluZyB0aGUgY29sb3Igc3BhY2UKLSAg
ICAvLyBDb2xvclNwYWNlOjpTUkdCKSwgaXQgaXMgZmFzdGVyIHRvIGNyZWF0ZSBhIGdyYWRpZW50
IHVzaW5nIGNvbXBvbmVudHMgdGhhbiBDR0NvbG9ycy4KLSAgICBpZiAoaGFzT25seUJvdW5kZWRT
UkdCQ29sb3JTdG9wcygpKSB7Ci0gICAgICAgIFZlY3RvcjxDR0Zsb2F0LCA0ICogcmVzZXJ2ZWRT
dG9wcz4gY29sb3JDb21wb25lbnRzOwotICAgICAgICBjb2xvckNvbXBvbmVudHMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShudW1TdG9wcyAqIDQpOwotCi0gICAgICAgIGZvciAoY29uc3QgYXV0byYg
c3RvcCA6IG1fc3RvcHMpIHsKLSAgICAgICAgICAgIGF1dG8gW2NvbG9yU3BhY2UsIGNvbXBvbmVu
dHNdID0gc3RvcC5jb2xvci5jb2xvclNwYWNlQW5kQ29tcG9uZW50cygpOwotICAgICAgICAgICAg
YXV0byBbciwgZywgYiwgYV0gPSBjb21wb25lbnRzOwotICAgICAgICAgICAgY29sb3JDb21wb25l
bnRzLnVuY2hlY2tlZEFwcGVuZChyKTsKLSAgICAgICAgICAgIGNvbG9yQ29tcG9uZW50cy51bmNo
ZWNrZWRBcHBlbmQoZyk7Ci0gICAgICAgICAgICBjb2xvckNvbXBvbmVudHMudW5jaGVja2VkQXBw
ZW5kKGIpOwotICAgICAgICAgICAgY29sb3JDb21wb25lbnRzLnVuY2hlY2tlZEFwcGVuZChhKTsK
LQotICAgICAgICAgICAgbG9jYXRpb25zLnVuY2hlY2tlZEFwcGVuZChzdG9wLm9mZnNldCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBtX2dyYWRpZW50ID0gYWRvcHRDRihDR0dyYWRpZW50Q3JlYXRl
V2l0aENvbG9yQ29tcG9uZW50cyhzUkdCQ29sb3JTcGFjZVJlZigpLCBjb2xvckNvbXBvbmVudHMu
ZGF0YSgpLCBsb2NhdGlvbnMuZGF0YSgpLCBudW1TdG9wcykpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgYXV0byBjb2xvcnNBcnJheSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFi
bGUoMCwgbV9zdG9wcy5zaXplKCksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKLSAgICBmb3Ig
KGNvbnN0IGF1dG8mIHN0b3AgOiBtX3N0b3BzKSB7Ci0gICAgICAgIENGQXJyYXlBcHBlbmRWYWx1
ZShjb2xvcnNBcnJheS5nZXQoKSwgY2FjaGVkQ0dDb2xvcihzdG9wLmNvbG9yKS5nZXQoKSk7Ci0g
ICAgICAgIGxvY2F0aW9ucy51bmNoZWNrZWRBcHBlbmQoc3RvcC5vZmZzZXQpOwotICAgIH0KLQot
I2lmIEhBVkUoQ09SRV9HUkFQSElDU19FWFRFTkRFRF9TUkdCX0NPTE9SX1NQQUNFKQotICAgIGF1
dG8gZXh0ZW5kZWRDb2xvcnNHcmFkaWVudENvbG9yU3BhY2UgPSBleHRlbmRlZFNSR0JDb2xvclNw
YWNlUmVmKCk7Ci0jZWxzZQotICAgIGF1dG8gZXh0ZW5kZWRDb2xvcnNHcmFkaWVudENvbG9yU3Bh
Y2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOwotI2VuZGlmCi0KLSAgICBtX2dyYWRpZW50ID0gYWRv
cHRDRihDR0dyYWRpZW50Q3JlYXRlV2l0aENvbG9ycyhleHRlbmRlZENvbG9yc0dyYWRpZW50Q29s
b3JTcGFjZSwgY29sb3JzQXJyYXkuZ2V0KCksIGxvY2F0aW9ucy5kYXRhKCkpKTsKLX0KLQogdm9p
ZCBHcmFkaWVudDo6ZmlsbChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCkKIHsKICAgICBjb250ZXh0LmNsaXAocmVjdCk7CkBAIC0xMDgsMTggKzUzLDE4IEBA
IHZvaWQgR3JhZGllbnQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIAogdm9pZCBH
cmFkaWVudDo6cGFpbnQoQ0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dCkKIHsKLSAgICBDR0dy
YWRpZW50RHJhd2luZ09wdGlvbnMgZXh0ZW5kT3B0aW9ucyA9IGtDR0dyYWRpZW50RHJhd3NCZWZv
cmVTdGFydExvY2F0aW9uIHwga0NHR3JhZGllbnREcmF3c0FmdGVyRW5kTG9jYXRpb247CisgICAg
aWYgKCFtX3BsYXRmb3JtUmVuZGVyZXIpIHsKKyAgICAgICAgc29ydFN0b3BzKCk7CisgICAgICAg
IG1fcGxhdGZvcm1SZW5kZXJlciA9IEdyYWRpZW50UmVuZGVyZXJDRyB7IG1fY29sb3JJbnRlcnBv
bGF0aW9uTWV0aG9kLCBtX3N0b3BzIH07CisgICAgfQogCi0gICAgaWYgKCFtX2dyYWRpZW50KQot
ICAgICAgICBjcmVhdGVDR0dyYWRpZW50KCk7Ci0KICAgICBXVEY6OnN3aXRjaE9uKG1fZGF0YSwK
ICAgICAgICAgWyZdIChjb25zdCBMaW5lYXJEYXRhJiBkYXRhKSB7CiAgICAgICAgICAgICBzd2l0
Y2ggKG1fc3ByZWFkTWV0aG9kKSB7CiAgICAgICAgICAgICBjYXNlIEdyYWRpZW50U3ByZWFkTWV0
aG9kOjpSZXBlYXQ6CiAgICAgICAgICAgICBjYXNlIEdyYWRpZW50U3ByZWFkTWV0aG9kOjpSZWZs
ZWN0OiB7CiAgICAgICAgICAgICAgICAgQ0dDb250ZXh0U3RhdGVTYXZlciBzYXZlU3RhdGUocGxh
dGZvcm1Db250ZXh0KTsKLSAgICAgICAgICAgICAgICBleHRlbmRPcHRpb25zID0gMDsKKyAgICAg
ICAgICAgICAgICBDR0dyYWRpZW50RHJhd2luZ09wdGlvbnMgZXh0ZW5kT3B0aW9ucyA9IDA7CiAK
ICAgICAgICAgICAgICAgICBGbG9hdFBvaW50IGdyYWRpZW50VmVjdG9yTm9ybShkYXRhLnBvaW50
MSAtIGRhdGEucG9pbnQwKTsKICAgICAgICAgICAgICAgICBncmFkaWVudFZlY3Rvck5vcm0ubm9y
bWFsaXplKCk7CkBAIC0xNDMsNyArODgsNyBAQCB2b2lkIEdyYWRpZW50OjpwYWludChDR0NvbnRl
eHRSZWYgcGxhdGZvcm1Db250ZXh0KQogICAgICAgICAgICAgICAgICAgICBDR1BvaW50IGxlZnQg
PSBDR1BvaW50TWFrZShmbGlwID8gZW5kIDogc3RhcnQsIDApOwogICAgICAgICAgICAgICAgICAg
ICBDR1BvaW50IHJpZ2h0ID0gQ0dQb2ludE1ha2UoZmxpcCA/IHN0YXJ0IDogZW5kLCAwKTsKIAot
ICAgICAgICAgICAgICAgICAgICBDR0NvbnRleHREcmF3TGluZWFyR3JhZGllbnQocGxhdGZvcm1D
b250ZXh0LCBtX2dyYWRpZW50LmdldCgpLCBsZWZ0LCByaWdodCwgZXh0ZW5kT3B0aW9ucyk7Cisg
ICAgICAgICAgICAgICAgICAgIG1fcGxhdGZvcm1SZW5kZXJlci0+ZHJhd0xpbmVhckdyYWRpZW50
KHBsYXRmb3JtQ29udGV4dCwgbGVmdCwgcmlnaHQsIGV4dGVuZE9wdGlvbnMpOwogICAgICAgICAg
ICAgICAgIH07CiAKICAgICAgICAgICAgICAgICBhdXRvIGlzTGVmdE9mID0gW10oQ0dGbG9hdCBz
dGFydCwgQ0dGbG9hdCBlbmQsIENHUmVjdCBib3VuZGluZ0JveCkgLT4gYm9vbCB7CkBAIC0xODks
MTIgKzEzNCwxNCBAQCB2b2lkIEdyYWRpZW50OjpwYWludChDR0NvbnRleHRSZWYgcGxhdGZvcm1D
b250ZXh0KQogICAgICAgICAgICAgICAgICAgICBkcmF3TGluZWFyR3JhZGllbnQoZW5kIC0gZHgs
IGVuZCwgZmxpcCk7CiAgICAgICAgICAgICAgICAgICAgIGZsaXAgPSAhZmxpcCAmJiBtX3NwcmVh
ZE1ldGhvZCA9PSBHcmFkaWVudFNwcmVhZE1ldGhvZDo6UmVmbGVjdDsKICAgICAgICAgICAgICAg
ICB9Ci0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGNhc2UgR3JhZGllbnRTcHJlYWRNZXRob2Q6OlBhZDoKLSAgICAgICAgICAgICAgICBDR0NvbnRl
eHREcmF3TGluZWFyR3JhZGllbnQocGxhdGZvcm1Db250ZXh0LCBtX2dyYWRpZW50LmdldCgpLCBk
YXRhLnBvaW50MCwgZGF0YS5wb2ludDEsIGV4dGVuZE9wdGlvbnMpOworICAgICAgICAgICAgY2Fz
ZSBHcmFkaWVudFNwcmVhZE1ldGhvZDo6UGFkOiB7CisgICAgICAgICAgICAgICAgQ0dHcmFkaWVu
dERyYXdpbmdPcHRpb25zIGV4dGVuZE9wdGlvbnMgPSBrQ0dHcmFkaWVudERyYXdzQmVmb3JlU3Rh
cnRMb2NhdGlvbiB8IGtDR0dyYWRpZW50RHJhd3NBZnRlckVuZExvY2F0aW9uOworICAgICAgICAg
ICAgICAgIG1fcGxhdGZvcm1SZW5kZXJlci0+ZHJhd0xpbmVhckdyYWRpZW50KHBsYXRmb3JtQ29u
dGV4dCwgZGF0YS5wb2ludDAsIGRhdGEucG9pbnQxLCBleHRlbmRPcHRpb25zKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgfSwK
ICAgICAgICAgWyZdIChjb25zdCBSYWRpYWxEYXRhJiBkYXRhKSB7CiAgICAgICAgICAgICBib29s
IG5lZWRTY2FsaW5nID0gZGF0YS5hc3BlY3RSYXRpbyAhPSAxOwpAQCAtMjA4LDcgKzE1NSw4IEBA
IHZvaWQgR3JhZGllbnQ6OnBhaW50KENHQ29udGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQpCiAgICAg
ICAgICAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKHBsYXRmb3JtQ29udGV4dCwgLWRhdGEu
cG9pbnQwLngoKSwgLWRhdGEucG9pbnQwLnkoKSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgIENHQ29udGV4dERyYXdSYWRpYWxHcmFkaWVudChwbGF0Zm9ybUNvbnRleHQsIG1fZ3JhZGll
bnQuZ2V0KCksIGRhdGEucG9pbnQwLCBkYXRhLnN0YXJ0UmFkaXVzLCBkYXRhLnBvaW50MSwgZGF0
YS5lbmRSYWRpdXMsIGV4dGVuZE9wdGlvbnMpOworICAgICAgICAgICAgQ0dHcmFkaWVudERyYXdp
bmdPcHRpb25zIGV4dGVuZE9wdGlvbnMgPSBrQ0dHcmFkaWVudERyYXdzQmVmb3JlU3RhcnRMb2Nh
dGlvbiB8IGtDR0dyYWRpZW50RHJhd3NBZnRlckVuZExvY2F0aW9uOworICAgICAgICAgICAgbV9w
bGF0Zm9ybVJlbmRlcmVyLT5kcmF3UmFkaWFsR3JhZGllbnQocGxhdGZvcm1Db250ZXh0LCBkYXRh
LnBvaW50MCwgZGF0YS5zdGFydFJhZGl1cywgZGF0YS5wb2ludDEsIGRhdGEuZW5kUmFkaXVzLCBl
eHRlbmRPcHRpb25zKTsKIAogICAgICAgICAgICAgaWYgKG5lZWRTY2FsaW5nKQogICAgICAgICAg
ICAgICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUocGxhdGZvcm1Db250ZXh0KTsKQEAgLTIyMSw3
ICsxNjksNyBAQCB2b2lkIEdyYWRpZW50OjpwYWludChDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250
ZXh0KQogICAgICAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKHBsYXRmb3JtQ29udGV4dCwg
ZGF0YS5wb2ludDAueCgpLCBkYXRhLnBvaW50MC55KCkpOwogICAgICAgICAgICAgQ0dDb250ZXh0
Um90YXRlQ1RNKHBsYXRmb3JtQ29udGV4dCwgKENHRmxvYXQpLU1fUElfMik7CiAgICAgICAgICAg
ICBDR0NvbnRleHRUcmFuc2xhdGVDVE0ocGxhdGZvcm1Db250ZXh0LCAtZGF0YS5wb2ludDAueCgp
LCAtZGF0YS5wb2ludDAueSgpKTsKLSAgICAgICAgICAgIENHQ29udGV4dERyYXdDb25pY0dyYWRp
ZW50KHBsYXRmb3JtQ29udGV4dCwgbV9ncmFkaWVudC5nZXQoKSwgZGF0YS5wb2ludDAsIGRhdGEu
YW5nbGVSYWRpYW5zKTsKKyAgICAgICAgICAgIG1fcGxhdGZvcm1SZW5kZXJlci0+ZHJhd0Nvbmlj
R3JhZGllbnQocGxhdGZvcm1Db250ZXh0LCBkYXRhLnBvaW50MCwgZGF0YS5hbmdsZVJhZGlhbnMp
OwogICAgICAgICAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShwbGF0Zm9ybUNvbnRleHQpOwog
I2Vsc2UKICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50UmVuZGVyZXJDRy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRSZW5kZXJl
ckNHLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFkaWVudFJlbmRlcmVyQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzU0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR3JhZGllbnRSZW5kZXJl
ckNHLmgiCisKKyNpbmNsdWRlICJDb2xvckludGVycG9sYXRpb24uaCIKKyNpbmNsdWRlICJDb2xv
clNwYWNlQ0cuaCIKKyNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0dyYWRpZW50UmVuZGVyZXJDRzo6R3JhZGllbnRSZW5kZXJl
ckNHKENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBjb2xvckludGVycG9sYXRpb25NZXRob2QsIGNv
bnN0IEdyYWRpZW50Q29sb3JTdG9wVmVjdG9yJiBzdG9wcykKKyAgICA6IG1fc3RyYXRlZ3kgeyBw
aWNrU3RyYXRlZ3koY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBzdG9wcykgfQoreworfQorCisv
LyBNQVJLOiAtIFN0cmF0ZWd5IHNlbGVjdGlvbi4KKworR3JhZGllbnRSZW5kZXJlckNHOjpTdHJh
dGVneSBHcmFkaWVudFJlbmRlcmVyQ0c6OnBpY2tTdHJhdGVneShDb2xvckludGVycG9sYXRpb25N
ZXRob2QgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb25zdCBHcmFkaWVudENvbG9yU3RvcFZl
Y3RvciYgc3RvcHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oY29sb3JJbnRl
cnBvbGF0aW9uTWV0aG9kLmNvbG9yU3BhY2UsCisgICAgICAgIFsmXSAoY29uc3QgQ29sb3JJbnRl
cnBvbGF0aW9uTWV0aG9kOjpTUkdCJikgLT4gU3RyYXRlZ3kgeworICAgICAgICAgICAgc3dpdGNo
IChjb2xvckludGVycG9sYXRpb25NZXRob2QuYWxwaGFQcmVtdWx0aXBsaWNhdGlvbikgeworICAg
ICAgICAgICAgY2FzZSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQ6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VHcmFkaWVudChjb2xvckludGVycG9sYXRpb25NZXRo
b2QsIHN0b3BzKTsKKyAgICAgICAgICAgIGNhc2UgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJl
bXVsdGlwbGllZDoKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfUFJFTVVMVElQTElFRF9JTlRFUlBP
TEFUSU9OX0dSQURJRU5UKQorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlR3JhZGllbnQoY29s
b3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBzdG9wcyk7CisjZWxzZQorICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBVc2UgZ3JhZGllbnQgc3RyYXRlZ3kgaWYgbm9uZSBvZiB0aGUgc3RvcHMgaGF2ZSBh
bHBoYS4KKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVNoYWRpbmcoY29sb3JJbnRlcnBvbGF0
aW9uTWV0aG9kLCBzdG9wcyk7CisjZW5kaWYKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAg
ICAgICAgWyZdIChjb25zdCBhdXRvJikgLT4gU3RyYXRlZ3kgeworICAgICAgICAgICAgLy8gRklY
TUU6IEFkZCBzdXBwb3J0IGZvciB0aGUgb3RoZXIgaW50ZXJwb2xhdGlvbiBjb2xvciBzcGFjZXMu
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9Cisg
ICAgKTsKK30KKworLy8gTUFSSzogLSBHcmFkaWVudCBzdHJhdGVneS4KKworR3JhZGllbnRSZW5k
ZXJlckNHOjpTdHJhdGVneSBHcmFkaWVudFJlbmRlcmVyQ0c6Om1ha2VHcmFkaWVudChDb2xvcklu
dGVycG9sYXRpb25NZXRob2QgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb25zdCBHcmFkaWVu
dENvbG9yU3RvcFZlY3RvciYgc3RvcHMpIGNvbnN0Cit7CisgICAgQVNTRVJUX1VOVVNFRChjb2xv
ckludGVycG9sYXRpb25NZXRob2QsIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8Q29sb3JJbnRlcnBv
bGF0aW9uTWV0aG9kOjpTUkdCPihjb2xvckludGVycG9sYXRpb25NZXRob2QuY29sb3JTcGFjZSkp
OworI2lmICFIQVZFKENPUkVfR1JBUEhJQ1NfUFJFTVVMVElQTElFRF9JTlRFUlBPTEFUSU9OX0dS
QURJRU5UKQorICAgIEFTU0VSVF9VTlVTRUQoY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb2xv
ckludGVycG9sYXRpb25NZXRob2QuYWxwaGFQcmVtdWx0aXBsaWNhdGlvbiA9PSBBbHBoYVByZW11
bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQpOworI2VuZGlmCisKKyNpZiBIQVZFKENPUkVf
R1JBUEhJQ1NfR1JBRElFTlRfQ1JFQVRFX1dJVEhfT1BUSU9OUykKKyNpZiBIQVZFKENPUkVfR1JB
UEhJQ1NfUFJFTVVMVElQTElFRF9JTlRFUlBPTEFUSU9OX0dSQURJRU5UKQorICAgIGF1dG8gZ3Jh
ZGllbnRJbnRlcnBvbGF0ZXNQcmVtdWx0aXBsaWVkT3B0aW9uc0RpY3Rpb25hcnkgPSBbXSAoKSAt
PiBDRkRpY3Rpb25hcnlSZWYgeworICAgICAgICBzdGF0aWMgQ0ZUeXBlUmVmIGtleXNbXSA9IHsg
a0NHR3JhZGllbnRJbnRlcnBvbGF0ZXNQcmVtdWx0aXBsaWVkIH07CisgICAgICAgIHN0YXRpYyBD
RlR5cGVSZWYgdmFsdWVzW10gPSB7IGtDRkJvb2xlYW5UcnVlIH07CisgICAgICAgIHN0YXRpYyBD
RkRpY3Rpb25hcnlSZWYgb3B0aW9ucyA9IENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBrZXlzLCB2YWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgoa2V5cyksICZrQ0ZUeXBlRGlj
dGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwor
CisgICAgICAgIHJldHVybiBvcHRpb25zOworICAgIH07CisKKyAgIGF1dG8gZ3JhZGllbnRPcHRp
b25zRGljdGlvbmFyeSA9IFsmXSAoYXV0byBjb2xvckludGVycG9sYXRpb25NZXRob2QpIC0+IENG
RGljdGlvbmFyeVJlZiB7CisgICAgICAgIHN3aXRjaCAoY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9k
LmFscGhhUHJlbXVsdGlwbGljYXRpb24pIHsKKyAgICAgICAgY2FzZSBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpVbnByZW11bHRpcGxpZWQ6CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgY2FzZSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkOgorICAgICAg
ICAgICAgcmV0dXJuIGdyYWRpZW50SW50ZXJwb2xhdGVzUHJlbXVsdGlwbGllZE9wdGlvbnNEaWN0
aW9uYXJ5KCk7CisgICAgICAgIH0KKyAgIH07CisjZWxzZQorICAgYXV0byBncmFkaWVudE9wdGlv
bnNEaWN0aW9uYXJ5ID0gW10gKGF1dG8pIC0+IENGRGljdGlvbmFyeVJlZiB7CisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgfTsKKyNlbmRpZgorI2VuZGlmCisKKyAgICBhdXRvIGhhc09ubHlC
b3VuZGVkU1JHQkNvbG9yU3RvcHMgPSBbXSAoY29uc3QgYXV0byYgc3RvcHMpIHsKKyAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiBzdG9wIDogc3RvcHMpIHsKKyAgICAgICAgICAgIGlmIChzdG9wLmNv
bG9yLmNvbG9yU3BhY2UoKSAhPSBDb2xvclNwYWNlOjpTUkdCKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9OworCisg
ICAgYXV0byBudW1iZXJPZlN0b3BzID0gc3RvcHMuc2l6ZSgpOworCisgICAgc3RhdGljIGNvbnN0
ZXhwciBhdXRvIHJlc2VydmVkU3RvcHMgPSAzOworICAgIFZlY3RvcjxDR0Zsb2F0LCByZXNlcnZl
ZFN0b3BzPiBsb2NhdGlvbnM7CisgICAgbG9jYXRpb25zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
bnVtYmVyT2ZTdG9wcyk7CisKKyAgICBWZWN0b3I8Q0dGbG9hdCwgNCAqIHJlc2VydmVkU3RvcHM+
IGNvbG9yQ29tcG9uZW50czsKKyAgICBjb2xvckNvbXBvbmVudHMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShudW1iZXJPZlN0b3BzICogNCk7CisKKyAgICBhdXRvIGdyYWRpZW50Q29sb3JTcGFjZSA9
IHNSR0JDb2xvclNwYWNlUmVmKCk7CisKKyAgICAvLyBGSVhNRTogTm93IHRoYXQgd2Ugb25seSBl
dmVyIHVzZSBDR0dyYWRpZW50Q3JlYXRlV2l0aENvbG9yQ29tcG9uZW50cywgd2Ugc2hvdWxkIGlu
dmVzdGlnYXRlCisgICAgLy8gaWYgdGhlcmUgaXMgYW55IHJlYWwgYmVuZWZpdCB0byB1c2luZyBz
UkdCIHdoZW4gYWxsIHRoZSBzdG9wcyBhcmUgYm91bmRlZCB2cyBqdXN0IHVzaW5nCisgICAgLy8g
ZXh0ZW5kZWQgc1JHQiBmb3IgYWxsIGdyYWRpZW50cy4KKyAgICBpZiAoaGFzT25seUJvdW5kZWRT
UkdCQ29sb3JTdG9wcyhzdG9wcykpIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzdG9wIDog
c3RvcHMpIHsKKyAgICAgICAgICAgIGF1dG8gW2NvbG9yU3BhY2UsIGNvbXBvbmVudHNdID0gc3Rv
cC5jb2xvci5jb2xvclNwYWNlQW5kQ29tcG9uZW50cygpOworICAgICAgICAgICAgYXV0byBbciwg
ZywgYiwgYV0gPSBjb21wb25lbnRzOworICAgICAgICAgICAgY29sb3JDb21wb25lbnRzLnVuY2hl
Y2tlZEFwcGVuZChyKTsKKyAgICAgICAgICAgIGNvbG9yQ29tcG9uZW50cy51bmNoZWNrZWRBcHBl
bmQoZyk7CisgICAgICAgICAgICBjb2xvckNvbXBvbmVudHMudW5jaGVja2VkQXBwZW5kKGIpOwor
ICAgICAgICAgICAgY29sb3JDb21wb25lbnRzLnVuY2hlY2tlZEFwcGVuZChhKTsKKworICAgICAg
ICAgICAgbG9jYXRpb25zLnVuY2hlY2tlZEFwcGVuZChzdG9wLm9mZnNldCk7CisgICAgICAgIH0K
KyAgICB9IGVsc2UgeworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19FWFRFTkRFRF9TUkdCX0NPTE9S
X1NQQUNFKQorICAgICAgICBncmFkaWVudENvbG9yU3BhY2UgPSBleHRlbmRlZFNSR0JDb2xvclNw
YWNlUmVmKCk7CisjZW5kaWYKKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHN0b3AgOiBzdG9w
cykgeworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19FWFRFTkRFRF9TUkdCX0NPTE9SX1NQQUNFKQor
ICAgICAgICAgICAgYXV0byBbciwgZywgYiwgYV0gPSBzdG9wLmNvbG9yLnRvQ29sb3JUeXBlTG9z
c3k8RXh0ZW5kZWRTUkdCQTxmbG9hdD4+KCk7CisjZWxzZQorICAgICAgICAgICAgYXV0byBbciwg
ZywgYiwgYV0gPSBzdG9wLmNvbG9yLnRvQ29sb3JUeXBlTG9zc3k8U1JHQkE8ZmxvYXQ+PigpOwor
I2VuZGlmCisgICAgICAgICAgICBjb2xvckNvbXBvbmVudHMudW5jaGVja2VkQXBwZW5kKHIpOwor
ICAgICAgICAgICAgY29sb3JDb21wb25lbnRzLnVuY2hlY2tlZEFwcGVuZChnKTsKKyAgICAgICAg
ICAgIGNvbG9yQ29tcG9uZW50cy51bmNoZWNrZWRBcHBlbmQoYik7CisgICAgICAgICAgICBjb2xv
ckNvbXBvbmVudHMudW5jaGVja2VkQXBwZW5kKGEpOworCisgICAgICAgICAgICBsb2NhdGlvbnMu
dW5jaGVja2VkQXBwZW5kKHN0b3Aub2Zmc2V0KTsKKyAgICAgICAgfQorICAgIH0KKworI2lmIEhB
VkUoQ09SRV9HUkFQSElDU19HUkFESUVOVF9DUkVBVEVfV0lUSF9PUFRJT05TKQorICAgIHJldHVy
biBHcmFkaWVudCB7IGFkb3B0Q0YoQ0dHcmFkaWVudENyZWF0ZVdpdGhDb2xvckNvbXBvbmVudHNB
bmRPcHRpb25zKGdyYWRpZW50Q29sb3JTcGFjZSwgY29sb3JDb21wb25lbnRzLmRhdGEoKSwgbG9j
YXRpb25zLmRhdGEoKSwgbnVtYmVyT2ZTdG9wcywgZ3JhZGllbnRPcHRpb25zRGljdGlvbmFyeShj
b2xvckludGVycG9sYXRpb25NZXRob2QpKSkgfTsKKyNlbHNlCisgICAgcmV0dXJuIEdyYWRpZW50
IHsgYWRvcHRDRihDR0dyYWRpZW50Q3JlYXRlV2l0aENvbG9yQ29tcG9uZW50cyhncmFkaWVudENv
bG9yU3BhY2UsIGNvbG9yQ29tcG9uZW50cy5kYXRhKCksIGxvY2F0aW9ucy5kYXRhKCksIG51bWJl
ck9mU3RvcHMpKSB9OworI2VuZGlmCit9CisKKy8vIE1BUks6IC0gU2hhZGluZyBzdHJhdGVneS4K
KwordGVtcGxhdGU8dHlwZW5hbWUgSW50ZXJwb2xhdGlvblNwYWNlLCBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIGFscGhhUHJlbXVsdGlwbGljYXRpb24+Cit2b2lkIEdyYWRpZW50UmVuZGVyZXJDRzo6
U2hhZGluZzo6c2hhZGluZ0Z1bmN0aW9uKHZvaWQqIGluZm8sIGNvbnN0IENHRmxvYXQqIGluLCBD
R0Zsb2F0KiBvdXQpCit7CisgICAgdXNpbmcgSW50ZXJwb2xhdGlvblNwYWNlQ29sb3JUeXBlID0g
dHlwZW5hbWUgSW50ZXJwb2xhdGlvblNwYWNlOjpDb2xvclR5cGU7CisjaWYgSEFWRShDT1JFX0dS
QVBISUNTX0VYVEVOREVEX1NSR0JfQ09MT1JfU1BBQ0UpCisgICAgdXNpbmcgT3V0cHV0U3BhY2VD
b2xvclR5cGUgPSBFeHRlbmRlZFNSR0JBPGZsb2F0PjsKKyNlbHNlCisgICAgdXNpbmcgT3V0cHV0
U3BhY2VDb2xvclR5cGUgPSBTUkdCQTxmbG9hdD47CisjZW5kaWYKKworICAgIGF1dG8qIGRhdGEg
PSBzdGF0aWNfY2FzdDxHcmFkaWVudFJlbmRlcmVyQ0c6OlNoYWRpbmc6OkRhdGEqPihpbmZvKTsK
KworICAgIC8vIENvbXB1dGUgY29sb3IgYXQgb2Zmc2V0ICdpblswXScgYW5kIGFzc2lnbiB0aGUg
Y29tcG9uZW50cyB0byBvdXRbMCAtPiAzXS4KKworICAgIGZsb2F0IHJlcXVlc3RlZE9mZnNldCA9
IGluWzBdOworCisgICAgLy8gMS4gRmluZCBzdG9wcyB0aGF0IGJvdW5kIHRoZSByZXF1ZXN0ZWQg
b2Zmc2V0LgorICAgIGF1dG8gW3N0b3AwLCBzdG9wMV0gPSBbJl0geworICAgICAgICBmb3IgKHNp
emVfdCBzdG9wID0gMTsgc3RvcCA8IGRhdGEtPnN0b3BzKCkuc2l6ZSgpOyArK3N0b3ApIHsKKyAg
ICAgICAgICAgIGlmIChyZXF1ZXN0ZWRPZmZzZXQgPD0gZGF0YS0+c3RvcHMoKVtzdG9wXS5vZmZz
ZXQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6dGllKGRhdGEtPnN0b3BzKClbc3RvcCAt
IDFdLCBkYXRhLT5zdG9wcygpW3N0b3BdKTsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0oKTsKKworICAgIC8vIDIuIENvbXB1dGUgcGVyY2Vu
dGFnZSBvZmZzZXQgYmV0d2VlbiB0aGUgdHdvIHN0b3BzLgorICAgIGZsb2F0IG9mZnNldCA9IChz
dG9wMS5vZmZzZXQgPT0gc3RvcDAub2Zmc2V0KSA/IDAuMGYgOiAocmVxdWVzdGVkT2Zmc2V0IC0g
c3RvcDAub2Zmc2V0KSAvIChzdG9wMS5vZmZzZXQgLSBzdG9wMC5vZmZzZXQpOworCisgICAgLy8g
My4gSW50ZXJwb2xhdGUgdGhlIHR3byBzdG9wcycgY29sb3JzIGJ5IHRoZSBjb21wdXRlZCBvZmZz
ZXQuCisgICAgLy8gRklYTUU6IFdlIGRvbid0IHdhbnQgdG8gZHVlIGh1ZSBmaXh1cCBmb3IgZWFj
aCBjYWxsLCBzbyB3ZSBzaG91bGQgZmlndXJlIG91dCBob3cgdG8gcHJlY29tcHV0ZSB0aGF0Lgor
ICAgIGF1dG8gaW50ZXJwb2xhdGVkQ29sb3IgPSBpbnRlcnBvbGF0ZUNvbG9yQ29tcG9uZW50czxh
bHBoYVByZW11bHRpcGxpY2F0aW9uPigKKyAgICAgICAgc3RkOjpnZXQ8SW50ZXJwb2xhdGlvblNw
YWNlPihkYXRhLT5jb2xvckludGVycG9sYXRpb25NZXRob2QoKS5jb2xvclNwYWNlKSwKKyAgICAg
ICAgbWFrZUZyb21Db21wb25lbnRzPEludGVycG9sYXRpb25TcGFjZUNvbG9yVHlwZT4oc3RvcDAu
Y29sb3JDb21wb25lbnRzKSwgMS4wZiAtIG9mZnNldCwKKyAgICAgICAgbWFrZUZyb21Db21wb25l
bnRzPEludGVycG9sYXRpb25TcGFjZUNvbG9yVHlwZT4oc3RvcDEuY29sb3JDb21wb25lbnRzKSwg
b2Zmc2V0KTsKKworICAgIC8vIDQuIENvbnZlcnQgdG8gdGhlIG91dHB1dCBjb2xvciBzcGFjZS4K
KyAgICBhdXRvIGludGVycG9sYXRlZENvbG9yQ29udmVydGVkVG9PdXRwdXRTcGFjZSA9IGFzQ29s
b3JDb21wb25lbnRzKGNvbnZlcnRDb2xvcjxPdXRwdXRTcGFjZUNvbG9yVHlwZT4oaW50ZXJwb2xh
dGVkQ29sb3IpKTsKKworICAgIC8vIDUuIFdyaXRlIGNvbG9yIGNvbXBvbmVudHMgdG8gJ291dCcg
cG9pbnRlci4KKyAgICBmb3IgKHNpemVfdCBjb21wb25lbnRJbmRleCA9IDA7IGNvbXBvbmVudElu
ZGV4IDwgaW50ZXJwb2xhdGVkQ29sb3JDb252ZXJ0ZWRUb091dHB1dFNwYWNlLnNpemUoKTsgKytj
b21wb25lbnRJbmRleCkKKyAgICAgICAgb3V0W2NvbXBvbmVudEluZGV4XSA9IGludGVycG9sYXRl
ZENvbG9yQ29udmVydGVkVG9PdXRwdXRTcGFjZVtjb21wb25lbnRJbmRleF07Cit9CisKK0dyYWRp
ZW50UmVuZGVyZXJDRzo6U3RyYXRlZ3kgR3JhZGllbnRSZW5kZXJlckNHOjptYWtlU2hhZGluZyhD
b2xvckludGVycG9sYXRpb25NZXRob2QgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb25zdCBH
cmFkaWVudENvbG9yU3RvcFZlY3RvciYgc3RvcHMpIGNvbnN0Cit7CisgICAgYXV0byBtYWtlRGF0
YSA9IFsmXSAoYXV0byBjb2xvckludGVycG9sYXRpb25NZXRob2QsIGF1dG8mIHN0b3BzKSB7Cisg
ICAgICAgIGF1dG8gY29udmVydENvbG9yVG9Db2xvckludGVycG9sYXRpb25TcGFjZSA9IFsmXSAo
Y29uc3QgQ29sb3ImIGNvbG9yLCBhdXRvIGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCkgLT4gQ29s
b3JDb21wb25lbnRzPGZsb2F0LCA0PiB7CisgICAgICAgICAgICByZXR1cm4gV1RGOjpzd2l0Y2hP
bihjb2xvckludGVycG9sYXRpb25NZXRob2QuY29sb3JTcGFjZSwKKyAgICAgICAgICAgICAgICBb
Jl0gKGF1dG8mIGNvbG9yU3BhY2UpIC0+IENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4geworICAg
ICAgICAgICAgICAgICAgICB1c2luZyBDb2xvclR5cGUgPSB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9y
ZWZlcmVuY2VfdDxkZWNsdHlwZShjb2xvclNwYWNlKT46OkNvbG9yVHlwZTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGFzQ29sb3JDb21wb25lbnRzKGNvbG9yLnRlbXBsYXRlIHRvQ29sb3JU
eXBlTG9zc3k8Q29sb3JUeXBlPigpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAp
OworICAgICAgICB9OworCisgICAgICAgIGF1dG8gdG90YWxOdW1iZXJPZlN0b3BzID0gc3RvcHMu
c2l6ZSgpOworICAgICAgICBib29sIGhhc1plcm8gPSBmYWxzZTsKKyAgICAgICAgYm9vbCBoYXNP
bmUgPSBmYWxzZTsKKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHN0b3AgOiBzdG9wcykgewor
ICAgICAgICAgICAgYXV0byBvZmZzZXQgPSBzdG9wLm9mZnNldDsKKyAgICAgICAgICAgIEFTU0VS
VChvZmZzZXQgPj0gMCk7CisgICAgICAgICAgICBBU1NFUlQob2Zmc2V0IDw9IDEpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBpZiAob2Zmc2V0ID09IDApCisgICAgICAgICAgICAgICAgaGFz
WmVybyA9IHRydWU7CisgICAgICAgICAgICBlbHNlIGlmIChvZmZzZXQgPT0gMSkKKyAgICAgICAg
ICAgICAgICBoYXNPbmUgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFoYXNaZXJv
KQorICAgICAgICAgICAgdG90YWxOdW1iZXJPZlN0b3BzKys7CisgICAgICAgIGlmICghaGFzT25l
KQorICAgICAgICAgICAgdG90YWxOdW1iZXJPZlN0b3BzKys7CisKKyAgICAgICAgVmVjdG9yPENv
bG9yQ29udmVydGVkVG9JbnRlcnBvbGF0aW9uQ29sb3JTcGFjZVN0b3A+IGNvbnZlcnRlZFN0b3Bz
OworICAgICAgICBjb252ZXJ0ZWRTdG9wcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHRvdGFsTnVt
YmVyT2ZTdG9wcyk7CisKKyAgICAgICAgaWYgKCFoYXNaZXJvKQorICAgICAgICAgICAgY29udmVy
dGVkU3RvcHMudW5jaGVja2VkQXBwZW5kKHsgMC4wZiwgeyAwLjBmLCAwLjBmLCAwLjBmLCAwLjBm
IH0gfSk7CisKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzdG9wIDogc3RvcHMpCisgICAgICAg
ICAgICBjb252ZXJ0ZWRTdG9wcy51bmNoZWNrZWRBcHBlbmQoeyBzdG9wLm9mZnNldCwgY29udmVy
dENvbG9yVG9Db2xvckludGVycG9sYXRpb25TcGFjZShzdG9wLmNvbG9yLCBjb2xvckludGVycG9s
YXRpb25NZXRob2QpIH0pOworCisgICAgICAgIGlmICghaGFzT25lKQorICAgICAgICAgICAgY29u
dmVydGVkU3RvcHMudW5jaGVja2VkQXBwZW5kKHsgMS4wZiwgY29udmVydGVkU3RvcHMubGFzdCgp
LmNvbG9yQ29tcG9uZW50cyB9KTsKKworICAgICAgICBpZiAoIWhhc1plcm8pCisgICAgICAgICAg
ICBjb252ZXJ0ZWRTdG9wc1swXS5jb2xvckNvbXBvbmVudHMgPSBjb252ZXJ0ZWRTdG9wc1sxXS5j
b2xvckNvbXBvbmVudHM7CisKKyAgICAgICAgcmV0dXJuIFNoYWRpbmc6OkRhdGE6OmNyZWF0ZShj
b2xvckludGVycG9sYXRpb25NZXRob2QsIFdURk1vdmUoY29udmVydGVkU3RvcHMpKTsKKyAgICB9
OworCisgICAgYXV0byBtYWtlRnVuY3Rpb24gPSBbJl0gKGF1dG8gY29sb3JJbnRlcnBvbGF0aW9u
TWV0aG9kLCBhdXRvJiBkYXRhKSB7CisgICAgICAgIGF1dG8gbWFrZUV2YWx1YXRlQ2FsbGJhY2sg
PSBbJl0gKGF1dG8gY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kKSAtPiBDR0Z1bmN0aW9uRXZhbHVh
dGVDYWxsYmFjayB7CisgICAgICAgICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihjb2xvckludGVy
cG9sYXRpb25NZXRob2QuY29sb3JTcGFjZSwKKyAgICAgICAgICAgICAgICBbJl0gKGF1dG8mIGNv
bG9yU3BhY2UpIC0+IENHRnVuY3Rpb25FdmFsdWF0ZUNhbGxiYWNrIHsKKyAgICAgICAgICAgICAg
ICAgICAgdXNpbmcgSW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2UgPSB0eXBlbmFtZSBzdGQ6
OnJlbW92ZV9yZWZlcmVuY2VfdDxkZWNsdHlwZShjb2xvclNwYWNlKT47CisgICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbG9ySW50ZXJwb2xhdGlvbk1l
dGhvZC5hbHBoYVByZW11bHRpcGxpY2F0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2Ug
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkOgorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuICZTaGFkaW5nOjpzaGFkaW5nRnVuY3Rpb248SW50ZXJwb2xhdGlvbk1l
dGhvZENvbG9yU3BhY2UsIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZD47
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVs
dGlwbGllZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAmU2hhZGluZzo6c2hhZGlu
Z0Z1bmN0aW9uPEludGVycG9sYXRpb25NZXRob2RDb2xvclNwYWNlLCBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpQcmVtdWx0aXBsaWVkPjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICk7CisgICAgICAgIH07CisKKyAgICAgICAgY29uc3QgQ0dG
dW5jdGlvbkNhbGxiYWNrcyBjYWxsYmFja3MgPSB7CisgICAgICAgICAgICAwLAorICAgICAgICAg
ICAgbWFrZUV2YWx1YXRlQ2FsbGJhY2soY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kKSwKKyAgICAg
ICAgICAgIFtdICh2b2lkKiBpbmZvKSB7CisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R3Jh
ZGllbnRSZW5kZXJlckNHOjpTaGFkaW5nOjpEYXRhKj4oaW5mbyktPmRlcmVmKCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgc3RhdGljIGNvbnN0IENHRmxvYXQgZG9tYWlu
WzJdID0geyAwLCAxIH07CisjaWYgSEFWRShDT1JFX0dSQVBISUNTX0VYVEVOREVEX1NSR0JfQ09M
T1JfU1BBQ0UpCisgICAgICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHJhbmdlWzhdID0geyAtc3Rk
OjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8
ZmxvYXQ+OjppbmZpbml0eSgpLCAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5
KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCAtc3RkOjpudW1lcmlj
X2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+Ojpp
bmZpbml0eSgpLCAwLCAxIH07CisjZWxzZQorICAgICAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBy
YW5nZVs4XSA9IHsgMCwgMSwgMCwgMSwgMCwgMSwgMCwgMSB9OworI2VuZGlmCisKKyAgICAgICAg
UmVmIGRhdGFSZWZDb3B5ID0gZGF0YTsKKyAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dGdW5jdGlv
bkNyZWF0ZSgmZGF0YVJlZkNvcHkubGVha1JlZigpLCAxLCBkb21haW4sIDQsIHJhbmdlLCAmY2Fs
bGJhY2tzKSk7CisgICAgfTsKKworICAgIGF1dG8gZGF0YSA9IG1ha2VEYXRhKGNvbG9ySW50ZXJw
b2xhdGlvbk1ldGhvZCwgc3RvcHMpOworICAgIGF1dG8gZnVuY3Rpb24gPSBtYWtlRnVuY3Rpb24o
Y29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBkYXRhKTsKKworICAgIC8vIEZJWE1FOiBJbnZlc3Rp
Z2F0ZSB1c2luZyBib3VuZGVkIHNSR0Igd2hlbiB0aGUgaW5wdXQgc3RvcHMgYXJlIGFsbCBib3Vu
ZGVkIHNSR0IuCisjaWYgSEFWRShDT1JFX0dSQVBISUNTX0VYVEVOREVEX1NSR0JfQ09MT1JfU1BB
Q0UpCisgICAgYXV0byBjb2xvclNwYWNlID0gZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpOwor
I2Vsc2UKKyAgICBhdXRvIGNvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOworI2VuZGlm
CisKKyAgICByZXR1cm4gU2hhZGluZyB7IFdURk1vdmUoZGF0YSksIFdURk1vdmUoZnVuY3Rpb24p
LCBjb2xvclNwYWNlIH07Cit9CisKKy8vIE1BUks6IC0gRHJhd2luZyBmdW5jdGlvbnMuCisKK3Zv
aWQgR3JhZGllbnRSZW5kZXJlckNHOjpkcmF3TGluZWFyR3JhZGllbnQoQ0dDb250ZXh0UmVmIHBs
YXRmb3JtQ29udGV4dCwgQ0dQb2ludCBzdGFydFBvaW50LCBDR1BvaW50IGVuZFBvaW50LCBDR0dy
YWRpZW50RHJhd2luZ09wdGlvbnMgb3B0aW9ucykKK3sKKyAgICBXVEY6OnN3aXRjaE9uKG1fc3Ry
YXRlZ3ksCisgICAgICAgIFsmXSAoR3JhZGllbnQmIGdyYWRpZW50KSB7CisgICAgICAgICAgICBD
R0NvbnRleHREcmF3TGluZWFyR3JhZGllbnQocGxhdGZvcm1Db250ZXh0LCBncmFkaWVudC5ncmFk
aWVudC5nZXQoKSwgc3RhcnRQb2ludCwgZW5kUG9pbnQsIG9wdGlvbnMpOworICAgICAgICB9LAor
ICAgICAgICBbJl0gKFNoYWRpbmcmIHNoYWRpbmcpIHsKKyAgICAgICAgICAgIGJvb2wgc3RhcnRF
eHRlbmQgPSAob3B0aW9ucyAmIGtDR0dyYWRpZW50RHJhd3NCZWZvcmVTdGFydExvY2F0aW9uKSAh
PSAwOworICAgICAgICAgICAgYm9vbCBlbmRFeHRlbmQgPSAob3B0aW9ucyAmIGtDR0dyYWRpZW50
RHJhd3NBZnRlckVuZExvY2F0aW9uKSAhPSAwOworCisgICAgICAgICAgICBDR0NvbnRleHREcmF3
U2hhZGluZyhwbGF0Zm9ybUNvbnRleHQsIGFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoc2hh
ZGluZy5jb2xvclNwYWNlLmdldCgpLCBzdGFydFBvaW50LCBlbmRQb2ludCwgc2hhZGluZy5mdW5j
dGlvbi5nZXQoKSwgc3RhcnRFeHRlbmQsIGVuZEV4dGVuZCkpLmdldCgpKTsKKyAgICAgICAgfQor
ICAgICk7Cit9CisKK3ZvaWQgR3JhZGllbnRSZW5kZXJlckNHOjpkcmF3UmFkaWFsR3JhZGllbnQo
Q0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dCwgQ0dQb2ludCBzdGFydENlbnRlciwgQ0dGbG9h
dCBzdGFydFJhZGl1cywgQ0dQb2ludCBlbmRDZW50ZXIsIENHRmxvYXQgZW5kUmFkaXVzLCBDR0dy
YWRpZW50RHJhd2luZ09wdGlvbnMgb3B0aW9ucykKK3sKKyAgICBXVEY6OnN3aXRjaE9uKG1fc3Ry
YXRlZ3ksCisgICAgICAgIFsmXSAoR3JhZGllbnQmIGdyYWRpZW50KSB7CisgICAgICAgICAgICBD
R0NvbnRleHREcmF3UmFkaWFsR3JhZGllbnQocGxhdGZvcm1Db250ZXh0LCBncmFkaWVudC5ncmFk
aWVudC5nZXQoKSwgc3RhcnRDZW50ZXIsIHN0YXJ0UmFkaXVzLCBlbmRDZW50ZXIsIGVuZFJhZGl1
cywgb3B0aW9ucyk7CisgICAgICAgIH0sCisgICAgICAgIFsmXSAoU2hhZGluZyYgc2hhZGluZykg
eworICAgICAgICAgICAgYm9vbCBzdGFydEV4dGVuZCA9IChvcHRpb25zICYga0NHR3JhZGllbnRE
cmF3c0JlZm9yZVN0YXJ0TG9jYXRpb24pICE9IDA7CisgICAgICAgICAgICBib29sIGVuZEV4dGVu
ZCA9IChvcHRpb25zICYga0NHR3JhZGllbnREcmF3c0FmdGVyRW5kTG9jYXRpb24pICE9IDA7CisK
KyAgICAgICAgICAgIENHQ29udGV4dERyYXdTaGFkaW5nKHBsYXRmb3JtQ29udGV4dCwgYWRvcHRD
RihDR1NoYWRpbmdDcmVhdGVSYWRpYWwoc2hhZGluZy5jb2xvclNwYWNlLmdldCgpLCBzdGFydENl
bnRlciwgc3RhcnRSYWRpdXMsIGVuZENlbnRlciwgZW5kUmFkaXVzLCBzaGFkaW5nLmZ1bmN0aW9u
LmdldCgpLCBzdGFydEV4dGVuZCwgZW5kRXh0ZW5kKSkuZ2V0KCkpOworICAgICAgICB9CisgICAg
KTsKK30KKwordm9pZCBHcmFkaWVudFJlbmRlcmVyQ0c6OmRyYXdDb25pY0dyYWRpZW50KENHQ29u
dGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQsIENHUG9pbnQgY2VudGVyLCBDR0Zsb2F0IGFuZ2xlKQor
eworLy8gRklYTUU6IFNlZW1zIGxpa2UgdGhpcyBzaG91bGQgYmUgSEFWRShDR19DT05URVhUX0RS
QVdfQ09OSUNfR1JBRElFTlQpLgorLy8gRklYTUU6IENhbiB3ZSBjaGFuZ2UgdHZPUyB0byBiZSBs
aWtlIHRoZSBvdGhlciBDb2NvYSBwbGF0Zm9ybXM/CisjaWYgUExBVEZPUk0oQ09DT0EpICYmICFQ
TEFURk9STShBUFBMRVRWKQorICAgIFdURjo6c3dpdGNoT24obV9zdHJhdGVneSwKKyAgICAgICAg
WyZdIChHcmFkaWVudCYgZ3JhZGllbnQpIHsKKyAgICAgICAgICAgIENHQ29udGV4dERyYXdDb25p
Y0dyYWRpZW50KHBsYXRmb3JtQ29udGV4dCwgZ3JhZGllbnQuZ3JhZGllbnQuZ2V0KCksIGNlbnRl
ciwgYW5nbGUpOworICAgICAgICB9LAorICAgICAgICBbJl0gKFNoYWRpbmcmIHNoYWRpbmcpIHsK
KyAgICAgICAgICAgIENHQ29udGV4dERyYXdTaGFkaW5nKHBsYXRmb3JtQ29udGV4dCwgYWRvcHRD
RihDR1NoYWRpbmdDcmVhdGVDb25pYyhzaGFkaW5nLmNvbG9yU3BhY2UuZ2V0KCksIGNlbnRlciwg
YW5nbGUsIHNoYWRpbmcuZnVuY3Rpb24uZ2V0KCkpKS5nZXQoKSk7CisgICAgICAgIH0KKyAgICAp
OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocGxhdGZvcm1Db250ZXh0KTsKKyAgICBVTlVTRURf
UEFSQU0oY2VudGVyKTsKKyAgICBVTlVTRURfUEFSQU0oYW5nbGUpOworI2VuZGlmCit9CisKK30K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50UmVuZGVy
ZXJDRy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYWRpZW50UmVuZGVyZXJDRy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50UmVuZGVyZXJDRy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29sb3JDb21w
b25lbnRzLmgiCisjaW5jbHVkZSAiQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLmgiCisjaW5jbHVk
ZSAiR3JhZGllbnRDb2xvclN0b3AuaCIKKyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBo
aWNzLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRT
YWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitzdHJ1Y3QgQ29sb3JDb252ZXJ0ZWRUb0ludGVycG9sYXRpb25Db2xvclNwYWNl
U3RvcCB7CisgICAgZmxvYXQgb2Zmc2V0OworICAgIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4g
Y29sb3JDb21wb25lbnRzOworfTsKKworY2xhc3MgR3JhZGllbnRSZW5kZXJlckNHIHsKK3B1Ymxp
YzoKKyAgICBHcmFkaWVudFJlbmRlcmVyQ0coQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb25z
dCBHcmFkaWVudENvbG9yU3RvcFZlY3RvciYpOworCisgICAgdm9pZCBkcmF3TGluZWFyR3JhZGll
bnQoQ0dDb250ZXh0UmVmLCBDR1BvaW50IHN0YXJ0UG9pbnQsIENHUG9pbnQgZW5kUG9pbnQsIENH
R3JhZGllbnREcmF3aW5nT3B0aW9ucyk7CisgICAgdm9pZCBkcmF3UmFkaWFsR3JhZGllbnQoQ0dD
b250ZXh0UmVmLCBDR1BvaW50IHN0YXJ0Q2VudGVyLCBDR0Zsb2F0IHN0YXJ0UmFkaXVzLCBDR1Bv
aW50IGVuZENlbnRlciwgQ0dGbG9hdCBlbmRSYWRpdXMsIENHR3JhZGllbnREcmF3aW5nT3B0aW9u
cyk7CisgICAgdm9pZCBkcmF3Q29uaWNHcmFkaWVudChDR0NvbnRleHRSZWYsIENHUG9pbnQgY2Vu
dGVyLCBDR0Zsb2F0IGFuZ2xlKTsKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgR3JhZGllbnQgewor
ICAgICAgICBSZXRhaW5QdHI8Q0dHcmFkaWVudFJlZj4gZ3JhZGllbnQ7CisgICAgfTsKKworICAg
IHN0cnVjdCBTaGFkaW5nIHsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50ZXJwb2xhdGlv
blNwYWNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uPiBzdGF0aWMgdm9pZCBzaGFkaW5nRnVuY3Rp
b24odm9pZCosIGNvbnN0IENHRmxvYXQqLCBDR0Zsb2F0Kik7CisKKyAgICAgICAgY2xhc3MgRGF0
YSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhPiB7CisgICAgICAgIHB1YmxpYzoK
KyAgICAgICAgICAgIHN0YXRpYyBSZWY8RGF0YT4gY3JlYXRlKENvbG9ySW50ZXJwb2xhdGlvbk1l
dGhvZCBjb2xvckludGVycG9sYXRpb25NZXRob2QsIFZlY3RvcjxDb2xvckNvbnZlcnRlZFRvSW50
ZXJwb2xhdGlvbkNvbG9yU3BhY2VTdG9wPiBzdG9wcykKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhv
ZCwgV1RGTW92ZShzdG9wcykpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgQ29sb3JJ
bnRlcnBvbGF0aW9uTWV0aG9kIGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCgpIGNvbnN0IHsgcmV0
dXJuIG1fY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOyB9CisgICAgICAgICAgICBjb25zdCBWZWN0
b3I8Q29sb3JDb252ZXJ0ZWRUb0ludGVycG9sYXRpb25Db2xvclNwYWNlU3RvcD4mIHN0b3BzKCkg
Y29uc3QgeyByZXR1cm4gbV9zdG9wczsgfQorCisgICAgICAgIHByaXZhdGU6CisgICAgICAgICAg
ICBEYXRhKENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBjb2xvckludGVycG9sYXRpb25NZXRob2Qs
IFZlY3RvcjxDb2xvckNvbnZlcnRlZFRvSW50ZXJwb2xhdGlvbkNvbG9yU3BhY2VTdG9wPiBzdG9w
cykKKyAgICAgICAgICAgICAgICA6IG1fY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIHsgY29sb3JJ
bnRlcnBvbGF0aW9uTWV0aG9kIH0KKyAgICAgICAgICAgICAgICAsIG1fc3RvcHMgeyBXVEZNb3Zl
KHN0b3BzKSB9CisgICAgICAgICAgICB7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIENv
bG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBtX2NvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDsKKyAgICAg
ICAgICAgIFZlY3RvcjxDb2xvckNvbnZlcnRlZFRvSW50ZXJwb2xhdGlvbkNvbG9yU3BhY2VTdG9w
PiBtX3N0b3BzOworICAgICAgICB9OworCisgICAgICAgIFJlZjxEYXRhPiBkYXRhOworICAgICAg
ICBSZXRhaW5QdHI8Q0dGdW5jdGlvblJlZj4gZnVuY3Rpb247CisgICAgICAgIFJldGFpblB0cjxD
R0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2U7CisgICAgfTsKKworICAgIHVzaW5nIFN0cmF0ZWd5
ID0gc3RkOjp2YXJpYW50PEdyYWRpZW50LCBTaGFkaW5nPjsKKworICAgIFN0cmF0ZWd5IHBpY2tT
dHJhdGVneShDb2xvckludGVycG9sYXRpb25NZXRob2QsIGNvbnN0IEdyYWRpZW50Q29sb3JTdG9w
VmVjdG9yJikgY29uc3Q7CisgICAgU3RyYXRlZ3kgbWFrZUdyYWRpZW50KENvbG9ySW50ZXJwb2xh
dGlvbk1ldGhvZCwgY29uc3QgR3JhZGllbnRDb2xvclN0b3BWZWN0b3ImKSBjb25zdDsKKyAgICBT
dHJhdGVneSBtYWtlU2hhZGluZyhDb2xvckludGVycG9sYXRpb25NZXRob2QsIGNvbnN0IEdyYWRp
ZW50Q29sb3JTdG9wVmVjdG9yJikgY29uc3Q7CisKKyAgICBTdHJhdGVneSBtX3N0cmF0ZWd5Owor
fTsKKworfQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMjg3Mjg4
KQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMjEtMTItMjAgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBwcmVtdWx0aXBsaWVkIGFscGhhIGludGVycG9s
YXRlZCBncmFkaWVudHMgYW5kIGRlZmF1bHRlZCBvZmYgb3B0aW9uIHRvIHVzZSB0aGVtIGZvciBD
U1MgR3JhZGllbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzQ0OTIKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAg
ICAgQWRkIHN1cHBvcnQgZm9yIHRlc3RzIGVuYWJsaW5nIHRoZSBDU1NHcmFkaWVudFByZW11bHRp
cGxpZWRBbHBoYUludGVycG9sYXRpb25FbmFibGVkIHByZWZlcmVuY2UuCisKKyAgICAgICAgKiBX
ZWJQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6Y3NzR3JhZGllbnRQ
cmVtdWx0aXBsaWVkQWxwaGFJbnRlcnBvbGF0aW9uRW5hYmxlZCk6CisgICAgICAgICogV2ViUHJl
ZmVyZW5jZXMuaDoKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6Om5v
dGlmeVByZWZlcmVuY2VzQ2hhbmdlZCk6CisKIDIwMjEtMTItMjAgIEZ1amlpIEhpcm9ub3JpICA8
SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbl0gTVNWQyByZXBvcnRzICJD
T01Qcm9wZXJ0eUJhZy5oKDIzMyk6IGVycm9yIEMyMzg1OiBhbWJpZ3VvdXMgYWNjZXNzIG9mICdJ
VW5rbm93biciIHdpdGggL3N0ZDpjKysyMApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViUHJlZmVyZW5jZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlByZWZlcmVuY2VzLmNwcAkocmV2aXNpb24gMjg3MjMzKQorKysgU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjM3LDYgKzI2
MzcsMTEgQEAgYm9vbCBXZWJQcmVmZXJlbmNlczo6Y2FudmFzQ29sb3JTcGFjZUVuYWJsZWQoKQog
ICAgIHJldHVybiBib29sVmFsdWVGb3JLZXkoIldlYktpdENhbnZhc0NvbG9yU3BhY2VFbmFibGVk
Iik7CiB9CiAKK2Jvb2wgV2ViUHJlZmVyZW5jZXM6OmNzc0dyYWRpZW50UHJlbXVsdGlwbGllZEFs
cGhhSW50ZXJwb2xhdGlvbkVuYWJsZWQoKQoreworICAgIHJldHVybiBib29sVmFsdWVGb3JLZXko
IldlYktpdENTU0dyYWRpZW50UHJlbXVsdGlwbGllZEFscGhhSW50ZXJwb2xhdGlvbkVuYWJsZWQi
KTsKK30KKwogYm9vbCBXZWJQcmVmZXJlbmNlczo6bW9ja1Njcm9sbGJhcnNDb250cm9sbGVyRW5h
YmxlZCgpCiB7CiAgICAgcmV0dXJuIGJvb2xWYWx1ZUZvcktleSgiV2ViS2l0TW9ja1Njcm9sbGJh
cnNDb250cm9sbGVyRW5hYmxlZCIpOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
UHJlZmVyZW5jZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQ
cmVmZXJlbmNlcy5oCShyZXZpc2lvbiAyODcyMzMpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJQcmVmZXJlbmNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNDYsNiArMzQ2LDcgQEAgY2xh
c3MgV2ViUHJlZmVyZW5jZXMgZmluYWwgOiBwdWJsaWMgSVdlYlByZWZlcmVuY2VzLCBwCiAgICAg
Ly8gVGhlIGZvbGxvd2luZyBwcmVmZXJlbmNlIGFjY2Vzc29ycyBhcmUgbm90IGV4cG9zZWQgdmlh
IElXZWJQcmVmZXJlbmNlcyogYXMgdGhleSBhcmUgb25seQogICAgIC8vIG5lZWRlZCBmb3IgdGVz
dGluZyBwdXJwb3NlcyBhbmQgY2FuIGJlIHRvZ2dsZWQgdmlhIHRoZSBzZXQqUHJlZmVyZW5jZUZv
clRlc3RpbmcgZnVuY3Rpb25zLgogICAgIGJvb2wgY2FudmFzQ29sb3JTcGFjZUVuYWJsZWQoKTsK
KyAgICBib29sIGNzc0dyYWRpZW50UHJlbXVsdGlwbGllZEFscGhhSW50ZXJwb2xhdGlvbkVuYWJs
ZWQoKTsKICAgICBib29sIG1vY2tTY3JvbGxiYXJzQ29udHJvbGxlckVuYWJsZWQoKTsKIAogcHJp
dmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAyODcy
MzMpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTYwMCw2ICs1NjAwLDcgQEAgSFJFU1VMVCBXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNl
c0NoYW5nZWQoSVdlYk5vdGlmaWNhCiAgICAgc2V0dGluZ3Muc2V0T3ZlcnNjcm9sbEJlaGF2aW9y
RW5hYmxlZCghIWVuYWJsZWQpOwogCiAgICAgc2V0dGluZ3Muc2V0Q2FudmFzQ29sb3JTcGFjZUVu
YWJsZWQobV9wcmVmZXJlbmNlcy0+Y2FudmFzQ29sb3JTcGFjZUVuYWJsZWQoKSk7CisgICAgc2V0
dGluZ3Muc2V0Q1NTR3JhZGllbnRQcmVtdWx0aXBsaWVkQWxwaGFJbnRlcnBvbGF0aW9uRW5hYmxl
ZChtX3ByZWZlcmVuY2VzLT5jc3NHcmFkaWVudFByZW11bHRpcGxpZWRBbHBoYUludGVycG9sYXRp
b25FbmFibGVkKCkpOwogICAgIHNldHRpbmdzLnNldE1vY2tTY3JvbGxiYXJzQ29udHJvbGxlckVu
YWJsZWQobV9wcmVmZXJlbmNlcy0+bW9ja1Njcm9sbGJhcnNDb250cm9sbGVyRW5hYmxlZCgpKTsK
IAogICAgIHJldHVybiBTX09LOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjg3Mjg4KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMTItMjAgIFNhbSBXZWluaWcgIDx3
ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBwcmVtdWx0aXBsaWVk
IGFscGhhIGludGVycG9sYXRlZCBncmFkaWVudHMgYW5kIGRlZmF1bHRlZCBvZmYgb3B0aW9uIHRv
IHVzZSB0aGVtIGZvciBDU1MgR3JhZGllbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ0OTIKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBG
cmFzZXIuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5jcHA6CisgICAg
ICAgIChXVFI6OlRlc3RPcHRpb25zOjpkZWZhdWx0cyk6CisgICAgICAgIEFkZCBkZWZhdWx0IGZv
ciBXaW5kb3dzIFdlYktpdExlZ2FjeSB0ZXN0aW5nIHdoaWNoIHN0aWxsIHJlcXVpcmVzIGl0Lgor
CiAyMDIxLTEyLTIwICBKIFBhc2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KIAogICAgICAgICBb
V2ViQXV0aG5dIEFkZCBvcHRpb24gdG8gY2hhbmdlIHJlcXVlc3RXZWJBdXRoZW50aWNhdGlvbk5v
R2VzdHVyZSBkZWxlZ2F0ZSBmb3IgYXBpIHRlc3RzLgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvVGVzdE9wdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rl
c3RPcHRpb25zLmNwcAkocmV2aXNpb24gMjg3MjMzKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUv
VGVzdE9wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsNiArMTM1LDcgQEAgY29uc3Qg
VGVzdEZlYXR1cmVzJiBUZXN0T3B0aW9uczo6ZGVmYXVsdHMoKQogICAgICAgICAgICAgeyAiQ1NT
Q29udGFpbm1lbnRFbmFibGVkIiwgZmFsc2UgfSwKICAgICAgICAgICAgIHsgIkNTU0NvdW50ZXJT
dHlsZUF0UnVsZUltYWdlU3ltYm9sc0VuYWJsZWQiLCBmYWxzZSB9LAogICAgICAgICAgICAgeyAi
Q1NTQ291bnRlclN0eWxlQXRSdWxlc0VuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAi
Q1NTR3JhZGllbnRQcmVtdWx0aXBsaWVkQWxwaGFJbnRlcnBvbGF0aW9uRW5hYmxlZCIsIHRydWUg
fSwKICAgICAgICAgICAgIHsgIkNTU0xvZ2ljYWxFbmFibGVkIiwgZmFsc2UgfSwKICAgICAgICAg
ICAgIHsgIkNTU09NVmlld1Ntb290aFNjcm9sbGluZ0VuYWJsZWQiLCBmYWxzZSB9LAogICAgICAg
ICAgICAgeyAiQ2FudmFzQ29sb3JTcGFjZUVuYWJsZWQiLCB0cnVlIH0sCkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyODcyMzMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwyMCBAQAorMjAyMS0xMi0yMCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHByZW11bHRpcGxpZWQgYWxwaGEgaW50ZXJwb2xh
dGVkIGdyYWRpZW50cyBhbmQgZGVmYXVsdGVkIG9mZiBvcHRpb24gdG8gdXNlIHRoZW0gZm9yIENT
UyBHcmFkaWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNDQ5MgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAg
ICBBZGQgYW5kIHVwZGF0ZSB0ZXN0cyBmb3IgZ3JhZGllbnRzIHdpdGggYWxwaGEgbm93IHRoYXQg
d2UgaGF2ZSBzdXBwb3J0IGZvciBwcmVtdWx0aXBsaWVkIGludGVycG9sYXRpb24uCisgICAgICAg
IEJ5IGRlZmF1bHQsIHRoZSB0ZXN0cyBub3cgZW5hYmxlIHByZW11bHRpcGxpZWQgaW50ZXJwb2xh
dGlvbiAoc2luY2UgaXQgaXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUpIHNvCisgICAgICAgIHRv
IGNvbnRpbnVlIHRlc3RpbmcgdGhlIG9sZCBwYXRoLCB0aGUgc2V0dGluZyBtdXN0IGJlIGV4cGxp
Y2l0bHkgZGlzYWJsZWQuCisKKyAgICAgICAgKiBmYXN0L2dyYWRpZW50cy9hbHBoYS1wcmVtdWx0
aXBsaWVkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZ3JhZGllbnRzL2Fs
cGhhLXByZW11bHRpcGxpZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9ncmFkaWVudHMv
Y29uaWMtZ3JhZGllbnQtYWxwaGEtZXhwZWN0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2dyYWRp
ZW50cy9jb25pYy1ncmFkaWVudC1hbHBoYS11bnByZW11bHRpcGxpZWQtZXhwZWN0ZWQuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGllbnQtYWxwaGEtdW5w
cmVtdWx0aXBsaWVkLmh0bWw6IEFkZGVkLgorCiAyMDIxLTEyLTE3ICBTaW1vbiBGcmFzZXIgIDxz
aW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlYWQgdGhlIGRlZmF1bHQgdmFsdWUg
b2YgdGhlIFNjcm9sbEFuaW1hdG9yRW5hYmxlZCBzZXR0aW5nIGZyb20gTlNVc2VyRGVmYXVsdHMK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZ3JhZGllbnRzL2FscGhhLXByZW11bHRpcGxpZWQtZXhw
ZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2dyYWRpZW50cy9hbHBo
YS1wcmVtdWx0aXBsaWVkLWV4cGVjdGVkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9ncmFkaWVudHMvYWxwaGEtcHJlbXVsdGlwbGllZC1leHBlY3RlZC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxzdHlsZT4KKyAgICBkaXYgeyAKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBo
ZWlnaHQ6IDEwMHB4OworICAgIH0KKworICAgICNsaW5lYXIgeworICAgICAgICBiYWNrZ3JvdW5k
LWltYWdlOiBsaW5lYXItZ3JhZGllbnQodHJhbnNwYXJlbnQsIHJnYigwLCAwLCAyNTUpKTsKKyAg
ICB9CisKKyAgICAjbGluZWFyLXJlcGVhdGluZyB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6
IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodHJhbnNwYXJlbnQsIHJnYigwLCAwLCAyNTUpIDI1
cHgpOworICAgIH0KKworICAgICNyYWRpYWwgeworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBy
YWRpYWwtZ3JhZGllbnQodHJhbnNwYXJlbnQsIHJnYigwLCAwLCAyNTUpKTsKKyAgICB9CisKKyAg
ICAjcmFkaWFsLXJlcGVhdGluZyB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHJlcGVhdGlu
Zy1yYWRpYWwtZ3JhZGllbnQodHJhbnNwYXJlbnQsIHJnYigwLCAwLCAyNTUpIDI1cHgpOworICAg
IH0KKworICAgICNjb25pYyB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGNvbmljLWdyYWRp
ZW50KHRyYW5zcGFyZW50LCByZ2IoMCwgMCwgMjU1KSk7CisgICAgfQorCisgICAgI2NvbmljLXJl
cGVhdGluZyB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHJlcGVhdGluZy1jb25pYy1ncmFk
aWVudCh0cmFuc3BhcmVudCwgcmdiKDAsIDAsIDI1NSkgMzBkZWcpOworICAgIH0KKyAgICAKKzwv
c3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImxpbmVhciI+PC9kaXY+Cis8ZGl2IGlk
PSJsaW5lYXItcmVwZWF0aW5nIj48L2Rpdj4KKzxkaXYgaWQ9InJhZGlhbCI+PC9kaXY+Cis8ZGl2
IGlkPSJyYWRpYWwtcmVwZWF0aW5nIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbmljIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbmljLXJlcGVhdGluZyI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2dyYWRpZW50cy9hbHBoYS1wcmVtdWx0aXBsaWVkLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVudHMvYWxwaGEtcHJlbXVsdGlwbGllZC5o
dG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZ3JhZGllbnRzL2FscGhhLXBy
ZW11bHRpcGxpZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisgICAgZGl2IHsgCisgICAgICAgIHdp
ZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9CisKKyAgICAjbGluZWFy
IHsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LCAw
LCAyNTUsIDApLCByZ2IoMCwgMCwgMjU1KSk7CisgICAgfQorCisgICAgI2xpbmVhci1yZXBlYXRp
bmcgeworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50
KHJnYmEoMjU1LCAwLCAyNTUsIDApLCByZ2IoMCwgMCwgMjU1KSAyNXB4KTsKKyAgICB9CisKKyAg
ICAjcmFkaWFsIHsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogcmFkaWFsLWdyYWRpZW50KHJn
YmEoMjU1LCAwLCAyNTUsIDApLCByZ2IoMCwgMCwgMjU1KSk7CisgICAgfQorCisgICAgI3JhZGlh
bC1yZXBlYXRpbmcgeworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiByZXBlYXRpbmctcmFkaWFs
LWdyYWRpZW50KHJnYmEoMjU1LCAwLCAyNTUsIDApLCByZ2IoMCwgMCwgMjU1KSAyNXB4KTsKKyAg
ICB9CisKKyAgICAjY29uaWMgeworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBjb25pYy1ncmFk
aWVudChyZ2JhKDI1NSwgMCwgMjU1LCAwKSwgcmdiKDAsIDAsIDI1NSkpOworICAgIH0KKworICAg
ICNjb25pYy1yZXBlYXRpbmcgeworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiByZXBlYXRpbmct
Y29uaWMtZ3JhZGllbnQocmdiYSgyNTUsIDAsIDI1NSwgMCksIHJnYigwLCAwLCAyNTUpIDMwZGVn
KTsKKyAgICB9CisgICAgCis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJsaW5l
YXIiPjwvZGl2PgorPGRpdiBpZD0ibGluZWFyLXJlcGVhdGluZyI+PC9kaXY+Cis8ZGl2IGlkPSJy
YWRpYWwiPjwvZGl2PgorPGRpdiBpZD0icmFkaWFsLXJlcGVhdGluZyI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25pYyI+PC9kaXY+Cis8ZGl2IGlkPSJjb25pYy1yZXBlYXRpbmciPjwvZGl2PgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGll
bnQtYWxwaGEtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2dy
YWRpZW50cy9jb25pYy1ncmFkaWVudC1hbHBoYS1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAyODcy
MzMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2dyYWRpZW50cy9jb25pYy1ncmFkaWVudC1hbHBoYS1l
eHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCwyNyArMTAsMjcgQEAKICAgICAgICAg
I3RvcGxlZnQgewogICAgICAgICAgICAgd2lkdGg6IDA7IAogICAgICAgICAgICAgaGVpZ2h0OiAw
OyAKLSAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxMDBweCBzb2xpZCByZ2IoNjQsODcsNjQpOwor
ICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDEwMHB4IHNvbGlkIHJnYig2NCw2NCw2NCk7CiAgICAg
ICAgICAgICBib3JkZXItdG9wOiAxMDBweCBzb2xpZCByZ2IoMzIsMzIsMzIpOwogICAgICAgICB9
CiAgICAgICAgICN0b3ByaWdodCB7CiAgICAgICAgICAgICB3aWR0aDogMDsgCiAgICAgICAgICAg
ICBoZWlnaHQ6IDA7IAotICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxMDBweCBzb2xpZCByZ2Io
MjI1LDI0NiwyMjUpOwotICAgICAgICAgICAgYm9yZGVyLXRvcDogMTAwcHggc29saWQgcmdiKDI1
NCwyNTQsMjU0KTsKKyAgICAgICAgICAgIGJvcmRlci1yaWdodDogMTAwcHggc29saWQgcmdiKDIy
NCwyMjQsMjI0KTsKKyAgICAgICAgICAgIGJvcmRlci10b3A6IDEwMHB4IHNvbGlkIHJnYigyNTUs
MjU1LDI1NSk7CiAgICAgICAgIH0KICAgICAgICAgI2JvdHRvbWxlZnQgewogICAgICAgICAgICAg
Y2xlYXI6IGxlZnQ7CiAgICAgICAgICAgICB3aWR0aDogMDsgCiAgICAgICAgICAgICBoZWlnaHQ6
IDA7IAotICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDEwMHB4IHNvbGlkIHJnYig5NiwxMzUsOTYp
OwotICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMTAwcHggc29saWQgcmdiKDEyOCwxNzUsMTI4
KTsKKyAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxMDBweCBzb2xpZCByZ2IoOTYsOTYsOTYpOwor
ICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMTAwcHggc29saWQgcmdiKDEyOCwxMjgsMTI4KTsK
ICAgICAgICAgfQogICAgICAgICAjYm90dG9tcmlnaHQgewogICAgICAgICAgICAgd2lkdGg6IDA7
IAogICAgICAgICAgICAgaGVpZ2h0OiAwOyAKLSAgICAgICAgICAgIGJvcmRlci1yaWdodDogMTAw
cHggc29saWQgcmdiKDE5MywyMzEsMTkzKTsKLSAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDEw
MHB4IHNvbGlkIHJnYigxNjAsMjA3LDE2MCk7CisgICAgICAgICAgICBib3JkZXItcmlnaHQ6IDEw
MHB4IHNvbGlkIHJnYigxOTIsMTkyLDE5Mik7CisgICAgICAgICAgICBib3JkZXItYm90dG9tOiAx
MDBweCBzb2xpZCByZ2IoMTYwLDE2MCwxNjApOwogICAgICAgICB9CiAgICAgICAgIC5ib3ggewog
ICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9n
cmFkaWVudHMvY29uaWMtZ3JhZGllbnQtYWxwaGEtdW5wcmVtdWx0aXBsaWVkLWV4cGVjdGVkLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGll
bnQtYWxwaGEtdW5wcmVtdWx0aXBsaWVkLWV4cGVjdGVkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGllbnQtYWxwaGEtdW5wcmVtdWx0
aXBsaWVkLWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NyBAQAorPGh0
bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBDU1NHcmFkaWVudFByZW11bHRpcGxpZWRBbHBo
YUludGVycG9sYXRpb25FbmFibGVkPWZhbHNlIF0gLS0+Cis8aGVhZD4KKyAgICA8c3R5bGU+Cisg
ICAgICAgIGRpdiB7CisgICAgICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgICAgICBoZWln
aHQ6IDIwMHB4OworICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7CisgICAgICAgIH0KKyAgICAgICAg
Lyp0d2VhayB0aGlzIHVudGlsIGl0J3MgYWN0dWFsbHkgcmlnaHQuLi4gKi8KKyAgICAgICAgI3Rv
cGxlZnQgeworICAgICAgICAgICAgd2lkdGg6IDA7IAorICAgICAgICAgICAgaGVpZ2h0OiAwOyAK
KyAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxMDBweCBzb2xpZCByZ2IoNjQsODcsNjQpOworICAg
ICAgICAgICAgYm9yZGVyLXRvcDogMTAwcHggc29saWQgcmdiKDMyLDMyLDMyKTsKKyAgICAgICAg
fQorICAgICAgICAjdG9wcmlnaHQgeworICAgICAgICAgICAgd2lkdGg6IDA7IAorICAgICAgICAg
ICAgaGVpZ2h0OiAwOyAKKyAgICAgICAgICAgIGJvcmRlci1yaWdodDogMTAwcHggc29saWQgcmdi
KDIyNSwyNDYsMjI1KTsKKyAgICAgICAgICAgIGJvcmRlci10b3A6IDEwMHB4IHNvbGlkIHJnYigy
NTQsMjU0LDI1NCk7CisgICAgICAgIH0KKyAgICAgICAgI2JvdHRvbWxlZnQgeworICAgICAgICAg
ICAgY2xlYXI6IGxlZnQ7CisgICAgICAgICAgICB3aWR0aDogMDsgCisgICAgICAgICAgICBoZWln
aHQ6IDA7IAorICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDEwMHB4IHNvbGlkIHJnYig5NiwxMzUs
OTYpOworICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMTAwcHggc29saWQgcmdiKDEyOCwxNzUs
MTI4KTsKKyAgICAgICAgfQorICAgICAgICAjYm90dG9tcmlnaHQgeworICAgICAgICAgICAgd2lk
dGg6IDA7IAorICAgICAgICAgICAgaGVpZ2h0OiAwOyAKKyAgICAgICAgICAgIGJvcmRlci1yaWdo
dDogMTAwcHggc29saWQgcmdiKDE5MywyMzEsMTkzKTsKKyAgICAgICAgICAgIGJvcmRlci1ib3R0
b206IDEwMHB4IHNvbGlkIHJnYigxNjAsMjA3LDE2MCk7CisgICAgICAgIH0KKyAgICAgICAgLmJv
eCB7CisgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIH0KKyAgICAgICAg
LnggeworICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICAgICAgLXdlYmtp
dC1jbGlwLXBhdGg6IHBvbHlnb24oMCUgMCUsIDAlIDEwJSwgNDAlIDUwJSwgMCUgOTAlLCAwJSAx
MDAlLCAxMCUgMTAwJSwgNTAlIDYwJSwgOTAlIDEwMCUsIDEwMCUgMTAwJSwgMTAwJSA5MCUsIDYw
JSA1MCUsIDEwMCUgMTAlLCAxMDAlIDAlLCA5MCUgMCUsIDUwJSA0MCUsIDEwJSAwJSk7CisgICAg
ICAgIH0KKyAgICAgICAgI3ggeworICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsK
KyAgICAgICAgfQorICAgICAgICAucGx1cyB7CisgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1
dGU7CisgICAgICAgICAgICAtd2Via2l0LWNsaXAtcGF0aDogcG9seWdvbig0NSUgMCUsIDU1JSAw
JSwgNTUlIDQ1JSwgMTAwJSA0NSUsIDEwMCUgNTUlLCA1NSUgNTUlLCA1NSUgMTAwJSwgNDUlIDEw
MCUsIDQ1JSA1NSUsIDAlIDU1JSwgMCUgNDUlLCA0NSUgNDUlKTsKKyAgICAgICAgfQorICAgICAg
ICAjcGx1cyB7CisgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOworICAgICAgICB9
CisgICAgICAgIAorICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2PgorICAg
ICAgICA8ZGl2IGNsYXNzPSJib3giPgorICAgICAgICAgICAgPGRpdiBpZD0idG9wbGVmdCI+PC9k
aXY+CisgICAgICAgICAgICA8ZGl2IGlkPSJ0b3ByaWdodCI+PC9kaXY+CisgICAgICAgICAgICA8
ZGl2IGlkPSJib3R0b21sZWZ0Ij48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImJvdHRvbXJp
Z2h0Ij48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxkaXYgaWQ9IngiIGNsYXNzPSJ4
Ij48L2Rpdj4KKyAgICAgICAgPGRpdiBpZD0icGx1cyIgY2xhc3M9InBsdXMiPjwvZGl2PgorICAg
IDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVu
dHMvY29uaWMtZ3JhZGllbnQtYWxwaGEtdW5wcmVtdWx0aXBsaWVkLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGllbnQtYWxwaGEtdW5wcmVt
dWx0aXBsaWVkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVu
dHMvY29uaWMtZ3JhZGllbnQtYWxwaGEtdW5wcmVtdWx0aXBsaWVkLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw1NiBAQAorPGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBDU1NH
cmFkaWVudFByZW11bHRpcGxpZWRBbHBoYUludGVycG9sYXRpb25FbmFibGVkPWZhbHNlIF0gLS0+
Cis8aGVhZD4KKzxzdHlsZT4KKyAgICBzdmcgeworICAgICAgICB3aWR0aDogODAwcHg7CisgICAg
ICAgIGRpc3BsYXk6IG5vbmU7CisgICAgfQorICAgIGRpdiB7CisgICAgICAgIHdpZHRoOiAyMDBw
eDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9CisgICAgI2dyYWRpZW50IHsKKyAgICAg
ICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhl
aWdodDogMjAwcHg7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGNvbmljLWdyYWRpZW50KHJn
YmEoMCwyNTUsMCwwKSwgYmxhY2spOworICAgICAgICBmaWx0ZXI6IHVybCgjcG9zdGVyaXplKTsK
KyAgICB9CisKKyAgICAueCB7CisgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAg
LXdlYmtpdC1jbGlwLXBhdGg6IHBvbHlnb24oMCUgMCUsIDAlIDEwJSwgNDAlIDUwJSwgMCUgOTAl
LCAwJSAxMDAlLCAxMCUgMTAwJSwgNTAlIDYwJSwgOTAlIDEwMCUsIDEwMCUgMTAwJSwgMTAwJSA5
MCUsIDYwJSA1MCUsIDEwMCUgMTAlLCAxMDAlIDAlLCA5MCUgMCUsIDUwJSA0MCUsIDEwJSAwJSk7
CisgICAgfQorICAgICN4IHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsKKyAgICB9
CisgICAgLnBsdXMgeworICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIC13ZWJr
aXQtY2xpcC1wYXRoOiBwb2x5Z29uKDQ1JSAwJSwgNTUlIDAlLCA1NSUgNDUlLCAxMDAlIDQ1JSwg
MTAwJSA1NSUsIDU1JSA1NSUsIDU1JSAxMDAlLCA0NSUgMTAwJSwgNDUlIDU1JSwgMCUgNTUlLCAw
JSA0NSUsIDQ1JSA0NSUpOworICAgIH0KKyAgICAjcGx1cyB7CisgICAgICAgIGJhY2tncm91bmQt
Y29sb3I6d2hpdGU7CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKworPGJvZHk+Cis8c3ZnIHZp
ZXdCb3g9IjAgMCA3MDAgMTAwIj4KKzxkZWZzPgorICAgIDxmaWx0ZXIgaWQ9InBvc3Rlcml6ZSIg
ZmlsdGVyVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiBwcmltaXRpdmVVbml0cz0ib2JqZWN0Qm91
bmRpbmdCb3giPgorICAgICAgICA8ZmVDb21wb25lbnRUcmFuc2Zlcj4KKyAgICAgICAgICAgIDxm
ZUZ1bmNSIHR5cGU9ImRpc2NyZXRlIiB0YWJsZVZhbHVlcz0iMCAwLjEyNSAwLjI1IDAuMzc1IDAu
NSAwLjYyNSAwLjc1IDAuODc1Ii8+CisgICAgICAgICAgICA8ZmVGdW5jRyB0eXBlPSJkaXNjcmV0
ZSIgdGFibGVWYWx1ZXM9IjAgMC4xMjUgMC4yNSAwLjM3NSAwLjUgMC42MjUgMC43NSAwLjg3NSIv
PgorICAgICAgICAgICAgPGZlRnVuY0IgdHlwZT0iZGlzY3JldGUiIHRhYmxlVmFsdWVzPSIwIDAu
MTI1IDAuMjUgMC4zNzUgMC41IDAuNjI1IDAuNzUgMC44NzUiLz4KKyAgICAgICAgICAgIDxmZUZ1
bmNBIHR5cGU9ImRpc2NyZXRlIiB0YWJsZVZhbHVlcz0iMCAwLjEyNSAwLjI1IDAuMzc1IDAuNSAw
LjYyNSAwLjc1IDAuODc1Ii8+CisgICAgICAgIDwvZmVDb21wb25lbnRUcmFuc2Zlcj4KKyAgICA8
L2ZpbHRlcj4KKzwvZGVmcz4KKzwvc3ZnPgorCis8ZGl2PgorICAgIDxkaXYgaWQ9ImdyYWRpZW50
Ij48L2Rpdj4KKyAgICA8ZGl2IGlkPSJ4IiBjbGFzcz0ieCI+PC9kaXY+CisgICAgPGRpdiBpZD0i
cGx1cyIgY2xhc3M9InBsdXMiPjwvZGl2PgorPC9kaXY+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447685</attachid>
            <date>2021-12-20 21:24:02 -0800</date>
            <delta_ts>2021-12-20 21:29:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234492-20211220212402.patch</filename>
            <type>text/plain</type>
            <size>92164</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODcyMzMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIxLTEyLTIwICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgcHJlbXVsdGlwbGllZCBhbHBo
YSBpbnRlcnBvbGF0ZWQgZ3JhZGllbnRzIGFuZCBkZWZhdWx0ZWQgb2ZmIG9wdGlvbiB0byB1c2Ug
dGhlbSBmb3IgQ1NTIEdyYWRpZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM0NDkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2Vy
LgorCisgICAgICAgICogU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1l
bnRhbC55YW1sOgorICAgICAgICBBZGQgYSBuZXcgZXhwZXJpbWVudGFsIHNldHRpbmcgdG8gZW5h
YmxlIHByZW11bHRpcGxpZWQgYWxwaGEgQ1NTIGdyYWRpZW50cy4gCisKIDIwMjEtMTItMTggIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEhhc2ggdGFibGVzLCByZWFk
L3dyaXRlLCBhbmQgaGVhcCBtZW1vcnkgYXJlIHVzZWQgdW5uZWNlc3NhcmlseSwgd2hpY2ggbWF5
IGh1cnQgcGVyZm9ybWFuY2UKSW5kZXg6IFNvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9X
ZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
U2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCShyZXZp
c2lvbiAyODcyMzMpCisrKyBTb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVy
ZW5jZXNFeHBlcmltZW50YWwueWFtbAkod29ya2luZyBjb3B5KQpAQCAtMjg0LDYgKzI4NCwxOCBA
QCBDU1NDdXN0b21Qcm9wZXJ0aWVzQW5kVmFsdWVzRW5hYmxlZDoKICAgICBXZWJDb3JlOgogICAg
ICAgZGVmYXVsdDogZmFsc2UKIAorQ1NTR3JhZGllbnRQcmVtdWx0aXBsaWVkQWxwaGFJbnRlcnBv
bGF0aW9uRW5hYmxlZDoKKyAgdHlwZTogYm9vbAorICBodW1hblJlYWRhYmxlTmFtZTogIkNTUyBH
cmFkaWVudCBQcmVtdWx0aXBsaWVkIEFscGhhIEludGVycG9sYXRpb24iCisgIGh1bWFuUmVhZGFi
bGVEZXNjcmlwdGlvbjogIkVuYWJsZSBwcmVtdWx0aXBsaWVkIGFscGhhIGludGVycG9sYXRlZCBD
U1MgZ3JhZGllbnRzIgorICBkZWZhdWx0VmFsdWU6CisgICAgV2ViS2l0TGVnYWN5OgorICAgICAg
ZGVmYXVsdDogZmFsc2UKKyAgICBXZWJLaXQ6CisgICAgICBkZWZhdWx0OiBmYWxzZQorICAgIFdl
YkNvcmU6CisgICAgICBkZWZhdWx0OiBmYWxzZQorCiAjIEZJWE1FOiBUaGlzIGlzIGVuYWJsZWQg
d2hlbiBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkVTKSBpcyB0cnVlIGluIFdlYktpdDIuIFBl
cmhhcHMgd2Ugc2hvdWxkIGNvbnNpZGVyIHVzaW5nIHRoYXQgZm9yIFdlYktpdExlZ2FjeSBhcyB3
ZWxsLgogQ1NTSW5kaXZpZHVhbFRyYW5zZm9ybVByb3BlcnRpZXNFbmFibGVkOgogICB0eXBlOiBi
b29sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODcyMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMTAgQEAKKzIwMjEtMTItMjAgIFNh
bSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBw
cmVtdWx0aXBsaWVkIGFscGhhIGludGVycG9sYXRlZCBncmFkaWVudHMgYW5kIGRlZmF1bHRlZCBv
ZmYgb3B0aW9uIHRvIHVzZSB0aGVtIGZvciBDU1MgR3JhZGllbnRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ0OTIKKworICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZ3JhZGllbnRzL2FscGhh
LXByZW11bHRpcGxpZWQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ncmFkaWVudHMvY29uaWMt
Z3JhZGllbnQtYWxwaGEtdW5wcmVtdWx0aXBsaWVkLmh0bWwKKworICAgICAgICBFeHRyYWN0cyB1
c2Ugb2YgQ0dHcmFkaWVudFJlZiBvdXQgb2YgR3JhZGllbnQgYW5kIGludG8gdGhlIG5ldyBHcmFk
aWVudFJlbmRlcmVyQ0cgd2hpY2ggYWxzbyBpbXBsZW1lbnRzCisgICAgICAgIGEgQ0dTaGFkaW5n
UmVmIGJhc2VkIGdyYWRpZW50IGRyYXdpbmcgcGF0aC4gVGhlIEdyYWRpZW50UmVuZGVyZXJDRyBw
aWNrcyB3aGljaCBzdHJhdGVneSwgQ0dHcmFkaWVudFJlZgorICAgICAgICBvciBDR1NoYWRpbmdS
ZWYsIGJhc2VkIG9uIHRoZSBpbnRlcG9sYXRpb24gbW9kZSBhbmQgY2FwYWJpbGl0aWVzIG9mIHRo
ZSB1bmRlcmx5aW5nIENvcmVHcmFwaGljcy4gRm9yIAorICAgICAgICBuZXcgZW5vdWdoIENvcmVH
cmFwaGljcywgYm90aCBwcmVtdWx0aXBsaWVkIGFuZCBub24tcHJlbXVsdGlwbGllZCBhbHBoYSBp
bnRlcnBvbGF0aW9uIGZvciBzUkdCIG91dHB1dAorICAgICAgICBhcmUgc3VwcG9ydGVkIGluIHRo
ZSBtb3JlIG9wdGltaXphYmxlIENHR3JhZGllbnRSZWYgcGF0aCwgYnV0IG9uIG9sZGVyIHN5c3Rl
bXMgd2Ugd2lsbCBmYWxsYmFjayB0byBhIAorICAgICAgICBhIG5ld2x5IGltcGxlbWVudGVkIENH
U2hhZGluZ1JlZiBiYXNlZCBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICBJbiBhZGRpdGlvbiB0
byB0aGUgcGxhdGZvcm0gbGV2ZWwgd29yayBpbiBHcmFkaWVudCwgdGhpcyBhZGRzIGEgbmV3IHNl
dHRpbmcsIENTU0dyYWRpZW50UHJlbXVsdGlwbGllZEFscGhhSW50ZXJwb2xhdGlvbkVuYWJsZWQs
CisgICAgICAgIHdoaWNoIGRlZmF1bHRzIHRvIG9mZiBmb3Igbm93IGFuZCBzd2l0Y2hlcyB3aGF0
IHR5cGUgb2YgaW50ZXJwb2xhdGlvbiB3ZSB1c2UgZm9yIENTUyBncmFkaWVudHMuIEl0CisgICAg
ICAgIGRvZXMgbm90IGVmZmVjdCBvdGhlciBncmFkaWVudCB1c2VzIHN1Y2ggYXMgYnkgY2FudmFz
IG9yIFNWRy4gVGhvc2Ugd2lsbCBiZSBlbmFibGVkIHNlcGFyYXRlbHkuCisKKyAgICAgICAgKiBI
ZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtQXBwbGVXaW4uY21ha2U6CisgICAgICAg
ICogUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZCBuZXcg
ZmlsZXMuCisKKyAgICAgICAgKiBjc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMaW5lYXJHcmFkaWVudEFkYXB0ZXI6Om5vcm1hbGl6ZVN0b3BzQW5kRW5kcG9pbnRz
T3V0c2lkZVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlhbEdyYWRpZW50QWRhcHRlcjo6
bm9ybWFsaXplU3RvcHNBbmRFbmRwb2ludHNPdXRzaWRlUmFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29uaWNHcmFkaWVudEFkYXB0ZXI6Om5vcm1hbGl6ZVN0b3BzQW5kRW5kcG9pbnRzT3V0c2lk
ZVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyYWRpZW50VmFsdWU6OmNvbXB1dGVTdG9w
cyk6CisgICAgICAgIFN3aXRjaCB0byB1c2luZyB0aGUgbmV3IGludGVycG9sYXRlQ29sb3JzKCkg
ZnVuY3Rpb24gZnJvbSBDb2xvckludGVycG9sYXRpb24uaAorICAgICAgICB3aGljaCBhY2N1cmF0
ZWx5IHRha2VzIGludG8gYWNjb3VudCB0aGUgY3VycmVudCBpbnRlcnBvbGF0aW9uIG1vZGUuIFRo
ZXNlCisgICAgICAgIGJsZW5kcyBub3cgbWF0Y2ggd2hhdCB0aGUgY3JlYXRlZCBncmFkaWVudCBk
b2VzLgorCisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmNwcDoKKyAgICAg
ICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaDoKKyAgICAgICAgQWRkIHN1cHBvcnQg
Zm9yIHF1ZXJ5aW5nIENTU0dyYWRpZW50UHJlbXVsdGlwbGllZEFscGhhSW50ZXJwb2xhdGlvbkVu
YWJsZWQgZnJvbSB0aGUgQ1NTIHBhcnNlci4KKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFy
c2VySGVscGVyczo6Z3JhZGllbnRBbHBoYVByZW11bHRpcGxpY2F0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZURlcHJlY2F0ZWRHcmFkaWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVE
ZXByZWNhdGVkUmFkaWFsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQ
YXJzZXJIZWxwZXJzOjpjb25zdW1lUmFkaWFsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lTGluZWFyR3JhZGllbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lQ29uaWNHcmFkaWVu
dCk6CisgICAgICAgIERlcGVuZGluZyBvbiBob3cgQ1NTR3JhZGllbnRQcmVtdWx0aXBsaWVkQWxw
aGFJbnRlcnBvbGF0aW9uRW5hYmxlZCBpcyBzZXQsIHVzZSBlaXRoZXIgcHJlbXVsdGlwbGllZAor
ICAgICAgICBvciBub24tcHJlbXVsdGlwbGllZCBpbnRlcnBvbGF0aW9uIGZvciBDU1MgZ3JhZGll
bnRzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb21wb25lbnRzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDb2xvckNvbXBvbmVudHM6OnNpemUgY29uc3QpOgorICAgICAgICBB
ZGQgc2l6ZSgpIGZ1bmN0aW9uIGZvciB1c2UgYnkgdGhlIHNoYWRpbmcgc3RyYXRlZ3kuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckludGVycG9sYXRpb24uaDoKKyAgICAgICAg
KFdlYkNvcmU6OnByZUludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uRm9yQ29tcG9uZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OnByZUludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OnBvc3RJbnRlcnBvbGF0aW9uTm9ybWFsaXphdGlvbkZvckNvbXBvbmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpwb3N0SW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6aW50ZXJwb2xhdGVDb2xvckNvbXBvbmVudHMpOgorICAgICAgICBVcGRhdGUg
dG8gdXNlIHRoZSBuYW1lIEludGVycG9sYXRpb25NZXRob2RDb2xvclNwYWNlIGNvbnNpc3Rlbmx5
IGZvciB0aGUgY29sb3Igc3BhY2UgcGFydCBvZiB0aGUKKyAgICAgICAgaW50ZXJwb2xhdGlvbiBt
ZXRob2QuCisgIAorICAgICAgICAoV2ViQ29yZTo6aW50ZXJwb2xhdGVDb2xvcnMpOgorICAgICAg
ICBBZGQgaGVscGVyIHdoaWNoIHRha2VzIGFuZCByZXR1cm5zIENvbG9yIG9iamVjdHMgcmF0aGVy
IHRoYW4gdGhlIHN0cm9uZ2x5IHR5cGVkIGNvbG9yIHR5cGVzLCAKKyAgICAgICAgYXV0b21hdGlj
YWxseSBjb252ZXJ0aW5nIHRvIHRoZSBhcHByb3ByaWF0ZSBpbnRlcnBvbGF0aW9uIGNvbG9yIHNw
YWNlIGJhc2VkIG9uIHRoZSBwcm92aWRlZAorICAgICAgICBDb2xvckludGVycG9sYXRpb25NZXRo
b2Qgb2JqZWN0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudENvbG9yU3RvcC5oOiBBZGRlZC4KKyAg
ICAgICAgTW92ZSBDb2xvclN0b3AgYW5kIENvbG9yU3RvcFZlY3RvciBkZWZpbnRpb25zIHRvIG5l
dyBHcmFkaWVudENvbG9yU3RvcCBmaWxlLCBidXQga2VlcCB0aGUKKyAgICAgICAgb2xkIG5lc3Rl
ZCBuYW1lcyB2aWEgdXNpbmcgZGlyZWN0aXZlcy4gVGhpcyBpcyBuZWVkZWQgdG8gbWFrZSB1c2lu
ZyB0aGUgQ29sb3JTdG9wVmVjdG9yCisgICAgICAgIGZyb20gR3JhZGllbnRSZW5kZXJlckNHICh3
aGljaCB3ZSBhbHNvIHdhbnQgdG8gdXNlIGluIEdyYWRpZW50LmgpIHBvc3NpYmxlIHdpdGhvdXQg
cmVkZWNsYXJhdGlvbi4KKyAgICAgICAgUmVwbGFjZSBDR0dyYWRpZW50UmVmIG1lbWJlciB3aXRo
IEdyYWRpZW50UmVuZGVyZXJDRyB3aGljaCBhbGxvd3MgY2hvb3NpbmcgYmV0d2VlbiBlaXRoZXIK
KyAgICAgICAgYSBDR0dyYWRpZW50UmVmIGJhc2VkIGltcGxlbWVudGF0aW9uIG9yIENHU2hhZGlu
Z1JlZiBiYXNlZCBvbmUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVu
dENHLmNwcDoKKyAgICAgICAgVXBkYXRlIHRvIHVzZSB0aGUgR3JhZGllbnRSZW5kZXJlckNHIHJh
dGhlcm4gdGhhbiBhIENHR3JhZGllbnRSZWYgZGlyZWN0bHksIGNhbGxpbmcgaW50byBpdAorICAg
ICAgICB0byBkbyB0aGUgYWN0dWFsIGRyYXcgY2FsbHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFkaWVudFJlbmRlcmVyQ0cuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRSZW5kZXJlckNHLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpHcmFkaWVudFJlbmRlcmVyQ0c6OnBpY2tTdHJhdGVneSBjb25zdCk6CisgICAgICAg
IENlbnRyYWwgZnVuY3Rpb24gdG8gY2hvb3NlIHdoaWNoIHN0cmF0ZWd5IHRvIHVzZSBiYXNlZCBv
biBzeXN0ZW0gY2FwYWJpbGl0aWVzIGFuZCBpbnRlcnBvbGF0aW9uIG5lZWRzLgorCisgICAgICAg
IChXZWJDb3JlOjpHcmFkaWVudFJlbmRlcmVyQ0c6Om1ha2VHcmFkaWVudCBjb25zdCk6CisgICAg
ICAgIE1vdmVkIGZyb20gR3JhZGllbnRDRy5jcHAuIFJlbW92ZWQgdGhlIENHR3JhZGllbnRDcmVh
dGVXaXRoQ29sb3JzKCkgcGF0aCwgYXMgd2UgY2FuIGFsd2F5cyB1c2UgdGhlCisgICAgICAgIG1v
cmUgZWZmaWNpZW50IENHR3JhZGllbnRDcmVhdGVXaXRoQ29sb3JDb21wb25lbnRzKCkgYnkgZG9p
bmcgdGhlIGNvbnZlcnNpb24gdG8gZXh0ZW5kZWQgc1JHQiBvdXJzZWx2ZXMuCisgICAgICAgIEFs
c28gYWRkcyB1c2Ugb2YgdGhlIGtDR0dyYWRpZW50SW50ZXJwb2xhdGVzUHJlbXVsdGlwbGllZCBv
cHRpb24gb24gc3VwcG9ydGVkIHN5c3RlbXMgdG8gdGVsbCBDb3JlR3JhcGhpY3MKKyAgICAgICAg
dG8gdXNlIHByZW11bGl0cGxpZWQgaW50ZXJwb2xhdGlvbi4KKworICAgICAgICAoV2ViQ29yZTo6
c2hhZGluZ0Z1bmN0aW9uKToKKyAgICAgICAgQ29yZSBmdW5jdGlvbiB1c2VkIGJ5IENHU2hhZGlu
Z1JlZiB0byBpbnRlcnBvbGF0ZSBiZXR3ZWVuIGNvbG9yIHN0b3BzLiBUZW1wbGF0aXplZCB0byBh
bGxvdyBmb3Igb3B0aW1pemVkCisgICAgICAgIHZlcnNpb25zIGZvciBldmVyeSBDb2xvckludGVy
cG9sYXRpb25Db2xvclNwYWNlIC8gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBwYWlyLiAKKworICAg
ICAgICAoV2ViQ29yZTo6R3JhZGllbnRSZW5kZXJlckNHOjptYWtlU2hhZGluZyBjb25zdCk6Cisg
ICAgICAgIEJ1aWxkcyBzaGFkaW5nIHN0cmF0ZWd5IGJ5IGNvbnZlcnRpbmcgYWxsIGNvbG9yIHN0
b3BzIHRvIHRoZSBpbnRlcnBvbGF0aW9uIGNvbG9yIHNwYWNlLCBhZGRpbmcgc3RvcHMgYXQKKyAg
ICAgICAgMCBhbmQgMSBpZiBuZWNlc3NhcnksIGFuZCBjcmVhdGluZyB0aGUgQ0dGdW5jdGlvblJl
ZiB0aGF0IHRoZSBzaGFkaW5nIHdpbGwgb3duLiBUbyBhdm9pZCBhIGNpcmN1bGFyIAorICAgICAg
ICByZWZlcmVuY2UsIHRoZSBHcmFkaWVudFJlbmRlcmVyQ0cgaXRzZWxmIGlzIG5vdCB3aGF0IHRo
ZSBDR0Z1bmN0aW9uUmVmIHJldGFpbnMsIGJ1dCByYXRoZXIgYSBzdWJvYmplY3QKKyAgICAgICAg
RGF0YSwgd2hpY2ggaXMgYSBwZWVyIHRvIHRoZSBDR0Z1bmN0aW9uUmVmLgorCisgICAgICAgIChX
ZWJDb3JlOjpHcmFkaWVudFJlbmRlcmVyQ0c6OmRyYXdMaW5lYXJHcmFkaWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFkaWVudFJlbmRlcmVyQ0c6OmRyYXdSYWRpYWxHcmFkaWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFkaWVudFJlbmRlcmVyQ0c6OmRyYXdDb25pY0dyYWRpZW50KToKKyAg
ICAgICAgRHJhdyB0aGUgZ3JhZGllbnQgb3Igc2hhZGluZyBiYXNlZCBvbiB0aGUgc3RyYXRlZ3kg
c2VsZWN0ZWQgYXQgY29uc3RydWN0aW9uLgorCiAyMDIxLTEyLTE4ICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KIAogICAgICAgICBIYXNoIHRhYmxlcywgcmVhZC93cml0ZSwgYW5kIGhl
YXAgbWVtb3J5IGFyZSB1c2VkIHVubmVjZXNzYXJpbHksIHdoaWNoIG1heSBodXJ0IHBlcmZvcm1h
bmNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9X
ZWJDb3JlL0hlYWRlcnMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTE0NjEsNiArMTQ2MSw3IEBA
IHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9HbHlwaE1ldHJpY3NNYXAuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoUGFnZS5o
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYWRpZW50Q29sb3JTdG9wLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEZsdXNoSWRlbnRpZmll
ci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApJbmRleDogU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCShyZXZpc2lvbiAyODcyMzMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEs
NiArMTMxLDcgQEAgZWxzZSAoKQogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFJl
Y3RDRy5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRTaXplQ0cuY3BwCiAg
ICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwCisgICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50UmVuZGVyZXJDRy5jcHAKICAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0lPU3VyZmFjZVBvb2wuY3BwCkBAIC0xODIsNiArMTgzLDcgQEAgZWxzZSAoKQogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmgKIAogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAorICAgICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFkaWVudFJlbmRlcmVyQ0cuaAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5oCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lP
U3VyZmFjZVBvb2wuaAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNH
QmFja2VuZC5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQkocmV2aXNpb24gMjg3MjMz
KQorKysgU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAg
LTI5MSw2ICsyOTEsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9GbG9hdFJlY3RDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9G
bG9hdFNpemVDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENHLmNwcAor
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50UmVuZGVyZXJDRy5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0lPU3VyZmFjZVBvb2wuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9u
IDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTM0OCw2ICszNDgsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cu
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFJlY3RDRy5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0Zsb2F0U2l6ZUNHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5j
cHAKK3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50UmVuZGVyZXJDRy5jcHAKIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0R0xDRy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBv
b2wuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NzI3OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAor
MjAyMS0xMi0yMCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRk
IHN1cHBvcnQgZm9yIHByZW11bHRpcGxpZWQgYWxwaGEgaW50ZXJwb2xhdGVkIGdyYWRpZW50cyBh
bmQgZGVmYXVsdGVkIG9mZiBvcHRpb24gdG8gdXNlIHRoZW0gZm9yIENTUyBHcmFkaWVudHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDQ5MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICAqIHBhbC9zcGkvY2cv
Q29yZUdyYXBoaWNzU1BJLmg6CisgICAgICAgIEFkZCBmb3J3YXJkcyBmb3IgY3JlYXRpbmcgY29u
aWMgc2hhZGluZ3MgYW5kIGVuYWJsaW5nIHByZW11bHRpcGxpZWQgYWxwaGEgaW50ZXJwb2xhdGlv
biBmb3IgZ3JhZGllbnRzLgorCiAyMDIxLTEyLTIwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNp
ZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBQQUwgc29mdCBsaW5raW5nIGhlYWRlcnMgZm9y
IENvcmVNTCBhbmQgTmF0dXJhbExhbmd1YWdlIGZyYW1ld29ya3MKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCShyZXZpc2lvbiAyODcy
MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaAko
d29ya2luZyBjb3B5KQpAQCAtNDEsOCArNDEsOSBAQAogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9D
R0NvbnRleHREZWxlZ2F0ZVByaXZhdGUuaD4KICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dGb250
Q2FjaGUuaD4KICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dQYXRoUHJpdmF0ZS5oPgotI2luY2x1
ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3NQcml2YXRlLmg+CisjaW5jbHVkZSA8Q29yZUdy
YXBoaWNzL0NHU2hhZGluZ1ByaXZhdGUuaD4KICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dTdHls
ZVByaXZhdGUuaD4KKyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzUHJpdmF0ZS5o
PgogCiAjaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0FjY2Vzc2li
aWxpdHkuaD4KQEAgLTMyMyw2ICszMjQsMTYgQEAgdm9pZCBDR0NvbnRleHRTZXRTdHlsZShDR0Nv
bnRleHRSZWYsIENHU3R5bGVSZWYpOwogdm9pZCBDR0NvbnRleHREcmF3Q29uaWNHcmFkaWVudChD
R0NvbnRleHRSZWYsIENHR3JhZGllbnRSZWYsIENHUG9pbnQgY2VudGVyLCBDR0Zsb2F0IGFuZ2xl
KTsKIHZvaWQgQ0dQYXRoQWRkVW5ldmVuQ29ybmVyc1JvdW5kZWRSZWN0KENHTXV0YWJsZVBhdGhS
ZWYsIGNvbnN0IENHQWZmaW5lVHJhbnNmb3JtICosIENHUmVjdCwgY29uc3QgQ0dTaXplIGNvcm5l
cnNbNF0pOwogYm9vbCBDR0ZvbnRSZW5kZXJpbmdHZXRGb250U21vb3RoaW5nRGlzYWJsZWQodm9p
ZCk7CitDR1NoYWRpbmdSZWYgQ0dTaGFkaW5nQ3JlYXRlQ29uaWMoQ0dDb2xvclNwYWNlUmVmLCBD
R1BvaW50IGNlbnRlciwgQ0dGbG9hdCBhbmdsZSwgQ0dGdW5jdGlvblJlZik7CisKKyNpZiBIQVZF
KENPUkVfR1JBUEhJQ1NfR1JBRElFTlRfQ1JFQVRFX1dJVEhfT1BUSU9OUykKK0NHR3JhZGllbnRS
ZWYgQ0dHcmFkaWVudENyZWF0ZVdpdGhDb2xvckNvbXBvbmVudHNBbmRPcHRpb25zKENHQ29sb3JT
cGFjZVJlZiwgY29uc3QgQ0dGbG9hdCosIGNvbnN0IENHRmxvYXQqLCBzaXplX3QsIENGRGljdGlv
bmFyeVJlZik7CitDR0dyYWRpZW50UmVmIENHR3JhZGllbnRDcmVhdGVXaXRoQ29sb3JzQW5kT3B0
aW9ucyhDR0NvbG9yU3BhY2VSZWYsIENGQXJyYXlSZWYsIGNvbnN0IENHRmxvYXQqLCBDRkRpY3Rp
b25hcnlSZWYpOworI2VuZGlmCisKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfUFJFTVVMVElQTElF
RF9JTlRFUlBPTEFUSU9OX0dSQURJRU5UKQorZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDR0dy
YWRpZW50SW50ZXJwb2xhdGVzUHJlbXVsdGlwbGllZDsKKyNlbmRpZgogCiAjZW5kaWYgLy8gUExB
VEZPUk0oQ09DT0EpCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDA4
MSw2ICs0MDgxLDggQEAKIAkJQkMxMjRGMDAwQzI2NDQ3QTAwOUUyMzQ5IC8qIEpTQmFyUHJvcC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxMjRFRkUw
QzI2NDQ3QTAwOUUyMzQ5IC8qIEpTQmFyUHJvcC5oICovOyB9OwogCQlCQzEyOEE3MzEzN0M4NjdD
MDBDQUM4NDUgLyogUmVuZGVyR3JpZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkMxMjhBNzIxMzdDODY3QzAwQ0FDODQ1IC8qIFJlbmRlckdyaWQuaCAq
LzsgfTsKIAkJQkMxNDAyOEIwRTgzNjgwODAwMzE5NzE3IC8qIFNjcm9sbGJhclRoZW1lQ29tcG9z
aXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE0
MDI4OTBFODM2ODA4MDAzMTk3MTcgLyogU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzE5Q0RGMjI3NkZG
QzZEMDA1M0Y3MzQgLyogR3JhZGllbnRSZW5kZXJlckNHLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE5Q0RGMDI3NkZGQjI2MDA1M0Y3MzQgLyogR3Jh
ZGllbnRSZW5kZXJlckNHLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJQkMxOUNERjQyNzcxMDYzOTAwNTNGNzM0IC8qIEdyYWRpZW50Q29sb3JTdG9w
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE5Q0RG
MzI3NzEwNjM5MDA1M0Y3MzQgLyogR3JhZGllbnRDb2xvclN0b3AuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzFBN0Q5ODE4RkNCNUIwMDA0MjE4
NzkgLyogUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMUE3RDk2MThGQ0I1QjAwMDQyMTg3
OSAvKiBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5oICovOyB9OwogCQlCQzIy
NzI4NzBFODJFNzA3MDBFN0Y5NzUgLyogU3R5bGVSZWZsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzIyNzI4NjBFODJFNzA3MDBFN0Y5NzUg
LyogU3R5bGVSZWZsZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQkMyMjcyQTIwRTgyRTg3QzAwRTdGOTc1IC8qIEN1cnNvckRhdGEuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjI3MkExMEU4
MkU4N0MwMEU3Rjk3NSAvKiBDdXJzb3JEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE1MTEzLDYgKzE1MTE1LDkgQEAKIAkJQkMxMjhCMDAx
MzdDOEQ0NjAwQ0FDODQ1IC8qIFJlbmRlckdyaWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVuZGVyR3JpZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDMTQwMjg4MEU4MzY4MDgwMDMxOTcxNyAvKiBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxiYXJUaGVtZUNv
bXBvc2l0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMTQwMjg5MEU4MzY4
MDgwMDMxOTcxNyAvKiBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlCQzE5Q0RFRjI3NkZGQjI2MDA1M0Y3MzQgLyogR3JhZGllbnRSZW5k
ZXJlckNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYWRpZW50UmVuZGVyZXJDRy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMTlDREYwMjc2RkZCMjYwMDUzRjczNCAvKiBH
cmFkaWVudFJlbmRlcmVyQ0cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhZGllbnRSZW5kZXJlckNHLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMTlDREYzMjc3MTA2MzkwMDUzRjczNCAv
KiBHcmFkaWVudENvbG9yU3RvcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFkaWVudENvbG9yU3RvcC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzFBN0Q5NTE4RkNCNUIwMDA0MjE4Nzkg
LyogUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xk
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzFBN0Q5NjE4RkNCNUIwMDA0
MjE4NzkgLyogUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xk
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyMEZCN0UwQzBFOEU2QzAwRDE0
NDdGIC8qIEpTRGVwcmVjYXRlZENTU09NVmFsdWVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRGVwcmVjYXRlZENTU09NVmFsdWVDdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjg1MzQsNiArMjg1MzksOCBAQAogCQkJCUIy
NzUzNTJDMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RDRy5jcHAgKi8sCiAJCQkJQjI3NTM1
MkQwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZUNHLmNwcCAqLywKIAkJCQlCQzUzQzYwQTBE
QTU2Q0YxMDAyMUVCNUQgLyogR3JhZGllbnRDRy5jcHAgKi8sCisJCQkJQkMxOUNERUYyNzZGRkIy
NjAwNTNGNzM0IC8qIEdyYWRpZW50UmVuZGVyZXJDRy5jcHAgKi8sCisJCQkJQkMxOUNERjAyNzZG
RkIyNjAwNTNGNzM0IC8qIEdyYWRpZW50UmVuZGVyZXJDRy5oICovLAogCQkJCUIyRUQ5NzcwMEIx
RjU1Q0UwMDI1N0QwRiAvKiBHcmFwaGljc0NvbnRleHRDRy5jcHAgKi8sCiAJCQkJOTM0OTA3RTMx
MjVCQkJDODAwN0YyM0EwIC8qIEdyYXBoaWNzQ29udGV4dENHLmggKi8sCiAJCQkJNkUyMUM2QzEx
MTI2MzM5OTAwQTdCRTAyIC8qIEdyYXBoaWNzQ29udGV4dEdMQ0cuY3BwICovLApAQCAtMjg3NDMs
NiArMjg3NTAsNyBAQAogCQkJCTA4NzNCODZBMTM2MDY0RUEwMEE1MjJDMiAvKiBHbHlwaFBhZ2Uu
aCAqLywKIAkJCQlCQzUzQzYwNzBEQTU2QzU3MDAyMUVCNUQgLyogR3JhZGllbnQuY3BwICovLAog
CQkJCUJDNTNDNUY0MERBNTZCOTIwMDIxRUI1RCAvKiBHcmFkaWVudC5oICovLAorCQkJCUJDMTlD
REYzMjc3MTA2MzkwMDUzRjczNCAvKiBHcmFkaWVudENvbG9yU3RvcC5oICovLAogCQkJCTJEMkZD
MDU2MTQ2MENENkYwMDI2MzYzMyAvKiBHcmFkaWVudEltYWdlLmNwcCAqLywKIAkJCQkyRDJGQzA1
NzE0NjBDRDZGMDAyNjM2MzMgLyogR3JhZGllbnRJbWFnZS5oICovLAogCQkJCUIyQTAxNTkyMEFG
NkNENTMwMDZCQ0UwRSAvKiBHcmFwaGljc0NvbnRleHQuY3BwICovLApAQCAtMzMzMDQsNiArMzMz
MTIsNyBAQAogCQkJCTgzNzg4NzgyMjREOEE2MDkwMDBENEE1QiAvKiBBdWRpb0J1ZmZlclNvdXJj
ZU9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDdDMTJCMDI2RjcwMEMxQTM1OSAv
KiBBdWRpb0J1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwN0UxMkIwMjZGNzAwQzFBMzU5
IC8qIEF1ZGlvQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMxOUNERjIyNzZGRkM2RDAw
NTNGNzM0IC8qIEdyYWRpZW50UmVuZGVyZXJDRy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzRUVG
M0EyNTc5OUY4ODAwNjU2M0JCIC8qIEF1ZGlvQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkQzMTYwMDUxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvQ29udGV4dC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTc4NUQ5NjIyNEI3RjczNTAwMTREQjIxIC8qIEF1ZGlvQ29udGV4dExhdGVu
Y3lDYXRlZ29yeS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDg2MCw2ICszNDg2OSw3IEBACiAJCQkJ
QTVCODFDQUQxRkFBNDQ2MjAwMzdEMUU2IC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTk0QzYwM0EyNTNBMjc3MzAwQkRGMDYwIC8qIEluc3BlY3RvckZy
b250ZW5kQVBJRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjM0NEM3MTQxMTI1Qjgy
QzAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlCQzE5Q0RGNDI3NzEwNjM5MDA1M0Y3MzQgLyogR3JhZGllbnRDb2xvclN0b3AuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUYzNDRDNzUzMTEyOTREOUQwMEYyNkVFRSAvKiBJbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTBFNzcwRjEwQzAwQTg4MDBBMDI3
NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTU0ODU4
MDE0RTAyRDUxMDA2QUUwNUEgLyogSW5zcGVjdG9ySGlzdG9yeS5oIGluIEhlYWRlcnMgKi8sCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCShyZXZpc2lvbiAyODcy
MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDExICsyNiwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkNTU0dyYWRpZW50VmFsdWUuaCIKIAotI2luY2x1ZGUgIkFuaW1hdGlvblV0aWxpdGllcy5oIgog
I2luY2x1ZGUgIkNTU0NhbGNWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCi0jaW5jbHVkZSAiQ29sb3JC
bGVuZGluZy5oIgorI2luY2x1ZGUgIkNvbG9ySW50ZXJwb2xhdGlvbi5oIgogI2luY2x1ZGUgIkdy
YWRpZW50SW1hZ2UuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJQ
YWlyLmgiCkBAIC0xMzgsNyArMTM3LDcgQEAgY2xhc3MgTGluZWFyR3JhZGllbnRBZGFwdGVyIHsg
KHB1YmxpYykKICAgICB9CiAgICAgZmxvYXQgbWF4RXh0ZW50KGZsb2F0LCBmbG9hdCkgY29uc3Qg
eyByZXR1cm4gMTsgfQogCi0gICAgdm9pZCBub3JtYWxpemVTdG9wc0FuZEVuZHBvaW50c091dHNp
ZGVSYW5nZShWZWN0b3I8R3JhZGllbnRTdG9wPiYgc3RvcHMpCisgICAgdm9pZCBub3JtYWxpemVT
dG9wc0FuZEVuZHBvaW50c091dHNpZGVSYW5nZShWZWN0b3I8R3JhZGllbnRTdG9wPiYgc3RvcHMs
IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCkKICAgICB7CiAgICAgICAgIGZsb2F0IGZpcnN0T2Zm
c2V0ID0gKnN0b3BzLmZpcnN0KCkub2Zmc2V0OwogICAgICAgICBmbG9hdCBsYXN0T2Zmc2V0ID0g
KnN0b3BzLmxhc3QoKS5vZmZzZXQ7CkBAIC0xODEsNyArMTgwLDcgQEAgY2xhc3MgUmFkaWFsR3Jh
ZGllbnRBZGFwdGVyIHsgKHB1YmxpYykKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogCi0gICAg
dm9pZCBub3JtYWxpemVTdG9wc0FuZEVuZHBvaW50c091dHNpZGVSYW5nZShWZWN0b3I8R3JhZGll
bnRTdG9wPiYgc3RvcHMpCisgICAgdm9pZCBub3JtYWxpemVTdG9wc0FuZEVuZHBvaW50c091dHNp
ZGVSYW5nZShWZWN0b3I8R3JhZGllbnRTdG9wPiYgc3RvcHMsIENvbG9ySW50ZXJwb2xhdGlvbk1l
dGhvZCBjb2xvckludGVycG9sYXRpb25NZXRob2QpCiAgICAgewogICAgICAgICBhdXRvIG51bVN0
b3BzID0gc3RvcHMuc2l6ZSgpOwogCkBAIC0yMDUsOCArMjA0LDcgQEAgY2xhc3MgUmFkaWFsR3Jh
ZGllbnRBZGFwdGVyIHsgKHB1YmxpYykKICAgICAgICAgICAgICAgICBmbG9hdCBuZXh0T2Zmc2V0
ID0gKnN0b3BzW2ZpcnN0WmVyb09yR3JlYXRlckluZGV4XS5vZmZzZXQ7CiAKICAgICAgICAgICAg
ICAgICBmbG9hdCBpbnRlclN0b3BQcm9wb3J0aW9uID0gLXByZXZPZmZzZXQgLyAobmV4dE9mZnNl
dCAtIHByZXZPZmZzZXQpOwotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiB3aGVuIHdlIGludGVy
cG9sYXRlIGdyYWRpZW50cyB1c2luZyBwcmVtdWx0aXBsaWVkIGNvbG9ycywgdGhpcyBzaG91bGQg
ZG8gcHJlbXVsdGlwbGljYXRpb24uCi0gICAgICAgICAgICAgICAgQ29sb3IgYmxlbmRlZENvbG9y
ID0gYmxlbmQoc3RvcHNbZmlyc3RaZXJvT3JHcmVhdGVySW5kZXggLSAxXS5jb2xvciwgc3RvcHNb
Zmlyc3RaZXJvT3JHcmVhdGVySW5kZXhdLmNvbG9yLCB7IGludGVyU3RvcFByb3BvcnRpb24gfSk7
CisgICAgICAgICAgICAgICAgYXV0byBibGVuZGVkQ29sb3IgPSBpbnRlcnBvbGF0ZUNvbG9ycyhj
b2xvckludGVycG9sYXRpb25NZXRob2QsIHN0b3BzW2ZpcnN0WmVyb09yR3JlYXRlckluZGV4IC0g
MV0uY29sb3IsIDEuMGYgLSBpbnRlclN0b3BQcm9wb3J0aW9uLCBzdG9wc1tmaXJzdFplcm9Pckdy
ZWF0ZXJJbmRleF0uY29sb3IsIGludGVyU3RvcFByb3BvcnRpb24pOwogCiAgICAgICAgICAgICAg
ICAgLy8gQ2xhbXAgdGhlIHBvc2l0aW9ucyB0byAwIGFuZCBzZXQgdGhlIGNvbG9yLgogICAgICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlyc3RaZXJvT3JHcmVhdGVySW5kZXg7
ICsraSkgewpAQCAtMjM2LDcgKzIzNCw3IEBAIGNsYXNzIENvbmljR3JhZGllbnRBZGFwdGVyIHsg
KHB1YmxpYykKICAgICBmbG9hdCBncmFkaWVudExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIDE7IH0K
ICAgICBmbG9hdCBtYXhFeHRlbnQoZmxvYXQsIGZsb2F0KSBjb25zdCB7IHJldHVybiAxOyB9CiAK
LSAgICB2b2lkIG5vcm1hbGl6ZVN0b3BzQW5kRW5kcG9pbnRzT3V0c2lkZVJhbmdlKFZlY3RvcjxH
cmFkaWVudFN0b3A+JiBzdG9wcykKKyAgICB2b2lkIG5vcm1hbGl6ZVN0b3BzQW5kRW5kcG9pbnRz
T3V0c2lkZVJhbmdlKFZlY3RvcjxHcmFkaWVudFN0b3A+JiBzdG9wcywgQ29sb3JJbnRlcnBvbGF0
aW9uTWV0aG9kIGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCkKICAgICB7CiAgICAgICAgIHNpemVf
dCBudW1TdG9wcyA9IHN0b3BzLnNpemUoKTsKICAgICAgICAgc2l6ZV90IGxhc3RTdG9wSW5kZXgg
PSBudW1TdG9wcyAtIDE7CkBAIC0yNTYsOCArMjU0LDcgQEAgY2xhc3MgQ29uaWNHcmFkaWVudEFk
YXB0ZXIgeyAocHVibGljKQogICAgICAgICAgICAgICAgIGZsb2F0IG5leHRPZmZzZXQgPSAqc3Rv
cHNbaW5kZXhdLm9mZnNldDsKIAogICAgICAgICAgICAgICAgIGZsb2F0IGludGVyU3RvcFByb3Bv
cnRpb24gPSAtcHJldmlvdXNPZmZzZXQgLyAobmV4dE9mZnNldCAtIHByZXZpb3VzT2Zmc2V0KTsK
LSAgICAgICAgICAgICAgICAvLyBGSVhNRTogd2hlbiB3ZSBpbnRlcnBvbGF0ZSBncmFkaWVudHMg
dXNpbmcgcHJlbXVsdGlwbGllZCBjb2xvcnMsIHRoaXMgc2hvdWxkIGRvIHByZW11bHRpcGxpY2F0
aW9uLgotICAgICAgICAgICAgICAgIENvbG9yIGJsZW5kZWRDb2xvciA9IGJsZW5kKHN0b3BzW2lu
ZGV4IC0gMV0uY29sb3IsIHN0b3BzW2luZGV4XS5jb2xvciwgeyBpbnRlclN0b3BQcm9wb3J0aW9u
IH0pOworICAgICAgICAgICAgICAgIGF1dG8gYmxlbmRlZENvbG9yID0gaW50ZXJwb2xhdGVDb2xv
cnMoY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBzdG9wc1tpbmRleCAtIDFdLmNvbG9yLCAxLjBm
IC0gaW50ZXJTdG9wUHJvcG9ydGlvbiwgc3RvcHNbaW5kZXhdLmNvbG9yLCBpbnRlclN0b3BQcm9w
b3J0aW9uKTsKIAogICAgICAgICAgICAgICAgIC8vIENsYW1wIHRoZSBwb3NpdGlvbnMgdG8gMCBh
bmQgc2V0IHRoZSBjb2xvci4KICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGluZGV4OyArK2kpIHsKQEAgLTI4Niw4ICsyODMsNyBAQCBjbGFzcyBDb25pY0dyYWRpZW50QWRh
cHRlciB7IChwdWJsaWMpCiAgICAgICAgICAgICAgICAgZmxvYXQgbmV4dE9mZnNldCA9ICpzdG9w
c1tpbmRleCArIDFdLm9mZnNldDsKIAogICAgICAgICAgICAgICAgIGZsb2F0IGludGVyU3RvcFBy
b3BvcnRpb24gPSAoMSAtIHByZXZpb3VzT2Zmc2V0KSAvIChuZXh0T2Zmc2V0IC0gcHJldmlvdXNP
ZmZzZXQpOwotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiB3aGVuIHdlIGludGVycG9sYXRlIGdy
YWRpZW50cyB1c2luZyBwcmVtdWx0aXBsaWVkIGNvbG9ycywgdGhpcyBzaG91bGQgZG8gcHJlbXVs
dGlwbGljYXRpb24uCi0gICAgICAgICAgICAgICAgQ29sb3IgYmxlbmRlZENvbG9yID0gYmxlbmQo
c3RvcHNbaW5kZXhdLmNvbG9yLCBzdG9wc1tpbmRleCArIDFdLmNvbG9yLCB7IGludGVyU3RvcFBy
b3BvcnRpb24gfSk7CisgICAgICAgICAgICAgICAgYXV0byBibGVuZGVkQ29sb3IgPSBpbnRlcnBv
bGF0ZUNvbG9ycyhjb2xvckludGVycG9sYXRpb25NZXRob2QsIHN0b3BzW2luZGV4XS5jb2xvciwg
MS4wZiAtIGludGVyU3RvcFByb3BvcnRpb24sIHN0b3BzW2luZGV4ICsgMV0uY29sb3IsIGludGVy
U3RvcFByb3BvcnRpb24pOwogCiAgICAgICAgICAgICAgICAgLy8gQ2xhbXAgdGhlIHBvc2l0aW9u
cyB0byAxIGFuZCBzZXQgdGhlIGNvbG9yLgogICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSBpbmRleCArIDE7IGkgPCBudW1TdG9wczsgKytpKSB7CkBAIC00ODUsOCArNDgxLDcgQEAgR3Jh
ZGllbnQ6OkNvbG9yU3RvcFZlY3RvciBDU1NHcmFkaWVudFZhbHVlOjpjb21wdXRlU3RvCiAgICAg
ICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgOTsgKyt5KSB7CiAgICAgICAgICAgICBmbG9hdCBy
ZWxhdGl2ZU9mZnNldCA9ICgqbmV3U3RvcHNbeV0ub2Zmc2V0IC0gb2Zmc2V0MSkgLyAob2Zmc2V0
MiAtIG9mZnNldDEpOwogICAgICAgICAgICAgZmxvYXQgbXVsdGlwbGllciA9IHN0ZDo6cG93KHJl
bGF0aXZlT2Zmc2V0LCBzdGQ6OmxvZyguNWYpIC8gc3RkOjpsb2cobWlkcG9pbnQpKTsKLSAgICAg
ICAgICAgIC8vIEZJWE1FOiBXaHkgbm90IHByZW11bHRpcGx5IGhlcmU/Ci0gICAgICAgICAgICBu
ZXdTdG9wc1t5XS5jb2xvciA9IGJsZW5kV2l0aG91dFByZW11bHRpcGx5KGNvbG9yMSwgY29sb3Iy
LCB7IG11bHRpcGxpZXIgfSk7CisgICAgICAgICAgICBuZXdTdG9wc1t5XS5jb2xvciA9IGludGVy
cG9sYXRlQ29sb3JzKG1fY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb2xvcjEsIDEuMGYgLSBt
dWx0aXBsaWVyLCBjb2xvcjIsIG11bHRpcGxpZXIpOwogICAgICAgICB9CiAKICAgICAgICAgc3Rv
cHMucmVtb3ZlKHgpOwpAQCAtNTU3LDcgKzU1Miw3IEBAIEdyYWRpZW50OjpDb2xvclN0b3BWZWN0
b3IgQ1NTR3JhZGllbnRWYWx1ZTo6Y29tcHV0ZVN0bwogCiAgICAgLy8gSWYgdGhlIGdyYWRpZW50
IGdvZXMgb3V0c2lkZSB0aGUgMC0xIHJhbmdlLCBub3JtYWxpemUgaXQgYnkgbW92aW5nIHRoZSBl
bmRwb2ludHMsIGFuZCBhZGp1c3RpbmcgdGhlIHN0b3BzLgogICAgIGlmIChzdG9wcy5zaXplKCkg
PiAxICYmICgqc3RvcHMuZmlyc3QoKS5vZmZzZXQgPCAwIHx8ICpzdG9wcy5sYXN0KCkub2Zmc2V0
ID4gMSkpCi0gICAgICAgIGdyYWRpZW50QWRhcHRlci5ub3JtYWxpemVTdG9wc0FuZEVuZHBvaW50
c091dHNpZGVSYW5nZShzdG9wcyk7CisgICAgICAgIGdyYWRpZW50QWRhcHRlci5ub3JtYWxpemVT
dG9wc0FuZEVuZHBvaW50c091dHNpZGVSYW5nZShzdG9wcywgbV9jb2xvckludGVycG9sYXRpb25N
ZXRob2QpOwogICAgIAogICAgIEdyYWRpZW50OjpDb2xvclN0b3BWZWN0b3IgcmVzdWx0OwogICAg
IHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHN0b3BzLnNpemUoKSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5jcHAJKHJldmlzaW9u
IDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiwxMCArMTA2LDExIEBAIENTU1BhcnNlckNvbnRleHQ6
OkNTU1BhcnNlckNvbnRleHQoY29uc3QgRG9jdW1lbnQmIGRvYwogICAgICwgaGFzUHNldWRvQ2xh
c3NFbmFibGVkIHsgZG9jdW1lbnQuc2V0dGluZ3MoKS5oYXNQc2V1ZG9DbGFzc0VuYWJsZWQoKSB9
CiAgICAgLCBjYXNjYWRlTGF5ZXJzRW5hYmxlZCB7IGRvY3VtZW50LnNldHRpbmdzKCkuY3NzQ2Fz
Y2FkZUxheWVyc0VuYWJsZWQoKSB9CiAgICAgLCBjb250YWluZXJRdWVyaWVzRW5hYmxlZCB7IGRv
Y3VtZW50LnNldHRpbmdzKCkuY3NzQ29udGFpbmVyUXVlcmllc0VuYWJsZWQoKSB9CisgICAgLCBv
dmVyZmxvd0NsaXBFbmFibGVkIHsgZG9jdW1lbnQuc2V0dGluZ3MoKS5vdmVyZmxvd0NsaXBFbmFi
bGVkKCkgfQorICAgICwgZ3JhZGllbnRQcmVtdWx0aXBsaWVkQWxwaGFJbnRlcnBvbGF0aW9uRW5h
YmxlZCB7IGRvY3VtZW50LnNldHRpbmdzKCkuY3NzR3JhZGllbnRQcmVtdWx0aXBsaWVkQWxwaGFJ
bnRlcnBvbGF0aW9uRW5hYmxlZCgpIH0KICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQog
ICAgICwgYXR0YWNobWVudEVuYWJsZWQgeyBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLmF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCgpIH0KICNlbmRpZgotICAgICwgb3Zl
cmZsb3dDbGlwRW5hYmxlZCB7IGRvY3VtZW50LnNldHRpbmdzKCkub3ZlcmZsb3dDbGlwRW5hYmxl
ZCgpIH0KIHsKIH0KIApAQCAtMTUzLDEwICsxNTQsMTEgQEAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IENTU1BhcnNlckNvbnRleHQmIGEsIGNvbnN0IENTU1BhCiAgICAgICAgICYmIGEuaGFzUHNldWRv
Q2xhc3NFbmFibGVkID09IGIuaGFzUHNldWRvQ2xhc3NFbmFibGVkCiAgICAgICAgICYmIGEuY2Fz
Y2FkZUxheWVyc0VuYWJsZWQgPT0gYi5jYXNjYWRlTGF5ZXJzRW5hYmxlZAogICAgICAgICAmJiBh
LmNvbnRhaW5lclF1ZXJpZXNFbmFibGVkID09IGIuY29udGFpbmVyUXVlcmllc0VuYWJsZWQKKyAg
ICAgICAgJiYgYS5vdmVyZmxvd0NsaXBFbmFibGVkID09IGIub3ZlcmZsb3dDbGlwRW5hYmxlZAor
ICAgICAgICAmJiBhLmdyYWRpZW50UHJlbXVsdGlwbGllZEFscGhhSW50ZXJwb2xhdGlvbkVuYWJs
ZWQgPT0gYi5ncmFkaWVudFByZW11bHRpcGxpZWRBbHBoYUludGVycG9sYXRpb25FbmFibGVkCiAj
aWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICAgICAgJiYgYS5hdHRhY2htZW50RW5h
YmxlZCA9PSBiLmF0dGFjaG1lbnRFbmFibGVkCiAjZW5kaWYKLSAgICAgICAgJiYgYS5vdmVyZmxv
d0NsaXBFbmFibGVkID09IGIub3ZlcmZsb3dDbGlwRW5hYmxlZAogICAgIDsKIH0KIApAQCAtMTkz
LDEyICsxOTUsMTMgQEAgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIGNvbnN0IENTU1BhcnNlckNv
bnRleHQmIGNvbnRlCiAgICAgICAgIHwgY29udGV4dC5oYXNQc2V1ZG9DbGFzc0VuYWJsZWQgICAg
ICAgICAgICAgICAgICAgICA8PCAyMgogICAgICAgICB8IGNvbnRleHQuY2FzY2FkZUxheWVyc0Vu
YWJsZWQgICAgICAgICAgICAgICAgICAgICAgPDwgMjMKICAgICAgICAgfCBjb250ZXh0LmNvbnRh
aW5lclF1ZXJpZXNFbmFibGVkICAgICAgICAgICAgICAgICAgIDw8IDI0CisgICAgICAgIHwgY29u
dGV4dC5vdmVyZmxvd0NsaXBFbmFibGVkICAgICAgICAgICAgICAgICAgICAgICA8PCAyNQorICAg
ICAgICB8IGNvbnRleHQuZ3JhZGllbnRQcmVtdWx0aXBsaWVkQWxwaGFJbnRlcnBvbGF0aW9uRW5h
YmxlZCA8PCAyNgogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgICAgIHwgY29u
dGV4dC5hdHRhY2htZW50RW5hYmxlZCAgICAgICAgICAgICAgICAgICAgICAgICA8PCAyNQorICAg
ICAgICB8IGNvbnRleHQuYXR0YWNobWVudEVuYWJsZWQgICAgICAgICAgICAgICAgICAgICAgICAg
PDwgMjcKICNlbmRpZgotICAgICAgICB8IGNvbnRleHQub3ZlcmZsb3dDbGlwRW5hYmxlZCAgICAg
ICAgICAgICAgICAgICAgICAgPDwgMjYKLSAgICAgICAgfCBjb250ZXh0LmFjY2VudENvbG9yRW5h
YmxlZCAgICAgICAgICAgICAgICAgICAgICAgIDw8IDI3Ci0gICAgICAgIHwgY29udGV4dC5tb2Rl
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAyODsgLy8gVGhpcyBpcyBt
dWx0aXBsZSBiaXRzLCBzbyBrZWVwIGl0IGxhc3QuCisgICAgICAgIHwgY29udGV4dC5hY2NlbnRD
b2xvckVuYWJsZWQgICAgICAgICAgICAgICAgICAgICAgICA8PCAyOAorICAgICAgICB8IGNvbnRl
eHQubW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgMjk7IC8vIFRo
aXMgaXMgbXVsdGlwbGUgYml0cywgc28ga2VlcCBpdCBsYXN0LgogICAgIGFkZChoYXNoZXIsIGNv
bnRleHQuYmFzZVVSTCwgY29udGV4dC5jaGFyc2V0LCBiaXRzKTsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmgJKHJldmlzaW9uIDI4NzIz
MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NSwxMyArODUsMTMgQEAgc3RydWN0IENTU1BhcnNlckNvbnRleHQgewog
ICAgIGJvb2wgaGFzUHNldWRvQ2xhc3NFbmFibGVkIHsgZmFsc2UgfTsKICAgICBib29sIGNhc2Nh
ZGVMYXllcnNFbmFibGVkIHsgZmFsc2UgfTsKICAgICBib29sIGNvbnRhaW5lclF1ZXJpZXNFbmFi
bGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG92ZXJmbG93Q2xpcEVuYWJsZWQgeyBmYWxzZSB9Owor
ICAgIGJvb2wgZ3JhZGllbnRQcmVtdWx0aXBsaWVkQWxwaGFJbnRlcnBvbGF0aW9uRW5hYmxlZCB7
IGZhbHNlIH07CiAKICAgICAvLyBSdW50aW1lRW5hYmxlZEZlYXR1cmVzLgogI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgYm9vbCBhdHRhY2htZW50RW5hYmxlZCB7IGZhbHNlIH07
CiAjZW5kaWYKLQotICAgIGJvb2wgb3ZlcmZsb3dDbGlwRW5hYmxlZCB7IGZhbHNlIH07CiAKICAg
ICBDU1NQYXJzZXJDb250ZXh0KENTU1BhcnNlck1vZGUsIGNvbnN0IFVSTCYgYmFzZVVSTCA9IFVS
TCgpKTsKICAgICBXRUJDT1JFX0VYUE9SVCBDU1NQYXJzZXJDb250ZXh0KGNvbnN0IERvY3VtZW50
JiwgY29uc3QgVVJMJiBiYXNlVVJMID0gVVJMKCksIGNvbnN0IFN0cmluZyYgY2hhcnNldCA9IGVt
cHR5U3RyaW5nKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAkocmV2aXNpb24gMjg3MjMzKQorKysgU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNDM5LDI0ICsyNDM5LDYgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29s
b3JNaXhQZXJjZW50YWdlcz4gbm9ybWFsaXplZE1pCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
Ly8gQWZ0ZXIgaW50ZXJwb2xhdGlvbiwgaWYgdGhlIGNvbG9yIGlzIGluIHRoZSBIV0Igb3IgSFNM
IGNvbG9yIHNwYWNlLCBpdCBuZWVkcyB0byBiZSBjYW5vbmljYWxpemVkIGJhY2sgdG8gc1JHQiBh
cwotLy8gaXMgZG9uZSBhdCBwYXJzZSB0aW1lLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5
cGU+IENvbG9yIG1ha2VDYW5vbmljYWxDb2xvcihDb2xvclR5cGUgY29sb3IpCi17Ci0gICAgcmV0
dXJuIGNvbG9yOwotfQotCi10ZW1wbGF0ZTw+IENvbG9yIG1ha2VDYW5vbmljYWxDb2xvcjxIV0JB
PGZsb2F0Pj4oSFdCQTxmbG9hdD4gY29sb3IpCi17Ci0gICAgcmV0dXJuIGNvbnZlcnRDb2xvcjxT
UkdCQTx1aW50OF90Pj4oY29sb3IpOwotfQotCi10ZW1wbGF0ZTw+IENvbG9yIG1ha2VDYW5vbmlj
YWxDb2xvcjxIU0xBPGZsb2F0Pj4oSFNMQTxmbG9hdD4gY29sb3IpCi17Ci0gICAgcmV0dXJuIGNv
bnZlcnRDb2xvcjxTUkdCQTx1aW50OF90Pj4oY29sb3IpOwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBJbnRlcnBvbGF0aW9uTWV0aG9kPiBzdGF0aWMgQ29sb3IgbWl4Q29sb3JDb21wb25lbnRzVXNp
bmdDb2xvckludGVycG9sYXRpb25NZXRob2QoSW50ZXJwb2xhdGlvbk1ldGhvZCBpbnRlcnBvbGF0
aW9uTWV0aG9kLCBDb2xvck1peFBlcmNlbnRhZ2VzIG1peFBlcmNlbnRhZ2VzLCBjb25zdCBDb2xv
ciYgY29sb3IxLCBjb25zdCBDb2xvciYgY29sb3IyKQogewogICAgIHVzaW5nIENvbG9yVHlwZSA9
IHR5cGVuYW1lIEludGVycG9sYXRpb25NZXRob2Q6OkNvbG9yVHlwZTsKQEAgLTI5NDYsMTUgKzI5
MjgsMjAgQEAgc3RhdGljIGJvb2wgY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudENvbG9yU3RvcChD
U1NQYXJzCiAgICAgcmV0dXJuIHN0b3AuY29sb3IgJiYgYXJncy5hdEVuZCgpOwogfQogCitzdGF0
aWMgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBncmFkaWVudEFscGhhUHJlbXVsdGlwbGljYXRpb24o
Y29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICByZXR1cm4gY29udGV4dC5n
cmFkaWVudFByZW11bHRpcGxpZWRBbHBoYUludGVycG9sYXRpb25FbmFibGVkID8gQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCA6IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVu
cHJlbXVsdGlwbGllZDsKK30KKwogc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZURlcHJl
Y2F0ZWRHcmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBjb25zdCBDU1NQYXJzZXJD
b250ZXh0JiBjb250ZXh0KQogewogICAgIFJlZlB0cjxDU1NHcmFkaWVudFZhbHVlPiByZXN1bHQ7
CiAgICAgQ1NTVmFsdWVJRCBpZCA9IGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5p
ZCgpOwogICAgIGJvb2wgaXNEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQgPSAoaWQgPT0gQ1NTVmFs
dWVSYWRpYWwpOwogICAgIGlmIChpc0RlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudCkKLSAgICAgICAg
cmVzdWx0ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKE5vblJlcGVhdGluZywgQ1NT
RGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50LCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JH
QiB7IH0sIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKKyAgICAg
ICAgcmVzdWx0ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKE5vblJlcGVhdGluZywg
Q1NTRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50LCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6
U1JHQiB7IH0sIGdyYWRpZW50QWxwaGFQcmVtdWx0aXBsaWNhdGlvbihjb250ZXh0KSB9KTsKICAg
ICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZUxpbmVhcikKLSAgICAgICAgcmVzdWx0ID0gQ1NTTGlu
ZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKE5vblJlcGVhdGluZywgQ1NTRGVwcmVjYXRlZExpbmVh
ckdyYWRpZW50LCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhhUHJl
bXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKKyAgICAgICAgcmVzdWx0ID0gQ1NT
TGluZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKE5vblJlcGVhdGluZywgQ1NTRGVwcmVjYXRlZExp
bmVhckdyYWRpZW50LCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIGdyYWRp
ZW50QWxwaGFQcmVtdWx0aXBsaWNhdGlvbihjb250ZXh0KSB9KTsKICAgICBpZiAoIXJlc3VsdCB8
fCAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKQEAgLTMwNTQsNyArMzA0MSw3IEBAIHN0YXRpYyBib29sIGNvbnN1bWVHcmFk
aWVudENvbG9yU3RvcHMoQ1NTUGFyc2VyVG9rZW5SYQogCiBzdGF0aWMgUmVmUHRyPENTU1ZhbHVl
PiBjb25zdW1lRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFy
Z3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIENTU0dyYWRpZW50UmVwZWF0IHJl
cGVhdGluZykKIHsKLSAgICBhdXRvIHJlc3VsdCA9IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNy
ZWF0ZShyZXBlYXRpbmcsIENTU1ByZWZpeGVkUmFkaWFsR3JhZGllbnQsIHsgQ29sb3JJbnRlcnBv
bGF0aW9uTWV0aG9kOjpTUkdCIHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0
aXBsaWVkIH0pOworICAgIGF1dG8gcmVzdWx0ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3Jl
YXRlKHJlcGVhdGluZywgQ1NTUHJlZml4ZWRSYWRpYWxHcmFkaWVudCwgeyBDb2xvckludGVycG9s
YXRpb25NZXRob2Q6OlNSR0IgeyB9LCBncmFkaWVudEFscGhhUHJlbXVsdGlwbGljYXRpb24oY29u
dGV4dCkgfSk7CiAKICAgICBhdXRvIGNlbnRlckNvb3JkaW5hdGUgPSBjb25zdW1lT25lT3JUd29W
YWx1ZWRQb3NpdGlvbkNvb3JkaW5hdGVzKGFyZ3MsIGNvbnRleHQubW9kZSwgVW5pdGxlc3NRdWly
azo6Rm9yYmlkKTsKICAgICBpZiAoY2VudGVyQ29vcmRpbmF0ZSAmJiAhY29uc3VtZUNvbW1hSW5j
bHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKQEAgLTMwOTgsNyArMzA4NSw3IEBAIHN0YXRpYyBSZWZQ
dHI8Q1NTVmFsdWU+IGNvbnN1bWVEZXByZWNhdGVkUmFkaWFsR3JhZGllbgogCiBzdGF0aWMgUmVm
UHRyPENTU1ZhbHVlPiBjb25zdW1lUmFkaWFsR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
YXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgQ1NTR3JhZGllbnRSZXBlYXQg
cmVwZWF0aW5nKQogewotICAgIFJlZlB0cjxDU1NSYWRpYWxHcmFkaWVudFZhbHVlPiByZXN1bHQg
PSBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGUocmVwZWF0aW5nLCBDU1NSYWRpYWxHcmFk
aWVudCwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRp
cGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CisgICAgUmVmUHRyPENTU1JhZGlhbEdyYWRp
ZW50VmFsdWU+IHJlc3VsdCA9IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZShyZXBlYXRp
bmcsIENTU1JhZGlhbEdyYWRpZW50LCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7
IH0sIGdyYWRpZW50QWxwaGFQcmVtdWx0aXBsaWNhdGlvbihjb250ZXh0KSB9KTsKIAogICAgIFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc2hhcGU7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBzaXplS2V5d29yZDsKQEAgLTMxODYsNyArMzE3Myw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NT
VmFsdWU+IGNvbnN1bWVSYWRpYWxHcmFkaWVudChDU1NQYXJzZQogCiBzdGF0aWMgUmVmUHRyPENT
U1ZhbHVlPiBjb25zdW1lTGluZWFyR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywg
Y29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0
aW5nLCBDU1NHcmFkaWVudFR5cGUgZ3JhZGllbnRUeXBlKQogewotICAgIFJlZlB0cjxDU1NMaW5l
YXJHcmFkaWVudFZhbHVlPiByZXN1bHQgPSBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjcmVhdGUo
cmVwZWF0aW5nLCBncmFkaWVudFR5cGUsIHsgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdC
IHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkIH0pOworICAgIFJl
ZlB0cjxDU1NMaW5lYXJHcmFkaWVudFZhbHVlPiByZXN1bHQgPSBDU1NMaW5lYXJHcmFkaWVudFZh
bHVlOjpjcmVhdGUocmVwZWF0aW5nLCBncmFkaWVudFR5cGUsIHsgQ29sb3JJbnRlcnBvbGF0aW9u
TWV0aG9kOjpTUkdCIHsgfSwgZ3JhZGllbnRBbHBoYVByZW11bHRpcGxpY2F0aW9uKGNvbnRleHQp
IH0pOwogCiAgICAgYm9vbCBleHBlY3RDb21tYSA9IHRydWU7CiAgICAgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBhbmdsZSA9IGNvbnN1bWVBbmdsZShhcmdzLCBjb250ZXh0Lm1vZGUsIFVuaXRs
ZXNzUXVpcms6OkZvcmJpZCwgVW5pdGxlc3NaZXJvUXVpcms6OkFsbG93KTsKQEAgLTMyMjAsNyAr
MzIwNyw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVMaW5lYXJHcmFkaWVudChD
U1NQYXJzZQogc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUNvbmljR3JhZGllbnQoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwg
Q1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0aW5nKQogewogI2lmIEVOQUJMRShDU1NfQ09OSUNfR1JB
RElFTlRTKQotICAgIFJlZlB0cjxDU1NDb25pY0dyYWRpZW50VmFsdWU+IHJlc3VsdCA9IENTU0Nv
bmljR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGluZywgeyBDb2xvckludGVycG9sYXRpb25N
ZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQg
fSk7CisgICAgUmVmUHRyPENTU0NvbmljR3JhZGllbnRWYWx1ZT4gcmVzdWx0ID0gQ1NTQ29uaWNH
cmFkaWVudFZhbHVlOjpjcmVhdGUocmVwZWF0aW5nLCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhv
ZDo6U1JHQiB7IH0sIGdyYWRpZW50QWxwaGFQcmVtdWx0aXBsaWNhdGlvbihjb250ZXh0KSB9KTsK
IAogICAgIGJvb2wgZXhwZWN0Q29tbWEgPSBmYWxzZTsKICAgICBpZiAoYXJncy5wZWVrKCkudHlw
ZSgpID09IElkZW50VG9rZW4pIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yQ29tcG9uZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yQ29tcG9uZW50cy5oCShyZXZpc2lvbiAyODcyMzMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbXBvbmVudHMuaAkod29ya2luZyBj
b3B5KQpAQCAtNjgsNiArNjgsOCBAQCBzdHJ1Y3QgQ29sb3JDb21wb25lbnRzIHsKICAgICB0ZW1w
bGF0ZTxzaXplX3QgU3RhcnQsIHNpemVfdCBFbmQ+CiAgICAgY29uc3RleHByIENvbG9yQ29tcG9u
ZW50czxULCBFbmQgLSBTdGFydD4gc3Vic2V0KCkgY29uc3Q7CiAKKyAgICBjb25zdGV4cHIgc2l6
ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBTaXplOyB9CisKICAgICBzdGQ6OmFycmF5PFQsIE4+
IGNvbXBvbmVudHM7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvckludGVycG9sYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvckludGVycG9sYXRpb24uaAkocmV2aXNpb24gMjg3MjMzKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JJbnRlcnBvbGF0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIgorI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAi
Q29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLmgiCiAjaW5jbHVkZSAiQ29sb3JOb3JtYWxpemF0aW9u
LmgiCiAjaW5jbHVkZSAiQ29sb3JUeXBlcy5oIgpAQCAtMzYsMTQgKzM3LDE0IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gZml4dXBIdWVDb21wb25lbnRz
UHJpb3JUb0ludGVycG9sYXRpb24oSHVlSW50ZXJwb2xhdGlvbk1ldGhvZCwgZmxvYXQsIGZsb2F0
KTsKIAotdGVtcGxhdGU8c2l6ZV90IEksIEFscGhhUHJlbXVsdGlwbGljYXRpb24gYWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiwgdHlwZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhvZD4KLXN0ZDo6cGFpcjxm
bG9hdCwgZmxvYXQ+IHByZUludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uRm9yQ29tcG9uZW50KElu
dGVycG9sYXRpb25NZXRob2QgaW50ZXJwb2xhdGlvbk1ldGhvZCwgQ29sb3JDb21wb25lbnRzPGZs
b2F0LCA0PiBjb2xvckNvbXBvbmVudHMxLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbG9y
Q29tcG9uZW50czIpCit0ZW1wbGF0ZTxzaXplX3QgSSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBh
bHBoYVByZW11bHRpcGxpY2F0aW9uLCB0eXBlbmFtZSBJbnRlcnBvbGF0aW9uTWV0aG9kQ29sb3JT
cGFjZT4KK3N0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IHByZUludGVycG9sYXRpb25Ob3JtYWxpemF0
aW9uRm9yQ29tcG9uZW50KEludGVycG9sYXRpb25NZXRob2RDb2xvclNwYWNlIGludGVycG9sYXRp
b25NZXRob2RDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbG9yQ29tcG9u
ZW50czEsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gY29sb3JDb21wb25lbnRzMikKIHsKLSAg
ICB1c2luZyBDb2xvclR5cGUgPSB0eXBlbmFtZSBJbnRlcnBvbGF0aW9uTWV0aG9kOjpDb2xvclR5
cGU7CisgICAgdXNpbmcgQ29sb3JUeXBlID0gdHlwZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhvZENv
bG9yU3BhY2U6OkNvbG9yVHlwZTsKICAgICBjb25zdGV4cHIgYXV0byBjb21wb25lbnRJbmZvID0g
Q29sb3JUeXBlOjpNb2RlbDo6Y29tcG9uZW50SW5mbzsKIAogICAgIGlmIGNvbnN0ZXhwciAoY29t
cG9uZW50SW5mb1tJXS50eXBlID09IENvbG9yQ29tcG9uZW50VHlwZTo6QW5nbGUpCi0gICAgICAg
IHJldHVybiBmaXh1cEh1ZUNvbXBvbmVudHNQcmlvclRvSW50ZXJwb2xhdGlvbihpbnRlcnBvbGF0
aW9uTWV0aG9kLmh1ZUludGVycG9sYXRpb25NZXRob2QsIGNvbG9yQ29tcG9uZW50czFbSV0sIGNv
bG9yQ29tcG9uZW50czJbSV0pOworICAgICAgICByZXR1cm4gZml4dXBIdWVDb21wb25lbnRzUHJp
b3JUb0ludGVycG9sYXRpb24oaW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2UuaHVlSW50ZXJw
b2xhdGlvbk1ldGhvZCwgY29sb3JDb21wb25lbnRzMVtJXSwgY29sb3JDb21wb25lbnRzMltJXSk7
CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoYWxwaGFQcmVtdWx0aXBsaWNhdGlv
biA9PSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkKQogICAgICAgICAgICAg
cmV0dXJuIHsgY29sb3JDb21wb25lbnRzMVtJXSAqIGNvbG9yQ29tcG9uZW50czFbM10sIGNvbG9y
Q29tcG9uZW50czJbSV0gKiBjb2xvckNvbXBvbmVudHMyWzNdIH07CkBAIC01MiwxMiArNTMsMTIg
QEAgc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gcHJlSW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb25G
CiAgICAgfQogfQogCi10ZW1wbGF0ZTxBbHBoYVByZW11bHRpcGxpY2F0aW9uIGFscGhhUHJlbXVs
dGlwbGljYXRpb24sIHR5cGVuYW1lIEludGVycG9sYXRpb25NZXRob2Q+Ci1zdGQ6OnBhaXI8Q29s
b3JDb21wb25lbnRzPGZsb2F0LCA0PiwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0Pj4gcHJlSW50
ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb24oSW50ZXJwb2xhdGlvbk1ldGhvZCBpbnRlcnBvbGF0aW9u
TWV0aG9kLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbG9yQ29tcG9uZW50czEsIENvbG9y
Q29tcG9uZW50czxmbG9hdCwgND4gY29sb3JDb21wb25lbnRzMikKK3RlbXBsYXRlPEFscGhhUHJl
bXVsdGlwbGljYXRpb24gYWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwgdHlwZW5hbWUgSW50ZXJwb2xh
dGlvbk1ldGhvZENvbG9yU3BhY2U+CitzdGQ6OnBhaXI8Q29sb3JDb21wb25lbnRzPGZsb2F0LCA0
PiwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0Pj4gcHJlSW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRp
b24oSW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2UgaW50ZXJwb2xhdGlvbk1ldGhvZENvbG9y
U3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gY29sb3JDb21wb25lbnRzMSwgQ29sb3JD
b21wb25lbnRzPGZsb2F0LCA0PiBjb2xvckNvbXBvbmVudHMyKQogewotICAgIGF1dG8gW2NvbG9y
QTAsIGNvbG9yQjBdID0gcHJlSW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb25Gb3JDb21wb25lbnQ8
MCwgYWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4oaW50ZXJwb2xhdGlvbk1ldGhvZCwgY29sb3JDb21w
b25lbnRzMSwgY29sb3JDb21wb25lbnRzMik7Ci0gICAgYXV0byBbY29sb3JBMSwgY29sb3JCMV0g
PSBwcmVJbnRlcnBvbGF0aW9uTm9ybWFsaXphdGlvbkZvckNvbXBvbmVudDwxLCBhbHBoYVByZW11
bHRpcGxpY2F0aW9uPihpbnRlcnBvbGF0aW9uTWV0aG9kLCBjb2xvckNvbXBvbmVudHMxLCBjb2xv
ckNvbXBvbmVudHMyKTsKLSAgICBhdXRvIFtjb2xvckEyLCBjb2xvckIyXSA9IHByZUludGVycG9s
YXRpb25Ob3JtYWxpemF0aW9uRm9yQ29tcG9uZW50PDIsIGFscGhhUHJlbXVsdGlwbGljYXRpb24+
KGludGVycG9sYXRpb25NZXRob2QsIGNvbG9yQ29tcG9uZW50czEsIGNvbG9yQ29tcG9uZW50czIp
OworICAgIGF1dG8gW2NvbG9yQTAsIGNvbG9yQjBdID0gcHJlSW50ZXJwb2xhdGlvbk5vcm1hbGl6
YXRpb25Gb3JDb21wb25lbnQ8MCwgYWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4oaW50ZXJwb2xhdGlv
bk1ldGhvZENvbG9yU3BhY2UsIGNvbG9yQ29tcG9uZW50czEsIGNvbG9yQ29tcG9uZW50czIpOwor
ICAgIGF1dG8gW2NvbG9yQTEsIGNvbG9yQjFdID0gcHJlSW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRp
b25Gb3JDb21wb25lbnQ8MSwgYWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4oaW50ZXJwb2xhdGlvbk1l
dGhvZENvbG9yU3BhY2UsIGNvbG9yQ29tcG9uZW50czEsIGNvbG9yQ29tcG9uZW50czIpOworICAg
IGF1dG8gW2NvbG9yQTIsIGNvbG9yQjJdID0gcHJlSW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb25G
b3JDb21wb25lbnQ8MiwgYWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4oaW50ZXJwb2xhdGlvbk1ldGhv
ZENvbG9yU3BhY2UsIGNvbG9yQ29tcG9uZW50czEsIGNvbG9yQ29tcG9uZW50czIpOwogCiAgICAg
cmV0dXJuIHsKICAgICAgICAgeyBjb2xvckEwLCBjb2xvckExLCBjb2xvckEyLCBjb2xvckNvbXBv
bmVudHMxWzNdIH0sCkBAIC02OCwxMCArNjksMTAgQEAgc3RkOjpwYWlyPENvbG9yQ29tcG9uZW50
czxmbG9hdCwgND4sIENvbG9yQ29tcG9uZW50czxmCiAKIC8vIE1BUks6IC0gUG9zdC1pbnRlcnBv
bGF0aW9uIG5vcm1hbGl6YXRpb24vZml4dXAKIAotdGVtcGxhdGU8c2l6ZV90IEksIEFscGhhUHJl
bXVsdGlwbGljYXRpb24gYWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwgdHlwZW5hbWUgSW50ZXJwb2xh
dGlvbk1ldGhvZD4KLWZsb2F0IHBvc3RJbnRlcnBvbGF0aW9uTm9ybWFsaXphdGlvbkZvckNvbXBv
bmVudChJbnRlcnBvbGF0aW9uTWV0aG9kLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbG9y
Q29tcG9uZW50cykKK3RlbXBsYXRlPHNpemVfdCBJLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGFs
cGhhUHJlbXVsdGlwbGljYXRpb24sIHR5cGVuYW1lIEludGVycG9sYXRpb25NZXRob2RDb2xvclNw
YWNlPgorZmxvYXQgcG9zdEludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uRm9yQ29tcG9uZW50KElu
dGVycG9sYXRpb25NZXRob2RDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNv
bG9yQ29tcG9uZW50cykKIHsKLSAgICB1c2luZyBDb2xvclR5cGUgPSB0eXBlbmFtZSBJbnRlcnBv
bGF0aW9uTWV0aG9kOjpDb2xvclR5cGU7CisgICAgdXNpbmcgQ29sb3JUeXBlID0gdHlwZW5hbWUg
SW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2U6OkNvbG9yVHlwZTsKICAgICBjb25zdGV4cHIg
YXV0byBjb21wb25lbnRJbmZvID0gQ29sb3JUeXBlOjpNb2RlbDo6Y29tcG9uZW50SW5mbzsKIAog
ICAgIGlmIGNvbnN0ZXhwciAoY29tcG9uZW50SW5mb1tJXS50eXBlICE9IENvbG9yQ29tcG9uZW50
VHlwZTo6QW5nbGUgJiYgYWxwaGFQcmVtdWx0aXBsaWNhdGlvbiA9PSBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpQcmVtdWx0aXBsaWVkKSB7CkBAIC04MiwxMyArODMsMTMgQEAgZmxvYXQgcG9zdElu
dGVycG9sYXRpb25Ob3JtYWxpemF0aW9uRm9yQ29tcG9uZW50KEludGVyCiAgICAgICAgIHJldHVy
biBjb2xvckNvbXBvbmVudHNbSV07CiB9CiAKLXRlbXBsYXRlPEFscGhhUHJlbXVsdGlwbGljYXRp
b24gYWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwgdHlwZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhvZD4K
LUNvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gcG9zdEludGVycG9sYXRpb25Ob3JtYWxpemF0aW9u
KEludGVycG9sYXRpb25NZXRob2QgaW50ZXJwb2xhdGlvbk1ldGhvZCwgQ29sb3JDb21wb25lbnRz
PGZsb2F0LCA0PiBjb2xvckNvbXBvbmVudHMpCit0ZW1wbGF0ZTxBbHBoYVByZW11bHRpcGxpY2F0
aW9uIGFscGhhUHJlbXVsdGlwbGljYXRpb24sIHR5cGVuYW1lIEludGVycG9sYXRpb25NZXRob2RD
b2xvclNwYWNlPgorQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBwb3N0SW50ZXJwb2xhdGlvbk5v
cm1hbGl6YXRpb24oSW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2UgaW50ZXJwb2xhdGlvbk1l
dGhvZENvbG9yU3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gY29sb3JDb21wb25lbnRz
KQogewogICAgIHJldHVybiB7Ci0gICAgICAgIHBvc3RJbnRlcnBvbGF0aW9uTm9ybWFsaXphdGlv
bkZvckNvbXBvbmVudDwwLCBhbHBoYVByZW11bHRpcGxpY2F0aW9uPihpbnRlcnBvbGF0aW9uTWV0
aG9kLCBjb2xvckNvbXBvbmVudHMpLAotICAgICAgICBwb3N0SW50ZXJwb2xhdGlvbk5vcm1hbGl6
YXRpb25Gb3JDb21wb25lbnQ8MSwgYWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4oaW50ZXJwb2xhdGlv
bk1ldGhvZCwgY29sb3JDb21wb25lbnRzKSwKLSAgICAgICAgcG9zdEludGVycG9sYXRpb25Ob3Jt
YWxpemF0aW9uRm9yQ29tcG9uZW50PDIsIGFscGhhUHJlbXVsdGlwbGljYXRpb24+KGludGVycG9s
YXRpb25NZXRob2QsIGNvbG9yQ29tcG9uZW50cyksCisgICAgICAgIHBvc3RJbnRlcnBvbGF0aW9u
Tm9ybWFsaXphdGlvbkZvckNvbXBvbmVudDwwLCBhbHBoYVByZW11bHRpcGxpY2F0aW9uPihpbnRl
cnBvbGF0aW9uTWV0aG9kQ29sb3JTcGFjZSwgY29sb3JDb21wb25lbnRzKSwKKyAgICAgICAgcG9z
dEludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uRm9yQ29tcG9uZW50PDEsIGFscGhhUHJlbXVsdGlw
bGljYXRpb24+KGludGVycG9sYXRpb25NZXRob2RDb2xvclNwYWNlLCBjb2xvckNvbXBvbmVudHMp
LAorICAgICAgICBwb3N0SW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb25Gb3JDb21wb25lbnQ8Miwg
YWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4oaW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2UsIGNv
bG9yQ29tcG9uZW50cyksCiAgICAgICAgIGNvbG9yQ29tcG9uZW50c1szXQogICAgIH07CiAgfQpA
QCAtOTYsMTEgKzk3LDExIEBAIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gcG9zdEludGVycG9s
YXRpb25Ob3JtYWxpemF0aQogCiAvLyBNQVJLOiAtIEludGVycG9sYXRpb24KIAotdGVtcGxhdGU8
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBhbHBoYVByZW11bHRpcGxpY2F0aW9uLCB0eXBlbmFtZSBJ
bnRlcnBvbGF0aW9uTWV0aG9kPgotdHlwZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhvZDo6Q29sb3JU
eXBlIGludGVycG9sYXRlQ29sb3JDb21wb25lbnRzKEludGVycG9sYXRpb25NZXRob2QgaW50ZXJw
b2xhdGlvbk1ldGhvZCwgdHlwZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhvZDo6Q29sb3JUeXBlIGNv
bG9yMSwgZG91YmxlIGNvbG9yMU11bHRpcGxpZXIsIHR5cGVuYW1lIEludGVycG9sYXRpb25NZXRo
b2Q6OkNvbG9yVHlwZSBjb2xvcjIsIGRvdWJsZSBjb2xvcjJNdWx0aXBsaWVyKQordGVtcGxhdGU8
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBhbHBoYVByZW11bHRpcGxpY2F0aW9uLCB0eXBlbmFtZSBJ
bnRlcnBvbGF0aW9uTWV0aG9kQ29sb3JTcGFjZT4KK3R5cGVuYW1lIEludGVycG9sYXRpb25NZXRo
b2RDb2xvclNwYWNlOjpDb2xvclR5cGUgaW50ZXJwb2xhdGVDb2xvckNvbXBvbmVudHMoSW50ZXJw
b2xhdGlvbk1ldGhvZENvbG9yU3BhY2UgaW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2UsIHR5
cGVuYW1lIEludGVycG9sYXRpb25NZXRob2RDb2xvclNwYWNlOjpDb2xvclR5cGUgY29sb3IxLCBk
b3VibGUgY29sb3IxTXVsdGlwbGllciwgdHlwZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhvZENvbG9y
U3BhY2U6OkNvbG9yVHlwZSBjb2xvcjIsIGRvdWJsZSBjb2xvcjJNdWx0aXBsaWVyKQogewogICAg
IC8vIDEuIEFwcGx5IHByZS1pbnRlcnBvbGF0aW9uIHRyYW5zZm9ybXMgKGh1ZSBmaXh1cCBmb3Ig
cG9sYXIgY29sb3Igc3BhY2VzLCBhbHBoYSBwcmVtdWx0aXBsaWNhdGlvbiBpZiByZXF1aXJlZCku
Ci0gICAgYXV0byBbbm9ybWFsaXplZENvbG9yQ29tcG9uZW50czEsIG5vcm1hbGl6ZWRDb2xvckNv
bXBvbmVudHMyXSA9IHByZUludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uPGFscGhhUHJlbXVsdGlw
bGljYXRpb24+KGludGVycG9sYXRpb25NZXRob2QsIGFzQ29sb3JDb21wb25lbnRzKGNvbG9yMSks
IGFzQ29sb3JDb21wb25lbnRzKGNvbG9yMikpOworICAgIGF1dG8gW25vcm1hbGl6ZWRDb2xvckNv
bXBvbmVudHMxLCBub3JtYWxpemVkQ29sb3JDb21wb25lbnRzMl0gPSBwcmVJbnRlcnBvbGF0aW9u
Tm9ybWFsaXphdGlvbjxhbHBoYVByZW11bHRpcGxpY2F0aW9uPihpbnRlcnBvbGF0aW9uTWV0aG9k
Q29sb3JTcGFjZSwgYXNDb2xvckNvbXBvbmVudHMoY29sb3IxKSwgYXNDb2xvckNvbXBvbmVudHMo
Y29sb3IyKSk7CiAKICAgICAvLyAyLiBJbnRlcnBvbGF0ZSB1c2luZyB0aGUgbm9ybWFsaXplZCBj
b21wb25lbnRzLgogICAgIGF1dG8gaW50ZXJwb2xhdGVkQ29sb3JDb21wb25lbnRzID0gbWFwQ29s
b3JDb21wb25lbnRzKFsmXSAoYXV0byBjb21wb25lbnRGcm9tQ29sb3IxLCBhdXRvIGNvbXBvbmVu
dEZyb21Db2xvcjIpIC0+IGZsb2F0IHsKQEAgLTEwOCwxMCArMTA5LDI1IEBAIHR5cGVuYW1lIElu
dGVycG9sYXRpb25NZXRob2Q6OkNvbG9yVHlwZSBpbnRlcnBvbGF0ZUNvbAogICAgIH0sIG5vcm1h
bGl6ZWRDb2xvckNvbXBvbmVudHMxLCBub3JtYWxpemVkQ29sb3JDb21wb25lbnRzMik7CiAKICAg
ICAvLyAzLiBBcHBseSBwb3N0LWludGVycG9sYXRpb24gdHJhc2Zvcm1zIChhbHBoYSB1bi1wcmVt
dWx0aXBsaWNhdGlvbiBpZiByZXF1aXJlZCkuCi0gICAgYXV0byBub3JtYWxpemVkSW50ZXJwb2xh
dGVkQ29sb3JDb21wb25lbnRzID0gcG9zdEludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uPGFscGhh
UHJlbXVsdGlwbGljYXRpb24+KGludGVycG9sYXRpb25NZXRob2QsIGludGVycG9sYXRlZENvbG9y
Q29tcG9uZW50cyk7CisgICAgYXV0byBub3JtYWxpemVkSW50ZXJwb2xhdGVkQ29sb3JDb21wb25l
bnRzID0gcG9zdEludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uPGFscGhhUHJlbXVsdGlwbGljYXRp
b24+KGludGVycG9sYXRpb25NZXRob2RDb2xvclNwYWNlLCBpbnRlcnBvbGF0ZWRDb2xvckNvbXBv
bmVudHMpOwogCiAgICAgLy8gNC4gQ3JlYXRlIGNvbG9yIHR5cGUgZnJvbSBjb21wb25lbnRzLCBu
b3JtYWxpemluZyBhbnkgY29tcG9uZW50cyB0aGF0IG1heSBiZSBvdXQgb2YgcmFuZ2UuCi0gICAg
cmV0dXJuIG1ha2VDb2xvclR5cGVCeU5vcm1hbGl6aW5nQ29tcG9uZW50czx0eXBlbmFtZSBJbnRl
cnBvbGF0aW9uTWV0aG9kOjpDb2xvclR5cGU+KG5vcm1hbGl6ZWRJbnRlcnBvbGF0ZWRDb2xvckNv
bXBvbmVudHMpOworICAgIHJldHVybiBtYWtlQ29sb3JUeXBlQnlOb3JtYWxpemluZ0NvbXBvbmVu
dHM8dHlwZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2U6OkNvbG9yVHlwZT4obm9y
bWFsaXplZEludGVycG9sYXRlZENvbG9yQ29tcG9uZW50cyk7Cit9CisKK2lubGluZSBDb2xvciBp
bnRlcnBvbGF0ZUNvbG9ycyhDb2xvckludGVycG9sYXRpb25NZXRob2QgY29sb3JJbnRlcnBvbGF0
aW9uTWV0aG9kLCBDb2xvciBjb2xvcjEsIGRvdWJsZSBjb2xvcjFNdWx0aXBsaWVyLCBDb2xvciBj
b2xvcjIsIGRvdWJsZSBjb2xvcjJNdWx0aXBsaWVyKQoreworICAgIHJldHVybiBXVEY6OnN3aXRj
aE9uKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5jb2xvclNwYWNlLAorICAgICAgICBbJl0gKGF1
dG8mIGNvbG9yU3BhY2UpIHsKKyAgICAgICAgICAgIHVzaW5nIENvbG9yVHlwZSA9IHR5cGVuYW1l
IHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PGRlY2x0eXBlKGNvbG9yU3BhY2UpPjo6Q29sb3JUeXBl
OworICAgICAgICAgICAgc3dpdGNoIChjb2xvckludGVycG9sYXRpb25NZXRob2QuYWxwaGFQcmVt
dWx0aXBsaWNhdGlvbikgeworICAgICAgICAgICAgY2FzZSBBbHBoYVByZW11bHRpcGxpY2F0aW9u
OjpQcmVtdWx0aXBsaWVkOgorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlQ2Fub25pY2FsQ29s
b3IoaW50ZXJwb2xhdGVDb2xvckNvbXBvbmVudHM8QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJl
bXVsdGlwbGllZD4oY29sb3JTcGFjZSwgY29sb3IxLnRvQ29sb3JUeXBlTG9zc3k8Q29sb3JUeXBl
PigpLCBjb2xvcjFNdWx0aXBsaWVyLCBjb2xvcjIudG9Db2xvclR5cGVMb3NzeTxDb2xvclR5cGU+
KCksIGNvbG9yMk11bHRpcGxpZXIpKTsKKyAgICAgICAgICAgIGNhc2UgQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkOgorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlQ2Fu
b25pY2FsQ29sb3IoaW50ZXJwb2xhdGVDb2xvckNvbXBvbmVudHM8QWxwaGFQcmVtdWx0aXBsaWNh
dGlvbjo6VW5wcmVtdWx0aXBsaWVkPihjb2xvclNwYWNlLCBjb2xvcjEudG9Db2xvclR5cGVMb3Nz
eTxDb2xvclR5cGU+KCksIGNvbG9yMU11bHRpcGxpZXIsIGNvbG9yMi50b0NvbG9yVHlwZUxvc3N5
PENvbG9yVHlwZT4oKSwgY29sb3IyTXVsdGlwbGllcikpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JOb3JtYWxpemF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JOb3JtYWxpemF0aW9uLmgJKHJldmlzaW9uIDI4NzIzMykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTm9ybWFsaXphdGlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSwxNCArMjUsMTkgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkNvbG9yQ29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkNv
bG9yVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZT4gQ29sb3JUeXBlIG1ha2VDb2xv
clR5cGVCeU5vcm1hbGl6aW5nQ29tcG9uZW50cyhjb25zdCBDb2xvckNvbXBvbmVudHM8ZmxvYXQs
IDQ+Jik7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGU+IENvbG9yIG1ha2VDYW5vbmljYWxD
b2xvcihDb2xvclR5cGUpOwogCiAKKy8vIE1BUks6IC0gTm9ybWFsaXphdGlvbgorCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb21wb25lbnRUeXBlPiBzdHJ1Y3QgV2hpdGVuZXNzQmxhY2tuZXNzIHsKICAg
ICBDb21wb25lbnRUeXBlIHdoaXRlbmVzczsKICAgICBDb21wb25lbnRUeXBlIGJsYWNrbmVzczsK
QEAgLTk5LDYgKzEwNCwyMyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBPS0xDSEE8ZmxvYXQ+IG1ha2VD
b2xvclR5cGVCeU5vcm1hbGkKICAgICBmbG9hdCBub3JtYWxpemVkSHVlID0gbm9ybWFsaXplSHVl
KGh1ZSk7CiAKICAgICByZXR1cm4geyBsaWdodG5lc3MsIGNocm9tYSwgbm9ybWFsaXplZEh1ZSwg
YWxwaGEgfTsKK30KKworLy8gTUFSSzogLSBDYW5vbmljYWxpemF0aW9uCisKK3RlbXBsYXRlPHR5
cGVuYW1lIENvbG9yVHlwZT4gaW5saW5lIENvbG9yIG1ha2VDYW5vbmljYWxDb2xvcihDb2xvclR5
cGUgY29sb3IpCit7CisgICAgcmV0dXJuIGNvbG9yOworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBD
b2xvciBtYWtlQ2Fub25pY2FsQ29sb3I8SFdCQTxmbG9hdD4+KEhXQkE8ZmxvYXQ+IGNvbG9yKQor
eworICAgIHJldHVybiBjb252ZXJ0Q29sb3I8U1JHQkE8dWludDhfdD4+KGNvbG9yKTsKK30KKwor
dGVtcGxhdGU8PiBpbmxpbmUgQ29sb3IgbWFrZUNhbm9uaWNhbENvbG9yPEhTTEE8ZmxvYXQ+PihI
U0xBPGZsb2F0PiBjb2xvcikKK3sKKyAgICByZXR1cm4gY29udmVydENvbG9yPFNSR0JBPHVpbnQ4
X3Q+Pihjb2xvcik7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYWRpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhZGllbnQuaAkocmV2aXNpb24gMjg3MjMzKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTYgKzI3LDE2
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5j
bHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJDb2xvckludGVycG9sYXRpb25NZXRob2QuaCIKICNp
bmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAiR3JhZGllbnRDb2xvclN0b3AuaCIKICNp
bmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCiAjaW5jbHVkZSA8dmFyaWFudD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKICNpZiBVU0UoQ0cpCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgor
I2luY2x1ZGUgIkdyYWRpZW50UmVuZGVyZXJDRy5oIgogI2VuZGlmCiAKICNpZiBVU0UoRElSRUNU
MkQpCkBAIC00NSw3ICs0NSw2IEBACiAKICNpZiBVU0UoQ0cpCiB0eXBlZGVmIHN0cnVjdCBDR0Nv
bnRleHQqIENHQ29udGV4dFJlZjsKLXR5cGVkZWYgc3RydWN0IENHR3JhZGllbnQqIENHR3JhZGll
bnRSZWY7CiAjZW5kaWYKIAogI2lmIFVTRShESVJFQ1QyRCkKQEAgLTU5LDIxICs1OCwxNSBAQCB0
eXBlZGVmIHN0cnVjdCBfY2Fpcm9fcGF0dGVybiBjYWlyb19wYXR0ZXJuX3Q7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgRmxvYXRSZWN0Owog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0OwogCiBjbGFzcyBHcmFkaWVudCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEdyYWRpZW50PiB7CiBwdWJsaWM6Ci0gICAgc3RydWN0IENvbG9yU3RvcCB7Ci0gICAgICAg
IGZsb2F0IG9mZnNldCB7IDAgfTsKLSAgICAgICAgQ29sb3IgY29sb3I7CisgICAgdXNpbmcgQ29s
b3JTdG9wID0gR3JhZGllbnRDb2xvclN0b3A7CisgICAgdXNpbmcgQ29sb3JTdG9wVmVjdG9yID0g
R3JhZGllbnRDb2xvclN0b3BWZWN0b3I7CiAKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxDb2xvclN0b3A+IGRlY29kZShEZWNv
ZGVyJik7Ci0gICAgfTsKLQotICAgIHVzaW5nIENvbG9yU3RvcFZlY3RvciA9IFZlY3RvcjxDb2xv
clN0b3AsIDI+OwotCiAgICAgc3RydWN0IExpbmVhckRhdGEgewogICAgICAgICBGbG9hdFBvaW50
IHBvaW50MDsKICAgICAgICAgRmxvYXRQb2ludCBwb2ludDE7CkBAIC0xNDQsMTEgKzEzNyw2IEBA
IGNsYXNzIEdyYWRpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8R3JhZGllbnQ+IHsgKHByaXZhdAog
ICAgIHZvaWQgc29ydFN0b3BzKCkgY29uc3Q7CiAgICAgdm9pZCBzdG9wc0NoYW5nZWQoKTsKIAot
I2lmIFVTRShDRykKLSAgICB2b2lkIGNyZWF0ZUNHR3JhZGllbnQoKTsKLSAgICBib29sIGhhc09u
bHlCb3VuZGVkU1JHQkNvbG9yU3RvcHMoKSBjb25zdDsKLSNlbmRpZgotCiAgICAgRGF0YSBtX2Rh
dGE7CiAgICAgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIG1fY29sb3JJbnRlcnBvbGF0aW9uTWV0
aG9kOwogICAgIG11dGFibGUgQ29sb3JTdG9wVmVjdG9yIG1fc3RvcHM7CkBAIC0xNTcsMzQgKzE0
NSwxMyBAQCBjbGFzcyBHcmFkaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYWRpZW50PiB7IChw
cml2YXQKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fY2FjaGVkSGFzaCB7IDAgfTsKIAogI2lmIFVT
RShDRykKLSAgICBSZXRhaW5QdHI8Q0dHcmFkaWVudFJlZj4gbV9ncmFkaWVudDsKKyAgICBzdGQ6
Om9wdGlvbmFsPEdyYWRpZW50UmVuZGVyZXJDRz4gbV9wbGF0Zm9ybVJlbmRlcmVyOwogI2VuZGlm
CiAKICNpZiBVU0UoRElSRUNUMkQpCiAgICAgQ09NUHRyPElEMkQxQnJ1c2g+IG1fYnJ1c2g7CiAj
ZW5kaWYKIH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgR3JhZGllbnQ6OkNv
bG9yU3RvcDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8
PCBvZmZzZXQ7Ci0gICAgZW5jb2RlciA8PCBjb2xvcjsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
RGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxHcmFkaWVudDo6Q29sb3JTdG9wPiBHcmFkaWVudDo6Q29s
b3JTdG9wOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBzdGQ6Om9wdGlvbmFsPGZs
b2F0PiBvZmZzZXQ7Ci0gICAgZGVjb2RlciA+PiBvZmZzZXQ7Ci0gICAgaWYgKCFvZmZzZXQpCi0g
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPENvbG9yPiBj
b2xvcjsKLSAgICBkZWNvZGVyID4+IGNvbG9yOwotICAgIGlmICghY29sb3IpCi0gICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4ge3sgKm9mZnNldCwgKmNvbG9yIH19Owot
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIEdyYWRpZW50OjpMaW5lYXJEYXRh
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50Q29sb3JTdG9wLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRDb2xvclN0b3AuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudENvbG9y
U3RvcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlIDxvcHRpb25hbD4KKyNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEdyYWRpZW50Q29s
b3JTdG9wIHsKKyAgICBmbG9hdCBvZmZzZXQgeyAwIH07CisgICAgQ29sb3IgY29sb3I7CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8R3Jh
ZGllbnRDb2xvclN0b3A+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit1c2luZyBHcmFkaWVudENv
bG9yU3RvcFZlY3RvciA9IFZlY3RvcjxHcmFkaWVudENvbG9yU3RvcCwgMj47CisKK3RlbXBsYXRl
PHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgR3JhZGllbnRDb2xvclN0b3A6OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgb2Zmc2V0OworICAgIGVuY29kZXIg
PDwgY29sb3I7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8
R3JhZGllbnRDb2xvclN0b3A+IEdyYWRpZW50Q29sb3JTdG9wOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBvZmZzZXQ7CisgICAgZGVjb2RlciA+
PiBvZmZzZXQ7CisgICAgaWYgKCFvZmZzZXQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICBzdGQ6Om9wdGlvbmFsPENvbG9yPiBjb2xvcjsKKyAgICBkZWNvZGVyID4+IGNvbG9y
OworICAgIGlmICghY29sb3IpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBy
ZXR1cm4ge3sgKm9mZnNldCwgKmNvbG9yIH19OworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENHLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENHLmNwcAkocmV2aXNpb24g
Mjg3MjMzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRD
Ry5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcyICsyOSwxNyBAQAogCiAjaWYgVVNFKENHKQog
CisjaW5jbHVkZSAiR3JhZGllbnRSZW5kZXJlckNHLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0Q0cuaCIKICNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgotI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEdyYWRp
ZW50OjpzdG9wc0NoYW5nZWQoKQogewotICAgIG1fZ3JhZGllbnQgPSBudWxscHRyOworICAgIG1f
cGxhdGZvcm1SZW5kZXJlciA9IHsgfTsKIH0KIAotYm9vbCBHcmFkaWVudDo6aGFzT25seUJvdW5k
ZWRTUkdCQ29sb3JTdG9wcygpIGNvbnN0Ci17Ci0gICAgZm9yIChjb25zdCBhdXRvJiBzdG9wIDog
bV9zdG9wcykgewotICAgICAgICBpZiAoc3RvcC5jb2xvci5jb2xvclNwYWNlKCkgIT0gQ29sb3JT
cGFjZTo6U1JHQikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLXZvaWQgR3JhZGllbnQ6OmNyZWF0ZUNHR3JhZGllbnQoKQotewotICAgIHNv
cnRTdG9wcygpOwotCi0gICAgdW5zaWduZWQgbnVtU3RvcHMgPSBtX3N0b3BzLnNpemUoKTsKLQot
ICAgIGNvbnN0IGludCByZXNlcnZlZFN0b3BzID0gMzsKLSAgICBWZWN0b3I8Q0dGbG9hdCwgcmVz
ZXJ2ZWRTdG9wcz4gbG9jYXRpb25zOwotICAgIGxvY2F0aW9ucy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KG51bVN0b3BzKTsKLQotICAgIC8vIElmIGFsbCB0aGUgc3RvcHMgYXJlIGJvdW5kZWQgc1JH
QiAoYXMgcmVwcmVzZW50ZWQgYnkgdGhlIGNvbG9yIGhhdmluZyB0aGUgY29sb3Igc3BhY2UKLSAg
ICAvLyBDb2xvclNwYWNlOjpTUkdCKSwgaXQgaXMgZmFzdGVyIHRvIGNyZWF0ZSBhIGdyYWRpZW50
IHVzaW5nIGNvbXBvbmVudHMgdGhhbiBDR0NvbG9ycy4KLSAgICBpZiAoaGFzT25seUJvdW5kZWRT
UkdCQ29sb3JTdG9wcygpKSB7Ci0gICAgICAgIFZlY3RvcjxDR0Zsb2F0LCA0ICogcmVzZXJ2ZWRT
dG9wcz4gY29sb3JDb21wb25lbnRzOwotICAgICAgICBjb2xvckNvbXBvbmVudHMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShudW1TdG9wcyAqIDQpOwotCi0gICAgICAgIGZvciAoY29uc3QgYXV0byYg
c3RvcCA6IG1fc3RvcHMpIHsKLSAgICAgICAgICAgIGF1dG8gW2NvbG9yU3BhY2UsIGNvbXBvbmVu
dHNdID0gc3RvcC5jb2xvci5jb2xvclNwYWNlQW5kQ29tcG9uZW50cygpOwotICAgICAgICAgICAg
YXV0byBbciwgZywgYiwgYV0gPSBjb21wb25lbnRzOwotICAgICAgICAgICAgY29sb3JDb21wb25l
bnRzLnVuY2hlY2tlZEFwcGVuZChyKTsKLSAgICAgICAgICAgIGNvbG9yQ29tcG9uZW50cy51bmNo
ZWNrZWRBcHBlbmQoZyk7Ci0gICAgICAgICAgICBjb2xvckNvbXBvbmVudHMudW5jaGVja2VkQXBw
ZW5kKGIpOwotICAgICAgICAgICAgY29sb3JDb21wb25lbnRzLnVuY2hlY2tlZEFwcGVuZChhKTsK
LQotICAgICAgICAgICAgbG9jYXRpb25zLnVuY2hlY2tlZEFwcGVuZChzdG9wLm9mZnNldCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBtX2dyYWRpZW50ID0gYWRvcHRDRihDR0dyYWRpZW50Q3JlYXRl
V2l0aENvbG9yQ29tcG9uZW50cyhzUkdCQ29sb3JTcGFjZVJlZigpLCBjb2xvckNvbXBvbmVudHMu
ZGF0YSgpLCBsb2NhdGlvbnMuZGF0YSgpLCBudW1TdG9wcykpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgYXV0byBjb2xvcnNBcnJheSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFi
bGUoMCwgbV9zdG9wcy5zaXplKCksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKLSAgICBmb3Ig
KGNvbnN0IGF1dG8mIHN0b3AgOiBtX3N0b3BzKSB7Ci0gICAgICAgIENGQXJyYXlBcHBlbmRWYWx1
ZShjb2xvcnNBcnJheS5nZXQoKSwgY2FjaGVkQ0dDb2xvcihzdG9wLmNvbG9yKS5nZXQoKSk7Ci0g
ICAgICAgIGxvY2F0aW9ucy51bmNoZWNrZWRBcHBlbmQoc3RvcC5vZmZzZXQpOwotICAgIH0KLQot
I2lmIEhBVkUoQ09SRV9HUkFQSElDU19FWFRFTkRFRF9TUkdCX0NPTE9SX1NQQUNFKQotICAgIGF1
dG8gZXh0ZW5kZWRDb2xvcnNHcmFkaWVudENvbG9yU3BhY2UgPSBleHRlbmRlZFNSR0JDb2xvclNw
YWNlUmVmKCk7Ci0jZWxzZQotICAgIGF1dG8gZXh0ZW5kZWRDb2xvcnNHcmFkaWVudENvbG9yU3Bh
Y2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOwotI2VuZGlmCi0KLSAgICBtX2dyYWRpZW50ID0gYWRv
cHRDRihDR0dyYWRpZW50Q3JlYXRlV2l0aENvbG9ycyhleHRlbmRlZENvbG9yc0dyYWRpZW50Q29s
b3JTcGFjZSwgY29sb3JzQXJyYXkuZ2V0KCksIGxvY2F0aW9ucy5kYXRhKCkpKTsKLX0KLQogdm9p
ZCBHcmFkaWVudDo6ZmlsbChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCkKIHsKICAgICBjb250ZXh0LmNsaXAocmVjdCk7CkBAIC0xMDgsMTggKzUzLDE4IEBA
IHZvaWQgR3JhZGllbnQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIAogdm9pZCBH
cmFkaWVudDo6cGFpbnQoQ0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dCkKIHsKLSAgICBDR0dy
YWRpZW50RHJhd2luZ09wdGlvbnMgZXh0ZW5kT3B0aW9ucyA9IGtDR0dyYWRpZW50RHJhd3NCZWZv
cmVTdGFydExvY2F0aW9uIHwga0NHR3JhZGllbnREcmF3c0FmdGVyRW5kTG9jYXRpb247CisgICAg
aWYgKCFtX3BsYXRmb3JtUmVuZGVyZXIpIHsKKyAgICAgICAgc29ydFN0b3BzKCk7CisgICAgICAg
IG1fcGxhdGZvcm1SZW5kZXJlciA9IEdyYWRpZW50UmVuZGVyZXJDRyB7IG1fY29sb3JJbnRlcnBv
bGF0aW9uTWV0aG9kLCBtX3N0b3BzIH07CisgICAgfQogCi0gICAgaWYgKCFtX2dyYWRpZW50KQot
ICAgICAgICBjcmVhdGVDR0dyYWRpZW50KCk7Ci0KICAgICBXVEY6OnN3aXRjaE9uKG1fZGF0YSwK
ICAgICAgICAgWyZdIChjb25zdCBMaW5lYXJEYXRhJiBkYXRhKSB7CiAgICAgICAgICAgICBzd2l0
Y2ggKG1fc3ByZWFkTWV0aG9kKSB7CiAgICAgICAgICAgICBjYXNlIEdyYWRpZW50U3ByZWFkTWV0
aG9kOjpSZXBlYXQ6CiAgICAgICAgICAgICBjYXNlIEdyYWRpZW50U3ByZWFkTWV0aG9kOjpSZWZs
ZWN0OiB7CiAgICAgICAgICAgICAgICAgQ0dDb250ZXh0U3RhdGVTYXZlciBzYXZlU3RhdGUocGxh
dGZvcm1Db250ZXh0KTsKLSAgICAgICAgICAgICAgICBleHRlbmRPcHRpb25zID0gMDsKKyAgICAg
ICAgICAgICAgICBDR0dyYWRpZW50RHJhd2luZ09wdGlvbnMgZXh0ZW5kT3B0aW9ucyA9IDA7CiAK
ICAgICAgICAgICAgICAgICBGbG9hdFBvaW50IGdyYWRpZW50VmVjdG9yTm9ybShkYXRhLnBvaW50
MSAtIGRhdGEucG9pbnQwKTsKICAgICAgICAgICAgICAgICBncmFkaWVudFZlY3Rvck5vcm0ubm9y
bWFsaXplKCk7CkBAIC0xNDMsNyArODgsNyBAQCB2b2lkIEdyYWRpZW50OjpwYWludChDR0NvbnRl
eHRSZWYgcGxhdGZvcm1Db250ZXh0KQogICAgICAgICAgICAgICAgICAgICBDR1BvaW50IGxlZnQg
PSBDR1BvaW50TWFrZShmbGlwID8gZW5kIDogc3RhcnQsIDApOwogICAgICAgICAgICAgICAgICAg
ICBDR1BvaW50IHJpZ2h0ID0gQ0dQb2ludE1ha2UoZmxpcCA/IHN0YXJ0IDogZW5kLCAwKTsKIAot
ICAgICAgICAgICAgICAgICAgICBDR0NvbnRleHREcmF3TGluZWFyR3JhZGllbnQocGxhdGZvcm1D
b250ZXh0LCBtX2dyYWRpZW50LmdldCgpLCBsZWZ0LCByaWdodCwgZXh0ZW5kT3B0aW9ucyk7Cisg
ICAgICAgICAgICAgICAgICAgIG1fcGxhdGZvcm1SZW5kZXJlci0+ZHJhd0xpbmVhckdyYWRpZW50
KHBsYXRmb3JtQ29udGV4dCwgbGVmdCwgcmlnaHQsIGV4dGVuZE9wdGlvbnMpOwogICAgICAgICAg
ICAgICAgIH07CiAKICAgICAgICAgICAgICAgICBhdXRvIGlzTGVmdE9mID0gW10oQ0dGbG9hdCBz
dGFydCwgQ0dGbG9hdCBlbmQsIENHUmVjdCBib3VuZGluZ0JveCkgLT4gYm9vbCB7CkBAIC0xODks
MTIgKzEzNCwxNCBAQCB2b2lkIEdyYWRpZW50OjpwYWludChDR0NvbnRleHRSZWYgcGxhdGZvcm1D
b250ZXh0KQogICAgICAgICAgICAgICAgICAgICBkcmF3TGluZWFyR3JhZGllbnQoZW5kIC0gZHgs
IGVuZCwgZmxpcCk7CiAgICAgICAgICAgICAgICAgICAgIGZsaXAgPSAhZmxpcCAmJiBtX3NwcmVh
ZE1ldGhvZCA9PSBHcmFkaWVudFNwcmVhZE1ldGhvZDo6UmVmbGVjdDsKICAgICAgICAgICAgICAg
ICB9Ci0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGNhc2UgR3JhZGllbnRTcHJlYWRNZXRob2Q6OlBhZDoKLSAgICAgICAgICAgICAgICBDR0NvbnRl
eHREcmF3TGluZWFyR3JhZGllbnQocGxhdGZvcm1Db250ZXh0LCBtX2dyYWRpZW50LmdldCgpLCBk
YXRhLnBvaW50MCwgZGF0YS5wb2ludDEsIGV4dGVuZE9wdGlvbnMpOworICAgICAgICAgICAgY2Fz
ZSBHcmFkaWVudFNwcmVhZE1ldGhvZDo6UGFkOiB7CisgICAgICAgICAgICAgICAgQ0dHcmFkaWVu
dERyYXdpbmdPcHRpb25zIGV4dGVuZE9wdGlvbnMgPSBrQ0dHcmFkaWVudERyYXdzQmVmb3JlU3Rh
cnRMb2NhdGlvbiB8IGtDR0dyYWRpZW50RHJhd3NBZnRlckVuZExvY2F0aW9uOworICAgICAgICAg
ICAgICAgIG1fcGxhdGZvcm1SZW5kZXJlci0+ZHJhd0xpbmVhckdyYWRpZW50KHBsYXRmb3JtQ29u
dGV4dCwgZGF0YS5wb2ludDAsIGRhdGEucG9pbnQxLCBleHRlbmRPcHRpb25zKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgfSwK
ICAgICAgICAgWyZdIChjb25zdCBSYWRpYWxEYXRhJiBkYXRhKSB7CiAgICAgICAgICAgICBib29s
IG5lZWRTY2FsaW5nID0gZGF0YS5hc3BlY3RSYXRpbyAhPSAxOwpAQCAtMjA4LDcgKzE1NSw4IEBA
IHZvaWQgR3JhZGllbnQ6OnBhaW50KENHQ29udGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQpCiAgICAg
ICAgICAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKHBsYXRmb3JtQ29udGV4dCwgLWRhdGEu
cG9pbnQwLngoKSwgLWRhdGEucG9pbnQwLnkoKSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgIENHQ29udGV4dERyYXdSYWRpYWxHcmFkaWVudChwbGF0Zm9ybUNvbnRleHQsIG1fZ3JhZGll
bnQuZ2V0KCksIGRhdGEucG9pbnQwLCBkYXRhLnN0YXJ0UmFkaXVzLCBkYXRhLnBvaW50MSwgZGF0
YS5lbmRSYWRpdXMsIGV4dGVuZE9wdGlvbnMpOworICAgICAgICAgICAgQ0dHcmFkaWVudERyYXdp
bmdPcHRpb25zIGV4dGVuZE9wdGlvbnMgPSBrQ0dHcmFkaWVudERyYXdzQmVmb3JlU3RhcnRMb2Nh
dGlvbiB8IGtDR0dyYWRpZW50RHJhd3NBZnRlckVuZExvY2F0aW9uOworICAgICAgICAgICAgbV9w
bGF0Zm9ybVJlbmRlcmVyLT5kcmF3UmFkaWFsR3JhZGllbnQocGxhdGZvcm1Db250ZXh0LCBkYXRh
LnBvaW50MCwgZGF0YS5zdGFydFJhZGl1cywgZGF0YS5wb2ludDEsIGRhdGEuZW5kUmFkaXVzLCBl
eHRlbmRPcHRpb25zKTsKIAogICAgICAgICAgICAgaWYgKG5lZWRTY2FsaW5nKQogICAgICAgICAg
ICAgICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUocGxhdGZvcm1Db250ZXh0KTsKQEAgLTIyMSw3
ICsxNjksNyBAQCB2b2lkIEdyYWRpZW50OjpwYWludChDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250
ZXh0KQogICAgICAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKHBsYXRmb3JtQ29udGV4dCwg
ZGF0YS5wb2ludDAueCgpLCBkYXRhLnBvaW50MC55KCkpOwogICAgICAgICAgICAgQ0dDb250ZXh0
Um90YXRlQ1RNKHBsYXRmb3JtQ29udGV4dCwgKENHRmxvYXQpLU1fUElfMik7CiAgICAgICAgICAg
ICBDR0NvbnRleHRUcmFuc2xhdGVDVE0ocGxhdGZvcm1Db250ZXh0LCAtZGF0YS5wb2ludDAueCgp
LCAtZGF0YS5wb2ludDAueSgpKTsKLSAgICAgICAgICAgIENHQ29udGV4dERyYXdDb25pY0dyYWRp
ZW50KHBsYXRmb3JtQ29udGV4dCwgbV9ncmFkaWVudC5nZXQoKSwgZGF0YS5wb2ludDAsIGRhdGEu
YW5nbGVSYWRpYW5zKTsKKyAgICAgICAgICAgIG1fcGxhdGZvcm1SZW5kZXJlci0+ZHJhd0Nvbmlj
R3JhZGllbnQocGxhdGZvcm1Db250ZXh0LCBkYXRhLnBvaW50MCwgZGF0YS5hbmdsZVJhZGlhbnMp
OwogICAgICAgICAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShwbGF0Zm9ybUNvbnRleHQpOwog
I2Vsc2UKICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50UmVuZGVyZXJDRy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRSZW5kZXJl
ckNHLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFkaWVudFJlbmRlcmVyQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzU0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR3JhZGllbnRSZW5kZXJl
ckNHLmgiCisKKyNpbmNsdWRlICJDb2xvckludGVycG9sYXRpb24uaCIKKyNpbmNsdWRlICJDb2xv
clNwYWNlQ0cuaCIKKyNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0dyYWRpZW50UmVuZGVyZXJDRzo6R3JhZGllbnRSZW5kZXJl
ckNHKENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBjb2xvckludGVycG9sYXRpb25NZXRob2QsIGNv
bnN0IEdyYWRpZW50Q29sb3JTdG9wVmVjdG9yJiBzdG9wcykKKyAgICA6IG1fc3RyYXRlZ3kgeyBw
aWNrU3RyYXRlZ3koY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBzdG9wcykgfQoreworfQorCisv
LyBNQVJLOiAtIFN0cmF0ZWd5IHNlbGVjdGlvbi4KKworR3JhZGllbnRSZW5kZXJlckNHOjpTdHJh
dGVneSBHcmFkaWVudFJlbmRlcmVyQ0c6OnBpY2tTdHJhdGVneShDb2xvckludGVycG9sYXRpb25N
ZXRob2QgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb25zdCBHcmFkaWVudENvbG9yU3RvcFZl
Y3RvciYgc3RvcHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oY29sb3JJbnRl
cnBvbGF0aW9uTWV0aG9kLmNvbG9yU3BhY2UsCisgICAgICAgIFsmXSAoY29uc3QgQ29sb3JJbnRl
cnBvbGF0aW9uTWV0aG9kOjpTUkdCJikgLT4gU3RyYXRlZ3kgeworICAgICAgICAgICAgc3dpdGNo
IChjb2xvckludGVycG9sYXRpb25NZXRob2QuYWxwaGFQcmVtdWx0aXBsaWNhdGlvbikgeworICAg
ICAgICAgICAgY2FzZSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQ6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VHcmFkaWVudChjb2xvckludGVycG9sYXRpb25NZXRo
b2QsIHN0b3BzKTsKKyAgICAgICAgICAgIGNhc2UgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJl
bXVsdGlwbGllZDoKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfUFJFTVVMVElQTElFRF9JTlRFUlBP
TEFUSU9OX0dSQURJRU5UKQorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlR3JhZGllbnQoY29s
b3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBzdG9wcyk7CisjZWxzZQorICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBVc2UgZ3JhZGllbnQgc3RyYXRlZ3kgaWYgbm9uZSBvZiB0aGUgc3RvcHMgaGF2ZSBh
bHBoYS4KKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVNoYWRpbmcoY29sb3JJbnRlcnBvbGF0
aW9uTWV0aG9kLCBzdG9wcyk7CisjZW5kaWYKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAg
ICAgICAgWyZdIChjb25zdCBhdXRvJikgLT4gU3RyYXRlZ3kgeworICAgICAgICAgICAgLy8gRklY
TUU6IEFkZCBzdXBwb3J0IGZvciB0aGUgb3RoZXIgaW50ZXJwb2xhdGlvbiBjb2xvciBzcGFjZXMu
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9Cisg
ICAgKTsKK30KKworLy8gTUFSSzogLSBHcmFkaWVudCBzdHJhdGVneS4KKworR3JhZGllbnRSZW5k
ZXJlckNHOjpTdHJhdGVneSBHcmFkaWVudFJlbmRlcmVyQ0c6Om1ha2VHcmFkaWVudChDb2xvcklu
dGVycG9sYXRpb25NZXRob2QgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb25zdCBHcmFkaWVu
dENvbG9yU3RvcFZlY3RvciYgc3RvcHMpIGNvbnN0Cit7CisgICAgQVNTRVJUX1VOVVNFRChjb2xv
ckludGVycG9sYXRpb25NZXRob2QsIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8Q29sb3JJbnRlcnBv
bGF0aW9uTWV0aG9kOjpTUkdCPihjb2xvckludGVycG9sYXRpb25NZXRob2QuY29sb3JTcGFjZSkp
OworI2lmICFIQVZFKENPUkVfR1JBUEhJQ1NfUFJFTVVMVElQTElFRF9JTlRFUlBPTEFUSU9OX0dS
QURJRU5UKQorICAgIEFTU0VSVF9VTlVTRUQoY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb2xv
ckludGVycG9sYXRpb25NZXRob2QuYWxwaGFQcmVtdWx0aXBsaWNhdGlvbiA9PSBBbHBoYVByZW11
bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQpOworI2VuZGlmCisKKyNpZiBIQVZFKENPUkVf
R1JBUEhJQ1NfR1JBRElFTlRfQ1JFQVRFX1dJVEhfT1BUSU9OUykKKyNpZiBIQVZFKENPUkVfR1JB
UEhJQ1NfUFJFTVVMVElQTElFRF9JTlRFUlBPTEFUSU9OX0dSQURJRU5UKQorICAgIGF1dG8gZ3Jh
ZGllbnRJbnRlcnBvbGF0ZXNQcmVtdWx0aXBsaWVkT3B0aW9uc0RpY3Rpb25hcnkgPSBbXSAoKSAt
PiBDRkRpY3Rpb25hcnlSZWYgeworICAgICAgICBzdGF0aWMgQ0ZUeXBlUmVmIGtleXNbXSA9IHsg
a0NHR3JhZGllbnRJbnRlcnBvbGF0ZXNQcmVtdWx0aXBsaWVkIH07CisgICAgICAgIHN0YXRpYyBD
RlR5cGVSZWYgdmFsdWVzW10gPSB7IGtDRkJvb2xlYW5UcnVlIH07CisgICAgICAgIHN0YXRpYyBD
RkRpY3Rpb25hcnlSZWYgb3B0aW9ucyA9IENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBrZXlzLCB2YWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgoa2V5cyksICZrQ0ZUeXBlRGlj
dGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwor
CisgICAgICAgIHJldHVybiBvcHRpb25zOworICAgIH07CisKKyAgIGF1dG8gZ3JhZGllbnRPcHRp
b25zRGljdGlvbmFyeSA9IFsmXSAoYXV0byBjb2xvckludGVycG9sYXRpb25NZXRob2QpIC0+IENG
RGljdGlvbmFyeVJlZiB7CisgICAgICAgIHN3aXRjaCAoY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9k
LmFscGhhUHJlbXVsdGlwbGljYXRpb24pIHsKKyAgICAgICAgY2FzZSBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpVbnByZW11bHRpcGxpZWQ6CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgY2FzZSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkOgorICAgICAg
ICAgICAgcmV0dXJuIGdyYWRpZW50SW50ZXJwb2xhdGVzUHJlbXVsdGlwbGllZE9wdGlvbnNEaWN0
aW9uYXJ5KCk7CisgICAgICAgIH0KKyAgIH07CisjZWxzZQorICAgYXV0byBncmFkaWVudE9wdGlv
bnNEaWN0aW9uYXJ5ID0gW10gKGF1dG8pIC0+IENGRGljdGlvbmFyeVJlZiB7CisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgfTsKKyNlbmRpZgorI2VuZGlmCisKKyAgICBhdXRvIGhhc09ubHlC
b3VuZGVkU1JHQkNvbG9yU3RvcHMgPSBbXSAoY29uc3QgYXV0byYgc3RvcHMpIHsKKyAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiBzdG9wIDogc3RvcHMpIHsKKyAgICAgICAgICAgIGlmIChzdG9wLmNv
bG9yLmNvbG9yU3BhY2UoKSAhPSBDb2xvclNwYWNlOjpTUkdCKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9OworCisg
ICAgYXV0byBudW1iZXJPZlN0b3BzID0gc3RvcHMuc2l6ZSgpOworCisgICAgc3RhdGljIGNvbnN0
ZXhwciBhdXRvIHJlc2VydmVkU3RvcHMgPSAzOworICAgIFZlY3RvcjxDR0Zsb2F0LCByZXNlcnZl
ZFN0b3BzPiBsb2NhdGlvbnM7CisgICAgbG9jYXRpb25zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
bnVtYmVyT2ZTdG9wcyk7CisKKyAgICBWZWN0b3I8Q0dGbG9hdCwgNCAqIHJlc2VydmVkU3RvcHM+
IGNvbG9yQ29tcG9uZW50czsKKyAgICBjb2xvckNvbXBvbmVudHMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShudW1iZXJPZlN0b3BzICogNCk7CisKKyAgICBhdXRvIGdyYWRpZW50Q29sb3JTcGFjZSA9
IHNSR0JDb2xvclNwYWNlUmVmKCk7CisKKyAgICAvLyBGSVhNRTogTm93IHRoYXQgd2Ugb25seSBl
dmVyIHVzZSBDR0dyYWRpZW50Q3JlYXRlV2l0aENvbG9yQ29tcG9uZW50cywgd2Ugc2hvdWxkIGlu
dmVzdGlnYXRlCisgICAgLy8gaWYgdGhlcmUgaXMgYW55IHJlYWwgYmVuZWZpdCB0byB1c2luZyBz
UkdCIHdoZW4gYWxsIHRoZSBzdG9wcyBhcmUgYm91bmRlZCB2cyBqdXN0IHVzaW5nCisgICAgLy8g
ZXh0ZW5kZWQgc1JHQiBmb3IgYWxsIGdyYWRpZW50cy4KKyAgICBpZiAoaGFzT25seUJvdW5kZWRT
UkdCQ29sb3JTdG9wcyhzdG9wcykpIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzdG9wIDog
c3RvcHMpIHsKKyAgICAgICAgICAgIGF1dG8gW2NvbG9yU3BhY2UsIGNvbXBvbmVudHNdID0gc3Rv
cC5jb2xvci5jb2xvclNwYWNlQW5kQ29tcG9uZW50cygpOworICAgICAgICAgICAgYXV0byBbciwg
ZywgYiwgYV0gPSBjb21wb25lbnRzOworICAgICAgICAgICAgY29sb3JDb21wb25lbnRzLnVuY2hl
Y2tlZEFwcGVuZChyKTsKKyAgICAgICAgICAgIGNvbG9yQ29tcG9uZW50cy51bmNoZWNrZWRBcHBl
bmQoZyk7CisgICAgICAgICAgICBjb2xvckNvbXBvbmVudHMudW5jaGVja2VkQXBwZW5kKGIpOwor
ICAgICAgICAgICAgY29sb3JDb21wb25lbnRzLnVuY2hlY2tlZEFwcGVuZChhKTsKKworICAgICAg
ICAgICAgbG9jYXRpb25zLnVuY2hlY2tlZEFwcGVuZChzdG9wLm9mZnNldCk7CisgICAgICAgIH0K
KyAgICB9IGVsc2UgeworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19FWFRFTkRFRF9TUkdCX0NPTE9S
X1NQQUNFKQorICAgICAgICBncmFkaWVudENvbG9yU3BhY2UgPSBleHRlbmRlZFNSR0JDb2xvclNw
YWNlUmVmKCk7CisjZW5kaWYKKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHN0b3AgOiBzdG9w
cykgeworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19FWFRFTkRFRF9TUkdCX0NPTE9SX1NQQUNFKQor
ICAgICAgICAgICAgYXV0byBbciwgZywgYiwgYV0gPSBzdG9wLmNvbG9yLnRvQ29sb3JUeXBlTG9z
c3k8RXh0ZW5kZWRTUkdCQTxmbG9hdD4+KCk7CisjZWxzZQorICAgICAgICAgICAgYXV0byBbciwg
ZywgYiwgYV0gPSBzdG9wLmNvbG9yLnRvQ29sb3JUeXBlTG9zc3k8U1JHQkE8ZmxvYXQ+PigpOwor
I2VuZGlmCisgICAgICAgICAgICBjb2xvckNvbXBvbmVudHMudW5jaGVja2VkQXBwZW5kKHIpOwor
ICAgICAgICAgICAgY29sb3JDb21wb25lbnRzLnVuY2hlY2tlZEFwcGVuZChnKTsKKyAgICAgICAg
ICAgIGNvbG9yQ29tcG9uZW50cy51bmNoZWNrZWRBcHBlbmQoYik7CisgICAgICAgICAgICBjb2xv
ckNvbXBvbmVudHMudW5jaGVja2VkQXBwZW5kKGEpOworCisgICAgICAgICAgICBsb2NhdGlvbnMu
dW5jaGVja2VkQXBwZW5kKHN0b3Aub2Zmc2V0KTsKKyAgICAgICAgfQorICAgIH0KKworI2lmIEhB
VkUoQ09SRV9HUkFQSElDU19HUkFESUVOVF9DUkVBVEVfV0lUSF9PUFRJT05TKQorICAgIHJldHVy
biBHcmFkaWVudCB7IGFkb3B0Q0YoQ0dHcmFkaWVudENyZWF0ZVdpdGhDb2xvckNvbXBvbmVudHNB
bmRPcHRpb25zKGdyYWRpZW50Q29sb3JTcGFjZSwgY29sb3JDb21wb25lbnRzLmRhdGEoKSwgbG9j
YXRpb25zLmRhdGEoKSwgbnVtYmVyT2ZTdG9wcywgZ3JhZGllbnRPcHRpb25zRGljdGlvbmFyeShj
b2xvckludGVycG9sYXRpb25NZXRob2QpKSkgfTsKKyNlbHNlCisgICAgcmV0dXJuIEdyYWRpZW50
IHsgYWRvcHRDRihDR0dyYWRpZW50Q3JlYXRlV2l0aENvbG9yQ29tcG9uZW50cyhncmFkaWVudENv
bG9yU3BhY2UsIGNvbG9yQ29tcG9uZW50cy5kYXRhKCksIGxvY2F0aW9ucy5kYXRhKCksIG51bWJl
ck9mU3RvcHMpKSB9OworI2VuZGlmCit9CisKKy8vIE1BUks6IC0gU2hhZGluZyBzdHJhdGVneS4K
KwordGVtcGxhdGU8dHlwZW5hbWUgSW50ZXJwb2xhdGlvblNwYWNlLCBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIGFscGhhUHJlbXVsdGlwbGljYXRpb24+Cit2b2lkIEdyYWRpZW50UmVuZGVyZXJDRzo6
U2hhZGluZzo6c2hhZGluZ0Z1bmN0aW9uKHZvaWQqIGluZm8sIGNvbnN0IENHRmxvYXQqIGluLCBD
R0Zsb2F0KiBvdXQpCit7CisgICAgdXNpbmcgSW50ZXJwb2xhdGlvblNwYWNlQ29sb3JUeXBlID0g
dHlwZW5hbWUgSW50ZXJwb2xhdGlvblNwYWNlOjpDb2xvclR5cGU7CisjaWYgSEFWRShDT1JFX0dS
QVBISUNTX0VYVEVOREVEX1NSR0JfQ09MT1JfU1BBQ0UpCisgICAgdXNpbmcgT3V0cHV0U3BhY2VD
b2xvclR5cGUgPSBFeHRlbmRlZFNSR0JBPGZsb2F0PjsKKyNlbHNlCisgICAgdXNpbmcgT3V0cHV0
U3BhY2VDb2xvclR5cGUgPSBTUkdCQTxmbG9hdD47CisjZW5kaWYKKworICAgIGF1dG8qIGRhdGEg
PSBzdGF0aWNfY2FzdDxHcmFkaWVudFJlbmRlcmVyQ0c6OlNoYWRpbmc6OkRhdGEqPihpbmZvKTsK
KworICAgIC8vIENvbXB1dGUgY29sb3IgYXQgb2Zmc2V0ICdpblswXScgYW5kIGFzc2lnbiB0aGUg
Y29tcG9uZW50cyB0byBvdXRbMCAtPiAzXS4KKworICAgIGZsb2F0IHJlcXVlc3RlZE9mZnNldCA9
IGluWzBdOworCisgICAgLy8gMS4gRmluZCBzdG9wcyB0aGF0IGJvdW5kIHRoZSByZXF1ZXN0ZWQg
b2Zmc2V0LgorICAgIGF1dG8gW3N0b3AwLCBzdG9wMV0gPSBbJl0geworICAgICAgICBmb3IgKHNp
emVfdCBzdG9wID0gMTsgc3RvcCA8IGRhdGEtPnN0b3BzKCkuc2l6ZSgpOyArK3N0b3ApIHsKKyAg
ICAgICAgICAgIGlmIChyZXF1ZXN0ZWRPZmZzZXQgPD0gZGF0YS0+c3RvcHMoKVtzdG9wXS5vZmZz
ZXQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6dGllKGRhdGEtPnN0b3BzKClbc3RvcCAt
IDFdLCBkYXRhLT5zdG9wcygpW3N0b3BdKTsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0oKTsKKworICAgIC8vIDIuIENvbXB1dGUgcGVyY2Vu
dGFnZSBvZmZzZXQgYmV0d2VlbiB0aGUgdHdvIHN0b3BzLgorICAgIGZsb2F0IG9mZnNldCA9IChz
dG9wMS5vZmZzZXQgPT0gc3RvcDAub2Zmc2V0KSA/IDAuMGYgOiAocmVxdWVzdGVkT2Zmc2V0IC0g
c3RvcDAub2Zmc2V0KSAvIChzdG9wMS5vZmZzZXQgLSBzdG9wMC5vZmZzZXQpOworCisgICAgLy8g
My4gSW50ZXJwb2xhdGUgdGhlIHR3byBzdG9wcycgY29sb3JzIGJ5IHRoZSBjb21wdXRlZCBvZmZz
ZXQuCisgICAgLy8gRklYTUU6IFdlIGRvbid0IHdhbnQgdG8gZHVlIGh1ZSBmaXh1cCBmb3IgZWFj
aCBjYWxsLCBzbyB3ZSBzaG91bGQgZmlndXJlIG91dCBob3cgdG8gcHJlY29tcHV0ZSB0aGF0Lgor
ICAgIGF1dG8gaW50ZXJwb2xhdGVkQ29sb3IgPSBpbnRlcnBvbGF0ZUNvbG9yQ29tcG9uZW50czxh
bHBoYVByZW11bHRpcGxpY2F0aW9uPigKKyAgICAgICAgc3RkOjpnZXQ8SW50ZXJwb2xhdGlvblNw
YWNlPihkYXRhLT5jb2xvckludGVycG9sYXRpb25NZXRob2QoKS5jb2xvclNwYWNlKSwKKyAgICAg
ICAgbWFrZUZyb21Db21wb25lbnRzPEludGVycG9sYXRpb25TcGFjZUNvbG9yVHlwZT4oc3RvcDAu
Y29sb3JDb21wb25lbnRzKSwgMS4wZiAtIG9mZnNldCwKKyAgICAgICAgbWFrZUZyb21Db21wb25l
bnRzPEludGVycG9sYXRpb25TcGFjZUNvbG9yVHlwZT4oc3RvcDEuY29sb3JDb21wb25lbnRzKSwg
b2Zmc2V0KTsKKworICAgIC8vIDQuIENvbnZlcnQgdG8gdGhlIG91dHB1dCBjb2xvciBzcGFjZS4K
KyAgICBhdXRvIGludGVycG9sYXRlZENvbG9yQ29udmVydGVkVG9PdXRwdXRTcGFjZSA9IGFzQ29s
b3JDb21wb25lbnRzKGNvbnZlcnRDb2xvcjxPdXRwdXRTcGFjZUNvbG9yVHlwZT4oaW50ZXJwb2xh
dGVkQ29sb3IpKTsKKworICAgIC8vIDUuIFdyaXRlIGNvbG9yIGNvbXBvbmVudHMgdG8gJ291dCcg
cG9pbnRlci4KKyAgICBmb3IgKHNpemVfdCBjb21wb25lbnRJbmRleCA9IDA7IGNvbXBvbmVudElu
ZGV4IDwgaW50ZXJwb2xhdGVkQ29sb3JDb252ZXJ0ZWRUb091dHB1dFNwYWNlLnNpemUoKTsgKytj
b21wb25lbnRJbmRleCkKKyAgICAgICAgb3V0W2NvbXBvbmVudEluZGV4XSA9IGludGVycG9sYXRl
ZENvbG9yQ29udmVydGVkVG9PdXRwdXRTcGFjZVtjb21wb25lbnRJbmRleF07Cit9CisKK0dyYWRp
ZW50UmVuZGVyZXJDRzo6U3RyYXRlZ3kgR3JhZGllbnRSZW5kZXJlckNHOjptYWtlU2hhZGluZyhD
b2xvckludGVycG9sYXRpb25NZXRob2QgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb25zdCBH
cmFkaWVudENvbG9yU3RvcFZlY3RvciYgc3RvcHMpIGNvbnN0Cit7CisgICAgYXV0byBtYWtlRGF0
YSA9IFsmXSAoYXV0byBjb2xvckludGVycG9sYXRpb25NZXRob2QsIGF1dG8mIHN0b3BzKSB7Cisg
ICAgICAgIGF1dG8gY29udmVydENvbG9yVG9Db2xvckludGVycG9sYXRpb25TcGFjZSA9IFsmXSAo
Y29uc3QgQ29sb3ImIGNvbG9yLCBhdXRvIGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCkgLT4gQ29s
b3JDb21wb25lbnRzPGZsb2F0LCA0PiB7CisgICAgICAgICAgICByZXR1cm4gV1RGOjpzd2l0Y2hP
bihjb2xvckludGVycG9sYXRpb25NZXRob2QuY29sb3JTcGFjZSwKKyAgICAgICAgICAgICAgICBb
Jl0gKGF1dG8mIGNvbG9yU3BhY2UpIC0+IENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4geworICAg
ICAgICAgICAgICAgICAgICB1c2luZyBDb2xvclR5cGUgPSB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9y
ZWZlcmVuY2VfdDxkZWNsdHlwZShjb2xvclNwYWNlKT46OkNvbG9yVHlwZTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGFzQ29sb3JDb21wb25lbnRzKGNvbG9yLnRlbXBsYXRlIHRvQ29sb3JU
eXBlTG9zc3k8Q29sb3JUeXBlPigpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAp
OworICAgICAgICB9OworCisgICAgICAgIGF1dG8gdG90YWxOdW1iZXJPZlN0b3BzID0gc3RvcHMu
c2l6ZSgpOworICAgICAgICBib29sIGhhc1plcm8gPSBmYWxzZTsKKyAgICAgICAgYm9vbCBoYXNP
bmUgPSBmYWxzZTsKKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHN0b3AgOiBzdG9wcykgewor
ICAgICAgICAgICAgYXV0byBvZmZzZXQgPSBzdG9wLm9mZnNldDsKKyAgICAgICAgICAgIEFTU0VS
VChvZmZzZXQgPj0gMCk7CisgICAgICAgICAgICBBU1NFUlQob2Zmc2V0IDw9IDEpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBpZiAob2Zmc2V0ID09IDApCisgICAgICAgICAgICAgICAgaGFz
WmVybyA9IHRydWU7CisgICAgICAgICAgICBlbHNlIGlmIChvZmZzZXQgPT0gMSkKKyAgICAgICAg
ICAgICAgICBoYXNPbmUgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFoYXNaZXJv
KQorICAgICAgICAgICAgdG90YWxOdW1iZXJPZlN0b3BzKys7CisgICAgICAgIGlmICghaGFzT25l
KQorICAgICAgICAgICAgdG90YWxOdW1iZXJPZlN0b3BzKys7CisKKyAgICAgICAgVmVjdG9yPENv
bG9yQ29udmVydGVkVG9JbnRlcnBvbGF0aW9uQ29sb3JTcGFjZVN0b3A+IGNvbnZlcnRlZFN0b3Bz
OworICAgICAgICBjb252ZXJ0ZWRTdG9wcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHRvdGFsTnVt
YmVyT2ZTdG9wcyk7CisKKyAgICAgICAgaWYgKCFoYXNaZXJvKQorICAgICAgICAgICAgY29udmVy
dGVkU3RvcHMudW5jaGVja2VkQXBwZW5kKHsgMC4wZiwgeyAwLjBmLCAwLjBmLCAwLjBmLCAwLjBm
IH0gfSk7CisKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzdG9wIDogc3RvcHMpCisgICAgICAg
ICAgICBjb252ZXJ0ZWRTdG9wcy51bmNoZWNrZWRBcHBlbmQoeyBzdG9wLm9mZnNldCwgY29udmVy
dENvbG9yVG9Db2xvckludGVycG9sYXRpb25TcGFjZShzdG9wLmNvbG9yLCBjb2xvckludGVycG9s
YXRpb25NZXRob2QpIH0pOworCisgICAgICAgIGlmICghaGFzT25lKQorICAgICAgICAgICAgY29u
dmVydGVkU3RvcHMudW5jaGVja2VkQXBwZW5kKHsgMS4wZiwgY29udmVydGVkU3RvcHMubGFzdCgp
LmNvbG9yQ29tcG9uZW50cyB9KTsKKworICAgICAgICBpZiAoIWhhc1plcm8pCisgICAgICAgICAg
ICBjb252ZXJ0ZWRTdG9wc1swXS5jb2xvckNvbXBvbmVudHMgPSBjb252ZXJ0ZWRTdG9wc1sxXS5j
b2xvckNvbXBvbmVudHM7CisKKyAgICAgICAgcmV0dXJuIFNoYWRpbmc6OkRhdGE6OmNyZWF0ZShj
b2xvckludGVycG9sYXRpb25NZXRob2QsIFdURk1vdmUoY29udmVydGVkU3RvcHMpKTsKKyAgICB9
OworCisgICAgYXV0byBtYWtlRnVuY3Rpb24gPSBbJl0gKGF1dG8gY29sb3JJbnRlcnBvbGF0aW9u
TWV0aG9kLCBhdXRvJiBkYXRhKSB7CisgICAgICAgIGF1dG8gbWFrZUV2YWx1YXRlQ2FsbGJhY2sg
PSBbJl0gKGF1dG8gY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kKSAtPiBDR0Z1bmN0aW9uRXZhbHVh
dGVDYWxsYmFjayB7CisgICAgICAgICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihjb2xvckludGVy
cG9sYXRpb25NZXRob2QuY29sb3JTcGFjZSwKKyAgICAgICAgICAgICAgICBbJl0gKGF1dG8mIGNv
bG9yU3BhY2UpIC0+IENHRnVuY3Rpb25FdmFsdWF0ZUNhbGxiYWNrIHsKKyAgICAgICAgICAgICAg
ICAgICAgdXNpbmcgSW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2UgPSB0eXBlbmFtZSBzdGQ6
OnJlbW92ZV9yZWZlcmVuY2VfdDxkZWNsdHlwZShjb2xvclNwYWNlKT47CisgICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbG9ySW50ZXJwb2xhdGlvbk1l
dGhvZC5hbHBoYVByZW11bHRpcGxpY2F0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2Ug
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkOgorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuICZTaGFkaW5nOjpzaGFkaW5nRnVuY3Rpb248SW50ZXJwb2xhdGlvbk1l
dGhvZENvbG9yU3BhY2UsIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZD47
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVs
dGlwbGllZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAmU2hhZGluZzo6c2hhZGlu
Z0Z1bmN0aW9uPEludGVycG9sYXRpb25NZXRob2RDb2xvclNwYWNlLCBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpQcmVtdWx0aXBsaWVkPjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICk7CisgICAgICAgIH07CisKKyAgICAgICAgY29uc3QgQ0dG
dW5jdGlvbkNhbGxiYWNrcyBjYWxsYmFja3MgPSB7CisgICAgICAgICAgICAwLAorICAgICAgICAg
ICAgbWFrZUV2YWx1YXRlQ2FsbGJhY2soY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kKSwKKyAgICAg
ICAgICAgIFtdICh2b2lkKiBpbmZvKSB7CisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R3Jh
ZGllbnRSZW5kZXJlckNHOjpTaGFkaW5nOjpEYXRhKj4oaW5mbyktPmRlcmVmKCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgc3RhdGljIGNvbnN0IENHRmxvYXQgZG9tYWlu
WzJdID0geyAwLCAxIH07CisjaWYgSEFWRShDT1JFX0dSQVBISUNTX0VYVEVOREVEX1NSR0JfQ09M
T1JfU1BBQ0UpCisgICAgICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHJhbmdlWzhdID0geyAtc3Rk
OjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8
ZmxvYXQ+OjppbmZpbml0eSgpLCAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5
KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCAtc3RkOjpudW1lcmlj
X2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+Ojpp
bmZpbml0eSgpLCAwLCAxIH07CisjZWxzZQorICAgICAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBy
YW5nZVs4XSA9IHsgMCwgMSwgMCwgMSwgMCwgMSwgMCwgMSB9OworI2VuZGlmCisKKyAgICAgICAg
UmVmIGRhdGFSZWZDb3B5ID0gZGF0YTsKKyAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dGdW5jdGlv
bkNyZWF0ZSgmZGF0YVJlZkNvcHkubGVha1JlZigpLCAxLCBkb21haW4sIDQsIHJhbmdlLCAmY2Fs
bGJhY2tzKSk7CisgICAgfTsKKworICAgIGF1dG8gZGF0YSA9IG1ha2VEYXRhKGNvbG9ySW50ZXJw
b2xhdGlvbk1ldGhvZCwgc3RvcHMpOworICAgIGF1dG8gZnVuY3Rpb24gPSBtYWtlRnVuY3Rpb24o
Y29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBkYXRhKTsKKworICAgIC8vIEZJWE1FOiBJbnZlc3Rp
Z2F0ZSB1c2luZyBib3VuZGVkIHNSR0Igd2hlbiB0aGUgaW5wdXQgc3RvcHMgYXJlIGFsbCBib3Vu
ZGVkIHNSR0IuCisjaWYgSEFWRShDT1JFX0dSQVBISUNTX0VYVEVOREVEX1NSR0JfQ09MT1JfU1BB
Q0UpCisgICAgYXV0byBjb2xvclNwYWNlID0gZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpOwor
I2Vsc2UKKyAgICBhdXRvIGNvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOworI2VuZGlm
CisKKyAgICByZXR1cm4gU2hhZGluZyB7IFdURk1vdmUoZGF0YSksIFdURk1vdmUoZnVuY3Rpb24p
LCBjb2xvclNwYWNlIH07Cit9CisKKy8vIE1BUks6IC0gRHJhd2luZyBmdW5jdGlvbnMuCisKK3Zv
aWQgR3JhZGllbnRSZW5kZXJlckNHOjpkcmF3TGluZWFyR3JhZGllbnQoQ0dDb250ZXh0UmVmIHBs
YXRmb3JtQ29udGV4dCwgQ0dQb2ludCBzdGFydFBvaW50LCBDR1BvaW50IGVuZFBvaW50LCBDR0dy
YWRpZW50RHJhd2luZ09wdGlvbnMgb3B0aW9ucykKK3sKKyAgICBXVEY6OnN3aXRjaE9uKG1fc3Ry
YXRlZ3ksCisgICAgICAgIFsmXSAoR3JhZGllbnQmIGdyYWRpZW50KSB7CisgICAgICAgICAgICBD
R0NvbnRleHREcmF3TGluZWFyR3JhZGllbnQocGxhdGZvcm1Db250ZXh0LCBncmFkaWVudC5ncmFk
aWVudC5nZXQoKSwgc3RhcnRQb2ludCwgZW5kUG9pbnQsIG9wdGlvbnMpOworICAgICAgICB9LAor
ICAgICAgICBbJl0gKFNoYWRpbmcmIHNoYWRpbmcpIHsKKyAgICAgICAgICAgIGJvb2wgc3RhcnRF
eHRlbmQgPSAob3B0aW9ucyAmIGtDR0dyYWRpZW50RHJhd3NCZWZvcmVTdGFydExvY2F0aW9uKSAh
PSAwOworICAgICAgICAgICAgYm9vbCBlbmRFeHRlbmQgPSAob3B0aW9ucyAmIGtDR0dyYWRpZW50
RHJhd3NBZnRlckVuZExvY2F0aW9uKSAhPSAwOworCisgICAgICAgICAgICBDR0NvbnRleHREcmF3
U2hhZGluZyhwbGF0Zm9ybUNvbnRleHQsIGFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoc2hh
ZGluZy5jb2xvclNwYWNlLmdldCgpLCBzdGFydFBvaW50LCBlbmRQb2ludCwgc2hhZGluZy5mdW5j
dGlvbi5nZXQoKSwgc3RhcnRFeHRlbmQsIGVuZEV4dGVuZCkpLmdldCgpKTsKKyAgICAgICAgfQor
ICAgICk7Cit9CisKK3ZvaWQgR3JhZGllbnRSZW5kZXJlckNHOjpkcmF3UmFkaWFsR3JhZGllbnQo
Q0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dCwgQ0dQb2ludCBzdGFydENlbnRlciwgQ0dGbG9h
dCBzdGFydFJhZGl1cywgQ0dQb2ludCBlbmRDZW50ZXIsIENHRmxvYXQgZW5kUmFkaXVzLCBDR0dy
YWRpZW50RHJhd2luZ09wdGlvbnMgb3B0aW9ucykKK3sKKyAgICBXVEY6OnN3aXRjaE9uKG1fc3Ry
YXRlZ3ksCisgICAgICAgIFsmXSAoR3JhZGllbnQmIGdyYWRpZW50KSB7CisgICAgICAgICAgICBD
R0NvbnRleHREcmF3UmFkaWFsR3JhZGllbnQocGxhdGZvcm1Db250ZXh0LCBncmFkaWVudC5ncmFk
aWVudC5nZXQoKSwgc3RhcnRDZW50ZXIsIHN0YXJ0UmFkaXVzLCBlbmRDZW50ZXIsIGVuZFJhZGl1
cywgb3B0aW9ucyk7CisgICAgICAgIH0sCisgICAgICAgIFsmXSAoU2hhZGluZyYgc2hhZGluZykg
eworICAgICAgICAgICAgYm9vbCBzdGFydEV4dGVuZCA9IChvcHRpb25zICYga0NHR3JhZGllbnRE
cmF3c0JlZm9yZVN0YXJ0TG9jYXRpb24pICE9IDA7CisgICAgICAgICAgICBib29sIGVuZEV4dGVu
ZCA9IChvcHRpb25zICYga0NHR3JhZGllbnREcmF3c0FmdGVyRW5kTG9jYXRpb24pICE9IDA7CisK
KyAgICAgICAgICAgIENHQ29udGV4dERyYXdTaGFkaW5nKHBsYXRmb3JtQ29udGV4dCwgYWRvcHRD
RihDR1NoYWRpbmdDcmVhdGVSYWRpYWwoc2hhZGluZy5jb2xvclNwYWNlLmdldCgpLCBzdGFydENl
bnRlciwgc3RhcnRSYWRpdXMsIGVuZENlbnRlciwgZW5kUmFkaXVzLCBzaGFkaW5nLmZ1bmN0aW9u
LmdldCgpLCBzdGFydEV4dGVuZCwgZW5kRXh0ZW5kKSkuZ2V0KCkpOworICAgICAgICB9CisgICAg
KTsKK30KKwordm9pZCBHcmFkaWVudFJlbmRlcmVyQ0c6OmRyYXdDb25pY0dyYWRpZW50KENHQ29u
dGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQsIENHUG9pbnQgY2VudGVyLCBDR0Zsb2F0IGFuZ2xlKQor
eworLy8gRklYTUU6IFNlZW1zIGxpa2UgdGhpcyBzaG91bGQgYmUgSEFWRShDR19DT05URVhUX0RS
QVdfQ09OSUNfR1JBRElFTlQpLgorLy8gRklYTUU6IENhbiB3ZSBjaGFuZ2UgdHZPUyB0byBiZSBs
aWtlIHRoZSBvdGhlciBDb2NvYSBwbGF0Zm9ybXM/CisjaWYgUExBVEZPUk0oQ09DT0EpICYmICFQ
TEFURk9STShBUFBMRVRWKQorICAgIFdURjo6c3dpdGNoT24obV9zdHJhdGVneSwKKyAgICAgICAg
WyZdIChHcmFkaWVudCYgZ3JhZGllbnQpIHsKKyAgICAgICAgICAgIENHQ29udGV4dERyYXdDb25p
Y0dyYWRpZW50KHBsYXRmb3JtQ29udGV4dCwgZ3JhZGllbnQuZ3JhZGllbnQuZ2V0KCksIGNlbnRl
ciwgYW5nbGUpOworICAgICAgICB9LAorICAgICAgICBbJl0gKFNoYWRpbmcmIHNoYWRpbmcpIHsK
KyAgICAgICAgICAgIENHQ29udGV4dERyYXdTaGFkaW5nKHBsYXRmb3JtQ29udGV4dCwgYWRvcHRD
RihDR1NoYWRpbmdDcmVhdGVDb25pYyhzaGFkaW5nLmNvbG9yU3BhY2UuZ2V0KCksIGNlbnRlciwg
YW5nbGUsIHNoYWRpbmcuZnVuY3Rpb24uZ2V0KCkpKS5nZXQoKSk7CisgICAgICAgIH0KKyAgICAp
OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocGxhdGZvcm1Db250ZXh0KTsKKyAgICBVTlVTRURf
UEFSQU0oY2VudGVyKTsKKyAgICBVTlVTRURfUEFSQU0oYW5nbGUpOworI2VuZGlmCit9CisKK30K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50UmVuZGVy
ZXJDRy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYWRpZW50UmVuZGVyZXJDRy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50UmVuZGVyZXJDRy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29sb3JDb21w
b25lbnRzLmgiCisjaW5jbHVkZSAiQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLmgiCisjaW5jbHVk
ZSAiR3JhZGllbnRDb2xvclN0b3AuaCIKKyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBo
aWNzLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRT
YWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitzdHJ1Y3QgQ29sb3JDb252ZXJ0ZWRUb0ludGVycG9sYXRpb25Db2xvclNwYWNl
U3RvcCB7CisgICAgZmxvYXQgb2Zmc2V0OworICAgIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4g
Y29sb3JDb21wb25lbnRzOworfTsKKworY2xhc3MgR3JhZGllbnRSZW5kZXJlckNHIHsKK3B1Ymxp
YzoKKyAgICBHcmFkaWVudFJlbmRlcmVyQ0coQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb25z
dCBHcmFkaWVudENvbG9yU3RvcFZlY3RvciYpOworCisgICAgdm9pZCBkcmF3TGluZWFyR3JhZGll
bnQoQ0dDb250ZXh0UmVmLCBDR1BvaW50IHN0YXJ0UG9pbnQsIENHUG9pbnQgZW5kUG9pbnQsIENH
R3JhZGllbnREcmF3aW5nT3B0aW9ucyk7CisgICAgdm9pZCBkcmF3UmFkaWFsR3JhZGllbnQoQ0dD
b250ZXh0UmVmLCBDR1BvaW50IHN0YXJ0Q2VudGVyLCBDR0Zsb2F0IHN0YXJ0UmFkaXVzLCBDR1Bv
aW50IGVuZENlbnRlciwgQ0dGbG9hdCBlbmRSYWRpdXMsIENHR3JhZGllbnREcmF3aW5nT3B0aW9u
cyk7CisgICAgdm9pZCBkcmF3Q29uaWNHcmFkaWVudChDR0NvbnRleHRSZWYsIENHUG9pbnQgY2Vu
dGVyLCBDR0Zsb2F0IGFuZ2xlKTsKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgR3JhZGllbnQgewor
ICAgICAgICBSZXRhaW5QdHI8Q0dHcmFkaWVudFJlZj4gZ3JhZGllbnQ7CisgICAgfTsKKworICAg
IHN0cnVjdCBTaGFkaW5nIHsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50ZXJwb2xhdGlv
blNwYWNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uPiBzdGF0aWMgdm9pZCBzaGFkaW5nRnVuY3Rp
b24odm9pZCosIGNvbnN0IENHRmxvYXQqLCBDR0Zsb2F0Kik7CisKKyAgICAgICAgY2xhc3MgRGF0
YSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhPiB7CisgICAgICAgIHB1YmxpYzoK
KyAgICAgICAgICAgIHN0YXRpYyBSZWY8RGF0YT4gY3JlYXRlKENvbG9ySW50ZXJwb2xhdGlvbk1l
dGhvZCBjb2xvckludGVycG9sYXRpb25NZXRob2QsIFZlY3RvcjxDb2xvckNvbnZlcnRlZFRvSW50
ZXJwb2xhdGlvbkNvbG9yU3BhY2VTdG9wPiBzdG9wcykKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhv
ZCwgV1RGTW92ZShzdG9wcykpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgQ29sb3JJ
bnRlcnBvbGF0aW9uTWV0aG9kIGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCgpIGNvbnN0IHsgcmV0
dXJuIG1fY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOyB9CisgICAgICAgICAgICBjb25zdCBWZWN0
b3I8Q29sb3JDb252ZXJ0ZWRUb0ludGVycG9sYXRpb25Db2xvclNwYWNlU3RvcD4mIHN0b3BzKCkg
Y29uc3QgeyByZXR1cm4gbV9zdG9wczsgfQorCisgICAgICAgIHByaXZhdGU6CisgICAgICAgICAg
ICBEYXRhKENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBjb2xvckludGVycG9sYXRpb25NZXRob2Qs
IFZlY3RvcjxDb2xvckNvbnZlcnRlZFRvSW50ZXJwb2xhdGlvbkNvbG9yU3BhY2VTdG9wPiBzdG9w
cykKKyAgICAgICAgICAgICAgICA6IG1fY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIHsgY29sb3JJ
bnRlcnBvbGF0aW9uTWV0aG9kIH0KKyAgICAgICAgICAgICAgICAsIG1fc3RvcHMgeyBXVEZNb3Zl
KHN0b3BzKSB9CisgICAgICAgICAgICB7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIENv
bG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBtX2NvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDsKKyAgICAg
ICAgICAgIFZlY3RvcjxDb2xvckNvbnZlcnRlZFRvSW50ZXJwb2xhdGlvbkNvbG9yU3BhY2VTdG9w
PiBtX3N0b3BzOworICAgICAgICB9OworCisgICAgICAgIFJlZjxEYXRhPiBkYXRhOworICAgICAg
ICBSZXRhaW5QdHI8Q0dGdW5jdGlvblJlZj4gZnVuY3Rpb247CisgICAgICAgIFJldGFpblB0cjxD
R0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2U7CisgICAgfTsKKworICAgIHVzaW5nIFN0cmF0ZWd5
ID0gc3RkOjp2YXJpYW50PEdyYWRpZW50LCBTaGFkaW5nPjsKKworICAgIFN0cmF0ZWd5IHBpY2tT
dHJhdGVneShDb2xvckludGVycG9sYXRpb25NZXRob2QsIGNvbnN0IEdyYWRpZW50Q29sb3JTdG9w
VmVjdG9yJikgY29uc3Q7CisgICAgU3RyYXRlZ3kgbWFrZUdyYWRpZW50KENvbG9ySW50ZXJwb2xh
dGlvbk1ldGhvZCwgY29uc3QgR3JhZGllbnRDb2xvclN0b3BWZWN0b3ImKSBjb25zdDsKKyAgICBT
dHJhdGVneSBtYWtlU2hhZGluZyhDb2xvckludGVycG9sYXRpb25NZXRob2QsIGNvbnN0IEdyYWRp
ZW50Q29sb3JTdG9wVmVjdG9yJikgY29uc3Q7CisKKyAgICBTdHJhdGVneSBtX3N0cmF0ZWd5Owor
fTsKKworfQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMjg3Mjg4
KQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMjEtMTItMjAgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBwcmVtdWx0aXBsaWVkIGFscGhhIGludGVycG9s
YXRlZCBncmFkaWVudHMgYW5kIGRlZmF1bHRlZCBvZmYgb3B0aW9uIHRvIHVzZSB0aGVtIGZvciBD
U1MgR3JhZGllbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzQ0OTIKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAg
ICAgQWRkIHN1cHBvcnQgZm9yIHRlc3RzIGVuYWJsaW5nIHRoZSBDU1NHcmFkaWVudFByZW11bHRp
cGxpZWRBbHBoYUludGVycG9sYXRpb25FbmFibGVkIHByZWZlcmVuY2UuCisKKyAgICAgICAgKiBX
ZWJQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6Y3NzR3JhZGllbnRQ
cmVtdWx0aXBsaWVkQWxwaGFJbnRlcnBvbGF0aW9uRW5hYmxlZCk6CisgICAgICAgICogV2ViUHJl
ZmVyZW5jZXMuaDoKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6Om5v
dGlmeVByZWZlcmVuY2VzQ2hhbmdlZCk6CisKIDIwMjEtMTItMjAgIEZ1amlpIEhpcm9ub3JpICA8
SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbl0gTVNWQyByZXBvcnRzICJD
T01Qcm9wZXJ0eUJhZy5oKDIzMyk6IGVycm9yIEMyMzg1OiBhbWJpZ3VvdXMgYWNjZXNzIG9mICdJ
VW5rbm93biciIHdpdGggL3N0ZDpjKysyMApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViUHJlZmVyZW5jZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlByZWZlcmVuY2VzLmNwcAkocmV2aXNpb24gMjg3MjMzKQorKysgU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjM3LDYgKzI2
MzcsMTEgQEAgYm9vbCBXZWJQcmVmZXJlbmNlczo6Y2FudmFzQ29sb3JTcGFjZUVuYWJsZWQoKQog
ICAgIHJldHVybiBib29sVmFsdWVGb3JLZXkoIldlYktpdENhbnZhc0NvbG9yU3BhY2VFbmFibGVk
Iik7CiB9CiAKK2Jvb2wgV2ViUHJlZmVyZW5jZXM6OmNzc0dyYWRpZW50UHJlbXVsdGlwbGllZEFs
cGhhSW50ZXJwb2xhdGlvbkVuYWJsZWQoKQoreworICAgIHJldHVybiBib29sVmFsdWVGb3JLZXko
IldlYktpdENTU0dyYWRpZW50UHJlbXVsdGlwbGllZEFscGhhSW50ZXJwb2xhdGlvbkVuYWJsZWQi
KTsKK30KKwogYm9vbCBXZWJQcmVmZXJlbmNlczo6bW9ja1Njcm9sbGJhcnNDb250cm9sbGVyRW5h
YmxlZCgpCiB7CiAgICAgcmV0dXJuIGJvb2xWYWx1ZUZvcktleSgiV2ViS2l0TW9ja1Njcm9sbGJh
cnNDb250cm9sbGVyRW5hYmxlZCIpOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
UHJlZmVyZW5jZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQ
cmVmZXJlbmNlcy5oCShyZXZpc2lvbiAyODcyMzMpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJQcmVmZXJlbmNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNDYsNiArMzQ2LDcgQEAgY2xh
c3MgV2ViUHJlZmVyZW5jZXMgZmluYWwgOiBwdWJsaWMgSVdlYlByZWZlcmVuY2VzLCBwCiAgICAg
Ly8gVGhlIGZvbGxvd2luZyBwcmVmZXJlbmNlIGFjY2Vzc29ycyBhcmUgbm90IGV4cG9zZWQgdmlh
IElXZWJQcmVmZXJlbmNlcyogYXMgdGhleSBhcmUgb25seQogICAgIC8vIG5lZWRlZCBmb3IgdGVz
dGluZyBwdXJwb3NlcyBhbmQgY2FuIGJlIHRvZ2dsZWQgdmlhIHRoZSBzZXQqUHJlZmVyZW5jZUZv
clRlc3RpbmcgZnVuY3Rpb25zLgogICAgIGJvb2wgY2FudmFzQ29sb3JTcGFjZUVuYWJsZWQoKTsK
KyAgICBib29sIGNzc0dyYWRpZW50UHJlbXVsdGlwbGllZEFscGhhSW50ZXJwb2xhdGlvbkVuYWJs
ZWQoKTsKICAgICBib29sIG1vY2tTY3JvbGxiYXJzQ29udHJvbGxlckVuYWJsZWQoKTsKIAogcHJp
dmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAyODcy
MzMpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTYwMCw2ICs1NjAwLDcgQEAgSFJFU1VMVCBXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNl
c0NoYW5nZWQoSVdlYk5vdGlmaWNhCiAgICAgc2V0dGluZ3Muc2V0T3ZlcnNjcm9sbEJlaGF2aW9y
RW5hYmxlZCghIWVuYWJsZWQpOwogCiAgICAgc2V0dGluZ3Muc2V0Q2FudmFzQ29sb3JTcGFjZUVu
YWJsZWQobV9wcmVmZXJlbmNlcy0+Y2FudmFzQ29sb3JTcGFjZUVuYWJsZWQoKSk7CisgICAgc2V0
dGluZ3Muc2V0Q1NTR3JhZGllbnRQcmVtdWx0aXBsaWVkQWxwaGFJbnRlcnBvbGF0aW9uRW5hYmxl
ZChtX3ByZWZlcmVuY2VzLT5jc3NHcmFkaWVudFByZW11bHRpcGxpZWRBbHBoYUludGVycG9sYXRp
b25FbmFibGVkKCkpOwogICAgIHNldHRpbmdzLnNldE1vY2tTY3JvbGxiYXJzQ29udHJvbGxlckVu
YWJsZWQobV9wcmVmZXJlbmNlcy0+bW9ja1Njcm9sbGJhcnNDb250cm9sbGVyRW5hYmxlZCgpKTsK
IAogICAgIHJldHVybiBTX09LOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjg3Mjg4KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMTItMjAgIFNhbSBXZWluaWcgIDx3
ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBwcmVtdWx0aXBsaWVk
IGFscGhhIGludGVycG9sYXRlZCBncmFkaWVudHMgYW5kIGRlZmF1bHRlZCBvZmYgb3B0aW9uIHRv
IHVzZSB0aGVtIGZvciBDU1MgR3JhZGllbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ0OTIKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBG
cmFzZXIuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5jcHA6CisgICAg
ICAgIChXVFI6OlRlc3RPcHRpb25zOjpkZWZhdWx0cyk6CisgICAgICAgIEFkZCBkZWZhdWx0IGZv
ciBXaW5kb3dzIFdlYktpdExlZ2FjeSB0ZXN0aW5nIHdoaWNoIHN0aWxsIHJlcXVpcmVzIGl0Lgor
CiAyMDIxLTEyLTIwICBKIFBhc2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KIAogICAgICAgICBb
V2ViQXV0aG5dIEFkZCBvcHRpb24gdG8gY2hhbmdlIHJlcXVlc3RXZWJBdXRoZW50aWNhdGlvbk5v
R2VzdHVyZSBkZWxlZ2F0ZSBmb3IgYXBpIHRlc3RzLgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvVGVzdE9wdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rl
c3RPcHRpb25zLmNwcAkocmV2aXNpb24gMjg3MjMzKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUv
VGVzdE9wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsNiArMTM1LDcgQEAgY29uc3Qg
VGVzdEZlYXR1cmVzJiBUZXN0T3B0aW9uczo6ZGVmYXVsdHMoKQogICAgICAgICAgICAgeyAiQ1NT
Q29udGFpbm1lbnRFbmFibGVkIiwgZmFsc2UgfSwKICAgICAgICAgICAgIHsgIkNTU0NvdW50ZXJT
dHlsZUF0UnVsZUltYWdlU3ltYm9sc0VuYWJsZWQiLCBmYWxzZSB9LAogICAgICAgICAgICAgeyAi
Q1NTQ291bnRlclN0eWxlQXRSdWxlc0VuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAi
Q1NTR3JhZGllbnRQcmVtdWx0aXBsaWVkQWxwaGFJbnRlcnBvbGF0aW9uRW5hYmxlZCIsIHRydWUg
fSwKICAgICAgICAgICAgIHsgIkNTU0xvZ2ljYWxFbmFibGVkIiwgZmFsc2UgfSwKICAgICAgICAg
ICAgIHsgIkNTU09NVmlld1Ntb290aFNjcm9sbGluZ0VuYWJsZWQiLCBmYWxzZSB9LAogICAgICAg
ICAgICAgeyAiQ2FudmFzQ29sb3JTcGFjZUVuYWJsZWQiLCB0cnVlIH0sCkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyODcyMzMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwyMCBAQAorMjAyMS0xMi0yMCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHByZW11bHRpcGxpZWQgYWxwaGEgaW50ZXJwb2xh
dGVkIGdyYWRpZW50cyBhbmQgZGVmYXVsdGVkIG9mZiBvcHRpb24gdG8gdXNlIHRoZW0gZm9yIENT
UyBHcmFkaWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNDQ5MgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAg
ICBBZGQgYW5kIHVwZGF0ZSB0ZXN0cyBmb3IgZ3JhZGllbnRzIHdpdGggYWxwaGEgbm93IHRoYXQg
d2UgaGF2ZSBzdXBwb3J0IGZvciBwcmVtdWx0aXBsaWVkIGludGVycG9sYXRpb24uCisgICAgICAg
IEJ5IGRlZmF1bHQsIHRoZSB0ZXN0cyBub3cgZW5hYmxlIHByZW11bHRpcGxpZWQgaW50ZXJwb2xh
dGlvbiAoc2luY2UgaXQgaXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUpIHNvCisgICAgICAgIHRv
IGNvbnRpbnVlIHRlc3RpbmcgdGhlIG9sZCBwYXRoLCB0aGUgc2V0dGluZyBtdXN0IGJlIGV4cGxp
Y2l0bHkgZGlzYWJsZWQuCisKKyAgICAgICAgKiBmYXN0L2dyYWRpZW50cy9hbHBoYS1wcmVtdWx0
aXBsaWVkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZ3JhZGllbnRzL2Fs
cGhhLXByZW11bHRpcGxpZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9ncmFkaWVudHMv
Y29uaWMtZ3JhZGllbnQtYWxwaGEtZXhwZWN0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2dyYWRp
ZW50cy9jb25pYy1ncmFkaWVudC1hbHBoYS11bnByZW11bHRpcGxpZWQtZXhwZWN0ZWQuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGllbnQtYWxwaGEtdW5w
cmVtdWx0aXBsaWVkLmh0bWw6IEFkZGVkLgorCiAyMDIxLTEyLTE3ICBTaW1vbiBGcmFzZXIgIDxz
aW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlYWQgdGhlIGRlZmF1bHQgdmFsdWUg
b2YgdGhlIFNjcm9sbEFuaW1hdG9yRW5hYmxlZCBzZXR0aW5nIGZyb20gTlNVc2VyRGVmYXVsdHMK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZ3JhZGllbnRzL2FscGhhLXByZW11bHRpcGxpZWQtZXhw
ZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2dyYWRpZW50cy9hbHBo
YS1wcmVtdWx0aXBsaWVkLWV4cGVjdGVkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9ncmFkaWVudHMvYWxwaGEtcHJlbXVsdGlwbGllZC1leHBlY3RlZC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxzdHlsZT4KKyAgICBkaXYgeyAKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBo
ZWlnaHQ6IDEwMHB4OworICAgIH0KKworICAgICNsaW5lYXIgeworICAgICAgICBiYWNrZ3JvdW5k
LWltYWdlOiBsaW5lYXItZ3JhZGllbnQodHJhbnNwYXJlbnQsIHJnYigwLCAwLCAyNTUpKTsKKyAg
ICB9CisKKyAgICAjbGluZWFyLXJlcGVhdGluZyB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6
IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodHJhbnNwYXJlbnQsIHJnYigwLCAwLCAyNTUpIDI1
cHgpOworICAgIH0KKworICAgICNyYWRpYWwgeworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBy
YWRpYWwtZ3JhZGllbnQodHJhbnNwYXJlbnQsIHJnYigwLCAwLCAyNTUpKTsKKyAgICB9CisKKyAg
ICAjcmFkaWFsLXJlcGVhdGluZyB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHJlcGVhdGlu
Zy1yYWRpYWwtZ3JhZGllbnQodHJhbnNwYXJlbnQsIHJnYigwLCAwLCAyNTUpIDI1cHgpOworICAg
IH0KKworICAgICNjb25pYyB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGNvbmljLWdyYWRp
ZW50KHRyYW5zcGFyZW50LCByZ2IoMCwgMCwgMjU1KSk7CisgICAgfQorCisgICAgI2NvbmljLXJl
cGVhdGluZyB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHJlcGVhdGluZy1jb25pYy1ncmFk
aWVudCh0cmFuc3BhcmVudCwgcmdiKDAsIDAsIDI1NSkgMzBkZWcpOworICAgIH0KKyAgICAKKzwv
c3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImxpbmVhciI+PC9kaXY+Cis8ZGl2IGlk
PSJsaW5lYXItcmVwZWF0aW5nIj48L2Rpdj4KKzxkaXYgaWQ9InJhZGlhbCI+PC9kaXY+Cis8ZGl2
IGlkPSJyYWRpYWwtcmVwZWF0aW5nIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbmljIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbmljLXJlcGVhdGluZyI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2dyYWRpZW50cy9hbHBoYS1wcmVtdWx0aXBsaWVkLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVudHMvYWxwaGEtcHJlbXVsdGlwbGllZC5o
dG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZ3JhZGllbnRzL2FscGhhLXBy
ZW11bHRpcGxpZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisgICAgZGl2IHsgCisgICAgICAgIHdp
ZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9CisKKyAgICAjbGluZWFy
IHsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LCAw
LCAyNTUsIDApLCByZ2IoMCwgMCwgMjU1KSk7CisgICAgfQorCisgICAgI2xpbmVhci1yZXBlYXRp
bmcgeworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50
KHJnYmEoMjU1LCAwLCAyNTUsIDApLCByZ2IoMCwgMCwgMjU1KSAyNXB4KTsKKyAgICB9CisKKyAg
ICAjcmFkaWFsIHsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogcmFkaWFsLWdyYWRpZW50KHJn
YmEoMjU1LCAwLCAyNTUsIDApLCByZ2IoMCwgMCwgMjU1KSk7CisgICAgfQorCisgICAgI3JhZGlh
bC1yZXBlYXRpbmcgeworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiByZXBlYXRpbmctcmFkaWFs
LWdyYWRpZW50KHJnYmEoMjU1LCAwLCAyNTUsIDApLCByZ2IoMCwgMCwgMjU1KSAyNXB4KTsKKyAg
ICB9CisKKyAgICAjY29uaWMgeworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBjb25pYy1ncmFk
aWVudChyZ2JhKDI1NSwgMCwgMjU1LCAwKSwgcmdiKDAsIDAsIDI1NSkpOworICAgIH0KKworICAg
ICNjb25pYy1yZXBlYXRpbmcgeworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiByZXBlYXRpbmct
Y29uaWMtZ3JhZGllbnQocmdiYSgyNTUsIDAsIDI1NSwgMCksIHJnYigwLCAwLCAyNTUpIDMwZGVn
KTsKKyAgICB9CisgICAgCis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJsaW5l
YXIiPjwvZGl2PgorPGRpdiBpZD0ibGluZWFyLXJlcGVhdGluZyI+PC9kaXY+Cis8ZGl2IGlkPSJy
YWRpYWwiPjwvZGl2PgorPGRpdiBpZD0icmFkaWFsLXJlcGVhdGluZyI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25pYyI+PC9kaXY+Cis8ZGl2IGlkPSJjb25pYy1yZXBlYXRpbmciPjwvZGl2PgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGll
bnQtYWxwaGEtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2dy
YWRpZW50cy9jb25pYy1ncmFkaWVudC1hbHBoYS1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAyODcy
MzMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2dyYWRpZW50cy9jb25pYy1ncmFkaWVudC1hbHBoYS1l
eHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCwyNyArMTAsMjcgQEAKICAgICAgICAg
I3RvcGxlZnQgewogICAgICAgICAgICAgd2lkdGg6IDA7IAogICAgICAgICAgICAgaGVpZ2h0OiAw
OyAKLSAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxMDBweCBzb2xpZCByZ2IoNjQsODcsNjQpOwor
ICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDEwMHB4IHNvbGlkIHJnYig2NCw2NCw2NCk7CiAgICAg
ICAgICAgICBib3JkZXItdG9wOiAxMDBweCBzb2xpZCByZ2IoMzIsMzIsMzIpOwogICAgICAgICB9
CiAgICAgICAgICN0b3ByaWdodCB7CiAgICAgICAgICAgICB3aWR0aDogMDsgCiAgICAgICAgICAg
ICBoZWlnaHQ6IDA7IAotICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxMDBweCBzb2xpZCByZ2Io
MjI1LDI0NiwyMjUpOwotICAgICAgICAgICAgYm9yZGVyLXRvcDogMTAwcHggc29saWQgcmdiKDI1
NCwyNTQsMjU0KTsKKyAgICAgICAgICAgIGJvcmRlci1yaWdodDogMTAwcHggc29saWQgcmdiKDIy
NCwyMjQsMjI0KTsKKyAgICAgICAgICAgIGJvcmRlci10b3A6IDEwMHB4IHNvbGlkIHJnYigyNTUs
MjU1LDI1NSk7CiAgICAgICAgIH0KICAgICAgICAgI2JvdHRvbWxlZnQgewogICAgICAgICAgICAg
Y2xlYXI6IGxlZnQ7CiAgICAgICAgICAgICB3aWR0aDogMDsgCiAgICAgICAgICAgICBoZWlnaHQ6
IDA7IAotICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDEwMHB4IHNvbGlkIHJnYig5NiwxMzUsOTYp
OwotICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMTAwcHggc29saWQgcmdiKDEyOCwxNzUsMTI4
KTsKKyAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxMDBweCBzb2xpZCByZ2IoOTYsOTYsOTYpOwor
ICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMTAwcHggc29saWQgcmdiKDEyOCwxMjgsMTI4KTsK
ICAgICAgICAgfQogICAgICAgICAjYm90dG9tcmlnaHQgewogICAgICAgICAgICAgd2lkdGg6IDA7
IAogICAgICAgICAgICAgaGVpZ2h0OiAwOyAKLSAgICAgICAgICAgIGJvcmRlci1yaWdodDogMTAw
cHggc29saWQgcmdiKDE5MywyMzEsMTkzKTsKLSAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDEw
MHB4IHNvbGlkIHJnYigxNjAsMjA3LDE2MCk7CisgICAgICAgICAgICBib3JkZXItcmlnaHQ6IDEw
MHB4IHNvbGlkIHJnYigxOTIsMTkyLDE5Mik7CisgICAgICAgICAgICBib3JkZXItYm90dG9tOiAx
MDBweCBzb2xpZCByZ2IoMTYwLDE2MCwxNjApOwogICAgICAgICB9CiAgICAgICAgIC5ib3ggewog
ICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9n
cmFkaWVudHMvY29uaWMtZ3JhZGllbnQtYWxwaGEtdW5wcmVtdWx0aXBsaWVkLWV4cGVjdGVkLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGll
bnQtYWxwaGEtdW5wcmVtdWx0aXBsaWVkLWV4cGVjdGVkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGllbnQtYWxwaGEtdW5wcmVtdWx0
aXBsaWVkLWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NyBAQAorPGh0
bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBDU1NHcmFkaWVudFByZW11bHRpcGxpZWRBbHBo
YUludGVycG9sYXRpb25FbmFibGVkPWZhbHNlIF0gLS0+Cis8aGVhZD4KKyAgICA8c3R5bGU+Cisg
ICAgICAgIGRpdiB7CisgICAgICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgICAgICBoZWln
aHQ6IDIwMHB4OworICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7CisgICAgICAgIH0KKyAgICAgICAg
Lyp0d2VhayB0aGlzIHVudGlsIGl0J3MgYWN0dWFsbHkgcmlnaHQuLi4gKi8KKyAgICAgICAgI3Rv
cGxlZnQgeworICAgICAgICAgICAgd2lkdGg6IDA7IAorICAgICAgICAgICAgaGVpZ2h0OiAwOyAK
KyAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxMDBweCBzb2xpZCByZ2IoNjQsODcsNjQpOworICAg
ICAgICAgICAgYm9yZGVyLXRvcDogMTAwcHggc29saWQgcmdiKDMyLDMyLDMyKTsKKyAgICAgICAg
fQorICAgICAgICAjdG9wcmlnaHQgeworICAgICAgICAgICAgd2lkdGg6IDA7IAorICAgICAgICAg
ICAgaGVpZ2h0OiAwOyAKKyAgICAgICAgICAgIGJvcmRlci1yaWdodDogMTAwcHggc29saWQgcmdi
KDIyNSwyNDYsMjI1KTsKKyAgICAgICAgICAgIGJvcmRlci10b3A6IDEwMHB4IHNvbGlkIHJnYigy
NTQsMjU0LDI1NCk7CisgICAgICAgIH0KKyAgICAgICAgI2JvdHRvbWxlZnQgeworICAgICAgICAg
ICAgY2xlYXI6IGxlZnQ7CisgICAgICAgICAgICB3aWR0aDogMDsgCisgICAgICAgICAgICBoZWln
aHQ6IDA7IAorICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDEwMHB4IHNvbGlkIHJnYig5NiwxMzUs
OTYpOworICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMTAwcHggc29saWQgcmdiKDEyOCwxNzUs
MTI4KTsKKyAgICAgICAgfQorICAgICAgICAjYm90dG9tcmlnaHQgeworICAgICAgICAgICAgd2lk
dGg6IDA7IAorICAgICAgICAgICAgaGVpZ2h0OiAwOyAKKyAgICAgICAgICAgIGJvcmRlci1yaWdo
dDogMTAwcHggc29saWQgcmdiKDE5MywyMzEsMTkzKTsKKyAgICAgICAgICAgIGJvcmRlci1ib3R0
b206IDEwMHB4IHNvbGlkIHJnYigxNjAsMjA3LDE2MCk7CisgICAgICAgIH0KKyAgICAgICAgLmJv
eCB7CisgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIH0KKyAgICAgICAg
LnggeworICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICAgICAgLXdlYmtp
dC1jbGlwLXBhdGg6IHBvbHlnb24oMCUgMCUsIDAlIDEwJSwgNDAlIDUwJSwgMCUgOTAlLCAwJSAx
MDAlLCAxMCUgMTAwJSwgNTAlIDYwJSwgOTAlIDEwMCUsIDEwMCUgMTAwJSwgMTAwJSA5MCUsIDYw
JSA1MCUsIDEwMCUgMTAlLCAxMDAlIDAlLCA5MCUgMCUsIDUwJSA0MCUsIDEwJSAwJSk7CisgICAg
ICAgIH0KKyAgICAgICAgI3ggeworICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsK
KyAgICAgICAgfQorICAgICAgICAucGx1cyB7CisgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1
dGU7CisgICAgICAgICAgICAtd2Via2l0LWNsaXAtcGF0aDogcG9seWdvbig0NSUgMCUsIDU1JSAw
JSwgNTUlIDQ1JSwgMTAwJSA0NSUsIDEwMCUgNTUlLCA1NSUgNTUlLCA1NSUgMTAwJSwgNDUlIDEw
MCUsIDQ1JSA1NSUsIDAlIDU1JSwgMCUgNDUlLCA0NSUgNDUlKTsKKyAgICAgICAgfQorICAgICAg
ICAjcGx1cyB7CisgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOworICAgICAgICB9
CisgICAgICAgIAorICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2PgorICAg
ICAgICA8ZGl2IGNsYXNzPSJib3giPgorICAgICAgICAgICAgPGRpdiBpZD0idG9wbGVmdCI+PC9k
aXY+CisgICAgICAgICAgICA8ZGl2IGlkPSJ0b3ByaWdodCI+PC9kaXY+CisgICAgICAgICAgICA8
ZGl2IGlkPSJib3R0b21sZWZ0Ij48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImJvdHRvbXJp
Z2h0Ij48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxkaXYgaWQ9IngiIGNsYXNzPSJ4
Ij48L2Rpdj4KKyAgICAgICAgPGRpdiBpZD0icGx1cyIgY2xhc3M9InBsdXMiPjwvZGl2PgorICAg
IDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVu
dHMvY29uaWMtZ3JhZGllbnQtYWxwaGEtdW5wcmVtdWx0aXBsaWVkLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGllbnQtYWxwaGEtdW5wcmVt
dWx0aXBsaWVkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVu
dHMvY29uaWMtZ3JhZGllbnQtYWxwaGEtdW5wcmVtdWx0aXBsaWVkLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw1NiBAQAorPGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBDU1NH
cmFkaWVudFByZW11bHRpcGxpZWRBbHBoYUludGVycG9sYXRpb25FbmFibGVkPWZhbHNlIF0gLS0+
Cis8aGVhZD4KKzxzdHlsZT4KKyAgICBzdmcgeworICAgICAgICB3aWR0aDogODAwcHg7CisgICAg
ICAgIGRpc3BsYXk6IG5vbmU7CisgICAgfQorICAgIGRpdiB7CisgICAgICAgIHdpZHRoOiAyMDBw
eDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9CisgICAgI2dyYWRpZW50IHsKKyAgICAg
ICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhl
aWdodDogMjAwcHg7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGNvbmljLWdyYWRpZW50KHJn
YmEoMCwyNTUsMCwwKSwgYmxhY2spOworICAgICAgICBmaWx0ZXI6IHVybCgjcG9zdGVyaXplKTsK
KyAgICB9CisKKyAgICAueCB7CisgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAg
LXdlYmtpdC1jbGlwLXBhdGg6IHBvbHlnb24oMCUgMCUsIDAlIDEwJSwgNDAlIDUwJSwgMCUgOTAl
LCAwJSAxMDAlLCAxMCUgMTAwJSwgNTAlIDYwJSwgOTAlIDEwMCUsIDEwMCUgMTAwJSwgMTAwJSA5
MCUsIDYwJSA1MCUsIDEwMCUgMTAlLCAxMDAlIDAlLCA5MCUgMCUsIDUwJSA0MCUsIDEwJSAwJSk7
CisgICAgfQorICAgICN4IHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsKKyAgICB9
CisgICAgLnBsdXMgeworICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIC13ZWJr
aXQtY2xpcC1wYXRoOiBwb2x5Z29uKDQ1JSAwJSwgNTUlIDAlLCA1NSUgNDUlLCAxMDAlIDQ1JSwg
MTAwJSA1NSUsIDU1JSA1NSUsIDU1JSAxMDAlLCA0NSUgMTAwJSwgNDUlIDU1JSwgMCUgNTUlLCAw
JSA0NSUsIDQ1JSA0NSUpOworICAgIH0KKyAgICAjcGx1cyB7CisgICAgICAgIGJhY2tncm91bmQt
Y29sb3I6d2hpdGU7CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKworPGJvZHk+Cis8c3ZnIHZp
ZXdCb3g9IjAgMCA3MDAgMTAwIj4KKzxkZWZzPgorICAgIDxmaWx0ZXIgaWQ9InBvc3Rlcml6ZSIg
ZmlsdGVyVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiBwcmltaXRpdmVVbml0cz0ib2JqZWN0Qm91
bmRpbmdCb3giPgorICAgICAgICA8ZmVDb21wb25lbnRUcmFuc2Zlcj4KKyAgICAgICAgICAgIDxm
ZUZ1bmNSIHR5cGU9ImRpc2NyZXRlIiB0YWJsZVZhbHVlcz0iMCAwLjEyNSAwLjI1IDAuMzc1IDAu
NSAwLjYyNSAwLjc1IDAuODc1Ii8+CisgICAgICAgICAgICA8ZmVGdW5jRyB0eXBlPSJkaXNjcmV0
ZSIgdGFibGVWYWx1ZXM9IjAgMC4xMjUgMC4yNSAwLjM3NSAwLjUgMC42MjUgMC43NSAwLjg3NSIv
PgorICAgICAgICAgICAgPGZlRnVuY0IgdHlwZT0iZGlzY3JldGUiIHRhYmxlVmFsdWVzPSIwIDAu
MTI1IDAuMjUgMC4zNzUgMC41IDAuNjI1IDAuNzUgMC44NzUiLz4KKyAgICAgICAgICAgIDxmZUZ1
bmNBIHR5cGU9ImRpc2NyZXRlIiB0YWJsZVZhbHVlcz0iMCAwLjEyNSAwLjI1IDAuMzc1IDAuNSAw
LjYyNSAwLjc1IDAuODc1Ii8+CisgICAgICAgIDwvZmVDb21wb25lbnRUcmFuc2Zlcj4KKyAgICA8
L2ZpbHRlcj4KKzwvZGVmcz4KKzwvc3ZnPgorCis8ZGl2PgorICAgIDxkaXYgaWQ9ImdyYWRpZW50
Ij48L2Rpdj4KKyAgICA8ZGl2IGlkPSJ4IiBjbGFzcz0ieCI+PC9kaXY+CisgICAgPGRpdiBpZD0i
cGx1cyIgY2xhc3M9InBsdXMiPjwvZGl2PgorPC9kaXY+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjg3MjMzKQorKysg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkK
QEAgLTI5NSw2ICsyOTUsNyBAQCBmYXN0L2dyYWRpZW50cy9jb25pYy1jZW50ZXItb3V0c2lkZS1i
b3guaHRtbCBbIFNraXAgXQogZmFzdC9ncmFkaWVudHMvY29uaWMtZXh0ZW5kZWQtc3RvcHMuaHRt
bCBbIFNraXAgXQogZmFzdC9ncmFkaWVudHMvY29uaWMtZnJvbS1hbmdsZS5odG1sIFsgU2tpcCBd
CiBmYXN0L2dyYWRpZW50cy9jb25pYy1yZXBlYXRpbmctbGFzdC1zdG9wLmh0bWwgWyBTa2lwIF0K
K2Zhc3QvZ3JhZGllbnRzL2NvbmljLWdyYWRpZW50LWFscGhhLXVucHJlbXVsdGlwbGllZC5odG1s
IFsgU2tpcCBdCiBmYXN0L2dyYWRpZW50cy9jb25pYy1ncmFkaWVudC1hbHBoYS5odG1sIFsgU2tp
cCBdCiBmYXN0L2dyYWRpZW50cy9jb25pYy1ncmFkaWVudC1leHRlbmRlZC1zdG9wcy5odG1sIFsg
U2tpcCBdCiBmYXN0L2dyYWRpZW50cy9jb25pYy1ncmFkaWVudC5odG1sIFsgU2tpcCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447686</attachid>
            <date>2021-12-20 21:29:44 -0800</date>
            <delta_ts>2021-12-21 04:43:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234492-20211220212943.patch</filename>
            <type>text/plain</type>
            <size>93118</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODcyMzMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIxLTEyLTIwICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgcHJlbXVsdGlwbGllZCBhbHBo
YSBpbnRlcnBvbGF0ZWQgZ3JhZGllbnRzIGFuZCBkZWZhdWx0ZWQgb2ZmIG9wdGlvbiB0byB1c2Ug
dGhlbSBmb3IgQ1NTIEdyYWRpZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM0NDkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2Vy
LgorCisgICAgICAgICogU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1l
bnRhbC55YW1sOgorICAgICAgICBBZGQgYSBuZXcgZXhwZXJpbWVudGFsIHNldHRpbmcgdG8gZW5h
YmxlIHByZW11bHRpcGxpZWQgYWxwaGEgQ1NTIGdyYWRpZW50cy4gCisKIDIwMjEtMTItMTggIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEhhc2ggdGFibGVzLCByZWFk
L3dyaXRlLCBhbmQgaGVhcCBtZW1vcnkgYXJlIHVzZWQgdW5uZWNlc3NhcmlseSwgd2hpY2ggbWF5
IGh1cnQgcGVyZm9ybWFuY2UKSW5kZXg6IFNvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9X
ZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
U2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCShyZXZp
c2lvbiAyODcyMzMpCisrKyBTb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVy
ZW5jZXNFeHBlcmltZW50YWwueWFtbAkod29ya2luZyBjb3B5KQpAQCAtMjg0LDYgKzI4NCwxOCBA
QCBDU1NDdXN0b21Qcm9wZXJ0aWVzQW5kVmFsdWVzRW5hYmxlZDoKICAgICBXZWJDb3JlOgogICAg
ICAgZGVmYXVsdDogZmFsc2UKIAorQ1NTR3JhZGllbnRQcmVtdWx0aXBsaWVkQWxwaGFJbnRlcnBv
bGF0aW9uRW5hYmxlZDoKKyAgdHlwZTogYm9vbAorICBodW1hblJlYWRhYmxlTmFtZTogIkNTUyBH
cmFkaWVudCBQcmVtdWx0aXBsaWVkIEFscGhhIEludGVycG9sYXRpb24iCisgIGh1bWFuUmVhZGFi
bGVEZXNjcmlwdGlvbjogIkVuYWJsZSBwcmVtdWx0aXBsaWVkIGFscGhhIGludGVycG9sYXRlZCBD
U1MgZ3JhZGllbnRzIgorICBkZWZhdWx0VmFsdWU6CisgICAgV2ViS2l0TGVnYWN5OgorICAgICAg
ZGVmYXVsdDogZmFsc2UKKyAgICBXZWJLaXQ6CisgICAgICBkZWZhdWx0OiBmYWxzZQorICAgIFdl
YkNvcmU6CisgICAgICBkZWZhdWx0OiBmYWxzZQorCiAjIEZJWE1FOiBUaGlzIGlzIGVuYWJsZWQg
d2hlbiBFTkFCTEUoRVhQRVJJTUVOVEFMX0ZFQVRVUkVTKSBpcyB0cnVlIGluIFdlYktpdDIuIFBl
cmhhcHMgd2Ugc2hvdWxkIGNvbnNpZGVyIHVzaW5nIHRoYXQgZm9yIFdlYktpdExlZ2FjeSBhcyB3
ZWxsLgogQ1NTSW5kaXZpZHVhbFRyYW5zZm9ybVByb3BlcnRpZXNFbmFibGVkOgogICB0eXBlOiBi
b29sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODcyMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMTAgQEAKKzIwMjEtMTItMjAgIFNh
bSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBw
cmVtdWx0aXBsaWVkIGFscGhhIGludGVycG9sYXRlZCBncmFkaWVudHMgYW5kIGRlZmF1bHRlZCBv
ZmYgb3B0aW9uIHRvIHVzZSB0aGVtIGZvciBDU1MgR3JhZGllbnRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ0OTIKKworICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZ3JhZGllbnRzL2FscGhh
LXByZW11bHRpcGxpZWQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ncmFkaWVudHMvY29uaWMt
Z3JhZGllbnQtYWxwaGEtdW5wcmVtdWx0aXBsaWVkLmh0bWwKKworICAgICAgICBFeHRyYWN0cyB1
c2Ugb2YgQ0dHcmFkaWVudFJlZiBvdXQgb2YgR3JhZGllbnQgYW5kIGludG8gdGhlIG5ldyBHcmFk
aWVudFJlbmRlcmVyQ0cgd2hpY2ggYWxzbyBpbXBsZW1lbnRzCisgICAgICAgIGEgQ0dTaGFkaW5n
UmVmIGJhc2VkIGdyYWRpZW50IGRyYXdpbmcgcGF0aC4gVGhlIEdyYWRpZW50UmVuZGVyZXJDRyBw
aWNrcyB3aGljaCBzdHJhdGVneSwgQ0dHcmFkaWVudFJlZgorICAgICAgICBvciBDR1NoYWRpbmdS
ZWYsIGJhc2VkIG9uIHRoZSBpbnRlcG9sYXRpb24gbW9kZSBhbmQgY2FwYWJpbGl0aWVzIG9mIHRo
ZSB1bmRlcmx5aW5nIENvcmVHcmFwaGljcy4gRm9yIAorICAgICAgICBuZXcgZW5vdWdoIENvcmVH
cmFwaGljcywgYm90aCBwcmVtdWx0aXBsaWVkIGFuZCBub24tcHJlbXVsdGlwbGllZCBhbHBoYSBp
bnRlcnBvbGF0aW9uIGZvciBzUkdCIG91dHB1dAorICAgICAgICBhcmUgc3VwcG9ydGVkIGluIHRo
ZSBtb3JlIG9wdGltaXphYmxlIENHR3JhZGllbnRSZWYgcGF0aCwgYnV0IG9uIG9sZGVyIHN5c3Rl
bXMgd2Ugd2lsbCBmYWxsYmFjayB0byBhIAorICAgICAgICBhIG5ld2x5IGltcGxlbWVudGVkIENH
U2hhZGluZ1JlZiBiYXNlZCBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICBJbiBhZGRpdGlvbiB0
byB0aGUgcGxhdGZvcm0gbGV2ZWwgd29yayBpbiBHcmFkaWVudCwgdGhpcyBhZGRzIGEgbmV3IHNl
dHRpbmcsIENTU0dyYWRpZW50UHJlbXVsdGlwbGllZEFscGhhSW50ZXJwb2xhdGlvbkVuYWJsZWQs
CisgICAgICAgIHdoaWNoIGRlZmF1bHRzIHRvIG9mZiBmb3Igbm93IGFuZCBzd2l0Y2hlcyB3aGF0
IHR5cGUgb2YgaW50ZXJwb2xhdGlvbiB3ZSB1c2UgZm9yIENTUyBncmFkaWVudHMuIEl0CisgICAg
ICAgIGRvZXMgbm90IGVmZmVjdCBvdGhlciBncmFkaWVudCB1c2VzIHN1Y2ggYXMgYnkgY2FudmFz
IG9yIFNWRy4gVGhvc2Ugd2lsbCBiZSBlbmFibGVkIHNlcGFyYXRlbHkuCisKKyAgICAgICAgKiBI
ZWFkZXJzLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtQXBwbGVXaW4uY21ha2U6CisgICAgICAg
ICogUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZCBuZXcg
ZmlsZXMuCisKKyAgICAgICAgKiBjc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMaW5lYXJHcmFkaWVudEFkYXB0ZXI6Om5vcm1hbGl6ZVN0b3BzQW5kRW5kcG9pbnRz
T3V0c2lkZVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJhZGlhbEdyYWRpZW50QWRhcHRlcjo6
bm9ybWFsaXplU3RvcHNBbmRFbmRwb2ludHNPdXRzaWRlUmFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29uaWNHcmFkaWVudEFkYXB0ZXI6Om5vcm1hbGl6ZVN0b3BzQW5kRW5kcG9pbnRzT3V0c2lk
ZVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyYWRpZW50VmFsdWU6OmNvbXB1dGVTdG9w
cyk6CisgICAgICAgIFN3aXRjaCB0byB1c2luZyB0aGUgbmV3IGludGVycG9sYXRlQ29sb3JzKCkg
ZnVuY3Rpb24gZnJvbSBDb2xvckludGVycG9sYXRpb24uaAorICAgICAgICB3aGljaCBhY2N1cmF0
ZWx5IHRha2VzIGludG8gYWNjb3VudCB0aGUgY3VycmVudCBpbnRlcnBvbGF0aW9uIG1vZGUuIFRo
ZXNlCisgICAgICAgIGJsZW5kcyBub3cgbWF0Y2ggd2hhdCB0aGUgY3JlYXRlZCBncmFkaWVudCBk
b2VzLgorCisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmNwcDoKKyAgICAg
ICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaDoKKyAgICAgICAgQWRkIHN1cHBvcnQg
Zm9yIHF1ZXJ5aW5nIENTU0dyYWRpZW50UHJlbXVsdGlwbGllZEFscGhhSW50ZXJwb2xhdGlvbkVu
YWJsZWQgZnJvbSB0aGUgQ1NTIHBhcnNlci4KKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFy
c2VySGVscGVyczo6Z3JhZGllbnRBbHBoYVByZW11bHRpcGxpY2F0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZURlcHJlY2F0ZWRHcmFkaWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVE
ZXByZWNhdGVkUmFkaWFsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQ
YXJzZXJIZWxwZXJzOjpjb25zdW1lUmFkaWFsR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lTGluZWFyR3JhZGllbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lQ29uaWNHcmFkaWVu
dCk6CisgICAgICAgIERlcGVuZGluZyBvbiBob3cgQ1NTR3JhZGllbnRQcmVtdWx0aXBsaWVkQWxw
aGFJbnRlcnBvbGF0aW9uRW5hYmxlZCBpcyBzZXQsIHVzZSBlaXRoZXIgcHJlbXVsdGlwbGllZAor
ICAgICAgICBvciBub24tcHJlbXVsdGlwbGllZCBpbnRlcnBvbGF0aW9uIGZvciBDU1MgZ3JhZGll
bnRzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb21wb25lbnRzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDb2xvckNvbXBvbmVudHM6OnNpemUgY29uc3QpOgorICAgICAgICBB
ZGQgc2l6ZSgpIGZ1bmN0aW9uIGZvciB1c2UgYnkgdGhlIHNoYWRpbmcgc3RyYXRlZ3kuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckludGVycG9sYXRpb24uaDoKKyAgICAgICAg
KFdlYkNvcmU6OnByZUludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uRm9yQ29tcG9uZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OnByZUludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OnBvc3RJbnRlcnBvbGF0aW9uTm9ybWFsaXphdGlvbkZvckNvbXBvbmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpwb3N0SW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6aW50ZXJwb2xhdGVDb2xvckNvbXBvbmVudHMpOgorICAgICAgICBVcGRhdGUg
dG8gdXNlIHRoZSBuYW1lIEludGVycG9sYXRpb25NZXRob2RDb2xvclNwYWNlIGNvbnNpc3Rlbmx5
IGZvciB0aGUgY29sb3Igc3BhY2UgcGFydCBvZiB0aGUKKyAgICAgICAgaW50ZXJwb2xhdGlvbiBt
ZXRob2QuCisgIAorICAgICAgICAoV2ViQ29yZTo6aW50ZXJwb2xhdGVDb2xvcnMpOgorICAgICAg
ICBBZGQgaGVscGVyIHdoaWNoIHRha2VzIGFuZCByZXR1cm5zIENvbG9yIG9iamVjdHMgcmF0aGVy
IHRoYW4gdGhlIHN0cm9uZ2x5IHR5cGVkIGNvbG9yIHR5cGVzLCAKKyAgICAgICAgYXV0b21hdGlj
YWxseSBjb252ZXJ0aW5nIHRvIHRoZSBhcHByb3ByaWF0ZSBpbnRlcnBvbGF0aW9uIGNvbG9yIHNw
YWNlIGJhc2VkIG9uIHRoZSBwcm92aWRlZAorICAgICAgICBDb2xvckludGVycG9sYXRpb25NZXRo
b2Qgb2JqZWN0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudENvbG9yU3RvcC5oOiBBZGRlZC4KKyAg
ICAgICAgTW92ZSBDb2xvclN0b3AgYW5kIENvbG9yU3RvcFZlY3RvciBkZWZpbnRpb25zIHRvIG5l
dyBHcmFkaWVudENvbG9yU3RvcCBmaWxlLCBidXQga2VlcCB0aGUKKyAgICAgICAgb2xkIG5lc3Rl
ZCBuYW1lcyB2aWEgdXNpbmcgZGlyZWN0aXZlcy4gVGhpcyBpcyBuZWVkZWQgdG8gbWFrZSB1c2lu
ZyB0aGUgQ29sb3JTdG9wVmVjdG9yCisgICAgICAgIGZyb20gR3JhZGllbnRSZW5kZXJlckNHICh3
aGljaCB3ZSBhbHNvIHdhbnQgdG8gdXNlIGluIEdyYWRpZW50LmgpIHBvc3NpYmxlIHdpdGhvdXQg
cmVkZWNsYXJhdGlvbi4KKyAgICAgICAgUmVwbGFjZSBDR0dyYWRpZW50UmVmIG1lbWJlciB3aXRo
IEdyYWRpZW50UmVuZGVyZXJDRyB3aGljaCBhbGxvd3MgY2hvb3NpbmcgYmV0d2VlbiBlaXRoZXIK
KyAgICAgICAgYSBDR0dyYWRpZW50UmVmIGJhc2VkIGltcGxlbWVudGF0aW9uIG9yIENHU2hhZGlu
Z1JlZiBiYXNlZCBvbmUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVu
dENHLmNwcDoKKyAgICAgICAgVXBkYXRlIHRvIHVzZSB0aGUgR3JhZGllbnRSZW5kZXJlckNHIHJh
dGhlcm4gdGhhbiBhIENHR3JhZGllbnRSZWYgZGlyZWN0bHksIGNhbGxpbmcgaW50byBpdAorICAg
ICAgICB0byBkbyB0aGUgYWN0dWFsIGRyYXcgY2FsbHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFkaWVudFJlbmRlcmVyQ0cuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRSZW5kZXJlckNHLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpHcmFkaWVudFJlbmRlcmVyQ0c6OnBpY2tTdHJhdGVneSBjb25zdCk6CisgICAgICAg
IENlbnRyYWwgZnVuY3Rpb24gdG8gY2hvb3NlIHdoaWNoIHN0cmF0ZWd5IHRvIHVzZSBiYXNlZCBv
biBzeXN0ZW0gY2FwYWJpbGl0aWVzIGFuZCBpbnRlcnBvbGF0aW9uIG5lZWRzLgorCisgICAgICAg
IChXZWJDb3JlOjpHcmFkaWVudFJlbmRlcmVyQ0c6Om1ha2VHcmFkaWVudCBjb25zdCk6CisgICAg
ICAgIE1vdmVkIGZyb20gR3JhZGllbnRDRy5jcHAuIFJlbW92ZWQgdGhlIENHR3JhZGllbnRDcmVh
dGVXaXRoQ29sb3JzKCkgcGF0aCwgYXMgd2UgY2FuIGFsd2F5cyB1c2UgdGhlCisgICAgICAgIG1v
cmUgZWZmaWNpZW50IENHR3JhZGllbnRDcmVhdGVXaXRoQ29sb3JDb21wb25lbnRzKCkgYnkgZG9p
bmcgdGhlIGNvbnZlcnNpb24gdG8gZXh0ZW5kZWQgc1JHQiBvdXJzZWx2ZXMuCisgICAgICAgIEFs
c28gYWRkcyB1c2Ugb2YgdGhlIGtDR0dyYWRpZW50SW50ZXJwb2xhdGVzUHJlbXVsdGlwbGllZCBv
cHRpb24gb24gc3VwcG9ydGVkIHN5c3RlbXMgdG8gdGVsbCBDb3JlR3JhcGhpY3MKKyAgICAgICAg
dG8gdXNlIHByZW11bGl0cGxpZWQgaW50ZXJwb2xhdGlvbi4KKworICAgICAgICAoV2ViQ29yZTo6
c2hhZGluZ0Z1bmN0aW9uKToKKyAgICAgICAgQ29yZSBmdW5jdGlvbiB1c2VkIGJ5IENHU2hhZGlu
Z1JlZiB0byBpbnRlcnBvbGF0ZSBiZXR3ZWVuIGNvbG9yIHN0b3BzLiBUZW1wbGF0aXplZCB0byBh
bGxvdyBmb3Igb3B0aW1pemVkCisgICAgICAgIHZlcnNpb25zIGZvciBldmVyeSBDb2xvckludGVy
cG9sYXRpb25Db2xvclNwYWNlIC8gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBwYWlyLiAKKworICAg
ICAgICAoV2ViQ29yZTo6R3JhZGllbnRSZW5kZXJlckNHOjptYWtlU2hhZGluZyBjb25zdCk6Cisg
ICAgICAgIEJ1aWxkcyBzaGFkaW5nIHN0cmF0ZWd5IGJ5IGNvbnZlcnRpbmcgYWxsIGNvbG9yIHN0
b3BzIHRvIHRoZSBpbnRlcnBvbGF0aW9uIGNvbG9yIHNwYWNlLCBhZGRpbmcgc3RvcHMgYXQKKyAg
ICAgICAgMCBhbmQgMSBpZiBuZWNlc3NhcnksIGFuZCBjcmVhdGluZyB0aGUgQ0dGdW5jdGlvblJl
ZiB0aGF0IHRoZSBzaGFkaW5nIHdpbGwgb3duLiBUbyBhdm9pZCBhIGNpcmN1bGFyIAorICAgICAg
ICByZWZlcmVuY2UsIHRoZSBHcmFkaWVudFJlbmRlcmVyQ0cgaXRzZWxmIGlzIG5vdCB3aGF0IHRo
ZSBDR0Z1bmN0aW9uUmVmIHJldGFpbnMsIGJ1dCByYXRoZXIgYSBzdWJvYmplY3QKKyAgICAgICAg
RGF0YSwgd2hpY2ggaXMgYSBwZWVyIHRvIHRoZSBDR0Z1bmN0aW9uUmVmLgorCisgICAgICAgIChX
ZWJDb3JlOjpHcmFkaWVudFJlbmRlcmVyQ0c6OmRyYXdMaW5lYXJHcmFkaWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFkaWVudFJlbmRlcmVyQ0c6OmRyYXdSYWRpYWxHcmFkaWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFkaWVudFJlbmRlcmVyQ0c6OmRyYXdDb25pY0dyYWRpZW50KToKKyAg
ICAgICAgRHJhdyB0aGUgZ3JhZGllbnQgb3Igc2hhZGluZyBiYXNlZCBvbiB0aGUgc3RyYXRlZ3kg
c2VsZWN0ZWQgYXQgY29uc3RydWN0aW9uLgorCiAyMDIxLTEyLTE4ICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KIAogICAgICAgICBIYXNoIHRhYmxlcywgcmVhZC93cml0ZSwgYW5kIGhl
YXAgbWVtb3J5IGFyZSB1c2VkIHVubmVjZXNzYXJpbHksIHdoaWNoIG1heSBodXJ0IHBlcmZvcm1h
bmNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9X
ZWJDb3JlL0hlYWRlcnMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTE0NjEsNiArMTQ2MSw3IEBA
IHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9HbHlwaE1ldHJpY3NNYXAuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoUGFnZS5o
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYWRpZW50Q29sb3JTdG9wLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEZsdXNoSWRlbnRpZmll
ci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApJbmRleDogU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCShyZXZpc2lvbiAyODcyMzMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEs
NiArMTMxLDcgQEAgZWxzZSAoKQogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFJl
Y3RDRy5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRTaXplQ0cuY3BwCiAg
ICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwCisgICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50UmVuZGVyZXJDRy5jcHAKICAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0lPU3VyZmFjZVBvb2wuY3BwCkBAIC0xODIsNiArMTgzLDcgQEAgZWxzZSAoKQogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmgKIAogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAorICAgICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFkaWVudFJlbmRlcmVyQ0cuaAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5oCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lP
U3VyZmFjZVBvb2wuaAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNH
QmFja2VuZC5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQkocmV2aXNpb24gMjg3MjMz
KQorKysgU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAg
LTI5MSw2ICsyOTEsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9GbG9hdFJlY3RDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9G
bG9hdFNpemVDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENHLmNwcAor
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50UmVuZGVyZXJDRy5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0lPU3VyZmFjZVBvb2wuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9u
IDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTM0OCw2ICszNDgsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFBvaW50Q0cu
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFJlY3RDRy5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0Zsb2F0U2l6ZUNHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRDRy5j
cHAKK3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50UmVuZGVyZXJDRy5jcHAKIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0R0xDRy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBv
b2wuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NzI3OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAor
MjAyMS0xMi0yMCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRk
IHN1cHBvcnQgZm9yIHByZW11bHRpcGxpZWQgYWxwaGEgaW50ZXJwb2xhdGVkIGdyYWRpZW50cyBh
bmQgZGVmYXVsdGVkIG9mZiBvcHRpb24gdG8gdXNlIHRoZW0gZm9yIENTUyBHcmFkaWVudHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDQ5MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICAqIHBhbC9zcGkvY2cv
Q29yZUdyYXBoaWNzU1BJLmg6CisgICAgICAgIEFkZCBmb3J3YXJkcyBmb3IgY3JlYXRpbmcgY29u
aWMgc2hhZGluZ3MgYW5kIGVuYWJsaW5nIHByZW11bHRpcGxpZWQgYWxwaGEgaW50ZXJwb2xhdGlv
biBmb3IgZ3JhZGllbnRzLgorCiAyMDIxLTEyLTIwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNp
ZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBQQUwgc29mdCBsaW5raW5nIGhlYWRlcnMgZm9y
IENvcmVNTCBhbmQgTmF0dXJhbExhbmd1YWdlIGZyYW1ld29ya3MKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCShyZXZpc2lvbiAyODcy
MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaAko
d29ya2luZyBjb3B5KQpAQCAtNDEsOCArNDEsOSBAQAogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9D
R0NvbnRleHREZWxlZ2F0ZVByaXZhdGUuaD4KICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dGb250
Q2FjaGUuaD4KICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dQYXRoUHJpdmF0ZS5oPgotI2luY2x1
ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3NQcml2YXRlLmg+CisjaW5jbHVkZSA8Q29yZUdy
YXBoaWNzL0NHU2hhZGluZ1ByaXZhdGUuaD4KICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dTdHls
ZVByaXZhdGUuaD4KKyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzUHJpdmF0ZS5o
PgogCiAjaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0FjY2Vzc2li
aWxpdHkuaD4KQEAgLTMyMyw2ICszMjQsMTYgQEAgdm9pZCBDR0NvbnRleHRTZXRTdHlsZShDR0Nv
bnRleHRSZWYsIENHU3R5bGVSZWYpOwogdm9pZCBDR0NvbnRleHREcmF3Q29uaWNHcmFkaWVudChD
R0NvbnRleHRSZWYsIENHR3JhZGllbnRSZWYsIENHUG9pbnQgY2VudGVyLCBDR0Zsb2F0IGFuZ2xl
KTsKIHZvaWQgQ0dQYXRoQWRkVW5ldmVuQ29ybmVyc1JvdW5kZWRSZWN0KENHTXV0YWJsZVBhdGhS
ZWYsIGNvbnN0IENHQWZmaW5lVHJhbnNmb3JtICosIENHUmVjdCwgY29uc3QgQ0dTaXplIGNvcm5l
cnNbNF0pOwogYm9vbCBDR0ZvbnRSZW5kZXJpbmdHZXRGb250U21vb3RoaW5nRGlzYWJsZWQodm9p
ZCk7CitDR1NoYWRpbmdSZWYgQ0dTaGFkaW5nQ3JlYXRlQ29uaWMoQ0dDb2xvclNwYWNlUmVmLCBD
R1BvaW50IGNlbnRlciwgQ0dGbG9hdCBhbmdsZSwgQ0dGdW5jdGlvblJlZik7CisKKyNpZiBIQVZF
KENPUkVfR1JBUEhJQ1NfR1JBRElFTlRfQ1JFQVRFX1dJVEhfT1BUSU9OUykKK0NHR3JhZGllbnRS
ZWYgQ0dHcmFkaWVudENyZWF0ZVdpdGhDb2xvckNvbXBvbmVudHNBbmRPcHRpb25zKENHQ29sb3JT
cGFjZVJlZiwgY29uc3QgQ0dGbG9hdCosIGNvbnN0IENHRmxvYXQqLCBzaXplX3QsIENGRGljdGlv
bmFyeVJlZik7CitDR0dyYWRpZW50UmVmIENHR3JhZGllbnRDcmVhdGVXaXRoQ29sb3JzQW5kT3B0
aW9ucyhDR0NvbG9yU3BhY2VSZWYsIENGQXJyYXlSZWYsIGNvbnN0IENHRmxvYXQqLCBDRkRpY3Rp
b25hcnlSZWYpOworI2VuZGlmCisKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfUFJFTVVMVElQTElF
RF9JTlRFUlBPTEFUSU9OX0dSQURJRU5UKQorZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDR0dy
YWRpZW50SW50ZXJwb2xhdGVzUHJlbXVsdGlwbGllZDsKKyNlbmRpZgogCiAjZW5kaWYgLy8gUExB
VEZPUk0oQ09DT0EpCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDA4
MSw2ICs0MDgxLDggQEAKIAkJQkMxMjRGMDAwQzI2NDQ3QTAwOUUyMzQ5IC8qIEpTQmFyUHJvcC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxMjRFRkUw
QzI2NDQ3QTAwOUUyMzQ5IC8qIEpTQmFyUHJvcC5oICovOyB9OwogCQlCQzEyOEE3MzEzN0M4NjdD
MDBDQUM4NDUgLyogUmVuZGVyR3JpZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkMxMjhBNzIxMzdDODY3QzAwQ0FDODQ1IC8qIFJlbmRlckdyaWQuaCAq
LzsgfTsKIAkJQkMxNDAyOEIwRTgzNjgwODAwMzE5NzE3IC8qIFNjcm9sbGJhclRoZW1lQ29tcG9z
aXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE0
MDI4OTBFODM2ODA4MDAzMTk3MTcgLyogU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzE5Q0RGMjI3NkZG
QzZEMDA1M0Y3MzQgLyogR3JhZGllbnRSZW5kZXJlckNHLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE5Q0RGMDI3NkZGQjI2MDA1M0Y3MzQgLyogR3Jh
ZGllbnRSZW5kZXJlckNHLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJQkMxOUNERjQyNzcxMDYzOTAwNTNGNzM0IC8qIEdyYWRpZW50Q29sb3JTdG9w
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE5Q0RG
MzI3NzEwNjM5MDA1M0Y3MzQgLyogR3JhZGllbnRDb2xvclN0b3AuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzFBN0Q5ODE4RkNCNUIwMDA0MjE4
NzkgLyogUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMUE3RDk2MThGQ0I1QjAwMDQyMTg3
OSAvKiBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5oICovOyB9OwogCQlCQzIy
NzI4NzBFODJFNzA3MDBFN0Y5NzUgLyogU3R5bGVSZWZsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzIyNzI4NjBFODJFNzA3MDBFN0Y5NzUg
LyogU3R5bGVSZWZsZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQkMyMjcyQTIwRTgyRTg3QzAwRTdGOTc1IC8qIEN1cnNvckRhdGEuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjI3MkExMEU4
MkU4N0MwMEU3Rjk3NSAvKiBDdXJzb3JEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE1MTEzLDYgKzE1MTE1LDkgQEAKIAkJQkMxMjhCMDAx
MzdDOEQ0NjAwQ0FDODQ1IC8qIFJlbmRlckdyaWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVuZGVyR3JpZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDMTQwMjg4MEU4MzY4MDgwMDMxOTcxNyAvKiBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxiYXJUaGVtZUNv
bXBvc2l0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMTQwMjg5MEU4MzY4
MDgwMDMxOTcxNyAvKiBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlCQzE5Q0RFRjI3NkZGQjI2MDA1M0Y3MzQgLyogR3JhZGllbnRSZW5k
ZXJlckNHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYWRpZW50UmVuZGVyZXJDRy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMTlDREYwMjc2RkZCMjYwMDUzRjczNCAvKiBH
cmFkaWVudFJlbmRlcmVyQ0cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhZGllbnRSZW5kZXJlckNHLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMTlDREYzMjc3MTA2MzkwMDUzRjczNCAv
KiBHcmFkaWVudENvbG9yU3RvcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFkaWVudENvbG9yU3RvcC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzFBN0Q5NTE4RkNCNUIwMDA0MjE4Nzkg
LyogUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xk
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzFBN0Q5NjE4RkNCNUIwMDA0
MjE4NzkgLyogUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xk
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyMEZCN0UwQzBFOEU2QzAwRDE0
NDdGIC8qIEpTRGVwcmVjYXRlZENTU09NVmFsdWVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRGVwcmVjYXRlZENTU09NVmFsdWVDdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjg1MzQsNiArMjg1MzksOCBAQAogCQkJCUIy
NzUzNTJDMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RDRy5jcHAgKi8sCiAJCQkJQjI3NTM1
MkQwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZUNHLmNwcCAqLywKIAkJCQlCQzUzQzYwQTBE
QTU2Q0YxMDAyMUVCNUQgLyogR3JhZGllbnRDRy5jcHAgKi8sCisJCQkJQkMxOUNERUYyNzZGRkIy
NjAwNTNGNzM0IC8qIEdyYWRpZW50UmVuZGVyZXJDRy5jcHAgKi8sCisJCQkJQkMxOUNERjAyNzZG
RkIyNjAwNTNGNzM0IC8qIEdyYWRpZW50UmVuZGVyZXJDRy5oICovLAogCQkJCUIyRUQ5NzcwMEIx
RjU1Q0UwMDI1N0QwRiAvKiBHcmFwaGljc0NvbnRleHRDRy5jcHAgKi8sCiAJCQkJOTM0OTA3RTMx
MjVCQkJDODAwN0YyM0EwIC8qIEdyYXBoaWNzQ29udGV4dENHLmggKi8sCiAJCQkJNkUyMUM2QzEx
MTI2MzM5OTAwQTdCRTAyIC8qIEdyYXBoaWNzQ29udGV4dEdMQ0cuY3BwICovLApAQCAtMjg3NDMs
NiArMjg3NTAsNyBAQAogCQkJCTA4NzNCODZBMTM2MDY0RUEwMEE1MjJDMiAvKiBHbHlwaFBhZ2Uu
aCAqLywKIAkJCQlCQzUzQzYwNzBEQTU2QzU3MDAyMUVCNUQgLyogR3JhZGllbnQuY3BwICovLAog
CQkJCUJDNTNDNUY0MERBNTZCOTIwMDIxRUI1RCAvKiBHcmFkaWVudC5oICovLAorCQkJCUJDMTlD
REYzMjc3MTA2MzkwMDUzRjczNCAvKiBHcmFkaWVudENvbG9yU3RvcC5oICovLAogCQkJCTJEMkZD
MDU2MTQ2MENENkYwMDI2MzYzMyAvKiBHcmFkaWVudEltYWdlLmNwcCAqLywKIAkJCQkyRDJGQzA1
NzE0NjBDRDZGMDAyNjM2MzMgLyogR3JhZGllbnRJbWFnZS5oICovLAogCQkJCUIyQTAxNTkyMEFG
NkNENTMwMDZCQ0UwRSAvKiBHcmFwaGljc0NvbnRleHQuY3BwICovLApAQCAtMzMzMDQsNiArMzMz
MTIsNyBAQAogCQkJCTgzNzg4NzgyMjREOEE2MDkwMDBENEE1QiAvKiBBdWRpb0J1ZmZlclNvdXJj
ZU9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDdDMTJCMDI2RjcwMEMxQTM1OSAv
KiBBdWRpb0J1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwN0UxMkIwMjZGNzAwQzFBMzU5
IC8qIEF1ZGlvQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMxOUNERjIyNzZGRkM2RDAw
NTNGNzM0IC8qIEdyYWRpZW50UmVuZGVyZXJDRy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzRUVG
M0EyNTc5OUY4ODAwNjU2M0JCIC8qIEF1ZGlvQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkQzMTYwMDUxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvQ29udGV4dC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTc4NUQ5NjIyNEI3RjczNTAwMTREQjIxIC8qIEF1ZGlvQ29udGV4dExhdGVu
Y3lDYXRlZ29yeS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDg2MCw2ICszNDg2OSw3IEBACiAJCQkJ
QTVCODFDQUQxRkFBNDQ2MjAwMzdEMUU2IC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTk0QzYwM0EyNTNBMjc3MzAwQkRGMDYwIC8qIEluc3BlY3RvckZy
b250ZW5kQVBJRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjM0NEM3MTQxMTI1Qjgy
QzAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlCQzE5Q0RGNDI3NzEwNjM5MDA1M0Y3MzQgLyogR3JhZGllbnRDb2xvclN0b3AuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUYzNDRDNzUzMTEyOTREOUQwMEYyNkVFRSAvKiBJbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTBFNzcwRjEwQzAwQTg4MDBBMDI3
NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTU0ODU4
MDE0RTAyRDUxMDA2QUUwNUEgLyogSW5zcGVjdG9ySGlzdG9yeS5oIGluIEhlYWRlcnMgKi8sCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCShyZXZpc2lvbiAyODcy
MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDExICsyNiwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkNTU0dyYWRpZW50VmFsdWUuaCIKIAotI2luY2x1ZGUgIkFuaW1hdGlvblV0aWxpdGllcy5oIgog
I2luY2x1ZGUgIkNTU0NhbGNWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCi0jaW5jbHVkZSAiQ29sb3JC
bGVuZGluZy5oIgorI2luY2x1ZGUgIkNvbG9ySW50ZXJwb2xhdGlvbi5oIgogI2luY2x1ZGUgIkdy
YWRpZW50SW1hZ2UuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJQ
YWlyLmgiCkBAIC0xMzgsNyArMTM3LDcgQEAgY2xhc3MgTGluZWFyR3JhZGllbnRBZGFwdGVyIHsg
KHB1YmxpYykKICAgICB9CiAgICAgZmxvYXQgbWF4RXh0ZW50KGZsb2F0LCBmbG9hdCkgY29uc3Qg
eyByZXR1cm4gMTsgfQogCi0gICAgdm9pZCBub3JtYWxpemVTdG9wc0FuZEVuZHBvaW50c091dHNp
ZGVSYW5nZShWZWN0b3I8R3JhZGllbnRTdG9wPiYgc3RvcHMpCisgICAgdm9pZCBub3JtYWxpemVT
dG9wc0FuZEVuZHBvaW50c091dHNpZGVSYW5nZShWZWN0b3I8R3JhZGllbnRTdG9wPiYgc3RvcHMs
IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCkKICAgICB7CiAgICAgICAgIGZsb2F0IGZpcnN0T2Zm
c2V0ID0gKnN0b3BzLmZpcnN0KCkub2Zmc2V0OwogICAgICAgICBmbG9hdCBsYXN0T2Zmc2V0ID0g
KnN0b3BzLmxhc3QoKS5vZmZzZXQ7CkBAIC0xODEsNyArMTgwLDcgQEAgY2xhc3MgUmFkaWFsR3Jh
ZGllbnRBZGFwdGVyIHsgKHB1YmxpYykKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogCi0gICAg
dm9pZCBub3JtYWxpemVTdG9wc0FuZEVuZHBvaW50c091dHNpZGVSYW5nZShWZWN0b3I8R3JhZGll
bnRTdG9wPiYgc3RvcHMpCisgICAgdm9pZCBub3JtYWxpemVTdG9wc0FuZEVuZHBvaW50c091dHNp
ZGVSYW5nZShWZWN0b3I8R3JhZGllbnRTdG9wPiYgc3RvcHMsIENvbG9ySW50ZXJwb2xhdGlvbk1l
dGhvZCBjb2xvckludGVycG9sYXRpb25NZXRob2QpCiAgICAgewogICAgICAgICBhdXRvIG51bVN0
b3BzID0gc3RvcHMuc2l6ZSgpOwogCkBAIC0yMDUsOCArMjA0LDcgQEAgY2xhc3MgUmFkaWFsR3Jh
ZGllbnRBZGFwdGVyIHsgKHB1YmxpYykKICAgICAgICAgICAgICAgICBmbG9hdCBuZXh0T2Zmc2V0
ID0gKnN0b3BzW2ZpcnN0WmVyb09yR3JlYXRlckluZGV4XS5vZmZzZXQ7CiAKICAgICAgICAgICAg
ICAgICBmbG9hdCBpbnRlclN0b3BQcm9wb3J0aW9uID0gLXByZXZPZmZzZXQgLyAobmV4dE9mZnNl
dCAtIHByZXZPZmZzZXQpOwotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiB3aGVuIHdlIGludGVy
cG9sYXRlIGdyYWRpZW50cyB1c2luZyBwcmVtdWx0aXBsaWVkIGNvbG9ycywgdGhpcyBzaG91bGQg
ZG8gcHJlbXVsdGlwbGljYXRpb24uCi0gICAgICAgICAgICAgICAgQ29sb3IgYmxlbmRlZENvbG9y
ID0gYmxlbmQoc3RvcHNbZmlyc3RaZXJvT3JHcmVhdGVySW5kZXggLSAxXS5jb2xvciwgc3RvcHNb
Zmlyc3RaZXJvT3JHcmVhdGVySW5kZXhdLmNvbG9yLCB7IGludGVyU3RvcFByb3BvcnRpb24gfSk7
CisgICAgICAgICAgICAgICAgYXV0byBibGVuZGVkQ29sb3IgPSBpbnRlcnBvbGF0ZUNvbG9ycyhj
b2xvckludGVycG9sYXRpb25NZXRob2QsIHN0b3BzW2ZpcnN0WmVyb09yR3JlYXRlckluZGV4IC0g
MV0uY29sb3IsIDEuMGYgLSBpbnRlclN0b3BQcm9wb3J0aW9uLCBzdG9wc1tmaXJzdFplcm9Pckdy
ZWF0ZXJJbmRleF0uY29sb3IsIGludGVyU3RvcFByb3BvcnRpb24pOwogCiAgICAgICAgICAgICAg
ICAgLy8gQ2xhbXAgdGhlIHBvc2l0aW9ucyB0byAwIGFuZCBzZXQgdGhlIGNvbG9yLgogICAgICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlyc3RaZXJvT3JHcmVhdGVySW5kZXg7
ICsraSkgewpAQCAtMjM2LDcgKzIzNCw3IEBAIGNsYXNzIENvbmljR3JhZGllbnRBZGFwdGVyIHsg
KHB1YmxpYykKICAgICBmbG9hdCBncmFkaWVudExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIDE7IH0K
ICAgICBmbG9hdCBtYXhFeHRlbnQoZmxvYXQsIGZsb2F0KSBjb25zdCB7IHJldHVybiAxOyB9CiAK
LSAgICB2b2lkIG5vcm1hbGl6ZVN0b3BzQW5kRW5kcG9pbnRzT3V0c2lkZVJhbmdlKFZlY3RvcjxH
cmFkaWVudFN0b3A+JiBzdG9wcykKKyAgICB2b2lkIG5vcm1hbGl6ZVN0b3BzQW5kRW5kcG9pbnRz
T3V0c2lkZVJhbmdlKFZlY3RvcjxHcmFkaWVudFN0b3A+JiBzdG9wcywgQ29sb3JJbnRlcnBvbGF0
aW9uTWV0aG9kIGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCkKICAgICB7CiAgICAgICAgIHNpemVf
dCBudW1TdG9wcyA9IHN0b3BzLnNpemUoKTsKICAgICAgICAgc2l6ZV90IGxhc3RTdG9wSW5kZXgg
PSBudW1TdG9wcyAtIDE7CkBAIC0yNTYsOCArMjU0LDcgQEAgY2xhc3MgQ29uaWNHcmFkaWVudEFk
YXB0ZXIgeyAocHVibGljKQogICAgICAgICAgICAgICAgIGZsb2F0IG5leHRPZmZzZXQgPSAqc3Rv
cHNbaW5kZXhdLm9mZnNldDsKIAogICAgICAgICAgICAgICAgIGZsb2F0IGludGVyU3RvcFByb3Bv
cnRpb24gPSAtcHJldmlvdXNPZmZzZXQgLyAobmV4dE9mZnNldCAtIHByZXZpb3VzT2Zmc2V0KTsK
LSAgICAgICAgICAgICAgICAvLyBGSVhNRTogd2hlbiB3ZSBpbnRlcnBvbGF0ZSBncmFkaWVudHMg
dXNpbmcgcHJlbXVsdGlwbGllZCBjb2xvcnMsIHRoaXMgc2hvdWxkIGRvIHByZW11bHRpcGxpY2F0
aW9uLgotICAgICAgICAgICAgICAgIENvbG9yIGJsZW5kZWRDb2xvciA9IGJsZW5kKHN0b3BzW2lu
ZGV4IC0gMV0uY29sb3IsIHN0b3BzW2luZGV4XS5jb2xvciwgeyBpbnRlclN0b3BQcm9wb3J0aW9u
IH0pOworICAgICAgICAgICAgICAgIGF1dG8gYmxlbmRlZENvbG9yID0gaW50ZXJwb2xhdGVDb2xv
cnMoY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBzdG9wc1tpbmRleCAtIDFdLmNvbG9yLCAxLjBm
IC0gaW50ZXJTdG9wUHJvcG9ydGlvbiwgc3RvcHNbaW5kZXhdLmNvbG9yLCBpbnRlclN0b3BQcm9w
b3J0aW9uKTsKIAogICAgICAgICAgICAgICAgIC8vIENsYW1wIHRoZSBwb3NpdGlvbnMgdG8gMCBh
bmQgc2V0IHRoZSBjb2xvci4KICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGluZGV4OyArK2kpIHsKQEAgLTI4Niw4ICsyODMsNyBAQCBjbGFzcyBDb25pY0dyYWRpZW50QWRh
cHRlciB7IChwdWJsaWMpCiAgICAgICAgICAgICAgICAgZmxvYXQgbmV4dE9mZnNldCA9ICpzdG9w
c1tpbmRleCArIDFdLm9mZnNldDsKIAogICAgICAgICAgICAgICAgIGZsb2F0IGludGVyU3RvcFBy
b3BvcnRpb24gPSAoMSAtIHByZXZpb3VzT2Zmc2V0KSAvIChuZXh0T2Zmc2V0IC0gcHJldmlvdXNP
ZmZzZXQpOwotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiB3aGVuIHdlIGludGVycG9sYXRlIGdy
YWRpZW50cyB1c2luZyBwcmVtdWx0aXBsaWVkIGNvbG9ycywgdGhpcyBzaG91bGQgZG8gcHJlbXVs
dGlwbGljYXRpb24uCi0gICAgICAgICAgICAgICAgQ29sb3IgYmxlbmRlZENvbG9yID0gYmxlbmQo
c3RvcHNbaW5kZXhdLmNvbG9yLCBzdG9wc1tpbmRleCArIDFdLmNvbG9yLCB7IGludGVyU3RvcFBy
b3BvcnRpb24gfSk7CisgICAgICAgICAgICAgICAgYXV0byBibGVuZGVkQ29sb3IgPSBpbnRlcnBv
bGF0ZUNvbG9ycyhjb2xvckludGVycG9sYXRpb25NZXRob2QsIHN0b3BzW2luZGV4XS5jb2xvciwg
MS4wZiAtIGludGVyU3RvcFByb3BvcnRpb24sIHN0b3BzW2luZGV4ICsgMV0uY29sb3IsIGludGVy
U3RvcFByb3BvcnRpb24pOwogCiAgICAgICAgICAgICAgICAgLy8gQ2xhbXAgdGhlIHBvc2l0aW9u
cyB0byAxIGFuZCBzZXQgdGhlIGNvbG9yLgogICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSBpbmRleCArIDE7IGkgPCBudW1TdG9wczsgKytpKSB7CkBAIC00ODUsOCArNDgxLDcgQEAgR3Jh
ZGllbnQ6OkNvbG9yU3RvcFZlY3RvciBDU1NHcmFkaWVudFZhbHVlOjpjb21wdXRlU3RvCiAgICAg
ICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgOTsgKyt5KSB7CiAgICAgICAgICAgICBmbG9hdCBy
ZWxhdGl2ZU9mZnNldCA9ICgqbmV3U3RvcHNbeV0ub2Zmc2V0IC0gb2Zmc2V0MSkgLyAob2Zmc2V0
MiAtIG9mZnNldDEpOwogICAgICAgICAgICAgZmxvYXQgbXVsdGlwbGllciA9IHN0ZDo6cG93KHJl
bGF0aXZlT2Zmc2V0LCBzdGQ6OmxvZyguNWYpIC8gc3RkOjpsb2cobWlkcG9pbnQpKTsKLSAgICAg
ICAgICAgIC8vIEZJWE1FOiBXaHkgbm90IHByZW11bHRpcGx5IGhlcmU/Ci0gICAgICAgICAgICBu
ZXdTdG9wc1t5XS5jb2xvciA9IGJsZW5kV2l0aG91dFByZW11bHRpcGx5KGNvbG9yMSwgY29sb3Iy
LCB7IG11bHRpcGxpZXIgfSk7CisgICAgICAgICAgICBuZXdTdG9wc1t5XS5jb2xvciA9IGludGVy
cG9sYXRlQ29sb3JzKG1fY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb2xvcjEsIDEuMGYgLSBt
dWx0aXBsaWVyLCBjb2xvcjIsIG11bHRpcGxpZXIpOwogICAgICAgICB9CiAKICAgICAgICAgc3Rv
cHMucmVtb3ZlKHgpOwpAQCAtNTU3LDcgKzU1Miw3IEBAIEdyYWRpZW50OjpDb2xvclN0b3BWZWN0
b3IgQ1NTR3JhZGllbnRWYWx1ZTo6Y29tcHV0ZVN0bwogCiAgICAgLy8gSWYgdGhlIGdyYWRpZW50
IGdvZXMgb3V0c2lkZSB0aGUgMC0xIHJhbmdlLCBub3JtYWxpemUgaXQgYnkgbW92aW5nIHRoZSBl
bmRwb2ludHMsIGFuZCBhZGp1c3RpbmcgdGhlIHN0b3BzLgogICAgIGlmIChzdG9wcy5zaXplKCkg
PiAxICYmICgqc3RvcHMuZmlyc3QoKS5vZmZzZXQgPCAwIHx8ICpzdG9wcy5sYXN0KCkub2Zmc2V0
ID4gMSkpCi0gICAgICAgIGdyYWRpZW50QWRhcHRlci5ub3JtYWxpemVTdG9wc0FuZEVuZHBvaW50
c091dHNpZGVSYW5nZShzdG9wcyk7CisgICAgICAgIGdyYWRpZW50QWRhcHRlci5ub3JtYWxpemVT
dG9wc0FuZEVuZHBvaW50c091dHNpZGVSYW5nZShzdG9wcywgbV9jb2xvckludGVycG9sYXRpb25N
ZXRob2QpOwogICAgIAogICAgIEdyYWRpZW50OjpDb2xvclN0b3BWZWN0b3IgcmVzdWx0OwogICAg
IHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHN0b3BzLnNpemUoKSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5jcHAJKHJldmlzaW9u
IDI4NzIzMykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiwxMCArMTA2LDExIEBAIENTU1BhcnNlckNvbnRleHQ6
OkNTU1BhcnNlckNvbnRleHQoY29uc3QgRG9jdW1lbnQmIGRvYwogICAgICwgaGFzUHNldWRvQ2xh
c3NFbmFibGVkIHsgZG9jdW1lbnQuc2V0dGluZ3MoKS5oYXNQc2V1ZG9DbGFzc0VuYWJsZWQoKSB9
CiAgICAgLCBjYXNjYWRlTGF5ZXJzRW5hYmxlZCB7IGRvY3VtZW50LnNldHRpbmdzKCkuY3NzQ2Fz
Y2FkZUxheWVyc0VuYWJsZWQoKSB9CiAgICAgLCBjb250YWluZXJRdWVyaWVzRW5hYmxlZCB7IGRv
Y3VtZW50LnNldHRpbmdzKCkuY3NzQ29udGFpbmVyUXVlcmllc0VuYWJsZWQoKSB9CisgICAgLCBv
dmVyZmxvd0NsaXBFbmFibGVkIHsgZG9jdW1lbnQuc2V0dGluZ3MoKS5vdmVyZmxvd0NsaXBFbmFi
bGVkKCkgfQorICAgICwgZ3JhZGllbnRQcmVtdWx0aXBsaWVkQWxwaGFJbnRlcnBvbGF0aW9uRW5h
YmxlZCB7IGRvY3VtZW50LnNldHRpbmdzKCkuY3NzR3JhZGllbnRQcmVtdWx0aXBsaWVkQWxwaGFJ
bnRlcnBvbGF0aW9uRW5hYmxlZCgpIH0KICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQog
ICAgICwgYXR0YWNobWVudEVuYWJsZWQgeyBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLmF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCgpIH0KICNlbmRpZgotICAgICwgb3Zl
cmZsb3dDbGlwRW5hYmxlZCB7IGRvY3VtZW50LnNldHRpbmdzKCkub3ZlcmZsb3dDbGlwRW5hYmxl
ZCgpIH0KIHsKIH0KIApAQCAtMTUzLDEwICsxNTQsMTEgQEAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IENTU1BhcnNlckNvbnRleHQmIGEsIGNvbnN0IENTU1BhCiAgICAgICAgICYmIGEuaGFzUHNldWRv
Q2xhc3NFbmFibGVkID09IGIuaGFzUHNldWRvQ2xhc3NFbmFibGVkCiAgICAgICAgICYmIGEuY2Fz
Y2FkZUxheWVyc0VuYWJsZWQgPT0gYi5jYXNjYWRlTGF5ZXJzRW5hYmxlZAogICAgICAgICAmJiBh
LmNvbnRhaW5lclF1ZXJpZXNFbmFibGVkID09IGIuY29udGFpbmVyUXVlcmllc0VuYWJsZWQKKyAg
ICAgICAgJiYgYS5vdmVyZmxvd0NsaXBFbmFibGVkID09IGIub3ZlcmZsb3dDbGlwRW5hYmxlZAor
ICAgICAgICAmJiBhLmdyYWRpZW50UHJlbXVsdGlwbGllZEFscGhhSW50ZXJwb2xhdGlvbkVuYWJs
ZWQgPT0gYi5ncmFkaWVudFByZW11bHRpcGxpZWRBbHBoYUludGVycG9sYXRpb25FbmFibGVkCiAj
aWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICAgICAgJiYgYS5hdHRhY2htZW50RW5h
YmxlZCA9PSBiLmF0dGFjaG1lbnRFbmFibGVkCiAjZW5kaWYKLSAgICAgICAgJiYgYS5vdmVyZmxv
d0NsaXBFbmFibGVkID09IGIub3ZlcmZsb3dDbGlwRW5hYmxlZAogICAgIDsKIH0KIApAQCAtMTkz
LDEyICsxOTUsMTMgQEAgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIGNvbnN0IENTU1BhcnNlckNv
bnRleHQmIGNvbnRlCiAgICAgICAgIHwgY29udGV4dC5oYXNQc2V1ZG9DbGFzc0VuYWJsZWQgICAg
ICAgICAgICAgICAgICAgICA8PCAyMgogICAgICAgICB8IGNvbnRleHQuY2FzY2FkZUxheWVyc0Vu
YWJsZWQgICAgICAgICAgICAgICAgICAgICAgPDwgMjMKICAgICAgICAgfCBjb250ZXh0LmNvbnRh
aW5lclF1ZXJpZXNFbmFibGVkICAgICAgICAgICAgICAgICAgIDw8IDI0CisgICAgICAgIHwgY29u
dGV4dC5vdmVyZmxvd0NsaXBFbmFibGVkICAgICAgICAgICAgICAgICAgICAgICA8PCAyNQorICAg
ICAgICB8IGNvbnRleHQuZ3JhZGllbnRQcmVtdWx0aXBsaWVkQWxwaGFJbnRlcnBvbGF0aW9uRW5h
YmxlZCA8PCAyNgogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgICAgIHwgY29u
dGV4dC5hdHRhY2htZW50RW5hYmxlZCAgICAgICAgICAgICAgICAgICAgICAgICA8PCAyNQorICAg
ICAgICB8IGNvbnRleHQuYXR0YWNobWVudEVuYWJsZWQgICAgICAgICAgICAgICAgICAgICAgICAg
PDwgMjcKICNlbmRpZgotICAgICAgICB8IGNvbnRleHQub3ZlcmZsb3dDbGlwRW5hYmxlZCAgICAg
ICAgICAgICAgICAgICAgICAgPDwgMjYKLSAgICAgICAgfCBjb250ZXh0LmFjY2VudENvbG9yRW5h
YmxlZCAgICAgICAgICAgICAgICAgICAgICAgIDw8IDI3Ci0gICAgICAgIHwgY29udGV4dC5tb2Rl
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAyODsgLy8gVGhpcyBpcyBt
dWx0aXBsZSBiaXRzLCBzbyBrZWVwIGl0IGxhc3QuCisgICAgICAgIHwgY29udGV4dC5hY2NlbnRD
b2xvckVuYWJsZWQgICAgICAgICAgICAgICAgICAgICAgICA8PCAyOAorICAgICAgICB8IGNvbnRl
eHQubW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgMjk7IC8vIFRo
aXMgaXMgbXVsdGlwbGUgYml0cywgc28ga2VlcCBpdCBsYXN0LgogICAgIGFkZChoYXNoZXIsIGNv
bnRleHQuYmFzZVVSTCwgY29udGV4dC5jaGFyc2V0LCBiaXRzKTsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmgJKHJldmlzaW9uIDI4NzIz
MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NSwxMyArODUsMTMgQEAgc3RydWN0IENTU1BhcnNlckNvbnRleHQgewog
ICAgIGJvb2wgaGFzUHNldWRvQ2xhc3NFbmFibGVkIHsgZmFsc2UgfTsKICAgICBib29sIGNhc2Nh
ZGVMYXllcnNFbmFibGVkIHsgZmFsc2UgfTsKICAgICBib29sIGNvbnRhaW5lclF1ZXJpZXNFbmFi
bGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG92ZXJmbG93Q2xpcEVuYWJsZWQgeyBmYWxzZSB9Owor
ICAgIGJvb2wgZ3JhZGllbnRQcmVtdWx0aXBsaWVkQWxwaGFJbnRlcnBvbGF0aW9uRW5hYmxlZCB7
IGZhbHNlIH07CiAKICAgICAvLyBSdW50aW1lRW5hYmxlZEZlYXR1cmVzLgogI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgYm9vbCBhdHRhY2htZW50RW5hYmxlZCB7IGZhbHNlIH07
CiAjZW5kaWYKLQotICAgIGJvb2wgb3ZlcmZsb3dDbGlwRW5hYmxlZCB7IGZhbHNlIH07CiAKICAg
ICBDU1NQYXJzZXJDb250ZXh0KENTU1BhcnNlck1vZGUsIGNvbnN0IFVSTCYgYmFzZVVSTCA9IFVS
TCgpKTsKICAgICBXRUJDT1JFX0VYUE9SVCBDU1NQYXJzZXJDb250ZXh0KGNvbnN0IERvY3VtZW50
JiwgY29uc3QgVVJMJiBiYXNlVVJMID0gVVJMKCksIGNvbnN0IFN0cmluZyYgY2hhcnNldCA9IGVt
cHR5U3RyaW5nKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAkocmV2aXNpb24gMjg3MjMzKQorKysgU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNDM5LDI0ICsyNDM5LDYgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29s
b3JNaXhQZXJjZW50YWdlcz4gbm9ybWFsaXplZE1pCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
Ly8gQWZ0ZXIgaW50ZXJwb2xhdGlvbiwgaWYgdGhlIGNvbG9yIGlzIGluIHRoZSBIV0Igb3IgSFNM
IGNvbG9yIHNwYWNlLCBpdCBuZWVkcyB0byBiZSBjYW5vbmljYWxpemVkIGJhY2sgdG8gc1JHQiBh
cwotLy8gaXMgZG9uZSBhdCBwYXJzZSB0aW1lLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5
cGU+IENvbG9yIG1ha2VDYW5vbmljYWxDb2xvcihDb2xvclR5cGUgY29sb3IpCi17Ci0gICAgcmV0
dXJuIGNvbG9yOwotfQotCi10ZW1wbGF0ZTw+IENvbG9yIG1ha2VDYW5vbmljYWxDb2xvcjxIV0JB
PGZsb2F0Pj4oSFdCQTxmbG9hdD4gY29sb3IpCi17Ci0gICAgcmV0dXJuIGNvbnZlcnRDb2xvcjxT
UkdCQTx1aW50OF90Pj4oY29sb3IpOwotfQotCi10ZW1wbGF0ZTw+IENvbG9yIG1ha2VDYW5vbmlj
YWxDb2xvcjxIU0xBPGZsb2F0Pj4oSFNMQTxmbG9hdD4gY29sb3IpCi17Ci0gICAgcmV0dXJuIGNv
bnZlcnRDb2xvcjxTUkdCQTx1aW50OF90Pj4oY29sb3IpOwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBJbnRlcnBvbGF0aW9uTWV0aG9kPiBzdGF0aWMgQ29sb3IgbWl4Q29sb3JDb21wb25lbnRzVXNp
bmdDb2xvckludGVycG9sYXRpb25NZXRob2QoSW50ZXJwb2xhdGlvbk1ldGhvZCBpbnRlcnBvbGF0
aW9uTWV0aG9kLCBDb2xvck1peFBlcmNlbnRhZ2VzIG1peFBlcmNlbnRhZ2VzLCBjb25zdCBDb2xv
ciYgY29sb3IxLCBjb25zdCBDb2xvciYgY29sb3IyKQogewogICAgIHVzaW5nIENvbG9yVHlwZSA9
IHR5cGVuYW1lIEludGVycG9sYXRpb25NZXRob2Q6OkNvbG9yVHlwZTsKQEAgLTI5NDYsMTUgKzI5
MjgsMjAgQEAgc3RhdGljIGJvb2wgY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudENvbG9yU3RvcChD
U1NQYXJzCiAgICAgcmV0dXJuIHN0b3AuY29sb3IgJiYgYXJncy5hdEVuZCgpOwogfQogCitzdGF0
aWMgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBncmFkaWVudEFscGhhUHJlbXVsdGlwbGljYXRpb24o
Y29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICByZXR1cm4gY29udGV4dC5n
cmFkaWVudFByZW11bHRpcGxpZWRBbHBoYUludGVycG9sYXRpb25FbmFibGVkID8gQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCA6IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVu
cHJlbXVsdGlwbGllZDsKK30KKwogc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZURlcHJl
Y2F0ZWRHcmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBjb25zdCBDU1NQYXJzZXJD
b250ZXh0JiBjb250ZXh0KQogewogICAgIFJlZlB0cjxDU1NHcmFkaWVudFZhbHVlPiByZXN1bHQ7
CiAgICAgQ1NTVmFsdWVJRCBpZCA9IGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5p
ZCgpOwogICAgIGJvb2wgaXNEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQgPSAoaWQgPT0gQ1NTVmFs
dWVSYWRpYWwpOwogICAgIGlmIChpc0RlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudCkKLSAgICAgICAg
cmVzdWx0ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKE5vblJlcGVhdGluZywgQ1NT
RGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50LCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JH
QiB7IH0sIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKKyAgICAg
ICAgcmVzdWx0ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKE5vblJlcGVhdGluZywg
Q1NTRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50LCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6
U1JHQiB7IH0sIGdyYWRpZW50QWxwaGFQcmVtdWx0aXBsaWNhdGlvbihjb250ZXh0KSB9KTsKICAg
ICBlbHNlIGlmIChpZCA9PSBDU1NWYWx1ZUxpbmVhcikKLSAgICAgICAgcmVzdWx0ID0gQ1NTTGlu
ZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKE5vblJlcGVhdGluZywgQ1NTRGVwcmVjYXRlZExpbmVh
ckdyYWRpZW50LCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhhUHJl
bXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKKyAgICAgICAgcmVzdWx0ID0gQ1NT
TGluZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKE5vblJlcGVhdGluZywgQ1NTRGVwcmVjYXRlZExp
bmVhckdyYWRpZW50LCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIGdyYWRp
ZW50QWxwaGFQcmVtdWx0aXBsaWNhdGlvbihjb250ZXh0KSB9KTsKICAgICBpZiAoIXJlc3VsdCB8
fCAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKQEAgLTMwNTQsNyArMzA0MSw3IEBAIHN0YXRpYyBib29sIGNvbnN1bWVHcmFk
aWVudENvbG9yU3RvcHMoQ1NTUGFyc2VyVG9rZW5SYQogCiBzdGF0aWMgUmVmUHRyPENTU1ZhbHVl
PiBjb25zdW1lRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFy
Z3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIENTU0dyYWRpZW50UmVwZWF0IHJl
cGVhdGluZykKIHsKLSAgICBhdXRvIHJlc3VsdCA9IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNy
ZWF0ZShyZXBlYXRpbmcsIENTU1ByZWZpeGVkUmFkaWFsR3JhZGllbnQsIHsgQ29sb3JJbnRlcnBv
bGF0aW9uTWV0aG9kOjpTUkdCIHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0
aXBsaWVkIH0pOworICAgIGF1dG8gcmVzdWx0ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3Jl
YXRlKHJlcGVhdGluZywgQ1NTUHJlZml4ZWRSYWRpYWxHcmFkaWVudCwgeyBDb2xvckludGVycG9s
YXRpb25NZXRob2Q6OlNSR0IgeyB9LCBncmFkaWVudEFscGhhUHJlbXVsdGlwbGljYXRpb24oY29u
dGV4dCkgfSk7CiAKICAgICBhdXRvIGNlbnRlckNvb3JkaW5hdGUgPSBjb25zdW1lT25lT3JUd29W
YWx1ZWRQb3NpdGlvbkNvb3JkaW5hdGVzKGFyZ3MsIGNvbnRleHQubW9kZSwgVW5pdGxlc3NRdWly
azo6Rm9yYmlkKTsKICAgICBpZiAoY2VudGVyQ29vcmRpbmF0ZSAmJiAhY29uc3VtZUNvbW1hSW5j
bHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKQEAgLTMwOTgsNyArMzA4NSw3IEBAIHN0YXRpYyBSZWZQ
dHI8Q1NTVmFsdWU+IGNvbnN1bWVEZXByZWNhdGVkUmFkaWFsR3JhZGllbgogCiBzdGF0aWMgUmVm
UHRyPENTU1ZhbHVlPiBjb25zdW1lUmFkaWFsR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
YXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgQ1NTR3JhZGllbnRSZXBlYXQg
cmVwZWF0aW5nKQogewotICAgIFJlZlB0cjxDU1NSYWRpYWxHcmFkaWVudFZhbHVlPiByZXN1bHQg
PSBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGUocmVwZWF0aW5nLCBDU1NSYWRpYWxHcmFk
aWVudCwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRp
cGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CisgICAgUmVmUHRyPENTU1JhZGlhbEdyYWRp
ZW50VmFsdWU+IHJlc3VsdCA9IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZShyZXBlYXRp
bmcsIENTU1JhZGlhbEdyYWRpZW50LCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7
IH0sIGdyYWRpZW50QWxwaGFQcmVtdWx0aXBsaWNhdGlvbihjb250ZXh0KSB9KTsKIAogICAgIFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc2hhcGU7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBzaXplS2V5d29yZDsKQEAgLTMxODYsNyArMzE3Myw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NT
VmFsdWU+IGNvbnN1bWVSYWRpYWxHcmFkaWVudChDU1NQYXJzZQogCiBzdGF0aWMgUmVmUHRyPENT
U1ZhbHVlPiBjb25zdW1lTGluZWFyR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywg
Y29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0
aW5nLCBDU1NHcmFkaWVudFR5cGUgZ3JhZGllbnRUeXBlKQogewotICAgIFJlZlB0cjxDU1NMaW5l
YXJHcmFkaWVudFZhbHVlPiByZXN1bHQgPSBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjcmVhdGUo
cmVwZWF0aW5nLCBncmFkaWVudFR5cGUsIHsgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdC
IHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkIH0pOworICAgIFJl
ZlB0cjxDU1NMaW5lYXJHcmFkaWVudFZhbHVlPiByZXN1bHQgPSBDU1NMaW5lYXJHcmFkaWVudFZh
bHVlOjpjcmVhdGUocmVwZWF0aW5nLCBncmFkaWVudFR5cGUsIHsgQ29sb3JJbnRlcnBvbGF0aW9u
TWV0aG9kOjpTUkdCIHsgfSwgZ3JhZGllbnRBbHBoYVByZW11bHRpcGxpY2F0aW9uKGNvbnRleHQp
IH0pOwogCiAgICAgYm9vbCBleHBlY3RDb21tYSA9IHRydWU7CiAgICAgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBhbmdsZSA9IGNvbnN1bWVBbmdsZShhcmdzLCBjb250ZXh0Lm1vZGUsIFVuaXRs
ZXNzUXVpcms6OkZvcmJpZCwgVW5pdGxlc3NaZXJvUXVpcms6OkFsbG93KTsKQEAgLTMyMjAsNyAr
MzIwNyw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVMaW5lYXJHcmFkaWVudChD
U1NQYXJzZQogc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUNvbmljR3JhZGllbnQoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwg
Q1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0aW5nKQogewogI2lmIEVOQUJMRShDU1NfQ09OSUNfR1JB
RElFTlRTKQotICAgIFJlZlB0cjxDU1NDb25pY0dyYWRpZW50VmFsdWU+IHJlc3VsdCA9IENTU0Nv
bmljR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGluZywgeyBDb2xvckludGVycG9sYXRpb25N
ZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQg
fSk7CisgICAgUmVmUHRyPENTU0NvbmljR3JhZGllbnRWYWx1ZT4gcmVzdWx0ID0gQ1NTQ29uaWNH
cmFkaWVudFZhbHVlOjpjcmVhdGUocmVwZWF0aW5nLCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhv
ZDo6U1JHQiB7IH0sIGdyYWRpZW50QWxwaGFQcmVtdWx0aXBsaWNhdGlvbihjb250ZXh0KSB9KTsK
IAogICAgIGJvb2wgZXhwZWN0Q29tbWEgPSBmYWxzZTsKICAgICBpZiAoYXJncy5wZWVrKCkudHlw
ZSgpID09IElkZW50VG9rZW4pIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yQ29tcG9uZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yQ29tcG9uZW50cy5oCShyZXZpc2lvbiAyODcyMzMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbXBvbmVudHMuaAkod29ya2luZyBj
b3B5KQpAQCAtNjgsNiArNjgsOCBAQCBzdHJ1Y3QgQ29sb3JDb21wb25lbnRzIHsKICAgICB0ZW1w
bGF0ZTxzaXplX3QgU3RhcnQsIHNpemVfdCBFbmQ+CiAgICAgY29uc3RleHByIENvbG9yQ29tcG9u
ZW50czxULCBFbmQgLSBTdGFydD4gc3Vic2V0KCkgY29uc3Q7CiAKKyAgICBjb25zdGV4cHIgc2l6
ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBTaXplOyB9CisKICAgICBzdGQ6OmFycmF5PFQsIE4+
IGNvbXBvbmVudHM7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvckludGVycG9sYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvckludGVycG9sYXRpb24uaAkocmV2aXNpb24gMjg3MjMzKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JJbnRlcnBvbGF0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIgorI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAi
Q29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLmgiCiAjaW5jbHVkZSAiQ29sb3JOb3JtYWxpemF0aW9u
LmgiCiAjaW5jbHVkZSAiQ29sb3JUeXBlcy5oIgpAQCAtMzYsMTQgKzM3LDE0IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gZml4dXBIdWVDb21wb25lbnRz
UHJpb3JUb0ludGVycG9sYXRpb24oSHVlSW50ZXJwb2xhdGlvbk1ldGhvZCwgZmxvYXQsIGZsb2F0
KTsKIAotdGVtcGxhdGU8c2l6ZV90IEksIEFscGhhUHJlbXVsdGlwbGljYXRpb24gYWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiwgdHlwZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhvZD4KLXN0ZDo6cGFpcjxm
bG9hdCwgZmxvYXQ+IHByZUludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uRm9yQ29tcG9uZW50KElu
dGVycG9sYXRpb25NZXRob2QgaW50ZXJwb2xhdGlvbk1ldGhvZCwgQ29sb3JDb21wb25lbnRzPGZs
b2F0LCA0PiBjb2xvckNvbXBvbmVudHMxLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbG9y
Q29tcG9uZW50czIpCit0ZW1wbGF0ZTxzaXplX3QgSSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBh
bHBoYVByZW11bHRpcGxpY2F0aW9uLCB0eXBlbmFtZSBJbnRlcnBvbGF0aW9uTWV0aG9kQ29sb3JT
cGFjZT4KK3N0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IHByZUludGVycG9sYXRpb25Ob3JtYWxpemF0
aW9uRm9yQ29tcG9uZW50KEludGVycG9sYXRpb25NZXRob2RDb2xvclNwYWNlIGludGVycG9sYXRp
b25NZXRob2RDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbG9yQ29tcG9u
ZW50czEsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gY29sb3JDb21wb25lbnRzMikKIHsKLSAg
ICB1c2luZyBDb2xvclR5cGUgPSB0eXBlbmFtZSBJbnRlcnBvbGF0aW9uTWV0aG9kOjpDb2xvclR5
cGU7CisgICAgdXNpbmcgQ29sb3JUeXBlID0gdHlwZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhvZENv
bG9yU3BhY2U6OkNvbG9yVHlwZTsKICAgICBjb25zdGV4cHIgYXV0byBjb21wb25lbnRJbmZvID0g
Q29sb3JUeXBlOjpNb2RlbDo6Y29tcG9uZW50SW5mbzsKIAogICAgIGlmIGNvbnN0ZXhwciAoY29t
cG9uZW50SW5mb1tJXS50eXBlID09IENvbG9yQ29tcG9uZW50VHlwZTo6QW5nbGUpCi0gICAgICAg
IHJldHVybiBmaXh1cEh1ZUNvbXBvbmVudHNQcmlvclRvSW50ZXJwb2xhdGlvbihpbnRlcnBvbGF0
aW9uTWV0aG9kLmh1ZUludGVycG9sYXRpb25NZXRob2QsIGNvbG9yQ29tcG9uZW50czFbSV0sIGNv
bG9yQ29tcG9uZW50czJbSV0pOworICAgICAgICByZXR1cm4gZml4dXBIdWVDb21wb25lbnRzUHJp
b3JUb0ludGVycG9sYXRpb24oaW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2UuaHVlSW50ZXJw
b2xhdGlvbk1ldGhvZCwgY29sb3JDb21wb25lbnRzMVtJXSwgY29sb3JDb21wb25lbnRzMltJXSk7
CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoYWxwaGFQcmVtdWx0aXBsaWNhdGlv
biA9PSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkKQogICAgICAgICAgICAg
cmV0dXJuIHsgY29sb3JDb21wb25lbnRzMVtJXSAqIGNvbG9yQ29tcG9uZW50czFbM10sIGNvbG9y
Q29tcG9uZW50czJbSV0gKiBjb2xvckNvbXBvbmVudHMyWzNdIH07CkBAIC01MiwxMiArNTMsMTIg
QEAgc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gcHJlSW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb25G
CiAgICAgfQogfQogCi10ZW1wbGF0ZTxBbHBoYVByZW11bHRpcGxpY2F0aW9uIGFscGhhUHJlbXVs
dGlwbGljYXRpb24sIHR5cGVuYW1lIEludGVycG9sYXRpb25NZXRob2Q+Ci1zdGQ6OnBhaXI8Q29s
b3JDb21wb25lbnRzPGZsb2F0LCA0PiwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0Pj4gcHJlSW50
ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb24oSW50ZXJwb2xhdGlvbk1ldGhvZCBpbnRlcnBvbGF0aW9u
TWV0aG9kLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbG9yQ29tcG9uZW50czEsIENvbG9y
Q29tcG9uZW50czxmbG9hdCwgND4gY29sb3JDb21wb25lbnRzMikKK3RlbXBsYXRlPEFscGhhUHJl
bXVsdGlwbGljYXRpb24gYWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwgdHlwZW5hbWUgSW50ZXJwb2xh
dGlvbk1ldGhvZENvbG9yU3BhY2U+CitzdGQ6OnBhaXI8Q29sb3JDb21wb25lbnRzPGZsb2F0LCA0
PiwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0Pj4gcHJlSW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRp
b24oSW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2UgaW50ZXJwb2xhdGlvbk1ldGhvZENvbG9y
U3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gY29sb3JDb21wb25lbnRzMSwgQ29sb3JD
b21wb25lbnRzPGZsb2F0LCA0PiBjb2xvckNvbXBvbmVudHMyKQogewotICAgIGF1dG8gW2NvbG9y
QTAsIGNvbG9yQjBdID0gcHJlSW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb25Gb3JDb21wb25lbnQ8
MCwgYWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4oaW50ZXJwb2xhdGlvbk1ldGhvZCwgY29sb3JDb21w
b25lbnRzMSwgY29sb3JDb21wb25lbnRzMik7Ci0gICAgYXV0byBbY29sb3JBMSwgY29sb3JCMV0g
PSBwcmVJbnRlcnBvbGF0aW9uTm9ybWFsaXphdGlvbkZvckNvbXBvbmVudDwxLCBhbHBoYVByZW11
bHRpcGxpY2F0aW9uPihpbnRlcnBvbGF0aW9uTWV0aG9kLCBjb2xvckNvbXBvbmVudHMxLCBjb2xv
ckNvbXBvbmVudHMyKTsKLSAgICBhdXRvIFtjb2xvckEyLCBjb2xvckIyXSA9IHByZUludGVycG9s
YXRpb25Ob3JtYWxpemF0aW9uRm9yQ29tcG9uZW50PDIsIGFscGhhUHJlbXVsdGlwbGljYXRpb24+
KGludGVycG9sYXRpb25NZXRob2QsIGNvbG9yQ29tcG9uZW50czEsIGNvbG9yQ29tcG9uZW50czIp
OworICAgIGF1dG8gW2NvbG9yQTAsIGNvbG9yQjBdID0gcHJlSW50ZXJwb2xhdGlvbk5vcm1hbGl6
YXRpb25Gb3JDb21wb25lbnQ8MCwgYWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4oaW50ZXJwb2xhdGlv
bk1ldGhvZENvbG9yU3BhY2UsIGNvbG9yQ29tcG9uZW50czEsIGNvbG9yQ29tcG9uZW50czIpOwor
ICAgIGF1dG8gW2NvbG9yQTEsIGNvbG9yQjFdID0gcHJlSW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRp
b25Gb3JDb21wb25lbnQ8MSwgYWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4oaW50ZXJwb2xhdGlvbk1l
dGhvZENvbG9yU3BhY2UsIGNvbG9yQ29tcG9uZW50czEsIGNvbG9yQ29tcG9uZW50czIpOworICAg
IGF1dG8gW2NvbG9yQTIsIGNvbG9yQjJdID0gcHJlSW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb25G
b3JDb21wb25lbnQ8MiwgYWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4oaW50ZXJwb2xhdGlvbk1ldGhv
ZENvbG9yU3BhY2UsIGNvbG9yQ29tcG9uZW50czEsIGNvbG9yQ29tcG9uZW50czIpOwogCiAgICAg
cmV0dXJuIHsKICAgICAgICAgeyBjb2xvckEwLCBjb2xvckExLCBjb2xvckEyLCBjb2xvckNvbXBv
bmVudHMxWzNdIH0sCkBAIC02OCwxMCArNjksMTAgQEAgc3RkOjpwYWlyPENvbG9yQ29tcG9uZW50
czxmbG9hdCwgND4sIENvbG9yQ29tcG9uZW50czxmCiAKIC8vIE1BUks6IC0gUG9zdC1pbnRlcnBv
bGF0aW9uIG5vcm1hbGl6YXRpb24vZml4dXAKIAotdGVtcGxhdGU8c2l6ZV90IEksIEFscGhhUHJl
bXVsdGlwbGljYXRpb24gYWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwgdHlwZW5hbWUgSW50ZXJwb2xh
dGlvbk1ldGhvZD4KLWZsb2F0IHBvc3RJbnRlcnBvbGF0aW9uTm9ybWFsaXphdGlvbkZvckNvbXBv
bmVudChJbnRlcnBvbGF0aW9uTWV0aG9kLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbG9y
Q29tcG9uZW50cykKK3RlbXBsYXRlPHNpemVfdCBJLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGFs
cGhhUHJlbXVsdGlwbGljYXRpb24sIHR5cGVuYW1lIEludGVycG9sYXRpb25NZXRob2RDb2xvclNw
YWNlPgorZmxvYXQgcG9zdEludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uRm9yQ29tcG9uZW50KElu
dGVycG9sYXRpb25NZXRob2RDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNv
bG9yQ29tcG9uZW50cykKIHsKLSAgICB1c2luZyBDb2xvclR5cGUgPSB0eXBlbmFtZSBJbnRlcnBv
bGF0aW9uTWV0aG9kOjpDb2xvclR5cGU7CisgICAgdXNpbmcgQ29sb3JUeXBlID0gdHlwZW5hbWUg
SW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2U6OkNvbG9yVHlwZTsKICAgICBjb25zdGV4cHIg
YXV0byBjb21wb25lbnRJbmZvID0gQ29sb3JUeXBlOjpNb2RlbDo6Y29tcG9uZW50SW5mbzsKIAog
ICAgIGlmIGNvbnN0ZXhwciAoY29tcG9uZW50SW5mb1tJXS50eXBlICE9IENvbG9yQ29tcG9uZW50
VHlwZTo6QW5nbGUgJiYgYWxwaGFQcmVtdWx0aXBsaWNhdGlvbiA9PSBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpQcmVtdWx0aXBsaWVkKSB7CkBAIC04MiwxMyArODMsMTMgQEAgZmxvYXQgcG9zdElu
dGVycG9sYXRpb25Ob3JtYWxpemF0aW9uRm9yQ29tcG9uZW50KEludGVyCiAgICAgICAgIHJldHVy
biBjb2xvckNvbXBvbmVudHNbSV07CiB9CiAKLXRlbXBsYXRlPEFscGhhUHJlbXVsdGlwbGljYXRp
b24gYWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwgdHlwZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhvZD4K
LUNvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gcG9zdEludGVycG9sYXRpb25Ob3JtYWxpemF0aW9u
KEludGVycG9sYXRpb25NZXRob2QgaW50ZXJwb2xhdGlvbk1ldGhvZCwgQ29sb3JDb21wb25lbnRz
PGZsb2F0LCA0PiBjb2xvckNvbXBvbmVudHMpCit0ZW1wbGF0ZTxBbHBoYVByZW11bHRpcGxpY2F0
aW9uIGFscGhhUHJlbXVsdGlwbGljYXRpb24sIHR5cGVuYW1lIEludGVycG9sYXRpb25NZXRob2RD
b2xvclNwYWNlPgorQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBwb3N0SW50ZXJwb2xhdGlvbk5v
cm1hbGl6YXRpb24oSW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2UgaW50ZXJwb2xhdGlvbk1l
dGhvZENvbG9yU3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gY29sb3JDb21wb25lbnRz
KQogewogICAgIHJldHVybiB7Ci0gICAgICAgIHBvc3RJbnRlcnBvbGF0aW9uTm9ybWFsaXphdGlv
bkZvckNvbXBvbmVudDwwLCBhbHBoYVByZW11bHRpcGxpY2F0aW9uPihpbnRlcnBvbGF0aW9uTWV0
aG9kLCBjb2xvckNvbXBvbmVudHMpLAotICAgICAgICBwb3N0SW50ZXJwb2xhdGlvbk5vcm1hbGl6
YXRpb25Gb3JDb21wb25lbnQ8MSwgYWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4oaW50ZXJwb2xhdGlv
bk1ldGhvZCwgY29sb3JDb21wb25lbnRzKSwKLSAgICAgICAgcG9zdEludGVycG9sYXRpb25Ob3Jt
YWxpemF0aW9uRm9yQ29tcG9uZW50PDIsIGFscGhhUHJlbXVsdGlwbGljYXRpb24+KGludGVycG9s
YXRpb25NZXRob2QsIGNvbG9yQ29tcG9uZW50cyksCisgICAgICAgIHBvc3RJbnRlcnBvbGF0aW9u
Tm9ybWFsaXphdGlvbkZvckNvbXBvbmVudDwwLCBhbHBoYVByZW11bHRpcGxpY2F0aW9uPihpbnRl
cnBvbGF0aW9uTWV0aG9kQ29sb3JTcGFjZSwgY29sb3JDb21wb25lbnRzKSwKKyAgICAgICAgcG9z
dEludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uRm9yQ29tcG9uZW50PDEsIGFscGhhUHJlbXVsdGlw
bGljYXRpb24+KGludGVycG9sYXRpb25NZXRob2RDb2xvclNwYWNlLCBjb2xvckNvbXBvbmVudHMp
LAorICAgICAgICBwb3N0SW50ZXJwb2xhdGlvbk5vcm1hbGl6YXRpb25Gb3JDb21wb25lbnQ8Miwg
YWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4oaW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2UsIGNv
bG9yQ29tcG9uZW50cyksCiAgICAgICAgIGNvbG9yQ29tcG9uZW50c1szXQogICAgIH07CiAgfQpA
QCAtOTYsMTEgKzk3LDExIEBAIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gcG9zdEludGVycG9s
YXRpb25Ob3JtYWxpemF0aQogCiAvLyBNQVJLOiAtIEludGVycG9sYXRpb24KIAotdGVtcGxhdGU8
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBhbHBoYVByZW11bHRpcGxpY2F0aW9uLCB0eXBlbmFtZSBJ
bnRlcnBvbGF0aW9uTWV0aG9kPgotdHlwZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhvZDo6Q29sb3JU
eXBlIGludGVycG9sYXRlQ29sb3JDb21wb25lbnRzKEludGVycG9sYXRpb25NZXRob2QgaW50ZXJw
b2xhdGlvbk1ldGhvZCwgdHlwZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhvZDo6Q29sb3JUeXBlIGNv
bG9yMSwgZG91YmxlIGNvbG9yMU11bHRpcGxpZXIsIHR5cGVuYW1lIEludGVycG9sYXRpb25NZXRo
b2Q6OkNvbG9yVHlwZSBjb2xvcjIsIGRvdWJsZSBjb2xvcjJNdWx0aXBsaWVyKQordGVtcGxhdGU8
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBhbHBoYVByZW11bHRpcGxpY2F0aW9uLCB0eXBlbmFtZSBJ
bnRlcnBvbGF0aW9uTWV0aG9kQ29sb3JTcGFjZT4KK3R5cGVuYW1lIEludGVycG9sYXRpb25NZXRo
b2RDb2xvclNwYWNlOjpDb2xvclR5cGUgaW50ZXJwb2xhdGVDb2xvckNvbXBvbmVudHMoSW50ZXJw
b2xhdGlvbk1ldGhvZENvbG9yU3BhY2UgaW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2UsIHR5
cGVuYW1lIEludGVycG9sYXRpb25NZXRob2RDb2xvclNwYWNlOjpDb2xvclR5cGUgY29sb3IxLCBk
b3VibGUgY29sb3IxTXVsdGlwbGllciwgdHlwZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhvZENvbG9y
U3BhY2U6OkNvbG9yVHlwZSBjb2xvcjIsIGRvdWJsZSBjb2xvcjJNdWx0aXBsaWVyKQogewogICAg
IC8vIDEuIEFwcGx5IHByZS1pbnRlcnBvbGF0aW9uIHRyYW5zZm9ybXMgKGh1ZSBmaXh1cCBmb3Ig
cG9sYXIgY29sb3Igc3BhY2VzLCBhbHBoYSBwcmVtdWx0aXBsaWNhdGlvbiBpZiByZXF1aXJlZCku
Ci0gICAgYXV0byBbbm9ybWFsaXplZENvbG9yQ29tcG9uZW50czEsIG5vcm1hbGl6ZWRDb2xvckNv
bXBvbmVudHMyXSA9IHByZUludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uPGFscGhhUHJlbXVsdGlw
bGljYXRpb24+KGludGVycG9sYXRpb25NZXRob2QsIGFzQ29sb3JDb21wb25lbnRzKGNvbG9yMSks
IGFzQ29sb3JDb21wb25lbnRzKGNvbG9yMikpOworICAgIGF1dG8gW25vcm1hbGl6ZWRDb2xvckNv
bXBvbmVudHMxLCBub3JtYWxpemVkQ29sb3JDb21wb25lbnRzMl0gPSBwcmVJbnRlcnBvbGF0aW9u
Tm9ybWFsaXphdGlvbjxhbHBoYVByZW11bHRpcGxpY2F0aW9uPihpbnRlcnBvbGF0aW9uTWV0aG9k
Q29sb3JTcGFjZSwgYXNDb2xvckNvbXBvbmVudHMoY29sb3IxKSwgYXNDb2xvckNvbXBvbmVudHMo
Y29sb3IyKSk7CiAKICAgICAvLyAyLiBJbnRlcnBvbGF0ZSB1c2luZyB0aGUgbm9ybWFsaXplZCBj
b21wb25lbnRzLgogICAgIGF1dG8gaW50ZXJwb2xhdGVkQ29sb3JDb21wb25lbnRzID0gbWFwQ29s
b3JDb21wb25lbnRzKFsmXSAoYXV0byBjb21wb25lbnRGcm9tQ29sb3IxLCBhdXRvIGNvbXBvbmVu
dEZyb21Db2xvcjIpIC0+IGZsb2F0IHsKQEAgLTEwOCwxMCArMTA5LDI1IEBAIHR5cGVuYW1lIElu
dGVycG9sYXRpb25NZXRob2Q6OkNvbG9yVHlwZSBpbnRlcnBvbGF0ZUNvbAogICAgIH0sIG5vcm1h
bGl6ZWRDb2xvckNvbXBvbmVudHMxLCBub3JtYWxpemVkQ29sb3JDb21wb25lbnRzMik7CiAKICAg
ICAvLyAzLiBBcHBseSBwb3N0LWludGVycG9sYXRpb24gdHJhc2Zvcm1zIChhbHBoYSB1bi1wcmVt
dWx0aXBsaWNhdGlvbiBpZiByZXF1aXJlZCkuCi0gICAgYXV0byBub3JtYWxpemVkSW50ZXJwb2xh
dGVkQ29sb3JDb21wb25lbnRzID0gcG9zdEludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uPGFscGhh
UHJlbXVsdGlwbGljYXRpb24+KGludGVycG9sYXRpb25NZXRob2QsIGludGVycG9sYXRlZENvbG9y
Q29tcG9uZW50cyk7CisgICAgYXV0byBub3JtYWxpemVkSW50ZXJwb2xhdGVkQ29sb3JDb21wb25l
bnRzID0gcG9zdEludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uPGFscGhhUHJlbXVsdGlwbGljYXRp
b24+KGludGVycG9sYXRpb25NZXRob2RDb2xvclNwYWNlLCBpbnRlcnBvbGF0ZWRDb2xvckNvbXBv
bmVudHMpOwogCiAgICAgLy8gNC4gQ3JlYXRlIGNvbG9yIHR5cGUgZnJvbSBjb21wb25lbnRzLCBu
b3JtYWxpemluZyBhbnkgY29tcG9uZW50cyB0aGF0IG1heSBiZSBvdXQgb2YgcmFuZ2UuCi0gICAg
cmV0dXJuIG1ha2VDb2xvclR5cGVCeU5vcm1hbGl6aW5nQ29tcG9uZW50czx0eXBlbmFtZSBJbnRl
cnBvbGF0aW9uTWV0aG9kOjpDb2xvclR5cGU+KG5vcm1hbGl6ZWRJbnRlcnBvbGF0ZWRDb2xvckNv
bXBvbmVudHMpOworICAgIHJldHVybiBtYWtlQ29sb3JUeXBlQnlOb3JtYWxpemluZ0NvbXBvbmVu
dHM8dHlwZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2U6OkNvbG9yVHlwZT4obm9y
bWFsaXplZEludGVycG9sYXRlZENvbG9yQ29tcG9uZW50cyk7Cit9CisKK2lubGluZSBDb2xvciBp
bnRlcnBvbGF0ZUNvbG9ycyhDb2xvckludGVycG9sYXRpb25NZXRob2QgY29sb3JJbnRlcnBvbGF0
aW9uTWV0aG9kLCBDb2xvciBjb2xvcjEsIGRvdWJsZSBjb2xvcjFNdWx0aXBsaWVyLCBDb2xvciBj
b2xvcjIsIGRvdWJsZSBjb2xvcjJNdWx0aXBsaWVyKQoreworICAgIHJldHVybiBXVEY6OnN3aXRj
aE9uKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5jb2xvclNwYWNlLAorICAgICAgICBbJl0gKGF1
dG8mIGNvbG9yU3BhY2UpIHsKKyAgICAgICAgICAgIHVzaW5nIENvbG9yVHlwZSA9IHR5cGVuYW1l
IHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PGRlY2x0eXBlKGNvbG9yU3BhY2UpPjo6Q29sb3JUeXBl
OworICAgICAgICAgICAgc3dpdGNoIChjb2xvckludGVycG9sYXRpb25NZXRob2QuYWxwaGFQcmVt
dWx0aXBsaWNhdGlvbikgeworICAgICAgICAgICAgY2FzZSBBbHBoYVByZW11bHRpcGxpY2F0aW9u
OjpQcmVtdWx0aXBsaWVkOgorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlQ2Fub25pY2FsQ29s
b3IoaW50ZXJwb2xhdGVDb2xvckNvbXBvbmVudHM8QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJl
bXVsdGlwbGllZD4oY29sb3JTcGFjZSwgY29sb3IxLnRvQ29sb3JUeXBlTG9zc3k8Q29sb3JUeXBl
PigpLCBjb2xvcjFNdWx0aXBsaWVyLCBjb2xvcjIudG9Db2xvclR5cGVMb3NzeTxDb2xvclR5cGU+
KCksIGNvbG9yMk11bHRpcGxpZXIpKTsKKyAgICAgICAgICAgIGNhc2UgQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkOgorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlQ2Fu
b25pY2FsQ29sb3IoaW50ZXJwb2xhdGVDb2xvckNvbXBvbmVudHM8QWxwaGFQcmVtdWx0aXBsaWNh
dGlvbjo6VW5wcmVtdWx0aXBsaWVkPihjb2xvclNwYWNlLCBjb2xvcjEudG9Db2xvclR5cGVMb3Nz
eTxDb2xvclR5cGU+KCksIGNvbG9yMU11bHRpcGxpZXIsIGNvbG9yMi50b0NvbG9yVHlwZUxvc3N5
PENvbG9yVHlwZT4oKSwgY29sb3IyTXVsdGlwbGllcikpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JOb3JtYWxpemF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JOb3JtYWxpemF0aW9uLmgJKHJldmlzaW9uIDI4NzIzMykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTm9ybWFsaXphdGlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSwxNCArMjUsMTkgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkNvbG9yQ29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkNv
bG9yVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlwZT4gQ29sb3JUeXBlIG1ha2VDb2xv
clR5cGVCeU5vcm1hbGl6aW5nQ29tcG9uZW50cyhjb25zdCBDb2xvckNvbXBvbmVudHM8ZmxvYXQs
IDQ+Jik7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xvclR5cGU+IENvbG9yIG1ha2VDYW5vbmljYWxD
b2xvcihDb2xvclR5cGUpOwogCiAKKy8vIE1BUks6IC0gTm9ybWFsaXphdGlvbgorCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb21wb25lbnRUeXBlPiBzdHJ1Y3QgV2hpdGVuZXNzQmxhY2tuZXNzIHsKICAg
ICBDb21wb25lbnRUeXBlIHdoaXRlbmVzczsKICAgICBDb21wb25lbnRUeXBlIGJsYWNrbmVzczsK
QEAgLTk5LDYgKzEwNCwyMyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBPS0xDSEE8ZmxvYXQ+IG1ha2VD
b2xvclR5cGVCeU5vcm1hbGkKICAgICBmbG9hdCBub3JtYWxpemVkSHVlID0gbm9ybWFsaXplSHVl
KGh1ZSk7CiAKICAgICByZXR1cm4geyBsaWdodG5lc3MsIGNocm9tYSwgbm9ybWFsaXplZEh1ZSwg
YWxwaGEgfTsKK30KKworLy8gTUFSSzogLSBDYW5vbmljYWxpemF0aW9uCisKK3RlbXBsYXRlPHR5
cGVuYW1lIENvbG9yVHlwZT4gaW5saW5lIENvbG9yIG1ha2VDYW5vbmljYWxDb2xvcihDb2xvclR5
cGUgY29sb3IpCit7CisgICAgcmV0dXJuIGNvbG9yOworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBD
b2xvciBtYWtlQ2Fub25pY2FsQ29sb3I8SFdCQTxmbG9hdD4+KEhXQkE8ZmxvYXQ+IGNvbG9yKQor
eworICAgIHJldHVybiBjb252ZXJ0Q29sb3I8U1JHQkE8dWludDhfdD4+KGNvbG9yKTsKK30KKwor
dGVtcGxhdGU8PiBpbmxpbmUgQ29sb3IgbWFrZUNhbm9uaWNhbENvbG9yPEhTTEE8ZmxvYXQ+PihI
U0xBPGZsb2F0PiBjb2xvcikKK3sKKyAgICByZXR1cm4gY29udmVydENvbG9yPFNSR0JBPHVpbnQ4
X3Q+Pihjb2xvcik7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYWRpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhZGllbnQuaAkocmV2aXNpb24gMjg3MjMzKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTYgKzI3LDE2
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5j
bHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJDb2xvckludGVycG9sYXRpb25NZXRob2QuaCIKICNp
bmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAiR3JhZGllbnRDb2xvclN0b3AuaCIKICNp
bmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCiAjaW5jbHVkZSA8dmFyaWFudD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKICNpZiBVU0UoQ0cpCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgor
I2luY2x1ZGUgIkdyYWRpZW50UmVuZGVyZXJDRy5oIgogI2VuZGlmCiAKICNpZiBVU0UoRElSRUNU
MkQpCkBAIC00NSw3ICs0NSw2IEBACiAKICNpZiBVU0UoQ0cpCiB0eXBlZGVmIHN0cnVjdCBDR0Nv
bnRleHQqIENHQ29udGV4dFJlZjsKLXR5cGVkZWYgc3RydWN0IENHR3JhZGllbnQqIENHR3JhZGll
bnRSZWY7CiAjZW5kaWYKIAogI2lmIFVTRShESVJFQ1QyRCkKQEAgLTU5LDIxICs1OCwxNSBAQCB0
eXBlZGVmIHN0cnVjdCBfY2Fpcm9fcGF0dGVybiBjYWlyb19wYXR0ZXJuX3Q7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgRmxvYXRSZWN0Owog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0OwogCiBjbGFzcyBHcmFkaWVudCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEdyYWRpZW50PiB7CiBwdWJsaWM6Ci0gICAgc3RydWN0IENvbG9yU3RvcCB7Ci0gICAgICAg
IGZsb2F0IG9mZnNldCB7IDAgfTsKLSAgICAgICAgQ29sb3IgY29sb3I7CisgICAgdXNpbmcgQ29s
b3JTdG9wID0gR3JhZGllbnRDb2xvclN0b3A7CisgICAgdXNpbmcgQ29sb3JTdG9wVmVjdG9yID0g
R3JhZGllbnRDb2xvclN0b3BWZWN0b3I7CiAKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxDb2xvclN0b3A+IGRlY29kZShEZWNv
ZGVyJik7Ci0gICAgfTsKLQotICAgIHVzaW5nIENvbG9yU3RvcFZlY3RvciA9IFZlY3RvcjxDb2xv
clN0b3AsIDI+OwotCiAgICAgc3RydWN0IExpbmVhckRhdGEgewogICAgICAgICBGbG9hdFBvaW50
IHBvaW50MDsKICAgICAgICAgRmxvYXRQb2ludCBwb2ludDE7CkBAIC0xNDQsMTEgKzEzNyw2IEBA
IGNsYXNzIEdyYWRpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8R3JhZGllbnQ+IHsgKHByaXZhdAog
ICAgIHZvaWQgc29ydFN0b3BzKCkgY29uc3Q7CiAgICAgdm9pZCBzdG9wc0NoYW5nZWQoKTsKIAot
I2lmIFVTRShDRykKLSAgICB2b2lkIGNyZWF0ZUNHR3JhZGllbnQoKTsKLSAgICBib29sIGhhc09u
bHlCb3VuZGVkU1JHQkNvbG9yU3RvcHMoKSBjb25zdDsKLSNlbmRpZgotCiAgICAgRGF0YSBtX2Rh
dGE7CiAgICAgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIG1fY29sb3JJbnRlcnBvbGF0aW9uTWV0
aG9kOwogICAgIG11dGFibGUgQ29sb3JTdG9wVmVjdG9yIG1fc3RvcHM7CkBAIC0xNTcsMzQgKzE0
NSwxMyBAQCBjbGFzcyBHcmFkaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYWRpZW50PiB7IChw
cml2YXQKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fY2FjaGVkSGFzaCB7IDAgfTsKIAogI2lmIFVT
RShDRykKLSAgICBSZXRhaW5QdHI8Q0dHcmFkaWVudFJlZj4gbV9ncmFkaWVudDsKKyAgICBzdGQ6
Om9wdGlvbmFsPEdyYWRpZW50UmVuZGVyZXJDRz4gbV9wbGF0Zm9ybVJlbmRlcmVyOwogI2VuZGlm
CiAKICNpZiBVU0UoRElSRUNUMkQpCiAgICAgQ09NUHRyPElEMkQxQnJ1c2g+IG1fYnJ1c2g7CiAj
ZW5kaWYKIH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgR3JhZGllbnQ6OkNv
bG9yU3RvcDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8
PCBvZmZzZXQ7Ci0gICAgZW5jb2RlciA8PCBjb2xvcjsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
RGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxHcmFkaWVudDo6Q29sb3JTdG9wPiBHcmFkaWVudDo6Q29s
b3JTdG9wOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBzdGQ6Om9wdGlvbmFsPGZs
b2F0PiBvZmZzZXQ7Ci0gICAgZGVjb2RlciA+PiBvZmZzZXQ7Ci0gICAgaWYgKCFvZmZzZXQpCi0g
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBzdGQ6Om9wdGlvbmFsPENvbG9yPiBj
b2xvcjsKLSAgICBkZWNvZGVyID4+IGNvbG9yOwotICAgIGlmICghY29sb3IpCi0gICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4ge3sgKm9mZnNldCwgKmNvbG9yIH19Owot
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIEdyYWRpZW50OjpMaW5lYXJEYXRh
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50Q29sb3JTdG9wLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRDb2xvclN0b3AuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudENvbG9y
U3RvcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlIDxvcHRpb25hbD4KKyNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEdyYWRpZW50Q29s
b3JTdG9wIHsKKyAgICBmbG9hdCBvZmZzZXQgeyAwIH07CisgICAgQ29sb3IgY29sb3I7CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8R3Jh
ZGllbnRDb2xvclN0b3A+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit1c2luZyBHcmFkaWVudENv
bG9yU3RvcFZlY3RvciA9IFZlY3RvcjxHcmFkaWVudENvbG9yU3RvcCwgMj47CisKK3RlbXBsYXRl
PHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgR3JhZGllbnRDb2xvclN0b3A6OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgb2Zmc2V0OworICAgIGVuY29kZXIg
PDwgY29sb3I7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0ZDo6b3B0aW9uYWw8
R3JhZGllbnRDb2xvclN0b3A+IEdyYWRpZW50Q29sb3JTdG9wOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBvZmZzZXQ7CisgICAgZGVjb2RlciA+
PiBvZmZzZXQ7CisgICAgaWYgKCFvZmZzZXQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICBzdGQ6Om9wdGlvbmFsPENvbG9yPiBjb2xvcjsKKyAgICBkZWNvZGVyID4+IGNvbG9y
OworICAgIGlmICghY29sb3IpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBy
ZXR1cm4ge3sgKm9mZnNldCwgKmNvbG9yIH19OworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENHLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFkaWVudENHLmNwcAkocmV2aXNpb24g
Mjg3MjMzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRD
Ry5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcyICsyOSwxNyBAQAogCiAjaWYgVVNFKENHKQog
CisjaW5jbHVkZSAiR3JhZGllbnRSZW5kZXJlckNHLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0Q0cuaCIKICNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgotI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEdyYWRp
ZW50OjpzdG9wc0NoYW5nZWQoKQogewotICAgIG1fZ3JhZGllbnQgPSBudWxscHRyOworICAgIG1f
cGxhdGZvcm1SZW5kZXJlciA9IHsgfTsKIH0KIAotYm9vbCBHcmFkaWVudDo6aGFzT25seUJvdW5k
ZWRTUkdCQ29sb3JTdG9wcygpIGNvbnN0Ci17Ci0gICAgZm9yIChjb25zdCBhdXRvJiBzdG9wIDog
bV9zdG9wcykgewotICAgICAgICBpZiAoc3RvcC5jb2xvci5jb2xvclNwYWNlKCkgIT0gQ29sb3JT
cGFjZTo6U1JHQikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLXZvaWQgR3JhZGllbnQ6OmNyZWF0ZUNHR3JhZGllbnQoKQotewotICAgIHNv
cnRTdG9wcygpOwotCi0gICAgdW5zaWduZWQgbnVtU3RvcHMgPSBtX3N0b3BzLnNpemUoKTsKLQot
ICAgIGNvbnN0IGludCByZXNlcnZlZFN0b3BzID0gMzsKLSAgICBWZWN0b3I8Q0dGbG9hdCwgcmVz
ZXJ2ZWRTdG9wcz4gbG9jYXRpb25zOwotICAgIGxvY2F0aW9ucy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KG51bVN0b3BzKTsKLQotICAgIC8vIElmIGFsbCB0aGUgc3RvcHMgYXJlIGJvdW5kZWQgc1JH
QiAoYXMgcmVwcmVzZW50ZWQgYnkgdGhlIGNvbG9yIGhhdmluZyB0aGUgY29sb3Igc3BhY2UKLSAg
ICAvLyBDb2xvclNwYWNlOjpTUkdCKSwgaXQgaXMgZmFzdGVyIHRvIGNyZWF0ZSBhIGdyYWRpZW50
IHVzaW5nIGNvbXBvbmVudHMgdGhhbiBDR0NvbG9ycy4KLSAgICBpZiAoaGFzT25seUJvdW5kZWRT
UkdCQ29sb3JTdG9wcygpKSB7Ci0gICAgICAgIFZlY3RvcjxDR0Zsb2F0LCA0ICogcmVzZXJ2ZWRT
dG9wcz4gY29sb3JDb21wb25lbnRzOwotICAgICAgICBjb2xvckNvbXBvbmVudHMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShudW1TdG9wcyAqIDQpOwotCi0gICAgICAgIGZvciAoY29uc3QgYXV0byYg
c3RvcCA6IG1fc3RvcHMpIHsKLSAgICAgICAgICAgIGF1dG8gW2NvbG9yU3BhY2UsIGNvbXBvbmVu
dHNdID0gc3RvcC5jb2xvci5jb2xvclNwYWNlQW5kQ29tcG9uZW50cygpOwotICAgICAgICAgICAg
YXV0byBbciwgZywgYiwgYV0gPSBjb21wb25lbnRzOwotICAgICAgICAgICAgY29sb3JDb21wb25l
bnRzLnVuY2hlY2tlZEFwcGVuZChyKTsKLSAgICAgICAgICAgIGNvbG9yQ29tcG9uZW50cy51bmNo
ZWNrZWRBcHBlbmQoZyk7Ci0gICAgICAgICAgICBjb2xvckNvbXBvbmVudHMudW5jaGVja2VkQXBw
ZW5kKGIpOwotICAgICAgICAgICAgY29sb3JDb21wb25lbnRzLnVuY2hlY2tlZEFwcGVuZChhKTsK
LQotICAgICAgICAgICAgbG9jYXRpb25zLnVuY2hlY2tlZEFwcGVuZChzdG9wLm9mZnNldCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBtX2dyYWRpZW50ID0gYWRvcHRDRihDR0dyYWRpZW50Q3JlYXRl
V2l0aENvbG9yQ29tcG9uZW50cyhzUkdCQ29sb3JTcGFjZVJlZigpLCBjb2xvckNvbXBvbmVudHMu
ZGF0YSgpLCBsb2NhdGlvbnMuZGF0YSgpLCBudW1TdG9wcykpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgYXV0byBjb2xvcnNBcnJheSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFi
bGUoMCwgbV9zdG9wcy5zaXplKCksICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKLSAgICBmb3Ig
KGNvbnN0IGF1dG8mIHN0b3AgOiBtX3N0b3BzKSB7Ci0gICAgICAgIENGQXJyYXlBcHBlbmRWYWx1
ZShjb2xvcnNBcnJheS5nZXQoKSwgY2FjaGVkQ0dDb2xvcihzdG9wLmNvbG9yKS5nZXQoKSk7Ci0g
ICAgICAgIGxvY2F0aW9ucy51bmNoZWNrZWRBcHBlbmQoc3RvcC5vZmZzZXQpOwotICAgIH0KLQot
I2lmIEhBVkUoQ09SRV9HUkFQSElDU19FWFRFTkRFRF9TUkdCX0NPTE9SX1NQQUNFKQotICAgIGF1
dG8gZXh0ZW5kZWRDb2xvcnNHcmFkaWVudENvbG9yU3BhY2UgPSBleHRlbmRlZFNSR0JDb2xvclNw
YWNlUmVmKCk7Ci0jZWxzZQotICAgIGF1dG8gZXh0ZW5kZWRDb2xvcnNHcmFkaWVudENvbG9yU3Bh
Y2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOwotI2VuZGlmCi0KLSAgICBtX2dyYWRpZW50ID0gYWRv
cHRDRihDR0dyYWRpZW50Q3JlYXRlV2l0aENvbG9ycyhleHRlbmRlZENvbG9yc0dyYWRpZW50Q29s
b3JTcGFjZSwgY29sb3JzQXJyYXkuZ2V0KCksIGxvY2F0aW9ucy5kYXRhKCkpKTsKLX0KLQogdm9p
ZCBHcmFkaWVudDo6ZmlsbChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCkKIHsKICAgICBjb250ZXh0LmNsaXAocmVjdCk7CkBAIC0xMDgsMTggKzUzLDE4IEBA
IHZvaWQgR3JhZGllbnQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIAogdm9pZCBH
cmFkaWVudDo6cGFpbnQoQ0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dCkKIHsKLSAgICBDR0dy
YWRpZW50RHJhd2luZ09wdGlvbnMgZXh0ZW5kT3B0aW9ucyA9IGtDR0dyYWRpZW50RHJhd3NCZWZv
cmVTdGFydExvY2F0aW9uIHwga0NHR3JhZGllbnREcmF3c0FmdGVyRW5kTG9jYXRpb247CisgICAg
aWYgKCFtX3BsYXRmb3JtUmVuZGVyZXIpIHsKKyAgICAgICAgc29ydFN0b3BzKCk7CisgICAgICAg
IG1fcGxhdGZvcm1SZW5kZXJlciA9IEdyYWRpZW50UmVuZGVyZXJDRyB7IG1fY29sb3JJbnRlcnBv
bGF0aW9uTWV0aG9kLCBtX3N0b3BzIH07CisgICAgfQogCi0gICAgaWYgKCFtX2dyYWRpZW50KQot
ICAgICAgICBjcmVhdGVDR0dyYWRpZW50KCk7Ci0KICAgICBXVEY6OnN3aXRjaE9uKG1fZGF0YSwK
ICAgICAgICAgWyZdIChjb25zdCBMaW5lYXJEYXRhJiBkYXRhKSB7CiAgICAgICAgICAgICBzd2l0
Y2ggKG1fc3ByZWFkTWV0aG9kKSB7CiAgICAgICAgICAgICBjYXNlIEdyYWRpZW50U3ByZWFkTWV0
aG9kOjpSZXBlYXQ6CiAgICAgICAgICAgICBjYXNlIEdyYWRpZW50U3ByZWFkTWV0aG9kOjpSZWZs
ZWN0OiB7CiAgICAgICAgICAgICAgICAgQ0dDb250ZXh0U3RhdGVTYXZlciBzYXZlU3RhdGUocGxh
dGZvcm1Db250ZXh0KTsKLSAgICAgICAgICAgICAgICBleHRlbmRPcHRpb25zID0gMDsKKyAgICAg
ICAgICAgICAgICBDR0dyYWRpZW50RHJhd2luZ09wdGlvbnMgZXh0ZW5kT3B0aW9ucyA9IDA7CiAK
ICAgICAgICAgICAgICAgICBGbG9hdFBvaW50IGdyYWRpZW50VmVjdG9yTm9ybShkYXRhLnBvaW50
MSAtIGRhdGEucG9pbnQwKTsKICAgICAgICAgICAgICAgICBncmFkaWVudFZlY3Rvck5vcm0ubm9y
bWFsaXplKCk7CkBAIC0xNDMsNyArODgsNyBAQCB2b2lkIEdyYWRpZW50OjpwYWludChDR0NvbnRl
eHRSZWYgcGxhdGZvcm1Db250ZXh0KQogICAgICAgICAgICAgICAgICAgICBDR1BvaW50IGxlZnQg
PSBDR1BvaW50TWFrZShmbGlwID8gZW5kIDogc3RhcnQsIDApOwogICAgICAgICAgICAgICAgICAg
ICBDR1BvaW50IHJpZ2h0ID0gQ0dQb2ludE1ha2UoZmxpcCA/IHN0YXJ0IDogZW5kLCAwKTsKIAot
ICAgICAgICAgICAgICAgICAgICBDR0NvbnRleHREcmF3TGluZWFyR3JhZGllbnQocGxhdGZvcm1D
b250ZXh0LCBtX2dyYWRpZW50LmdldCgpLCBsZWZ0LCByaWdodCwgZXh0ZW5kT3B0aW9ucyk7Cisg
ICAgICAgICAgICAgICAgICAgIG1fcGxhdGZvcm1SZW5kZXJlci0+ZHJhd0xpbmVhckdyYWRpZW50
KHBsYXRmb3JtQ29udGV4dCwgbGVmdCwgcmlnaHQsIGV4dGVuZE9wdGlvbnMpOwogICAgICAgICAg
ICAgICAgIH07CiAKICAgICAgICAgICAgICAgICBhdXRvIGlzTGVmdE9mID0gW10oQ0dGbG9hdCBz
dGFydCwgQ0dGbG9hdCBlbmQsIENHUmVjdCBib3VuZGluZ0JveCkgLT4gYm9vbCB7CkBAIC0xODks
MTIgKzEzNCwxNCBAQCB2b2lkIEdyYWRpZW50OjpwYWludChDR0NvbnRleHRSZWYgcGxhdGZvcm1D
b250ZXh0KQogICAgICAgICAgICAgICAgICAgICBkcmF3TGluZWFyR3JhZGllbnQoZW5kIC0gZHgs
IGVuZCwgZmxpcCk7CiAgICAgICAgICAgICAgICAgICAgIGZsaXAgPSAhZmxpcCAmJiBtX3NwcmVh
ZE1ldGhvZCA9PSBHcmFkaWVudFNwcmVhZE1ldGhvZDo6UmVmbGVjdDsKICAgICAgICAgICAgICAg
ICB9Ci0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGNhc2UgR3JhZGllbnRTcHJlYWRNZXRob2Q6OlBhZDoKLSAgICAgICAgICAgICAgICBDR0NvbnRl
eHREcmF3TGluZWFyR3JhZGllbnQocGxhdGZvcm1Db250ZXh0LCBtX2dyYWRpZW50LmdldCgpLCBk
YXRhLnBvaW50MCwgZGF0YS5wb2ludDEsIGV4dGVuZE9wdGlvbnMpOworICAgICAgICAgICAgY2Fz
ZSBHcmFkaWVudFNwcmVhZE1ldGhvZDo6UGFkOiB7CisgICAgICAgICAgICAgICAgQ0dHcmFkaWVu
dERyYXdpbmdPcHRpb25zIGV4dGVuZE9wdGlvbnMgPSBrQ0dHcmFkaWVudERyYXdzQmVmb3JlU3Rh
cnRMb2NhdGlvbiB8IGtDR0dyYWRpZW50RHJhd3NBZnRlckVuZExvY2F0aW9uOworICAgICAgICAg
ICAgICAgIG1fcGxhdGZvcm1SZW5kZXJlci0+ZHJhd0xpbmVhckdyYWRpZW50KHBsYXRmb3JtQ29u
dGV4dCwgZGF0YS5wb2ludDAsIGRhdGEucG9pbnQxLCBleHRlbmRPcHRpb25zKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgfSwK
ICAgICAgICAgWyZdIChjb25zdCBSYWRpYWxEYXRhJiBkYXRhKSB7CiAgICAgICAgICAgICBib29s
IG5lZWRTY2FsaW5nID0gZGF0YS5hc3BlY3RSYXRpbyAhPSAxOwpAQCAtMjA4LDcgKzE1NSw4IEBA
IHZvaWQgR3JhZGllbnQ6OnBhaW50KENHQ29udGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQpCiAgICAg
ICAgICAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKHBsYXRmb3JtQ29udGV4dCwgLWRhdGEu
cG9pbnQwLngoKSwgLWRhdGEucG9pbnQwLnkoKSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgIENHQ29udGV4dERyYXdSYWRpYWxHcmFkaWVudChwbGF0Zm9ybUNvbnRleHQsIG1fZ3JhZGll
bnQuZ2V0KCksIGRhdGEucG9pbnQwLCBkYXRhLnN0YXJ0UmFkaXVzLCBkYXRhLnBvaW50MSwgZGF0
YS5lbmRSYWRpdXMsIGV4dGVuZE9wdGlvbnMpOworICAgICAgICAgICAgQ0dHcmFkaWVudERyYXdp
bmdPcHRpb25zIGV4dGVuZE9wdGlvbnMgPSBrQ0dHcmFkaWVudERyYXdzQmVmb3JlU3RhcnRMb2Nh
dGlvbiB8IGtDR0dyYWRpZW50RHJhd3NBZnRlckVuZExvY2F0aW9uOworICAgICAgICAgICAgbV9w
bGF0Zm9ybVJlbmRlcmVyLT5kcmF3UmFkaWFsR3JhZGllbnQocGxhdGZvcm1Db250ZXh0LCBkYXRh
LnBvaW50MCwgZGF0YS5zdGFydFJhZGl1cywgZGF0YS5wb2ludDEsIGRhdGEuZW5kUmFkaXVzLCBl
eHRlbmRPcHRpb25zKTsKIAogICAgICAgICAgICAgaWYgKG5lZWRTY2FsaW5nKQogICAgICAgICAg
ICAgICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUocGxhdGZvcm1Db250ZXh0KTsKQEAgLTIyMSw3
ICsxNjksNyBAQCB2b2lkIEdyYWRpZW50OjpwYWludChDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250
ZXh0KQogICAgICAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKHBsYXRmb3JtQ29udGV4dCwg
ZGF0YS5wb2ludDAueCgpLCBkYXRhLnBvaW50MC55KCkpOwogICAgICAgICAgICAgQ0dDb250ZXh0
Um90YXRlQ1RNKHBsYXRmb3JtQ29udGV4dCwgKENHRmxvYXQpLU1fUElfMik7CiAgICAgICAgICAg
ICBDR0NvbnRleHRUcmFuc2xhdGVDVE0ocGxhdGZvcm1Db250ZXh0LCAtZGF0YS5wb2ludDAueCgp
LCAtZGF0YS5wb2ludDAueSgpKTsKLSAgICAgICAgICAgIENHQ29udGV4dERyYXdDb25pY0dyYWRp
ZW50KHBsYXRmb3JtQ29udGV4dCwgbV9ncmFkaWVudC5nZXQoKSwgZGF0YS5wb2ludDAsIGRhdGEu
YW5nbGVSYWRpYW5zKTsKKyAgICAgICAgICAgIG1fcGxhdGZvcm1SZW5kZXJlci0+ZHJhd0Nvbmlj
R3JhZGllbnQocGxhdGZvcm1Db250ZXh0LCBkYXRhLnBvaW50MCwgZGF0YS5hbmdsZVJhZGlhbnMp
OwogICAgICAgICAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShwbGF0Zm9ybUNvbnRleHQpOwog
I2Vsc2UKICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50UmVuZGVyZXJDRy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhZGllbnRSZW5kZXJl
ckNHLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFkaWVudFJlbmRlcmVyQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzU0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR3JhZGllbnRSZW5kZXJl
ckNHLmgiCisKKyNpbmNsdWRlICJDb2xvckludGVycG9sYXRpb24uaCIKKyNpbmNsdWRlICJDb2xv
clNwYWNlQ0cuaCIKKyNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0dyYWRpZW50UmVuZGVyZXJDRzo6R3JhZGllbnRSZW5kZXJl
ckNHKENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBjb2xvckludGVycG9sYXRpb25NZXRob2QsIGNv
bnN0IEdyYWRpZW50Q29sb3JTdG9wVmVjdG9yJiBzdG9wcykKKyAgICA6IG1fc3RyYXRlZ3kgeyBw
aWNrU3RyYXRlZ3koY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBzdG9wcykgfQoreworfQorCisv
LyBNQVJLOiAtIFN0cmF0ZWd5IHNlbGVjdGlvbi4KKworR3JhZGllbnRSZW5kZXJlckNHOjpTdHJh
dGVneSBHcmFkaWVudFJlbmRlcmVyQ0c6OnBpY2tTdHJhdGVneShDb2xvckludGVycG9sYXRpb25N
ZXRob2QgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb25zdCBHcmFkaWVudENvbG9yU3RvcFZl
Y3RvciYgc3RvcHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oY29sb3JJbnRl
cnBvbGF0aW9uTWV0aG9kLmNvbG9yU3BhY2UsCisgICAgICAgIFsmXSAoY29uc3QgQ29sb3JJbnRl
cnBvbGF0aW9uTWV0aG9kOjpTUkdCJikgLT4gU3RyYXRlZ3kgeworICAgICAgICAgICAgc3dpdGNo
IChjb2xvckludGVycG9sYXRpb25NZXRob2QuYWxwaGFQcmVtdWx0aXBsaWNhdGlvbikgeworICAg
ICAgICAgICAgY2FzZSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQ6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VHcmFkaWVudChjb2xvckludGVycG9sYXRpb25NZXRo
b2QsIHN0b3BzKTsKKyAgICAgICAgICAgIGNhc2UgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJl
bXVsdGlwbGllZDoKKyNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfUFJFTVVMVElQTElFRF9JTlRFUlBP
TEFUSU9OX0dSQURJRU5UKQorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlR3JhZGllbnQoY29s
b3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBzdG9wcyk7CisjZWxzZQorICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBVc2UgZ3JhZGllbnQgc3RyYXRlZ3kgaWYgbm9uZSBvZiB0aGUgc3RvcHMgaGF2ZSBh
bHBoYS4KKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVNoYWRpbmcoY29sb3JJbnRlcnBvbGF0
aW9uTWV0aG9kLCBzdG9wcyk7CisjZW5kaWYKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAg
ICAgICAgWyZdIChjb25zdCBhdXRvJikgLT4gU3RyYXRlZ3kgeworICAgICAgICAgICAgLy8gRklY
TUU6IEFkZCBzdXBwb3J0IGZvciB0aGUgb3RoZXIgaW50ZXJwb2xhdGlvbiBjb2xvciBzcGFjZXMu
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9Cisg
ICAgKTsKK30KKworLy8gTUFSSzogLSBHcmFkaWVudCBzdHJhdGVneS4KKworR3JhZGllbnRSZW5k
ZXJlckNHOjpTdHJhdGVneSBHcmFkaWVudFJlbmRlcmVyQ0c6Om1ha2VHcmFkaWVudChDb2xvcklu
dGVycG9sYXRpb25NZXRob2QgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb25zdCBHcmFkaWVu
dENvbG9yU3RvcFZlY3RvciYgc3RvcHMpIGNvbnN0Cit7CisgICAgQVNTRVJUX1VOVVNFRChjb2xv
ckludGVycG9sYXRpb25NZXRob2QsIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8Q29sb3JJbnRlcnBv
bGF0aW9uTWV0aG9kOjpTUkdCPihjb2xvckludGVycG9sYXRpb25NZXRob2QuY29sb3JTcGFjZSkp
OworI2lmICFIQVZFKENPUkVfR1JBUEhJQ1NfUFJFTVVMVElQTElFRF9JTlRFUlBPTEFUSU9OX0dS
QURJRU5UKQorICAgIEFTU0VSVF9VTlVTRUQoY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb2xv
ckludGVycG9sYXRpb25NZXRob2QuYWxwaGFQcmVtdWx0aXBsaWNhdGlvbiA9PSBBbHBoYVByZW11
bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQpOworI2VuZGlmCisKKyNpZiBIQVZFKENPUkVf
R1JBUEhJQ1NfR1JBRElFTlRfQ1JFQVRFX1dJVEhfT1BUSU9OUykKKyNpZiBIQVZFKENPUkVfR1JB
UEhJQ1NfUFJFTVVMVElQTElFRF9JTlRFUlBPTEFUSU9OX0dSQURJRU5UKQorICAgIGF1dG8gZ3Jh
ZGllbnRJbnRlcnBvbGF0ZXNQcmVtdWx0aXBsaWVkT3B0aW9uc0RpY3Rpb25hcnkgPSBbXSAoKSAt
PiBDRkRpY3Rpb25hcnlSZWYgeworICAgICAgICBzdGF0aWMgQ0ZUeXBlUmVmIGtleXNbXSA9IHsg
a0NHR3JhZGllbnRJbnRlcnBvbGF0ZXNQcmVtdWx0aXBsaWVkIH07CisgICAgICAgIHN0YXRpYyBD
RlR5cGVSZWYgdmFsdWVzW10gPSB7IGtDRkJvb2xlYW5UcnVlIH07CisgICAgICAgIHN0YXRpYyBD
RkRpY3Rpb25hcnlSZWYgb3B0aW9ucyA9IENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBrZXlzLCB2YWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgoa2V5cyksICZrQ0ZUeXBlRGlj
dGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwor
CisgICAgICAgIHJldHVybiBvcHRpb25zOworICAgIH07CisKKyAgIGF1dG8gZ3JhZGllbnRPcHRp
b25zRGljdGlvbmFyeSA9IFsmXSAoYXV0byBjb2xvckludGVycG9sYXRpb25NZXRob2QpIC0+IENG
RGljdGlvbmFyeVJlZiB7CisgICAgICAgIHN3aXRjaCAoY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9k
LmFscGhhUHJlbXVsdGlwbGljYXRpb24pIHsKKyAgICAgICAgY2FzZSBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpVbnByZW11bHRpcGxpZWQ6CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgY2FzZSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkOgorICAgICAg
ICAgICAgcmV0dXJuIGdyYWRpZW50SW50ZXJwb2xhdGVzUHJlbXVsdGlwbGllZE9wdGlvbnNEaWN0
aW9uYXJ5KCk7CisgICAgICAgIH0KKyAgIH07CisjZWxzZQorICAgYXV0byBncmFkaWVudE9wdGlv
bnNEaWN0aW9uYXJ5ID0gW10gKGF1dG8pIC0+IENGRGljdGlvbmFyeVJlZiB7CisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgfTsKKyNlbmRpZgorI2VuZGlmCisKKyAgICBhdXRvIGhhc09ubHlC
b3VuZGVkU1JHQkNvbG9yU3RvcHMgPSBbXSAoY29uc3QgYXV0byYgc3RvcHMpIHsKKyAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiBzdG9wIDogc3RvcHMpIHsKKyAgICAgICAgICAgIGlmIChzdG9wLmNv
bG9yLmNvbG9yU3BhY2UoKSAhPSBDb2xvclNwYWNlOjpTUkdCKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9OworCisg
ICAgYXV0byBudW1iZXJPZlN0b3BzID0gc3RvcHMuc2l6ZSgpOworCisgICAgc3RhdGljIGNvbnN0
ZXhwciBhdXRvIHJlc2VydmVkU3RvcHMgPSAzOworICAgIFZlY3RvcjxDR0Zsb2F0LCByZXNlcnZl
ZFN0b3BzPiBsb2NhdGlvbnM7CisgICAgbG9jYXRpb25zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
bnVtYmVyT2ZTdG9wcyk7CisKKyAgICBWZWN0b3I8Q0dGbG9hdCwgNCAqIHJlc2VydmVkU3RvcHM+
IGNvbG9yQ29tcG9uZW50czsKKyAgICBjb2xvckNvbXBvbmVudHMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShudW1iZXJPZlN0b3BzICogNCk7CisKKyAgICBhdXRvIGdyYWRpZW50Q29sb3JTcGFjZSA9
IHNSR0JDb2xvclNwYWNlUmVmKCk7CisKKyAgICAvLyBGSVhNRTogTm93IHRoYXQgd2Ugb25seSBl
dmVyIHVzZSBDR0dyYWRpZW50Q3JlYXRlV2l0aENvbG9yQ29tcG9uZW50cywgd2Ugc2hvdWxkIGlu
dmVzdGlnYXRlCisgICAgLy8gaWYgdGhlcmUgaXMgYW55IHJlYWwgYmVuZWZpdCB0byB1c2luZyBz
UkdCIHdoZW4gYWxsIHRoZSBzdG9wcyBhcmUgYm91bmRlZCB2cyBqdXN0IHVzaW5nCisgICAgLy8g
ZXh0ZW5kZWQgc1JHQiBmb3IgYWxsIGdyYWRpZW50cy4KKyAgICBpZiAoaGFzT25seUJvdW5kZWRT
UkdCQ29sb3JTdG9wcyhzdG9wcykpIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzdG9wIDog
c3RvcHMpIHsKKyAgICAgICAgICAgIGF1dG8gW2NvbG9yU3BhY2UsIGNvbXBvbmVudHNdID0gc3Rv
cC5jb2xvci5jb2xvclNwYWNlQW5kQ29tcG9uZW50cygpOworICAgICAgICAgICAgYXV0byBbciwg
ZywgYiwgYV0gPSBjb21wb25lbnRzOworICAgICAgICAgICAgY29sb3JDb21wb25lbnRzLnVuY2hl
Y2tlZEFwcGVuZChyKTsKKyAgICAgICAgICAgIGNvbG9yQ29tcG9uZW50cy51bmNoZWNrZWRBcHBl
bmQoZyk7CisgICAgICAgICAgICBjb2xvckNvbXBvbmVudHMudW5jaGVja2VkQXBwZW5kKGIpOwor
ICAgICAgICAgICAgY29sb3JDb21wb25lbnRzLnVuY2hlY2tlZEFwcGVuZChhKTsKKworICAgICAg
ICAgICAgbG9jYXRpb25zLnVuY2hlY2tlZEFwcGVuZChzdG9wLm9mZnNldCk7CisgICAgICAgIH0K
KyAgICB9IGVsc2UgeworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19FWFRFTkRFRF9TUkdCX0NPTE9S
X1NQQUNFKQorICAgICAgICBncmFkaWVudENvbG9yU3BhY2UgPSBleHRlbmRlZFNSR0JDb2xvclNw
YWNlUmVmKCk7CisjZW5kaWYKKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHN0b3AgOiBzdG9w
cykgeworI2lmIEhBVkUoQ09SRV9HUkFQSElDU19FWFRFTkRFRF9TUkdCX0NPTE9SX1NQQUNFKQor
ICAgICAgICAgICAgYXV0byBbciwgZywgYiwgYV0gPSBzdG9wLmNvbG9yLnRvQ29sb3JUeXBlTG9z
c3k8RXh0ZW5kZWRTUkdCQTxmbG9hdD4+KCk7CisjZWxzZQorICAgICAgICAgICAgYXV0byBbciwg
ZywgYiwgYV0gPSBzdG9wLmNvbG9yLnRvQ29sb3JUeXBlTG9zc3k8U1JHQkE8ZmxvYXQ+PigpOwor
I2VuZGlmCisgICAgICAgICAgICBjb2xvckNvbXBvbmVudHMudW5jaGVja2VkQXBwZW5kKHIpOwor
ICAgICAgICAgICAgY29sb3JDb21wb25lbnRzLnVuY2hlY2tlZEFwcGVuZChnKTsKKyAgICAgICAg
ICAgIGNvbG9yQ29tcG9uZW50cy51bmNoZWNrZWRBcHBlbmQoYik7CisgICAgICAgICAgICBjb2xv
ckNvbXBvbmVudHMudW5jaGVja2VkQXBwZW5kKGEpOworCisgICAgICAgICAgICBsb2NhdGlvbnMu
dW5jaGVja2VkQXBwZW5kKHN0b3Aub2Zmc2V0KTsKKyAgICAgICAgfQorICAgIH0KKworI2lmIEhB
VkUoQ09SRV9HUkFQSElDU19HUkFESUVOVF9DUkVBVEVfV0lUSF9PUFRJT05TKQorICAgIHJldHVy
biBHcmFkaWVudCB7IGFkb3B0Q0YoQ0dHcmFkaWVudENyZWF0ZVdpdGhDb2xvckNvbXBvbmVudHNB
bmRPcHRpb25zKGdyYWRpZW50Q29sb3JTcGFjZSwgY29sb3JDb21wb25lbnRzLmRhdGEoKSwgbG9j
YXRpb25zLmRhdGEoKSwgbnVtYmVyT2ZTdG9wcywgZ3JhZGllbnRPcHRpb25zRGljdGlvbmFyeShj
b2xvckludGVycG9sYXRpb25NZXRob2QpKSkgfTsKKyNlbHNlCisgICAgcmV0dXJuIEdyYWRpZW50
IHsgYWRvcHRDRihDR0dyYWRpZW50Q3JlYXRlV2l0aENvbG9yQ29tcG9uZW50cyhncmFkaWVudENv
bG9yU3BhY2UsIGNvbG9yQ29tcG9uZW50cy5kYXRhKCksIGxvY2F0aW9ucy5kYXRhKCksIG51bWJl
ck9mU3RvcHMpKSB9OworI2VuZGlmCit9CisKKy8vIE1BUks6IC0gU2hhZGluZyBzdHJhdGVneS4K
KwordGVtcGxhdGU8dHlwZW5hbWUgSW50ZXJwb2xhdGlvblNwYWNlLCBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIGFscGhhUHJlbXVsdGlwbGljYXRpb24+Cit2b2lkIEdyYWRpZW50UmVuZGVyZXJDRzo6
U2hhZGluZzo6c2hhZGluZ0Z1bmN0aW9uKHZvaWQqIGluZm8sIGNvbnN0IENHRmxvYXQqIGluLCBD
R0Zsb2F0KiBvdXQpCit7CisgICAgdXNpbmcgSW50ZXJwb2xhdGlvblNwYWNlQ29sb3JUeXBlID0g
dHlwZW5hbWUgSW50ZXJwb2xhdGlvblNwYWNlOjpDb2xvclR5cGU7CisjaWYgSEFWRShDT1JFX0dS
QVBISUNTX0VYVEVOREVEX1NSR0JfQ09MT1JfU1BBQ0UpCisgICAgdXNpbmcgT3V0cHV0U3BhY2VD
b2xvclR5cGUgPSBFeHRlbmRlZFNSR0JBPGZsb2F0PjsKKyNlbHNlCisgICAgdXNpbmcgT3V0cHV0
U3BhY2VDb2xvclR5cGUgPSBTUkdCQTxmbG9hdD47CisjZW5kaWYKKworICAgIGF1dG8qIGRhdGEg
PSBzdGF0aWNfY2FzdDxHcmFkaWVudFJlbmRlcmVyQ0c6OlNoYWRpbmc6OkRhdGEqPihpbmZvKTsK
KworICAgIC8vIENvbXB1dGUgY29sb3IgYXQgb2Zmc2V0ICdpblswXScgYW5kIGFzc2lnbiB0aGUg
Y29tcG9uZW50cyB0byBvdXRbMCAtPiAzXS4KKworICAgIGZsb2F0IHJlcXVlc3RlZE9mZnNldCA9
IGluWzBdOworCisgICAgLy8gMS4gRmluZCBzdG9wcyB0aGF0IGJvdW5kIHRoZSByZXF1ZXN0ZWQg
b2Zmc2V0LgorICAgIGF1dG8gW3N0b3AwLCBzdG9wMV0gPSBbJl0geworICAgICAgICBmb3IgKHNp
emVfdCBzdG9wID0gMTsgc3RvcCA8IGRhdGEtPnN0b3BzKCkuc2l6ZSgpOyArK3N0b3ApIHsKKyAg
ICAgICAgICAgIGlmIChyZXF1ZXN0ZWRPZmZzZXQgPD0gZGF0YS0+c3RvcHMoKVtzdG9wXS5vZmZz
ZXQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6dGllKGRhdGEtPnN0b3BzKClbc3RvcCAt
IDFdLCBkYXRhLT5zdG9wcygpW3N0b3BdKTsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0oKTsKKworICAgIC8vIDIuIENvbXB1dGUgcGVyY2Vu
dGFnZSBvZmZzZXQgYmV0d2VlbiB0aGUgdHdvIHN0b3BzLgorICAgIGZsb2F0IG9mZnNldCA9IChz
dG9wMS5vZmZzZXQgPT0gc3RvcDAub2Zmc2V0KSA/IDAuMGYgOiAocmVxdWVzdGVkT2Zmc2V0IC0g
c3RvcDAub2Zmc2V0KSAvIChzdG9wMS5vZmZzZXQgLSBzdG9wMC5vZmZzZXQpOworCisgICAgLy8g
My4gSW50ZXJwb2xhdGUgdGhlIHR3byBzdG9wcycgY29sb3JzIGJ5IHRoZSBjb21wdXRlZCBvZmZz
ZXQuCisgICAgLy8gRklYTUU6IFdlIGRvbid0IHdhbnQgdG8gZHVlIGh1ZSBmaXh1cCBmb3IgZWFj
aCBjYWxsLCBzbyB3ZSBzaG91bGQgZmlndXJlIG91dCBob3cgdG8gcHJlY29tcHV0ZSB0aGF0Lgor
ICAgIGF1dG8gaW50ZXJwb2xhdGVkQ29sb3IgPSBpbnRlcnBvbGF0ZUNvbG9yQ29tcG9uZW50czxh
bHBoYVByZW11bHRpcGxpY2F0aW9uPigKKyAgICAgICAgc3RkOjpnZXQ8SW50ZXJwb2xhdGlvblNw
YWNlPihkYXRhLT5jb2xvckludGVycG9sYXRpb25NZXRob2QoKS5jb2xvclNwYWNlKSwKKyAgICAg
ICAgbWFrZUZyb21Db21wb25lbnRzPEludGVycG9sYXRpb25TcGFjZUNvbG9yVHlwZT4oc3RvcDAu
Y29sb3JDb21wb25lbnRzKSwgMS4wZiAtIG9mZnNldCwKKyAgICAgICAgbWFrZUZyb21Db21wb25l
bnRzPEludGVycG9sYXRpb25TcGFjZUNvbG9yVHlwZT4oc3RvcDEuY29sb3JDb21wb25lbnRzKSwg
b2Zmc2V0KTsKKworICAgIC8vIDQuIENvbnZlcnQgdG8gdGhlIG91dHB1dCBjb2xvciBzcGFjZS4K
KyAgICBhdXRvIGludGVycG9sYXRlZENvbG9yQ29udmVydGVkVG9PdXRwdXRTcGFjZSA9IGFzQ29s
b3JDb21wb25lbnRzKGNvbnZlcnRDb2xvcjxPdXRwdXRTcGFjZUNvbG9yVHlwZT4oaW50ZXJwb2xh
dGVkQ29sb3IpKTsKKworICAgIC8vIDUuIFdyaXRlIGNvbG9yIGNvbXBvbmVudHMgdG8gJ291dCcg
cG9pbnRlci4KKyAgICBmb3IgKHNpemVfdCBjb21wb25lbnRJbmRleCA9IDA7IGNvbXBvbmVudElu
ZGV4IDwgaW50ZXJwb2xhdGVkQ29sb3JDb252ZXJ0ZWRUb091dHB1dFNwYWNlLnNpemUoKTsgKytj
b21wb25lbnRJbmRleCkKKyAgICAgICAgb3V0W2NvbXBvbmVudEluZGV4XSA9IGludGVycG9sYXRl
ZENvbG9yQ29udmVydGVkVG9PdXRwdXRTcGFjZVtjb21wb25lbnRJbmRleF07Cit9CisKK0dyYWRp
ZW50UmVuZGVyZXJDRzo6U3RyYXRlZ3kgR3JhZGllbnRSZW5kZXJlckNHOjptYWtlU2hhZGluZyhD
b2xvckludGVycG9sYXRpb25NZXRob2QgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb25zdCBH
cmFkaWVudENvbG9yU3RvcFZlY3RvciYgc3RvcHMpIGNvbnN0Cit7CisgICAgYXV0byBtYWtlRGF0
YSA9IFsmXSAoYXV0byBjb2xvckludGVycG9sYXRpb25NZXRob2QsIGF1dG8mIHN0b3BzKSB7Cisg
ICAgICAgIGF1dG8gY29udmVydENvbG9yVG9Db2xvckludGVycG9sYXRpb25TcGFjZSA9IFsmXSAo
Y29uc3QgQ29sb3ImIGNvbG9yLCBhdXRvIGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCkgLT4gQ29s
b3JDb21wb25lbnRzPGZsb2F0LCA0PiB7CisgICAgICAgICAgICByZXR1cm4gV1RGOjpzd2l0Y2hP
bihjb2xvckludGVycG9sYXRpb25NZXRob2QuY29sb3JTcGFjZSwKKyAgICAgICAgICAgICAgICBb
Jl0gKGF1dG8mIGNvbG9yU3BhY2UpIC0+IENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4geworICAg
ICAgICAgICAgICAgICAgICB1c2luZyBDb2xvclR5cGUgPSB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9y
ZWZlcmVuY2VfdDxkZWNsdHlwZShjb2xvclNwYWNlKT46OkNvbG9yVHlwZTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGFzQ29sb3JDb21wb25lbnRzKGNvbG9yLnRlbXBsYXRlIHRvQ29sb3JU
eXBlTG9zc3k8Q29sb3JUeXBlPigpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAp
OworICAgICAgICB9OworCisgICAgICAgIGF1dG8gdG90YWxOdW1iZXJPZlN0b3BzID0gc3RvcHMu
c2l6ZSgpOworICAgICAgICBib29sIGhhc1plcm8gPSBmYWxzZTsKKyAgICAgICAgYm9vbCBoYXNP
bmUgPSBmYWxzZTsKKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHN0b3AgOiBzdG9wcykgewor
ICAgICAgICAgICAgYXV0byBvZmZzZXQgPSBzdG9wLm9mZnNldDsKKyAgICAgICAgICAgIEFTU0VS
VChvZmZzZXQgPj0gMCk7CisgICAgICAgICAgICBBU1NFUlQob2Zmc2V0IDw9IDEpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBpZiAob2Zmc2V0ID09IDApCisgICAgICAgICAgICAgICAgaGFz
WmVybyA9IHRydWU7CisgICAgICAgICAgICBlbHNlIGlmIChvZmZzZXQgPT0gMSkKKyAgICAgICAg
ICAgICAgICBoYXNPbmUgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFoYXNaZXJv
KQorICAgICAgICAgICAgdG90YWxOdW1iZXJPZlN0b3BzKys7CisgICAgICAgIGlmICghaGFzT25l
KQorICAgICAgICAgICAgdG90YWxOdW1iZXJPZlN0b3BzKys7CisKKyAgICAgICAgVmVjdG9yPENv
bG9yQ29udmVydGVkVG9JbnRlcnBvbGF0aW9uQ29sb3JTcGFjZVN0b3A+IGNvbnZlcnRlZFN0b3Bz
OworICAgICAgICBjb252ZXJ0ZWRTdG9wcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHRvdGFsTnVt
YmVyT2ZTdG9wcyk7CisKKyAgICAgICAgaWYgKCFoYXNaZXJvKQorICAgICAgICAgICAgY29udmVy
dGVkU3RvcHMudW5jaGVja2VkQXBwZW5kKHsgMC4wZiwgeyAwLjBmLCAwLjBmLCAwLjBmLCAwLjBm
IH0gfSk7CisKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBzdG9wIDogc3RvcHMpCisgICAgICAg
ICAgICBjb252ZXJ0ZWRTdG9wcy51bmNoZWNrZWRBcHBlbmQoeyBzdG9wLm9mZnNldCwgY29udmVy
dENvbG9yVG9Db2xvckludGVycG9sYXRpb25TcGFjZShzdG9wLmNvbG9yLCBjb2xvckludGVycG9s
YXRpb25NZXRob2QpIH0pOworCisgICAgICAgIGlmICghaGFzT25lKQorICAgICAgICAgICAgY29u
dmVydGVkU3RvcHMudW5jaGVja2VkQXBwZW5kKHsgMS4wZiwgY29udmVydGVkU3RvcHMubGFzdCgp
LmNvbG9yQ29tcG9uZW50cyB9KTsKKworICAgICAgICBpZiAoIWhhc1plcm8pCisgICAgICAgICAg
ICBjb252ZXJ0ZWRTdG9wc1swXS5jb2xvckNvbXBvbmVudHMgPSBjb252ZXJ0ZWRTdG9wc1sxXS5j
b2xvckNvbXBvbmVudHM7CisKKyAgICAgICAgcmV0dXJuIFNoYWRpbmc6OkRhdGE6OmNyZWF0ZShj
b2xvckludGVycG9sYXRpb25NZXRob2QsIFdURk1vdmUoY29udmVydGVkU3RvcHMpKTsKKyAgICB9
OworCisgICAgYXV0byBtYWtlRnVuY3Rpb24gPSBbJl0gKGF1dG8gY29sb3JJbnRlcnBvbGF0aW9u
TWV0aG9kLCBhdXRvJiBkYXRhKSB7CisgICAgICAgIGF1dG8gbWFrZUV2YWx1YXRlQ2FsbGJhY2sg
PSBbJl0gKGF1dG8gY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kKSAtPiBDR0Z1bmN0aW9uRXZhbHVh
dGVDYWxsYmFjayB7CisgICAgICAgICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihjb2xvckludGVy
cG9sYXRpb25NZXRob2QuY29sb3JTcGFjZSwKKyAgICAgICAgICAgICAgICBbJl0gKGF1dG8mIGNv
bG9yU3BhY2UpIC0+IENHRnVuY3Rpb25FdmFsdWF0ZUNhbGxiYWNrIHsKKyAgICAgICAgICAgICAg
ICAgICAgdXNpbmcgSW50ZXJwb2xhdGlvbk1ldGhvZENvbG9yU3BhY2UgPSB0eXBlbmFtZSBzdGQ6
OnJlbW92ZV9yZWZlcmVuY2VfdDxkZWNsdHlwZShjb2xvclNwYWNlKT47CisgICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbG9ySW50ZXJwb2xhdGlvbk1l
dGhvZC5hbHBoYVByZW11bHRpcGxpY2F0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2Ug
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkOgorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuICZTaGFkaW5nOjpzaGFkaW5nRnVuY3Rpb248SW50ZXJwb2xhdGlvbk1l
dGhvZENvbG9yU3BhY2UsIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZD47
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVs
dGlwbGllZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAmU2hhZGluZzo6c2hhZGlu
Z0Z1bmN0aW9uPEludGVycG9sYXRpb25NZXRob2RDb2xvclNwYWNlLCBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpQcmVtdWx0aXBsaWVkPjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICk7CisgICAgICAgIH07CisKKyAgICAgICAgY29uc3QgQ0dG
dW5jdGlvbkNhbGxiYWNrcyBjYWxsYmFja3MgPSB7CisgICAgICAgICAgICAwLAorICAgICAgICAg
ICAgbWFrZUV2YWx1YXRlQ2FsbGJhY2soY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kKSwKKyAgICAg
ICAgICAgIFtdICh2b2lkKiBpbmZvKSB7CisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R3Jh
ZGllbnRSZW5kZXJlckNHOjpTaGFkaW5nOjpEYXRhKj4oaW5mbyktPmRlcmVmKCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgc3RhdGljIGNvbnN0IENHRmxvYXQgZG9tYWlu
WzJdID0geyAwLCAxIH07CisjaWYgSEFWRShDT1JFX0dSQVBISUNTX0VYVEVOREVEX1NSR0JfQ09M
T1JfU1BBQ0UpCisgICAgICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IHJhbmdlWzhdID0geyAtc3Rk
OjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8
ZmxvYXQ+OjppbmZpbml0eSgpLCAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5
KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCAtc3RkOjpudW1lcmlj
X2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+Ojpp
bmZpbml0eSgpLCAwLCAxIH07CisjZWxzZQorICAgICAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBy
YW5nZVs4XSA9IHsgMCwgMSwgMCwgMSwgMCwgMSwgMCwgMSB9OworI2VuZGlmCisKKyAgICAgICAg
UmVmIGRhdGFSZWZDb3B5ID0gZGF0YTsKKyAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dGdW5jdGlv
bkNyZWF0ZSgmZGF0YVJlZkNvcHkubGVha1JlZigpLCAxLCBkb21haW4sIDQsIHJhbmdlLCAmY2Fs
bGJhY2tzKSk7CisgICAgfTsKKworICAgIGF1dG8gZGF0YSA9IG1ha2VEYXRhKGNvbG9ySW50ZXJw
b2xhdGlvbk1ldGhvZCwgc3RvcHMpOworICAgIGF1dG8gZnVuY3Rpb24gPSBtYWtlRnVuY3Rpb24o
Y29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBkYXRhKTsKKworICAgIC8vIEZJWE1FOiBJbnZlc3Rp
Z2F0ZSB1c2luZyBib3VuZGVkIHNSR0Igd2hlbiB0aGUgaW5wdXQgc3RvcHMgYXJlIGFsbCBib3Vu
ZGVkIHNSR0IuCisjaWYgSEFWRShDT1JFX0dSQVBISUNTX0VYVEVOREVEX1NSR0JfQ09MT1JfU1BB
Q0UpCisgICAgYXV0byBjb2xvclNwYWNlID0gZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpOwor
I2Vsc2UKKyAgICBhdXRvIGNvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOworI2VuZGlm
CisKKyAgICByZXR1cm4gU2hhZGluZyB7IFdURk1vdmUoZGF0YSksIFdURk1vdmUoZnVuY3Rpb24p
LCBjb2xvclNwYWNlIH07Cit9CisKKy8vIE1BUks6IC0gRHJhd2luZyBmdW5jdGlvbnMuCisKK3Zv
aWQgR3JhZGllbnRSZW5kZXJlckNHOjpkcmF3TGluZWFyR3JhZGllbnQoQ0dDb250ZXh0UmVmIHBs
YXRmb3JtQ29udGV4dCwgQ0dQb2ludCBzdGFydFBvaW50LCBDR1BvaW50IGVuZFBvaW50LCBDR0dy
YWRpZW50RHJhd2luZ09wdGlvbnMgb3B0aW9ucykKK3sKKyAgICBXVEY6OnN3aXRjaE9uKG1fc3Ry
YXRlZ3ksCisgICAgICAgIFsmXSAoR3JhZGllbnQmIGdyYWRpZW50KSB7CisgICAgICAgICAgICBD
R0NvbnRleHREcmF3TGluZWFyR3JhZGllbnQocGxhdGZvcm1Db250ZXh0LCBncmFkaWVudC5ncmFk
aWVudC5nZXQoKSwgc3RhcnRQb2ludCwgZW5kUG9pbnQsIG9wdGlvbnMpOworICAgICAgICB9LAor
ICAgICAgICBbJl0gKFNoYWRpbmcmIHNoYWRpbmcpIHsKKyAgICAgICAgICAgIGJvb2wgc3RhcnRF
eHRlbmQgPSAob3B0aW9ucyAmIGtDR0dyYWRpZW50RHJhd3NCZWZvcmVTdGFydExvY2F0aW9uKSAh
PSAwOworICAgICAgICAgICAgYm9vbCBlbmRFeHRlbmQgPSAob3B0aW9ucyAmIGtDR0dyYWRpZW50
RHJhd3NBZnRlckVuZExvY2F0aW9uKSAhPSAwOworCisgICAgICAgICAgICBDR0NvbnRleHREcmF3
U2hhZGluZyhwbGF0Zm9ybUNvbnRleHQsIGFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoc2hh
ZGluZy5jb2xvclNwYWNlLmdldCgpLCBzdGFydFBvaW50LCBlbmRQb2ludCwgc2hhZGluZy5mdW5j
dGlvbi5nZXQoKSwgc3RhcnRFeHRlbmQsIGVuZEV4dGVuZCkpLmdldCgpKTsKKyAgICAgICAgfQor
ICAgICk7Cit9CisKK3ZvaWQgR3JhZGllbnRSZW5kZXJlckNHOjpkcmF3UmFkaWFsR3JhZGllbnQo
Q0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dCwgQ0dQb2ludCBzdGFydENlbnRlciwgQ0dGbG9h
dCBzdGFydFJhZGl1cywgQ0dQb2ludCBlbmRDZW50ZXIsIENHRmxvYXQgZW5kUmFkaXVzLCBDR0dy
YWRpZW50RHJhd2luZ09wdGlvbnMgb3B0aW9ucykKK3sKKyAgICBXVEY6OnN3aXRjaE9uKG1fc3Ry
YXRlZ3ksCisgICAgICAgIFsmXSAoR3JhZGllbnQmIGdyYWRpZW50KSB7CisgICAgICAgICAgICBD
R0NvbnRleHREcmF3UmFkaWFsR3JhZGllbnQocGxhdGZvcm1Db250ZXh0LCBncmFkaWVudC5ncmFk
aWVudC5nZXQoKSwgc3RhcnRDZW50ZXIsIHN0YXJ0UmFkaXVzLCBlbmRDZW50ZXIsIGVuZFJhZGl1
cywgb3B0aW9ucyk7CisgICAgICAgIH0sCisgICAgICAgIFsmXSAoU2hhZGluZyYgc2hhZGluZykg
eworICAgICAgICAgICAgYm9vbCBzdGFydEV4dGVuZCA9IChvcHRpb25zICYga0NHR3JhZGllbnRE
cmF3c0JlZm9yZVN0YXJ0TG9jYXRpb24pICE9IDA7CisgICAgICAgICAgICBib29sIGVuZEV4dGVu
ZCA9IChvcHRpb25zICYga0NHR3JhZGllbnREcmF3c0FmdGVyRW5kTG9jYXRpb24pICE9IDA7CisK
KyAgICAgICAgICAgIENHQ29udGV4dERyYXdTaGFkaW5nKHBsYXRmb3JtQ29udGV4dCwgYWRvcHRD
RihDR1NoYWRpbmdDcmVhdGVSYWRpYWwoc2hhZGluZy5jb2xvclNwYWNlLmdldCgpLCBzdGFydENl
bnRlciwgc3RhcnRSYWRpdXMsIGVuZENlbnRlciwgZW5kUmFkaXVzLCBzaGFkaW5nLmZ1bmN0aW9u
LmdldCgpLCBzdGFydEV4dGVuZCwgZW5kRXh0ZW5kKSkuZ2V0KCkpOworICAgICAgICB9CisgICAg
KTsKK30KKwordm9pZCBHcmFkaWVudFJlbmRlcmVyQ0c6OmRyYXdDb25pY0dyYWRpZW50KENHQ29u
dGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQsIENHUG9pbnQgY2VudGVyLCBDR0Zsb2F0IGFuZ2xlKQor
eworLy8gRklYTUU6IFNlZW1zIGxpa2UgdGhpcyBzaG91bGQgYmUgSEFWRShDR19DT05URVhUX0RS
QVdfQ09OSUNfR1JBRElFTlQpLgorLy8gRklYTUU6IENhbiB3ZSBjaGFuZ2UgdHZPUyB0byBiZSBs
aWtlIHRoZSBvdGhlciBDb2NvYSBwbGF0Zm9ybXM/CisjaWYgUExBVEZPUk0oQ09DT0EpICYmICFQ
TEFURk9STShBUFBMRVRWKQorICAgIFdURjo6c3dpdGNoT24obV9zdHJhdGVneSwKKyAgICAgICAg
WyZdIChHcmFkaWVudCYgZ3JhZGllbnQpIHsKKyAgICAgICAgICAgIENHQ29udGV4dERyYXdDb25p
Y0dyYWRpZW50KHBsYXRmb3JtQ29udGV4dCwgZ3JhZGllbnQuZ3JhZGllbnQuZ2V0KCksIGNlbnRl
ciwgYW5nbGUpOworICAgICAgICB9LAorICAgICAgICBbJl0gKFNoYWRpbmcmIHNoYWRpbmcpIHsK
KyAgICAgICAgICAgIENHQ29udGV4dERyYXdTaGFkaW5nKHBsYXRmb3JtQ29udGV4dCwgYWRvcHRD
RihDR1NoYWRpbmdDcmVhdGVDb25pYyhzaGFkaW5nLmNvbG9yU3BhY2UuZ2V0KCksIGNlbnRlciwg
YW5nbGUsIHNoYWRpbmcuZnVuY3Rpb24uZ2V0KCkpKS5nZXQoKSk7CisgICAgICAgIH0KKyAgICAp
OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocGxhdGZvcm1Db250ZXh0KTsKKyAgICBVTlVTRURf
UEFSQU0oY2VudGVyKTsKKyAgICBVTlVTRURfUEFSQU0oYW5nbGUpOworI2VuZGlmCit9CisKK30K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50UmVuZGVy
ZXJDRy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYWRpZW50UmVuZGVyZXJDRy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50UmVuZGVyZXJDRy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29sb3JDb21w
b25lbnRzLmgiCisjaW5jbHVkZSAiQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLmgiCisjaW5jbHVk
ZSAiR3JhZGllbnRDb2xvclN0b3AuaCIKKyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBo
aWNzLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRT
YWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitzdHJ1Y3QgQ29sb3JDb252ZXJ0ZWRUb0ludGVycG9sYXRpb25Db2xvclNwYWNl
U3RvcCB7CisgICAgZmxvYXQgb2Zmc2V0OworICAgIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4g
Y29sb3JDb21wb25lbnRzOworfTsKKworY2xhc3MgR3JhZGllbnRSZW5kZXJlckNHIHsKK3B1Ymxp
YzoKKyAgICBHcmFkaWVudFJlbmRlcmVyQ0coQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLCBjb25z
dCBHcmFkaWVudENvbG9yU3RvcFZlY3RvciYpOworCisgICAgdm9pZCBkcmF3TGluZWFyR3JhZGll
bnQoQ0dDb250ZXh0UmVmLCBDR1BvaW50IHN0YXJ0UG9pbnQsIENHUG9pbnQgZW5kUG9pbnQsIENH
R3JhZGllbnREcmF3aW5nT3B0aW9ucyk7CisgICAgdm9pZCBkcmF3UmFkaWFsR3JhZGllbnQoQ0dD
b250ZXh0UmVmLCBDR1BvaW50IHN0YXJ0Q2VudGVyLCBDR0Zsb2F0IHN0YXJ0UmFkaXVzLCBDR1Bv
aW50IGVuZENlbnRlciwgQ0dGbG9hdCBlbmRSYWRpdXMsIENHR3JhZGllbnREcmF3aW5nT3B0aW9u
cyk7CisgICAgdm9pZCBkcmF3Q29uaWNHcmFkaWVudChDR0NvbnRleHRSZWYsIENHUG9pbnQgY2Vu
dGVyLCBDR0Zsb2F0IGFuZ2xlKTsKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgR3JhZGllbnQgewor
ICAgICAgICBSZXRhaW5QdHI8Q0dHcmFkaWVudFJlZj4gZ3JhZGllbnQ7CisgICAgfTsKKworICAg
IHN0cnVjdCBTaGFkaW5nIHsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50ZXJwb2xhdGlv
blNwYWNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uPiBzdGF0aWMgdm9pZCBzaGFkaW5nRnVuY3Rp
b24odm9pZCosIGNvbnN0IENHRmxvYXQqLCBDR0Zsb2F0Kik7CisKKyAgICAgICAgY2xhc3MgRGF0
YSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhPiB7CisgICAgICAgIHB1YmxpYzoK
KyAgICAgICAgICAgIHN0YXRpYyBSZWY8RGF0YT4gY3JlYXRlKENvbG9ySW50ZXJwb2xhdGlvbk1l
dGhvZCBjb2xvckludGVycG9sYXRpb25NZXRob2QsIFZlY3RvcjxDb2xvckNvbnZlcnRlZFRvSW50
ZXJwb2xhdGlvbkNvbG9yU3BhY2VTdG9wPiBzdG9wcykKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhv
ZCwgV1RGTW92ZShzdG9wcykpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgQ29sb3JJ
bnRlcnBvbGF0aW9uTWV0aG9kIGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCgpIGNvbnN0IHsgcmV0
dXJuIG1fY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOyB9CisgICAgICAgICAgICBjb25zdCBWZWN0
b3I8Q29sb3JDb252ZXJ0ZWRUb0ludGVycG9sYXRpb25Db2xvclNwYWNlU3RvcD4mIHN0b3BzKCkg
Y29uc3QgeyByZXR1cm4gbV9zdG9wczsgfQorCisgICAgICAgIHByaXZhdGU6CisgICAgICAgICAg
ICBEYXRhKENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBjb2xvckludGVycG9sYXRpb25NZXRob2Qs
IFZlY3RvcjxDb2xvckNvbnZlcnRlZFRvSW50ZXJwb2xhdGlvbkNvbG9yU3BhY2VTdG9wPiBzdG9w
cykKKyAgICAgICAgICAgICAgICA6IG1fY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIHsgY29sb3JJ
bnRlcnBvbGF0aW9uTWV0aG9kIH0KKyAgICAgICAgICAgICAgICAsIG1fc3RvcHMgeyBXVEZNb3Zl
KHN0b3BzKSB9CisgICAgICAgICAgICB7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIENv
bG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBtX2NvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDsKKyAgICAg
ICAgICAgIFZlY3RvcjxDb2xvckNvbnZlcnRlZFRvSW50ZXJwb2xhdGlvbkNvbG9yU3BhY2VTdG9w
PiBtX3N0b3BzOworICAgICAgICB9OworCisgICAgICAgIFJlZjxEYXRhPiBkYXRhOworICAgICAg
ICBSZXRhaW5QdHI8Q0dGdW5jdGlvblJlZj4gZnVuY3Rpb247CisgICAgICAgIFJldGFpblB0cjxD
R0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2U7CisgICAgfTsKKworICAgIHVzaW5nIFN0cmF0ZWd5
ID0gc3RkOjp2YXJpYW50PEdyYWRpZW50LCBTaGFkaW5nPjsKKworICAgIFN0cmF0ZWd5IHBpY2tT
dHJhdGVneShDb2xvckludGVycG9sYXRpb25NZXRob2QsIGNvbnN0IEdyYWRpZW50Q29sb3JTdG9w
VmVjdG9yJikgY29uc3Q7CisgICAgU3RyYXRlZ3kgbWFrZUdyYWRpZW50KENvbG9ySW50ZXJwb2xh
dGlvbk1ldGhvZCwgY29uc3QgR3JhZGllbnRDb2xvclN0b3BWZWN0b3ImKSBjb25zdDsKKyAgICBT
dHJhdGVneSBtYWtlU2hhZGluZyhDb2xvckludGVycG9sYXRpb25NZXRob2QsIGNvbnN0IEdyYWRp
ZW50Q29sb3JTdG9wVmVjdG9yJikgY29uc3Q7CisKKyAgICBTdHJhdGVneSBtX3N0cmF0ZWd5Owor
fTsKKworfQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMjg3Mjg4
KQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMjEtMTItMjAgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBwcmVtdWx0aXBsaWVkIGFscGhhIGludGVycG9s
YXRlZCBncmFkaWVudHMgYW5kIGRlZmF1bHRlZCBvZmYgb3B0aW9uIHRvIHVzZSB0aGVtIGZvciBD
U1MgR3JhZGllbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzQ0OTIKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAg
ICAgQWRkIHN1cHBvcnQgZm9yIHRlc3RzIGVuYWJsaW5nIHRoZSBDU1NHcmFkaWVudFByZW11bHRp
cGxpZWRBbHBoYUludGVycG9sYXRpb25FbmFibGVkIHByZWZlcmVuY2UuCisKKyAgICAgICAgKiBX
ZWJQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6Y3NzR3JhZGllbnRQ
cmVtdWx0aXBsaWVkQWxwaGFJbnRlcnBvbGF0aW9uRW5hYmxlZCk6CisgICAgICAgICogV2ViUHJl
ZmVyZW5jZXMuaDoKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6Om5v
dGlmeVByZWZlcmVuY2VzQ2hhbmdlZCk6CisKIDIwMjEtMTItMjAgIEZ1amlpIEhpcm9ub3JpICA8
SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbl0gTVNWQyByZXBvcnRzICJD
T01Qcm9wZXJ0eUJhZy5oKDIzMyk6IGVycm9yIEMyMzg1OiBhbWJpZ3VvdXMgYWNjZXNzIG9mICdJ
VW5rbm93biciIHdpdGggL3N0ZDpjKysyMApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViUHJlZmVyZW5jZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlByZWZlcmVuY2VzLmNwcAkocmV2aXNpb24gMjg3MjMzKQorKysgU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjM3LDYgKzI2
MzcsMTEgQEAgYm9vbCBXZWJQcmVmZXJlbmNlczo6Y2FudmFzQ29sb3JTcGFjZUVuYWJsZWQoKQog
ICAgIHJldHVybiBib29sVmFsdWVGb3JLZXkoIldlYktpdENhbnZhc0NvbG9yU3BhY2VFbmFibGVk
Iik7CiB9CiAKK2Jvb2wgV2ViUHJlZmVyZW5jZXM6OmNzc0dyYWRpZW50UHJlbXVsdGlwbGllZEFs
cGhhSW50ZXJwb2xhdGlvbkVuYWJsZWQoKQoreworICAgIHJldHVybiBib29sVmFsdWVGb3JLZXko
IldlYktpdENTU0dyYWRpZW50UHJlbXVsdGlwbGllZEFscGhhSW50ZXJwb2xhdGlvbkVuYWJsZWQi
KTsKK30KKwogYm9vbCBXZWJQcmVmZXJlbmNlczo6bW9ja1Njcm9sbGJhcnNDb250cm9sbGVyRW5h
YmxlZCgpCiB7CiAgICAgcmV0dXJuIGJvb2xWYWx1ZUZvcktleSgiV2ViS2l0TW9ja1Njcm9sbGJh
cnNDb250cm9sbGVyRW5hYmxlZCIpOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
UHJlZmVyZW5jZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQ
cmVmZXJlbmNlcy5oCShyZXZpc2lvbiAyODcyMzMpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJQcmVmZXJlbmNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNDYsNiArMzQ2LDcgQEAgY2xh
c3MgV2ViUHJlZmVyZW5jZXMgZmluYWwgOiBwdWJsaWMgSVdlYlByZWZlcmVuY2VzLCBwCiAgICAg
Ly8gVGhlIGZvbGxvd2luZyBwcmVmZXJlbmNlIGFjY2Vzc29ycyBhcmUgbm90IGV4cG9zZWQgdmlh
IElXZWJQcmVmZXJlbmNlcyogYXMgdGhleSBhcmUgb25seQogICAgIC8vIG5lZWRlZCBmb3IgdGVz
dGluZyBwdXJwb3NlcyBhbmQgY2FuIGJlIHRvZ2dsZWQgdmlhIHRoZSBzZXQqUHJlZmVyZW5jZUZv
clRlc3RpbmcgZnVuY3Rpb25zLgogICAgIGJvb2wgY2FudmFzQ29sb3JTcGFjZUVuYWJsZWQoKTsK
KyAgICBib29sIGNzc0dyYWRpZW50UHJlbXVsdGlwbGllZEFscGhhSW50ZXJwb2xhdGlvbkVuYWJs
ZWQoKTsKICAgICBib29sIG1vY2tTY3JvbGxiYXJzQ29udHJvbGxlckVuYWJsZWQoKTsKIAogcHJp
dmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAyODcy
MzMpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTYwMCw2ICs1NjAwLDcgQEAgSFJFU1VMVCBXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNl
c0NoYW5nZWQoSVdlYk5vdGlmaWNhCiAgICAgc2V0dGluZ3Muc2V0T3ZlcnNjcm9sbEJlaGF2aW9y
RW5hYmxlZCghIWVuYWJsZWQpOwogCiAgICAgc2V0dGluZ3Muc2V0Q2FudmFzQ29sb3JTcGFjZUVu
YWJsZWQobV9wcmVmZXJlbmNlcy0+Y2FudmFzQ29sb3JTcGFjZUVuYWJsZWQoKSk7CisgICAgc2V0
dGluZ3Muc2V0Q1NTR3JhZGllbnRQcmVtdWx0aXBsaWVkQWxwaGFJbnRlcnBvbGF0aW9uRW5hYmxl
ZChtX3ByZWZlcmVuY2VzLT5jc3NHcmFkaWVudFByZW11bHRpcGxpZWRBbHBoYUludGVycG9sYXRp
b25FbmFibGVkKCkpOwogICAgIHNldHRpbmdzLnNldE1vY2tTY3JvbGxiYXJzQ29udHJvbGxlckVu
YWJsZWQobV9wcmVmZXJlbmNlcy0+bW9ja1Njcm9sbGJhcnNDb250cm9sbGVyRW5hYmxlZCgpKTsK
IAogICAgIHJldHVybiBTX09LOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjg3Mjg4KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMTItMjAgIFNhbSBXZWluaWcgIDx3
ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBwcmVtdWx0aXBsaWVk
IGFscGhhIGludGVycG9sYXRlZCBncmFkaWVudHMgYW5kIGRlZmF1bHRlZCBvZmYgb3B0aW9uIHRv
IHVzZSB0aGVtIGZvciBDU1MgR3JhZGllbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ0OTIKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBG
cmFzZXIuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5jcHA6CisgICAg
ICAgIChXVFI6OlRlc3RPcHRpb25zOjpkZWZhdWx0cyk6CisgICAgICAgIEFkZCBkZWZhdWx0IGZv
ciBXaW5kb3dzIFdlYktpdExlZ2FjeSB0ZXN0aW5nIHdoaWNoIHN0aWxsIHJlcXVpcmVzIGl0Lgor
CiAyMDIxLTEyLTIwICBKIFBhc2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KIAogICAgICAgICBb
V2ViQXV0aG5dIEFkZCBvcHRpb24gdG8gY2hhbmdlIHJlcXVlc3RXZWJBdXRoZW50aWNhdGlvbk5v
R2VzdHVyZSBkZWxlZ2F0ZSBmb3IgYXBpIHRlc3RzLgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvVGVzdE9wdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rl
c3RPcHRpb25zLmNwcAkocmV2aXNpb24gMjg3MjMzKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUv
VGVzdE9wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsNiArMTM1LDcgQEAgY29uc3Qg
VGVzdEZlYXR1cmVzJiBUZXN0T3B0aW9uczo6ZGVmYXVsdHMoKQogICAgICAgICAgICAgeyAiQ1NT
Q29udGFpbm1lbnRFbmFibGVkIiwgZmFsc2UgfSwKICAgICAgICAgICAgIHsgIkNTU0NvdW50ZXJT
dHlsZUF0UnVsZUltYWdlU3ltYm9sc0VuYWJsZWQiLCBmYWxzZSB9LAogICAgICAgICAgICAgeyAi
Q1NTQ291bnRlclN0eWxlQXRSdWxlc0VuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAi
Q1NTR3JhZGllbnRQcmVtdWx0aXBsaWVkQWxwaGFJbnRlcnBvbGF0aW9uRW5hYmxlZCIsIHRydWUg
fSwKICAgICAgICAgICAgIHsgIkNTU0xvZ2ljYWxFbmFibGVkIiwgZmFsc2UgfSwKICAgICAgICAg
ICAgIHsgIkNTU09NVmlld1Ntb290aFNjcm9sbGluZ0VuYWJsZWQiLCBmYWxzZSB9LAogICAgICAg
ICAgICAgeyAiQ2FudmFzQ29sb3JTcGFjZUVuYWJsZWQiLCB0cnVlIH0sCkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyODcyMzMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwyMCBAQAorMjAyMS0xMi0yMCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHByZW11bHRpcGxpZWQgYWxwaGEgaW50ZXJwb2xh
dGVkIGdyYWRpZW50cyBhbmQgZGVmYXVsdGVkIG9mZiBvcHRpb24gdG8gdXNlIHRoZW0gZm9yIENT
UyBHcmFkaWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNDQ5MgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAg
ICBBZGQgYW5kIHVwZGF0ZSB0ZXN0cyBmb3IgZ3JhZGllbnRzIHdpdGggYWxwaGEgbm93IHRoYXQg
d2UgaGF2ZSBzdXBwb3J0IGZvciBwcmVtdWx0aXBsaWVkIGludGVycG9sYXRpb24uCisgICAgICAg
IEJ5IGRlZmF1bHQsIHRoZSB0ZXN0cyBub3cgZW5hYmxlIHByZW11bHRpcGxpZWQgaW50ZXJwb2xh
dGlvbiAoc2luY2UgaXQgaXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUpIHNvCisgICAgICAgIHRv
IGNvbnRpbnVlIHRlc3RpbmcgdGhlIG9sZCBwYXRoLCB0aGUgc2V0dGluZyBtdXN0IGJlIGV4cGxp
Y2l0bHkgZGlzYWJsZWQuCisKKyAgICAgICAgKiBmYXN0L2dyYWRpZW50cy9hbHBoYS1wcmVtdWx0
aXBsaWVkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZ3JhZGllbnRzL2Fs
cGhhLXByZW11bHRpcGxpZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9ncmFkaWVudHMv
Y29uaWMtZ3JhZGllbnQtYWxwaGEtZXhwZWN0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2dyYWRp
ZW50cy9jb25pYy1ncmFkaWVudC1hbHBoYS11bnByZW11bHRpcGxpZWQtZXhwZWN0ZWQuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGllbnQtYWxwaGEtdW5w
cmVtdWx0aXBsaWVkLmh0bWw6IEFkZGVkLgorCiAyMDIxLTEyLTE3ICBTaW1vbiBGcmFzZXIgIDxz
aW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlYWQgdGhlIGRlZmF1bHQgdmFsdWUg
b2YgdGhlIFNjcm9sbEFuaW1hdG9yRW5hYmxlZCBzZXR0aW5nIGZyb20gTlNVc2VyRGVmYXVsdHMK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZ3JhZGllbnRzL2FscGhhLXByZW11bHRpcGxpZWQtZXhw
ZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2dyYWRpZW50cy9hbHBo
YS1wcmVtdWx0aXBsaWVkLWV4cGVjdGVkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9ncmFkaWVudHMvYWxwaGEtcHJlbXVsdGlwbGllZC1leHBlY3RlZC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxzdHlsZT4KKyAgICBkaXYgeyAKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBo
ZWlnaHQ6IDEwMHB4OworICAgIH0KKworICAgICNsaW5lYXIgeworICAgICAgICBiYWNrZ3JvdW5k
LWltYWdlOiBsaW5lYXItZ3JhZGllbnQodHJhbnNwYXJlbnQsIHJnYigwLCAwLCAyNTUpKTsKKyAg
ICB9CisKKyAgICAjbGluZWFyLXJlcGVhdGluZyB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6
IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodHJhbnNwYXJlbnQsIHJnYigwLCAwLCAyNTUpIDI1
cHgpOworICAgIH0KKworICAgICNyYWRpYWwgeworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBy
YWRpYWwtZ3JhZGllbnQodHJhbnNwYXJlbnQsIHJnYigwLCAwLCAyNTUpKTsKKyAgICB9CisKKyAg
ICAjcmFkaWFsLXJlcGVhdGluZyB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHJlcGVhdGlu
Zy1yYWRpYWwtZ3JhZGllbnQodHJhbnNwYXJlbnQsIHJnYigwLCAwLCAyNTUpIDI1cHgpOworICAg
IH0KKworICAgICNjb25pYyB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGNvbmljLWdyYWRp
ZW50KHRyYW5zcGFyZW50LCByZ2IoMCwgMCwgMjU1KSk7CisgICAgfQorCisgICAgI2NvbmljLXJl
cGVhdGluZyB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHJlcGVhdGluZy1jb25pYy1ncmFk
aWVudCh0cmFuc3BhcmVudCwgcmdiKDAsIDAsIDI1NSkgMzBkZWcpOworICAgIH0KKyAgICAKKzwv
c3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImxpbmVhciI+PC9kaXY+Cis8ZGl2IGlk
PSJsaW5lYXItcmVwZWF0aW5nIj48L2Rpdj4KKzxkaXYgaWQ9InJhZGlhbCI+PC9kaXY+Cis8ZGl2
IGlkPSJyYWRpYWwtcmVwZWF0aW5nIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbmljIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbmljLXJlcGVhdGluZyI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2dyYWRpZW50cy9hbHBoYS1wcmVtdWx0aXBsaWVkLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVudHMvYWxwaGEtcHJlbXVsdGlwbGllZC5o
dG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZ3JhZGllbnRzL2FscGhhLXBy
ZW11bHRpcGxpZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisgICAgZGl2IHsgCisgICAgICAgIHdp
ZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9CisKKyAgICAjbGluZWFy
IHsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LCAw
LCAyNTUsIDApLCByZ2IoMCwgMCwgMjU1KSk7CisgICAgfQorCisgICAgI2xpbmVhci1yZXBlYXRp
bmcgeworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50
KHJnYmEoMjU1LCAwLCAyNTUsIDApLCByZ2IoMCwgMCwgMjU1KSAyNXB4KTsKKyAgICB9CisKKyAg
ICAjcmFkaWFsIHsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogcmFkaWFsLWdyYWRpZW50KHJn
YmEoMjU1LCAwLCAyNTUsIDApLCByZ2IoMCwgMCwgMjU1KSk7CisgICAgfQorCisgICAgI3JhZGlh
bC1yZXBlYXRpbmcgeworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiByZXBlYXRpbmctcmFkaWFs
LWdyYWRpZW50KHJnYmEoMjU1LCAwLCAyNTUsIDApLCByZ2IoMCwgMCwgMjU1KSAyNXB4KTsKKyAg
ICB9CisKKyAgICAjY29uaWMgeworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBjb25pYy1ncmFk
aWVudChyZ2JhKDI1NSwgMCwgMjU1LCAwKSwgcmdiKDAsIDAsIDI1NSkpOworICAgIH0KKworICAg
ICNjb25pYy1yZXBlYXRpbmcgeworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiByZXBlYXRpbmct
Y29uaWMtZ3JhZGllbnQocmdiYSgyNTUsIDAsIDI1NSwgMCksIHJnYigwLCAwLCAyNTUpIDMwZGVn
KTsKKyAgICB9CisgICAgCis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJsaW5l
YXIiPjwvZGl2PgorPGRpdiBpZD0ibGluZWFyLXJlcGVhdGluZyI+PC9kaXY+Cis8ZGl2IGlkPSJy
YWRpYWwiPjwvZGl2PgorPGRpdiBpZD0icmFkaWFsLXJlcGVhdGluZyI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25pYyI+PC9kaXY+Cis8ZGl2IGlkPSJjb25pYy1yZXBlYXRpbmciPjwvZGl2PgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGll
bnQtYWxwaGEtZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2dy
YWRpZW50cy9jb25pYy1ncmFkaWVudC1hbHBoYS1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAyODcy
MzMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2dyYWRpZW50cy9jb25pYy1ncmFkaWVudC1hbHBoYS1l
eHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCwyNyArMTAsMjcgQEAKICAgICAgICAg
I3RvcGxlZnQgewogICAgICAgICAgICAgd2lkdGg6IDA7IAogICAgICAgICAgICAgaGVpZ2h0OiAw
OyAKLSAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxMDBweCBzb2xpZCByZ2IoNjQsODcsNjQpOwor
ICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDEwMHB4IHNvbGlkIHJnYig2NCw2NCw2NCk7CiAgICAg
ICAgICAgICBib3JkZXItdG9wOiAxMDBweCBzb2xpZCByZ2IoMzIsMzIsMzIpOwogICAgICAgICB9
CiAgICAgICAgICN0b3ByaWdodCB7CiAgICAgICAgICAgICB3aWR0aDogMDsgCiAgICAgICAgICAg
ICBoZWlnaHQ6IDA7IAotICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxMDBweCBzb2xpZCByZ2Io
MjI1LDI0NiwyMjUpOwotICAgICAgICAgICAgYm9yZGVyLXRvcDogMTAwcHggc29saWQgcmdiKDI1
NCwyNTQsMjU0KTsKKyAgICAgICAgICAgIGJvcmRlci1yaWdodDogMTAwcHggc29saWQgcmdiKDIy
NCwyMjQsMjI0KTsKKyAgICAgICAgICAgIGJvcmRlci10b3A6IDEwMHB4IHNvbGlkIHJnYigyNTUs
MjU1LDI1NSk7CiAgICAgICAgIH0KICAgICAgICAgI2JvdHRvbWxlZnQgewogICAgICAgICAgICAg
Y2xlYXI6IGxlZnQ7CiAgICAgICAgICAgICB3aWR0aDogMDsgCiAgICAgICAgICAgICBoZWlnaHQ6
IDA7IAotICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDEwMHB4IHNvbGlkIHJnYig5NiwxMzUsOTYp
OwotICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMTAwcHggc29saWQgcmdiKDEyOCwxNzUsMTI4
KTsKKyAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxMDBweCBzb2xpZCByZ2IoOTYsOTYsOTYpOwor
ICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMTAwcHggc29saWQgcmdiKDEyOCwxMjgsMTI4KTsK
ICAgICAgICAgfQogICAgICAgICAjYm90dG9tcmlnaHQgewogICAgICAgICAgICAgd2lkdGg6IDA7
IAogICAgICAgICAgICAgaGVpZ2h0OiAwOyAKLSAgICAgICAgICAgIGJvcmRlci1yaWdodDogMTAw
cHggc29saWQgcmdiKDE5MywyMzEsMTkzKTsKLSAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDEw
MHB4IHNvbGlkIHJnYigxNjAsMjA3LDE2MCk7CisgICAgICAgICAgICBib3JkZXItcmlnaHQ6IDEw
MHB4IHNvbGlkIHJnYigxOTIsMTkyLDE5Mik7CisgICAgICAgICAgICBib3JkZXItYm90dG9tOiAx
MDBweCBzb2xpZCByZ2IoMTYwLDE2MCwxNjApOwogICAgICAgICB9CiAgICAgICAgIC5ib3ggewog
ICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9n
cmFkaWVudHMvY29uaWMtZ3JhZGllbnQtYWxwaGEtdW5wcmVtdWx0aXBsaWVkLWV4cGVjdGVkLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGll
bnQtYWxwaGEtdW5wcmVtdWx0aXBsaWVkLWV4cGVjdGVkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGllbnQtYWxwaGEtdW5wcmVtdWx0
aXBsaWVkLWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NyBAQAorPGh0
bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBDU1NHcmFkaWVudFByZW11bHRpcGxpZWRBbHBo
YUludGVycG9sYXRpb25FbmFibGVkPWZhbHNlIF0gLS0+Cis8aGVhZD4KKyAgICA8c3R5bGU+Cisg
ICAgICAgIGRpdiB7CisgICAgICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgICAgICBoZWln
aHQ6IDIwMHB4OworICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7CisgICAgICAgIH0KKyAgICAgICAg
Lyp0d2VhayB0aGlzIHVudGlsIGl0J3MgYWN0dWFsbHkgcmlnaHQuLi4gKi8KKyAgICAgICAgI3Rv
cGxlZnQgeworICAgICAgICAgICAgd2lkdGg6IDA7IAorICAgICAgICAgICAgaGVpZ2h0OiAwOyAK
KyAgICAgICAgICAgIGJvcmRlci1sZWZ0OiAxMDBweCBzb2xpZCByZ2IoNjQsODcsNjQpOworICAg
ICAgICAgICAgYm9yZGVyLXRvcDogMTAwcHggc29saWQgcmdiKDMyLDMyLDMyKTsKKyAgICAgICAg
fQorICAgICAgICAjdG9wcmlnaHQgeworICAgICAgICAgICAgd2lkdGg6IDA7IAorICAgICAgICAg
ICAgaGVpZ2h0OiAwOyAKKyAgICAgICAgICAgIGJvcmRlci1yaWdodDogMTAwcHggc29saWQgcmdi
KDIyNSwyNDYsMjI1KTsKKyAgICAgICAgICAgIGJvcmRlci10b3A6IDEwMHB4IHNvbGlkIHJnYigy
NTQsMjU0LDI1NCk7CisgICAgICAgIH0KKyAgICAgICAgI2JvdHRvbWxlZnQgeworICAgICAgICAg
ICAgY2xlYXI6IGxlZnQ7CisgICAgICAgICAgICB3aWR0aDogMDsgCisgICAgICAgICAgICBoZWln
aHQ6IDA7IAorICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDEwMHB4IHNvbGlkIHJnYig5NiwxMzUs
OTYpOworICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMTAwcHggc29saWQgcmdiKDEyOCwxNzUs
MTI4KTsKKyAgICAgICAgfQorICAgICAgICAjYm90dG9tcmlnaHQgeworICAgICAgICAgICAgd2lk
dGg6IDA7IAorICAgICAgICAgICAgaGVpZ2h0OiAwOyAKKyAgICAgICAgICAgIGJvcmRlci1yaWdo
dDogMTAwcHggc29saWQgcmdiKDE5MywyMzEsMTkzKTsKKyAgICAgICAgICAgIGJvcmRlci1ib3R0
b206IDEwMHB4IHNvbGlkIHJnYigxNjAsMjA3LDE2MCk7CisgICAgICAgIH0KKyAgICAgICAgLmJv
eCB7CisgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIH0KKyAgICAgICAg
LnggeworICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICAgICAgLXdlYmtp
dC1jbGlwLXBhdGg6IHBvbHlnb24oMCUgMCUsIDAlIDEwJSwgNDAlIDUwJSwgMCUgOTAlLCAwJSAx
MDAlLCAxMCUgMTAwJSwgNTAlIDYwJSwgOTAlIDEwMCUsIDEwMCUgMTAwJSwgMTAwJSA5MCUsIDYw
JSA1MCUsIDEwMCUgMTAlLCAxMDAlIDAlLCA5MCUgMCUsIDUwJSA0MCUsIDEwJSAwJSk7CisgICAg
ICAgIH0KKyAgICAgICAgI3ggeworICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsK
KyAgICAgICAgfQorICAgICAgICAucGx1cyB7CisgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1
dGU7CisgICAgICAgICAgICAtd2Via2l0LWNsaXAtcGF0aDogcG9seWdvbig0NSUgMCUsIDU1JSAw
JSwgNTUlIDQ1JSwgMTAwJSA0NSUsIDEwMCUgNTUlLCA1NSUgNTUlLCA1NSUgMTAwJSwgNDUlIDEw
MCUsIDQ1JSA1NSUsIDAlIDU1JSwgMCUgNDUlLCA0NSUgNDUlKTsKKyAgICAgICAgfQorICAgICAg
ICAjcGx1cyB7CisgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOworICAgICAgICB9
CisgICAgICAgIAorICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2PgorICAg
ICAgICA8ZGl2IGNsYXNzPSJib3giPgorICAgICAgICAgICAgPGRpdiBpZD0idG9wbGVmdCI+PC9k
aXY+CisgICAgICAgICAgICA8ZGl2IGlkPSJ0b3ByaWdodCI+PC9kaXY+CisgICAgICAgICAgICA8
ZGl2IGlkPSJib3R0b21sZWZ0Ij48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImJvdHRvbXJp
Z2h0Ij48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxkaXYgaWQ9IngiIGNsYXNzPSJ4
Ij48L2Rpdj4KKyAgICAgICAgPGRpdiBpZD0icGx1cyIgY2xhc3M9InBsdXMiPjwvZGl2PgorICAg
IDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVu
dHMvY29uaWMtZ3JhZGllbnQtYWxwaGEtdW5wcmVtdWx0aXBsaWVkLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGllbnQtYWxwaGEtdW5wcmVt
dWx0aXBsaWVkLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ncmFkaWVu
dHMvY29uaWMtZ3JhZGllbnQtYWxwaGEtdW5wcmVtdWx0aXBsaWVkLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw1NiBAQAorPGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBDU1NH
cmFkaWVudFByZW11bHRpcGxpZWRBbHBoYUludGVycG9sYXRpb25FbmFibGVkPWZhbHNlIF0gLS0+
Cis8aGVhZD4KKzxzdHlsZT4KKyAgICBzdmcgeworICAgICAgICB3aWR0aDogODAwcHg7CisgICAg
ICAgIGRpc3BsYXk6IG5vbmU7CisgICAgfQorICAgIGRpdiB7CisgICAgICAgIHdpZHRoOiAyMDBw
eDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9CisgICAgI2dyYWRpZW50IHsKKyAgICAg
ICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgIGhl
aWdodDogMjAwcHg7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGNvbmljLWdyYWRpZW50KHJn
YmEoMCwyNTUsMCwwKSwgYmxhY2spOworICAgICAgICBmaWx0ZXI6IHVybCgjcG9zdGVyaXplKTsK
KyAgICB9CisKKyAgICAueCB7CisgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAg
LXdlYmtpdC1jbGlwLXBhdGg6IHBvbHlnb24oMCUgMCUsIDAlIDEwJSwgNDAlIDUwJSwgMCUgOTAl
LCAwJSAxMDAlLCAxMCUgMTAwJSwgNTAlIDYwJSwgOTAlIDEwMCUsIDEwMCUgMTAwJSwgMTAwJSA5
MCUsIDYwJSA1MCUsIDEwMCUgMTAlLCAxMDAlIDAlLCA5MCUgMCUsIDUwJSA0MCUsIDEwJSAwJSk7
CisgICAgfQorICAgICN4IHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsKKyAgICB9
CisgICAgLnBsdXMgeworICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIC13ZWJr
aXQtY2xpcC1wYXRoOiBwb2x5Z29uKDQ1JSAwJSwgNTUlIDAlLCA1NSUgNDUlLCAxMDAlIDQ1JSwg
MTAwJSA1NSUsIDU1JSA1NSUsIDU1JSAxMDAlLCA0NSUgMTAwJSwgNDUlIDU1JSwgMCUgNTUlLCAw
JSA0NSUsIDQ1JSA0NSUpOworICAgIH0KKyAgICAjcGx1cyB7CisgICAgICAgIGJhY2tncm91bmQt
Y29sb3I6d2hpdGU7CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKworPGJvZHk+Cis8c3ZnIHZp
ZXdCb3g9IjAgMCA3MDAgMTAwIj4KKzxkZWZzPgorICAgIDxmaWx0ZXIgaWQ9InBvc3Rlcml6ZSIg
ZmlsdGVyVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiBwcmltaXRpdmVVbml0cz0ib2JqZWN0Qm91
bmRpbmdCb3giPgorICAgICAgICA8ZmVDb21wb25lbnRUcmFuc2Zlcj4KKyAgICAgICAgICAgIDxm
ZUZ1bmNSIHR5cGU9ImRpc2NyZXRlIiB0YWJsZVZhbHVlcz0iMCAwLjEyNSAwLjI1IDAuMzc1IDAu
NSAwLjYyNSAwLjc1IDAuODc1Ii8+CisgICAgICAgICAgICA8ZmVGdW5jRyB0eXBlPSJkaXNjcmV0
ZSIgdGFibGVWYWx1ZXM9IjAgMC4xMjUgMC4yNSAwLjM3NSAwLjUgMC42MjUgMC43NSAwLjg3NSIv
PgorICAgICAgICAgICAgPGZlRnVuY0IgdHlwZT0iZGlzY3JldGUiIHRhYmxlVmFsdWVzPSIwIDAu
MTI1IDAuMjUgMC4zNzUgMC41IDAuNjI1IDAuNzUgMC44NzUiLz4KKyAgICAgICAgICAgIDxmZUZ1
bmNBIHR5cGU9ImRpc2NyZXRlIiB0YWJsZVZhbHVlcz0iMCAwLjEyNSAwLjI1IDAuMzc1IDAuNSAw
LjYyNSAwLjc1IDAuODc1Ii8+CisgICAgICAgIDwvZmVDb21wb25lbnRUcmFuc2Zlcj4KKyAgICA8
L2ZpbHRlcj4KKzwvZGVmcz4KKzwvc3ZnPgorCis8ZGl2PgorICAgIDxkaXYgaWQ9ImdyYWRpZW50
Ij48L2Rpdj4KKyAgICA8ZGl2IGlkPSJ4IiBjbGFzcz0ieCI+PC9kaXY+CisgICAgPGRpdiBpZD0i
cGx1cyIgY2xhc3M9InBsdXMiPjwvZGl2PgorPC9kaXY+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAyODcyMzMpCisr
KyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4OSw3ICs0ODksOSBAQCB3ZWJraXQub3JnL2IvMjEzMTE0IGZhc3QvZmxleGJveC9s
aW5lLWNsYW1wLXdpdGgtYW5jaG8KIAogIyBmYXN0L2dyYWRpZW50cyBhcmUgU2tpcCBpbiB0aGUg
dG9wIGxldmVsIEV4cGVjdGF0aW9uLiBXaGVuIGZpeGluZywgY2hhbmdlIHRoaXMgdG8KICMgUGFz
cyBpbnN0ZWFkIG9mIHJlbW92aW5nIHRoaXMgbGluZS4KK3dlYmtpdC5vcmcvYi8yMTQyNTkgZmFz
dC9ncmFkaWVudHMvY29uaWMtZ3JhZGllbnQtYWxwaGEtdW5wcmVtdWx0aXBsaWVkLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMTQyNTkgZmFzdC9ncmFkaWVudHMvY29u
aWMtZ3JhZGllbnQtYWxwaGEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9i
LzIzNDQ5MiBmYXN0L2dyYWRpZW50cy9hbHBoYS1wcmVtdWx0aXBsaWVkLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE2OTk4OCBjc3MzL2ZpbHRlcnMvYmFja2Ryb3Av
YmFja2Ryb3AtZmlsdGVyLXdpdGgtYm9yZGVyLXJhZGl1cy1hbmQtcmVmbGVjdGlvbi1hZGQuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE2OTk4OCBjc3MzL2ZpbHRlcnMv
YmFja2Ryb3AvYmFja2Ryb3AtZmlsdGVyLXdpdGgtYm9yZGVyLXJhZGl1cy1hbmQtcmVmbGVjdGlv
bi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW4vVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW4vVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjg3MjMzKQorKysgTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTI5NSw2ICsyOTUs
NyBAQCBmYXN0L2dyYWRpZW50cy9jb25pYy1jZW50ZXItb3V0c2lkZS1ib3guaHRtbCBbIFNraXAg
XQogZmFzdC9ncmFkaWVudHMvY29uaWMtZXh0ZW5kZWQtc3RvcHMuaHRtbCBbIFNraXAgXQogZmFz
dC9ncmFkaWVudHMvY29uaWMtZnJvbS1hbmdsZS5odG1sIFsgU2tpcCBdCiBmYXN0L2dyYWRpZW50
cy9jb25pYy1yZXBlYXRpbmctbGFzdC1zdG9wLmh0bWwgWyBTa2lwIF0KK2Zhc3QvZ3JhZGllbnRz
L2NvbmljLWdyYWRpZW50LWFscGhhLXVucHJlbXVsdGlwbGllZC5odG1sIFsgU2tpcCBdCiBmYXN0
L2dyYWRpZW50cy9jb25pYy1ncmFkaWVudC1hbHBoYS5odG1sIFsgU2tpcCBdCiBmYXN0L2dyYWRp
ZW50cy9jb25pYy1ncmFkaWVudC1leHRlbmRlZC1zdG9wcy5odG1sIFsgU2tpcCBdCiBmYXN0L2dy
YWRpZW50cy9jb25pYy1ncmFkaWVudC5odG1sIFsgU2tpcCBdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>