<?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>149326</bug_id>
          
          <creation_ts>2015-09-17 19:34:38 -0700</creation_ts>
          <short_desc>Implement linear memory instructions in WebAssembly</short_desc>
          <delta_ts>2015-09-18 16:07:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>146064</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sukolsak Sakshuwong">sukolsak</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>sukolsak</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1127012</commentid>
    <comment_count>0</comment_count>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2015-09-17 19:34:38 -0700</bug_when>
    <thetext>Implement linear memory instructions in WebAssembly

https://github.com/WebAssembly/design/blob/master/AstSemantics.md#linear-memory</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127032</commentid>
    <comment_count>1</comment_count>
      <attachid>261477</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2015-09-17 20:17:15 -0700</bug_when>
    <thetext>Created attachment 261477
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127033</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-17 20:19:35 -0700</bug_when>
    <thetext>Attachment 261477 did not pass style-queue:


ERROR: Source/JavaScriptCore/wasm/WASMConstants.h:288:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/wasm/WASMConstants.h:289:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/wasm/WASMConstants.h:290:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/wasm/WASMConstants.h:291:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/wasm/WASMConstants.h:292:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 5 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127151</commentid>
    <comment_count>3</comment_count>
      <attachid>261477</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-09-18 10:27:24 -0700</bug_when>
    <thetext>Comment on attachment 261477
Patch

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

&gt; Source/JavaScriptCore/wasm/WASMModuleParser.cpp:99
&gt; +    // FIXME: Remove this limitation.

Drive by comment: please create a bug (so we don&apos;t forget to address this) and add the URL to this comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127159</commentid>
    <comment_count>4</comment_count>
      <attachid>261477</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-09-18 11:02:07 -0700</bug_when>
    <thetext>Comment on attachment 261477
Patch

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

r=me

&gt;&gt; Source/JavaScriptCore/wasm/WASMModuleParser.cpp:99
&gt;&gt; +    // FIXME: Remove this limitation.
&gt; 
&gt; Drive by comment: please create a bug (so we don&apos;t forget to address this) and add the URL to this comment.

Even better would be to remove this comment, since we don&apos;t know yet whether the spec will require us to change or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127229</commentid>
    <comment_count>5</comment_count>
      <attachid>261523</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2015-09-18 14:17:57 -0700</bug_when>
    <thetext>Created attachment 261523
remove the FIXME for the ArrayBuffer&apos;s length limit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127230</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-18 14:20:22 -0700</bug_when>
    <thetext>Attachment 261523 did not pass style-queue:


ERROR: Source/JavaScriptCore/wasm/WASMConstants.h:288:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/wasm/WASMConstants.h:289:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/wasm/WASMConstants.h:290:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/wasm/WASMConstants.h:291:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
ERROR: Source/JavaScriptCore/wasm/WASMConstants.h:292:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 5 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127259</commentid>
    <comment_count>7</comment_count>
      <attachid>261523</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-09-18 15:41:55 -0700</bug_when>
    <thetext>Comment on attachment 261523
remove the FIXME for the ArrayBuffer&apos;s length limit

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127278</commentid>
    <comment_count>8</comment_count>
      <attachid>261523</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-18 16:07:04 -0700</bug_when>
    <thetext>Comment on attachment 261523
remove the FIXME for the ArrayBuffer&apos;s length limit

Clearing flags on attachment: 261523

Committed r189993: &lt;http://trac.webkit.org/changeset/189993&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127279</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-18 16:07:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261477</attachid>
            <date>2015-09-17 20:17:15 -0700</date>
            <delta_ts>2015-09-18 14:17:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149326-20150917201746.patch</filename>
            <type>text/plain</type>
            <size>42157</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5OTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NDYzMmFmNWY0OTM3NzFiMDBmMTcxMDgzMzlmNDkyYWM4MWExOTM2Li4yMWEyOTEwZTMyNjBiMTQ1
