<?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>189693</bug_id>
          
          <creation_ts>2018-09-18 00:00:27 -0700</creation_ts>
          <short_desc>Rename &lt;wtf/unicode/UTF8.h&gt; to &lt;wtf/unicode/UTF8Conversion.h&gt; in order to avoid conflicting with ICU&apos;s unicode/utf8.h</short_desc>
          <delta_ts>2018-11-04 21:54:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>171618</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Fujii Hironori">fujii</reporter>
          <assigned_to name="Fujii Hironori">fujii</assigned_to>
          <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1460524</commentid>
    <comment_count>0</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-09-18 00:00:27 -0700</bug_when>
    <thetext>[Win][Clang] warning: #include resolved using non-portable Microsoft search rules as: ..\..\Source\WTF\wtf/unicode/utf8.h

While doing Bug 171618, a lot of following compilation warnings are reported.

&gt; [1033/6181] Building CXX object Source\WTF\wtf\CMakeFiles\WTF.dir\ParkingLot.cpp.obj
&gt; In file included from ..\..\Source\WTF\wtf\ParkingLot.cpp:31:
&gt; In file included from ..\..\Source\WTF\wtf/StringPrintStream.h:31:
&gt; In file included from ..\..\Source\WTF\wtf/text/WTFString.h:32:
&gt; In file included from ..\..\Source\WTF\wtf/text/StringImpl.h:27:
&gt; In file included from ..\..\WebKitLibraries\win\include\unicode/ustring.h:21:
&gt; In file included from ..\..\WebKitLibraries\win\include\unicode/utypes.h:44:
&gt; ..\..\WebKitLibraries\win\include\unicode/utf.h(217,10):  warning: #include resolved using non-portable Microsoft search rules as: ..\..\Source\WTF\wtf/unicode/utf8.h [-Wmicrosoft-include]
&gt; #include &quot;unicode/utf8.h&quot;
&gt;          ^
&gt; In file included from ..\..\Source\WTF\wtf\ParkingLot.cpp:31:
&gt; In file included from ..\..\Source\WTF\wtf/StringPrintStream.h:31:
&gt; In file included from ..\..\Source\WTF\wtf/text/WTFString.h:32:
&gt; In file included from ..\..\Source\WTF\wtf/text/StringImpl.h:27:
&gt; In file included from ..\..\WebKitLibraries\win\include\unicode/ustring.h:21:
&gt; In file included from ..\..\WebKitLibraries\win\include\unicode/utypes.h:44:
&gt; In file included from ..\..\WebKitLibraries\win\include\unicode/utf.h:221:
&gt; ..\..\WebKitLibraries\win\include\unicode/utf_old.h(166,10):  warning: #include resolved using non-portable Microsoft search rules as: ..\..\Source\WTF\wtf/unicode/utf8.h [-Wmicrosoft-include]
&gt; #include &quot;unicode/utf8.h&quot;
&gt;          ^
&gt; 2 warnings generated.


See Also:

Bug 70913 – using extrernal ICU library on case unsensitive drives will not work
Bug 88307 – Rename UTF8.h/cpp to WTF_UTF8.h/cpp to avoid clashes with ICU&apos;s utf8.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460527</commentid>
    <comment_count>1</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-09-18 00:17:20 -0700</bug_when>
    <thetext>https://msdn.microsoft.com/en-us/library/36k2cdd4.aspx

