<?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>112458</bug_id>
          
          <creation_ts>2013-03-15 12:57:46 -0700</creation_ts>
          <short_desc>Roll out r145838</short_desc>
          <delta_ts>2013-03-15 14:54:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>112233</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>856207</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-03-15 12:57:46 -0700</bug_when>
    <thetext>Requested by Filip Pizlo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856212</commentid>
    <comment_count>1</comment_count>
      <attachid>193357</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-03-15 13:03:30 -0700</bug_when>
    <thetext>Created attachment 193357
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856214</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 13:06:04 -0700</bug_when>
    <thetext>Attachment 193357 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/js/regress/script-tests/string-lookup-hit-identifier.js&apos;, u&apos;LayoutTests/fast/js/regress/script-tests/string-lookup-hit.js&apos;, u&apos;LayoutTests/fast/js/regress/script-tests/string-lookup-miss.js&apos;, u&apos;LayoutTests/fast/js/regress/string-lookup-hit-expected.txt&apos;, u&apos;LayoutTests/fast/js/regress/string-lookup-hit-identifier-expected.txt&apos;, u&apos;LayoutTests/fast/js/regress/string-lookup-hit-identifier.html&apos;, u&apos;LayoutTests/fast/js/regress/string-lookup-hit.html&apos;, u&apos;LayoutTests/fast/js/regress/string-lookup-miss-expected.txt&apos;, u&apos;LayoutTests/fast/js/regress/string-lookup-miss.html&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/DerivedSources.make&apos;, u&apos;Source/JavaScriptCore/DerivedSources.pri&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOperations.cpp&apos;, u&apos;Source/JavaScriptCore/interpreter/CallFrame.h&apos;, u&apos;Source/JavaScriptCore/jit/JITStubs.cpp&apos;, u&apos;Source/JavaScriptCore/llint/LLIntSlowPaths.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/CommonIdentifiers.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSCell.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSCell.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSCellInlines.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalData.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalData.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSObject.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSObject.h&apos;, u&apos;Source/JavaScriptCore/runtime/Lookup.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/ObjectPrototype.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/ObjectPrototype.h&apos;, u&apos;Source/JavaScriptCore/runtime/PropertyMapHashTable.h&apos;, u&apos;Source/JavaScriptCore/runtime/Structure.h&apos;, u&apos;Source/JavaScriptCore/runtime/StructureInlines.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/dfg/DFGOperations.cpp:427:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Source/JavaScriptCore/runtime/ObjectPrototype.cpp:44:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 22 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>856218</commentid>
    <comment_count>3</comment_count>
      <attachid>193360</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-03-15 13:10:21 -0700</bug_when>
    <thetext>Created attachment 193360
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856223</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 13:14:17 -0700</bug_when>
    <thetext>Attachment 193360 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/js/regress/script-tests/string-lookup-hit-identifier.js&apos;, u&apos;LayoutTests/fast/js/regress/script-tests/string-lookup-hit.js&apos;, u&apos;LayoutTests/fast/js/regress/script-tests/string-lookup-miss.js&apos;, u&apos;LayoutTests/fast/js/regress/string-lookup-hit-expected.txt&apos;, u&apos;LayoutTests/fast/js/regress/string-lookup-hit-identifier-expected.txt&apos;, u&apos;LayoutTests/fast/js/regress/string-lookup-hit-identifier.html&apos;, u&apos;LayoutTests/fast/js/regress/string-lookup-hit.html&apos;, u&apos;LayoutTests/fast/js/regress/string-lookup-miss-expected.txt&apos;, u&apos;LayoutTests/fast/js/regress/string-lookup-miss.html&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/DerivedSources.make&apos;, u&apos;Source/JavaScriptCore/DerivedSources.pri&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOperations.cpp&apos;, u&apos;Source/JavaScriptCore/interpreter/CallFrame.h&apos;, u&apos;Source/JavaScriptCore/jit/JITStubs.cpp&apos;, u&apos;Source/JavaScriptCore/llint/LLIntSlowPaths.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/CommonIdentifiers.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSCell.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSCell.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSCellInlines.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalData.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalData.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSObject.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSObject.h&apos;, u&apos;Source/JavaScriptCore/runtime/Lookup.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/ObjectPrototype.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/ObjectPrototype.h&apos;, u&apos;Source/JavaScriptCore/runtime/PropertyMapHashTable.h&apos;, u&apos;Source/JavaScriptCore/runtime/Structure.h&apos;, u&apos;Source/JavaScriptCore/runtime/StructureInlines.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/dfg/DFGOperations.cpp:427:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Source/JavaScriptCore/runtime/ObjectPrototype.cpp:44:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 22 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>856232</commentid>
    <comment_count>5</comment_count>
      <attachid>193360</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 13:20:35 -0700</bug_when>
    <thetext>Comment on attachment 193360
Patch

Rejecting attachment 193360 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-commit-queue.appspot.com&apos;, &apos;--bot-id=gce-cq-01&apos;, &apos;validate-changelog&apos;, &apos;--non-interactive&apos;, 193360, &apos;--port=chromium-xvfb&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

/mnt/git/webkit-commit-queue/LayoutTests/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://webkit-commit-queue.appspot.com/results/17191182</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856234</commentid>
    <comment_count>6</comment_count>
      <attachid>193365</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-03-15 13:22:47 -0700</bug_when>
    <thetext>Created attachment 193365
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856238</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 13:24:42 -0700</bug_when>
    <thetext>Attachment 193365 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/js/regress/script-tests/string-lookup-hit-identifier.js&apos;, u&apos;LayoutTests/fast/js/regress/script-tests/string-lookup-hit.js&apos;, u&apos;LayoutTests/fast/js/regress/script-tests/string-lookup-miss.js&apos;, u&apos;LayoutTests/fast/js/regress/string-lookup-hit-expected.txt&apos;, u&apos;LayoutTests/fast/js/regress/string-lookup-hit-identifier-expected.txt&apos;, u&apos;LayoutTests/fast/js/regress/string-lookup-hit-identifier.html&apos;, u&apos;LayoutTests/fast/js/regress/string-lookup-hit.html&apos;, u&apos;LayoutTests/fast/js/regress/string-lookup-miss-expected.txt&apos;, u&apos;LayoutTests/fast/js/regress/string-lookup-miss.html&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/DerivedSources.make&apos;, u&apos;Source/JavaScriptCore/DerivedSources.pri&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOperations.cpp&apos;, u&apos;Source/JavaScriptCore/interpreter/CallFrame.h&apos;, u&apos;Source/JavaScriptCore/jit/JITStubs.cpp&apos;, u&apos;Source/JavaScriptCore/llint/LLIntSlowPaths.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/CommonIdentifiers.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSCell.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSCell.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSCellInlines.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalData.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalData.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSObject.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSObject.h&apos;, u&apos;Source/JavaScriptCore/runtime/Lookup.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/ObjectPrototype.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/ObjectPrototype.h&apos;, u&apos;Source/JavaScriptCore/runtime/PropertyMapHashTable.h&apos;, u&apos;Source/JavaScriptCore/runtime/Structure.h&apos;, u&apos;Source/JavaScriptCore/runtime/StructureInlines.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/dfg/DFGOperations.cpp:427:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Source/JavaScriptCore/runtime/ObjectPrototype.cpp:44:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 22 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>856308</commentid>
    <comment_count>8</comment_count>
      <attachid>193365</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 14:54:53 -0700</bug_when>
    <thetext>Comment on attachment 193365
Patch

Clearing flags on attachment: 193365

Committed r145945: &lt;http://trac.webkit.org/changeset/145945&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856309</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 14:54:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193357</attachid>
            <date>2013-03-15 13:03:30 -0700</date>
            <delta_ts>2013-03-15 13:10:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112458-20130315125925.patch</filename>
            <type>text/plain</type>
            <size>36688</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ1OTMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBA
