<?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>133558</bug_id>
          
          <creation_ts>2014-06-05 13:25:36 -0700</creation_ts>
          <short_desc>Eagerly reify DOM prototype attributes</short_desc>
          <delta_ts>2014-06-18 03:49:42 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kling</cc>
    
    <cc>rakuco</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1013637</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-06-05 13:25:36 -0700</bug_when>
    <thetext>This allows us to get rid of a lot of the additional overhead of pushing DOM attributes up into the prototype. By eagerly reifying the custom getters and setters into the actual JSObject we avoid having to override getOwnPropertySlot for all of the DOM prototypes, which is a lot of the overhead of doing property lookups on DOM wrappers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013641</commentid>
    <comment_count>1</comment_count>
      <attachid>232580</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-06-05 13:36:30 -0700</bug_when>
    <thetext>Created attachment 232580
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013642</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-05 13:39:19 -0700</bug_when>
    <thetext>Attachment 232580 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/CustomGetterSetter.h:72:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 32 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>1013643</commentid>
    <comment_count>3</comment_count>
      <attachid>232581</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-06-05 13:43:35 -0700</bug_when>
    <thetext>Created attachment 232581
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013644</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-05 13:46:26 -0700</bug_when>
    <thetext>Attachment 232581 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/CustomGetterSetter.h:72:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 32 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>1013646</commentid>
    <comment_count>5</comment_count>
      <attachid>232582</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-06-05 14:01:53 -0700</bug_when>
    <thetext>Created attachment 232582
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013647</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-05 14:03:29 -0700</bug_when>
    <thetext>Attachment 232582 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/CustomGetterSetter.h:72:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 36 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>1013652</commentid>
    <comment_count>7</comment_count>
      <attachid>232583</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-06-05 14:23:39 -0700</bug_when>
    <thetext>Created attachment 232583
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013653</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-05 14:24:35 -0700</bug_when>
    <thetext>Attachment 232583 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/CustomGetterSetter.h:72:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 37 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>1013707</commentid>
    <comment_count>9</comment_count>
      <attachid>232583</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-06-05 18:38:19 -0700</bug_when>
    <thetext>Comment on attachment 232583
Patch

You&apos;ll need to do run-bindings-tests verify that the diffs look sane, then run-bindings-tests --reset-results otherwise yay!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013966</commentid>
    <comment_count>10</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-06-07 10:04:45 -0700</bug_when>
    <thetext>This doesn&apos;t work for HTMLDListElement and HTMLOListElement. They crap out in InterfaceRequiresAttributesOnInstance because they have &quot;List&quot; in the name. If you change that line to something like this instead:

    return 1 if $interfaceName =~ /List$/;

..then this will go even faster, as the jslib test pages have a bunch of these elements. :)

Other than that, truly awesome stuff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014171</commentid>
    <comment_count>11</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-06-09 11:54:08 -0700</bug_when>
    <thetext>Committed r169703: &lt;http://trac.webkit.org/changeset/169703&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014177</commentid>
    <comment_count>12</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-06-09 12:31:59 -0700</bug_when>
    <thetext>Followup fixes in http://trac.webkit.org/changeset/169705 and http://trac.webkit.org/changeset/169707</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014252</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-06-09 15:31:29 -0700</bug_when>
    <thetext>js/dom/global-constructors-attributes-dedicated-worker.html started to crash every time in debug builds after this. Mark is working on a fix.

http://webkit-test-results.appspot.com/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=js%2Fdom%2Fglobal-constructors-attributes-dedicated-worker.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014255</commentid>
    <comment_count>14</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-06-09 15:39:04 -0700</bug_when>
    <thetext>The regression was actually a pre-existing bug that this change revealed, so I filed bug 133661 to track it separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016430</commentid>
    <comment_count>15</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2014-06-18 03:49:42 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Committed r169703: &lt;http://trac.webkit.org/changeset/169703&gt;

This caused a regression of ~50% on memory usage (JSHeap) on all performance tests: https://bugs.webkit.org/show_bug.cgi?id=133876</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232580</attachid>
            <date>2014-06-05 13:36:30 -0700</date>
            <delta_ts>2014-06-05 13:43:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133558-20140605133605.patch</filename>
            <type>text/plain</type>
            <size>58833</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY5NjIyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg1IEBA
CisyMDE0LTA2LTA1ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgRWFnZXJseSByZWlmeSBET00gcHJvdG90eXBlIGF0dHJpYnV0ZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzU1OAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWxsb3dzIHVzIHRv
IGdldCByaWQgb2YgYSBsb3Qgb2YgdGhlIGFkZGl0aW9uYWwgb3ZlcmhlYWQgb2YgcHVzaGluZyBE
T00gYXR0cmlidXRlcyB1cCBpbnRvIHRoZSBwcm90b3R5cGUuIAorICAgICAgICBCeSBlYWdlcmx5
IHJlaWZ5aW5nIHRoZSBjdXN0b20gZ2V0dGVycyBhbmQgc2V0dGVycyBpbnRvIHRoZSBhY3R1YWwg
SlNPYmplY3Qgd2UgYXZvaWQgaGF2aW5nIHRvIG92ZXJyaWRlIAorICAgICAgICBnZXRPd25Qcm9w
ZXJ0eVNsb3QgZm9yIGFsbCBvZiB0aGUgRE9NIHByb3RvdHlwZXMsIHdoaWNoIGlzIGEgbG90IG9m
IHRoZSBvdmVyaGVhZCBvZiBkb2luZyBwcm9wZXJ0eSBsb29rdXBzIG9uIAorICAgICAgICBET00g
d3JhcHBlcnMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBs
bGludC9MTEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6cGVyZm9ybUFz
c2VydGlvbnMpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAg
ICAgICAqIHJ1bnRpbWUvQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaDoKKyAgICAgICAgKEpT
Qzo6QmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXI6OkJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVy
KToKKyAgICAgICAgKiBydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpjYWxsQ3VzdG9tU2V0dGVyKToKKyAgICAgICAgKiBydW50aW1lL0N1c3RvbUdl
dHRlclNldHRlci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q3VzdG9tR2V0dGVyU2V0dGVyOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpDdXN0b21HZXR0ZXJTZXR0ZXI6OmdldHRlcik6CisgICAg
ICAgIChKU0M6OkN1c3RvbUdldHRlclNldHRlcjo6c2V0dGVyKToKKyAgICAgICAgKEpTQzo6Q3Vz
dG9tR2V0dGVyU2V0dGVyOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpDdXN0b21H
ZXR0ZXJTZXR0ZXI6OkN1c3RvbUdldHRlclNldHRlcik6CisgICAgICAgICogcnVudGltZS9KU0NK
U1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1
ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6aXNDdXN0b21HZXR0ZXJTZXR0ZXIp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGxJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNDdXN0b21HZXR0ZXJTZXR0ZXIpOgor
ICAgICAgICAoSlNDOjpKU0NlbGw6OmNhblVzZUZhc3RHZXRPd25Qcm9wZXJ0eSk6CisgICAgICAg
ICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6aXNI
b3N0T3JCdWlsdGluRnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9u
Ojppc0J1aWx0aW5GdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0Z1bmN0
aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oOiBJbmxpbmVkIHNv
bWUgcmFuZG9tIGZ1bmN0aW9ucyB0aGF0IGFwcGVhcmVkIGhvdCBkdXJpbmcgcHJvZmlsaW5nLgor
ICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjppc0J1aWx0aW5GdW5jdGlvbik6CisgICAgICAgIChK
U0M6OkpTRnVuY3Rpb246OmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcik6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpmaWxsR2V0dGVyUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmZpbGxDdXN0b21HZXR0ZXJQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlTbG90U2xvdyk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9K
U09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aGFzQ3VzdG9tR2V0dGVyU2V0dGVy
UHJvcGVydGllcyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0VG9EaWN0aW9uYXJ5
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmlubGluZUdldE93blByb3BlcnR5U2xvdCk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RTbG93KTogSW5saW5lZCBi
ZWNhdXNlIGl0IGxvb2tlZCBob3QgZHVyaW5nIHByb2ZpbGluZy4KKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OnB1dE93bkRhdGFQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRE
aXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9Mb29r
dXAuaDoKKyAgICAgICAgKEpTQzo6cmVpZnlTdGF0aWNQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBy
dW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eURlc2Ny
aXB0b3I6OlByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OlN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
Om5leHRPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OnN1Z2dlc3RlZE5ld091dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Z2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50
aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Omhhc0N1c3RvbUdldHRl
clNldHRlclByb3BlcnRpZXMpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnNldEhhc0N1c3Rv
bUdldHRlclNldHRlclByb3BlcnRpZXMpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmdldCk6IElubGluZWQgZHVlIHRvIGhv
dG5lc3MuCisgICAgICAgIChKU0M6Om5leHRPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkpOiBJbmxp
bmVkIGR1ZSB0byBob3RuZXNzLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnN1Z2dlc3RlZE5l
d091dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSk6IElubGluZWQgZHVlIHRvIGhvdG5lc3MuCisgICAg
ICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICog
cnVudGltZS9WTS5oOgorICAgICAgICAqIHJ1bnRpbWUvV3JpdGVCYXJyaWVyLmg6CisgICAgICAg
IChKU0M6OldyaXRlQmFycmllckJhc2U8VW5rbm93bj46OmlzQ3VzdG9tR2V0dGVyU2V0dGVyKToK
KwogMjAxNC0wNi0wNCAgVGltb3RoeSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+
CiAKICAgICAgICAgaU9TIERlYnVnIGJ1aWxkIGZpeApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTY5NTg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zNjYsNiArMzY2LDcgQEAgc2V0KEph
dmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0NvbnNvbGVDbGllbnQuY3BwCiAgICAg
cnVudGltZS9Db25zb2xlUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvQ29uc3RydWN0RGF0YS5j
cHAKKyAgICBydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5jcHAKICAgICBydW50aW1lL0RhdGFW
aWV3LmNwcAogICAgIHJ1bnRpbWUvRGF0YVZpZXcuaAogICAgIHJ1bnRpbWUvRGF0ZUNvbnN0cnVj
dG9yLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCShyZXZp
c2lvbiAxNjk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02MTIsNiArNjEy
LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcQ29uc29sZUNsaWVudC5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXENvbnNvbGVQcm90b3R5
cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxDb25zdHJ1Y3RE
YXRhLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcQ3VzdG9tR2V0
dGVyU2V0dGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRGF0
YVZpZXcuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxEYXRlQ29u
c3RydWN0b3IuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxEYXRl
Q29udmVyc2lvbi5jcHAiIC8+CkBAIC0xMjY0LDYgKzEyNjUsNyBAQAogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxDb25zb2xlVHlwZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcQ29uc3RhbnRNb2RlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXENvbnN0cnVjdERhdGEuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcQ3VzdG9tR2V0dGVyU2V0dGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXERhdGFWaWV3LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXERhdGVDb25zdHJ1Y3Rvci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxEYXRlQ29udmVyc2lvbi5oIiAvPgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0
ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMTY5NTg5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC01NDYsNiArNTQ2LDkgQEAK
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcQ29uc3RydWN0RGF0YS5jcHAiPgog
ICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEN1c3RvbUdldHRlclNldHRlci5jcHAiPgorICAg
ICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXERhdGVDb25zdHJ1Y3Rvci5jcHAiPgogICAgICAgPEZp
bHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0yMTg5LDYgKzIxOTIs
OSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxDb25zdHJ1Y3REYXRhLmgi
PgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEN1c3RvbUdldHRlclNldHRlci5oIj4KKyAg
ICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxEYXRlQ29uc3RydWN0b3IuaCI+CiAgICAgICA8Rmls
dGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNzEyLDcgKzcxMiw3IEBACiAJCTE0NzRDMzNCMTZBQTJEOTUwMDYyRjAxRCAvKiBQcm90
b3R5cGVNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDE0RDg0NEEzMTZBQTJDNzAwMEE2NUFGMCAvKiBQcm90b3R5cGVNYXAuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDc0QzMzQzE2QUEyRDlCMDA2
MkYwMUQgLyogUHJvdG90eXBlTWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDE0RDg0NEEyMTZBQTJDNzAwMEE2NUFGMCAvKiBQcm90b3R5cGVNYXAu
Y3BwICovOyB9OwogCQkxNDc4Mjk3QjEzNzlFOEE4MDBBN0MyQTMgLyogSGFuZGxlVHlwZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NkZBNUE4MTM3
OEY2QjAwMDM2MjdBMyAvKiBIYW5kbGVUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTE0N0I4M0FDMEU2REI4QzkwMDQ3NzVBNCAvKiBCYXRj
aGVkVHJhbnNpdGlvbk9wdGltaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTQ3QjgzQUEwRTZEQjhDOTAwNDc3NUE0IC8qIEJhdGNoZWRUcmFuc2l0
aW9uT3B0aW1pemVyLmggKi87IH07CisJCTE0N0I4M0FDMEU2REI4QzkwMDQ3NzVBNCAvKiBCYXRj
aGVkVHJhbnNpdGlvbk9wdGltaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTQ3QjgzQUEwRTZEQjhDOTAwNDc3NUE0IC8qIEJhdGNoZWRUcmFuc2l0
aW9uT3B0aW1pemVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMTQ3Qjg0NjMwRTZERTZCMTAwNDc3NUE0IC8qIFB1dFByb3BlcnR5U2xvdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ3Qjg0NjIwRTZE
RTZCMTAwNDc3NUE0IC8qIFB1dFByb3BlcnR5U2xvdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0N0YzOUJEMTA3RUMzNzYwMDQyN0E0OCAvKiBB
cmdMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDRjYwNTExMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNwcCAqLzsgfTsKIAkJMTQ3RjM5
QkUxMDdFQzM3NjAwNDI3QTQ4IC8qIEFyZ3VtZW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI1N0RFNTBFMUY1MUM1MDAxNkI2QzkgLyogQXJn
dW1lbnRzLmNwcCAqLzsgfTsKQEAgLTc5MCw2ICs3OTAsOCBAQAogCQkxQ0FBOUEyMzE4RjRBMjIw
MDAwQTM2OUQgLyogSlNHbG9iYWxPYmplY3RQcm9maWxlckFnZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0FBOUEyMTE4RjRBMjIwMDAwQTM2OUQg
LyogSlNHbG9iYWxPYmplY3RQcm9maWxlckFnZW50LmggKi87IH07CiAJCTI2MDBCNUE2MTUyQkFB
QTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjAwQjVBNDE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJp
bmdKb2luZXIuY3BwICovOyB9OwogCQkyNjAwQjVBNzE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJp
bmdKb2luZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDI2MDBCNUE1MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5oICovOyB9OworCQky
QTExMTI0NTE5MkZDRTc5MDA1RUUxOEQgLyogQ3VzdG9tR2V0dGVyU2V0dGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBMTExMjQzMTkyRkNFNzkw
MDVFRTE4RCAvKiBDdXN0b21HZXR0ZXJTZXR0ZXIuY3BwICovOyB9OworCQkyQTExMTI0NjE5MkZD
RTc5MDA1RUUxOEQgLyogQ3VzdG9tR2V0dGVyU2V0dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQTExMTI0NDE5MkZDRTc5MDA1RUUxOEQgLyogQ3Vz
dG9tR2V0dGVyU2V0dGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMkEyODI1RDAxODM0MUYyRDAwODdGQkE5IC8qIERlbGF5ZWRSZWxlYXNlU2Nv
cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBMjgy
NUNGMTgzNDFGMkQwMDg3RkJBOSAvKiBEZWxheWVkUmVsZWFzZVNjb3BlLmggKi87IH07CiAJCTJB
NDhEMTkxMTc3MjM2NUIwMEM2NUE1RiAvKiBBUElDYWxsYmFja0Z1bmN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjExQjU3NDE3NkEyMjREMDAw
RTJBMjMgLyogQVBJQ2FsbGJhY2tGdW5jdGlvbi5oICovOyB9OwogCQkyQTRCQjdGMzE4QTQxMTc5
MDA4QTBGQ0QgLyogSlNNYW5hZ2VkVmFsdWVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE0QkI3RjIxOEE0MTE3OTAwOEEwRkNEIC8qIEpT
TWFuYWdlZFZhbHVlSW50ZXJuYWwuaCAqLzsgfTsKQEAgLTI1NjEsNiArMjU2Myw4IEBACiAJCTFD
QUE5QTIxMThGNEEyMjAwMDBBMzY5RCAvKiBKU0dsb2JhbE9iamVjdFByb2ZpbGVyQWdlbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHbG9iYWxPYmplY3RQcm9maWxlckFn
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2MDBCNUE0MTUyQkFBQTcwMDkx
RUU1RiAvKiBKU1N0cmluZ0pvaW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1N0cmluZ0pvaW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTI2MDBCNUE1MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0cmluZ0pvaW5lci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkyQTExMTI0MzE5MkZDRTc5MDA1RUUxOEQgLyogQ3VzdG9tR2V0dGVyU2V0
dGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN1c3RvbUdldHRl
clNldHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJBMTExMjQ0MTkyRkNF
NzkwMDVFRTE4RCAvKiBDdXN0b21HZXR0ZXJTZXR0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ3VzdG9tR2V0dGVyU2V0dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJBMjgyNUNGMTgzNDFGMkQwMDg3RkJBOSAvKiBEZWxheWVkUmVsZWFzZVNjb3BlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlbGF5ZWRSZWxlYXNlU2NvcGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkEzNDNGNzQxOEExNzQ4QjAwMzlCMDg1IC8q
IEdDU2VnbWVudGVkQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR0NT
ZWdtZW50ZWRBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQTM0M0Y3NzE4
QTE3NDlEMDAzOUIwODUgLyogR0NTZWdtZW50ZWRBcnJheUlubGluZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR0NTZWdtZW50ZWRBcnJheUlubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ1NTYsNiArNDU2MCw4IEBACiAJCQkJMTQyMEJFN0ExMEFB
NkREQjAwRjQ1NUQyIC8qIFdlYWtSYW5kb20uaCAqLywKIAkJCQlBN0RDQjc3OTEyRTNEOTA1MDA5
MTE5NDAgLyogV3JpdGVCYXJyaWVyLmggKi8sCiAJCQkJQzJCNkQ3NTIxOEEzMzc5MzAwNEE5MzAx
IC8qIFdyaXRlQmFycmllcklubGluZXMuaCAqLywKKwkJCQkyQTExMTI0MzE5MkZDRTc5MDA1RUUx
OEQgLyogQ3VzdG9tR2V0dGVyU2V0dGVyLmNwcCAqLywKKwkJCQkyQTExMTI0NDE5MkZDRTc5MDA1
RUUxOEQgLyogQ3VzdG9tR2V0dGVyU2V0dGVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJ1bnRp
bWU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNTQ5NSw2ICs1NTAxLDggQEAKIAkJ
CQkwRjZCMUNCOTE4NjEyNDRDMDA4NDVEOTcgLyogQXJpdHlDaGVja01vZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAvKiBBUk02NEFzc2VtYmxlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODZEM0IyQzQxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTQ3QjgzQUMwRTZEQjhDOTAwNDc3NUE0IC8qIEJhdGNo
ZWRUcmFuc2l0aW9uT3B0aW1pemVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkyQTExMTI0NjE5MkZD
RTc5MDA1RUUxOEQgLyogQ3VzdG9tR2V0dGVyU2V0dGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NTg0MDMyMDE4QkZGQkUxMDA1QTA4MTEgLyogSW5zcGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTJBQUJDREU3MThFRjI5NDIwMDAwMjA5NiAvKiBHQ0xvZ2dpbmcuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZFNTI0OEY5MTkxNDQyRDkwMEI3RkRFNCAvKiBWYXJpYWJsZVdhdGNocG9pbnRT
ZXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTU1MjUsNyArNTUzMyw2IEBACiAJCQkJODZE
M0IyQzUxMDE1NkJERTAwMjg2NUU3IC8qIEFzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTQxMTdFQTlGNTkwMEFCQjIxNyAvKiBBc3NlbWJs
eUhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3ODRBMjYxMTFEMTY2MjIwMDU3NzZBQyAv
KiBBU1RCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQkxNDdCODNBQzBFNkRCOEM5MDA0Nzc1
QTQgLyogQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2
NjczOUQyMTNCRkRFNzEwMDIzRDg3QyAvKiBCaWdJbnRlZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxNDgxNkUxQzE1NENDNTZDMDBCODA1NEMgLyogQmxvY2tBbGxvY2F0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMThDM0VDMEUxNkY1Q0QwMEIzNDQ2MCAvKiBCb29sZWFuT2JqZWN0LmggaW4g
SGVhZGVycyAqLywKQEAgLTY5NjYsNiArNjk3Myw3IEBACiAJCQkJMEZFRkM5QUExNjgxQTNCMzAw
NTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEYyMzVCRUQxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkZGQzk1QjE0RUY5MEFEMDBDNzI1MzIgLyogREZHUGhhc2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMkExMTEyNDUxOTJGQ0U3OTAwNUVFMThEIC8qIEN1c3Rv
bUdldHRlclNldHRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzhBOTc3QTE3OTczOEI4MDA5
REY3NDQgLyogREZHUGxhbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkJFMEY3NDE2QzFEQjA5
MDA4MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRkZDOTVEMTRFRjkwQjMwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludERhdGEuY3BwCShyZXZpc2lvbiAxNjk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDggKzEzNCw4
IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQogICAgIEFTU0VSVChtYXhG
cmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCA9PSA0MCk7CiAjZW5kaWYKICAgICBBU1NFUlQoU3Ry
aW5nVHlwZSA9PSA1KTsKLSAgICBBU1NFUlQoT2JqZWN0VHlwZSA9PSAxNyk7Ci0gICAgQVNTRVJU
KEZpbmFsT2JqZWN0VHlwZSA9PSAxOCk7CisgICAgQVNTRVJUKE9iamVjdFR5cGUgPT0gMTgpOwor
ICAgIEFTU0VSVChGaW5hbE9iamVjdFR5cGUgPT0gMTkpOwogICAgIEFTU0VSVChNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkID09IDEpOwogICAgIEFTU0VSVChJbXBsZW1lbnRzSGFzSW5zdGFuY2UgPT0g
Mik7CiAgICAgQVNTRVJUKEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgPT0gOCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCShyZXZpc2lvbiAxNjk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE0OSw4ICsxNDksOCBA
QCBjb25zdCBTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgPSAzMAogCiAjIFR5cGUgY29uc3RhbnRz
LgogY29uc3QgU3RyaW5nVHlwZSA9IDUKLWNvbnN0IE9iamVjdFR5cGUgPSAxNwotY29uc3QgRmlu
YWxPYmplY3RUeXBlID0gMTgKK2NvbnN0IE9iamVjdFR5cGUgPSAxOAorY29uc3QgRmluYWxPYmpl
Y3RUeXBlID0gMTkKIAogIyBUeXBlIGZsYWdzIGNvbnN0YW50cy4KIGNvbnN0IE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQgPSAxCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CYXRj
aGVkVHJhbnNpdGlvbk9wdGltaXplci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0JhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmgJKHJldmlzaW9uIDE2OTU4
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JhdGNoZWRUcmFuc2l0aW9uT3B0
aW1pemVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDggQEAgcHVibGljOgogICAgICAg
ICA6IG1fdm0oJnZtKQogICAgICAgICAsIG1fb2JqZWN0KG9iamVjdCkKICAgICB7CisgICAgICAg
IGlmICghbV9vYmplY3QtPnN0cnVjdHVyZSh2bSktPmlzRGljdGlvbmFyeSgpKQorICAgICAgICAg
ICAgbV9vYmplY3QtPmNvbnZlcnRUb0RpY3Rpb25hcnkodm0pOwogICAgIH0KIAogICAgIH5CYXRj
aGVkVHJhbnNpdGlvbk9wdGltaXplcigpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQ3VzdG9tR2V0dGVyU2V0dGVyLmgiCisKKyNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK25hbWVzcGFjZSBK
U0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoQ3VzdG9tR2V0
dGVyU2V0dGVyKTsKKworY29uc3QgQ2xhc3NJbmZvIEN1c3RvbUdldHRlclNldHRlcjo6c19pbmZv
ID0geyAiQ3VzdG9tR2V0dGVyU2V0dGVyIiwgMCwgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShD
dXN0b21HZXR0ZXJTZXR0ZXIpIH07CisKK3ZvaWQgY2FsbEN1c3RvbVNldHRlcihFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgY3VzdG9tR2V0dGVyU2V0dGVyLCBKU09iamVjdCogYmFzZSwgSlNWYWx1
ZSB0aGlzVmFsdWUsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpD
dXN0b21TZXR0ZXIgc2V0dGVyID0ganNDYXN0PEN1c3RvbUdldHRlclNldHRlcio+KGN1c3RvbUdl
dHRlclNldHRlciktPnNldHRlcigpOworICAgIGlmICghc2V0dGVyKQorICAgICAgICByZXR1cm47
CisgICAgc2V0dGVyKGV4ZWMsIGJhc2UsIEpTVmFsdWU6OmVuY29kZSh0aGlzVmFsdWUpLCBKU1Zh
bHVlOjplbmNvZGUodmFsdWUpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0N1c3RvbUdldHRl
clNldHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEN1c3RvbUdldHRlclNldHRlcl9oCisjZGVmaW5lIEN1c3RvbUdldHRlclNldHRlcl9o
CisKKyNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKKyNpbmNs
dWRlICJQdXRQcm9wZXJ0eVNsb3QuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIEN1c3RvbUdldHRlclNldHRlciA6IHB1YmxpYyBKU0NlbGwgewor
cHVibGljOgorICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CisKKyAgICB0eXBlZGVmIFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jIEN1c3RvbUdldHRlcjsKKyAgICB0eXBlZGVmIFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jIEN1c3RvbVNldHRlcjsKKworICAgIHN0YXRpYyBDdXN0b21HZXR0
ZXJTZXR0ZXIqIGNyZWF0ZShWTSYgdm0sIEN1c3RvbUdldHRlciBjdXN0b21HZXR0ZXIsIEN1c3Rv
bVNldHRlciBjdXN0b21TZXR0ZXIpCisgICAgeworICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXIq
IGN1c3RvbUdldHRlclNldHRlciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEN1c3RvbUdl
dHRlclNldHRlcj4odm0uaGVhcCkpIEN1c3RvbUdldHRlclNldHRlcih2bSwgY3VzdG9tR2V0dGVy
LCBjdXN0b21TZXR0ZXIpOworICAgICAgICBjdXN0b21HZXR0ZXJTZXR0ZXItPmZpbmlzaENyZWF0
aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIGN1c3RvbUdldHRlclNldHRlcjsKKyAgICB9CisKKyAg
ICBDdXN0b21HZXR0ZXJTZXR0ZXI6OkN1c3RvbUdldHRlciBnZXR0ZXIoKSBjb25zdCB7IHJldHVy
biBtX2dldHRlcjsgfQorICAgIEN1c3RvbUdldHRlclNldHRlcjo6Q3VzdG9tU2V0dGVyIHNldHRl
cigpIGNvbnN0IHsgcmV0dXJuIG1fc2V0dGVyOyB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEN1c3RvbUdldHRlclNldHRlclR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisgICAgICAgIAorICAgIERFQ0xB
UkVfRVhQT1JUX0lORk87CisKK3ByaXZhdGU6CisgICAgQ3VzdG9tR2V0dGVyU2V0dGVyKFZNJiB2
bSwgQ3VzdG9tR2V0dGVyIGdldHRlciwgQ3VzdG9tU2V0dGVyIHNldHRlcikKKyAgICAgICAgOiBK
U0NlbGwodm0sIHZtLmN1c3RvbUdldHRlclNldHRlclN0cnVjdHVyZS5nZXQoKSkKKyAgICAgICAg
LCBtX2dldHRlcihnZXR0ZXIpCisgICAgICAgICwgbV9zZXR0ZXIoc2V0dGVyKQorICAgIHsKKyAg
ICB9CisKKyAgICBDdXN0b21HZXR0ZXIgbV9nZXR0ZXI7CisgICAgQ3VzdG9tU2V0dGVyIG1fc2V0
dGVyOworfTsKKwordm9pZCBjYWxsQ3VzdG9tU2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUgY3Vz
dG9tR2V0dGVyU2V0dGVyLCBKU09iamVjdCogYmFzZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTVmFs
dWUgdmFsdWUpOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEN1c3RvbUdldHRl
clNldHRlcl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlLmNwcAkocmV2aXNpb24gMTY5NTg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2lu
Y2x1ZGUgIkJvb2xlYW5Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkJvb2xlYW5Qcm90b3R5cGUu
aCIKKyNpbmNsdWRlICJDdXN0b21HZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJFcnJvci5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIK
QEAgLTE1NCw2ICsxNTUsMTEgQEAgdm9pZCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3Rh
dGUqIAogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAorICAgICAgICAg
ICAgaWYgKGdzLmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkpIHsKKyAgICAgICAgICAgICAgICBjYWxs
Q3VzdG9tU2V0dGVyKGV4ZWMsIGdzLCBvYmosIHNsb3QudGhpc1ZhbHVlKCksIHZhbHVlKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIC8vIElm
IHRoZXJlJ3MgYW4gZXhpc3RpbmcgcHJvcGVydHkgb24gdGhlIG9iamVjdCBvciBvbmUgb2YgaXRz
IAogICAgICAgICAgICAgLy8gcHJvdG90eXBlcyBpdCBzaG91bGQgYmUgcmVwbGFjZWQsIHNvIGJy
ZWFrIGhlcmUuCiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHJldmlzaW9uIDE2OTU4OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjE0LDYg
KzIxNCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzU3RyaW5nKCkgY29uc3Q7CiAgICAgYm9vbCBp
c1ByaW1pdGl2ZSgpIGNvbnN0OwogICAgIGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdDsKKyAg
ICBib29sIGlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkgY29uc3Q7CiAgICAgYm9vbCBpc09iamVjdCgp
IGNvbnN0OwogICAgIGJvb2wgaW5oZXJpdHMoY29uc3QgQ2xhc3NJbmZvKikgY29uc3Q7CiAgICAg
ICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGlu
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlSW5saW5lcy5oCShyZXZpc2lvbiAxNjk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NTAsNiArNTUw
LDExIEBAIGlubGluZSBib29sIEpTVmFsdWU6OmlzR2V0dGVyU2V0dGVyKCkgY28KICAgICByZXR1
cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzR2V0dGVyU2V0dGVyKCk7CiB9CiAKK2lubGluZSBi
b29sIEpTVmFsdWU6OmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
aXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCk7Cit9CisKIGlubGlu
ZSBib29sIEpTVmFsdWU6OmlzT2JqZWN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gaXNDZWxsKCkg
JiYgYXNDZWxsKCktPmlzT2JqZWN0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGwuaAkocmV2aXNpb24gMTY5NTg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTkwLDYgKzkwLDcgQEAgcHVibGljOgog
ICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKICAgICBib29sIGlzT2JqZWN0KCkgY29uc3Q7CiAg
ICAgYm9vbCBpc0dldHRlclNldHRlcigpIGNvbnN0OworICAgIGJvb2wgaXNDdXN0b21HZXR0ZXJT
ZXR0ZXIoKSBjb25zdDsKICAgICBib29sIGlzUHJveHkoKSBjb25zdDsKICAgICBib29sIGluaGVy
aXRzKGNvbnN0IENsYXNzSW5mbyopIGNvbnN0OwogICAgIGJvb2wgaXNBUElWYWx1ZVdyYXBwZXIo
KSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGlu
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJ
bmxpbmVzLmgJKHJldmlzaW9uIDE2OTU4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDYgKzE1NiwxMSBAQCBp
bmxpbmUgYm9vbCBKU0NlbGw6OmlzR2V0dGVyU2V0dGVyKCkgY29uCiAgICAgcmV0dXJuIG1fdHlw
ZSA9PSBHZXR0ZXJTZXR0ZXJUeXBlOwogfQogCitpbmxpbmUgYm9vbCBKU0NlbGw6OmlzQ3VzdG9t
R2V0dGVyU2V0dGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90eXBlID09IEN1c3RvbUdldHRl
clNldHRlclR5cGU7Cit9CisKIGlubGluZSBib29sIEpTQ2VsbDo6aXNQcm94eSgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fdHlwZSA9PSBJbXB1cmVQcm94eVR5cGUgfHwgbV90eXBlID09IFB1cmVG
b3J3YXJkaW5nUHJveHlUeXBlOwpAQCAtMjIxLDcgKzIyNiw5IEBAIEFMV0FZU19JTkxJTkUgSlNW
YWx1ZSBKU0NlbGw6OmZhc3RHZXRPd24KIAogaW5saW5lIGJvb2wgSlNDZWxsOjpjYW5Vc2VGYXN0
R2V0T3duUHJvcGVydHkoY29uc3QgU3RydWN0dXJlJiBzdHJ1Y3R1cmUpCiB7Ci0gICAgcmV0dXJu
ICFzdHJ1Y3R1cmUuaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpICYmICFzdHJ1Y3R1cmUudHlw
ZUluZm8oKS5vdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoKTsKKyAgICByZXR1cm4gIXN0cnVj
dHVyZS5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgCisgICAgICAgICYmICFzdHJ1Y3R1cmUu
aGFzQ3VzdG9tR2V0dGVyU2V0dGVyUHJvcGVydGllcygpCisgICAgICAgICYmICFzdHJ1Y3R1cmUu
dHlwZUluZm8oKS5vdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoKTsKIH0KIAogaW5saW5lIGJv
b2wgSlNDZWxsOjp0b0Jvb2xlYW4oRXhlY1N0YXRlKiBleGVjKSBjb25zdApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDE2OTU4
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzQsMTYgKzE3NCw2IEBAIGNvbnN0IFNvdXJjZUNvZGUqIEpTRnVuY3Rp
b246OnNvdXJjZUNvZGUKICAgICByZXR1cm4gJmpzRXhlY3V0YWJsZSgpLT5zb3VyY2UoKTsKIH0K
ICAgICAKLWJvb2wgSlNGdW5jdGlvbjo6aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSBjb25zdAot
ewotICAgIHJldHVybiBpc0hvc3RGdW5jdGlvbigpIHx8IGlzQnVpbHRpbkZ1bmN0aW9uKCk7Ci19
Ci0KLWJvb2wgSlNGdW5jdGlvbjo6aXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdAotewotICAgIHJl
dHVybiAhaXNIb3N0RnVuY3Rpb24oKSAmJiBqc0V4ZWN1dGFibGUoKS0+aXNCdWlsdGluRnVuY3Rp
b24oKTsKLX0KLQogdm9pZCBKU0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU0Z1bmN0aW9uKj4oY2VsbCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZpc2lvbiAxNjk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw4ICsxNDgs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX2FsbG9jYXRpb25Qcm9m
aWxlV2F0Y2hwb2ludDsKICAgICAgICAgfQogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJv
b2wgaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSBjb25zdDsKLSAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0OworICAgICAgICBib29sIGlzSG9z
dE9yQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rp
b24oKSBjb25zdDsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0hvc3RGdW5jdGlv
bk5vbklubGluZSgpIGNvbnN0OwogCiAgICAgcHJvdGVjdGVkOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCShyZXZpc2lvbiAx
Njk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5l
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSwxNiBAQCBpbmxpbmUgYm9vbCBKU0Z1bmN0
aW9uOjppc0hvc3RGdW5jdGlvbigpCiAgICAgcmV0dXJuIG1fZXhlY3V0YWJsZS0+aXNIb3N0RnVu
Y3Rpb24oKTsKIH0KIAoraW5saW5lIGJvb2wgSlNGdW5jdGlvbjo6aXNCdWlsdGluRnVuY3Rpb24o
KSBjb25zdAoreworICAgIHJldHVybiAhaXNIb3N0RnVuY3Rpb24oKSAmJiBqc0V4ZWN1dGFibGUo
KS0+aXNCdWlsdGluRnVuY3Rpb24oKTsKK30KKworaW5saW5lIGJvb2wgSlNGdW5jdGlvbjo6aXNI
b3N0T3JCdWlsdGluRnVuY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBpc0hvc3RGdW5jdGlv
bigpIHx8IGlzQnVpbHRpbkZ1bmN0aW9uKCk7Cit9CisKIGlubGluZSBOYXRpdmVGdW5jdGlvbiBK
U0Z1bmN0aW9uOjpuYXRpdmVGdW5jdGlvbigpCiB7CiAgICAgQVNTRVJUKGlzSG9zdEZ1bmN0aW9u
Tm9uSW5saW5lKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcAkocmV2aXNpb24gMTY5NTg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVk
ZSAiQ29waWVkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ29weVZpc2l0b3IuaCIKICNpbmNs
dWRlICJDb3B5VmlzaXRvcklubGluZXMuaCIKKyNpbmNsdWRlICJDdXN0b21HZXR0ZXJTZXR0ZXIu
aCIKICNpbmNsdWRlICJEYXRlUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiRXJyb3JDb25zdHJ1Y3Rv
ci5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKQEAgLTM4Nyw4ICszODgsMTMgQEAgdm9pZCBK
U09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YQogICAgICAgICAgICAgICAgIGlmICgh
dGhpc09iamVjdC0+c3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQogICAgICAgICAgICAgICAg
ICAgICBzbG90LnNldENhY2hlYWJsZVNldHRlcihvYmosIG9mZnNldCk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgQVNTRVJUKCEo
YXR0cmlidXRlcyAmIEFjY2Vzc29yKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
Z3MuaXNDdXN0b21HZXR0ZXJTZXR0ZXIoKSkgeworICAgICAgICAgICAgICAgIGNhbGxDdXN0b21T
ZXR0ZXIoZXhlYywgZ3MsIG9iaiwgc2xvdC50aGlzVmFsdWUoKSwgdmFsdWUpOworICAgICAgICAg
ICAgICAgIHNsb3Quc2V0Q3VzdG9tUHJvcGVydHkob2JqLCBqc0Nhc3Q8Q3VzdG9tR2V0dGVyU2V0
dGVyKj4oZ3MuYXNDZWxsKCkpLT5zZXR0ZXIoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUKCEoYXR0cmlidXRlcyAmIEFjY2Vzc29y
KSk7CiAKICAgICAgICAgICAgIC8vIElmIHRoZXJlJ3MgYW4gZXhpc3RpbmcgcHJvcGVydHkgb24g
dGhlIG9iamVjdCBvciBvbmUgb2YgaXRzIAogICAgICAgICAgICAgLy8gcHJvdG90eXBlcyBpdCBz
aG91bGQgYmUgcmVwbGFjZWQsIHNvIGJyZWFrIGhlcmUuCkBAIC0xMjI0LDYgKzEyMzAsMjEgQEAg
dm9pZCBKU09iamVjdDo6cHV0RGlyZWN0QWNjZXNzb3IoRXhlY1N0YQogICAgIHB1dERpcmVjdE5v
bkluZGV4QWNjZXNzb3IoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRl
cyk7CiB9CiAKK3ZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKFZNJiB2bSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmli
dXRlcykKK3sKKyAgICBBU1NFUlQocHJvcGVydHlOYW1lLmFzSW5kZXgoKSA9PSBQcm9wZXJ0eU5h
bWU6Ok5vdEFuSW5kZXgpOworCisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhpcyk7CisgICAg
cHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5Pih2bSwgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2xvdCwgZ2V0Q2FsbGFibGVPYmplY3QodmFsdWUpKTsK
KworICAgIEFTU0VSVChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5
KTsKKworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKKyAg
ICBpZiAoYXR0cmlidXRlcyAmIFJlYWRPbmx5KQorICAgICAgICBzdHJ1Y3R1cmUtPnNldENvbnRh
aW5zUmVhZE9ubHlQcm9wZXJ0aWVzKCk7CisgICAgc3RydWN0dXJlLT5zZXRIYXNDdXN0b21HZXR0
ZXJTZXR0ZXJQcm9wZXJ0aWVzKCk7Cit9CisKIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdE5vbklu
ZGV4QWNjZXNzb3IoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRo
aXMpOwpAQCAtMTY2NiwxMCArMTY4NywxOCBAQCBORVZFUl9JTkxJTkUgdm9pZCBKU09iamVjdDo6
ZmlsbEdldHRlclByCiAgICAgICAgIHNsb3Quc2V0R2V0dGVyU2xvdCh0aGlzLCBhdHRyaWJ1dGVz
LCBqc0Nhc3Q8R2V0dGVyU2V0dGVyKj4oZ2V0dGVyU2V0dGVyKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0KICAgICBzbG90LnNldENhY2hlYWJsZUdldHRlclNsb3QodGhpcywgYXR0cmlidXRl
cywganNDYXN0PEdldHRlclNldHRlcio+KGdldHRlclNldHRlciksIG9mZnNldCk7CiB9CiAKK05F
VkVSX0lOTElORSB2b2lkIEpTT2JqZWN0OjpmaWxsQ3VzdG9tR2V0dGVyUHJvcGVydHlTbG90KFBy
b3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBjdXN0b21HZXR0ZXJTZXR0ZXIsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMpCit7CisgICAgaWYgKHN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkgeworICAg
ICAgICBzbG90LnNldEN1c3RvbSh0aGlzLCBhdHRyaWJ1dGVzLCBqc0Nhc3Q8Q3VzdG9tR2V0dGVy
U2V0dGVyKj4oY3VzdG9tR2V0dGVyU2V0dGVyKS0+Z2V0dGVyKCkpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIHNsb3Quc2V0Q2FjaGVhYmxlQ3VzdG9tKHRoaXMsIGF0dHJpYnV0ZXMsIGpz
Q2FzdDxDdXN0b21HZXR0ZXJTZXR0ZXIqPihjdXN0b21HZXR0ZXJTZXR0ZXIpLT5nZXR0ZXIoKSk7
Cit9CisKIHZvaWQgSlNPYmplY3Q6OnB1dEluZGV4ZWREZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhl
YywgU3BhcnNlQXJyYXlFbnRyeSogZW50cnlJbk1hcCwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yLCBQcm9wZXJ0eURlc2NyaXB0b3ImIG9sZERlc2NyaXB0b3IpCiB7CiAgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKQEAgLTI2NjAsMTQgKzI2ODksNiBAQCBib29sIEpTT2JqZWN0
OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjCiAgICAgcmV0dXJuIG9iamVjdC0+ZGVmaW5lT3du
Tm9uSW5kZXhQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhj
ZXB0aW9uKTsKIH0KIAotYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90U2xvdyhFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKLXsKLSAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKLSAgICBpZiAo
aSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpCi0gICAgICAgIHJldHVybiBnZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4KHRoaXMsIGV4ZWMsIGksIHNsb3QpOwotICAgIHJldHVybiBmYWxzZTsK
LX0KLQogSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQogewogICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBtZXNzYWdlKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDE2OTU4OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2Nyw2
ICs0NjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihW
TSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDApOwogICAg
IHZvaWQgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcihWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgdm9pZCBwdXREaXJlY3RBY2Nlc3NvcihFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IoVk0mLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgYm9vbCBoYXNQcm9wZXJ0eShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpIGNvbnN0
OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzUHJvcGVydHkoRXhlY1N0YXRlKiwgdW5z
aWduZWQgcHJvcGVydHlOYW1lKSBjb25zdDsKQEAgLTU3Myw2ICs1NzQsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCByZW1vdmVEaXJlY3QoVk0mLCBQcm9wZXJ0eU5hbWUpOyAvLyBSZXR1cm4gdHJ1ZSBp
ZiBhbnl0aGluZyBpcyByZW1vdmVkLgogICAgIGJvb2wgaGFzQ3VzdG9tUHJvcGVydGllcygpIHsg
cmV0dXJuIHN0cnVjdHVyZSgpLT5kaWRUcmFuc2l0aW9uKCk7IH0KICAgICBib29sIGhhc0dldHRl
clNldHRlclByb3BlcnRpZXMoKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0dGVy
UHJvcGVydGllcygpOyB9CisgICAgYm9vbCBoYXNDdXN0b21HZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVz
KCkgeyByZXR1cm4gc3RydWN0dXJlKCktPmhhc0N1c3RvbUdldHRlclNldHRlclByb3BlcnRpZXMo
KTsgfQogCiAgICAgLy8gcHV0T3duRGF0YVByb3BlcnR5IGhhcyAncHV0JyBsaWtlIHNlbWFudGlj
cywgaG93ZXZlciB0aGlzIG1ldGhvZDoKICAgICAvLyAgLSBhc3N1bWVzIHRoZSBvYmplY3QgY29u
dGFpbnMgbm8gb3duIGdldHRlci9zZXR0ZXIgcHJvcGVydGllcy4KQEAgLTU4Nyw3ICs1ODksNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBwdXREaXJlY3RVbmRlZmluZWQoUHJvcGVydHlPZmZzZXQgb2Zm
c2V0KSB7IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPnNldFVuZGVmaW5lZCgpOyB9CiAKICAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0
aCwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAg
SlNGdW5jdGlvbiogcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBjb25zdCBQcm9wZXJ0eU5hbWUmLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU0Z1bmN0aW9uKiBwdXREaXJlY3RCdWls
dGluRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIEZ1
bmN0aW9uRXhlY3V0YWJsZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIEpTRnVuY3Rpb24q
IHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKTsKICAgICB2b2lkIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2ln
bmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKTsKIApAQCAtNjIzLDYgKzYyNSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRT
dHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5KFZNJiwgdW5zaWduZWQgb2xk
Q2FwYWNpdHksIFN0cnVjdHVyZSopOwogICAgIHZvaWQgc2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0
ZVN0b3JhZ2VJZk5lY2Vzc2FyeShWTSYsIFN0cnVjdHVyZSopOwogCisgICAgdm9pZCBjb252ZXJ0
VG9EaWN0aW9uYXJ5KFZNJiB2bSkKKyAgICB7CisgICAgICAgIHNldFN0cnVjdHVyZSh2bSwgU3Ry
dWN0dXJlOjp0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUodm0p
KSk7CisgICAgfQorCiAgICAgdm9pZCBmbGF0dGVuRGljdGlvbmFyeU9iamVjdChWTSYgdm0pCiAg
ICAgewogICAgICAgICBzdHJ1Y3R1cmUodm0pLT5mbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSh2
bSwgdGhpcyk7CkBAIC05NTIsNiArOTU5LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaW5saW5l
R2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIFZNJiwgU3RydWN0dXJlJiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbGxHZXR0
ZXJQcm9wZXJ0eVNsb3QoUHJvcGVydHlTbG90JiwgSlNWYWx1ZSwgdW5zaWduZWQsIFByb3BlcnR5
T2Zmc2V0KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbGxDdXN0b21HZXR0ZXJQcm9w
ZXJ0eVNsb3QoUHJvcGVydHlTbG90JiwgSlNWYWx1ZSwgdW5zaWduZWQpOwogCiAgICAgY29uc3Qg
SGFzaFRhYmxlVmFsdWUqIGZpbmRQcm9wZXJ0eUhhc2hFbnRyeShWTSYsIFByb3BlcnR5TmFtZSkg
Y29uc3Q7CiAgICAgICAgIApAQCAtOTY0LDcgKzk3Miw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWdu
ZWQgZ2V0TmV3VmVjdG9yTGVuZ3RoKHVuc2lnbmVkIGN1cnJlbnRWZWN0b3JMZW5ndGgsIHVuc2ln
bmVkIGN1cnJlbnRMZW5ndGgsIHVuc2lnbmVkIGRlc2lyZWRMZW5ndGgpOwogICAgIHVuc2lnbmVk
IGdldE5ld1ZlY3Rvckxlbmd0aCh1bnNpZ25lZCBkZXNpcmVkTGVuZ3RoKTsKIAotICAgIEpTX0VY
UE9SVF9QUklWQVRFIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90U2xvdyhFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90U2xv
dyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICAKICAg
ICBBcnJheVN0b3JhZ2UqIGNvbnN0cnVjdENvbnZlcnRlZEFycmF5U3RvcmFnZVdpdGhvdXRDb3B5
aW5nRWxlbWVudHMoVk0mLCB1bnNpZ25lZCBuZWVkZWRMZW5ndGgpOwogICAgICAgICAKQEAgLTEy
MTMsNiArMTIyMSw4IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6aW5saW5lR2V0T3cK
ICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGdldERpcmVjdChvZmZzZXQpOwogICAgICAgICBpZiAo
c3RydWN0dXJlLmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSAmJiB2YWx1ZS5pc0dldHRlclNl
dHRlcigpKQogICAgICAgICAgICAgZmlsbEdldHRlclByb3BlcnR5U2xvdChzbG90LCB2YWx1ZSwg
YXR0cmlidXRlcywgb2Zmc2V0KTsKKyAgICAgICAgZWxzZSBpZiAoc3RydWN0dXJlLmhhc0N1c3Rv
bUdldHRlclNldHRlclByb3BlcnRpZXMoKSAmJiB2YWx1ZS5pc0N1c3RvbUdldHRlclNldHRlcigp
KQorICAgICAgICAgICAgZmlsbEN1c3RvbUdldHRlclByb3BlcnR5U2xvdChzbG90LCB2YWx1ZSwg
YXR0cmlidXRlcyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhp
cywgYXR0cmlidXRlcywgdmFsdWUsIG9mZnNldCk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAt
MTIyMSw2ICsxMjMxLDE0IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6aW5saW5lR2V0
T3cKICAgICByZXR1cm4gZ2V0T3duUHJvcGVydHlTbG90U2xvdyhleGVjLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogfQogCitleHRlcm4gaW5saW5lIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5
U2xvdFNsb3coRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5TmFtZS5hc0luZGV4
KCk7CisgICAgaWYgKGkgIT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KQorICAgICAgICByZXR1
cm4gZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleCh0aGlzLCBleGVjLCBpLCBzbG90KTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKIC8vIEl0IG1heSBzZWVtIGNyYXp5IHRvIGlubGluZSBhIGZ1bmN0
aW9uIHRoaXMgbGFyZ2UsIGVzcGVjaWFsbHkgYSB2aXJ0dWFsIGZ1bmN0aW9uLAogLy8gYnV0IGl0
IG1ha2VzIGEgYmlnIGRpZmZlcmVuY2UgdG8gcHJvcGVydHkgbG9va3VwIHRoYXQgZGVyaXZlZCBj
bGFzc2VzIGNhbiBpbmxpbmUgdGhlaXIKIC8vIGJhc2UgY2xhc3MgY2FsbCB0byB0aGlzLgpAQCAt
MTQ0MCw2ICsxNDU4LDcgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dE93bkRhdGFQcm9wZXJ0
eQogICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBI
ZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXMpKTsKICAgICBBU1NFUlQoIXN0cnVj
dHVyZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkpOworICAgIEFTU0VSVCghc3RydWN0
dXJlKCktPmhhc0N1c3RvbUdldHRlclNldHRlclByb3BlcnRpZXMoKSk7CiAKICAgICByZXR1cm4g
cHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZVB1dD4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAs
IHNsb3QsIGdldENhbGxhYmxlT2JqZWN0KHZhbHVlKSk7CiB9CkBAIC0xNDQ3LDYgKzE0NjYsNyBA
QCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0T3duRGF0YVByb3BlcnR5CiBpbmxpbmUgdm9pZCBK
U09iamVjdDo6cHV0RGlyZWN0KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBBU1NFUlQoIXZhbHVlLmlz
R2V0dGVyU2V0dGVyKCkgJiYgIShhdHRyaWJ1dGVzICYgQWNjZXNzb3IpKTsKKyAgICBBU1NFUlQo
IXZhbHVlLmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90
KHRoaXMpOwogICAgIHB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4o
dm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QsIGdldENhbGxhYmxlT2Jq
ZWN0KHZhbHVlKSk7CiB9CkBAIC0xNDU0LDYgKzE0NzQsNyBAQCBpbmxpbmUgdm9pZCBKU09iamVj
dDo6cHV0RGlyZWN0KFZNJiB2bSwgCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0KFZN
JiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVy
dHlTbG90JiBzbG90KQogewogICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSk7Cisg
ICAgQVNTRVJUKCF2YWx1ZS5pc0N1c3RvbUdldHRlclNldHRlcigpKTsKICAgICBwdXREaXJlY3RJ
bnRlcm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVydHk+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCAwLCBzbG90LCBnZXRDYWxsYWJsZU9iamVjdCh2YWx1ZSkpOwogfQogCkBAIC0xNDYxLDYgKzE0
ODIsNyBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyCiB7CiAgICAg
RGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwogICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0ZXJTZXR0
ZXIoKSAmJiAhKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOworICAgIEFTU0VSVCghdmFsdWUuaXND
dXN0b21HZXR0ZXJTZXR0ZXIoKSk7CiAgICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBtX2J1
dHRlcmZseS5nZXQoKTsKICAgICBpZiAoc3RydWN0dXJlKCktPnB1dFdpbGxHcm93T3V0T2ZMaW5l
U3RvcmFnZSgpKQogICAgICAgICBuZXdCdXR0ZXJmbHkgPSBncm93T3V0T2ZMaW5lU3RvcmFnZSh2
bSwgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIHN0cnVjdHVyZSgpLT5zdWdnZXN0
ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1R5cGUuaAkocmV2aXNpb24gMTY5NTg5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAg
ZW51bSBKU1R5cGUgOiB1aW50OF90IHsKICAgICAvLyBUaGUgQ29tcG91bmRUeXBlIHZhbHVlIG11
c3QgY29tZSBiZWZvcmUgYW55IEpTVHlwZSB0aGF0IG1heSBoYXZlIGNoaWxkcmVuLgogICAgIENv
bXBvdW5kVHlwZSwKICAgICBHZXR0ZXJTZXR0ZXJUeXBlLAorICAgIEN1c3RvbUdldHRlclNldHRl
clR5cGUsCiAgICAgQVBJVmFsdWVXcmFwcGVyVHlwZSwKIAogICAgIEV2YWxFeGVjdXRhYmxlVHlw
ZSwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCShyZXZpc2lvbiAx
Njk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Mb29rdXAuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjEsNyArMjEsMTAgQEAKICNpZm5kZWYgTG9va3VwX2gKICNkZWZpbmUgTG9v
a3VwX2gKIAorI2luY2x1ZGUgIkJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmgiCiAjaW5jbHVk
ZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ3VzdG9tR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVk
ZSAiSWRlbnRpZmllcklubGluZXMuaCIKICNpbmNsdWRlICJJbnRyaW5zaWMuaCIKICNpbmNsdWRl
ICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKQEAgLTI5MCw2ICsy
OTMsMzQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHB1dEVudHJ5KGV4ZWMsIGVudHJ5LCBi
YXNlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQorCisgICAgaW5saW5lIHZvaWQgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKFZNJiB2bSwgY29u
c3QgSGFzaFRhYmxlJiB0YWJsZSwgSlNPYmplY3QqIHRoaXNPYmopCisgICAgeworICAgICAgICBC
YXRjaGVkVHJhbnNpdGlvbk9wdGltaXplciB0cmFuc2l0aW9uT3B0aW1pemVyKHZtLCB0aGlzT2Jq
KTsKKyAgICAgICAgZm9yIChhdXRvIGl0ZXIgPSB0YWJsZS5iZWdpbih2bSk7IGl0ZXIgIT0gdGFi
bGUuZW5kKHZtKTsgKytpdGVyKSB7CisgICAgICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFt
ZSgmdm0sIGl0ZXIua2V5KCkpOworICAgICAgICAgICAgY29uc3QgSGFzaFRhYmxlVmFsdWUqIGVu
dHJ5ID0gaXRlci52YWx1ZSgpOworICAgICAgICAgICAgaWYgKGl0ZXItPmF0dHJpYnV0ZXMoKSAm
IEJ1aWx0aW4pIHsKKyAgICAgICAgICAgICAgICB0aGlzT2JqLT5wdXREaXJlY3RCdWlsdGluRnVu
Y3Rpb24odm0sIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5i
dWlsdGluR2VuZXJhdG9yKCkodm0pLCBlbnRyeS0+YXR0cmlidXRlcygpKTsKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGl0ZXItPmF0
dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKSB7CisgICAgICAgICAgICAgICAgdGhpc09iai0+cHV0RGly
ZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5h
bWUsIGVudHJ5LT5mdW5jdGlvbkxlbmd0aCgpLAorICAgICAgICAgICAgICAgICAgICBlbnRyeS0+
ZnVuY3Rpb24oKSwgZW50cnktPmludHJpbnNpYygpLCBlbnRyeS0+YXR0cmlidXRlcygpKTsKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYg
KGl0ZXItPmF0dHJpYnV0ZXMoKSAmIEFjY2Vzc29yKSB7CisgICAgICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgQ3VzdG9tR2V0dGVyU2V0dGVyKiBjdXN0b21HZXR0ZXJT
ZXR0ZXIgPSBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZW50cnktPnByb3BlcnR5R2V0
dGVyKCksIGVudHJ5LT5wcm9wZXJ0eVB1dHRlcigpKTsKKyAgICAgICAgICAgIHRoaXNPYmotPnB1
dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBwcm9wZXJ0eU5hbWUsIGN1c3RvbUdldHRlclNldHRl
ciwgZW50cnktPmF0dHJpYnV0ZXMoKSk7CisgICAgICAgIH0KKyAgICB9CisKIH0gLy8gbmFtZXNw
YWNlIEpTQwogCiAjZW5kaWYgLy8gTG9va3VwX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCShyZXZpc2lvbiAxNjk1ODkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ewogICAgICAgICAgICAgQVNTRVJUKG1fdmFsdWUpOwogICAgICAgICAgICAgQVNTRVJUKCFtX3Zh
bHVlLmlzR2V0dGVyU2V0dGVyKCkpOworICAgICAgICAgICAgQVNTRVJUKCFtX3ZhbHVlLmlzQ3Vz
dG9tR2V0dGVyU2V0dGVyKCkpOwogICAgICAgICB9CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IGJvb2wgd3JpdGFibGUoKSBjb25zdDsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBl
bnVtZXJhYmxlKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAJKHJldmlzaW9uIDE2OTU4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw2ICsxNjgsNyBA
QCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqCiAgICAgLCBtX2RpY3Rp
b25hcnlLaW5kKE5vbmVEaWN0aW9uYXJ5S2luZCkKICAgICAsIG1faXNQaW5uZWRQcm9wZXJ0eVRh
YmxlKGZhbHNlKQogICAgICwgbV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKGNsYXNzSW5mby0+
aGFzU3RhdGljU2V0dGVyT3JSZWFkb25seVByb3BlcnRpZXModm0pKQorICAgICwgbV9oYXNDdXN0
b21HZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKGZhbHNlKQogICAgICwgbV9oYXNSZWFkT25seU9yR2V0
dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvKGNsYXNzSW5mby0+aGFzU3RhdGljU2V0
dGVyT3JSZWFkb25seVByb3BlcnRpZXModm0pKQogICAgICwgbV9oYXNOb25FbnVtZXJhYmxlUHJv
cGVydGllcyhmYWxzZSkKICAgICAsIG1fYXR0cmlidXRlc0luUHJldmlvdXMoMCkKQEAgLTE5NSw2
ICsxOTYsNyBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShWTSYgdm0pCiAgICAgLCBtX2RpY3Rpb25h
cnlLaW5kKE5vbmVEaWN0aW9uYXJ5S2luZCkKICAgICAsIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxl
KGZhbHNlKQogICAgICwgbV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKG1fY2xhc3NJbmZvLT5o
YXNTdGF0aWNTZXR0ZXJPclJlYWRvbmx5UHJvcGVydGllcyh2bSkpCisgICAgLCBtX2hhc0N1c3Rv
bUdldHRlclNldHRlclByb3BlcnRpZXMoZmFsc2UpCiAgICAgLCBtX2hhc1JlYWRPbmx5T3JHZXR0
ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8obV9jbGFzc0luZm8tPmhhc1N0YXRpY1Nl
dHRlck9yUmVhZG9ubHlQcm9wZXJ0aWVzKHZtKSkKICAgICAsIG1faGFzTm9uRW51bWVyYWJsZVBy
b3BlcnRpZXMoZmFsc2UpCiAgICAgLCBtX2F0dHJpYnV0ZXNJblByZXZpb3VzKDApCkBAIC0yMjEs
NiArMjIzLDcgQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoVk0mIHZtLCBjb25zdCBTdHJ1YwogICAg
ICwgbV9kaWN0aW9uYXJ5S2luZChwcmV2aW91cy0+bV9kaWN0aW9uYXJ5S2luZCkKICAgICAsIG1f
aXNQaW5uZWRQcm9wZXJ0eVRhYmxlKGZhbHNlKQogICAgICwgbV9oYXNHZXR0ZXJTZXR0ZXJQcm9w
ZXJ0aWVzKHByZXZpb3VzLT5tX2hhc0dldHRlclNldHRlclByb3BlcnRpZXMpCisgICAgLCBtX2hh
c0N1c3RvbUdldHRlclNldHRlclByb3BlcnRpZXMocHJldmlvdXMtPm1faGFzQ3VzdG9tR2V0dGVy
U2V0dGVyUHJvcGVydGllcykKICAgICAsIG1faGFzUmVhZE9ubHlPckdldHRlclNldHRlclByb3Bl
cnRpZXNFeGNsdWRpbmdQcm90byhwcmV2aW91cy0+bV9oYXNSZWFkT25seU9yR2V0dGVyU2V0dGVy
UHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvKQogICAgICwgbV9oYXNOb25FbnVtZXJhYmxlUHJvcGVy
dGllcyhwcmV2aW91cy0+bV9oYXNOb25FbnVtZXJhYmxlUHJvcGVydGllcykKICAgICAsIG1fYXR0
cmlidXRlc0luUHJldmlvdXMoMCkKQEAgLTMxNywxOCArMzIwLDYgQEAgdm9pZCBTdHJ1Y3R1cmU6
Om1hdGVyaWFsaXplUHJvcGVydHlNYXAoVgogICAgIGNoZWNrT2Zmc2V0Q29uc2lzdGVuY3koKTsK
IH0KIAotaW5saW5lIHNpemVfdCBuZXh0T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KHNpemVfdCBj
dXJyZW50Q2FwYWNpdHkpCi17Ci0gICAgaWYgKCFjdXJyZW50Q2FwYWNpdHkpCi0gICAgICAgIHJl
dHVybiBpbml0aWFsT3V0T2ZMaW5lQ2FwYWNpdHk7Ci0gICAgcmV0dXJuIGN1cnJlbnRDYXBhY2l0
eSAqIG91dE9mTGluZUdyb3d0aEZhY3RvcjsKLX0KLQotc2l6ZV90IFN0cnVjdHVyZTo6c3VnZ2Vz
dGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KCkKLXsKLSAgICByZXR1cm4gbmV4dE91dE9m
TGluZVN0b3JhZ2VDYXBhY2l0eShvdXRPZkxpbmVDYXBhY2l0eSgpKTsKLX0KLSAKIHZvaWQgU3Ry
dWN0dXJlOjpkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb24oVk0mIHZtLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQogewogICAgIFN0cmluZ0ltcGwqIHJlcCA9IHByb3BlcnR5TmFtZS51aWQo
KTsKQEAgLTg5OCwyNSArODg5LDYgQEAgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXRDb25j
dXJyZW50bAogICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0OwogfQogCi1Qcm9wZXJ0eU9mZnNldCBT
dHJ1Y3R1cmU6OmdldChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVk
JiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKQotewotICAgIEFTU0VSVCghaXND
b21waWxhdGlvblRocmVhZCgpKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygp
ID09IGluZm8oKSk7Ci0KLSAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7Ci0gICAgbWF0ZXJp
YWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KHZtLCBkZWZlckdDKTsKLSAgICBpZiAoIXByb3Bl
cnR5VGFibGUoKSkKLSAgICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7Ci0KLSAgICBQcm9wZXJ0
eU1hcEVudHJ5KiBlbnRyeSA9IHByb3BlcnR5VGFibGUoKS0+Z2V0KHByb3BlcnR5TmFtZS51aWQo
KSk7Ci0gICAgaWYgKCFlbnRyeSkKLSAgICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7Ci0KLSAg
ICBhdHRyaWJ1dGVzID0gZW50cnktPmF0dHJpYnV0ZXM7Ci0gICAgc3BlY2lmaWNWYWx1ZSA9IGVu
dHJ5LT5zcGVjaWZpY1ZhbHVlLmdldCgpOwotICAgIHJldHVybiBlbnRyeS0+b2Zmc2V0OwotfQot
CiBib29sIFN0cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb24oVk0mIHZtLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQogewogICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxNjk1ODkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBj
b3B5KQpAQCAtMTE4LDcgKzExOCw3IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgU3RydWN0dXJlKiBjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJl
KiwgSlNWYWx1ZSBwcm90b3R5cGUpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1
Y3R1cmUqIGRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIFByb3Bl
cnR5TmFtZSk7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogYXR0cmlidXRlQ2hhbmdlVHJhbnNpdGlv
bihWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0g
ICAgc3RhdGljIFN0cnVjdHVyZSogdG9DYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihWTSYs
IFN0cnVjdHVyZSopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIHRv
Q2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0
aWMgU3RydWN0dXJlKiB0b1VuY2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oVk0mLCBTdHJ1
Y3R1cmUqKTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBzZWFsVHJhbnNpdGlvbihWTSYsIFN0cnVj
dHVyZSopOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGZyZWV6ZVRyYW5zaXRpb24oVk0mLCBTdHJ1
Y3R1cmUqKTsKQEAgLTEzMCw5ICsxMzAsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0V4dGVuc2li
bGUoKSBjb25zdCB7IHJldHVybiAhbV9wcmV2ZW50RXh0ZW5zaW9uczsgfQogICAgIGJvb2wgZGlk
VHJhbnNpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGlkVHJhbnNpdGlvbjsgfQogICAgIGJvb2wg
cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKCk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc2l6
ZV90IHN1Z2dlc3RlZE5ld091dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSgpOyAKKyAgICBzaXplX3Qg
c3VnZ2VzdGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KCk7IAogCi0gICAgU3RydWN0dXJl
KiBmbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZShWTSYsIEpTT2JqZWN0Kik7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgU3RydWN0dXJlKiBmbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZShWTSYsIEpT
T2JqZWN0Kik7CiAKICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1
ZTsKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJbW1vcnRhbFN0cnVjdHVyZSA9IHRydWU7CkBA
IC0yNjQsNyArMjY0LDcgQEAgcHVibGljOgogCiAgICAgUHJvcGVydHlPZmZzZXQgZ2V0KFZNJiwg
UHJvcGVydHlOYW1lKTsKICAgICBQcm9wZXJ0eU9mZnNldCBnZXQoVk0mLCBjb25zdCBXVEY6OlN0
cmluZyYgbmFtZSk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgUHJvcGVydHlPZmZzZXQgZ2V0KFZN
JiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNW
YWx1ZSk7CisgICAgUHJvcGVydHlPZmZzZXQgZ2V0KFZNJiwgUHJvcGVydHlOYW1lLCB1bnNpZ25l
ZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSk7CiAKICAgICBQcm9wZXJ0eU9m
ZnNldCBnZXRDb25jdXJyZW50bHkoVk0mLCBTdHJpbmdJbXBsKiB1aWQpOwogICAgIFByb3BlcnR5
T2Zmc2V0IGdldENvbmN1cnJlbnRseShWTSYsIFN0cmluZ0ltcGwqIHVpZCwgdW5zaWduZWQmIGF0
dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpOwpAQCAtMjc3LDYgKzI3NywxMCBAQCBw
dWJsaWM6CiAgICAgICAgIGlmICghaXNfX3Byb3RvX18pCiAgICAgICAgICAgICBtX2hhc1JlYWRP
bmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8gPSB0cnVlOwogICAgIH0K
KworICAgIGJvb2wgaGFzQ3VzdG9tR2V0dGVyU2V0dGVyUHJvcGVydGllcygpIGNvbnN0IHsgcmV0
dXJuIG1faGFzQ3VzdG9tR2V0dGVyU2V0dGVyUHJvcGVydGllczsgfQorICAgIHZvaWQgc2V0SGFz
Q3VzdG9tR2V0dGVyU2V0dGVyUHJvcGVydGllcygpIHsgbV9oYXNDdXN0b21HZXR0ZXJTZXR0ZXJQ
cm9wZXJ0aWVzID0gdHJ1ZTsgfQorCiAgICAgdm9pZCBzZXRDb250YWluc1JlYWRPbmx5UHJvcGVy
dGllcygpCiAgICAgewogICAgICAgICBtX2hhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0
aWVzRXhjbHVkaW5nUHJvdG8gPSB0cnVlOwpAQCAtNTIyLDYgKzUyNiw3IEBAIHByaXZhdGU6CiAg
ICAgdW5zaWduZWQgbV9kaWN0aW9uYXJ5S2luZCA6IDI7CiAgICAgYm9vbCBtX2lzUGlubmVkUHJv
cGVydHlUYWJsZSA6IDE7CiAgICAgYm9vbCBtX2hhc0dldHRlclNldHRlclByb3BlcnRpZXMgOiAx
OworICAgIGJvb2wgbV9oYXNDdXN0b21HZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzIDogMTsKICAgICBi
b29sIG1faGFzUmVhZE9ubHlPckdldHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90byA6
IDE7CiAgICAgYm9vbCBtX2hhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVzIDogMTsKICAgICB1bnNp
Z25lZCBtX2F0dHJpYnV0ZXNJblByZXZpb3VzIDogMTQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCShyZXZpc2lvbiAxNjk1ODkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTk5LDYgKzk5LDI1IEBAIGlubGluZSBQcm9wZXJ0eU9mZnNldCBTdHJ1
Y3R1cmU6OmdldChWTSYKICAgICByZXR1cm4gZW50cnkgPyBlbnRyeS0+b2Zmc2V0IDogaW52YWxp
ZE9mZnNldDsKIH0KICAgICAKK2lubGluZSBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmdldChW
TSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBK
U0NlbGwqJiBzcGVjaWZpY1ZhbHVlKQoreworICAgIEFTU0VSVCghaXNDb21waWxhdGlvblRocmVh
ZCgpKTsKKyAgICBBU1NFUlQoc3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09IGluZm8oKSk7CisK
KyAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CisgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1h
cElmTmVjZXNzYXJ5KHZtLCBkZWZlckdDKTsKKyAgICBpZiAoIXByb3BlcnR5VGFibGUoKSkKKyAg
ICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CisKKyAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRy
eSA9IHByb3BlcnR5VGFibGUoKS0+Z2V0KHByb3BlcnR5TmFtZS51aWQoKSk7CisgICAgaWYgKCFl
bnRyeSkKKyAgICAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CisKKyAgICBhdHRyaWJ1dGVzID0g
ZW50cnktPmF0dHJpYnV0ZXM7CisgICAgc3BlY2lmaWNWYWx1ZSA9IGVudHJ5LT5zcGVjaWZpY1Zh
bHVlLmdldCgpOworICAgIHJldHVybiBlbnRyeS0+b2Zmc2V0OworfQorCiBpbmxpbmUgUHJvcGVy
dHlPZmZzZXQgU3RydWN0dXJlOjpnZXRDb25jdXJyZW50bHkoVk0mIHZtLCBTdHJpbmdJbXBsKiB1
aWQpCiB7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlc0lnbm9yZWQ7CkBAIC0yNDYsNiArMjY1LDE4
IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBTdHJ1Y3R1cmU6OmNoZWNrT2Zmc2UKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAoraW5saW5lIHNpemVfdCBuZXh0T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KHNp
emVfdCBjdXJyZW50Q2FwYWNpdHkpCit7CisgICAgaWYgKCFjdXJyZW50Q2FwYWNpdHkpCisgICAg
ICAgIHJldHVybiBpbml0aWFsT3V0T2ZMaW5lQ2FwYWNpdHk7CisgICAgcmV0dXJuIGN1cnJlbnRD
YXBhY2l0eSAqIG91dE9mTGluZUdyb3d0aEZhY3RvcjsKK30KKworaW5saW5lIHNpemVfdCBTdHJ1
Y3R1cmU6OnN1Z2dlc3RlZE5ld091dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSgpCit7CisgICAgcmV0
dXJuIG5leHRPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkob3V0T2ZMaW5lQ2FwYWNpdHkoKSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gU3RydWN0dXJlSW5saW5lc19oCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAxNjk1ODkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJDb2RlQ2FjaGUuaCIKICNpbmNsdWRlICJDb21tb25J
ZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgorI2luY2x1ZGUgIkN1
c3RvbUdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkRGR0xvbmdMaXZlZFN0YXRlLmgiCiAjaW5j
bHVkZSAiREZHV29ya2xpc3QuaCIKICNpbmNsdWRlICJEZWJ1Z2dlckFjdGl2YXRpb24uaCIKQEAg
LTI1MCw2ICsyNTEsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUp
CiAgICAgbm90QW5PYmplY3RTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU05vdEFuT2JqZWN0OjpjcmVh
dGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgcHJvcGVydHlOYW1lSXRlcmF0
b3JTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZ2V0dGVyU2V0dGVyU3RydWN0dXJlLnNl
dCgqdGhpcywgR2V0dGVyU2V0dGVyOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgp
KSk7CisgICAgY3VzdG9tR2V0dGVyU2V0dGVyU3RydWN0dXJlLnNldCgqdGhpcywgQ3VzdG9tR2V0
dGVyU2V0dGVyOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgYXBp
V3JhcHBlclN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTQVBJVmFsdWVXcmFwcGVyOjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgSlNTY29wZVN0cnVjdHVyZS5zZXQoKnRo
aXMsIEpTU2NvcGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBl
eGVjdXRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgRXhlY3V0YWJsZUJhc2U6OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAkocmV2aXNpb24gMTY5NTg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAkod29ya2luZyBjb3B5KQpAQCAtMjYyLDYgKzI2Miw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiBub3RBbk9iamVjdFN0cnVjdHVyZTsKICAgICAgICAg
U3Ryb25nPFN0cnVjdHVyZT4gcHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmU7CiAgICAgICAg
IFN0cm9uZzxTdHJ1Y3R1cmU+IGdldHRlclNldHRlclN0cnVjdHVyZTsKKyAgICAgICAgU3Ryb25n
PFN0cnVjdHVyZT4gY3VzdG9tR2V0dGVyU2V0dGVyU3RydWN0dXJlOwogICAgICAgICBTdHJvbmc8
U3RydWN0dXJlPiBhcGlXcmFwcGVyU3RydWN0dXJlOwogICAgICAgICBTdHJvbmc8U3RydWN0dXJl
PiBKU1Njb3BlU3RydWN0dXJlOwogICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiBleGVjdXRhYmxl
U3RydWN0dXJlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJy
aWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVC
YXJyaWVyLmgJKHJldmlzaW9uIDE2OTU4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1dyaXRlQmFycmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsNiArMTUyLDcgQEAgcHVi
bGljOgogICAgIGJvb2wgaXNPYmplY3QoKSBjb25zdCB7IHJldHVybiBnZXQoKS5pc09iamVjdCgp
OyB9CiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBnZXQoKS5pc051bGwoKTsgfQog
ICAgIGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdCB7IHJldHVybiBnZXQoKS5pc0dldHRlclNl
dHRlcigpOyB9CisgICAgYm9vbCBpc0N1c3RvbUdldHRlclNldHRlcigpIGNvbnN0IHsgcmV0dXJu
IGdldCgpLmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCk7IH0KICAgICAKICAgICBKU1ZhbHVlKiBzbG90
KCkKICAgICB7IApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY5NjIyKQorKysgU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTQtMDYt
MDUgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKworICAgICAgICBF
YWdlcmx5IHJlaWZ5IERPTSBwcm90b3R5cGUgYXR0cmlidXRlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzNTU4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgIFRo
aXMgYWxsb3dzIHVzIHRvIGdldCByaWQgb2YgYSBsb3Qgb2YgdGhlIGFkZGl0aW9uYWwgb3Zlcmhl
YWQgb2YgcHVzaGluZyBET00gYXR0cmlidXRlcyB1cCBpbnRvIHRoZSBwcm90b3R5cGUuIAorICAg
ICAgICBCeSBlYWdlcmx5IHJlaWZ5aW5nIHRoZSBjdXN0b20gZ2V0dGVycyBhbmQgc2V0dGVycyBp
bnRvIHRoZSBhY3R1YWwgSlNPYmplY3Qgd2UgYXZvaWQgaGF2aW5nIHRvIG92ZXJyaWRlIAorICAg
ICAgICBnZXRPd25Qcm9wZXJ0eVNsb3QgZm9yIGFsbCBvZiB0aGUgRE9NIHByb3RvdHlwZXMsIHdo
aWNoIGlzIGEgbG90IG9mIHRoZSBvdmVyaGVhZCBvZiBkb2luZyBwcm9wZXJ0eSBsb29rdXBzIG9u
IAorICAgICAgICBET00gd3JhcHBlcnMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKHByb3RvdHlwZUhhc2hUYWJsZUFjY2Vzc29yKTog
Q2hhbmdlZCB0byBwYXNzIGFsb25nIHRoZSBWTS4KKyAgICAgICAgKEF0dHJpYnV0ZVNob3VsZEJl
T25JbnN0YW5jZUZvckNvbXBhdGliaWxpdHkpOiBXZSB3ZXJlIGJlaW5nIG92ZXJseSBjb25zZXJ2
YXRpdmUgaW4gcmVnYXJkIHRvIHRvdWNoIGV2ZW50cy4gCisgICAgICAgIFRoaXMgY2F1c2VkIHVz
IHRvIHN0b3JlIHRoZSB0b3VjaCBldmVudCBoYW5kbGVyIGdldHRlcnMgYW5kIHNldHRlcnMgb24g
dGhlIEpTRWxlbWVudCBpbnN0YW5jZSwgd2hpY2ggY2F1c2VkCisgICAgICAgIHVzIHRvIG92ZXJy
aWRlIGdldE93blByb3BlcnR5U2xvdCBmb3IgZXZlcnkgSlNFbGVtZW50IHN1YmNsYXNzLgorICAg
ICAgICAoSW5zdGFuY2VPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QpOiBUaGlzIHdhcyBiZWlu
ZyBvdmVybHkgcGFyYW5vaWQgYWJvdXQgZ2VuZXJhdGUgYSBnZXRPd25Qcm9wZXJ0eVNsb3QgaWYK
KyAgICAgICAgdGhlcmUgd2FzIGdvaW5nIHRvIGJlIGEgImNvbnN0cnVjdG9yIiBwcm9wZXJ0eSwg
ZXZlbiB0aG91Z2ggd2UgaGFuZGxlZCB0aGlzIGluIGFub3RoZXIgcGxhY2UgYWxyZWFkeS4KKyAg
ICAgICAgKEdlbmVyYXRlSGVhZGVyKTogR2VuZXJhdGUgYSBmaW5pc2hDcmVhdGlvbiBmb3IgcHJv
dG90eXBlcyB1bmxlc3MgaXQncyB0aGUgSlNET01XaW5kb3cuIFdlIGNhbid0IGNvcnJlY3RseSAK
KyAgICAgICAgaGFuZGxlIHRoZSBET01XaW5kb3cgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBwYXRj
aCBiZWNhdXNlIHJlaWZ5aW5nIHRoZSBzdGF0aWMgcHJvcGVydGllcyByZXF1aXJlcyBhIGdsb2Jh
bCBvYmplY3QsCisgICAgICAgIHdoaWNoIGhhc24ndCBiZWVuIGNyZWF0ZWQgeWV0IHdoZW4gdGhl
IHByb3RvdHlwZSBmb3IgdGhlIHdpbmRvdyBvYmplY3QgaXMgYmVpbmcgY3JlYXRlZC4KKyAgICAg
ICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOiBHZW5lcmF0ZSB0aGUgZmluaXNoQ3JlYXRpb24g
Y2FsbHMgdG8gcmVpZnlTdGF0aWNQcm9wZXJ0aWVzLgorCiAyMDE0LTA2LTA1ICBZdXN1a2UgU3V6
dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIENTUyBKSVQ6IENsZWFuIHVw
IFN0YWNrQWxsb2NhdG9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMTY5NTg5KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkK
QEAgLTM1MCw3ICszNTAsNyBAQCBzdWIgcHJvdG90eXBlSGFzaFRhYmxlQWNjZXNzb3IKICAgICBt
eSAkbm9TdGF0aWNUYWJsZXMgPSBzaGlmdDsKICAgICBteSAkY2xhc3NOYW1lID0gc2hpZnQ7CiAg
ICAgaWYgKCRub1N0YXRpY1RhYmxlcykgewotICAgICAgICByZXR1cm4gImdldCR7Y2xhc3NOYW1l
fVByb3RvdHlwZVRhYmxlKGV4ZWMtPnZtKCkpIjsKKyAgICAgICAgcmV0dXJuICJnZXQke2NsYXNz
TmFtZX1Qcm90b3R5cGVUYWJsZSh2bSkiOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHJldHVybiAi
JHtjbGFzc05hbWV9UHJvdG90eXBlVGFibGUiOwogICAgIH0KQEAgLTY1OSw3ICs2NTksNiBAQCBz
dWIgQXR0cmlidXRlU2hvdWxkQmVPbkluc3RhbmNlRm9yQ29tcGF0CiAgICAgbXkgJGludGVyZmFj
ZSA9IHNoaWZ0OwogICAgIG15ICRhdHRyaWJ1dGUgPSBzaGlmdDsKICAgICBteSAkaW50ZXJmYWNl
TmFtZSA9ICRpbnRlcmZhY2UtPm5hbWU7Ci0gICAgcmV0dXJuIDEgaWYgKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+bmFtZSA9fiAidG91Y2giKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNzQ2LDcg
Kzc0NSw3IEBAIHN1YiBJbnN0YW5jZU92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdAogICAgICAg
ICB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tR2V0T3duUHJvcGVy
dHlTbG90In0KICAgICAgICAgfHwgJGhhc0ltcHVyZU5hbWVkR2V0dGVyOwogCi0gICAgcmV0dXJu
ICRudW1JbnN0YW5jZUF0dHJpYnV0ZXMgPiAwIHx8ICEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiTm9JbnRlcmZhY2VPYmplY3QifSB8fCAkaGFzQ29tcGxleEdldHRlcjsKKyAgICBy
ZXR1cm4gJG51bUluc3RhbmNlQXR0cmlidXRlcyA+IDAgfHwgJGhhc0NvbXBsZXhHZXR0ZXI7CiAK
IH0KIApAQCAtMTIwOCw4ICsxMjA3LDEyIEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICBERUNMQVJFX0lORk87XG4iKTsKICAgICBpZiAoUHJvdG90
eXBlT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90KCRpbnRlcmZhY2UpKSB7Ci0gICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpT
Qzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlBy
b3BlcnR5U2xvdCYpO1xuIik7Ci0gICAgICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3QifSA9IDE7CisgICAgICAgIGlmIChJc0RPTUdsb2JhbE9iamVj
dCgkaW50ZXJmYWNlKSkgeworICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBz
dGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7XG4iKTsKKyAgICAg
ICAgICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qi
fSA9IDE7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpO1xuIik7CisgICAgICAgIH0KICAg
ICB9CiAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbU1h
cmtGdW5jdGlvbiJ9IG9yICRuZWVkc1Zpc2l0Q2hpbGRyZW4pIHsKICAgICAgICAgJHN0cnVjdHVy
ZUZsYWdzeyJKU0M6Ok92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4ifSA9IDE7CkBAIC0xOTQ4LDIxICsx
OTUxLDM2IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgfQogCiAgICAgaWYgKFBy
b3RvdHlwZU92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCgkaW50ZXJmYWNlKSkgewotICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9UHJvdG90eXBlOjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKLSAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJ7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtj
bGFzc05hbWV9UHJvdG90eXBlKiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfVByb3Rv
dHlwZSo+KG9iamVjdCk7XG4iKTsKLQogICAgICAgICBteSAkbnVtUHJvdG90eXBlQXR0cmlidXRl
cyA9IFByb3RvdHlwZUF0dHJpYnV0ZUNvdW50KCRpbnRlcmZhY2UpOwotICAgICAgICBpZiAoJG51
bUNvbnN0YW50cyBlcSAwICYmICRudW1GdW5jdGlvbnMgZXEgMCAmJiAkbnVtUHJvdG90eXBlQXR0
cmlidXRlcyBlcSAwKSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1
cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgc2xvdCk7XG4iKTsgICAgICAgIAotICAgICAgICB9IGVsc2lmICgkbnVtQ29uc3RhbnRzIGVx
IDAgJiYgJG51bVByb3RvdHlwZUF0dHJpYnV0ZXMgZXEgMCkgewotICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU09iamVjdD4o
ZXhlYywgIiAuIHByb3RvdHlwZUhhc2hUYWJsZUFjY2Vzc29yKCRpbnRlcmZhY2UtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJKU05vU3RhdGljVGFibGVzIn0sICRjbGFzc05hbWUpIC4gIiwgdGhpc09i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOwotICAgICAgICB9IGVsc2lmICgkbnVtRnVu
Y3Rpb25zIGVxIDAgJiYgJG51bVByb3RvdHlwZUF0dHJpYnV0ZXMgZXEgMCkgewotICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDwke2Ns
YXNzTmFtZX1Qcm90b3R5cGUsIEpTT2JqZWN0PihleGVjLCAiIC4gcHJvdG90eXBlSGFzaFRhYmxl
QWNjZXNzb3IoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTTm9TdGF0aWNUYWJs
ZXMifSwgJGNsYXNzTmFtZSkgLiAiLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xu
Iik7CisgICAgICAgIGlmIChJc0RPTUdsb2JhbE9iamVjdCgkaW50ZXJmYWNlKSkgeworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6Z2V0
T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KVxuIik7CisgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgVk0mIHZtID0gZXhlYy0+dm0oKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHZtKTtcbiIpOworICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9UHJvdG90eXBlKiB0aGlzT2JqZWN0ID0ganND
YXN0PCR7Y2xhc3NOYW1lfVByb3RvdHlwZSo+KG9iamVjdCk7XG4iKTsKKworICAgICAgICAgICAg
aWYgKCRudW1Db25zdGFudHMgZXEgMCAmJiAkbnVtRnVuY3Rpb25zIGVxIDAgJiYgJG51bVByb3Rv
dHlwZUF0dHJpYnV0ZXMgZXEgMCkgeworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOyAgICAgICAgCisgICAgICAgICAgICB9IGVsc2lmICgk
bnVtQ29uc3RhbnRzIGVxIDAgJiYgJG51bVByb3RvdHlwZUF0dHJpYnV0ZXMgZXEgMCkgeworICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnZXRTdGF0aWNGdW5j
dGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsICIgLiBwcm90b3R5cGVIYXNoVGFibGVBY2Nlc3Nvcigk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNOb1N0YXRpY1RhYmxlcyJ9LCAkY2xh
c3NOYW1lKSAuICIsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7XG4iKTsKKyAgICAg
ICAgICAgIH0gZWxzaWYgKCRudW1GdW5jdGlvbnMgZXEgMCAmJiAkbnVtUHJvdG90eXBlQXR0cmli
dXRlcyBlcSAwKSB7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0
dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDwke2NsYXNzTmFtZX1Qcm90b3R5cGUsIEpTT2JqZWN0Pihl
eGVjLCAiIC4gcHJvdG90eXBlSGFzaFRhYmxlQWNjZXNzb3IoJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkpTTm9TdGF0aWNUYWJsZXMifSwgJGNsYXNzTmFtZSkgLiAiLCB0aGlzT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnZXRTdGF0aWNQcm9w
ZXJ0eVNsb3Q8JHtjbGFzc05hbWV9UHJvdG90eXBlLCBKU09iamVjdD4oZXhlYywgIiAuIHByb3Rv
dHlwZUhhc2hUYWJsZUFjY2Vzc29yKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJK
U05vU3RhdGljVGFibGVzIn0sICRjbGFzc05hbWUpIC4gIiwgdGhpc09iamVjdCwgcHJvcGVydHlO
YW1lLCBzbG90KTtcbiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJ9XG5cbiIpOworICAgICAgICB9IGVsc2lmICgkbnVtQ29uc3RhbnRzID4gMCB8fCAk
bnVtRnVuY3Rpb25zID4gMCB8fCAkbnVtUHJvdG90eXBlQXR0cmlidXRlcyA+IDApIHsKKyAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJ7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
cmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCAiIC4gcHJvdG90eXBlSGFzaFRhYmxlQWNjZXNzb3Io
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTTm9TdGF0aWNUYWJsZXMifSwgJGNs
YXNzTmFtZSkgLiAiLCB0aGlzKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJ9XG5cbiIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgcmV0dXJuIGdldFN0YXRpY1Byb3BlcnR5U2xvdDwke2NsYXNzTmFtZX1Qcm90b3R5
cGUsIEpTT2JqZWN0PihleGVjLCAiIC4gcHJvdG90eXBlSGFzaFRhYmxlQWNjZXNzb3IoJGludGVy
ZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTTm9TdGF0aWNUYWJsZXMifSwgJGNsYXNzTmFt
ZSkgLiAiLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7CisgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9UHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0pXG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xu
Iik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsK
ICAgICAgICAgfQotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgfQog
CiAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbU5hbWVk
R2V0dGVyT25Qcm90b3R5cGUifSkgewpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTY5NjIyKQorKysgTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTQt
MDYtMDUgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKworICAgICAg
ICBFYWdlcmx5IHJlaWZ5IERPTSBwcm90b3R5cGUgYXR0cmlidXRlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzNTU4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRpbmcgYSB0ZXN0IGV4cGVjdGF0
aW9uIGFmdGVyIHRoaXMgZml4LgorCisgICAgICAgICoganMvZG9tL2NvbnN0cnVjdG9yLWF0dHJp
YnV0ZXMtZXhwZWN0ZWQudHh0OgorCiAyMDE0LTA2LTA1ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgU3VicGl4ZWwgcmVuZGVyaW5nOiBib3JkZXItcmFkaXVzIHBh
aW50aW5nIGZhbGxzIGJhY2sgdG8gcmVjdGFuZ2xlIHdoZW4gdGhlIHNuYXBwZWQgcm91bmRlZCBy
ZWN0IGJlY29tZXMgbm9uLXJlbmRlcmFibGUuCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9kb20vY29u
c3RydWN0b3ItYXR0cmlidXRlcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvanMvZG9tL2NvbnN0cnVjdG9yLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAx
Njk1ODkpCisrKyBMYXlvdXRUZXN0cy9qcy9kb20vY29uc3RydWN0b3ItYXR0cmlidXRlcy1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgUEFTUyB4ID0gVVJJRXJy
b3IucHJvdG90eXBlOyBkZWxldGUgeC5jbwogUEFTUyBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgn
JykuX19wcm90b19fLmhhc093blByb3BlcnR5KCdjb25zdHJ1Y3RvcicpIGlzIHRydWUKIFBBU1Mg
Y2FuRW51bShkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJykuX19wcm90b19fLCAnY29uc3RydWN0
b3InKSBpcyBmYWxzZQogRkFJTCB4ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpLl9fcHJv
dG9fXzsgeC5jb25zdHJ1Y3RvciA9IDQ7IHguY29uc3RydWN0b3Igc2hvdWxkIGJlIDQgKG9mIHR5
cGUgbnVtYmVyKS4gV2FzIFtvYmplY3QgVGV4dENvbnN0cnVjdG9yXSAob2YgdHlwZSBvYmplY3Qp
LgotRkFJTCB4ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpLl9fcHJvdG9fXzsgZGVsZXRl
IHguY29uc3RydWN0b3I7IHguaGFzT3duUHJvcGVydHkoJ2NvbnN0cnVjdG9yJykgc2hvdWxkIGJl
IGZhbHNlLiBXYXMgdHJ1ZS4KK1BBU1MgeCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKS5f
X3Byb3RvX187IGRlbGV0ZSB4LmNvbnN0cnVjdG9yOyB4Lmhhc093blByb3BlcnR5KCdjb25zdHJ1
Y3RvcicpIGlzIGZhbHNlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1Qg
Q09NUExFVEUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232581</attachid>
            <date>2014-06-05 13:43:35 -0700</date>
            <delta_ts>2014-06-05 14:01:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133558-20140605134310.patch</filename>
            <type>text/plain</type>
            <size>58826</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY5NjIyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg1IEBA
CisyMDE0LTA2LTA1ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgRWFnZXJseSByZWlmeSBET00gcHJvdG90eXBlIGF0dHJpYnV0ZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzU1OAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWxsb3dzIHVzIHRv
IGdldCByaWQgb2YgYSBsb3Qgb2YgdGhlIGFkZGl0aW9uYWwgb3ZlcmhlYWQgb2YgcHVzaGluZyBE
T00gYXR0cmlidXRlcyB1cCBpbnRvIHRoZSBwcm90b3R5cGUuIAorICAgICAgICBCeSBlYWdlcmx5
IHJlaWZ5aW5nIHRoZSBjdXN0b20gZ2V0dGVycyBhbmQgc2V0dGVycyBpbnRvIHRoZSBhY3R1YWwg
SlNPYmplY3Qgd2UgYXZvaWQgaGF2aW5nIHRvIG92ZXJyaWRlIAorICAgICAgICBnZXRPd25Qcm9w
ZXJ0eVNsb3QgZm9yIGFsbCBvZiB0aGUgRE9NIHByb3RvdHlwZXMsIHdoaWNoIGlzIGEgbG90IG9m
IHRoZSBvdmVyaGVhZCBvZiBkb2luZyBwcm9wZXJ0eSBsb29rdXBzIG9uIAorICAgICAgICBET00g
d3JhcHBlcnMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBs
bGludC9MTEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6cGVyZm9ybUFz
c2VydGlvbnMpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAg
ICAgICAqIHJ1bnRpbWUvQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaDoKKyAgICAgICAgKEpT
Qzo6QmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXI6OkJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVy
KToKKyAgICAgICAgKiBydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpjYWxsQ3VzdG9tU2V0dGVyKToKKyAgICAgICAgKiBydW50aW1lL0N1c3RvbUdl
dHRlclNldHRlci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q3VzdG9tR2V0dGVyU2V0dGVyOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpDdXN0b21HZXR0ZXJTZXR0ZXI6OmdldHRlcik6CisgICAg
ICAgIChKU0M6OkN1c3RvbUdldHRlclNldHRlcjo6c2V0dGVyKToKKyAgICAgICAgKEpTQzo6Q3Vz
dG9tR2V0dGVyU2V0dGVyOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpDdXN0b21H
ZXR0ZXJTZXR0ZXI6OkN1c3RvbUdldHRlclNldHRlcik6CisgICAgICAgICogcnVudGltZS9KU0NK
U1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1
ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6aXNDdXN0b21HZXR0ZXJTZXR0ZXIp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGxJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNDdXN0b21HZXR0ZXJTZXR0ZXIpOgor
ICAgICAgICAoSlNDOjpKU0NlbGw6OmNhblVzZUZhc3RHZXRPd25Qcm9wZXJ0eSk6CisgICAgICAg
ICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6aXNI
b3N0T3JCdWlsdGluRnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9u
Ojppc0J1aWx0aW5GdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0Z1bmN0
aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oOiBJbmxpbmVkIHNv
bWUgcmFuZG9tIGZ1bmN0aW9ucyB0aGF0IGFwcGVhcmVkIGhvdCBkdXJpbmcgcHJvZmlsaW5nLgor
ICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjppc0J1aWx0aW5GdW5jdGlvbik6CisgICAgICAgIChK
U0M6OkpTRnVuY3Rpb246OmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcik6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpmaWxsR2V0dGVyUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmZpbGxDdXN0b21HZXR0ZXJQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlTbG90U2xvdyk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9K
U09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aGFzQ3VzdG9tR2V0dGVyU2V0dGVy
UHJvcGVydGllcyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0VG9EaWN0aW9uYXJ5
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmlubGluZUdldE93blByb3BlcnR5U2xvdCk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RTbG93KTogSW5saW5lZCBi
ZWNhdXNlIGl0IGxvb2tlZCBob3QgZHVyaW5nIHByb2ZpbGluZy4KKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OnB1dE93bkRhdGFQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRE
aXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9Mb29r
dXAuaDoKKyAgICAgICAgKEpTQzo6cmVpZnlTdGF0aWNQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBy
dW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eURlc2Ny
aXB0b3I6OlByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OlN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
Om5leHRPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OnN1Z2dlc3RlZE5ld091dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Z2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50
aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Omhhc0N1c3RvbUdldHRl
clNldHRlclByb3BlcnRpZXMpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnNldEhhc0N1c3Rv
bUdldHRlclNldHRlclByb3BlcnRpZXMpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmdldCk6IElubGluZWQgZHVlIHRvIGhv
dG5lc3MuCisgICAgICAgIChKU0M6Om5leHRPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkpOiBJbmxp
bmVkIGR1ZSB0byBob3RuZXNzLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnN1Z2dlc3RlZE5l
d091dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSk6IElubGluZWQgZHVlIHRvIGhvdG5lc3MuCisgICAg
ICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICog
cnVudGltZS9WTS5oOgorICAgICAgICAqIHJ1bnRpbWUvV3JpdGVCYXJyaWVyLmg6CisgICAgICAg
IChKU0M6OldyaXRlQmFycmllckJhc2U8VW5rbm93bj46OmlzQ3VzdG9tR2V0dGVyU2V0dGVyKToK
KwogMjAxNC0wNi0wNCAgVGltb3RoeSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+
CiAKICAgICAgICAgaU9TIERlYnVnIGJ1aWxkIGZpeApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTY5NTg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zNjYsNiArMzY2LDcgQEAgc2V0KEph
dmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0NvbnNvbGVDbGllbnQuY3BwCiAgICAg
cnVudGltZS9Db25zb2xlUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvQ29uc3RydWN0RGF0YS5j
cHAKKyAgICBydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5jcHAKICAgICBydW50aW1lL0RhdGFW
aWV3LmNwcAogICAgIHJ1bnRpbWUvRGF0YVZpZXcuaAogICAgIHJ1bnRpbWUvRGF0ZUNvbnN0cnVj
dG9yLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCShyZXZp
c2lvbiAxNjk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02MTIsNiArNjEy
LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcQ29uc29sZUNsaWVudC5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXENvbnNvbGVQcm90b3R5
cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxDb25zdHJ1Y3RE
YXRhLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcQ3VzdG9tR2V0
dGVyU2V0dGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRGF0
YVZpZXcuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxEYXRlQ29u
c3RydWN0b3IuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxEYXRl
Q29udmVyc2lvbi5jcHAiIC8+CkBAIC0xMjY0LDYgKzEyNjUsNyBAQAogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxDb25zb2xlVHlwZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcQ29uc3RhbnRNb2RlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXENvbnN0cnVjdERhdGEuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcQ3VzdG9tR2V0dGVyU2V0dGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXERhdGFWaWV3LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXERhdGVDb25zdHJ1Y3Rvci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxEYXRlQ29udmVyc2lvbi5oIiAvPgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0
ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMTY5NTg5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC01NDYsNiArNTQ2LDkgQEAK
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcQ29uc3RydWN0RGF0YS5jcHAiPgog
ICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEN1c3RvbUdldHRlclNldHRlci5jcHAiPgorICAg
ICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXERhdGVDb25zdHJ1Y3Rvci5jcHAiPgogICAgICAgPEZp
bHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0yMTg5LDYgKzIxOTIs
OSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxDb25zdHJ1Y3REYXRhLmgi
PgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEN1c3RvbUdldHRlclNldHRlci5oIj4KKyAg
ICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxEYXRlQ29uc3RydWN0b3IuaCI+CiAgICAgICA8Rmls
dGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNzEyLDcgKzcxMiw3IEBACiAJCTE0NzRDMzNCMTZBQTJEOTUwMDYyRjAxRCAvKiBQcm90
b3R5cGVNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDE0RDg0NEEzMTZBQTJDNzAwMEE2NUFGMCAvKiBQcm90b3R5cGVNYXAuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDc0QzMzQzE2QUEyRDlCMDA2
MkYwMUQgLyogUHJvdG90eXBlTWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDE0RDg0NEEyMTZBQTJDNzAwMEE2NUFGMCAvKiBQcm90b3R5cGVNYXAu
Y3BwICovOyB9OwogCQkxNDc4Mjk3QjEzNzlFOEE4MDBBN0MyQTMgLyogSGFuZGxlVHlwZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NkZBNUE4MTM3
OEY2QjAwMDM2MjdBMyAvKiBIYW5kbGVUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTE0N0I4M0FDMEU2REI4QzkwMDQ3NzVBNCAvKiBCYXRj
aGVkVHJhbnNpdGlvbk9wdGltaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTQ3QjgzQUEwRTZEQjhDOTAwNDc3NUE0IC8qIEJhdGNoZWRUcmFuc2l0
aW9uT3B0aW1pemVyLmggKi87IH07CisJCTE0N0I4M0FDMEU2REI4QzkwMDQ3NzVBNCAvKiBCYXRj
aGVkVHJhbnNpdGlvbk9wdGltaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTQ3QjgzQUEwRTZEQjhDOTAwNDc3NUE0IC8qIEJhdGNoZWRUcmFuc2l0
aW9uT3B0aW1pemVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMTQ3Qjg0NjMwRTZERTZCMTAwNDc3NUE0IC8qIFB1dFByb3BlcnR5U2xvdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ3Qjg0NjIwRTZE
RTZCMTAwNDc3NUE0IC8qIFB1dFByb3BlcnR5U2xvdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0N0YzOUJEMTA3RUMzNzYwMDQyN0E0OCAvKiBB
cmdMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDRjYwNTExMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNwcCAqLzsgfTsKIAkJMTQ3RjM5
QkUxMDdFQzM3NjAwNDI3QTQ4IC8qIEFyZ3VtZW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI1N0RFNTBFMUY1MUM1MDAxNkI2QzkgLyogQXJn
dW1lbnRzLmNwcCAqLzsgfTsKQEAgLTc5MCw2ICs3OTAsOCBAQAogCQkxQ0FBOUEyMzE4RjRBMjIw
MDAwQTM2OUQgLyogSlNHbG9iYWxPYmplY3RQcm9maWxlckFnZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0FBOUEyMTE4RjRBMjIwMDAwQTM2OUQg
LyogSlNHbG9iYWxPYmplY3RQcm9maWxlckFnZW50LmggKi87IH07CiAJCTI2MDBCNUE2MTUyQkFB
QTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjAwQjVBNDE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJp
bmdKb2luZXIuY3BwICovOyB9OwogCQkyNjAwQjVBNzE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJp
bmdKb2luZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDI2MDBCNUE1MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5oICovOyB9OworCQky
QTExMTI0NTE5MkZDRTc5MDA1RUUxOEQgLyogQ3VzdG9tR2V0dGVyU2V0dGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBMTExMjQzMTkyRkNFNzkw
MDVFRTE4RCAvKiBDdXN0b21HZXR0ZXJTZXR0ZXIuY3BwICovOyB9OworCQkyQTExMTI0NjE5MkZD
RTc5MDA1RUUxOEQgLyogQ3VzdG9tR2V0dGVyU2V0dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQTExMTI0NDE5MkZDRTc5MDA1RUUxOEQgLyogQ3Vz
dG9tR2V0dGVyU2V0dGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMkEyODI1RDAxODM0MUYyRDAwODdGQkE5IC8qIERlbGF5ZWRSZWxlYXNlU2Nv
cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBMjgy
NUNGMTgzNDFGMkQwMDg3RkJBOSAvKiBEZWxheWVkUmVsZWFzZVNjb3BlLmggKi87IH07CiAJCTJB
NDhEMTkxMTc3MjM2NUIwMEM2NUE1RiAvKiBBUElDYWxsYmFja0Z1bmN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjExQjU3NDE3NkEyMjREMDAw
RTJBMjMgLyogQVBJQ2FsbGJhY2tGdW5jdGlvbi5oICovOyB9OwogCQkyQTRCQjdGMzE4QTQxMTc5
MDA4QTBGQ0QgLyogSlNNYW5hZ2VkVmFsdWVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE0QkI3RjIxOEE0MTE3OTAwOEEwRkNEIC8qIEpT
TWFuYWdlZFZhbHVlSW50ZXJuYWwuaCAqLzsgfTsKQEAgLTI1NjEsNiArMjU2Myw4IEBACiAJCTFD
QUE5QTIxMThGNEEyMjAwMDBBMzY5RCAvKiBKU0dsb2JhbE9iamVjdFByb2ZpbGVyQWdlbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHbG9iYWxPYmplY3RQcm9maWxlckFn
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2MDBCNUE0MTUyQkFBQTcwMDkx
RUU1RiAvKiBKU1N0cmluZ0pvaW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1N0cmluZ0pvaW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTI2MDBCNUE1MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0cmluZ0pvaW5lci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkyQTExMTI0MzE5MkZDRTc5MDA1RUUxOEQgLyogQ3VzdG9tR2V0dGVyU2V0
dGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN1c3RvbUdldHRl
clNldHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJBMTExMjQ0MTkyRkNF
NzkwMDVFRTE4RCAvKiBDdXN0b21HZXR0ZXJTZXR0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ3VzdG9tR2V0dGVyU2V0dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJBMjgyNUNGMTgzNDFGMkQwMDg3RkJBOSAvKiBEZWxheWVkUmVsZWFzZVNjb3BlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlbGF5ZWRSZWxlYXNlU2NvcGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkEzNDNGNzQxOEExNzQ4QjAwMzlCMDg1IC8q
IEdDU2VnbWVudGVkQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR0NT
ZWdtZW50ZWRBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQTM0M0Y3NzE4
QTE3NDlEMDAzOUIwODUgLyogR0NTZWdtZW50ZWRBcnJheUlubGluZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR0NTZWdtZW50ZWRBcnJheUlubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ1NTYsNiArNDU2MCw4IEBACiAJCQkJMTQyMEJFN0ExMEFB
NkREQjAwRjQ1NUQyIC8qIFdlYWtSYW5kb20uaCAqLywKIAkJCQlBN0RDQjc3OTEyRTNEOTA1MDA5
MTE5NDAgLyogV3JpdGVCYXJyaWVyLmggKi8sCiAJCQkJQzJCNkQ3NTIxOEEzMzc5MzAwNEE5MzAx
IC8qIFdyaXRlQmFycmllcklubGluZXMuaCAqLywKKwkJCQkyQTExMTI0MzE5MkZDRTc5MDA1RUUx
OEQgLyogQ3VzdG9tR2V0dGVyU2V0dGVyLmNwcCAqLywKKwkJCQkyQTExMTI0NDE5MkZDRTc5MDA1
RUUxOEQgLyogQ3VzdG9tR2V0dGVyU2V0dGVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJ1bnRp
bWU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNTQ5NSw2ICs1NTAxLDggQEAKIAkJ
CQkwRjZCMUNCOTE4NjEyNDRDMDA4NDVEOTcgLyogQXJpdHlDaGVja01vZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAvKiBBUk02NEFzc2VtYmxlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODZEM0IyQzQxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTQ3QjgzQUMwRTZEQjhDOTAwNDc3NUE0IC8qIEJhdGNo
ZWRUcmFuc2l0aW9uT3B0aW1pemVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkyQTExMTI0NjE5MkZD
RTc5MDA1RUUxOEQgLyogQ3VzdG9tR2V0dGVyU2V0dGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NTg0MDMyMDE4QkZGQkUxMDA1QTA4MTEgLyogSW5zcGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTJBQUJDREU3MThFRjI5NDIwMDAwMjA5NiAvKiBHQ0xvZ2dpbmcuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZFNTI0OEY5MTkxNDQyRDkwMEI3RkRFNCAvKiBWYXJpYWJsZVdhdGNocG9pbnRT
ZXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTU1MjUsNyArNTUzMyw2IEBACiAJCQkJODZE
M0IyQzUxMDE1NkJERTAwMjg2NUU3IC8qIEFzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTQxMTdFQTlGNTkwMEFCQjIxNyAvKiBBc3NlbWJs
eUhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3ODRBMjYxMTFEMTY2MjIwMDU3NzZBQyAv
KiBBU1RCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQkxNDdCODNBQzBFNkRCOEM5MDA0Nzc1
QTQgLyogQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2
NjczOUQyMTNCRkRFNzEwMDIzRDg3QyAvKiBCaWdJbnRlZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxNDgxNkUxQzE1NENDNTZDMDBCODA1NEMgLyogQmxvY2tBbGxvY2F0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMThDM0VDMEUxNkY1Q0QwMEIzNDQ2MCAvKiBCb29sZWFuT2JqZWN0LmggaW4g
SGVhZGVycyAqLywKQEAgLTY5NjYsNiArNjk3Myw3IEBACiAJCQkJMEZFRkM5QUExNjgxQTNCMzAw
NTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEYyMzVCRUQxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkZGQzk1QjE0RUY5MEFEMDBDNzI1MzIgLyogREZHUGhhc2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMkExMTEyNDUxOTJGQ0U3OTAwNUVFMThEIC8qIEN1c3Rv
bUdldHRlclNldHRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzhBOTc3QTE3OTczOEI4MDA5
REY3NDQgLyogREZHUGxhbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkJFMEY3NDE2QzFEQjA5
MDA4MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRkZDOTVEMTRFRjkwQjMwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludERhdGEuY3BwCShyZXZpc2lvbiAxNjk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDggKzEzNCw4
IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQogICAgIEFTU0VSVChtYXhG
cmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCA9PSA0MCk7CiAjZW5kaWYKICAgICBBU1NFUlQoU3Ry
aW5nVHlwZSA9PSA1KTsKLSAgICBBU1NFUlQoT2JqZWN0VHlwZSA9PSAxNyk7Ci0gICAgQVNTRVJU
KEZpbmFsT2JqZWN0VHlwZSA9PSAxOCk7CisgICAgQVNTRVJUKE9iamVjdFR5cGUgPT0gMTgpOwor
ICAgIEFTU0VSVChGaW5hbE9iamVjdFR5cGUgPT0gMTkpOwogICAgIEFTU0VSVChNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkID09IDEpOwogICAgIEFTU0VSVChJbXBsZW1lbnRzSGFzSW5zdGFuY2UgPT0g
Mik7CiAgICAgQVNTRVJUKEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgPT0gOCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCShyZXZpc2lvbiAxNjk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE0OSw4ICsxNDksOCBA
QCBjb25zdCBTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgPSAzMAogCiAjIFR5cGUgY29uc3RhbnRz
LgogY29uc3QgU3RyaW5nVHlwZSA9IDUKLWNvbnN0IE9iamVjdFR5cGUgPSAxNwotY29uc3QgRmlu
YWxPYmplY3RUeXBlID0gMTgKK2NvbnN0IE9iamVjdFR5cGUgPSAxOAorY29uc3QgRmluYWxPYmpl
Y3RUeXBlID0gMTkKIAogIyBUeXBlIGZsYWdzIGNvbnN0YW50cy4KIGNvbnN0IE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQgPSAxCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CYXRj
aGVkVHJhbnNpdGlvbk9wdGltaXplci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0JhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmgJKHJldmlzaW9uIDE2OTU4
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JhdGNoZWRUcmFuc2l0aW9uT3B0
aW1pemVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDggQEAgcHVibGljOgogICAgICAg
ICA6IG1fdm0oJnZtKQogICAgICAgICAsIG1fb2JqZWN0KG9iamVjdCkKICAgICB7CisgICAgICAg
IGlmICghbV9vYmplY3QtPnN0cnVjdHVyZSh2bSktPmlzRGljdGlvbmFyeSgpKQorICAgICAgICAg
ICAgbV9vYmplY3QtPmNvbnZlcnRUb0RpY3Rpb25hcnkodm0pOwogICAgIH0KIAogICAgIH5CYXRj
aGVkVHJhbnNpdGlvbk9wdGltaXplcigpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQ3VzdG9tR2V0dGVyU2V0dGVyLmgiCisKKyNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK25hbWVzcGFjZSBK
U0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoQ3VzdG9tR2V0
dGVyU2V0dGVyKTsKKworY29uc3QgQ2xhc3NJbmZvIEN1c3RvbUdldHRlclNldHRlcjo6c19pbmZv
ID0geyAiQ3VzdG9tR2V0dGVyU2V0dGVyIiwgMCwgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShD
dXN0b21HZXR0ZXJTZXR0ZXIpIH07CisKK3ZvaWQgY2FsbEN1c3RvbVNldHRlcihFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgY3VzdG9tR2V0dGVyU2V0dGVyLCBKU09iamVjdCogYmFzZSwgSlNWYWx1
ZSB0aGlzVmFsdWUsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpD
dXN0b21TZXR0ZXIgc2V0dGVyID0ganNDYXN0PEN1c3RvbUdldHRlclNldHRlcio+KGN1c3RvbUdl
dHRlclNldHRlciktPnNldHRlcigpOworICAgIGlmICghc2V0dGVyKQorICAgICAgICByZXR1cm47
CisgICAgc2V0dGVyKGV4ZWMsIGJhc2UsIEpTVmFsdWU6OmVuY29kZSh0aGlzVmFsdWUpLCBKU1Zh
bHVlOjplbmNvZGUodmFsdWUpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0N1c3RvbUdldHRl
clNldHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEN1c3RvbUdldHRlclNldHRlcl9oCisjZGVmaW5lIEN1c3RvbUdldHRlclNldHRlcl9o
CisKKyNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKKyNpbmNs
dWRlICJQdXRQcm9wZXJ0eVNsb3QuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIEN1c3RvbUdldHRlclNldHRlciA6IHB1YmxpYyBKU0NlbGwgewor
cHVibGljOgorICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CisKKyAgICB0eXBlZGVmIFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jIEN1c3RvbUdldHRlcjsKKyAgICB0eXBlZGVmIFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jIEN1c3RvbVNldHRlcjsKKworICAgIHN0YXRpYyBDdXN0b21HZXR0
ZXJTZXR0ZXIqIGNyZWF0ZShWTSYgdm0sIEN1c3RvbUdldHRlciBjdXN0b21HZXR0ZXIsIEN1c3Rv
bVNldHRlciBjdXN0b21TZXR0ZXIpCisgICAgeworICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXIq
IGN1c3RvbUdldHRlclNldHRlciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEN1c3RvbUdl
dHRlclNldHRlcj4odm0uaGVhcCkpIEN1c3RvbUdldHRlclNldHRlcih2bSwgY3VzdG9tR2V0dGVy
LCBjdXN0b21TZXR0ZXIpOworICAgICAgICBjdXN0b21HZXR0ZXJTZXR0ZXItPmZpbmlzaENyZWF0
aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIGN1c3RvbUdldHRlclNldHRlcjsKKyAgICB9CisKKyAg
ICBDdXN0b21HZXR0ZXJTZXR0ZXI6OkN1c3RvbUdldHRlciBnZXR0ZXIoKSBjb25zdCB7IHJldHVy
biBtX2dldHRlcjsgfQorICAgIEN1c3RvbUdldHRlclNldHRlcjo6Q3VzdG9tU2V0dGVyIHNldHRl
cigpIGNvbnN0IHsgcmV0dXJuIG1fc2V0dGVyOyB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEN1c3RvbUdldHRlclNldHRlclR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisgICAgICAgIAorICAgIERFQ0xB
UkVfRVhQT1JUX0lORk87CisKK3ByaXZhdGU6CisgICAgQ3VzdG9tR2V0dGVyU2V0dGVyKFZNJiB2
bSwgQ3VzdG9tR2V0dGVyIGdldHRlciwgQ3VzdG9tU2V0dGVyIHNldHRlcikKKyAgICAgICAgOiBK
U0NlbGwodm0sIHZtLmN1c3RvbUdldHRlclNldHRlclN0cnVjdHVyZS5nZXQoKSkKKyAgICAgICAg
LCBtX2dldHRlcihnZXR0ZXIpCisgICAgICAgICwgbV9zZXR0ZXIoc2V0dGVyKQorICAgIHsKKyAg
ICB9CisKKyAgICBDdXN0b21HZXR0ZXIgbV9nZXR0ZXI7CisgICAgQ3VzdG9tU2V0dGVyIG1fc2V0
dGVyOworfTsKKwordm9pZCBjYWxsQ3VzdG9tU2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUgY3Vz
dG9tR2V0dGVyU2V0dGVyLCBKU09iamVjdCogYmFzZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTVmFs
dWUgdmFsdWUpOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEN1c3RvbUdldHRl
clNldHRlcl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlLmNwcAkocmV2aXNpb24gMTY5NTg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2lu
Y2x1ZGUgIkJvb2xlYW5Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkJvb2xlYW5Qcm90b3R5cGUu
aCIKKyNpbmNsdWRlICJDdXN0b21HZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJFcnJvci5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIK
QEAgLTE1NCw2ICsxNTUsMTEgQEAgdm9pZCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3Rh
dGUqIAogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAorICAgICAgICAg
ICAgaWYgKGdzLmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkpIHsKKyAgICAgICAgICAgICAgICBjYWxs
Q3VzdG9tU2V0dGVyKGV4ZWMsIGdzLCBvYmosIHNsb3QudGhpc1ZhbHVlKCksIHZhbHVlKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIC8vIElm
IHRoZXJlJ3MgYW4gZXhpc3RpbmcgcHJvcGVydHkgb24gdGhlIG9iamVjdCBvciBvbmUgb2YgaXRz
IAogICAgICAgICAgICAgLy8gcHJvdG90eXBlcyBpdCBzaG91bGQgYmUgcmVwbGFjZWQsIHNvIGJy
ZWFrIGhlcmUuCiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHJldmlzaW9uIDE2OTU4OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjE0LDYg
KzIxNCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzU3RyaW5nKCkgY29uc3Q7CiAgICAgYm9vbCBp
c1ByaW1pdGl2ZSgpIGNvbnN0OwogICAgIGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdDsKKyAg
ICBib29sIGlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkgY29uc3Q7CiAgICAgYm9vbCBpc09iamVjdCgp
IGNvbnN0OwogICAgIGJvb2wgaW5oZXJpdHMoY29uc3QgQ2xhc3NJbmZvKikgY29uc3Q7CiAgICAg
ICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGlu
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlSW5saW5lcy5oCShyZXZpc2lvbiAxNjk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NTAsNiArNTUw
LDExIEBAIGlubGluZSBib29sIEpTVmFsdWU6OmlzR2V0dGVyU2V0dGVyKCkgY28KICAgICByZXR1
cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzR2V0dGVyU2V0dGVyKCk7CiB9CiAKK2lubGluZSBi
b29sIEpTVmFsdWU6OmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
aXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCk7Cit9CisKIGlubGlu
ZSBib29sIEpTVmFsdWU6OmlzT2JqZWN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gaXNDZWxsKCkg
JiYgYXNDZWxsKCktPmlzT2JqZWN0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGwuaAkocmV2aXNpb24gMTY5NTg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTkwLDYgKzkwLDcgQEAgcHVibGljOgog
ICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKICAgICBib29sIGlzT2JqZWN0KCkgY29uc3Q7CiAg
ICAgYm9vbCBpc0dldHRlclNldHRlcigpIGNvbnN0OworICAgIGJvb2wgaXNDdXN0b21HZXR0ZXJT
ZXR0ZXIoKSBjb25zdDsKICAgICBib29sIGlzUHJveHkoKSBjb25zdDsKICAgICBib29sIGluaGVy
aXRzKGNvbnN0IENsYXNzSW5mbyopIGNvbnN0OwogICAgIGJvb2wgaXNBUElWYWx1ZVdyYXBwZXIo
KSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGlu
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJ
bmxpbmVzLmgJKHJldmlzaW9uIDE2OTU4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDYgKzE1NiwxMSBAQCBp
bmxpbmUgYm9vbCBKU0NlbGw6OmlzR2V0dGVyU2V0dGVyKCkgY29uCiAgICAgcmV0dXJuIG1fdHlw
ZSA9PSBHZXR0ZXJTZXR0ZXJUeXBlOwogfQogCitpbmxpbmUgYm9vbCBKU0NlbGw6OmlzQ3VzdG9t
R2V0dGVyU2V0dGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90eXBlID09IEN1c3RvbUdldHRl
clNldHRlclR5cGU7Cit9CisKIGlubGluZSBib29sIEpTQ2VsbDo6aXNQcm94eSgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fdHlwZSA9PSBJbXB1cmVQcm94eVR5cGUgfHwgbV90eXBlID09IFB1cmVG
b3J3YXJkaW5nUHJveHlUeXBlOwpAQCAtMjIxLDcgKzIyNiw5IEBAIEFMV0FZU19JTkxJTkUgSlNW
YWx1ZSBKU0NlbGw6OmZhc3RHZXRPd24KIAogaW5saW5lIGJvb2wgSlNDZWxsOjpjYW5Vc2VGYXN0
R2V0T3duUHJvcGVydHkoY29uc3QgU3RydWN0dXJlJiBzdHJ1Y3R1cmUpCiB7Ci0gICAgcmV0dXJu
ICFzdHJ1Y3R1cmUuaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpICYmICFzdHJ1Y3R1cmUudHlw
ZUluZm8oKS5vdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoKTsKKyAgICByZXR1cm4gIXN0cnVj
dHVyZS5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgCisgICAgICAgICYmICFzdHJ1Y3R1cmUu
aGFzQ3VzdG9tR2V0dGVyU2V0dGVyUHJvcGVydGllcygpCisgICAgICAgICYmICFzdHJ1Y3R1cmUu
dHlwZUluZm8oKS5vdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoKTsKIH0KIAogaW5saW5lIGJv
b2wgSlNDZWxsOjp0b0Jvb2xlYW4oRXhlY1N0YXRlKiBleGVjKSBjb25zdApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDE2OTU4
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzQsMTYgKzE3NCw2IEBAIGNvbnN0IFNvdXJjZUNvZGUqIEpTRnVuY3Rp
b246OnNvdXJjZUNvZGUKICAgICByZXR1cm4gJmpzRXhlY3V0YWJsZSgpLT5zb3VyY2UoKTsKIH0K
ICAgICAKLWJvb2wgSlNGdW5jdGlvbjo6aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSBjb25zdAot
ewotICAgIHJldHVybiBpc0hvc3RGdW5jdGlvbigpIHx8IGlzQnVpbHRpbkZ1bmN0aW9uKCk7Ci19
Ci0KLWJvb2wgSlNGdW5jdGlvbjo6aXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdAotewotICAgIHJl
dHVybiAhaXNIb3N0RnVuY3Rpb24oKSAmJiBqc0V4ZWN1dGFibGUoKS0+aXNCdWlsdGluRnVuY3Rp
b24oKTsKLX0KLQogdm9pZCBKU0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU0Z1bmN0aW9uKj4oY2VsbCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZpc2lvbiAxNjk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw4ICsxNDgs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX2FsbG9jYXRpb25Qcm9m
aWxlV2F0Y2hwb2ludDsKICAgICAgICAgfQogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJv
b2wgaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSBjb25zdDsKLSAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0OworICAgICAgICBib29sIGlzSG9z
dE9yQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rp
b24oKSBjb25zdDsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0hvc3RGdW5jdGlv
bk5vbklubGluZSgpIGNvbnN0OwogCiAgICAgcHJvdGVjdGVkOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCShyZXZpc2lvbiAx
Njk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5l
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSwxNiBAQCBpbmxpbmUgYm9vbCBKU0Z1bmN0
aW9uOjppc0hvc3RGdW5jdGlvbigpCiAgICAgcmV0dXJuIG1fZXhlY3V0YWJsZS0+aXNIb3N0RnVu
Y3Rpb24oKTsKIH0KIAoraW5saW5lIGJvb2wgSlNGdW5jdGlvbjo6aXNCdWlsdGluRnVuY3Rpb24o
KSBjb25zdAoreworICAgIHJldHVybiAhaXNIb3N0RnVuY3Rpb24oKSAmJiBqc0V4ZWN1dGFibGUo
KS0+aXNCdWlsdGluRnVuY3Rpb24oKTsKK30KKworaW5saW5lIGJvb2wgSlNGdW5jdGlvbjo6aXNI
b3N0T3JCdWlsdGluRnVuY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBpc0hvc3RGdW5jdGlv
bigpIHx8IGlzQnVpbHRpbkZ1bmN0aW9uKCk7Cit9CisKIGlubGluZSBOYXRpdmVGdW5jdGlvbiBK
U0Z1bmN0aW9uOjpuYXRpdmVGdW5jdGlvbigpCiB7CiAgICAgQVNTRVJUKGlzSG9zdEZ1bmN0aW9u
Tm9uSW5saW5lKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcAkocmV2aXNpb24gMTY5NTg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVk
ZSAiQ29waWVkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ29weVZpc2l0b3IuaCIKICNpbmNs
dWRlICJDb3B5VmlzaXRvcklubGluZXMuaCIKKyNpbmNsdWRlICJDdXN0b21HZXR0ZXJTZXR0ZXIu
aCIKICNpbmNsdWRlICJEYXRlUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiRXJyb3JDb25zdHJ1Y3Rv
ci5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKQEAgLTM4Nyw4ICszODgsMTMgQEAgdm9pZCBK
U09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YQogICAgICAgICAgICAgICAgIGlmICgh
dGhpc09iamVjdC0+c3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQogICAgICAgICAgICAgICAg
ICAgICBzbG90LnNldENhY2hlYWJsZVNldHRlcihvYmosIG9mZnNldCk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgQVNTRVJUKCEo
YXR0cmlidXRlcyAmIEFjY2Vzc29yKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
Z3MuaXNDdXN0b21HZXR0ZXJTZXR0ZXIoKSkgeworICAgICAgICAgICAgICAgIGNhbGxDdXN0b21T
ZXR0ZXIoZXhlYywgZ3MsIG9iaiwgc2xvdC50aGlzVmFsdWUoKSwgdmFsdWUpOworICAgICAgICAg
ICAgICAgIHNsb3Quc2V0Q3VzdG9tUHJvcGVydHkob2JqLCBqc0Nhc3Q8Q3VzdG9tR2V0dGVyU2V0
dGVyKj4oZ3MuYXNDZWxsKCkpLT5zZXR0ZXIoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUKCEoYXR0cmlidXRlcyAmIEFjY2Vzc29y
KSk7CiAKICAgICAgICAgICAgIC8vIElmIHRoZXJlJ3MgYW4gZXhpc3RpbmcgcHJvcGVydHkgb24g
dGhlIG9iamVjdCBvciBvbmUgb2YgaXRzIAogICAgICAgICAgICAgLy8gcHJvdG90eXBlcyBpdCBz
aG91bGQgYmUgcmVwbGFjZWQsIHNvIGJyZWFrIGhlcmUuCkBAIC0xMjI0LDYgKzEyMzAsMjEgQEAg
dm9pZCBKU09iamVjdDo6cHV0RGlyZWN0QWNjZXNzb3IoRXhlY1N0YQogICAgIHB1dERpcmVjdE5v
bkluZGV4QWNjZXNzb3IoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRl
cyk7CiB9CiAKK3ZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKFZNJiB2bSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmli
dXRlcykKK3sKKyAgICBBU1NFUlQocHJvcGVydHlOYW1lLmFzSW5kZXgoKSA9PSBQcm9wZXJ0eU5h
bWU6Ok5vdEFuSW5kZXgpOworCisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhpcyk7CisgICAg
cHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5Pih2bSwgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2xvdCwgZ2V0Q2FsbGFibGVPYmplY3QodmFsdWUpKTsK
KworICAgIEFTU0VSVChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5
KTsKKworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKKyAg
ICBpZiAoYXR0cmlidXRlcyAmIFJlYWRPbmx5KQorICAgICAgICBzdHJ1Y3R1cmUtPnNldENvbnRh
aW5zUmVhZE9ubHlQcm9wZXJ0aWVzKCk7CisgICAgc3RydWN0dXJlLT5zZXRIYXNDdXN0b21HZXR0
ZXJTZXR0ZXJQcm9wZXJ0aWVzKCk7Cit9CisKIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdE5vbklu
ZGV4QWNjZXNzb3IoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRo
aXMpOwpAQCAtMTY2NiwxMCArMTY4NywxOCBAQCBORVZFUl9JTkxJTkUgdm9pZCBKU09iamVjdDo6
ZmlsbEdldHRlclByCiAgICAgICAgIHNsb3Quc2V0R2V0dGVyU2xvdCh0aGlzLCBhdHRyaWJ1dGVz
LCBqc0Nhc3Q8R2V0dGVyU2V0dGVyKj4oZ2V0dGVyU2V0dGVyKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0KICAgICBzbG90LnNldENhY2hlYWJsZUdldHRlclNsb3QodGhpcywgYXR0cmlidXRl
cywganNDYXN0PEdldHRlclNldHRlcio+KGdldHRlclNldHRlciksIG9mZnNldCk7CiB9CiAKK05F
VkVSX0lOTElORSB2b2lkIEpTT2JqZWN0OjpmaWxsQ3VzdG9tR2V0dGVyUHJvcGVydHlTbG90KFBy
b3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBjdXN0b21HZXR0ZXJTZXR0ZXIsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMpCit7CisgICAgaWYgKHN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkgeworICAg
ICAgICBzbG90LnNldEN1c3RvbSh0aGlzLCBhdHRyaWJ1dGVzLCBqc0Nhc3Q8Q3VzdG9tR2V0dGVy
U2V0dGVyKj4oY3VzdG9tR2V0dGVyU2V0dGVyKS0+Z2V0dGVyKCkpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIHNsb3Quc2V0Q2FjaGVhYmxlQ3VzdG9tKHRoaXMsIGF0dHJpYnV0ZXMsIGpz
Q2FzdDxDdXN0b21HZXR0ZXJTZXR0ZXIqPihjdXN0b21HZXR0ZXJTZXR0ZXIpLT5nZXR0ZXIoKSk7
Cit9CisKIHZvaWQgSlNPYmplY3Q6OnB1dEluZGV4ZWREZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhl
YywgU3BhcnNlQXJyYXlFbnRyeSogZW50cnlJbk1hcCwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yLCBQcm9wZXJ0eURlc2NyaXB0b3ImIG9sZERlc2NyaXB0b3IpCiB7CiAgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKQEAgLTI2NjAsMTQgKzI2ODksNiBAQCBib29sIEpTT2JqZWN0
OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjCiAgICAgcmV0dXJuIG9iamVjdC0+ZGVmaW5lT3du
Tm9uSW5kZXhQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhj
ZXB0aW9uKTsKIH0KIAotYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90U2xvdyhFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKLXsKLSAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKLSAgICBpZiAo
aSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpCi0gICAgICAgIHJldHVybiBnZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4KHRoaXMsIGV4ZWMsIGksIHNsb3QpOwotICAgIHJldHVybiBmYWxzZTsK
LX0KLQogSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQogewogICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBtZXNzYWdlKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDE2OTU4OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2Nyw2
ICs0NjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihW
TSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDApOwogICAg
IHZvaWQgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcihWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgdm9pZCBwdXREaXJlY3RBY2Nlc3NvcihFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IoVk0mLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgYm9vbCBoYXNQcm9wZXJ0eShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpIGNvbnN0
OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzUHJvcGVydHkoRXhlY1N0YXRlKiwgdW5z
aWduZWQgcHJvcGVydHlOYW1lKSBjb25zdDsKQEAgLTU3Myw2ICs1NzQsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCByZW1vdmVEaXJlY3QoVk0mLCBQcm9wZXJ0eU5hbWUpOyAvLyBSZXR1cm4gdHJ1ZSBp
ZiBhbnl0aGluZyBpcyByZW1vdmVkLgogICAgIGJvb2wgaGFzQ3VzdG9tUHJvcGVydGllcygpIHsg
cmV0dXJuIHN0cnVjdHVyZSgpLT5kaWRUcmFuc2l0aW9uKCk7IH0KICAgICBib29sIGhhc0dldHRl
clNldHRlclByb3BlcnRpZXMoKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0dGVy
UHJvcGVydGllcygpOyB9CisgICAgYm9vbCBoYXNDdXN0b21HZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVz
KCkgeyByZXR1cm4gc3RydWN0dXJlKCktPmhhc0N1c3RvbUdldHRlclNldHRlclByb3BlcnRpZXMo
KTsgfQogCiAgICAgLy8gcHV0T3duRGF0YVByb3BlcnR5IGhhcyAncHV0JyBsaWtlIHNlbWFudGlj
cywgaG93ZXZlciB0aGlzIG1ldGhvZDoKICAgICAvLyAgLSBhc3N1bWVzIHRoZSBvYmplY3QgY29u
dGFpbnMgbm8gb3duIGdldHRlci9zZXR0ZXIgcHJvcGVydGllcy4KQEAgLTU4Nyw3ICs1ODksNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBwdXREaXJlY3RVbmRlZmluZWQoUHJvcGVydHlPZmZzZXQgb2Zm
c2V0KSB7IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPnNldFVuZGVmaW5lZCgpOyB9CiAKICAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0
aCwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAg
SlNGdW5jdGlvbiogcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBjb25zdCBQcm9wZXJ0eU5hbWUmLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU0Z1bmN0aW9uKiBwdXREaXJlY3RCdWls
dGluRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIEZ1
bmN0aW9uRXhlY3V0YWJsZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIEpTRnVuY3Rpb24q
IHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKTsKICAgICB2b2lkIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2ln
bmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKTsKIApAQCAtNjIzLDYgKzYyNSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRT
dHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5KFZNJiwgdW5zaWduZWQgb2xk
Q2FwYWNpdHksIFN0cnVjdHVyZSopOwogICAgIHZvaWQgc2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0
ZVN0b3JhZ2VJZk5lY2Vzc2FyeShWTSYsIFN0cnVjdHVyZSopOwogCisgICAgdm9pZCBjb252ZXJ0
VG9EaWN0aW9uYXJ5KFZNJiB2bSkKKyAgICB7CisgICAgICAgIHNldFN0cnVjdHVyZSh2bSwgU3Ry
dWN0dXJlOjp0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUodm0p
KSk7CisgICAgfQorCiAgICAgdm9pZCBmbGF0dGVuRGljdGlvbmFyeU9iamVjdChWTSYgdm0pCiAg
ICAgewogICAgICAgICBzdHJ1Y3R1cmUodm0pLT5mbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSh2
bSwgdGhpcyk7CkBAIC05NTIsNiArOTU5LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaW5saW5l
R2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIFZNJiwgU3RydWN0dXJlJiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbGxHZXR0
ZXJQcm9wZXJ0eVNsb3QoUHJvcGVydHlTbG90JiwgSlNWYWx1ZSwgdW5zaWduZWQsIFByb3BlcnR5
T2Zmc2V0KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbGxDdXN0b21HZXR0ZXJQcm9w
ZXJ0eVNsb3QoUHJvcGVydHlTbG90JiwgSlNWYWx1ZSwgdW5zaWduZWQpOwogCiAgICAgY29uc3Qg
SGFzaFRhYmxlVmFsdWUqIGZpbmRQcm9wZXJ0eUhhc2hFbnRyeShWTSYsIFByb3BlcnR5TmFtZSkg
Y29uc3Q7CiAgICAgICAgIApAQCAtOTY0LDcgKzk3Miw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWdu
ZWQgZ2V0TmV3VmVjdG9yTGVuZ3RoKHVuc2lnbmVkIGN1cnJlbnRWZWN0b3JMZW5ndGgsIHVuc2ln
bmVkIGN1cnJlbnRMZW5ndGgsIHVuc2lnbmVkIGRlc2lyZWRMZW5ndGgpOwogICAgIHVuc2lnbmVk
IGdldE5ld1ZlY3Rvckxlbmd0aCh1bnNpZ25lZCBkZXNpcmVkTGVuZ3RoKTsKIAotICAgIEpTX0VY
UE9SVF9QUklWQVRFIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90U2xvdyhFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90U2xv
dyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICAKICAg
ICBBcnJheVN0b3JhZ2UqIGNvbnN0cnVjdENvbnZlcnRlZEFycmF5U3RvcmFnZVdpdGhvdXRDb3B5
aW5nRWxlbWVudHMoVk0mLCB1bnNpZ25lZCBuZWVkZWRMZW5ndGgpOwogICAgICAgICAKQEAgLTEy
MTMsNiArMTIyMSw4IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6aW5saW5lR2V0T3cK
ICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGdldERpcmVjdChvZmZzZXQpOwogICAgICAgICBpZiAo
c3RydWN0dXJlLmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSAmJiB2YWx1ZS5pc0dldHRlclNl
dHRlcigpKQogICAgICAgICAgICAgZmlsbEdldHRlclByb3BlcnR5U2xvdChzbG90LCB2YWx1ZSwg
YXR0cmlidXRlcywgb2Zmc2V0KTsKKyAgICAgICAgZWxzZSBpZiAoc3RydWN0dXJlLmhhc0N1c3Rv
bUdldHRlclNldHRlclByb3BlcnRpZXMoKSAmJiB2YWx1ZS5pc0N1c3RvbUdldHRlclNldHRlcigp
KQorICAgICAgICAgICAgZmlsbEN1c3RvbUdldHRlclByb3BlcnR5U2xvdChzbG90LCB2YWx1ZSwg
YXR0cmlidXRlcyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhp
cywgYXR0cmlidXRlcywgdmFsdWUsIG9mZnNldCk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAt
MTIyMSw2ICsxMjMxLDE0IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6aW5saW5lR2V0
T3cKICAgICByZXR1cm4gZ2V0T3duUHJvcGVydHlTbG90U2xvdyhleGVjLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogfQogCitpbmxpbmUgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90U2xv
dyhFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYgc2xvdCkKK3sKKyAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKKyAg
ICBpZiAoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpCisgICAgICAgIHJldHVybiBnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KHRoaXMsIGV4ZWMsIGksIHNsb3QpOworICAgIHJldHVybiBm
YWxzZTsKK30KKwogLy8gSXQgbWF5IHNlZW0gY3JhenkgdG8gaW5saW5lIGEgZnVuY3Rpb24gdGhp
cyBsYXJnZSwgZXNwZWNpYWxseSBhIHZpcnR1YWwgZnVuY3Rpb24sCiAvLyBidXQgaXQgbWFrZXMg
YSBiaWcgZGlmZmVyZW5jZSB0byBwcm9wZXJ0eSBsb29rdXAgdGhhdCBkZXJpdmVkIGNsYXNzZXMg
Y2FuIGlubGluZSB0aGVpcgogLy8gYmFzZSBjbGFzcyBjYWxsIHRvIHRoaXMuCkBAIC0xNDQwLDYg
KzE0NTgsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0T3duRGF0YVByb3BlcnR5CiAgICAg
QVNTRVJUKHZhbHVlKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6Omhl
YXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwogICAgIEFTU0VSVCghc3RydWN0dXJlKCkt
Pmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSk7CisgICAgQVNTRVJUKCFzdHJ1Y3R1cmUoKS0+
aGFzQ3VzdG9tR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKTsKIAogICAgIHJldHVybiBwdXREaXJl
Y3RJbnRlcm5hbDxQdXRNb2RlUHV0Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCwg
Z2V0Q2FsbGFibGVPYmplY3QodmFsdWUpKTsKIH0KQEAgLTE0NDcsNiArMTQ2Niw3IEBAIGlubGlu
ZSBib29sIEpTT2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHkKIGlubGluZSB2b2lkIEpTT2JqZWN0
OjpwdXREaXJlY3QoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0ZXJT
ZXR0ZXIoKSAmJiAhKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOworICAgIEFTU0VSVCghdmFsdWUu
aXNDdXN0b21HZXR0ZXJTZXR0ZXIoKSk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhpcyk7
CiAgICAgcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5Pih2bSwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2xvdCwgZ2V0Q2FsbGFibGVPYmplY3QodmFs
dWUpKTsKIH0KQEAgLTE0NTQsNiArMTQ3NCw3IEBAIGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXRE
aXJlY3QoVk0mIHZtLCAKIGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3QoVk0mIHZtLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0dldHRlclNldHRlcigpKTsKKyAgICBBU1NF
UlQoIXZhbHVlLmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkpOwogICAgIHB1dERpcmVjdEludGVybmFs
PFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNs
b3QsIGdldENhbGxhYmxlT2JqZWN0KHZhbHVlKSk7CiB9CiAKQEAgLTE0NjEsNiArMTQ4Miw3IEBA
IGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RXaXRob3V0VHIKIHsKICAgICBEZWZlckdD
IGRlZmVyR0Modm0uaGVhcCk7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0dldHRlclNldHRlcigpICYm
ICEoYXR0cmlidXRlcyAmIEFjY2Vzc29yKSk7CisgICAgQVNTRVJUKCF2YWx1ZS5pc0N1c3RvbUdl
dHRlclNldHRlcigpKTsKICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IG1fYnV0dGVyZmx5
LmdldCgpOwogICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdl
KCkpCiAgICAgICAgIG5ld0J1dHRlcmZseSA9IGdyb3dPdXRPZkxpbmVTdG9yYWdlKHZtLCBzdHJ1
Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgc3RydWN0dXJlKCktPnN1Z2dlc3RlZE5ld091
dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZS5oCShyZXZpc2lvbiAxNjk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQCBlbnVtIEpT
VHlwZSA6IHVpbnQ4X3QgewogICAgIC8vIFRoZSBDb21wb3VuZFR5cGUgdmFsdWUgbXVzdCBjb21l
IGJlZm9yZSBhbnkgSlNUeXBlIHRoYXQgbWF5IGhhdmUgY2hpbGRyZW4uCiAgICAgQ29tcG91bmRU
eXBlLAogICAgIEdldHRlclNldHRlclR5cGUsCisgICAgQ3VzdG9tR2V0dGVyU2V0dGVyVHlwZSwK
ICAgICBBUElWYWx1ZVdyYXBwZXJUeXBlLAogCiAgICAgRXZhbEV4ZWN1dGFibGVUeXBlLApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgJKHJldmlzaW9uIDE2OTU4OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMSw3ICsyMSwxMCBAQAogI2lmbmRlZiBMb29rdXBfaAogI2RlZmluZSBMb29rdXBfaAog
CisjaW5jbHVkZSAiQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCIKICNpbmNsdWRlICJDYWxs
RnJhbWUuaCIKKyNpbmNsdWRlICJDdXN0b21HZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJJZGVu
dGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIklkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgpAQCAtMjkwLDYgKzI5MywzNCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcHV0RW50cnkoZXhlYywgZW50cnksIGJhc2UsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisK
KyAgICBpbmxpbmUgdm9pZCByZWlmeVN0YXRpY1Byb3BlcnRpZXMoVk0mIHZtLCBjb25zdCBIYXNo
VGFibGUmIHRhYmxlLCBKU09iamVjdCogdGhpc09iaikKKyAgICB7CisgICAgICAgIEJhdGNoZWRU
cmFuc2l0aW9uT3B0aW1pemVyIHRyYW5zaXRpb25PcHRpbWl6ZXIodm0sIHRoaXNPYmopOworICAg
ICAgICBmb3IgKGF1dG8gaXRlciA9IHRhYmxlLmJlZ2luKHZtKTsgaXRlciAhPSB0YWJsZS5lbmQo
dm0pOyArK2l0ZXIpIHsKKyAgICAgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lKCZ2bSwg
aXRlci5rZXkoKSk7CisgICAgICAgICAgICBjb25zdCBIYXNoVGFibGVWYWx1ZSogZW50cnkgPSBp
dGVyLnZhbHVlKCk7CisgICAgICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRlcygpICYgQnVpbHRp
bikgeworICAgICAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbih2
bSwgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgZW50cnktPmJ1aWx0aW5H
ZW5lcmF0b3IoKSh2bSksIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOworICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRl
cygpICYgRnVuY3Rpb24pIHsKKyAgICAgICAgICAgICAgICB0aGlzT2JqLT5wdXREaXJlY3ROYXRp
dmVGdW5jdGlvbih2bSwgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgZW50
cnktPmZ1bmN0aW9uTGVuZ3RoKCksCisgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5mdW5jdGlv
bigpLCBlbnRyeS0+aW50cmluc2ljKCksIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOworICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaXRlci0+
YXR0cmlidXRlcygpICYgQWNjZXNzb3IpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXIqIGN1c3RvbUdldHRlclNldHRlciA9
IEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBlbnRyeS0+cHJvcGVydHlHZXR0ZXIoKSwg
ZW50cnktPnByb3BlcnR5UHV0dGVyKCkpOworICAgICAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0
Q3VzdG9tQWNjZXNzb3Iodm0sIHByb3BlcnR5TmFtZSwgY3VzdG9tR2V0dGVyU2V0dGVyLCBlbnRy
eS0+YXR0cmlidXRlcygpKTsKKyAgICAgICAgfQorICAgIH0KKwogfSAvLyBuYW1lc3BhY2UgSlND
CiAKICNlbmRpZiAvLyBMb29rdXBfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlEZXNjcmlwdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgJKHJldmlzaW9uIDE2OTU4OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAg
ICAgICAgICBBU1NFUlQobV92YWx1ZSk7CiAgICAgICAgICAgICBBU1NFUlQoIW1fdmFsdWUuaXNH
ZXR0ZXJTZXR0ZXIoKSk7CisgICAgICAgICAgICBBU1NFUlQoIW1fdmFsdWUuaXNDdXN0b21HZXR0
ZXJTZXR0ZXIoKSk7CiAgICAgICAgIH0KICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCB3
cml0YWJsZSgpIGNvbnN0OwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGVudW1lcmFi
bGUoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmNwcAkocmV2aXNpb24gMTY5NTg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDYgKzE2OCw3IEBAIFN0cnVj
dHVyZTo6U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmoKICAgICAsIG1fZGljdGlvbmFyeUtp
bmQoTm9uZURpY3Rpb25hcnlLaW5kKQogICAgICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUoZmFs
c2UpCiAgICAgLCBtX2hhc0dldHRlclNldHRlclByb3BlcnRpZXMoY2xhc3NJbmZvLT5oYXNTdGF0
aWNTZXR0ZXJPclJlYWRvbmx5UHJvcGVydGllcyh2bSkpCisgICAgLCBtX2hhc0N1c3RvbUdldHRl
clNldHRlclByb3BlcnRpZXMoZmFsc2UpCiAgICAgLCBtX2hhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0
ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8oY2xhc3NJbmZvLT5oYXNTdGF0aWNTZXR0ZXJPclJl
YWRvbmx5UHJvcGVydGllcyh2bSkpCiAgICAgLCBtX2hhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVz
KGZhbHNlKQogICAgICwgbV9hdHRyaWJ1dGVzSW5QcmV2aW91cygwKQpAQCAtMTk1LDYgKzE5Niw3
IEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKFZNJiB2bSkKICAgICAsIG1fZGljdGlvbmFyeUtpbmQo
Tm9uZURpY3Rpb25hcnlLaW5kKQogICAgICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUoZmFsc2Up
CiAgICAgLCBtX2hhc0dldHRlclNldHRlclByb3BlcnRpZXMobV9jbGFzc0luZm8tPmhhc1N0YXRp
Y1NldHRlck9yUmVhZG9ubHlQcm9wZXJ0aWVzKHZtKSkKKyAgICAsIG1faGFzQ3VzdG9tR2V0dGVy
U2V0dGVyUHJvcGVydGllcyhmYWxzZSkKICAgICAsIG1faGFzUmVhZE9ubHlPckdldHRlclNldHRl
clByb3BlcnRpZXNFeGNsdWRpbmdQcm90byhtX2NsYXNzSW5mby0+aGFzU3RhdGljU2V0dGVyT3JS
ZWFkb25seVByb3BlcnRpZXModm0pKQogICAgICwgbV9oYXNOb25FbnVtZXJhYmxlUHJvcGVydGll
cyhmYWxzZSkKICAgICAsIG1fYXR0cmlidXRlc0luUHJldmlvdXMoMCkKQEAgLTIyMSw2ICsyMjMs
NyBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShWTSYgdm0sIGNvbnN0IFN0cnVjCiAgICAgLCBtX2Rp
Y3Rpb25hcnlLaW5kKHByZXZpb3VzLT5tX2RpY3Rpb25hcnlLaW5kKQogICAgICwgbV9pc1Bpbm5l
ZFByb3BlcnR5VGFibGUoZmFsc2UpCiAgICAgLCBtX2hhc0dldHRlclNldHRlclByb3BlcnRpZXMo
cHJldmlvdXMtPm1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcykKKyAgICAsIG1faGFzQ3VzdG9t
R2V0dGVyU2V0dGVyUHJvcGVydGllcyhwcmV2aW91cy0+bV9oYXNDdXN0b21HZXR0ZXJTZXR0ZXJQ
cm9wZXJ0aWVzKQogICAgICwgbV9oYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4
Y2x1ZGluZ1Byb3RvKHByZXZpb3VzLT5tX2hhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0
aWVzRXhjbHVkaW5nUHJvdG8pCiAgICAgLCBtX2hhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVzKHBy
ZXZpb3VzLT5tX2hhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVzKQogICAgICwgbV9hdHRyaWJ1dGVz
SW5QcmV2aW91cygwKQpAQCAtMzE3LDE4ICszMjAsNiBAQCB2b2lkIFN0cnVjdHVyZTo6bWF0ZXJp
YWxpemVQcm9wZXJ0eU1hcChWCiAgICAgY2hlY2tPZmZzZXRDb25zaXN0ZW5jeSgpOwogfQogCi1p
bmxpbmUgc2l6ZV90IG5leHRPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoc2l6ZV90IGN1cnJlbnRD
YXBhY2l0eSkKLXsKLSAgICBpZiAoIWN1cnJlbnRDYXBhY2l0eSkKLSAgICAgICAgcmV0dXJuIGlu
aXRpYWxPdXRPZkxpbmVDYXBhY2l0eTsKLSAgICByZXR1cm4gY3VycmVudENhcGFjaXR5ICogb3V0
T2ZMaW5lR3Jvd3RoRmFjdG9yOwotfQotCi1zaXplX3QgU3RydWN0dXJlOjpzdWdnZXN0ZWROZXdP
dXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKQotewotICAgIHJldHVybiBuZXh0T3V0T2ZMaW5lU3Rv
cmFnZUNhcGFjaXR5KG91dE9mTGluZUNhcGFjaXR5KCkpOwotfQotIAogdm9pZCBTdHJ1Y3R1cmU6
OmRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCiB7CiAgICAgU3RyaW5nSW1wbCogcmVwID0gcHJvcGVydHlOYW1lLnVpZCgpOwpAQCAt
ODk4LDI1ICs4ODksNiBAQCBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmdldENvbmN1cnJlbnRs
CiAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CiB9CiAKLVByb3BlcnR5T2Zmc2V0IFN0cnVjdHVy
ZTo6Z2V0KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJp
YnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpCi17Ci0gICAgQVNTRVJUKCFpc0NvbXBpbGF0
aW9uVGhyZWFkKCkpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gaW5m
bygpKTsKLQotICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKLSAgICBtYXRlcmlhbGl6ZVBy
b3BlcnR5TWFwSWZOZWNlc3Nhcnkodm0sIGRlZmVyR0MpOwotICAgIGlmICghcHJvcGVydHlUYWJs
ZSgpKQotICAgICAgICByZXR1cm4gaW52YWxpZE9mZnNldDsKLQotICAgIFByb3BlcnR5TWFwRW50
cnkqIGVudHJ5ID0gcHJvcGVydHlUYWJsZSgpLT5nZXQocHJvcGVydHlOYW1lLnVpZCgpKTsKLSAg
ICBpZiAoIWVudHJ5KQotICAgICAgICByZXR1cm4gaW52YWxpZE9mZnNldDsKLQotICAgIGF0dHJp
YnV0ZXMgPSBlbnRyeS0+YXR0cmlidXRlczsKLSAgICBzcGVjaWZpY1ZhbHVlID0gZW50cnktPnNw
ZWNpZmljVmFsdWUuZ2V0KCk7Ci0gICAgcmV0dXJuIGVudHJ5LT5vZmZzZXQ7Ci19Ci0KIGJvb2wg
U3RydWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlvbihWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCiB7CiAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDE2OTU4OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTgsNyArMTE4LDcgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNoYW5nZVByb3RvdHlwZVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBKU1Zh
bHVlIHByb3RvdHlwZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSog
ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1l
KTsKICAgICBzdGF0aWMgU3RydWN0dXJlKiBhdHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKFZNJiwg
U3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKLSAgICBzdGF0
aWMgU3RydWN0dXJlKiB0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKFZNJiwgU3RydWN0
dXJlKik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogdG9DYWNoZWFi
bGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSopOwogICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIHRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSop
OwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHNlYWxUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKik7
CiAgICAgc3RhdGljIFN0cnVjdHVyZSogZnJlZXplVHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSop
OwpAQCAtMTMwLDkgKzEzMCw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzRXh0ZW5zaWJsZSgpIGNv
bnN0IHsgcmV0dXJuICFtX3ByZXZlbnRFeHRlbnNpb25zOyB9CiAgICAgYm9vbCBkaWRUcmFuc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kaWRUcmFuc2l0aW9uOyB9CiAgICAgYm9vbCBwdXRXaWxs
R3Jvd091dE9mTGluZVN0b3JhZ2UoKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzaXplX3Qgc3Vn
Z2VzdGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KCk7IAorICAgIHNpemVfdCBzdWdnZXN0
ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKTsgCiAKLSAgICBTdHJ1Y3R1cmUqIGZsYXR0
ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKFZNJiwgSlNPYmplY3QqKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBTdHJ1Y3R1cmUqIGZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKFZNJiwgSlNPYmplY3Qq
KTsKIAogICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwogICAg
IHN0YXRpYyBjb25zdCBib29sIGhhc0ltbW9ydGFsU3RydWN0dXJlID0gdHJ1ZTsKQEAgLTI2NCw3
ICsyNjQsNyBAQCBwdWJsaWM6CiAKICAgICBQcm9wZXJ0eU9mZnNldCBnZXQoVk0mLCBQcm9wZXJ0
eU5hbWUpOwogICAgIFByb3BlcnR5T2Zmc2V0IGdldChWTSYsIGNvbnN0IFdURjo6U3RyaW5nJiBu
YW1lKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBQcm9wZXJ0eU9mZnNldCBnZXQoVk0mLCBQcm9w
ZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKTsK
KyAgICBQcm9wZXJ0eU9mZnNldCBnZXQoVk0mLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRy
aWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKTsKIAogICAgIFByb3BlcnR5T2Zmc2V0IGdl
dENvbmN1cnJlbnRseShWTSYsIFN0cmluZ0ltcGwqIHVpZCk7CiAgICAgUHJvcGVydHlPZmZzZXQg
Z2V0Q29uY3VycmVudGx5KFZNJiwgU3RyaW5nSW1wbCogdWlkLCB1bnNpZ25lZCYgYXR0cmlidXRl
cywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSk7CkBAIC0yNzcsNiArMjc3LDEwIEBAIHB1YmxpYzoK
ICAgICAgICAgaWYgKCFpc19fcHJvdG9fXykKICAgICAgICAgICAgIG1faGFzUmVhZE9ubHlPckdl
dHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90byA9IHRydWU7CiAgICAgfQorCisgICAg
Ym9vbCBoYXNDdXN0b21HZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9o
YXNDdXN0b21HZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzOyB9CisgICAgdm9pZCBzZXRIYXNDdXN0b21H
ZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgeyBtX2hhc0N1c3RvbUdldHRlclNldHRlclByb3BlcnRp
ZXMgPSB0cnVlOyB9CisKICAgICB2b2lkIHNldENvbnRhaW5zUmVhZE9ubHlQcm9wZXJ0aWVzKCkK
ICAgICB7CiAgICAgICAgIG1faGFzUmVhZE9ubHlPckdldHRlclNldHRlclByb3BlcnRpZXNFeGNs
dWRpbmdQcm90byA9IHRydWU7CkBAIC01MjIsNiArNTI2LDcgQEAgcHJpdmF0ZToKICAgICB1bnNp
Z25lZCBtX2RpY3Rpb25hcnlLaW5kIDogMjsKICAgICBib29sIG1faXNQaW5uZWRQcm9wZXJ0eVRh
YmxlIDogMTsKICAgICBib29sIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyA6IDE7CisgICAg
Ym9vbCBtX2hhc0N1c3RvbUdldHRlclNldHRlclByb3BlcnRpZXMgOiAxOwogICAgIGJvb2wgbV9o
YXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvIDogMTsKICAg
ICBib29sIG1faGFzTm9uRW51bWVyYWJsZVByb3BlcnRpZXMgOiAxOwogICAgIHVuc2lnbmVkIG1f
YXR0cmlidXRlc0luUHJldmlvdXMgOiAxNDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgJKHJldmlzaW9uIDE2OTU4OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtOTksNiArOTksMjUgQEAgaW5saW5lIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6
Z2V0KFZNJgogICAgIHJldHVybiBlbnRyeSA/IGVudHJ5LT5vZmZzZXQgOiBpbnZhbGlkT2Zmc2V0
OwogfQogICAgIAoraW5saW5lIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6Z2V0KFZNJiB2bSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbCom
IHNwZWNpZmljVmFsdWUpCit7CisgICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOwor
ICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gaW5mbygpKTsKKworICAgIERl
ZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKKyAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNl
c3Nhcnkodm0sIGRlZmVyR0MpOworICAgIGlmICghcHJvcGVydHlUYWJsZSgpKQorICAgICAgICBy
ZXR1cm4gaW52YWxpZE9mZnNldDsKKworICAgIFByb3BlcnR5TWFwRW50cnkqIGVudHJ5ID0gcHJv
cGVydHlUYWJsZSgpLT5nZXQocHJvcGVydHlOYW1lLnVpZCgpKTsKKyAgICBpZiAoIWVudHJ5KQor
ICAgICAgICByZXR1cm4gaW52YWxpZE9mZnNldDsKKworICAgIGF0dHJpYnV0ZXMgPSBlbnRyeS0+
YXR0cmlidXRlczsKKyAgICBzcGVjaWZpY1ZhbHVlID0gZW50cnktPnNwZWNpZmljVmFsdWUuZ2V0
KCk7CisgICAgcmV0dXJuIGVudHJ5LT5vZmZzZXQ7Cit9CisKIGlubGluZSBQcm9wZXJ0eU9mZnNl
dCBTdHJ1Y3R1cmU6OmdldENvbmN1cnJlbnRseShWTSYgdm0sIFN0cmluZ0ltcGwqIHVpZCkKIHsK
ICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzSWdub3JlZDsKQEAgLTI0Niw2ICsyNjUsMTggQEAgQUxX
QVlTX0lOTElORSBib29sIFN0cnVjdHVyZTo6Y2hlY2tPZmZzZQogICAgIHJldHVybiB0cnVlOwog
fQogCitpbmxpbmUgc2l6ZV90IG5leHRPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoc2l6ZV90IGN1
cnJlbnRDYXBhY2l0eSkKK3sKKyAgICBpZiAoIWN1cnJlbnRDYXBhY2l0eSkKKyAgICAgICAgcmV0
dXJuIGluaXRpYWxPdXRPZkxpbmVDYXBhY2l0eTsKKyAgICByZXR1cm4gY3VycmVudENhcGFjaXR5
ICogb3V0T2ZMaW5lR3Jvd3RoRmFjdG9yOworfQorCitpbmxpbmUgc2l6ZV90IFN0cnVjdHVyZTo6
c3VnZ2VzdGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KCkKK3sKKyAgICByZXR1cm4gbmV4
dE91dE9mTGluZVN0b3JhZ2VDYXBhY2l0eShvdXRPZkxpbmVDYXBhY2l0eSgpKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBTdHJ1Y3R1cmVJbmxpbmVzX2gKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDE2OTU4OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiAr
MzcsNyBAQAogI2luY2x1ZGUgIkNvZGVDYWNoZS5oIgogI2luY2x1ZGUgIkNvbW1vbklkZW50aWZp
ZXJzLmgiCiAjaW5jbHVkZSAiQ29tbW9uU2xvd1BhdGhzLmgiCisjaW5jbHVkZSAiQ3VzdG9tR2V0
dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiREZHTG9uZ0xpdmVkU3RhdGUuaCIKICNpbmNsdWRlICJE
RkdXb3JrbGlzdC5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyQWN0aXZhdGlvbi5oIgpAQCAtMjUwLDYg
KzI1MSw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICBu
b3RBbk9iamVjdFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTTm90QW5PYmplY3Q6OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBwcm9wZXJ0eU5hbWVJdGVyYXRvclN0cnVj
dHVyZS5zZXQoKnRoaXMsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSgq
dGhpcywgMCwganNOdWxsKCkpKTsKICAgICBnZXR0ZXJTZXR0ZXJTdHJ1Y3R1cmUuc2V0KCp0aGlz
LCBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKKyAg
ICBjdXN0b21HZXR0ZXJTZXR0ZXJTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBDdXN0b21HZXR0ZXJTZXR0
ZXI6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBhcGlXcmFwcGVy
U3RydWN0dXJlLnNldCgqdGhpcywgSlNBUElWYWx1ZVdyYXBwZXI6OmNyZWF0ZVN0cnVjdHVyZSgq
dGhpcywgMCwganNOdWxsKCkpKTsKICAgICBKU1Njb3BlU3RydWN0dXJlLnNldCgqdGhpcywgSlNT
Y29wZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGV4ZWN1dGFi
bGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBFeGVjdXRhYmxlQmFzZTo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShy
ZXZpc2lvbiAxNjk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjIsNiArMjYyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IFN0cm9uZzxTdHJ1Y3R1cmU+IG5vdEFuT2JqZWN0U3RydWN0dXJlOwogICAgICAgICBTdHJvbmc8
U3RydWN0dXJlPiBwcm9wZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVyZTsKICAgICAgICAgU3Ryb25n
PFN0cnVjdHVyZT4gZ2V0dGVyU2V0dGVyU3RydWN0dXJlOworICAgICAgICBTdHJvbmc8U3RydWN0
dXJlPiBjdXN0b21HZXR0ZXJTZXR0ZXJTdHJ1Y3R1cmU7CiAgICAgICAgIFN0cm9uZzxTdHJ1Y3R1
cmU+IGFwaVdyYXBwZXJTdHJ1Y3R1cmU7CiAgICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IEpTU2Nv
cGVTdHJ1Y3R1cmU7CiAgICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGV4ZWN1dGFibGVTdHJ1Y3R1
cmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIu
aAkocmV2aXNpb24gMTY5NTg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3Jp
dGVCYXJyaWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw2ICsxNTIsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpc09iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGdldCgpLmlzT2JqZWN0KCk7IH0KICAg
ICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIGdldCgpLmlzTnVsbCgpOyB9CiAgICAgYm9v
bCBpc0dldHRlclNldHRlcigpIGNvbnN0IHsgcmV0dXJuIGdldCgpLmlzR2V0dGVyU2V0dGVyKCk7
IH0KKyAgICBib29sIGlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkgY29uc3QgeyByZXR1cm4gZ2V0KCku
aXNDdXN0b21HZXR0ZXJTZXR0ZXIoKTsgfQogICAgIAogICAgIEpTVmFsdWUqIHNsb3QoKQogICAg
IHsgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjk2MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOSBAQAorMjAxNC0wNi0wNSAgTWFy
ayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAgICAgIEVhZ2VybHkg
cmVpZnkgRE9NIHByb3RvdHlwZSBhdHRyaWJ1dGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzM1NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuCisKKyAgICAgICAgVGhpcyBhbGxv
d3MgdXMgdG8gZ2V0IHJpZCBvZiBhIGxvdCBvZiB0aGUgYWRkaXRpb25hbCBvdmVyaGVhZCBvZiBw
dXNoaW5nIERPTSBhdHRyaWJ1dGVzIHVwIGludG8gdGhlIHByb3RvdHlwZS4gCisgICAgICAgIEJ5
IGVhZ2VybHkgcmVpZnlpbmcgdGhlIGN1c3RvbSBnZXR0ZXJzIGFuZCBzZXR0ZXJzIGludG8gdGhl
IGFjdHVhbCBKU09iamVjdCB3ZSBhdm9pZCBoYXZpbmcgdG8gb3ZlcnJpZGUgCisgICAgICAgIGdl
dE93blByb3BlcnR5U2xvdCBmb3IgYWxsIG9mIHRoZSBET00gcHJvdG90eXBlcywgd2hpY2ggaXMg
YSBsb3Qgb2YgdGhlIG92ZXJoZWFkIG9mIGRvaW5nIHByb3BlcnR5IGxvb2t1cHMgb24gCisgICAg
ICAgIERPTSB3cmFwcGVycy4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtOgorICAgICAgICAocHJvdG90eXBlSGFzaFRhYmxlQWNjZXNzb3IpOiBDaGFuZ2Vk
IHRvIHBhc3MgYWxvbmcgdGhlIFZNLgorICAgICAgICAoQXR0cmlidXRlU2hvdWxkQmVPbkluc3Rh
bmNlRm9yQ29tcGF0aWJpbGl0eSk6IFdlIHdlcmUgYmVpbmcgb3Zlcmx5IGNvbnNlcnZhdGl2ZSBp
biByZWdhcmQgdG8gdG91Y2ggZXZlbnRzLiAKKyAgICAgICAgVGhpcyBjYXVzZWQgdXMgdG8gc3Rv
cmUgdGhlIHRvdWNoIGV2ZW50IGhhbmRsZXIgZ2V0dGVycyBhbmQgc2V0dGVycyBvbiB0aGUgSlNF
bGVtZW50IGluc3RhbmNlLCB3aGljaCBjYXVzZWQKKyAgICAgICAgdXMgdG8gb3ZlcnJpZGUgZ2V0
T3duUHJvcGVydHlTbG90IGZvciBldmVyeSBKU0VsZW1lbnQgc3ViY2xhc3MuCisgICAgICAgIChJ
bnN0YW5jZU92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCk6IFRoaXMgd2FzIGJlaW5nIG92ZXJs
eSBwYXJhbm9pZCBhYm91dCBnZW5lcmF0ZSBhIGdldE93blByb3BlcnR5U2xvdCBpZgorICAgICAg
ICB0aGVyZSB3YXMgZ29pbmcgdG8gYmUgYSAiY29uc3RydWN0b3IiIHByb3BlcnR5LCBldmVuIHRo
b3VnaCB3ZSBoYW5kbGVkIHRoaXMgaW4gYW5vdGhlciBwbGFjZSBhbHJlYWR5LgorICAgICAgICAo
R2VuZXJhdGVIZWFkZXIpOiBHZW5lcmF0ZSBhIGZpbmlzaENyZWF0aW9uIGZvciBwcm90b3R5cGVz
IHVubGVzcyBpdCdzIHRoZSBKU0RPTVdpbmRvdy4gV2UgY2FuJ3QgY29ycmVjdGx5IAorICAgICAg
ICBoYW5kbGUgdGhlIERPTVdpbmRvdyBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHBhdGNoIGJlY2F1
c2UgcmVpZnlpbmcgdGhlIHN0YXRpYyBwcm9wZXJ0aWVzIHJlcXVpcmVzIGEgZ2xvYmFsIG9iamVj
dCwKKyAgICAgICAgd2hpY2ggaGFzbid0IGJlZW4gY3JlYXRlZCB5ZXQgd2hlbiB0aGUgcHJvdG90
eXBlIGZvciB0aGUgd2luZG93IG9iamVjdCBpcyBiZWluZyBjcmVhdGVkLgorICAgICAgICAoR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbik6IEdlbmVyYXRlIHRoZSBmaW5pc2hDcmVhdGlvbiBjYWxscyB0
byByZWlmeVN0YXRpY1Byb3BlcnRpZXMuCisKIDIwMTQtMDYtMDUgIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgQ1NTIEpJVDogQ2xlYW4gdXAgU3RhY2tB
bGxvY2F0b3IKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAxNjk1ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtMzUw
LDcgKzM1MCw3IEBAIHN1YiBwcm90b3R5cGVIYXNoVGFibGVBY2Nlc3NvcgogICAgIG15ICRub1N0
YXRpY1RhYmxlcyA9IHNoaWZ0OwogICAgIG15ICRjbGFzc05hbWUgPSBzaGlmdDsKICAgICBpZiAo
JG5vU3RhdGljVGFibGVzKSB7Ci0gICAgICAgIHJldHVybiAiZ2V0JHtjbGFzc05hbWV9UHJvdG90
eXBlVGFibGUoZXhlYy0+dm0oKSkiOworICAgICAgICByZXR1cm4gImdldCR7Y2xhc3NOYW1lfVBy
b3RvdHlwZVRhYmxlKHZtKSI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcmV0dXJuICIke2NsYXNz
TmFtZX1Qcm90b3R5cGVUYWJsZSI7CiAgICAgfQpAQCAtNjU5LDcgKzY1OSw2IEBAIHN1YiBBdHRy
aWJ1dGVTaG91bGRCZU9uSW5zdGFuY2VGb3JDb21wYXQKICAgICBteSAkaW50ZXJmYWNlID0gc2hp
ZnQ7CiAgICAgbXkgJGF0dHJpYnV0ZSA9IHNoaWZ0OwogICAgIG15ICRpbnRlcmZhY2VOYW1lID0g
JGludGVyZmFjZS0+bmFtZTsKLSAgICByZXR1cm4gMSBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5uYW1lID1+ICJ0b3VjaCIpOwogICAgIHJldHVybiAwOwogfQogCkBAIC03NDYsNyArNzQ1LDcg
QEAgc3ViIEluc3RhbmNlT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90CiAgICAgICAgIHx8ICRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3Qi
fQogICAgICAgICB8fCAkaGFzSW1wdXJlTmFtZWRHZXR0ZXI7CiAKLSAgICByZXR1cm4gJG51bUlu
c3RhbmNlQXR0cmlidXRlcyA+IDAgfHwgISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJOb0ludGVyZmFjZU9iamVjdCJ9IHx8ICRoYXNDb21wbGV4R2V0dGVyOworICAgIHJldHVybiAk
bnVtSW5zdGFuY2VBdHRyaWJ1dGVzID4gMCB8fCAkaGFzQ29tcGxleEdldHRlcjsKIAogfQogCkBA
IC0xMjA4LDggKzEyMDcsMTIgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgIERFQ0xBUkVfSU5GTztcbiIpOwogICAgIGlmIChQcm90b3R5cGVPdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoJGludGVyZmFjZSkpIHsKLSAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09i
amVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlT
bG90Jik7XG4iKTsKLSAgICAgICAgJHN0cnVjdHVyZUZsYWdzeyJKU0M6Ok92ZXJyaWRlc0dldE93
blByb3BlcnR5U2xvdCJ9ID0gMTsKKyAgICAgICAgaWYgKElzRE9NR2xvYmFsT2JqZWN0KCRpbnRl
cmZhY2UpKSB7CisgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNsb3QmKTtcbiIpOworICAgICAgICAgICAg
JHN0cnVjdHVyZUZsYWdzeyJKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCJ9ID0gMTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7XG4iKTsKKyAgICAgICAgfQogICAgIH0KICAg
ICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tTWFya0Z1bmN0
aW9uIn0gb3IgJG5lZWRzVmlzaXRDaGlsZHJlbikgewogICAgICAgICAkc3RydWN0dXJlRmxhZ3N7
IkpTQzo6T3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiJ9ID0gMTsKQEAgLTE5NDgsMjEgKzE5NTEsMzYg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICB9CiAKICAgICBpZiAoUHJvdG90eXBl
T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90KCRpbnRlcmZhY2UpKSB7Ci0gICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiYm9vbCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmdldE93blByb3BlcnR5
U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIntcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFt
ZX1Qcm90b3R5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9UHJvdG90eXBlKj4o
b2JqZWN0KTtcbiIpOwotCiAgICAgICAgIG15ICRudW1Qcm90b3R5cGVBdHRyaWJ1dGVzID0gUHJv
dG90eXBlQXR0cmlidXRlQ291bnQoJGludGVyZmFjZSk7Ci0gICAgICAgIGlmICgkbnVtQ29uc3Rh
bnRzIGVxIDAgJiYgJG51bUZ1bmN0aW9ucyBlcSAwICYmICRudW1Qcm90b3R5cGVBdHRyaWJ1dGVz
IGVxIDApIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBCYXNl
OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90
KTtcbiIpOyAgICAgICAgCi0gICAgICAgIH0gZWxzaWYgKCRudW1Db25zdGFudHMgZXEgMCAmJiAk
bnVtUHJvdG90eXBlQXR0cmlidXRlcyBlcSAwKSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90PEpTT2JqZWN0PihleGVjLCAi
IC4gcHJvdG90eXBlSGFzaFRhYmxlQWNjZXNzb3IoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkpTTm9TdGF0aWNUYWJsZXMifSwgJGNsYXNzTmFtZSkgLiAiLCB0aGlzT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7Ci0gICAgICAgIH0gZWxzaWYgKCRudW1GdW5jdGlvbnMg
ZXEgMCAmJiAkbnVtUHJvdG90eXBlQXR0cmlidXRlcyBlcSAwKSB7Ci0gICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PCR7Y2xhc3NOYW1l
fVByb3RvdHlwZSwgSlNPYmplY3Q+KGV4ZWMsICIgLiBwcm90b3R5cGVIYXNoVGFibGVBY2Nlc3Nv
cigkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNOb1N0YXRpY1RhYmxlcyJ9LCAk
Y2xhc3NOYW1lKSAuICIsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7XG4iKTsKKyAg
ICAgICAgaWYgKElzRE9NR2xvYmFsT2JqZWN0KCRpbnRlcmZhY2UpKSB7CisgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9UHJvdG90eXBlOjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKKyAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAie1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBWTSYgdm0gPSBleGVjLT52bSgpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBVTlVTRURfUEFSQU0odm0pO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAke2NsYXNzTmFtZX1Qcm90b3R5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtj
bGFzc05hbWV9UHJvdG90eXBlKj4ob2JqZWN0KTtcbiIpOworCisgICAgICAgICAgICBpZiAoJG51
bUNvbnN0YW50cyBlcSAwICYmICRudW1GdW5jdGlvbnMgZXEgMCAmJiAkbnVtUHJvdG90eXBlQXR0
cmlidXRlcyBlcSAwKSB7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
cmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpO1xuIik7ICAgICAgICAKKyAgICAgICAgICAgIH0gZWxzaWYgKCRudW1Db25z
dGFudHMgZXEgMCAmJiAkbnVtUHJvdG90eXBlQXR0cmlidXRlcyBlcSAwKSB7CisgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xv
dDxKU09iamVjdD4oZXhlYywgIiAuIHByb3RvdHlwZUhhc2hUYWJsZUFjY2Vzc29yKCRpbnRlcmZh
Y2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU05vU3RhdGljVGFibGVzIn0sICRjbGFzc05hbWUp
IC4gIiwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOworICAgICAgICAgICAg
fSBlbHNpZiAoJG51bUZ1bmN0aW9ucyBlcSAwICYmICRudW1Qcm90b3R5cGVBdHRyaWJ1dGVzIGVx
IDApIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gZ2V0
U3RhdGljVmFsdWVTbG90PCR7Y2xhc3NOYW1lfVByb3RvdHlwZSwgSlNPYmplY3Q+KGV4ZWMsICIg
LiBwcm90b3R5cGVIYXNoVGFibGVBY2Nlc3NvcigkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiSlNOb1N0YXRpY1RhYmxlcyJ9LCAkY2xhc3NOYW1lKSAuICIsIHRoaXNPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7XG4iKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldFN0YXRpY1Byb3BlcnR5U2xv
dDwke2NsYXNzTmFtZX1Qcm90b3R5cGUsIEpTT2JqZWN0PihleGVjLCAiIC4gcHJvdG90eXBlSGFz
aFRhYmxlQWNjZXNzb3IoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTTm9TdGF0
aWNUYWJsZXMifSwgJGNsYXNzTmFtZSkgLiAiLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNs
b3QpO1xuIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
In1cblxuIik7CisgICAgICAgIH0gZWxzaWYgKCRudW1Db25zdGFudHMgPiAwIHx8ICRudW1GdW5j
dGlvbnMgPiAwIHx8ICRudW1Qcm90b3R5cGVBdHRyaWJ1dGVzID4gMCkgeworICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtKVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIp
OworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0pO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZWlmeVN0
YXRpY1Byb3BlcnRpZXModm0sICIgLiBwcm90b3R5cGVIYXNoVGFibGVBY2Nlc3NvcigkaW50ZXJm
YWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNOb1N0YXRpY1RhYmxlcyJ9LCAkY2xhc3NOYW1l
KSAuICIsIHRoaXMpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxu
Iik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICByZXR1cm4gZ2V0U3RhdGljUHJvcGVydHlTbG90PCR7Y2xhc3NOYW1lfVByb3RvdHlwZSwgSlNP
YmplY3Q+KGV4ZWMsICIgLiBwcm90b3R5cGVIYXNoVGFibGVBY2Nlc3NvcigkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNOb1N0YXRpY1RhYmxlcyJ9LCAkY2xhc3NOYW1lKSAuICIs
IHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKyAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
KTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgICAg
ICB9Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICB9CiAKICAgICBp
ZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tTmFtZWRHZXR0ZXJP
blByb3RvdHlwZSJ9KSB7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjk2MjIpCisrKyBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxNC0wNi0wNSAg
TWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAgICAgIEVhZ2Vy
bHkgcmVpZnkgRE9NIHByb3RvdHlwZSBhdHRyaWJ1dGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzM1NTgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGluZyBhIHRlc3QgZXhwZWN0YXRpb24gYWZ0
ZXIgdGhpcyBmaXguCisKKyAgICAgICAgKiBqcy9kb20vY29uc3RydWN0b3ItYXR0cmlidXRlcy1l
eHBlY3RlZC50eHQ6CisKIDIwMTQtMDYtMDUgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBTdWJwaXhlbCByZW5kZXJpbmc6IGJvcmRlci1yYWRpdXMgcGFpbnRpbmcg
ZmFsbHMgYmFjayB0byByZWN0YW5nbGUgd2hlbiB0aGUgc25hcHBlZCByb3VuZGVkIHJlY3QgYmVj
b21lcyBub24tcmVuZGVyYWJsZS4KSW5kZXg6IExheW91dFRlc3RzL2pzL2RvbS9jb25zdHJ1Y3Rv
ci1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9k
b20vY29uc3RydWN0b3ItYXR0cmlidXRlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE2OTU4OSkK
KysrIExheW91dFRlc3RzL2pzL2RvbS9jb25zdHJ1Y3Rvci1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCBQQVNTIHggPSBVUklFcnJvci5wcm90
b3R5cGU7IGRlbGV0ZSB4LmNvCiBQQVNTIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKS5fX3By
b3RvX18uaGFzT3duUHJvcGVydHkoJ2NvbnN0cnVjdG9yJykgaXMgdHJ1ZQogUEFTUyBjYW5FbnVt
KGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKS5fX3Byb3RvX18sICdjb25zdHJ1Y3RvcicpIGlz
IGZhbHNlCiBGQUlMIHggPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJykuX19wcm90b19fOyB4
LmNvbnN0cnVjdG9yID0gNDsgeC5jb25zdHJ1Y3RvciBzaG91bGQgYmUgNCAob2YgdHlwZSBudW1i
ZXIpLiBXYXMgW29iamVjdCBUZXh0Q29uc3RydWN0b3JdIChvZiB0eXBlIG9iamVjdCkuCi1GQUlM
IHggPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJykuX19wcm90b19fOyBkZWxldGUgeC5jb25z
dHJ1Y3RvcjsgeC5oYXNPd25Qcm9wZXJ0eSgnY29uc3RydWN0b3InKSBzaG91bGQgYmUgZmFsc2Uu
IFdhcyB0cnVlLgorUEFTUyB4ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpLl9fcHJvdG9f
XzsgZGVsZXRlIHguY29uc3RydWN0b3I7IHguaGFzT3duUHJvcGVydHkoJ2NvbnN0cnVjdG9yJykg
aXMgZmFsc2UKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVU
RQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232582</attachid>
            <date>2014-06-05 14:01:53 -0700</date>
            <delta_ts>2014-06-05 14:23:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133558-20140605140129.patch</filename>
            <type>text/plain</type>
            <size>60535</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY5NjIyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg1IEBA
CisyMDE0LTA2LTA1ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgRWFnZXJseSByZWlmeSBET00gcHJvdG90eXBlIGF0dHJpYnV0ZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzU1OAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWxsb3dzIHVzIHRv
IGdldCByaWQgb2YgYSBsb3Qgb2YgdGhlIGFkZGl0aW9uYWwgb3ZlcmhlYWQgb2YgcHVzaGluZyBE
T00gYXR0cmlidXRlcyB1cCBpbnRvIHRoZSBwcm90b3R5cGUuIAorICAgICAgICBCeSBlYWdlcmx5
IHJlaWZ5aW5nIHRoZSBjdXN0b20gZ2V0dGVycyBhbmQgc2V0dGVycyBpbnRvIHRoZSBhY3R1YWwg
SlNPYmplY3Qgd2UgYXZvaWQgaGF2aW5nIHRvIG92ZXJyaWRlIAorICAgICAgICBnZXRPd25Qcm9w
ZXJ0eVNsb3QgZm9yIGFsbCBvZiB0aGUgRE9NIHByb3RvdHlwZXMsIHdoaWNoIGlzIGEgbG90IG9m
IHRoZSBvdmVyaGVhZCBvZiBkb2luZyBwcm9wZXJ0eSBsb29rdXBzIG9uIAorICAgICAgICBET00g
d3JhcHBlcnMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBs
bGludC9MTEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6cGVyZm9ybUFz
c2VydGlvbnMpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAg
ICAgICAqIHJ1bnRpbWUvQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaDoKKyAgICAgICAgKEpT
Qzo6QmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXI6OkJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVy
KToKKyAgICAgICAgKiBydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpjYWxsQ3VzdG9tU2V0dGVyKToKKyAgICAgICAgKiBydW50aW1lL0N1c3RvbUdl
dHRlclNldHRlci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q3VzdG9tR2V0dGVyU2V0dGVyOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpDdXN0b21HZXR0ZXJTZXR0ZXI6OmdldHRlcik6CisgICAg
ICAgIChKU0M6OkN1c3RvbUdldHRlclNldHRlcjo6c2V0dGVyKToKKyAgICAgICAgKEpTQzo6Q3Vz
dG9tR2V0dGVyU2V0dGVyOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpDdXN0b21H
ZXR0ZXJTZXR0ZXI6OkN1c3RvbUdldHRlclNldHRlcik6CisgICAgICAgICogcnVudGltZS9KU0NK
U1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1
ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6aXNDdXN0b21HZXR0ZXJTZXR0ZXIp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGxJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNDdXN0b21HZXR0ZXJTZXR0ZXIpOgor
ICAgICAgICAoSlNDOjpKU0NlbGw6OmNhblVzZUZhc3RHZXRPd25Qcm9wZXJ0eSk6CisgICAgICAg
ICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6aXNI
b3N0T3JCdWlsdGluRnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9u
Ojppc0J1aWx0aW5GdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0Z1bmN0
aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oOiBJbmxpbmVkIHNv
bWUgcmFuZG9tIGZ1bmN0aW9ucyB0aGF0IGFwcGVhcmVkIGhvdCBkdXJpbmcgcHJvZmlsaW5nLgor
ICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjppc0J1aWx0aW5GdW5jdGlvbik6CisgICAgICAgIChK
U0M6OkpTRnVuY3Rpb246OmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcik6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpmaWxsR2V0dGVyUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmZpbGxDdXN0b21HZXR0ZXJQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlTbG90U2xvdyk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9K
U09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aGFzQ3VzdG9tR2V0dGVyU2V0dGVy
UHJvcGVydGllcyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0VG9EaWN0aW9uYXJ5
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmlubGluZUdldE93blByb3BlcnR5U2xvdCk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RTbG93KTogSW5saW5lZCBi
ZWNhdXNlIGl0IGxvb2tlZCBob3QgZHVyaW5nIHByb2ZpbGluZy4KKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OnB1dE93bkRhdGFQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRE
aXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9Mb29r
dXAuaDoKKyAgICAgICAgKEpTQzo6cmVpZnlTdGF0aWNQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBy
dW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eURlc2Ny
aXB0b3I6OlByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OlN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
Om5leHRPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OnN1Z2dlc3RlZE5ld091dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Z2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50
aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Omhhc0N1c3RvbUdldHRl
clNldHRlclByb3BlcnRpZXMpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnNldEhhc0N1c3Rv
bUdldHRlclNldHRlclByb3BlcnRpZXMpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmdldCk6IElubGluZWQgZHVlIHRvIGhv
dG5lc3MuCisgICAgICAgIChKU0M6Om5leHRPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkpOiBJbmxp
bmVkIGR1ZSB0byBob3RuZXNzLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnN1Z2dlc3RlZE5l
d091dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSk6IElubGluZWQgZHVlIHRvIGhvdG5lc3MuCisgICAg
ICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICog
cnVudGltZS9WTS5oOgorICAgICAgICAqIHJ1bnRpbWUvV3JpdGVCYXJyaWVyLmg6CisgICAgICAg
IChKU0M6OldyaXRlQmFycmllckJhc2U8VW5rbm93bj46OmlzQ3VzdG9tR2V0dGVyU2V0dGVyKToK
KwogMjAxNC0wNi0wNCAgVGltb3RoeSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+
CiAKICAgICAgICAgaU9TIERlYnVnIGJ1aWxkIGZpeApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTY5NTg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zNjYsNiArMzY2LDcgQEAgc2V0KEph
dmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0NvbnNvbGVDbGllbnQuY3BwCiAgICAg
cnVudGltZS9Db25zb2xlUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvQ29uc3RydWN0RGF0YS5j
cHAKKyAgICBydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5jcHAKICAgICBydW50aW1lL0RhdGFW
aWV3LmNwcAogICAgIHJ1bnRpbWUvRGF0YVZpZXcuaAogICAgIHJ1bnRpbWUvRGF0ZUNvbnN0cnVj
dG9yLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCShyZXZp
c2lvbiAxNjk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02MTIsNiArNjEy
LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcQ29uc29sZUNsaWVudC5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXENvbnNvbGVQcm90b3R5
cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxDb25zdHJ1Y3RE
YXRhLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcQ3VzdG9tR2V0
dGVyU2V0dGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRGF0
YVZpZXcuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxEYXRlQ29u
c3RydWN0b3IuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxEYXRl
Q29udmVyc2lvbi5jcHAiIC8+CkBAIC0xMjY0LDYgKzEyNjUsNyBAQAogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxDb25zb2xlVHlwZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcQ29uc3RhbnRNb2RlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXENvbnN0cnVjdERhdGEuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcQ3VzdG9tR2V0dGVyU2V0dGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXERhdGFWaWV3LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXERhdGVDb25zdHJ1Y3Rvci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxEYXRlQ29udmVyc2lvbi5oIiAvPgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0
ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMTY5NTg5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC01NDYsNiArNTQ2LDkgQEAK
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcQ29uc3RydWN0RGF0YS5jcHAiPgog
ICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEN1c3RvbUdldHRlclNldHRlci5jcHAiPgorICAg
ICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXERhdGVDb25zdHJ1Y3Rvci5jcHAiPgogICAgICAgPEZp
bHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0yMTg5LDYgKzIxOTIs
OSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxDb25zdHJ1Y3REYXRhLmgi
PgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEN1c3RvbUdldHRlclNldHRlci5oIj4KKyAg
ICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxEYXRlQ29uc3RydWN0b3IuaCI+CiAgICAgICA8Rmls
dGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNzEyLDcgKzcxMiw3IEBACiAJCTE0NzRDMzNCMTZBQTJEOTUwMDYyRjAxRCAvKiBQcm90
b3R5cGVNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDE0RDg0NEEzMTZBQTJDNzAwMEE2NUFGMCAvKiBQcm90b3R5cGVNYXAuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDc0QzMzQzE2QUEyRDlCMDA2
MkYwMUQgLyogUHJvdG90eXBlTWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDE0RDg0NEEyMTZBQTJDNzAwMEE2NUFGMCAvKiBQcm90b3R5cGVNYXAu
Y3BwICovOyB9OwogCQkxNDc4Mjk3QjEzNzlFOEE4MDBBN0MyQTMgLyogSGFuZGxlVHlwZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NkZBNUE4MTM3
OEY2QjAwMDM2MjdBMyAvKiBIYW5kbGVUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTE0N0I4M0FDMEU2REI4QzkwMDQ3NzVBNCAvKiBCYXRj
aGVkVHJhbnNpdGlvbk9wdGltaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTQ3QjgzQUEwRTZEQjhDOTAwNDc3NUE0IC8qIEJhdGNoZWRUcmFuc2l0
aW9uT3B0aW1pemVyLmggKi87IH07CisJCTE0N0I4M0FDMEU2REI4QzkwMDQ3NzVBNCAvKiBCYXRj
aGVkVHJhbnNpdGlvbk9wdGltaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTQ3QjgzQUEwRTZEQjhDOTAwNDc3NUE0IC8qIEJhdGNoZWRUcmFuc2l0
aW9uT3B0aW1pemVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMTQ3Qjg0NjMwRTZERTZCMTAwNDc3NUE0IC8qIFB1dFByb3BlcnR5U2xvdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ3Qjg0NjIwRTZE
RTZCMTAwNDc3NUE0IC8qIFB1dFByb3BlcnR5U2xvdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0N0YzOUJEMTA3RUMzNzYwMDQyN0E0OCAvKiBB
cmdMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDRjYwNTExMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNwcCAqLzsgfTsKIAkJMTQ3RjM5
QkUxMDdFQzM3NjAwNDI3QTQ4IC8qIEFyZ3VtZW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI1N0RFNTBFMUY1MUM1MDAxNkI2QzkgLyogQXJn
dW1lbnRzLmNwcCAqLzsgfTsKQEAgLTc5MCw2ICs3OTAsOCBAQAogCQkxQ0FBOUEyMzE4RjRBMjIw
MDAwQTM2OUQgLyogSlNHbG9iYWxPYmplY3RQcm9maWxlckFnZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0FBOUEyMTE4RjRBMjIwMDAwQTM2OUQg
LyogSlNHbG9iYWxPYmplY3RQcm9maWxlckFnZW50LmggKi87IH07CiAJCTI2MDBCNUE2MTUyQkFB
QTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjAwQjVBNDE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJp
bmdKb2luZXIuY3BwICovOyB9OwogCQkyNjAwQjVBNzE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJp
bmdKb2luZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDI2MDBCNUE1MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5oICovOyB9OworCQky
QTExMTI0NTE5MkZDRTc5MDA1RUUxOEQgLyogQ3VzdG9tR2V0dGVyU2V0dGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBMTExMjQzMTkyRkNFNzkw
MDVFRTE4RCAvKiBDdXN0b21HZXR0ZXJTZXR0ZXIuY3BwICovOyB9OworCQkyQTExMTI0NjE5MkZD
RTc5MDA1RUUxOEQgLyogQ3VzdG9tR2V0dGVyU2V0dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQTExMTI0NDE5MkZDRTc5MDA1RUUxOEQgLyogQ3Vz
dG9tR2V0dGVyU2V0dGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMkEyODI1RDAxODM0MUYyRDAwODdGQkE5IC8qIERlbGF5ZWRSZWxlYXNlU2Nv
cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBMjgy
NUNGMTgzNDFGMkQwMDg3RkJBOSAvKiBEZWxheWVkUmVsZWFzZVNjb3BlLmggKi87IH07CiAJCTJB
NDhEMTkxMTc3MjM2NUIwMEM2NUE1RiAvKiBBUElDYWxsYmFja0Z1bmN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjExQjU3NDE3NkEyMjREMDAw
RTJBMjMgLyogQVBJQ2FsbGJhY2tGdW5jdGlvbi5oICovOyB9OwogCQkyQTRCQjdGMzE4QTQxMTc5
MDA4QTBGQ0QgLyogSlNNYW5hZ2VkVmFsdWVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE0QkI3RjIxOEE0MTE3OTAwOEEwRkNEIC8qIEpT
TWFuYWdlZFZhbHVlSW50ZXJuYWwuaCAqLzsgfTsKQEAgLTI1NjEsNiArMjU2Myw4IEBACiAJCTFD
QUE5QTIxMThGNEEyMjAwMDBBMzY5RCAvKiBKU0dsb2JhbE9iamVjdFByb2ZpbGVyQWdlbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHbG9iYWxPYmplY3RQcm9maWxlckFn
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2MDBCNUE0MTUyQkFBQTcwMDkx
RUU1RiAvKiBKU1N0cmluZ0pvaW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1N0cmluZ0pvaW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTI2MDBCNUE1MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0cmluZ0pvaW5lci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkyQTExMTI0MzE5MkZDRTc5MDA1RUUxOEQgLyogQ3VzdG9tR2V0dGVyU2V0
dGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN1c3RvbUdldHRl
clNldHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJBMTExMjQ0MTkyRkNF
NzkwMDVFRTE4RCAvKiBDdXN0b21HZXR0ZXJTZXR0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ3VzdG9tR2V0dGVyU2V0dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJBMjgyNUNGMTgzNDFGMkQwMDg3RkJBOSAvKiBEZWxheWVkUmVsZWFzZVNjb3BlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlbGF5ZWRSZWxlYXNlU2NvcGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkEzNDNGNzQxOEExNzQ4QjAwMzlCMDg1IC8q
IEdDU2VnbWVudGVkQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR0NT
ZWdtZW50ZWRBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQTM0M0Y3NzE4
QTE3NDlEMDAzOUIwODUgLyogR0NTZWdtZW50ZWRBcnJheUlubGluZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR0NTZWdtZW50ZWRBcnJheUlubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ1NTYsNiArNDU2MCw4IEBACiAJCQkJMTQyMEJFN0ExMEFB
NkREQjAwRjQ1NUQyIC8qIFdlYWtSYW5kb20uaCAqLywKIAkJCQlBN0RDQjc3OTEyRTNEOTA1MDA5
MTE5NDAgLyogV3JpdGVCYXJyaWVyLmggKi8sCiAJCQkJQzJCNkQ3NTIxOEEzMzc5MzAwNEE5MzAx
IC8qIFdyaXRlQmFycmllcklubGluZXMuaCAqLywKKwkJCQkyQTExMTI0MzE5MkZDRTc5MDA1RUUx
OEQgLyogQ3VzdG9tR2V0dGVyU2V0dGVyLmNwcCAqLywKKwkJCQkyQTExMTI0NDE5MkZDRTc5MDA1
RUUxOEQgLyogQ3VzdG9tR2V0dGVyU2V0dGVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJ1bnRp
bWU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNTQ5NSw2ICs1NTAxLDggQEAKIAkJ
CQkwRjZCMUNCOTE4NjEyNDRDMDA4NDVEOTcgLyogQXJpdHlDaGVja01vZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAvKiBBUk02NEFzc2VtYmxlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODZEM0IyQzQxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTQ3QjgzQUMwRTZEQjhDOTAwNDc3NUE0IC8qIEJhdGNo
ZWRUcmFuc2l0aW9uT3B0aW1pemVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkyQTExMTI0NjE5MkZD
RTc5MDA1RUUxOEQgLyogQ3VzdG9tR2V0dGVyU2V0dGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NTg0MDMyMDE4QkZGQkUxMDA1QTA4MTEgLyogSW5zcGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTJBQUJDREU3MThFRjI5NDIwMDAwMjA5NiAvKiBHQ0xvZ2dpbmcuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZFNTI0OEY5MTkxNDQyRDkwMEI3RkRFNCAvKiBWYXJpYWJsZVdhdGNocG9pbnRT
ZXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTU1MjUsNyArNTUzMyw2IEBACiAJCQkJODZE
M0IyQzUxMDE1NkJERTAwMjg2NUU3IC8qIEFzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTQxMTdFQTlGNTkwMEFCQjIxNyAvKiBBc3NlbWJs
eUhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3ODRBMjYxMTFEMTY2MjIwMDU3NzZBQyAv
KiBBU1RCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQkxNDdCODNBQzBFNkRCOEM5MDA0Nzc1
QTQgLyogQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2
NjczOUQyMTNCRkRFNzEwMDIzRDg3QyAvKiBCaWdJbnRlZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxNDgxNkUxQzE1NENDNTZDMDBCODA1NEMgLyogQmxvY2tBbGxvY2F0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMThDM0VDMEUxNkY1Q0QwMEIzNDQ2MCAvKiBCb29sZWFuT2JqZWN0LmggaW4g
SGVhZGVycyAqLywKQEAgLTY5NjYsNiArNjk3Myw3IEBACiAJCQkJMEZFRkM5QUExNjgxQTNCMzAw
NTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEYyMzVCRUQxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkZGQzk1QjE0RUY5MEFEMDBDNzI1MzIgLyogREZHUGhhc2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMkExMTEyNDUxOTJGQ0U3OTAwNUVFMThEIC8qIEN1c3Rv
bUdldHRlclNldHRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzhBOTc3QTE3OTczOEI4MDA5
REY3NDQgLyogREZHUGxhbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkJFMEY3NDE2QzFEQjA5
MDA4MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRkZDOTVEMTRFRjkwQjMwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludERhdGEuY3BwCShyZXZpc2lvbiAxNjk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDggKzEzNCw4
IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQogICAgIEFTU0VSVChtYXhG
cmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCA9PSA0MCk7CiAjZW5kaWYKICAgICBBU1NFUlQoU3Ry
aW5nVHlwZSA9PSA1KTsKLSAgICBBU1NFUlQoT2JqZWN0VHlwZSA9PSAxNyk7Ci0gICAgQVNTRVJU
KEZpbmFsT2JqZWN0VHlwZSA9PSAxOCk7CisgICAgQVNTRVJUKE9iamVjdFR5cGUgPT0gMTgpOwor
ICAgIEFTU0VSVChGaW5hbE9iamVjdFR5cGUgPT0gMTkpOwogICAgIEFTU0VSVChNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkID09IDEpOwogICAgIEFTU0VSVChJbXBsZW1lbnRzSGFzSW5zdGFuY2UgPT0g
Mik7CiAgICAgQVNTRVJUKEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgPT0gOCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCShyZXZpc2lvbiAxNjk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE0OSw4ICsxNDksOCBA
QCBjb25zdCBTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgPSAzMAogCiAjIFR5cGUgY29uc3RhbnRz
LgogY29uc3QgU3RyaW5nVHlwZSA9IDUKLWNvbnN0IE9iamVjdFR5cGUgPSAxNwotY29uc3QgRmlu
YWxPYmplY3RUeXBlID0gMTgKK2NvbnN0IE9iamVjdFR5cGUgPSAxOAorY29uc3QgRmluYWxPYmpl
Y3RUeXBlID0gMTkKIAogIyBUeXBlIGZsYWdzIGNvbnN0YW50cy4KIGNvbnN0IE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQgPSAxCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CYXRj
aGVkVHJhbnNpdGlvbk9wdGltaXplci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0JhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmgJKHJldmlzaW9uIDE2OTU4
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JhdGNoZWRUcmFuc2l0aW9uT3B0
aW1pemVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDggQEAgcHVibGljOgogICAgICAg
ICA6IG1fdm0oJnZtKQogICAgICAgICAsIG1fb2JqZWN0KG9iamVjdCkKICAgICB7CisgICAgICAg
IGlmICghbV9vYmplY3QtPnN0cnVjdHVyZSh2bSktPmlzRGljdGlvbmFyeSgpKQorICAgICAgICAg
ICAgbV9vYmplY3QtPmNvbnZlcnRUb0RpY3Rpb25hcnkodm0pOwogICAgIH0KIAogICAgIH5CYXRj
aGVkVHJhbnNpdGlvbk9wdGltaXplcigpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQ3VzdG9tR2V0dGVyU2V0dGVyLmgiCisKKyNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK25hbWVzcGFjZSBK
U0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoQ3VzdG9tR2V0
dGVyU2V0dGVyKTsKKworY29uc3QgQ2xhc3NJbmZvIEN1c3RvbUdldHRlclNldHRlcjo6c19pbmZv
ID0geyAiQ3VzdG9tR2V0dGVyU2V0dGVyIiwgMCwgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShD
dXN0b21HZXR0ZXJTZXR0ZXIpIH07CisKK3ZvaWQgY2FsbEN1c3RvbVNldHRlcihFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgY3VzdG9tR2V0dGVyU2V0dGVyLCBKU09iamVjdCogYmFzZSwgSlNWYWx1
ZSB0aGlzVmFsdWUsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpD
dXN0b21TZXR0ZXIgc2V0dGVyID0ganNDYXN0PEN1c3RvbUdldHRlclNldHRlcio+KGN1c3RvbUdl
dHRlclNldHRlciktPnNldHRlcigpOworICAgIGlmICghc2V0dGVyKQorICAgICAgICByZXR1cm47
CisgICAgc2V0dGVyKGV4ZWMsIGJhc2UsIEpTVmFsdWU6OmVuY29kZSh0aGlzVmFsdWUpLCBKU1Zh
bHVlOjplbmNvZGUodmFsdWUpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0N1c3RvbUdldHRl
clNldHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEN1c3RvbUdldHRlclNldHRlcl9oCisjZGVmaW5lIEN1c3RvbUdldHRlclNldHRlcl9o
CisKKyNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKKyNpbmNs
dWRlICJQdXRQcm9wZXJ0eVNsb3QuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIEN1c3RvbUdldHRlclNldHRlciA6IHB1YmxpYyBKU0NlbGwgewor
cHVibGljOgorICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CisKKyAgICB0eXBlZGVmIFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jIEN1c3RvbUdldHRlcjsKKyAgICB0eXBlZGVmIFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jIEN1c3RvbVNldHRlcjsKKworICAgIHN0YXRpYyBDdXN0b21HZXR0
ZXJTZXR0ZXIqIGNyZWF0ZShWTSYgdm0sIEN1c3RvbUdldHRlciBjdXN0b21HZXR0ZXIsIEN1c3Rv
bVNldHRlciBjdXN0b21TZXR0ZXIpCisgICAgeworICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXIq
IGN1c3RvbUdldHRlclNldHRlciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEN1c3RvbUdl
dHRlclNldHRlcj4odm0uaGVhcCkpIEN1c3RvbUdldHRlclNldHRlcih2bSwgY3VzdG9tR2V0dGVy
LCBjdXN0b21TZXR0ZXIpOworICAgICAgICBjdXN0b21HZXR0ZXJTZXR0ZXItPmZpbmlzaENyZWF0
aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIGN1c3RvbUdldHRlclNldHRlcjsKKyAgICB9CisKKyAg
ICBDdXN0b21HZXR0ZXJTZXR0ZXI6OkN1c3RvbUdldHRlciBnZXR0ZXIoKSBjb25zdCB7IHJldHVy
biBtX2dldHRlcjsgfQorICAgIEN1c3RvbUdldHRlclNldHRlcjo6Q3VzdG9tU2V0dGVyIHNldHRl
cigpIGNvbnN0IHsgcmV0dXJuIG1fc2V0dGVyOyB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEN1c3RvbUdldHRlclNldHRlclR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisgICAgICAgIAorICAgIERFQ0xB
UkVfRVhQT1JUX0lORk87CisKK3ByaXZhdGU6CisgICAgQ3VzdG9tR2V0dGVyU2V0dGVyKFZNJiB2
bSwgQ3VzdG9tR2V0dGVyIGdldHRlciwgQ3VzdG9tU2V0dGVyIHNldHRlcikKKyAgICAgICAgOiBK
U0NlbGwodm0sIHZtLmN1c3RvbUdldHRlclNldHRlclN0cnVjdHVyZS5nZXQoKSkKKyAgICAgICAg
LCBtX2dldHRlcihnZXR0ZXIpCisgICAgICAgICwgbV9zZXR0ZXIoc2V0dGVyKQorICAgIHsKKyAg
ICB9CisKKyAgICBDdXN0b21HZXR0ZXIgbV9nZXR0ZXI7CisgICAgQ3VzdG9tU2V0dGVyIG1fc2V0
dGVyOworfTsKKwordm9pZCBjYWxsQ3VzdG9tU2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUgY3Vz
dG9tR2V0dGVyU2V0dGVyLCBKU09iamVjdCogYmFzZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTVmFs
dWUgdmFsdWUpOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEN1c3RvbUdldHRl
clNldHRlcl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlLmNwcAkocmV2aXNpb24gMTY5NTg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2lu
Y2x1ZGUgIkJvb2xlYW5Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkJvb2xlYW5Qcm90b3R5cGUu
aCIKKyNpbmNsdWRlICJDdXN0b21HZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJFcnJvci5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIK
QEAgLTE1NCw2ICsxNTUsMTEgQEAgdm9pZCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3Rh
dGUqIAogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAorICAgICAgICAg
ICAgaWYgKGdzLmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkpIHsKKyAgICAgICAgICAgICAgICBjYWxs
Q3VzdG9tU2V0dGVyKGV4ZWMsIGdzLCBvYmosIHNsb3QudGhpc1ZhbHVlKCksIHZhbHVlKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIC8vIElm
IHRoZXJlJ3MgYW4gZXhpc3RpbmcgcHJvcGVydHkgb24gdGhlIG9iamVjdCBvciBvbmUgb2YgaXRz
IAogICAgICAgICAgICAgLy8gcHJvdG90eXBlcyBpdCBzaG91bGQgYmUgcmVwbGFjZWQsIHNvIGJy
ZWFrIGhlcmUuCiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHJldmlzaW9uIDE2OTU4OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjE0LDYg
KzIxNCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzU3RyaW5nKCkgY29uc3Q7CiAgICAgYm9vbCBp
c1ByaW1pdGl2ZSgpIGNvbnN0OwogICAgIGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdDsKKyAg
ICBib29sIGlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkgY29uc3Q7CiAgICAgYm9vbCBpc09iamVjdCgp
IGNvbnN0OwogICAgIGJvb2wgaW5oZXJpdHMoY29uc3QgQ2xhc3NJbmZvKikgY29uc3Q7CiAgICAg
ICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGlu
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlSW5saW5lcy5oCShyZXZpc2lvbiAxNjk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NTAsNiArNTUw
LDExIEBAIGlubGluZSBib29sIEpTVmFsdWU6OmlzR2V0dGVyU2V0dGVyKCkgY28KICAgICByZXR1
cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzR2V0dGVyU2V0dGVyKCk7CiB9CiAKK2lubGluZSBi
b29sIEpTVmFsdWU6OmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
aXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCk7Cit9CisKIGlubGlu
ZSBib29sIEpTVmFsdWU6OmlzT2JqZWN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gaXNDZWxsKCkg
JiYgYXNDZWxsKCktPmlzT2JqZWN0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGwuaAkocmV2aXNpb24gMTY5NTg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTkwLDYgKzkwLDcgQEAgcHVibGljOgog
ICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKICAgICBib29sIGlzT2JqZWN0KCkgY29uc3Q7CiAg
ICAgYm9vbCBpc0dldHRlclNldHRlcigpIGNvbnN0OworICAgIGJvb2wgaXNDdXN0b21HZXR0ZXJT
ZXR0ZXIoKSBjb25zdDsKICAgICBib29sIGlzUHJveHkoKSBjb25zdDsKICAgICBib29sIGluaGVy
aXRzKGNvbnN0IENsYXNzSW5mbyopIGNvbnN0OwogICAgIGJvb2wgaXNBUElWYWx1ZVdyYXBwZXIo
KSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGlu
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJ
bmxpbmVzLmgJKHJldmlzaW9uIDE2OTU4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDYgKzE1NiwxMSBAQCBp
bmxpbmUgYm9vbCBKU0NlbGw6OmlzR2V0dGVyU2V0dGVyKCkgY29uCiAgICAgcmV0dXJuIG1fdHlw
ZSA9PSBHZXR0ZXJTZXR0ZXJUeXBlOwogfQogCitpbmxpbmUgYm9vbCBKU0NlbGw6OmlzQ3VzdG9t
R2V0dGVyU2V0dGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90eXBlID09IEN1c3RvbUdldHRl
clNldHRlclR5cGU7Cit9CisKIGlubGluZSBib29sIEpTQ2VsbDo6aXNQcm94eSgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fdHlwZSA9PSBJbXB1cmVQcm94eVR5cGUgfHwgbV90eXBlID09IFB1cmVG
b3J3YXJkaW5nUHJveHlUeXBlOwpAQCAtMjIxLDcgKzIyNiw5IEBAIEFMV0FZU19JTkxJTkUgSlNW
YWx1ZSBKU0NlbGw6OmZhc3RHZXRPd24KIAogaW5saW5lIGJvb2wgSlNDZWxsOjpjYW5Vc2VGYXN0
R2V0T3duUHJvcGVydHkoY29uc3QgU3RydWN0dXJlJiBzdHJ1Y3R1cmUpCiB7Ci0gICAgcmV0dXJu
ICFzdHJ1Y3R1cmUuaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpICYmICFzdHJ1Y3R1cmUudHlw
ZUluZm8oKS5vdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoKTsKKyAgICByZXR1cm4gIXN0cnVj
dHVyZS5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgCisgICAgICAgICYmICFzdHJ1Y3R1cmUu
aGFzQ3VzdG9tR2V0dGVyU2V0dGVyUHJvcGVydGllcygpCisgICAgICAgICYmICFzdHJ1Y3R1cmUu
dHlwZUluZm8oKS5vdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoKTsKIH0KIAogaW5saW5lIGJv
b2wgSlNDZWxsOjp0b0Jvb2xlYW4oRXhlY1N0YXRlKiBleGVjKSBjb25zdApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDE2OTU4
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzQsMTYgKzE3NCw2IEBAIGNvbnN0IFNvdXJjZUNvZGUqIEpTRnVuY3Rp
b246OnNvdXJjZUNvZGUKICAgICByZXR1cm4gJmpzRXhlY3V0YWJsZSgpLT5zb3VyY2UoKTsKIH0K
ICAgICAKLWJvb2wgSlNGdW5jdGlvbjo6aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSBjb25zdAot
ewotICAgIHJldHVybiBpc0hvc3RGdW5jdGlvbigpIHx8IGlzQnVpbHRpbkZ1bmN0aW9uKCk7Ci19
Ci0KLWJvb2wgSlNGdW5jdGlvbjo6aXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdAotewotICAgIHJl
dHVybiAhaXNIb3N0RnVuY3Rpb24oKSAmJiBqc0V4ZWN1dGFibGUoKS0+aXNCdWlsdGluRnVuY3Rp
b24oKTsKLX0KLQogdm9pZCBKU0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU0Z1bmN0aW9uKj4oY2VsbCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZpc2lvbiAxNjk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw4ICsxNDgs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX2FsbG9jYXRpb25Qcm9m
aWxlV2F0Y2hwb2ludDsKICAgICAgICAgfQogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJv
b2wgaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSBjb25zdDsKLSAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0OworICAgICAgICBib29sIGlzSG9z
dE9yQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rp
b24oKSBjb25zdDsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0hvc3RGdW5jdGlv
bk5vbklubGluZSgpIGNvbnN0OwogCiAgICAgcHJvdGVjdGVkOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCShyZXZpc2lvbiAx
Njk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5l
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSwxNiBAQCBpbmxpbmUgYm9vbCBKU0Z1bmN0
aW9uOjppc0hvc3RGdW5jdGlvbigpCiAgICAgcmV0dXJuIG1fZXhlY3V0YWJsZS0+aXNIb3N0RnVu
Y3Rpb24oKTsKIH0KIAoraW5saW5lIGJvb2wgSlNGdW5jdGlvbjo6aXNCdWlsdGluRnVuY3Rpb24o
KSBjb25zdAoreworICAgIHJldHVybiAhaXNIb3N0RnVuY3Rpb24oKSAmJiBqc0V4ZWN1dGFibGUo
KS0+aXNCdWlsdGluRnVuY3Rpb24oKTsKK30KKworaW5saW5lIGJvb2wgSlNGdW5jdGlvbjo6aXNI
b3N0T3JCdWlsdGluRnVuY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBpc0hvc3RGdW5jdGlv
bigpIHx8IGlzQnVpbHRpbkZ1bmN0aW9uKCk7Cit9CisKIGlubGluZSBOYXRpdmVGdW5jdGlvbiBK
U0Z1bmN0aW9uOjpuYXRpdmVGdW5jdGlvbigpCiB7CiAgICAgQVNTRVJUKGlzSG9zdEZ1bmN0aW9u
Tm9uSW5saW5lKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcAkocmV2aXNpb24gMTY5NTg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVk
ZSAiQ29waWVkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ29weVZpc2l0b3IuaCIKICNpbmNs
dWRlICJDb3B5VmlzaXRvcklubGluZXMuaCIKKyNpbmNsdWRlICJDdXN0b21HZXR0ZXJTZXR0ZXIu
aCIKICNpbmNsdWRlICJEYXRlUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiRXJyb3JDb25zdHJ1Y3Rv
ci5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKQEAgLTM4Nyw4ICszODgsMTMgQEAgdm9pZCBK
U09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YQogICAgICAgICAgICAgICAgIGlmICgh
dGhpc09iamVjdC0+c3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQogICAgICAgICAgICAgICAg
ICAgICBzbG90LnNldENhY2hlYWJsZVNldHRlcihvYmosIG9mZnNldCk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgQVNTRVJUKCEo
YXR0cmlidXRlcyAmIEFjY2Vzc29yKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
Z3MuaXNDdXN0b21HZXR0ZXJTZXR0ZXIoKSkgeworICAgICAgICAgICAgICAgIGNhbGxDdXN0b21T
ZXR0ZXIoZXhlYywgZ3MsIG9iaiwgc2xvdC50aGlzVmFsdWUoKSwgdmFsdWUpOworICAgICAgICAg
ICAgICAgIHNsb3Quc2V0Q3VzdG9tUHJvcGVydHkob2JqLCBqc0Nhc3Q8Q3VzdG9tR2V0dGVyU2V0
dGVyKj4oZ3MuYXNDZWxsKCkpLT5zZXR0ZXIoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUKCEoYXR0cmlidXRlcyAmIEFjY2Vzc29y
KSk7CiAKICAgICAgICAgICAgIC8vIElmIHRoZXJlJ3MgYW4gZXhpc3RpbmcgcHJvcGVydHkgb24g
dGhlIG9iamVjdCBvciBvbmUgb2YgaXRzIAogICAgICAgICAgICAgLy8gcHJvdG90eXBlcyBpdCBz
aG91bGQgYmUgcmVwbGFjZWQsIHNvIGJyZWFrIGhlcmUuCkBAIC0xMjI0LDYgKzEyMzAsMjEgQEAg
dm9pZCBKU09iamVjdDo6cHV0RGlyZWN0QWNjZXNzb3IoRXhlY1N0YQogICAgIHB1dERpcmVjdE5v
bkluZGV4QWNjZXNzb3IoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRl
cyk7CiB9CiAKK3ZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKFZNJiB2bSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmli
dXRlcykKK3sKKyAgICBBU1NFUlQocHJvcGVydHlOYW1lLmFzSW5kZXgoKSA9PSBQcm9wZXJ0eU5h
bWU6Ok5vdEFuSW5kZXgpOworCisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhpcyk7CisgICAg
cHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5Pih2bSwgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2xvdCwgZ2V0Q2FsbGFibGVPYmplY3QodmFsdWUpKTsK
KworICAgIEFTU0VSVChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5
KTsKKworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKKyAg
ICBpZiAoYXR0cmlidXRlcyAmIFJlYWRPbmx5KQorICAgICAgICBzdHJ1Y3R1cmUtPnNldENvbnRh
aW5zUmVhZE9ubHlQcm9wZXJ0aWVzKCk7CisgICAgc3RydWN0dXJlLT5zZXRIYXNDdXN0b21HZXR0
ZXJTZXR0ZXJQcm9wZXJ0aWVzKCk7Cit9CisKIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdE5vbklu
ZGV4QWNjZXNzb3IoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRo
aXMpOwpAQCAtMTY2NiwxMCArMTY4NywxOCBAQCBORVZFUl9JTkxJTkUgdm9pZCBKU09iamVjdDo6
ZmlsbEdldHRlclByCiAgICAgICAgIHNsb3Quc2V0R2V0dGVyU2xvdCh0aGlzLCBhdHRyaWJ1dGVz
LCBqc0Nhc3Q8R2V0dGVyU2V0dGVyKj4oZ2V0dGVyU2V0dGVyKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0KICAgICBzbG90LnNldENhY2hlYWJsZUdldHRlclNsb3QodGhpcywgYXR0cmlidXRl
cywganNDYXN0PEdldHRlclNldHRlcio+KGdldHRlclNldHRlciksIG9mZnNldCk7CiB9CiAKK05F
VkVSX0lOTElORSB2b2lkIEpTT2JqZWN0OjpmaWxsQ3VzdG9tR2V0dGVyUHJvcGVydHlTbG90KFBy
b3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBjdXN0b21HZXR0ZXJTZXR0ZXIsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMpCit7CisgICAgaWYgKHN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkgeworICAg
ICAgICBzbG90LnNldEN1c3RvbSh0aGlzLCBhdHRyaWJ1dGVzLCBqc0Nhc3Q8Q3VzdG9tR2V0dGVy
U2V0dGVyKj4oY3VzdG9tR2V0dGVyU2V0dGVyKS0+Z2V0dGVyKCkpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIHNsb3Quc2V0Q2FjaGVhYmxlQ3VzdG9tKHRoaXMsIGF0dHJpYnV0ZXMsIGpz
Q2FzdDxDdXN0b21HZXR0ZXJTZXR0ZXIqPihjdXN0b21HZXR0ZXJTZXR0ZXIpLT5nZXR0ZXIoKSk7
Cit9CisKIHZvaWQgSlNPYmplY3Q6OnB1dEluZGV4ZWREZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhl
YywgU3BhcnNlQXJyYXlFbnRyeSogZW50cnlJbk1hcCwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yLCBQcm9wZXJ0eURlc2NyaXB0b3ImIG9sZERlc2NyaXB0b3IpCiB7CiAgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKQEAgLTI2NjAsMTQgKzI2ODksNiBAQCBib29sIEpTT2JqZWN0
OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjCiAgICAgcmV0dXJuIG9iamVjdC0+ZGVmaW5lT3du
Tm9uSW5kZXhQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhj
ZXB0aW9uKTsKIH0KIAotYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90U2xvdyhFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKLXsKLSAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKLSAgICBpZiAo
aSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpCi0gICAgICAgIHJldHVybiBnZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4KHRoaXMsIGV4ZWMsIGksIHNsb3QpOwotICAgIHJldHVybiBmYWxzZTsK
LX0KLQogSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQogewogICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBtZXNzYWdlKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDE2OTU4OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2Nyw2
ICs0NjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihW
TSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDApOwogICAg
IHZvaWQgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcihWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgdm9pZCBwdXREaXJlY3RBY2Nlc3NvcihFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IoVk0mLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgYm9vbCBoYXNQcm9wZXJ0eShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpIGNvbnN0
OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzUHJvcGVydHkoRXhlY1N0YXRlKiwgdW5z
aWduZWQgcHJvcGVydHlOYW1lKSBjb25zdDsKQEAgLTU3Myw2ICs1NzQsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCByZW1vdmVEaXJlY3QoVk0mLCBQcm9wZXJ0eU5hbWUpOyAvLyBSZXR1cm4gdHJ1ZSBp
ZiBhbnl0aGluZyBpcyByZW1vdmVkLgogICAgIGJvb2wgaGFzQ3VzdG9tUHJvcGVydGllcygpIHsg
cmV0dXJuIHN0cnVjdHVyZSgpLT5kaWRUcmFuc2l0aW9uKCk7IH0KICAgICBib29sIGhhc0dldHRl
clNldHRlclByb3BlcnRpZXMoKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0dGVy
UHJvcGVydGllcygpOyB9CisgICAgYm9vbCBoYXNDdXN0b21HZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVz
KCkgeyByZXR1cm4gc3RydWN0dXJlKCktPmhhc0N1c3RvbUdldHRlclNldHRlclByb3BlcnRpZXMo
KTsgfQogCiAgICAgLy8gcHV0T3duRGF0YVByb3BlcnR5IGhhcyAncHV0JyBsaWtlIHNlbWFudGlj
cywgaG93ZXZlciB0aGlzIG1ldGhvZDoKICAgICAvLyAgLSBhc3N1bWVzIHRoZSBvYmplY3QgY29u
dGFpbnMgbm8gb3duIGdldHRlci9zZXR0ZXIgcHJvcGVydGllcy4KQEAgLTU4Nyw3ICs1ODksNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBwdXREaXJlY3RVbmRlZmluZWQoUHJvcGVydHlPZmZzZXQgb2Zm
c2V0KSB7IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPnNldFVuZGVmaW5lZCgpOyB9CiAKICAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0
aCwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAg
SlNGdW5jdGlvbiogcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBjb25zdCBQcm9wZXJ0eU5hbWUmLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU0Z1bmN0aW9uKiBwdXREaXJlY3RCdWls
dGluRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIEZ1
bmN0aW9uRXhlY3V0YWJsZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIEpTRnVuY3Rpb24q
IHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKTsKICAgICB2b2lkIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2ln
bmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKTsKIApAQCAtNjIzLDYgKzYyNSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRT
dHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5KFZNJiwgdW5zaWduZWQgb2xk
Q2FwYWNpdHksIFN0cnVjdHVyZSopOwogICAgIHZvaWQgc2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0
ZVN0b3JhZ2VJZk5lY2Vzc2FyeShWTSYsIFN0cnVjdHVyZSopOwogCisgICAgdm9pZCBjb252ZXJ0
VG9EaWN0aW9uYXJ5KFZNJiB2bSkKKyAgICB7CisgICAgICAgIHNldFN0cnVjdHVyZSh2bSwgU3Ry
dWN0dXJlOjp0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUodm0p
KSk7CisgICAgfQorCiAgICAgdm9pZCBmbGF0dGVuRGljdGlvbmFyeU9iamVjdChWTSYgdm0pCiAg
ICAgewogICAgICAgICBzdHJ1Y3R1cmUodm0pLT5mbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSh2
bSwgdGhpcyk7CkBAIC05NTIsNiArOTU5LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaW5saW5l
R2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIFZNJiwgU3RydWN0dXJlJiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbGxHZXR0
ZXJQcm9wZXJ0eVNsb3QoUHJvcGVydHlTbG90JiwgSlNWYWx1ZSwgdW5zaWduZWQsIFByb3BlcnR5
T2Zmc2V0KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbGxDdXN0b21HZXR0ZXJQcm9w
ZXJ0eVNsb3QoUHJvcGVydHlTbG90JiwgSlNWYWx1ZSwgdW5zaWduZWQpOwogCiAgICAgY29uc3Qg
SGFzaFRhYmxlVmFsdWUqIGZpbmRQcm9wZXJ0eUhhc2hFbnRyeShWTSYsIFByb3BlcnR5TmFtZSkg
Y29uc3Q7CiAgICAgICAgIApAQCAtOTY0LDcgKzk3Miw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWdu
ZWQgZ2V0TmV3VmVjdG9yTGVuZ3RoKHVuc2lnbmVkIGN1cnJlbnRWZWN0b3JMZW5ndGgsIHVuc2ln
bmVkIGN1cnJlbnRMZW5ndGgsIHVuc2lnbmVkIGRlc2lyZWRMZW5ndGgpOwogICAgIHVuc2lnbmVk
IGdldE5ld1ZlY3Rvckxlbmd0aCh1bnNpZ25lZCBkZXNpcmVkTGVuZ3RoKTsKIAotICAgIEpTX0VY
UE9SVF9QUklWQVRFIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90U2xvdyhFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90U2xv
dyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICAKICAg
ICBBcnJheVN0b3JhZ2UqIGNvbnN0cnVjdENvbnZlcnRlZEFycmF5U3RvcmFnZVdpdGhvdXRDb3B5
aW5nRWxlbWVudHMoVk0mLCB1bnNpZ25lZCBuZWVkZWRMZW5ndGgpOwogICAgICAgICAKQEAgLTEy
MTMsNiArMTIyMSw4IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6aW5saW5lR2V0T3cK
ICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGdldERpcmVjdChvZmZzZXQpOwogICAgICAgICBpZiAo
c3RydWN0dXJlLmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSAmJiB2YWx1ZS5pc0dldHRlclNl
dHRlcigpKQogICAgICAgICAgICAgZmlsbEdldHRlclByb3BlcnR5U2xvdChzbG90LCB2YWx1ZSwg
YXR0cmlidXRlcywgb2Zmc2V0KTsKKyAgICAgICAgZWxzZSBpZiAoc3RydWN0dXJlLmhhc0N1c3Rv
bUdldHRlclNldHRlclByb3BlcnRpZXMoKSAmJiB2YWx1ZS5pc0N1c3RvbUdldHRlclNldHRlcigp
KQorICAgICAgICAgICAgZmlsbEN1c3RvbUdldHRlclByb3BlcnR5U2xvdChzbG90LCB2YWx1ZSwg
YXR0cmlidXRlcyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhp
cywgYXR0cmlidXRlcywgdmFsdWUsIG9mZnNldCk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAt
MTIyMSw2ICsxMjMxLDE0IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6aW5saW5lR2V0
T3cKICAgICByZXR1cm4gZ2V0T3duUHJvcGVydHlTbG90U2xvdyhleGVjLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogfQogCitpbmxpbmUgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90U2xv
dyhFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYgc2xvdCkKK3sKKyAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKKyAg
ICBpZiAoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpCisgICAgICAgIHJldHVybiBnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KHRoaXMsIGV4ZWMsIGksIHNsb3QpOworICAgIHJldHVybiBm
YWxzZTsKK30KKwogLy8gSXQgbWF5IHNlZW0gY3JhenkgdG8gaW5saW5lIGEgZnVuY3Rpb24gdGhp
cyBsYXJnZSwgZXNwZWNpYWxseSBhIHZpcnR1YWwgZnVuY3Rpb24sCiAvLyBidXQgaXQgbWFrZXMg
YSBiaWcgZGlmZmVyZW5jZSB0byBwcm9wZXJ0eSBsb29rdXAgdGhhdCBkZXJpdmVkIGNsYXNzZXMg
Y2FuIGlubGluZSB0aGVpcgogLy8gYmFzZSBjbGFzcyBjYWxsIHRvIHRoaXMuCkBAIC0xNDQwLDYg
KzE0NTgsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0T3duRGF0YVByb3BlcnR5CiAgICAg
QVNTRVJUKHZhbHVlKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6Omhl
YXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwogICAgIEFTU0VSVCghc3RydWN0dXJlKCkt
Pmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSk7CisgICAgQVNTRVJUKCFzdHJ1Y3R1cmUoKS0+
aGFzQ3VzdG9tR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKTsKIAogICAgIHJldHVybiBwdXREaXJl
Y3RJbnRlcm5hbDxQdXRNb2RlUHV0Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCwg
Z2V0Q2FsbGFibGVPYmplY3QodmFsdWUpKTsKIH0KQEAgLTE0NDcsNiArMTQ2Niw3IEBAIGlubGlu
ZSBib29sIEpTT2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHkKIGlubGluZSB2b2lkIEpTT2JqZWN0
OjpwdXREaXJlY3QoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0ZXJT
ZXR0ZXIoKSAmJiAhKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOworICAgIEFTU0VSVCghdmFsdWUu
aXNDdXN0b21HZXR0ZXJTZXR0ZXIoKSk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhpcyk7
CiAgICAgcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5Pih2bSwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2xvdCwgZ2V0Q2FsbGFibGVPYmplY3QodmFs
dWUpKTsKIH0KQEAgLTE0NTQsNiArMTQ3NCw3IEBAIGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXRE
aXJlY3QoVk0mIHZtLCAKIGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3QoVk0mIHZtLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0dldHRlclNldHRlcigpKTsKKyAgICBBU1NF
UlQoIXZhbHVlLmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkpOwogICAgIHB1dERpcmVjdEludGVybmFs
PFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNs
b3QsIGdldENhbGxhYmxlT2JqZWN0KHZhbHVlKSk7CiB9CiAKQEAgLTE0NjEsNiArMTQ4Miw3IEBA
IGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RXaXRob3V0VHIKIHsKICAgICBEZWZlckdD
IGRlZmVyR0Modm0uaGVhcCk7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0dldHRlclNldHRlcigpICYm
ICEoYXR0cmlidXRlcyAmIEFjY2Vzc29yKSk7CisgICAgQVNTRVJUKCF2YWx1ZS5pc0N1c3RvbUdl
dHRlclNldHRlcigpKTsKICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IG1fYnV0dGVyZmx5
LmdldCgpOwogICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdl
KCkpCiAgICAgICAgIG5ld0J1dHRlcmZseSA9IGdyb3dPdXRPZkxpbmVTdG9yYWdlKHZtLCBzdHJ1
Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgc3RydWN0dXJlKCktPnN1Z2dlc3RlZE5ld091
dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZS5oCShyZXZpc2lvbiAxNjk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQCBlbnVtIEpT
VHlwZSA6IHVpbnQ4X3QgewogICAgIC8vIFRoZSBDb21wb3VuZFR5cGUgdmFsdWUgbXVzdCBjb21l
IGJlZm9yZSBhbnkgSlNUeXBlIHRoYXQgbWF5IGhhdmUgY2hpbGRyZW4uCiAgICAgQ29tcG91bmRU
eXBlLAogICAgIEdldHRlclNldHRlclR5cGUsCisgICAgQ3VzdG9tR2V0dGVyU2V0dGVyVHlwZSwK
ICAgICBBUElWYWx1ZVdyYXBwZXJUeXBlLAogCiAgICAgRXZhbEV4ZWN1dGFibGVUeXBlLApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgJKHJldmlzaW9uIDE2OTU4OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMSw3ICsyMSwxMCBAQAogI2lmbmRlZiBMb29rdXBfaAogI2RlZmluZSBMb29rdXBfaAog
CisjaW5jbHVkZSAiQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCIKICNpbmNsdWRlICJDYWxs
RnJhbWUuaCIKKyNpbmNsdWRlICJDdXN0b21HZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJJZGVu
dGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIklkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgpAQCAtMjkwLDYgKzI5MywzNCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcHV0RW50cnkoZXhlYywgZW50cnksIGJhc2UsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisK
KyAgICBpbmxpbmUgdm9pZCByZWlmeVN0YXRpY1Byb3BlcnRpZXMoVk0mIHZtLCBjb25zdCBIYXNo
VGFibGUmIHRhYmxlLCBKU09iamVjdCogdGhpc09iaikKKyAgICB7CisgICAgICAgIEJhdGNoZWRU
cmFuc2l0aW9uT3B0aW1pemVyIHRyYW5zaXRpb25PcHRpbWl6ZXIodm0sIHRoaXNPYmopOworICAg
ICAgICBmb3IgKGF1dG8gaXRlciA9IHRhYmxlLmJlZ2luKHZtKTsgaXRlciAhPSB0YWJsZS5lbmQo
dm0pOyArK2l0ZXIpIHsKKyAgICAgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lKCZ2bSwg
aXRlci5rZXkoKSk7CisgICAgICAgICAgICBjb25zdCBIYXNoVGFibGVWYWx1ZSogZW50cnkgPSBp
dGVyLnZhbHVlKCk7CisgICAgICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRlcygpICYgQnVpbHRp
bikgeworICAgICAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbih2
bSwgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgZW50cnktPmJ1aWx0aW5H
ZW5lcmF0b3IoKSh2bSksIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOworICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRl
cygpICYgRnVuY3Rpb24pIHsKKyAgICAgICAgICAgICAgICB0aGlzT2JqLT5wdXREaXJlY3ROYXRp
dmVGdW5jdGlvbih2bSwgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgZW50
cnktPmZ1bmN0aW9uTGVuZ3RoKCksCisgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5mdW5jdGlv
bigpLCBlbnRyeS0+aW50cmluc2ljKCksIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOworICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaXRlci0+
YXR0cmlidXRlcygpICYgQWNjZXNzb3IpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXIqIGN1c3RvbUdldHRlclNldHRlciA9
IEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBlbnRyeS0+cHJvcGVydHlHZXR0ZXIoKSwg
ZW50cnktPnByb3BlcnR5UHV0dGVyKCkpOworICAgICAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0
Q3VzdG9tQWNjZXNzb3Iodm0sIHByb3BlcnR5TmFtZSwgY3VzdG9tR2V0dGVyU2V0dGVyLCBlbnRy
eS0+YXR0cmlidXRlcygpKTsKKyAgICAgICAgfQorICAgIH0KKwogfSAvLyBuYW1lc3BhY2UgSlND
CiAKICNlbmRpZiAvLyBMb29rdXBfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTWFwQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTY5NTg5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRl
ICJKU01hcC5oIgogI2luY2x1ZGUgIk1hcFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIlN0cnVjdHVy
ZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yQ29uc3RydWN0b3IuY3BwCShy
ZXZpc2lvbiAxNjk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVy
YXRvckNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNNYXBJdGVyYXRvci5oIgogI2lu
Y2x1ZGUgIk1hcEl0ZXJhdG9yUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5l
cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgJKHJldmlzaW9uIDE2OTU4OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAg
ICAgICAgICAgICBBU1NFUlQobV92YWx1ZSk7CiAgICAgICAgICAgICBBU1NFUlQoIW1fdmFsdWUu
aXNHZXR0ZXJTZXR0ZXIoKSk7CisgICAgICAgICAgICBBU1NFUlQoIW1fdmFsdWUuaXNDdXN0b21H
ZXR0ZXJTZXR0ZXIoKSk7CiAgICAgICAgIH0KICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9v
bCB3cml0YWJsZSgpIGNvbnN0OwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGVudW1l
cmFibGUoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENv
bnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TZXRDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDE2OTU4OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMs
NiArMzMsNyBAQAogI2luY2x1ZGUgIkpTU2V0LmgiCiAjaW5jbHVkZSAiTWFwRGF0YS5oIgogI2lu
Y2x1ZGUgIlNldFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKIAog
bmFtZXNwYWNlIEpTQyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nl
dEl0ZXJhdG9yQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9yQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxNjk1ODkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJdGVyYXRvckNvbnN0cnVjdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkpTR2xvYmFs
T2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTZXRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlNldEl0ZXJh
dG9yUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuY3BwCShyZXZpc2lvbiAxNjk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNiArMTY4LDcgQEAgU3RydWN0
dXJlOjpTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iagogICAgICwgbV9kaWN0aW9uYXJ5S2lu
ZChOb25lRGljdGlvbmFyeUtpbmQpCiAgICAgLCBtX2lzUGlubmVkUHJvcGVydHlUYWJsZShmYWxz
ZSkKICAgICAsIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyhjbGFzc0luZm8tPmhhc1N0YXRp
Y1NldHRlck9yUmVhZG9ubHlQcm9wZXJ0aWVzKHZtKSkKKyAgICAsIG1faGFzQ3VzdG9tR2V0dGVy
U2V0dGVyUHJvcGVydGllcyhmYWxzZSkKICAgICAsIG1faGFzUmVhZE9ubHlPckdldHRlclNldHRl
clByb3BlcnRpZXNFeGNsdWRpbmdQcm90byhjbGFzc0luZm8tPmhhc1N0YXRpY1NldHRlck9yUmVh
ZG9ubHlQcm9wZXJ0aWVzKHZtKSkKICAgICAsIG1faGFzTm9uRW51bWVyYWJsZVByb3BlcnRpZXMo
ZmFsc2UpCiAgICAgLCBtX2F0dHJpYnV0ZXNJblByZXZpb3VzKDApCkBAIC0xOTUsNiArMTk2LDcg
QEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoVk0mIHZtKQogICAgICwgbV9kaWN0aW9uYXJ5S2luZChO
b25lRGljdGlvbmFyeUtpbmQpCiAgICAgLCBtX2lzUGlubmVkUHJvcGVydHlUYWJsZShmYWxzZSkK
ICAgICAsIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyhtX2NsYXNzSW5mby0+aGFzU3RhdGlj
U2V0dGVyT3JSZWFkb25seVByb3BlcnRpZXModm0pKQorICAgICwgbV9oYXNDdXN0b21HZXR0ZXJT
ZXR0ZXJQcm9wZXJ0aWVzKGZhbHNlKQogICAgICwgbV9oYXNSZWFkT25seU9yR2V0dGVyU2V0dGVy
UHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvKG1fY2xhc3NJbmZvLT5oYXNTdGF0aWNTZXR0ZXJPclJl
YWRvbmx5UHJvcGVydGllcyh2bSkpCiAgICAgLCBtX2hhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVz
KGZhbHNlKQogICAgICwgbV9hdHRyaWJ1dGVzSW5QcmV2aW91cygwKQpAQCAtMjIxLDYgKzIyMyw3
IEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKFZNJiB2bSwgY29uc3QgU3RydWMKICAgICAsIG1fZGlj
dGlvbmFyeUtpbmQocHJldmlvdXMtPm1fZGljdGlvbmFyeUtpbmQpCiAgICAgLCBtX2lzUGlubmVk
UHJvcGVydHlUYWJsZShmYWxzZSkKICAgICAsIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyhw
cmV2aW91cy0+bV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKQorICAgICwgbV9oYXNDdXN0b21H
ZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKHByZXZpb3VzLT5tX2hhc0N1c3RvbUdldHRlclNldHRlclBy
b3BlcnRpZXMpCiAgICAgLCBtX2hhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhj
bHVkaW5nUHJvdG8ocHJldmlvdXMtPm1faGFzUmVhZE9ubHlPckdldHRlclNldHRlclByb3BlcnRp
ZXNFeGNsdWRpbmdQcm90bykKICAgICAsIG1faGFzTm9uRW51bWVyYWJsZVByb3BlcnRpZXMocHJl
dmlvdXMtPm1faGFzTm9uRW51bWVyYWJsZVByb3BlcnRpZXMpCiAgICAgLCBtX2F0dHJpYnV0ZXNJ
blByZXZpb3VzKDApCkBAIC0zMTcsMTggKzMyMCw2IEBAIHZvaWQgU3RydWN0dXJlOjptYXRlcmlh
bGl6ZVByb3BlcnR5TWFwKFYKICAgICBjaGVja09mZnNldENvbnNpc3RlbmN5KCk7CiB9CiAKLWlu
bGluZSBzaXplX3QgbmV4dE91dE9mTGluZVN0b3JhZ2VDYXBhY2l0eShzaXplX3QgY3VycmVudENh
cGFjaXR5KQotewotICAgIGlmICghY3VycmVudENhcGFjaXR5KQotICAgICAgICByZXR1cm4gaW5p
dGlhbE91dE9mTGluZUNhcGFjaXR5OwotICAgIHJldHVybiBjdXJyZW50Q2FwYWNpdHkgKiBvdXRP
ZkxpbmVHcm93dGhGYWN0b3I7Ci19Ci0KLXNpemVfdCBTdHJ1Y3R1cmU6OnN1Z2dlc3RlZE5ld091
dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSgpCi17Ci0gICAgcmV0dXJuIG5leHRPdXRPZkxpbmVTdG9y
YWdlQ2FwYWNpdHkob3V0T2ZMaW5lQ2FwYWNpdHkoKSk7Ci19Ci0gCiB2b2lkIFN0cnVjdHVyZTo6
ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKIHsKICAgICBTdHJpbmdJbXBsKiByZXAgPSBwcm9wZXJ0eU5hbWUudWlkKCk7CkBAIC04
OTgsMjUgKzg4OSw2IEBAIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6Z2V0Q29uY3VycmVudGwK
ICAgICByZXR1cm4gaW52YWxpZE9mZnNldDsKIH0KIAotUHJvcGVydHlPZmZzZXQgU3RydWN0dXJl
OjpnZXQoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmli
dXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkKLXsKLSAgICBBU1NFUlQoIWlzQ29tcGlsYXRp
b25UaHJlYWQoKSk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSBpbmZv
KCkpOwotCi0gICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwotICAgIG1hdGVyaWFsaXplUHJv
cGVydHlNYXBJZk5lY2Vzc2FyeSh2bSwgZGVmZXJHQyk7Ci0gICAgaWYgKCFwcm9wZXJ0eVRhYmxl
KCkpCi0gICAgICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0OwotCi0gICAgUHJvcGVydHlNYXBFbnRy
eSogZW50cnkgPSBwcm9wZXJ0eVRhYmxlKCktPmdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwotICAg
IGlmICghZW50cnkpCi0gICAgICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0OwotCi0gICAgYXR0cmli
dXRlcyA9IGVudHJ5LT5hdHRyaWJ1dGVzOwotICAgIHNwZWNpZmljVmFsdWUgPSBlbnRyeS0+c3Bl
Y2lmaWNWYWx1ZS5nZXQoKTsKLSAgICByZXR1cm4gZW50cnktPm9mZnNldDsKLX0KLQogYm9vbCBT
dHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1bmN0aW9uKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKIHsKICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMTY5NTg5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTExOCw3ICsxMTgsNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0
cnVjdHVyZSogY2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIEpTVmFs
dWUgcHJvdG90eXBlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBk
ZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUp
OwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24oVk0mLCBT
dHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwotICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIHRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1
cmUqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiB0b0NhY2hlYWJs
ZURpY3Rpb25hcnlUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIFN0cnVj
dHVyZSogdG9VbmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKik7
CiAgICAgc3RhdGljIFN0cnVjdHVyZSogc2VhbFRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqKTsK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBmcmVlemVUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKik7
CkBAIC0xMzAsOSArMTMwLDkgQEAgcHVibGljOgogICAgIGJvb2wgaXNFeHRlbnNpYmxlKCkgY29u
c3QgeyByZXR1cm4gIW1fcHJldmVudEV4dGVuc2lvbnM7IH0KICAgICBib29sIGRpZFRyYW5zaXRp
b24oKSBjb25zdCB7IHJldHVybiBtX2RpZFRyYW5zaXRpb247IH0KICAgICBib29sIHB1dFdpbGxH
cm93T3V0T2ZMaW5lU3RvcmFnZSgpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBzdWdn
ZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKTsgCisgICAgc2l6ZV90IHN1Z2dlc3Rl
ZE5ld091dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSgpOyAKIAotICAgIFN0cnVjdHVyZSogZmxhdHRl
bkRpY3Rpb25hcnlTdHJ1Y3R1cmUoVk0mLCBKU09iamVjdCopOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIFN0cnVjdHVyZSogZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUoVk0mLCBKU09iamVjdCop
OwogCiAgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CiAgICAg
c3RhdGljIGNvbnN0IGJvb2wgaGFzSW1tb3J0YWxTdHJ1Y3R1cmUgPSB0cnVlOwpAQCAtMjY0LDcg
KzI2NCw3IEBAIHB1YmxpYzoKIAogICAgIFByb3BlcnR5T2Zmc2V0IGdldChWTSYsIFByb3BlcnR5
TmFtZSk7CiAgICAgUHJvcGVydHlPZmZzZXQgZ2V0KFZNJiwgY29uc3QgV1RGOjpTdHJpbmcmIG5h
bWUpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIFByb3BlcnR5T2Zmc2V0IGdldChWTSYsIFByb3Bl
cnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpOwor
ICAgIFByb3BlcnR5T2Zmc2V0IGdldChWTSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJp
YnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpOwogCiAgICAgUHJvcGVydHlPZmZzZXQgZ2V0
Q29uY3VycmVudGx5KFZNJiwgU3RyaW5nSW1wbCogdWlkKTsKICAgICBQcm9wZXJ0eU9mZnNldCBn
ZXRDb25jdXJyZW50bHkoVk0mLCBTdHJpbmdJbXBsKiB1aWQsIHVuc2lnbmVkJiBhdHRyaWJ1dGVz
LCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKTsKQEAgLTI3Nyw2ICsyNzcsMTAgQEAgcHVibGljOgog
ICAgICAgICBpZiAoIWlzX19wcm90b19fKQogICAgICAgICAgICAgbV9oYXNSZWFkT25seU9yR2V0
dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvID0gdHJ1ZTsKICAgICB9CisKKyAgICBi
b29sIGhhc0N1c3RvbUdldHRlclNldHRlclByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX2hh
c0N1c3RvbUdldHRlclNldHRlclByb3BlcnRpZXM7IH0KKyAgICB2b2lkIHNldEhhc0N1c3RvbUdl
dHRlclNldHRlclByb3BlcnRpZXMoKSB7IG1faGFzQ3VzdG9tR2V0dGVyU2V0dGVyUHJvcGVydGll
cyA9IHRydWU7IH0KKwogICAgIHZvaWQgc2V0Q29udGFpbnNSZWFkT25seVByb3BlcnRpZXMoKQog
ICAgIHsKICAgICAgICAgbV9oYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1
ZGluZ1Byb3RvID0gdHJ1ZTsKQEAgLTUyMiw2ICs1MjYsNyBAQCBwcml2YXRlOgogICAgIHVuc2ln
bmVkIG1fZGljdGlvbmFyeUtpbmQgOiAyOwogICAgIGJvb2wgbV9pc1Bpbm5lZFByb3BlcnR5VGFi
bGUgOiAxOwogICAgIGJvb2wgbV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzIDogMTsKKyAgICBi
b29sIG1faGFzQ3VzdG9tR2V0dGVyU2V0dGVyUHJvcGVydGllcyA6IDE7CiAgICAgYm9vbCBtX2hh
c1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8gOiAxOwogICAg
IGJvb2wgbV9oYXNOb25FbnVtZXJhYmxlUHJvcGVydGllcyA6IDE7CiAgICAgdW5zaWduZWQgbV9h
dHRyaWJ1dGVzSW5QcmV2aW91cyA6IDE0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAkocmV2aXNpb24gMTY5NTg5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC05OSw2ICs5OSwyNSBAQCBpbmxpbmUgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpn
ZXQoVk0mCiAgICAgcmV0dXJuIGVudHJ5ID8gZW50cnktPm9mZnNldCA6IGludmFsaWRPZmZzZXQ7
CiB9CiAgICAgCitpbmxpbmUgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXQoVk0mIHZtLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYg
c3BlY2lmaWNWYWx1ZSkKK3sKKyAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7Cisg
ICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSBpbmZvKCkpOworCisgICAgRGVm
ZXJHQyBkZWZlckdDKHZtLmhlYXApOworICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vz
c2FyeSh2bSwgZGVmZXJHQyk7CisgICAgaWYgKCFwcm9wZXJ0eVRhYmxlKCkpCisgICAgICAgIHJl
dHVybiBpbnZhbGlkT2Zmc2V0OworCisgICAgUHJvcGVydHlNYXBFbnRyeSogZW50cnkgPSBwcm9w
ZXJ0eVRhYmxlKCktPmdldChwcm9wZXJ0eU5hbWUudWlkKCkpOworICAgIGlmICghZW50cnkpCisg
ICAgICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0OworCisgICAgYXR0cmlidXRlcyA9IGVudHJ5LT5h
dHRyaWJ1dGVzOworICAgIHNwZWNpZmljVmFsdWUgPSBlbnRyeS0+c3BlY2lmaWNWYWx1ZS5nZXQo
KTsKKyAgICByZXR1cm4gZW50cnktPm9mZnNldDsKK30KKwogaW5saW5lIFByb3BlcnR5T2Zmc2V0
IFN0cnVjdHVyZTo6Z2V0Q29uY3VycmVudGx5KFZNJiB2bSwgU3RyaW5nSW1wbCogdWlkKQogewog
ICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXNJZ25vcmVkOwpAQCAtMjQ2LDYgKzI2NSwxOCBAQCBBTFdB
WVNfSU5MSU5FIGJvb2wgU3RydWN0dXJlOjpjaGVja09mZnNlCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKK2lubGluZSBzaXplX3QgbmV4dE91dE9mTGluZVN0b3JhZ2VDYXBhY2l0eShzaXplX3QgY3Vy
cmVudENhcGFjaXR5KQoreworICAgIGlmICghY3VycmVudENhcGFjaXR5KQorICAgICAgICByZXR1
cm4gaW5pdGlhbE91dE9mTGluZUNhcGFjaXR5OworICAgIHJldHVybiBjdXJyZW50Q2FwYWNpdHkg
KiBvdXRPZkxpbmVHcm93dGhGYWN0b3I7Cit9CisKK2lubGluZSBzaXplX3QgU3RydWN0dXJlOjpz
dWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKQoreworICAgIHJldHVybiBuZXh0
T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KG91dE9mTGluZUNhcGFjaXR5KCkpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFN0cnVjdHVyZUlubGluZXNfaApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMTY5NTg5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICsz
Nyw3IEBACiAjaW5jbHVkZSAiQ29kZUNhY2hlLmgiCiAjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmll
cnMuaCIKICNpbmNsdWRlICJDb21tb25TbG93UGF0aHMuaCIKKyNpbmNsdWRlICJDdXN0b21HZXR0
ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJERkdMb25nTGl2ZWRTdGF0ZS5oIgogI2luY2x1ZGUgIkRG
R1dvcmtsaXN0LmgiCiAjaW5jbHVkZSAiRGVidWdnZXJBY3RpdmF0aW9uLmgiCkBAIC0yNTAsNiAr
MjUxLDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIG5v
dEFuT2JqZWN0U3RydWN0dXJlLnNldCgqdGhpcywgSlNOb3RBbk9iamVjdDo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHByb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0
dXJlLnNldCgqdGhpcywgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGdldHRlclNldHRlclN0cnVjdHVyZS5zZXQoKnRoaXMs
IEdldHRlclNldHRlcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOworICAg
IGN1c3RvbUdldHRlclNldHRlclN0cnVjdHVyZS5zZXQoKnRoaXMsIEN1c3RvbUdldHRlclNldHRl
cjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGFwaVdyYXBwZXJT
dHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU0FQSVZhbHVlV3JhcHBlcjo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwogICAgIEpTU2NvcGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1Nj
b3BlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZXhlY3V0YWJs
ZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEV4ZWN1dGFibGVCYXNlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRo
aXMsIDAsIGpzTnVsbCgpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJl
dmlzaW9uIDE2OTU4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2Miw2ICsyNjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
U3Ryb25nPFN0cnVjdHVyZT4gbm90QW5PYmplY3RTdHJ1Y3R1cmU7CiAgICAgICAgIFN0cm9uZzxT
dHJ1Y3R1cmU+IHByb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlOwogICAgICAgICBTdHJvbmc8
U3RydWN0dXJlPiBnZXR0ZXJTZXR0ZXJTdHJ1Y3R1cmU7CisgICAgICAgIFN0cm9uZzxTdHJ1Y3R1
cmU+IGN1c3RvbUdldHRlclNldHRlclN0cnVjdHVyZTsKICAgICAgICAgU3Ryb25nPFN0cnVjdHVy
ZT4gYXBpV3JhcHBlclN0cnVjdHVyZTsKICAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gSlNTY29w
ZVN0cnVjdHVyZTsKICAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZXhlY3V0YWJsZVN0cnVjdHVy
ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmllci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmllci5o
CShyZXZpc2lvbiAxNjk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0
ZUJhcnJpZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDYgKzE1Miw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGlzT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gZ2V0KCkuaXNPYmplY3QoKTsgfQogICAg
IGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gZ2V0KCkuaXNOdWxsKCk7IH0KICAgICBib29s
IGlzR2V0dGVyU2V0dGVyKCkgY29uc3QgeyByZXR1cm4gZ2V0KCkuaXNHZXR0ZXJTZXR0ZXIoKTsg
fQorICAgIGJvb2wgaXNDdXN0b21HZXR0ZXJTZXR0ZXIoKSBjb25zdCB7IHJldHVybiBnZXQoKS5p
c0N1c3RvbUdldHRlclNldHRlcigpOyB9CiAgICAgCiAgICAgSlNWYWx1ZSogc2xvdCgpCiAgICAg
eyAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTYyMikKKysrIFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE0LTA2LTA1ICBNYXJr
IEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgRWFnZXJseSBy
ZWlmeSBET00gcHJvdG90eXBlIGF0dHJpYnV0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzU1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICBUaGlzIGFsbG93
cyB1cyB0byBnZXQgcmlkIG9mIGEgbG90IG9mIHRoZSBhZGRpdGlvbmFsIG92ZXJoZWFkIG9mIHB1
c2hpbmcgRE9NIGF0dHJpYnV0ZXMgdXAgaW50byB0aGUgcHJvdG90eXBlLiAKKyAgICAgICAgQnkg
ZWFnZXJseSByZWlmeWluZyB0aGUgY3VzdG9tIGdldHRlcnMgYW5kIHNldHRlcnMgaW50byB0aGUg
YWN0dWFsIEpTT2JqZWN0IHdlIGF2b2lkIGhhdmluZyB0byBvdmVycmlkZSAKKyAgICAgICAgZ2V0
T3duUHJvcGVydHlTbG90IGZvciBhbGwgb2YgdGhlIERPTSBwcm90b3R5cGVzLCB3aGljaCBpcyBh
IGxvdCBvZiB0aGUgb3ZlcmhlYWQgb2YgZG9pbmcgcHJvcGVydHkgbG9va3VwcyBvbiAKKyAgICAg
ICAgRE9NIHdyYXBwZXJzLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG06CisgICAgICAgIChwcm90b3R5cGVIYXNoVGFibGVBY2Nlc3Nvcik6IENoYW5nZWQg
dG8gcGFzcyBhbG9uZyB0aGUgVk0uCisgICAgICAgIChBdHRyaWJ1dGVTaG91bGRCZU9uSW5zdGFu
Y2VGb3JDb21wYXRpYmlsaXR5KTogV2Ugd2VyZSBiZWluZyBvdmVybHkgY29uc2VydmF0aXZlIGlu
IHJlZ2FyZCB0byB0b3VjaCBldmVudHMuIAorICAgICAgICBUaGlzIGNhdXNlZCB1cyB0byBzdG9y
ZSB0aGUgdG91Y2ggZXZlbnQgaGFuZGxlciBnZXR0ZXJzIGFuZCBzZXR0ZXJzIG9uIHRoZSBKU0Vs
ZW1lbnQgaW5zdGFuY2UsIHdoaWNoIGNhdXNlZAorICAgICAgICB1cyB0byBvdmVycmlkZSBnZXRP
d25Qcm9wZXJ0eVNsb3QgZm9yIGV2ZXJ5IEpTRWxlbWVudCBzdWJjbGFzcy4KKyAgICAgICAgKElu
c3RhbmNlT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90KTogVGhpcyB3YXMgYmVpbmcgb3Zlcmx5
IHBhcmFub2lkIGFib3V0IGdlbmVyYXRlIGEgZ2V0T3duUHJvcGVydHlTbG90IGlmCisgICAgICAg
IHRoZXJlIHdhcyBnb2luZyB0byBiZSBhICJjb25zdHJ1Y3RvciIgcHJvcGVydHksIGV2ZW4gdGhv
dWdoIHdlIGhhbmRsZWQgdGhpcyBpbiBhbm90aGVyIHBsYWNlIGFscmVhZHkuCisgICAgICAgIChH
ZW5lcmF0ZUhlYWRlcik6IEdlbmVyYXRlIGEgZmluaXNoQ3JlYXRpb24gZm9yIHByb3RvdHlwZXMg
dW5sZXNzIGl0J3MgdGhlIEpTRE9NV2luZG93LiBXZSBjYW4ndCBjb3JyZWN0bHkgCisgICAgICAg
IGhhbmRsZSB0aGUgRE9NV2luZG93IGluIHRoaXMgdmVyc2lvbiBvZiB0aGUgcGF0Y2ggYmVjYXVz
ZSByZWlmeWluZyB0aGUgc3RhdGljIHByb3BlcnRpZXMgcmVxdWlyZXMgYSBnbG9iYWwgb2JqZWN0
LAorICAgICAgICB3aGljaCBoYXNuJ3QgYmVlbiBjcmVhdGVkIHlldCB3aGVuIHRoZSBwcm90b3R5
cGUgZm9yIHRoZSB3aW5kb3cgb2JqZWN0IGlzIGJlaW5nIGNyZWF0ZWQuCisgICAgICAgIChHZW5l
cmF0ZUltcGxlbWVudGF0aW9uKTogR2VuZXJhdGUgdGhlIGZpbmlzaENyZWF0aW9uIGNhbGxzIHRv
IHJlaWZ5U3RhdGljUHJvcGVydGllcy4KKwogMjAxNC0wNi0wNSAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBDU1MgSklUOiBDbGVhbiB1cCBTdGFja0Fs
bG9jYXRvcgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDE2OTU4OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0zNTAs
NyArMzUwLDcgQEAgc3ViIHByb3RvdHlwZUhhc2hUYWJsZUFjY2Vzc29yCiAgICAgbXkgJG5vU3Rh
dGljVGFibGVzID0gc2hpZnQ7CiAgICAgbXkgJGNsYXNzTmFtZSA9IHNoaWZ0OwogICAgIGlmICgk
bm9TdGF0aWNUYWJsZXMpIHsKLSAgICAgICAgcmV0dXJuICJnZXQke2NsYXNzTmFtZX1Qcm90b3R5
cGVUYWJsZShleGVjLT52bSgpKSI7CisgICAgICAgIHJldHVybiAiZ2V0JHtjbGFzc05hbWV9UHJv
dG90eXBlVGFibGUodm0pIjsKICAgICB9IGVsc2UgewogICAgICAgICByZXR1cm4gIiR7Y2xhc3NO
YW1lfVByb3RvdHlwZVRhYmxlIjsKICAgICB9CkBAIC02NTksNyArNjU5LDYgQEAgc3ViIEF0dHJp
YnV0ZVNob3VsZEJlT25JbnN0YW5jZUZvckNvbXBhdAogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlm
dDsKICAgICBteSAkYXR0cmlidXRlID0gc2hpZnQ7CiAgICAgbXkgJGludGVyZmFjZU5hbWUgPSAk
aW50ZXJmYWNlLT5uYW1lOwotICAgIHJldHVybiAxIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUt
Pm5hbWUgPX4gInRvdWNoIik7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTc0Niw3ICs3NDUsNyBA
QCBzdWIgSW5zdGFuY2VPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QKICAgICAgICAgfHwgJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUdldE93blByb3BlcnR5U2xvdCJ9
CiAgICAgICAgIHx8ICRoYXNJbXB1cmVOYW1lZEdldHRlcjsKIAotICAgIHJldHVybiAkbnVtSW5z
dGFuY2VBdHRyaWJ1dGVzID4gMCB8fCAhJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Ik5vSW50ZXJmYWNlT2JqZWN0In0gfHwgJGhhc0NvbXBsZXhHZXR0ZXI7CisgICAgcmV0dXJuICRu
dW1JbnN0YW5jZUF0dHJpYnV0ZXMgPiAwIHx8ICRoYXNDb21wbGV4R2V0dGVyOwogCiB9CiAKQEAg
LTEyMDgsOCArMTIwNywxMiBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgREVDTEFSRV9JTkZPO1xuIik7CiAgICAgaWYgKFByb3RvdHlwZU92ZXJy
aWRlc0dldE93blByb3BlcnR5U2xvdCgkaW50ZXJmYWNlKSkgewotICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTT2Jq
ZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eVNs
b3QmKTtcbiIpOwotICAgICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6T3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlTbG90In0gPSAxOworICAgICAgICBpZiAoSXNET01HbG9iYWxPYmplY3QoJGludGVy
ZmFjZSkpIHsKKyAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpO1xuIik7CisgICAgICAgICAgICAk
c3RydWN0dXJlRmxhZ3N7IkpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90In0gPSAxOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTtcbiIpOworICAgICAgICB9CiAgICAgfQogICAg
IGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21NYXJrRnVuY3Rp
b24ifSBvciAkbmVlZHNWaXNpdENoaWxkcmVuKSB7CiAgICAgICAgICRzdHJ1Y3R1cmVGbGFnc3si
SlNDOjpPdmVycmlkZXNWaXNpdENoaWxkcmVuIn0gPSAxOwpAQCAtMTk0OCwyMSArMTk1MSwzNiBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIH0KIAogICAgIGlmIChQcm90b3R5cGVP
dmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoJGludGVyZmFjZSkpIHsKLSAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJib29sICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlT
bG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAie1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1l
fVByb3RvdHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX1Qcm90b3R5cGUqPihv
YmplY3QpO1xuIik7Ci0KICAgICAgICAgbXkgJG51bVByb3RvdHlwZUF0dHJpYnV0ZXMgPSBQcm90
b3R5cGVBdHRyaWJ1dGVDb3VudCgkaW50ZXJmYWNlKTsKLSAgICAgICAgaWYgKCRudW1Db25zdGFu
dHMgZXEgMCAmJiAkbnVtRnVuY3Rpb25zIGVxIDAgJiYgJG51bVByb3RvdHlwZUF0dHJpYnV0ZXMg
ZXEgMCkgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEJhc2U6
OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
O1xuIik7ICAgICAgICAKLSAgICAgICAgfSBlbHNpZiAoJG51bUNvbnN0YW50cyBlcSAwICYmICRu
dW1Qcm90b3R5cGVBdHRyaWJ1dGVzIGVxIDApIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsICIg
LiBwcm90b3R5cGVIYXNoVGFibGVBY2Nlc3NvcigkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiSlNOb1N0YXRpY1RhYmxlcyJ9LCAkY2xhc3NOYW1lKSAuICIsIHRoaXNPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7XG4iKTsKLSAgICAgICAgfSBlbHNpZiAoJG51bUZ1bmN0aW9ucyBl
cSAwICYmICRudW1Qcm90b3R5cGVBdHRyaWJ1dGVzIGVxIDApIHsKLSAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8JHtjbGFzc05hbWV9
UHJvdG90eXBlLCBKU09iamVjdD4oZXhlYywgIiAuIHByb3RvdHlwZUhhc2hUYWJsZUFjY2Vzc29y
KCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU05vU3RhdGljVGFibGVzIn0sICRj
bGFzc05hbWUpIC4gIiwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOworICAg
ICAgICBpZiAoSXNET01HbG9iYWxPYmplY3QoJGludGVyZmFjZSkpIHsKKyAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiYm9vbCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmdldE93blByb3Bl
cnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOworICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIFVOVVNFRF9QQVJBTSh2bSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICR7Y2xhc3NOYW1lfVByb3RvdHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDwke2Ns
YXNzTmFtZX1Qcm90b3R5cGUqPihvYmplY3QpO1xuIik7CisKKyAgICAgICAgICAgIGlmICgkbnVt
Q29uc3RhbnRzIGVxIDAgJiYgJG51bUZ1bmN0aW9ucyBlcSAwICYmICRudW1Qcm90b3R5cGVBdHRy
aWJ1dGVzIGVxIDApIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBy
ZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgc2xvdCk7XG4iKTsgICAgICAgIAorICAgICAgICAgICAgfSBlbHNpZiAoJG51bUNvbnN0
YW50cyBlcSAwICYmICRudW1Qcm90b3R5cGVBdHRyaWJ1dGVzIGVxIDApIHsKKyAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90
PEpTT2JqZWN0PihleGVjLCAiIC4gcHJvdG90eXBlSGFzaFRhYmxlQWNjZXNzb3IoJGludGVyZmFj
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTTm9TdGF0aWNUYWJsZXMifSwgJGNsYXNzTmFtZSkg
LiAiLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7CisgICAgICAgICAgICB9
IGVsc2lmICgkbnVtRnVuY3Rpb25zIGVxIDAgJiYgJG51bVByb3RvdHlwZUF0dHJpYnV0ZXMgZXEg
MCkgeworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnZXRT
dGF0aWNWYWx1ZVNsb3Q8JHtjbGFzc05hbWV9UHJvdG90eXBlLCBKU09iamVjdD4oZXhlYywgIiAu
IHByb3RvdHlwZUhhc2hUYWJsZUFjY2Vzc29yKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJKU05vU3RhdGljVGFibGVzIn0sICRjbGFzc05hbWUpIC4gIiwgdGhpc09iamVjdCwgcHJv
cGVydHlOYW1lLCBzbG90KTtcbiIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gZ2V0U3RhdGljUHJvcGVydHlTbG90
PCR7Y2xhc3NOYW1lfVByb3RvdHlwZSwgSlNPYmplY3Q+KGV4ZWMsICIgLiBwcm90b3R5cGVIYXNo
VGFibGVBY2Nlc3NvcigkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNOb1N0YXRp
Y1RhYmxlcyJ9LCAkY2xhc3NOYW1lKSAuICIsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xv
dCk7XG4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
fVxuXG4iKTsKKyAgICAgICAgfSBlbHNpZiAoJG51bUNvbnN0YW50cyA+IDAgfHwgJG51bUZ1bmN0
aW9ucyA+IDAgfHwgJG51bVByb3RvdHlwZUF0dHJpYnV0ZXMgPiAwKSB7CisgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9UHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0pXG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7
CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJlaWZ5U3Rh
dGljUHJvcGVydGllcyh2bSwgIiAuIHByb3RvdHlwZUhhc2hUYWJsZUFjY2Vzc29yKCRpbnRlcmZh
Y2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU05vU3RhdGljVGFibGVzIn0sICRjbGFzc05hbWUp
IC4gIiwgdGhpcyk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4i
KTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHJldHVybiBnZXRTdGF0aWNQcm9wZXJ0eVNsb3Q8JHtjbGFzc05hbWV9UHJvdG90eXBlLCBKU09i
amVjdD4oZXhlYywgIiAuIHByb3RvdHlwZUhhc2hUYWJsZUFjY2Vzc29yKCRpbnRlcmZhY2UtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJKU05vU3RhdGljVGFibGVzIn0sICRjbGFzc05hbWUpIC4gIiwg
dGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOworICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOworICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0p
O1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgICAg
IH0KLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgIH0KIAogICAgIGlm
ICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21OYW1lZEdldHRlck9u
UHJvdG90eXBlIn0pIHsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTYyMikKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE0LTA2LTA1ICBN
YXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgRWFnZXJs
eSByZWlmeSBET00gcHJvdG90eXBlIGF0dHJpYnV0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzU1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0aW5nIGEgdGVzdCBleHBlY3RhdGlvbiBhZnRl
ciB0aGlzIGZpeC4KKworICAgICAgICAqIGpzL2RvbS9jb25zdHJ1Y3Rvci1hdHRyaWJ1dGVzLWV4
cGVjdGVkLnR4dDoKKwogMjAxNC0wNi0wNSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFN1YnBpeGVsIHJlbmRlcmluZzogYm9yZGVyLXJhZGl1cyBwYWludGluZyBm
YWxscyBiYWNrIHRvIHJlY3RhbmdsZSB3aGVuIHRoZSBzbmFwcGVkIHJvdW5kZWQgcmVjdCBiZWNv
bWVzIG5vbi1yZW5kZXJhYmxlLgpJbmRleDogTGF5b3V0VGVzdHMvanMvZG9tL2NvbnN0cnVjdG9y
LWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL2Rv
bS9jb25zdHJ1Y3Rvci1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTY5NTg5KQor
KysgTGF5b3V0VGVzdHMvanMvZG9tL2NvbnN0cnVjdG9yLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIFBBU1MgeCA9IFVSSUVycm9yLnByb3Rv
dHlwZTsgZGVsZXRlIHguY28KIFBBU1MgZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpLl9fcHJv
dG9fXy5oYXNPd25Qcm9wZXJ0eSgnY29uc3RydWN0b3InKSBpcyB0cnVlCiBQQVNTIGNhbkVudW0o
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpLl9fcHJvdG9fXywgJ2NvbnN0cnVjdG9yJykgaXMg
ZmFsc2UKIEZBSUwgeCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKS5fX3Byb3RvX187IHgu
Y29uc3RydWN0b3IgPSA0OyB4LmNvbnN0cnVjdG9yIHNob3VsZCBiZSA0IChvZiB0eXBlIG51bWJl
cikuIFdhcyBbb2JqZWN0IFRleHRDb25zdHJ1Y3Rvcl0gKG9mIHR5cGUgb2JqZWN0KS4KLUZBSUwg
eCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKS5fX3Byb3RvX187IGRlbGV0ZSB4LmNvbnN0
cnVjdG9yOyB4Lmhhc093blByb3BlcnR5KCdjb25zdHJ1Y3RvcicpIHNob3VsZCBiZSBmYWxzZS4g
V2FzIHRydWUuCitQQVNTIHggPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJykuX19wcm90b19f
OyBkZWxldGUgeC5jb25zdHJ1Y3RvcjsgeC5oYXNPd25Qcm9wZXJ0eSgnY29uc3RydWN0b3InKSBp
cyBmYWxzZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRF
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232583</attachid>
            <date>2014-06-05 14:23:39 -0700</date>
            <delta_ts>2014-06-05 18:38:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133558-20140605142315.patch</filename>
            <type>text/plain</type>
            <size>60990</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY5NjIyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg1IEBA
CisyMDE0LTA2LTA1ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgRWFnZXJseSByZWlmeSBET00gcHJvdG90eXBlIGF0dHJpYnV0ZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzU1OAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWxsb3dzIHVzIHRv
IGdldCByaWQgb2YgYSBsb3Qgb2YgdGhlIGFkZGl0aW9uYWwgb3ZlcmhlYWQgb2YgcHVzaGluZyBE
T00gYXR0cmlidXRlcyB1cCBpbnRvIHRoZSBwcm90b3R5cGUuIAorICAgICAgICBCeSBlYWdlcmx5
IHJlaWZ5aW5nIHRoZSBjdXN0b20gZ2V0dGVycyBhbmQgc2V0dGVycyBpbnRvIHRoZSBhY3R1YWwg
SlNPYmplY3Qgd2UgYXZvaWQgaGF2aW5nIHRvIG92ZXJyaWRlIAorICAgICAgICBnZXRPd25Qcm9w
ZXJ0eVNsb3QgZm9yIGFsbCBvZiB0aGUgRE9NIHByb3RvdHlwZXMsIHdoaWNoIGlzIGEgbG90IG9m
IHRoZSBvdmVyaGVhZCBvZiBkb2luZyBwcm9wZXJ0eSBsb29rdXBzIG9uIAorICAgICAgICBET00g
d3JhcHBlcnMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBs
bGludC9MTEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6cGVyZm9ybUFz
c2VydGlvbnMpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAg
ICAgICAqIHJ1bnRpbWUvQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaDoKKyAgICAgICAgKEpT
Qzo6QmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXI6OkJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVy
KToKKyAgICAgICAgKiBydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpjYWxsQ3VzdG9tU2V0dGVyKToKKyAgICAgICAgKiBydW50aW1lL0N1c3RvbUdl
dHRlclNldHRlci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q3VzdG9tR2V0dGVyU2V0dGVyOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpDdXN0b21HZXR0ZXJTZXR0ZXI6OmdldHRlcik6CisgICAg
ICAgIChKU0M6OkN1c3RvbUdldHRlclNldHRlcjo6c2V0dGVyKToKKyAgICAgICAgKEpTQzo6Q3Vz
dG9tR2V0dGVyU2V0dGVyOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpDdXN0b21H
ZXR0ZXJTZXR0ZXI6OkN1c3RvbUdldHRlclNldHRlcik6CisgICAgICAgICogcnVudGltZS9KU0NK
U1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1
ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6aXNDdXN0b21HZXR0ZXJTZXR0ZXIp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGxJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNDdXN0b21HZXR0ZXJTZXR0ZXIpOgor
ICAgICAgICAoSlNDOjpKU0NlbGw6OmNhblVzZUZhc3RHZXRPd25Qcm9wZXJ0eSk6CisgICAgICAg
ICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6aXNI
b3N0T3JCdWlsdGluRnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9u
Ojppc0J1aWx0aW5GdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0Z1bmN0
aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oOiBJbmxpbmVkIHNv
bWUgcmFuZG9tIGZ1bmN0aW9ucyB0aGF0IGFwcGVhcmVkIGhvdCBkdXJpbmcgcHJvZmlsaW5nLgor
ICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjppc0J1aWx0aW5GdW5jdGlvbik6CisgICAgICAgIChK
U0M6OkpTRnVuY3Rpb246OmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcik6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpmaWxsR2V0dGVyUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmZpbGxDdXN0b21HZXR0ZXJQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlTbG90U2xvdyk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9K
U09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aGFzQ3VzdG9tR2V0dGVyU2V0dGVy
UHJvcGVydGllcyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0VG9EaWN0aW9uYXJ5
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmlubGluZUdldE93blByb3BlcnR5U2xvdCk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RTbG93KTogSW5saW5lZCBi
ZWNhdXNlIGl0IGxvb2tlZCBob3QgZHVyaW5nIHByb2ZpbGluZy4KKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OnB1dE93bkRhdGFQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRE
aXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9Mb29r
dXAuaDoKKyAgICAgICAgKEpTQzo6cmVpZnlTdGF0aWNQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBy
dW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eURlc2Ny
aXB0b3I6OlByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OlN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
Om5leHRPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmU6OnN1Z2dlc3RlZE5ld091dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Z2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50
aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Omhhc0N1c3RvbUdldHRl
clNldHRlclByb3BlcnRpZXMpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnNldEhhc0N1c3Rv
bUdldHRlclNldHRlclByb3BlcnRpZXMpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmdldCk6IElubGluZWQgZHVlIHRvIGhv
dG5lc3MuCisgICAgICAgIChKU0M6Om5leHRPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkpOiBJbmxp
bmVkIGR1ZSB0byBob3RuZXNzLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnN1Z2dlc3RlZE5l
d091dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSk6IElubGluZWQgZHVlIHRvIGhvdG5lc3MuCisgICAg
ICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICog
cnVudGltZS9WTS5oOgorICAgICAgICAqIHJ1bnRpbWUvV3JpdGVCYXJyaWVyLmg6CisgICAgICAg
IChKU0M6OldyaXRlQmFycmllckJhc2U8VW5rbm93bj46OmlzQ3VzdG9tR2V0dGVyU2V0dGVyKToK
KwogMjAxNC0wNi0wNCAgVGltb3RoeSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+
CiAKICAgICAgICAgaU9TIERlYnVnIGJ1aWxkIGZpeApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTY5NTg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zNjYsNiArMzY2LDcgQEAgc2V0KEph
dmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0NvbnNvbGVDbGllbnQuY3BwCiAgICAg
cnVudGltZS9Db25zb2xlUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvQ29uc3RydWN0RGF0YS5j
cHAKKyAgICBydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5jcHAKICAgICBydW50aW1lL0RhdGFW
aWV3LmNwcAogICAgIHJ1bnRpbWUvRGF0YVZpZXcuaAogICAgIHJ1bnRpbWUvRGF0ZUNvbnN0cnVj
dG9yLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCShyZXZp
c2lvbiAxNjk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02MTIsNiArNjEy
LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcQ29uc29sZUNsaWVudC5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXENvbnNvbGVQcm90b3R5
cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxDb25zdHJ1Y3RE
YXRhLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcQ3VzdG9tR2V0
dGVyU2V0dGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcRGF0
YVZpZXcuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxEYXRlQ29u
c3RydWN0b3IuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxEYXRl
Q29udmVyc2lvbi5jcHAiIC8+CkBAIC0xMjY0LDYgKzEyNjUsNyBAQAogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxDb25zb2xlVHlwZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcQ29uc3RhbnRNb2RlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXENvbnN0cnVjdERhdGEuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcQ3VzdG9tR2V0dGVyU2V0dGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXERhdGFWaWV3LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXERhdGVDb25zdHJ1Y3Rvci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxEYXRlQ29udmVyc2lvbi5oIiAvPgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0
ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMTY5NTg5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC01NDYsNiArNTQ2LDkgQEAK
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcQ29uc3RydWN0RGF0YS5jcHAiPgog
ICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEN1c3RvbUdldHRlclNldHRlci5jcHAiPgorICAg
ICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXERhdGVDb25zdHJ1Y3Rvci5jcHAiPgogICAgICAgPEZp
bHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0yMTg5LDYgKzIxOTIs
OSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxDb25zdHJ1Y3REYXRhLmgi
PgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEN1c3RvbUdldHRlclNldHRlci5oIj4KKyAg
ICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxEYXRlQ29uc3RydWN0b3IuaCI+CiAgICAgICA8Rmls
dGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNzEyLDcgKzcxMiw3IEBACiAJCTE0NzRDMzNCMTZBQTJEOTUwMDYyRjAxRCAvKiBQcm90
b3R5cGVNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDE0RDg0NEEzMTZBQTJDNzAwMEE2NUFGMCAvKiBQcm90b3R5cGVNYXAuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDc0QzMzQzE2QUEyRDlCMDA2
MkYwMUQgLyogUHJvdG90eXBlTWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDE0RDg0NEEyMTZBQTJDNzAwMEE2NUFGMCAvKiBQcm90b3R5cGVNYXAu
Y3BwICovOyB9OwogCQkxNDc4Mjk3QjEzNzlFOEE4MDBBN0MyQTMgLyogSGFuZGxlVHlwZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NkZBNUE4MTM3
OEY2QjAwMDM2MjdBMyAvKiBIYW5kbGVUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTE0N0I4M0FDMEU2REI4QzkwMDQ3NzVBNCAvKiBCYXRj
aGVkVHJhbnNpdGlvbk9wdGltaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTQ3QjgzQUEwRTZEQjhDOTAwNDc3NUE0IC8qIEJhdGNoZWRUcmFuc2l0
aW9uT3B0aW1pemVyLmggKi87IH07CisJCTE0N0I4M0FDMEU2REI4QzkwMDQ3NzVBNCAvKiBCYXRj
aGVkVHJhbnNpdGlvbk9wdGltaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTQ3QjgzQUEwRTZEQjhDOTAwNDc3NUE0IC8qIEJhdGNoZWRUcmFuc2l0
aW9uT3B0aW1pemVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMTQ3Qjg0NjMwRTZERTZCMTAwNDc3NUE0IC8qIFB1dFByb3BlcnR5U2xvdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ3Qjg0NjIwRTZE
RTZCMTAwNDc3NUE0IC8qIFB1dFByb3BlcnR5U2xvdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0N0YzOUJEMTA3RUMzNzYwMDQyN0E0OCAvKiBB
cmdMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDRjYwNTExMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNwcCAqLzsgfTsKIAkJMTQ3RjM5
QkUxMDdFQzM3NjAwNDI3QTQ4IC8qIEFyZ3VtZW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI1N0RFNTBFMUY1MUM1MDAxNkI2QzkgLyogQXJn
dW1lbnRzLmNwcCAqLzsgfTsKQEAgLTc5MCw2ICs3OTAsOCBAQAogCQkxQ0FBOUEyMzE4RjRBMjIw
MDAwQTM2OUQgLyogSlNHbG9iYWxPYmplY3RQcm9maWxlckFnZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0FBOUEyMTE4RjRBMjIwMDAwQTM2OUQg
LyogSlNHbG9iYWxPYmplY3RQcm9maWxlckFnZW50LmggKi87IH07CiAJCTI2MDBCNUE2MTUyQkFB
QTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjAwQjVBNDE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJp
bmdKb2luZXIuY3BwICovOyB9OwogCQkyNjAwQjVBNzE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJp
bmdKb2luZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDI2MDBCNUE1MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5oICovOyB9OworCQky
QTExMTI0NTE5MkZDRTc5MDA1RUUxOEQgLyogQ3VzdG9tR2V0dGVyU2V0dGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBMTExMjQzMTkyRkNFNzkw
MDVFRTE4RCAvKiBDdXN0b21HZXR0ZXJTZXR0ZXIuY3BwICovOyB9OworCQkyQTExMTI0NjE5MkZD
RTc5MDA1RUUxOEQgLyogQ3VzdG9tR2V0dGVyU2V0dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQTExMTI0NDE5MkZDRTc5MDA1RUUxOEQgLyogQ3Vz
dG9tR2V0dGVyU2V0dGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMkEyODI1RDAxODM0MUYyRDAwODdGQkE5IC8qIERlbGF5ZWRSZWxlYXNlU2Nv
cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBMjgy
NUNGMTgzNDFGMkQwMDg3RkJBOSAvKiBEZWxheWVkUmVsZWFzZVNjb3BlLmggKi87IH07CiAJCTJB
NDhEMTkxMTc3MjM2NUIwMEM2NUE1RiAvKiBBUElDYWxsYmFja0Z1bmN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjExQjU3NDE3NkEyMjREMDAw
RTJBMjMgLyogQVBJQ2FsbGJhY2tGdW5jdGlvbi5oICovOyB9OwogCQkyQTRCQjdGMzE4QTQxMTc5
MDA4QTBGQ0QgLyogSlNNYW5hZ2VkVmFsdWVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE0QkI3RjIxOEE0MTE3OTAwOEEwRkNEIC8qIEpT
TWFuYWdlZFZhbHVlSW50ZXJuYWwuaCAqLzsgfTsKQEAgLTI1NjEsNiArMjU2Myw4IEBACiAJCTFD
QUE5QTIxMThGNEEyMjAwMDBBMzY5RCAvKiBKU0dsb2JhbE9iamVjdFByb2ZpbGVyQWdlbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHbG9iYWxPYmplY3RQcm9maWxlckFn
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2MDBCNUE0MTUyQkFBQTcwMDkx
RUU1RiAvKiBKU1N0cmluZ0pvaW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1N0cmluZ0pvaW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTI2MDBCNUE1MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0cmluZ0pvaW5lci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkyQTExMTI0MzE5MkZDRTc5MDA1RUUxOEQgLyogQ3VzdG9tR2V0dGVyU2V0
dGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN1c3RvbUdldHRl
clNldHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJBMTExMjQ0MTkyRkNF
NzkwMDVFRTE4RCAvKiBDdXN0b21HZXR0ZXJTZXR0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ3VzdG9tR2V0dGVyU2V0dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJBMjgyNUNGMTgzNDFGMkQwMDg3RkJBOSAvKiBEZWxheWVkUmVsZWFzZVNjb3BlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlbGF5ZWRSZWxlYXNlU2NvcGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkEzNDNGNzQxOEExNzQ4QjAwMzlCMDg1IC8q
IEdDU2VnbWVudGVkQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR0NT
ZWdtZW50ZWRBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQTM0M0Y3NzE4
QTE3NDlEMDAzOUIwODUgLyogR0NTZWdtZW50ZWRBcnJheUlubGluZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR0NTZWdtZW50ZWRBcnJheUlubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ1NTYsNiArNDU2MCw4IEBACiAJCQkJMTQyMEJFN0ExMEFB
NkREQjAwRjQ1NUQyIC8qIFdlYWtSYW5kb20uaCAqLywKIAkJCQlBN0RDQjc3OTEyRTNEOTA1MDA5
MTE5NDAgLyogV3JpdGVCYXJyaWVyLmggKi8sCiAJCQkJQzJCNkQ3NTIxOEEzMzc5MzAwNEE5MzAx
IC8qIFdyaXRlQmFycmllcklubGluZXMuaCAqLywKKwkJCQkyQTExMTI0MzE5MkZDRTc5MDA1RUUx
OEQgLyogQ3VzdG9tR2V0dGVyU2V0dGVyLmNwcCAqLywKKwkJCQkyQTExMTI0NDE5MkZDRTc5MDA1
RUUxOEQgLyogQ3VzdG9tR2V0dGVyU2V0dGVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJ1bnRp
bWU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNTQ5NSw2ICs1NTAxLDggQEAKIAkJ
CQkwRjZCMUNCOTE4NjEyNDRDMDA4NDVEOTcgLyogQXJpdHlDaGVja01vZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAvKiBBUk02NEFzc2VtYmxlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODZEM0IyQzQxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTQ3QjgzQUMwRTZEQjhDOTAwNDc3NUE0IC8qIEJhdGNo
ZWRUcmFuc2l0aW9uT3B0aW1pemVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkyQTExMTI0NjE5MkZD
RTc5MDA1RUUxOEQgLyogQ3VzdG9tR2V0dGVyU2V0dGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NTg0MDMyMDE4QkZGQkUxMDA1QTA4MTEgLyogSW5zcGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTJBQUJDREU3MThFRjI5NDIwMDAwMjA5NiAvKiBHQ0xvZ2dpbmcuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZFNTI0OEY5MTkxNDQyRDkwMEI3RkRFNCAvKiBWYXJpYWJsZVdhdGNocG9pbnRT
ZXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTU1MjUsNyArNTUzMyw2IEBACiAJCQkJODZE
M0IyQzUxMDE1NkJERTAwMjg2NUU3IC8qIEFzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTQxMTdFQTlGNTkwMEFCQjIxNyAvKiBBc3NlbWJs
eUhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3ODRBMjYxMTFEMTY2MjIwMDU3NzZBQyAv
KiBBU1RCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQkxNDdCODNBQzBFNkRCOEM5MDA0Nzc1
QTQgLyogQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2
NjczOUQyMTNCRkRFNzEwMDIzRDg3QyAvKiBCaWdJbnRlZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxNDgxNkUxQzE1NENDNTZDMDBCODA1NEMgLyogQmxvY2tBbGxvY2F0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMThDM0VDMEUxNkY1Q0QwMEIzNDQ2MCAvKiBCb29sZWFuT2JqZWN0LmggaW4g
SGVhZGVycyAqLywKQEAgLTY5NjYsNiArNjk3Myw3IEBACiAJCQkJMEZFRkM5QUExNjgxQTNCMzAw
NTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEYyMzVCRUQxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkZGQzk1QjE0RUY5MEFEMDBDNzI1MzIgLyogREZHUGhhc2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMkExMTEyNDUxOTJGQ0U3OTAwNUVFMThEIC8qIEN1c3Rv
bUdldHRlclNldHRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzhBOTc3QTE3OTczOEI4MDA5
REY3NDQgLyogREZHUGxhbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkJFMEY3NDE2QzFEQjA5
MDA4MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRkZDOTVEMTRFRjkwQjMwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludERhdGEuY3BwCShyZXZpc2lvbiAxNjk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDggKzEzNCw4
IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQogICAgIEFTU0VSVChtYXhG
cmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCA9PSA0MCk7CiAjZW5kaWYKICAgICBBU1NFUlQoU3Ry
aW5nVHlwZSA9PSA1KTsKLSAgICBBU1NFUlQoT2JqZWN0VHlwZSA9PSAxNyk7Ci0gICAgQVNTRVJU
KEZpbmFsT2JqZWN0VHlwZSA9PSAxOCk7CisgICAgQVNTRVJUKE9iamVjdFR5cGUgPT0gMTgpOwor
ICAgIEFTU0VSVChGaW5hbE9iamVjdFR5cGUgPT0gMTkpOwogICAgIEFTU0VSVChNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkID09IDEpOwogICAgIEFTU0VSVChJbXBsZW1lbnRzSGFzSW5zdGFuY2UgPT0g
Mik7CiAgICAgQVNTRVJUKEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgPT0gOCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCShyZXZpc2lvbiAxNjk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE0OSw4ICsxNDksOCBA
QCBjb25zdCBTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgPSAzMAogCiAjIFR5cGUgY29uc3RhbnRz
LgogY29uc3QgU3RyaW5nVHlwZSA9IDUKLWNvbnN0IE9iamVjdFR5cGUgPSAxNwotY29uc3QgRmlu
YWxPYmplY3RUeXBlID0gMTgKK2NvbnN0IE9iamVjdFR5cGUgPSAxOAorY29uc3QgRmluYWxPYmpl
Y3RUeXBlID0gMTkKIAogIyBUeXBlIGZsYWdzIGNvbnN0YW50cy4KIGNvbnN0IE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQgPSAxCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CYXRj
aGVkVHJhbnNpdGlvbk9wdGltaXplci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0JhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmgJKHJldmlzaW9uIDE2OTU4
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JhdGNoZWRUcmFuc2l0aW9uT3B0
aW1pemVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDggQEAgcHVibGljOgogICAgICAg
ICA6IG1fdm0oJnZtKQogICAgICAgICAsIG1fb2JqZWN0KG9iamVjdCkKICAgICB7CisgICAgICAg
IGlmICghbV9vYmplY3QtPnN0cnVjdHVyZSh2bSktPmlzRGljdGlvbmFyeSgpKQorICAgICAgICAg
ICAgbV9vYmplY3QtPmNvbnZlcnRUb0RpY3Rpb25hcnkodm0pOwogICAgIH0KIAogICAgIH5CYXRj
aGVkVHJhbnNpdGlvbk9wdGltaXplcigpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQ3VzdG9tR2V0dGVyU2V0dGVyLmgiCisKKyNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK25hbWVzcGFjZSBK
U0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoQ3VzdG9tR2V0
dGVyU2V0dGVyKTsKKworY29uc3QgQ2xhc3NJbmZvIEN1c3RvbUdldHRlclNldHRlcjo6c19pbmZv
ID0geyAiQ3VzdG9tR2V0dGVyU2V0dGVyIiwgMCwgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShD
dXN0b21HZXR0ZXJTZXR0ZXIpIH07CisKK3ZvaWQgY2FsbEN1c3RvbVNldHRlcihFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgY3VzdG9tR2V0dGVyU2V0dGVyLCBKU09iamVjdCogYmFzZSwgSlNWYWx1
ZSB0aGlzVmFsdWUsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgQ3VzdG9tR2V0dGVyU2V0dGVyOjpD
dXN0b21TZXR0ZXIgc2V0dGVyID0ganNDYXN0PEN1c3RvbUdldHRlclNldHRlcio+KGN1c3RvbUdl
dHRlclNldHRlciktPnNldHRlcigpOworICAgIGlmICghc2V0dGVyKQorICAgICAgICByZXR1cm47
CisgICAgc2V0dGVyKGV4ZWMsIGJhc2UsIEpTVmFsdWU6OmVuY29kZSh0aGlzVmFsdWUpLCBKU1Zh
bHVlOjplbmNvZGUodmFsdWUpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DdXN0b21HZXR0ZXJTZXR0ZXIuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0N1c3RvbUdldHRl
clNldHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEN1c3RvbUdldHRlclNldHRlcl9oCisjZGVmaW5lIEN1c3RvbUdldHRlclNldHRlcl9o
CisKKyNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKKyNpbmNs
dWRlICJQdXRQcm9wZXJ0eVNsb3QuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIEN1c3RvbUdldHRlclNldHRlciA6IHB1YmxpYyBKU0NlbGwgewor
cHVibGljOgorICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CisKKyAgICB0eXBlZGVmIFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jIEN1c3RvbUdldHRlcjsKKyAgICB0eXBlZGVmIFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jIEN1c3RvbVNldHRlcjsKKworICAgIHN0YXRpYyBDdXN0b21HZXR0
ZXJTZXR0ZXIqIGNyZWF0ZShWTSYgdm0sIEN1c3RvbUdldHRlciBjdXN0b21HZXR0ZXIsIEN1c3Rv
bVNldHRlciBjdXN0b21TZXR0ZXIpCisgICAgeworICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXIq
IGN1c3RvbUdldHRlclNldHRlciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEN1c3RvbUdl
dHRlclNldHRlcj4odm0uaGVhcCkpIEN1c3RvbUdldHRlclNldHRlcih2bSwgY3VzdG9tR2V0dGVy
LCBjdXN0b21TZXR0ZXIpOworICAgICAgICBjdXN0b21HZXR0ZXJTZXR0ZXItPmZpbmlzaENyZWF0
aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIGN1c3RvbUdldHRlclNldHRlcjsKKyAgICB9CisKKyAg
ICBDdXN0b21HZXR0ZXJTZXR0ZXI6OkN1c3RvbUdldHRlciBnZXR0ZXIoKSBjb25zdCB7IHJldHVy
biBtX2dldHRlcjsgfQorICAgIEN1c3RvbUdldHRlclNldHRlcjo6Q3VzdG9tU2V0dGVyIHNldHRl
cigpIGNvbnN0IHsgcmV0dXJuIG1fc2V0dGVyOyB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEN1c3RvbUdldHRlclNldHRlclR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisgICAgICAgIAorICAgIERFQ0xB
UkVfRVhQT1JUX0lORk87CisKK3ByaXZhdGU6CisgICAgQ3VzdG9tR2V0dGVyU2V0dGVyKFZNJiB2
bSwgQ3VzdG9tR2V0dGVyIGdldHRlciwgQ3VzdG9tU2V0dGVyIHNldHRlcikKKyAgICAgICAgOiBK
U0NlbGwodm0sIHZtLmN1c3RvbUdldHRlclNldHRlclN0cnVjdHVyZS5nZXQoKSkKKyAgICAgICAg
LCBtX2dldHRlcihnZXR0ZXIpCisgICAgICAgICwgbV9zZXR0ZXIoc2V0dGVyKQorICAgIHsKKyAg
ICB9CisKKyAgICBDdXN0b21HZXR0ZXIgbV9nZXR0ZXI7CisgICAgQ3VzdG9tU2V0dGVyIG1fc2V0
dGVyOworfTsKKwordm9pZCBjYWxsQ3VzdG9tU2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUgY3Vz
dG9tR2V0dGVyU2V0dGVyLCBKU09iamVjdCogYmFzZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTVmFs
dWUgdmFsdWUpOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEN1c3RvbUdldHRl
clNldHRlcl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlLmNwcAkocmV2aXNpb24gMTY5NTg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2lu
Y2x1ZGUgIkJvb2xlYW5Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkJvb2xlYW5Qcm90b3R5cGUu
aCIKKyNpbmNsdWRlICJDdXN0b21HZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJFcnJvci5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIK
QEAgLTE1NCw2ICsxNTUsMTEgQEAgdm9pZCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3Rh
dGUqIAogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAorICAgICAgICAg
ICAgaWYgKGdzLmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkpIHsKKyAgICAgICAgICAgICAgICBjYWxs
Q3VzdG9tU2V0dGVyKGV4ZWMsIGdzLCBvYmosIHNsb3QudGhpc1ZhbHVlKCksIHZhbHVlKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIC8vIElm
IHRoZXJlJ3MgYW4gZXhpc3RpbmcgcHJvcGVydHkgb24gdGhlIG9iamVjdCBvciBvbmUgb2YgaXRz
IAogICAgICAgICAgICAgLy8gcHJvdG90eXBlcyBpdCBzaG91bGQgYmUgcmVwbGFjZWQsIHNvIGJy
ZWFrIGhlcmUuCiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJKHJldmlzaW9uIDE2OTU4OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjE0LDYg
KzIxNCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzU3RyaW5nKCkgY29uc3Q7CiAgICAgYm9vbCBp
c1ByaW1pdGl2ZSgpIGNvbnN0OwogICAgIGJvb2wgaXNHZXR0ZXJTZXR0ZXIoKSBjb25zdDsKKyAg
ICBib29sIGlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkgY29uc3Q7CiAgICAgYm9vbCBpc09iamVjdCgp
IGNvbnN0OwogICAgIGJvb2wgaW5oZXJpdHMoY29uc3QgQ2xhc3NJbmZvKikgY29uc3Q7CiAgICAg
ICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGlu
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlSW5saW5lcy5oCShyZXZpc2lvbiAxNjk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NTAsNiArNTUw
LDExIEBAIGlubGluZSBib29sIEpTVmFsdWU6OmlzR2V0dGVyU2V0dGVyKCkgY28KICAgICByZXR1
cm4gaXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzR2V0dGVyU2V0dGVyKCk7CiB9CiAKK2lubGluZSBi
b29sIEpTVmFsdWU6OmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
aXNDZWxsKCkgJiYgYXNDZWxsKCktPmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCk7Cit9CisKIGlubGlu
ZSBib29sIEpTVmFsdWU6OmlzT2JqZWN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gaXNDZWxsKCkg
JiYgYXNDZWxsKCktPmlzT2JqZWN0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGwuaAkocmV2aXNpb24gMTY5NTg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTkwLDYgKzkwLDcgQEAgcHVibGljOgog
ICAgIGJvb2wgaXNTdHJpbmcoKSBjb25zdDsKICAgICBib29sIGlzT2JqZWN0KCkgY29uc3Q7CiAg
ICAgYm9vbCBpc0dldHRlclNldHRlcigpIGNvbnN0OworICAgIGJvb2wgaXNDdXN0b21HZXR0ZXJT
ZXR0ZXIoKSBjb25zdDsKICAgICBib29sIGlzUHJveHkoKSBjb25zdDsKICAgICBib29sIGluaGVy
aXRzKGNvbnN0IENsYXNzSW5mbyopIGNvbnN0OwogICAgIGJvb2wgaXNBUElWYWx1ZVdyYXBwZXIo
KSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGlu
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJ
bmxpbmVzLmgJKHJldmlzaW9uIDE2OTU4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDYgKzE1NiwxMSBAQCBp
bmxpbmUgYm9vbCBKU0NlbGw6OmlzR2V0dGVyU2V0dGVyKCkgY29uCiAgICAgcmV0dXJuIG1fdHlw
ZSA9PSBHZXR0ZXJTZXR0ZXJUeXBlOwogfQogCitpbmxpbmUgYm9vbCBKU0NlbGw6OmlzQ3VzdG9t
R2V0dGVyU2V0dGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90eXBlID09IEN1c3RvbUdldHRl
clNldHRlclR5cGU7Cit9CisKIGlubGluZSBib29sIEpTQ2VsbDo6aXNQcm94eSgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fdHlwZSA9PSBJbXB1cmVQcm94eVR5cGUgfHwgbV90eXBlID09IFB1cmVG
b3J3YXJkaW5nUHJveHlUeXBlOwpAQCAtMjIxLDcgKzIyNiw5IEBAIEFMV0FZU19JTkxJTkUgSlNW
YWx1ZSBKU0NlbGw6OmZhc3RHZXRPd24KIAogaW5saW5lIGJvb2wgSlNDZWxsOjpjYW5Vc2VGYXN0
R2V0T3duUHJvcGVydHkoY29uc3QgU3RydWN0dXJlJiBzdHJ1Y3R1cmUpCiB7Ci0gICAgcmV0dXJu
ICFzdHJ1Y3R1cmUuaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpICYmICFzdHJ1Y3R1cmUudHlw
ZUluZm8oKS5vdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoKTsKKyAgICByZXR1cm4gIXN0cnVj
dHVyZS5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgCisgICAgICAgICYmICFzdHJ1Y3R1cmUu
aGFzQ3VzdG9tR2V0dGVyU2V0dGVyUHJvcGVydGllcygpCisgICAgICAgICYmICFzdHJ1Y3R1cmUu
dHlwZUluZm8oKS5vdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoKTsKIH0KIAogaW5saW5lIGJv
b2wgSlNDZWxsOjp0b0Jvb2xlYW4oRXhlY1N0YXRlKiBleGVjKSBjb25zdApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDE2OTU4
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzQsMTYgKzE3NCw2IEBAIGNvbnN0IFNvdXJjZUNvZGUqIEpTRnVuY3Rp
b246OnNvdXJjZUNvZGUKICAgICByZXR1cm4gJmpzRXhlY3V0YWJsZSgpLT5zb3VyY2UoKTsKIH0K
ICAgICAKLWJvb2wgSlNGdW5jdGlvbjo6aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSBjb25zdAot
ewotICAgIHJldHVybiBpc0hvc3RGdW5jdGlvbigpIHx8IGlzQnVpbHRpbkZ1bmN0aW9uKCk7Ci19
Ci0KLWJvb2wgSlNGdW5jdGlvbjo6aXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdAotewotICAgIHJl
dHVybiAhaXNIb3N0RnVuY3Rpb24oKSAmJiBqc0V4ZWN1dGFibGUoKS0+aXNCdWlsdGluRnVuY3Rp
b24oKTsKLX0KLQogdm9pZCBKU0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU0Z1bmN0aW9uKj4oY2VsbCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZpc2lvbiAxNjk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw4ICsxNDgs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX2FsbG9jYXRpb25Qcm9m
aWxlV2F0Y2hwb2ludDsKICAgICAgICAgfQogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJv
b2wgaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSBjb25zdDsKLSAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0OworICAgICAgICBib29sIGlzSG9z
dE9yQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rp
b24oKSBjb25zdDsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0hvc3RGdW5jdGlv
bk5vbklubGluZSgpIGNvbnN0OwogCiAgICAgcHJvdGVjdGVkOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCShyZXZpc2lvbiAx
Njk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5l
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSwxNiBAQCBpbmxpbmUgYm9vbCBKU0Z1bmN0
aW9uOjppc0hvc3RGdW5jdGlvbigpCiAgICAgcmV0dXJuIG1fZXhlY3V0YWJsZS0+aXNIb3N0RnVu
Y3Rpb24oKTsKIH0KIAoraW5saW5lIGJvb2wgSlNGdW5jdGlvbjo6aXNCdWlsdGluRnVuY3Rpb24o
KSBjb25zdAoreworICAgIHJldHVybiAhaXNIb3N0RnVuY3Rpb24oKSAmJiBqc0V4ZWN1dGFibGUo
KS0+aXNCdWlsdGluRnVuY3Rpb24oKTsKK30KKworaW5saW5lIGJvb2wgSlNGdW5jdGlvbjo6aXNI
b3N0T3JCdWlsdGluRnVuY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBpc0hvc3RGdW5jdGlv
bigpIHx8IGlzQnVpbHRpbkZ1bmN0aW9uKCk7Cit9CisKIGlubGluZSBOYXRpdmVGdW5jdGlvbiBK
U0Z1bmN0aW9uOjpuYXRpdmVGdW5jdGlvbigpCiB7CiAgICAgQVNTRVJUKGlzSG9zdEZ1bmN0aW9u
Tm9uSW5saW5lKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcAkocmV2aXNpb24gMTY5NTg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVk
ZSAiQ29waWVkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ29weVZpc2l0b3IuaCIKICNpbmNs
dWRlICJDb3B5VmlzaXRvcklubGluZXMuaCIKKyNpbmNsdWRlICJDdXN0b21HZXR0ZXJTZXR0ZXIu
aCIKICNpbmNsdWRlICJEYXRlUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiRXJyb3JDb25zdHJ1Y3Rv
ci5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKQEAgLTM4Nyw4ICszODgsMTMgQEAgdm9pZCBK
U09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YQogICAgICAgICAgICAgICAgIGlmICgh
dGhpc09iamVjdC0+c3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQogICAgICAgICAgICAgICAg
ICAgICBzbG90LnNldENhY2hlYWJsZVNldHRlcihvYmosIG9mZnNldCk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgQVNTRVJUKCEo
YXR0cmlidXRlcyAmIEFjY2Vzc29yKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
Z3MuaXNDdXN0b21HZXR0ZXJTZXR0ZXIoKSkgeworICAgICAgICAgICAgICAgIGNhbGxDdXN0b21T
ZXR0ZXIoZXhlYywgZ3MsIG9iaiwgc2xvdC50aGlzVmFsdWUoKSwgdmFsdWUpOworICAgICAgICAg
ICAgICAgIHNsb3Quc2V0Q3VzdG9tUHJvcGVydHkob2JqLCBqc0Nhc3Q8Q3VzdG9tR2V0dGVyU2V0
dGVyKj4oZ3MuYXNDZWxsKCkpLT5zZXR0ZXIoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUKCEoYXR0cmlidXRlcyAmIEFjY2Vzc29y
KSk7CiAKICAgICAgICAgICAgIC8vIElmIHRoZXJlJ3MgYW4gZXhpc3RpbmcgcHJvcGVydHkgb24g
dGhlIG9iamVjdCBvciBvbmUgb2YgaXRzIAogICAgICAgICAgICAgLy8gcHJvdG90eXBlcyBpdCBz
aG91bGQgYmUgcmVwbGFjZWQsIHNvIGJyZWFrIGhlcmUuCkBAIC0xMjI0LDYgKzEyMzAsMjEgQEAg
dm9pZCBKU09iamVjdDo6cHV0RGlyZWN0QWNjZXNzb3IoRXhlY1N0YQogICAgIHB1dERpcmVjdE5v
bkluZGV4QWNjZXNzb3IoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRl
cyk7CiB9CiAKK3ZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKFZNJiB2bSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmli
dXRlcykKK3sKKyAgICBBU1NFUlQocHJvcGVydHlOYW1lLmFzSW5kZXgoKSA9PSBQcm9wZXJ0eU5h
bWU6Ok5vdEFuSW5kZXgpOworCisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhpcyk7CisgICAg
cHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5Pih2bSwgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2xvdCwgZ2V0Q2FsbGFibGVPYmplY3QodmFsdWUpKTsK
KworICAgIEFTU0VSVChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5
KTsKKworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKKyAg
ICBpZiAoYXR0cmlidXRlcyAmIFJlYWRPbmx5KQorICAgICAgICBzdHJ1Y3R1cmUtPnNldENvbnRh
aW5zUmVhZE9ubHlQcm9wZXJ0aWVzKCk7CisgICAgc3RydWN0dXJlLT5zZXRIYXNDdXN0b21HZXR0
ZXJTZXR0ZXJQcm9wZXJ0aWVzKCk7Cit9CisKIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdE5vbklu
ZGV4QWNjZXNzb3IoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRo
aXMpOwpAQCAtMTY2NiwxMCArMTY4NywxOCBAQCBORVZFUl9JTkxJTkUgdm9pZCBKU09iamVjdDo6
ZmlsbEdldHRlclByCiAgICAgICAgIHNsb3Quc2V0R2V0dGVyU2xvdCh0aGlzLCBhdHRyaWJ1dGVz
LCBqc0Nhc3Q8R2V0dGVyU2V0dGVyKj4oZ2V0dGVyU2V0dGVyKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0KICAgICBzbG90LnNldENhY2hlYWJsZUdldHRlclNsb3QodGhpcywgYXR0cmlidXRl
cywganNDYXN0PEdldHRlclNldHRlcio+KGdldHRlclNldHRlciksIG9mZnNldCk7CiB9CiAKK05F
VkVSX0lOTElORSB2b2lkIEpTT2JqZWN0OjpmaWxsQ3VzdG9tR2V0dGVyUHJvcGVydHlTbG90KFBy
b3BlcnR5U2xvdCYgc2xvdCwgSlNWYWx1ZSBjdXN0b21HZXR0ZXJTZXR0ZXIsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMpCit7CisgICAgaWYgKHN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkgeworICAg
ICAgICBzbG90LnNldEN1c3RvbSh0aGlzLCBhdHRyaWJ1dGVzLCBqc0Nhc3Q8Q3VzdG9tR2V0dGVy
U2V0dGVyKj4oY3VzdG9tR2V0dGVyU2V0dGVyKS0+Z2V0dGVyKCkpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIHNsb3Quc2V0Q2FjaGVhYmxlQ3VzdG9tKHRoaXMsIGF0dHJpYnV0ZXMsIGpz
Q2FzdDxDdXN0b21HZXR0ZXJTZXR0ZXIqPihjdXN0b21HZXR0ZXJTZXR0ZXIpLT5nZXR0ZXIoKSk7
Cit9CisKIHZvaWQgSlNPYmplY3Q6OnB1dEluZGV4ZWREZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhl
YywgU3BhcnNlQXJyYXlFbnRyeSogZW50cnlJbk1hcCwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yLCBQcm9wZXJ0eURlc2NyaXB0b3ImIG9sZERlc2NyaXB0b3IpCiB7CiAgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKQEAgLTI2NjAsMTQgKzI2ODksNiBAQCBib29sIEpTT2JqZWN0
OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjCiAgICAgcmV0dXJuIG9iamVjdC0+ZGVmaW5lT3du
Tm9uSW5kZXhQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhj
ZXB0aW9uKTsKIH0KIAotYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90U2xvdyhFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKLXsKLSAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKLSAgICBpZiAo
aSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpCi0gICAgICAgIHJldHVybiBnZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4KHRoaXMsIGV4ZWMsIGksIHNsb3QpOwotICAgIHJldHVybiBmYWxzZTsK
LX0KLQogSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQogewogICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBtZXNzYWdlKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDE2OTU4OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2Nyw2
ICs0NjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihW
TSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcyA9IDApOwogICAg
IHZvaWQgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcihWTSYsIFByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcyk7CiAgICAgdm9pZCBwdXREaXJlY3RBY2Nlc3NvcihFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3IoVk0mLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogCiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgYm9vbCBoYXNQcm9wZXJ0eShFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpIGNvbnN0
OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaGFzUHJvcGVydHkoRXhlY1N0YXRlKiwgdW5z
aWduZWQgcHJvcGVydHlOYW1lKSBjb25zdDsKQEAgLTU3Myw2ICs1NzQsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCByZW1vdmVEaXJlY3QoVk0mLCBQcm9wZXJ0eU5hbWUpOyAvLyBSZXR1cm4gdHJ1ZSBp
ZiBhbnl0aGluZyBpcyByZW1vdmVkLgogICAgIGJvb2wgaGFzQ3VzdG9tUHJvcGVydGllcygpIHsg
cmV0dXJuIHN0cnVjdHVyZSgpLT5kaWRUcmFuc2l0aW9uKCk7IH0KICAgICBib29sIGhhc0dldHRl
clNldHRlclByb3BlcnRpZXMoKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0dGVy
UHJvcGVydGllcygpOyB9CisgICAgYm9vbCBoYXNDdXN0b21HZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVz
KCkgeyByZXR1cm4gc3RydWN0dXJlKCktPmhhc0N1c3RvbUdldHRlclNldHRlclByb3BlcnRpZXMo
KTsgfQogCiAgICAgLy8gcHV0T3duRGF0YVByb3BlcnR5IGhhcyAncHV0JyBsaWtlIHNlbWFudGlj
cywgaG93ZXZlciB0aGlzIG1ldGhvZDoKICAgICAvLyAgLSBhc3N1bWVzIHRoZSBvYmplY3QgY29u
dGFpbnMgbm8gb3duIGdldHRlci9zZXR0ZXIgcHJvcGVydGllcy4KQEAgLTU4Nyw3ICs1ODksNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBwdXREaXJlY3RVbmRlZmluZWQoUHJvcGVydHlPZmZzZXQgb2Zm
c2V0KSB7IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCktPnNldFVuZGVmaW5lZCgpOyB9CiAKICAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCB1bnNpZ25lZCBmdW5jdGlvbkxlbmd0
aCwgTmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYywgdW5zaWduZWQgYXR0cmlidXRlcyk7Ci0gICAg
SlNGdW5jdGlvbiogcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBjb25zdCBQcm9wZXJ0eU5hbWUmLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU0Z1bmN0aW9uKiBwdXREaXJlY3RCdWls
dGluRnVuY3Rpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIEZ1
bmN0aW9uRXhlY3V0YWJsZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgIEpTRnVuY3Rpb24q
IHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKTsKICAgICB2b2lkIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IFByb3BlcnR5TmFtZSYsIHVuc2ln
bmVkIGZ1bmN0aW9uTGVuZ3RoLCBOYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKTsKIApAQCAtNjIzLDYgKzYyNSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRT
dHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5KFZNJiwgdW5zaWduZWQgb2xk
Q2FwYWNpdHksIFN0cnVjdHVyZSopOwogICAgIHZvaWQgc2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0
ZVN0b3JhZ2VJZk5lY2Vzc2FyeShWTSYsIFN0cnVjdHVyZSopOwogCisgICAgdm9pZCBjb252ZXJ0
VG9EaWN0aW9uYXJ5KFZNJiB2bSkKKyAgICB7CisgICAgICAgIHNldFN0cnVjdHVyZSh2bSwgU3Ry
dWN0dXJlOjp0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUodm0p
KSk7CisgICAgfQorCiAgICAgdm9pZCBmbGF0dGVuRGljdGlvbmFyeU9iamVjdChWTSYgdm0pCiAg
ICAgewogICAgICAgICBzdHJ1Y3R1cmUodm0pLT5mbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSh2
bSwgdGhpcyk7CkBAIC05NTIsNiArOTU5LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaW5saW5l
R2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIFZNJiwgU3RydWN0dXJlJiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbGxHZXR0
ZXJQcm9wZXJ0eVNsb3QoUHJvcGVydHlTbG90JiwgSlNWYWx1ZSwgdW5zaWduZWQsIFByb3BlcnR5
T2Zmc2V0KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbGxDdXN0b21HZXR0ZXJQcm9w
ZXJ0eVNsb3QoUHJvcGVydHlTbG90JiwgSlNWYWx1ZSwgdW5zaWduZWQpOwogCiAgICAgY29uc3Qg
SGFzaFRhYmxlVmFsdWUqIGZpbmRQcm9wZXJ0eUhhc2hFbnRyeShWTSYsIFByb3BlcnR5TmFtZSkg
Y29uc3Q7CiAgICAgICAgIApAQCAtOTY0LDcgKzk3Miw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWdu
ZWQgZ2V0TmV3VmVjdG9yTGVuZ3RoKHVuc2lnbmVkIGN1cnJlbnRWZWN0b3JMZW5ndGgsIHVuc2ln
bmVkIGN1cnJlbnRMZW5ndGgsIHVuc2lnbmVkIGRlc2lyZWRMZW5ndGgpOwogICAgIHVuc2lnbmVk
IGdldE5ld1ZlY3Rvckxlbmd0aCh1bnNpZ25lZCBkZXNpcmVkTGVuZ3RoKTsKIAotICAgIEpTX0VY
UE9SVF9QUklWQVRFIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90U2xvdyhFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90U2xv
dyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICAKICAg
ICBBcnJheVN0b3JhZ2UqIGNvbnN0cnVjdENvbnZlcnRlZEFycmF5U3RvcmFnZVdpdGhvdXRDb3B5
aW5nRWxlbWVudHMoVk0mLCB1bnNpZ25lZCBuZWVkZWRMZW5ndGgpOwogICAgICAgICAKQEAgLTEy
MTMsNiArMTIyMSw4IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6aW5saW5lR2V0T3cK
ICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGdldERpcmVjdChvZmZzZXQpOwogICAgICAgICBpZiAo
c3RydWN0dXJlLmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSAmJiB2YWx1ZS5pc0dldHRlclNl
dHRlcigpKQogICAgICAgICAgICAgZmlsbEdldHRlclByb3BlcnR5U2xvdChzbG90LCB2YWx1ZSwg
YXR0cmlidXRlcywgb2Zmc2V0KTsKKyAgICAgICAgZWxzZSBpZiAoc3RydWN0dXJlLmhhc0N1c3Rv
bUdldHRlclNldHRlclByb3BlcnRpZXMoKSAmJiB2YWx1ZS5pc0N1c3RvbUdldHRlclNldHRlcigp
KQorICAgICAgICAgICAgZmlsbEN1c3RvbUdldHRlclByb3BlcnR5U2xvdChzbG90LCB2YWx1ZSwg
YXR0cmlidXRlcyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhp
cywgYXR0cmlidXRlcywgdmFsdWUsIG9mZnNldCk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAt
MTIyMSw2ICsxMjMxLDE0IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6aW5saW5lR2V0
T3cKICAgICByZXR1cm4gZ2V0T3duUHJvcGVydHlTbG90U2xvdyhleGVjLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogfQogCitpbmxpbmUgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90U2xv
dyhFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYgc2xvdCkKK3sKKyAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLmFzSW5kZXgoKTsKKyAg
ICBpZiAoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpCisgICAgICAgIHJldHVybiBnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KHRoaXMsIGV4ZWMsIGksIHNsb3QpOworICAgIHJldHVybiBm
YWxzZTsKK30KKwogLy8gSXQgbWF5IHNlZW0gY3JhenkgdG8gaW5saW5lIGEgZnVuY3Rpb24gdGhp
cyBsYXJnZSwgZXNwZWNpYWxseSBhIHZpcnR1YWwgZnVuY3Rpb24sCiAvLyBidXQgaXQgbWFrZXMg
YSBiaWcgZGlmZmVyZW5jZSB0byBwcm9wZXJ0eSBsb29rdXAgdGhhdCBkZXJpdmVkIGNsYXNzZXMg
Y2FuIGlubGluZSB0aGVpcgogLy8gYmFzZSBjbGFzcyBjYWxsIHRvIHRoaXMuCkBAIC0xNDQwLDYg
KzE0NTgsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0T3duRGF0YVByb3BlcnR5CiAgICAg
QVNTRVJUKHZhbHVlKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6Omhl
YXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwogICAgIEFTU0VSVCghc3RydWN0dXJlKCkt
Pmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSk7CisgICAgQVNTRVJUKCFzdHJ1Y3R1cmUoKS0+
aGFzQ3VzdG9tR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKTsKIAogICAgIHJldHVybiBwdXREaXJl
Y3RJbnRlcm5hbDxQdXRNb2RlUHV0Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCwg
Z2V0Q2FsbGFibGVPYmplY3QodmFsdWUpKTsKIH0KQEAgLTE0NDcsNiArMTQ2Niw3IEBAIGlubGlu
ZSBib29sIEpTT2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHkKIGlubGluZSB2b2lkIEpTT2JqZWN0
OjpwdXREaXJlY3QoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0ZXJT
ZXR0ZXIoKSAmJiAhKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOworICAgIEFTU0VSVCghdmFsdWUu
aXNDdXN0b21HZXR0ZXJTZXR0ZXIoKSk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhpcyk7
CiAgICAgcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5Pih2bSwgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2xvdCwgZ2V0Q2FsbGFibGVPYmplY3QodmFs
dWUpKTsKIH0KQEAgLTE0NTQsNiArMTQ3NCw3IEBAIGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXRE
aXJlY3QoVk0mIHZtLCAKIGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3QoVk0mIHZtLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0dldHRlclNldHRlcigpKTsKKyAgICBBU1NF
UlQoIXZhbHVlLmlzQ3VzdG9tR2V0dGVyU2V0dGVyKCkpOwogICAgIHB1dERpcmVjdEludGVybmFs
PFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNs
b3QsIGdldENhbGxhYmxlT2JqZWN0KHZhbHVlKSk7CiB9CiAKQEAgLTE0NjEsNiArMTQ4Miw3IEBA
IGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RXaXRob3V0VHIKIHsKICAgICBEZWZlckdD
IGRlZmVyR0Modm0uaGVhcCk7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0dldHRlclNldHRlcigpICYm
ICEoYXR0cmlidXRlcyAmIEFjY2Vzc29yKSk7CisgICAgQVNTRVJUKCF2YWx1ZS5pc0N1c3RvbUdl
dHRlclNldHRlcigpKTsKICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IG1fYnV0dGVyZmx5
LmdldCgpOwogICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdl
KCkpCiAgICAgICAgIG5ld0J1dHRlcmZseSA9IGdyb3dPdXRPZkxpbmVTdG9yYWdlKHZtLCBzdHJ1
Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgc3RydWN0dXJlKCktPnN1Z2dlc3RlZE5ld091
dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZS5oCShyZXZpc2lvbiAxNjk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQCBlbnVtIEpT
VHlwZSA6IHVpbnQ4X3QgewogICAgIC8vIFRoZSBDb21wb3VuZFR5cGUgdmFsdWUgbXVzdCBjb21l
IGJlZm9yZSBhbnkgSlNUeXBlIHRoYXQgbWF5IGhhdmUgY2hpbGRyZW4uCiAgICAgQ29tcG91bmRU
eXBlLAogICAgIEdldHRlclNldHRlclR5cGUsCisgICAgQ3VzdG9tR2V0dGVyU2V0dGVyVHlwZSwK
ICAgICBBUElWYWx1ZVdyYXBwZXJUeXBlLAogCiAgICAgRXZhbEV4ZWN1dGFibGVUeXBlLApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgJKHJldmlzaW9uIDE2OTU4OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMSw3ICsyMSwxMCBAQAogI2lmbmRlZiBMb29rdXBfaAogI2RlZmluZSBMb29rdXBfaAog
CisjaW5jbHVkZSAiQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCIKICNpbmNsdWRlICJDYWxs
RnJhbWUuaCIKKyNpbmNsdWRlICJDdXN0b21HZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJJZGVu
dGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIklkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgpAQCAtMjkwLDYgKzI5MywzNCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcHV0RW50cnkoZXhlYywgZW50cnksIGJhc2UsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisK
KyAgICBpbmxpbmUgdm9pZCByZWlmeVN0YXRpY1Byb3BlcnRpZXMoVk0mIHZtLCBjb25zdCBIYXNo
VGFibGUmIHRhYmxlLCBKU09iamVjdCogdGhpc09iaikKKyAgICB7CisgICAgICAgIEJhdGNoZWRU
cmFuc2l0aW9uT3B0aW1pemVyIHRyYW5zaXRpb25PcHRpbWl6ZXIodm0sIHRoaXNPYmopOworICAg
ICAgICBmb3IgKGF1dG8gaXRlciA9IHRhYmxlLmJlZ2luKHZtKTsgaXRlciAhPSB0YWJsZS5lbmQo
dm0pOyArK2l0ZXIpIHsKKyAgICAgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lKCZ2bSwg
aXRlci5rZXkoKSk7CisgICAgICAgICAgICBjb25zdCBIYXNoVGFibGVWYWx1ZSogZW50cnkgPSBp
dGVyLnZhbHVlKCk7CisgICAgICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRlcygpICYgQnVpbHRp
bikgeworICAgICAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbih2
bSwgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgZW50cnktPmJ1aWx0aW5H
ZW5lcmF0b3IoKSh2bSksIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOworICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaXRlci0+YXR0cmlidXRl
cygpICYgRnVuY3Rpb24pIHsKKyAgICAgICAgICAgICAgICB0aGlzT2JqLT5wdXREaXJlY3ROYXRp
dmVGdW5jdGlvbih2bSwgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgZW50
cnktPmZ1bmN0aW9uTGVuZ3RoKCksCisgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5mdW5jdGlv
bigpLCBlbnRyeS0+aW50cmluc2ljKCksIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOworICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaXRlci0+
YXR0cmlidXRlcygpICYgQWNjZXNzb3IpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBDdXN0b21HZXR0ZXJTZXR0ZXIqIGN1c3RvbUdldHRlclNldHRlciA9
IEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBlbnRyeS0+cHJvcGVydHlHZXR0ZXIoKSwg
ZW50cnktPnByb3BlcnR5UHV0dGVyKCkpOworICAgICAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0
Q3VzdG9tQWNjZXNzb3Iodm0sIHByb3BlcnR5TmFtZSwgY3VzdG9tR2V0dGVyU2V0dGVyLCBlbnRy
eS0+YXR0cmlidXRlcygpKTsKKyAgICAgICAgfQorICAgIH0KKwogfSAvLyBuYW1lc3BhY2UgSlND
CiAKICNlbmRpZiAvLyBMb29rdXBfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTWFwQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTY5NTg5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRl
ICJKU01hcC5oIgogI2luY2x1ZGUgIk1hcFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIlN0cnVjdHVy
ZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yQ29uc3RydWN0b3IuY3BwCShy
ZXZpc2lvbiAxNjk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVy
YXRvckNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNNYXBJdGVyYXRvci5oIgogI2lu
Y2x1ZGUgIk1hcEl0ZXJhdG9yUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5l
cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmgJKHJldmlzaW9uIDE2OTU4OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAg
ICAgICAgICAgICBBU1NFUlQobV92YWx1ZSk7CiAgICAgICAgICAgICBBU1NFUlQoIW1fdmFsdWUu
aXNHZXR0ZXJTZXR0ZXIoKSk7CisgICAgICAgICAgICBBU1NFUlQoIW1fdmFsdWUuaXNDdXN0b21H
ZXR0ZXJTZXR0ZXIoKSk7CiAgICAgICAgIH0KICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9v
bCB3cml0YWJsZSgpIGNvbnN0OwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGVudW1l
cmFibGUoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENv
bnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TZXRDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDE2OTU4OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMs
NiArMzMsNyBAQAogI2luY2x1ZGUgIkpTU2V0LmgiCiAjaW5jbHVkZSAiTWFwRGF0YS5oIgogI2lu
Y2x1ZGUgIlNldFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKIAog
bmFtZXNwYWNlIEpTQyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nl
dEl0ZXJhdG9yQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9yQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxNjk1ODkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJdGVyYXRvckNvbnN0cnVjdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkpTR2xvYmFs
T2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTZXRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlNldEl0ZXJh
dG9yUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuY3BwCShyZXZpc2lvbiAxNjk1ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNiArMTY4LDcgQEAgU3RydWN0
dXJlOjpTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iagogICAgICwgbV9kaWN0aW9uYXJ5S2lu
ZChOb25lRGljdGlvbmFyeUtpbmQpCiAgICAgLCBtX2lzUGlubmVkUHJvcGVydHlUYWJsZShmYWxz
ZSkKICAgICAsIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyhjbGFzc0luZm8tPmhhc1N0YXRp
Y1NldHRlck9yUmVhZG9ubHlQcm9wZXJ0aWVzKHZtKSkKKyAgICAsIG1faGFzQ3VzdG9tR2V0dGVy
U2V0dGVyUHJvcGVydGllcyhmYWxzZSkKICAgICAsIG1faGFzUmVhZE9ubHlPckdldHRlclNldHRl
clByb3BlcnRpZXNFeGNsdWRpbmdQcm90byhjbGFzc0luZm8tPmhhc1N0YXRpY1NldHRlck9yUmVh
ZG9ubHlQcm9wZXJ0aWVzKHZtKSkKICAgICAsIG1faGFzTm9uRW51bWVyYWJsZVByb3BlcnRpZXMo
ZmFsc2UpCiAgICAgLCBtX2F0dHJpYnV0ZXNJblByZXZpb3VzKDApCkBAIC0xOTUsNiArMTk2LDcg
QEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoVk0mIHZtKQogICAgICwgbV9kaWN0aW9uYXJ5S2luZChO
b25lRGljdGlvbmFyeUtpbmQpCiAgICAgLCBtX2lzUGlubmVkUHJvcGVydHlUYWJsZShmYWxzZSkK
ICAgICAsIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyhtX2NsYXNzSW5mby0+aGFzU3RhdGlj
U2V0dGVyT3JSZWFkb25seVByb3BlcnRpZXModm0pKQorICAgICwgbV9oYXNDdXN0b21HZXR0ZXJT
ZXR0ZXJQcm9wZXJ0aWVzKGZhbHNlKQogICAgICwgbV9oYXNSZWFkT25seU9yR2V0dGVyU2V0dGVy
UHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvKG1fY2xhc3NJbmZvLT5oYXNTdGF0aWNTZXR0ZXJPclJl
YWRvbmx5UHJvcGVydGllcyh2bSkpCiAgICAgLCBtX2hhc05vbkVudW1lcmFibGVQcm9wZXJ0aWVz
KGZhbHNlKQogICAgICwgbV9hdHRyaWJ1dGVzSW5QcmV2aW91cygwKQpAQCAtMjIxLDYgKzIyMyw3
IEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKFZNJiB2bSwgY29uc3QgU3RydWMKICAgICAsIG1fZGlj
dGlvbmFyeUtpbmQocHJldmlvdXMtPm1fZGljdGlvbmFyeUtpbmQpCiAgICAgLCBtX2lzUGlubmVk
UHJvcGVydHlUYWJsZShmYWxzZSkKICAgICAsIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyhw
cmV2aW91cy0+bV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKQorICAgICwgbV9oYXNDdXN0b21H
ZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKHByZXZpb3VzLT5tX2hhc0N1c3RvbUdldHRlclNldHRlclBy
b3BlcnRpZXMpCiAgICAgLCBtX2hhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhj
bHVkaW5nUHJvdG8ocHJldmlvdXMtPm1faGFzUmVhZE9ubHlPckdldHRlclNldHRlclByb3BlcnRp
ZXNFeGNsdWRpbmdQcm90bykKICAgICAsIG1faGFzTm9uRW51bWVyYWJsZVByb3BlcnRpZXMocHJl
dmlvdXMtPm1faGFzTm9uRW51bWVyYWJsZVByb3BlcnRpZXMpCiAgICAgLCBtX2F0dHJpYnV0ZXNJ
blByZXZpb3VzKDApCkBAIC0zMTcsMTggKzMyMCw2IEBAIHZvaWQgU3RydWN0dXJlOjptYXRlcmlh
bGl6ZVByb3BlcnR5TWFwKFYKICAgICBjaGVja09mZnNldENvbnNpc3RlbmN5KCk7CiB9CiAKLWlu
bGluZSBzaXplX3QgbmV4dE91dE9mTGluZVN0b3JhZ2VDYXBhY2l0eShzaXplX3QgY3VycmVudENh
cGFjaXR5KQotewotICAgIGlmICghY3VycmVudENhcGFjaXR5KQotICAgICAgICByZXR1cm4gaW5p
dGlhbE91dE9mTGluZUNhcGFjaXR5OwotICAgIHJldHVybiBjdXJyZW50Q2FwYWNpdHkgKiBvdXRP
ZkxpbmVHcm93dGhGYWN0b3I7Ci19Ci0KLXNpemVfdCBTdHJ1Y3R1cmU6OnN1Z2dlc3RlZE5ld091
dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSgpCi17Ci0gICAgcmV0dXJuIG5leHRPdXRPZkxpbmVTdG9y
YWdlQ2FwYWNpdHkob3V0T2ZMaW5lQ2FwYWNpdHkoKSk7Ci19Ci0gCiB2b2lkIFN0cnVjdHVyZTo6
ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKIHsKICAgICBTdHJpbmdJbXBsKiByZXAgPSBwcm9wZXJ0eU5hbWUudWlkKCk7CkBAIC04
OTgsMjUgKzg4OSw2IEBAIFByb3BlcnR5T2Zmc2V0IFN0cnVjdHVyZTo6Z2V0Q29uY3VycmVudGwK
ICAgICByZXR1cm4gaW52YWxpZE9mZnNldDsKIH0KIAotUHJvcGVydHlPZmZzZXQgU3RydWN0dXJl
OjpnZXQoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmli
dXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkKLXsKLSAgICBBU1NFUlQoIWlzQ29tcGlsYXRp
b25UaHJlYWQoKSk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSBpbmZv
KCkpOwotCi0gICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwotICAgIG1hdGVyaWFsaXplUHJv
cGVydHlNYXBJZk5lY2Vzc2FyeSh2bSwgZGVmZXJHQyk7Ci0gICAgaWYgKCFwcm9wZXJ0eVRhYmxl
KCkpCi0gICAgICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0OwotCi0gICAgUHJvcGVydHlNYXBFbnRy
eSogZW50cnkgPSBwcm9wZXJ0eVRhYmxlKCktPmdldChwcm9wZXJ0eU5hbWUudWlkKCkpOwotICAg
IGlmICghZW50cnkpCi0gICAgICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0OwotCi0gICAgYXR0cmli
dXRlcyA9IGVudHJ5LT5hdHRyaWJ1dGVzOwotICAgIHNwZWNpZmljVmFsdWUgPSBlbnRyeS0+c3Bl
Y2lmaWNWYWx1ZS5nZXQoKTsKLSAgICByZXR1cm4gZW50cnktPm9mZnNldDsKLX0KLQogYm9vbCBT
dHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1bmN0aW9uKFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKIHsKICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMTY5NTg5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTExOCw3ICsxMTgsNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0
cnVjdHVyZSogY2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIEpTVmFs
dWUgcHJvdG90eXBlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBk
ZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUp
OwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24oVk0mLCBT
dHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwotICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIHRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1
cmUqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiB0b0NhY2hlYWJs
ZURpY3Rpb25hcnlUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIFN0cnVj
dHVyZSogdG9VbmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKik7
CiAgICAgc3RhdGljIFN0cnVjdHVyZSogc2VhbFRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqKTsK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBmcmVlemVUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKik7
CkBAIC0xMzAsOSArMTMwLDkgQEAgcHVibGljOgogICAgIGJvb2wgaXNFeHRlbnNpYmxlKCkgY29u
c3QgeyByZXR1cm4gIW1fcHJldmVudEV4dGVuc2lvbnM7IH0KICAgICBib29sIGRpZFRyYW5zaXRp
b24oKSBjb25zdCB7IHJldHVybiBtX2RpZFRyYW5zaXRpb247IH0KICAgICBib29sIHB1dFdpbGxH
cm93T3V0T2ZMaW5lU3RvcmFnZSgpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHNpemVfdCBzdWdn
ZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKTsgCisgICAgc2l6ZV90IHN1Z2dlc3Rl
ZE5ld091dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSgpOyAKIAotICAgIFN0cnVjdHVyZSogZmxhdHRl
bkRpY3Rpb25hcnlTdHJ1Y3R1cmUoVk0mLCBKU09iamVjdCopOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIFN0cnVjdHVyZSogZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUoVk0mLCBKU09iamVjdCop
OwogCiAgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CiAgICAg
c3RhdGljIGNvbnN0IGJvb2wgaGFzSW1tb3J0YWxTdHJ1Y3R1cmUgPSB0cnVlOwpAQCAtMjY0LDcg
KzI2NCw3IEBAIHB1YmxpYzoKIAogICAgIFByb3BlcnR5T2Zmc2V0IGdldChWTSYsIFByb3BlcnR5
TmFtZSk7CiAgICAgUHJvcGVydHlPZmZzZXQgZ2V0KFZNJiwgY29uc3QgV1RGOjpTdHJpbmcmIG5h
bWUpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIFByb3BlcnR5T2Zmc2V0IGdldChWTSYsIFByb3Bl
cnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpOwor
ICAgIFByb3BlcnR5T2Zmc2V0IGdldChWTSYsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJp
YnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpOwogCiAgICAgUHJvcGVydHlPZmZzZXQgZ2V0
Q29uY3VycmVudGx5KFZNJiwgU3RyaW5nSW1wbCogdWlkKTsKICAgICBQcm9wZXJ0eU9mZnNldCBn
ZXRDb25jdXJyZW50bHkoVk0mLCBTdHJpbmdJbXBsKiB1aWQsIHVuc2lnbmVkJiBhdHRyaWJ1dGVz
LCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKTsKQEAgLTI3Nyw2ICsyNzcsMTAgQEAgcHVibGljOgog
ICAgICAgICBpZiAoIWlzX19wcm90b19fKQogICAgICAgICAgICAgbV9oYXNSZWFkT25seU9yR2V0
dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvID0gdHJ1ZTsKICAgICB9CisKKyAgICBi
b29sIGhhc0N1c3RvbUdldHRlclNldHRlclByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX2hh
c0N1c3RvbUdldHRlclNldHRlclByb3BlcnRpZXM7IH0KKyAgICB2b2lkIHNldEhhc0N1c3RvbUdl
dHRlclNldHRlclByb3BlcnRpZXMoKSB7IG1faGFzQ3VzdG9tR2V0dGVyU2V0dGVyUHJvcGVydGll
cyA9IHRydWU7IH0KKwogICAgIHZvaWQgc2V0Q29udGFpbnNSZWFkT25seVByb3BlcnRpZXMoKQog
ICAgIHsKICAgICAgICAgbV9oYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1
ZGluZ1Byb3RvID0gdHJ1ZTsKQEAgLTUyMiw2ICs1MjYsNyBAQCBwcml2YXRlOgogICAgIHVuc2ln
bmVkIG1fZGljdGlvbmFyeUtpbmQgOiAyOwogICAgIGJvb2wgbV9pc1Bpbm5lZFByb3BlcnR5VGFi
bGUgOiAxOwogICAgIGJvb2wgbV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzIDogMTsKKyAgICBi
b29sIG1faGFzQ3VzdG9tR2V0dGVyU2V0dGVyUHJvcGVydGllcyA6IDE7CiAgICAgYm9vbCBtX2hh
c1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8gOiAxOwogICAg
IGJvb2wgbV9oYXNOb25FbnVtZXJhYmxlUHJvcGVydGllcyA6IDE7CiAgICAgdW5zaWduZWQgbV9h
dHRyaWJ1dGVzSW5QcmV2aW91cyA6IDE0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAkocmV2aXNpb24gMTY5NTg5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC05OSw2ICs5OSwyNSBAQCBpbmxpbmUgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpn
ZXQoVk0mCiAgICAgcmV0dXJuIGVudHJ5ID8gZW50cnktPm9mZnNldCA6IGludmFsaWRPZmZzZXQ7
CiB9CiAgICAgCitpbmxpbmUgUHJvcGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXQoVk0mIHZtLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYg
c3BlY2lmaWNWYWx1ZSkKK3sKKyAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7Cisg
ICAgQVNTRVJUKHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSBpbmZvKCkpOworCisgICAgRGVm
ZXJHQyBkZWZlckdDKHZtLmhlYXApOworICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vz
c2FyeSh2bSwgZGVmZXJHQyk7CisgICAgaWYgKCFwcm9wZXJ0eVRhYmxlKCkpCisgICAgICAgIHJl
dHVybiBpbnZhbGlkT2Zmc2V0OworCisgICAgUHJvcGVydHlNYXBFbnRyeSogZW50cnkgPSBwcm9w
ZXJ0eVRhYmxlKCktPmdldChwcm9wZXJ0eU5hbWUudWlkKCkpOworICAgIGlmICghZW50cnkpCisg
ICAgICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0OworCisgICAgYXR0cmlidXRlcyA9IGVudHJ5LT5h
dHRyaWJ1dGVzOworICAgIHNwZWNpZmljVmFsdWUgPSBlbnRyeS0+c3BlY2lmaWNWYWx1ZS5nZXQo
KTsKKyAgICByZXR1cm4gZW50cnktPm9mZnNldDsKK30KKwogaW5saW5lIFByb3BlcnR5T2Zmc2V0
IFN0cnVjdHVyZTo6Z2V0Q29uY3VycmVudGx5KFZNJiB2bSwgU3RyaW5nSW1wbCogdWlkKQogewog
ICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXNJZ25vcmVkOwpAQCAtMjQ2LDYgKzI2NSwxOCBAQCBBTFdB
WVNfSU5MSU5FIGJvb2wgU3RydWN0dXJlOjpjaGVja09mZnNlCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKK2lubGluZSBzaXplX3QgbmV4dE91dE9mTGluZVN0b3JhZ2VDYXBhY2l0eShzaXplX3QgY3Vy
cmVudENhcGFjaXR5KQoreworICAgIGlmICghY3VycmVudENhcGFjaXR5KQorICAgICAgICByZXR1
cm4gaW5pdGlhbE91dE9mTGluZUNhcGFjaXR5OworICAgIHJldHVybiBjdXJyZW50Q2FwYWNpdHkg
KiBvdXRPZkxpbmVHcm93dGhGYWN0b3I7Cit9CisKK2lubGluZSBzaXplX3QgU3RydWN0dXJlOjpz
dWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKQoreworICAgIHJldHVybiBuZXh0
T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KG91dE9mTGluZUNhcGFjaXR5KCkpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFN0cnVjdHVyZUlubGluZXNfaApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMTY5NTg5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICsz
Nyw3IEBACiAjaW5jbHVkZSAiQ29kZUNhY2hlLmgiCiAjaW5jbHVkZSAiQ29tbW9uSWRlbnRpZmll
cnMuaCIKICNpbmNsdWRlICJDb21tb25TbG93UGF0aHMuaCIKKyNpbmNsdWRlICJDdXN0b21HZXR0
ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJERkdMb25nTGl2ZWRTdGF0ZS5oIgogI2luY2x1ZGUgIkRG
R1dvcmtsaXN0LmgiCiAjaW5jbHVkZSAiRGVidWdnZXJBY3RpdmF0aW9uLmgiCkBAIC0yNTAsNiAr
MjUxLDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIG5v
dEFuT2JqZWN0U3RydWN0dXJlLnNldCgqdGhpcywgSlNOb3RBbk9iamVjdDo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHByb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0
dXJlLnNldCgqdGhpcywgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGdldHRlclNldHRlclN0cnVjdHVyZS5zZXQoKnRoaXMs
IEdldHRlclNldHRlcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOworICAg
IGN1c3RvbUdldHRlclNldHRlclN0cnVjdHVyZS5zZXQoKnRoaXMsIEN1c3RvbUdldHRlclNldHRl
cjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGFwaVdyYXBwZXJT
dHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU0FQSVZhbHVlV3JhcHBlcjo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwogICAgIEpTU2NvcGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1Nj
b3BlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZXhlY3V0YWJs
ZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEV4ZWN1dGFibGVCYXNlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRo
aXMsIDAsIGpzTnVsbCgpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJl
dmlzaW9uIDE2OTU4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2Miw2ICsyNjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
U3Ryb25nPFN0cnVjdHVyZT4gbm90QW5PYmplY3RTdHJ1Y3R1cmU7CiAgICAgICAgIFN0cm9uZzxT
dHJ1Y3R1cmU+IHByb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlOwogICAgICAgICBTdHJvbmc8
U3RydWN0dXJlPiBnZXR0ZXJTZXR0ZXJTdHJ1Y3R1cmU7CisgICAgICAgIFN0cm9uZzxTdHJ1Y3R1
cmU+IGN1c3RvbUdldHRlclNldHRlclN0cnVjdHVyZTsKICAgICAgICAgU3Ryb25nPFN0cnVjdHVy
ZT4gYXBpV3JhcHBlclN0cnVjdHVyZTsKICAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gSlNTY29w
ZVN0cnVjdHVyZTsKICAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZXhlY3V0YWJsZVN0cnVjdHVy
ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01h
cENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTY5NTg5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAs
NiArMzAsNyBAQAogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdC5oIgogI2luY2x1ZGUgIkpTV2Vha01hcC5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlu
bGluZXMuaCIKICNpbmNsdWRlICJXZWFrTWFwUHJvdG90eXBlLmgiCiAKIG5hbWVzcGFjZSBKU0Mg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmgJ
KHJldmlzaW9uIDE2OTU4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dyaXRl
QmFycmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsNiArMTUyLDcgQEAgcHVibGljOgogICAg
IGJvb2wgaXNPYmplY3QoKSBjb25zdCB7IHJldHVybiBnZXQoKS5pc09iamVjdCgpOyB9CiAgICAg
Ym9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBnZXQoKS5pc051bGwoKTsgfQogICAgIGJvb2wg
aXNHZXR0ZXJTZXR0ZXIoKSBjb25zdCB7IHJldHVybiBnZXQoKS5pc0dldHRlclNldHRlcigpOyB9
CisgICAgYm9vbCBpc0N1c3RvbUdldHRlclNldHRlcigpIGNvbnN0IHsgcmV0dXJuIGdldCgpLmlz
Q3VzdG9tR2V0dGVyU2V0dGVyKCk7IH0KICAgICAKICAgICBKU1ZhbHVlKiBzbG90KCkKICAgICB7
IApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY5NjIyKQorKysgU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTQtMDYtMDUgIE1hcmsg
SGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKworICAgICAgICBFYWdlcmx5IHJl
aWZ5IERPTSBwcm90b3R5cGUgYXR0cmlidXRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzNTU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgIFRoaXMgYWxsb3dz
IHVzIHRvIGdldCByaWQgb2YgYSBsb3Qgb2YgdGhlIGFkZGl0aW9uYWwgb3ZlcmhlYWQgb2YgcHVz
aGluZyBET00gYXR0cmlidXRlcyB1cCBpbnRvIHRoZSBwcm90b3R5cGUuIAorICAgICAgICBCeSBl
YWdlcmx5IHJlaWZ5aW5nIHRoZSBjdXN0b20gZ2V0dGVycyBhbmQgc2V0dGVycyBpbnRvIHRoZSBh
Y3R1YWwgSlNPYmplY3Qgd2UgYXZvaWQgaGF2aW5nIHRvIG92ZXJyaWRlIAorICAgICAgICBnZXRP
d25Qcm9wZXJ0eVNsb3QgZm9yIGFsbCBvZiB0aGUgRE9NIHByb3RvdHlwZXMsIHdoaWNoIGlzIGEg
bG90IG9mIHRoZSBvdmVyaGVhZCBvZiBkb2luZyBwcm9wZXJ0eSBsb29rdXBzIG9uIAorICAgICAg
ICBET00gd3JhcHBlcnMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbToKKyAgICAgICAgKHByb3RvdHlwZUhhc2hUYWJsZUFjY2Vzc29yKTogQ2hhbmdlZCB0
byBwYXNzIGFsb25nIHRoZSBWTS4KKyAgICAgICAgKEF0dHJpYnV0ZVNob3VsZEJlT25JbnN0YW5j
ZUZvckNvbXBhdGliaWxpdHkpOiBXZSB3ZXJlIGJlaW5nIG92ZXJseSBjb25zZXJ2YXRpdmUgaW4g
cmVnYXJkIHRvIHRvdWNoIGV2ZW50cy4gCisgICAgICAgIFRoaXMgY2F1c2VkIHVzIHRvIHN0b3Jl
IHRoZSB0b3VjaCBldmVudCBoYW5kbGVyIGdldHRlcnMgYW5kIHNldHRlcnMgb24gdGhlIEpTRWxl
bWVudCBpbnN0YW5jZSwgd2hpY2ggY2F1c2VkCisgICAgICAgIHVzIHRvIG92ZXJyaWRlIGdldE93
blByb3BlcnR5U2xvdCBmb3IgZXZlcnkgSlNFbGVtZW50IHN1YmNsYXNzLgorICAgICAgICAoSW5z
dGFuY2VPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QpOiBUaGlzIHdhcyBiZWluZyBvdmVybHkg
cGFyYW5vaWQgYWJvdXQgZ2VuZXJhdGUgYSBnZXRPd25Qcm9wZXJ0eVNsb3QgaWYKKyAgICAgICAg
dGhlcmUgd2FzIGdvaW5nIHRvIGJlIGEgImNvbnN0cnVjdG9yIiBwcm9wZXJ0eSwgZXZlbiB0aG91
Z2ggd2UgaGFuZGxlZCB0aGlzIGluIGFub3RoZXIgcGxhY2UgYWxyZWFkeS4KKyAgICAgICAgKEdl
bmVyYXRlSGVhZGVyKTogR2VuZXJhdGUgYSBmaW5pc2hDcmVhdGlvbiBmb3IgcHJvdG90eXBlcyB1
bmxlc3MgaXQncyB0aGUgSlNET01XaW5kb3cuIFdlIGNhbid0IGNvcnJlY3RseSAKKyAgICAgICAg
aGFuZGxlIHRoZSBET01XaW5kb3cgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBwYXRjaCBiZWNhdXNl
IHJlaWZ5aW5nIHRoZSBzdGF0aWMgcHJvcGVydGllcyByZXF1aXJlcyBhIGdsb2JhbCBvYmplY3Qs
CisgICAgICAgIHdoaWNoIGhhc24ndCBiZWVuIGNyZWF0ZWQgeWV0IHdoZW4gdGhlIHByb3RvdHlw
ZSBmb3IgdGhlIHdpbmRvdyBvYmplY3QgaXMgYmVpbmcgY3JlYXRlZC4KKyAgICAgICAgKEdlbmVy
YXRlSW1wbGVtZW50YXRpb24pOiBHZW5lcmF0ZSB0aGUgZmluaXNoQ3JlYXRpb24gY2FsbHMgdG8g
cmVpZnlTdGF0aWNQcm9wZXJ0aWVzLgorCiAyMDE0LTA2LTA1ICBZdXN1a2UgU3V6dWtpICA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIENTUyBKSVQ6IENsZWFuIHVwIFN0YWNrQWxs
b2NhdG9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMTY5NTg5KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTM1MCw3
ICszNTAsNyBAQCBzdWIgcHJvdG90eXBlSGFzaFRhYmxlQWNjZXNzb3IKICAgICBteSAkbm9TdGF0
aWNUYWJsZXMgPSBzaGlmdDsKICAgICBteSAkY2xhc3NOYW1lID0gc2hpZnQ7CiAgICAgaWYgKCRu
b1N0YXRpY1RhYmxlcykgewotICAgICAgICByZXR1cm4gImdldCR7Y2xhc3NOYW1lfVByb3RvdHlw
ZVRhYmxlKGV4ZWMtPnZtKCkpIjsKKyAgICAgICAgcmV0dXJuICJnZXQke2NsYXNzTmFtZX1Qcm90
b3R5cGVUYWJsZSh2bSkiOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHJldHVybiAiJHtjbGFzc05h
bWV9UHJvdG90eXBlVGFibGUiOwogICAgIH0KQEAgLTY1OSw3ICs2NTksNiBAQCBzdWIgQXR0cmli
dXRlU2hvdWxkQmVPbkluc3RhbmNlRm9yQ29tcGF0CiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0
OwogICAgIG15ICRhdHRyaWJ1dGUgPSBzaGlmdDsKICAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRp
bnRlcmZhY2UtPm5hbWU7Ci0gICAgcmV0dXJuIDEgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+
bmFtZSA9fiAidG91Y2giKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNzQ2LDcgKzc0NSw3IEBA
IHN1YiBJbnN0YW5jZU92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdAogICAgICAgICB8fCAkaW50
ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90In0K
ICAgICAgICAgfHwgJGhhc0ltcHVyZU5hbWVkR2V0dGVyOwogCi0gICAgcmV0dXJuICRudW1JbnN0
YW5jZUF0dHJpYnV0ZXMgPiAwIHx8ICEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Tm9JbnRlcmZhY2VPYmplY3QifSB8fCAkaGFzQ29tcGxleEdldHRlcjsKKyAgICByZXR1cm4gJG51
bUluc3RhbmNlQXR0cmlidXRlcyA+IDAgfHwgJGhhc0NvbXBsZXhHZXR0ZXI7CiAKIH0KIApAQCAt
MTIwOCw4ICsxMjA3LDEyIEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICBERUNMQVJFX0lORk87XG4iKTsKICAgICBpZiAoUHJvdG90eXBlT3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90KCRpbnRlcmZhY2UpKSB7Ci0gICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xv
dCYpO1xuIik7Ci0gICAgICAgICRzdHJ1Y3R1cmVGbGFnc3siSlNDOjpPdmVycmlkZXNHZXRPd25Q
cm9wZXJ0eVNsb3QifSA9IDE7CisgICAgICAgIGlmIChJc0RPTUdsb2JhbE9iamVjdCgkaW50ZXJm
YWNlKSkgeworICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7XG4iKTsKKyAgICAgICAgICAgICRz
dHJ1Y3R1cmVGbGFnc3siSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QifSA9IDE7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpO1xuIik7CisgICAgICAgIH0KICAgICB9CiAgICAg
aWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbU1hcmtGdW5jdGlv
biJ9IG9yICRuZWVkc1Zpc2l0Q2hpbGRyZW4pIHsKICAgICAgICAgJHN0cnVjdHVyZUZsYWdzeyJK
U0M6Ok92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4ifSA9IDE7CkBAIC0xOTQ4LDIxICsxOTUxLDM2IEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgfQogCiAgICAgaWYgKFByb3RvdHlwZU92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCgkaW50ZXJmYWNlKSkgewotICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9UHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9
UHJvdG90eXBlKiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfVByb3RvdHlwZSo+KG9i
amVjdCk7XG4iKTsKLQogICAgICAgICBteSAkbnVtUHJvdG90eXBlQXR0cmlidXRlcyA9IFByb3Rv
dHlwZUF0dHJpYnV0ZUNvdW50KCRpbnRlcmZhY2UpOwotICAgICAgICBpZiAoJG51bUNvbnN0YW50
cyBlcSAwICYmICRudW1GdW5jdGlvbnMgZXEgMCAmJiAkbnVtUHJvdG90eXBlQXR0cmlidXRlcyBl
cSAwKSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gQmFzZTo6
Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7
XG4iKTsgICAgICAgIAotICAgICAgICB9IGVsc2lmICgkbnVtQ29uc3RhbnRzIGVxIDAgJiYgJG51
bVByb3RvdHlwZUF0dHJpYnV0ZXMgZXEgMCkgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgcmV0dXJuIGdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU09iamVjdD4oZXhlYywgIiAu
IHByb3RvdHlwZUhhc2hUYWJsZUFjY2Vzc29yKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJKU05vU3RhdGljVGFibGVzIn0sICRjbGFzc05hbWUpIC4gIiwgdGhpc09iamVjdCwgcHJv
cGVydHlOYW1lLCBzbG90KTtcbiIpOwotICAgICAgICB9IGVsc2lmICgkbnVtRnVuY3Rpb25zIGVx
IDAgJiYgJG51bVByb3RvdHlwZUF0dHJpYnV0ZXMgZXEgMCkgewotICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDwke2NsYXNzTmFtZX1Q
cm90b3R5cGUsIEpTT2JqZWN0PihleGVjLCAiIC4gcHJvdG90eXBlSGFzaFRhYmxlQWNjZXNzb3Io
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTTm9TdGF0aWNUYWJsZXMifSwgJGNs
YXNzTmFtZSkgLiAiLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7CisgICAg
ICAgIGlmIChJc0RPTUdsb2JhbE9iamVjdCgkaW50ZXJmYWNlKSkgeworICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJib29sICR7Y2xhc3NOYW1lfVByb3RvdHlwZTo6Z2V0T3duUHJvcGVy
dHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KVxuIik7CisgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIntcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgVU5VU0VEX1BBUkFNKHZtKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgJHtjbGFzc05hbWV9UHJvdG90eXBlKiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xh
c3NOYW1lfVByb3RvdHlwZSo+KG9iamVjdCk7XG4iKTsKKworICAgICAgICAgICAgaWYgKCRudW1D
b25zdGFudHMgZXEgMCAmJiAkbnVtRnVuY3Rpb25zIGVxIDAgJiYgJG51bVByb3RvdHlwZUF0dHJp
YnV0ZXMgZXEgMCkgeworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJl
dHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lLCBzbG90KTtcbiIpOyAgICAgICAgCisgICAgICAgICAgICB9IGVsc2lmICgkbnVtQ29uc3Rh
bnRzIGVxIDAgJiYgJG51bVByb3RvdHlwZUF0dHJpYnV0ZXMgZXEgMCkgeworICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8
SlNPYmplY3Q+KGV4ZWMsICIgLiBwcm90b3R5cGVIYXNoVGFibGVBY2Nlc3NvcigkaW50ZXJmYWNl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNOb1N0YXRpY1RhYmxlcyJ9LCAkY2xhc3NOYW1lKSAu
ICIsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7XG4iKTsKKyAgICAgICAgICAgIH0g
ZWxzaWYgKCRudW1GdW5jdGlvbnMgZXEgMCAmJiAkbnVtUHJvdG90eXBlQXR0cmlidXRlcyBlcSAw
KSB7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldFN0
YXRpY1ZhbHVlU2xvdDwke2NsYXNzTmFtZX1Qcm90b3R5cGUsIEpTT2JqZWN0PihleGVjLCAiIC4g
cHJvdG90eXBlSGFzaFRhYmxlQWNjZXNzb3IoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkpTTm9TdGF0aWNUYWJsZXMifSwgJGNsYXNzTmFtZSkgLiAiLCB0aGlzT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpO1xuIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnZXRTdGF0aWNQcm9wZXJ0eVNsb3Q8
JHtjbGFzc05hbWV9UHJvdG90eXBlLCBKU09iamVjdD4oZXhlYywgIiAuIHByb3RvdHlwZUhhc2hU
YWJsZUFjY2Vzc29yKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU05vU3RhdGlj
VGFibGVzIn0sICRjbGFzc05hbWUpIC4gIiwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90
KTtcbiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9
XG5cbiIpOworICAgICAgICB9IGVsc2lmICgkbnVtQ29uc3RhbnRzID4gMCB8fCAkbnVtRnVuY3Rp
b25zID4gMCB8fCAkbnVtUHJvdG90eXBlQXR0cmlidXRlcyA+IDApIHsKKyAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmVpZnlTdGF0
aWNQcm9wZXJ0aWVzKHZtLCAiIC4gcHJvdG90eXBlSGFzaFRhYmxlQWNjZXNzb3IoJGludGVyZmFj
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTTm9TdGF0aWNUYWJsZXMifSwgJGNsYXNzTmFtZSkg
LiAiLCB0aGlzKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIp
OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
cmV0dXJuIGdldFN0YXRpY1Byb3BlcnR5U2xvdDwke2NsYXNzTmFtZX1Qcm90b3R5cGUsIEpTT2Jq
ZWN0PihleGVjLCAiIC4gcHJvdG90eXBlSGFzaFRhYmxlQWNjZXNzb3IoJGludGVyZmFjZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkpTTm9TdGF0aWNUYWJsZXMifSwgJGNsYXNzTmFtZSkgLiAiLCB0
aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0pXG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7
XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICAgICAg
fQotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgfQogCiAgICAgaWYg
KCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbU5hbWVkR2V0dGVyT25Q
cm90b3R5cGUifSkgewpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTY5NjIyKQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTQtMDYtMDUgIE1h
cmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKworICAgICAgICBFYWdlcmx5
IHJlaWZ5IERPTSBwcm90b3R5cGUgYXR0cmlidXRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzNTU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRpbmcgYSB0ZXN0IGV4cGVjdGF0aW9uIGFmdGVy
IHRoaXMgZml4LgorCisgICAgICAgICoganMvZG9tL2NvbnN0cnVjdG9yLWF0dHJpYnV0ZXMtZXhw
ZWN0ZWQudHh0OgorCiAyMDE0LTA2LTA1ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgU3VicGl4ZWwgcmVuZGVyaW5nOiBib3JkZXItcmFkaXVzIHBhaW50aW5nIGZh
bGxzIGJhY2sgdG8gcmVjdGFuZ2xlIHdoZW4gdGhlIHNuYXBwZWQgcm91bmRlZCByZWN0IGJlY29t
ZXMgbm9uLXJlbmRlcmFibGUuCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9kb20vY29uc3RydWN0b3It
YXR0cmlidXRlcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvZG9t
L2NvbnN0cnVjdG9yLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNjk1ODkpCisr
KyBMYXlvdXRUZXN0cy9qcy9kb20vY29uc3RydWN0b3ItYXR0cmlidXRlcy1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgUEFTUyB4ID0gVVJJRXJyb3IucHJvdG90
eXBlOyBkZWxldGUgeC5jbwogUEFTUyBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJykuX19wcm90
b19fLmhhc093blByb3BlcnR5KCdjb25zdHJ1Y3RvcicpIGlzIHRydWUKIFBBU1MgY2FuRW51bShk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJykuX19wcm90b19fLCAnY29uc3RydWN0b3InKSBpcyBm
YWxzZQogRkFJTCB4ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpLl9fcHJvdG9fXzsgeC5j
b25zdHJ1Y3RvciA9IDQ7IHguY29uc3RydWN0b3Igc2hvdWxkIGJlIDQgKG9mIHR5cGUgbnVtYmVy
KS4gV2FzIFtvYmplY3QgVGV4dENvbnN0cnVjdG9yXSAob2YgdHlwZSBvYmplY3QpLgotRkFJTCB4
ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpLl9fcHJvdG9fXzsgZGVsZXRlIHguY29uc3Ry
dWN0b3I7IHguaGFzT3duUHJvcGVydHkoJ2NvbnN0cnVjdG9yJykgc2hvdWxkIGJlIGZhbHNlLiBX
YXMgdHJ1ZS4KK1BBU1MgeCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKS5fX3Byb3RvX187
IGRlbGV0ZSB4LmNvbnN0cnVjdG9yOyB4Lmhhc093blByb3BlcnR5KCdjb25zdHJ1Y3RvcicpIGlz
IGZhbHNlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUK
</data>
<flag name="review"
          id="257074"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>