&gt; For include files that are specified as #include &quot;path-spec&quot;,
&gt; directory searching begins with the directory of the parent file
&gt; and then proceeds through the directories of any grandparent
&gt; files. That is, searching begins relative to the directory that
&gt; contains the source file that contains the #include directive
&gt; that&apos;s being processed. If there is no grandparent file and the
&gt; file has not been found, the search continues as if the file name
&gt; were enclosed in angle brackets.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463364</commentid>
    <comment_count>2</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-09-25 15:08:32 -0700</bug_when>
    <thetext>Isn&apos;t the larger problem that Source/WTF/wtf is being used as an include directory?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463443</commentid>
    <comment_count>3</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-09-25 18:14:47 -0700</bug_when>
    <thetext>(In reply to Don Olmstead from comment #2)
&gt; Isn&apos;t the larger problem that Source/WTF/wtf is being used as an include
&gt; directory?

It is another problem should be fixed. But, it is not the main problem.

The main problem is the MSVC quirks (Comment 1).
It happens in following conditions:

1. ICU&apos;s header unicode/utf.h has &apos;#include &quot;unicode/utf8.h&quot;&apos; not &apos;&lt;unicode/utf8.h&gt;&apos;
2. ParkingLot.cpp indirectly includes unicode/utf.h
3. There is unicode/UTF8.h in WTF relative to the grand-grand-... parent ParkingLot.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473561</commentid>
    <comment_count>4</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-10-30 18:47:06 -0700</bug_when>
    <thetext>This is not a Clang-cl warning problem, but also MSVC builds have this issue.

Here is the build log of compiling ParkingLot.cpp with /showIncludes in WebKit WinCairo port with MSVC.
https://gist.github.com/fujii/a4a72fd3581e6b38962706b60e77d75c

&gt; 1&gt;Note: including file:      C:\webkit\ga\WebKitLibraries\win\include\unicode/utf.h
&gt; 1&gt;Note: including file:       c:\webkit\ga\source\wtf\wtf\unicode/utf8.h

wtf/unicode/UTF8.h is included by unicode/utf.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474037</commentid>
    <comment_count>5</comment_count>
      <attachid>353584</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-11-01 00:15:53 -0700</bug_when>
    <thetext>Created attachment 353584
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474038</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-11-01 00:18:24 -0700</bug_when>
    <thetext>Attachment 353584 did not pass style-queue:


ERROR: Source/WTF/wtf/unicode/UTF8Conversion.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.cpp:65:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.cpp:122:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.cpp:221:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.cpp:234:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.cpp:234:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.cpp:235:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.cpp:236:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.cpp:247:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.cpp:254:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.cpp:256:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.cpp:256:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.cpp:257:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.cpp:257:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.cpp:258:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.cpp:262:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.cpp:262:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.cpp:263:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.cpp:264:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.cpp:265:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.cpp:266:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.cpp:270:  More than one command on the same line in if  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.cpp:288:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.cpp:288:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.cpp:289:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.cpp:290:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.cpp:291:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.cpp:292:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.cpp:330:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.cpp:414:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.h:45:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.h:45:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.h:46:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.h:47:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.h:48:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.h:53:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.h:66:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.h:70:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/unicode/UTF8Conversion.h:74:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 41 in 20 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>1474093</commentid>
    <comment_count>7</comment_count>
      <attachid>353584</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-11-01 07:38:02 -0700</bug_when>
    <thetext>Comment on attachment 353584
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474359</commentid>
    <comment_count>8</comment_count>
      <attachid>353584</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-11-01 18:14:13 -0700</bug_when>
    <thetext>Comment on attachment 353584
Patch

Clearing flags on attachment: 353584

Committed r237714: &lt;https://trac.webkit.org/changeset/237714&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474360</commentid>
    <comment_count>9</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-11-01 18:14:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474361</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-01 18:15:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/45749635&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474956</commentid>
    <comment_count>11</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-11-04 21:54:21 -0800</bug_when>
    <thetext>https://lists.webkit.org/pipermail/webkit-dev/2018-October/030230.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353584</attachid>
            <date>2018-11-01 00:15:53 -0700</date>
            <delta_ts>2018-11-01 18:14:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189693-20181101161551.patch</filename>
            <type>text/plain</type>
            <size>59511</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MWRiOTNiY2FhM2M1MjYxNTNkOGY5ZGU1OWVjZGQ1NWEzZjM5YzdmLi41ZTU4MmI2NGFkY2RmZGVi
MDNkMjlhYTlhYjMxNTg5M2NjMjUzOTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxOC0xMS0wMSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBz
b255LmNvbT4KKworICAgICAgICBSZW5hbWUgPHd0Zi91bmljb2RlL1VURjguaD4gdG8gPHd0Zi91
bmljb2RlL1VURjhDb252ZXJzaW9uLmg+IGluIG9yZGVyIHRvIGF2b2lkIGNvbmZsaWN0aW5nIHdp
dGggSUNVJ3MgdW5pY29kZS91dGY4LmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4OTY5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogQVBJL0pTQ2xhc3NSZWYuY3BwOiBSZXBsYWNlZCA8d3RmL3VuaWNv
ZGUvVVRGOC5oPiB3aXRoIDx3dGYvdW5pY29kZS9VVEY4Q29udmVyc2lvbi5oPi4KKyAgICAgICAg
KiBBUEkvSlNTdHJpbmdSZWYuY3BwOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
T2JqZWN0RnVuY3Rpb25zLmNwcDogRGl0dG8uCisgICAgICAgICogd2FzbS9XYXNtUGFyc2VyLmg6
IERpdHRvLgorCiAyMDE4LTEwLTMxICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBDYW52YXM6IGNyZWF0ZSBhIHNldHRpbmcgZm9yIGF1
dG8tcmVjb3JkaW5nIG5ld2x5IGNyZWF0ZWQgY29udGV4dHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggODgxYjUxZWRhNzkxNTAx
M2Y2MjA1YWU0NDY0ZjE0N2NlN2QzY2MwMC4uNjc3YWQ4NDA4ZWM1MjE1M2UyZmFmZmQxOWZlZjIy
ZjJhNjViYzgzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxOC0xMS0wMSAgRnVqaWkgSGlyb25v
cmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KKworICAgICAgICBSZW5hbWUgPHd0Zi91bmlj
b2RlL1VURjguaD4gdG8gPHd0Zi91bmljb2RlL1VURjhDb252ZXJzaW9uLmg+IGluIG9yZGVyIHRv
IGF2b2lkIGNvbmZsaWN0aW5nIHdpdGggSUNVJ3MgdW5pY29kZS91dGY4LmgKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTY5MworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6IFJlcGxhY2VkIHVuaWNvZGUvVVRGOC57Y3BwLGh9IHdpdGggdW5pY29kZS9V
VEY4Q29udmVyc2lvbi57Y3BwLGh9LgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDogRGl0
dG8uCisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nSW1wbC5jcHA6IFJlcGxhY2VkIDx3
dGYvdW5pY29kZS9VVEY4Lmg+IHdpdGggPHd0Zi91bmljb2RlL1VURjhDb252ZXJzaW9uLmg+Lgor
ICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOiBEaXR0by4KKyAgICAgICAgKiB3dGYv
dGV4dC9TdHJpbmdWaWV3LmNwcDogRGl0dG8uCisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5n
LmNwcDogRGl0dG8uCisgICAgICAgICogd3RmL3VuaWNvZGUvVVRGOENvbnZlcnNpb24uY3BwOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dURi93dGYvdW5pY29kZS9VVEY4LmNwcC4KKyAgICAgICAgKiB3
dGYvdW5pY29kZS9VVEY4Q29udmVyc2lvbi5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dURi93dGYv
dW5pY29kZS9VVEY4LmguCisKIDIwMTgtMTAtMzAgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVh
ZEBzb255LmNvbT4KIAogICAgICAgICBbUGxheVN0YXRpb25dIEVuYWJsZSBKYXZhU2NyaXB0Q29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDJkMjcyOGY4OGQxYTQzODY0ZjkxNjFhZjYzMzBkOTMzYzBiOWYxMzQu
LjA1ZmExZDcwMjYyNDhkODczMzE0MGQ4ODQyNjg4OThjZDdkMjBkOTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAxOC0xMS0wMSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWpp
aUBzb255LmNvbT4KKworICAgICAgICBSZW5hbWUgPHd0Zi91bmljb2RlL1VURjguaD4gdG8gPHd0
Zi91bmljb2RlL1VURjhDb252ZXJzaW9uLmg+IGluIG9yZGVyIHRvIGF2b2lkIGNvbmZsaWN0aW5n
IHdpdGggSUNVJ3MgdW5pY29kZS91dGY4LmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4OTY5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlJ3Mgbm8gYmVoYXZp
cm8gY2hhbmdlcy4KKworICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6IFJlcGxh
Y2VkIDx3dGYvdW5pY29kZS9VVEY4Lmg+IHdpdGggPHd0Zi91bmljb2RlL1VURjhDb252ZXJzaW9u
Lmg+LgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHA6IERpdHRvLgorICAg
ICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDogRGl0dG8uCisK
IDIwMTgtMTAtMzEgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IENhbnZhczogY3JlYXRlIGEgc2V0dGluZyBmb3IgYXV0by1yZWNvcmRp
bmcgbmV3bHkgY3JlYXRlZCBjb250ZXh0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3NjQ3N2Y1MjVjNzE2MDNkNDZm
MDI2MzdiYmE2NmFkYTJiOWQzNmI0Li45OGRhYjA4MThiYTZmMjg5MjJlY2E3MDcyYjUzNmUyYjhk
ZDIyYmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE4LTExLTAxICBGdWppaSBIaXJv
bm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgorCisgICAgICAgIFJlbmFtZSA8d3RmL3Vu
aWNvZGUvVVRGOC5oPiB0byA8d3RmL3VuaWNvZGUvVVRGOENvbnZlcnNpb24uaD4gaW4gb3JkZXIg
dG8gYXZvaWQgY29uZmxpY3Rpbmcgd2l0aCBJQ1UncyB1bmljb2RlL3V0ZjguaAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5NjkzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSVN0
cmluZy5oOiBSZXBsYWNlZCA8d3RmL3VuaWNvZGUvVVRGOC5oPiB3aXRoIDx3dGYvdW5pY29kZS9V
VEY4Q29udmVyc2lvbi5oPi4KKwogMjAxOC0xMC0zMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hz
aWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBBUEkgdGVzdCBXS0F0dGFjaG1lbnRUZXN0cy5Db3B5
QW5kUGFzdGVCZXR3ZWVuV2ViVmlld3MgZmFpbHMgb24gbWFjT1MgMTAuMTMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwCmluZGV4IGVmMDA2NmRhZjRiN2U3MDQ5MTg5MzQ4
NjMzZWFlMTE4ZjNmMDY1MmMuLjRjYzk3ZGU0MGYzYmFjYTY5NzNjYTgwYmU0N2RjOTA3ZTk2NzY0
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcApAQCAtMzUsNyAr
MzUsNyBAQAogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3Vu
aWNvZGUvVVRGOC5oPgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VURjhDb252ZXJzaW9uLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiB1c2luZyBuYW1lc3BhY2UgV1RGOjpVbmljb2RlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1JlZi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmLmNwcAppbmRleCBlNjQ0ZjFhYjdhN2Y0
ZmJlMWY2OWIyMGI3MWYzMTRhMmYwMjU1NDQwLi4wNGQxY2E3M2QzZWFiZmNjMDYyZDVmNzYyOGUx
NmFlMDU5NjVjNmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3Ry
aW5nUmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmLmNw
cApAQCAtMjksNyArMjksNyBAQAogCiAjaW5jbHVkZSAiSW5pdGlhbGl6ZVRocmVhZGluZy5oIgog
I2luY2x1ZGUgIk9wYXF1ZUpTU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL3VuaWNvZGUvVVRGOC5o
PgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VURjhDb252ZXJzaW9uLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CiB1c2luZyBuYW1lc3BhY2UgV1RGOjpVbmljb2RlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3Bw
CmluZGV4IDJiOWY5MmRlZjJmNmVkMzVjNzUzM2Q0NDcyOGYzOTcxMjdmYWM3MGUuLjNmMWUyZjlh
MzVlZDdjZTA0NjRlMGU2MTAwMDFiYjhiOGU5NzdlOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKQEAg
LTU1LDcgKzU1LDcgQEAKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0
Zi9kdG9hLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotI2luY2x1ZGUg
PHd0Zi91bmljb2RlL1VURjguaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9VVEY4Q29udmVyc2lv
bi5oPgogCiB1c2luZyBuYW1lc3BhY2UgV1RGOwogdXNpbmcgbmFtZXNwYWNlIFVuaWNvZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFyc2VyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFyc2VyLmgKaW5kZXggOWZjNGE0NTRjOWI3MjZm
YTEzZTg0YTRiNDczZmVhZDgxMmJiOTlmMC4uZmM1MDBjMDMzYWMxOGJiNDgwN2VjZjc2MDdlYWVm
MmFhMzFlMjdhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBh
cnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYXJzZXIuaApAQCAt
MzksNyArMzksNyBAQAogI2luY2x1ZGUgPHd0Zi9MRUJEZWNvZGVyLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotI2luY2x1
ZGUgPHd0Zi91bmljb2RlL1VURjguaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9VVEY4Q29udmVy
c2lvbi5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhOTRkNzExZGZlNjdiNTlkMWJhOGZi
ZjM4YzA5ZmFkY2VjM2IwZTkwLi5iMGRlMWNjMzM1NWRhODQ4NTgzOGM2MDc0YzAxMTc0ZmVjODg4
MGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzNiw3
ICsxMzYsNyBAQAogCQlBOEE0NzQ1MTE1MUE4MjVCMDA0MTIzRkYgLyogQmluYXJ5U2VtYXBob3Jl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3
MzNBMTUxQTgyNUIwMDQxMjNGRiAvKiBCaW5hcnlTZW1hcGhvcmUuY3BwICovOyB9OwogCQlBOEE0
NzQ2MDE1MUE4MjVCMDA0MTIzRkYgLyogQ29sbGF0b3JEZWZhdWx0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzRCMTUxQTgyNUIwMDQxMjNG
RiAvKiBDb2xsYXRvckRlZmF1bHQuY3BwICovOyB9OwogCQlBOEE0NzQ2MzE1MUE4MjVCMDA0MTIz
RkYgLyogQ29sbGF0b3JJQ1UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQThBNDczNTAxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9ySUNVLmNwcCAq
LzsgfTsKLQkJQThBNDc0NjkxNTFBODI1QjAwNDEyM0ZGIC8qIFVURjguY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDczNTcxNTFBODI1QjAwNDEy
M0ZGIC8qIFVURjguY3BwICovOyB9OworCQlBOEE0NzQ2OTE1MUE4MjVCMDA0MTIzRkYgLyogVVRG
OENvbnZlcnNpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQThBNDczNTcxNTFBODI1QjAwNDEyM0ZGIC8qIFVURjhDb252ZXJzaW9uLmNwcCAqLzsg
fTsKIAkJQUQ4OUI2QjcxRTY0MTUwODAwOTA3MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBRDg5QjZC
NTFFNjQxNTA4MDA5MDcwN0YgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcCAqLzsgfTsKIAkJ
QUQ4OUI2QkExRTY0MTUwRjAwOTA3MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUQ4OUI2Qjkx
RTY0MTUwRjAwOTA3MDdGIC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tICovOyB9Owog
CQlBREYyQ0U2NzFFMzlGMTA2MDA2ODg5REIgLyogTWVtb3J5Rm9vdHByaW50Q29jb2EuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQURGMkNFNjUxRTM5
RjEwNjAwNjg4OURCIC8qIE1lbW9yeUZvb3RwcmludENvY29hLmNwcCAqLzsgfTsKQEAgLTU4NSw4
ICs1ODUsOCBAQAogCQlBOEE0NzM0QTE1MUE4MjVCMDA0MTIzRkYgLyogQ29sbGF0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sbGF0b3IuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQThBNDczNEIxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9yRGVmYXVs
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb2xsYXRvckRlZmF1
bHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzM1MDE1MUE4MjVCMDA0
MTIzRkYgLyogQ29sbGF0b3JJQ1UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ29sbGF0b3JJQ1UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBOEE0
NzM1NzE1MUE4MjVCMDA0MTIzRkYgLyogVVRGOC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBVVEY4LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQThB
NDczNTgxNTFBODI1QjAwNDEyM0ZGIC8qIFVURjguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVVRGOC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBOEE0NzM1NzE1
MUE4MjVCMDA0MTIzRkYgLyogVVRGOENvbnZlcnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVVRGOENvbnZlcnNpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBOEE0NzM1ODE1MUE4MjVCMDA0MTIzRkYgLyogVVRGOENvbnZlcnNpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVRGOENvbnZlcnNpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczNUMxNTFBODI1QjAwNDEyM0ZGIC8qIFVuaW9u
RmluZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmlvbkZpbmQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczNkYxNTFBODI1QjAwNDEyM0ZGIC8qIFZh
bHVlQ2hlY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFsdWVDaGVjay5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzM3MDE1MUE4MjVCMDA0MTIzRkYg
LyogVmVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZlY3Rvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI3Nyw4ICsxMjc3LDggQEAKIAkJCQlBOEE0
NzM0OTE1MUE4MjVCMDA0MTIzRkYgLyogQ2hhcmFjdGVyTmFtZXMuaCAqLywKIAkJCQlBOEE0NzM0
QTE1MUE4MjVCMDA0MTIzRkYgLyogQ29sbGF0b3IuaCAqLywKIAkJCQlBOEE0NzM0QjE1MUE4MjVC
MDA0MTIzRkYgLyogQ29sbGF0b3JEZWZhdWx0LmNwcCAqLywKLQkJCQlBOEE0NzM1NzE1MUE4MjVC
MDA0MTIzRkYgLyogVVRGOC5jcHAgKi8sCi0JCQkJQThBNDczNTgxNTFBODI1QjAwNDEyM0ZGIC8q
IFVURjguaCAqLywKKwkJCQlBOEE0NzM1NzE1MUE4MjVCMDA0MTIzRkYgLyogVVRGOENvbnZlcnNp
b24uY3BwICovLAorCQkJCUE4QTQ3MzU4MTUxQTgyNUIwMDQxMjNGRiAvKiBVVEY4Q29udmVyc2lv
bi5oICovLAogCQkJKTsKIAkJCXBhdGggPSB1bmljb2RlOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTE1OTIsNyArMTU5Miw3IEBACiAJCQkJMUMxODFDOEYxRDMwN0FCODAwRjVGQTE2
IC8qIFVUZXh0UHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUMxODFDOTExRDMwN0FC
ODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJMYXRpbjEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUMxODFDOTMxRDMwN0FCODAwRjVGQTE2IC8qIFVUZXh0UHJvdmlkZXJVVEYxNi5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQlBOEE0NzQ2OTE1MUE4MjVCMDA0MTIzRkYgLyogVVRGOC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlBOEE0NzQ2OTE1MUE4MjVCMDA0MTIzRkYgLyogVVRGOENvbnZlcnNpb24u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0FGRUM2QjExRUIyMkI1OTAwREFERTM2IC8qIFVVSUQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2NkIyOTIxREM5N0JBQjAwNEExRDNGIC8qIFdhbGxU
aW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFGQTQ3QzhBMTUyNTAyREEwMDU2OEQxQiAvKiBX
ZWJDb3JlVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCA2
ZDNjZWI5NDQ2YjYxYzk0ZGUxNzMzMjAxNWUwMGRkYmZiMjgwNzlhLi5hYzZmMGU5NjQ5YjIzMjg4
YTI1ZjA3NWQxNDgyNTEyZmUyNGI0YjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtMzI3LDcg
KzMyNyw3IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMKIAogICAgIHVuaWNvZGUvQ2hhcmFjdGVy
TmFtZXMuaAogICAgIHVuaWNvZGUvQ29sbGF0b3IuaAotICAgIHVuaWNvZGUvVVRGOC5oCisgICAg
dW5pY29kZS9VVEY4Q29udmVyc2lvbi5oCiApCiAKIHNldChXVEZfU09VUkNFUwpAQCAtNDQwLDcg
KzQ0MCw3IEBAIHNldChXVEZfU09VUkNFUwogICAgIHRocmVhZHMvQmluYXJ5U2VtYXBob3JlLmNw
cAogICAgIHRocmVhZHMvU2lnbmFscy5jcHAKIAotICAgIHVuaWNvZGUvVVRGOC5jcHAKKyAgICB1
bmljb2RlL1VURjhDb252ZXJzaW9uLmNwcAogKQogCiBzZXQoV1RGX0lOQ0xVREVfRElSRUNUT1JJ
RVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nSW1wbC5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuY3BwCmluZGV4IGUxY2U2MTk5
N2M3NTk1ZTM3ZWRiNDgwZTY0MDAxYjM2MjI0MjFlOWQuLjE0ZDgyZDJjYzFjZDA2NmQ3YzQ0ZGUz
N2Q5Y2FiMWZkYmU5YTdkOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWlj
U3RyaW5nSW1wbC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmdJbXBs
LmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ1Rh
YmxlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KLSNpbmNsdWRlIDx3dGYvdW5pY29kZS9V
VEY4Lmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVVRGOENvbnZlcnNpb24uaD4KIAogI2lmIFVT
RShXRUJfVEhSRUFEKQogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJ
bXBsLmNwcAppbmRleCA0MzcxNjBiZDVmYmUwOGZkOGEyNjg1MTBjNmViNjUyNjEyMjMwNGI2Li4w
ZmMwMWFjZTM5YmRhOTQ3OTFiZjc4MTM5MzBhMzQxMmJhN2E5Zjk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nSW1wbC5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TeW1i
b2xJbXBsLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuaD4KICNpbmNsdWRl
IDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgotI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VU
RjguaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9VVEY4Q29udmVyc2lvbi5oPgogCiAjaWYgU1RS
SU5HX1NUQVRTCiAjaW5jbHVkZSA8dW5pc3RkLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNw
cAppbmRleCBkMGQwNjc5OGNkMjU3MmQ5YzU2ZGFjOWEwZTIwMTg0Y2M5YzA5ZDlmLi40NTBiNDdh
MjE2MTlmM2U5ZDQ3MTA2ZDFhOWNkYjgxOTcxMjcyNjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Vmlldy5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
VGV4dEJyZWFrSXRlcmF0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdW5pY29kZS9VVEY4Lmg+CisjaW5j
bHVkZSA8d3RmL3VuaWNvZGUvVVRGOENvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIFdURiB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAppbmRleCA3NDNmNGU2OWZiYTRjZTRhNzJiMTg4NDIw
NmRmMTY0ZDExOThjZGYxLi5jOTZjYzk5MWVmODg0ZjI4ZmU5ZTE3NGEzMThlMDBiZDZiMjE3Zjc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVk
ZSA8d3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9D
aGFyYWN0ZXJOYW1lcy5oPgotI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VURjguaD4KKyNpbmNsdWRl
IDx3dGYvdW5pY29kZS9VVEY4Q29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvdW5pY29kZS9VVEY4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaWNvZGUvVVRGOC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkMWVmMzM0
NGViZDg1ODY5NzAyNWI5NTU5NTRlZmUyOTUzYzIxMjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvdW5pY29kZS9VVEY4LmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDQ4OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3
LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykg
MjAxMCBQYXRyaWNrIEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9nYS5jb20+Ci0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSA8d3RmL3VuaWNvZGUvVVRGOC5oPgotCi0jaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoZXIuaD4KLSNpbmNsdWRlIDx3dGYvdW5pY29k
ZS9DaGFyYWN0ZXJOYW1lcy5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLW5hbWVzcGFjZSBVbmljb2Rl
IHsKLQotaW5saW5lIGludCBpbmxpbmVVVEY4U2VxdWVuY2VMZW5ndGhOb25BU0NJSShjaGFyIGIw
KQotewotICAgIGlmICgoYjAgJiAweEMwKSAhPSAweEMwKQotICAgICAgICByZXR1cm4gMDsKLSAg
ICBpZiAoKGIwICYgMHhFMCkgPT0gMHhDMCkKLSAgICAgICAgcmV0dXJuIDI7Ci0gICAgaWYgKChi
MCAmIDB4RjApID09IDB4RTApCi0gICAgICAgIHJldHVybiAzOwotICAgIGlmICgoYjAgJiAweEY4
KSA9PSAweEYwKQotICAgICAgICByZXR1cm4gNDsKLSAgICByZXR1cm4gMDsKLX0KLQotaW5saW5l
IGludCBpbmxpbmVVVEY4U2VxdWVuY2VMZW5ndGgoY2hhciBiMCkKLXsKLSAgICByZXR1cm4gaXNB
U0NJSShiMCkgPyAxIDogaW5saW5lVVRGOFNlcXVlbmNlTGVuZ3RoTm9uQVNDSUkoYjApOwotfQot
Ci1pbnQgVVRGOFNlcXVlbmNlTGVuZ3RoKGNoYXIgYjApCi17Ci0gICAgcmV0dXJuIGlzQVNDSUko
YjApID8gMSA6IGlubGluZVVURjhTZXF1ZW5jZUxlbmd0aE5vbkFTQ0lJKGIwKTsKLX0KLQotaW50
IGRlY29kZVVURjhTZXF1ZW5jZShjb25zdCBjaGFyKiBzZXF1ZW5jZSkKLXsKLSAgICAvLyBIYW5k
bGUgMC1ieXRlIHNlcXVlbmNlcyAobmV2ZXIgdmFsaWQpLgotICAgIGNvbnN0IHVuc2lnbmVkIGNo
YXIgYjAgPSBzZXF1ZW5jZVswXTsKLSAgICBjb25zdCBpbnQgbGVuZ3RoID0gaW5saW5lVVRGOFNl
cXVlbmNlTGVuZ3RoKGIwKTsKLSAgICBpZiAobGVuZ3RoID09IDApCi0gICAgICAgIHJldHVybiAt
MTsKLQotICAgIC8vIEhhbmRsZSAxLWJ5dGUgc2VxdWVuY2VzIChwbGFpbiBBU0NJSSkuCi0gICAg
Y29uc3QgdW5zaWduZWQgY2hhciBiMSA9IHNlcXVlbmNlWzFdOwotICAgIGlmIChsZW5ndGggPT0g
MSkgewotICAgICAgICBpZiAoYjEpCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIHJl
dHVybiBiMDsKLSAgICB9Ci0KLSAgICAvLyBIYW5kbGUgMi1ieXRlIHNlcXVlbmNlcy4KLSAgICBp
ZiAoKGIxICYgMHhDMCkgIT0gMHg4MCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGNvbnN0IHVu
c2lnbmVkIGNoYXIgYjIgPSBzZXF1ZW5jZVsyXTsKLSAgICBpZiAobGVuZ3RoID09IDIpIHsKLSAg
ICAgICAgaWYgKGIyKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBjb25zdCBpbnQg
YyA9ICgoYjAgJiAweDFGKSA8PCA2KSB8IChiMSAmIDB4M0YpOwotICAgICAgICBpZiAoYyA8IDB4
ODApCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIHJldHVybiBjOwotICAgIH0KLQot
ICAgIC8vIEhhbmRsZSAzLWJ5dGUgc2VxdWVuY2VzLgotICAgIGlmICgoYjIgJiAweEMwKSAhPSAw
eDgwKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgY29uc3QgdW5zaWduZWQgY2hhciBiMyA9IHNl
cXVlbmNlWzNdOwotICAgIGlmIChsZW5ndGggPT0gMykgewotICAgICAgICBpZiAoYjMpCi0gICAg
ICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIGNvbnN0IGludCBjID0gKChiMCAmIDB4RikgPDwg
MTIpIHwgKChiMSAmIDB4M0YpIDw8IDYpIHwgKGIyICYgMHgzRik7Ci0gICAgICAgIGlmIChjIDwg
MHg4MDApCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIC8vIFVURi0xNiBzdXJyb2dh
dGVzIHNob3VsZCBuZXZlciBhcHBlYXIgaW4gVVRGLTggZGF0YS4KLSAgICAgICAgaWYgKGMgPj0g
MHhEODAwICYmIGMgPD0gMHhERkZGKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBy
ZXR1cm4gYzsKLSAgICB9Ci0KLSAgICAvLyBIYW5kbGUgNC1ieXRlIHNlcXVlbmNlcy4KLSAgICBp
ZiAoKGIzICYgMHhDMCkgIT0gMHg4MCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGNvbnN0IHVu
c2lnbmVkIGNoYXIgYjQgPSBzZXF1ZW5jZVs0XTsKLSAgICBpZiAobGVuZ3RoID09IDQpIHsKLSAg
ICAgICAgaWYgKGI0KQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBjb25zdCBpbnQg
YyA9ICgoYjAgJiAweDcpIDw8IDE4KSB8ICgoYjEgJiAweDNGKSA8PCAxMikgfCAoKGIyICYgMHgz
RikgPDwgNikgfCAoYjMgJiAweDNGKTsKLSAgICAgICAgaWYgKGMgPCAweDEwMDAwIHx8IGMgPiAw
eDEwRkZGRikKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgcmV0dXJuIGM7Ci0gICAg
fQotCi0gICAgcmV0dXJuIC0xOwotfQotCi0vLyBPbmNlIHRoZSBiaXRzIGFyZSBzcGxpdCBvdXQg
aW50byBieXRlcyBvZiBVVEYtOCwgdGhpcyBpcyBhIG1hc2sgT1ItZWQKLS8vIGludG8gdGhlIGZp
cnN0IGJ5dGUsIGRlcGVuZGluZyBvbiBob3cgbWFueSBieXRlcyBmb2xsb3cuICBUaGVyZSBhcmUK
LS8vIGFzIG1hbnkgZW50cmllcyBpbiB0aGlzIHRhYmxlIGFzIHRoZXJlIGFyZSBVVEYtOCBzZXF1
ZW5jZSB0eXBlcy4KLS8vIChJLmUuLCBvbmUgYnl0ZSBzZXF1ZW5jZSwgdHdvIGJ5dGUuLi4gZXRj
LikuIFJlbWVtYmVyIHRoYXQgc2VxdWVuY3MKLS8vIGZvciAqbGVnYWwqIFVURi04IHdpbGwgYmUg
NCBvciBmZXdlciBieXRlcyB0b3RhbC4KLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGZpcnN0
Qnl0ZU1hcmtbN10gPSB7IDB4MDAsIDB4MDAsIDB4QzAsIDB4RTAsIDB4RjAsIDB4RjgsIDB4RkMg
fTsKLQotQ29udmVyc2lvblJlc3VsdCBjb252ZXJ0TGF0aW4xVG9VVEY4KAotICAgIGNvbnN0IExD
aGFyKiogc291cmNlU3RhcnQsIGNvbnN0IExDaGFyKiBzb3VyY2VFbmQsIAotICAgIGNoYXIqKiB0
YXJnZXRTdGFydCwgY2hhciogdGFyZ2V0RW5kKQotewotICAgIENvbnZlcnNpb25SZXN1bHQgcmVz
dWx0ID0gY29udmVyc2lvbk9LOwotICAgIGNvbnN0IExDaGFyKiBzb3VyY2UgPSAqc291cmNlU3Rh
cnQ7Ci0gICAgY2hhciogdGFyZ2V0ID0gKnRhcmdldFN0YXJ0OwotICAgIHdoaWxlIChzb3VyY2Ug
PCBzb3VyY2VFbmQpIHsKLSAgICAgICAgVUNoYXIzMiBjaDsKLSAgICAgICAgdW5zaWduZWQgc2hv
cnQgYnl0ZXNUb1dyaXRlID0gMDsKLSAgICAgICAgY29uc3QgVUNoYXIzMiBieXRlTWFzayA9IDB4
QkY7Ci0gICAgICAgIGNvbnN0IFVDaGFyMzIgYnl0ZU1hcmsgPSAweDgwOyAKLSAgICAgICAgY29u
c3QgTENoYXIqIG9sZFNvdXJjZSA9IHNvdXJjZTsgLy8gSW4gY2FzZSB3ZSBoYXZlIHRvIGJhY2sg
dXAgYmVjYXVzZSBvZiB0YXJnZXQgb3ZlcmZsb3cuCi0gICAgICAgIGNoID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQgc2hvcnQ+KCpzb3VyY2UrKyk7Ci0KLSAgICAgICAgLy8gRmlndXJlIG91dCBob3cg
bWFueSBieXRlcyB0aGUgcmVzdWx0IHdpbGwgcmVxdWlyZQotICAgICAgICBpZiAoY2ggPCAoVUNo
YXIzMikweDgwKQotICAgICAgICAgICAgYnl0ZXNUb1dyaXRlID0gMTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgYnl0ZXNUb1dyaXRlID0gMjsKLQotICAgICAgICB0YXJnZXQgKz0gYnl0ZXNU
b1dyaXRlOwotICAgICAgICBpZiAodGFyZ2V0ID4gdGFyZ2V0RW5kKSB7Ci0gICAgICAgICAgICBz
b3VyY2UgPSBvbGRTb3VyY2U7IC8vIEJhY2sgdXAgc291cmNlIHBvaW50ZXIhCi0gICAgICAgICAg
ICB0YXJnZXQgLT0gYnl0ZXNUb1dyaXRlOwotICAgICAgICAgICAgcmVzdWx0ID0gdGFyZ2V0RXho
YXVzdGVkOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgc3dpdGNoIChi
eXRlc1RvV3JpdGUpIHsgLy8gbm90ZTogZXZlcnl0aGluZyBmYWxscyB0aHJvdWdoLgotICAgICAg
ICBjYXNlIDI6Ci0gICAgICAgICAgICAqLS10YXJnZXQgPSAoY2hhcikoKGNoIHwgYnl0ZU1hcmsp
ICYgYnl0ZU1hc2spOwotICAgICAgICAgICAgY2ggPj49IDY7Ci0gICAgICAgICAgICBGQUxMVEhS
T1VHSDsKLSAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgKi0tdGFyZ2V0ID0gIChjaGFyKShj
aCB8IGZpcnN0Qnl0ZU1hcmtbYnl0ZXNUb1dyaXRlXSk7Ci0gICAgICAgIH0KLSAgICAgICAgdGFy
Z2V0ICs9IGJ5dGVzVG9Xcml0ZTsKLSAgICB9Ci0gICAgKnNvdXJjZVN0YXJ0ID0gc291cmNlOwot
ICAgICp0YXJnZXRTdGFydCA9IHRhcmdldDsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1Db252
ZXJzaW9uUmVzdWx0IGNvbnZlcnRVVEYxNlRvVVRGOCgKLSAgICBjb25zdCBVQ2hhcioqIHNvdXJj
ZVN0YXJ0LCBjb25zdCBVQ2hhciogc291cmNlRW5kLCAKLSAgICBjaGFyKiogdGFyZ2V0U3RhcnQs
IGNoYXIqIHRhcmdldEVuZCwgYm9vbCBzdHJpY3QpCi17Ci0gICAgQ29udmVyc2lvblJlc3VsdCBy
ZXN1bHQgPSBjb252ZXJzaW9uT0s7Ci0gICAgY29uc3QgVUNoYXIqIHNvdXJjZSA9ICpzb3VyY2VT
dGFydDsKLSAgICBjaGFyKiB0YXJnZXQgPSAqdGFyZ2V0U3RhcnQ7Ci0gICAgd2hpbGUgKHNvdXJj
ZSA8IHNvdXJjZUVuZCkgewotICAgICAgICBVQ2hhcjMyIGNoOwotICAgICAgICB1bnNpZ25lZCBz
aG9ydCBieXRlc1RvV3JpdGUgPSAwOwotICAgICAgICBjb25zdCBVQ2hhcjMyIGJ5dGVNYXNrID0g
MHhCRjsKLSAgICAgICAgY29uc3QgVUNoYXIzMiBieXRlTWFyayA9IDB4ODA7IAotICAgICAgICBj
b25zdCBVQ2hhciogb2xkU291cmNlID0gc291cmNlOyAvLyBJbiBjYXNlIHdlIGhhdmUgdG8gYmFj
ayB1cCBiZWNhdXNlIG9mIHRhcmdldCBvdmVyZmxvdy4KLSAgICAgICAgY2ggPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBzaG9ydD4oKnNvdXJjZSsrKTsKLSAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIHN1
cnJvZ2F0ZSBwYWlyLCBjb252ZXJ0IHRvIFVDaGFyMzIgZmlyc3QuCi0gICAgICAgIGlmIChjaCA+
PSAweEQ4MDAgJiYgY2ggPD0gMHhEQkZGKSB7Ci0gICAgICAgICAgICAvLyBJZiB0aGUgMTYgYml0
cyBmb2xsb3dpbmcgdGhlIGhpZ2ggc3Vycm9nYXRlIGFyZSBpbiB0aGUgc291cmNlIGJ1ZmZlci4u
LgotICAgICAgICAgICAgaWYgKHNvdXJjZSA8IHNvdXJjZUVuZCkgewotICAgICAgICAgICAgICAg
IFVDaGFyMzIgY2gyID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KCpzb3VyY2UpOwotICAg
ICAgICAgICAgICAgIC8vIElmIGl0J3MgYSBsb3cgc3Vycm9nYXRlLCBjb252ZXJ0IHRvIFVDaGFy
MzIuCi0gICAgICAgICAgICAgICAgaWYgKGNoMiA+PSAweERDMDAgJiYgY2gyIDw9IDB4REZGRikg
ewotICAgICAgICAgICAgICAgICAgICBjaCA9ICgoY2ggLSAweEQ4MDApIDw8IDEwKSArIChjaDIg
LSAweERDMDApICsgMHgwMDEwMDAwOwotICAgICAgICAgICAgICAgICAgICArK3NvdXJjZTsKLSAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0cmljdCkgeyAvLyBpdCdzIGFuIHVucGFpcmVkIGhp
Z2ggc3Vycm9nYXRlCi0gICAgICAgICAgICAgICAgICAgIC0tc291cmNlOyAvLyByZXR1cm4gdG8g
dGhlIGlsbGVnYWwgdmFsdWUgaXRzZWxmCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNv
dXJjZUlsbGVnYWw7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0gZWxzZSB7IC8vIFdlIGRvbid0IGhhdmUgdGhlIDE2IGJpdHMgZm9s
bG93aW5nIHRoZSBoaWdoIHN1cnJvZ2F0ZS4KLSAgICAgICAgICAgICAgICAtLXNvdXJjZTsgLy8g
cmV0dXJuIHRvIHRoZSBoaWdoIHN1cnJvZ2F0ZQotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNv
dXJjZUV4aGF1c3RlZDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfSBlbHNlIGlmIChzdHJpY3QpIHsKLSAgICAgICAgICAgIC8vIFVURi0xNiBzdXJyb2dh
dGUgdmFsdWVzIGFyZSBpbGxlZ2FsIGluIFVURi0zMgotICAgICAgICAgICAgaWYgKGNoID49IDB4
REMwMCAmJiBjaCA8PSAweERGRkYpIHsKLSAgICAgICAgICAgICAgICAtLXNvdXJjZTsgLy8gcmV0
dXJuIHRvIHRoZSBpbGxlZ2FsIHZhbHVlIGl0c2VsZgotICAgICAgICAgICAgICAgIHJlc3VsdCA9
IHNvdXJjZUlsbGVnYWw7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICAgICAgLy8gRmlndXJlIG91dCBob3cgbWFueSBieXRlcyB0aGUgcmVzdWx0
IHdpbGwgcmVxdWlyZQotICAgICAgICBpZiAoY2ggPCAoVUNoYXIzMikweDgwKSB7Ci0gICAgICAg
ICAgICBieXRlc1RvV3JpdGUgPSAxOwotICAgICAgICB9IGVsc2UgaWYgKGNoIDwgKFVDaGFyMzIp
MHg4MDApIHsKLSAgICAgICAgICAgIGJ5dGVzVG9Xcml0ZSA9IDI7Ci0gICAgICAgIH0gZWxzZSBp
ZiAoY2ggPCAoVUNoYXIzMikweDEwMDAwKSB7Ci0gICAgICAgICAgICBieXRlc1RvV3JpdGUgPSAz
OwotICAgICAgICB9IGVsc2UgaWYgKGNoIDwgKFVDaGFyMzIpMHgxMTAwMDApIHsKLSAgICAgICAg
ICAgIGJ5dGVzVG9Xcml0ZSA9IDQ7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBieXRl
c1RvV3JpdGUgPSAzOwotICAgICAgICAgICAgY2ggPSByZXBsYWNlbWVudENoYXJhY3RlcjsKLSAg
ICAgICAgfQotCi0gICAgICAgIHRhcmdldCArPSBieXRlc1RvV3JpdGU7Ci0gICAgICAgIGlmICh0
YXJnZXQgPiB0YXJnZXRFbmQpIHsKLSAgICAgICAgICAgIHNvdXJjZSA9IG9sZFNvdXJjZTsgLy8g
QmFjayB1cCBzb3VyY2UgcG9pbnRlciEKLSAgICAgICAgICAgIHRhcmdldCAtPSBieXRlc1RvV3Jp
dGU7Ci0gICAgICAgICAgICByZXN1bHQgPSB0YXJnZXRFeGhhdXN0ZWQ7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICBzd2l0Y2ggKGJ5dGVzVG9Xcml0ZSkgeyAvLyBub3Rl
OiBldmVyeXRoaW5nIGZhbGxzIHRocm91Z2guCi0gICAgICAgICAgICBjYXNlIDQ6ICotLXRhcmdl
dCA9IChjaGFyKSgoY2ggfCBieXRlTWFyaykgJiBieXRlTWFzayk7IGNoID4+PSA2OyBGQUxMVEhS
T1VHSDsKLSAgICAgICAgICAgIGNhc2UgMzogKi0tdGFyZ2V0ID0gKGNoYXIpKChjaCB8IGJ5dGVN
YXJrKSAmIGJ5dGVNYXNrKTsgY2ggPj49IDY7IEZBTExUSFJPVUdIOwotICAgICAgICAgICAgY2Fz
ZSAyOiAqLS10YXJnZXQgPSAoY2hhcikoKGNoIHwgYnl0ZU1hcmspICYgYnl0ZU1hc2spOyBjaCA+
Pj0gNjsgRkFMTFRIUk9VR0g7Ci0gICAgICAgICAgICBjYXNlIDE6ICotLXRhcmdldCA9ICAoY2hh
cikoY2ggfCBmaXJzdEJ5dGVNYXJrW2J5dGVzVG9Xcml0ZV0pOwotICAgICAgICB9Ci0gICAgICAg
IHRhcmdldCArPSBieXRlc1RvV3JpdGU7Ci0gICAgfQotICAgICpzb3VyY2VTdGFydCA9IHNvdXJj
ZTsKLSAgICAqdGFyZ2V0U3RhcnQgPSB0YXJnZXQ7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
Ly8gVGhpcyBtdXN0IGJlIGNhbGxlZCB3aXRoIHRoZSBsZW5ndGggcHJlLWRldGVybWluZWQgYnkg
dGhlIGZpcnN0IGJ5dGUuCi0vLyBJZiBwcmVzZW50ZWQgd2l0aCBhIGxlbmd0aCA+IDQsIHRoaXMg
cmV0dXJucyBmYWxzZS4gIFRoZSBVbmljb2RlCi0vLyBkZWZpbml0aW9uIG9mIFVURi04IGdvZXMg
dXAgdG8gNC1ieXRlIHNlcXVlbmNlcy4KLXN0YXRpYyBib29sIGlzTGVnYWxVVEY4KGNvbnN0IHVu
c2lnbmVkIGNoYXIqIHNvdXJjZSwgaW50IGxlbmd0aCkKLXsKLSAgICB1bnNpZ25lZCBjaGFyIGE7
Ci0gICAgY29uc3QgdW5zaWduZWQgY2hhciogc3JjcHRyID0gc291cmNlICsgbGVuZ3RoOwotICAg
IHN3aXRjaCAobGVuZ3RoKSB7Ci0gICAgICAgIGRlZmF1bHQ6IHJldHVybiBmYWxzZTsKLSAgICAg
ICAgLy8gRXZlcnl0aGluZyBlbHNlIGZhbGxzIHRocm91Z2ggd2hlbiAidHJ1ZSIuLi4KLSAgICAg
ICAgY2FzZSA0OiBpZiAoKGEgPSAoKi0tc3JjcHRyKSkgPCAweDgwIHx8IGEgPiAweEJGKSByZXR1
cm4gZmFsc2U7IEZBTExUSFJPVUdIOwotICAgICAgICBjYXNlIDM6IGlmICgoYSA9ICgqLS1zcmNw
dHIpKSA8IDB4ODAgfHwgYSA+IDB4QkYpIHJldHVybiBmYWxzZTsgRkFMTFRIUk9VR0g7Ci0gICAg
ICAgIGNhc2UgMjogaWYgKChhID0gKCotLXNyY3B0cikpID4gMHhCRikgcmV0dXJuIGZhbHNlOwot
Ci0gICAgICAgIHN3aXRjaCAoKnNvdXJjZSkgewotICAgICAgICAgICAgLy8gbm8gZmFsbC10aHJv
dWdoIGluIHRoaXMgaW5uZXIgc3dpdGNoCi0gICAgICAgICAgICBjYXNlIDB4RTA6IGlmIChhIDwg
MHhBMCkgcmV0dXJuIGZhbHNlOyBicmVhazsKLSAgICAgICAgICAgIGNhc2UgMHhFRDogaWYgKGEg
PiAweDlGKSByZXR1cm4gZmFsc2U7IGJyZWFrOwotICAgICAgICAgICAgY2FzZSAweEYwOiBpZiAo
YSA8IDB4OTApIHJldHVybiBmYWxzZTsgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIDB4RjQ6IGlm
IChhID4gMHg4RikgcmV0dXJuIGZhbHNlOyBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6ICAg
aWYgKGEgPCAweDgwKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgRkFMTFRIUk9V
R0g7Ci0KLSAgICAgICAgY2FzZSAxOiBpZiAoKnNvdXJjZSA+PSAweDgwICYmICpzb3VyY2UgPCAw
eEMyKSByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGlmICgqc291cmNlID4gMHhGNCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotfQotCi0vLyBNYWdpYyB2YWx1ZXMg
c3VidHJhY3RlZCBmcm9tIGEgYnVmZmVyIHZhbHVlIGR1cmluZyBVVEY4IGNvbnZlcnNpb24uCi0v
LyBUaGlzIHRhYmxlIGNvbnRhaW5zIGFzIG1hbnkgdmFsdWVzIGFzIHRoZXJlIG1pZ2h0IGJlIHRy
YWlsaW5nIGJ5dGVzCi0vLyBpbiBhIFVURi04IHNlcXVlbmNlLgotc3RhdGljIGNvbnN0IFVDaGFy
MzIgb2Zmc2V0c0Zyb21VVEY4WzZdID0geyAweDAwMDAwMDAwVUwsIDB4MDAwMDMwODBVTCwgMHgw
MDBFMjA4MFVMLCAweDAzQzgyMDgwVUwsIHN0YXRpY19jYXN0PFVDaGFyMzI+KDB4RkEwODIwODBV
TCksIHN0YXRpY19jYXN0PFVDaGFyMzI+KDB4ODIwODIwODBVTCkgfTsKLQotc3RhdGljIGlubGlu
ZSBVQ2hhcjMyIHJlYWRVVEY4U2VxdWVuY2UoY29uc3QgY2hhciomIHNlcXVlbmNlLCB1bnNpZ25l
ZCBsZW5ndGgpCi17Ci0gICAgVUNoYXIzMiBjaGFyYWN0ZXIgPSAwOwotCi0gICAgLy8gVGhlIGNh
c2VzIGFsbCBmYWxsIHRocm91Z2guCi0gICAgc3dpdGNoIChsZW5ndGgpIHsKLSAgICAgICAgY2Fz
ZSA2OiBjaGFyYWN0ZXIgKz0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oKnNlcXVlbmNlKysp
OyBjaGFyYWN0ZXIgPDw9IDY7IEZBTExUSFJPVUdIOwotICAgICAgICBjYXNlIDU6IGNoYXJhY3Rl
ciArPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigqc2VxdWVuY2UrKyk7IGNoYXJhY3RlciA8
PD0gNjsgRkFMTFRIUk9VR0g7Ci0gICAgICAgIGNhc2UgNDogY2hhcmFjdGVyICs9IHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXI+KCpzZXF1ZW5jZSsrKTsgY2hhcmFjdGVyIDw8PSA2OyBGQUxMVEhS
T1VHSDsKLSAgICAgICAgY2FzZSAzOiBjaGFyYWN0ZXIgKz0gc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhcj4oKnNlcXVlbmNlKyspOyBjaGFyYWN0ZXIgPDw9IDY7IEZBTExUSFJPVUdIOwotICAgICAg
ICBjYXNlIDI6IGNoYXJhY3RlciArPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigqc2VxdWVu
Y2UrKyk7IGNoYXJhY3RlciA8PD0gNjsgRkFMTFRIUk9VR0g7Ci0gICAgICAgIGNhc2UgMTogY2hh
cmFjdGVyICs9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KCpzZXF1ZW5jZSsrKTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gY2hhcmFjdGVyIC0gb2Zmc2V0c0Zyb21VVEY4W2xlbmd0aCAtIDFdOwot
fQotCi1Db252ZXJzaW9uUmVzdWx0IGNvbnZlcnRVVEY4VG9VVEYxNigKLSAgICBjb25zdCBjaGFy
Kiogc291cmNlU3RhcnQsIGNvbnN0IGNoYXIqIHNvdXJjZUVuZCwgCi0gICAgVUNoYXIqKiB0YXJn
ZXRTdGFydCwgVUNoYXIqIHRhcmdldEVuZCwgYm9vbCogc291cmNlQWxsQVNDSUksIGJvb2wgc3Ry
aWN0KQotewotICAgIENvbnZlcnNpb25SZXN1bHQgcmVzdWx0ID0gY29udmVyc2lvbk9LOwotICAg
IGNvbnN0IGNoYXIqIHNvdXJjZSA9ICpzb3VyY2VTdGFydDsKLSAgICBVQ2hhciogdGFyZ2V0ID0g
KnRhcmdldFN0YXJ0OwotICAgIFVDaGFyIG9yQWxsRGF0YSA9IDA7Ci0gICAgd2hpbGUgKHNvdXJj
ZSA8IHNvdXJjZUVuZCkgewotICAgICAgICBpbnQgdXRmOFNlcXVlbmNlTGVuZ3RoID0gaW5saW5l
VVRGOFNlcXVlbmNlTGVuZ3RoKCpzb3VyY2UpOwotICAgICAgICBpZiAoc291cmNlRW5kIC0gc291
cmNlIDwgdXRmOFNlcXVlbmNlTGVuZ3RoKSAgewotICAgICAgICAgICAgcmVzdWx0ID0gc291cmNl
RXhoYXVzdGVkOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gRG8g
dGhpcyBjaGVjayB3aGV0aGVyIGxlbmllbnQgb3Igc3RyaWN0Ci0gICAgICAgIGlmICghaXNMZWdh
bFVURjgocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oc291cmNlKSwgdXRm
OFNlcXVlbmNlTGVuZ3RoKSkgewotICAgICAgICAgICAgcmVzdWx0ID0gc291cmNlSWxsZWdhbDsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgVUNoYXIzMiBjaGFyYWN0
ZXIgPSByZWFkVVRGOFNlcXVlbmNlKHNvdXJjZSwgdXRmOFNlcXVlbmNlTGVuZ3RoKTsKLQotICAg
ICAgICBpZiAodGFyZ2V0ID49IHRhcmdldEVuZCkgewotICAgICAgICAgICAgc291cmNlIC09IHV0
ZjhTZXF1ZW5jZUxlbmd0aDsgLy8gQmFjayB1cCBzb3VyY2UgcG9pbnRlciEKLSAgICAgICAgICAg
IHJlc3VsdCA9IHRhcmdldEV4aGF1c3RlZDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKFVfSVNfQk1QKGNoYXJhY3RlcikpIHsKLSAgICAgICAgICAgIC8vIFVU
Ri0xNiBzdXJyb2dhdGUgdmFsdWVzIGFyZSBpbGxlZ2FsIGluIFVURi0zMgotICAgICAgICAgICAg
aWYgKFVfSVNfU1VSUk9HQVRFKGNoYXJhY3RlcikpIHsKLSAgICAgICAgICAgICAgICBpZiAoc3Ry
aWN0KSB7Ci0gICAgICAgICAgICAgICAgICAgIHNvdXJjZSAtPSB1dGY4U2VxdWVuY2VMZW5ndGg7
IC8vIHJldHVybiB0byB0aGUgaWxsZWdhbCB2YWx1ZSBpdHNlbGYKLSAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gc291cmNlSWxsZWdhbDsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgKnRhcmdldCsrID0g
cmVwbGFjZW1lbnRDaGFyYWN0ZXI7Ci0gICAgICAgICAgICAgICAgICAgIG9yQWxsRGF0YSB8PSBy
ZXBsYWNlbWVudENoYXJhY3RlcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgICp0YXJnZXQrKyA9IGNoYXJhY3RlcjsgLy8gbm9ybWFsIGNh
c2UKLSAgICAgICAgICAgICAgICBvckFsbERhdGEgfD0gY2hhcmFjdGVyOwotICAgICAgICAgICAg
fQotICAgICAgICB9IGVsc2UgaWYgKFVfSVNfU1VQUExFTUVOVEFSWShjaGFyYWN0ZXIpKSB7Ci0g
ICAgICAgICAgICAvLyB0YXJnZXQgaXMgYSBjaGFyYWN0ZXIgaW4gcmFuZ2UgMHhGRkZGIC0gMHgx
MEZGRkYKLSAgICAgICAgICAgIGlmICh0YXJnZXQgKyAxID49IHRhcmdldEVuZCkgewotICAgICAg
ICAgICAgICAgIHNvdXJjZSAtPSB1dGY4U2VxdWVuY2VMZW5ndGg7IC8vIEJhY2sgdXAgc291cmNl
IHBvaW50ZXIhCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gdGFyZ2V0RXhoYXVzdGVkOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgKnRhcmdldCsr
ID0gVTE2X0xFQUQoY2hhcmFjdGVyKTsKLSAgICAgICAgICAgICp0YXJnZXQrKyA9IFUxNl9UUkFJ
TChjaGFyYWN0ZXIpOwotICAgICAgICAgICAgb3JBbGxEYXRhID0gMHhmZmZmOwotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgaWYgKHN0cmljdCkgewotICAgICAgICAgICAgICAgIHNvdXJj
ZSAtPSB1dGY4U2VxdWVuY2VMZW5ndGg7IC8vIHJldHVybiB0byB0aGUgc3RhcnQKLSAgICAgICAg
ICAgICAgICByZXN1bHQgPSBzb3VyY2VJbGxlZ2FsOwotICAgICAgICAgICAgICAgIGJyZWFrOyAv
LyBCYWlsIG91dDsgc2hvdWxkbid0IGNvbnRpbnVlCi0gICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgICp0YXJnZXQrKyA9IHJlcGxhY2VtZW50Q2hhcmFjdGVyOwotICAgICAgICAg
ICAgICAgIG9yQWxsRGF0YSB8PSByZXBsYWNlbWVudENoYXJhY3RlcjsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgIH0KLSAgICAqc291cmNlU3RhcnQgPSBzb3VyY2U7Ci0gICAgKnRhcmdl
dFN0YXJ0ID0gdGFyZ2V0OwotCi0gICAgaWYgKHNvdXJjZUFsbEFTQ0lJKQotICAgICAgICAqc291
cmNlQWxsQVNDSUkgPSAhKG9yQWxsRGF0YSAmIH4weDdmKTsKLQotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLXVuc2lnbmVkIGNhbGN1bGF0ZVN0cmluZ0hhc2hBbmRMZW5ndGhGcm9tVVRGOE1hc2tp
bmdUb3A4Qml0cyhjb25zdCBjaGFyKiBkYXRhLCBjb25zdCBjaGFyKiBkYXRhRW5kLCB1bnNpZ25l
ZCYgZGF0YUxlbmd0aCwgdW5zaWduZWQmIHV0ZjE2TGVuZ3RoKQotewotICAgIGlmICghZGF0YSkK
LSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBTdHJpbmdIYXNoZXIgc3RyaW5nSGFzaGVyOwotICAg
IGRhdGFMZW5ndGggPSAwOwotICAgIHV0ZjE2TGVuZ3RoID0gMDsKLQotICAgIHdoaWxlIChkYXRh
IDwgZGF0YUVuZCB8fCAoIWRhdGFFbmQgJiYgKmRhdGEpKSB7Ci0gICAgICAgIGlmIChpc0FTQ0lJ
KCpkYXRhKSkgewotICAgICAgICAgICAgc3RyaW5nSGFzaGVyLmFkZENoYXJhY3RlcigqZGF0YSsr
KTsKLSAgICAgICAgICAgIGRhdGFMZW5ndGgrKzsKLSAgICAgICAgICAgIHV0ZjE2TGVuZ3RoKys7
Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGludCB1dGY4U2Vx
dWVuY2VMZW5ndGggPSBpbmxpbmVVVEY4U2VxdWVuY2VMZW5ndGhOb25BU0NJSSgqZGF0YSk7Ci0g
ICAgICAgIGRhdGFMZW5ndGggKz0gdXRmOFNlcXVlbmNlTGVuZ3RoOwotCi0gICAgICAgIGlmICgh
ZGF0YUVuZCkgewotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCB1dGY4U2VxdWVuY2VM
ZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIGlmICghZGF0YVtpXSkKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoZGF0
YUVuZCAtIGRhdGEgPCB1dGY4U2VxdWVuY2VMZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4gMDsK
LQotICAgICAgICBpZiAoIWlzTGVnYWxVVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWdu
ZWQgY2hhcio+KGRhdGEpLCB1dGY4U2VxdWVuY2VMZW5ndGgpKQotICAgICAgICAgICAgcmV0dXJu
IDA7Ci0KLSAgICAgICAgVUNoYXIzMiBjaGFyYWN0ZXIgPSByZWFkVVRGOFNlcXVlbmNlKGRhdGEs
IHV0ZjhTZXF1ZW5jZUxlbmd0aCk7Ci0gICAgICAgIEFTU0VSVCghaXNBU0NJSShjaGFyYWN0ZXIp
KTsKLQotICAgICAgICBpZiAoVV9JU19CTVAoY2hhcmFjdGVyKSkgewotICAgICAgICAgICAgLy8g
VVRGLTE2IHN1cnJvZ2F0ZSB2YWx1ZXMgYXJlIGlsbGVnYWwgaW4gVVRGLTMyCi0gICAgICAgICAg
ICBpZiAoVV9JU19TVVJST0dBVEUoY2hhcmFjdGVyKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
MDsKLSAgICAgICAgICAgIHN0cmluZ0hhc2hlci5hZGRDaGFyYWN0ZXIoc3RhdGljX2Nhc3Q8VUNo
YXI+KGNoYXJhY3RlcikpOyAvLyBub3JtYWwgY2FzZQotICAgICAgICAgICAgdXRmMTZMZW5ndGgr
KzsKLSAgICAgICAgfSBlbHNlIGlmIChVX0lTX1NVUFBMRU1FTlRBUlkoY2hhcmFjdGVyKSkgewot
ICAgICAgICAgICAgc3RyaW5nSGFzaGVyLmFkZENoYXJhY3RlcnMoc3RhdGljX2Nhc3Q8VUNoYXI+
KFUxNl9MRUFEKGNoYXJhY3RlcikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8VUNoYXI+KFUxNl9UUkFJTChjaGFyYWN0ZXIpKSk7Ci0gICAgICAg
ICAgICB1dGYxNkxlbmd0aCArPSAyOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJldHVy
biAwOwotICAgIH0KLQotICAgIHJldHVybiBzdHJpbmdIYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01h
c2tlZCgpOwotfQotCi1ib29sIGVxdWFsVVRGMTZXaXRoVVRGOChjb25zdCBVQ2hhciogYSwgY29u
c3QgY2hhciogYiwgY29uc3QgY2hhciogYkVuZCkKLXsKLSAgICB3aGlsZSAoYiA8IGJFbmQpIHsK
LSAgICAgICAgaWYgKGlzQVNDSUkoKmEpIHx8IGlzQVNDSUkoKmIpKSB7Ci0gICAgICAgICAgICBp
ZiAoKmErKyAhPSAqYisrKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IHV0ZjhTZXF1ZW5jZUxlbmd0
aCA9IGlubGluZVVURjhTZXF1ZW5jZUxlbmd0aE5vbkFTQ0lJKCpiKTsKLQotICAgICAgICBpZiAo
YkVuZCAtIGIgPCB1dGY4U2VxdWVuY2VMZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICAgICAgaWYgKCFpc0xlZ2FsVVRGOChyZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2ln
bmVkIGNoYXIqPihiKSwgdXRmOFNlcXVlbmNlTGVuZ3RoKSkKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgICAgICBVQ2hhcjMyIGNoYXJhY3RlciA9IHJlYWRVVEY4U2VxdWVuY2UoYiwg
dXRmOFNlcXVlbmNlTGVuZ3RoKTsKLSAgICAgICAgQVNTRVJUKCFpc0FTQ0lJKGNoYXJhY3Rlcikp
OwotCi0gICAgICAgIGlmIChVX0lTX0JNUChjaGFyYWN0ZXIpKSB7Ci0gICAgICAgICAgICAvLyBV
VEYtMTYgc3Vycm9nYXRlIHZhbHVlcyBhcmUgaWxsZWdhbCBpbiBVVEYtMzIKLSAgICAgICAgICAg
IGlmIChVX0lTX1NVUlJPR0FURShjaGFyYWN0ZXIpKQotICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgIGlmICgqYSsrICE9IGNoYXJhY3RlcikKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0gZWxzZSBpZiAoVV9JU19TVVBQTEVNRU5UQVJZKGNo
YXJhY3RlcikpIHsKLSAgICAgICAgICAgIGlmICgqYSsrICE9IFUxNl9MRUFEKGNoYXJhY3Rlcikp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYgKCphKysgIT0g
VTE2X1RSQUlMKGNoYXJhY3RlcikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotYm9vbCBlcXVhbExhdGluMVdpdGhVVEY4KGNvbnN0IExDaGFyKiBhLCBj
b25zdCBjaGFyKiBiLCBjb25zdCBjaGFyKiBiRW5kKQotewotICAgIHdoaWxlIChiIDwgYkVuZCkg
ewotICAgICAgICBpZiAoaXNBU0NJSSgqYSkgfHwgaXNBU0NJSSgqYikpIHsKLSAgICAgICAgICAg
IGlmICgqYSsrICE9ICpiKyspCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoYiArIDEgPT0gYkVuZCkK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAoKGJbMF0gJiAweEUwKSAh
PSAweEMwIHx8IChiWzFdICYgMHhDMCkgIT0gMHg4MCkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgICAgICBMQ2hhciBjaGFyYWN0ZXIgPSAoKGJbMF0gJiAweDFGKSA8PCA2KSB8IChi
WzFdICYgMHgzRik7Ci0KLSAgICAgICAgYiArPSAyOwotCi0gICAgICAgIGlmICgqYSsrICE9IGNo
YXJhY3RlcikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgVW5pY29kZQotfSAvLyBuYW1lc3BhY2UgV1RGCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL1VURjguaCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaWNvZGUvVVRGOC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzY0ZmU4N2Yz
NzRhNDg5OWJlNGQ4YTMzNzJkYzQxOTIxZDJlNmVjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvVVRGOC5oCisrKyAv
ZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx1bmljb2RlL3V0eXBl
cy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0xDaGFyLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotbmFt
ZXNwYWNlIFVuaWNvZGUgewotCi0gICAgLy8gR2l2ZW4gYSBmaXJzdCBieXRlLCBnaXZlcyB0aGUg
bGVuZ3RoIG9mIHRoZSBVVEYtOCBzZXF1ZW5jZSBpdCBiZWdpbnMuCi0gICAgLy8gUmV0dXJucyAw
IGZvciBieXRlcyB0aGF0IGFyZSBub3QgbGVnYWwgc3RhcnRzIG9mIFVURi04IHNlcXVlbmNlcy4K
LSAgICAvLyBPbmx5IGFsbG93cyBzZXF1ZW5jZXMgb2YgdXAgdG8gNCBieXRlcywgc2luY2UgdGhh
dCB3b3JrcyBmb3IgYWxsIFVuaWNvZGUgY2hhcmFjdGVycyAoVS0wMDAwMDAwMCB0byBVLTAwMTBG
RkZGKS4KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgaW50IFVURjhTZXF1ZW5jZUxlbmd0aChjaGFy
KTsKLQotICAgIC8vIFRha2VzIGEgbnVsbC10ZXJtaW5hdGVkIEMtc3R5bGUgc3RyaW5nIHdpdGgg
YSBVVEYtOCBzZXF1ZW5jZSBpbiBpdCBhbmQgY29udmVydHMgaXQgdG8gYSBjaGFyYWN0ZXIuCi0g
ICAgLy8gT25seSBhbGxvd3MgVW5pY29kZSBjaGFyYWN0ZXJzIChVLTAwMDAwMDAwIHRvIFUtMDAx
MEZGRkYpLgotICAgIC8vIFJldHVybnMgLTEgaWYgdGhlIHNlcXVlbmNlIGlzIG5vdCB2YWxpZCAo
aW5jbHVkaW5nIHByZXNlbmNlIG9mIGV4dHJhIGJ5dGVzKS4KLSAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgaW50IGRlY29kZVVURjhTZXF1ZW5jZShjb25zdCBjaGFyKik7Ci0KLSAgICB0eXBlZGVmIGVu
dW0gewotICAgICAgICAgICAgY29udmVyc2lvbk9LLCAgICAgICAvLyBjb252ZXJzaW9uIHN1Y2Nl
c3NmdWwKLSAgICAgICAgICAgIHNvdXJjZUV4aGF1c3RlZCwgICAgLy8gcGFydGlhbCBjaGFyYWN0
ZXIgaW4gc291cmNlLCBidXQgaGl0IGVuZAotICAgICAgICAgICAgdGFyZ2V0RXhoYXVzdGVkLCAg
ICAvLyBpbnN1ZmYuIHJvb20gaW4gdGFyZ2V0IGZvciBjb252ZXJzaW9uCi0gICAgICAgICAgICBz
b3VyY2VJbGxlZ2FsICAgICAgIC8vIHNvdXJjZSBzZXF1ZW5jZSBpcyBpbGxlZ2FsL21hbGZvcm1l
ZAotICAgIH0gQ29udmVyc2lvblJlc3VsdDsKLQotICAgIC8vIFRoZXNlIGNvbnZlcnNpb24gZnVu
Y3Rpb25zIHRha2UgYSAic3RyaWN0IiBhcmd1bWVudC4gV2hlbiB0aGlzCi0gICAgLy8gZmxhZyBp
cyBzZXQgdG8gc3RyaWN0LCBib3RoIGlycmVndWxhciBzZXF1ZW5jZXMgYW5kIGlzb2xhdGVkIHN1
cnJvZ2F0ZXMKLSAgICAvLyB3aWxsIGNhdXNlIGFuIGVycm9yLiAgV2hlbiB0aGUgZmxhZyBpcyBz
ZXQgdG8gbGVuaWVudCwgYm90aCBpcnJlZ3VsYXIKLSAgICAvLyBzZXF1ZW5jZXMgYW5kIGlzb2xh
dGVkIHN1cnJvZ2F0ZXMgYXJlIGNvbnZlcnRlZC4KLSAgICAvLyAKLSAgICAvLyBXaGV0aGVyIHRo
ZSBmbGFnIGlzIHN0cmljdCBvciBsZW5pZW50LCBhbGwgaWxsZWdhbCBzZXF1ZW5jZXMgd2lsbCBj
YXVzZQotICAgIC8vIGFuIGVycm9yIHJldHVybi4gVGhpcyBpbmNsdWRlcyBzZXF1ZW5jZXMgc3Vj
aCBhczogPEY0IDkwIDgwIDgwPiwgPEMwIDgwPiwKLSAgICAvLyBvciA8QTA+IGluIFVURi04LCBh
bmQgdmFsdWVzIGFib3ZlIDB4MTBGRkZGIGluIFVURi0zMi4gQ29uZm9ybWFudCBjb2RlCi0gICAg
Ly8gbXVzdCBjaGVjayBmb3IgaWxsZWdhbCBzZXF1ZW5jZXMuCi0gICAgLy8gCi0gICAgLy8gV2hl
biB0aGUgZmxhZyBpcyBzZXQgdG8gbGVuaWVudCwgY2hhcmFjdGVycyBvdmVyIDB4MTBGRkZGIGFy
ZSBjb252ZXJ0ZWQKLSAgICAvLyB0byB0aGUgcmVwbGFjZW1lbnQgY2hhcmFjdGVyOyBvdGhlcndp
c2UgKHdoZW4gdGhlIGZsYWcgaXMgc2V0IHRvIHN0cmljdCkKLSAgICAvLyB0aGV5IGNvbnN0aXR1
dGUgYW4gZXJyb3IuCi0KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQ29udmVyc2lvblJlc3VsdCBj
b252ZXJ0VVRGOFRvVVRGMTYoCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqKiBzb3Vy
Y2VTdGFydCwgY29uc3QgY2hhciogc291cmNlRW5kLCAKLSAgICAgICAgICAgICAgICAgICAgVUNo
YXIqKiB0YXJnZXRTdGFydCwgVUNoYXIqIHRhcmdldEVuZCwgYm9vbCogaXNTb3VyY2VBbGxBU0NJ
SSA9IDAsIGJvb2wgc3RyaWN0ID0gdHJ1ZSk7Ci0KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQ29u
dmVyc2lvblJlc3VsdCBjb252ZXJ0TGF0aW4xVG9VVEY4KAotICAgICAgICAgICAgICAgICAgICBj
b25zdCBMQ2hhcioqIHNvdXJjZVN0YXJ0LCBjb25zdCBMQ2hhciogc291cmNlRW5kLCAKLSAgICAg
ICAgICAgICAgICAgICAgY2hhcioqIHRhcmdldFN0YXJ0LCBjaGFyKiB0YXJnZXRFbmQpOwotCi0g
ICAgV1RGX0VYUE9SVF9QUklWQVRFIENvbnZlcnNpb25SZXN1bHQgY29udmVydFVURjE2VG9VVEY4
KAotICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhcioqIHNvdXJjZVN0YXJ0LCBjb25zdCBV
Q2hhciogc291cmNlRW5kLCAKLSAgICAgICAgICAgICAgICAgICAgY2hhcioqIHRhcmdldFN0YXJ0
LCBjaGFyKiB0YXJnZXRFbmQsIGJvb2wgc3RyaWN0ID0gdHJ1ZSk7Ci0KLSAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgdW5zaWduZWQgY2FsY3VsYXRlU3RyaW5nSGFzaEFuZExlbmd0aEZyb21VVEY4TWFz
a2luZ1RvcDhCaXRzKGNvbnN0IGNoYXIqIGRhdGEsIGNvbnN0IGNoYXIqIGRhdGFFbmQsIHVuc2ln
bmVkJiBkYXRhTGVuZ3RoLCB1bnNpZ25lZCYgdXRmMTZMZW5ndGgpOwotCi0gICAgLy8gVGhlIGNh
bGxlciBvZiB0aGVzZSBmdW5jdGlvbnMgYWxyZWFkeSBrbm93cyB0aGF0IHRoZSBsZW5ndGhzIGFy
ZSB0aGUgc2FtZSwgc28gd2Ugb21pdCBhbiBlbmQgYXJndW1lbnQgZm9yIFVURi0xNiBhbmQgTGF0
aW4tMS4KLSAgICBib29sIGVxdWFsVVRGMTZXaXRoVVRGOChjb25zdCBVQ2hhciogc3RyaW5nSW5V
VEYxNiwgY29uc3QgY2hhciogc3RyaW5nSW5VVEY4LCBjb25zdCBjaGFyKiBzdHJpbmdJblVURjhF
bmQpOwotICAgIGJvb2wgZXF1YWxMYXRpbjFXaXRoVVRGOChjb25zdCBMQ2hhciogc3RyaW5nSW5M
YXRpbjEsIGNvbnN0IGNoYXIqIHN0cmluZ0luVVRGOCwgY29uc3QgY2hhciogc3RyaW5nSW5VVEY4
RW5kKTsKLQotfSAvLyBuYW1lc3BhY2UgVW5pY29kZQotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL1VURjhDb252ZXJzaW9uLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL3VuaWNvZGUvVVRGOENvbnZlcnNpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhNGVlODMx
NTczZjI1NjVhYzY2MDc4MDRmYWMxZjg3MDA2MDc0ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bmljb2RlL1VURjhDb252ZXJzaW9uLmNwcApAQCAtMCwwICsxLDQ4OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUBw
YXJvZ2EuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VURjhDb252ZXJzaW9u
Lmg+CisKKyNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0hhc2hlci5oPgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CisK
K25hbWVzcGFjZSBXVEYgeworbmFtZXNwYWNlIFVuaWNvZGUgeworCitpbmxpbmUgaW50IGlubGlu
ZVVURjhTZXF1ZW5jZUxlbmd0aE5vbkFTQ0lJKGNoYXIgYjApCit7CisgICAgaWYgKChiMCAmIDB4
QzApICE9IDB4QzApCisgICAgICAgIHJldHVybiAwOworICAgIGlmICgoYjAgJiAweEUwKSA9PSAw
eEMwKQorICAgICAgICByZXR1cm4gMjsKKyAgICBpZiAoKGIwICYgMHhGMCkgPT0gMHhFMCkKKyAg
ICAgICAgcmV0dXJuIDM7CisgICAgaWYgKChiMCAmIDB4RjgpID09IDB4RjApCisgICAgICAgIHJl
dHVybiA0OworICAgIHJldHVybiAwOworfQorCitpbmxpbmUgaW50IGlubGluZVVURjhTZXF1ZW5j
ZUxlbmd0aChjaGFyIGIwKQoreworICAgIHJldHVybiBpc0FTQ0lJKGIwKSA/IDEgOiBpbmxpbmVV
VEY4U2VxdWVuY2VMZW5ndGhOb25BU0NJSShiMCk7Cit9CisKK2ludCBVVEY4U2VxdWVuY2VMZW5n
dGgoY2hhciBiMCkKK3sKKyAgICByZXR1cm4gaXNBU0NJSShiMCkgPyAxIDogaW5saW5lVVRGOFNl
cXVlbmNlTGVuZ3RoTm9uQVNDSUkoYjApOworfQorCitpbnQgZGVjb2RlVVRGOFNlcXVlbmNlKGNv
bnN0IGNoYXIqIHNlcXVlbmNlKQoreworICAgIC8vIEhhbmRsZSAwLWJ5dGUgc2VxdWVuY2VzIChu
ZXZlciB2YWxpZCkuCisgICAgY29uc3QgdW5zaWduZWQgY2hhciBiMCA9IHNlcXVlbmNlWzBdOwor
ICAgIGNvbnN0IGludCBsZW5ndGggPSBpbmxpbmVVVEY4U2VxdWVuY2VMZW5ndGgoYjApOworICAg
IGlmIChsZW5ndGggPT0gMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgLy8gSGFuZGxlIDEt
Ynl0ZSBzZXF1ZW5jZXMgKHBsYWluIEFTQ0lJKS4KKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyIGIx
ID0gc2VxdWVuY2VbMV07CisgICAgaWYgKGxlbmd0aCA9PSAxKSB7CisgICAgICAgIGlmIChiMSkK
KyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgcmV0dXJuIGIwOworICAgIH0KKworICAg
IC8vIEhhbmRsZSAyLWJ5dGUgc2VxdWVuY2VzLgorICAgIGlmICgoYjEgJiAweEMwKSAhPSAweDgw
KQorICAgICAgICByZXR1cm4gLTE7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciBiMiA9IHNlcXVl
bmNlWzJdOworICAgIGlmIChsZW5ndGggPT0gMikgeworICAgICAgICBpZiAoYjIpCisgICAgICAg
ICAgICByZXR1cm4gLTE7CisgICAgICAgIGNvbnN0IGludCBjID0gKChiMCAmIDB4MUYpIDw8IDYp
IHwgKGIxICYgMHgzRik7CisgICAgICAgIGlmIChjIDwgMHg4MCkKKyAgICAgICAgICAgIHJldHVy
biAtMTsKKyAgICAgICAgcmV0dXJuIGM7CisgICAgfQorCisgICAgLy8gSGFuZGxlIDMtYnl0ZSBz
ZXF1ZW5jZXMuCisgICAgaWYgKChiMiAmIDB4QzApICE9IDB4ODApCisgICAgICAgIHJldHVybiAt
MTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyIGIzID0gc2VxdWVuY2VbM107CisgICAgaWYgKGxl
bmd0aCA9PSAzKSB7CisgICAgICAgIGlmIChiMykKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAg
ICAgICAgY29uc3QgaW50IGMgPSAoKGIwICYgMHhGKSA8PCAxMikgfCAoKGIxICYgMHgzRikgPDwg
NikgfCAoYjIgJiAweDNGKTsKKyAgICAgICAgaWYgKGMgPCAweDgwMCkKKyAgICAgICAgICAgIHJl
dHVybiAtMTsKKyAgICAgICAgLy8gVVRGLTE2IHN1cnJvZ2F0ZXMgc2hvdWxkIG5ldmVyIGFwcGVh
ciBpbiBVVEYtOCBkYXRhLgorICAgICAgICBpZiAoYyA+PSAweEQ4MDAgJiYgYyA8PSAweERGRkYp
CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHJldHVybiBjOworICAgIH0KKworICAg
IC8vIEhhbmRsZSA0LWJ5dGUgc2VxdWVuY2VzLgorICAgIGlmICgoYjMgJiAweEMwKSAhPSAweDgw
KQorICAgICAgICByZXR1cm4gLTE7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciBiNCA9IHNlcXVl
bmNlWzRdOworICAgIGlmIChsZW5ndGggPT0gNCkgeworICAgICAgICBpZiAoYjQpCisgICAgICAg
ICAgICByZXR1cm4gLTE7CisgICAgICAgIGNvbnN0IGludCBjID0gKChiMCAmIDB4NykgPDwgMTgp
IHwgKChiMSAmIDB4M0YpIDw8IDEyKSB8ICgoYjIgJiAweDNGKSA8PCA2KSB8IChiMyAmIDB4M0Yp
OworICAgICAgICBpZiAoYyA8IDB4MTAwMDAgfHwgYyA+IDB4MTBGRkZGKQorICAgICAgICAgICAg
cmV0dXJuIC0xOworICAgICAgICByZXR1cm4gYzsKKyAgICB9CisKKyAgICByZXR1cm4gLTE7Cit9
CisKKy8vIE9uY2UgdGhlIGJpdHMgYXJlIHNwbGl0IG91dCBpbnRvIGJ5dGVzIG9mIFVURi04LCB0
aGlzIGlzIGEgbWFzayBPUi1lZAorLy8gaW50byB0aGUgZmlyc3QgYnl0ZSwgZGVwZW5kaW5nIG9u
IGhvdyBtYW55IGJ5dGVzIGZvbGxvdy4gIFRoZXJlIGFyZQorLy8gYXMgbWFueSBlbnRyaWVzIGlu
IHRoaXMgdGFibGUgYXMgdGhlcmUgYXJlIFVURi04IHNlcXVlbmNlIHR5cGVzLgorLy8gKEkuZS4s
IG9uZSBieXRlIHNlcXVlbmNlLCB0d28gYnl0ZS4uLiBldGMuKS4gUmVtZW1iZXIgdGhhdCBzZXF1
ZW5jcworLy8gZm9yICpsZWdhbCogVVRGLTggd2lsbCBiZSA0IG9yIGZld2VyIGJ5dGVzIHRvdGFs
Lgorc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZmlyc3RCeXRlTWFya1s3XSA9IHsgMHgwMCwg
MHgwMCwgMHhDMCwgMHhFMCwgMHhGMCwgMHhGOCwgMHhGQyB9OworCitDb252ZXJzaW9uUmVzdWx0
IGNvbnZlcnRMYXRpbjFUb1VURjgoCisgICAgY29uc3QgTENoYXIqKiBzb3VyY2VTdGFydCwgY29u
c3QgTENoYXIqIHNvdXJjZUVuZCwgCisgICAgY2hhcioqIHRhcmdldFN0YXJ0LCBjaGFyKiB0YXJn
ZXRFbmQpCit7CisgICAgQ29udmVyc2lvblJlc3VsdCByZXN1bHQgPSBjb252ZXJzaW9uT0s7Cisg
ICAgY29uc3QgTENoYXIqIHNvdXJjZSA9ICpzb3VyY2VTdGFydDsKKyAgICBjaGFyKiB0YXJnZXQg
PSAqdGFyZ2V0U3RhcnQ7CisgICAgd2hpbGUgKHNvdXJjZSA8IHNvdXJjZUVuZCkgeworICAgICAg
ICBVQ2hhcjMyIGNoOworICAgICAgICB1bnNpZ25lZCBzaG9ydCBieXRlc1RvV3JpdGUgPSAwOwor
ICAgICAgICBjb25zdCBVQ2hhcjMyIGJ5dGVNYXNrID0gMHhCRjsKKyAgICAgICAgY29uc3QgVUNo
YXIzMiBieXRlTWFyayA9IDB4ODA7IAorICAgICAgICBjb25zdCBMQ2hhciogb2xkU291cmNlID0g
c291cmNlOyAvLyBJbiBjYXNlIHdlIGhhdmUgdG8gYmFjayB1cCBiZWNhdXNlIG9mIHRhcmdldCBv
dmVyZmxvdy4KKyAgICAgICAgY2ggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydD4oKnNvdXJj
ZSsrKTsKKworICAgICAgICAvLyBGaWd1cmUgb3V0IGhvdyBtYW55IGJ5dGVzIHRoZSByZXN1bHQg
d2lsbCByZXF1aXJlCisgICAgICAgIGlmIChjaCA8IChVQ2hhcjMyKTB4ODApCisgICAgICAgICAg
ICBieXRlc1RvV3JpdGUgPSAxOworICAgICAgICBlbHNlCisgICAgICAgICAgICBieXRlc1RvV3Jp
dGUgPSAyOworCisgICAgICAgIHRhcmdldCArPSBieXRlc1RvV3JpdGU7CisgICAgICAgIGlmICh0
YXJnZXQgPiB0YXJnZXRFbmQpIHsKKyAgICAgICAgICAgIHNvdXJjZSA9IG9sZFNvdXJjZTsgLy8g
QmFjayB1cCBzb3VyY2UgcG9pbnRlciEKKyAgICAgICAgICAgIHRhcmdldCAtPSBieXRlc1RvV3Jp
dGU7CisgICAgICAgICAgICByZXN1bHQgPSB0YXJnZXRFeGhhdXN0ZWQ7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBzd2l0Y2ggKGJ5dGVzVG9Xcml0ZSkgeyAvLyBub3Rl
OiBldmVyeXRoaW5nIGZhbGxzIHRocm91Z2guCisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAg
ICotLXRhcmdldCA9IChjaGFyKSgoY2ggfCBieXRlTWFyaykgJiBieXRlTWFzayk7CisgICAgICAg
ICAgICBjaCA+Pj0gNjsKKyAgICAgICAgICAgIEZBTExUSFJPVUdIOworICAgICAgICBjYXNlIDE6
CisgICAgICAgICAgICAqLS10YXJnZXQgPSAgKGNoYXIpKGNoIHwgZmlyc3RCeXRlTWFya1tieXRl
c1RvV3JpdGVdKTsKKyAgICAgICAgfQorICAgICAgICB0YXJnZXQgKz0gYnl0ZXNUb1dyaXRlOwor
ICAgIH0KKyAgICAqc291cmNlU3RhcnQgPSBzb3VyY2U7CisgICAgKnRhcmdldFN0YXJ0ID0gdGFy
Z2V0OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0NvbnZlcnNpb25SZXN1bHQgY29udmVydFVU
RjE2VG9VVEY4KAorICAgIGNvbnN0IFVDaGFyKiogc291cmNlU3RhcnQsIGNvbnN0IFVDaGFyKiBz
b3VyY2VFbmQsIAorICAgIGNoYXIqKiB0YXJnZXRTdGFydCwgY2hhciogdGFyZ2V0RW5kLCBib29s
IHN0cmljdCkKK3sKKyAgICBDb252ZXJzaW9uUmVzdWx0IHJlc3VsdCA9IGNvbnZlcnNpb25PSzsK
KyAgICBjb25zdCBVQ2hhciogc291cmNlID0gKnNvdXJjZVN0YXJ0OworICAgIGNoYXIqIHRhcmdl
dCA9ICp0YXJnZXRTdGFydDsKKyAgICB3aGlsZSAoc291cmNlIDwgc291cmNlRW5kKSB7CisgICAg
ICAgIFVDaGFyMzIgY2g7CisgICAgICAgIHVuc2lnbmVkIHNob3J0IGJ5dGVzVG9Xcml0ZSA9IDA7
CisgICAgICAgIGNvbnN0IFVDaGFyMzIgYnl0ZU1hc2sgPSAweEJGOworICAgICAgICBjb25zdCBV
Q2hhcjMyIGJ5dGVNYXJrID0gMHg4MDsgCisgICAgICAgIGNvbnN0IFVDaGFyKiBvbGRTb3VyY2Ug
PSBzb3VyY2U7IC8vIEluIGNhc2Ugd2UgaGF2ZSB0byBiYWNrIHVwIGJlY2F1c2Ugb2YgdGFyZ2V0
IG92ZXJmbG93LgorICAgICAgICBjaCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0Pigqc291
cmNlKyspOworICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgc3Vycm9nYXRlIHBhaXIsIGNvbnZlcnQg
dG8gVUNoYXIzMiBmaXJzdC4KKyAgICAgICAgaWYgKGNoID49IDB4RDgwMCAmJiBjaCA8PSAweERC
RkYpIHsKKyAgICAgICAgICAgIC8vIElmIHRoZSAxNiBiaXRzIGZvbGxvd2luZyB0aGUgaGlnaCBz
dXJyb2dhdGUgYXJlIGluIHRoZSBzb3VyY2UgYnVmZmVyLi4uCisgICAgICAgICAgICBpZiAoc291
cmNlIDwgc291cmNlRW5kKSB7CisgICAgICAgICAgICAgICAgVUNoYXIzMiBjaDIgPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBzaG9ydD4oKnNvdXJjZSk7CisgICAgICAgICAgICAgICAgLy8gSWYgaXQn
cyBhIGxvdyBzdXJyb2dhdGUsIGNvbnZlcnQgdG8gVUNoYXIzMi4KKyAgICAgICAgICAgICAgICBp
ZiAoY2gyID49IDB4REMwMCAmJiBjaDIgPD0gMHhERkZGKSB7CisgICAgICAgICAgICAgICAgICAg
IGNoID0gKChjaCAtIDB4RDgwMCkgPDwgMTApICsgKGNoMiAtIDB4REMwMCkgKyAweDAwMTAwMDA7
CisgICAgICAgICAgICAgICAgICAgICsrc291cmNlOworICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoc3RyaWN0KSB7IC8vIGl0J3MgYW4gdW5wYWlyZWQgaGlnaCBzdXJyb2dhdGUKKyAgICAgICAg
ICAgICAgICAgICAgLS1zb3VyY2U7IC8vIHJldHVybiB0byB0aGUgaWxsZWdhbCB2YWx1ZSBpdHNl
bGYKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc291cmNlSWxsZWdhbDsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNl
IHsgLy8gV2UgZG9uJ3QgaGF2ZSB0aGUgMTYgYml0cyBmb2xsb3dpbmcgdGhlIGhpZ2ggc3Vycm9n
YXRlLgorICAgICAgICAgICAgICAgIC0tc291cmNlOyAvLyByZXR1cm4gdG8gdGhlIGhpZ2ggc3Vy
cm9nYXRlCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gc291cmNlRXhoYXVzdGVkOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKHN0cmlj
dCkgeworICAgICAgICAgICAgLy8gVVRGLTE2IHN1cnJvZ2F0ZSB2YWx1ZXMgYXJlIGlsbGVnYWwg
aW4gVVRGLTMyCisgICAgICAgICAgICBpZiAoY2ggPj0gMHhEQzAwICYmIGNoIDw9IDB4REZGRikg
eworICAgICAgICAgICAgICAgIC0tc291cmNlOyAvLyByZXR1cm4gdG8gdGhlIGlsbGVnYWwgdmFs
dWUgaXRzZWxmCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gc291cmNlSWxsZWdhbDsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvLyBG
aWd1cmUgb3V0IGhvdyBtYW55IGJ5dGVzIHRoZSByZXN1bHQgd2lsbCByZXF1aXJlCisgICAgICAg
IGlmIChjaCA8IChVQ2hhcjMyKTB4ODApIHsKKyAgICAgICAgICAgIGJ5dGVzVG9Xcml0ZSA9IDE7
CisgICAgICAgIH0gZWxzZSBpZiAoY2ggPCAoVUNoYXIzMikweDgwMCkgeworICAgICAgICAgICAg
Ynl0ZXNUb1dyaXRlID0gMjsKKyAgICAgICAgfSBlbHNlIGlmIChjaCA8IChVQ2hhcjMyKTB4MTAw
MDApIHsKKyAgICAgICAgICAgIGJ5dGVzVG9Xcml0ZSA9IDM7CisgICAgICAgIH0gZWxzZSBpZiAo
Y2ggPCAoVUNoYXIzMikweDExMDAwMCkgeworICAgICAgICAgICAgYnl0ZXNUb1dyaXRlID0gNDsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGJ5dGVzVG9Xcml0ZSA9IDM7CisgICAgICAg
ICAgICBjaCA9IHJlcGxhY2VtZW50Q2hhcmFjdGVyOworICAgICAgICB9CisKKyAgICAgICAgdGFy
Z2V0ICs9IGJ5dGVzVG9Xcml0ZTsKKyAgICAgICAgaWYgKHRhcmdldCA+IHRhcmdldEVuZCkgewor
ICAgICAgICAgICAgc291cmNlID0gb2xkU291cmNlOyAvLyBCYWNrIHVwIHNvdXJjZSBwb2ludGVy
IQorICAgICAgICAgICAgdGFyZ2V0IC09IGJ5dGVzVG9Xcml0ZTsKKyAgICAgICAgICAgIHJlc3Vs
dCA9IHRhcmdldEV4aGF1c3RlZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIHN3aXRjaCAoYnl0ZXNUb1dyaXRlKSB7IC8vIG5vdGU6IGV2ZXJ5dGhpbmcgZmFsbHMgdGhy
b3VnaC4KKyAgICAgICAgICAgIGNhc2UgNDogKi0tdGFyZ2V0ID0gKGNoYXIpKChjaCB8IGJ5dGVN
YXJrKSAmIGJ5dGVNYXNrKTsgY2ggPj49IDY7IEZBTExUSFJPVUdIOworICAgICAgICAgICAgY2Fz
ZSAzOiAqLS10YXJnZXQgPSAoY2hhcikoKGNoIHwgYnl0ZU1hcmspICYgYnl0ZU1hc2spOyBjaCA+
Pj0gNjsgRkFMTFRIUk9VR0g7CisgICAgICAgICAgICBjYXNlIDI6ICotLXRhcmdldCA9IChjaGFy
KSgoY2ggfCBieXRlTWFyaykgJiBieXRlTWFzayk7IGNoID4+PSA2OyBGQUxMVEhST1VHSDsKKyAg
ICAgICAgICAgIGNhc2UgMTogKi0tdGFyZ2V0ID0gIChjaGFyKShjaCB8IGZpcnN0Qnl0ZU1hcmtb
Ynl0ZXNUb1dyaXRlXSk7CisgICAgICAgIH0KKyAgICAgICAgdGFyZ2V0ICs9IGJ5dGVzVG9Xcml0
ZTsKKyAgICB9CisgICAgKnNvdXJjZVN0YXJ0ID0gc291cmNlOworICAgICp0YXJnZXRTdGFydCA9
IHRhcmdldDsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvLyBUaGlzIG11c3QgYmUgY2FsbGVk
IHdpdGggdGhlIGxlbmd0aCBwcmUtZGV0ZXJtaW5lZCBieSB0aGUgZmlyc3QgYnl0ZS4KKy8vIElm
IHByZXNlbnRlZCB3aXRoIGEgbGVuZ3RoID4gNCwgdGhpcyByZXR1cm5zIGZhbHNlLiAgVGhlIFVu
aWNvZGUKKy8vIGRlZmluaXRpb24gb2YgVVRGLTggZ29lcyB1cCB0byA0LWJ5dGUgc2VxdWVuY2Vz
Lgorc3RhdGljIGJvb2wgaXNMZWdhbFVURjgoY29uc3QgdW5zaWduZWQgY2hhciogc291cmNlLCBp
bnQgbGVuZ3RoKQoreworICAgIHVuc2lnbmVkIGNoYXIgYTsKKyAgICBjb25zdCB1bnNpZ25lZCBj
aGFyKiBzcmNwdHIgPSBzb3VyY2UgKyBsZW5ndGg7CisgICAgc3dpdGNoIChsZW5ndGgpIHsKKyAg
ICAgICAgZGVmYXVsdDogcmV0dXJuIGZhbHNlOworICAgICAgICAvLyBFdmVyeXRoaW5nIGVsc2Ug
ZmFsbHMgdGhyb3VnaCB3aGVuICJ0cnVlIi4uLgorICAgICAgICBjYXNlIDQ6IGlmICgoYSA9ICgq
LS1zcmNwdHIpKSA8IDB4ODAgfHwgYSA+IDB4QkYpIHJldHVybiBmYWxzZTsgRkFMTFRIUk9VR0g7
CisgICAgICAgIGNhc2UgMzogaWYgKChhID0gKCotLXNyY3B0cikpIDwgMHg4MCB8fCBhID4gMHhC
RikgcmV0dXJuIGZhbHNlOyBGQUxMVEhST1VHSDsKKyAgICAgICAgY2FzZSAyOiBpZiAoKGEgPSAo
Ki0tc3JjcHRyKSkgPiAweEJGKSByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgc3dpdGNoICgqc291
cmNlKSB7CisgICAgICAgICAgICAvLyBubyBmYWxsLXRocm91Z2ggaW4gdGhpcyBpbm5lciBzd2l0
Y2gKKyAgICAgICAgICAgIGNhc2UgMHhFMDogaWYgKGEgPCAweEEwKSByZXR1cm4gZmFsc2U7IGJy
ZWFrOworICAgICAgICAgICAgY2FzZSAweEVEOiBpZiAoYSA+IDB4OUYpIHJldHVybiBmYWxzZTsg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIDB4RjA6IGlmIChhIDwgMHg5MCkgcmV0dXJuIGZhbHNl
OyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMHhGNDogaWYgKGEgPiAweDhGKSByZXR1cm4gZmFs
c2U7IGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDogICBpZiAoYSA8IDB4ODApIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorICAgICAgICBGQUxMVEhST1VHSDsKKworICAgICAgICBjYXNlIDE6
IGlmICgqc291cmNlID49IDB4ODAgJiYgKnNvdXJjZSA8IDB4QzIpIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgaWYgKCpzb3VyY2UgPiAweEY0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKKy8vIE1hZ2ljIHZhbHVlcyBzdWJ0cmFjdGVkIGZyb20gYSBidWZm
ZXIgdmFsdWUgZHVyaW5nIFVURjggY29udmVyc2lvbi4KKy8vIFRoaXMgdGFibGUgY29udGFpbnMg
YXMgbWFueSB2YWx1ZXMgYXMgdGhlcmUgbWlnaHQgYmUgdHJhaWxpbmcgYnl0ZXMKKy8vIGluIGEg
VVRGLTggc2VxdWVuY2UuCitzdGF0aWMgY29uc3QgVUNoYXIzMiBvZmZzZXRzRnJvbVVURjhbNl0g
PSB7IDB4MDAwMDAwMDBVTCwgMHgwMDAwMzA4MFVMLCAweDAwMEUyMDgwVUwsIDB4MDNDODIwODBV
TCwgc3RhdGljX2Nhc3Q8VUNoYXIzMj4oMHhGQTA4MjA4MFVMKSwgc3RhdGljX2Nhc3Q8VUNoYXIz
Mj4oMHg4MjA4MjA4MFVMKSB9OworCitzdGF0aWMgaW5saW5lIFVDaGFyMzIgcmVhZFVURjhTZXF1
ZW5jZShjb25zdCBjaGFyKiYgc2VxdWVuY2UsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBVQ2hh
cjMyIGNoYXJhY3RlciA9IDA7CisKKyAgICAvLyBUaGUgY2FzZXMgYWxsIGZhbGwgdGhyb3VnaC4K
KyAgICBzd2l0Y2ggKGxlbmd0aCkgeworICAgICAgICBjYXNlIDY6IGNoYXJhY3RlciArPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigqc2VxdWVuY2UrKyk7IGNoYXJhY3RlciA8PD0gNjsgRkFM
TFRIUk9VR0g7CisgICAgICAgIGNhc2UgNTogY2hhcmFjdGVyICs9IHN0YXRpY19jYXN0PHVuc2ln
bmVkIGNoYXI+KCpzZXF1ZW5jZSsrKTsgY2hhcmFjdGVyIDw8PSA2OyBGQUxMVEhST1VHSDsKKyAg
ICAgICAgY2FzZSA0OiBjaGFyYWN0ZXIgKz0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oKnNl
cXVlbmNlKyspOyBjaGFyYWN0ZXIgPDw9IDY7IEZBTExUSFJPVUdIOworICAgICAgICBjYXNlIDM6
IGNoYXJhY3RlciArPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigqc2VxdWVuY2UrKyk7IGNo
YXJhY3RlciA8PD0gNjsgRkFMTFRIUk9VR0g7CisgICAgICAgIGNhc2UgMjogY2hhcmFjdGVyICs9
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KCpzZXF1ZW5jZSsrKTsgY2hhcmFjdGVyIDw8PSA2
OyBGQUxMVEhST1VHSDsKKyAgICAgICAgY2FzZSAxOiBjaGFyYWN0ZXIgKz0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhcj4oKnNlcXVlbmNlKyspOworICAgIH0KKworICAgIHJldHVybiBjaGFyYWN0
ZXIgLSBvZmZzZXRzRnJvbVVURjhbbGVuZ3RoIC0gMV07Cit9CisKK0NvbnZlcnNpb25SZXN1bHQg
Y29udmVydFVURjhUb1VURjE2KAorICAgIGNvbnN0IGNoYXIqKiBzb3VyY2VTdGFydCwgY29uc3Qg
Y2hhciogc291cmNlRW5kLCAKKyAgICBVQ2hhcioqIHRhcmdldFN0YXJ0LCBVQ2hhciogdGFyZ2V0
RW5kLCBib29sKiBzb3VyY2VBbGxBU0NJSSwgYm9vbCBzdHJpY3QpCit7CisgICAgQ29udmVyc2lv
blJlc3VsdCByZXN1bHQgPSBjb252ZXJzaW9uT0s7CisgICAgY29uc3QgY2hhciogc291cmNlID0g
KnNvdXJjZVN0YXJ0OworICAgIFVDaGFyKiB0YXJnZXQgPSAqdGFyZ2V0U3RhcnQ7CisgICAgVUNo
YXIgb3JBbGxEYXRhID0gMDsKKyAgICB3aGlsZSAoc291cmNlIDwgc291cmNlRW5kKSB7CisgICAg
ICAgIGludCB1dGY4U2VxdWVuY2VMZW5ndGggPSBpbmxpbmVVVEY4U2VxdWVuY2VMZW5ndGgoKnNv
dXJjZSk7CisgICAgICAgIGlmIChzb3VyY2VFbmQgLSBzb3VyY2UgPCB1dGY4U2VxdWVuY2VMZW5n
dGgpICB7CisgICAgICAgICAgICByZXN1bHQgPSBzb3VyY2VFeGhhdXN0ZWQ7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAvLyBEbyB0aGlzIGNoZWNrIHdoZXRoZXIgbGVu
aWVudCBvciBzdHJpY3QKKyAgICAgICAgaWYgKCFpc0xlZ2FsVVRGOChyZWludGVycHJldF9jYXN0
PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihzb3VyY2UpLCB1dGY4U2VxdWVuY2VMZW5ndGgpKSB7Cisg
ICAgICAgICAgICByZXN1bHQgPSBzb3VyY2VJbGxlZ2FsOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKworICAgICAgICBVQ2hhcjMyIGNoYXJhY3RlciA9IHJlYWRVVEY4U2VxdWVuY2Uo
c291cmNlLCB1dGY4U2VxdWVuY2VMZW5ndGgpOworCisgICAgICAgIGlmICh0YXJnZXQgPj0gdGFy
Z2V0RW5kKSB7CisgICAgICAgICAgICBzb3VyY2UgLT0gdXRmOFNlcXVlbmNlTGVuZ3RoOyAvLyBC
YWNrIHVwIHNvdXJjZSBwb2ludGVyIQorICAgICAgICAgICAgcmVzdWx0ID0gdGFyZ2V0RXhoYXVz
dGVkOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAoVV9JU19C
TVAoY2hhcmFjdGVyKSkgeworICAgICAgICAgICAgLy8gVVRGLTE2IHN1cnJvZ2F0ZSB2YWx1ZXMg
YXJlIGlsbGVnYWwgaW4gVVRGLTMyCisgICAgICAgICAgICBpZiAoVV9JU19TVVJST0dBVEUoY2hh
cmFjdGVyKSkgeworICAgICAgICAgICAgICAgIGlmIChzdHJpY3QpIHsKKyAgICAgICAgICAgICAg
ICAgICAgc291cmNlIC09IHV0ZjhTZXF1ZW5jZUxlbmd0aDsgLy8gcmV0dXJuIHRvIHRoZSBpbGxl
Z2FsIHZhbHVlIGl0c2VsZgorICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBzb3VyY2VJbGxl
Z2FsOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICAqdGFyZ2V0KysgPSByZXBsYWNlbWVudENoYXJhY3RlcjsK
KyAgICAgICAgICAgICAgICAgICAgb3JBbGxEYXRhIHw9IHJlcGxhY2VtZW50Q2hhcmFjdGVyOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
KnRhcmdldCsrID0gY2hhcmFjdGVyOyAvLyBub3JtYWwgY2FzZQorICAgICAgICAgICAgICAgIG9y
QWxsRGF0YSB8PSBjaGFyYWN0ZXI7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAo
VV9JU19TVVBQTEVNRU5UQVJZKGNoYXJhY3RlcikpIHsKKyAgICAgICAgICAgIC8vIHRhcmdldCBp
cyBhIGNoYXJhY3RlciBpbiByYW5nZSAweEZGRkYgLSAweDEwRkZGRgorICAgICAgICAgICAgaWYg
KHRhcmdldCArIDEgPj0gdGFyZ2V0RW5kKSB7CisgICAgICAgICAgICAgICAgc291cmNlIC09IHV0
ZjhTZXF1ZW5jZUxlbmd0aDsgLy8gQmFjayB1cCBzb3VyY2UgcG9pbnRlciEKKyAgICAgICAgICAg
ICAgICByZXN1bHQgPSB0YXJnZXRFeGhhdXN0ZWQ7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAqdGFyZ2V0KysgPSBVMTZfTEVBRChjaGFyYWN0ZXIp
OworICAgICAgICAgICAgKnRhcmdldCsrID0gVTE2X1RSQUlMKGNoYXJhY3Rlcik7CisgICAgICAg
ICAgICBvckFsbERhdGEgPSAweGZmZmY7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBp
ZiAoc3RyaWN0KSB7CisgICAgICAgICAgICAgICAgc291cmNlIC09IHV0ZjhTZXF1ZW5jZUxlbmd0
aDsgLy8gcmV0dXJuIHRvIHRoZSBzdGFydAorICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNvdXJj
ZUlsbGVnYWw7CisgICAgICAgICAgICAgICAgYnJlYWs7IC8vIEJhaWwgb3V0OyBzaG91bGRuJ3Qg
Y29udGludWUKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgKnRhcmdldCsr
ID0gcmVwbGFjZW1lbnRDaGFyYWN0ZXI7CisgICAgICAgICAgICAgICAgb3JBbGxEYXRhIHw9IHJl
cGxhY2VtZW50Q2hhcmFjdGVyOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAg
ICpzb3VyY2VTdGFydCA9IHNvdXJjZTsKKyAgICAqdGFyZ2V0U3RhcnQgPSB0YXJnZXQ7CisKKyAg
ICBpZiAoc291cmNlQWxsQVNDSUkpCisgICAgICAgICpzb3VyY2VBbGxBU0NJSSA9ICEob3JBbGxE
YXRhICYgfjB4N2YpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordW5zaWduZWQgY2FsY3Vs
YXRlU3RyaW5nSGFzaEFuZExlbmd0aEZyb21VVEY4TWFza2luZ1RvcDhCaXRzKGNvbnN0IGNoYXIq
IGRhdGEsIGNvbnN0IGNoYXIqIGRhdGFFbmQsIHVuc2lnbmVkJiBkYXRhTGVuZ3RoLCB1bnNpZ25l
ZCYgdXRmMTZMZW5ndGgpCit7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIFN0cmluZ0hhc2hlciBzdHJpbmdIYXNoZXI7CisgICAgZGF0YUxlbmd0aCA9IDA7CisgICAg
dXRmMTZMZW5ndGggPSAwOworCisgICAgd2hpbGUgKGRhdGEgPCBkYXRhRW5kIHx8ICghZGF0YUVu
ZCAmJiAqZGF0YSkpIHsKKyAgICAgICAgaWYgKGlzQVNDSUkoKmRhdGEpKSB7CisgICAgICAgICAg
ICBzdHJpbmdIYXNoZXIuYWRkQ2hhcmFjdGVyKCpkYXRhKyspOworICAgICAgICAgICAgZGF0YUxl
bmd0aCsrOworICAgICAgICAgICAgdXRmMTZMZW5ndGgrKzsKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB9CisKKyAgICAgICAgaW50IHV0ZjhTZXF1ZW5jZUxlbmd0aCA9IGlubGluZVVU
RjhTZXF1ZW5jZUxlbmd0aE5vbkFTQ0lJKCpkYXRhKTsKKyAgICAgICAgZGF0YUxlbmd0aCArPSB1
dGY4U2VxdWVuY2VMZW5ndGg7CisKKyAgICAgICAgaWYgKCFkYXRhRW5kKSB7CisgICAgICAgICAg
ICBmb3IgKGludCBpID0gMTsgaSA8IHV0ZjhTZXF1ZW5jZUxlbmd0aDsgKytpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKCFkYXRhW2ldKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChkYXRhRW5kIC0gZGF0YSA8IHV0ZjhTZXF1
ZW5jZUxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIGlmICghaXNMZWdh
bFVURjgocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZGF0YSksIHV0ZjhT
ZXF1ZW5jZUxlbmd0aCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBVQ2hhcjMy
IGNoYXJhY3RlciA9IHJlYWRVVEY4U2VxdWVuY2UoZGF0YSwgdXRmOFNlcXVlbmNlTGVuZ3RoKTsK
KyAgICAgICAgQVNTRVJUKCFpc0FTQ0lJKGNoYXJhY3RlcikpOworCisgICAgICAgIGlmIChVX0lT
X0JNUChjaGFyYWN0ZXIpKSB7CisgICAgICAgICAgICAvLyBVVEYtMTYgc3Vycm9nYXRlIHZhbHVl
cyBhcmUgaWxsZWdhbCBpbiBVVEYtMzIKKyAgICAgICAgICAgIGlmIChVX0lTX1NVUlJPR0FURShj
aGFyYWN0ZXIpKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgc3RyaW5n
SGFzaGVyLmFkZENoYXJhY3RlcihzdGF0aWNfY2FzdDxVQ2hhcj4oY2hhcmFjdGVyKSk7IC8vIG5v
cm1hbCBjYXNlCisgICAgICAgICAgICB1dGYxNkxlbmd0aCsrOworICAgICAgICB9IGVsc2UgaWYg
KFVfSVNfU1VQUExFTUVOVEFSWShjaGFyYWN0ZXIpKSB7CisgICAgICAgICAgICBzdHJpbmdIYXNo
ZXIuYWRkQ2hhcmFjdGVycyhzdGF0aWNfY2FzdDxVQ2hhcj4oVTE2X0xFQUQoY2hhcmFjdGVyKSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxVQ2hh
cj4oVTE2X1RSQUlMKGNoYXJhY3RlcikpKTsKKyAgICAgICAgICAgIHV0ZjE2TGVuZ3RoICs9IDI7
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0
dXJuIHN0cmluZ0hhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCk7Cit9CisKK2Jvb2wgZXF1
YWxVVEYxNldpdGhVVEY4KGNvbnN0IFVDaGFyKiBhLCBjb25zdCBjaGFyKiBiLCBjb25zdCBjaGFy
KiBiRW5kKQoreworICAgIHdoaWxlIChiIDwgYkVuZCkgeworICAgICAgICBpZiAoaXNBU0NJSSgq
YSkgfHwgaXNBU0NJSSgqYikpIHsKKyAgICAgICAgICAgIGlmICgqYSsrICE9ICpiKyspCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IH0KKworICAgICAgICBpbnQgdXRmOFNlcXVlbmNlTGVuZ3RoID0gaW5saW5lVVRGOFNlcXVlbmNl
TGVuZ3RoTm9uQVNDSUkoKmIpOworCisgICAgICAgIGlmIChiRW5kIC0gYiA8IHV0ZjhTZXF1ZW5j
ZUxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAoIWlzTGVn
YWxVVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGIpLCB1dGY4U2Vx
dWVuY2VMZW5ndGgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIFVDaGFy
MzIgY2hhcmFjdGVyID0gcmVhZFVURjhTZXF1ZW5jZShiLCB1dGY4U2VxdWVuY2VMZW5ndGgpOwor
ICAgICAgICBBU1NFUlQoIWlzQVNDSUkoY2hhcmFjdGVyKSk7CisKKyAgICAgICAgaWYgKFVfSVNf
Qk1QKGNoYXJhY3RlcikpIHsKKyAgICAgICAgICAgIC8vIFVURi0xNiBzdXJyb2dhdGUgdmFsdWVz
IGFyZSBpbGxlZ2FsIGluIFVURi0zMgorICAgICAgICAgICAgaWYgKFVfSVNfU1VSUk9HQVRFKGNo
YXJhY3RlcikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYg
KCphKysgIT0gY2hhcmFjdGVyKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfSBlbHNlIGlmIChVX0lTX1NVUFBMRU1FTlRBUlkoY2hhcmFjdGVyKSkgeworICAgICAgICAg
ICAgaWYgKCphKysgIT0gVTE2X0xFQUQoY2hhcmFjdGVyKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoKmErKyAhPSBVMTZfVFJBSUwoY2hhcmFjdGVyKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIGVx
dWFsTGF0aW4xV2l0aFVURjgoY29uc3QgTENoYXIqIGEsIGNvbnN0IGNoYXIqIGIsIGNvbnN0IGNo
YXIqIGJFbmQpCit7CisgICAgd2hpbGUgKGIgPCBiRW5kKSB7CisgICAgICAgIGlmIChpc0FTQ0lJ
KCphKSB8fCBpc0FTQ0lJKCpiKSkgeworICAgICAgICAgICAgaWYgKCphKysgIT0gKmIrKykKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChiICsgMSA9PSBiRW5kKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgIGlmICgoYlswXSAmIDB4RTApICE9IDB4QzAgfHwgKGJbMV0gJiAweEMw
KSAhPSAweDgwKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIExDaGFyIGNo
YXJhY3RlciA9ICgoYlswXSAmIDB4MUYpIDw8IDYpIHwgKGJbMV0gJiAweDNGKTsKKworICAgICAg
ICBiICs9IDI7CisKKyAgICAgICAgaWYgKCphKysgIT0gY2hhcmFjdGVyKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVz
cGFjZSBVbmljb2RlCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3VuaWNvZGUvVVRGOENvbnZlcnNpb24uaCBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvVVRG
OENvbnZlcnNpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNzY0ZmU4N2YzNzRhNDg5OWJlNGQ4YTMzNzJkYzQx
OTIxZDJlNmVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvdW5pY29kZS9VVEY4
Q29udmVyc2lvbi5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8dW5pY29kZS91
dHlwZXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9MQ2hhci5oPgorCituYW1lc3BhY2UgV1RGIHsK
K25hbWVzcGFjZSBVbmljb2RlIHsKKworICAgIC8vIEdpdmVuIGEgZmlyc3QgYnl0ZSwgZ2l2ZXMg
dGhlIGxlbmd0aCBvZiB0aGUgVVRGLTggc2VxdWVuY2UgaXQgYmVnaW5zLgorICAgIC8vIFJldHVy
bnMgMCBmb3IgYnl0ZXMgdGhhdCBhcmUgbm90IGxlZ2FsIHN0YXJ0cyBvZiBVVEYtOCBzZXF1ZW5j
ZXMuCisgICAgLy8gT25seSBhbGxvd3Mgc2VxdWVuY2VzIG9mIHVwIHRvIDQgYnl0ZXMsIHNpbmNl
IHRoYXQgd29ya3MgZm9yIGFsbCBVbmljb2RlIGNoYXJhY3RlcnMgKFUtMDAwMDAwMDAgdG8gVS0w
MDEwRkZGRikuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGludCBVVEY4U2VxdWVuY2VMZW5ndGgo
Y2hhcik7CisKKyAgICAvLyBUYWtlcyBhIG51bGwtdGVybWluYXRlZCBDLXN0eWxlIHN0cmluZyB3
aXRoIGEgVVRGLTggc2VxdWVuY2UgaW4gaXQgYW5kIGNvbnZlcnRzIGl0IHRvIGEgY2hhcmFjdGVy
LgorICAgIC8vIE9ubHkgYWxsb3dzIFVuaWNvZGUgY2hhcmFjdGVycyAoVS0wMDAwMDAwMCB0byBV
LTAwMTBGRkZGKS4KKyAgICAvLyBSZXR1cm5zIC0xIGlmIHRoZSBzZXF1ZW5jZSBpcyBub3QgdmFs
aWQgKGluY2x1ZGluZyBwcmVzZW5jZSBvZiBleHRyYSBieXRlcykuCisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIGludCBkZWNvZGVVVEY4U2VxdWVuY2UoY29uc3QgY2hhciopOworCisgICAgdHlwZWRl
ZiBlbnVtIHsKKyAgICAgICAgICAgIGNvbnZlcnNpb25PSywgICAgICAgLy8gY29udmVyc2lvbiBz
dWNjZXNzZnVsCisgICAgICAgICAgICBzb3VyY2VFeGhhdXN0ZWQsICAgIC8vIHBhcnRpYWwgY2hh
cmFjdGVyIGluIHNvdXJjZSwgYnV0IGhpdCBlbmQKKyAgICAgICAgICAgIHRhcmdldEV4aGF1c3Rl
ZCwgICAgLy8gaW5zdWZmLiByb29tIGluIHRhcmdldCBmb3IgY29udmVyc2lvbgorICAgICAgICAg
ICAgc291cmNlSWxsZWdhbCAgICAgICAvLyBzb3VyY2Ugc2VxdWVuY2UgaXMgaWxsZWdhbC9tYWxm
b3JtZWQKKyAgICB9IENvbnZlcnNpb25SZXN1bHQ7CisKKyAgICAvLyBUaGVzZSBjb252ZXJzaW9u
IGZ1bmN0aW9ucyB0YWtlIGEgInN0cmljdCIgYXJndW1lbnQuIFdoZW4gdGhpcworICAgIC8vIGZs
YWcgaXMgc2V0IHRvIHN0cmljdCwgYm90aCBpcnJlZ3VsYXIgc2VxdWVuY2VzIGFuZCBpc29sYXRl
ZCBzdXJyb2dhdGVzCisgICAgLy8gd2lsbCBjYXVzZSBhbiBlcnJvci4gIFdoZW4gdGhlIGZsYWcg
aXMgc2V0IHRvIGxlbmllbnQsIGJvdGggaXJyZWd1bGFyCisgICAgLy8gc2VxdWVuY2VzIGFuZCBp
c29sYXRlZCBzdXJyb2dhdGVzIGFyZSBjb252ZXJ0ZWQuCisgICAgLy8gCisgICAgLy8gV2hldGhl
ciB0aGUgZmxhZyBpcyBzdHJpY3Qgb3IgbGVuaWVudCwgYWxsIGlsbGVnYWwgc2VxdWVuY2VzIHdp
bGwgY2F1c2UKKyAgICAvLyBhbiBlcnJvciByZXR1cm4uIFRoaXMgaW5jbHVkZXMgc2VxdWVuY2Vz
IHN1Y2ggYXM6IDxGNCA5MCA4MCA4MD4sIDxDMCA4MD4sCisgICAgLy8gb3IgPEEwPiBpbiBVVEYt
OCwgYW5kIHZhbHVlcyBhYm92ZSAweDEwRkZGRiBpbiBVVEYtMzIuIENvbmZvcm1hbnQgY29kZQor
ICAgIC8vIG11c3QgY2hlY2sgZm9yIGlsbGVnYWwgc2VxdWVuY2VzLgorICAgIC8vIAorICAgIC8v
IFdoZW4gdGhlIGZsYWcgaXMgc2V0IHRvIGxlbmllbnQsIGNoYXJhY3RlcnMgb3ZlciAweDEwRkZG
RiBhcmUgY29udmVydGVkCisgICAgLy8gdG8gdGhlIHJlcGxhY2VtZW50IGNoYXJhY3Rlcjsgb3Ro
ZXJ3aXNlICh3aGVuIHRoZSBmbGFnIGlzIHNldCB0byBzdHJpY3QpCisgICAgLy8gdGhleSBjb25z
dGl0dXRlIGFuIGVycm9yLgorCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIENvbnZlcnNpb25SZXN1
bHQgY29udmVydFVURjhUb1VURjE2KAorICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiog
c291cmNlU3RhcnQsIGNvbnN0IGNoYXIqIHNvdXJjZUVuZCwgCisgICAgICAgICAgICAgICAgICAg
IFVDaGFyKiogdGFyZ2V0U3RhcnQsIFVDaGFyKiB0YXJnZXRFbmQsIGJvb2wqIGlzU291cmNlQWxs
QVNDSUkgPSAwLCBib29sIHN0cmljdCA9IHRydWUpOworCisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IENvbnZlcnNpb25SZXN1bHQgY29udmVydExhdGluMVRvVVRGOCgKKyAgICAgICAgICAgICAgICAg
ICAgY29uc3QgTENoYXIqKiBzb3VyY2VTdGFydCwgY29uc3QgTENoYXIqIHNvdXJjZUVuZCwgCisg
ICAgICAgICAgICAgICAgICAgIGNoYXIqKiB0YXJnZXRTdGFydCwgY2hhciogdGFyZ2V0RW5kKTsK
KworICAgIFdURl9FWFBPUlRfUFJJVkFURSBDb252ZXJzaW9uUmVzdWx0IGNvbnZlcnRVVEYxNlRv
VVRGOCgKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgVUNoYXIqKiBzb3VyY2VTdGFydCwgY29u
c3QgVUNoYXIqIHNvdXJjZUVuZCwgCisgICAgICAgICAgICAgICAgICAgIGNoYXIqKiB0YXJnZXRT
dGFydCwgY2hhciogdGFyZ2V0RW5kLCBib29sIHN0cmljdCA9IHRydWUpOworCisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHVuc2lnbmVkIGNhbGN1bGF0ZVN0cmluZ0hhc2hBbmRMZW5ndGhGcm9tVVRG
OE1hc2tpbmdUb3A4Qml0cyhjb25zdCBjaGFyKiBkYXRhLCBjb25zdCBjaGFyKiBkYXRhRW5kLCB1
bnNpZ25lZCYgZGF0YUxlbmd0aCwgdW5zaWduZWQmIHV0ZjE2TGVuZ3RoKTsKKworICAgIC8vIFRo
ZSBjYWxsZXIgb2YgdGhlc2UgZnVuY3Rpb25zIGFscmVhZHkga25vd3MgdGhhdCB0aGUgbGVuZ3Ro
cyBhcmUgdGhlIHNhbWUsIHNvIHdlIG9taXQgYW4gZW5kIGFyZ3VtZW50IGZvciBVVEYtMTYgYW5k
IExhdGluLTEuCisgICAgYm9vbCBlcXVhbFVURjE2V2l0aFVURjgoY29uc3QgVUNoYXIqIHN0cmlu
Z0luVVRGMTYsIGNvbnN0IGNoYXIqIHN0cmluZ0luVVRGOCwgY29uc3QgY2hhciogc3RyaW5nSW5V
VEY4RW5kKTsKKyAgICBib29sIGVxdWFsTGF0aW4xV2l0aFVURjgoY29uc3QgTENoYXIqIHN0cmlu
Z0luTGF0aW4xLCBjb25zdCBjaGFyKiBzdHJpbmdJblVURjgsIGNvbnN0IGNoYXIqIHN0cmluZ0lu
VVRGOEVuZCk7CisKK30gLy8gbmFtZXNwYWNlIFVuaWNvZGUKK30gLy8gbmFtZXNwYWNlIFdURgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZGIwYWYzZWFlYjBk
MDQxNjMzZTVlYjYwNjYzYmM0ODQ3YWRjMTY4ZS4uOWYxOWNmZWYzYmJlNTAwOTQ4ZjUyYTUwMDg5
ZDM3ODU5YjcxM2UyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3Bw
CkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKICNpbmNsdWRl
IDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8d3RmL3VuaWNvZGUvVVRGOC5oPgorI2luY2x1ZGUgPHd0
Zi91bmljb2RlL1VURjhDb252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKaW5kZXggNWY5YjAxZjQz
MGEzYzMyYjQwOTg2NTJlNDAxM2M2OTQxYmNlNjNiMi4uOTViMWI2YTUxMDIxMjgyYWI0NjYwZDdj
ZDU0ZTgzZjg1NzY1N2ZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9j
ZXNzb3JMaWJ4c2x0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvckxp
YnhzbHQuY3BwCkBAIC00OSw3ICs0OSw3IEBACiAjaW5jbHVkZSA8bGlieHNsdC94c2x0dXRpbHMu
aD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1ZmZlci5oPgotI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VURjguaD4KKyNpbmNsdWRlIDx3dGYv
dW5pY29kZS9VVEY4Q29udmVyc2lvbi5oPgogCiAjaWYgT1MoREFSV0lOKSAmJiAhUExBVEZPUk0o
R1RLKQogI2luY2x1ZGUgIlNvZnRMaW5rTGlieHNsdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IDgwOTcz
ZTk4NTUwMDI5NjM2ZTgxYjM1OTdmMDIxZjg4MjRmZWRlYjIuLmQ3OTk4YmI4OTcwYTNhNmI3NGE4
OGIyNWU3ZjYwMDQ2ZDk3YzcyNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJz
ZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
cGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTUzLDcgKzUzLDcgQEAKICNp
bmNsdWRlICJYTUxOU05hbWVzLmgiCiAjaW5jbHVkZSAiWE1MRG9jdW1lbnRQYXJzZXJTY29wZS5o
IgogI2luY2x1ZGUgPGxpYnhtbC9wYXJzZXJJbnRlcm5hbHMuaD4KLSNpbmNsdWRlIDx3dGYvdW5p
Y29kZS9VVEY4Lmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVVRGOENvbnZlcnNpb24uaD4KIAog
I2lmIEVOQUJMRShYU0xUKQogI2luY2x1ZGUgIlhNTFRyZWVWaWV3ZXIuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTdHJpbmcuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9BUElTdHJpbmcuaAppbmRleCAyNzIyYjFiOGI4NzE1MWUzZTIyMzA5ZjQzMjk2MjQ2
YmY2MWYyYzExLi4zMzlhN2ZhZTNjYTRhOGIxMDA2N2JlMTQ5YTBjMTVhNzBhMjU3ZjU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJU3RyaW5nLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL0FQSVN0cmluZy5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVk
ZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdW5pY29kZS9VVEY4Lmg+Cisj
aW5jbHVkZSA8d3RmL3VuaWNvZGUvVVRGOENvbnZlcnNpb24uaD4KIAogbmFtZXNwYWNlIEFQSSB7
CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>