CisyMDEzLTAzLTE1ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgUm9sbCBvdXQgcjE0NTgzOAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTEyNDU4CisKKyAgICAgICAgUmVxdWVzdGVkIGJ5IEZpbGlwIFBp
emxvLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMubWFrZToKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5wcmk6CisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAg
ICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6b2Jq
ZWN0UHJvdG90eXBlVGFibGUpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAg
IChKU0M6OmdldEJ5VmFsKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpnZXRCeVZhbCk6CisgICAgICAgICogcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmNwcDoKKyAgICAgICAgKEpT
Qyk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQ2VsbCk6CisgICAg
ICAgICogcnVudGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAo
SlNDOjpKU0NlbGw6OmZhc3RHZXRPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbERhdGEuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRh
OjpKU0dsb2JhbERhdGEpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6On5KU0dsb2JhbERh
dGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisgICAgICAgIChKU0dsb2Jh
bERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU09iamVjdCk6CisgICAg
ICAgIChKU0MpOgorICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmNwcDoKKyAgICAgICAgKEpTQzo6
c2V0VXBTdGF0aWNGdW5jdGlvblNsb3QpOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpPYmplY3RQcm90b3R5cGU6OmdldE93blBy
b3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3RvdHlwZTo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5oOgorICAg
ICAgICAoSlNDOjpPYmplY3RQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChPYmplY3RQcm90
b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaDoKKyAgICAg
ICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6ZmluZFdpdGhTdHJpbmcpOgorICAgICAgICAqIHJ1bnRp
bWUvU3RydWN0dXJlLmg6CisgICAgICAgIChTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUv
U3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmdldCk6CisKIDIw
MTMtMDMtMTUgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIHJ1bnRpbWUgY2hlY2sgZm9yIGltcHJvcGVyIHJlZ2lzdGVyIGFsbG9jYXRpb25zIGluIERG
RwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTQ1OTMx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0zMjksNiArMzI5LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0xVVF9GSUxFUwogICAgIHJ1
bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9OdW1iZXJQcm90b3R5cGUu
Y3BwCiAgICAgcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL09iamVj
dFByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAogICAgIHJ1
bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9u
IDE0NTkzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3
b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIGFsbCA6IFwKICAgICBOdW1iZXJDb25zdHJ1
Y3Rvci5sdXQuaCBcCiAgICAgTnVtYmVyUHJvdG90eXBlLmx1dC5oIFwKICAgICBPYmplY3RDb25z
dHJ1Y3Rvci5sdXQuaCBcCisgICAgT2JqZWN0UHJvdG90eXBlLmx1dC5oIFwKICAgICBSZWdFeHBD
b25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgUmVnRXhwUHJvdG90eXBlLmx1dC5oIFwKICAgICBSZWdF
eHBKaXRUYWJsZXMuaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNl
cy5wcmkJKHJldmlzaW9uIDE0NTkzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVk
U291cmNlcy5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTIwLDYgKzIwLDcgQEAgTFVUX0ZJTEVTICs9
IFwKICAgICBydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcCBcCiAgICAgcnVudGltZS9OdW1i
ZXJQcm90b3R5cGUuY3BwIFwKICAgICBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcCBcCisg
ICAgcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwIFwKICAgICBydW50aW1lL1JlZ0V4cENvbnN0
cnVjdG9yLmNwcCBcCiAgICAgcnVudGltZS9SZWdFeHBPYmplY3QuY3BwIFwKICAgICBydW50aW1l
L1JlZ0V4cFByb3RvdHlwZS5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE0NTkzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBAIGph
dmFzY3JpcHRjb3JlX2J1aWx0X25vc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmUvTnVtYmVyQ29uc3RydWN0b3IubHV0LmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFT
Y3JpcHRDb3JlL051bWJlclByb3RvdHlwZS5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmUvT2JqZWN0Q29uc3RydWN0b3IubHV0LmggXAorICAgRGVyaXZlZFNvdXJjZXMvSmF2
YVNjcmlwdENvcmUvT2JqZWN0UHJvdG90eXBlLmx1dC5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZh
U2NyaXB0Q29yZS9SZWdFeHBDb25zdHJ1Y3Rvci5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2
YVNjcmlwdENvcmUvUmVnRXhwT2JqZWN0Lmx1dC5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9SZWdFeHBQcm90b3R5cGUubHV0LmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxNDU5MzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MjQsMTcgKzQyNCwxOSBAQCBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkdl
CiAgICAgaWYgKExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkpKSB7CiAgICAgICAgIEpTQ2VsbCog
YmFzZSA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKIAotICAgICAgICBpZiAocHJvcGVydHkuaXNVSW50
MzIoKSkKKyAgICAgICAgaWYgKHByb3BlcnR5LmlzVUludDMyKCkpIHsKICAgICAgICAgICAgIHJl
dHVybiBnZXRCeVZhbChleGVjLCBiYXNlLCBwcm9wZXJ0eS5hc1VJbnQzMigpKTsKLSAgICAgICAg
aWYgKHByb3BlcnR5LmlzRG91YmxlKCkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eS5p
c0RvdWJsZSgpKSB7CiAgICAgICAgICAgICBkb3VibGUgcHJvcGVydHlBc0RvdWJsZSA9IHByb3Bl
cnR5LmFzRG91YmxlKCk7CiAgICAgICAgICAgICB1aW50MzJfdCBwcm9wZXJ0eUFzVUludDMyID0g
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KHByb3BlcnR5QXNEb3VibGUpOwogICAgICAgICAgICAgaWYg
KHByb3BlcnR5QXNVSW50MzIgPT0gcHJvcGVydHlBc0RvdWJsZSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZ2V0QnlWYWwoZXhlYywgYmFzZSwgcHJvcGVydHlBc1VJbnQzMik7Ci0gICAgICAgIH0g
ZWxzZSBpZiAocHJvcGVydHkuaXNTdHJpbmcoKSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoYmFzZS0+Z2V0QnlTdHJpbmcoZXhlYywgYXNTdHJpbmcocHJvcGVydHkpLT52YWx1
ZShleGVjKSkpOworICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5LmlzU3RyaW5nKCkpIHsKKyAg
ICAgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGJhc2UtPmZhc3RHZXRPd25Qcm9wZXJ0eShl
eGVjLCBhc1N0cmluZyhwcm9wZXJ0eSktPnZhbHVlKGV4ZWMpKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgICAgIH0KICAgICB9Ci0gICAgCisK
ICAgICBpZiAoaXNOYW1lKHByb3BlcnR5KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShiYXNlVmFsdWUuZ2V0KGV4ZWMsIGpzQ2FzdDxOYW1lSW5zdGFuY2UqPihwcm9wZXJ0eS5hc0Nl
bGwoKSktPnByaXZhdGVOYW1lKCkpKTsKIApAQCAtNDUxLDEzICs0NTMsMTUgQEAgRW5jb2RlZEpT
VmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZQogCiAgICAgaWYgKHByb3BlcnR5LmlzVUlu
dDMyKCkpCiAgICAgICAgIHJldHVybiBnZXRCeVZhbChleGVjLCBiYXNlLCBwcm9wZXJ0eS5hc1VJ
bnQzMigpKTsKLSAgICBlbHNlIGlmIChwcm9wZXJ0eS5pc0RvdWJsZSgpKSB7CisgICAgaWYgKHBy
b3BlcnR5LmlzRG91YmxlKCkpIHsKICAgICAgICAgZG91YmxlIHByb3BlcnR5QXNEb3VibGUgPSBw
cm9wZXJ0eS5hc0RvdWJsZSgpOwogICAgICAgICB1aW50MzJfdCBwcm9wZXJ0eUFzVUludDMyID0g
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KHByb3BlcnR5QXNEb3VibGUpOwogICAgICAgICBpZiAocHJv
cGVydHlBc1VJbnQzMiA9PSBwcm9wZXJ0eUFzRG91YmxlKQogICAgICAgICAgICAgcmV0dXJuIGdl
dEJ5VmFsKGV4ZWMsIGJhc2UsIHByb3BlcnR5QXNVSW50MzIpOwotICAgIH0gZWxzZSBpZiAocHJv
cGVydHkuaXNTdHJpbmcoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShiYXNlLT5n
ZXRCeVN0cmluZyhleGVjLCBhc1N0cmluZyhwcm9wZXJ0eSktPnZhbHVlKGV4ZWMpKSk7CisgICAg
fSBlbHNlIGlmIChwcm9wZXJ0eS5pc1N0cmluZygpKSB7CisgICAgICAgIGlmIChKU1ZhbHVlIHJl
c3VsdCA9IGJhc2UtPmZhc3RHZXRPd25Qcm9wZXJ0eShleGVjLCBhc1N0cmluZyhwcm9wZXJ0eSkt
PnZhbHVlKGV4ZWMpKSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKKyAgICB9CiAKICAgICBpZiAoaXNOYW1lKHByb3BlcnR5KSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1ZhbHVlKGJhc2UpLmdldChleGVjLCBqc0Nhc3Q8TmFtZUluc3RhbmNl
Kj4ocHJvcGVydHkuYXNDZWxsKCkpLT5wcml2YXRlTmFtZSgpKSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCShyZXZpc2lvbiAxNDU5MzEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHdvcmtp
bmcgY29weSkKQEAgLTkwLDYgKzkwLDcgQEAgbmFtZXNwYWNlIEpTQyAgewogICAgICAgICBzdGF0
aWMgY29uc3QgSGFzaFRhYmxlKiBudW1iZXJDb25zdHJ1Y3RvclRhYmxlKENhbGxGcmFtZSogY2Fs
bEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5udW1iZXJDb25zdHJ1Y3Rv
clRhYmxlOyB9CiAgICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIG51bWJlclByb3RvdHlw
ZVRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPmdsb2JhbERh
dGEoKS5udW1iZXJQcm90b3R5cGVUYWJsZTsgfQogICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRh
YmxlKiBvYmplY3RDb25zdHJ1Y3RvclRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVy
biBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5vYmplY3RDb25zdHJ1Y3RvclRhYmxlOyB9CisgICAg
ICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIG9iamVjdFByb3RvdHlwZVRhYmxlKENhbGxGcmFt
ZSogY2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5vYmplY3RQcm90
b3R5cGVUYWJsZTsgfQogICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBwcml2YXRlTmFt
ZVByb3RvdHlwZVRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUt
Pmdsb2JhbERhdGEoKS5wcml2YXRlTmFtZVByb3RvdHlwZVRhYmxlOyB9CiAgICAgICAgIHN0YXRp
YyBjb25zdCBIYXNoVGFibGUqIHJlZ0V4cFRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJl
dHVybiBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5yZWdFeHBUYWJsZTsgfQogICAgICAgICBzdGF0
aWMgY29uc3QgSGFzaFRhYmxlKiByZWdFeHBDb25zdHJ1Y3RvclRhYmxlKENhbGxGcmFtZSogY2Fs
bEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5yZWdFeHBDb25zdHJ1Y3Rv
clRhYmxlOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2
aXNpb24gMTQ1OTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI0MTcsOCArMjQxNywxMCBAQCBERUZJTkVfU1RVQl9GVU5DVElP
TihFbmNvZGVkSlNWYWx1ZSwgb3BfCiBzdGF0aWMgSlNWYWx1ZSBnZXRCeVZhbCgKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0LCBS
ZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiB7Ci0gICAgaWYgKExJS0VMWShiYXNlVmFs
dWUuaXNDZWxsKCkgJiYgc3Vic2NyaXB0LmlzU3RyaW5nKCkpKQotICAgICAgICByZXR1cm4gYmFz
ZVZhbHVlLmFzQ2VsbCgpLT5nZXRCeVN0cmluZyhjYWxsRnJhbWUsIGFzU3RyaW5nKHN1YnNjcmlw
dCktPnZhbHVlKGNhbGxGcmFtZSkpOworICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgp
ICYmIHN1YnNjcmlwdC5pc1N0cmluZygpKSkgeworICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQg
PSBiYXNlVmFsdWUuYXNDZWxsKCktPmZhc3RHZXRPd25Qcm9wZXJ0eShjYWxsRnJhbWUsIGFzU3Ry
aW5nKHN1YnNjcmlwdCktPnZhbHVlKGNhbGxGcmFtZSkpKQorICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CiAKICAgICBpZiAoc3Vic2NyaXB0LmlzVUludDMyKCkpIHsKICAgICAgICAg
dWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxNDU5MzEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDYwLDggKzEwNjAsMTAgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2RlbF9ieV9pZAogCiBpbmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCkKIHsKLSAgICBpZiAoTElLRUxZ
KGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmcoKSkpCi0gICAgICAgIHJl
dHVybiBiYXNlVmFsdWUuYXNDZWxsKCktPmdldEJ5U3RyaW5nKGV4ZWMsIGFzU3RyaW5nKHN1YnNj
cmlwdCktPnZhbHVlKGV4ZWMpKTsKKyAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSAm
JiBzdWJzY3JpcHQuaXNTdHJpbmcoKSkpIHsKKyAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0g
YmFzZVZhbHVlLmFzQ2VsbCgpLT5mYXN0R2V0T3duUHJvcGVydHkoZXhlYywgYXNTdHJpbmcoc3Vi
c2NyaXB0KS0+dmFsdWUoZXhlYykpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CiAgICAgCiAgICAgaWYgKHN1YnNjcmlwdC5pc1VJbnQzMigpKSB7CiAgICAgICAgIHVpbnQzMl90
IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAkocmV2aXNpb24gMTQ1OTMxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTksMTEgKzk5LDcgQEAKICAgICBtYWNybyh2YWx1ZU9mKSBcCiAgICAgbWFj
cm8od3JpdGFibGUpIFwKICAgICBtYWNybyhkaXNwbGF5TmFtZSkgXAotICAgIG1hY3JvKGpvaW4p
IFwKLSAgICBtYWNybyhfX2RlZmluZUdldHRlcl9fKSBcCi0gICAgbWFjcm8oX19kZWZpbmVTZXR0
ZXJfXykgXAotICAgIG1hY3JvKF9fbG9va3VwR2V0dGVyX18pIFwKLSAgICBtYWNybyhfX2xvb2t1
cFNldHRlcl9fKQorICAgIG1hY3JvKGpvaW4pCiAKICNkZWZpbmUgSlNDX0NPTU1PTl9JREVOVElG
SUVSU19FQUNIX0tFWVdPUkQobWFjcm8pIFwKICAgICBtYWNybyhudWxsKSBcCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHJldmlzaW9uIDE0NTkzMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIyNywxMCArMjI3LDQgQEAgYm9vbCBKU0NlbGw6OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKUwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotSlNWYWx1ZSBKU0NlbGw6OmdldEJ5U3RyaW5n
U2xvdyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICBJZGVudGlm
aWVyIGlkZW50KCZleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOwotICAgIHJldHVybiBKU1ZhbHVl
KHRoaXMpLmdldChleGVjLCBpZGVudCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9uIDE0NTkzMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjIsOCArMTIyLDcgQEAgcHVibGljOgogICAgIC8vIGNhbGwgdGhpcyBmdW5jdGlvbiwgbm90
IGl0cyBzbG93ZXIgdmlydHVhbCBjb3VudGVycGFydC4gKEZvciBpbnRlZ2VyCiAgICAgLy8gcHJv
cGVydHkgbmFtZXMsIHdlIHdhbnQgYSBzaW1pbGFyIGludGVyZmFjZSB3aXRoIGFwcHJvcHJpYXRl
IG9wdGltaXphdGlvbnMuKQogICAgIGJvb2wgZmFzdEdldE93blByb3BlcnR5U2xvdChFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIAotICAgIEpTVmFsdWUgZ2V0
QnlTdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7CisgICAgSlNWYWx1ZSBmYXN0R2V0
T3duUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7CiAKICAgICBzdGF0aWMgcHRy
ZGlmZl90IHN0cnVjdHVyZU9mZnNldCgpCiAgICAgewpAQCAtMTYyLDEwICsxNjEsNiBAQCBwcm90
ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKLSAgICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlPgotICAgIEpTVmFsdWUgZ2V0
QnlTdHJpbmdBbmRLZXkoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiwgY29uc3QgS2V5VHlwZSYp
OwotICAgIEpTVmFsdWUgZ2V0QnlTdHJpbmdTbG93KEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYp
OwogICAgICAgICAKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cnVjdHVyZTsKIH07
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5o
CShyZXZpc2lvbiAxNDU5MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGxJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2OSw0NiArMTY5LDIwIEBAIEFMV0FZU19J
TkxJTkUgYm9vbCBKU0NlbGw6OmZhc3RHZXRPd25Qcm8KICAgICByZXR1cm4gbWV0aG9kVGFibGUo
KS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEtleVR5cGU+Ci1BTFdBWVNfSU5MSU5FIEpTVmFsdWUgSlND
ZWxsOjpnZXRCeVN0cmluZ0FuZEtleShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgS2V5VHlwZSYga2V5KQotewotICAgIEpTQ2VsbCogY2VsbCA9IHRoaXM7Ci0gICAg
Ci0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKGNlbGwtPnN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCgpKSkKLSAgICAgICAg
ICAgIHJldHVybiBnZXRCeVN0cmluZ1Nsb3coZXhlYywgbmFtZSk7Ci0gICAgICAgIAotICAgICAg
ICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwotICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBj
ZWxsLT5zdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwga2V5LCBhdHRyaWJ1dGVz
KTsKLSAgICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7Ci0gICAgICAgICAgICBp
ZiAoYXR0cmlidXRlcyAmIEFjY2Vzc29yKQotICAgICAgICAgICAgICAgIHJldHVybiBjZWxsLT5n
ZXRCeVN0cmluZ1Nsb3coZXhlYywgbmFtZSk7Ci0gICAgICAgICAgICByZXR1cm4gYXNPYmplY3Qo
Y2VsbCktPmdldERpcmVjdChvZmZzZXQpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBK
U1ZhbHVlIHByb3RvdHlwZSA9IGNlbGwtPnN0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGUoKTsK
LSAgICAgICAgaWYgKCFwcm90b3R5cGUuaXNPYmplY3QoKSkKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjZWxsID0gYXNPYmplY3QocHJvdG90eXBlKTsKLSAgICB9Ci0gICAgCi0gICAgLy8g
TWFrZSBzdXJlIHdlIGFyZW4ndCBnb2luZyBhZnRlciBpbmRleGVkIHN0b3JhZ2UsIGFuZCBpZiB3
ZSBhcmUsIHRoZW4ganVzdCB1c2UgdGhhdC4KLSAgICB1bnNpZ25lZCBpbmRleCA9IHRvVUludDMy
RnJvbVN0cmluZ0ltcGwobmFtZS5pbXBsKCkpOwotICAgIGlmIChpbmRleCA9PSBQcm9wZXJ0eU5h
bWU6Ok5vdEFuSW5kZXgpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIAotICAg
IHJldHVybiBKU1ZhbHVlKHRoaXMpLmdldChleGVjLCBpbmRleCk7Ci19Ci0KIC8vIEZhc3QgY2Fs
bCB0byBnZXQgYSBwcm9wZXJ0eSB3aGVyZSB3ZSBtYXkgbm90IHlldCBoYXZlIGNvbnZlcnRlZCB0
aGUgc3RyaW5nIHRvIGFuCiAvLyBpZGVudGlmaWVyLiBUaGUgZmlyc3QgdGltZSB3ZSBwZXJmb3Jt
IGEgcHJvcGVydHkgYWNjZXNzIHdpdGggYSBnaXZlbiBzdHJpbmcsIHRyeQogLy8gcGVyZm9ybWlu
ZyB0aGUgcHJvcGVydHkgbWFwIGxvb2t1cCB3aXRob3V0IGZvcm1pbmcgYW4gaWRlbnRpZmllci4g
V2UgZGV0ZWN0IHRoaXMKIC8vIGNhc2UgYnkgY2hlY2tpbmcgd2hldGhlciB0aGUgaGFzaCBoYXMg
eWV0IGJlZW4gc2V0IGZvciB0aGlzIHN0cmluZy4KLUFMV0FZU19JTkxJTkUgSlNWYWx1ZSBKU0Nl
bGw6OmdldEJ5U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBuYW1lKQorQUxX
QVlTX0lOTElORSBKU1ZhbHVlIEpTQ2VsbDo6ZmFzdEdldE93blByb3BlcnR5KEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIGlmIChuYW1lLmltcGwoKS0+aGFzSGFz
aCgpKQotICAgICAgICByZXR1cm4gZ2V0QnlTdHJpbmdBbmRLZXkoZXhlYywgbmFtZSwgSWRlbnRp
ZmllcihleGVjLCBuYW1lKSk7Ci0gICAgcmV0dXJuIGdldEJ5U3RyaW5nQW5kS2V5KGV4ZWMsIG5h
bWUsIG5hbWUpOworICAgIGlmICghc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90KCkgJiYgIXN0cnVjdHVyZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0
aWVzKCkpIHsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gbmFtZS5pbXBsKCktPmhh
c0hhc2goKQorICAgICAgICAgICAgPyBzdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgSWRlbnRpZmllcihleGVjLCBuYW1lKSkKKyAgICAgICAgICAgIDogc3RydWN0dXJlKCktPmdl
dChleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOworICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFs
aWRPZmZzZXQpCisgICAgICAgICAgICByZXR1cm4gYXNPYmplY3QodGhpcyktPmxvY2F0aW9uRm9y
T2Zmc2V0KG9mZnNldCktPmdldCgpOworICAgIH0KKyAgICByZXR1cm4gSlNWYWx1ZSgpOwogfQog
CiBpbmxpbmUgYm9vbCBKU0NlbGw6OnRvQm9vbGVhbihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJ
KHJldmlzaW9uIDE0NTkzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDYgKzkzLDcgQEAgZXh0ZXJuIGNvbnN0
IEhhc2hUYWJsZSBtYXRoVGFibGU7CiBleHRlcm4gY29uc3QgSGFzaFRhYmxlIG51bWJlckNvbnN0
cnVjdG9yVGFibGU7CiBleHRlcm4gY29uc3QgSGFzaFRhYmxlIG51bWJlclByb3RvdHlwZVRhYmxl
OwogSlNfRVhQT1JUREFUQSBleHRlcm4gY29uc3QgSGFzaFRhYmxlIG9iamVjdENvbnN0cnVjdG9y
VGFibGU7CitleHRlcm4gY29uc3QgSGFzaFRhYmxlIG9iamVjdFByb3RvdHlwZVRhYmxlOwogZXh0
ZXJuIGNvbnN0IEhhc2hUYWJsZSBwcml2YXRlTmFtZVByb3RvdHlwZVRhYmxlOwogZXh0ZXJuIGNv
bnN0IEhhc2hUYWJsZSByZWdFeHBUYWJsZTsKIGV4dGVybiBjb25zdCBIYXNoVGFibGUgcmVnRXhw
Q29uc3RydWN0b3JUYWJsZTsKQEAgLTE1NCw2ICsxNTUsNyBAQCBKU0dsb2JhbERhdGE6OkpTR2xv
YmFsRGF0YShHbG9iYWxEYXRhVHlwCiAgICAgLCBudW1iZXJDb25zdHJ1Y3RvclRhYmxlKGZhc3RO
ZXc8SGFzaFRhYmxlPihKU0M6Om51bWJlckNvbnN0cnVjdG9yVGFibGUpKQogICAgICwgbnVtYmVy
UHJvdG90eXBlVGFibGUoZmFzdE5ldzxIYXNoVGFibGU+KEpTQzo6bnVtYmVyUHJvdG90eXBlVGFi
bGUpKQogICAgICwgb2JqZWN0Q29uc3RydWN0b3JUYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlND
OjpvYmplY3RDb25zdHJ1Y3RvclRhYmxlKSkKKyAgICAsIG9iamVjdFByb3RvdHlwZVRhYmxlKGZh
c3ROZXc8SGFzaFRhYmxlPihKU0M6Om9iamVjdFByb3RvdHlwZVRhYmxlKSkKICAgICAsIHByaXZh
dGVOYW1lUHJvdG90eXBlVGFibGUoZmFzdE5ldzxIYXNoVGFibGU+KEpTQzo6cHJpdmF0ZU5hbWVQ
cm90b3R5cGVUYWJsZSkpCiAgICAgLCByZWdFeHBUYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlND
OjpyZWdFeHBUYWJsZSkpCiAgICAgLCByZWdFeHBDb25zdHJ1Y3RvclRhYmxlKGZhc3ROZXc8SGFz
aFRhYmxlPihKU0M6OnJlZ0V4cENvbnN0cnVjdG9yVGFibGUpKQpAQCAtMjg0LDYgKzI4Niw3IEBA
IEpTR2xvYmFsRGF0YTo6fkpTR2xvYmFsRGF0YSgpCiAgICAgbnVtYmVyQ29uc3RydWN0b3JUYWJs
ZS0+ZGVsZXRlVGFibGUoKTsKICAgICBudW1iZXJQcm90b3R5cGVUYWJsZS0+ZGVsZXRlVGFibGUo
KTsKICAgICBvYmplY3RDb25zdHJ1Y3RvclRhYmxlLT5kZWxldGVUYWJsZSgpOworICAgIG9iamVj
dFByb3RvdHlwZVRhYmxlLT5kZWxldGVUYWJsZSgpOwogICAgIHByaXZhdGVOYW1lUHJvdG90eXBl
VGFibGUtPmRlbGV0ZVRhYmxlKCk7CiAgICAgcmVnRXhwVGFibGUtPmRlbGV0ZVRhYmxlKCk7CiAg
ICAgcmVnRXhwQ29uc3RydWN0b3JUYWJsZS0+ZGVsZXRlVGFibGUoKTsKQEAgLTMwMyw2ICszMDYs
NyBAQCBKU0dsb2JhbERhdGE6On5KU0dsb2JhbERhdGEoKQogICAgIGZhc3REZWxldGUoY29uc3Rf
Y2FzdDxIYXNoVGFibGUqPihudW1iZXJDb25zdHJ1Y3RvclRhYmxlKSk7CiAgICAgZmFzdERlbGV0
ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KG51bWJlclByb3RvdHlwZVRhYmxlKSk7CiAgICAgZmFz
dERlbGV0ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KG9iamVjdENvbnN0cnVjdG9yVGFibGUpKTsK
KyAgICBmYXN0RGVsZXRlKGNvbnN0X2Nhc3Q8SGFzaFRhYmxlKj4ob2JqZWN0UHJvdG90eXBlVGFi
bGUpKTsKICAgICBmYXN0RGVsZXRlKGNvbnN0X2Nhc3Q8SGFzaFRhYmxlKj4ocHJpdmF0ZU5hbWVQ
cm90b3R5cGVUYWJsZSkpOwogICAgIGZhc3REZWxldGUoY29uc3RfY2FzdDxIYXNoVGFibGUqPihy
ZWdFeHBUYWJsZSkpOwogICAgIGZhc3REZWxldGUoY29uc3RfY2FzdDxIYXNoVGFibGUqPihyZWdF
eHBDb25zdHJ1Y3RvclRhYmxlKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbERhdGEuaAkocmV2aXNpb24gMTQ1OTMxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyMyw2ICsy
MjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSGFzaFRhYmxlKiBudW1iZXJD
b25zdHJ1Y3RvclRhYmxlOwogICAgICAgICBjb25zdCBIYXNoVGFibGUqIG51bWJlclByb3RvdHlw
ZVRhYmxlOwogICAgICAgICBjb25zdCBIYXNoVGFibGUqIG9iamVjdENvbnN0cnVjdG9yVGFibGU7
CisgICAgICAgIGNvbnN0IEhhc2hUYWJsZSogb2JqZWN0UHJvdG90eXBlVGFibGU7CiAgICAgICAg
IGNvbnN0IEhhc2hUYWJsZSogcHJpdmF0ZU5hbWVQcm90b3R5cGVUYWJsZTsKICAgICAgICAgY29u
c3QgSGFzaFRhYmxlKiByZWdFeHBUYWJsZTsKICAgICAgICAgY29uc3QgSGFzaFRhYmxlKiByZWdF
eHBDb25zdHJ1Y3RvclRhYmxlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMTQ1OTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAyLDE2ICsyMjAyLDYg
QEAgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW5kZXhCZXlvbmRWZWN0bwogICAgIH0KIH0KIAot
dm9pZCBKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5
TmFtZSwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0
aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQotewotICAgIFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOwotICAgIEFTU0VSVChu
YW1lKTsKLSAgICAKLSAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9Ci0gICAgICAgIEpTRnVuY3Rp
b246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uTGVuZ3RoLCBuYW1lLCBuYXRp
dmVGdW5jdGlvbiwgaW50cmluc2ljKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRyaWJ1dGVzKTsKLX0KLQogQUxXQVlTX0lOTElO
RSB1bnNpZ25lZCBKU09iamVjdDo6Z2V0TmV3VmVjdG9yTGVuZ3RoKHVuc2lnbmVkIGN1cnJlbnRW
ZWN0b3JMZW5ndGgsIHVuc2lnbmVkIGN1cnJlbnRMZW5ndGgsIHVuc2lnbmVkIGRlc2lyZWRMZW5n
dGgpCiB7CiAgICAgQVNTRVJUKGRlc2lyZWRMZW5ndGggPD0gTUFYX1NUT1JBR0VfVkVDVE9SX0xF
TkdUSCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJl
dmlzaW9uIDE0NTkzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2NSw4ICs1NjUsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBw
dXREaXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQs
IEpTVmFsdWUgdmFsdWUpIHsgbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KS0+c2V0KGdsb2JhbERh
dGEsIHRoaXMsIHZhbHVlKTsgfQogICAgIHZvaWQgcHV0RGlyZWN0VW5kZWZpbmVkKFByb3BlcnR5
T2Zmc2V0IG9mZnNldCkgeyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5zZXRVbmRlZmluZWQo
KTsgfQogCi0gICAgdm9pZCBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3Ro
LCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLQogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNo
b3VsZFRocm93KTsKIAogICAgIGJvb2wgaXNHbG9iYWxPYmplY3QoKSBjb25zdDsKQEAgLTcwMiw3
ICs3MDAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+aXNPYmpl
Y3QoKSk7CiAgICAgICAgIEFTU0VSVChjbGFzc0luZm8oKSk7CiAgICAgfQotICAgIAorCiAgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNf
aW5mbyk7CkBAIC05MTEsNyArOTA5LDYgQEAgcHJpdmF0ZToKICAgICAvLyBOb2JvZHkgc2hvdWxk
IGV2ZXIgYXNrIGFueSBvZiB0aGVzZSBxdWVzdGlvbnMgb24gc29tZXRoaW5nIGFscmVhZHkga25v
d24gdG8gYmUgYSBKU09iamVjdC4KICAgICB1c2luZyBKU0NlbGw6OmlzQVBJVmFsdWVXcmFwcGVy
OwogICAgIHVzaW5nIEpTQ2VsbDo6aXNHZXR0ZXJTZXR0ZXI7Ci0KICAgICB2b2lkIGdldE9iamVj
dCgpOwogICAgIHZvaWQgZ2V0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYyk7CiAgICAgdm9pZCBpc09i
amVjdCgpOwpAQCAtMTQ1MiwxNCArMTQ0OSw2IEBAIGlubGluZSBpbnQgb2Zmc2V0UmVsYXRpdmVU
b0Jhc2UoUHJvcGVydHkKIAogQ09NUElMRV9BU1NFUlQoIShzaXplb2YoSlNPYmplY3QpICUgc2l6
ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4pKSwgSlNPYmplY3RfaW5saW5lX3N0b3JhZ2Vf
aGFzX2NvcnJlY3RfYWxpZ25tZW50KTsKIAotLy8gSGVscGVyIGZvciBkZWZpbmluZyBuYXRpdmUg
ZnVuY3Rpb25zLCBpZiB5b3UncmUgbm90IHVzaW5nIGEgc3RhdGljIGhhc2ggdGFibGUuCi0vLyBV
c2UgdGhpcyBtYWNybyBmcm9tIHdpdGhpbiBmaW5pc2hDcmVhdGlvbigpIG1ldGhvZHMgaW4gcHJv
dG90eXBlcy4gVGhpcyBhc3N1bWVzCi0vLyB5b3UndmUgZGVmaW5lZCB2YXJpYWJsZXMgY2FsbGVk
IGV4ZWMsIGdsb2JhbE9iamVjdCwgYW5kIGdsb2JhbERhdGEsIGFuZCB0aGV5Ci0vLyBoYXZlIHRo
ZSBleHBlY3RlZCBtZWFuaW5ncy4gVGhpcyBhbHNvIGFzc3VtZXMgdGhhdCB0aGUgZnVuY3Rpb24g
eW91J3JlIGRlZmluaW5nCi0vLyBkb2Vzbid0IGhhdmUgYW4gaW50cmluc2ljLgotI2RlZmluZSBK
U0NfTkFUSVZFX0ZVTkNUSU9OKGpzTmFtZSwgY3BwTmFtZSwgYXR0cmlidXRlcywgbGVuZ3RoKSBc
Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxE
YXRhLnByb3BlcnR5TmFtZXMtPmpzTmFtZSwgKGxlbmd0aCksIGNwcE5hbWUsIE5vSW50cmluc2lj
LCAoYXR0cmlidXRlcykpCi0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gSlNPYmpl
Y3RfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCShyZXZp
c2lvbiAxNDU5MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03Nyw5ICs3NywxMSBAQCBib29sIHNldFVwU3RhdGljRnVuY3Rp
b25TbG90KEV4ZWNTdGF0ZSogCiAgICAgICAgIGlmICh0aGlzT2JqLT5zdGF0aWNGdW5jdGlvbnNS
ZWlmaWVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgICAgIHRoaXNP
YmotPnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKAotICAgICAgICAgICAgZXhlYywgdGhpc09iai0+
Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgZW50cnktPmZ1bmN0aW9uTGVuZ3RoKCksCi0g
ICAgICAgICAgICBlbnRyeS0+ZnVuY3Rpb24oKSwgZW50cnktPmludHJpbnNpYygpLCBlbnRyeS0+
YXR0cmlidXRlcygpKTsKKyAgICAgICAgU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5w
dWJsaWNOYW1lKCk7CisgICAgICAgIEFTU0VSVChuYW1lKTsKKyAgICAgICAgCisgICAgICAgIEpT
RnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXNPYmotPmds
b2JhbE9iamVjdCgpLCBlbnRyeS0+ZnVuY3Rpb25MZW5ndGgoKSwgbmFtZSwgZW50cnktPmZ1bmN0
aW9uKCksIGVudHJ5LT5pbnRyaW5zaWMoKSk7CisgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdChl
eGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgZnVuY3Rpb24sIGVudHJ5LT5hdHRyaWJ1
dGVzKCkpOwogICAgICAgICBvZmZzZXQgPSB0aGlzT2JqLT5nZXREaXJlY3RPZmZzZXQoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBBU1NFUlQoaXNWYWxpZE9mZnNl
dChvZmZzZXQpKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDE0NTkzMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDQwICs0MCw1MSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNQ
cm9wZXJ0eUlzRW51bWVyYWJsZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSopOwog
Cit9CisKKyNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCiBBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihPYmplY3RQcm90b3R5cGUpOwogCi1j
b25zdCBDbGFzc0luZm8gT2JqZWN0UHJvdG90eXBlOjpzX2luZm8gPSB7ICJPYmplY3QiLCAmSlNO
b25GaW5hbE9iamVjdDo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE9iamVjdFBy
b3RvdHlwZSkgfTsKK2NvbnN0IENsYXNzSW5mbyBPYmplY3RQcm90b3R5cGU6OnNfaW5mbyA9IHsg
Ik9iamVjdCIsICZKU05vbkZpbmFsT2JqZWN0OjpzX2luZm8sIDAsIEV4ZWNTdGF0ZTo6b2JqZWN0
UHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoT2JqZWN0UHJvdG90eXBlKSB9Owor
CisvKiBTb3VyY2UgZm9yIE9iamVjdFByb3RvdHlwZS5sdXQuaAorQGJlZ2luIG9iamVjdFByb3Rv
dHlwZVRhYmxlCisgIHRvU3RyaW5nICAgICAgICAgICAgICBvYmplY3RQcm90b0Z1bmNUb1N0cmlu
ZyAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICB0b0xvY2FsZVN0cmluZyAg
ICAgICAgb2JqZWN0UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDAKKyAgdmFsdWVPZiAgICAgICAgICAgICAgIG9iamVjdFByb3RvRnVuY1ZhbHVlT2Yg
ICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCisgIGhhc093blByb3BlcnR5ICAg
ICAgICBvYmplY3RQcm90b0Z1bmNIYXNPd25Qcm9wZXJ0eSAgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gMQorICBwcm9wZXJ0eUlzRW51bWVyYWJsZSAgb2JqZWN0UHJvdG9GdW5jUHJvcGVydHlJ
c0VudW1lcmFibGUgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgaXNQcm90b3R5cGVPZiAgICAg
ICAgIG9iamVjdFByb3RvRnVuY0lzUHJvdG90eXBlT2YgICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAxCisgIF9fZGVmaW5lR2V0dGVyX18gICAgICBvYmplY3RQcm90b0Z1bmNEZWZpbmVHZXR0
ZXIgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorICBfX2RlZmluZVNldHRlcl9fICAg
ICAgb2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDIKKyAgX19sb29rdXBHZXR0ZXJfXyAgICAgIG9iamVjdFByb3RvRnVuY0xvb2t1cEdldHRl
ciAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIF9fbG9va3VwU2V0dGVyX18gICAg
ICBvYmplY3RQcm90b0Z1bmNMb29rdXBTZXR0ZXIgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMQorQGVuZAorKi8KIAogT2JqZWN0UHJvdG90eXBlOjpPYmplY3RQcm90b3R5cGUoRXhlY1N0
YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0dWN0dXJlKQogICAgIDogSlNOb25GaW5hbE9iamVjdChl
eGVjLT5nbG9iYWxEYXRhKCksIHN0dWN0dXJlKQogewogfQogCi12b2lkIE9iamVjdFByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQordm9pZCBPYmplY3RQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqKQogewotICAgIEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKLSAgICAKICAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbihnbG9iYWxEYXRhKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogICAgIGds
b2JhbERhdGEucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKLSAgICAKLSAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OKHRvU3RyaW5nLCBvYmplY3RQcm90b0Z1bmNUb1N0cmluZywgRG9udEVu
dW0sIDApOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odG9Mb2NhbGVTdHJpbmcsIG9iamVjdFBy
b3RvRnVuY1RvTG9jYWxlU3RyaW5nLCBEb250RW51bSwgMCk7Ci0gICAgSlNDX05BVElWRV9GVU5D
VElPTih2YWx1ZU9mLCBvYmplY3RQcm90b0Z1bmNWYWx1ZU9mLCBEb250RW51bSwgMCk7Ci0gICAg
SlNDX05BVElWRV9GVU5DVElPTihoYXNPd25Qcm9wZXJ0eSwgb2JqZWN0UHJvdG9GdW5jSGFzT3du
UHJvcGVydHksIERvbnRFbnVtLCAxKTsKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHByb3BlcnR5
SXNFbnVtZXJhYmxlLCBvYmplY3RQcm90b0Z1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZSwgRG9udEVu
dW0sIDEpOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oaXNQcm90b3R5cGVPZiwgb2JqZWN0UHJv
dG9GdW5jSXNQcm90b3R5cGVPZiwgRG9udEVudW0sIDEpOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJ
T04oX19kZWZpbmVHZXR0ZXJfXywgb2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVyLCBEb250RW51
bSwgMik7Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTihfX2RlZmluZVNldHRlcl9fLCBvYmplY3RQ
cm90b0Z1bmNEZWZpbmVTZXR0ZXIsIERvbnRFbnVtLCAyKTsKLSAgICBKU0NfTkFUSVZFX0ZVTkNU
SU9OKF9fbG9va3VwR2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0xvb2t1cEdldHRlciwgRG9udEVu
dW0sIDEpOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oX19sb29rdXBTZXR0ZXJfXywgb2JqZWN0
UHJvdG9GdW5jTG9va3VwU2V0dGVyLCBEb250RW51bSwgMSk7Ci19Ci0KLU9iamVjdFByb3RvdHlw
ZSogT2JqZWN0UHJvdG90eXBlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLXsKLSAgICBPYmplY3RQcm90
b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE9iamVjdFByb3Rv
dHlwZT4oKmV4ZWMtPmhlYXAoKSkpIE9iamVjdFByb3RvdHlwZShleGVjLCBzdHJ1Y3R1cmUpOwot
ICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24oZXhlYywgZ2xvYmFsT2JqZWN0KTsKLSAgICBy
ZXR1cm4gcHJvdG90eXBlOworfQorCitib29sIE9iamVjdFByb3RvdHlwZTo6Z2V0T3duUHJvcGVy
dHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0
aW9uU2xvdDxKU05vbkZpbmFsT2JqZWN0PihleGVjLCBFeGVjU3RhdGU6Om9iamVjdFByb3RvdHlw
ZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8T2JqZWN0UHJvdG90eXBlKj4oY2VsbCksIHByb3BlcnR5TmFt
ZSwgc2xvdCk7Cit9CisKK2Jvb2wgT2JqZWN0UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJu
IGdldFN0YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcjxKU05vbkZpbmFsT2JqZWN0PihleGVjLCBFeGVj
U3RhdGU6Om9iamVjdFByb3RvdHlwZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8T2JqZWN0UHJvdG90eXBl
Kj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KIAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
UHJvdG90eXBlLmgJKHJldmlzaW9uIDE0NTkzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSwxMiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSlNOb25GaW5h
bE9iamVjdCBCYXNlOwogCi0gICAgICAgIHN0YXRpYyBPYmplY3RQcm90b3R5cGUqIGNyZWF0ZShF
eGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAgICAgICBzdGF0aWMg
T2JqZWN0UHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgeworICAgICAgICAg
ICAgT2JqZWN0UHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxPYmplY3RQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBPYmplY3RQcm90b3R5cGUoZXhlYywg
c3RydWN0dXJlKTsKKyAgICAgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+
Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QpOworICAgICAgICAgICAgcmV0dXJuIHByb3RvdHlw
ZTsKKyAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwog
CkBAIC0zOSwxMCArNDQsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHBy
b3RlY3RlZDoKLSAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBKU0dsb2Jh
bE9iamVjdCopOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU05vbkZpbmFsT2JqZWN0OjpTdHJ1Y3R1
cmVGbGFnczsKKworICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYsIEpT
R2xvYmFsT2JqZWN0Kik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBPYmplY3RQcm90b3R5cGUo
RXhlY1N0YXRlKiwgU3RydWN0dXJlKik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
OworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIH07
CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCShyZXZpc2lv
biAxNDU5MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhh
c2hUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTEsNyArMzExLDcgQEAgaW5saW5lIFByb3Bl
cnR5VGFibGU6OmZpbmRfaXRlcmF0b3IgUHJvcAogaW5saW5lIFByb3BlcnR5VGFibGU6OmZpbmRf
aXRlcmF0b3IgUHJvcGVydHlUYWJsZTo6ZmluZFdpdGhTdHJpbmcoY29uc3QgS2V5VHlwZSYga2V5
KQogewogICAgIEFTU0VSVChrZXkpOwotICAgIEFTU0VSVCgha2V5LT5pc0lkZW50aWZpZXIoKSk7
CisgICAgQVNTRVJUKCFrZXktPmlzSWRlbnRpZmllcigpICYmICFrZXktPmhhc0hhc2goKSk7CiAg
ICAgdW5zaWduZWQgaGFzaCA9IGtleS0+aGFzaCgpOwogICAgIHVuc2lnbmVkIHN0ZXAgPSAwOwog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNp
b24gMTQ1OTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIzMyw4ICsyMzMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBtYXNx
dWVyYWRlc0FzVW5kZWZpbmVkKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
IAogICAgIFByb3BlcnR5T2Zmc2V0IGdldChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwot
ICAgIFByb3BlcnR5T2Zmc2V0IGdldChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIHVuc2ln
bmVkJiBhdHRyaWJ1dGVzKTsKLSAgICBQcm9wZXJ0eU9mZnNldCBnZXQoSlNHbG9iYWxEYXRhJiwg
Y29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzKTsKKyAgICBQcm9w
ZXJ0eU9mZnNldCBnZXQoSlNHbG9iYWxEYXRhJiwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUpOwog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIFByb3BlcnR5T2Zmc2V0IGdldChKU0dsb2JhbERhdGEmLCBQ
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVl
KTsKIAogICAgIGJvb2wgaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJu
IG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllczsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAkocmV2aXNpb24gMTQ1OTMxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02OSwyMiArNjksNyBAQCBpbmxpbmUgUHJvcGVydHlPZmZzZXQgU3RydWN0
dXJlOjpnZXQoSlNHCiAgICAgcmV0dXJuIGVudHJ5ID8gZW50cnktPm9mZnNldCA6IGludmFsaWRP
ZmZzZXQ7CiB9CiAKLWlubGluZSBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmdldChKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBh
dHRyaWJ1dGVzKQotewotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNf
aW5mbyk7Ci0gICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEp
OwotICAgIGlmICghcHJvcGVydHlUYWJsZSgpKQotICAgICAgICByZXR1cm4gaW52YWxpZE9mZnNl
dDsKLQotICAgIFByb3BlcnR5TWFwRW50cnkqIGVudHJ5ID0gcHJvcGVydHlUYWJsZSgpLT5maW5k
KHByb3BlcnR5TmFtZS51aWQoKSkuZmlyc3Q7Ci0gICAgaWYgKCFlbnRyeSkKLSAgICAgICAgcmV0
dXJuIGludmFsaWRPZmZzZXQ7Ci0gICAgCi0gICAgYXR0cmlidXRlcyA9IGVudHJ5LT5hdHRyaWJ1
dGVzOwotICAgIHJldHVybiBlbnRyeS0+b2Zmc2V0OwotfQotCi1pbmxpbmUgUHJvcGVydHlPZmZz
ZXQgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBXVEY6OlN0
cmluZyYgbmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMpCitpbmxpbmUgUHJvcGVydHlPZmZzZXQg
U3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBXVEY6OlN0cmlu
ZyYgbmFtZSkKIHsKICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2lu
Zm8pOwogICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsK
QEAgLTkyLDExICs3Nyw3IEBAIGlubGluZSBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmdldChK
U0cKICAgICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CiAKICAgICBQcm9wZXJ0eU1hcEVudHJ5
KiBlbnRyeSA9IHByb3BlcnR5VGFibGUoKS0+ZmluZFdpdGhTdHJpbmcobmFtZS5pbXBsKCkpLmZp
cnN0OwotICAgIGlmICghZW50cnkpCi0gICAgICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0OwotCi0g
ICAgYXR0cmlidXRlcyA9IGVudHJ5LT5hdHRyaWJ1dGVzOwotICAgIHJldHVybiBlbnRyeS0+b2Zm
c2V0OworICAgIHJldHVybiBlbnRyeSA/IGVudHJ5LT5vZmZzZXQgOiBpbnZhbGlkT2Zmc2V0Owog
fQogICAgIAogaW5saW5lIGJvb2wgU3RydWN0dXJlOjptYXNxdWVyYWRlc0FzVW5kZWZpbmVkKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0KQpJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ1
OTMxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjAgQEAKKzIwMTMtMDMtMTUgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNv
bT4KKworICAgICAgICBSb2xsIG91dCByMTQ1ODM4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTI0NTgKKworICAgICAgICBSZXF1ZXN0ZWQgYnkgRmls
aXAgUGl6bG8uCisKKyAgICAgICAgKiBmYXN0L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmlu
Zy1sb29rdXAtaGl0LWlkZW50aWZpZXIuanM6CisgICAgICAgICogZmFzdC9qcy9yZWdyZXNzL3Nj
cmlwdC10ZXN0cy9zdHJpbmctbG9va3VwLWhpdC5qczoKKyAgICAgICAgKiBmYXN0L2pzL3JlZ3Jl
c3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1sb29rdXAtbWlzcy5qczoKKyAgICAgICAgKiBmYXN0L2pz
L3JlZ3Jlc3Mvc3RyaW5nLWxvb2t1cC1oaXQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3Qv
anMvcmVncmVzcy9zdHJpbmctbG9va3VwLWhpdC1pZGVudGlmaWVyLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBmYXN0L2pzL3JlZ3Jlc3Mvc3RyaW5nLWxvb2t1cC1oaXQtaWRlbnRpZmllci5odG1s
OgorICAgICAgICAqIGZhc3QvanMvcmVncmVzcy9zdHJpbmctbG9va3VwLWhpdC5odG1sOgorICAg
ICAgICAqIGZhc3QvanMvcmVncmVzcy9zdHJpbmctbG9va3VwLW1pc3MtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGZhc3QvanMvcmVncmVzcy9zdHJpbmctbG9va3VwLW1pc3MuaHRtbDoKKwogMjAx
My0wMy0xNSAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtW
OF0gQmluZGluZzogSW1wbGVtZW50IEVuZm9yY2VSYW5nZSBJREwgQXR0cmlidXRlIGZvciBsb25n
IGxvbmcgY29udmVyc2lvbnMKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zdHJp
bmctbG9va3VwLWhpdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9qcy9yZWdyZXNzL3N0cmluZy1sb29rdXAtaGl0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTQ1
OTMxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N0cmluZy1sb29rdXAtaGl0LWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMCwwIEBACi1KU1JlZ3Jlc3Mvc3Ry
aW5nLWxvb2t1cC1oaXQKLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVBBU1Mgbm8g
ZXhjZXB0aW9uIHRocm93bgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNU
IENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zdHJpbmctbG9v
a3VwLWhpdC1pZGVudGlmaWVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2pzL3JlZ3Jlc3Mvc3RyaW5nLWxvb2t1cC1oaXQtaWRlbnRpZmllci1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDE0NTkzMSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zdHJp
bmctbG9va3VwLWhpdC1pZGVudGlmaWVyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MSwxMCArMCwwIEBACi1KU1JlZ3Jlc3Mvc3RyaW5nLWxvb2t1cC1oaXQtaWRlbnRpZmllcgotCi1P
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyBubyBleGNlcHRpb24gdGhyb3duCi1Q
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N0cmluZy1sb29rdXAtaGl0LWlkZW50aWZpZXIu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc3RyaW5nLWxv
b2t1cC1oaXQtaWRlbnRpZmllci5odG1sCShyZXZpc2lvbiAxNDU5MzEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2pzL3JlZ3Jlc3Mvc3RyaW5nLWxvb2t1cC1oaXQtaWRlbnRpZmllci5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDEyICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdCBz
cmM9InJlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2Ny
aXB0LXRlc3RzL3N0cmluZy1sb29rdXAtaGl0LWlkZW50aWZpZXIuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9InJlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N0cmluZy1sb29rdXAtaGl0
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N0cmluZy1s
b29rdXAtaGl0Lmh0bWwJKHJldmlzaW9uIDE0NTkzMSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMv
cmVncmVzcy9zdHJpbmctbG9va3VwLWhpdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyICsw
LDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KLTxo
dG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWdyZXNz
LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N0cmluZy1sb29r
dXAtaGl0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVncmVzcy1wb3N0
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMv
cmVncmVzcy9zdHJpbmctbG9va3VwLW1pc3MtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zdHJpbmctbG9va3VwLW1pc3MtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAxNDU5MzEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc3RyaW5n
LWxvb2t1cC1taXNzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMCwwIEBA
Ci1KU1JlZ3Jlc3Mvc3RyaW5nLWxvb2t1cC1taXNzCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KLQotCi1QQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jl
Z3Jlc3Mvc3RyaW5nLWxvb2t1cC1taXNzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9qcy9yZWdyZXNzL3N0cmluZy1sb29rdXAtbWlzcy5odG1sCShyZXZpc2lvbiAxNDU5MzEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc3RyaW5nLWxvb2t1cC1taXNzLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMTIgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSJzY3JpcHQtdGVzdHMvc3RyaW5nLWxvb2t1cC1taXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLWxv
b2t1cC1oaXQtaWRlbnRpZmllci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pz
L3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1sb29rdXAtaGl0LWlkZW50aWZpZXIuanMJKHJl
dmlzaW9uIDE0NTkzMSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zY3JpcHQtdGVz
dHMvc3RyaW5nLWxvb2t1cC1oaXQtaWRlbnRpZmllci5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwx
NyArMCwwIEBACi12YXIgcmVzdWx0ID0gKGZ1bmN0aW9uKCl7Ci0gICAgdmFyIG8gPSB7fTsKLSAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKQotICAgICAgICBvWyJhIiArIGldID0gNDI7
Ci0gICAgdmFyIHJlc3VsdCA9IFtdOwotICAgIHZhciBzdHJpbmdzID0gW107Ci0gICAgZm9yICh2
YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkKLSAgICAgICAgc3RyaW5ncy5wdXNoKCJhIiArIGkpOwot
ICAgIGZvciAodmFyIGogPSAwOyBqIDwgMTAwMDsgKytqKSB7Ci0gICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgMTAwOyArK2kpCi0gICAgICAgICAgICByZXN1bHQucHVzaChvW3N0cmluZ3NbaV1d
KTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdC5sZW5ndGg7Ci19KSgpOwotCi1pZiAocmVzdWx0
ICE9IDEwMDAwMCkKLSAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1sb29r
dXAtaGl0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zY3Jp
cHQtdGVzdHMvc3RyaW5nLWxvb2t1cC1oaXQuanMJKHJldmlzaW9uIDE0NTkzMSkKKysrIExheW91
dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLWxvb2t1cC1oaXQuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMTQgKzAsMCBAQAotdmFyIHJlc3VsdCA9IChmdW5jdGlvbigp
ewotICAgIHZhciBvID0ge307Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkKLSAg
ICAgICAgb1siYSIgKyBpXSA9IDQyOwotICAgIHZhciByZXN1bHQgPSBbXTsKLSAgICBmb3IgKHZh
ciBqID0gMDsgaiA8IDEwMDA7ICsraikgewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDsgKytpKQotICAgICAgICAgICAgcmVzdWx0LnB1c2gob1siYSIgKyBpXSk7Ci0gICAgfQotICAg
IHJldHVybiByZXN1bHQubGVuZ3RoOwotfSkoKTsKLQotaWYgKHJlc3VsdCAhPSAxMDAwMDApCi0g
ICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctbG9va3VwLW1pc3MuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJp
bmctbG9va3VwLW1pc3MuanMJKHJldmlzaW9uIDE0NTkzMSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
anMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLWxvb2t1cC1taXNzLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDEyICswLDAgQEAKLXZhciByZXN1bHQgPSAoZnVuY3Rpb24oKXsKLSAgICB2YXIg
byA9IHt9OwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpCi0gICAgICAgIG9bImEi
ICsgaV0gPSA0MjsKLSAgICB2YXIgcmVzdWx0ID0gW107Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDAwMDA7ICsraSkKLSAgICAgICAgcmVzdWx0LnB1c2gob1siYSIgKyBpXSk7Ci0gICAgcmV0
dXJuIHJlc3VsdC5sZW5ndGg7Ci19KSgpOwotCi1pZiAocmVzdWx0ICE9IDEwMDAwMCkKLSAgICB0
aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193360</attachid>
            <date>2013-03-15 13:10:21 -0700</date>
            <delta_ts>2013-03-15 13:22:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112458-20130315130616.patch</filename>
            <type>text/plain</type>
            <size>36769</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ1OTMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBA
CisyMDEzLTAzLTE1ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgUm9sbCBvdXQgcjE0NTgzOAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTEyNDU4CisKKyAgICAgICAgUmVxdWVzdGVkIGJ5IEZpbGlwIFBp
emxvLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMubWFrZToKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5wcmk6CisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAg
ICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6b2Jq
ZWN0UHJvdG90eXBlVGFibGUpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAg
IChKU0M6OmdldEJ5VmFsKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpnZXRCeVZhbCk6CisgICAgICAgICogcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmNwcDoKKyAgICAgICAgKEpT
Qyk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQ2VsbCk6CisgICAg
ICAgICogcnVudGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAo
SlNDOjpKU0NlbGw6OmZhc3RHZXRPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbERhdGEuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRh
OjpKU0dsb2JhbERhdGEpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6On5KU0dsb2JhbERh
dGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisgICAgICAgIChKU0dsb2Jh
bERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU09iamVjdCk6CisgICAg
ICAgIChKU0MpOgorICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmNwcDoKKyAgICAgICAgKEpTQzo6
c2V0VXBTdGF0aWNGdW5jdGlvblNsb3QpOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpPYmplY3RQcm90b3R5cGU6OmdldE93blBy
b3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3RvdHlwZTo6Z2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5oOgorICAg
ICAgICAoSlNDOjpPYmplY3RQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChPYmplY3RQcm90
b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaDoKKyAgICAg
ICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6ZmluZFdpdGhTdHJpbmcpOgorICAgICAgICAqIHJ1bnRp
bWUvU3RydWN0dXJlLmg6CisgICAgICAgIChTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUv
U3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmdldCk6CisKIDIw
MTMtMDMtMTUgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIHJ1bnRpbWUgY2hlY2sgZm9yIGltcHJvcGVyIHJlZ2lzdGVyIGFsbG9jYXRpb25zIGluIERG
RwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTQ1OTMx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0zMjksNiArMzI5LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0xVVF9GSUxFUwogICAgIHJ1
bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9OdW1iZXJQcm90b3R5cGUu
Y3BwCiAgICAgcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL09iamVj
dFByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAogICAgIHJ1
bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9u
IDE0NTkzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3
b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIGFsbCA6IFwKICAgICBOdW1iZXJDb25zdHJ1
Y3Rvci5sdXQuaCBcCiAgICAgTnVtYmVyUHJvdG90eXBlLmx1dC5oIFwKICAgICBPYmplY3RDb25z
dHJ1Y3Rvci5sdXQuaCBcCisgICAgT2JqZWN0UHJvdG90eXBlLmx1dC5oIFwKICAgICBSZWdFeHBD
b25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgUmVnRXhwUHJvdG90eXBlLmx1dC5oIFwKICAgICBSZWdF
eHBKaXRUYWJsZXMuaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNl
cy5wcmkJKHJldmlzaW9uIDE0NTkzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVk
U291cmNlcy5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTIwLDYgKzIwLDcgQEAgTFVUX0ZJTEVTICs9
IFwKICAgICBydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcCBcCiAgICAgcnVudGltZS9OdW1i
ZXJQcm90b3R5cGUuY3BwIFwKICAgICBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcCBcCisg
ICAgcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwIFwKICAgICBydW50aW1lL1JlZ0V4cENvbnN0
cnVjdG9yLmNwcCBcCiAgICAgcnVudGltZS9SZWdFeHBPYmplY3QuY3BwIFwKICAgICBydW50aW1l
L1JlZ0V4cFByb3RvdHlwZS5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE0NTkzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBAIGph
dmFzY3JpcHRjb3JlX2J1aWx0X25vc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmUvTnVtYmVyQ29uc3RydWN0b3IubHV0LmggXAogCURlcml2ZWRTb3VyY2VzL0phdmFT
Y3JpcHRDb3JlL051bWJlclByb3RvdHlwZS5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmUvT2JqZWN0Q29uc3RydWN0b3IubHV0LmggXAorICAgRGVyaXZlZFNvdXJjZXMvSmF2
YVNjcmlwdENvcmUvT2JqZWN0UHJvdG90eXBlLmx1dC5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZh
U2NyaXB0Q29yZS9SZWdFeHBDb25zdHJ1Y3Rvci5sdXQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSmF2
YVNjcmlwdENvcmUvUmVnRXhwT2JqZWN0Lmx1dC5oIFwKIAlEZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9SZWdFeHBQcm90b3R5cGUubHV0LmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxNDU5MzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MjQsMTcgKzQyNCwxOSBAQCBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkdl
CiAgICAgaWYgKExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkpKSB7CiAgICAgICAgIEpTQ2VsbCog
YmFzZSA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKIAotICAgICAgICBpZiAocHJvcGVydHkuaXNVSW50
MzIoKSkKKyAgICAgICAgaWYgKHByb3BlcnR5LmlzVUludDMyKCkpIHsKICAgICAgICAgICAgIHJl
dHVybiBnZXRCeVZhbChleGVjLCBiYXNlLCBwcm9wZXJ0eS5hc1VJbnQzMigpKTsKLSAgICAgICAg
aWYgKHByb3BlcnR5LmlzRG91YmxlKCkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eS5p
c0RvdWJsZSgpKSB7CiAgICAgICAgICAgICBkb3VibGUgcHJvcGVydHlBc0RvdWJsZSA9IHByb3Bl
cnR5LmFzRG91YmxlKCk7CiAgICAgICAgICAgICB1aW50MzJfdCBwcm9wZXJ0eUFzVUludDMyID0g
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KHByb3BlcnR5QXNEb3VibGUpOwogICAgICAgICAgICAgaWYg
KHByb3BlcnR5QXNVSW50MzIgPT0gcHJvcGVydHlBc0RvdWJsZSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZ2V0QnlWYWwoZXhlYywgYmFzZSwgcHJvcGVydHlBc1VJbnQzMik7Ci0gICAgICAgIH0g
ZWxzZSBpZiAocHJvcGVydHkuaXNTdHJpbmcoKSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoYmFzZS0+Z2V0QnlTdHJpbmcoZXhlYywgYXNTdHJpbmcocHJvcGVydHkpLT52YWx1
ZShleGVjKSkpOworICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5LmlzU3RyaW5nKCkpIHsKKyAg
ICAgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGJhc2UtPmZhc3RHZXRPd25Qcm9wZXJ0eShl
eGVjLCBhc1N0cmluZyhwcm9wZXJ0eSktPnZhbHVlKGV4ZWMpKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgICAgIH0KICAgICB9Ci0gICAgCisK
ICAgICBpZiAoaXNOYW1lKHByb3BlcnR5KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShiYXNlVmFsdWUuZ2V0KGV4ZWMsIGpzQ2FzdDxOYW1lSW5zdGFuY2UqPihwcm9wZXJ0eS5hc0Nl
bGwoKSktPnByaXZhdGVOYW1lKCkpKTsKIApAQCAtNDUxLDEzICs0NTMsMTUgQEAgRW5jb2RlZEpT
VmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZQogCiAgICAgaWYgKHByb3BlcnR5LmlzVUlu
dDMyKCkpCiAgICAgICAgIHJldHVybiBnZXRCeVZhbChleGVjLCBiYXNlLCBwcm9wZXJ0eS5hc1VJ
bnQzMigpKTsKLSAgICBlbHNlIGlmIChwcm9wZXJ0eS5pc0RvdWJsZSgpKSB7CisgICAgaWYgKHBy
b3BlcnR5LmlzRG91YmxlKCkpIHsKICAgICAgICAgZG91YmxlIHByb3BlcnR5QXNEb3VibGUgPSBw
cm9wZXJ0eS5hc0RvdWJsZSgpOwogICAgICAgICB1aW50MzJfdCBwcm9wZXJ0eUFzVUludDMyID0g
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KHByb3BlcnR5QXNEb3VibGUpOwogICAgICAgICBpZiAocHJv
cGVydHlBc1VJbnQzMiA9PSBwcm9wZXJ0eUFzRG91YmxlKQogICAgICAgICAgICAgcmV0dXJuIGdl
dEJ5VmFsKGV4ZWMsIGJhc2UsIHByb3BlcnR5QXNVSW50MzIpOwotICAgIH0gZWxzZSBpZiAocHJv
cGVydHkuaXNTdHJpbmcoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShiYXNlLT5n
ZXRCeVN0cmluZyhleGVjLCBhc1N0cmluZyhwcm9wZXJ0eSktPnZhbHVlKGV4ZWMpKSk7CisgICAg
fSBlbHNlIGlmIChwcm9wZXJ0eS5pc1N0cmluZygpKSB7CisgICAgICAgIGlmIChKU1ZhbHVlIHJl
c3VsdCA9IGJhc2UtPmZhc3RHZXRPd25Qcm9wZXJ0eShleGVjLCBhc1N0cmluZyhwcm9wZXJ0eSkt
PnZhbHVlKGV4ZWMpKSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKKyAgICB9CiAKICAgICBpZiAoaXNOYW1lKHByb3BlcnR5KSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1ZhbHVlKGJhc2UpLmdldChleGVjLCBqc0Nhc3Q8TmFtZUluc3RhbmNl
Kj4ocHJvcGVydHkuYXNDZWxsKCkpLT5wcml2YXRlTmFtZSgpKSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCShyZXZpc2lvbiAxNDU5MzEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHdvcmtp
bmcgY29weSkKQEAgLTkwLDYgKzkwLDcgQEAgbmFtZXNwYWNlIEpTQyAgewogICAgICAgICBzdGF0
aWMgY29uc3QgSGFzaFRhYmxlKiBudW1iZXJDb25zdHJ1Y3RvclRhYmxlKENhbGxGcmFtZSogY2Fs
bEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5udW1iZXJDb25zdHJ1Y3Rv
clRhYmxlOyB9CiAgICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIG51bWJlclByb3RvdHlw
ZVRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPmdsb2JhbERh
dGEoKS5udW1iZXJQcm90b3R5cGVUYWJsZTsgfQogICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRh
YmxlKiBvYmplY3RDb25zdHJ1Y3RvclRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVy
biBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5vYmplY3RDb25zdHJ1Y3RvclRhYmxlOyB9CisgICAg
ICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIG9iamVjdFByb3RvdHlwZVRhYmxlKENhbGxGcmFt
ZSogY2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5vYmplY3RQcm90
b3R5cGVUYWJsZTsgfQogICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBwcml2YXRlTmFt
ZVByb3RvdHlwZVRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUt
Pmdsb2JhbERhdGEoKS5wcml2YXRlTmFtZVByb3RvdHlwZVRhYmxlOyB9CiAgICAgICAgIHN0YXRp
YyBjb25zdCBIYXNoVGFibGUqIHJlZ0V4cFRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJl
dHVybiBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5yZWdFeHBUYWJsZTsgfQogICAgICAgICBzdGF0
aWMgY29uc3QgSGFzaFRhYmxlKiByZWdFeHBDb25zdHJ1Y3RvclRhYmxlKENhbGxGcmFtZSogY2Fs
bEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5yZWdFeHBDb25zdHJ1Y3Rv
clRhYmxlOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2
aXNpb24gMTQ1OTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI0MTcsOCArMjQxNywxMCBAQCBERUZJTkVfU1RVQl9GVU5DVElP
TihFbmNvZGVkSlNWYWx1ZSwgb3BfCiBzdGF0aWMgSlNWYWx1ZSBnZXRCeVZhbCgKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0LCBS
ZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiB7Ci0gICAgaWYgKExJS0VMWShiYXNlVmFs
dWUuaXNDZWxsKCkgJiYgc3Vic2NyaXB0LmlzU3RyaW5nKCkpKQotICAgICAgICByZXR1cm4gYmFz
ZVZhbHVlLmFzQ2VsbCgpLT5nZXRCeVN0cmluZyhjYWxsRnJhbWUsIGFzU3RyaW5nKHN1YnNjcmlw
dCktPnZhbHVlKGNhbGxGcmFtZSkpOworICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgp
ICYmIHN1YnNjcmlwdC5pc1N0cmluZygpKSkgeworICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQg
PSBiYXNlVmFsdWUuYXNDZWxsKCktPmZhc3RHZXRPd25Qcm9wZXJ0eShjYWxsRnJhbWUsIGFzU3Ry
aW5nKHN1YnNjcmlwdCktPnZhbHVlKGNhbGxGcmFtZSkpKQorICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CiAKICAgICBpZiAoc3Vic2NyaXB0LmlzVUludDMyKCkpIHsKICAgICAgICAg
dWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxNDU5MzEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDYwLDggKzEwNjAsMTAgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2RlbF9ieV9pZAogCiBpbmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCkKIHsKLSAgICBpZiAoTElLRUxZ
KGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmcoKSkpCi0gICAgICAgIHJl
dHVybiBiYXNlVmFsdWUuYXNDZWxsKCktPmdldEJ5U3RyaW5nKGV4ZWMsIGFzU3RyaW5nKHN1YnNj
cmlwdCktPnZhbHVlKGV4ZWMpKTsKKyAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSAm
JiBzdWJzY3JpcHQuaXNTdHJpbmcoKSkpIHsKKyAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0g
YmFzZVZhbHVlLmFzQ2VsbCgpLT5mYXN0R2V0T3duUHJvcGVydHkoZXhlYywgYXNTdHJpbmcoc3Vi
c2NyaXB0KS0+dmFsdWUoZXhlYykpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CiAgICAgCiAgICAgaWYgKHN1YnNjcmlwdC5pc1VJbnQzMigpKSB7CiAgICAgICAgIHVpbnQzMl90
IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAkocmV2aXNpb24gMTQ1OTMxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTksMTEgKzk5LDcgQEAKICAgICBtYWNybyh2YWx1ZU9mKSBcCiAgICAgbWFj
cm8od3JpdGFibGUpIFwKICAgICBtYWNybyhkaXNwbGF5TmFtZSkgXAotICAgIG1hY3JvKGpvaW4p
IFwKLSAgICBtYWNybyhfX2RlZmluZUdldHRlcl9fKSBcCi0gICAgbWFjcm8oX19kZWZpbmVTZXR0
ZXJfXykgXAotICAgIG1hY3JvKF9fbG9va3VwR2V0dGVyX18pIFwKLSAgICBtYWNybyhfX2xvb2t1
cFNldHRlcl9fKQorICAgIG1hY3JvKGpvaW4pCiAKICNkZWZpbmUgSlNDX0NPTU1PTl9JREVOVElG
SUVSU19FQUNIX0tFWVdPUkQobWFjcm8pIFwKICAgICBtYWNybyhudWxsKSBcCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHJldmlzaW9uIDE0NTkzMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIyNywxMCArMjI3LDQgQEAgYm9vbCBKU0NlbGw6OmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihKUwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotSlNWYWx1ZSBKU0NlbGw6OmdldEJ5U3RyaW5n
U2xvdyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICBJZGVudGlm
aWVyIGlkZW50KCZleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOwotICAgIHJldHVybiBKU1ZhbHVl
KHRoaXMpLmdldChleGVjLCBpZGVudCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9uIDE0NTkzMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjIsOCArMTIyLDcgQEAgcHVibGljOgogICAgIC8vIGNhbGwgdGhpcyBmdW5jdGlvbiwgbm90
IGl0cyBzbG93ZXIgdmlydHVhbCBjb3VudGVycGFydC4gKEZvciBpbnRlZ2VyCiAgICAgLy8gcHJv
cGVydHkgbmFtZXMsIHdlIHdhbnQgYSBzaW1pbGFyIGludGVyZmFjZSB3aXRoIGFwcHJvcHJpYXRl
IG9wdGltaXphdGlvbnMuKQogICAgIGJvb2wgZmFzdEdldE93blByb3BlcnR5U2xvdChFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIAotICAgIEpTVmFsdWUgZ2V0
QnlTdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7CisgICAgSlNWYWx1ZSBmYXN0R2V0
T3duUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7CiAKICAgICBzdGF0aWMgcHRy
ZGlmZl90IHN0cnVjdHVyZU9mZnNldCgpCiAgICAgewpAQCAtMTYyLDEwICsxNjEsNiBAQCBwcm90
ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKLSAgICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlPgotICAgIEpTVmFsdWUgZ2V0
QnlTdHJpbmdBbmRLZXkoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiwgY29uc3QgS2V5VHlwZSYp
OwotICAgIEpTVmFsdWUgZ2V0QnlTdHJpbmdTbG93KEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYp
OwogICAgICAgICAKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cnVjdHVyZTsKIH07
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5o
CShyZXZpc2lvbiAxNDU5MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGxJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2OSw0NiArMTY5LDIwIEBAIEFMV0FZU19J
TkxJTkUgYm9vbCBKU0NlbGw6OmZhc3RHZXRPd25Qcm8KICAgICByZXR1cm4gbWV0aG9kVGFibGUo
KS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEtleVR5cGU+Ci1BTFdBWVNfSU5MSU5FIEpTVmFsdWUgSlND
ZWxsOjpnZXRCeVN0cmluZ0FuZEtleShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgS2V5VHlwZSYga2V5KQotewotICAgIEpTQ2VsbCogY2VsbCA9IHRoaXM7Ci0gICAg
Ci0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKGNlbGwtPnN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCgpKSkKLSAgICAgICAg
ICAgIHJldHVybiBnZXRCeVN0cmluZ1Nsb3coZXhlYywgbmFtZSk7Ci0gICAgICAgIAotICAgICAg
ICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwotICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBj
ZWxsLT5zdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwga2V5LCBhdHRyaWJ1dGVz
KTsKLSAgICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7Ci0gICAgICAgICAgICBp
ZiAoYXR0cmlidXRlcyAmIEFjY2Vzc29yKQotICAgICAgICAgICAgICAgIHJldHVybiBjZWxsLT5n
ZXRCeVN0cmluZ1Nsb3coZXhlYywgbmFtZSk7Ci0gICAgICAgICAgICByZXR1cm4gYXNPYmplY3Qo
Y2VsbCktPmdldERpcmVjdChvZmZzZXQpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBK
U1ZhbHVlIHByb3RvdHlwZSA9IGNlbGwtPnN0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGUoKTsK
LSAgICAgICAgaWYgKCFwcm90b3R5cGUuaXNPYmplY3QoKSkKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjZWxsID0gYXNPYmplY3QocHJvdG90eXBlKTsKLSAgICB9Ci0gICAgCi0gICAgLy8g
TWFrZSBzdXJlIHdlIGFyZW4ndCBnb2luZyBhZnRlciBpbmRleGVkIHN0b3JhZ2UsIGFuZCBpZiB3
ZSBhcmUsIHRoZW4ganVzdCB1c2UgdGhhdC4KLSAgICB1bnNpZ25lZCBpbmRleCA9IHRvVUludDMy
RnJvbVN0cmluZ0ltcGwobmFtZS5pbXBsKCkpOwotICAgIGlmIChpbmRleCA9PSBQcm9wZXJ0eU5h
bWU6Ok5vdEFuSW5kZXgpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIAotICAg
IHJldHVybiBKU1ZhbHVlKHRoaXMpLmdldChleGVjLCBpbmRleCk7Ci19Ci0KIC8vIEZhc3QgY2Fs
bCB0byBnZXQgYSBwcm9wZXJ0eSB3aGVyZSB3ZSBtYXkgbm90IHlldCBoYXZlIGNvbnZlcnRlZCB0
aGUgc3RyaW5nIHRvIGFuCiAvLyBpZGVudGlmaWVyLiBUaGUgZmlyc3QgdGltZSB3ZSBwZXJmb3Jt
IGEgcHJvcGVydHkgYWNjZXNzIHdpdGggYSBnaXZlbiBzdHJpbmcsIHRyeQogLy8gcGVyZm9ybWlu
ZyB0aGUgcHJvcGVydHkgbWFwIGxvb2t1cCB3aXRob3V0IGZvcm1pbmcgYW4gaWRlbnRpZmllci4g
V2UgZGV0ZWN0IHRoaXMKIC8vIGNhc2UgYnkgY2hlY2tpbmcgd2hldGhlciB0aGUgaGFzaCBoYXMg
eWV0IGJlZW4gc2V0IGZvciB0aGlzIHN0cmluZy4KLUFMV0FZU19JTkxJTkUgSlNWYWx1ZSBKU0Nl
bGw6OmdldEJ5U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBuYW1lKQorQUxX
QVlTX0lOTElORSBKU1ZhbHVlIEpTQ2VsbDo6ZmFzdEdldE93blByb3BlcnR5KEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIGlmIChuYW1lLmltcGwoKS0+aGFzSGFz
aCgpKQotICAgICAgICByZXR1cm4gZ2V0QnlTdHJpbmdBbmRLZXkoZXhlYywgbmFtZSwgSWRlbnRp
ZmllcihleGVjLCBuYW1lKSk7Ci0gICAgcmV0dXJuIGdldEJ5U3RyaW5nQW5kS2V5KGV4ZWMsIG5h
bWUsIG5hbWUpOworICAgIGlmICghc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90KCkgJiYgIXN0cnVjdHVyZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0
aWVzKCkpIHsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gbmFtZS5pbXBsKCktPmhh
c0hhc2goKQorICAgICAgICAgICAgPyBzdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgSWRlbnRpZmllcihleGVjLCBuYW1lKSkKKyAgICAgICAgICAgIDogc3RydWN0dXJlKCktPmdl
dChleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOworICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFs
aWRPZmZzZXQpCisgICAgICAgICAgICByZXR1cm4gYXNPYmplY3QodGhpcyktPmxvY2F0aW9uRm9y
T2Zmc2V0KG9mZnNldCktPmdldCgpOworICAgIH0KKyAgICByZXR1cm4gSlNWYWx1ZSgpOwogfQog
CiBpbmxpbmUgYm9vbCBKU0NlbGw6OnRvQm9vbGVhbihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJ
KHJldmlzaW9uIDE0NTkzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDYgKzkzLDcgQEAgZXh0ZXJuIGNvbnN0
IEhhc2hUYWJsZSBtYXRoVGFibGU7CiBleHRlcm4gY29uc3QgSGFzaFRhYmxlIG51bWJlckNvbnN0
cnVjdG9yVGFibGU7CiBleHRlcm4gY29uc3QgSGFzaFRhYmxlIG51bWJlclByb3RvdHlwZVRhYmxl
OwogSlNfRVhQT1JUREFUQSBleHRlcm4gY29uc3QgSGFzaFRhYmxlIG9iamVjdENvbnN0cnVjdG9y
VGFibGU7CitleHRlcm4gY29uc3QgSGFzaFRhYmxlIG9iamVjdFByb3RvdHlwZVRhYmxlOwogZXh0
ZXJuIGNvbnN0IEhhc2hUYWJsZSBwcml2YXRlTmFtZVByb3RvdHlwZVRhYmxlOwogZXh0ZXJuIGNv
bnN0IEhhc2hUYWJsZSByZWdFeHBUYWJsZTsKIGV4dGVybiBjb25zdCBIYXNoVGFibGUgcmVnRXhw
Q29uc3RydWN0b3JUYWJsZTsKQEAgLTE1NCw2ICsxNTUsNyBAQCBKU0dsb2JhbERhdGE6OkpTR2xv
YmFsRGF0YShHbG9iYWxEYXRhVHlwCiAgICAgLCBudW1iZXJDb25zdHJ1Y3RvclRhYmxlKGZhc3RO
ZXc8SGFzaFRhYmxlPihKU0M6Om51bWJlckNvbnN0cnVjdG9yVGFibGUpKQogICAgICwgbnVtYmVy
UHJvdG90eXBlVGFibGUoZmFzdE5ldzxIYXNoVGFibGU+KEpTQzo6bnVtYmVyUHJvdG90eXBlVGFi
bGUpKQogICAgICwgb2JqZWN0Q29uc3RydWN0b3JUYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlND
OjpvYmplY3RDb25zdHJ1Y3RvclRhYmxlKSkKKyAgICAsIG9iamVjdFByb3RvdHlwZVRhYmxlKGZh
c3ROZXc8SGFzaFRhYmxlPihKU0M6Om9iamVjdFByb3RvdHlwZVRhYmxlKSkKICAgICAsIHByaXZh
dGVOYW1lUHJvdG90eXBlVGFibGUoZmFzdE5ldzxIYXNoVGFibGU+KEpTQzo6cHJpdmF0ZU5hbWVQ
cm90b3R5cGVUYWJsZSkpCiAgICAgLCByZWdFeHBUYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlND
OjpyZWdFeHBUYWJsZSkpCiAgICAgLCByZWdFeHBDb25zdHJ1Y3RvclRhYmxlKGZhc3ROZXc8SGFz
aFRhYmxlPihKU0M6OnJlZ0V4cENvbnN0cnVjdG9yVGFibGUpKQpAQCAtMjg0LDYgKzI4Niw3IEBA
IEpTR2xvYmFsRGF0YTo6fkpTR2xvYmFsRGF0YSgpCiAgICAgbnVtYmVyQ29uc3RydWN0b3JUYWJs
ZS0+ZGVsZXRlVGFibGUoKTsKICAgICBudW1iZXJQcm90b3R5cGVUYWJsZS0+ZGVsZXRlVGFibGUo
KTsKICAgICBvYmplY3RDb25zdHJ1Y3RvclRhYmxlLT5kZWxldGVUYWJsZSgpOworICAgIG9iamVj
dFByb3RvdHlwZVRhYmxlLT5kZWxldGVUYWJsZSgpOwogICAgIHByaXZhdGVOYW1lUHJvdG90eXBl
VGFibGUtPmRlbGV0ZVRhYmxlKCk7CiAgICAgcmVnRXhwVGFibGUtPmRlbGV0ZVRhYmxlKCk7CiAg
ICAgcmVnRXhwQ29uc3RydWN0b3JUYWJsZS0+ZGVsZXRlVGFibGUoKTsKQEAgLTMwMyw2ICszMDYs
NyBAQCBKU0dsb2JhbERhdGE6On5KU0dsb2JhbERhdGEoKQogICAgIGZhc3REZWxldGUoY29uc3Rf
Y2FzdDxIYXNoVGFibGUqPihudW1iZXJDb25zdHJ1Y3RvclRhYmxlKSk7CiAgICAgZmFzdERlbGV0
ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KG51bWJlclByb3RvdHlwZVRhYmxlKSk7CiAgICAgZmFz
dERlbGV0ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KG9iamVjdENvbnN0cnVjdG9yVGFibGUpKTsK
KyAgICBmYXN0RGVsZXRlKGNvbnN0X2Nhc3Q8SGFzaFRhYmxlKj4ob2JqZWN0UHJvdG90eXBlVGFi
bGUpKTsKICAgICBmYXN0RGVsZXRlKGNvbnN0X2Nhc3Q8SGFzaFRhYmxlKj4ocHJpdmF0ZU5hbWVQ
cm90b3R5cGVUYWJsZSkpOwogICAgIGZhc3REZWxldGUoY29uc3RfY2FzdDxIYXNoVGFibGUqPihy
ZWdFeHBUYWJsZSkpOwogICAgIGZhc3REZWxldGUoY29uc3RfY2FzdDxIYXNoVGFibGUqPihyZWdF
eHBDb25zdHJ1Y3RvclRhYmxlKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbERhdGEuaAkocmV2aXNpb24gMTQ1OTMxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyMyw2ICsy
MjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSGFzaFRhYmxlKiBudW1iZXJD
b25zdHJ1Y3RvclRhYmxlOwogICAgICAgICBjb25zdCBIYXNoVGFibGUqIG51bWJlclByb3RvdHlw
ZVRhYmxlOwogICAgICAgICBjb25zdCBIYXNoVGFibGUqIG9iamVjdENvbnN0cnVjdG9yVGFibGU7
CisgICAgICAgIGNvbnN0IEhhc2hUYWJsZSogb2JqZWN0UHJvdG90eXBlVGFibGU7CiAgICAgICAg
IGNvbnN0IEhhc2hUYWJsZSogcHJpdmF0ZU5hbWVQcm90b3R5cGVUYWJsZTsKICAgICAgICAgY29u
c3QgSGFzaFRhYmxlKiByZWdFeHBUYWJsZTsKICAgICAgICAgY29uc3QgSGFzaFRhYmxlKiByZWdF
eHBDb25zdHJ1Y3RvclRhYmxlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMTQ1OTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAyLDE2ICsyMjAyLDYg
QEAgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW5kZXhCZXlvbmRWZWN0bwogICAgIH0KIH0KIAot
dm9pZCBKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5hbWUmIHByb3BlcnR5
TmFtZSwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0
aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQotewotICAgIFN0
cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOwotICAgIEFTU0VSVChu
YW1lKTsKLSAgICAKLSAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9Ci0gICAgICAgIEpTRnVuY3Rp
b246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uTGVuZ3RoLCBuYW1lLCBuYXRp
dmVGdW5jdGlvbiwgaW50cmluc2ljKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRyaWJ1dGVzKTsKLX0KLQogQUxXQVlTX0lOTElO
RSB1bnNpZ25lZCBKU09iamVjdDo6Z2V0TmV3VmVjdG9yTGVuZ3RoKHVuc2lnbmVkIGN1cnJlbnRW
ZWN0b3JMZW5ndGgsIHVuc2lnbmVkIGN1cnJlbnRMZW5ndGgsIHVuc2lnbmVkIGRlc2lyZWRMZW5n
dGgpCiB7CiAgICAgQVNTRVJUKGRlc2lyZWRMZW5ndGggPD0gTUFYX1NUT1JBR0VfVkVDVE9SX0xF
TkdUSCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJl
dmlzaW9uIDE0NTkzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2NSw4ICs1NjUsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBw
dXREaXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQs
IEpTVmFsdWUgdmFsdWUpIHsgbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KS0+c2V0KGdsb2JhbERh
dGEsIHRoaXMsIHZhbHVlKTsgfQogICAgIHZvaWQgcHV0RGlyZWN0VW5kZWZpbmVkKFByb3BlcnR5
T2Zmc2V0IG9mZnNldCkgeyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5zZXRVbmRlZmluZWQo
KTsgfQogCi0gICAgdm9pZCBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1bmN0aW9uTGVuZ3Ro
LCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLQogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNo
b3VsZFRocm93KTsKIAogICAgIGJvb2wgaXNHbG9iYWxPYmplY3QoKSBjb25zdDsKQEAgLTcwMiw3
ICs3MDAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+aXNPYmpl
Y3QoKSk7CiAgICAgICAgIEFTU0VSVChjbGFzc0luZm8oKSk7CiAgICAgfQotICAgIAorCiAgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNf
aW5mbyk7CkBAIC05MTEsNyArOTA5LDYgQEAgcHJpdmF0ZToKICAgICAvLyBOb2JvZHkgc2hvdWxk
IGV2ZXIgYXNrIGFueSBvZiB0aGVzZSBxdWVzdGlvbnMgb24gc29tZXRoaW5nIGFscmVhZHkga25v
d24gdG8gYmUgYSBKU09iamVjdC4KICAgICB1c2luZyBKU0NlbGw6OmlzQVBJVmFsdWVXcmFwcGVy
OwogICAgIHVzaW5nIEpTQ2VsbDo6aXNHZXR0ZXJTZXR0ZXI7Ci0KICAgICB2b2lkIGdldE9iamVj
dCgpOwogICAgIHZvaWQgZ2V0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYyk7CiAgICAgdm9pZCBpc09i
amVjdCgpOwpAQCAtMTQ1MiwxNCArMTQ0OSw2IEBAIGlubGluZSBpbnQgb2Zmc2V0UmVsYXRpdmVU
b0Jhc2UoUHJvcGVydHkKIAogQ09NUElMRV9BU1NFUlQoIShzaXplb2YoSlNPYmplY3QpICUgc2l6
ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4pKSwgSlNPYmplY3RfaW5saW5lX3N0b3JhZ2Vf
aGFzX2NvcnJlY3RfYWxpZ25tZW50KTsKIAotLy8gSGVscGVyIGZvciBkZWZpbmluZyBuYXRpdmUg
ZnVuY3Rpb25zLCBpZiB5b3UncmUgbm90IHVzaW5nIGEgc3RhdGljIGhhc2ggdGFibGUuCi0vLyBV
c2UgdGhpcyBtYWNybyBmcm9tIHdpdGhpbiBmaW5pc2hDcmVhdGlvbigpIG1ldGhvZHMgaW4gcHJv
dG90eXBlcy4gVGhpcyBhc3N1bWVzCi0vLyB5b3UndmUgZGVmaW5lZCB2YXJpYWJsZXMgY2FsbGVk
IGV4ZWMsIGdsb2JhbE9iamVjdCwgYW5kIGdsb2JhbERhdGEsIGFuZCB0aGV5Ci0vLyBoYXZlIHRo
ZSBleHBlY3RlZCBtZWFuaW5ncy4gVGhpcyBhbHNvIGFzc3VtZXMgdGhhdCB0aGUgZnVuY3Rpb24g
eW91J3JlIGRlZmluaW5nCi0vLyBkb2Vzbid0IGhhdmUgYW4gaW50cmluc2ljLgotI2RlZmluZSBK
U0NfTkFUSVZFX0ZVTkNUSU9OKGpzTmFtZSwgY3BwTmFtZSwgYXR0cmlidXRlcywgbGVuZ3RoKSBc
Ci0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxE
YXRhLnByb3BlcnR5TmFtZXMtPmpzTmFtZSwgKGxlbmd0aCksIGNwcE5hbWUsIE5vSW50cmluc2lj
LCAoYXR0cmlidXRlcykpCi0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gSlNPYmpl
Y3RfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCShyZXZp
c2lvbiAxNDU5MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03Nyw5ICs3NywxMSBAQCBib29sIHNldFVwU3RhdGljRnVuY3Rp
b25TbG90KEV4ZWNTdGF0ZSogCiAgICAgICAgIGlmICh0aGlzT2JqLT5zdGF0aWNGdW5jdGlvbnNS
ZWlmaWVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgICAgIHRoaXNP
YmotPnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKAotICAgICAgICAgICAgZXhlYywgdGhpc09iai0+
Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgZW50cnktPmZ1bmN0aW9uTGVuZ3RoKCksCi0g
ICAgICAgICAgICBlbnRyeS0+ZnVuY3Rpb24oKSwgZW50cnktPmludHJpbnNpYygpLCBlbnRyeS0+
YXR0cmlidXRlcygpKTsKKyAgICAgICAgU3RyaW5nSW1wbCogbmFtZSA9IHByb3BlcnR5TmFtZS5w
dWJsaWNOYW1lKCk7CisgICAgICAgIEFTU0VSVChuYW1lKTsKKyAgICAgICAgCisgICAgICAgIEpT
RnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIHRoaXNPYmotPmds
b2JhbE9iamVjdCgpLCBlbnRyeS0+ZnVuY3Rpb25MZW5ndGgoKSwgbmFtZSwgZW50cnktPmZ1bmN0
aW9uKCksIGVudHJ5LT5pbnRyaW5zaWMoKSk7CisgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdChl
eGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgZnVuY3Rpb24sIGVudHJ5LT5hdHRyaWJ1
dGVzKCkpOwogICAgICAgICBvZmZzZXQgPSB0aGlzT2JqLT5nZXREaXJlY3RPZmZzZXQoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBBU1NFUlQoaXNWYWxpZE9mZnNl
dChvZmZzZXQpKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDE0NTkzMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDQwICs0MCw1MSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNQ
cm9wZXJ0eUlzRW51bWVyYWJsZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSopOwog
Cit9CisKKyNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCiBBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihPYmplY3RQcm90b3R5cGUpOwogCi1j
b25zdCBDbGFzc0luZm8gT2JqZWN0UHJvdG90eXBlOjpzX2luZm8gPSB7ICJPYmplY3QiLCAmSlNO
b25GaW5hbE9iamVjdDo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKE9iamVjdFBy
b3RvdHlwZSkgfTsKK2NvbnN0IENsYXNzSW5mbyBPYmplY3RQcm90b3R5cGU6OnNfaW5mbyA9IHsg
Ik9iamVjdCIsICZKU05vbkZpbmFsT2JqZWN0OjpzX2luZm8sIDAsIEV4ZWNTdGF0ZTo6b2JqZWN0
UHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoT2JqZWN0UHJvdG90eXBlKSB9Owor
CisvKiBTb3VyY2UgZm9yIE9iamVjdFByb3RvdHlwZS5sdXQuaAorQGJlZ2luIG9iamVjdFByb3Rv
dHlwZVRhYmxlCisgIHRvU3RyaW5nICAgICAgICAgICAgICBvYmplY3RQcm90b0Z1bmNUb1N0cmlu
ZyAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICB0b0xvY2FsZVN0cmluZyAg
ICAgICAgb2JqZWN0UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDAKKyAgdmFsdWVPZiAgICAgICAgICAgICAgIG9iamVjdFByb3RvRnVuY1ZhbHVlT2Yg
ICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCisgIGhhc093blByb3BlcnR5ICAg
ICAgICBvYmplY3RQcm90b0Z1bmNIYXNPd25Qcm9wZXJ0eSAgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gMQorICBwcm9wZXJ0eUlzRW51bWVyYWJsZSAgb2JqZWN0UHJvdG9GdW5jUHJvcGVydHlJ
c0VudW1lcmFibGUgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgaXNQcm90b3R5cGVPZiAgICAg
ICAgIG9iamVjdFByb3RvRnVuY0lzUHJvdG90eXBlT2YgICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAxCisgIF9fZGVmaW5lR2V0dGVyX18gICAgICBvYmplY3RQcm90b0Z1bmNEZWZpbmVHZXR0
ZXIgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorICBfX2RlZmluZVNldHRlcl9fICAg
ICAgb2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDIKKyAgX19sb29rdXBHZXR0ZXJfXyAgICAgIG9iamVjdFByb3RvRnVuY0xvb2t1cEdldHRl
ciAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIF9fbG9va3VwU2V0dGVyX18gICAg
ICBvYmplY3RQcm90b0Z1bmNMb29rdXBTZXR0ZXIgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMQorQGVuZAorKi8KIAogT2JqZWN0UHJvdG90eXBlOjpPYmplY3RQcm90b3R5cGUoRXhlY1N0
YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0dWN0dXJlKQogICAgIDogSlNOb25GaW5hbE9iamVjdChl
eGVjLT5nbG9iYWxEYXRhKCksIHN0dWN0dXJlKQogewogfQogCi12b2lkIE9iamVjdFByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQordm9pZCBPYmplY3RQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqKQogewotICAgIEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKLSAgICAKICAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbihnbG9iYWxEYXRhKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwogICAgIGds
b2JhbERhdGEucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKLSAgICAKLSAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OKHRvU3RyaW5nLCBvYmplY3RQcm90b0Z1bmNUb1N0cmluZywgRG9udEVu
dW0sIDApOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odG9Mb2NhbGVTdHJpbmcsIG9iamVjdFBy
b3RvRnVuY1RvTG9jYWxlU3RyaW5nLCBEb250RW51bSwgMCk7Ci0gICAgSlNDX05BVElWRV9GVU5D
VElPTih2YWx1ZU9mLCBvYmplY3RQcm90b0Z1bmNWYWx1ZU9mLCBEb250RW51bSwgMCk7Ci0gICAg
SlNDX05BVElWRV9GVU5DVElPTihoYXNPd25Qcm9wZXJ0eSwgb2JqZWN0UHJvdG9GdW5jSGFzT3du
UHJvcGVydHksIERvbnRFbnVtLCAxKTsKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHByb3BlcnR5
SXNFbnVtZXJhYmxlLCBvYmplY3RQcm90b0Z1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZSwgRG9udEVu
dW0sIDEpOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oaXNQcm90b3R5cGVPZiwgb2JqZWN0UHJv
dG9GdW5jSXNQcm90b3R5cGVPZiwgRG9udEVudW0sIDEpOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJ
T04oX19kZWZpbmVHZXR0ZXJfXywgb2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVyLCBEb250RW51
bSwgMik7Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTihfX2RlZmluZVNldHRlcl9fLCBvYmplY3RQ
cm90b0Z1bmNEZWZpbmVTZXR0ZXIsIERvbnRFbnVtLCAyKTsKLSAgICBKU0NfTkFUSVZFX0ZVTkNU
SU9OKF9fbG9va3VwR2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0xvb2t1cEdldHRlciwgRG9udEVu
dW0sIDEpOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oX19sb29rdXBTZXR0ZXJfXywgb2JqZWN0
UHJvdG9GdW5jTG9va3VwU2V0dGVyLCBEb250RW51bSwgMSk7Ci19Ci0KLU9iamVjdFByb3RvdHlw
ZSogT2JqZWN0UHJvdG90eXBlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLXsKLSAgICBPYmplY3RQcm90
b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE9iamVjdFByb3Rv
dHlwZT4oKmV4ZWMtPmhlYXAoKSkpIE9iamVjdFByb3RvdHlwZShleGVjLCBzdHJ1Y3R1cmUpOwot
ICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24oZXhlYywgZ2xvYmFsT2JqZWN0KTsKLSAgICBy
ZXR1cm4gcHJvdG90eXBlOworfQorCitib29sIE9iamVjdFByb3RvdHlwZTo6Z2V0T3duUHJvcGVy
dHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0
aW9uU2xvdDxKU05vbkZpbmFsT2JqZWN0PihleGVjLCBFeGVjU3RhdGU6Om9iamVjdFByb3RvdHlw
ZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8T2JqZWN0UHJvdG90eXBlKj4oY2VsbCksIHByb3BlcnR5TmFt
ZSwgc2xvdCk7Cit9CisKK2Jvb2wgT2JqZWN0UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJu
IGdldFN0YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcjxKU05vbkZpbmFsT2JqZWN0PihleGVjLCBFeGVj
U3RhdGU6Om9iamVjdFByb3RvdHlwZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8T2JqZWN0UHJvdG90eXBl
Kj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KIAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90
eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
UHJvdG90eXBlLmgJKHJldmlzaW9uIDE0NTkzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSwxMiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSlNOb25GaW5h
bE9iamVjdCBCYXNlOwogCi0gICAgICAgIHN0YXRpYyBPYmplY3RQcm90b3R5cGUqIGNyZWF0ZShF
eGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAgICAgICBzdGF0aWMg
T2JqZWN0UHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgeworICAgICAgICAg
ICAgT2JqZWN0UHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxPYmplY3RQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBPYmplY3RQcm90b3R5cGUoZXhlYywg
c3RydWN0dXJlKTsKKyAgICAgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+
Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QpOworICAgICAgICAgICAgcmV0dXJuIHByb3RvdHlw
ZTsKKyAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwog
CkBAIC0zOSwxMCArNDQsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHBy
b3RlY3RlZDoKLSAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBKU0dsb2Jh
bE9iamVjdCopOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU05vbkZpbmFsT2JqZWN0OjpTdHJ1Y3R1
cmVGbGFnczsKKworICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYsIEpT
R2xvYmFsT2JqZWN0Kik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBPYmplY3RQcm90b3R5cGUo
RXhlY1N0YXRlKiwgU3RydWN0dXJlKik7CisgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
OworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIH07
CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCShyZXZpc2lv
biAxNDU5MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhh
c2hUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTEsNyArMzExLDcgQEAgaW5saW5lIFByb3Bl
cnR5VGFibGU6OmZpbmRfaXRlcmF0b3IgUHJvcAogaW5saW5lIFByb3BlcnR5VGFibGU6OmZpbmRf
aXRlcmF0b3IgUHJvcGVydHlUYWJsZTo6ZmluZFdpdGhTdHJpbmcoY29uc3QgS2V5VHlwZSYga2V5
KQogewogICAgIEFTU0VSVChrZXkpOwotICAgIEFTU0VSVCgha2V5LT5pc0lkZW50aWZpZXIoKSk7
CisgICAgQVNTRVJUKCFrZXktPmlzSWRlbnRpZmllcigpICYmICFrZXktPmhhc0hhc2goKSk7CiAg
ICAgdW5zaWduZWQgaGFzaCA9IGtleS0+aGFzaCgpOwogICAgIHVuc2lnbmVkIHN0ZXAgPSAwOwog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNp
b24gMTQ1OTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIzMyw4ICsyMzMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBtYXNx
dWVyYWRlc0FzVW5kZWZpbmVkKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
IAogICAgIFByb3BlcnR5T2Zmc2V0IGdldChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUpOwot
ICAgIFByb3BlcnR5T2Zmc2V0IGdldChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIHVuc2ln
bmVkJiBhdHRyaWJ1dGVzKTsKLSAgICBQcm9wZXJ0eU9mZnNldCBnZXQoSlNHbG9iYWxEYXRhJiwg
Y29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzKTsKKyAgICBQcm9w
ZXJ0eU9mZnNldCBnZXQoSlNHbG9iYWxEYXRhJiwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUpOwog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIFByb3BlcnR5T2Zmc2V0IGdldChKU0dsb2JhbERhdGEmLCBQ
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVl
KTsKIAogICAgIGJvb2wgaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJu
IG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllczsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAkocmV2aXNpb24gMTQ1OTMxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02OSwyMiArNjksNyBAQCBpbmxpbmUgUHJvcGVydHlPZmZzZXQgU3RydWN0
dXJlOjpnZXQoSlNHCiAgICAgcmV0dXJuIGVudHJ5ID8gZW50cnktPm9mZnNldCA6IGludmFsaWRP
ZmZzZXQ7CiB9CiAKLWlubGluZSBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmdldChKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBh
dHRyaWJ1dGVzKQotewotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gJnNf
aW5mbyk7Ci0gICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEp
OwotICAgIGlmICghcHJvcGVydHlUYWJsZSgpKQotICAgICAgICByZXR1cm4gaW52YWxpZE9mZnNl
dDsKLQotICAgIFByb3BlcnR5TWFwRW50cnkqIGVudHJ5ID0gcHJvcGVydHlUYWJsZSgpLT5maW5k
KHByb3BlcnR5TmFtZS51aWQoKSkuZmlyc3Q7Ci0gICAgaWYgKCFlbnRyeSkKLSAgICAgICAgcmV0
dXJuIGludmFsaWRPZmZzZXQ7Ci0gICAgCi0gICAgYXR0cmlidXRlcyA9IGVudHJ5LT5hdHRyaWJ1
dGVzOwotICAgIHJldHVybiBlbnRyeS0+b2Zmc2V0OwotfQotCi1pbmxpbmUgUHJvcGVydHlPZmZz
ZXQgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBXVEY6OlN0
cmluZyYgbmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMpCitpbmxpbmUgUHJvcGVydHlPZmZzZXQg
U3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBXVEY6OlN0cmlu
ZyYgbmFtZSkKIHsKICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZzX2lu
Zm8pOwogICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsK
QEAgLTkyLDExICs3Nyw3IEBAIGlubGluZSBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmdldChK
U0cKICAgICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CiAKICAgICBQcm9wZXJ0eU1hcEVudHJ5
KiBlbnRyeSA9IHByb3BlcnR5VGFibGUoKS0+ZmluZFdpdGhTdHJpbmcobmFtZS5pbXBsKCkpLmZp
cnN0OwotICAgIGlmICghZW50cnkpCi0gICAgICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0OwotCi0g
ICAgYXR0cmlidXRlcyA9IGVudHJ5LT5hdHRyaWJ1dGVzOwotICAgIHJldHVybiBlbnRyeS0+b2Zm
c2V0OworICAgIHJldHVybiBlbnRyeSA/IGVudHJ5LT5vZmZzZXQgOiBpbnZhbGlkT2Zmc2V0Owog
fQogICAgIAogaW5saW5lIGJvb2wgU3RydWN0dXJlOjptYXNxdWVyYWRlc0FzVW5kZWZpbmVkKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0KQpJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ1
OTMxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjAgQEAKKzIwMTMtMDMtMTUgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNv
bT4KKworICAgICAgICBSb2xsIG91dCByMTQ1ODM4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTI0NTgKKworICAgICAgICBSZXF1ZXN0ZWQgYnkgRmls
aXAgUGl6bG8uCisKKyAgICAgICAgKiBmYXN0L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmlu
Zy1sb29rdXAtaGl0LWlkZW50aWZpZXIuanM6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9qcy9y
ZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctbG9va3VwLWhpdC5qczogUmVtb3ZlZC4KKyAgICAg
ICAgKiBmYXN0L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1sb29rdXAtbWlzcy5qczog
UmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2pzL3JlZ3Jlc3Mvc3RyaW5nLWxvb2t1cC1oaXQtZXhw
ZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvanMvcmVncmVzcy9zdHJpbmctbG9v
a3VwLWhpdC1pZGVudGlmaWVyLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0
L2pzL3JlZ3Jlc3Mvc3RyaW5nLWxvb2t1cC1oaXQtaWRlbnRpZmllci5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIGZhc3QvanMvcmVncmVzcy9zdHJpbmctbG9va3VwLWhpdC5odG1sOiBSZW1vdmVk
LgorICAgICAgICAqIGZhc3QvanMvcmVncmVzcy9zdHJpbmctbG9va3VwLW1pc3MtZXhwZWN0ZWQu
dHh0OiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvanMvcmVncmVzcy9zdHJpbmctbG9va3VwLW1p
c3MuaHRtbDogUmVtb3ZlZC4KKwogMjAxMy0wMy0xNSAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFtWOF0gQmluZGluZzogSW1wbGVtZW50IEVuZm9yY2VSYW5n
ZSBJREwgQXR0cmlidXRlIGZvciBsb25nIGxvbmcgY29udmVyc2lvbnMKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvanMvcmVncmVzcy9zdHJpbmctbG9va3VwLWhpdC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N0cmluZy1sb29rdXAtaGl0LWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMTQ1OTMxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdy
ZXNzL3N0cmluZy1sb29rdXAtaGl0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwx
MCArMCwwIEBACi1KU1JlZ3Jlc3Mvc3RyaW5nLWxvb2t1cC1oaXQKLQotT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgotCi0KLVBBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgotUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvanMvcmVncmVzcy9zdHJpbmctbG9va3VwLWhpdC1pZGVudGlmaWVyLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc3RyaW5nLWxvb2t1cC1o
aXQtaWRlbnRpZmllci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE0NTkzMSkKKysrIExheW91dFRl
c3RzL2Zhc3QvanMvcmVncmVzcy9zdHJpbmctbG9va3VwLWhpdC1pZGVudGlmaWVyLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMCwwIEBACi1KU1JlZ3Jlc3Mvc3RyaW5nLWxv
b2t1cC1oaXQtaWRlbnRpZmllcgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFT
UyBubyBleGNlcHRpb24gdGhyb3duCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0K
LVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N0cmlu
Zy1sb29rdXAtaGl0LWlkZW50aWZpZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2pzL3JlZ3Jlc3Mvc3RyaW5nLWxvb2t1cC1oaXQtaWRlbnRpZmllci5odG1sCShyZXZpc2lv
biAxNDU5MzEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc3RyaW5nLWxvb2t1cC1o
aXQtaWRlbnRpZmllci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyICswLDAgQEAKLTwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KLTxodG1sPgotPGhlYWQ+
Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwv
aGVhZD4KLTxib2R5PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N0cmluZy1sb29rdXAtaGl0LWlkZW50
aWZpZXIuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWdyZXNzLXBvc3Qu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9y
ZWdyZXNzL3N0cmluZy1sb29rdXAtaGl0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9qcy9yZWdyZXNzL3N0cmluZy1sb29rdXAtaGl0Lmh0bWwJKHJldmlzaW9uIDE0NTkzMSkK
KysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zdHJpbmctbG9va3VwLWhpdC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDEyICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlw
dCBzcmM9InJlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
c2NyaXB0LXRlc3RzL3N0cmluZy1sb29rdXAtaGl0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zdHJpbmctbG9va3VwLW1pc3MtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zdHJpbmct
bG9va3VwLW1pc3MtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNDU5MzEpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2pzL3JlZ3Jlc3Mvc3RyaW5nLWxvb2t1cC1taXNzLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxMCArMCwwIEBACi1KU1JlZ3Jlc3Mvc3RyaW5nLWxvb2t1cC1taXNzCi0K
LU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24K
LVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc3RyaW5nLWxvb2t1cC1taXNzLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N0cmluZy1sb29rdXAtbWlz
cy5odG1sCShyZXZpc2lvbiAxNDU5MzEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mv
c3RyaW5nLWxvb2t1cC1taXNzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTIgKzAsMCBAQAot
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgotPGh0bWw+Ci08
aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc3RyaW5nLWxvb2t1cC1taXNz
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVz
cy9zY3JpcHQtdGVzdHMvc3RyaW5nLWxvb2t1cC1oaXQtaWRlbnRpZmllci5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1sb29r
dXAtaGl0LWlkZW50aWZpZXIuanMJKHJldmlzaW9uIDE0NTkzMSkKKysrIExheW91dFRlc3RzL2Zh
c3QvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLWxvb2t1cC1oaXQtaWRlbnRpZmllci5q
cwkod29ya2luZyBjb3B5KQpAQCAtMSwxNyArMCwwIEBACi12YXIgcmVzdWx0ID0gKGZ1bmN0aW9u
KCl7Ci0gICAgdmFyIG8gPSB7fTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKQot
ICAgICAgICBvWyJhIiArIGldID0gNDI7Ci0gICAgdmFyIHJlc3VsdCA9IFtdOwotICAgIHZhciBz
dHJpbmdzID0gW107Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkKLSAgICAgICAg
c3RyaW5ncy5wdXNoKCJhIiArIGkpOwotICAgIGZvciAodmFyIGogPSAwOyBqIDwgMTAwMDsgKytq
KSB7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpCi0gICAgICAgICAgICBy
ZXN1bHQucHVzaChvW3N0cmluZ3NbaV1dKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdC5sZW5n
dGg7Ci19KSgpOwotCi1pZiAocmVzdWx0ICE9IDEwMDAwMCkKLSAgICB0aHJvdyAiRXJyb3I6IGJh
ZCByZXN1bHQ6ICIgKyByZXN1bHQ7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mv
c2NyaXB0LXRlc3RzL3N0cmluZy1sb29rdXAtaGl0LmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLWxvb2t1cC1oaXQuanMJKHJl
dmlzaW9uIDE0NTkzMSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zY3JpcHQtdGVz
dHMvc3RyaW5nLWxvb2t1cC1oaXQuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMTQgKzAsMCBAQAot
dmFyIHJlc3VsdCA9IChmdW5jdGlvbigpewotICAgIHZhciBvID0ge307Ci0gICAgZm9yICh2YXIg
aSA9IDA7IGkgPCAxMDA7ICsraSkKLSAgICAgICAgb1siYSIgKyBpXSA9IDQyOwotICAgIHZhciBy
ZXN1bHQgPSBbXTsKLSAgICBmb3IgKHZhciBqID0gMDsgaiA8IDEwMDA7ICsraikgewotICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKQotICAgICAgICAgICAgcmVzdWx0LnB1c2go
b1siYSIgKyBpXSk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQubGVuZ3RoOwotfSkoKTsKLQot
aWYgKHJlc3VsdCAhPSAxMDAwMDApCi0gICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsg
cmVzdWx0OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9z
dHJpbmctbG9va3VwLW1pc3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9y
ZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctbG9va3VwLW1pc3MuanMJKHJldmlzaW9uIDE0NTkz
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLWxv
b2t1cC1taXNzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyICswLDAgQEAKLXZhciByZXN1bHQg
PSAoZnVuY3Rpb24oKXsKLSAgICB2YXIgbyA9IHt9OwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
MTAwOyArK2kpCi0gICAgICAgIG9bImEiICsgaV0gPSA0MjsKLSAgICB2YXIgcmVzdWx0ID0gW107
Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkKLSAgICAgICAgcmVzdWx0LnB1
c2gob1siYSIgKyBpXSk7Ci0gICAgcmV0dXJuIHJlc3VsdC5sZW5ndGg7Ci19KSgpOwotCi1pZiAo
cmVzdWx0ICE9IDEwMDAwMCkKLSAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1
bHQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193365</attachid>
            <date>2013-03-15 13:22:47 -0700</date>
            <delta_ts>2013-03-15 14:54:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112458-20130315131842.patch</filename>
            <type>text/plain</type>
            <size>36793</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ1OTMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBA
CisyMDEzLTAzLTE1ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgUm9sbCBvdXQgcjE0NTgzOAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTEyNDU4CisKKyAgICAgICAgVW5yZXZpZXdlZC4gUmVxdWVzdGVk
IGJ5IEZpbGlwIFBpemxvLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5wcmk6CisgICAg
ICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5j
cHA6CisgICAgICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAgIChKU0M6OkV4
ZWNTdGF0ZTo6b2JqZWN0UHJvdG90eXBlVGFibGUpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5j
cHA6CisgICAgICAgIChKU0M6OmdldEJ5VmFsKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQ
YXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRCeVZhbCk6CisgICAgICAgICogcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmNwcDoK
KyAgICAgICAgKEpTQyk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKEpT
Q2VsbCk6CisgICAgICAgICogcnVudGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChKU0Mp
OgorICAgICAgICAoSlNDOjpKU0NlbGw6OmZhc3RHZXRPd25Qcm9wZXJ0eSk6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbERhdGEuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6
On5KU0dsb2JhbERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisgICAg
ICAgIChKU0dsb2JhbERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU09i
amVjdCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmNwcDoKKyAg
ICAgICAgKEpTQzo6c2V0VXBTdGF0aWNGdW5jdGlvblNsb3QpOgorICAgICAgICAqIHJ1bnRpbWUv
T2JqZWN0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6Ok9iamVj
dFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpPYmplY3RQcm90b3R5
cGU6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3RvdHlwZTo6
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3Rv
dHlwZS5oOgorICAgICAgICAoSlNDOjpPYmplY3RQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAg
IChPYmplY3RQcm90b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFi
bGUuaDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6ZmluZFdpdGhTdHJpbmcpOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChTdHJ1Y3R1cmUpOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OmdldCk6CisKIDIwMTMtMDMtMTUgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+
CiAKICAgICAgICAgQWRkIHJ1bnRpbWUgY2hlY2sgZm9yIGltcHJvcGVyIHJlZ2lzdGVyIGFsbG9j
YXRpb25zIGluIERGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2
aXNpb24gMTQ1OTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0zMjksNiArMzI5LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0xVVF9G
SUxFUwogICAgIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9OdW1i
ZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKKyAgICBy
dW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9y
LmNwcAogICAgIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvUmVnRXhwUHJv
dG90eXBlLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UJKHJldmlzaW9uIDE0NTkzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIGFsbCA6IFwKICAgICBO
dW1iZXJDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgTnVtYmVyUHJvdG90eXBlLmx1dC5oIFwKICAg
ICBPYmplY3RDb25zdHJ1Y3Rvci5sdXQuaCBcCisgICAgT2JqZWN0UHJvdG90eXBlLmx1dC5oIFwK
ICAgICBSZWdFeHBDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgUmVnRXhwUHJvdG90eXBlLmx1dC5o
IFwKICAgICBSZWdFeHBKaXRUYWJsZXMuaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
RGVyaXZlZFNvdXJjZXMucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9E
ZXJpdmVkU291cmNlcy5wcmkJKHJldmlzaW9uIDE0NTkzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9EZXJpdmVkU291cmNlcy5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTIwLDYgKzIwLDcgQEAg
TFVUX0ZJTEVTICs9IFwKICAgICBydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcCBcCiAgICAg
cnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwIFwKICAgICBydW50aW1lL09iamVjdENvbnN0cnVj
dG9yLmNwcCBcCisgICAgcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwIFwKICAgICBydW50aW1l
L1JlZ0V4cENvbnN0cnVjdG9yLmNwcCBcCiAgICAgcnVudGltZS9SZWdFeHBPYmplY3QuY3BwIFwK
ICAgICBydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE0NTkzMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2
ICsyNCw3IEBAIGphdmFzY3JpcHRjb3JlX2J1aWx0X25vc291cmNlcyArPSBcCiAJRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmUvTnVtYmVyQ29uc3RydWN0b3IubHV0LmggXAogCURlcml2ZWRT
b3VyY2VzL0phdmFTY3JpcHRDb3JlL051bWJlclByb3RvdHlwZS5sdXQuaCBcCiAJRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmUvT2JqZWN0Q29uc3RydWN0b3IubHV0LmggXAorICAgRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvT2JqZWN0UHJvdG90eXBlLmx1dC5oIFwKIAlEZXJpdmVk
U291cmNlcy9KYXZhU2NyaXB0Q29yZS9SZWdFeHBDb25zdHJ1Y3Rvci5sdXQuaCBcCiAJRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvUmVnRXhwT2JqZWN0Lmx1dC5oIFwKIAlEZXJpdmVkU291
cmNlcy9KYXZhU2NyaXB0Q29yZS9SZWdFeHBQcm90b3R5cGUubHV0LmggXApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxNDU5MzEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MjQsMTcgKzQyNCwxOSBAQCBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9O
IG9wZXJhdGlvbkdlCiAgICAgaWYgKExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkpKSB7CiAgICAg
ICAgIEpTQ2VsbCogYmFzZSA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKIAotICAgICAgICBpZiAocHJv
cGVydHkuaXNVSW50MzIoKSkKKyAgICAgICAgaWYgKHByb3BlcnR5LmlzVUludDMyKCkpIHsKICAg
ICAgICAgICAgIHJldHVybiBnZXRCeVZhbChleGVjLCBiYXNlLCBwcm9wZXJ0eS5hc1VJbnQzMigp
KTsKLSAgICAgICAgaWYgKHByb3BlcnR5LmlzRG91YmxlKCkpIHsKKyAgICAgICAgfSBlbHNlIGlm
IChwcm9wZXJ0eS5pc0RvdWJsZSgpKSB7CiAgICAgICAgICAgICBkb3VibGUgcHJvcGVydHlBc0Rv
dWJsZSA9IHByb3BlcnR5LmFzRG91YmxlKCk7CiAgICAgICAgICAgICB1aW50MzJfdCBwcm9wZXJ0
eUFzVUludDMyID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHByb3BlcnR5QXNEb3VibGUpOwogICAg
ICAgICAgICAgaWYgKHByb3BlcnR5QXNVSW50MzIgPT0gcHJvcGVydHlBc0RvdWJsZSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gZ2V0QnlWYWwoZXhlYywgYmFzZSwgcHJvcGVydHlBc1VJbnQzMik7
Ci0gICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkuaXNTdHJpbmcoKSkKLSAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoYmFzZS0+Z2V0QnlTdHJpbmcoZXhlYywgYXNTdHJpbmcocHJv
cGVydHkpLT52YWx1ZShleGVjKSkpOworICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5LmlzU3Ry
aW5nKCkpIHsKKyAgICAgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGJhc2UtPmZhc3RHZXRP
d25Qcm9wZXJ0eShleGVjLCBhc1N0cmluZyhwcm9wZXJ0eSktPnZhbHVlKGV4ZWMpKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgICAgIH0KICAg
ICB9Ci0gICAgCisKICAgICBpZiAoaXNOYW1lKHByb3BlcnR5KSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShiYXNlVmFsdWUuZ2V0KGV4ZWMsIGpzQ2FzdDxOYW1lSW5zdGFuY2UqPihw
cm9wZXJ0eS5hc0NlbGwoKSktPnByaXZhdGVOYW1lKCkpKTsKIApAQCAtNDUxLDEzICs0NTMsMTUg
QEAgRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZQogCiAgICAgaWYgKHBy
b3BlcnR5LmlzVUludDMyKCkpCiAgICAgICAgIHJldHVybiBnZXRCeVZhbChleGVjLCBiYXNlLCBw
cm9wZXJ0eS5hc1VJbnQzMigpKTsKLSAgICBlbHNlIGlmIChwcm9wZXJ0eS5pc0RvdWJsZSgpKSB7
CisgICAgaWYgKHByb3BlcnR5LmlzRG91YmxlKCkpIHsKICAgICAgICAgZG91YmxlIHByb3BlcnR5
QXNEb3VibGUgPSBwcm9wZXJ0eS5hc0RvdWJsZSgpOwogICAgICAgICB1aW50MzJfdCBwcm9wZXJ0
eUFzVUludDMyID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHByb3BlcnR5QXNEb3VibGUpOwogICAg
ICAgICBpZiAocHJvcGVydHlBc1VJbnQzMiA9PSBwcm9wZXJ0eUFzRG91YmxlKQogICAgICAgICAg
ICAgcmV0dXJuIGdldEJ5VmFsKGV4ZWMsIGJhc2UsIHByb3BlcnR5QXNVSW50MzIpOwotICAgIH0g
ZWxzZSBpZiAocHJvcGVydHkuaXNTdHJpbmcoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShiYXNlLT5nZXRCeVN0cmluZyhleGVjLCBhc1N0cmluZyhwcm9wZXJ0eSktPnZhbHVlKGV4
ZWMpKSk7CisgICAgfSBlbHNlIGlmIChwcm9wZXJ0eS5pc1N0cmluZygpKSB7CisgICAgICAgIGlm
IChKU1ZhbHVlIHJlc3VsdCA9IGJhc2UtPmZhc3RHZXRPd25Qcm9wZXJ0eShleGVjLCBhc1N0cmlu
Zyhwcm9wZXJ0eSktPnZhbHVlKGV4ZWMpKSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKKyAgICB9CiAKICAgICBpZiAoaXNOYW1lKHByb3BlcnR5KSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKGJhc2UpLmdldChleGVjLCBqc0Nhc3Q8
TmFtZUluc3RhbmNlKj4ocHJvcGVydHkuYXNDZWxsKCkpLT5wcml2YXRlTmFtZSgpKSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCShyZXZp
c2lvbiAxNDU5MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTkwLDYgKzkwLDcgQEAgbmFtZXNwYWNlIEpTQyAgewog
ICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBudW1iZXJDb25zdHJ1Y3RvclRhYmxlKENh
bGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5udW1i
ZXJDb25zdHJ1Y3RvclRhYmxlOyB9CiAgICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIG51
bWJlclByb3RvdHlwZVRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJh
bWUtPmdsb2JhbERhdGEoKS5udW1iZXJQcm90b3R5cGVUYWJsZTsgfQogICAgICAgICBzdGF0aWMg
Y29uc3QgSGFzaFRhYmxlKiBvYmplY3RDb25zdHJ1Y3RvclRhYmxlKENhbGxGcmFtZSogY2FsbEZy
YW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5vYmplY3RDb25zdHJ1Y3RvclRh
YmxlOyB9CisgICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIG9iamVjdFByb3RvdHlwZVRh
YmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPmdsb2JhbERhdGEo
KS5vYmplY3RQcm90b3R5cGVUYWJsZTsgfQogICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxl
KiBwcml2YXRlTmFtZVByb3RvdHlwZVRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVy
biBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5wcml2YXRlTmFtZVByb3RvdHlwZVRhYmxlOyB9CiAg
ICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIHJlZ0V4cFRhYmxlKENhbGxGcmFtZSogY2Fs
bEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5yZWdFeHBUYWJsZTsgfQog
ICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiByZWdFeHBDb25zdHJ1Y3RvclRhYmxlKENh
bGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5yZWdF
eHBDb25zdHJ1Y3RvclRhYmxlOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0
dWJzLmNwcAkocmV2aXNpb24gMTQ1OTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MTcsOCArMjQxNywxMCBAQCBERUZJTkVf
U1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfCiBzdGF0aWMgSlNWYWx1ZSBnZXRCeVZh
bCgKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUg
c3Vic2NyaXB0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiB7Ci0gICAgaWYgKExJ
S0VMWShiYXNlVmFsdWUuaXNDZWxsKCkgJiYgc3Vic2NyaXB0LmlzU3RyaW5nKCkpKQotICAgICAg
ICByZXR1cm4gYmFzZVZhbHVlLmFzQ2VsbCgpLT5nZXRCeVN0cmluZyhjYWxsRnJhbWUsIGFzU3Ry
aW5nKHN1YnNjcmlwdCktPnZhbHVlKGNhbGxGcmFtZSkpOworICAgIGlmIChMSUtFTFkoYmFzZVZh
bHVlLmlzQ2VsbCgpICYmIHN1YnNjcmlwdC5pc1N0cmluZygpKSkgeworICAgICAgICBpZiAoSlNW
YWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuYXNDZWxsKCktPmZhc3RHZXRPd25Qcm9wZXJ0eShjYWxs
RnJhbWUsIGFzU3RyaW5nKHN1YnNjcmlwdCktPnZhbHVlKGNhbGxGcmFtZSkpKQorICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiAKICAgICBpZiAoc3Vic2NyaXB0LmlzVUludDMyKCkp
IHsKICAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lv
biAxNDU5MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYwLDggKzEwNjAsMTAgQEAgTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2RlbF9ieV9pZAogCiBpbmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCkKIHsKLSAg
ICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmcoKSkp
Ci0gICAgICAgIHJldHVybiBiYXNlVmFsdWUuYXNDZWxsKCktPmdldEJ5U3RyaW5nKGV4ZWMsIGFz
U3RyaW5nKHN1YnNjcmlwdCktPnZhbHVlKGV4ZWMpKTsKKyAgICBpZiAoTElLRUxZKGJhc2VWYWx1
ZS5pc0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmcoKSkpIHsKKyAgICAgICAgaWYgKEpTVmFs
dWUgcmVzdWx0ID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5mYXN0R2V0T3duUHJvcGVydHkoZXhlYywg
YXNTdHJpbmcoc3Vic2NyaXB0KS0+dmFsdWUoZXhlYykpKQorICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CiAgICAgCiAgICAgaWYgKHN1YnNjcmlwdC5pc1VJbnQzMigpKSB7CiAgICAg
ICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAkocmV2aXNpb24g
MTQ1OTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaAkod29ya2luZyBjb3B5KQpAQCAtOTksMTEgKzk5LDcgQEAKICAgICBtYWNybyh2YWx1ZU9m
KSBcCiAgICAgbWFjcm8od3JpdGFibGUpIFwKICAgICBtYWNybyhkaXNwbGF5TmFtZSkgXAotICAg
IG1hY3JvKGpvaW4pIFwKLSAgICBtYWNybyhfX2RlZmluZUdldHRlcl9fKSBcCi0gICAgbWFjcm8o
X19kZWZpbmVTZXR0ZXJfXykgXAotICAgIG1hY3JvKF9fbG9va3VwR2V0dGVyX18pIFwKLSAgICBt
YWNybyhfX2xvb2t1cFNldHRlcl9fKQorICAgIG1hY3JvKGpvaW4pCiAKICNkZWZpbmUgSlNDX0NP
TU1PTl9JREVOVElGSUVSU19FQUNIX0tFWVdPUkQobWFjcm8pIFwKICAgICBtYWNybyhudWxsKSBc
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHJldmlzaW9u
IDE0NTkzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIyNywxMCArMjI3LDQgQEAgYm9vbCBKU0NlbGw6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihKUwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotSlNWYWx1ZSBKU0NlbGw6
OmdldEJ5U3RyaW5nU2xvdyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbmFtZSkKLXsK
LSAgICBJZGVudGlmaWVyIGlkZW50KCZleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOwotICAgIHJl
dHVybiBKU1ZhbHVlKHRoaXMpLmdldChleGVjLCBpZGVudCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9u
IDE0NTkzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjIsOCArMTIyLDcgQEAgcHVibGljOgogICAgIC8vIGNhbGwgdGhpcyBm
dW5jdGlvbiwgbm90IGl0cyBzbG93ZXIgdmlydHVhbCBjb3VudGVycGFydC4gKEZvciBpbnRlZ2Vy
CiAgICAgLy8gcHJvcGVydHkgbmFtZXMsIHdlIHdhbnQgYSBzaW1pbGFyIGludGVyZmFjZSB3aXRo
IGFwcHJvcHJpYXRlIG9wdGltaXphdGlvbnMuKQogICAgIGJvb2wgZmFzdEdldE93blByb3BlcnR5
U2xvdChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwotICAgIAotICAg
IEpTVmFsdWUgZ2V0QnlTdHJpbmcoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7CisgICAgSlNW
YWx1ZSBmYXN0R2V0T3duUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7CiAKICAg
ICBzdGF0aWMgcHRyZGlmZl90IHN0cnVjdHVyZU9mZnNldCgpCiAgICAgewpAQCAtMTYyLDEwICsx
NjEsNiBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKLSAgICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlPgotICAg
IEpTVmFsdWUgZ2V0QnlTdHJpbmdBbmRLZXkoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgS2V5VHlwZSYpOwotICAgIEpTVmFsdWUgZ2V0QnlTdHJpbmdTbG93KEV4ZWNTdGF0ZSosIGNv
bnN0IFN0cmluZyYpOwogICAgICAgICAKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0
cnVjdHVyZTsKIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJ
bmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsSW5saW5lcy5oCShyZXZpc2lvbiAxNDU5MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGxJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2OSw0NiArMTY5LDIw
IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU0NlbGw6OmZhc3RHZXRPd25Qcm8KICAgICByZXR1cm4g
bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEtleVR5cGU+Ci1BTFdBWVNfSU5MSU5F
IEpTVmFsdWUgSlNDZWxsOjpnZXRCeVN0cmluZ0FuZEtleShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgS2V5VHlwZSYga2V5KQotewotICAgIEpTQ2VsbCogY2VsbCA9
IHRoaXM7Ci0gICAgCi0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKGNl
bGwtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCgp
KSkKLSAgICAgICAgICAgIHJldHVybiBnZXRCeVN0cmluZ1Nsb3coZXhlYywgbmFtZSk7Ci0gICAg
ICAgIAotICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwotICAgICAgICBQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQgPSBjZWxsLT5zdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwga2V5
LCBhdHRyaWJ1dGVzKTsKLSAgICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7Ci0g
ICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIEFjY2Vzc29yKQotICAgICAgICAgICAgICAgIHJl
dHVybiBjZWxsLT5nZXRCeVN0cmluZ1Nsb3coZXhlYywgbmFtZSk7Ci0gICAgICAgICAgICByZXR1
cm4gYXNPYmplY3QoY2VsbCktPmdldERpcmVjdChvZmZzZXQpOwotICAgICAgICB9Ci0gICAgICAg
IAotICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IGNlbGwtPnN0cnVjdHVyZSgpLT5zdG9yZWRQ
cm90b3R5cGUoKTsKLSAgICAgICAgaWYgKCFwcm90b3R5cGUuaXNPYmplY3QoKSkKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjZWxsID0gYXNPYmplY3QocHJvdG90eXBlKTsKLSAgICB9Ci0g
ICAgCi0gICAgLy8gTWFrZSBzdXJlIHdlIGFyZW4ndCBnb2luZyBhZnRlciBpbmRleGVkIHN0b3Jh
Z2UsIGFuZCBpZiB3ZSBhcmUsIHRoZW4ganVzdCB1c2UgdGhhdC4KLSAgICB1bnNpZ25lZCBpbmRl
eCA9IHRvVUludDMyRnJvbVN0cmluZ0ltcGwobmFtZS5pbXBsKCkpOwotICAgIGlmIChpbmRleCA9
PSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwotICAgIAotICAgIHJldHVybiBKU1ZhbHVlKHRoaXMpLmdldChleGVjLCBpbmRleCk7Ci19Ci0K
IC8vIEZhc3QgY2FsbCB0byBnZXQgYSBwcm9wZXJ0eSB3aGVyZSB3ZSBtYXkgbm90IHlldCBoYXZl
IGNvbnZlcnRlZCB0aGUgc3RyaW5nIHRvIGFuCiAvLyBpZGVudGlmaWVyLiBUaGUgZmlyc3QgdGlt
ZSB3ZSBwZXJmb3JtIGEgcHJvcGVydHkgYWNjZXNzIHdpdGggYSBnaXZlbiBzdHJpbmcsIHRyeQog
Ly8gcGVyZm9ybWluZyB0aGUgcHJvcGVydHkgbWFwIGxvb2t1cCB3aXRob3V0IGZvcm1pbmcgYW4g
aWRlbnRpZmllci4gV2UgZGV0ZWN0IHRoaXMKIC8vIGNhc2UgYnkgY2hlY2tpbmcgd2hldGhlciB0
aGUgaGFzaCBoYXMgeWV0IGJlZW4gc2V0IGZvciB0aGlzIHN0cmluZy4KLUFMV0FZU19JTkxJTkUg
SlNWYWx1ZSBKU0NlbGw6OmdldEJ5U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5n
JiBuYW1lKQorQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTQ2VsbDo6ZmFzdEdldE93blByb3BlcnR5
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIGlmIChuYW1lLmlt
cGwoKS0+aGFzSGFzaCgpKQotICAgICAgICByZXR1cm4gZ2V0QnlTdHJpbmdBbmRLZXkoZXhlYywg
bmFtZSwgSWRlbnRpZmllcihleGVjLCBuYW1lKSk7Ci0gICAgcmV0dXJuIGdldEJ5U3RyaW5nQW5k
S2V5KGV4ZWMsIG5hbWUsIG5hbWUpOworICAgIGlmICghc3RydWN0dXJlKCktPnR5cGVJbmZvKCku
b3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90KCkgJiYgIXN0cnVjdHVyZSgpLT5oYXNHZXR0ZXJT
ZXR0ZXJQcm9wZXJ0aWVzKCkpIHsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gbmFt
ZS5pbXBsKCktPmhhc0hhc2goKQorICAgICAgICAgICAgPyBzdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCBuYW1lKSkKKyAgICAgICAgICAgIDogc3Ry
dWN0dXJlKCktPmdldChleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOworICAgICAgICBpZiAob2Zm
c2V0ICE9IGludmFsaWRPZmZzZXQpCisgICAgICAgICAgICByZXR1cm4gYXNPYmplY3QodGhpcykt
PmxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPmdldCgpOworICAgIH0KKyAgICByZXR1cm4gSlNW
YWx1ZSgpOwogfQogCiBpbmxpbmUgYm9vbCBKU0NlbGw6OnRvQm9vbGVhbihFeGVjU3RhdGUqIGV4
ZWMpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERh
dGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsRGF0YS5jcHAJKHJldmlzaW9uIDE0NTkzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDYgKzkzLDcgQEAg
ZXh0ZXJuIGNvbnN0IEhhc2hUYWJsZSBtYXRoVGFibGU7CiBleHRlcm4gY29uc3QgSGFzaFRhYmxl
IG51bWJlckNvbnN0cnVjdG9yVGFibGU7CiBleHRlcm4gY29uc3QgSGFzaFRhYmxlIG51bWJlclBy
b3RvdHlwZVRhYmxlOwogSlNfRVhQT1JUREFUQSBleHRlcm4gY29uc3QgSGFzaFRhYmxlIG9iamVj
dENvbnN0cnVjdG9yVGFibGU7CitleHRlcm4gY29uc3QgSGFzaFRhYmxlIG9iamVjdFByb3RvdHlw
ZVRhYmxlOwogZXh0ZXJuIGNvbnN0IEhhc2hUYWJsZSBwcml2YXRlTmFtZVByb3RvdHlwZVRhYmxl
OwogZXh0ZXJuIGNvbnN0IEhhc2hUYWJsZSByZWdFeHBUYWJsZTsKIGV4dGVybiBjb25zdCBIYXNo
VGFibGUgcmVnRXhwQ29uc3RydWN0b3JUYWJsZTsKQEAgLTE1NCw2ICsxNTUsNyBAQCBKU0dsb2Jh
bERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwCiAgICAgLCBudW1iZXJDb25zdHJ1Y3Rv
clRhYmxlKGZhc3ROZXc8SGFzaFRhYmxlPihKU0M6Om51bWJlckNvbnN0cnVjdG9yVGFibGUpKQog
ICAgICwgbnVtYmVyUHJvdG90eXBlVGFibGUoZmFzdE5ldzxIYXNoVGFibGU+KEpTQzo6bnVtYmVy
UHJvdG90eXBlVGFibGUpKQogICAgICwgb2JqZWN0Q29uc3RydWN0b3JUYWJsZShmYXN0TmV3PEhh
c2hUYWJsZT4oSlNDOjpvYmplY3RDb25zdHJ1Y3RvclRhYmxlKSkKKyAgICAsIG9iamVjdFByb3Rv
dHlwZVRhYmxlKGZhc3ROZXc8SGFzaFRhYmxlPihKU0M6Om9iamVjdFByb3RvdHlwZVRhYmxlKSkK
ICAgICAsIHByaXZhdGVOYW1lUHJvdG90eXBlVGFibGUoZmFzdE5ldzxIYXNoVGFibGU+KEpTQzo6
cHJpdmF0ZU5hbWVQcm90b3R5cGVUYWJsZSkpCiAgICAgLCByZWdFeHBUYWJsZShmYXN0TmV3PEhh
c2hUYWJsZT4oSlNDOjpyZWdFeHBUYWJsZSkpCiAgICAgLCByZWdFeHBDb25zdHJ1Y3RvclRhYmxl
KGZhc3ROZXc8SGFzaFRhYmxlPihKU0M6OnJlZ0V4cENvbnN0cnVjdG9yVGFibGUpKQpAQCAtMjg0
LDYgKzI4Niw3IEBAIEpTR2xvYmFsRGF0YTo6fkpTR2xvYmFsRGF0YSgpCiAgICAgbnVtYmVyQ29u
c3RydWN0b3JUYWJsZS0+ZGVsZXRlVGFibGUoKTsKICAgICBudW1iZXJQcm90b3R5cGVUYWJsZS0+
ZGVsZXRlVGFibGUoKTsKICAgICBvYmplY3RDb25zdHJ1Y3RvclRhYmxlLT5kZWxldGVUYWJsZSgp
OworICAgIG9iamVjdFByb3RvdHlwZVRhYmxlLT5kZWxldGVUYWJsZSgpOwogICAgIHByaXZhdGVO
YW1lUHJvdG90eXBlVGFibGUtPmRlbGV0ZVRhYmxlKCk7CiAgICAgcmVnRXhwVGFibGUtPmRlbGV0
ZVRhYmxlKCk7CiAgICAgcmVnRXhwQ29uc3RydWN0b3JUYWJsZS0+ZGVsZXRlVGFibGUoKTsKQEAg
LTMwMyw2ICszMDYsNyBAQCBKU0dsb2JhbERhdGE6On5KU0dsb2JhbERhdGEoKQogICAgIGZhc3RE
ZWxldGUoY29uc3RfY2FzdDxIYXNoVGFibGUqPihudW1iZXJDb25zdHJ1Y3RvclRhYmxlKSk7CiAg
ICAgZmFzdERlbGV0ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KG51bWJlclByb3RvdHlwZVRhYmxl
KSk7CiAgICAgZmFzdERlbGV0ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KG9iamVjdENvbnN0cnVj
dG9yVGFibGUpKTsKKyAgICBmYXN0RGVsZXRlKGNvbnN0X2Nhc3Q8SGFzaFRhYmxlKj4ob2JqZWN0
UHJvdG90eXBlVGFibGUpKTsKICAgICBmYXN0RGVsZXRlKGNvbnN0X2Nhc3Q8SGFzaFRhYmxlKj4o
cHJpdmF0ZU5hbWVQcm90b3R5cGVUYWJsZSkpOwogICAgIGZhc3REZWxldGUoY29uc3RfY2FzdDxI
YXNoVGFibGUqPihyZWdFeHBUYWJsZSkpOwogICAgIGZhc3REZWxldGUoY29uc3RfY2FzdDxIYXNo
VGFibGUqPihyZWdFeHBDb25zdHJ1Y3RvclRhYmxlKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkocmV2aXNpb24gMTQ1OTMxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIyMyw2ICsyMjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSGFzaFRh
YmxlKiBudW1iZXJDb25zdHJ1Y3RvclRhYmxlOwogICAgICAgICBjb25zdCBIYXNoVGFibGUqIG51
bWJlclByb3RvdHlwZVRhYmxlOwogICAgICAgICBjb25zdCBIYXNoVGFibGUqIG9iamVjdENvbnN0
cnVjdG9yVGFibGU7CisgICAgICAgIGNvbnN0IEhhc2hUYWJsZSogb2JqZWN0UHJvdG90eXBlVGFi
bGU7CiAgICAgICAgIGNvbnN0IEhhc2hUYWJsZSogcHJpdmF0ZU5hbWVQcm90b3R5cGVUYWJsZTsK
ICAgICAgICAgY29uc3QgSGFzaFRhYmxlKiByZWdFeHBUYWJsZTsKICAgICAgICAgY29uc3QgSGFz
aFRhYmxlKiByZWdFeHBDb25zdHJ1Y3RvclRhYmxlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMTQ1OTMxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAy
LDE2ICsyMjAyLDYgQEAgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW5kZXhCZXlvbmRWZWN0bwog
ICAgIH0KIH0KIAotdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBQcm9wZXJ0eU5h
bWUmIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgZnVuY3Rpb25MZW5ndGgsIE5hdGl2ZUZ1bmN0aW9u
IG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
KQotewotICAgIFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOwot
ICAgIEFTU0VSVChuYW1lKTsKLSAgICAKLSAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9Ci0gICAg
ICAgIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIGZ1bmN0aW9uTGVuZ3Ro
LCBuYW1lLCBuYXRpdmVGdW5jdGlvbiwgaW50cmluc2ljKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBhdHRyaWJ1dGVzKTsKLX0KLQog
QUxXQVlTX0lOTElORSB1bnNpZ25lZCBKU09iamVjdDo6Z2V0TmV3VmVjdG9yTGVuZ3RoKHVuc2ln
bmVkIGN1cnJlbnRWZWN0b3JMZW5ndGgsIHVuc2lnbmVkIGN1cnJlbnRMZW5ndGgsIHVuc2lnbmVk
IGRlc2lyZWRMZW5ndGgpCiB7CiAgICAgQVNTRVJUKGRlc2lyZWRMZW5ndGggPD0gTUFYX1NUT1JB
R0VfVkVDVE9SX0xFTkdUSCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmgJKHJldmlzaW9uIDE0NTkzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2NSw4ICs1NjUsNiBAQCBwdWJsaWM6
CiAgICAgdm9pZCBwdXREaXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQsIEpTVmFsdWUgdmFsdWUpIHsgbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KS0+
c2V0KGdsb2JhbERhdGEsIHRoaXMsIHZhbHVlKTsgfQogICAgIHZvaWQgcHV0RGlyZWN0VW5kZWZp
bmVkKFByb3BlcnR5T2Zmc2V0IG9mZnNldCkgeyBsb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5z
ZXRVbmRlZmluZWQoKTsgfQogCi0gICAgdm9pZCBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbihFeGVj
U3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2lnbmVkIGZ1
bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzKTsKLQogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3Bl
cnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0
b3ImLCBib29sIHNob3VsZFRocm93KTsKIAogICAgIGJvb2wgaXNHbG9iYWxPYmplY3QoKSBjb25z
dDsKQEAgLTcwMiw3ICs3MDAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1
cmUoKS0+aXNPYmplY3QoKSk7CiAgICAgICAgIEFTU0VSVChjbGFzc0luZm8oKSk7CiAgICAgfQot
ICAgIAorCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
b3R5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0
YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgJnNfaW5mbyk7CkBAIC05MTEsNyArOTA5LDYgQEAgcHJpdmF0ZToKICAgICAvLyBO
b2JvZHkgc2hvdWxkIGV2ZXIgYXNrIGFueSBvZiB0aGVzZSBxdWVzdGlvbnMgb24gc29tZXRoaW5n
IGFscmVhZHkga25vd24gdG8gYmUgYSBKU09iamVjdC4KICAgICB1c2luZyBKU0NlbGw6OmlzQVBJ
VmFsdWVXcmFwcGVyOwogICAgIHVzaW5nIEpTQ2VsbDo6aXNHZXR0ZXJTZXR0ZXI7Ci0KICAgICB2
b2lkIGdldE9iamVjdCgpOwogICAgIHZvaWQgZ2V0U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYyk7CiAg
ICAgdm9pZCBpc09iamVjdCgpOwpAQCAtMTQ1MiwxNCArMTQ0OSw2IEBAIGlubGluZSBpbnQgb2Zm
c2V0UmVsYXRpdmVUb0Jhc2UoUHJvcGVydHkKIAogQ09NUElMRV9BU1NFUlQoIShzaXplb2YoSlNP
YmplY3QpICUgc2l6ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4pKSwgSlNPYmplY3RfaW5s
aW5lX3N0b3JhZ2VfaGFzX2NvcnJlY3RfYWxpZ25tZW50KTsKIAotLy8gSGVscGVyIGZvciBkZWZp
bmluZyBuYXRpdmUgZnVuY3Rpb25zLCBpZiB5b3UncmUgbm90IHVzaW5nIGEgc3RhdGljIGhhc2gg
dGFibGUuCi0vLyBVc2UgdGhpcyBtYWNybyBmcm9tIHdpdGhpbiBmaW5pc2hDcmVhdGlvbigpIG1l
dGhvZHMgaW4gcHJvdG90eXBlcy4gVGhpcyBhc3N1bWVzCi0vLyB5b3UndmUgZGVmaW5lZCB2YXJp
YWJsZXMgY2FsbGVkIGV4ZWMsIGdsb2JhbE9iamVjdCwgYW5kIGdsb2JhbERhdGEsIGFuZCB0aGV5
Ci0vLyBoYXZlIHRoZSBleHBlY3RlZCBtZWFuaW5ncy4gVGhpcyBhbHNvIGFzc3VtZXMgdGhhdCB0
aGUgZnVuY3Rpb24geW91J3JlIGRlZmluaW5nCi0vLyBkb2Vzbid0IGhhdmUgYW4gaW50cmluc2lj
LgotI2RlZmluZSBKU0NfTkFUSVZFX0ZVTkNUSU9OKGpzTmFtZSwgY3BwTmFtZSwgYXR0cmlidXRl
cywgbGVuZ3RoKSBcCi0gICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBnbG9iYWxEYXRhLnByb3BlcnR5TmFtZXMtPmpzTmFtZSwgKGxlbmd0aCksIGNwcE5hbWUs
IE5vSW50cmluc2ljLCAoYXR0cmlidXRlcykpCi0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5k
aWYgLy8gSlNPYmplY3RfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9v
a3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29r
dXAuY3BwCShyZXZpc2lvbiAxNDU5MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Mb29rdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw5ICs3NywxMSBAQCBib29sIHNldFVw
U3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogCiAgICAgICAgIGlmICh0aGlzT2JqLT5zdGF0
aWNGdW5jdGlvbnNSZWlmaWVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0g
ICAgICAgIHRoaXNPYmotPnB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKAotICAgICAgICAgICAgZXhl
YywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgZW50cnktPmZ1bmN0aW9u
TGVuZ3RoKCksCi0gICAgICAgICAgICBlbnRyeS0+ZnVuY3Rpb24oKSwgZW50cnktPmludHJpbnNp
YygpLCBlbnRyeS0+YXR0cmlidXRlcygpKTsKKyAgICAgICAgU3RyaW5nSW1wbCogbmFtZSA9IHBy
b3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7CisgICAgICAgIEFTU0VSVChuYW1lKTsKKyAgICAgICAg
CisgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMs
IHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBlbnRyeS0+ZnVuY3Rpb25MZW5ndGgoKSwgbmFtZSwg
ZW50cnktPmZ1bmN0aW9uKCksIGVudHJ5LT5pbnRyaW5zaWMoKSk7CisgICAgICAgIHRoaXNPYmot
PnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgZnVuY3Rpb24sIGVu
dHJ5LT5hdHRyaWJ1dGVzKCkpOwogICAgICAgICBvZmZzZXQgPSB0aGlzT2JqLT5nZXREaXJlY3RP
ZmZzZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBBU1NFUlQo
aXNWYWxpZE9mZnNldChvZmZzZXQpKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDE0NTkzMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDQwICs0MCw1MSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBvYmplCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RQcm90b0Z1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEV4
ZWNTdGF0ZSopOwogCit9CisKKyNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUubHV0LmgiCisKK25h
bWVzcGFjZSBKU0MgeworCiBBU1NFUlRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihPYmplY3RQcm90
b3R5cGUpOwogCi1jb25zdCBDbGFzc0luZm8gT2JqZWN0UHJvdG90eXBlOjpzX2luZm8gPSB7ICJP
YmplY3QiLCAmSlNOb25GaW5hbE9iamVjdDo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKE9iamVjdFByb3RvdHlwZSkgfTsKK2NvbnN0IENsYXNzSW5mbyBPYmplY3RQcm90b3R5cGU6
OnNfaW5mbyA9IHsgIk9iamVjdCIsICZKU05vbkZpbmFsT2JqZWN0OjpzX2luZm8sIDAsIEV4ZWNT
dGF0ZTo6b2JqZWN0UHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoT2JqZWN0UHJv
dG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIE9iamVjdFByb3RvdHlwZS5sdXQuaAorQGJlZ2lu
IG9iamVjdFByb3RvdHlwZVRhYmxlCisgIHRvU3RyaW5nICAgICAgICAgICAgICBvYmplY3RQcm90
b0Z1bmNUb1N0cmluZyAgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICB0b0xv
Y2FsZVN0cmluZyAgICAgICAgb2JqZWN0UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAgdmFsdWVPZiAgICAgICAgICAgICAgIG9iamVjdFByb3Rv
RnVuY1ZhbHVlT2YgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCisgIGhhc093
blByb3BlcnR5ICAgICAgICBvYmplY3RQcm90b0Z1bmNIYXNPd25Qcm9wZXJ0eSAgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gMQorICBwcm9wZXJ0eUlzRW51bWVyYWJsZSAgb2JqZWN0UHJvdG9G
dW5jUHJvcGVydHlJc0VudW1lcmFibGUgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgaXNQcm90
b3R5cGVPZiAgICAgICAgIG9iamVjdFByb3RvRnVuY0lzUHJvdG90eXBlT2YgICAgICAgICAgICBE
b250RW51bXxGdW5jdGlvbiAxCisgIF9fZGVmaW5lR2V0dGVyX18gICAgICBvYmplY3RQcm90b0Z1
bmNEZWZpbmVHZXR0ZXIgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorICBfX2RlZmlu
ZVNldHRlcl9fICAgICAgb2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyICAgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDIKKyAgX19sb29rdXBHZXR0ZXJfXyAgICAgIG9iamVjdFByb3RvRnVu
Y0xvb2t1cEdldHRlciAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIF9fbG9va3Vw
U2V0dGVyX18gICAgICBvYmplY3RQcm90b0Z1bmNMb29rdXBTZXR0ZXIgICAgICAgICAgICAgRG9u
dEVudW18RnVuY3Rpb24gMQorQGVuZAorKi8KIAogT2JqZWN0UHJvdG90eXBlOjpPYmplY3RQcm90
b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0dWN0dXJlKQogICAgIDogSlNOb25G
aW5hbE9iamVjdChleGVjLT5nbG9iYWxEYXRhKCksIHN0dWN0dXJlKQogewogfQogCi12b2lkIE9i
amVjdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQordm9pZCBPYmplY3RQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqKQogewotICAgIEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKLSAgICAKICAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5m
bykpOwogICAgIGdsb2JhbERhdGEucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKLSAg
ICAKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHRvU3RyaW5nLCBvYmplY3RQcm90b0Z1bmNUb1N0
cmluZywgRG9udEVudW0sIDApOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odG9Mb2NhbGVTdHJp
bmcsIG9iamVjdFByb3RvRnVuY1RvTG9jYWxlU3RyaW5nLCBEb250RW51bSwgMCk7Ci0gICAgSlND
X05BVElWRV9GVU5DVElPTih2YWx1ZU9mLCBvYmplY3RQcm90b0Z1bmNWYWx1ZU9mLCBEb250RW51
bSwgMCk7Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTihoYXNPd25Qcm9wZXJ0eSwgb2JqZWN0UHJv
dG9GdW5jSGFzT3duUHJvcGVydHksIERvbnRFbnVtLCAxKTsKLSAgICBKU0NfTkFUSVZFX0ZVTkNU
SU9OKHByb3BlcnR5SXNFbnVtZXJhYmxlLCBvYmplY3RQcm90b0Z1bmNQcm9wZXJ0eUlzRW51bWVy
YWJsZSwgRG9udEVudW0sIDEpOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oaXNQcm90b3R5cGVP
Ziwgb2JqZWN0UHJvdG9GdW5jSXNQcm90b3R5cGVPZiwgRG9udEVudW0sIDEpOwotICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT04oX19kZWZpbmVHZXR0ZXJfXywgb2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0
dGVyLCBEb250RW51bSwgMik7Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTihfX2RlZmluZVNldHRl
cl9fLCBvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIsIERvbnRFbnVtLCAyKTsKLSAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OKF9fbG9va3VwR2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0xvb2t1cEdl
dHRlciwgRG9udEVudW0sIDEpOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oX19sb29rdXBTZXR0
ZXJfXywgb2JqZWN0UHJvdG9GdW5jTG9va3VwU2V0dGVyLCBEb250RW51bSwgMSk7Ci19Ci0KLU9i
amVjdFByb3RvdHlwZSogT2JqZWN0UHJvdG90eXBlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLXsKLSAg
ICBPYmplY3RQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PE9iamVjdFByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIE9iamVjdFByb3RvdHlwZShleGVjLCBz
dHJ1Y3R1cmUpOwotICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24oZXhlYywgZ2xvYmFsT2Jq
ZWN0KTsKLSAgICByZXR1cm4gcHJvdG90eXBlOworfQorCitib29sIE9iamVjdFByb3RvdHlwZTo6
Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QgJnNsb3QpCit7CisgICAgcmV0dXJuIGdl
dFN0YXRpY0Z1bmN0aW9uU2xvdDxKU05vbkZpbmFsT2JqZWN0PihleGVjLCBFeGVjU3RhdGU6Om9i
amVjdFByb3RvdHlwZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8T2JqZWN0UHJvdG90eXBlKj4oY2VsbCks
IHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK2Jvb2wgT2JqZWN0UHJvdG90eXBlOjpnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7
CisgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcjxKU05vbkZpbmFsT2JqZWN0
PihleGVjLCBFeGVjU3RhdGU6Om9iamVjdFByb3RvdHlwZVRhYmxlKGV4ZWMpLCBqc0Nhc3Q8T2Jq
ZWN0UHJvdG90eXBlKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKIH0KIAog
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgJKHJldmlzaW9uIDE0NTkzMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw3ICsyOSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVk
ZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwogCi0gICAgICAgIHN0YXRpYyBPYmplY3RQcm90b3R5
cGUqIGNyZWF0ZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAg
ICAgICBzdGF0aWMgT2JqZWN0UHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAg
eworICAgICAgICAgICAgT2JqZWN0UHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxPYmplY3RQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBPYmplY3RQcm90
b3R5cGUoZXhlYywgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3Jl
YXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QpOworICAgICAgICAgICAgcmV0
dXJuIHByb3RvdHlwZTsKKyAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBjb25zdCBDbGFzc0lu
Zm8gc19pbmZvOwogCkBAIC0zOSwxMCArNDQsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3Rh
dGUqLCBKU0dsb2JhbE9iamVjdCopOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU05vbkZpbmFsT2Jq
ZWN0OjpTdHJ1Y3R1cmVGbGFnczsKKworICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xv
YmFsRGF0YSYsIEpTR2xvYmFsT2JqZWN0Kik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBPYmpl
Y3RQcm90b3R5cGUoRXhlY1N0YXRlKiwgU3RydWN0dXJlKik7CisgICAgICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYpOworICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYpOwogICAgIH07CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJs
ZS5oCShyZXZpc2lvbiAxNDU5MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eU1hcEhhc2hUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTEsNyArMzExLDcgQEAg
aW5saW5lIFByb3BlcnR5VGFibGU6OmZpbmRfaXRlcmF0b3IgUHJvcAogaW5saW5lIFByb3BlcnR5
VGFibGU6OmZpbmRfaXRlcmF0b3IgUHJvcGVydHlUYWJsZTo6ZmluZFdpdGhTdHJpbmcoY29uc3Qg
S2V5VHlwZSYga2V5KQogewogICAgIEFTU0VSVChrZXkpOwotICAgIEFTU0VSVCgha2V5LT5pc0lk
ZW50aWZpZXIoKSk7CisgICAgQVNTRVJUKCFrZXktPmlzSWRlbnRpZmllcigpICYmICFrZXktPmhh
c0hhc2goKSk7CiAgICAgdW5zaWduZWQgaGFzaCA9IGtleS0+aGFzaCgpOwogICAgIHVuc2lnbmVk
IHN0ZXAgPSAwOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuaAkocmV2aXNpb24gMTQ1OTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzMyw4ICsyMzMsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKIAogICAgIFByb3BlcnR5T2Zmc2V0IGdldChKU0dsb2JhbERhdGEmLCBQcm9w
ZXJ0eU5hbWUpOwotICAgIFByb3BlcnR5T2Zmc2V0IGdldChKU0dsb2JhbERhdGEmLCBQcm9wZXJ0
eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzKTsKLSAgICBQcm9wZXJ0eU9mZnNldCBnZXQoSlNH
bG9iYWxEYXRhJiwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVz
KTsKKyAgICBQcm9wZXJ0eU9mZnNldCBnZXQoSlNHbG9iYWxEYXRhJiwgY29uc3QgV1RGOjpTdHJp
bmcmIG5hbWUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIFByb3BlcnR5T2Zmc2V0IGdldChKU0ds
b2JhbERhdGEmLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBz
cGVjaWZpY1ZhbHVlKTsKIAogICAgIGJvb2wgaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpIGNv
bnN0IHsgcmV0dXJuIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllczsgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAkocmV2aXNp
b24gMTQ1OTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5s
aW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSwyMiArNjksNyBAQCBpbmxpbmUgUHJvcGVydHlP
ZmZzZXQgU3RydWN0dXJlOjpnZXQoSlNHCiAgICAgcmV0dXJuIGVudHJ5ID8gZW50cnktPm9mZnNl
dCA6IGludmFsaWRPZmZzZXQ7CiB9CiAKLWlubGluZSBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6
OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IHVuc2lnbmVkJiBhdHRyaWJ1dGVzKQotewotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJ
bmZvKCkgPT0gJnNfaW5mbyk7Ci0gICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5
KGdsb2JhbERhdGEpOwotICAgIGlmICghcHJvcGVydHlUYWJsZSgpKQotICAgICAgICByZXR1cm4g
aW52YWxpZE9mZnNldDsKLQotICAgIFByb3BlcnR5TWFwRW50cnkqIGVudHJ5ID0gcHJvcGVydHlU
YWJsZSgpLT5maW5kKHByb3BlcnR5TmFtZS51aWQoKSkuZmlyc3Q7Ci0gICAgaWYgKCFlbnRyeSkK
LSAgICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7Ci0gICAgCi0gICAgYXR0cmlidXRlcyA9IGVu
dHJ5LT5hdHRyaWJ1dGVzOwotICAgIHJldHVybiBlbnRyeS0+b2Zmc2V0OwotfQotCi1pbmxpbmUg
UHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBj
b25zdCBXVEY6OlN0cmluZyYgbmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMpCitpbmxpbmUgUHJv
cGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25z
dCBXVEY6OlN0cmluZyYgbmFtZSkKIHsKICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5m
bygpID09ICZzX2luZm8pOwogICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShn
bG9iYWxEYXRhKTsKQEAgLTkyLDExICs3Nyw3IEBAIGlubGluZSBQcm9wZXJ0eU9mZnNldCBTdHJ1
Y3R1cmU6OmdldChKU0cKICAgICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CiAKICAgICBQcm9w
ZXJ0eU1hcEVudHJ5KiBlbnRyeSA9IHByb3BlcnR5VGFibGUoKS0+ZmluZFdpdGhTdHJpbmcobmFt
ZS5pbXBsKCkpLmZpcnN0OwotICAgIGlmICghZW50cnkpCi0gICAgICAgIHJldHVybiBpbnZhbGlk
T2Zmc2V0OwotCi0gICAgYXR0cmlidXRlcyA9IGVudHJ5LT5hdHRyaWJ1dGVzOwotICAgIHJldHVy
biBlbnRyeS0+b2Zmc2V0OworICAgIHJldHVybiBlbnRyeSA/IGVudHJ5LT5vZmZzZXQgOiBpbnZh
bGlkT2Zmc2V0OwogfQogICAgIAogaW5saW5lIGJvb2wgU3RydWN0dXJlOjptYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0KQpJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gMTQ1OTMxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMjAgQEAKKzIwMTMtMDMtMTUgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5i
ZXJnQGFwcGxlLmNvbT4KKworICAgICAgICBSb2xsIG91dCByMTQ1ODM4CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTI0NTgKKworICAgICAgICBVbnJl
dmlld2VkLiBSZXF1ZXN0ZWQgYnkgRmlsaXAgUGl6bG8uCisKKyAgICAgICAgKiBmYXN0L2pzL3Jl
Z3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1sb29rdXAtaGl0LWlkZW50aWZpZXIuanM6IFJlbW92
ZWQuCisgICAgICAgICogZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctbG9va3Vw
LWhpdC5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3Rz
L3N0cmluZy1sb29rdXAtbWlzcy5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2pzL3JlZ3Jl
c3Mvc3RyaW5nLWxvb2t1cC1oaXQtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGZh
c3QvanMvcmVncmVzcy9zdHJpbmctbG9va3VwLWhpdC1pZGVudGlmaWVyLWV4cGVjdGVkLnR4dDog
UmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2pzL3JlZ3Jlc3Mvc3RyaW5nLWxvb2t1cC1oaXQtaWRl
bnRpZmllci5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvanMvcmVncmVzcy9zdHJpbmct
bG9va3VwLWhpdC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvanMvcmVncmVzcy9zdHJp
bmctbG9va3VwLW1pc3MtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvanMv
cmVncmVzcy9zdHJpbmctbG9va3VwLW1pc3MuaHRtbDogUmVtb3ZlZC4KKwogMjAxMy0wMy0xNSAg
Sm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtWOF0gQmluZGlu
ZzogSW1wbGVtZW50IEVuZm9yY2VSYW5nZSBJREwgQXR0cmlidXRlIGZvciBsb25nIGxvbmcgY29u
dmVyc2lvbnMKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zdHJpbmctbG9va3Vw
LWhpdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdy
ZXNzL3N0cmluZy1sb29rdXAtaGl0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTQ1OTMxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N0cmluZy1sb29rdXAtaGl0LWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMCwwIEBACi1KU1JlZ3Jlc3Mvc3RyaW5nLWxvb2t1
cC1oaXQKLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVBBU1Mgbm8gZXhjZXB0aW9u
IHRocm93bgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRF
Ci0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zdHJpbmctbG9va3VwLWhpdC1p
ZGVudGlmaWVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pz
L3JlZ3Jlc3Mvc3RyaW5nLWxvb2t1cC1oaXQtaWRlbnRpZmllci1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDE0NTkzMSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zdHJpbmctbG9va3Vw
LWhpdC1pZGVudGlmaWVyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMCww
IEBACi1KU1JlZ3Jlc3Mvc3RyaW5nLWxvb2t1cC1oaXQtaWRlbnRpZmllcgotCi1PbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyBubyBleGNlcHRpb24gdGhyb3duCi1QQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9qcy9yZWdyZXNzL3N0cmluZy1sb29rdXAtaGl0LWlkZW50aWZpZXIuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc3RyaW5nLWxvb2t1cC1oaXQt
aWRlbnRpZmllci5odG1sCShyZXZpc2lvbiAxNDU5MzEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pz
L3JlZ3Jlc3Mvc3RyaW5nLWxvb2t1cC1oaXQtaWRlbnRpZmllci5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDEyICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhU
TUwvL0VOIj4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdCBzcmM9InJlc291
cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3Rz
L3N0cmluZy1sb29rdXAtaGl0LWlkZW50aWZpZXIuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
InJlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N0cmluZy1sb29rdXAtaGl0Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3N0cmluZy1sb29rdXAtaGl0
Lmh0bWwJKHJldmlzaW9uIDE0NTkzMSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9z
dHJpbmctbG9va3VwLWhpdC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyICswLDAgQEAKLTwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KLTxodG1sPgotPGhl
YWQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N0cmluZy1sb29rdXAtaGl0Lmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9z
dHJpbmctbG9va3VwLW1pc3MtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvanMvcmVncmVzcy9zdHJpbmctbG9va3VwLW1pc3MtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAxNDU5MzEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc3RyaW5nLWxvb2t1cC1t
aXNzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMCwwIEBACi1KU1JlZ3Jl
c3Mvc3RyaW5nLWxvb2t1cC1taXNzCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1Q
QVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
LQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc3Ry
aW5nLWxvb2t1cC1taXNzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9y
ZWdyZXNzL3N0cmluZy1sb29rdXAtbWlzcy5odG1sCShyZXZpc2lvbiAxNDU5MzEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc3RyaW5nLWxvb2t1cC1taXNzLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMTIgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9E
VEQgSFRNTC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHQt
dGVzdHMvc3RyaW5nLWxvb2t1cC1taXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLWxvb2t1cC1oaXQt
aWRlbnRpZmllci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mv
c2NyaXB0LXRlc3RzL3N0cmluZy1sb29rdXAtaGl0LWlkZW50aWZpZXIuanMJKHJldmlzaW9uIDE0
NTkzMSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5n
LWxvb2t1cC1oaXQtaWRlbnRpZmllci5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwxNyArMCwwIEBA
Ci12YXIgcmVzdWx0ID0gKGZ1bmN0aW9uKCl7Ci0gICAgdmFyIG8gPSB7fTsKLSAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDEwMDsgKytpKQotICAgICAgICBvWyJhIiArIGldID0gNDI7Ci0gICAgdmFy
IHJlc3VsdCA9IFtdOwotICAgIHZhciBzdHJpbmdzID0gW107Ci0gICAgZm9yICh2YXIgaSA9IDA7
IGkgPCAxMDA7ICsraSkKLSAgICAgICAgc3RyaW5ncy5wdXNoKCJhIiArIGkpOwotICAgIGZvciAo
dmFyIGogPSAwOyBqIDwgMTAwMDsgKytqKSB7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
MTAwOyArK2kpCi0gICAgICAgICAgICByZXN1bHQucHVzaChvW3N0cmluZ3NbaV1dKTsKLSAgICB9
Ci0gICAgcmV0dXJuIHJlc3VsdC5sZW5ndGg7Ci19KSgpOwotCi1pZiAocmVzdWx0ICE9IDEwMDAw
MCkKLSAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1sb29rdXAtaGl0Lmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMv
c3RyaW5nLWxvb2t1cC1oaXQuanMJKHJldmlzaW9uIDE0NTkzMSkKKysrIExheW91dFRlc3RzL2Zh
c3QvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLWxvb2t1cC1oaXQuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMTQgKzAsMCBAQAotdmFyIHJlc3VsdCA9IChmdW5jdGlvbigpewotICAgIHZh
ciBvID0ge307Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkKLSAgICAgICAgb1si
YSIgKyBpXSA9IDQyOwotICAgIHZhciByZXN1bHQgPSBbXTsKLSAgICBmb3IgKHZhciBqID0gMDsg
aiA8IDEwMDA7ICsraikgewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgKytpKQot
ICAgICAgICAgICAgcmVzdWx0LnB1c2gob1siYSIgKyBpXSk7Ci0gICAgfQotICAgIHJldHVybiBy
ZXN1bHQubGVuZ3RoOwotfSkoKTsKLQotaWYgKHJlc3VsdCAhPSAxMDAwMDApCi0gICAgdGhyb3cg
IkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9q
cy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctbG9va3VwLW1pc3MuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9zdHJpbmctbG9va3Vw
LW1pc3MuanMJKHJldmlzaW9uIDE0NTkzMSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVz
cy9zY3JpcHQtdGVzdHMvc3RyaW5nLWxvb2t1cC1taXNzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDEyICswLDAgQEAKLXZhciByZXN1bHQgPSAoZnVuY3Rpb24oKXsKLSAgICB2YXIgbyA9IHt9Owot
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpCi0gICAgICAgIG9bImEiICsgaV0gPSA0
MjsKLSAgICB2YXIgcmVzdWx0ID0gW107Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7
ICsraSkKLSAgICAgICAgcmVzdWx0LnB1c2gob1siYSIgKyBpXSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dC5sZW5ndGg7Ci19KSgpOwotCi1pZiAocmVzdWx0ICE9IDEwMDAwMCkKLSAgICB0aHJvdyAiRXJy
b3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>