ZDc4NTU0MDUwN2ZlNGQxZjlhNjViMjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NiBAQAorMjAxNS0wOS0xNyAgU3Vrb2xzYWsgU2Frc2h1d29uZyAgPHN1a29sc2FrQGdt
YWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgbGluZWFyIG1lbW9yeSBpbnN0cnVjdGlvbnMg
aW4gV2ViQXNzZW1ibHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0OTMyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBsaW5lYXIgbWVtb3J5IGluc3RydWN0aW9ucyBp
biBXZWJBc3NlbWJseS5bMV0gVG8KKyAgICAgICAgdXNlIHRoZSBsaW5lYXIgbWVtb3J5LCBhbiBB
cnJheUJ1ZmZlciBtdXN0IGJlIHBhc3NlZCB0byBsb2FkV2ViQXNzZW1ibHkoKS4KKworICAgICAg
ICBOb3RlczoKKyAgICAgICAgLSBXZSBsaW1pdCB0aGUgQXJyYXlCdWZmZXIncyBieXRlIGxlbmd0
aCB0byAyXjMxIC0gMS4gVGhpcyBlbmFibGVzIHVzIHRvCisgICAgICAgICAgdXNlIG9ubHkgb25l
IGNvbXBhcmlzb24gKHVuc2lnbmVkIGdyZWF0ZXIgdGhhbikgdG8gY2hlY2sgZm9yCisgICAgICAg
ICAgb3V0LW9mLWJvdW5kcyBhY2Nlc3MuCisgICAgICAgIC0gVGhlcmUgaXMgbm8gY29uc2Vuc3Vz
IHlldCBvbiB3aGF0IHNob3VsZCBoYXBwZW4gd2hlbiBhbiBvdXQtb2YtYm91bmRzCisgICAgICAg
ICAgYWNjZXNzIG9jY3Vycy5bMl0gRm9yIG5vdywgd2UgdGhyb3cgYW4gZXJyb3Igd2hlbiB0aGF0
IGhhcHBlbnMuCisgICAgICAgIC0gSW4gYXNtLmpzLCBhIGhlYXAgYWNjZXNzIGxvb2tzIGxpa2Ug
dGhpczogaW50MzJBcnJheVtpID4+IDJdLiBOb3RlCisgICAgICAgICAgdGhhdCAiPj4gMiIgaXMg
cGFydCBvZiB0aGUgc3ludGF4IGFuZCBpcyByZXF1aXJlZC4gcGFjay1hc21qcyB3aWxsCisgICAg
ICAgICAgcHJvZHVjZSBieXRlY29kZXMgdGhhdCBsb29rIHNvbWV0aGluZyBsaWtlICJMb2FkSTMy
LCBpIiAobm90CisgICAgICAgICAgIkxvYWRJMzIsIFNoaWZ0UmlnaHRJMzIsIGksIDIiKS4gVGhl
IHJlcXVpcmVtZW50IG9mIHRoZSBzaGlmdCBvcGVyYXRvcgorICAgICAgICAgIHByZXZlbnRzIHVu
YWxpZ25lZCBhY2Nlc3NlcyBpbiBhc20uanMuIChUaGVyZSBpcyBhIHByb3Bvc2FsIHRvIHN1cHBv
cnQKKyAgICAgICAgICB1bmFsaWduZWQgYWNjZXNzZXMgaW4gdGhlIGZ1dHVyZSB2ZXJzaW9uIG9m
IGFzbS5qcyB1c2luZyBEYXRhVmlldy5bM10pCisgICAgICAgICAgVGhlIFdlYkFzc2VtYmx5IHNw
ZWMgYWxsb3dzIHVuYWxpZ25lZCBhY2Nlc3Nlcy5bNF0gQnV0IHNpbmNlIHdlIHVzZQorICAgICAg
ICAgIGFzbS5qcyBmb3IgdGVzdGluZywgd2UgZm9sbG93IGFzbS5qcydzIGJlaGF2aW9ycyBmb3Ig
bm93LgorCisgICAgICAgIFsxXTogaHR0cHM6Ly9naXRodWIuY29tL1dlYkFzc2VtYmx5L2Rlc2ln
bi9ibG9iL21hc3Rlci9Bc3RTZW1hbnRpY3MubWQjbGluZWFyLW1lbW9yeQorICAgICAgICBbMl06
IGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9kZXNpZ24vYmxvYi9tYXN0ZXIvQXN0U2Vt
YW50aWNzLm1kI291dC1vZi1ib3VuZHMKKyAgICAgICAgWzNdOiBodHRwczovL3dpa2kubW96aWxs
YS5vcmcvSmF2YXNjcmlwdDpTcGlkZXJNb25rZXk6T2Rpbk1vbmtleSNQb3NzaWJsZV9hc20uanNf
ZXh0ZW5zaW9uc190aGF0X2Rvbi4yN3RfcmVxdWlyZV9uZXdfSlNfZmVhdHVyZXMKKyAgICAgICAg
WzRdOiBodHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1ibHkvZGVzaWduL2Jsb2IvbWFzdGVyL0Fz
dFNlbWFudGljcy5tZCNhbGlnbm1lbnQKKworICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGpzYy5jcHA6Cisg
ICAgICAgIChHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKGZ1bmN0aW9u
TG9hZFdlYkFzc2VtYmx5KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mvd2FzbS1saW5lYXItbWVt
b3J5LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93
KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mvd2FzbS9saW5lYXItbWVtb3J5Lndhc206IEFkZGVk
LgorICAgICAgICAqIHdhc20vSlNXQVNNTW9kdWxlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXQVNN
TW9kdWxlOjpKU1dBU01Nb2R1bGUpOgorICAgICAgICAoSlNDOjpKU1dBU01Nb2R1bGU6OnZpc2l0
Q2hpbGRyZW4pOgorICAgICAgICAqIHdhc20vSlNXQVNNTW9kdWxlLmg6CisgICAgICAgIChKU0M6
OkpTV0FTTU1vZHVsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNXQVNNTW9kdWxlOjphcnJh
eUJ1ZmZlcik6CisgICAgICAgIChKU0M6OkpTV0FTTU1vZHVsZTo6SlNXQVNNTW9kdWxlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiB3YXNtL1dBU01Db25zdGFudHMuaDoKKyAgICAgICAgKiB3YXNtL1dB
U01GdW5jdGlvbkNvbXBpbGVyLmg6CisgICAgICAgIChKU0M6OnNpemVPZk1lbW9yeVR5cGUpOgor
ICAgICAgICAoSlNDOjpXQVNNRnVuY3Rpb25Db21waWxlcjo6TWVtb3J5QWRkcmVzczo6TWVtb3J5
QWRkcmVzcyk6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlvbkNvbXBpbGVyOjplbmRGdW5jdGlv
bik6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlvbkNvbXBpbGVyOjpidWlsZExvYWQpOgorICAg
ICAgICAoSlNDOjpXQVNNRnVuY3Rpb25Db21waWxlcjo6YnVpbGRTdG9yZSk6CisgICAgICAgICog
d2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpXQVNNRnVuY3Rpb25Q
YXJzZXI6OnBhcnNlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uUGFyc2Vy
OjpwYXJzZUV4cHJlc3Npb25JMzIpOgorICAgICAgICAoSlNDOjpXQVNNRnVuY3Rpb25QYXJzZXI6
OnBhcnNlRXhwcmVzc2lvbkYzMik6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlvblBhcnNlcjo6
cGFyc2VFeHByZXNzaW9uRjY0KToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uUGFyc2VyOjpw
YXJzZU1lbW9yeUFkZHJlc3MpOgorICAgICAgICAoSlNDOjpXQVNNRnVuY3Rpb25QYXJzZXI6OnBh
cnNlTG9hZCk6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlvblBhcnNlcjo6cGFyc2VTdG9yZSk6
CisgICAgICAgICogd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuaDoKKyAgICAgICAgKiB3YXNtL1dB
U01GdW5jdGlvblN5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uU3lu
dGF4Q2hlY2tlcjo6TWVtb3J5QWRkcmVzczo6TWVtb3J5QWRkcmVzcyk6CisgICAgICAgIChKU0M6
OldBU01GdW5jdGlvblN5bnRheENoZWNrZXI6OmJ1aWxkTG9hZCk6CisgICAgICAgIChKU0M6OldB
U01GdW5jdGlvblN5bnRheENoZWNrZXI6OmJ1aWxkU3RvcmUpOgorICAgICAgICAqIHdhc20vV0FT
TU1vZHVsZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OldBU01Nb2R1bGVQYXJzZXI6OldBU01N
b2R1bGVQYXJzZXIpOgorICAgICAgICAoSlNDOjpXQVNNTW9kdWxlUGFyc2VyOjpwYXJzZU1vZHVs
ZSk6CisgICAgICAgIChKU0M6OnBhcnNlV2ViQXNzZW1ibHkpOgorICAgICAgICAoSlNDOjpXQVNN
TW9kdWxlUGFyc2VyOjpwYXJzZSk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9XQVNNTW9kdWxl
UGFyc2VyLmg6CisKIDIwMTUtMDktMTcgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxODk5MzgsIHIxODk5
NTIsIGFuZCByMTg5OTU2LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAKaW5kZXggYzU1MGFjMjY3NTM4Mjg1ZDAxMTQ2YzlkOTA2NjIyNzAyZjM1NWJjZi4uNjZm
MjgwNWY1MTVmZGY5ZWIwOTRkNWZiYTI4NTgwMDQyNDYxN2NmYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0xMDUsNiArMTA1LDE3IEBAIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd0RpdmlkZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICBFcnJvckhhbmRsaW5nU2NvcGUgZXJyb3JTY29wZSgqdm0pOwogICAgIHZtLT50aHJvd0V4
Y2VwdGlvbihjYWxsZXJGcmFtZSwgY3JlYXRlRXJyb3IoY2FsbGVyRnJhbWUsIEFTQ0lJTGl0ZXJh
bCgiRGl2aXNpb24gYnkgemVybyBvciBkaXZpc2lvbiBvdmVyZmxvdy4iKSkpOwogfQorCit2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dPdXRPZkJvdW5kc0FjY2Vzc0Vycm9yKEV4ZWNT
dGF0ZSogZXhlYykKK3sKKyAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBWTUVudHJ5RnJh
bWUqIHZtRW50cnlGcmFtZSA9IHZtLT50b3BWTUVudHJ5RnJhbWU7CisgICAgQ2FsbEZyYW1lKiBj
YWxsZXJGcmFtZSA9IGV4ZWMtPmNhbGxlckZyYW1lKHZtRW50cnlGcmFtZSk7CisKKyAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXJXaXRoUmVzdG9yZSB0cmFjZXIodm0sIHZtRW50cnlGcmFtZSwgY2Fs
bGVyRnJhbWUpOworICAgIEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNjb3BlKCp2bSk7CisgICAg
dm0tPnRocm93RXhjZXB0aW9uKGNhbGxlckZyYW1lLCBjcmVhdGVFcnJvcihjYWxsZXJGcmFtZSwg
QVNDSUlMaXRlcmFsKCJPdXQtb2YtYm91bmRzIGFjY2Vzcy4iKSkpOworfQogI2VuZGlmCiAKIGlu
dDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjayhFeGVjU3RhdGUqIGV4
ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IGI5Yzcy
NDhiODkzN2YyNDQ3NjdmYjUxMmNhZDAxMjFkNjVmODhmZWIuLmFhY2EzNWEyMWQwOTdhNjZiNDgx
ZmE1MjA1YzY4NTEzMjMzY2Q1NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCkBAIC0yNTEsNiArMjUxLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZNSGFuZGxlRXhjZXB0aW9uKEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihFeGVjU3RhdGUqLCBDb2Rl
QmxvY2sqKSBXVEZfSU5URVJOQUw7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblRocm93RGl2aWRlRXJyb3IoRXhlY1N0YXRlKikgV1RGX0lOVEVS
TkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93T3V0T2ZCb3VuZHNBY2Nlc3NF
cnJvcihFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CiAjZW5kaWYKIGludDMyX3QgSklUX09QRVJB
VElPTiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjayhFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CiBp
bnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29uc3RydWN0QXJpdHlDaGVjayhFeGVjU3Rh
dGUqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDFmMjNjYTFiMGU5YjAy
YmZkZGQ4MTJjOWNmYmI4NGIyYTQzMDFjNzMuLmQyZTRkNThlMzkwZTQxYjg4ZDYzMDkzZWZiN2Iz
OTUyODUyZTgwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC02NzcsNyArNjc3LDcgQEAgcHJv
dGVjdGVkOgogICAgICAgICBhZGRGdW5jdGlvbih2bSwgImRyYWluTWljcm90YXNrcyIsIGZ1bmN0
aW9uRHJhaW5NaWNyb3Rhc2tzLCAwKTsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICAg
ICAgYWRkRnVuY3Rpb24odm0sICJsb2FkV2ViQXNzZW1ibHkiLCBmdW5jdGlvbkxvYWRXZWJBc3Nl
bWJseSwgMik7CisgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAibG9hZFdlYkFzc2VtYmx5IiwgZnVu
Y3Rpb25Mb2FkV2ViQXNzZW1ibHksIDMpOwogI2VuZGlmCiAgICAgICAgIGFkZEZ1bmN0aW9uKHZt
LCAibG9hZE1vZHVsZSIsIGZ1bmN0aW9uTG9hZE1vZHVsZSwgMSk7CiAgICAgICAgIGFkZEZ1bmN0
aW9uKHZtLCAiY2hlY2tNb2R1bGVTeW50YXgiLCBmdW5jdGlvbkNoZWNrTW9kdWxlU3ludGF4LCAx
KTsKQEAgLTE0NTAsOSArMTQ1MCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uTG9hZFdlYkFzc2VtYmx5KEV4ZWNTdGF0ZSogZXhlYykKICAgICBSZWZQdHI8V2ViQXNz
ZW1ibHlTb3VyY2VQcm92aWRlcj4gc291cmNlUHJvdmlkZXIgPSBXZWJBc3NlbWJseVNvdXJjZVBy
b3ZpZGVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxWZWN0b3I8dWludDhfdD4mPihidWZmZXIp
LCBmaWxlTmFtZSk7CiAgICAgU291cmNlQ29kZSBzb3VyY2Uoc291cmNlUHJvdmlkZXIpOwogICAg
IEpTT2JqZWN0KiBpbXBvcnRzID0gZXhlYy0+YXJndW1lbnQoMSkuZ2V0T2JqZWN0KCk7CisgICAg
SlNBcnJheUJ1ZmZlciogYXJyYXlCdWZmZXIgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIq
PihleGVjLT5hcmd1bWVudCgyKSk7CiAKICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOwotICAgIEpT
V0FTTU1vZHVsZSogbW9kdWxlID0gcGFyc2VXZWJBc3NlbWJseShleGVjLCBzb3VyY2UsIGltcG9y
dHMsIGVycm9yTWVzc2FnZSk7CisgICAgSlNXQVNNTW9kdWxlKiBtb2R1bGUgPSBwYXJzZVdlYkFz
c2VtYmx5KGV4ZWMsIHNvdXJjZSwgaW1wb3J0cywgYXJyYXlCdWZmZXIsIGVycm9yTWVzc2FnZSk7
CiAgICAgaWYgKCFtb2R1bGUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+
dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBlcnJvck1l
c3NhZ2UpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShtb2R1bGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy93YXNtLWxpbmVhci1tZW1vcnku
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3dhc20tbGluZWFyLW1lbW9y
eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jMzU2YWVmZWQyY2E3YzIyMTZjYzAwZmY3MmFjNTI2ZmZmNWMxMTg3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy93
YXNtLWxpbmVhci1tZW1vcnkuanMKQEAgLTAsMCArMSwyMDQgQEAKKy8vQCBza2lwCisKK2Z1bmN0
aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBl
Y3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOwor
fQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBtZXNzYWdlKSB7CisgICAgdmFyIGVycm9y
ID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3IpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigibm90IHRocm93bi4iKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gbWVz
c2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgZXJyb3I6ICIgKyBTdHJpbmcoZXJy
b3IpKTsKK30KKworLyoKK3dhc20vbGluZWFyLW1lbW9yeS53YXNtIGlzIGdlbmVyYXRlZCBieSBw
YWNrLWFzbWpzIDxodHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1ibHkvcG9seWZpbGwtcHJvdG90
eXBlLTE+IGZyb20gdGhlIGZvbGxvd2luZyBzY3JpcHQ6CisKK2Z1bmN0aW9uIGFzbU1vZHVsZShn
bG9iYWwsIGltcG9ydHMsIGJ1ZmZlcikgeworICAgICJ1c2UgYXNtIjsKKworICAgIHZhciBmcm91
bmQgPSBnbG9iYWwuTWF0aC5mcm91bmQ7CisgICAgdmFyIGludDhBcnJheSA9IG5ldyBnbG9iYWwu
SW50OEFycmF5KGJ1ZmZlcik7CisgICAgdmFyIHVpbnQ4QXJyYXkgPSBuZXcgZ2xvYmFsLlVpbnQ4
QXJyYXkoYnVmZmVyKTsKKyAgICB2YXIgaW50MTZBcnJheSA9IG5ldyBnbG9iYWwuSW50MTZBcnJh
eShidWZmZXIpOworICAgIHZhciB1aW50MTZBcnJheSA9IG5ldyBnbG9iYWwuVWludDE2QXJyYXko
YnVmZmVyKTsKKyAgICB2YXIgaW50MzJBcnJheSA9IG5ldyBnbG9iYWwuSW50MzJBcnJheShidWZm
ZXIpOworICAgIHZhciBmbG9hdDMyQXJyYXkgPSBuZXcgZ2xvYmFsLkZsb2F0MzJBcnJheShidWZm
ZXIpOworICAgIHZhciBmbG9hdDY0QXJyYXkgPSBuZXcgZ2xvYmFsLkZsb2F0NjRBcnJheShidWZm
ZXIpOworCisgICAgZnVuY3Rpb24gZ2V0SW50OChpKSB7CisgICAgICAgIGkgPSBpIHwgMDsKKyAg
ICAgICAgcmV0dXJuIGludDhBcnJheVtpXSB8IDA7CisgICAgfQorCisgICAgZnVuY3Rpb24gZ2V0
VWludDgoaSkgeworICAgICAgICBpID0gaSB8IDA7CisgICAgICAgIHJldHVybiB1aW50OEFycmF5
W2ldIHwgMDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBnZXRJbnQxNihpKSB7CisgICAgICAgIGkg
PSBpIHwgMDsKKyAgICAgICAgcmV0dXJuIGludDE2QXJyYXlbaSA+PiAxXSB8IDA7CisgICAgfQor
CisgICAgZnVuY3Rpb24gZ2V0VWludDE2KGkpIHsKKyAgICAgICAgaSA9IGkgfCAwOworICAgICAg
ICByZXR1cm4gdWludDE2QXJyYXlbaSA+PiAxXSB8IDA7CisgICAgfQorCisgICAgZnVuY3Rpb24g
Z2V0SW50MzIoaSkgeworICAgICAgICBpID0gaSB8IDA7CisgICAgICAgIHJldHVybiBpbnQzMkFy
cmF5W2kgPj4gMl0gfCAwOworICAgIH0KKworICAgIGZ1bmN0aW9uIGdldEZsb2F0MzIoaSkgewor
ICAgICAgICBpID0gaSB8IDA7CisgICAgICAgIHJldHVybiBmcm91bmQoZmxvYXQzMkFycmF5W2kg
Pj4gMl0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIGdldEZsb2F0NjQoaSkgeworICAgICAgICBp
ID0gaSB8IDA7CisgICAgICAgIHJldHVybiArZmxvYXQ2NEFycmF5W2kgPj4gM107CisgICAgfQor
CisgICAgZnVuY3Rpb24gc2V0SW50OChpLCB4KSB7CisgICAgICAgIGkgPSBpIHwgMDsKKyAgICAg
ICAgeCA9IHggfCAwOworICAgICAgICBpbnQ4QXJyYXlbaV0gPSB4OworICAgIH0KKworICAgIGZ1
bmN0aW9uIHNldFVpbnQ4KGksIHgpIHsKKyAgICAgICAgaSA9IGkgfCAwOworICAgICAgICB4ID0g
eCB8IDA7CisgICAgICAgIHVpbnQ4QXJyYXlbaV0gPSB4OworICAgIH0KKworICAgIGZ1bmN0aW9u
IHNldEludDE2KGksIHgpIHsKKyAgICAgICAgaSA9IGkgfCAwOworICAgICAgICB4ID0geCB8IDA7
CisgICAgICAgIGludDE2QXJyYXlbaSA+PiAxXSA9IHg7CisgICAgfQorCisgICAgZnVuY3Rpb24g
c2V0VWludDE2KGksIHgpIHsKKyAgICAgICAgaSA9IGkgfCAwOworICAgICAgICB4ID0geCB8IDA7
CisgICAgICAgIHVpbnQxNkFycmF5W2kgPj4gMV0gPSB4OworICAgIH0KKworICAgIGZ1bmN0aW9u
IHNldEludDMyKGksIHgpIHsKKyAgICAgICAgaSA9IGkgfCAwOworICAgICAgICB4ID0geCB8IDA7
CisgICAgICAgIGludDMyQXJyYXlbaSA+PiAyXSA9IHg7CisgICAgfQorCisgICAgZnVuY3Rpb24g
c2V0RmxvYXQzMihpLCB4KSB7CisgICAgICAgIGkgPSBpIHwgMDsKKyAgICAgICAgeCA9IGZyb3Vu
ZCh4KTsKKyAgICAgICAgZmxvYXQzMkFycmF5W2kgPj4gMl0gPSB4OworICAgIH0KKworICAgIGZ1
bmN0aW9uIHNldEZsb2F0NjQoaSwgeCkgeworICAgICAgICBpID0gaSB8IDA7CisgICAgICAgIHgg
PSAreDsKKyAgICAgICAgZmxvYXQ2NEFycmF5W2kgPj4gM10gPSB4OworICAgIH0KKworICAgIHJl
dHVybiB7CisgICAgICAgIGdldEludDg6IGdldEludDgsCisgICAgICAgIGdldFVpbnQ4OiBnZXRV
aW50OCwKKyAgICAgICAgZ2V0SW50MTY6IGdldEludDE2LAorICAgICAgICBnZXRVaW50MTY6IGdl
dFVpbnQxNiwKKyAgICAgICAgZ2V0SW50MzI6IGdldEludDMyLAorICAgICAgICBnZXRGbG9hdDMy
OiBnZXRGbG9hdDMyLAorICAgICAgICBnZXRGbG9hdDY0OiBnZXRGbG9hdDY0LAorICAgICAgICBz
ZXRJbnQ4OiBzZXRJbnQ4LAorICAgICAgICBzZXRVaW50ODogc2V0VWludDgsCisgICAgICAgIHNl
dEludDE2OiBzZXRJbnQxNiwKKyAgICAgICAgc2V0VWludDE2OiBzZXRVaW50MTYsCisgICAgICAg
IHNldEludDMyOiBzZXRJbnQzMiwKKyAgICAgICAgc2V0RmxvYXQzMjogc2V0RmxvYXQzMiwKKyAg
ICAgICAgc2V0RmxvYXQ2NDogc2V0RmxvYXQ2NCwKKyAgICB9OworfQorKi8KKwordmFyIGJ1ZmZl
ciA9IG5ldyBBcnJheUJ1ZmZlcigxNik7Cit2YXIgbW9kdWxlID0gbG9hZFdlYkFzc2VtYmx5KCJ3
YXNtL2xpbmVhci1tZW1vcnkud2FzbSIsIHsgfSwgYnVmZmVyKTsKKwordmFyIGludDMyQXJyYXkg
PSBuZXcgSW50MzJBcnJheShidWZmZXIpOworCisvLyBCYXNpYyBnZXRzIGFuZCBzZXRzLgorbW9k
dWxlLnNldEludDgoMCwgMSk7CitzaG91bGRCZShtb2R1bGUuZ2V0SW50OCgwKSwgMSk7Cittb2R1
bGUuc2V0VWludDgoMCwgMik7CitzaG91bGRCZShtb2R1bGUuZ2V0VWludDgoMCksIDIpOworbW9k
dWxlLnNldEludDE2KDAsIDMpOworc2hvdWxkQmUobW9kdWxlLmdldEludDE2KDApLCAzKTsKK21v
ZHVsZS5zZXRVaW50MTYoMCwgNCk7CitzaG91bGRCZShtb2R1bGUuZ2V0VWludDE2KDApLCA0KTsK
K21vZHVsZS5zZXRJbnQzMigwLCA1KTsKK3Nob3VsZEJlKG1vZHVsZS5nZXRJbnQzMigwKSwgNSk7
Cittb2R1bGUuc2V0RmxvYXQzMigwLCA2LjcpOworc2hvdWxkQmUobW9kdWxlLmdldEZsb2F0MzIo
MCksIDYuNjk5OTk5ODA5MjY1MTM3KTsKK21vZHVsZS5zZXRGbG9hdDY0KDAsIDguOSk7CitzaG91
bGRCZShtb2R1bGUuZ2V0RmxvYXQ2NCgwKSwgOC45KTsKKworaW50MzJBcnJheVswXSA9IDB4MDBG
RkZGMDA7CitzaG91bGRCZShtb2R1bGUuZ2V0VWludDgoMCksIDApOworc2hvdWxkQmUobW9kdWxl
LmdldFVpbnQ4KDEpLCAyNTUpOworc2hvdWxkQmUobW9kdWxlLmdldFVpbnQ4KDIpLCAyNTUpOwor
c2hvdWxkQmUobW9kdWxlLmdldFVpbnQ4KDMpLCAwKTsKKworLy8gVHlwZSBwdW5uaW5nLgorbW9k
dWxlLnNldEludDgoMCwgLTEpOworc2hvdWxkQmUobW9kdWxlLmdldEludDgoMCksIC0xKTsKK3No
b3VsZEJlKG1vZHVsZS5nZXRVaW50OCgwKSwgMjU1KTsKKworbW9kdWxlLnNldEludDgoMSwgLTEp
Oworc2hvdWxkQmUobW9kdWxlLmdldEludDgoMSksIC0xKTsKK3Nob3VsZEJlKG1vZHVsZS5nZXRV
aW50OCgxKSwgMjU1KTsKK3Nob3VsZEJlKG1vZHVsZS5nZXRJbnQxNigwKSwgLTEpOworc2hvdWxk
QmUobW9kdWxlLmdldFVpbnQxNigwKSwgNjU1MzUpOworCisvLyBPdXQtb2YtYm91bmQgYWNjZXNz
ZXMuCittb2R1bGUuZ2V0SW50OCgxNSk7CitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgbW9kdWxl
LmdldEludDgoMTYpOworfSwgIkVycm9yOiBPdXQtb2YtYm91bmRzIGFjY2Vzcy4iKTsKK3Nob3Vs
ZFRocm93KCgpID0+IHsKKyAgICBtb2R1bGUuZ2V0SW50OCgtMSk7Cit9LCAiRXJyb3I6IE91dC1v
Zi1ib3VuZHMgYWNjZXNzLiIpOworCisvLyBVbmFsaWduZWQgYWNjZXNzZXMKK2ludDMyQXJyYXlb
MF0gPSAwOworaW50MzJBcnJheVsxXSA9IDB4MDEyMzQ1Njc7CitpbnQzMkFycmF5WzJdID0gMDsK
K3Nob3VsZEJlKG1vZHVsZS5nZXRJbnQzMigzKSwgMCk7CitzaG91bGRCZShtb2R1bGUuZ2V0SW50
MzIoNCksIDB4MDEyMzQ1NjcpOworc2hvdWxkQmUobW9kdWxlLmdldEludDMyKDUpLCAweDAxMjM0
NTY3KTsKK3Nob3VsZEJlKG1vZHVsZS5nZXRJbnQzMig2KSwgMHgwMTIzNDU2Nyk7CitzaG91bGRC
ZShtb2R1bGUuZ2V0SW50MzIoNyksIDB4MDEyMzQ1NjcpOworc2hvdWxkQmUobW9kdWxlLmdldElu
dDMyKDgpLCAwKTsKKworaW50MzJBcnJheVswXSA9IDA7CitpbnQzMkFycmF5WzFdID0gMDsKK2lu
dDMyQXJyYXlbMl0gPSAwOworbW9kdWxlLnNldEludDMyKDMsIDEpOworc2hvdWxkQmUoaW50MzJB
cnJheVswXSA9PSAxICYmIGludDMyQXJyYXlbMV0gPT0gMCAmJiBpbnQzMkFycmF5WzJdID09IDAs
IHRydWUpOworbW9kdWxlLnNldEludDMyKDQsIDIpOworc2hvdWxkQmUoaW50MzJBcnJheVswXSA9
PSAxICYmIGludDMyQXJyYXlbMV0gPT0gMiAmJiBpbnQzMkFycmF5WzJdID09IDAsIHRydWUpOwor
bW9kdWxlLnNldEludDMyKDUsIDMpOworc2hvdWxkQmUoaW50MzJBcnJheVswXSA9PSAxICYmIGlu
dDMyQXJyYXlbMV0gPT0gMyAmJiBpbnQzMkFycmF5WzJdID09IDAsIHRydWUpOworbW9kdWxlLnNl
dEludDMyKDYsIDQpOworc2hvdWxkQmUoaW50MzJBcnJheVswXSA9PSAxICYmIGludDMyQXJyYXlb
MV0gPT0gNCAmJiBpbnQzMkFycmF5WzJdID09IDAsIHRydWUpOworbW9kdWxlLnNldEludDMyKDcs
IDUpOworc2hvdWxkQmUoaW50MzJBcnJheVswXSA9PSAxICYmIGludDMyQXJyYXlbMV0gPT0gNSAm
JiBpbnQzMkFycmF5WzJdID09IDAsIHRydWUpOworbW9kdWxlLnNldEludDMyKDgsIDYpOworc2hv
dWxkQmUoaW50MzJBcnJheVswXSA9PSAxICYmIGludDMyQXJyYXlbMV0gPT0gNSAmJiBpbnQzMkFy
cmF5WzJdID09IDYsIHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy93YXNtL2xpbmVhci1tZW1vcnkud2FzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3Mvd2FzbS9saW5lYXItbWVtb3J5Lndhc20KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTdjNzcy
ZjZlYzFkZDM4ZjQ4YTVlZjVhN2NkNGMzMDMzZTBkYmNiNwpHSVQgYmluYXJ5IHBhdGNoCmxpdGVy
YWwgMjc3CnpjbVh3eCtZUTFuM2BPbXY0V1gxVTNsQ0xIZlchYXsmPH0pPWN6aVN4emc/eDlnaGlO
ej5vflJLbGNPOD9lKXs0MAp6dDRZUVk2RWhobVllPCV7RnJBUGVIZGR5cFkyPU1kZkVQNF5SdUJh
Rkx0eFVrcGMyYilWbT9oSEgpLU48eVQ8Yj8KejkqSDJBeUJLUzw/Wn1pMllCaypOc0RobXk/PkBy
byp9RFV8cClAVForVD1DRGBMYmx0TW5oYiRVfl5NREpEUyNpCkQhSlM2RwoKbGl0ZXJhbCAwCkhj
bVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vSlNXQVNN
TW9kdWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL0pTV0FTTU1vZHVsZS5jcHAK
aW5kZXggZjFkNDY0MGE2MzJkYjJlZmNhMzAwMzhiOGIwNDQ1Y2QwMGQ3Y2Q0Mi4uOGI4ZDkwY2Jm
NTNlZTg1NzM0YTk3N2IwYzMzMmY2YjQ4M2Y4MmY1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vSlNXQVNNTW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9KU1dBU01Nb2R1bGUuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUo
V0VCQVNTRU1CTFkpCiAKKyNpbmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgogCkBAIC0zNSw2ICsz
NiwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEpTV0FTTU1vZHVsZTo6
c19pbmZvID0geyAiV0FTTU1vZHVsZSIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNXQVNNTW9kdWxlKSB9OwogCitKU1dBU01Nb2R1bGU6OkpTV0FTTU1vZHVsZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0FycmF5QnVmZmVyKiBhcnJheUJ1ZmZlcikKKyAg
ICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKKyAgICBpZiAoYXJyYXlCdWZmZXIpCisgICAgICAg
IG1fYXJyYXlCdWZmZXIuc2V0KHZtLCB0aGlzLCBhcnJheUJ1ZmZlcik7Cit9CisKIHZvaWQgSlNX
QVNNTW9kdWxlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIHsKICAgICBKU1dBU01Nb2R1bGUqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNXQVNNTW9kdWxlKj4oY2VsbCk7CkBAIC00Niw2ICs1NCw3IEBA
IHZvaWQgSlNXQVNNTW9kdWxlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCiAgICAgSlNXQVNNTW9kdWxlKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTV0FT
TU1vZHVsZSo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVj
dCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3Ip
OworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2FycmF5QnVmZmVyKTsKICAgICBm
b3IgKGF1dG8gZnVuY3Rpb24gOiB0aGlzT2JqZWN0LT5tX2Z1bmN0aW9ucykKICAgICAgICAgdmlz
aXRvci5hcHBlbmQoJmZ1bmN0aW9uKTsKICAgICBmb3IgKGF1dG8gaW1wb3J0ZWRGdW5jdGlvbiA6
IHRoaXNPYmplY3QtPm1faW1wb3J0ZWRGdW5jdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9KU1dBU01Nb2R1bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL0pTV0FTTU1vZHVsZS5oCmluZGV4IGM2M2I1ODU3NTIxMjgwMTRkNGM4YzIwYTlhNjRlZjQz
NWZhZGMwNmYuLjJkMTY3OTFjYzU0N2E4MmUzMzE2NzRiYzFlM2Q0Njk0OGVmNTAxNzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL0pTV0FTTU1vZHVsZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL0pTV0FTTU1vZHVsZS5oCkBAIC01Niw5ICs1Niw5IEBA
IHB1YmxpYzoKICAgICAgICAgZG91YmxlIGRvdWJsZVZhbHVlOwogICAgIH07CiAKLSAgICBzdGF0
aWMgSlNXQVNNTW9kdWxlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAg
ICBzdGF0aWMgSlNXQVNNTW9kdWxlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNBcnJheUJ1ZmZlciogYXJyYXlCdWZmZXIpCiAgICAgewotICAgICAgICBKU1dBU01Nb2R1
bGUqIG1vZHVsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV0FTTU1vZHVsZT4odm0u
aGVhcCkpIEpTV0FTTU1vZHVsZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgSlNXQVNNTW9kdWxl
KiBtb2R1bGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1dBU01Nb2R1bGU+KHZtLmhl
YXApKSBKU1dBU01Nb2R1bGUodm0sIHN0cnVjdHVyZSwgYXJyYXlCdWZmZXIpOwogICAgICAgICBt
b2R1bGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIG1vZHVsZTsKICAgICB9
CkBAIC04Myw2ICs4Myw3IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8V0FTTUZ1bmN0aW9uRGVjbGFy
YXRpb24+JiBmdW5jdGlvbkRlY2xhcmF0aW9ucygpIHsgcmV0dXJuIG1fZnVuY3Rpb25EZWNsYXJh
dGlvbnM7IH0KICAgICBWZWN0b3I8V0FTTUZ1bmN0aW9uUG9pbnRlclRhYmxlPiYgZnVuY3Rpb25Q
b2ludGVyVGFibGVzKCkgeyByZXR1cm4gbV9mdW5jdGlvblBvaW50ZXJUYWJsZXM7IH0KIAorICAg
IGNvbnN0IEpTQXJyYXlCdWZmZXIqIGFycmF5QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9hcnJh
eUJ1ZmZlci5nZXQoKTsgfQogICAgIFZlY3RvcjxXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4+JiBm
dW5jdGlvbnMoKSB7IHJldHVybiBtX2Z1bmN0aW9uczsgfQogICAgIFZlY3Rvcjx1bnNpZ25lZD4m
IGZ1bmN0aW9uU3RhcnRPZmZzZXRzSW5Tb3VyY2UoKSB7IHJldHVybiBtX2Z1bmN0aW9uU3RhcnRP
ZmZzZXRzSW5Tb3VyY2U7IH0KICAgICBWZWN0b3I8dW5zaWduZWQ+JiBmdW5jdGlvblN0YWNrSGVp
Z2h0cygpIHsgcmV0dXJuIG1fZnVuY3Rpb25TdGFja0hlaWdodHM7IH0KQEAgLTkwLDEwICs5MSw3
IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+PiYgaW1wb3J0
ZWRGdW5jdGlvbnMoKSB7IHJldHVybiBtX2ltcG9ydGVkRnVuY3Rpb25zOyB9CiAKIHByaXZhdGU6
Ci0gICAgSlNXQVNNTW9kdWxlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAg
IDogQmFzZSh2bSwgc3RydWN0dXJlKQotICAgIHsKLSAgICB9CisgICAgSlNXQVNNTW9kdWxlKFZN
JiwgU3RydWN0dXJlKiwgSlNBcnJheUJ1ZmZlciopOwogCiAgICAgVmVjdG9yPHVpbnQzMl90PiBt
X2kzMkNvbnN0YW50czsKICAgICBWZWN0b3I8ZmxvYXQ+IG1fZjMyQ29uc3RhbnRzOwpAQCAtMTA1
LDYgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFdBU01GdW5jdGlvbkRlY2xhcmF0aW9u
PiBtX2Z1bmN0aW9uRGVjbGFyYXRpb25zOwogICAgIFZlY3RvcjxXQVNNRnVuY3Rpb25Qb2ludGVy
VGFibGU+IG1fZnVuY3Rpb25Qb2ludGVyVGFibGVzOwogCisgICAgV3JpdGVCYXJyaWVyPEpTQXJy
YXlCdWZmZXI+IG1fYXJyYXlCdWZmZXI7CiAgICAgVmVjdG9yPFdyaXRlQmFycmllcjxKU0Z1bmN0
aW9uPj4gbV9mdW5jdGlvbnM7CiAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX2Z1bmN0aW9uU3RhcnRP
ZmZzZXRzSW5Tb3VyY2U7CiAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX2Z1bmN0aW9uU3RhY2tIZWln
aHRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUNvbnN0YW50
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUNvbnN0YW50cy5oCmluZGV4IDFi
OTk0NWUxYWM5NjA5MThlMTIzYWJlZGRiNWVmZDM1N2I1ZmIxOTkuLjViYmU4Nzg3ZTY3MWZiMzY5
MmU4MGJiMTVhNDg0MDZiNjA4MTllZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dBU01Db25zdGFudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
QVNNQ29uc3RhbnRzLmgKQEAgLTI4NCw2ICsyODQsMTcgQEAgZW51bSBjbGFzcyBXQVNNRXhwb3J0
Rm9ybWF0IDogdWludDhfdCB7CiAgICAgTnVtYmVyT2ZFeHBvcnRGb3JtYXRzCiB9OwogCitlbnVt
IGNsYXNzIFdBU01NZW1vcnlUeXBlIHsKKyAgICBJOCwKKyAgICBJMTYsCisgICAgSTMyLAorICAg
IEYzMiwKKyAgICBGNjQKK307CisKK2VudW0gY2xhc3MgTWVtb3J5QWNjZXNzT2Zmc2V0TW9kZSB7
IE5vT2Zmc2V0LCBXaXRoT2Zmc2V0IH07CitlbnVtIGNsYXNzIE1lbW9yeUFjY2Vzc0NvbnZlcnNp
b24geyBOb0NvbnZlcnNpb24sIFNpZ25FeHRlbmQsIFplcm9FeHRlbmQgfTsKKwogc3RhdGljIGNv
bnN0IHVpbnQ4X3QgaGFzSW1tZWRpYXRlSW5PcEZsYWcgPSAweDgwOwogCiBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgb3BXaXRoSW1tZWRpYXRlQml0cyA9IDI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25Db21waWxlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uQ29tcGlsZXIuaAppbmRleCA4YTJiMWRkYWU4MTIxMzI5
MTk4ZTU2ZGZmNTg3MDA2MDVmNzI4ODEzLi40YWY1ZmVmNzVkNDllMTIxOTcxNTgxNWYwMjQ5YTQy
YzJlNzBiZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVu
Y3Rpb25Db21waWxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5j
dGlvbkNvbXBpbGVyLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDQ2FsbEhlbHBlcnMu
aCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRPcGVyYXRpb25zLmgiCisjaW5jbHVk
ZSAiSlNBcnJheUJ1ZmZlci5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJN
YXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgogCkBAIC03MSwxMSArNzIsMzYgQEAgc3Rh
dGljIHVpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVW5zaWduZWRNb2QodWludDMyX3Qg
bGVmdCwgdWludDMyX3QgcmlnaHQKIH0KICNlbmRpZgogCitzdGF0aWMgc2l6ZV90IHNpemVPZk1l
bW9yeVR5cGUoV0FTTU1lbW9yeVR5cGUgbWVtb3J5VHlwZSkKK3sKKyAgICBzd2l0Y2ggKG1lbW9y
eVR5cGUpIHsKKyAgICBjYXNlIFdBU01NZW1vcnlUeXBlOjpJODoKKyAgICAgICAgcmV0dXJuIDE7
CisgICAgY2FzZSBXQVNNTWVtb3J5VHlwZTo6STE2OgorICAgICAgICByZXR1cm4gMjsKKyAgICBj
YXNlIFdBU01NZW1vcnlUeXBlOjpJMzI6CisgICAgY2FzZSBXQVNNTWVtb3J5VHlwZTo6RjMyOgor
ICAgICAgICByZXR1cm4gNDsKKyAgICBjYXNlIFdBU01NZW1vcnlUeXBlOjpGNjQ6CisgICAgICAg
IHJldHVybiA4OworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIH0KK30KKwogY2xhc3MgV0FTTUZ1bmN0aW9uQ29tcGlsZXIgOiBwcml2YXRlIENDYWxsSGVs
cGVycyB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBpbnQgRXhwcmVzc2lvbjsKICAgICB0eXBlZGVm
IGludCBTdGF0ZW1lbnQ7CiAgICAgdHlwZWRlZiBpbnQgRXhwcmVzc2lvbkxpc3Q7CisgICAgc3Ry
dWN0IE1lbW9yeUFkZHJlc3MgeworICAgICAgICBNZW1vcnlBZGRyZXNzKHZvaWQqKSB7IH0KKyAg
ICAgICAgTWVtb3J5QWRkcmVzcyhpbnQsIHVpbnQzMl90IG9mZnNldCkKKyAgICAgICAgICAgIDog
b2Zmc2V0KG9mZnNldCkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIHVpbnQzMl90IG9m
ZnNldDsKKyAgICB9OwogICAgIHN0cnVjdCBKdW1wVGFyZ2V0IHsKICAgICAgICAgTGFiZWwgbGFi
ZWw7CiAgICAgICAgIEp1bXBMaXN0IGp1bXBMaXN0OwpAQCAtMTkyLDYgKzIxOCwxMyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvblRo
cm93RGl2aWRlRXJyb3IpOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKCFtX291dE9mQm91bmRz
RXJyb3JKdW1wTGlzdC5lbXB0eSgpKSB7CisgICAgICAgICAgICBtX291dE9mQm91bmRzRXJyb3JK
dW1wTGlzdC5saW5rKHRoaXMpOworCisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0V4ZWNTdGF0
ZSgpOworICAgICAgICAgICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb25U
aHJvd091dE9mQm91bmRzQWNjZXNzRXJyb3IpOworICAgICAgICB9CisKICAgICAgICAgaWYgKCFt
X2V4Y2VwdGlvbkNoZWNrcy5lbXB0eSgpKSB7CiAgICAgICAgICAgICBtX2V4Y2VwdGlvbkNoZWNr
cy5saW5rKHRoaXMpOwogCkBAIC0zNjgsNiArNDAxLDExNyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBVTlVTRUQ7CiAgICAgfQogCisgICAgaW50IGJ1aWxkTG9hZChjb25zdCBNZW1vcnlBZGRy
ZXNzJiBtZW1vcnlBZGRyZXNzLCBXQVNNRXhwcmVzc2lvblR5cGUgZXhwcmVzc2lvblR5cGUsIFdB
U01NZW1vcnlUeXBlIG1lbW9yeVR5cGUsIE1lbW9yeUFjY2Vzc0NvbnZlcnNpb24gY29udmVyc2lv
bikKKyAgICB7CisgICAgICAgIGNvbnN0IEFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlciA9IG1fbW9k
dWxlLT5hcnJheUJ1ZmZlcigpLT5pbXBsKCk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihh
cnJheUJ1ZmZlci0+ZGF0YSgpKSwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICBsb2FkMzIodGVt
cG9yYXJ5QWRkcmVzcyhtX3RlbXBTdGFja1RvcCAtIDEpLCBHUFJJbmZvOjpyZWdUMSk7CisgICAg
ICAgIGlmIChtZW1vcnlBZGRyZXNzLm9mZnNldCkKKyAgICAgICAgICAgIGFkZDMyKFRydXN0ZWRJ
bW0zMihtZW1vcnlBZGRyZXNzLm9mZnNldCksIEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdU
MSk7CisgICAgICAgIGFuZDMyKFRydXN0ZWRJbW0zMih+KHNpemVPZk1lbW9yeVR5cGUobWVtb3J5
VHlwZSkgLSAxKSksIEdQUkluZm86OnJlZ1QxKTsKKworICAgICAgICBBU1NFUlQoYXJyYXlCdWZm
ZXItPmJ5dGVMZW5ndGgoKSA8ICh1bnNpZ25lZCkoMSA8PCAzMSkpOworICAgICAgICBpZiAoYXJy
YXlCdWZmZXItPmJ5dGVMZW5ndGgoKSA+PSBzaXplT2ZNZW1vcnlUeXBlKG1lbW9yeVR5cGUpKQor
ICAgICAgICAgICAgbV9vdXRPZkJvdW5kc0Vycm9ySnVtcExpc3QuYXBwZW5kKGJyYW5jaDMyKEFi
b3ZlLCBHUFJJbmZvOjpyZWdUMSwgVHJ1c3RlZEltbTMyKGFycmF5QnVmZmVyLT5ieXRlTGVuZ3Ro
KCkgLSBzaXplT2ZNZW1vcnlUeXBlKG1lbW9yeVR5cGUpKSkpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBtX291dE9mQm91bmRzRXJyb3JKdW1wTGlzdC5hcHBlbmQoanVtcCgpKTsKKworICAg
ICAgICBCYXNlSW5kZXggYWRkcmVzcyA9IEJhc2VJbmRleChHUFJJbmZvOjpyZWdUMCwgR1BSSW5m
bzo6cmVnVDEsIFRpbWVzT25lKTsKKworICAgICAgICBzd2l0Y2ggKGV4cHJlc3Npb25UeXBlKSB7
CisgICAgICAgIGNhc2UgV0FTTUV4cHJlc3Npb25UeXBlOjpJMzI6CisgICAgICAgICAgICBzd2l0
Y2ggKG1lbW9yeVR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgV0FTTU1lbW9yeVR5cGU6Okk4Ogor
ICAgICAgICAgICAgICAgIGlmIChjb252ZXJzaW9uID09IE1lbW9yeUFjY2Vzc0NvbnZlcnNpb246
OlNpZ25FeHRlbmQpCisgICAgICAgICAgICAgICAgICAgIGxvYWQ4U2lnbmVkRXh0ZW5kVG8zMihh
ZGRyZXNzLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChjb252ZXJzaW9uID09IE1lbW9yeUFjY2Vzc0NvbnZlcnNpb246
Olplcm9FeHRlbmQpOworICAgICAgICAgICAgICAgICAgICBsb2FkOChhZGRyZXNzLCBHUFJJbmZv
OjpyZWdUMCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBXQVNNTWVtb3J5VHlwZTo6STE2OgorICAgICAgICAgICAgICAgIGlmIChj
b252ZXJzaW9uID09IE1lbW9yeUFjY2Vzc0NvbnZlcnNpb246OlNpZ25FeHRlbmQpCisgICAgICAg
ICAgICAgICAgICAgIGxvYWQxNlNpZ25lZEV4dGVuZFRvMzIoYWRkcmVzcywgR1BSSW5mbzo6cmVn
VDApOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
Y29udmVyc2lvbiA9PSBNZW1vcnlBY2Nlc3NDb252ZXJzaW9uOjpaZXJvRXh0ZW5kKTsKKyAgICAg
ICAgICAgICAgICAgICAgbG9hZDE2KGFkZHJlc3MsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdBU01N
ZW1vcnlUeXBlOjpJMzI6CisgICAgICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3MsIEdQUkluZm86
OnJlZ1QwKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBzdG9yZTMyKEdQUkluZm86OnJlZ1QwLCB0ZW1wb3JhcnlBZGRyZXNzKG1fdGVtcFN0
YWNrVG9wIC0gMSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0FTTUV4cHJl
c3Npb25UeXBlOjpGMzI6CisgICAgICAgICAgICBBU1NFUlQobWVtb3J5VHlwZSA9PSBXQVNNTWVt
b3J5VHlwZTo6RjMyICYmIGNvbnZlcnNpb24gPT0gTWVtb3J5QWNjZXNzQ29udmVyc2lvbjo6Tm9D
b252ZXJzaW9uKTsKKyAgICAgICAgICAgIGxvYWQzMihhZGRyZXNzLCBHUFJJbmZvOjpyZWdUMCk7
CisgICAgICAgICAgICBzdG9yZTMyKEdQUkluZm86OnJlZ1QwLCB0ZW1wb3JhcnlBZGRyZXNzKG1f
dGVtcFN0YWNrVG9wIC0gMSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0FT
TUV4cHJlc3Npb25UeXBlOjpGNjQ6CisgICAgICAgICAgICBBU1NFUlQobWVtb3J5VHlwZSA9PSBX
QVNNTWVtb3J5VHlwZTo6RjY0ICYmIGNvbnZlcnNpb24gPT0gTWVtb3J5QWNjZXNzQ29udmVyc2lv
bjo6Tm9Db252ZXJzaW9uKTsKKyAgICAgICAgICAgIGxvYWREb3VibGUoYWRkcmVzcywgRlBSSW5m
bzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBzdG9yZURvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCB0
ZW1wb3JhcnlBZGRyZXNzKG1fdGVtcFN0YWNrVG9wIC0gMSkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gVU5VU0VEOworICAgIH0KKworICAgIGludCBidWlsZFN0
b3JlKGNvbnN0IE1lbW9yeUFkZHJlc3MmIG1lbW9yeUFkZHJlc3MsIFdBU01FeHByZXNzaW9uVHlw
ZSBleHByZXNzaW9uVHlwZSwgV0FTTU1lbW9yeVR5cGUgbWVtb3J5VHlwZSwgaW50KQorICAgIHsK
KyAgICAgICAgY29uc3QgQXJyYXlCdWZmZXIqIGFycmF5QnVmZmVyID0gbV9tb2R1bGUtPmFycmF5
QnVmZmVyKCktPmltcGwoKTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFycmF5QnVmZmVy
LT5kYXRhKCkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgIGxvYWQzMih0ZW1wb3JhcnlBZGRy
ZXNzKG1fdGVtcFN0YWNrVG9wIC0gMiksIEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgaWYgKG1l
bW9yeUFkZHJlc3Mub2Zmc2V0KQorICAgICAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKG1lbW9y
eUFkZHJlc3Mub2Zmc2V0KSwgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QxKTsKKyAgICAg
ICAgYW5kMzIoVHJ1c3RlZEltbTMyKH4oc2l6ZU9mTWVtb3J5VHlwZShtZW1vcnlUeXBlKSAtIDEp
KSwgR1BSSW5mbzo6cmVnVDEpOworCisgICAgICAgIEFTU0VSVChhcnJheUJ1ZmZlci0+Ynl0ZUxl
bmd0aCgpIDwgKDF1IDw8IDMxKSk7CisgICAgICAgIGlmIChhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0
aCgpID49IHNpemVPZk1lbW9yeVR5cGUobWVtb3J5VHlwZSkpCisgICAgICAgICAgICBtX291dE9m
Qm91bmRzRXJyb3JKdW1wTGlzdC5hcHBlbmQoYnJhbmNoMzIoQWJvdmUsIEdQUkluZm86OnJlZ1Qx
LCBUcnVzdGVkSW1tMzIoYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSAtIHNpemVPZk1lbW9yeVR5
cGUobWVtb3J5VHlwZSkpKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fb3V0T2ZCb3Vu
ZHNFcnJvckp1bXBMaXN0LmFwcGVuZChqdW1wKCkpOworCisgICAgICAgIEJhc2VJbmRleCBhZGRy
ZXNzID0gQmFzZUluZGV4KEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSwgVGltZXNPbmUp
OworCisgICAgICAgIHN3aXRjaCAoZXhwcmVzc2lvblR5cGUpIHsKKyAgICAgICAgY2FzZSBXQVNN
RXhwcmVzc2lvblR5cGU6OkkzMjoKKyAgICAgICAgICAgIGxvYWQzMih0ZW1wb3JhcnlBZGRyZXNz
KG1fdGVtcFN0YWNrVG9wIC0gMSksIEdQUkluZm86OnJlZ1QyKTsKKyAgICAgICAgICAgIHN3aXRj
aCAobWVtb3J5VHlwZSkgeworICAgICAgICAgICAgY2FzZSBXQVNNTWVtb3J5VHlwZTo6STg6Cisg
ICAgICAgICAgICAgICAgc3RvcmU4KEdQUkluZm86OnJlZ1QyLCBhZGRyZXNzKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV0FTTU1lbW9yeVR5cGU6OkkxNjoKKyAg
ICAgICAgICAgICAgICBzdG9yZTE2KEdQUkluZm86OnJlZ1QyLCBhZGRyZXNzKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV0FTTU1lbW9yeVR5cGU6OkkzMjoKKyAg
ICAgICAgICAgICAgICBzdG9yZTMyKEdQUkluZm86OnJlZ1QyLCBhZGRyZXNzKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBXQVNNRXhwcmVzc2lvblR5cGU6OkYzMjoKKyAgICAgICAgICAgIEFTU0VSVCht
ZW1vcnlUeXBlID09IFdBU01NZW1vcnlUeXBlOjpGMzIpOworICAgICAgICAgICAgbG9hZDMyKHRl
bXBvcmFyeUFkZHJlc3MobV90ZW1wU3RhY2tUb3AgLSAxKSwgR1BSSW5mbzo6cmVnVDIpOworICAg
ICAgICAgICAgc3RvcmUzMihHUFJJbmZvOjpyZWdUMiwgYWRkcmVzcyk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBXQVNNRXhwcmVzc2lvblR5cGU6OkY2NDoKKyAgICAgICAgICAg
IEFTU0VSVChtZW1vcnlUeXBlID09IFdBU01NZW1vcnlUeXBlOjpGNjQpOworICAgICAgICAgICAg
bG9hZERvdWJsZSh0ZW1wb3JhcnlBZGRyZXNzKG1fdGVtcFN0YWNrVG9wIC0gMSksIEZQUkluZm86
OmZwUmVnVDApOworICAgICAgICAgICAgc3RvcmVEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgYWRk
cmVzcyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIG1fdGVtcFN0YWNrVG9w
IC09IDI7CisgICAgICAgIHJldHVybiBVTlVTRUQ7CisgICAgfQorCiAgICAgaW50IGJ1aWxkVW5h
cnlJMzIoaW50LCBXQVNNT3BFeHByZXNzaW9uSTMyIG9wKQogICAgIHsKICAgICAgICAgbG9hZDMy
KHRlbXBvcmFyeUFkZHJlc3MobV90ZW1wU3RhY2tUb3AgLSAxKSwgR1BSSW5mbzo6cmVnVDApOwpA
QCAtMTExMiw2ICsxMjU2LDcgQEAgcHJpdmF0ZToKICAgICBMYWJlbCBtX2JlZ2luTGFiZWw7CiAg
ICAgSnVtcCBtX3N0YWNrT3ZlcmZsb3c7CiAgICAgSnVtcExpc3QgbV9kaXZpZGVFcnJvckp1bXBM
aXN0OworICAgIEp1bXBMaXN0IG1fb3V0T2ZCb3VuZHNFcnJvckp1bXBMaXN0OwogICAgIEp1bXBM
aXN0IG1fZXhjZXB0aW9uQ2hlY2tzOwogCiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDYWxsLCB2b2lk
Kj4+IG1fY2FsbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNN
RnVuY3Rpb25QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0
aW9uUGFyc2VyLmNwcAppbmRleCAwNzk1NWUxN2M4YTVjMGE2MTMwOTA5YTk3NjM5ZTdkZWYxZjM3
ZGI1Li41N2U1MzRiNWI4MmEzZmIyZTA5M2E5MThmZDJlNDFlZDI3MTJmZWZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNlci5jcHAKQEAgLTE0
Myw2ICsxNDMsMzYgQEAgQ29udGV4dFN0YXRlbWVudCBXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNl
U3RhdGVtZW50KENvbnRleHQmIGNvbnRleHQpCiAgICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50
OjpTZXRHbG9iYWw6CiAgICAgICAgICAgICBwYXJzZVNldEdsb2JhbFN0YXRlbWVudChjb250ZXh0
KTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6STMy
U3RvcmU4OgorICAgICAgICAgICAgcGFyc2VTdG9yZShjb250ZXh0LCBXQVNNRXhwcmVzc2lvblR5
cGU6OkkzMiwgV0FTTU1lbW9yeVR5cGU6Okk4LCBNZW1vcnlBY2Nlc3NPZmZzZXRNb2RlOjpOb09m
ZnNldCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6
OkkzMlN0b3JlV2l0aE9mZnNldDg6CisgICAgICAgICAgICBwYXJzZVN0b3JlKGNvbnRleHQsIFdB
U01FeHByZXNzaW9uVHlwZTo6STMyLCBXQVNNTWVtb3J5VHlwZTo6STgsIE1lbW9yeUFjY2Vzc09m
ZnNldE1vZGU6OldpdGhPZmZzZXQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
V0FTTU9wU3RhdGVtZW50OjpJMzJTdG9yZTE2OgorICAgICAgICAgICAgcGFyc2VTdG9yZShjb250
ZXh0LCBXQVNNRXhwcmVzc2lvblR5cGU6OkkzMiwgV0FTTU1lbW9yeVR5cGU6OkkxNiwgTWVtb3J5
QWNjZXNzT2Zmc2V0TW9kZTo6Tm9PZmZzZXQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgV0FTTU9wU3RhdGVtZW50OjpJMzJTdG9yZVdpdGhPZmZzZXQxNjoKKyAgICAgICAgICAg
IHBhcnNlU3RvcmUoY29udGV4dCwgV0FTTUV4cHJlc3Npb25UeXBlOjpJMzIsIFdBU01NZW1vcnlU
eXBlOjpJMTYsIE1lbW9yeUFjY2Vzc09mZnNldE1vZGU6OldpdGhPZmZzZXQpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50OjpJMzJTdG9yZTMyOgorICAg
ICAgICAgICAgcGFyc2VTdG9yZShjb250ZXh0LCBXQVNNRXhwcmVzc2lvblR5cGU6OkkzMiwgV0FT
TU1lbW9yeVR5cGU6OkkzMiwgTWVtb3J5QWNjZXNzT2Zmc2V0TW9kZTo6Tm9PZmZzZXQpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50OjpJMzJTdG9yZVdp
dGhPZmZzZXQzMjoKKyAgICAgICAgICAgIHBhcnNlU3RvcmUoY29udGV4dCwgV0FTTUV4cHJlc3Np
b25UeXBlOjpJMzIsIFdBU01NZW1vcnlUeXBlOjpJMzIsIE1lbW9yeUFjY2Vzc09mZnNldE1vZGU6
OldpdGhPZmZzZXQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0FTTU9wU3Rh
dGVtZW50OjpGMzJTdG9yZToKKyAgICAgICAgICAgIHBhcnNlU3RvcmUoY29udGV4dCwgV0FTTUV4
cHJlc3Npb25UeXBlOjpGMzIsIFdBU01NZW1vcnlUeXBlOjpGMzIsIE1lbW9yeUFjY2Vzc09mZnNl
dE1vZGU6Ok5vT2Zmc2V0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdBU01P
cFN0YXRlbWVudDo6RjMyU3RvcmVXaXRoT2Zmc2V0OgorICAgICAgICAgICAgcGFyc2VTdG9yZShj
b250ZXh0LCBXQVNNRXhwcmVzc2lvblR5cGU6OkYzMiwgV0FTTU1lbW9yeVR5cGU6OkYzMiwgTWVt
b3J5QWNjZXNzT2Zmc2V0TW9kZTo6V2l0aE9mZnNldCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6OkY2NFN0b3JlOgorICAgICAgICAgICAgcGFyc2VT
dG9yZShjb250ZXh0LCBXQVNNRXhwcmVzc2lvblR5cGU6OkY2NCwgV0FTTU1lbW9yeVR5cGU6OkY2
NCwgTWVtb3J5QWNjZXNzT2Zmc2V0TW9kZTo6Tm9PZmZzZXQpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50OjpGNjRTdG9yZVdpdGhPZmZzZXQ6CisgICAg
ICAgICAgICBwYXJzZVN0b3JlKGNvbnRleHQsIFdBU01FeHByZXNzaW9uVHlwZTo6RjY0LCBXQVNN
TWVtb3J5VHlwZTo6RjY0LCBNZW1vcnlBY2Nlc3NPZmZzZXRNb2RlOjpXaXRoT2Zmc2V0KTsKKyAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6UmV0dXJuOgog
ICAgICAgICAgICAgcGFyc2VSZXR1cm5TdGF0ZW1lbnQoY29udGV4dCk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTE3OSwxNiArMjA5LDYgQEAgQ29udGV4dFN0YXRlbWVudCBXQVNNRnVuY3Rpb25Q
YXJzZXI6OnBhcnNlU3RhdGVtZW50KENvbnRleHQmIGNvbnRleHQpCiAgICAgICAgIGNhc2UgV0FT
TU9wU3RhdGVtZW50OjpTd2l0Y2g6CiAgICAgICAgICAgICBwYXJzZVN3aXRjaFN0YXRlbWVudChj
b250ZXh0KTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVu
dDo6STMyU3RvcmU4OgotICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6STMyU3RvcmVXaXRo
T2Zmc2V0ODoKLSAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6OkkzMlN0b3JlMTY6Ci0gICAg
ICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50OjpJMzJTdG9yZVdpdGhPZmZzZXQxNjoKLSAgICAgICAg
Y2FzZSBXQVNNT3BTdGF0ZW1lbnQ6OkkzMlN0b3JlMzI6Ci0gICAgICAgIGNhc2UgV0FTTU9wU3Rh
dGVtZW50OjpJMzJTdG9yZVdpdGhPZmZzZXQzMjoKLSAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1l
bnQ6OkYzMlN0b3JlOgotICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6RjMyU3RvcmVXaXRo
T2Zmc2V0OgotICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6RjY0U3RvcmU6Ci0gICAgICAg
IGNhc2UgV0FTTU9wU3RhdGVtZW50OjpGNjRTdG9yZVdpdGhPZmZzZXQ6CiAgICAgICAgIGNhc2Ug
V0FTTU9wU3RhdGVtZW50OjpDYWxsSW50ZXJuYWw6CiAgICAgICAgIGNhc2UgV0FTTU9wU3RhdGVt
ZW50OjpDYWxsSW5kaXJlY3Q6CiAgICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50OjpDYWxsSW1w
b3J0OgpAQCAtNTI4LDYgKzU0OCwyNiBAQCBDb250ZXh0RXhwcmVzc2lvbiBXQVNNRnVuY3Rpb25Q
YXJzZXI6OnBhcnNlRXhwcmVzc2lvbkkzMihDb250ZXh0JiBjb250ZXh0KQogICAgICAgICAgICAg
cmV0dXJuIHBhcnNlR2V0TG9jYWxFeHByZXNzaW9uSTMyKGNvbnRleHQpOwogICAgICAgICBjYXNl
IFdBU01PcEV4cHJlc3Npb25JMzI6OkdldEdsb2JhbDoKICAgICAgICAgICAgIHJldHVybiBwYXJz
ZUdldEdsb2JhbEV4cHJlc3Npb25JMzIoY29udGV4dCk7CisgICAgICAgIGNhc2UgV0FTTU9wRXhw
cmVzc2lvbkkzMjo6U0xvYWQ4OgorICAgICAgICAgICAgcmV0dXJuIHBhcnNlTG9hZChjb250ZXh0
LCBXQVNNRXhwcmVzc2lvblR5cGU6OkkzMiwgV0FTTU1lbW9yeVR5cGU6Okk4LCBNZW1vcnlBY2Nl
c3NPZmZzZXRNb2RlOjpOb09mZnNldCwgTWVtb3J5QWNjZXNzQ29udmVyc2lvbjo6U2lnbkV4dGVu
ZCk7CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6U0xvYWRXaXRoT2Zmc2V0ODoK
KyAgICAgICAgICAgIHJldHVybiBwYXJzZUxvYWQoY29udGV4dCwgV0FTTUV4cHJlc3Npb25UeXBl
OjpJMzIsIFdBU01NZW1vcnlUeXBlOjpJOCwgTWVtb3J5QWNjZXNzT2Zmc2V0TW9kZTo6V2l0aE9m
ZnNldCwgTWVtb3J5QWNjZXNzQ29udmVyc2lvbjo6U2lnbkV4dGVuZCk7CisgICAgICAgIGNhc2Ug
V0FTTU9wRXhwcmVzc2lvbkkzMjo6VUxvYWQ4OgorICAgICAgICAgICAgcmV0dXJuIHBhcnNlTG9h
ZChjb250ZXh0LCBXQVNNRXhwcmVzc2lvblR5cGU6OkkzMiwgV0FTTU1lbW9yeVR5cGU6Okk4LCBN
ZW1vcnlBY2Nlc3NPZmZzZXRNb2RlOjpOb09mZnNldCwgTWVtb3J5QWNjZXNzQ29udmVyc2lvbjo6
WmVyb0V4dGVuZCk7CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6VUxvYWRXaXRo
T2Zmc2V0ODoKKyAgICAgICAgICAgIHJldHVybiBwYXJzZUxvYWQoY29udGV4dCwgV0FTTUV4cHJl
c3Npb25UeXBlOjpJMzIsIFdBU01NZW1vcnlUeXBlOjpJOCwgTWVtb3J5QWNjZXNzT2Zmc2V0TW9k
ZTo6V2l0aE9mZnNldCwgTWVtb3J5QWNjZXNzQ29udmVyc2lvbjo6WmVyb0V4dGVuZCk7CisgICAg
ICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6U0xvYWQxNjoKKyAgICAgICAgICAgIHJldHVy
biBwYXJzZUxvYWQoY29udGV4dCwgV0FTTUV4cHJlc3Npb25UeXBlOjpJMzIsIFdBU01NZW1vcnlU
eXBlOjpJMTYsIE1lbW9yeUFjY2Vzc09mZnNldE1vZGU6Ok5vT2Zmc2V0LCBNZW1vcnlBY2Nlc3ND
b252ZXJzaW9uOjpTaWduRXh0ZW5kKTsKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMy
OjpTTG9hZFdpdGhPZmZzZXQxNjoKKyAgICAgICAgICAgIHJldHVybiBwYXJzZUxvYWQoY29udGV4
dCwgV0FTTUV4cHJlc3Npb25UeXBlOjpJMzIsIFdBU01NZW1vcnlUeXBlOjpJMTYsIE1lbW9yeUFj
Y2Vzc09mZnNldE1vZGU6OldpdGhPZmZzZXQsIE1lbW9yeUFjY2Vzc0NvbnZlcnNpb246OlNpZ25F
eHRlbmQpOworICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlVMb2FkMTY6CisgICAg
ICAgICAgICByZXR1cm4gcGFyc2VMb2FkKGNvbnRleHQsIFdBU01FeHByZXNzaW9uVHlwZTo6STMy
LCBXQVNNTWVtb3J5VHlwZTo6STE2LCBNZW1vcnlBY2Nlc3NPZmZzZXRNb2RlOjpOb09mZnNldCwg
TWVtb3J5QWNjZXNzQ29udmVyc2lvbjo6WmVyb0V4dGVuZCk7CisgICAgICAgIGNhc2UgV0FTTU9w
RXhwcmVzc2lvbkkzMjo6VUxvYWRXaXRoT2Zmc2V0MTY6CisgICAgICAgICAgICByZXR1cm4gcGFy
c2VMb2FkKGNvbnRleHQsIFdBU01FeHByZXNzaW9uVHlwZTo6STMyLCBXQVNNTWVtb3J5VHlwZTo6
STE2LCBNZW1vcnlBY2Nlc3NPZmZzZXRNb2RlOjpXaXRoT2Zmc2V0LCBNZW1vcnlBY2Nlc3NDb252
ZXJzaW9uOjpaZXJvRXh0ZW5kKTsKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpM
b2FkMzI6CisgICAgICAgICAgICByZXR1cm4gcGFyc2VMb2FkKGNvbnRleHQsIFdBU01FeHByZXNz
aW9uVHlwZTo6STMyLCBXQVNNTWVtb3J5VHlwZTo6STMyLCBNZW1vcnlBY2Nlc3NPZmZzZXRNb2Rl
OjpOb09mZnNldCk7CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6TG9hZFdpdGhP
ZmZzZXQzMjoKKyAgICAgICAgICAgIHJldHVybiBwYXJzZUxvYWQoY29udGV4dCwgV0FTTUV4cHJl
c3Npb25UeXBlOjpJMzIsIFdBU01NZW1vcnlUeXBlOjpJMzIsIE1lbW9yeUFjY2Vzc09mZnNldE1v
ZGU6OldpdGhPZmZzZXQpOwogICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkNhbGxJ
bnRlcm5hbDoKICAgICAgICAgICAgIHJldHVybiBwYXJzZUNhbGxJbnRlcm5hbChjb250ZXh0LCBX
QVNNRXhwcmVzc2lvblR5cGU6OkkzMik7CiAgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkz
Mjo6Q2FsbEluZGlyZWN0OgpAQCAtNTgxLDE2ICs2MjEsNiBAQCBDb250ZXh0RXhwcmVzc2lvbiBX
QVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlRXhwcmVzc2lvbkkzMihDb250ZXh0JiBjb250ZXh0KQog
ICAgICAgICAgICAgcmV0dXJuIHBhcnNlUmVsYXRpb25hbEY2NEV4cHJlc3Npb25JMzIoY29udGV4
dCwgb3ApOwogICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlNldExvY2FsOgogICAg
ICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlNldEdsb2JhbDoKLSAgICAgICAgY2FzZSBX
QVNNT3BFeHByZXNzaW9uSTMyOjpTTG9hZDg6Ci0gICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lv
bkkzMjo6U0xvYWRXaXRoT2Zmc2V0ODoKLSAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMy
OjpVTG9hZDg6Ci0gICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6VUxvYWRXaXRoT2Zm
c2V0ODoKLSAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpTTG9hZDE2OgotICAgICAg
ICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlNMb2FkV2l0aE9mZnNldDE2OgotICAgICAgICBj
YXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlVMb2FkMTY6Ci0gICAgICAgIGNhc2UgV0FTTU9wRXhw
cmVzc2lvbkkzMjo6VUxvYWRXaXRoT2Zmc2V0MTY6Ci0gICAgICAgIGNhc2UgV0FTTU9wRXhwcmVz
c2lvbkkzMjo6TG9hZDMyOgotICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkxvYWRX
aXRoT2Zmc2V0MzI6CiAgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6U3RvcmU4Ogog
ICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlN0b3JlV2l0aE9mZnNldDg6CiAgICAg
ICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6U3RvcmUxNjoKQEAgLTc0Niw2ICs3NzYsMTAg
QEAgQ29udGV4dEV4cHJlc3Npb24gV0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUV4cHJlc3Npb25G
MzIoQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgICAgIHJldHVybiBwYXJzZUdldExvY2FsRXhw
cmVzc2lvbkYzMihjb250ZXh0KTsKICAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uRjMyOjpH
ZXRHbG9iYWw6CiAgICAgICAgICAgICByZXR1cm4gcGFyc2VHZXRHbG9iYWxFeHByZXNzaW9uRjMy
KGNvbnRleHQpOworICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25GMzI6OkxvYWQ6CisgICAg
ICAgICAgICByZXR1cm4gcGFyc2VMb2FkKGNvbnRleHQsIFdBU01FeHByZXNzaW9uVHlwZTo6RjMy
LCBXQVNNTWVtb3J5VHlwZTo6RjMyLCBNZW1vcnlBY2Nlc3NPZmZzZXRNb2RlOjpOb09mZnNldCk7
CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkYzMjo6TG9hZFdpdGhPZmZzZXQ6CisgICAg
ICAgICAgICByZXR1cm4gcGFyc2VMb2FkKGNvbnRleHQsIFdBU01FeHByZXNzaW9uVHlwZTo6RjMy
LCBXQVNNTWVtb3J5VHlwZTo6RjMyLCBNZW1vcnlBY2Nlc3NPZmZzZXRNb2RlOjpXaXRoT2Zmc2V0
KTsKICAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uRjMyOjpDYWxsSW50ZXJuYWw6CiAgICAg
ICAgICAgICByZXR1cm4gcGFyc2VDYWxsSW50ZXJuYWwoY29udGV4dCwgV0FTTUV4cHJlc3Npb25U
eXBlOjpGMzIpOwogICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25GMzI6OkNhbGxJbmRpcmVj
dDoKQEAgLTc2Myw4ICs3OTcsNiBAQCBDb250ZXh0RXhwcmVzc2lvbiBXQVNNRnVuY3Rpb25QYXJz
ZXI6OnBhcnNlRXhwcmVzc2lvbkYzMihDb250ZXh0JiBjb250ZXh0KQogICAgICAgICAgICAgcmV0
dXJuIHBhcnNlQmluYXJ5RXhwcmVzc2lvbkYzMihjb250ZXh0LCBvcCk7CiAgICAgICAgIGNhc2Ug
V0FTTU9wRXhwcmVzc2lvbkYzMjo6U2V0TG9jYWw6CiAgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVz
c2lvbkYzMjo6U2V0R2xvYmFsOgotICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25GMzI6Okxv
YWQ6Ci0gICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkYzMjo6TG9hZFdpdGhPZmZzZXQ6CiAg
ICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkYzMjo6U3RvcmU6CiAgICAgICAgIGNhc2UgV0FT
TU9wRXhwcmVzc2lvbkYzMjo6U3RvcmVXaXRoT2Zmc2V0OgogICAgICAgICBjYXNlIFdBU01PcEV4
cHJlc3Npb25GMzI6OkNvbmRpdGlvbmFsOgpAQCAtODc1LDYgKzkwNywxMCBAQCBDb250ZXh0RXhw
cmVzc2lvbiBXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlRXhwcmVzc2lvbkY2NChDb250ZXh0JiBj
b250ZXh0KQogICAgICAgICAgICAgcmV0dXJuIHBhcnNlR2V0TG9jYWxFeHByZXNzaW9uRjY0KGNv
bnRleHQpOwogICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25GNjQ6OkdldEdsb2JhbDoKICAg
ICAgICAgICAgIHJldHVybiBwYXJzZUdldEdsb2JhbEV4cHJlc3Npb25GNjQoY29udGV4dCk7Cisg
ICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkY2NDo6TG9hZDoKKyAgICAgICAgICAgIHJldHVy
biBwYXJzZUxvYWQoY29udGV4dCwgV0FTTUV4cHJlc3Npb25UeXBlOjpGNjQsIFdBU01NZW1vcnlU
eXBlOjpGNjQsIE1lbW9yeUFjY2Vzc09mZnNldE1vZGU6Ok5vT2Zmc2V0KTsKKyAgICAgICAgY2Fz
ZSBXQVNNT3BFeHByZXNzaW9uRjY0OjpMb2FkV2l0aE9mZnNldDoKKyAgICAgICAgICAgIHJldHVy
biBwYXJzZUxvYWQoY29udGV4dCwgV0FTTUV4cHJlc3Npb25UeXBlOjpGNjQsIFdBU01NZW1vcnlU
eXBlOjpGNjQsIE1lbW9yeUFjY2Vzc09mZnNldE1vZGU6OldpdGhPZmZzZXQpOwogICAgICAgICBj
YXNlIFdBU01PcEV4cHJlc3Npb25GNjQ6OkNhbGxJbnRlcm5hbDoKICAgICAgICAgICAgIHJldHVy
biBwYXJzZUNhbGxJbnRlcm5hbChjb250ZXh0LCBXQVNNRXhwcmVzc2lvblR5cGU6OkY2NCk7CiAg
ICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkY2NDo6Q2FsbEltcG9ydDoKQEAgLTg4Myw4ICs5
MTksNiBAQCBDb250ZXh0RXhwcmVzc2lvbiBXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlRXhwcmVz
c2lvbkY2NChDb250ZXh0JiBjb250ZXh0KQogICAgICAgICAgICAgcmV0dXJuIHBhcnNlQ2FsbElu
ZGlyZWN0KGNvbnRleHQsIFdBU01FeHByZXNzaW9uVHlwZTo6RjY0KTsKICAgICAgICAgY2FzZSBX
QVNNT3BFeHByZXNzaW9uRjY0OjpTZXRMb2NhbDoKICAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNz
aW9uRjY0OjpTZXRHbG9iYWw6Ci0gICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkY2NDo6TG9h
ZDoKLSAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uRjY0OjpMb2FkV2l0aE9mZnNldDoKICAg
ICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uRjY0OjpTdG9yZToKICAgICAgICAgY2FzZSBXQVNN
T3BFeHByZXNzaW9uRjY0OjpTdG9yZVdpdGhPZmZzZXQ6CiAgICAgICAgIGNhc2UgV0FTTU9wRXhw
cmVzc2lvbkY2NDo6Q29uZGl0aW9uYWw6CkBAIC05ODIsNiArMTAxNiwzOCBAQCBDb250ZXh0RXhw
cmVzc2lvbiBXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlR2V0R2xvYmFsRXhwcmVzc2lvbkY2NChD
b250ZXh0JiBjb250ZQogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4KK0NvbnRleHRNZW1v
cnlBZGRyZXNzIFdBU01GdW5jdGlvblBhcnNlcjo6cGFyc2VNZW1vcnlBZGRyZXNzKENvbnRleHQm
IGNvbnRleHQsIE1lbW9yeUFjY2Vzc09mZnNldE1vZGUgb2Zmc2V0TW9kZSkKK3sKKyAgICB1aW50
MzJfdCBvZmZzZXQgPSAwOworICAgIGlmIChvZmZzZXRNb2RlID09IE1lbW9yeUFjY2Vzc09mZnNl
dE1vZGU6OldpdGhPZmZzZXQpCisgICAgICAgIFJFQURfQ09NUEFDVF9VSU5UMzJfT1JfRkFJTChv
ZmZzZXQsICJDYW5ub3QgcmVhZCB0aGUgYWRkcmVzcyBvZmZzZXQuIik7CisgICAgQ29udGV4dEV4
cHJlc3Npb24gaW5kZXggPSBwYXJzZUV4cHJlc3Npb25JMzIoY29udGV4dCk7CisgICAgUFJPUEFH
QVRFX0VSUk9SKCk7CisgICAgcmV0dXJuIENvbnRleHRNZW1vcnlBZGRyZXNzKGluZGV4LCBvZmZz
ZXQpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4KK0NvbnRleHRFeHByZXNzaW9uIFdB
U01GdW5jdGlvblBhcnNlcjo6cGFyc2VMb2FkKENvbnRleHQmIGNvbnRleHQsIFdBU01FeHByZXNz
aW9uVHlwZSBleHByZXNzaW9uVHlwZSwgV0FTTU1lbW9yeVR5cGUgbWVtb3J5VHlwZSwgTWVtb3J5
QWNjZXNzT2Zmc2V0TW9kZSBvZmZzZXRNb2RlLCBNZW1vcnlBY2Nlc3NDb252ZXJzaW9uIGNvbnZl
cnNpb24pCit7CisgICAgRkFJTF9JRl9GQUxTRShtX21vZHVsZS0+YXJyYXlCdWZmZXIoKSwgIkFu
IEFycmF5QnVmZmVyIGlzIG5vdCBwcm92aWRlZC4iKTsKKyAgICBjb25zdCBDb250ZXh0TWVtb3J5
QWRkcmVzcyYgbWVtb3J5QWRkcmVzcyA9IHBhcnNlTWVtb3J5QWRkcmVzcyhjb250ZXh0LCBvZmZz
ZXRNb2RlKTsKKyAgICBQUk9QQUdBVEVfRVJST1IoKTsKKyAgICByZXR1cm4gY29udGV4dC5idWls
ZExvYWQobWVtb3J5QWRkcmVzcywgZXhwcmVzc2lvblR5cGUsIG1lbW9yeVR5cGUsIGNvbnZlcnNp
b24pOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4KK0NvbnRleHRFeHByZXNzaW9uIFdB
U01GdW5jdGlvblBhcnNlcjo6cGFyc2VTdG9yZShDb250ZXh0JiBjb250ZXh0LCBXQVNNRXhwcmVz
c2lvblR5cGUgZXhwcmVzc2lvblR5cGUsIFdBU01NZW1vcnlUeXBlIG1lbW9yeVR5cGUsIE1lbW9y
eUFjY2Vzc09mZnNldE1vZGUgb2Zmc2V0TW9kZSkKK3sKKyAgICBGQUlMX0lGX0ZBTFNFKG1fbW9k
dWxlLT5hcnJheUJ1ZmZlcigpLCAiQW4gQXJyYXlCdWZmZXIgaXMgbm90IHByb3ZpZGVkLiIpOwor
ICAgIGNvbnN0IENvbnRleHRNZW1vcnlBZGRyZXNzJiBtZW1vcnlBZGRyZXNzID0gcGFyc2VNZW1v
cnlBZGRyZXNzKGNvbnRleHQsIG9mZnNldE1vZGUpOworICAgIFBST1BBR0FURV9FUlJPUigpOwor
CisgICAgQ29udGV4dEV4cHJlc3Npb24gdmFsdWUgPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCwg
ZXhwcmVzc2lvblR5cGUpOworICAgIFBST1BBR0FURV9FUlJPUigpOworICAgIHJldHVybiBjb250
ZXh0LmJ1aWxkU3RvcmUobWVtb3J5QWRkcmVzcywgZXhwcmVzc2lvblR5cGUsIG1lbW9yeVR5cGUs
IHZhbHVlKTsKK30KKwordGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+CiBDb250ZXh0RXhwcmVzc2lv
bkxpc3QgV0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZUNhbGxBcmd1bWVudHMoQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgVmVjdG9yPFdBU01UeXBlPiYgYXJndW1lbnRzKQogewogICAgIENvbnRleHRF
eHByZXNzaW9uTGlzdCBhcmd1bWVudExpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dBU01GdW5jdGlvblBhcnNlci5oCmluZGV4IGJiYmQxM2RiZDE4Y2QwZTZkMjY4ZDE5NzI4
MmQwZTM1YjVmZWE4NTguLjFhZDhmMjg4MmYxYzczMWM0NWUwNzZjZDViMDVlNTJkODIyODEwNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNlci5o
CkBAIC0zNCw2ICszNCw3IEBACiAjZGVmaW5lIENvbnRleHRFeHByZXNzaW9uIHR5cGVuYW1lIENv
bnRleHQ6OkV4cHJlc3Npb24KICNkZWZpbmUgQ29udGV4dFN0YXRlbWVudCB0eXBlbmFtZSBDb250
ZXh0OjpTdGF0ZW1lbnQKICNkZWZpbmUgQ29udGV4dEV4cHJlc3Npb25MaXN0IHR5cGVuYW1lIENv
bnRleHQ6OkV4cHJlc3Npb25MaXN0CisjZGVmaW5lIENvbnRleHRNZW1vcnlBZGRyZXNzIHR5cGVu
YW1lIENvbnRleHQ6Ok1lbW9yeUFkZHJlc3MKICNkZWZpbmUgQ29udGV4dEp1bXBUYXJnZXQgdHlw
ZW5hbWUgQ29udGV4dDo6SnVtcFRhcmdldAogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTExMyw2ICsx
MTQsMTAgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4gQ29udGV4dEV4
cHJlc3Npb24gcGFyc2VHZXRMb2NhbEV4cHJlc3Npb25GNjQoQ29udGV4dCYpOwogICAgIHRlbXBs
YXRlIDxjbGFzcyBDb250ZXh0PiBDb250ZXh0RXhwcmVzc2lvbiBwYXJzZUdldEdsb2JhbEV4cHJl
c3Npb25GNjQoQ29udGV4dCYpOwogCisgICAgdGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+IENvbnRl
eHRNZW1vcnlBZGRyZXNzIHBhcnNlTWVtb3J5QWRkcmVzcyhDb250ZXh0JiwgTWVtb3J5QWNjZXNz
T2Zmc2V0TW9kZSk7CisgICAgdGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+IENvbnRleHRFeHByZXNz
aW9uIHBhcnNlTG9hZChDb250ZXh0JiwgV0FTTUV4cHJlc3Npb25UeXBlLCBXQVNNTWVtb3J5VHlw
ZSwgTWVtb3J5QWNjZXNzT2Zmc2V0TW9kZSwgTWVtb3J5QWNjZXNzQ29udmVyc2lvbiA9IE1lbW9y
eUFjY2Vzc0NvbnZlcnNpb246Ok5vQ29udmVyc2lvbik7CisgICAgdGVtcGxhdGUgPGNsYXNzIENv
bnRleHQ+IENvbnRleHRFeHByZXNzaW9uIHBhcnNlU3RvcmUoQ29udGV4dCYsIFdBU01FeHByZXNz
aW9uVHlwZSwgV0FTTU1lbW9yeVR5cGUsIE1lbW9yeUFjY2Vzc09mZnNldE1vZGUpOworCiAgICAg
dGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+IENvbnRleHRFeHByZXNzaW9uTGlzdCBwYXJzZUNhbGxB
cmd1bWVudHMoQ29udGV4dCYsIGNvbnN0IFZlY3RvcjxXQVNNVHlwZT4mIGFyZ3VtZW50cyk7CiAg
ICAgdGVtcGxhdGUgPGNsYXNzIENvbnRleHQ+IENvbnRleHRFeHByZXNzaW9uIHBhcnNlQ2FsbElu
dGVybmFsKENvbnRleHQmLCBXQVNNRXhwcmVzc2lvblR5cGUgcmV0dXJuVHlwZSk7CiAgICAgdGVt
cGxhdGUgPGNsYXNzIENvbnRleHQ+IENvbnRleHRFeHByZXNzaW9uIHBhcnNlQ2FsbEluZGlyZWN0
KENvbnRleHQmLCBXQVNNRXhwcmVzc2lvblR5cGUgcmV0dXJuVHlwZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25TeW50YXhDaGVja2VyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25TeW50YXhDaGVja2VyLmgKaW5k
ZXggNjI4NjNkNGU3NTA1NWY0MDQ4NmVkOWQ1MzZmZmVhOTk3ODZjMjliMS4uNWJmMjg2NGMwMWJh
MjMwNWE4OTVkZTY1NTA5NDJkNjRlYWM4MDU3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblN5bnRheENoZWNrZXIuaApAQCAtMzcsNiArMzcs
MTAgQEAgcHVibGljOgogICAgIHR5cGVkZWYgaW50IEV4cHJlc3Npb247CiAgICAgdHlwZWRlZiBp
bnQgU3RhdGVtZW50OwogICAgIHR5cGVkZWYgaW50IEV4cHJlc3Npb25MaXN0OworICAgIHN0cnVj
dCBNZW1vcnlBZGRyZXNzIHsKKyAgICAgICAgTWVtb3J5QWRkcmVzcyh2b2lkKikgeyB9CisgICAg
ICAgIE1lbW9yeUFkZHJlc3MoaW50LCB1aW50MzJfdCkgeyB9CisgICAgfTsKICAgICB0eXBlZGVm
IGludCBKdW1wVGFyZ2V0OwogICAgIGVudW0gY2xhc3MgSnVtcENvbmRpdGlvbiB7IFplcm8sIE5v
blplcm8gfTsKIApAQCAtMTAxLDYgKzEwNSwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBV
TlVTRUQ7CiAgICAgfQogCisgICAgaW50IGJ1aWxkTG9hZChjb25zdCBNZW1vcnlBZGRyZXNzJiwg
V0FTTUV4cHJlc3Npb25UeXBlLCBXQVNNTWVtb3J5VHlwZSwgTWVtb3J5QWNjZXNzQ29udmVyc2lv
bikKKyAgICB7CisgICAgICAgIHJldHVybiBVTlVTRUQ7CisgICAgfQorCisgICAgaW50IGJ1aWxk
U3RvcmUoY29uc3QgTWVtb3J5QWRkcmVzcyYsIFdBU01FeHByZXNzaW9uVHlwZSwgV0FTTU1lbW9y
eVR5cGUsIGludCkKKyAgICB7CisgICAgICAgIG1fdGVtcFN0YWNrVG9wIC09IDI7CisgICAgICAg
IHJldHVybiBVTlVTRUQ7CisgICAgfQorCiAgICAgaW50IGJ1aWxkVW5hcnlJMzIoaW50LCBXQVNN
T3BFeHByZXNzaW9uSTMyKQogICAgIHsKICAgICAgICAgcmV0dXJuIFVOVVNFRDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5jcHAKaW5kZXggYzk0NDJh
MWY2NWYyOTNhOTc3YzYzNDk3NWY4OTJiODExYzg0OGM1OC4uZWMxYmM1YmZlYTU4ZmY3MDUwMWUz
MGQ4Njc2NTg3Y2QwODg1MjhiZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV0FTTU1vZHVsZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V0FTTU1vZHVsZVBhcnNlci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKIAorI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNXQVNNTW9kdWxlLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5l
cy5oIgpAQCAtNDksMTggKzUwLDE4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1XQVNNTW9kdWxl
UGFyc2VyOjpXQVNNTW9kdWxlUGFyc2VyKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU09iamVjdCogaW1wb3J0cykKK1dBU01N
b2R1bGVQYXJzZXI6OldBU01Nb2R1bGVQYXJzZXIoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTT2JqZWN0KiBpbXBvcnRzLCBK
U0FycmF5QnVmZmVyKiBhcnJheUJ1ZmZlcikKICAgICA6IG1fdm0odm0pCiAgICAgLCBtX2dsb2Jh
bE9iamVjdCh2bSwgZ2xvYmFsT2JqZWN0KQogICAgICwgbV9zb3VyY2Uoc291cmNlKQogICAgICwg
bV9pbXBvcnRzKHZtLCBpbXBvcnRzKQogICAgICwgbV9yZWFkZXIoc3RhdGljX2Nhc3Q8V2ViQXNz
ZW1ibHlTb3VyY2VQcm92aWRlcio+KHNvdXJjZS5wcm92aWRlcigpKS0+ZGF0YSgpKQorICAgICwg
bV9tb2R1bGUodm0sIEpTV0FTTU1vZHVsZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPndhc21N
b2R1bGVTdHJ1Y3R1cmUoKSwgYXJyYXlCdWZmZXIpKQogewogfQogCiBKU1dBU01Nb2R1bGUqIFdB
U01Nb2R1bGVQYXJzZXI6OnBhcnNlKEV4ZWNTdGF0ZSogZXhlYywgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UpCiB7Ci0gICAgbV9tb2R1bGUuc2V0KG1fdm0sIEpTV0FTTU1vZHVsZTo6Y3JlYXRlKG1fdm0s
IG1fZ2xvYmFsT2JqZWN0LT53YXNtTW9kdWxlU3RydWN0dXJlKCkpKTsKICAgICBwYXJzZU1vZHVs
ZShleGVjKTsKICAgICBpZiAoIW1fZXJyb3JNZXNzYWdlLmlzTnVsbCgpKSB7CiAgICAgICAgIGVy
cm9yTWVzc2FnZSA9IG1fZXJyb3JNZXNzYWdlOwpAQCAtOTMsNiArOTQsMTAgQEAgdm9pZCBXQVNN
TW9kdWxlUGFyc2VyOjpwYXJzZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcGFyc2VGdW5j
dGlvbkRlZmluaXRpb25TZWN0aW9uKCk7CiAgICAgUFJPUEFHQVRFX0VSUk9SKCk7CiAgICAgcGFy
c2VFeHBvcnRTZWN0aW9uKCk7CisgICAgUFJPUEFHQVRFX0VSUk9SKCk7CisKKyAgICAvLyBGSVhN
RTogUmVtb3ZlIHRoaXMgbGltaXRhdGlvbi4KKyAgICBGQUlMX0lGX0ZBTFNFKCFtX21vZHVsZS0+
YXJyYXlCdWZmZXIoKSB8fCBtX21vZHVsZS0+YXJyYXlCdWZmZXIoKS0+aW1wbCgpLT5ieXRlTGVu
Z3RoKCkgPCAoMXUgPDwgMzEpLCAiVGhlIEFycmF5QnVmZmVyJ3MgbGVuZ3RoIG11c3QgYmUgbGVz
cyB0aGFuIDJeMzEuIik7CiB9CiAKIHZvaWQgV0FTTU1vZHVsZVBhcnNlcjo6cGFyc2VDb25zdGFu
dFBvb2xTZWN0aW9uKCkKQEAgLTM2Miw5ICszNjcsOSBAQCB2b2lkIFdBU01Nb2R1bGVQYXJzZXI6
OmdldEltcG9ydGVkVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIGltcG9ydE5h
bQogICAgIHZhbHVlID0gc2xvdC5nZXRWYWx1ZShleGVjLCBpZGVudGlmaWVyKTsKIH0KIAotSlNX
QVNNTW9kdWxlKiBwYXJzZVdlYkFzc2VtYmx5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNl
Q29kZSYgc291cmNlLCBKU09iamVjdCogaW1wb3J0cywgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCitK
U1dBU01Nb2R1bGUqIHBhcnNlV2ViQXNzZW1ibHkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIEpTT2JqZWN0KiBpbXBvcnRzLCBKU0FycmF5QnVmZmVyKiBhcnJheUJ1
ZmZlciwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7Ci0gICAgV0FTTU1vZHVsZVBhcnNlciBtb2R1
bGVQYXJzZXIoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzb3VyY2Us
IGltcG9ydHMpOworICAgIFdBU01Nb2R1bGVQYXJzZXIgbW9kdWxlUGFyc2VyKGV4ZWMtPnZtKCks
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgc291cmNlLCBpbXBvcnRzLCBhcnJheUJ1ZmZl
cik7CiAgICAgcmV0dXJuIG1vZHVsZVBhcnNlci5wYXJzZShleGVjLCBlcnJvck1lc3NhZ2UpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFy
c2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmgKaW5k
ZXggZjhiMzExM2RlYjMxOGY0OGE4ZmZmMmZjNjc3ODM1MjFkYjIwYzIyOS4uNTAxN2JjMWNlYTY2
NzE3ZTc1ZGI2MTVjNzlmNDQ0YTBmMjlmNDM1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuaApAQCAtMzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIEpT
QyB7CiAKIGNsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIEpTQXJyYXlCdWZmZXI7CiBjbGFzcyBKU0ds
b2JhbE9iamVjdDsKIGNsYXNzIEpTV0FTTU1vZHVsZTsKIGNsYXNzIFNvdXJjZUNvZGU7CkBAIC00
Miw3ICs0Myw3IEBAIGNsYXNzIFZNOwogCiBjbGFzcyBXQVNNTW9kdWxlUGFyc2VyIHsKIHB1Ymxp
YzoKLSAgICBXQVNNTW9kdWxlUGFyc2VyKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgSlNPYmplY3QqIGltcG9ydHMpOworICAgIFdBU01Nb2R1bGVQYXJzZXIoVk0mLCBK
U0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU09iamVjdCogaW1wb3J0cywgSlNB
cnJheUJ1ZmZlciopOwogICAgIEpTV0FTTU1vZHVsZSogcGFyc2UoRXhlY1N0YXRlKiwgU3RyaW5n
JiBlcnJvck1lc3NhZ2UpOwogCiBwcml2YXRlOgpAQCAtNjcsNyArNjgsNyBAQCBwcml2YXRlOgog
ICAgIFN0cmluZyBtX2Vycm9yTWVzc2FnZTsKIH07CiAKLUpTX0VYUE9SVF9QUklWQVRFIEpTV0FT
TU1vZHVsZSogcGFyc2VXZWJBc3NlbWJseShFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwg
SlNPYmplY3QqIGltcG9ydHMsIFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKK0pTX0VYUE9SVF9QUklW
QVRFIEpTV0FTTU1vZHVsZSogcGFyc2VXZWJBc3NlbWJseShFeGVjU3RhdGUqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgSlNPYmplY3QqIGltcG9ydHMsIEpTQXJyYXlCdWZmZXIqLCBTdHJpbmcmIGVycm9y
TWVzc2FnZSk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261523</attachid>
            <date>2015-09-18 14:17:57 -0700</date>
            <delta_ts>2015-09-18 16:07:04 -0700</delta_ts>
            <desc>remove the FIXME for the ArrayBuffer&apos;s length limit</desc>
            <filename>bug-149326-20150918141831.patch</filename>
            <type>text/plain</type>
            <size>42113</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5OTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
NmZhN2Y2ZDhiNzM3ZWNkNDllYWJhYmNhZTNkOGFhNTk4Zjg3NTFmLi4zM2Y2M2FiMDUyOWU1NmU5
NGFiMDdjZDUxNTc1NDQ4ODAwOGUzOGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NiBAQAorMjAxNS0wOS0xOCAgU3Vrb2xzYWsgU2Frc2h1d29uZyAgPHN1a29sc2FrQGdt
YWlsLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgbGluZWFyIG1lbW9yeSBpbnN0cnVjdGlvbnMg
aW4gV2ViQXNzZW1ibHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0OTMyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBsaW5lYXIgbWVtb3J5IGluc3RydWN0aW9ucyBp
biBXZWJBc3NlbWJseS5bMV0gVG8KKyAgICAgICAgdXNlIHRoZSBsaW5lYXIgbWVtb3J5LCBhbiBB
cnJheUJ1ZmZlciBtdXN0IGJlIHBhc3NlZCB0byBsb2FkV2ViQXNzZW1ibHkoKS4KKworICAgICAg
ICBOb3RlczoKKyAgICAgICAgLSBXZSBsaW1pdCB0aGUgQXJyYXlCdWZmZXIncyBieXRlIGxlbmd0
aCB0byAyXjMxIC0gMS4gVGhpcyBlbmFibGVzIHVzIHRvCisgICAgICAgICAgdXNlIG9ubHkgb25l
IGNvbXBhcmlzb24gKHVuc2lnbmVkIGdyZWF0ZXIgdGhhbikgdG8gY2hlY2sgZm9yCisgICAgICAg
ICAgb3V0LW9mLWJvdW5kcyBhY2Nlc3MuCisgICAgICAgIC0gVGhlcmUgaXMgbm8gY29uc2Vuc3Vz
IHlldCBvbiB3aGF0IHNob3VsZCBoYXBwZW4gd2hlbiBhbiBvdXQtb2YtYm91bmRzCisgICAgICAg
ICAgYWNjZXNzIG9jY3Vycy5bMl0gRm9yIG5vdywgd2UgdGhyb3cgYW4gZXJyb3Igd2hlbiB0aGF0
IGhhcHBlbnMuCisgICAgICAgIC0gSW4gYXNtLmpzLCBhIGhlYXAgYWNjZXNzIGxvb2tzIGxpa2Ug
dGhpczogaW50MzJBcnJheVtpID4+IDJdLiBOb3RlCisgICAgICAgICAgdGhhdCAiPj4gMiIgaXMg
cGFydCBvZiB0aGUgc3ludGF4IGFuZCBpcyByZXF1aXJlZC4gcGFjay1hc21qcyB3aWxsCisgICAg
ICAgICAgcHJvZHVjZSBieXRlY29kZXMgdGhhdCBsb29rIHNvbWV0aGluZyBsaWtlICJMb2FkSTMy
LCBpIiAobm90CisgICAgICAgICAgIkxvYWRJMzIsIFNoaWZ0UmlnaHRJMzIsIGksIDIiKS4gVGhl
IHJlcXVpcmVtZW50IG9mIHRoZSBzaGlmdCBvcGVyYXRvcgorICAgICAgICAgIHByZXZlbnRzIHVu
YWxpZ25lZCBhY2Nlc3NlcyBpbiBhc20uanMuIChUaGVyZSBpcyBhIHByb3Bvc2FsIHRvIHN1cHBv
cnQKKyAgICAgICAgICB1bmFsaWduZWQgYWNjZXNzZXMgaW4gdGhlIGZ1dHVyZSB2ZXJzaW9uIG9m
IGFzbS5qcyB1c2luZyBEYXRhVmlldy5bM10pCisgICAgICAgICAgVGhlIFdlYkFzc2VtYmx5IHNw
ZWMgYWxsb3dzIHVuYWxpZ25lZCBhY2Nlc3Nlcy5bNF0gQnV0IHNpbmNlIHdlIHVzZQorICAgICAg
ICAgIGFzbS5qcyBmb3IgdGVzdGluZywgd2UgZm9sbG93IGFzbS5qcydzIGJlaGF2aW9ycyBmb3Ig
bm93LgorCisgICAgICAgIFsxXTogaHR0cHM6Ly9naXRodWIuY29tL1dlYkFzc2VtYmx5L2Rlc2ln
bi9ibG9iL21hc3Rlci9Bc3RTZW1hbnRpY3MubWQjbGluZWFyLW1lbW9yeQorICAgICAgICBbMl06
IGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9kZXNpZ24vYmxvYi9tYXN0ZXIvQXN0U2Vt
YW50aWNzLm1kI291dC1vZi1ib3VuZHMKKyAgICAgICAgWzNdOiBodHRwczovL3dpa2kubW96aWxs
YS5vcmcvSmF2YXNjcmlwdDpTcGlkZXJNb25rZXk6T2Rpbk1vbmtleSNQb3NzaWJsZV9hc20uanNf
ZXh0ZW5zaW9uc190aGF0X2Rvbi4yN3RfcmVxdWlyZV9uZXdfSlNfZmVhdHVyZXMKKyAgICAgICAg
WzRdOiBodHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1ibHkvZGVzaWduL2Jsb2IvbWFzdGVyL0Fz
dFNlbWFudGljcy5tZCNhbGlnbm1lbnQKKworICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGpzYy5jcHA6Cisg
ICAgICAgIChHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKGZ1bmN0aW9u
TG9hZFdlYkFzc2VtYmx5KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mvd2FzbS1saW5lYXItbWVt
b3J5LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93
KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mvd2FzbS9saW5lYXItbWVtb3J5Lndhc206IEFkZGVk
LgorICAgICAgICAqIHdhc20vSlNXQVNNTW9kdWxlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXQVNN
TW9kdWxlOjpKU1dBU01Nb2R1bGUpOgorICAgICAgICAoSlNDOjpKU1dBU01Nb2R1bGU6OnZpc2l0
Q2hpbGRyZW4pOgorICAgICAgICAqIHdhc20vSlNXQVNNTW9kdWxlLmg6CisgICAgICAgIChKU0M6
OkpTV0FTTU1vZHVsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNXQVNNTW9kdWxlOjphcnJh
eUJ1ZmZlcik6CisgICAgICAgIChKU0M6OkpTV0FTTU1vZHVsZTo6SlNXQVNNTW9kdWxlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiB3YXNtL1dBU01Db25zdGFudHMuaDoKKyAgICAgICAgKiB3YXNtL1dB
U01GdW5jdGlvbkNvbXBpbGVyLmg6CisgICAgICAgIChKU0M6OnNpemVPZk1lbW9yeVR5cGUpOgor
ICAgICAgICAoSlNDOjpXQVNNRnVuY3Rpb25Db21waWxlcjo6TWVtb3J5QWRkcmVzczo6TWVtb3J5
QWRkcmVzcyk6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlvbkNvbXBpbGVyOjplbmRGdW5jdGlv
bik6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlvbkNvbXBpbGVyOjpidWlsZExvYWQpOgorICAg
ICAgICAoSlNDOjpXQVNNRnVuY3Rpb25Db21waWxlcjo6YnVpbGRTdG9yZSk6CisgICAgICAgICog
d2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpXQVNNRnVuY3Rpb25Q
YXJzZXI6OnBhcnNlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uUGFyc2Vy
OjpwYXJzZUV4cHJlc3Npb25JMzIpOgorICAgICAgICAoSlNDOjpXQVNNRnVuY3Rpb25QYXJzZXI6
OnBhcnNlRXhwcmVzc2lvbkYzMik6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlvblBhcnNlcjo6
cGFyc2VFeHByZXNzaW9uRjY0KToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uUGFyc2VyOjpw
YXJzZU1lbW9yeUFkZHJlc3MpOgorICAgICAgICAoSlNDOjpXQVNNRnVuY3Rpb25QYXJzZXI6OnBh
cnNlTG9hZCk6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlvblBhcnNlcjo6cGFyc2VTdG9yZSk6
CisgICAgICAgICogd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuaDoKKyAgICAgICAgKiB3YXNtL1dB
U01GdW5jdGlvblN5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uU3lu
dGF4Q2hlY2tlcjo6TWVtb3J5QWRkcmVzczo6TWVtb3J5QWRkcmVzcyk6CisgICAgICAgIChKU0M6
OldBU01GdW5jdGlvblN5bnRheENoZWNrZXI6OmJ1aWxkTG9hZCk6CisgICAgICAgIChKU0M6OldB
U01GdW5jdGlvblN5bnRheENoZWNrZXI6OmJ1aWxkU3RvcmUpOgorICAgICAgICAqIHdhc20vV0FT
TU1vZHVsZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OldBU01Nb2R1bGVQYXJzZXI6OldBU01N
b2R1bGVQYXJzZXIpOgorICAgICAgICAoSlNDOjpXQVNNTW9kdWxlUGFyc2VyOjpwYXJzZU1vZHVs
ZSk6CisgICAgICAgIChKU0M6OnBhcnNlV2ViQXNzZW1ibHkpOgorICAgICAgICAoSlNDOjpXQVNN
TW9kdWxlUGFyc2VyOjpwYXJzZSk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9XQVNNTW9kdWxl
UGFyc2VyLmg6CisKIDIwMTUtMDktMTggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggdGVzdHMgb24gV2luZG93cyBhZnRlciBzd2l0Y2hp
bmcgdG8gQ01ha2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAppbmRleCBkMDA1YWM5NWIxNmYyY2Y0MGNkZTRkMWJmYzY2ZjNkMmZmY2RiODMwLi44ZTdlYTY1
MDYwMGI2MWQ1YTExNDZmZTE5MDY3N2I5OTc4YmI5OGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTEwNSw2ICsxMDUsMTcgQEAgdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblRocm93RGl2aWRlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQogICAg
IEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNjb3BlKCp2bSk7CiAgICAgdm0tPnRocm93RXhjZXB0
aW9uKGNhbGxlckZyYW1lLCBjcmVhdGVFcnJvcihjYWxsZXJGcmFtZSwgQVNDSUlMaXRlcmFsKCJE
aXZpc2lvbiBieSB6ZXJvIG9yIGRpdmlzaW9uIG92ZXJmbG93LiIpKSk7CiB9CisKK3ZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25UaHJvd091dE9mQm91bmRzQWNjZXNzRXJyb3IoRXhlY1N0YXRl
KiBleGVjKQoreworICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIFZNRW50cnlGcmFtZSog
dm1FbnRyeUZyYW1lID0gdm0tPnRvcFZNRW50cnlGcmFtZTsKKyAgICBDYWxsRnJhbWUqIGNhbGxl
ckZyYW1lID0gZXhlYy0+Y2FsbGVyRnJhbWUodm1FbnRyeUZyYW1lKTsKKworICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlcldpdGhSZXN0b3JlIHRyYWNlcih2bSwgdm1FbnRyeUZyYW1lLCBjYWxsZXJG
cmFtZSk7CisgICAgRXJyb3JIYW5kbGluZ1Njb3BlIGVycm9yU2NvcGUoKnZtKTsKKyAgICB2bS0+
dGhyb3dFeGNlcHRpb24oY2FsbGVyRnJhbWUsIGNyZWF0ZUVycm9yKGNhbGxlckZyYW1lLCBBU0NJ
SUxpdGVyYWwoIk91dC1vZi1ib3VuZHMgYWNjZXNzLiIpKSk7Cit9CiAjZW5kaWYKIAogaW50MzJf
dCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrKEV4ZWNTdGF0ZSogZXhlYykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggYjljNzI0OGI4
OTM3ZjI0NDc2N2ZiNTEyY2FkMDEyMWQ2NWY4OGZlYi4uYWFjYTM1YTIxZDA5N2E2NmI0ODFmYTUy
MDVjNjg1MTMyMzNjZDU2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmgKQEAgLTI1MSw2ICsyNTEsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVk1I
YW5kbGVFeGNlcHRpb24oRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSosIENvZGVCbG9j
ayopIFdURl9JTlRFUk5BTDsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVGhyb3dEaXZpZGVFcnJvcihFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7
Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dPdXRPZkJvdW5kc0FjY2Vzc0Vycm9y
KEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKICNlbmRpZgogaW50MzJfdCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrKEV4ZWNTdGF0ZSopIFdURl9JTlRFUk5BTDsKIGludDMy
X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db25zdHJ1Y3RBcml0eUNoZWNrKEV4ZWNTdGF0ZSop
IFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMWYyM2NhMWIwZTliMDJiZmRk
ZDgxMmM5Y2ZiYjg0YjJhNDMwMWM3My4uZDJlNGQ1OGUzOTBlNDFiODhkNjMwOTNlZmI3YjM5NTI4
NTJlODA4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTY3Nyw3ICs2NzcsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAiZHJhaW5NaWNyb3Rhc2tzIiwgZnVuY3Rpb25E
cmFpbk1pY3JvdGFza3MsIDApOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgICAgICBh
ZGRGdW5jdGlvbih2bSwgImxvYWRXZWJBc3NlbWJseSIsIGZ1bmN0aW9uTG9hZFdlYkFzc2VtYmx5
LCAyKTsKKyAgICAgICAgYWRkRnVuY3Rpb24odm0sICJsb2FkV2ViQXNzZW1ibHkiLCBmdW5jdGlv
bkxvYWRXZWJBc3NlbWJseSwgMyk7CiAjZW5kaWYKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJs
b2FkTW9kdWxlIiwgZnVuY3Rpb25Mb2FkTW9kdWxlLCAxKTsKICAgICAgICAgYWRkRnVuY3Rpb24o
dm0sICJjaGVja01vZHVsZVN5bnRheCIsIGZ1bmN0aW9uQ2hlY2tNb2R1bGVTeW50YXgsIDEpOwpA
QCAtMTQ1MCw5ICsxNDUwLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25Mb2FkV2ViQXNzZW1ibHkoRXhlY1N0YXRlKiBleGVjKQogICAgIFJlZlB0cjxXZWJBc3NlbWJs
eVNvdXJjZVByb3ZpZGVyPiBzb3VyY2VQcm92aWRlciA9IFdlYkFzc2VtYmx5U291cmNlUHJvdmlk
ZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PFZlY3Rvcjx1aW50OF90PiY+KGJ1ZmZlciksIGZp
bGVOYW1lKTsKICAgICBTb3VyY2VDb2RlIHNvdXJjZShzb3VyY2VQcm92aWRlcik7CiAgICAgSlNP
YmplY3QqIGltcG9ydHMgPSBleGVjLT5hcmd1bWVudCgxKS5nZXRPYmplY3QoKTsKKyAgICBKU0Fy
cmF5QnVmZmVyKiBhcnJheUJ1ZmZlciA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KGV4
ZWMtPmFyZ3VtZW50KDIpKTsKIAogICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7Ci0gICAgSlNXQVNN
TW9kdWxlKiBtb2R1bGUgPSBwYXJzZVdlYkFzc2VtYmx5KGV4ZWMsIHNvdXJjZSwgaW1wb3J0cywg
ZXJyb3JNZXNzYWdlKTsKKyAgICBKU1dBU01Nb2R1bGUqIG1vZHVsZSA9IHBhcnNlV2ViQXNzZW1i
bHkoZXhlYywgc291cmNlLCBpbXBvcnRzLCBhcnJheUJ1ZmZlciwgZXJyb3JNZXNzYWdlKTsKICAg
ICBpZiAoIW1vZHVsZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgp
LnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIGVycm9yTWVzc2Fn
ZSkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG1vZHVsZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3dhc20tbGluZWFyLW1lbW9yeS5qcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvd2FzbS1saW5lYXItbWVtb3J5Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmMzNTZhZWZlZDJjYTdjMjIxNmNjMDBmZjcyYWM1MjZmZmY1YzExODcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3dhc20t
bGluZWFyLW1lbW9yeS5qcwpAQCAtMCwwICsxLDIwNCBAQAorLy9AIHNraXAKKworZnVuY3Rpb24g
c2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVk
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisK
K2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIG1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3IgPSBu
dWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAg
ICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvcikKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJub3QgdGhyb3duLiIpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBtZXNzYWdl
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImJhZCBlcnJvcjogIiArIFN0cmluZyhlcnJvcikp
OworfQorCisvKgord2FzbS9saW5lYXItbWVtb3J5Lndhc20gaXMgZ2VuZXJhdGVkIGJ5IHBhY2st
YXNtanMgPGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9wb2x5ZmlsbC1wcm90b3R5cGUt
MT4gZnJvbSB0aGUgZm9sbG93aW5nIHNjcmlwdDoKKworZnVuY3Rpb24gYXNtTW9kdWxlKGdsb2Jh
bCwgaW1wb3J0cywgYnVmZmVyKSB7CisgICAgInVzZSBhc20iOworCisgICAgdmFyIGZyb3VuZCA9
IGdsb2JhbC5NYXRoLmZyb3VuZDsKKyAgICB2YXIgaW50OEFycmF5ID0gbmV3IGdsb2JhbC5JbnQ4
QXJyYXkoYnVmZmVyKTsKKyAgICB2YXIgdWludDhBcnJheSA9IG5ldyBnbG9iYWwuVWludDhBcnJh
eShidWZmZXIpOworICAgIHZhciBpbnQxNkFycmF5ID0gbmV3IGdsb2JhbC5JbnQxNkFycmF5KGJ1
ZmZlcik7CisgICAgdmFyIHVpbnQxNkFycmF5ID0gbmV3IGdsb2JhbC5VaW50MTZBcnJheShidWZm
ZXIpOworICAgIHZhciBpbnQzMkFycmF5ID0gbmV3IGdsb2JhbC5JbnQzMkFycmF5KGJ1ZmZlcik7
CisgICAgdmFyIGZsb2F0MzJBcnJheSA9IG5ldyBnbG9iYWwuRmxvYXQzMkFycmF5KGJ1ZmZlcik7
CisgICAgdmFyIGZsb2F0NjRBcnJheSA9IG5ldyBnbG9iYWwuRmxvYXQ2NEFycmF5KGJ1ZmZlcik7
CisKKyAgICBmdW5jdGlvbiBnZXRJbnQ4KGkpIHsKKyAgICAgICAgaSA9IGkgfCAwOworICAgICAg
ICByZXR1cm4gaW50OEFycmF5W2ldIHwgMDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBnZXRVaW50
OChpKSB7CisgICAgICAgIGkgPSBpIHwgMDsKKyAgICAgICAgcmV0dXJuIHVpbnQ4QXJyYXlbaV0g
fCAwOworICAgIH0KKworICAgIGZ1bmN0aW9uIGdldEludDE2KGkpIHsKKyAgICAgICAgaSA9IGkg
fCAwOworICAgICAgICByZXR1cm4gaW50MTZBcnJheVtpID4+IDFdIHwgMDsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBnZXRVaW50MTYoaSkgeworICAgICAgICBpID0gaSB8IDA7CisgICAgICAgIHJl
dHVybiB1aW50MTZBcnJheVtpID4+IDFdIHwgMDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBnZXRJ
bnQzMihpKSB7CisgICAgICAgIGkgPSBpIHwgMDsKKyAgICAgICAgcmV0dXJuIGludDMyQXJyYXlb
aSA+PiAyXSB8IDA7CisgICAgfQorCisgICAgZnVuY3Rpb24gZ2V0RmxvYXQzMihpKSB7CisgICAg
ICAgIGkgPSBpIHwgMDsKKyAgICAgICAgcmV0dXJuIGZyb3VuZChmbG9hdDMyQXJyYXlbaSA+PiAy
XSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZ2V0RmxvYXQ2NChpKSB7CisgICAgICAgIGkgPSBp
IHwgMDsKKyAgICAgICAgcmV0dXJuICtmbG9hdDY0QXJyYXlbaSA+PiAzXTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBzZXRJbnQ4KGksIHgpIHsKKyAgICAgICAgaSA9IGkgfCAwOworICAgICAgICB4
ID0geCB8IDA7CisgICAgICAgIGludDhBcnJheVtpXSA9IHg7CisgICAgfQorCisgICAgZnVuY3Rp
b24gc2V0VWludDgoaSwgeCkgeworICAgICAgICBpID0gaSB8IDA7CisgICAgICAgIHggPSB4IHwg
MDsKKyAgICAgICAgdWludDhBcnJheVtpXSA9IHg7CisgICAgfQorCisgICAgZnVuY3Rpb24gc2V0
SW50MTYoaSwgeCkgeworICAgICAgICBpID0gaSB8IDA7CisgICAgICAgIHggPSB4IHwgMDsKKyAg
ICAgICAgaW50MTZBcnJheVtpID4+IDFdID0geDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzZXRV
aW50MTYoaSwgeCkgeworICAgICAgICBpID0gaSB8IDA7CisgICAgICAgIHggPSB4IHwgMDsKKyAg
ICAgICAgdWludDE2QXJyYXlbaSA+PiAxXSA9IHg7CisgICAgfQorCisgICAgZnVuY3Rpb24gc2V0
SW50MzIoaSwgeCkgeworICAgICAgICBpID0gaSB8IDA7CisgICAgICAgIHggPSB4IHwgMDsKKyAg
ICAgICAgaW50MzJBcnJheVtpID4+IDJdID0geDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzZXRG
bG9hdDMyKGksIHgpIHsKKyAgICAgICAgaSA9IGkgfCAwOworICAgICAgICB4ID0gZnJvdW5kKHgp
OworICAgICAgICBmbG9hdDMyQXJyYXlbaSA+PiAyXSA9IHg7CisgICAgfQorCisgICAgZnVuY3Rp
b24gc2V0RmxvYXQ2NChpLCB4KSB7CisgICAgICAgIGkgPSBpIHwgMDsKKyAgICAgICAgeCA9ICt4
OworICAgICAgICBmbG9hdDY0QXJyYXlbaSA+PiAzXSA9IHg7CisgICAgfQorCisgICAgcmV0dXJu
IHsKKyAgICAgICAgZ2V0SW50ODogZ2V0SW50OCwKKyAgICAgICAgZ2V0VWludDg6IGdldFVpbnQ4
LAorICAgICAgICBnZXRJbnQxNjogZ2V0SW50MTYsCisgICAgICAgIGdldFVpbnQxNjogZ2V0VWlu
dDE2LAorICAgICAgICBnZXRJbnQzMjogZ2V0SW50MzIsCisgICAgICAgIGdldEZsb2F0MzI6IGdl
dEZsb2F0MzIsCisgICAgICAgIGdldEZsb2F0NjQ6IGdldEZsb2F0NjQsCisgICAgICAgIHNldElu
dDg6IHNldEludDgsCisgICAgICAgIHNldFVpbnQ4OiBzZXRVaW50OCwKKyAgICAgICAgc2V0SW50
MTY6IHNldEludDE2LAorICAgICAgICBzZXRVaW50MTY6IHNldFVpbnQxNiwKKyAgICAgICAgc2V0
SW50MzI6IHNldEludDMyLAorICAgICAgICBzZXRGbG9hdDMyOiBzZXRGbG9hdDMyLAorICAgICAg
ICBzZXRGbG9hdDY0OiBzZXRGbG9hdDY0LAorICAgIH07Cit9CisqLworCit2YXIgYnVmZmVyID0g
bmV3IEFycmF5QnVmZmVyKDE2KTsKK3ZhciBtb2R1bGUgPSBsb2FkV2ViQXNzZW1ibHkoIndhc20v
bGluZWFyLW1lbW9yeS53YXNtIiwgeyB9LCBidWZmZXIpOworCit2YXIgaW50MzJBcnJheSA9IG5l
dyBJbnQzMkFycmF5KGJ1ZmZlcik7CisKKy8vIEJhc2ljIGdldHMgYW5kIHNldHMuCittb2R1bGUu
c2V0SW50OCgwLCAxKTsKK3Nob3VsZEJlKG1vZHVsZS5nZXRJbnQ4KDApLCAxKTsKK21vZHVsZS5z
ZXRVaW50OCgwLCAyKTsKK3Nob3VsZEJlKG1vZHVsZS5nZXRVaW50OCgwKSwgMik7Cittb2R1bGUu
c2V0SW50MTYoMCwgMyk7CitzaG91bGRCZShtb2R1bGUuZ2V0SW50MTYoMCksIDMpOworbW9kdWxl
LnNldFVpbnQxNigwLCA0KTsKK3Nob3VsZEJlKG1vZHVsZS5nZXRVaW50MTYoMCksIDQpOworbW9k
dWxlLnNldEludDMyKDAsIDUpOworc2hvdWxkQmUobW9kdWxlLmdldEludDMyKDApLCA1KTsKK21v
ZHVsZS5zZXRGbG9hdDMyKDAsIDYuNyk7CitzaG91bGRCZShtb2R1bGUuZ2V0RmxvYXQzMigwKSwg
Ni42OTk5OTk4MDkyNjUxMzcpOworbW9kdWxlLnNldEZsb2F0NjQoMCwgOC45KTsKK3Nob3VsZEJl
KG1vZHVsZS5nZXRGbG9hdDY0KDApLCA4LjkpOworCitpbnQzMkFycmF5WzBdID0gMHgwMEZGRkYw
MDsKK3Nob3VsZEJlKG1vZHVsZS5nZXRVaW50OCgwKSwgMCk7CitzaG91bGRCZShtb2R1bGUuZ2V0
VWludDgoMSksIDI1NSk7CitzaG91bGRCZShtb2R1bGUuZ2V0VWludDgoMiksIDI1NSk7CitzaG91
bGRCZShtb2R1bGUuZ2V0VWludDgoMyksIDApOworCisvLyBUeXBlIHB1bm5pbmcuCittb2R1bGUu
c2V0SW50OCgwLCAtMSk7CitzaG91bGRCZShtb2R1bGUuZ2V0SW50OCgwKSwgLTEpOworc2hvdWxk
QmUobW9kdWxlLmdldFVpbnQ4KDApLCAyNTUpOworCittb2R1bGUuc2V0SW50OCgxLCAtMSk7Citz
aG91bGRCZShtb2R1bGUuZ2V0SW50OCgxKSwgLTEpOworc2hvdWxkQmUobW9kdWxlLmdldFVpbnQ4
KDEpLCAyNTUpOworc2hvdWxkQmUobW9kdWxlLmdldEludDE2KDApLCAtMSk7CitzaG91bGRCZSht
b2R1bGUuZ2V0VWludDE2KDApLCA2NTUzNSk7CisKKy8vIE91dC1vZi1ib3VuZCBhY2Nlc3Nlcy4K
K21vZHVsZS5nZXRJbnQ4KDE1KTsKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBtb2R1bGUuZ2V0
SW50OCgxNik7Cit9LCAiRXJyb3I6IE91dC1vZi1ib3VuZHMgYWNjZXNzLiIpOworc2hvdWxkVGhy
b3coKCkgPT4geworICAgIG1vZHVsZS5nZXRJbnQ4KC0xKTsKK30sICJFcnJvcjogT3V0LW9mLWJv
dW5kcyBhY2Nlc3MuIik7CisKKy8vIFVuYWxpZ25lZCBhY2Nlc3NlcworaW50MzJBcnJheVswXSA9
IDA7CitpbnQzMkFycmF5WzFdID0gMHgwMTIzNDU2NzsKK2ludDMyQXJyYXlbMl0gPSAwOworc2hv
dWxkQmUobW9kdWxlLmdldEludDMyKDMpLCAwKTsKK3Nob3VsZEJlKG1vZHVsZS5nZXRJbnQzMig0
KSwgMHgwMTIzNDU2Nyk7CitzaG91bGRCZShtb2R1bGUuZ2V0SW50MzIoNSksIDB4MDEyMzQ1Njcp
Oworc2hvdWxkQmUobW9kdWxlLmdldEludDMyKDYpLCAweDAxMjM0NTY3KTsKK3Nob3VsZEJlKG1v
ZHVsZS5nZXRJbnQzMig3KSwgMHgwMTIzNDU2Nyk7CitzaG91bGRCZShtb2R1bGUuZ2V0SW50MzIo
OCksIDApOworCitpbnQzMkFycmF5WzBdID0gMDsKK2ludDMyQXJyYXlbMV0gPSAwOworaW50MzJB
cnJheVsyXSA9IDA7Cittb2R1bGUuc2V0SW50MzIoMywgMSk7CitzaG91bGRCZShpbnQzMkFycmF5
WzBdID09IDEgJiYgaW50MzJBcnJheVsxXSA9PSAwICYmIGludDMyQXJyYXlbMl0gPT0gMCwgdHJ1
ZSk7Cittb2R1bGUuc2V0SW50MzIoNCwgMik7CitzaG91bGRCZShpbnQzMkFycmF5WzBdID09IDEg
JiYgaW50MzJBcnJheVsxXSA9PSAyICYmIGludDMyQXJyYXlbMl0gPT0gMCwgdHJ1ZSk7Cittb2R1
bGUuc2V0SW50MzIoNSwgMyk7CitzaG91bGRCZShpbnQzMkFycmF5WzBdID09IDEgJiYgaW50MzJB
cnJheVsxXSA9PSAzICYmIGludDMyQXJyYXlbMl0gPT0gMCwgdHJ1ZSk7Cittb2R1bGUuc2V0SW50
MzIoNiwgNCk7CitzaG91bGRCZShpbnQzMkFycmF5WzBdID09IDEgJiYgaW50MzJBcnJheVsxXSA9
PSA0ICYmIGludDMyQXJyYXlbMl0gPT0gMCwgdHJ1ZSk7Cittb2R1bGUuc2V0SW50MzIoNywgNSk7
CitzaG91bGRCZShpbnQzMkFycmF5WzBdID09IDEgJiYgaW50MzJBcnJheVsxXSA9PSA1ICYmIGlu
dDMyQXJyYXlbMl0gPT0gMCwgdHJ1ZSk7Cittb2R1bGUuc2V0SW50MzIoOCwgNik7CitzaG91bGRC
ZShpbnQzMkFycmF5WzBdID09IDEgJiYgaW50MzJBcnJheVsxXSA9PSA1ICYmIGludDMyQXJyYXlb
Ml0gPT0gNiwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL3dhc20vbGluZWFyLW1lbW9yeS53YXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy93YXNtL2xpbmVhci1tZW1vcnkud2FzbQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hN2M3NzJmNmVj
MWRkMzhmNDhhNWVmNWE3Y2Q0YzMwMzNlMGRiY2I3CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAy
NzcKemNtWHd4K1lRMW4zYE9tdjRXWDFVM2xDTEhmVyFheyY8fSk9Y3ppU3h6Zz94OWdoaU56Pm9+
UktsY084P2UpezQwCnp0NFlRWTZFaGhtWWU8JXtGckFQZUhkZHlwWTI9TWRmRVA0XlJ1QmFGTHR4
VWtwYzJiKVZtP2hISCktTjx5VDxiPwp6OSpIMkF5QktTPD9afWkyWUJrKk5zRGhteT8+QHJvKn1E
VXxwKUBUWitUPUNEYExibHRNbmhiJFV+Xk1ESkRTI2kKRCFKUzZHCgpsaXRlcmFsIDAKSGNtVj9k
MDAwMDEKCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9KU1dBU01Nb2R1
bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vSlNXQVNNTW9kdWxlLmNwcAppbmRl
eCBmMWQ0NjQwYTYzMmRiMmVmY2EzMDAzOGI4YjA0NDVjZDAwZDdjZDQyLi44YjhkOTBjYmY1M2Vl
ODU3MzRhOTc3YjBjMzMyZjZiNDgzZjgyZjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9KU1dBU01Nb2R1bGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL0pTV0FTTU1vZHVsZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKIAorI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0
aW9uLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCiAKQEAgLTM1LDYgKzM2LDEz
IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gSlNXQVNNTW9kdWxlOjpzX2lu
Zm8gPSB7ICJXQVNNTW9kdWxlIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU1dBU01Nb2R1bGUpIH07CiAKK0pTV0FTTU1vZHVsZTo6SlNXQVNNTW9kdWxlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTQXJyYXlCdWZmZXIqIGFycmF5QnVmZmVyKQorICAgIDog
QmFzZSh2bSwgc3RydWN0dXJlKQoreworICAgIGlmIChhcnJheUJ1ZmZlcikKKyAgICAgICAgbV9h
cnJheUJ1ZmZlci5zZXQodm0sIHRoaXMsIGFycmF5QnVmZmVyKTsKK30KKwogdm9pZCBKU1dBU01N
b2R1bGU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogewogICAgIEpTV0FTTU1vZHVsZSogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU1dBU01Nb2R1bGUqPihjZWxsKTsKQEAgLTQ2LDYgKzU0LDcgQEAgdm9p
ZCBKU1dBU01Nb2R1bGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKICAgICBKU1dBU01Nb2R1bGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNXQVNNTW9k
dWxlKj4oY2VsbCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBp
bmZvKCkpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Cisg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fYXJyYXlCdWZmZXIpOwogICAgIGZvciAo
YXV0byBmdW5jdGlvbiA6IHRoaXNPYmplY3QtPm1fZnVuY3Rpb25zKQogICAgICAgICB2aXNpdG9y
LmFwcGVuZCgmZnVuY3Rpb24pOwogICAgIGZvciAoYXV0byBpbXBvcnRlZEZ1bmN0aW9uIDogdGhp
c09iamVjdC0+bV9pbXBvcnRlZEZ1bmN0aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL0pTV0FTTU1vZHVsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
SlNXQVNNTW9kdWxlLmgKaW5kZXggYzYzYjU4NTc1MjEyODAxNGQ0YzhjMjBhOWE2NGVmNDM1ZmFk
YzA2Zi4uMmQxNjc5MWNjNTQ3YTgyZTMzMTY3NGJjMWUzZDQ2OTQ4ZWY1MDE3MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vSlNXQVNNTW9kdWxlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vSlNXQVNNTW9kdWxlLmgKQEAgLTU2LDkgKzU2LDkgQEAgcHVi
bGljOgogICAgICAgICBkb3VibGUgZG91YmxlVmFsdWU7CiAgICAgfTsKIAotICAgIHN0YXRpYyBK
U1dBU01Nb2R1bGUqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHN0
YXRpYyBKU1dBU01Nb2R1bGUqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U0FycmF5QnVmZmVyKiBhcnJheUJ1ZmZlcikKICAgICB7Ci0gICAgICAgIEpTV0FTTU1vZHVsZSog
bW9kdWxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXQVNNTW9kdWxlPih2bS5oZWFw
KSkgSlNXQVNNTW9kdWxlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBKU1dBU01Nb2R1bGUqIG1v
ZHVsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV0FTTU1vZHVsZT4odm0uaGVhcCkp
IEpTV0FTTU1vZHVsZSh2bSwgc3RydWN0dXJlLCBhcnJheUJ1ZmZlcik7CiAgICAgICAgIG1vZHVs
ZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gbW9kdWxlOwogICAgIH0KQEAg
LTgzLDYgKzgzLDcgQEAgcHVibGljOgogICAgIFZlY3RvcjxXQVNNRnVuY3Rpb25EZWNsYXJhdGlv
bj4mIGZ1bmN0aW9uRGVjbGFyYXRpb25zKCkgeyByZXR1cm4gbV9mdW5jdGlvbkRlY2xhcmF0aW9u
czsgfQogICAgIFZlY3RvcjxXQVNNRnVuY3Rpb25Qb2ludGVyVGFibGU+JiBmdW5jdGlvblBvaW50
ZXJUYWJsZXMoKSB7IHJldHVybiBtX2Z1bmN0aW9uUG9pbnRlclRhYmxlczsgfQogCisgICAgY29u
c3QgSlNBcnJheUJ1ZmZlciogYXJyYXlCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2FycmF5QnVm
ZmVyLmdldCgpOyB9CiAgICAgVmVjdG9yPFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPj4mIGZ1bmN0
aW9ucygpIHsgcmV0dXJuIG1fZnVuY3Rpb25zOyB9CiAgICAgVmVjdG9yPHVuc2lnbmVkPiYgZnVu
Y3Rpb25TdGFydE9mZnNldHNJblNvdXJjZSgpIHsgcmV0dXJuIG1fZnVuY3Rpb25TdGFydE9mZnNl
dHNJblNvdXJjZTsgfQogICAgIFZlY3Rvcjx1bnNpZ25lZD4mIGZ1bmN0aW9uU3RhY2tIZWlnaHRz
KCkgeyByZXR1cm4gbV9mdW5jdGlvblN0YWNrSGVpZ2h0czsgfQpAQCAtOTAsMTAgKzkxLDcgQEAg
cHVibGljOgogICAgIFZlY3RvcjxXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4+JiBpbXBvcnRlZEZ1
bmN0aW9ucygpIHsgcmV0dXJuIG1faW1wb3J0ZWRGdW5jdGlvbnM7IH0KIAogcHJpdmF0ZToKLSAg
ICBKU1dBU01Nb2R1bGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICAgICAgOiBC
YXNlKHZtLCBzdHJ1Y3R1cmUpCi0gICAgewotICAgIH0KKyAgICBKU1dBU01Nb2R1bGUoVk0mLCBT
dHJ1Y3R1cmUqLCBKU0FycmF5QnVmZmVyKik7CiAKICAgICBWZWN0b3I8dWludDMyX3Q+IG1faTMy
Q29uc3RhbnRzOwogICAgIFZlY3RvcjxmbG9hdD4gbV9mMzJDb25zdGFudHM7CkBAIC0xMDUsNiAr
MTAzLDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8V0FTTUZ1bmN0aW9uRGVjbGFyYXRpb24+IG1f
ZnVuY3Rpb25EZWNsYXJhdGlvbnM7CiAgICAgVmVjdG9yPFdBU01GdW5jdGlvblBvaW50ZXJUYWJs
ZT4gbV9mdW5jdGlvblBvaW50ZXJUYWJsZXM7CiAKKyAgICBXcml0ZUJhcnJpZXI8SlNBcnJheUJ1
ZmZlcj4gbV9hcnJheUJ1ZmZlcjsKICAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+
PiBtX2Z1bmN0aW9uczsKICAgICBWZWN0b3I8dW5zaWduZWQ+IG1fZnVuY3Rpb25TdGFydE9mZnNl
dHNJblNvdXJjZTsKICAgICBWZWN0b3I8dW5zaWduZWQ+IG1fZnVuY3Rpb25TdGFja0hlaWdodHM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQ29uc3RhbnRzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNQ29uc3RhbnRzLmgKaW5kZXggMWI5OTQ1
ZTFhYzk2MDkxOGUxMjNhYmVkZGI1ZWZkMzU3YjVmYjE5OS4uNWJiZTg3ODdlNjcxZmIzNjkyZTgw
YmIxNWE0ODQwNmI2MDgxOWVlNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV0FTTUNvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01D
b25zdGFudHMuaApAQCAtMjg0LDYgKzI4NCwxNyBAQCBlbnVtIGNsYXNzIFdBU01FeHBvcnRGb3Jt
YXQgOiB1aW50OF90IHsKICAgICBOdW1iZXJPZkV4cG9ydEZvcm1hdHMKIH07CiAKK2VudW0gY2xh
c3MgV0FTTU1lbW9yeVR5cGUgeworICAgIEk4LAorICAgIEkxNiwKKyAgICBJMzIsCisgICAgRjMy
LAorICAgIEY2NAorfTsKKworZW51bSBjbGFzcyBNZW1vcnlBY2Nlc3NPZmZzZXRNb2RlIHsgTm9P
ZmZzZXQsIFdpdGhPZmZzZXQgfTsKK2VudW0gY2xhc3MgTWVtb3J5QWNjZXNzQ29udmVyc2lvbiB7
IE5vQ29udmVyc2lvbiwgU2lnbkV4dGVuZCwgWmVyb0V4dGVuZCB9OworCiBzdGF0aWMgY29uc3Qg
dWludDhfdCBoYXNJbW1lZGlhdGVJbk9wRmxhZyA9IDB4ODA7CiAKIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBvcFdpdGhJbW1lZGlhdGVCaXRzID0gMjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dBU01GdW5jdGlvbkNvbXBpbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XQVNNRnVuY3Rpb25Db21waWxlci5oCmluZGV4IDhhMmIxZGRhZTgxMjEzMjkxOThl
NTZkZmY1ODcwMDYwNWY3Mjg4MTMuLjRhZjVmZWY3NWQ0OWUxMjE5NzE1ODE1ZjAyNDlhNDJjMmU3
MGJlODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlv
bkNvbXBpbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9u
Q29tcGlsZXIuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgog
I2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJK
U0FycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIk1heEZy
YW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmgiCiAKQEAgLTcxLDExICs3MiwzNiBAQCBzdGF0aWMg
dWludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25VbnNpZ25lZE1vZCh1aW50MzJfdCBsZWZ0
LCB1aW50MzJfdCByaWdodAogfQogI2VuZGlmCiAKK3N0YXRpYyBzaXplX3Qgc2l6ZU9mTWVtb3J5
VHlwZShXQVNNTWVtb3J5VHlwZSBtZW1vcnlUeXBlKQoreworICAgIHN3aXRjaCAobWVtb3J5VHlw
ZSkgeworICAgIGNhc2UgV0FTTU1lbW9yeVR5cGU6Okk4OgorICAgICAgICByZXR1cm4gMTsKKyAg
ICBjYXNlIFdBU01NZW1vcnlUeXBlOjpJMTY6CisgICAgICAgIHJldHVybiAyOworICAgIGNhc2Ug
V0FTTU1lbW9yeVR5cGU6OkkzMjoKKyAgICBjYXNlIFdBU01NZW1vcnlUeXBlOjpGMzI6CisgICAg
ICAgIHJldHVybiA0OworICAgIGNhc2UgV0FTTU1lbW9yeVR5cGU6OkY2NDoKKyAgICAgICAgcmV0
dXJuIDg7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
fQorfQorCiBjbGFzcyBXQVNNRnVuY3Rpb25Db21waWxlciA6IHByaXZhdGUgQ0NhbGxIZWxwZXJz
IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIGludCBFeHByZXNzaW9uOwogICAgIHR5cGVkZWYgaW50
IFN0YXRlbWVudDsKICAgICB0eXBlZGVmIGludCBFeHByZXNzaW9uTGlzdDsKKyAgICBzdHJ1Y3Qg
TWVtb3J5QWRkcmVzcyB7CisgICAgICAgIE1lbW9yeUFkZHJlc3Modm9pZCopIHsgfQorICAgICAg
ICBNZW1vcnlBZGRyZXNzKGludCwgdWludDMyX3Qgb2Zmc2V0KQorICAgICAgICAgICAgOiBvZmZz
ZXQob2Zmc2V0KQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgdWludDMyX3Qgb2Zmc2V0
OworICAgIH07CiAgICAgc3RydWN0IEp1bXBUYXJnZXQgewogICAgICAgICBMYWJlbCBsYWJlbDsK
ICAgICAgICAgSnVtcExpc3QganVtcExpc3Q7CkBAIC0xOTIsNiArMjE4LDEzIEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uVGhyb3dE
aXZpZGVFcnJvcik7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoIW1fb3V0T2ZCb3VuZHNFcnJv
ckp1bXBMaXN0LmVtcHR5KCkpIHsKKyAgICAgICAgICAgIG1fb3V0T2ZCb3VuZHNFcnJvckp1bXBM
aXN0LmxpbmsodGhpcyk7CisKKyAgICAgICAgICAgIHNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCk7
CisgICAgICAgICAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvblRocm93
T3V0T2ZCb3VuZHNBY2Nlc3NFcnJvcik7CisgICAgICAgIH0KKwogICAgICAgICBpZiAoIW1fZXhj
ZXB0aW9uQ2hlY2tzLmVtcHR5KCkpIHsKICAgICAgICAgICAgIG1fZXhjZXB0aW9uQ2hlY2tzLmxp
bmsodGhpcyk7CiAKQEAgLTM2OCw2ICs0MDEsMTE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IFVOVVNFRDsKICAgICB9CiAKKyAgICBpbnQgYnVpbGRMb2FkKGNvbnN0IE1lbW9yeUFkZHJlc3Mm
IG1lbW9yeUFkZHJlc3MsIFdBU01FeHByZXNzaW9uVHlwZSBleHByZXNzaW9uVHlwZSwgV0FTTU1l
bW9yeVR5cGUgbWVtb3J5VHlwZSwgTWVtb3J5QWNjZXNzQ29udmVyc2lvbiBjb252ZXJzaW9uKQor
ICAgIHsKKyAgICAgICAgY29uc3QgQXJyYXlCdWZmZXIqIGFycmF5QnVmZmVyID0gbV9tb2R1bGUt
PmFycmF5QnVmZmVyKCktPmltcGwoKTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFycmF5
QnVmZmVyLT5kYXRhKCkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgIGxvYWQzMih0ZW1wb3Jh
cnlBZGRyZXNzKG1fdGVtcFN0YWNrVG9wIC0gMSksIEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAg
aWYgKG1lbW9yeUFkZHJlc3Mub2Zmc2V0KQorICAgICAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMy
KG1lbW9yeUFkZHJlc3Mub2Zmc2V0KSwgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QxKTsK
KyAgICAgICAgYW5kMzIoVHJ1c3RlZEltbTMyKH4oc2l6ZU9mTWVtb3J5VHlwZShtZW1vcnlUeXBl
KSAtIDEpKSwgR1BSSW5mbzo6cmVnVDEpOworCisgICAgICAgIEFTU0VSVChhcnJheUJ1ZmZlci0+
Ynl0ZUxlbmd0aCgpIDwgKHVuc2lnbmVkKSgxIDw8IDMxKSk7CisgICAgICAgIGlmIChhcnJheUJ1
ZmZlci0+Ynl0ZUxlbmd0aCgpID49IHNpemVPZk1lbW9yeVR5cGUobWVtb3J5VHlwZSkpCisgICAg
ICAgICAgICBtX291dE9mQm91bmRzRXJyb3JKdW1wTGlzdC5hcHBlbmQoYnJhbmNoMzIoQWJvdmUs
IEdQUkluZm86OnJlZ1QxLCBUcnVzdGVkSW1tMzIoYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSAt
IHNpemVPZk1lbW9yeVR5cGUobWVtb3J5VHlwZSkpKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIG1fb3V0T2ZCb3VuZHNFcnJvckp1bXBMaXN0LmFwcGVuZChqdW1wKCkpOworCisgICAgICAg
IEJhc2VJbmRleCBhZGRyZXNzID0gQmFzZUluZGV4KEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpy
ZWdUMSwgVGltZXNPbmUpOworCisgICAgICAgIHN3aXRjaCAoZXhwcmVzc2lvblR5cGUpIHsKKyAg
ICAgICAgY2FzZSBXQVNNRXhwcmVzc2lvblR5cGU6OkkzMjoKKyAgICAgICAgICAgIHN3aXRjaCAo
bWVtb3J5VHlwZSkgeworICAgICAgICAgICAgY2FzZSBXQVNNTWVtb3J5VHlwZTo6STg6CisgICAg
ICAgICAgICAgICAgaWYgKGNvbnZlcnNpb24gPT0gTWVtb3J5QWNjZXNzQ29udmVyc2lvbjo6U2ln
bkV4dGVuZCkKKyAgICAgICAgICAgICAgICAgICAgbG9hZDhTaWduZWRFeHRlbmRUbzMyKGFkZHJl
c3MsIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKGNvbnZlcnNpb24gPT0gTWVtb3J5QWNjZXNzQ29udmVyc2lvbjo6WmVy
b0V4dGVuZCk7CisgICAgICAgICAgICAgICAgICAgIGxvYWQ4KGFkZHJlc3MsIEdQUkluZm86OnJl
Z1QwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIFdBU01NZW1vcnlUeXBlOjpJMTY6CisgICAgICAgICAgICAgICAgaWYgKGNvbnZl
cnNpb24gPT0gTWVtb3J5QWNjZXNzQ29udmVyc2lvbjo6U2lnbkV4dGVuZCkKKyAgICAgICAgICAg
ICAgICAgICAgbG9hZDE2U2lnbmVkRXh0ZW5kVG8zMihhZGRyZXNzLCBHUFJJbmZvOjpyZWdUMCk7
CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChjb252
ZXJzaW9uID09IE1lbW9yeUFjY2Vzc0NvbnZlcnNpb246Olplcm9FeHRlbmQpOworICAgICAgICAg
ICAgICAgICAgICBsb2FkMTYoYWRkcmVzcywgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV0FTTU1lbW9y
eVR5cGU6OkkzMjoKKyAgICAgICAgICAgICAgICBsb2FkMzIoYWRkcmVzcywgR1BSSW5mbzo6cmVn
VDApOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHN0b3JlMzIoR1BSSW5mbzo6cmVnVDAsIHRlbXBvcmFyeUFkZHJlc3MobV90ZW1wU3RhY2tU
b3AgLSAxKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXQVNNRXhwcmVzc2lv
blR5cGU6OkYzMjoKKyAgICAgICAgICAgIEFTU0VSVChtZW1vcnlUeXBlID09IFdBU01NZW1vcnlU
eXBlOjpGMzIgJiYgY29udmVyc2lvbiA9PSBNZW1vcnlBY2Nlc3NDb252ZXJzaW9uOjpOb0NvbnZl
cnNpb24pOworICAgICAgICAgICAgbG9hZDMyKGFkZHJlc3MsIEdQUkluZm86OnJlZ1QwKTsKKyAg
ICAgICAgICAgIHN0b3JlMzIoR1BSSW5mbzo6cmVnVDAsIHRlbXBvcmFyeUFkZHJlc3MobV90ZW1w
U3RhY2tUb3AgLSAxKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXQVNNRXhw
cmVzc2lvblR5cGU6OkY2NDoKKyAgICAgICAgICAgIEFTU0VSVChtZW1vcnlUeXBlID09IFdBU01N
ZW1vcnlUeXBlOjpGNjQgJiYgY29udmVyc2lvbiA9PSBNZW1vcnlBY2Nlc3NDb252ZXJzaW9uOjpO
b0NvbnZlcnNpb24pOworICAgICAgICAgICAgbG9hZERvdWJsZShhZGRyZXNzLCBGUFJJbmZvOjpm
cFJlZ1QwKTsKKyAgICAgICAgICAgIHN0b3JlRG91YmxlKEZQUkluZm86OmZwUmVnVDAsIHRlbXBv
cmFyeUFkZHJlc3MobV90ZW1wU3RhY2tUb3AgLSAxKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiBVTlVTRUQ7CisgICAgfQorCisgICAgaW50IGJ1aWxkU3RvcmUo
Y29uc3QgTWVtb3J5QWRkcmVzcyYgbWVtb3J5QWRkcmVzcywgV0FTTUV4cHJlc3Npb25UeXBlIGV4
cHJlc3Npb25UeXBlLCBXQVNNTWVtb3J5VHlwZSBtZW1vcnlUeXBlLCBpbnQpCisgICAgeworICAg
ICAgICBjb25zdCBBcnJheUJ1ZmZlciogYXJyYXlCdWZmZXIgPSBtX21vZHVsZS0+YXJyYXlCdWZm
ZXIoKS0+aW1wbCgpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYXJyYXlCdWZmZXItPmRh
dGEoKSksIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgbG9hZDMyKHRlbXBvcmFyeUFkZHJlc3Mo
bV90ZW1wU3RhY2tUb3AgLSAyKSwgR1BSSW5mbzo6cmVnVDEpOworICAgICAgICBpZiAobWVtb3J5
QWRkcmVzcy5vZmZzZXQpCisgICAgICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIobWVtb3J5QWRk
cmVzcy5vZmZzZXQpLCBHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDEpOworICAgICAgICBh
bmQzMihUcnVzdGVkSW1tMzIofihzaXplT2ZNZW1vcnlUeXBlKG1lbW9yeVR5cGUpIC0gMSkpLCBH
UFJJbmZvOjpyZWdUMSk7CisKKyAgICAgICAgQVNTRVJUKGFycmF5QnVmZmVyLT5ieXRlTGVuZ3Ro
KCkgPCAoMXUgPDwgMzEpKTsKKyAgICAgICAgaWYgKGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkg
Pj0gc2l6ZU9mTWVtb3J5VHlwZShtZW1vcnlUeXBlKSkKKyAgICAgICAgICAgIG1fb3V0T2ZCb3Vu
ZHNFcnJvckp1bXBMaXN0LmFwcGVuZChicmFuY2gzMihBYm92ZSwgR1BSSW5mbzo6cmVnVDEsIFRy
dXN0ZWRJbW0zMihhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpIC0gc2l6ZU9mTWVtb3J5VHlwZSht
ZW1vcnlUeXBlKSkpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9vdXRPZkJvdW5kc0Vy
cm9ySnVtcExpc3QuYXBwZW5kKGp1bXAoKSk7CisKKyAgICAgICAgQmFzZUluZGV4IGFkZHJlc3Mg
PSBCYXNlSW5kZXgoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxLCBUaW1lc09uZSk7CisK
KyAgICAgICAgc3dpdGNoIChleHByZXNzaW9uVHlwZSkgeworICAgICAgICBjYXNlIFdBU01FeHBy
ZXNzaW9uVHlwZTo6STMyOgorICAgICAgICAgICAgbG9hZDMyKHRlbXBvcmFyeUFkZHJlc3MobV90
ZW1wU3RhY2tUb3AgLSAxKSwgR1BSSW5mbzo6cmVnVDIpOworICAgICAgICAgICAgc3dpdGNoICht
ZW1vcnlUeXBlKSB7CisgICAgICAgICAgICBjYXNlIFdBU01NZW1vcnlUeXBlOjpJODoKKyAgICAg
ICAgICAgICAgICBzdG9yZTgoR1BSSW5mbzo6cmVnVDIsIGFkZHJlc3MpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXQVNNTWVtb3J5VHlwZTo6STE2OgorICAgICAg
ICAgICAgICAgIHN0b3JlMTYoR1BSSW5mbzo6cmVnVDIsIGFkZHJlc3MpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBXQVNNTWVtb3J5VHlwZTo6STMyOgorICAgICAg
ICAgICAgICAgIHN0b3JlMzIoR1BSSW5mbzo6cmVnVDIsIGFkZHJlc3MpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIFdBU01FeHByZXNzaW9uVHlwZTo6RjMyOgorICAgICAgICAgICAgQVNTRVJUKG1lbW9y
eVR5cGUgPT0gV0FTTU1lbW9yeVR5cGU6OkYzMik7CisgICAgICAgICAgICBsb2FkMzIodGVtcG9y
YXJ5QWRkcmVzcyhtX3RlbXBTdGFja1RvcCAtIDEpLCBHUFJJbmZvOjpyZWdUMik7CisgICAgICAg
ICAgICBzdG9yZTMyKEdQUkluZm86OnJlZ1QyLCBhZGRyZXNzKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFdBU01FeHByZXNzaW9uVHlwZTo6RjY0OgorICAgICAgICAgICAgQVNT
RVJUKG1lbW9yeVR5cGUgPT0gV0FTTU1lbW9yeVR5cGU6OkY2NCk7CisgICAgICAgICAgICBsb2Fk
RG91YmxlKHRlbXBvcmFyeUFkZHJlc3MobV90ZW1wU3RhY2tUb3AgLSAxKSwgRlBSSW5mbzo6ZnBS
ZWdUMCk7CisgICAgICAgICAgICBzdG9yZURvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBhZGRyZXNz
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgbV90ZW1wU3RhY2tUb3AgLT0g
MjsKKyAgICAgICAgcmV0dXJuIFVOVVNFRDsKKyAgICB9CisKICAgICBpbnQgYnVpbGRVbmFyeUkz
MihpbnQsIFdBU01PcEV4cHJlc3Npb25JMzIgb3ApCiAgICAgewogICAgICAgICBsb2FkMzIodGVt
cG9yYXJ5QWRkcmVzcyhtX3RlbXBTdGFja1RvcCAtIDEpLCBHUFJJbmZvOjpyZWdUMCk7CkBAIC0x
MTEyLDYgKzEyNTYsNyBAQCBwcml2YXRlOgogICAgIExhYmVsIG1fYmVnaW5MYWJlbDsKICAgICBK
dW1wIG1fc3RhY2tPdmVyZmxvdzsKICAgICBKdW1wTGlzdCBtX2RpdmlkZUVycm9ySnVtcExpc3Q7
CisgICAgSnVtcExpc3QgbV9vdXRPZkJvdW5kc0Vycm9ySnVtcExpc3Q7CiAgICAgSnVtcExpc3Qg
bV9leGNlcHRpb25DaGVja3M7CiAKICAgICBWZWN0b3I8c3RkOjpwYWlyPENhbGwsIHZvaWQqPj4g
bV9jYWxsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5j
dGlvblBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNRnVuY3Rpb25Q
YXJzZXIuY3BwCmluZGV4IDA3OTU1ZTE3YzhhNWMwYTYxMzA5MDlhOTc2MzllN2RlZjFmMzdkYjUu
LjU3ZTUzNGI1YjgyYTNmYjJlMDkzYTkxOGZkMmU0MWVkMjcxMmZlZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmNwcApAQCAtMTQzLDYg
KzE0MywzNiBAQCBDb250ZXh0U3RhdGVtZW50IFdBU01GdW5jdGlvblBhcnNlcjo6cGFyc2VTdGF0
ZW1lbnQoQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6OlNl
dEdsb2JhbDoKICAgICAgICAgICAgIHBhcnNlU2V0R2xvYmFsU3RhdGVtZW50KGNvbnRleHQpOwog
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50OjpJMzJTdG9y
ZTg6CisgICAgICAgICAgICBwYXJzZVN0b3JlKGNvbnRleHQsIFdBU01FeHByZXNzaW9uVHlwZTo6
STMyLCBXQVNNTWVtb3J5VHlwZTo6STgsIE1lbW9yeUFjY2Vzc09mZnNldE1vZGU6Ok5vT2Zmc2V0
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6STMy
U3RvcmVXaXRoT2Zmc2V0ODoKKyAgICAgICAgICAgIHBhcnNlU3RvcmUoY29udGV4dCwgV0FTTUV4
cHJlc3Npb25UeXBlOjpJMzIsIFdBU01NZW1vcnlUeXBlOjpJOCwgTWVtb3J5QWNjZXNzT2Zmc2V0
TW9kZTo6V2l0aE9mZnNldCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXQVNN
T3BTdGF0ZW1lbnQ6OkkzMlN0b3JlMTY6CisgICAgICAgICAgICBwYXJzZVN0b3JlKGNvbnRleHQs
IFdBU01FeHByZXNzaW9uVHlwZTo6STMyLCBXQVNNTWVtb3J5VHlwZTo6STE2LCBNZW1vcnlBY2Nl
c3NPZmZzZXRNb2RlOjpOb09mZnNldCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBXQVNNT3BTdGF0ZW1lbnQ6OkkzMlN0b3JlV2l0aE9mZnNldDE2OgorICAgICAgICAgICAgcGFy
c2VTdG9yZShjb250ZXh0LCBXQVNNRXhwcmVzc2lvblR5cGU6OkkzMiwgV0FTTU1lbW9yeVR5cGU6
OkkxNiwgTWVtb3J5QWNjZXNzT2Zmc2V0TW9kZTo6V2l0aE9mZnNldCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6OkkzMlN0b3JlMzI6CisgICAgICAg
ICAgICBwYXJzZVN0b3JlKGNvbnRleHQsIFdBU01FeHByZXNzaW9uVHlwZTo6STMyLCBXQVNNTWVt
b3J5VHlwZTo6STMyLCBNZW1vcnlBY2Nlc3NPZmZzZXRNb2RlOjpOb09mZnNldCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6OkkzMlN0b3JlV2l0aE9m
ZnNldDMyOgorICAgICAgICAgICAgcGFyc2VTdG9yZShjb250ZXh0LCBXQVNNRXhwcmVzc2lvblR5
cGU6OkkzMiwgV0FTTU1lbW9yeVR5cGU6OkkzMiwgTWVtb3J5QWNjZXNzT2Zmc2V0TW9kZTo6V2l0
aE9mZnNldCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1l
bnQ6OkYzMlN0b3JlOgorICAgICAgICAgICAgcGFyc2VTdG9yZShjb250ZXh0LCBXQVNNRXhwcmVz
c2lvblR5cGU6OkYzMiwgV0FTTU1lbW9yeVR5cGU6OkYzMiwgTWVtb3J5QWNjZXNzT2Zmc2V0TW9k
ZTo6Tm9PZmZzZXQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0FTTU9wU3Rh
dGVtZW50OjpGMzJTdG9yZVdpdGhPZmZzZXQ6CisgICAgICAgICAgICBwYXJzZVN0b3JlKGNvbnRl
eHQsIFdBU01FeHByZXNzaW9uVHlwZTo6RjMyLCBXQVNNTWVtb3J5VHlwZTo6RjMyLCBNZW1vcnlB
Y2Nlc3NPZmZzZXRNb2RlOjpXaXRoT2Zmc2V0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIFdBU01PcFN0YXRlbWVudDo6RjY0U3RvcmU6CisgICAgICAgICAgICBwYXJzZVN0b3Jl
KGNvbnRleHQsIFdBU01FeHByZXNzaW9uVHlwZTo6RjY0LCBXQVNNTWVtb3J5VHlwZTo6RjY0LCBN
ZW1vcnlBY2Nlc3NPZmZzZXRNb2RlOjpOb09mZnNldCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6OkY2NFN0b3JlV2l0aE9mZnNldDoKKyAgICAgICAg
ICAgIHBhcnNlU3RvcmUoY29udGV4dCwgV0FTTUV4cHJlc3Npb25UeXBlOjpGNjQsIFdBU01NZW1v
cnlUeXBlOjpGNjQsIE1lbW9yeUFjY2Vzc09mZnNldE1vZGU6OldpdGhPZmZzZXQpOworICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50OjpSZXR1cm46CiAgICAg
ICAgICAgICBwYXJzZVJldHVyblN0YXRlbWVudChjb250ZXh0KTsKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMTc5LDE2ICsyMDksNiBAQCBDb250ZXh0U3RhdGVtZW50IFdBU01GdW5jdGlvblBhcnNl
cjo6cGFyc2VTdGF0ZW1lbnQoQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgY2FzZSBXQVNNT3BT
dGF0ZW1lbnQ6OlN3aXRjaDoKICAgICAgICAgICAgIHBhcnNlU3dpdGNoU3RhdGVtZW50KGNvbnRl
eHQpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50OjpJ
MzJTdG9yZTg6Ci0gICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50OjpJMzJTdG9yZVdpdGhPZmZz
ZXQ4OgotICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6STMyU3RvcmUxNjoKLSAgICAgICAg
Y2FzZSBXQVNNT3BTdGF0ZW1lbnQ6OkkzMlN0b3JlV2l0aE9mZnNldDE2OgotICAgICAgICBjYXNl
IFdBU01PcFN0YXRlbWVudDo6STMyU3RvcmUzMjoKLSAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1l
bnQ6OkkzMlN0b3JlV2l0aE9mZnNldDMyOgotICAgICAgICBjYXNlIFdBU01PcFN0YXRlbWVudDo6
RjMyU3RvcmU6Ci0gICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50OjpGMzJTdG9yZVdpdGhPZmZz
ZXQ6Ci0gICAgICAgIGNhc2UgV0FTTU9wU3RhdGVtZW50OjpGNjRTdG9yZToKLSAgICAgICAgY2Fz
ZSBXQVNNT3BTdGF0ZW1lbnQ6OkY2NFN0b3JlV2l0aE9mZnNldDoKICAgICAgICAgY2FzZSBXQVNN
T3BTdGF0ZW1lbnQ6OkNhbGxJbnRlcm5hbDoKICAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6
OkNhbGxJbmRpcmVjdDoKICAgICAgICAgY2FzZSBXQVNNT3BTdGF0ZW1lbnQ6OkNhbGxJbXBvcnQ6
CkBAIC01MjgsNiArNTQ4LDI2IEBAIENvbnRleHRFeHByZXNzaW9uIFdBU01GdW5jdGlvblBhcnNl
cjo6cGFyc2VFeHByZXNzaW9uSTMyKENvbnRleHQmIGNvbnRleHQpCiAgICAgICAgICAgICByZXR1
cm4gcGFyc2VHZXRMb2NhbEV4cHJlc3Npb25JMzIoY29udGV4dCk7CiAgICAgICAgIGNhc2UgV0FT
TU9wRXhwcmVzc2lvbkkzMjo6R2V0R2xvYmFsOgogICAgICAgICAgICAgcmV0dXJuIHBhcnNlR2V0
R2xvYmFsRXhwcmVzc2lvbkkzMihjb250ZXh0KTsKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNz
aW9uSTMyOjpTTG9hZDg6CisgICAgICAgICAgICByZXR1cm4gcGFyc2VMb2FkKGNvbnRleHQsIFdB
U01FeHByZXNzaW9uVHlwZTo6STMyLCBXQVNNTWVtb3J5VHlwZTo6STgsIE1lbW9yeUFjY2Vzc09m
ZnNldE1vZGU6Ok5vT2Zmc2V0LCBNZW1vcnlBY2Nlc3NDb252ZXJzaW9uOjpTaWduRXh0ZW5kKTsK
KyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpTTG9hZFdpdGhPZmZzZXQ4OgorICAg
ICAgICAgICAgcmV0dXJuIHBhcnNlTG9hZChjb250ZXh0LCBXQVNNRXhwcmVzc2lvblR5cGU6Okkz
MiwgV0FTTU1lbW9yeVR5cGU6Okk4LCBNZW1vcnlBY2Nlc3NPZmZzZXRNb2RlOjpXaXRoT2Zmc2V0
LCBNZW1vcnlBY2Nlc3NDb252ZXJzaW9uOjpTaWduRXh0ZW5kKTsKKyAgICAgICAgY2FzZSBXQVNN
T3BFeHByZXNzaW9uSTMyOjpVTG9hZDg6CisgICAgICAgICAgICByZXR1cm4gcGFyc2VMb2FkKGNv
bnRleHQsIFdBU01FeHByZXNzaW9uVHlwZTo6STMyLCBXQVNNTWVtb3J5VHlwZTo6STgsIE1lbW9y
eUFjY2Vzc09mZnNldE1vZGU6Ok5vT2Zmc2V0LCBNZW1vcnlBY2Nlc3NDb252ZXJzaW9uOjpaZXJv
RXh0ZW5kKTsKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpVTG9hZFdpdGhPZmZz
ZXQ4OgorICAgICAgICAgICAgcmV0dXJuIHBhcnNlTG9hZChjb250ZXh0LCBXQVNNRXhwcmVzc2lv
blR5cGU6OkkzMiwgV0FTTU1lbW9yeVR5cGU6Okk4LCBNZW1vcnlBY2Nlc3NPZmZzZXRNb2RlOjpX
aXRoT2Zmc2V0LCBNZW1vcnlBY2Nlc3NDb252ZXJzaW9uOjpaZXJvRXh0ZW5kKTsKKyAgICAgICAg
Y2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpTTG9hZDE2OgorICAgICAgICAgICAgcmV0dXJuIHBh
cnNlTG9hZChjb250ZXh0LCBXQVNNRXhwcmVzc2lvblR5cGU6OkkzMiwgV0FTTU1lbW9yeVR5cGU6
OkkxNiwgTWVtb3J5QWNjZXNzT2Zmc2V0TW9kZTo6Tm9PZmZzZXQsIE1lbW9yeUFjY2Vzc0NvbnZl
cnNpb246OlNpZ25FeHRlbmQpOworICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlNM
b2FkV2l0aE9mZnNldDE2OgorICAgICAgICAgICAgcmV0dXJuIHBhcnNlTG9hZChjb250ZXh0LCBX
QVNNRXhwcmVzc2lvblR5cGU6OkkzMiwgV0FTTU1lbW9yeVR5cGU6OkkxNiwgTWVtb3J5QWNjZXNz
T2Zmc2V0TW9kZTo6V2l0aE9mZnNldCwgTWVtb3J5QWNjZXNzQ29udmVyc2lvbjo6U2lnbkV4dGVu
ZCk7CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6VUxvYWQxNjoKKyAgICAgICAg
ICAgIHJldHVybiBwYXJzZUxvYWQoY29udGV4dCwgV0FTTUV4cHJlc3Npb25UeXBlOjpJMzIsIFdB
U01NZW1vcnlUeXBlOjpJMTYsIE1lbW9yeUFjY2Vzc09mZnNldE1vZGU6Ok5vT2Zmc2V0LCBNZW1v
cnlBY2Nlc3NDb252ZXJzaW9uOjpaZXJvRXh0ZW5kKTsKKyAgICAgICAgY2FzZSBXQVNNT3BFeHBy
ZXNzaW9uSTMyOjpVTG9hZFdpdGhPZmZzZXQxNjoKKyAgICAgICAgICAgIHJldHVybiBwYXJzZUxv
YWQoY29udGV4dCwgV0FTTUV4cHJlc3Npb25UeXBlOjpJMzIsIFdBU01NZW1vcnlUeXBlOjpJMTYs
IE1lbW9yeUFjY2Vzc09mZnNldE1vZGU6OldpdGhPZmZzZXQsIE1lbW9yeUFjY2Vzc0NvbnZlcnNp
b246Olplcm9FeHRlbmQpOworICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OkxvYWQz
MjoKKyAgICAgICAgICAgIHJldHVybiBwYXJzZUxvYWQoY29udGV4dCwgV0FTTUV4cHJlc3Npb25U
eXBlOjpJMzIsIFdBU01NZW1vcnlUeXBlOjpJMzIsIE1lbW9yeUFjY2Vzc09mZnNldE1vZGU6Ok5v
T2Zmc2V0KTsKKyAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpMb2FkV2l0aE9mZnNl
dDMyOgorICAgICAgICAgICAgcmV0dXJuIHBhcnNlTG9hZChjb250ZXh0LCBXQVNNRXhwcmVzc2lv
blR5cGU6OkkzMiwgV0FTTU1lbW9yeVR5cGU6OkkzMiwgTWVtb3J5QWNjZXNzT2Zmc2V0TW9kZTo6
V2l0aE9mZnNldCk7CiAgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6Q2FsbEludGVy
bmFsOgogICAgICAgICAgICAgcmV0dXJuIHBhcnNlQ2FsbEludGVybmFsKGNvbnRleHQsIFdBU01F
eHByZXNzaW9uVHlwZTo6STMyKTsKICAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpD
YWxsSW5kaXJlY3Q6CkBAIC01ODEsMTYgKzYyMSw2IEBAIENvbnRleHRFeHByZXNzaW9uIFdBU01G
dW5jdGlvblBhcnNlcjo6cGFyc2VFeHByZXNzaW9uSTMyKENvbnRleHQmIGNvbnRleHQpCiAgICAg
ICAgICAgICByZXR1cm4gcGFyc2VSZWxhdGlvbmFsRjY0RXhwcmVzc2lvbkkzMihjb250ZXh0LCBv
cCk7CiAgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6U2V0TG9jYWw6CiAgICAgICAg
IGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6U2V0R2xvYmFsOgotICAgICAgICBjYXNlIFdBU01P
cEV4cHJlc3Npb25JMzI6OlNMb2FkODoKLSAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMy
OjpTTG9hZFdpdGhPZmZzZXQ4OgotICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlVM
b2FkODoKLSAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpVTG9hZFdpdGhPZmZzZXQ4
OgotICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25JMzI6OlNMb2FkMTY6Ci0gICAgICAgIGNh
c2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6U0xvYWRXaXRoT2Zmc2V0MTY6Ci0gICAgICAgIGNhc2Ug
V0FTTU9wRXhwcmVzc2lvbkkzMjo6VUxvYWQxNjoKLSAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNz
aW9uSTMyOjpVTG9hZFdpdGhPZmZzZXQxNjoKLSAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9u
STMyOjpMb2FkMzI6Ci0gICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6TG9hZFdpdGhP
ZmZzZXQzMjoKICAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpTdG9yZTg6CiAgICAg
ICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkkzMjo6U3RvcmVXaXRoT2Zmc2V0ODoKICAgICAgICAg
Y2FzZSBXQVNNT3BFeHByZXNzaW9uSTMyOjpTdG9yZTE2OgpAQCAtNzQ2LDYgKzc3NiwxMCBAQCBD
b250ZXh0RXhwcmVzc2lvbiBXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlRXhwcmVzc2lvbkYzMihD
b250ZXh0JiBjb250ZXh0KQogICAgICAgICAgICAgcmV0dXJuIHBhcnNlR2V0TG9jYWxFeHByZXNz
aW9uRjMyKGNvbnRleHQpOwogICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25GMzI6OkdldEds
b2JhbDoKICAgICAgICAgICAgIHJldHVybiBwYXJzZUdldEdsb2JhbEV4cHJlc3Npb25GMzIoY29u
dGV4dCk7CisgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkYzMjo6TG9hZDoKKyAgICAgICAg
ICAgIHJldHVybiBwYXJzZUxvYWQoY29udGV4dCwgV0FTTUV4cHJlc3Npb25UeXBlOjpGMzIsIFdB
U01NZW1vcnlUeXBlOjpGMzIsIE1lbW9yeUFjY2Vzc09mZnNldE1vZGU6Ok5vT2Zmc2V0KTsKKyAg
ICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uRjMyOjpMb2FkV2l0aE9mZnNldDoKKyAgICAgICAg
ICAgIHJldHVybiBwYXJzZUxvYWQoY29udGV4dCwgV0FTTUV4cHJlc3Npb25UeXBlOjpGMzIsIFdB
U01NZW1vcnlUeXBlOjpGMzIsIE1lbW9yeUFjY2Vzc09mZnNldE1vZGU6OldpdGhPZmZzZXQpOwog
ICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25GMzI6OkNhbGxJbnRlcm5hbDoKICAgICAgICAg
ICAgIHJldHVybiBwYXJzZUNhbGxJbnRlcm5hbChjb250ZXh0LCBXQVNNRXhwcmVzc2lvblR5cGU6
OkYzMik7CiAgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkYzMjo6Q2FsbEluZGlyZWN0OgpA
QCAtNzYzLDggKzc5Nyw2IEBAIENvbnRleHRFeHByZXNzaW9uIFdBU01GdW5jdGlvblBhcnNlcjo6
cGFyc2VFeHByZXNzaW9uRjMyKENvbnRleHQmIGNvbnRleHQpCiAgICAgICAgICAgICByZXR1cm4g
cGFyc2VCaW5hcnlFeHByZXNzaW9uRjMyKGNvbnRleHQsIG9wKTsKICAgICAgICAgY2FzZSBXQVNN
T3BFeHByZXNzaW9uRjMyOjpTZXRMb2NhbDoKICAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9u
RjMyOjpTZXRHbG9iYWw6Ci0gICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkYzMjo6TG9hZDoK
LSAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uRjMyOjpMb2FkV2l0aE9mZnNldDoKICAgICAg
ICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uRjMyOjpTdG9yZToKICAgICAgICAgY2FzZSBXQVNNT3BF
eHByZXNzaW9uRjMyOjpTdG9yZVdpdGhPZmZzZXQ6CiAgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVz
c2lvbkYzMjo6Q29uZGl0aW9uYWw6CkBAIC04NzUsNiArOTA3LDEwIEBAIENvbnRleHRFeHByZXNz
aW9uIFdBU01GdW5jdGlvblBhcnNlcjo6cGFyc2VFeHByZXNzaW9uRjY0KENvbnRleHQmIGNvbnRl
eHQpCiAgICAgICAgICAgICByZXR1cm4gcGFyc2VHZXRMb2NhbEV4cHJlc3Npb25GNjQoY29udGV4
dCk7CiAgICAgICAgIGNhc2UgV0FTTU9wRXhwcmVzc2lvbkY2NDo6R2V0R2xvYmFsOgogICAgICAg
ICAgICAgcmV0dXJuIHBhcnNlR2V0R2xvYmFsRXhwcmVzc2lvbkY2NChjb250ZXh0KTsKKyAgICAg
ICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uRjY0OjpMb2FkOgorICAgICAgICAgICAgcmV0dXJuIHBh
cnNlTG9hZChjb250ZXh0LCBXQVNNRXhwcmVzc2lvblR5cGU6OkY2NCwgV0FTTU1lbW9yeVR5cGU6
OkY2NCwgTWVtb3J5QWNjZXNzT2Zmc2V0TW9kZTo6Tm9PZmZzZXQpOworICAgICAgICBjYXNlIFdB
U01PcEV4cHJlc3Npb25GNjQ6OkxvYWRXaXRoT2Zmc2V0OgorICAgICAgICAgICAgcmV0dXJuIHBh
cnNlTG9hZChjb250ZXh0LCBXQVNNRXhwcmVzc2lvblR5cGU6OkY2NCwgV0FTTU1lbW9yeVR5cGU6
OkY2NCwgTWVtb3J5QWNjZXNzT2Zmc2V0TW9kZTo6V2l0aE9mZnNldCk7CiAgICAgICAgIGNhc2Ug
V0FTTU9wRXhwcmVzc2lvbkY2NDo6Q2FsbEludGVybmFsOgogICAgICAgICAgICAgcmV0dXJuIHBh
cnNlQ2FsbEludGVybmFsKGNvbnRleHQsIFdBU01FeHByZXNzaW9uVHlwZTo6RjY0KTsKICAgICAg
ICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uRjY0OjpDYWxsSW1wb3J0OgpAQCAtODgzLDggKzkxOSw2
IEBAIENvbnRleHRFeHByZXNzaW9uIFdBU01GdW5jdGlvblBhcnNlcjo6cGFyc2VFeHByZXNzaW9u
RjY0KENvbnRleHQmIGNvbnRleHQpCiAgICAgICAgICAgICByZXR1cm4gcGFyc2VDYWxsSW5kaXJl
Y3QoY29udGV4dCwgV0FTTUV4cHJlc3Npb25UeXBlOjpGNjQpOwogICAgICAgICBjYXNlIFdBU01P
cEV4cHJlc3Npb25GNjQ6OlNldExvY2FsOgogICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25G
NjQ6OlNldEdsb2JhbDoKLSAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNzaW9uRjY0OjpMb2FkOgot
ICAgICAgICBjYXNlIFdBU01PcEV4cHJlc3Npb25GNjQ6OkxvYWRXaXRoT2Zmc2V0OgogICAgICAg
ICBjYXNlIFdBU01PcEV4cHJlc3Npb25GNjQ6OlN0b3JlOgogICAgICAgICBjYXNlIFdBU01PcEV4
cHJlc3Npb25GNjQ6OlN0b3JlV2l0aE9mZnNldDoKICAgICAgICAgY2FzZSBXQVNNT3BFeHByZXNz
aW9uRjY0OjpDb25kaXRpb25hbDoKQEAgLTk4Miw2ICsxMDE2LDM4IEBAIENvbnRleHRFeHByZXNz
aW9uIFdBU01GdW5jdGlvblBhcnNlcjo6cGFyc2VHZXRHbG9iYWxFeHByZXNzaW9uRjY0KENvbnRl
eHQmIGNvbnRlCiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBDb250ZXh0PgorQ29udGV4dE1lbW9yeUFk
ZHJlc3MgV0FTTUZ1bmN0aW9uUGFyc2VyOjpwYXJzZU1lbW9yeUFkZHJlc3MoQ29udGV4dCYgY29u
dGV4dCwgTWVtb3J5QWNjZXNzT2Zmc2V0TW9kZSBvZmZzZXRNb2RlKQoreworICAgIHVpbnQzMl90
IG9mZnNldCA9IDA7CisgICAgaWYgKG9mZnNldE1vZGUgPT0gTWVtb3J5QWNjZXNzT2Zmc2V0TW9k
ZTo6V2l0aE9mZnNldCkKKyAgICAgICAgUkVBRF9DT01QQUNUX1VJTlQzMl9PUl9GQUlMKG9mZnNl
dCwgIkNhbm5vdCByZWFkIHRoZSBhZGRyZXNzIG9mZnNldC4iKTsKKyAgICBDb250ZXh0RXhwcmVz
c2lvbiBpbmRleCA9IHBhcnNlRXhwcmVzc2lvbkkzMihjb250ZXh0KTsKKyAgICBQUk9QQUdBVEVf
RVJST1IoKTsKKyAgICByZXR1cm4gQ29udGV4dE1lbW9yeUFkZHJlc3MoaW5kZXgsIG9mZnNldCk7
Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBDb250ZXh0PgorQ29udGV4dEV4cHJlc3Npb24gV0FTTUZ1
bmN0aW9uUGFyc2VyOjpwYXJzZUxvYWQoQ29udGV4dCYgY29udGV4dCwgV0FTTUV4cHJlc3Npb25U
eXBlIGV4cHJlc3Npb25UeXBlLCBXQVNNTWVtb3J5VHlwZSBtZW1vcnlUeXBlLCBNZW1vcnlBY2Nl
c3NPZmZzZXRNb2RlIG9mZnNldE1vZGUsIE1lbW9yeUFjY2Vzc0NvbnZlcnNpb24gY29udmVyc2lv
bikKK3sKKyAgICBGQUlMX0lGX0ZBTFNFKG1fbW9kdWxlLT5hcnJheUJ1ZmZlcigpLCAiQW4gQXJy
YXlCdWZmZXIgaXMgbm90IHByb3ZpZGVkLiIpOworICAgIGNvbnN0IENvbnRleHRNZW1vcnlBZGRy
ZXNzJiBtZW1vcnlBZGRyZXNzID0gcGFyc2VNZW1vcnlBZGRyZXNzKGNvbnRleHQsIG9mZnNldE1v
ZGUpOworICAgIFBST1BBR0FURV9FUlJPUigpOworICAgIHJldHVybiBjb250ZXh0LmJ1aWxkTG9h
ZChtZW1vcnlBZGRyZXNzLCBleHByZXNzaW9uVHlwZSwgbWVtb3J5VHlwZSwgY29udmVyc2lvbik7
Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBDb250ZXh0PgorQ29udGV4dEV4cHJlc3Npb24gV0FTTUZ1
bmN0aW9uUGFyc2VyOjpwYXJzZVN0b3JlKENvbnRleHQmIGNvbnRleHQsIFdBU01FeHByZXNzaW9u
VHlwZSBleHByZXNzaW9uVHlwZSwgV0FTTU1lbW9yeVR5cGUgbWVtb3J5VHlwZSwgTWVtb3J5QWNj
ZXNzT2Zmc2V0TW9kZSBvZmZzZXRNb2RlKQoreworICAgIEZBSUxfSUZfRkFMU0UobV9tb2R1bGUt
PmFycmF5QnVmZmVyKCksICJBbiBBcnJheUJ1ZmZlciBpcyBub3QgcHJvdmlkZWQuIik7CisgICAg
Y29uc3QgQ29udGV4dE1lbW9yeUFkZHJlc3MmIG1lbW9yeUFkZHJlc3MgPSBwYXJzZU1lbW9yeUFk
ZHJlc3MoY29udGV4dCwgb2Zmc2V0TW9kZSk7CisgICAgUFJPUEFHQVRFX0VSUk9SKCk7CisKKyAg
ICBDb250ZXh0RXhwcmVzc2lvbiB2YWx1ZSA9IHBhcnNlRXhwcmVzc2lvbihjb250ZXh0LCBleHBy
ZXNzaW9uVHlwZSk7CisgICAgUFJPUEFHQVRFX0VSUk9SKCk7CisgICAgcmV0dXJuIGNvbnRleHQu
YnVpbGRTdG9yZShtZW1vcnlBZGRyZXNzLCBleHByZXNzaW9uVHlwZSwgbWVtb3J5VHlwZSwgdmFs
dWUpOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4KIENvbnRleHRFeHByZXNzaW9uTGlz
dCBXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlQ2FsbEFyZ3VtZW50cyhDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBWZWN0b3I8V0FTTVR5cGU+JiBhcmd1bWVudHMpCiB7CiAgICAgQ29udGV4dEV4cHJl
c3Npb25MaXN0IGFyZ3VtZW50TGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dBU01GdW5jdGlvblBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V0FTTUZ1bmN0aW9uUGFyc2VyLmgKaW5kZXggYmJiZDEzZGJkMThjZDBlNmQyNjhkMTk3MjgyZDBl
MzViNWZlYTg1OC4uMWFkOGYyODgyZjFjNzMxYzQ1ZTA3NmNkNWIwNWU1MmQ4MjI4MTA1NiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmgKQEAg
LTM0LDYgKzM0LDcgQEAKICNkZWZpbmUgQ29udGV4dEV4cHJlc3Npb24gdHlwZW5hbWUgQ29udGV4
dDo6RXhwcmVzc2lvbgogI2RlZmluZSBDb250ZXh0U3RhdGVtZW50IHR5cGVuYW1lIENvbnRleHQ6
OlN0YXRlbWVudAogI2RlZmluZSBDb250ZXh0RXhwcmVzc2lvbkxpc3QgdHlwZW5hbWUgQ29udGV4
dDo6RXhwcmVzc2lvbkxpc3QKKyNkZWZpbmUgQ29udGV4dE1lbW9yeUFkZHJlc3MgdHlwZW5hbWUg
Q29udGV4dDo6TWVtb3J5QWRkcmVzcwogI2RlZmluZSBDb250ZXh0SnVtcFRhcmdldCB0eXBlbmFt
ZSBDb250ZXh0OjpKdW1wVGFyZ2V0CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTEzLDYgKzExNCwx
MCBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlIDxjbGFzcyBDb250ZXh0PiBDb250ZXh0RXhwcmVz
c2lvbiBwYXJzZUdldExvY2FsRXhwcmVzc2lvbkY2NChDb250ZXh0Jik7CiAgICAgdGVtcGxhdGUg
PGNsYXNzIENvbnRleHQ+IENvbnRleHRFeHByZXNzaW9uIHBhcnNlR2V0R2xvYmFsRXhwcmVzc2lv
bkY2NChDb250ZXh0Jik7CiAKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4gQ29udGV4dE1l
bW9yeUFkZHJlc3MgcGFyc2VNZW1vcnlBZGRyZXNzKENvbnRleHQmLCBNZW1vcnlBY2Nlc3NPZmZz
ZXRNb2RlKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4gQ29udGV4dEV4cHJlc3Npb24g
cGFyc2VMb2FkKENvbnRleHQmLCBXQVNNRXhwcmVzc2lvblR5cGUsIFdBU01NZW1vcnlUeXBlLCBN
ZW1vcnlBY2Nlc3NPZmZzZXRNb2RlLCBNZW1vcnlBY2Nlc3NDb252ZXJzaW9uID0gTWVtb3J5QWNj
ZXNzQ29udmVyc2lvbjo6Tm9Db252ZXJzaW9uKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4
dD4gQ29udGV4dEV4cHJlc3Npb24gcGFyc2VTdG9yZShDb250ZXh0JiwgV0FTTUV4cHJlc3Npb25U
eXBlLCBXQVNNTWVtb3J5VHlwZSwgTWVtb3J5QWNjZXNzT2Zmc2V0TW9kZSk7CisKICAgICB0ZW1w
bGF0ZSA8Y2xhc3MgQ29udGV4dD4gQ29udGV4dEV4cHJlc3Npb25MaXN0IHBhcnNlQ2FsbEFyZ3Vt
ZW50cyhDb250ZXh0JiwgY29uc3QgVmVjdG9yPFdBU01UeXBlPiYgYXJndW1lbnRzKTsKICAgICB0
ZW1wbGF0ZSA8Y2xhc3MgQ29udGV4dD4gQ29udGV4dEV4cHJlc3Npb24gcGFyc2VDYWxsSW50ZXJu
YWwoQ29udGV4dCYsIFdBU01FeHByZXNzaW9uVHlwZSByZXR1cm5UeXBlKTsKICAgICB0ZW1wbGF0
ZSA8Y2xhc3MgQ29udGV4dD4gQ29udGV4dEV4cHJlc3Npb24gcGFyc2VDYWxsSW5kaXJlY3QoQ29u
dGV4dCYsIFdBU01FeHByZXNzaW9uVHlwZSByZXR1cm5UeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblN5bnRheENoZWNrZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblN5bnRheENoZWNrZXIuaAppbmRleCA2
Mjg2M2Q0ZTc1MDU1ZjQwNDg2ZWQ5ZDUzNmZmZWE5OTc4NmMyOWIxLi41YmYyODY0YzAxYmEyMzA1
YTg5NWRlNjU1MDk0MmQ2NGVhYzgwNTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XQVNNRnVuY3Rpb25TeW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlci5oCkBAIC0zNyw2ICszNywxMCBA
QCBwdWJsaWM6CiAgICAgdHlwZWRlZiBpbnQgRXhwcmVzc2lvbjsKICAgICB0eXBlZGVmIGludCBT
dGF0ZW1lbnQ7CiAgICAgdHlwZWRlZiBpbnQgRXhwcmVzc2lvbkxpc3Q7CisgICAgc3RydWN0IE1l
bW9yeUFkZHJlc3MgeworICAgICAgICBNZW1vcnlBZGRyZXNzKHZvaWQqKSB7IH0KKyAgICAgICAg
TWVtb3J5QWRkcmVzcyhpbnQsIHVpbnQzMl90KSB7IH0KKyAgICB9OwogICAgIHR5cGVkZWYgaW50
IEp1bXBUYXJnZXQ7CiAgICAgZW51bSBjbGFzcyBKdW1wQ29uZGl0aW9uIHsgWmVybywgTm9uWmVy
byB9OwogCkBAIC0xMDEsNiArMTA1LDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFVOVVNF
RDsKICAgICB9CiAKKyAgICBpbnQgYnVpbGRMb2FkKGNvbnN0IE1lbW9yeUFkZHJlc3MmLCBXQVNN
RXhwcmVzc2lvblR5cGUsIFdBU01NZW1vcnlUeXBlLCBNZW1vcnlBY2Nlc3NDb252ZXJzaW9uKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIFVOVVNFRDsKKyAgICB9CisKKyAgICBpbnQgYnVpbGRTdG9y
ZShjb25zdCBNZW1vcnlBZGRyZXNzJiwgV0FTTUV4cHJlc3Npb25UeXBlLCBXQVNNTWVtb3J5VHlw
ZSwgaW50KQorICAgIHsKKyAgICAgICAgbV90ZW1wU3RhY2tUb3AgLT0gMjsKKyAgICAgICAgcmV0
dXJuIFVOVVNFRDsKKyAgICB9CisKICAgICBpbnQgYnVpbGRVbmFyeUkzMihpbnQsIFdBU01PcEV4
cHJlc3Npb25JMzIpCiAgICAgewogICAgICAgICByZXR1cm4gVU5VU0VEOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmNwcAppbmRleCBjOTQ0MmExZjY1
ZjI5M2E5NzdjNjM0OTc1Zjg5MmI4MTFjODQ4YzU4Li43MTViNWUxY2FmNTg0ZjIzNTdlYWQyMGMy
MTJmYWM4YjJlZTc4NDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
QVNNTW9kdWxlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNN
TW9kdWxlUGFyc2VyLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQogCisjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKICNpbmNsdWRlICJKU1dBU01Nb2R1bGUuaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgi
CkBAIC00OSwxOCArNTAsMTggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLVdBU01Nb2R1bGVQYXJz
ZXI6OldBU01Nb2R1bGVQYXJzZXIoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTT2JqZWN0KiBpbXBvcnRzKQorV0FTTU1vZHVs
ZVBhcnNlcjo6V0FTTU1vZHVsZVBhcnNlcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNPYmplY3QqIGltcG9ydHMsIEpTQXJy
YXlCdWZmZXIqIGFycmF5QnVmZmVyKQogICAgIDogbV92bSh2bSkKICAgICAsIG1fZ2xvYmFsT2Jq
ZWN0KHZtLCBnbG9iYWxPYmplY3QpCiAgICAgLCBtX3NvdXJjZShzb3VyY2UpCiAgICAgLCBtX2lt
cG9ydHModm0sIGltcG9ydHMpCiAgICAgLCBtX3JlYWRlcihzdGF0aWNfY2FzdDxXZWJBc3NlbWJs
eVNvdXJjZVByb3ZpZGVyKj4oc291cmNlLnByb3ZpZGVyKCkpLT5kYXRhKCkpCisgICAgLCBtX21v
ZHVsZSh2bSwgSlNXQVNNTW9kdWxlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+d2FzbU1vZHVs
ZVN0cnVjdHVyZSgpLCBhcnJheUJ1ZmZlcikpCiB7CiB9CiAKIEpTV0FTTU1vZHVsZSogV0FTTU1v
ZHVsZVBhcnNlcjo6cGFyc2UoRXhlY1N0YXRlKiBleGVjLCBTdHJpbmcmIGVycm9yTWVzc2FnZSkK
IHsKLSAgICBtX21vZHVsZS5zZXQobV92bSwgSlNXQVNNTW9kdWxlOjpjcmVhdGUobV92bSwgbV9n
bG9iYWxPYmplY3QtPndhc21Nb2R1bGVTdHJ1Y3R1cmUoKSkpOwogICAgIHBhcnNlTW9kdWxlKGV4
ZWMpOwogICAgIGlmICghbV9lcnJvck1lc3NhZ2UuaXNOdWxsKCkpIHsKICAgICAgICAgZXJyb3JN
ZXNzYWdlID0gbV9lcnJvck1lc3NhZ2U7CkBAIC05Myw2ICs5NCw5IEBAIHZvaWQgV0FTTU1vZHVs
ZVBhcnNlcjo6cGFyc2VNb2R1bGUoRXhlY1N0YXRlKiBleGVjKQogICAgIHBhcnNlRnVuY3Rpb25E
ZWZpbml0aW9uU2VjdGlvbigpOwogICAgIFBST1BBR0FURV9FUlJPUigpOwogICAgIHBhcnNlRXhw
b3J0U2VjdGlvbigpOworICAgIFBST1BBR0FURV9FUlJPUigpOworCisgICAgRkFJTF9JRl9GQUxT
RSghbV9tb2R1bGUtPmFycmF5QnVmZmVyKCkgfHwgbV9tb2R1bGUtPmFycmF5QnVmZmVyKCktPmlt
cGwoKS0+Ynl0ZUxlbmd0aCgpIDwgKDF1IDw8IDMxKSwgIlRoZSBBcnJheUJ1ZmZlcidzIGxlbmd0
aCBtdXN0IGJlIGxlc3MgdGhhbiAyXjMxLiIpOwogfQogCiB2b2lkIFdBU01Nb2R1bGVQYXJzZXI6
OnBhcnNlQ29uc3RhbnRQb29sU2VjdGlvbigpCkBAIC0zNjIsOSArMzY2LDkgQEAgdm9pZCBXQVNN
TW9kdWxlUGFyc2VyOjpnZXRJbXBvcnRlZFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3Ry
aW5nJiBpbXBvcnROYW0KICAgICB2YWx1ZSA9IHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRlbnRpZmll
cik7CiB9CiAKLUpTV0FTTU1vZHVsZSogcGFyc2VXZWJBc3NlbWJseShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNPYmplY3QqIGltcG9ydHMsIFN0cmluZyYgZXJy
b3JNZXNzYWdlKQorSlNXQVNNTW9kdWxlKiBwYXJzZVdlYkFzc2VtYmx5KEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU09iamVjdCogaW1wb3J0cywgSlNBcnJheUJ1
ZmZlciogYXJyYXlCdWZmZXIsIFN0cmluZyYgZXJyb3JNZXNzYWdlKQogewotICAgIFdBU01Nb2R1
bGVQYXJzZXIgbW9kdWxlUGFyc2VyKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSwgc291cmNlLCBpbXBvcnRzKTsKKyAgICBXQVNNTW9kdWxlUGFyc2VyIG1vZHVsZVBhcnNl
cihleGVjLT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHNvdXJjZSwgaW1wb3J0
cywgYXJyYXlCdWZmZXIpOwogICAgIHJldHVybiBtb2R1bGVQYXJzZXIucGFyc2UoZXhlYywgZXJy
b3JNZXNzYWdlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V0FTTU1vZHVsZVBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTU1vZHVs
ZVBhcnNlci5oCmluZGV4IGY4YjMxMTNkZWIzMThmNDhhOGZmZjJmYzY3NzgzNTIxZGIyMGMyMjku
LjUwMTdiYzFjZWE2NjcxN2U3NWRiNjE1Yzc5ZjQ0NGEwZjI5ZjQzNWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmgKQEAgLTM1LDYgKzM1LDcgQEAK
IG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBFeGVjU3RhdGU7CitjbGFzcyBKU0FycmF5QnVmZmVy
OwogY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiBjbGFzcyBKU1dBU01Nb2R1bGU7CiBjbGFzcyBTb3Vy
Y2VDb2RlOwpAQCAtNDIsNyArNDMsNyBAQCBjbGFzcyBWTTsKIAogY2xhc3MgV0FTTU1vZHVsZVBh
cnNlciB7CiBwdWJsaWM6Ci0gICAgV0FTTU1vZHVsZVBhcnNlcihWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgY29uc3QgU291cmNlQ29kZSYsIEpTT2JqZWN0KiBpbXBvcnRzKTsKKyAgICBXQVNNTW9kdWxl
UGFyc2VyKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNPYmplY3Qq
IGltcG9ydHMsIEpTQXJyYXlCdWZmZXIqKTsKICAgICBKU1dBU01Nb2R1bGUqIHBhcnNlKEV4ZWNT
dGF0ZSosIFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKIAogcHJpdmF0ZToKQEAgLTY3LDcgKzY4LDcg
QEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9lcnJvck1lc3NhZ2U7CiB9OwogCi1KU19FWFBPUlRf
UFJJVkFURSBKU1dBU01Nb2R1bGUqIHBhcnNlV2ViQXNzZW1ibHkoRXhlY1N0YXRlKiwgY29uc3Qg
U291cmNlQ29kZSYsIEpTT2JqZWN0KiBpbXBvcnRzLCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CitK
U19FWFBPUlRfUFJJVkFURSBKU1dBU01Nb2R1bGUqIHBhcnNlV2ViQXNzZW1ibHkoRXhlY1N0YXRl
KiwgY29uc3QgU291cmNlQ29kZSYsIEpTT2JqZWN0KiBpbXBvcnRzLCBKU0FycmF5QnVmZmVyKiwg
U3RyaW5nJiBlcnJvck1lc3NhZ2UpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>