<?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>34778</bug_id>
          
          <creation_ts>2010-02-09 17:28:37 -0800</creation_ts>
          <short_desc>Add support to isolate file:/// URIs in their own domain by default</short_desc>
          <delta_ts>2010-02-16 23:32:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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="Chris Evans">scarybeasts</reporter>
          <assigned_to name="Chris Evans">scarybeasts</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>189180</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Evans">scarybeasts</who>
    <bug_when>2010-02-09 17:28:37 -0800</bug_when>
    <thetext>Chromium will use this new mode by default. Patch forthcoming...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189184</commentid>
    <comment_count>1</comment_count>
      <attachid>48454</attachid>
    <who name="Chris Evans">scarybeasts</who>
    <bug_when>2010-02-09 17:42:18 -0800</bug_when>
    <thetext>Created attachment 48454
Add support for putting file:/// URIs into their own unique domain</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189185</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Evans">scarybeasts</who>
    <bug_when>2010-02-09 17:43:16 -0800</bug_when>
    <thetext>Adam, can you help me land this? It&apos;s mostly trivial / tedious wiring. I think I got all the places.
Once landed I can get on with the subsequent changes (Chromium wiring and then add the test, which I promise I won&apos;t neglect to do :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189196</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-02-09 18:05:51 -0800</bug_when>
    <thetext>Kind of ridiculous what it takes to add one bit of state, huh?

One minor issue, you need to add new functions at the bottom of the IDL file because of the way virtual functions work in C++.  Other than that, looks reasonable.

I&apos;m leaving this r? for now in case other folks want to discuss what we&apos;re thinking about doing here.  We&apos;ve had some discussion on #webkit in the past, but Chris and my thinking has evolved slightly since then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189223</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Evans">scarybeasts</who>
    <bug_when>2010-02-09 20:23:56 -0800</bug_when>
    <thetext>Assuming your IDL comment refers to IWebPreferencesPrivate.idl -- new patch forthcoming.

NOTE - this patch doesn&apos;t change the WebKit default behaviour at all. That&apos;s left for clients to do if they want additional security for file:/// URIs.

Given that this won&apos;t affect WebKit clients, but Chromium wants to use this -- I&apos;m in favour of submitting sooner rather than later :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189225</commentid>
    <comment_count>5</comment_count>
      <attachid>48459</attachid>
    <who name="Chris Evans">scarybeasts</who>
    <bug_when>2010-02-09 20:24:53 -0800</bug_when>
    <thetext>Created attachment 48459
Updated so new methods are at bottom of IDL file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189247</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-02-09 22:47:19 -0800</bug_when>
    <thetext>Can you explain what issues you are trying to mitigate with this new mode? You say your thinking in this area has changed, what changed your mind?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189249</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-02-09 22:55:53 -0800</bug_when>
    <thetext>&gt; Can you explain what issues you are trying to mitigate with this new mode?

The risk is that a user might download an HTML document in an email.  When they viewed that document, the document would be able to steal any file on the their hard drive.

&gt; You say your thinking in this area has changed, what changed your mind?

A couple things:

1) Chris noticed that he was doing the above a bunch and got scared.
2) He wants to try turning this on in a Chrome Dev channel release (the equivalent of the WebKit nightly builds) to see how the community reacts.

My guess is that we&apos;ll get a bunch of complaints and will need to back off, but I&apos;m not sure where we&apos;ll end up.  When we discussed this on #webkit, Maciej suggested some kind of &quot;Developer mode&quot; that would have more permissive file:// URL restrictions.

This is all very much open for discussion, but having code seemed like a good way to start the discussion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189272</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Evans">scarybeasts</who>
    <bug_when>2010-02-10 00:45:59 -0800</bug_when>
    <thetext>Regarding 1), the threat I&apos;m worried about is HTML attachments (e.g. repro.html) on bugs in the WebKit and Chromium bug databases. I could feasibly get my files stolen. Not good. I&apos;d rather the browser protected me by default.

Regarding 2), I really don&apos;t expect much kick back. I have added a Chromium command-line flag override for developers that need communication between local files. 99% of our users likely won&apos;t notice or care, and could use the extra protection.
Well, there&apos;s only one way to find out. If we can get this WebKit patch landed, I&apos;ll flip the setting in the next Chromium dev channel build and report back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189408</commentid>
    <comment_count>9</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-02-10 10:36:11 -0800</bug_when>
    <thetext>Thanks for the explanation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189409</commentid>
    <comment_count>10</comment_count>
      <attachid>48459</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-02-10 10:37:38 -0800</bug_when>
    <thetext>Comment on attachment 48459
Updated so new methods are at bottom of IDL file

Please follow this up with a test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189434</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Evans">scarybeasts</who>
    <bug_when>2010-02-10 11:47:56 -0800</bug_when>
    <thetext>Yep, test is pending. I need to get this landed, then the Chromium changes landed, before I can land the test without breaking anything. Joy of dependencies :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189565</commentid>
    <comment_count>12</comment_count>
      <attachid>48459</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-02-10 18:26:26 -0800</bug_when>
    <thetext>Comment on attachment 48459
Updated so new methods are at bottom of IDL file

Rejecting patch 48459 from commit-queue.

Failed to run &quot;[&apos;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/svn-apply&apos;, &apos;--reviewer&apos;, &apos;Sam Weinig&apos;, &apos;--force&apos;]&quot; exit_code: 1
Last 500 characters of output:
e WebKitTools/DumpRenderTree/mac/LayoutTestControllerMac.mm
Hunk #1 succeeded at 329 (offset 5 lines).
patching file WebKitTools/DumpRenderTree/LayoutTestController.cpp
Hunk #1 succeeded at 928 (offset 19 lines).
Hunk #2 succeeded at 1380 (offset 20 lines).
patching file WebKitTools/DumpRenderTree/win/LayoutTestControllerWin.cpp
patching file WebKitTools/DumpRenderTree/win/DumpRenderTree.cpp
patching file WebKitTools/DumpRenderTree/LayoutTestController.h
Hunk #1 succeeded at 69 (offset 1 line).

Full output: http://webkit-commit-queue.appspot.com/results/256695</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189589</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Evans">scarybeasts</who>
    <bug_when>2010-02-10 19:56:36 -0800</bug_when>
    <thetext>Grr! Clashes with Changeset 54587 for trunk/WebCore/page/SecurityOrigin.cpp by Mr. Barth :)
Updating patch in progress....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189592</commentid>
    <comment_count>14</comment_count>
      <attachid>48544</attachid>
    <who name="Chris Evans">scarybeasts</who>
    <bug_when>2010-02-10 20:24:25 -0800</bug_when>
    <thetext>Created attachment 48544
Trivial merge with Changeset 54587. Ready to go to commit queue again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189593</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Evans">scarybeasts</who>
    <bug_when>2010-02-10 20:25:40 -0800</bug_when>
    <thetext>Adam, Sam or Eric: can you r+, cq? the updated patch? The trivial conflict with SecurityOrigin.cpp has been resolved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189640</commentid>
    <comment_count>16</comment_count>
      <attachid>48544</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-11 03:22:49 -0800</bug_when>
    <thetext>Comment on attachment 48544
Trivial merge with Changeset 54587. Ready to go to commit queue again.

The commit-queue spun on this one for a while, making me think there might be something wrong with the patch.

I&apos;m going to re-mark this r? so that the EWS bots run on it.  If those pass, i&apos;m happy to mark it cq+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189748</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Evans">scarybeasts</who>
    <bug_when>2010-02-11 11:12:53 -0800</bug_when>
    <thetext>I&apos;m no expert, but I see green on EWS? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189752</commentid>
    <comment_count>18</comment_count>
      <attachid>48544</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-11 11:22:33 -0800</bug_when>
    <thetext>Comment on attachment 48544
Trivial merge with Changeset 54587. Ready to go to commit queue again.

Yup.  lets do this thang.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189945</commentid>
    <comment_count>19</comment_count>
      <attachid>48544</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-02-11 22:37:44 -0800</bug_when>
    <thetext>Comment on attachment 48544
Trivial merge with Changeset 54587. Ready to go to commit queue again.

Rejecting patch 48544 from commit-queue.

Unexpected failure when landing patch!  Please file a bug against webkit-patch.
Failed to run &quot;[&apos;WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-commit-queue.appspot.com&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--no-update&apos;, &apos;--parent-command=commit-queue&apos;, &apos;--build-style=both&apos;, &apos;--quiet&apos;, &apos;48544&apos;]&quot; exit_code: 1
Last 500 characters of output:
ebkitpy/statusserver.py&quot;, line 87, in update_status
    return NetworkTransaction().run(lambda: self._post_to_server(queue_name, status, patch, results_file))
  File &quot;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/webkitpy/networktransaction.py&quot;, line 52, in run
    self._check_for_timeout()
  File &quot;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/webkitpy/networktransaction.py&quot;, line 58, in _check_for_timeout
    raise NetworkTimeout()
webkitpy.networktransaction.NetworkTimeout</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190111</commentid>
    <comment_count>20</comment_count>
    <who name="Chris Evans">scarybeasts</who>
    <bug_when>2010-02-12 11:46:05 -0800</bug_when>
    <thetext>Argh! The latest reject has no &quot;full output&quot; link, so I can&apos;t see what might have gone wrong. Looks like a timeout waiting for the network?
Can anyone help me land this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190112</commentid>
    <comment_count>21</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-12 11:48:06 -0800</bug_when>
    <thetext>Yeah, that&apos;s what happened last time.  The commit-queue hung for hours trying to post the actual output.

I&apos;ll attempt to land this manually this afternoon.  Sorry for the runaround.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190136</commentid>
    <comment_count>22</comment_count>
    <who name="Chris Evans">scarybeasts</who>
    <bug_when>2010-02-12 13:50:56 -0800</bug_when>
    <thetext>Thanks, Eric. No need to apologize; there&apos;s probably something weird about my patch if this has happened twice?? I can&apos;t see anything obviously wrong, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190153</commentid>
    <comment_count>23</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-12 14:36:41 -0800</bug_when>
    <thetext>The commit-queue failing to upload the results is a commit queue bug.  The actual failure is:

Ld /Users/eseidel/Projects/build/Release/WebKit.framework/Versions/A/WebKit normal i386
    cd /Users/eseidel/Projects/WebKit/WebKit
    setenv MACOSX_DEPLOYMENT_TARGET 10.5
    /Developer/usr/bin/g++-4.2 -arch i386 -dynamiclib -L/Users/eseidel/Projects/build/Release -F/Users/eseidel/Projects/build/Release -F/System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks -F/System/Library/Frameworks/ApplicationServices.framework/Frameworks -F/System/Library/Frameworks/Carbon.framework/Frameworks -F/System/Library/Frameworks/Quartz.framework/Frameworks -F/System/Library/PrivateFrameworks -filelist /Users/eseidel/Projects/build/WebKit.build/Release/WebKit.build/Objects-normal/i386/WebKit.LinkFileList -Wl,--no-demangle -exported_symbols_list mac/WebKit.exp -install_name /Users/eseidel/Projects/build/Release/WebKit.framework/Versions/A/WebKit -mmacosx-version-min=10.5 -Wl,-dead_strip -sub_umbrella WebCore -lWebKitSystemInterfaceLeopard -framework Carbon -framework Cocoa -framework JavaScriptCore -licucore -framework OpenGL -framework QuartzCore -framework Security -framework WebCore -Wl,-single_module -compatibility_version 1 -current_version 533.1 -o /Users/eseidel/Projects/build/Release/WebKit.framework/Versions/A/WebKit
Undefined symbols:
  &quot;__ZN7WebCore8Settings30setAllowFileAccessFromFileURLsEb&quot;, referenced from:
      -[WebView(WebPrivate) _preferencesChangedNotification:] in WebView.o
ld: symbol(s) not found
collect2: ld returned 1 exit status</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190163</commentid>
    <comment_count>24</comment_count>
    <who name="Chris Evans">scarybeasts</who>
    <bug_when>2010-02-12 14:56:39 -0800</bug_when>
    <thetext>Thanks!
Sigh. I&apos;ll look at this after the long weekend. Maybe I have a typo. I&apos;m on Chromium Linux so parts of this patch are blind :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190252</commentid>
    <comment_count>25</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-02-12 21:59:48 -0800</bug_when>
    <thetext>You just have to add __ZN7WebCore8Settings30setAllowFileAccessFromFileURLsEb to WebCore.base.exp.  Developing WebKit without a Mac is a minefield.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190895</commentid>
    <comment_count>26</comment_count>
      <attachid>48863</attachid>
    <who name="Chris Evans">scarybeasts</who>
    <bug_when>2010-02-16 22:53:38 -0800</bug_when>
    <thetext>Created attachment 48863
Export new WebCore function to fix Mac link error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190897</commentid>
    <comment_count>27</comment_count>
      <attachid>48863</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-02-16 22:55:12 -0800</bug_when>
    <thetext>Comment on attachment 48863
Export new WebCore function to fix Mac link error

ok, let&apos;s give it a spin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190907</commentid>
    <comment_count>28</comment_count>
      <attachid>48863</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-02-16 23:32:36 -0800</bug_when>
    <thetext>Comment on attachment 48863
Export new WebCore function to fix Mac link error

Clearing flags on attachment: 48863

Committed r54873: &lt;http://trac.webkit.org/changeset/54873&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190908</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-02-16 23:32:43 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48454</attachid>
            <date>2010-02-09 17:42:18 -0800</date>
            <delta_ts>2010-02-09 20:24:53 -0800</delta_ts>
            <desc>Add support for putting file:/// URIs into their own unique domain</desc>
            <filename>file.diff</filename>
            <type>text/plain</type>
            <size>28159</size>
            <attacher name="Chris Evans">scarybeasts</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDU0NTMwKQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDE4LDYgKzQ0MTgsMTAgQEAKICAgICAgICAgICAvLyBT
b21lIGNsaWVudHMgd2FudCBmaWxlOi8vIFVSTHMgdG8gaGF2ZSB1bml2ZXJzYWwgYWNjZXNzLCBi
dXQgdGhhdAogICAgICAgICAgIC8vIHNldHRpbmcgaXMgZGFuZ2Vyb3VzIGZvciBvdGhlciBjbGll
bnRzLgogICAgICAgICAgIHNlY3VyaXR5T3JpZ2luKCktPmdyYW50VW5pdmVyc2FsQWNjZXNzKCk7
CisgICAgICAgIH0gZWxzZSBpZiAoIXNldHRpbmdzLT5hbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVS
THMoKSAmJiBzZWN1cml0eU9yaWdpbigpLT5pc0xvY2FsKCkpIHsKKyAgICAgICAgICAvLyBTb21l
IGNsaWVudHMgd2FudCBmaWxlOi8vIFVSTHMgdG8gaGF2ZSBldmVuIHRpZ2h0ZXIgcmVzdHJpY3Rp
b25zIGJ5CisgICAgICAgICAgLy8gZGVmYXVsdCwgYW5kIG5vdCBiZSBhYmxlIHRvIGFjY2VzcyBv
dGhlciBsb2NhbCBmaWxlcy4KKyAgICAgICAgICBzZWN1cml0eU9yaWdpbigpLT5tYWtlVW5pcXVl
KCk7CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NDUzMCkKKysrIFdlYkNvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMDktMDItMDkgIENocmlz
IEV2YW5zICA8Y2V2YW5zQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgc2V0dGluZyB3aGljaCBnaXZlcyB0aGUg
b3B0aW9uIG9mIGFzc2lnbmluZyBldmVyeSBmaWxlOi8vLworICAgICAgICB0byBpdHMgb3duIHVu
aXF1ZSBkb21haW4uCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM0Nzc4CisKKyAgICAgICAgVGVzdDogUGVuZGluZyBpbiBmb3J0aGNvbWluZyBzZXBh
cmF0ZSBjaGFuZ2UgZHVlIHRvIG5vbi10cml2aWFsCisgICAgICAgIGRlcGVuZGVuY2llcy4KKwor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
aW5pdFNlY3VyaXR5Q29udGV4dCk6IFBsYWNlIGZpbGU6Ly8vIFVSSSBkb2N1bWVudHMKKyAgICAg
ICAgaW50byB0aGVpciBvd24gdW5pcXVlIGRvbWFpbnMgaWYgdGhlIG5ldyBzZXR0aW5nIHJlcXVp
cmVzIGl0LgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKiBwYWdlL1NldHRp
bmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRBbGxvd0ZpbGVBY2Nlc3NG
cm9tRmlsZVVSTHMpOiBTaW1wbGUgc2V0dGVyLgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmln
aW4uaDoKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luOjptYWtlVW5pcXVlKTogQWRkIHNpbXBsZSBhYmlsaXR5IHRvIGZv
cmNlIGFuCisgICAgICAgIG9yaWdpbiB0byBiZSBjb25zaWRlcmVkIHVuaXF1ZS4KKwogMjAxMC0w
Mi0wOCAgRG9taW5pYyBDb29uZXkgIDxkb21pbmljY0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAkocmV2aXNpb24gNTQ1MzApCisrKyBX
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDYgKzExMiw5IEBA
CiAgICAgICAgIHZvaWQgc2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCk7
CiAgICAgICAgIGJvb2wgYWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoKSBjb25zdCB7
IHJldHVybiBtX2FsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzOyB9CiAKKyAgICAgICAg
dm9pZCBzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCk7CisgICAgICAgIGJvb2wg
YWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd0ZpbGVB
Y2Nlc3NGcm9tRmlsZVVSTHM7IH0KKwogICAgICAgICB2b2lkIHNldEphdmFTY3JpcHRDYW5PcGVu
V2luZG93c0F1dG9tYXRpY2FsbHkoYm9vbCk7CiAgICAgICAgIGJvb2wgamF2YVNjcmlwdENhbk9w
ZW5XaW5kb3dzQXV0b21hdGljYWxseSgpIGNvbnN0IHsgcmV0dXJuIG1famF2YVNjcmlwdENhbk9w
ZW5XaW5kb3dzQXV0b21hdGljYWxseTsgfQogCkBAIC0zMjAsNiArMzIzLDcgQEAKICAgICAgICAg
Ym9vbCBtX2lzSmF2YVNjcmlwdEVuYWJsZWQgOiAxOwogICAgICAgICBib29sIG1faXNXZWJTZWN1
cml0eUVuYWJsZWQgOiAxOwogICAgICAgICBib29sIG1fYWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9t
RmlsZVVSTHM6IDE7CisgICAgICAgIGJvb2wgbV9hbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHM6
IDE7CiAgICAgICAgIGJvb2wgbV9qYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5
IDogMTsKICAgICAgICAgYm9vbCBtX3Nob3VsZFByaW50QmFja2dyb3VuZHMgOiAxOwogICAgICAg
ICBib29sIG1fdGV4dEFyZWFzQXJlUmVzaXphYmxlIDogMTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luLmNwcAkocmV2aXNpb24gNTQ1MzApCisrKyBXZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODYsNiArMjg2LDExIEBACiAgICAgbV91bml2ZXJzYWxB
Y2Nlc3MgPSB0cnVlOwogfQogCit2b2lkIFNlY3VyaXR5T3JpZ2luOjptYWtlVW5pcXVlKCkKK3sK
KyAgICBtX2lzVW5pcXVlID0gdHJ1ZTsKK30KKwogdm9pZCBTZWN1cml0eU9yaWdpbjo6c2V0U2Fu
ZGJveEZsYWdzKFNhbmRib3hGbGFncyBmbGFncykKIHsKICAgICAvLyBBbHRob3VnaCB5b3UgbWln
aHQgdGhpbmsgdGhhdCB3ZSBzaG91bGQgc2V0IG1faXNVbmlxdWUgYmFzZWQgb24KSW5kZXg6IFdl
YkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1NldHRp
bmdzLmNwcAkocmV2aXNpb24gNTQ1MzApCisrKyBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3NSw3IEBACiAgICAgLCBtX2lzSmF2YVNjcmlwdEVuYWJs
ZWQoZmFsc2UpCiAgICAgLCBtX2lzV2ViU2VjdXJpdHlFbmFibGVkKHRydWUpCiAgICAgLCBtX2Fs
bG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKHRydWUpCisgICAgLCBtX2FsbG93RmlsZUFj
Y2Vzc0Zyb21GaWxlVVJMcyh0cnVlKQogICAgICwgbV9qYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NB
dXRvbWF0aWNhbGx5KGZhbHNlKQogICAgICwgbV9zaG91bGRQcmludEJhY2tncm91bmRzKGZhbHNl
KQogICAgICwgbV90ZXh0QXJlYXNBcmVSZXNpemFibGUoZmFsc2UpCkBAIC0yNDAsNiArMjQxLDEx
IEBACiAgICAgbV9hbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyA9IGFsbG93VW5pdmVy
c2FsQWNjZXNzRnJvbUZpbGVVUkxzOwogfQogCit2b2lkIFNldHRpbmdzOjpzZXRBbGxvd0ZpbGVB
Y2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCBhbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMpCit7Cisg
ICAgbV9hbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMgPSBhbGxvd0ZpbGVBY2Nlc3NGcm9tRmls
ZVVSTHM7Cit9CisKIHZvaWQgU2V0dGluZ3M6OnNldEphdmFFbmFibGVkKGJvb2wgaXNKYXZhRW5h
YmxlZCkKIHsKICAgICBtX2lzSmF2YUVuYWJsZWQgPSBpc0phdmFFbmFibGVkOwpJbmRleDogV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luLmgJKHJldmlzaW9uIDU0NTMwKQorKysgV2ViQ29yZS9wYWdlL1NlY3VyaXR5
T3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw2ICsxMzksOSBAQAogICAgIC8vIGFkZGl0
aW9uLCB0aGUgU2FuZGJveE9yaWdpbiBmbGFnIGlzIGluaGVyaXRlZCBieSBpZnJhbWVzLgogICAg
IGJvb2wgaXNVbmlxdWUoKSBjb25zdCB7IHJldHVybiBtX2lzVW5pcXVlOyB9CiAKKyAgICAvLyBN
YXJrcyBhbiBvcmlnaW4gYXMgYmVpbmcgdW5pcXVlLgorICAgIHZvaWQgbWFrZVVuaXF1ZSgpOwor
CiAgICAgLy8gQ29udmVydCB0aGlzIFNlY3VyaXR5T3JpZ2luIGludG8gYSBzdHJpbmcuIFRoZSBz
dHJpbmcKICAgICAvLyByZXByZXNlbnRhdGlvbiBvZiBhIFNlY3VyaXR5T3JpZ2luIGlzIHNpbWls
YXIgdG8gYSBVUkwsIGV4Y2VwdCBpdAogICAgIC8vIGxhY2tzIGEgcGF0aCBjb21wb25lbnQuIFRo
ZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gZG9lcyBub3QgZW5jb2RlCkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCShyZXZpc2lvbiA1NDUzMCkKKysrIFdlYktpdC9j
aHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM2LDYg
KzIzNiwxMSBAQAogICAgIG1fc2V0dGluZ3MtPnNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZp
bGVVUkxzKGFsbG93KTsKIH0KIAordm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldEFsbG93RmlsZUFj
Y2Vzc0Zyb21GaWxlVVJMcyhib29sIGFsbG93KQoreworICAgIG1fc2V0dGluZ3MtPnNldEFsbG93
RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhhbGxvdyk7Cit9CisKIHZvaWQgV2ViU2V0dGluZ3NJbXBs
OjpzZXRUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yTmV2ZXJJbmNsdWRlZCgp
CiB7CiAgICAgLy8gRklYTUU6IElmIHlvdSBldmVyIG5lZWQgbW9yZSBiZWhhdmlvcnMgdGhhbiB0
aGlzLCB0aGVuIHdlIHNob3VsZCBwcm9iYWJseQpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTZXR0aW5nc0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNl
dHRpbmdzSW1wbC5oCShyZXZpc2lvbiA1NDUzMCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U2V0dGluZ3NJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDYgKzgwLDcgQEAKICAgICB2aXJ0
dWFsIHZvaWQgc2V0U2hvdWxkUGFpbnRDdXN0b21TY3JvbGxiYXJzKGJvb2wpOwogICAgIHZpcnR1
YWwgdm9pZCBzZXREYXRhYmFzZXNFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRB
bGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyhib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yTmV2ZXJJbmNsdWRlZCgpOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoYm9v
bCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEV4cGVyaW1lbnRhbFdlYkdMRW5hYmxlZChib29sKTsK
SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgJKHJldmlzaW9uIDU0NTMwKQor
KysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBA
IC03OCw2ICs3OCw3IEBACiAgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZFBhaW50Q3VzdG9tU2Ny
b2xsYmFycyhib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldERhdGFiYXNlc0VuYWJsZWQo
Ym9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21G
aWxlVVJMcyhib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEFsbG93RmlsZUFjY2Vzc0Zy
b21GaWxlVVJMcyhib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFRleHREaXJlY3Rpb25T
dWJtZW51SW5jbHVzaW9uQmVoYXZpb3JOZXZlckluY2x1ZGVkKCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoYm9vbCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRFeHBlcmltZW50YWxXZWJHTEVuYWJsZWQoYm9vbCkgPSAwOwpJbmRl
eDogV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQv
QXBpL3F3ZWJzZXR0aW5ncy5oCShyZXZpc2lvbiA1NDUzMCkKKysrIFdlYktpdC9xdC9BcGkvcXdl
YnNldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDcgQEAKICAgICAgICAgTG9j
YWxTdG9yYWdlRGF0YWJhc2VFbmFibGVkID0gTG9jYWxTdG9yYWdlRW5hYmxlZCwKICNlbmRpZgog
ICAgICAgICBMb2NhbENvbnRlbnRDYW5BY2Nlc3NSZW1vdGVVcmxzLAorICAgICAgICBMb2NhbENv
bnRlbnRDYW5BY2Nlc3NGaWxlVXJscywKICAgICAgICAgRG5zUHJlZmV0Y2hFbmFibGVkLAogICAg
ICAgICBYU1NBdWRpdG9yRW5hYmxlZCwKICAgICAgICAgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Vu
YWJsZWQKSW5kZXg6IFdlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAJKHJldmlzaW9uIDU0NTMwKQorKysgV2Vi
S2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsNiArMjE1
LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbC0+YXR0
cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OkxvY2FsQ29udGVudENhbkFjY2Vzc1JlbW90ZVVy
bHMpKTsKICAgICAgICAgc2V0dGluZ3MtPnNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVV
UkxzKHZhbHVlKTsKIAorICAgICAgICB2YWx1ZSA9IGF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRp
bmdzOjpMb2NhbENvbnRlbnRDYW5BY2Nlc3NGaWxlVXJscywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2xvYmFsLT5hdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6
TG9jYWxDb250ZW50Q2FuQWNjZXNzRmlsZVVybHMpKTsKKyAgICAgICAgc2V0dGluZ3MtPnNldEFs
bG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyh2YWx1ZSk7CisKICAgICAgICAgdmFsdWUgPSBhdHRy
aWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6WFNTQXVkaXRvckVuYWJsZWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbC0+YXR0cmlidXRlcy52YWx1ZShRV2Vi
U2V0dGluZ3M6OlhTU0F1ZGl0b3JFbmFibGVkKSk7CiAgICAgICAgIHNldHRpbmdzLT5zZXRYU1NB
dWRpdG9yRW5hYmxlZCh2YWx1ZSk7CkBAIC0zNjMsNiArMzY3LDcgQEAKICAgICBcdmFsdWUgTG9j
YWxTdG9yYWdlRGF0YWJhc2VFbmFibGVkIFxle1RoaXMgZW51bSB2YWx1ZSBpcyBkZXByZWNhdGVk
Ln0gVXNlCiAgICAgICAgIFFXZWJTZXR0aW5nczo6TG9jYWxTdG9yYWdlRW5hYmxlZCBpbnN0ZWFk
LgogICAgIFx2YWx1ZSBMb2NhbENvbnRlbnRDYW5BY2Nlc3NSZW1vdGVVcmxzIFNwZWNpZmllcyB3
aGV0aGVyIGxvY2FsbHkgbG9hZGVkIGRvY3VtZW50cyBhcmUgYWxsb3dlZCB0byBhY2Nlc3MgcmVt
b3RlIHVybHMuCisgICAgXHZhbHVlIExvY2FsQ29udGVudENhbkFjY2Vzc0ZpbGVVcmxzIFNwZWNp
ZmllcyB3aGV0aGVyIGxvY2FsbHkgbG9hZGVkIGRvY3VtZW50cyBhcmUgYWxsb3dlZCB0byBhY2Nl
c3Mgb3RoZXIgbG9jYWwgIHVybHMuCiAgICAgXHZhbHVlIFhTU0F1ZGl0b3JFbmFibGVkIFNwZWNp
ZmllcyB3aGV0aGVyIGxvYWQgcmVxdWVzdHMgc2hvdWxkIGJlIG1vbml0b3JlZCBmb3IgY3Jvc3Mt
c2l0ZSBzY3JpcHRpbmcgYXR0ZW1wdHMuCiAqLwogCkBAIC0zOTQsNiArMzk5LDcgQEAKICAgICBk
LT5hdHRyaWJ1dGVzLmluc2VydChRV2ViU2V0dGluZ3M6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNh
Y2hlRW5hYmxlZCwgZmFsc2UpOwogICAgIGQtPmF0dHJpYnV0ZXMuaW5zZXJ0KFFXZWJTZXR0aW5n
czo6TG9jYWxTdG9yYWdlRW5hYmxlZCwgZmFsc2UpOwogICAgIGQtPmF0dHJpYnV0ZXMuaW5zZXJ0
KFFXZWJTZXR0aW5nczo6TG9jYWxDb250ZW50Q2FuQWNjZXNzUmVtb3RlVXJscywgZmFsc2UpOwor
ICAgIGQtPmF0dHJpYnV0ZXMuaW5zZXJ0KFFXZWJTZXR0aW5nczo6TG9jYWxDb250ZW50Q2FuQWNj
ZXNzRmlsZVVybHMsIHRydWUpOwogICAgIGQtPmF0dHJpYnV0ZXMuaW5zZXJ0KFFXZWJTZXR0aW5n
czo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQsIGZhbHNlKTsKICAgICBkLT5vZmZsaW5l
U3RvcmFnZURlZmF1bHRRdW90YSA9IDUgKiAxMDI0ICogMTAyNDsKICAgICBkLT5kZWZhdWx0VGV4
dEVuY29kaW5nID0gUUxhdGluMVN0cmluZygiaXNvLTg4NTktMSIpOwpJbmRleDogV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5jcHAJKHJldmlzaW9uIDU0NTMwKQorKysgV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1NTAsNyArMjU1MCw4IEBA
CiAgICAgICAgIGVuYWJsZVNjcmlwdHMsIGVuYWJsZVBsdWdpbnMsIGVuYWJsZURldmVsb3BlckV4
dHJhcywgcmVzaXphYmxlVGV4dEFyZWFzLAogICAgICAgICBlbmFibGVQcml2YXRlQnJvd3Npbmcs
IGVuYWJsZUNhcmV0QnJvd3NpbmcsIGVuYWJsZUhUTUw1RGF0YWJhc2UsIGVuYWJsZUhUTUw1TG9j
YWxTdG9yYWdlLAogICAgICAgICBlbmFibGVYU1NBdWRpdG9yLCBqYXZhc2NyaXB0Q2FuT3Blbldp
bmRvd3MsIGVuYWJsZU9mZmxpbmVXZWJBcHBDYWNoZSwKLSAgICAgICAgZW5hYmxlVW5pdmVyc2Fs
QWNjZXNzRnJvbUZpbGVVUkksIGVuYWJsZURPTVBhc3RlLCB0YWJLZXlDeWNsZXNUaHJvdWdoRWxl
bWVudHMsCisgICAgICAgIGVuYWJsZVVuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJJLCBlbmFibGVG
aWxlQWNjZXNzRnJvbUZpbGVVUkksCisgICAgICAgIGVuYWJsZURPTVBhc3RlLCB0YWJLZXlDeWNs
ZXNUaHJvdWdoRWxlbWVudHMsCiAgICAgICAgIGVuYWJsZVNpdGVTcGVjaWZpY1F1aXJrcywgdXNl
UGFnZUNhY2hlOwogCiAgICAgV2ViS2l0RWRpdGluZ0JlaGF2aW9yIGVkaXRpbmdCZWhhdmlvcjsK
QEAgLTI1ODAsNiArMjU4MSw3IEBACiAgICAgICAgICAgICAgICAgICJlbmFibGUtb2ZmbGluZS13
ZWItYXBwbGljYXRpb24tY2FjaGUiLCAmZW5hYmxlT2ZmbGluZVdlYkFwcENhY2hlLAogICAgICAg
ICAgICAgICAgICAiZWRpdGluZy1iZWhhdmlvciIsICZlZGl0aW5nQmVoYXZpb3IsCiAgICAgICAg
ICAgICAgICAgICJlbmFibGUtdW5pdmVyc2FsLWFjY2Vzcy1mcm9tLWZpbGUtdXJpcyIsICZlbmFi
bGVVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSSSwKKyAgICAgICAgICAgICAgICAgImVuYWJsZS1m
aWxlLWFjY2Vzcy1mcm9tLWZpbGUtdXJpcyIsICZlbmFibGVGaWxlQWNjZXNzRnJvbUZpbGVVUkks
CiAgICAgICAgICAgICAgICAgICJlbmFibGUtZG9tLXBhc3RlIiwgJmVuYWJsZURPTVBhc3RlLAog
ICAgICAgICAgICAgICAgICAidGFiLWtleS1jeWNsZXMtdGhyb3VnaC1lbGVtZW50cyIsICZ0YWJL
ZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMsCiAgICAgICAgICAgICAgICAgICJlbmFibGUtc2l0ZS1z
cGVjaWZpYy1xdWlya3MiLCAmZW5hYmxlU2l0ZVNwZWNpZmljUXVpcmtzLApAQCAtMjYxMCw2ICsy
NjEyLDcgQEAKICAgICBzZXR0aW5ncy0+c2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFi
bGVkKGVuYWJsZU9mZmxpbmVXZWJBcHBDYWNoZSk7CiAgICAgc2V0dGluZ3MtPnNldEVkaXRpbmdC
ZWhhdmlvcihjb3JlKGVkaXRpbmdCZWhhdmlvcikpOwogICAgIHNldHRpbmdzLT5zZXRBbGxvd1Vu
aXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyhlbmFibGVVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVS
SSk7CisgICAgc2V0dGluZ3MtPnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhlbmFibGVG
aWxlQWNjZXNzRnJvbUZpbGVVUkkpOwogICAgIHNldHRpbmdzLT5zZXRET01QYXN0ZUFsbG93ZWQo
ZW5hYmxlRE9NUGFzdGUpOwogICAgIHNldHRpbmdzLT5zZXROZWVkc1NpdGVTcGVjaWZpY1F1aXJr
cyhlbmFibGVTaXRlU3BlY2lmaWNRdWlya3MpOwogICAgIHNldHRpbmdzLT5zZXRVc2VzUGFnZUNh
Y2hlKHVzZVBhZ2VDYWNoZSk7CkBAIC0yNzAzLDYgKzI3MDYsOCBAQAogICAgICAgICBzZXR0aW5n
cy0+c2V0RWRpdGluZ0JlaGF2aW9yKGNvcmUoc3RhdGljX2Nhc3Q8V2ViS2l0RWRpdGluZ0JlaGF2
aW9yPihnX3ZhbHVlX2dldF9lbnVtKCZ2YWx1ZSkpKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBn
X2ludGVybl9zdHJpbmcoImVuYWJsZS11bml2ZXJzYWwtYWNjZXNzLWZyb20tZmlsZS11cmlzIikp
CiAgICAgICAgIHNldHRpbmdzLT5zZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyhn
X3ZhbHVlX2dldF9ib29sZWFuKCZ2YWx1ZSkpOworICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19pbnRl
cm5fc3RyaW5nKCJlbmFibGUtZmlsZS1hY2Nlc3MtZnJvbS1maWxlLXVyaXMiKSkKKyAgICAgICAg
c2V0dGluZ3MtPnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhnX3ZhbHVlX2dldF9ib29s
ZWFuKCZ2YWx1ZSkpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19pbnRlcm5fc3RyaW5nKCJlbmFi
bGUtZG9tLXBhc3RlIikpCiAgICAgICAgIHNldHRpbmdzLT5zZXRET01QYXN0ZUFsbG93ZWQoZ192
YWx1ZV9nZXRfYm9vbGVhbigmdmFsdWUpKTsKICAgICBlbHNlIGlmIChuYW1lID09IGdfaW50ZXJu
X3N0cmluZygidGFiLWtleS1jeWNsZXMtdGhyb3VnaC1lbGVtZW50cyIpKSB7CkluZGV4OiBXZWJL
aXQvd2luL1dlYlByZWZlcmVuY2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJQcmVm
ZXJlbmNlcy5oCShyZXZpc2lvbiA1NDUzMCkKKysrIFdlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMzYyLDYgKzM2MiwxMiBAQAogICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcygK
ICAgICAvKiBbaW5dICovIEJPT0wgYWxsb3dBY2Nlc3MpOwogCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcygKKyAgICAvKiBb
cmV0dmFsXVtvdXRdICovIEJPT0wqIGFsbG93QWNjZXNzKTsKKworICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoCisgICAg
LyogW2luXSAqLyBCT09MIGFsbG93QWNjZXNzKTsKKwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBpc1hTU0F1ZGl0b3JFbmFibGVkKAogICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gQk9PTCogZW5hYmxlZCk7CiAKSW5kZXg6IFdlYktpdC93aW4vV2ViUHJlZmVyZW5jZUtleXNQ
cml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlS2V5c1ByaXZh
dGUuaAkocmV2aXNpb24gNTQ1MzApCisrKyBXZWJLaXQvd2luL1dlYlByZWZlcmVuY2VLZXlzUHJp
dmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBACiAjZGVmaW5lIFdlYktpdEph
dmFTY3JpcHRFbmFibGVkUHJlZmVyZW5jZUtleSAiV2ViS2l0SmF2YVNjcmlwdEVuYWJsZWQiCiAj
ZGVmaW5lIFdlYktpdFdlYlNlY3VyaXR5RW5hYmxlZFByZWZlcmVuY2VLZXkgIldlYktpdFdlYlNl
Y3VyaXR5RW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmls
ZVVSTHNQcmVmZXJlbmNlS2V5ICJXZWJLaXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJM
cyIKKyNkZWZpbmUgV2ViS2l0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzUHJlZmVyZW5jZUtl
eSAiV2ViS2l0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzIgogI2RlZmluZSBXZWJLaXRKYXZh
U2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5UHJlZmVyZW5jZUtleSAiV2ViS2l0SmF2
YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseSIKICNkZWZpbmUgV2ViS2l0UGx1Z2lu
c0VuYWJsZWRQcmVmZXJlbmNlS2V5ICJXZWJLaXRQbHVnaW5zRW5hYmxlZCIKICNkZWZpbmUgV2Vi
S2l0RGF0YWJhc2VzRW5hYmxlZFByZWZlcmVuY2VLZXkgIldlYktpdERhdGFiYXNlc0VuYWJsZWQi
CkluZGV4OiBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4v
V2ViVmlldy5jcHAJKHJldmlzaW9uIDU0NTMwKQorKysgV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDYyMiw2ICs0NjIyLDExIEBACiAgICAgICAgIHJldHVybiBocjsK
ICAgICBzZXR0aW5ncy0+c2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoISFlbmFi
bGVkKTsKIAorICAgIGhyID0gcHJlZnNQcml2YXRlLT5hbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVS
THMoJmVuYWJsZWQpOworICAgIGlmIChGQUlMRUQoaHIpKQorICAgICAgICByZXR1cm4gaHI7Cisg
ICAgc2V0dGluZ3MtPnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyghIWVuYWJsZWQpOwor
CiAgICAgaHIgPSBwcmVmc1ByaXZhdGUtPmlzWFNTQXVkaXRvckVuYWJsZWQoJmVuYWJsZWQpOwog
ICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICByZXR1cm4gaHI7CkluZGV4OiBXZWJLaXQvd2lu
L1dlYlByZWZlcmVuY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlByZWZlcmVu
Y2VzLmNwcAkocmV2aXNpb24gNTQ1MzApCisrKyBXZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjA2LDYgKzIwNiw3IEBACiAgICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEphdmFTY3JpcHRFbmFibGVkUHJlZmVyZW5jZUtl
eSksIGtDRkJvb2xlYW5UcnVlKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywg
Q0ZTVFIoV2ViS2l0V2ViU2VjdXJpdHlFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5U
cnVlKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0QWxs
b3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZh
bHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0QWxs
b3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsK
ICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0WFNTQXVkaXRv
ckVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwogICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NB
dXRvbWF0aWNhbGx5UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKICAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UGx1Z2luc0VuYWJsZWRQcmVmZXJl
bmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwpAQCAtNzkyLDYgKzc5MywyMCBAQAogICAgIHJldHVy
biBTX09LOwogfQogCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjph
bGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoCisgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09M
KiBhbGxvd0FjY2VzcykKK3sKKyAgICAqYWxsb3dBY2Nlc3MgPSBib29sVmFsdWVGb3JLZXkoQ0ZT
VFIoV2ViS2l0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzUHJlZmVyZW5jZUtleSkpOworICAg
IHJldHVybiBTX09LOworfQorCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVu
Y2VzOjpzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoCisgICAgLyogW2luXSAqLyBCT09M
IGFsbG93QWNjZXNzKQoreworICAgIHNldEJvb2xWYWx1ZShDRlNUUihXZWJLaXRBbGxvd0ZpbGVB
Y2Nlc3NGcm9tRmlsZVVSTHNQcmVmZXJlbmNlS2V5KSwgYWxsb3dBY2Nlc3MpOworICAgIHJldHVy
biBTX09LOworfQorCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpp
c1hTU0F1ZGl0b3JFbmFibGVkKAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogZW5hYmxl
ZCkKIHsKSW5kZXg6IFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXNQcml2YXRl
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlByZWZlcmVuY2Vz
UHJpdmF0ZS5pZGwJKHJldmlzaW9uIDU0NTMwKQorKysgV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lX
ZWJQcmVmZXJlbmNlc1ByaXZhdGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3Niw5IEBA
CiAgICAgSFJFU1VMVCBhbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyhbb3V0LCByZXR2
YWxdIEJPT0wgKmFsbG93QWNjZXNzKTsKICAgICBIUkVTVUxUIHNldEFsbG93VW5pdmVyc2FsQWNj
ZXNzRnJvbUZpbGVVUkxzKFtpbl0gQk9PTCBhbGxvd0FjY2Vzcyk7CiAKKyAgICBIUkVTVUxUIGFs
bG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhbb3V0LCByZXR2YWxdIEJPT0wgKmFsbG93QWNjZXNz
KTsKKyAgICBIUkVTVUxUIHNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhbaW5dIEJPT0wg
YWxsb3dBY2Nlc3MpOworCiAgICAgSFJFU1VMVCBpc1hTU0F1ZGl0b3JFbmFibGVkKFtvdXQsIHJl
dHZhbF0gQk9PTCAqZW5hYmxlZCk7CiAgICAgSFJFU1VMVCBzZXRYU1NBdWRpdG9yRW5hYmxlZChb
aW5dIEJPT0wgZW5hYmxlZCk7CiAKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJl
bmNlc1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVy
ZW5jZXNQcml2YXRlLmgJKHJldmlzaW9uIDU0NTMwKQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlByZWZlcmVuY2VzUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDkgQEAK
IC0gKEJPT0wpYWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHM7CiAtICh2b2lkKXNldEFs
bG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzOihCT09MKWZsYWc7CiAKKy0gKEJPT0wpYWxs
b3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzOworLSAodm9pZClzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9t
RmlsZVVSTHM6KEJPT0wpZmxhZzsKKwogLSAoQk9PTCl6b29tc1RleHRPbmx5OwogLSAodm9pZClz
ZXRab29tc1RleHRPbmx5OihCT09MKXpvb21zVGV4dE9ubHk7CiAKSW5kZXg6IFdlYktpdC9tYWMv
V2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
bWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgJKHJldmlzaW9uIDU0NTMwKQor
KysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MSw2ICs1MSw3IEBACiAjZGVmaW5lIFdlYktpdEphdmFTY3JpcHRFbmFibGVk
UHJlZmVyZW5jZUtleSBAIldlYktpdEphdmFTY3JpcHRFbmFibGVkIgogI2RlZmluZSBXZWJLaXRX
ZWJTZWN1cml0eUVuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0V2ViU2VjdXJpdHlFbmFibGVk
IgogI2RlZmluZSBXZWJLaXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMc1ByZWZlcmVu
Y2VLZXkgQCJXZWJLaXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyIKKyNkZWZpbmUg
V2ViS2l0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzUHJlZmVyZW5jZUtleSBAIldlYktpdEFs
bG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyIKICNkZWZpbmUgV2ViS2l0SmF2YVNjcmlwdENhbk9w
ZW5XaW5kb3dzQXV0b21hdGljYWxseVByZWZlcmVuY2VLZXkgQCJXZWJLaXRKYXZhU2NyaXB0Q2Fu
T3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5IgogI2RlZmluZSBXZWJLaXRQbHVnaW5zRW5hYmxlZFBy
ZWZlcmVuY2VLZXkgQCJXZWJLaXRQbHVnaW5zRW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0RGF0YWJh
c2VzRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXREYXRhYmFzZXNFbmFibGVkUHJlZmVyZW5j
ZUtleSIKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiA1NDUzMCkKKysrIFdlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjg2LDYgKzEyODYs
NyBAQAogICAgIHNldHRpbmdzLT5zZXRKYXZhU2NyaXB0RW5hYmxlZChbcHJlZmVyZW5jZXMgaXNK
YXZhU2NyaXB0RW5hYmxlZF0pOwogICAgIHNldHRpbmdzLT5zZXRXZWJTZWN1cml0eUVuYWJsZWQo
W3ByZWZlcmVuY2VzIGlzV2ViU2VjdXJpdHlFbmFibGVkXSk7CiAgICAgc2V0dGluZ3MtPnNldEFs
bG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKFtwcmVmZXJlbmNlcyBhbGxvd1VuaXZlcnNh
bEFjY2Vzc0Zyb21GaWxlVVJMc10pOworICAgIHNldHRpbmdzLT5zZXRBbGxvd0ZpbGVBY2Nlc3NG
cm9tRmlsZVVSTHMoW3ByZWZlcmVuY2VzIGFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMc10pOwog
ICAgIHNldHRpbmdzLT5zZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KFtw
cmVmZXJlbmNlcyBqYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5XSk7CiAgICAg
c2V0dGluZ3MtPnNldE1pbmltdW1Gb250U2l6ZShbcHJlZmVyZW5jZXMgbWluaW11bUZvbnRTaXpl
XSk7CiAgICAgc2V0dGluZ3MtPnNldE1pbmltdW1Mb2dpY2FsRm9udFNpemUoW3ByZWZlcmVuY2Vz
IG1pbmltdW1Mb2dpY2FsRm9udFNpemVdKTsKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJQ
cmVmZXJlbmNlcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVy
ZW5jZXMubW0JKHJldmlzaW9uIDU0NTMwKQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZl
cmVuY2VzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMTYsNiArMzE2LDcgQEAKICAgICAgICAgW05T
TnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sICBXZWJLaXRKYXZhU2NyaXB0RW5hYmxlZFByZWZl
cmVuY2VLZXksCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdLCAgV2ViS2l0
V2ViU2VjdXJpdHlFbmFibGVkUHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJl
cldpdGhCb29sOllFU10sICBXZWJLaXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMc1By
ZWZlcmVuY2VLZXksCisgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdLCAgV2Vi
S2l0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzUHJlZmVyZW5jZUtleSwKICAgICAgICAgW05T
TnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sICBXZWJLaXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRv
d3NBdXRvbWF0aWNhbGx5UHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldp
dGhCb29sOllFU10sICBXZWJLaXRQbHVnaW5zRW5hYmxlZFByZWZlcmVuY2VLZXksCiAgICAgICAg
IFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdLCAgV2ViS2l0RGF0YWJhc2VzRW5hYmxlZFBy
ZWZlcmVuY2VLZXksCkBAIC05MTksNiArOTIwLDE2IEBACiAgICAgW3NlbGYgX3NldEJvb2xWYWx1
ZTogZmxhZyBmb3JLZXk6IFdlYktpdEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzUHJl
ZmVyZW5jZUtleV07CiB9CiAKKy0gKEJPT0wpYWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzCit7
CisgICAgcmV0dXJuIFtzZWxmIF9ib29sVmFsdWVGb3JLZXk6IFdlYktpdEFsbG93RmlsZUFjY2Vz
c0Zyb21GaWxlVVJMc1ByZWZlcmVuY2VLZXldOworfQorCistICh2b2lkKXNldEFsbG93RmlsZUFj
Y2Vzc0Zyb21GaWxlVVJMczooQk9PTClmbGFnCit7CisgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTog
ZmxhZyBmb3JLZXk6IFdlYktpdEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMc1ByZWZlcmVuY2VL
ZXldOworfQorCiAtIChOU1RpbWVJbnRlcnZhbClfYmFja0ZvcndhcmRDYWNoZUV4cGlyYXRpb25J
bnRlcnZhbAogewogICAgIC8vIEZJWE1FOiBUaGVyZSdzIHByb2JhYmx5IG5vIGdvb2QgcmVhc29u
IHRvIHJlYWQgZnJvbSB0aGUgc3RhbmRhcmQgdXNlciBkZWZhdWx0cyBpbnN0ZWFkIG9mIHNlbGYu
CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxl
clF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlv
dXRUZXN0Q29udHJvbGxlclF0LmNwcAkocmV2aXNpb24gNTQ1MzApCisrKyBXZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjk4LDYgKzI5OCwxMSBAQAogICAgIG1fZHJ0LT53ZWJQYWdlKCktPnNldHRpbmdzKCkt
PnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OkxvY2FsQ29udGVudENhbkFjY2Vzc1JlbW90ZVVy
bHMsIGVuYWJsZWQpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd0Zp
bGVBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCBlbmFibGVkKQoreworICAgIG1fZHJ0LT53ZWJQYWdl
KCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OkxvY2FsQ29udGVudENh
bkFjY2Vzc0ZpbGVVcmxzLCBlbmFibGVkKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoYm9vbCBlbmFibGUpCiB7CiAgICAgbV90
b3BMb2FkaW5nRnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0
aW5nczo6RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCwgdHJ1ZSk7CkluZGV4OiBXZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCShy
ZXZpc2lvbiA1NDUzMCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRl
c3RDb250cm9sbGVyUXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDYgKzExOCw3IEBACiAKICAg
ICB2b2lkIHNldEZyYW1lU2V0RmxhdHRlbmluZ0VuYWJsZWQoYm9vbCBlbmFibGUpOwogICAgIHZv
aWQgc2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCBlbmFibGUpOworICAg
IHZvaWQgc2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wgZW5hYmxlKTsKICAgICB2
b2lkIHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKGJvb2wgZW5hYmxlKTsKICAgICB2b2lk
IHNldEZpeGVkQ29udGVudHNTaXplKGludCB3aWR0aCwgaW50IGhlaWdodCk7CiAgICAgdm9pZCBz
ZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wgZW5hYmxlKTsKSW5kZXg6IFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVy
R3RrLmNwcAkocmV2aXNpb24gNTQ1MzApCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9n
dGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzcsNiAr
MzM3LDE1IEBACiAgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS11
bml2ZXJzYWwtYWNjZXNzLWZyb20tZmlsZS11cmlzIiwgZmxhZywgTlVMTCk7CiB9CiAKK3ZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhib29s
IGZsYWcpCit7CisgICAgV2ViS2l0V2ViVmlldyogdmlldyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0
X3dlYl92aWV3KG1haW5GcmFtZSk7CisgICAgQVNTRVJUKHZpZXcpOworCisgICAgV2ViS2l0V2Vi
U2V0dGluZ3MqIHNldHRpbmdzID0gd2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh2aWV3KTsK
KyAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLWZpbGUtYWNjZXNz
LWZyb20tZmlsZS11cmlzIiwgZmxhZywgTlVMTCk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKGJvb2wgZmxhZykKIHsKICAgICAv
LyBGSVhNRTogaW1wbGVtZW50CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9M
YXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAkocmV2aXNpb24gNTQ1MzAp
CisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc1LDYgKzE3NSwxMSBAQAogICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dGaWxlQWNj
ZXNzRnJvbUZpbGVVUkxzKGJvb2wgZW5hYmxlZCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50
Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNF
bmFibGVkKGJvb2wgZmxhZykKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CkluZGV4OiBXZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCShyZXZp
c2lvbiA1NDUzMCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVy
VHJlZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzk2LDYgKzM5Niw3IEBACiAgICAgV2ViUHJlZmVy
ZW5jZXMgKnByZWZlcmVuY2VzID0gW1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNd
OwogCiAgICAgW3ByZWZlcmVuY2VzIHNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxz
OllFU107CisgICAgW3ByZWZlcmVuY2VzIHNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMczpZ
RVNdOwogICAgIFtwcmVmZXJlbmNlcyBzZXRTdGFuZGFyZEZvbnRGYW1pbHk6QCJUaW1lcyJdOwog
ICAgIFtwcmVmZXJlbmNlcyBzZXRGaXhlZEZvbnRGYW1pbHk6QCJDb3VyaWVyIl07CiAgICAgW3By
ZWZlcmVuY2VzIHNldFNlcmlmRm9udEZhbWlseTpAIlRpbWVzIl07CkluZGV4OiBXZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVy
TWFjLm1tCShyZXZpc2lvbiA1NDUzMCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzI0LDYgKzMy
NCwxMSBAQAogICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gc2V0QWxsb3dV
bml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHM6ZW5hYmxlZF07CiB9CiAKK3ZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhib29sIGVuYWJsZWQp
Cit7CisgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2VzXSBzZXRBbGxvd0ZpbGVB
Y2Nlc3NGcm9tRmlsZVVSTHM6ZW5hYmxlZF07Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKGJvb2wgcG9wdXBCbG9ja2luZ0VuYWJsZWQpCiB7
CiAgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2VzXSBzZXRKYXZhU2NyaXB0Q2Fu
T3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5OiFwb3B1cEJsb2NraW5nRW5hYmxlZF07CkluZGV4OiBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
Y3BwCShyZXZpc2lvbiA1NDUzMCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTA5LDYgKzkwOSwxOCBAQAog
ICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpT
VmFsdWVSZWYgc2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzQ2FsbGJhY2soSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0
LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIC8vIEhhcyBtYWMgJiB3aW5kb3dzIGltcGxlbWVu
dGF0aW9uCisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1
ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29u
dHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQ
cml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXRBbGxvd0ZpbGVBY2Nlc3NG
cm9tRmlsZVVSTHMoSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMF0pKTsKKwor
ICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwogc3RhdGljIEpT
VmFsdWVSZWYgc2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzQ2FsbGJhY2soSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0
LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBtYWMgJiB3aW5kb3dzIGltcGxlbWVu
dGF0aW9uCkBAIC0xMzQ4LDYgKzEzNjAsNyBAQAogICAgICAgICB7ICJyZXBhaW50U3dlZXBIb3Jp
em9udGFsbHkiLCByZXBhaW50U3dlZXBIb3Jpem9udGFsbHlDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
ICAgICB7ICJzZXRBY2NlcHRzRWRpdGluZyIsIHNldEFjY2VwdHNFZGl0aW5nQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKICAgICAgICAgeyAic2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMiLCBz
ZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAg
ICAgIHsgInNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyIsIHNldEFsbG93RmlsZUFjY2Vz
c0Zyb21GaWxlVVJMc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEFsd2F5c0FjY2Vw
dENvb2tpZXMiLCBzZXRBbHdheXNBY2NlcHRDb29raWVzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAg
ICAgeyAic2V0QXBwQ2FjaGVNYXhpbXVtU2l6ZSIsIHNldEFwcENhY2hlTWF4aW11bVNpemVDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LCAKICAgICAgICAgeyAic2V0QXV0aGVudGljYXRpb25QYXNzd29yZCIsIHNl
dEF1dGhlbnRpY2F0aW9uUGFzc3dvcmRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApJbmRleDogV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xs
ZXJXaW4uY3BwCShyZXZpc2lvbiA1NDUzMCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4OSw2
ICszODksMjMgQEAKICAgICBwcmVmc1ByaXZhdGUtPnNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJv
bUZpbGVVUkxzKGVuYWJsZWQpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRB
bGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCBlbmFibGVkKQoreworICAgIENPTVB0cjxJ
V2ViVmlldz4gd2ViVmlldzsKKyAgICBpZiAoRkFJTEVEKGZyYW1lLT53ZWJWaWV3KCZ3ZWJWaWV3
KSkpCisgICAgICAgIHJldHVybjsKKworICAgIENPTVB0cjxJV2ViUHJlZmVyZW5jZXM+IHByZWZl
cmVuY2VzOworICAgIGlmIChGQUlMRUQod2ViVmlldy0+cHJlZmVyZW5jZXMoJnByZWZlcmVuY2Vz
KSkpCisgICAgICAgIHJldHVybjsKKworICAgIENPTVB0cjxJV2ViUHJlZmVyZW5jZXNQcml2YXRl
PiBwcmVmc1ByaXZhdGUoUXVlcnksIHByZWZlcmVuY2VzKTsKKyAgICBpZiAoIXByZWZzUHJpdmF0
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJlZnNQcml2YXRlLT5zZXRBbGxvd0ZpbGVBY2Nl
c3NGcm9tRmlsZVVSTHMoZW5hYmxlZCk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICAgICBDT01QdHI8SVdl
YlZpZXc+IHdlYlZpZXc7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVt
cFJlbmRlclRyZWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAJKHJldmlzaW9uIDU0NTMwKQorKysgV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Nzg3LDYgKzc4Nyw3IEBACiAgICAgQ09NUHRyPElXZWJQcmVmZXJlbmNlc1ByaXZhdGU+IHByZWZz
UHJpdmF0ZShRdWVyeSwgcHJlZmVyZW5jZXMpOwogICAgIGlmIChwcmVmc1ByaXZhdGUpIHsKICAg
ICAgICAgcHJlZnNQcml2YXRlLT5zZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyhU
UlVFKTsKKyAgICAgICAgcHJlZnNQcml2YXRlLT5zZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVS
THMoVFJVRSk7CiAgICAgICAgIHByZWZzUHJpdmF0ZS0+c2V0QXV0aG9yQW5kVXNlclN0eWxlc0Vu
YWJsZWQoVFJVRSk7CiAgICAgICAgIHByZWZzUHJpdmF0ZS0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5h
YmxlZChGQUxTRSk7CiAgICAgICAgIHByZWZzUHJpdmF0ZS0+c2V0RXhwZXJpbWVudGFsTm90aWZp
Y2F0aW9uc0VuYWJsZWQoVFJVRSk7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDU0NTMwKQorKysgV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNjgsNiArNjgsNyBAQAogICAgIHZvaWQgcmVtb3ZlQWxsVmlzaXRlZExpbmtzKCk7CiAg
ICAgdm9pZCBzZXRBY2NlcHRzRWRpdGluZyhib29sIGFjY2VwdHNFZGl0aW5nKTsKICAgICB2b2lk
IHNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wpOworICAgIHZvaWQgc2V0
QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wpOwogICAgIHZvaWQgc2V0QXBwQ2FjaGVN
YXhpbXVtU2l6ZSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpOwogICAgIHZvaWQgc2V0QXV0aG9y
QW5kVXNlclN0eWxlc0VuYWJsZWQoYm9vbCk7CiAgICAgdm9pZCBzZXRDYWNoZU1vZGVsKGludCk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48459</attachid>
            <date>2010-02-09 20:24:53 -0800</date>
            <delta_ts>2010-02-10 20:24:25 -0800</delta_ts>
            <desc>Updated so new methods are at bottom of IDL file</desc>
            <filename>file.diff</filename>
            <type>text/plain</type>
            <size>28003</size>
            <attacher name="Chris Evans">scarybeasts</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDU0NTMwKQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDE4LDYgKzQ0MTgsMTAgQEAKICAgICAgICAgICAvLyBT
b21lIGNsaWVudHMgd2FudCBmaWxlOi8vIFVSTHMgdG8gaGF2ZSB1bml2ZXJzYWwgYWNjZXNzLCBi
dXQgdGhhdAogICAgICAgICAgIC8vIHNldHRpbmcgaXMgZGFuZ2Vyb3VzIGZvciBvdGhlciBjbGll
bnRzLgogICAgICAgICAgIHNlY3VyaXR5T3JpZ2luKCktPmdyYW50VW5pdmVyc2FsQWNjZXNzKCk7
CisgICAgICAgIH0gZWxzZSBpZiAoIXNldHRpbmdzLT5hbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVS
THMoKSAmJiBzZWN1cml0eU9yaWdpbigpLT5pc0xvY2FsKCkpIHsKKyAgICAgICAgICAvLyBTb21l
IGNsaWVudHMgd2FudCBmaWxlOi8vIFVSTHMgdG8gaGF2ZSBldmVuIHRpZ2h0ZXIgcmVzdHJpY3Rp
b25zIGJ5CisgICAgICAgICAgLy8gZGVmYXVsdCwgYW5kIG5vdCBiZSBhYmxlIHRvIGFjY2VzcyBv
dGhlciBsb2NhbCBmaWxlcy4KKyAgICAgICAgICBzZWN1cml0eU9yaWdpbigpLT5tYWtlVW5pcXVl
KCk7CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NDUzMCkKKysrIFdlYkNvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMDktMDItMDkgIENocmlz
IEV2YW5zICA8Y2V2YW5zQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgc2V0dGluZyB3aGljaCBnaXZlcyB0aGUg
b3B0aW9uIG9mIGFzc2lnbmluZyBldmVyeSBmaWxlOi8vLworICAgICAgICB0byBpdHMgb3duIHVu
aXF1ZSBkb21haW4uCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM0Nzc4CisKKyAgICAgICAgVGVzdDogUGVuZGluZyBpbiBmb3J0aGNvbWluZyBzZXBh
cmF0ZSBjaGFuZ2UgZHVlIHRvIG5vbi10cml2aWFsCisgICAgICAgIGRlcGVuZGVuY2llcy4KKwor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
aW5pdFNlY3VyaXR5Q29udGV4dCk6IFBsYWNlIGZpbGU6Ly8vIFVSSSBkb2N1bWVudHMKKyAgICAg
ICAgaW50byB0aGVpciBvd24gdW5pcXVlIGRvbWFpbnMgaWYgdGhlIG5ldyBzZXR0aW5nIHJlcXVp
cmVzIGl0LgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKiBwYWdlL1NldHRp
bmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRBbGxvd0ZpbGVBY2Nlc3NG
cm9tRmlsZVVSTHMpOiBTaW1wbGUgc2V0dGVyLgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmln
aW4uaDoKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luOjptYWtlVW5pcXVlKTogQWRkIHNpbXBsZSBhYmlsaXR5IHRvIGZv
cmNlIGFuCisgICAgICAgIG9yaWdpbiB0byBiZSBjb25zaWRlcmVkIHVuaXF1ZS4KKwogMjAxMC0w
Mi0wOCAgRG9taW5pYyBDb29uZXkgIDxkb21pbmljY0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAkocmV2aXNpb24gNTQ1MzApCisrKyBX
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDYgKzExMiw5IEBA
CiAgICAgICAgIHZvaWQgc2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCk7
CiAgICAgICAgIGJvb2wgYWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoKSBjb25zdCB7
IHJldHVybiBtX2FsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzOyB9CiAKKyAgICAgICAg
dm9pZCBzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCk7CisgICAgICAgIGJvb2wg
YWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd0ZpbGVB
Y2Nlc3NGcm9tRmlsZVVSTHM7IH0KKwogICAgICAgICB2b2lkIHNldEphdmFTY3JpcHRDYW5PcGVu
V2luZG93c0F1dG9tYXRpY2FsbHkoYm9vbCk7CiAgICAgICAgIGJvb2wgamF2YVNjcmlwdENhbk9w
ZW5XaW5kb3dzQXV0b21hdGljYWxseSgpIGNvbnN0IHsgcmV0dXJuIG1famF2YVNjcmlwdENhbk9w
ZW5XaW5kb3dzQXV0b21hdGljYWxseTsgfQogCkBAIC0zMjAsNiArMzIzLDcgQEAKICAgICAgICAg
Ym9vbCBtX2lzSmF2YVNjcmlwdEVuYWJsZWQgOiAxOwogICAgICAgICBib29sIG1faXNXZWJTZWN1
cml0eUVuYWJsZWQgOiAxOwogICAgICAgICBib29sIG1fYWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9t
RmlsZVVSTHM6IDE7CisgICAgICAgIGJvb2wgbV9hbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHM6
IDE7CiAgICAgICAgIGJvb2wgbV9qYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5
IDogMTsKICAgICAgICAgYm9vbCBtX3Nob3VsZFByaW50QmFja2dyb3VuZHMgOiAxOwogICAgICAg
ICBib29sIG1fdGV4dEFyZWFzQXJlUmVzaXphYmxlIDogMTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luLmNwcAkocmV2aXNpb24gNTQ1MzApCisrKyBXZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODYsNiArMjg2LDExIEBACiAgICAgbV91bml2ZXJzYWxB
Y2Nlc3MgPSB0cnVlOwogfQogCit2b2lkIFNlY3VyaXR5T3JpZ2luOjptYWtlVW5pcXVlKCkKK3sK
KyAgICBtX2lzVW5pcXVlID0gdHJ1ZTsKK30KKwogdm9pZCBTZWN1cml0eU9yaWdpbjo6c2V0U2Fu
ZGJveEZsYWdzKFNhbmRib3hGbGFncyBmbGFncykKIHsKICAgICAvLyBBbHRob3VnaCB5b3UgbWln
aHQgdGhpbmsgdGhhdCB3ZSBzaG91bGQgc2V0IG1faXNVbmlxdWUgYmFzZWQgb24KSW5kZXg6IFdl
YkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1NldHRp
bmdzLmNwcAkocmV2aXNpb24gNTQ1MzApCisrKyBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3NSw3IEBACiAgICAgLCBtX2lzSmF2YVNjcmlwdEVuYWJs
ZWQoZmFsc2UpCiAgICAgLCBtX2lzV2ViU2VjdXJpdHlFbmFibGVkKHRydWUpCiAgICAgLCBtX2Fs
bG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKHRydWUpCisgICAgLCBtX2FsbG93RmlsZUFj
Y2Vzc0Zyb21GaWxlVVJMcyh0cnVlKQogICAgICwgbV9qYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NB
dXRvbWF0aWNhbGx5KGZhbHNlKQogICAgICwgbV9zaG91bGRQcmludEJhY2tncm91bmRzKGZhbHNl
KQogICAgICwgbV90ZXh0QXJlYXNBcmVSZXNpemFibGUoZmFsc2UpCkBAIC0yNDAsNiArMjQxLDEx
IEBACiAgICAgbV9hbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyA9IGFsbG93VW5pdmVy
c2FsQWNjZXNzRnJvbUZpbGVVUkxzOwogfQogCit2b2lkIFNldHRpbmdzOjpzZXRBbGxvd0ZpbGVB
Y2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCBhbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMpCit7Cisg
ICAgbV9hbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMgPSBhbGxvd0ZpbGVBY2Nlc3NGcm9tRmls
ZVVSTHM7Cit9CisKIHZvaWQgU2V0dGluZ3M6OnNldEphdmFFbmFibGVkKGJvb2wgaXNKYXZhRW5h
YmxlZCkKIHsKICAgICBtX2lzSmF2YUVuYWJsZWQgPSBpc0phdmFFbmFibGVkOwpJbmRleDogV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luLmgJKHJldmlzaW9uIDU0NTMwKQorKysgV2ViQ29yZS9wYWdlL1NlY3VyaXR5
T3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw2ICsxMzksOSBAQAogICAgIC8vIGFkZGl0
aW9uLCB0aGUgU2FuZGJveE9yaWdpbiBmbGFnIGlzIGluaGVyaXRlZCBieSBpZnJhbWVzLgogICAg
IGJvb2wgaXNVbmlxdWUoKSBjb25zdCB7IHJldHVybiBtX2lzVW5pcXVlOyB9CiAKKyAgICAvLyBN
YXJrcyBhbiBvcmlnaW4gYXMgYmVpbmcgdW5pcXVlLgorICAgIHZvaWQgbWFrZVVuaXF1ZSgpOwor
CiAgICAgLy8gQ29udmVydCB0aGlzIFNlY3VyaXR5T3JpZ2luIGludG8gYSBzdHJpbmcuIFRoZSBz
dHJpbmcKICAgICAvLyByZXByZXNlbnRhdGlvbiBvZiBhIFNlY3VyaXR5T3JpZ2luIGlzIHNpbWls
YXIgdG8gYSBVUkwsIGV4Y2VwdCBpdAogICAgIC8vIGxhY2tzIGEgcGF0aCBjb21wb25lbnQuIFRo
ZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gZG9lcyBub3QgZW5jb2RlCkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCShyZXZpc2lvbiA1NDUzMCkKKysrIFdlYktpdC9j
aHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM2LDYg
KzIzNiwxMSBAQAogICAgIG1fc2V0dGluZ3MtPnNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZp
bGVVUkxzKGFsbG93KTsKIH0KIAordm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldEFsbG93RmlsZUFj
Y2Vzc0Zyb21GaWxlVVJMcyhib29sIGFsbG93KQoreworICAgIG1fc2V0dGluZ3MtPnNldEFsbG93
RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhhbGxvdyk7Cit9CisKIHZvaWQgV2ViU2V0dGluZ3NJbXBs
OjpzZXRUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yTmV2ZXJJbmNsdWRlZCgp
CiB7CiAgICAgLy8gRklYTUU6IElmIHlvdSBldmVyIG5lZWQgbW9yZSBiZWhhdmlvcnMgdGhhbiB0
aGlzLCB0aGVuIHdlIHNob3VsZCBwcm9iYWJseQpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTZXR0aW5nc0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNl
dHRpbmdzSW1wbC5oCShyZXZpc2lvbiA1NDUzMCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U2V0dGluZ3NJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDYgKzgwLDcgQEAKICAgICB2aXJ0
dWFsIHZvaWQgc2V0U2hvdWxkUGFpbnRDdXN0b21TY3JvbGxiYXJzKGJvb2wpOwogICAgIHZpcnR1
YWwgdm9pZCBzZXREYXRhYmFzZXNFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRB
bGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyhib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yTmV2ZXJJbmNsdWRlZCgpOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoYm9v
bCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEV4cGVyaW1lbnRhbFdlYkdMRW5hYmxlZChib29sKTsK
SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgJKHJldmlzaW9uIDU0NTMwKQor
KysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBA
IC03OCw2ICs3OCw3IEBACiAgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZFBhaW50Q3VzdG9tU2Ny
b2xsYmFycyhib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldERhdGFiYXNlc0VuYWJsZWQo
Ym9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21G
aWxlVVJMcyhib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEFsbG93RmlsZUFjY2Vzc0Zy
b21GaWxlVVJMcyhib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFRleHREaXJlY3Rpb25T
dWJtZW51SW5jbHVzaW9uQmVoYXZpb3JOZXZlckluY2x1ZGVkKCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoYm9vbCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRFeHBlcmltZW50YWxXZWJHTEVuYWJsZWQoYm9vbCkgPSAwOwpJbmRl
eDogV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQv
QXBpL3F3ZWJzZXR0aW5ncy5oCShyZXZpc2lvbiA1NDUzMCkKKysrIFdlYktpdC9xdC9BcGkvcXdl
YnNldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDcgQEAKICAgICAgICAgTG9j
YWxTdG9yYWdlRGF0YWJhc2VFbmFibGVkID0gTG9jYWxTdG9yYWdlRW5hYmxlZCwKICNlbmRpZgog
ICAgICAgICBMb2NhbENvbnRlbnRDYW5BY2Nlc3NSZW1vdGVVcmxzLAorICAgICAgICBMb2NhbENv
bnRlbnRDYW5BY2Nlc3NGaWxlVXJscywKICAgICAgICAgRG5zUHJlZmV0Y2hFbmFibGVkLAogICAg
ICAgICBYU1NBdWRpdG9yRW5hYmxlZCwKICAgICAgICAgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Vu
YWJsZWQKSW5kZXg6IFdlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAJKHJldmlzaW9uIDU0NTMwKQorKysgV2Vi
S2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsNiArMjE1
LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbC0+YXR0
cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OkxvY2FsQ29udGVudENhbkFjY2Vzc1JlbW90ZVVy
bHMpKTsKICAgICAgICAgc2V0dGluZ3MtPnNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVV
UkxzKHZhbHVlKTsKIAorICAgICAgICB2YWx1ZSA9IGF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRp
bmdzOjpMb2NhbENvbnRlbnRDYW5BY2Nlc3NGaWxlVXJscywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2xvYmFsLT5hdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6
TG9jYWxDb250ZW50Q2FuQWNjZXNzRmlsZVVybHMpKTsKKyAgICAgICAgc2V0dGluZ3MtPnNldEFs
bG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyh2YWx1ZSk7CisKICAgICAgICAgdmFsdWUgPSBhdHRy
aWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6WFNTQXVkaXRvckVuYWJsZWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbC0+YXR0cmlidXRlcy52YWx1ZShRV2Vi
U2V0dGluZ3M6OlhTU0F1ZGl0b3JFbmFibGVkKSk7CiAgICAgICAgIHNldHRpbmdzLT5zZXRYU1NB
dWRpdG9yRW5hYmxlZCh2YWx1ZSk7CkBAIC0zNjMsNiArMzY3LDcgQEAKICAgICBcdmFsdWUgTG9j
YWxTdG9yYWdlRGF0YWJhc2VFbmFibGVkIFxle1RoaXMgZW51bSB2YWx1ZSBpcyBkZXByZWNhdGVk
Ln0gVXNlCiAgICAgICAgIFFXZWJTZXR0aW5nczo6TG9jYWxTdG9yYWdlRW5hYmxlZCBpbnN0ZWFk
LgogICAgIFx2YWx1ZSBMb2NhbENvbnRlbnRDYW5BY2Nlc3NSZW1vdGVVcmxzIFNwZWNpZmllcyB3
aGV0aGVyIGxvY2FsbHkgbG9hZGVkIGRvY3VtZW50cyBhcmUgYWxsb3dlZCB0byBhY2Nlc3MgcmVt
b3RlIHVybHMuCisgICAgXHZhbHVlIExvY2FsQ29udGVudENhbkFjY2Vzc0ZpbGVVcmxzIFNwZWNp
ZmllcyB3aGV0aGVyIGxvY2FsbHkgbG9hZGVkIGRvY3VtZW50cyBhcmUgYWxsb3dlZCB0byBhY2Nl
c3Mgb3RoZXIgbG9jYWwgIHVybHMuCiAgICAgXHZhbHVlIFhTU0F1ZGl0b3JFbmFibGVkIFNwZWNp
ZmllcyB3aGV0aGVyIGxvYWQgcmVxdWVzdHMgc2hvdWxkIGJlIG1vbml0b3JlZCBmb3IgY3Jvc3Mt
c2l0ZSBzY3JpcHRpbmcgYXR0ZW1wdHMuCiAqLwogCkBAIC0zOTQsNiArMzk5LDcgQEAKICAgICBk
LT5hdHRyaWJ1dGVzLmluc2VydChRV2ViU2V0dGluZ3M6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNh
Y2hlRW5hYmxlZCwgZmFsc2UpOwogICAgIGQtPmF0dHJpYnV0ZXMuaW5zZXJ0KFFXZWJTZXR0aW5n
czo6TG9jYWxTdG9yYWdlRW5hYmxlZCwgZmFsc2UpOwogICAgIGQtPmF0dHJpYnV0ZXMuaW5zZXJ0
KFFXZWJTZXR0aW5nczo6TG9jYWxDb250ZW50Q2FuQWNjZXNzUmVtb3RlVXJscywgZmFsc2UpOwor
ICAgIGQtPmF0dHJpYnV0ZXMuaW5zZXJ0KFFXZWJTZXR0aW5nczo6TG9jYWxDb250ZW50Q2FuQWNj
ZXNzRmlsZVVybHMsIHRydWUpOwogICAgIGQtPmF0dHJpYnV0ZXMuaW5zZXJ0KFFXZWJTZXR0aW5n
czo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQsIGZhbHNlKTsKICAgICBkLT5vZmZsaW5l
U3RvcmFnZURlZmF1bHRRdW90YSA9IDUgKiAxMDI0ICogMTAyNDsKICAgICBkLT5kZWZhdWx0VGV4
dEVuY29kaW5nID0gUUxhdGluMVN0cmluZygiaXNvLTg4NTktMSIpOwpJbmRleDogV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5jcHAJKHJldmlzaW9uIDU0NTMwKQorKysgV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1NTAsNyArMjU1MCw4IEBA
CiAgICAgICAgIGVuYWJsZVNjcmlwdHMsIGVuYWJsZVBsdWdpbnMsIGVuYWJsZURldmVsb3BlckV4
dHJhcywgcmVzaXphYmxlVGV4dEFyZWFzLAogICAgICAgICBlbmFibGVQcml2YXRlQnJvd3Npbmcs
IGVuYWJsZUNhcmV0QnJvd3NpbmcsIGVuYWJsZUhUTUw1RGF0YWJhc2UsIGVuYWJsZUhUTUw1TG9j
YWxTdG9yYWdlLAogICAgICAgICBlbmFibGVYU1NBdWRpdG9yLCBqYXZhc2NyaXB0Q2FuT3Blbldp
bmRvd3MsIGVuYWJsZU9mZmxpbmVXZWJBcHBDYWNoZSwKLSAgICAgICAgZW5hYmxlVW5pdmVyc2Fs
QWNjZXNzRnJvbUZpbGVVUkksIGVuYWJsZURPTVBhc3RlLCB0YWJLZXlDeWNsZXNUaHJvdWdoRWxl
bWVudHMsCisgICAgICAgIGVuYWJsZVVuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJJLCBlbmFibGVG
aWxlQWNjZXNzRnJvbUZpbGVVUkksCisgICAgICAgIGVuYWJsZURPTVBhc3RlLCB0YWJLZXlDeWNs
ZXNUaHJvdWdoRWxlbWVudHMsCiAgICAgICAgIGVuYWJsZVNpdGVTcGVjaWZpY1F1aXJrcywgdXNl
UGFnZUNhY2hlOwogCiAgICAgV2ViS2l0RWRpdGluZ0JlaGF2aW9yIGVkaXRpbmdCZWhhdmlvcjsK
QEAgLTI1ODAsNiArMjU4MSw3IEBACiAgICAgICAgICAgICAgICAgICJlbmFibGUtb2ZmbGluZS13
ZWItYXBwbGljYXRpb24tY2FjaGUiLCAmZW5hYmxlT2ZmbGluZVdlYkFwcENhY2hlLAogICAgICAg
ICAgICAgICAgICAiZWRpdGluZy1iZWhhdmlvciIsICZlZGl0aW5nQmVoYXZpb3IsCiAgICAgICAg
ICAgICAgICAgICJlbmFibGUtdW5pdmVyc2FsLWFjY2Vzcy1mcm9tLWZpbGUtdXJpcyIsICZlbmFi
bGVVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSSSwKKyAgICAgICAgICAgICAgICAgImVuYWJsZS1m
aWxlLWFjY2Vzcy1mcm9tLWZpbGUtdXJpcyIsICZlbmFibGVGaWxlQWNjZXNzRnJvbUZpbGVVUkks
CiAgICAgICAgICAgICAgICAgICJlbmFibGUtZG9tLXBhc3RlIiwgJmVuYWJsZURPTVBhc3RlLAog
ICAgICAgICAgICAgICAgICAidGFiLWtleS1jeWNsZXMtdGhyb3VnaC1lbGVtZW50cyIsICZ0YWJL
ZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMsCiAgICAgICAgICAgICAgICAgICJlbmFibGUtc2l0ZS1z
cGVjaWZpYy1xdWlya3MiLCAmZW5hYmxlU2l0ZVNwZWNpZmljUXVpcmtzLApAQCAtMjYxMCw2ICsy
NjEyLDcgQEAKICAgICBzZXR0aW5ncy0+c2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFi
bGVkKGVuYWJsZU9mZmxpbmVXZWJBcHBDYWNoZSk7CiAgICAgc2V0dGluZ3MtPnNldEVkaXRpbmdC
ZWhhdmlvcihjb3JlKGVkaXRpbmdCZWhhdmlvcikpOwogICAgIHNldHRpbmdzLT5zZXRBbGxvd1Vu
aXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyhlbmFibGVVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVS
SSk7CisgICAgc2V0dGluZ3MtPnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhlbmFibGVG
aWxlQWNjZXNzRnJvbUZpbGVVUkkpOwogICAgIHNldHRpbmdzLT5zZXRET01QYXN0ZUFsbG93ZWQo
ZW5hYmxlRE9NUGFzdGUpOwogICAgIHNldHRpbmdzLT5zZXROZWVkc1NpdGVTcGVjaWZpY1F1aXJr
cyhlbmFibGVTaXRlU3BlY2lmaWNRdWlya3MpOwogICAgIHNldHRpbmdzLT5zZXRVc2VzUGFnZUNh
Y2hlKHVzZVBhZ2VDYWNoZSk7CkBAIC0yNzAzLDYgKzI3MDYsOCBAQAogICAgICAgICBzZXR0aW5n
cy0+c2V0RWRpdGluZ0JlaGF2aW9yKGNvcmUoc3RhdGljX2Nhc3Q8V2ViS2l0RWRpdGluZ0JlaGF2
aW9yPihnX3ZhbHVlX2dldF9lbnVtKCZ2YWx1ZSkpKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBn
X2ludGVybl9zdHJpbmcoImVuYWJsZS11bml2ZXJzYWwtYWNjZXNzLWZyb20tZmlsZS11cmlzIikp
CiAgICAgICAgIHNldHRpbmdzLT5zZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyhn
X3ZhbHVlX2dldF9ib29sZWFuKCZ2YWx1ZSkpOworICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19pbnRl
cm5fc3RyaW5nKCJlbmFibGUtZmlsZS1hY2Nlc3MtZnJvbS1maWxlLXVyaXMiKSkKKyAgICAgICAg
c2V0dGluZ3MtPnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhnX3ZhbHVlX2dldF9ib29s
ZWFuKCZ2YWx1ZSkpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19pbnRlcm5fc3RyaW5nKCJlbmFi
bGUtZG9tLXBhc3RlIikpCiAgICAgICAgIHNldHRpbmdzLT5zZXRET01QYXN0ZUFsbG93ZWQoZ192
YWx1ZV9nZXRfYm9vbGVhbigmdmFsdWUpKTsKICAgICBlbHNlIGlmIChuYW1lID09IGdfaW50ZXJu
X3N0cmluZygidGFiLWtleS1jeWNsZXMtdGhyb3VnaC1lbGVtZW50cyIpKSB7CkluZGV4OiBXZWJL
aXQvd2luL1dlYlByZWZlcmVuY2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJQcmVm
ZXJlbmNlcy5oCShyZXZpc2lvbiA1NDUzMCkKKysrIFdlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMzYyLDYgKzM2MiwxMiBAQAogICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcygK
ICAgICAvKiBbaW5dICovIEJPT0wgYWxsb3dBY2Nlc3MpOwogCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcygKKyAgICAvKiBb
cmV0dmFsXVtvdXRdICovIEJPT0wqIGFsbG93QWNjZXNzKTsKKworICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoCisgICAg
LyogW2luXSAqLyBCT09MIGFsbG93QWNjZXNzKTsKKwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBpc1hTU0F1ZGl0b3JFbmFibGVkKAogICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gQk9PTCogZW5hYmxlZCk7CiAKSW5kZXg6IFdlYktpdC93aW4vV2ViUHJlZmVyZW5jZUtleXNQ
cml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlS2V5c1ByaXZh
dGUuaAkocmV2aXNpb24gNTQ1MzApCisrKyBXZWJLaXQvd2luL1dlYlByZWZlcmVuY2VLZXlzUHJp
dmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBACiAjZGVmaW5lIFdlYktpdEph
dmFTY3JpcHRFbmFibGVkUHJlZmVyZW5jZUtleSAiV2ViS2l0SmF2YVNjcmlwdEVuYWJsZWQiCiAj
ZGVmaW5lIFdlYktpdFdlYlNlY3VyaXR5RW5hYmxlZFByZWZlcmVuY2VLZXkgIldlYktpdFdlYlNl
Y3VyaXR5RW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmls
ZVVSTHNQcmVmZXJlbmNlS2V5ICJXZWJLaXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJM
cyIKKyNkZWZpbmUgV2ViS2l0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzUHJlZmVyZW5jZUtl
eSAiV2ViS2l0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzIgogI2RlZmluZSBXZWJLaXRKYXZh
U2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5UHJlZmVyZW5jZUtleSAiV2ViS2l0SmF2
YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseSIKICNkZWZpbmUgV2ViS2l0UGx1Z2lu
c0VuYWJsZWRQcmVmZXJlbmNlS2V5ICJXZWJLaXRQbHVnaW5zRW5hYmxlZCIKICNkZWZpbmUgV2Vi
S2l0RGF0YWJhc2VzRW5hYmxlZFByZWZlcmVuY2VLZXkgIldlYktpdERhdGFiYXNlc0VuYWJsZWQi
CkluZGV4OiBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4v
V2ViVmlldy5jcHAJKHJldmlzaW9uIDU0NTMwKQorKysgV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDYyMiw2ICs0NjIyLDExIEBACiAgICAgICAgIHJldHVybiBocjsK
ICAgICBzZXR0aW5ncy0+c2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoISFlbmFi
bGVkKTsKIAorICAgIGhyID0gcHJlZnNQcml2YXRlLT5hbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVS
THMoJmVuYWJsZWQpOworICAgIGlmIChGQUlMRUQoaHIpKQorICAgICAgICByZXR1cm4gaHI7Cisg
ICAgc2V0dGluZ3MtPnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyghIWVuYWJsZWQpOwor
CiAgICAgaHIgPSBwcmVmc1ByaXZhdGUtPmlzWFNTQXVkaXRvckVuYWJsZWQoJmVuYWJsZWQpOwog
ICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICByZXR1cm4gaHI7CkluZGV4OiBXZWJLaXQvd2lu
L1dlYlByZWZlcmVuY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlByZWZlcmVu
Y2VzLmNwcAkocmV2aXNpb24gNTQ1MzApCisrKyBXZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjA2LDYgKzIwNiw3IEBACiAgICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEphdmFTY3JpcHRFbmFibGVkUHJlZmVyZW5jZUtl
eSksIGtDRkJvb2xlYW5UcnVlKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywg
Q0ZTVFIoV2ViS2l0V2ViU2VjdXJpdHlFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5U
cnVlKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0QWxs
b3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZh
bHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0QWxs
b3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsK
ICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0WFNTQXVkaXRv
ckVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwogICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NB
dXRvbWF0aWNhbGx5UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKICAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0UGx1Z2luc0VuYWJsZWRQcmVmZXJl
bmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwpAQCAtNzkyLDYgKzc5MywyMCBAQAogICAgIHJldHVy
biBTX09LOwogfQogCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjph
bGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoCisgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09M
KiBhbGxvd0FjY2VzcykKK3sKKyAgICAqYWxsb3dBY2Nlc3MgPSBib29sVmFsdWVGb3JLZXkoQ0ZT
VFIoV2ViS2l0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzUHJlZmVyZW5jZUtleSkpOworICAg
IHJldHVybiBTX09LOworfQorCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVu
Y2VzOjpzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoCisgICAgLyogW2luXSAqLyBCT09M
IGFsbG93QWNjZXNzKQoreworICAgIHNldEJvb2xWYWx1ZShDRlNUUihXZWJLaXRBbGxvd0ZpbGVB
Y2Nlc3NGcm9tRmlsZVVSTHNQcmVmZXJlbmNlS2V5KSwgYWxsb3dBY2Nlc3MpOworICAgIHJldHVy
biBTX09LOworfQorCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpp
c1hTU0F1ZGl0b3JFbmFibGVkKAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogZW5hYmxl
ZCkKIHsKSW5kZXg6IFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXNQcml2YXRl
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlByZWZlcmVuY2Vz
UHJpdmF0ZS5pZGwJKHJldmlzaW9uIDU0NTMwKQorKysgV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lX
ZWJQcmVmZXJlbmNlc1ByaXZhdGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw0ICs5Nyw3IEBA
CiAKICAgICBIUkVTVUxUIHNldEN1c3RvbURyYWdDdXJzb3JzRW5hYmxlZChbaW5dIEJPT0wpOwog
ICAgIEhSRVNVTFQgY3VzdG9tRHJhZ0N1cnNvcnNFbmFibGVkKFtvdXQsIHJldHZhbF0gQk9PTCop
OworCisgICAgSFJFU1VMVCBhbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoW291dCwgcmV0dmFs
XSBCT09MICphbGxvd0FjY2Vzcyk7CisgICAgSFJFU1VMVCBzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9t
RmlsZVVSTHMoW2luXSBCT09MIGFsbG93QWNjZXNzKTsKIH0KSW5kZXg6IFdlYktpdC9tYWMvV2Vi
Vmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dl
YlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgJKHJldmlzaW9uIDU0NTMwKQorKysgV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDEsNiArMTAxLDkgQEAKIC0gKEJPT0wpYWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHM7
CiAtICh2b2lkKXNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzOihCT09MKWZsYWc7
CiAKKy0gKEJPT0wpYWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzOworLSAodm9pZClzZXRBbGxv
d0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHM6KEJPT0wpZmxhZzsKKwogLSAoQk9PTCl6b29tc1RleHRP
bmx5OwogLSAodm9pZClzZXRab29tc1RleHRPbmx5OihCT09MKXpvb21zVGV4dE9ubHk7CiAKSW5k
ZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgJKHJl
dmlzaW9uIDU0NTMwKQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJp
dmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw3IEBACiAjZGVmaW5lIFdlYktpdEph
dmFTY3JpcHRFbmFibGVkUHJlZmVyZW5jZUtleSBAIldlYktpdEphdmFTY3JpcHRFbmFibGVkIgog
I2RlZmluZSBXZWJLaXRXZWJTZWN1cml0eUVuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0V2Vi
U2VjdXJpdHlFbmFibGVkIgogI2RlZmluZSBXZWJLaXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21G
aWxlVVJMc1ByZWZlcmVuY2VLZXkgQCJXZWJLaXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxl
VVJMcyIKKyNkZWZpbmUgV2ViS2l0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzUHJlZmVyZW5j
ZUtleSBAIldlYktpdEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyIKICNkZWZpbmUgV2ViS2l0
SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseVByZWZlcmVuY2VLZXkgQCJXZWJL
aXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5IgogI2RlZmluZSBXZWJLaXRQ
bHVnaW5zRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRQbHVnaW5zRW5hYmxlZCIKICNkZWZp
bmUgV2ViS2l0RGF0YWJhc2VzRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXREYXRhYmFzZXNF
bmFibGVkUHJlZmVyZW5jZUtleSIKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiA1
NDUzMCkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjg2LDYgKzEyODYsNyBAQAogICAgIHNldHRpbmdzLT5zZXRKYXZhU2NyaXB0RW5hYmxlZChb
cHJlZmVyZW5jZXMgaXNKYXZhU2NyaXB0RW5hYmxlZF0pOwogICAgIHNldHRpbmdzLT5zZXRXZWJT
ZWN1cml0eUVuYWJsZWQoW3ByZWZlcmVuY2VzIGlzV2ViU2VjdXJpdHlFbmFibGVkXSk7CiAgICAg
c2V0dGluZ3MtPnNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKFtwcmVmZXJlbmNl
cyBhbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMc10pOworICAgIHNldHRpbmdzLT5zZXRB
bGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoW3ByZWZlcmVuY2VzIGFsbG93RmlsZUFjY2Vzc0Zy
b21GaWxlVVJMc10pOwogICAgIHNldHRpbmdzLT5zZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NB
dXRvbWF0aWNhbGx5KFtwcmVmZXJlbmNlcyBqYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0
aWNhbGx5XSk7CiAgICAgc2V0dGluZ3MtPnNldE1pbmltdW1Gb250U2l6ZShbcHJlZmVyZW5jZXMg
bWluaW11bUZvbnRTaXplXSk7CiAgICAgc2V0dGluZ3MtPnNldE1pbmltdW1Mb2dpY2FsRm9udFNp
emUoW3ByZWZlcmVuY2VzIG1pbmltdW1Mb2dpY2FsRm9udFNpemVdKTsKSW5kZXg6IFdlYktpdC9t
YWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dl
YlZpZXcvV2ViUHJlZmVyZW5jZXMubW0JKHJldmlzaW9uIDU0NTMwKQorKysgV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMTYsNiArMzE2LDcg
QEAKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sICBXZWJLaXRKYXZhU2Ny
aXB0RW5hYmxlZFByZWZlcmVuY2VLZXksCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9v
bDpZRVNdLCAgV2ViS2l0V2ViU2VjdXJpdHlFbmFibGVkUHJlZmVyZW5jZUtleSwKICAgICAgICAg
W05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sICBXZWJLaXRBbGxvd1VuaXZlcnNhbEFjY2Vz
c0Zyb21GaWxlVVJMc1ByZWZlcmVuY2VLZXksCisgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRo
Qm9vbDpZRVNdLCAgV2ViS2l0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzUHJlZmVyZW5jZUtl
eSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sICBXZWJLaXRKYXZhU2Ny
aXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5UHJlZmVyZW5jZUtleSwKICAgICAgICAgW05T
TnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sICBXZWJLaXRQbHVnaW5zRW5hYmxlZFByZWZlcmVu
Y2VLZXksCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdLCAgV2ViS2l0RGF0
YWJhc2VzRW5hYmxlZFByZWZlcmVuY2VLZXksCkBAIC05MTksNiArOTIwLDE2IEBACiAgICAgW3Nl
bGYgX3NldEJvb2xWYWx1ZTogZmxhZyBmb3JLZXk6IFdlYktpdEFsbG93VW5pdmVyc2FsQWNjZXNz
RnJvbUZpbGVVUkxzUHJlZmVyZW5jZUtleV07CiB9CiAKKy0gKEJPT0wpYWxsb3dGaWxlQWNjZXNz
RnJvbUZpbGVVUkxzCit7CisgICAgcmV0dXJuIFtzZWxmIF9ib29sVmFsdWVGb3JLZXk6IFdlYktp
dEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMc1ByZWZlcmVuY2VLZXldOworfQorCistICh2b2lk
KXNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMczooQk9PTClmbGFnCit7CisgICAgW3NlbGYg
X3NldEJvb2xWYWx1ZTogZmxhZyBmb3JLZXk6IFdlYktpdEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxl
VVJMc1ByZWZlcmVuY2VLZXldOworfQorCiAtIChOU1RpbWVJbnRlcnZhbClfYmFja0ZvcndhcmRD
YWNoZUV4cGlyYXRpb25JbnRlcnZhbAogewogICAgIC8vIEZJWE1FOiBUaGVyZSdzIHByb2JhYmx5
IG5vIGdvb2QgcmVhc29uIHRvIHJlYWQgZnJvbSB0aGUgc3RhbmRhcmQgdXNlciBkZWZhdWx0cyBp
bnN0ZWFkIG9mIHNlbGYuCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlv
dXRUZXN0Q29udHJvbGxlclF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkocmV2aXNpb24gNTQ1MzApCisr
KyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjk4LDYgKzI5OCwxMSBAQAogICAgIG1fZHJ0LT53ZWJQYWdl
KCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OkxvY2FsQ29udGVudENh
bkFjY2Vzc1JlbW90ZVVybHMsIGVuYWJsZWQpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCBlbmFibGVkKQoreworICAg
IG1fZHJ0LT53ZWJQYWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6
OkxvY2FsQ29udGVudENhbkFjY2Vzc0ZpbGVVcmxzLCBlbmFibGVkKTsKK30KKwogdm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoYm9vbCBlbmFi
bGUpCiB7CiAgICAgbV90b3BMb2FkaW5nRnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0QXR0
cmlidXRlKFFXZWJTZXR0aW5nczo6RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCwgdHJ1ZSk7CkluZGV4
OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENv
bnRyb2xsZXJRdC5oCShyZXZpc2lvbiA1NDUzMCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDYg
KzExOCw3IEBACiAKICAgICB2b2lkIHNldEZyYW1lU2V0RmxhdHRlbmluZ0VuYWJsZWQoYm9vbCBl
bmFibGUpOwogICAgIHZvaWQgc2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoYm9v
bCBlbmFibGUpOworICAgIHZvaWQgc2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wg
ZW5hYmxlKTsKICAgICB2b2lkIHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKGJvb2wgZW5h
YmxlKTsKICAgICB2b2lkIHNldEZpeGVkQ29udGVudHNTaXplKGludCB3aWR0aCwgaW50IGhlaWdo
dCk7CiAgICAgdm9pZCBzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wgZW5hYmxlKTsKSW5k
ZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91
dFRlc3RDb250cm9sbGVyR3RrLmNwcAkocmV2aXNpb24gNTQ1MzApCisrKyBXZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMzcsNiArMzM3LDE1IEBACiAgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHNldHRp
bmdzKSwgImVuYWJsZS11bml2ZXJzYWwtYWNjZXNzLWZyb20tZmlsZS11cmlzIiwgZmxhZywgTlVM
TCk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93RmlsZUFjY2Vzc0Zy
b21GaWxlVVJMcyhib29sIGZsYWcpCit7CisgICAgV2ViS2l0V2ViVmlldyogdmlldyA9IHdlYmtp
dF93ZWJfZnJhbWVfZ2V0X3dlYl92aWV3KG1haW5GcmFtZSk7CisgICAgQVNTRVJUKHZpZXcpOwor
CisgICAgV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzID0gd2Via2l0X3dlYl92aWV3X2dldF9z
ZXR0aW5ncyh2aWV3KTsKKyAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5h
YmxlLWZpbGUtYWNjZXNzLWZyb20tZmlsZS11cmlzIiwgZmxhZywgTlVMTCk7Cit9CisKIHZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKGJvb2wg
ZmxhZykKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CkluZGV4OiBXZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAko
cmV2aXNpb24gNTQ1MzApCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRU
ZXN0Q29udHJvbGxlcld4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc1LDYgKzE3NSwxMSBAQAog
ICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wgZW5hYmxlZCkKK3sKKyAgICAvLyBG
SVhNRTogaW1wbGVtZW50Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dGhv
ckFuZFVzZXJTdHlsZXNFbmFibGVkKGJvb2wgZmxhZykKIHsKICAgICAvLyBGSVhNRTogaW1wbGVt
ZW50CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5k
ZXJUcmVlLm1tCShyZXZpc2lvbiA1NDUzMCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9EdW1wUmVuZGVyVHJlZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzk2LDYgKzM5Niw3IEBA
CiAgICAgV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzID0gW1dlYlByZWZlcmVuY2VzIHN0YW5k
YXJkUHJlZmVyZW5jZXNdOwogCiAgICAgW3ByZWZlcmVuY2VzIHNldEFsbG93VW5pdmVyc2FsQWNj
ZXNzRnJvbUZpbGVVUkxzOllFU107CisgICAgW3ByZWZlcmVuY2VzIHNldEFsbG93RmlsZUFjY2Vz
c0Zyb21GaWxlVVJMczpZRVNdOwogICAgIFtwcmVmZXJlbmNlcyBzZXRTdGFuZGFyZEZvbnRGYW1p
bHk6QCJUaW1lcyJdOwogICAgIFtwcmVmZXJlbmNlcyBzZXRGaXhlZEZvbnRGYW1pbHk6QCJDb3Vy
aWVyIl07CiAgICAgW3ByZWZlcmVuY2VzIHNldFNlcmlmRm9udEZhbWlseTpAIlRpbWVzIl07Cklu
ZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91
dFRlc3RDb250cm9sbGVyTWFjLm1tCShyZXZpc2lvbiA1NDUzMCkKKysrIFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzI0LDYgKzMyNCwxMSBAQAogICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJl
bmNlc10gc2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHM6ZW5hYmxlZF07CiB9CiAK
K3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJM
cyhib29sIGVuYWJsZWQpCit7CisgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2Vz
XSBzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHM6ZW5hYmxlZF07Cit9CisKIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKGJvb2wgcG9wdXBCbG9j
a2luZ0VuYWJsZWQpCiB7CiAgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2VzXSBz
ZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5OiFwb3B1cEJsb2NraW5nRW5h
YmxlZF07CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA1NDUzMCkKKysrIFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTA5
LDYgKzkwOSwxOCBAQAogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsK
IH0KIAorc3RhdGljIEpTVmFsdWVSZWYgc2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzQ2Fs
bGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVj
dFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBh
cmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIC8vIEhhcyBtYWMgJiB3
aW5kb3dzIGltcGxlbWVudGF0aW9uCisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBMYXlvdXRUZXN0
Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVy
Kj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXRB
bGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1
bWVudHNbMF0pKTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsK
K30KKwogc3RhdGljIEpTVmFsdWVSZWYgc2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzQ2Fs
bGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVj
dFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBh
cmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBtYWMgJiB3
aW5kb3dzIGltcGxlbWVudGF0aW9uCkBAIC0xMzQ4LDYgKzEzNjAsNyBAQAogICAgICAgICB7ICJy
ZXBhaW50U3dlZXBIb3Jpem9udGFsbHkiLCByZXBhaW50U3dlZXBIb3Jpem9udGFsbHlDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRBY2NlcHRzRWRpdGluZyIsIHNldEFjY2VwdHNFZGl0
aW5nQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NG
cm9tRmlsZVVSTHMiLCBzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMc0NhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCisgICAgICAgIHsgInNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyIsIHNl
dEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsg
InNldEFsd2F5c0FjY2VwdENvb2tpZXMiLCBzZXRBbHdheXNBY2NlcHRDb29raWVzQ2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKICAgICAgICAgeyAic2V0QXBwQ2FjaGVNYXhpbXVtU2l6ZSIsIHNldEFwcENhY2hl
TWF4aW11bVNpemVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LCAKICAgICAgICAgeyAic2V0QXV0aGVudGljYXRp
b25QYXNzd29yZCIsIHNldEF1dGhlbnRpY2F0aW9uUGFzc3dvcmRDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApJ
bmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVy
V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5
b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCShyZXZpc2lvbiA1NDUzMCkKKysrIFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM4OSw2ICszODksMjMgQEAKICAgICBwcmVmc1ByaXZhdGUtPnNldEFsbG93VW5p
dmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKGVuYWJsZWQpOwogfQogCit2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCBlbmFibGVkKQor
eworICAgIENPTVB0cjxJV2ViVmlldz4gd2ViVmlldzsKKyAgICBpZiAoRkFJTEVEKGZyYW1lLT53
ZWJWaWV3KCZ3ZWJWaWV3KSkpCisgICAgICAgIHJldHVybjsKKworICAgIENPTVB0cjxJV2ViUHJl
ZmVyZW5jZXM+IHByZWZlcmVuY2VzOworICAgIGlmIChGQUlMRUQod2ViVmlldy0+cHJlZmVyZW5j
ZXMoJnByZWZlcmVuY2VzKSkpCisgICAgICAgIHJldHVybjsKKworICAgIENPTVB0cjxJV2ViUHJl
ZmVyZW5jZXNQcml2YXRlPiBwcmVmc1ByaXZhdGUoUXVlcnksIHByZWZlcmVuY2VzKTsKKyAgICBp
ZiAoIXByZWZzUHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJlZnNQcml2YXRlLT5z
ZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoZW5hYmxlZCk7Cit9CisKIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsK
ICAgICBDT01QdHI8SVdlYlZpZXc+IHdlYlZpZXc7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAJKHJldmlzaW9uIDU0NTMwKQor
KysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzg3LDYgKzc4Nyw3IEBACiAgICAgQ09NUHRyPElXZWJQcmVmZXJlbmNl
c1ByaXZhdGU+IHByZWZzUHJpdmF0ZShRdWVyeSwgcHJlZmVyZW5jZXMpOwogICAgIGlmIChwcmVm
c1ByaXZhdGUpIHsKICAgICAgICAgcHJlZnNQcml2YXRlLT5zZXRBbGxvd1VuaXZlcnNhbEFjY2Vz
c0Zyb21GaWxlVVJMcyhUUlVFKTsKKyAgICAgICAgcHJlZnNQcml2YXRlLT5zZXRBbGxvd0ZpbGVB
Y2Nlc3NGcm9tRmlsZVVSTHMoVFJVRSk7CiAgICAgICAgIHByZWZzUHJpdmF0ZS0+c2V0QXV0aG9y
QW5kVXNlclN0eWxlc0VuYWJsZWQoVFJVRSk7CiAgICAgICAgIHByZWZzUHJpdmF0ZS0+c2V0RGV2
ZWxvcGVyRXh0cmFzRW5hYmxlZChGQUxTRSk7CiAgICAgICAgIHByZWZzUHJpdmF0ZS0+c2V0RXhw
ZXJpbWVudGFsTm90aWZpY2F0aW9uc0VuYWJsZWQoVFJVRSk7CkluZGV4OiBXZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDU0
NTMwKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsNyBAQAogICAgIHZvaWQgcmVtb3ZlQWxsVmlz
aXRlZExpbmtzKCk7CiAgICAgdm9pZCBzZXRBY2NlcHRzRWRpdGluZyhib29sIGFjY2VwdHNFZGl0
aW5nKTsKICAgICB2b2lkIHNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wp
OworICAgIHZvaWQgc2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wpOwogICAgIHZv
aWQgc2V0QXBwQ2FjaGVNYXhpbXVtU2l6ZSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpOwogICAg
IHZvaWQgc2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoYm9vbCk7CiAgICAgdm9pZCBzZXRD
YWNoZU1vZGVsKGludCk7Cg==
</data>
<flag name="review"
          id="31145"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="31224"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48544</attachid>
            <date>2010-02-10 20:24:25 -0800</date>
            <delta_ts>2010-02-16 22:53:38 -0800</delta_ts>
            <desc>Trivial merge with Changeset 54587. Ready to go to commit queue again.</desc>
            <filename>file.diff</filename>
            <type>text/plain</type>
            <size>27971</size>
            <attacher name="Chris Evans">scarybeasts</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDU0NTk2KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDE4LDYgKzQ0MTgsMTAgQEAKICAgICAgICAgICAvLyBT
b21lIGNsaWVudHMgd2FudCBmaWxlOi8vIFVSTHMgdG8gaGF2ZSB1bml2ZXJzYWwgYWNjZXNzLCBi
dXQgdGhhdAogICAgICAgICAgIC8vIHNldHRpbmcgaXMgZGFuZ2Vyb3VzIGZvciBvdGhlciBjbGll
bnRzLgogICAgICAgICAgIHNlY3VyaXR5T3JpZ2luKCktPmdyYW50VW5pdmVyc2FsQWNjZXNzKCk7
CisgICAgICAgIH0gZWxzZSBpZiAoIXNldHRpbmdzLT5hbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVS
THMoKSAmJiBzZWN1cml0eU9yaWdpbigpLT5pc0xvY2FsKCkpIHsKKyAgICAgICAgICAvLyBTb21l
IGNsaWVudHMgd2FudCBmaWxlOi8vIFVSTHMgdG8gaGF2ZSBldmVuIHRpZ2h0ZXIgcmVzdHJpY3Rp
b25zIGJ5CisgICAgICAgICAgLy8gZGVmYXVsdCwgYW5kIG5vdCBiZSBhYmxlIHRvIGFjY2VzcyBv
dGhlciBsb2NhbCBmaWxlcy4KKyAgICAgICAgICBzZWN1cml0eU9yaWdpbigpLT5tYWtlVW5pcXVl
KCk7CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NDU5NikKKysrIFdlYkNvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMDktMDItMTAgIENocmlz
IEV2YW5zICA8Y2V2YW5zQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgc2V0dGluZyB3aGljaCBnaXZlcyB0aGUg
b3B0aW9uIG9mIGFzc2lnbmluZyBldmVyeSBmaWxlOi8vLworICAgICAgICB0byBpdHMgb3duIHVu
aXF1ZSBkb21haW4uCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM0Nzc4CisKKyAgICAgICAgVGVzdDogUGVuZGluZyBpbiBmb3J0aGNvbWluZyBzZXBh
cmF0ZSBjaGFuZ2UgZHVlIHRvIG5vbi10cml2aWFsCisgICAgICAgIGRlcGVuZGVuY2llcy4KKwor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
aW5pdFNlY3VyaXR5Q29udGV4dCk6IFBsYWNlIGZpbGU6Ly8vIFVSSSBkb2N1bWVudHMKKyAgICAg
ICAgaW50byB0aGVpciBvd24gdW5pcXVlIGRvbWFpbnMgaWYgdGhlIG5ldyBzZXR0aW5nIHJlcXVp
cmVzIGl0LgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKiBwYWdlL1NldHRp
bmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRBbGxvd0ZpbGVBY2Nlc3NG
cm9tRmlsZVVSTHMpOiBTaW1wbGUgc2V0dGVyLgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmln
aW4uaDoKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luOjptYWtlVW5pcXVlKTogQWRkIHNpbXBsZSBhYmlsaXR5IHRvIGZv
cmNlIGFuCisgICAgICAgIG9yaWdpbiB0byBiZSBjb25zaWRlcmVkIHVuaXF1ZS4KKwogMjAwOS0x
MC0wNiAgWW9uZ2p1biBaaGFuZyAgPHlvbmdqdW4uemhhbmdAbm9raWEuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpJbmRleDogV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJKHJldmlzaW9uIDU0NTk2
KQorKysgV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMiw2ICsx
MTIsOSBAQAogICAgICAgICB2b2lkIHNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxz
KGJvb2wpOwogICAgICAgICBib29sIGFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKCkg
Y29uc3QgeyByZXR1cm4gbV9hbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMczsgfQogCisg
ICAgICAgIHZvaWQgc2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wpOworICAgICAg
ICBib29sIGFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcygpIGNvbnN0IHsgcmV0dXJuIG1fYWxs
b3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzOyB9CisKICAgICAgICAgdm9pZCBzZXRKYXZhU2NyaXB0
Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KGJvb2wpOwogICAgICAgICBib29sIGphdmFTY3Jp
cHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkoKSBjb25zdCB7IHJldHVybiBtX2phdmFTY3Jp
cHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHk7IH0KIApAQCAtMzIwLDYgKzMyMyw3IEBACiAg
ICAgICAgIGJvb2wgbV9pc0phdmFTY3JpcHRFbmFibGVkIDogMTsKICAgICAgICAgYm9vbCBtX2lz
V2ViU2VjdXJpdHlFbmFibGVkIDogMTsKICAgICAgICAgYm9vbCBtX2FsbG93VW5pdmVyc2FsQWNj
ZXNzRnJvbUZpbGVVUkxzOiAxOworICAgICAgICBib29sIG1fYWxsb3dGaWxlQWNjZXNzRnJvbUZp
bGVVUkxzOiAxOwogICAgICAgICBib29sIG1famF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21h
dGljYWxseSA6IDE7CiAgICAgICAgIGJvb2wgbV9zaG91bGRQcmludEJhY2tncm91bmRzIDogMTsK
ICAgICAgICAgYm9vbCBtX3RleHRBcmVhc0FyZVJlc2l6YWJsZSA6IDE7CkluZGV4OiBXZWJDb3Jl
L3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbi5jcHAJKHJldmlzaW9uIDU0NTk2KQorKysgV2ViQ29yZS9wYWdlL1NlY3VyaXR5
T3JpZ2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg2LDYgKzI4NiwxMSBAQAogICAgIG1fdW5p
dmVyc2FsQWNjZXNzID0gdHJ1ZTsKIH0KIAordm9pZCBTZWN1cml0eU9yaWdpbjo6bWFrZVVuaXF1
ZSgpCit7CisgICAgbV9pc1VuaXF1ZSA9IHRydWU7Cit9CisKIGJvb2wgU2VjdXJpdHlPcmlnaW46
OmlzTG9jYWwoKSBjb25zdAogewogICAgIHJldHVybiBzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9j
YWwobV9wcm90b2NvbCk7CkluZGV4OiBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAJKHJldmlzaW9uIDU0NTk2KQorKysgV2Vi
Q29yZS9wYWdlL1NldHRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNiArNzUsNyBAQAog
ICAgICwgbV9pc0phdmFTY3JpcHRFbmFibGVkKGZhbHNlKQogICAgICwgbV9pc1dlYlNlY3VyaXR5
RW5hYmxlZCh0cnVlKQogICAgICwgbV9hbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyh0
cnVlKQorICAgICwgbV9hbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHModHJ1ZSkKICAgICAsIG1f
amF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseShmYWxzZSkKICAgICAsIG1fc2hv
dWxkUHJpbnRCYWNrZ3JvdW5kcyhmYWxzZSkKICAgICAsIG1fdGV4dEFyZWFzQXJlUmVzaXphYmxl
KGZhbHNlKQpAQCAtMjQwLDYgKzI0MSwxMSBAQAogICAgIG1fYWxsb3dVbml2ZXJzYWxBY2Nlc3NG
cm9tRmlsZVVSTHMgPSBhbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMczsKIH0KIAordm9p
ZCBTZXR0aW5nczo6c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wgYWxsb3dGaWxl
QWNjZXNzRnJvbUZpbGVVUkxzKQoreworICAgIG1fYWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxz
ID0gYWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzOworfQorCiB2b2lkIFNldHRpbmdzOjpzZXRK
YXZhRW5hYmxlZChib29sIGlzSmF2YUVuYWJsZWQpCiB7CiAgICAgbV9pc0phdmFFbmFibGVkID0g
aXNKYXZhRW5hYmxlZDsKSW5kZXg6IFdlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCShyZXZpc2lvbiA1NDU5NikK
KysrIFdlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgs
NiArMTM4LDkgQEAKICAgICAvLyBhZGRpdGlvbiwgdGhlIFNhbmRib3hPcmlnaW4gZmxhZyBpcyBp
bmhlcml0ZWQgYnkgaWZyYW1lcy4KICAgICBib29sIGlzVW5pcXVlKCkgY29uc3QgeyByZXR1cm4g
bV9pc1VuaXF1ZTsgfQogCisgICAgLy8gTWFya3MgYW4gb3JpZ2luIGFzIGJlaW5nIHVuaXF1ZS4K
KyAgICB2b2lkIG1ha2VVbmlxdWUoKTsKKwogICAgIC8vIENvbnZlcnQgdGhpcyBTZWN1cml0eU9y
aWdpbiBpbnRvIGEgc3RyaW5nLiBUaGUgc3RyaW5nCiAgICAgLy8gcmVwcmVzZW50YXRpb24gb2Yg
YSBTZWN1cml0eU9yaWdpbiBpcyBzaW1pbGFyIHRvIGEgVVJMLCBleGNlcHQgaXQKICAgICAvLyBs
YWNrcyBhIHBhdGggY29tcG9uZW50LiBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIGRvZXMgbm90
IGVuY29kZQpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAkocmV2
aXNpb24gNTQ1OTYpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIzNiw2ICsyMzYsMTEgQEAKICAgICBtX3NldHRpbmdzLT5zZXRB
bGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyhhbGxvdyk7CiB9CiAKK3ZvaWQgV2ViU2V0
dGluZ3NJbXBsOjpzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCBhbGxvdykKK3sK
KyAgICBtX3NldHRpbmdzLT5zZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoYWxsb3cpOwor
fQorCiB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0VGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNp
b25CZWhhdmlvck5ldmVySW5jbHVkZWQoKQogewogICAgIC8vIEZJWE1FOiBJZiB5b3UgZXZlciBu
ZWVkIG1vcmUgYmVoYXZpb3JzIHRoYW4gdGhpcywgdGhlbiB3ZSBzaG91bGQgcHJvYmFibHkKSW5k
ZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAkocmV2aXNpb24gNTQ1OTYpCisr
KyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBA
IC04MCw2ICs4MCw3IEBACiAgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZFBhaW50Q3VzdG9tU2Ny
b2xsYmFycyhib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YWJhc2VzRW5hYmxlZChib29s
KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMo
Ym9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhi
b29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNpb25C
ZWhhdmlvck5ldmVySW5jbHVkZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0T2ZmbGluZVdlYkFw
cGxpY2F0aW9uQ2FjaGVFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRFeHBlcmlt
ZW50YWxXZWJHTEVuYWJsZWQoYm9vbCk7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlNldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0
aW5ncy5oCShyZXZpc2lvbiA1NDU5NikKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0
dGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsNyBAQAogICAgIHZpcnR1YWwgdm9p
ZCBzZXRTaG91bGRQYWludEN1c3RvbVNjcm9sbGJhcnMoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBzZXREYXRhYmFzZXNFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yTmV2ZXJJbmNs
dWRlZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2Fj
aGVFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RXhwZXJpbWVudGFsV2Vi
R0xFbmFibGVkKGJvb2wpID0gMDsKSW5kZXg6IFdlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuaAkocmV2aXNpb24gNTQ1
OTYpCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC02
Nyw2ICs2Nyw3IEBACiAgICAgICAgIExvY2FsU3RvcmFnZURhdGFiYXNlRW5hYmxlZCA9IExvY2Fs
U3RvcmFnZUVuYWJsZWQsCiAjZW5kaWYKICAgICAgICAgTG9jYWxDb250ZW50Q2FuQWNjZXNzUmVt
b3RlVXJscywKKyAgICAgICAgTG9jYWxDb250ZW50Q2FuQWNjZXNzRmlsZVVybHMsCiAgICAgICAg
IERuc1ByZWZldGNoRW5hYmxlZCwKICAgICAgICAgWFNTQXVkaXRvckVuYWJsZWQsCiAgICAgICAg
IEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJz
ZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3Bw
CShyZXZpc2lvbiA1NDU5NikKKysrIFdlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjE1LDYgKzIxNSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnbG9iYWwtPmF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpMb2Nh
bENvbnRlbnRDYW5BY2Nlc3NSZW1vdGVVcmxzKSk7CiAgICAgICAgIHNldHRpbmdzLT5zZXRBbGxv
d1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyh2YWx1ZSk7CiAKKyAgICAgICAgdmFsdWUgPSBh
dHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6TG9jYWxDb250ZW50Q2FuQWNjZXNzRmlsZVVy
bHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbC0+YXR0cmli
dXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OkxvY2FsQ29udGVudENhbkFjY2Vzc0ZpbGVVcmxzKSk7
CisgICAgICAgIHNldHRpbmdzLT5zZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHModmFsdWUp
OworCiAgICAgICAgIHZhbHVlID0gYXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OlhTU0F1
ZGl0b3JFbmFibGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9i
YWwtPmF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpYU1NBdWRpdG9yRW5hYmxlZCkpOwog
ICAgICAgICBzZXR0aW5ncy0+c2V0WFNTQXVkaXRvckVuYWJsZWQodmFsdWUpOwpAQCAtMzYzLDYg
KzM2Nyw3IEBACiAgICAgXHZhbHVlIExvY2FsU3RvcmFnZURhdGFiYXNlRW5hYmxlZCBcZXtUaGlz
IGVudW0gdmFsdWUgaXMgZGVwcmVjYXRlZC59IFVzZQogICAgICAgICBRV2ViU2V0dGluZ3M6Okxv
Y2FsU3RvcmFnZUVuYWJsZWQgaW5zdGVhZC4KICAgICBcdmFsdWUgTG9jYWxDb250ZW50Q2FuQWNj
ZXNzUmVtb3RlVXJscyBTcGVjaWZpZXMgd2hldGhlciBsb2NhbGx5IGxvYWRlZCBkb2N1bWVudHMg
YXJlIGFsbG93ZWQgdG8gYWNjZXNzIHJlbW90ZSB1cmxzLgorICAgIFx2YWx1ZSBMb2NhbENvbnRl
bnRDYW5BY2Nlc3NGaWxlVXJscyBTcGVjaWZpZXMgd2hldGhlciBsb2NhbGx5IGxvYWRlZCBkb2N1
bWVudHMgYXJlIGFsbG93ZWQgdG8gYWNjZXNzIG90aGVyIGxvY2FsICB1cmxzLgogICAgIFx2YWx1
ZSBYU1NBdWRpdG9yRW5hYmxlZCBTcGVjaWZpZXMgd2hldGhlciBsb2FkIHJlcXVlc3RzIHNob3Vs
ZCBiZSBtb25pdG9yZWQgZm9yIGNyb3NzLXNpdGUgc2NyaXB0aW5nIGF0dGVtcHRzLgogKi8KIApA
QCAtMzk0LDYgKzM5OSw3IEBACiAgICAgZC0+YXR0cmlidXRlcy5pbnNlcnQoUVdlYlNldHRpbmdz
OjpPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQsIGZhbHNlKTsKICAgICBkLT5hdHRy
aWJ1dGVzLmluc2VydChRV2ViU2V0dGluZ3M6OkxvY2FsU3RvcmFnZUVuYWJsZWQsIGZhbHNlKTsK
ICAgICBkLT5hdHRyaWJ1dGVzLmluc2VydChRV2ViU2V0dGluZ3M6OkxvY2FsQ29udGVudENhbkFj
Y2Vzc1JlbW90ZVVybHMsIGZhbHNlKTsKKyAgICBkLT5hdHRyaWJ1dGVzLmluc2VydChRV2ViU2V0
dGluZ3M6OkxvY2FsQ29udGVudENhbkFjY2Vzc0ZpbGVVcmxzLCB0cnVlKTsKICAgICBkLT5hdHRy
aWJ1dGVzLmluc2VydChRV2ViU2V0dGluZ3M6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVk
LCBmYWxzZSk7CiAgICAgZC0+b2ZmbGluZVN0b3JhZ2VEZWZhdWx0UXVvdGEgPSA1ICogMTAyNCAq
IDEwMjQ7CiAgICAgZC0+ZGVmYXVsdFRleHRFbmNvZGluZyA9IFFMYXRpbjFTdHJpbmcoImlzby04
ODU5LTEiKTsKSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCShyZXZpc2lvbiA1
NDU5NikKKysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNTUwLDcgKzI1NTAsOCBAQAogICAgICAgICBlbmFibGVTY3JpcHRzLCBlbmFibGVQ
bHVnaW5zLCBlbmFibGVEZXZlbG9wZXJFeHRyYXMsIHJlc2l6YWJsZVRleHRBcmVhcywKICAgICAg
ICAgZW5hYmxlUHJpdmF0ZUJyb3dzaW5nLCBlbmFibGVDYXJldEJyb3dzaW5nLCBlbmFibGVIVE1M
NURhdGFiYXNlLCBlbmFibGVIVE1MNUxvY2FsU3RvcmFnZSwKICAgICAgICAgZW5hYmxlWFNTQXVk
aXRvciwgamF2YXNjcmlwdENhbk9wZW5XaW5kb3dzLCBlbmFibGVPZmZsaW5lV2ViQXBwQ2FjaGUs
Ci0gICAgICAgIGVuYWJsZVVuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJJLCBlbmFibGVET01QYXN0
ZSwgdGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzLAorICAgICAgICBlbmFibGVVbml2ZXJzYWxB
Y2Nlc3NGcm9tRmlsZVVSSSwgZW5hYmxlRmlsZUFjY2Vzc0Zyb21GaWxlVVJJLAorICAgICAgICBl
bmFibGVET01QYXN0ZSwgdGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzLAogICAgICAgICBlbmFi
bGVTaXRlU3BlY2lmaWNRdWlya3MsIHVzZVBhZ2VDYWNoZTsKIAogICAgIFdlYktpdEVkaXRpbmdC
ZWhhdmlvciBlZGl0aW5nQmVoYXZpb3I7CkBAIC0yNTgwLDYgKzI1ODEsNyBAQAogICAgICAgICAg
ICAgICAgICAiZW5hYmxlLW9mZmxpbmUtd2ViLWFwcGxpY2F0aW9uLWNhY2hlIiwgJmVuYWJsZU9m
ZmxpbmVXZWJBcHBDYWNoZSwKICAgICAgICAgICAgICAgICAgImVkaXRpbmctYmVoYXZpb3IiLCAm
ZWRpdGluZ0JlaGF2aW9yLAogICAgICAgICAgICAgICAgICAiZW5hYmxlLXVuaXZlcnNhbC1hY2Nl
c3MtZnJvbS1maWxlLXVyaXMiLCAmZW5hYmxlVW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkksCisg
ICAgICAgICAgICAgICAgICJlbmFibGUtZmlsZS1hY2Nlc3MtZnJvbS1maWxlLXVyaXMiLCAmZW5h
YmxlRmlsZUFjY2Vzc0Zyb21GaWxlVVJJLAogICAgICAgICAgICAgICAgICAiZW5hYmxlLWRvbS1w
YXN0ZSIsICZlbmFibGVET01QYXN0ZSwKICAgICAgICAgICAgICAgICAgInRhYi1rZXktY3ljbGVz
LXRocm91Z2gtZWxlbWVudHMiLCAmdGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzLAogICAgICAg
ICAgICAgICAgICAiZW5hYmxlLXNpdGUtc3BlY2lmaWMtcXVpcmtzIiwgJmVuYWJsZVNpdGVTcGVj
aWZpY1F1aXJrcywKQEAgLTI2MTAsNiArMjYxMiw3IEBACiAgICAgc2V0dGluZ3MtPnNldE9mZmxp
bmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChlbmFibGVPZmZsaW5lV2ViQXBwQ2FjaGUpOwog
ICAgIHNldHRpbmdzLT5zZXRFZGl0aW5nQmVoYXZpb3IoY29yZShlZGl0aW5nQmVoYXZpb3IpKTsK
ICAgICBzZXR0aW5ncy0+c2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoZW5hYmxl
VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkkpOworICAgIHNldHRpbmdzLT5zZXRBbGxvd0ZpbGVB
Y2Nlc3NGcm9tRmlsZVVSTHMoZW5hYmxlRmlsZUFjY2Vzc0Zyb21GaWxlVVJJKTsKICAgICBzZXR0
aW5ncy0+c2V0RE9NUGFzdGVBbGxvd2VkKGVuYWJsZURPTVBhc3RlKTsKICAgICBzZXR0aW5ncy0+
c2V0TmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoZW5hYmxlU2l0ZVNwZWNpZmljUXVpcmtzKTsKICAg
ICBzZXR0aW5ncy0+c2V0VXNlc1BhZ2VDYWNoZSh1c2VQYWdlQ2FjaGUpOwpAQCAtMjcwMyw2ICsy
NzA2LDggQEAKICAgICAgICAgc2V0dGluZ3MtPnNldEVkaXRpbmdCZWhhdmlvcihjb3JlKHN0YXRp
Y19jYXN0PFdlYktpdEVkaXRpbmdCZWhhdmlvcj4oZ192YWx1ZV9nZXRfZW51bSgmdmFsdWUpKSkp
OwogICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19pbnRlcm5fc3RyaW5nKCJlbmFibGUtdW5pdmVyc2Fs
LWFjY2Vzcy1mcm9tLWZpbGUtdXJpcyIpKQogICAgICAgICBzZXR0aW5ncy0+c2V0QWxsb3dVbml2
ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoZ192YWx1ZV9nZXRfYm9vbGVhbigmdmFsdWUpKTsKKyAg
ICBlbHNlIGlmIChuYW1lID09IGdfaW50ZXJuX3N0cmluZygiZW5hYmxlLWZpbGUtYWNjZXNzLWZy
b20tZmlsZS11cmlzIikpCisgICAgICAgIHNldHRpbmdzLT5zZXRBbGxvd0ZpbGVBY2Nlc3NGcm9t
RmlsZVVSTHMoZ192YWx1ZV9nZXRfYm9vbGVhbigmdmFsdWUpKTsKICAgICBlbHNlIGlmIChuYW1l
ID09IGdfaW50ZXJuX3N0cmluZygiZW5hYmxlLWRvbS1wYXN0ZSIpKQogICAgICAgICBzZXR0aW5n
cy0+c2V0RE9NUGFzdGVBbGxvd2VkKGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnZhbHVlKSk7CiAgICAg
ZWxzZSBpZiAobmFtZSA9PSBnX2ludGVybl9zdHJpbmcoInRhYi1rZXktY3ljbGVzLXRocm91Z2gt
ZWxlbWVudHMiKSkgewpJbmRleDogV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuaAkocmV2aXNpb24gNTQ1OTYpCisrKyBX
ZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2Miw2ICszNjIs
MTIgQEAKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0QWxsb3dVbml2
ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoCiAgICAgLyogW2luXSAqLyBCT09MIGFsbG93QWNjZXNz
KTsKIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhbGxvd0ZpbGVBY2Nl
c3NGcm9tRmlsZVVSTHMoCisgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBhbGxvd0FjY2Vz
cyk7CisKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0QWxsb3dGaWxl
QWNjZXNzRnJvbUZpbGVVUkxzKAorICAgIC8qIFtpbl0gKi8gQk9PTCBhbGxvd0FjY2Vzcyk7CisK
ICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNYU1NBdWRpdG9yRW5hYmxl
ZCgKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGVuYWJsZWQpOwogCkluZGV4OiBXZWJL
aXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViVmlldy5jcHAJ
KHJldmlzaW9uIDU0NTk2KQorKysgV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDYyMiw2ICs0NjIyLDExIEBACiAgICAgICAgIHJldHVybiBocjsKICAgICBzZXR0aW5n
cy0+c2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoISFlbmFibGVkKTsKIAorICAg
IGhyID0gcHJlZnNQcml2YXRlLT5hbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoJmVuYWJsZWQp
OworICAgIGlmIChGQUlMRUQoaHIpKQorICAgICAgICByZXR1cm4gaHI7CisgICAgc2V0dGluZ3Mt
PnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyghIWVuYWJsZWQpOworCiAgICAgaHIgPSBw
cmVmc1ByaXZhdGUtPmlzWFNTQXVkaXRvckVuYWJsZWQoJmVuYWJsZWQpOwogICAgIGlmIChGQUlM
RUQoaHIpKQogICAgICAgICByZXR1cm4gaHI7CkluZGV4OiBXZWJLaXQvd2luL1dlYlByZWZlcmVu
Y2VLZXlzUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViUHJlZmVyZW5jZUtl
eXNQcml2YXRlLmgJKHJldmlzaW9uIDU0NTk2KQorKysgV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNl
S2V5c1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQAogI2RlZmluZSBX
ZWJLaXRKYXZhU2NyaXB0RW5hYmxlZFByZWZlcmVuY2VLZXkgIldlYktpdEphdmFTY3JpcHRFbmFi
bGVkIgogI2RlZmluZSBXZWJLaXRXZWJTZWN1cml0eUVuYWJsZWRQcmVmZXJlbmNlS2V5ICJXZWJL
aXRXZWJTZWN1cml0eUVuYWJsZWQiCiAjZGVmaW5lIFdlYktpdEFsbG93VW5pdmVyc2FsQWNjZXNz
RnJvbUZpbGVVUkxzUHJlZmVyZW5jZUtleSAiV2ViS2l0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9t
RmlsZVVSTHMiCisjZGVmaW5lIFdlYktpdEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMc1ByZWZl
cmVuY2VLZXkgIldlYktpdEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyIKICNkZWZpbmUgV2Vi
S2l0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseVByZWZlcmVuY2VLZXkgIldl
YktpdEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkiCiAjZGVmaW5lIFdlYktp
dFBsdWdpbnNFbmFibGVkUHJlZmVyZW5jZUtleSAiV2ViS2l0UGx1Z2luc0VuYWJsZWQiCiAjZGVm
aW5lIFdlYktpdERhdGFiYXNlc0VuYWJsZWRQcmVmZXJlbmNlS2V5ICJXZWJLaXREYXRhYmFzZXNF
bmFibGVkIgpJbmRleDogV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAJKHJldmlzaW9uIDU0NTk2KQorKysgV2Vi
S2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNiw2ICsyMDYs
NyBAQAogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRKYXZh
U2NyaXB0RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFdlYlNlY3VyaXR5RW5hYmxlZFBy
ZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMsIENGU1RSKFdlYktpdEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzUHJl
ZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
ZGVmYXVsdHMsIENGU1RSKFdlYktpdEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMc1ByZWZlcmVu
Y2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMsIENGU1RSKFdlYktpdFhTU0F1ZGl0b3JFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xl
YW5UcnVlKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0
SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseVByZWZlcmVuY2VLZXkpLCBrQ0ZC
b29sZWFuVHJ1ZSk7CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdl
YktpdFBsdWdpbnNFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKQEAgLTc5
Miw2ICs3OTMsMjAgQEAKICAgICByZXR1cm4gU19PSzsKIH0KIAorSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6YWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKAorICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogYWxsb3dBY2Nlc3MpCit7CisgICAgKmFsbG93QWNj
ZXNzID0gYm9vbFZhbHVlRm9yS2V5KENGU1RSKFdlYktpdEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxl
VVJMc1ByZWZlcmVuY2VLZXkpKTsKKyAgICByZXR1cm4gU19PSzsKK30KKworSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVV
UkxzKAorICAgIC8qIFtpbl0gKi8gQk9PTCBhbGxvd0FjY2VzcykKK3sKKyAgICBzZXRCb29sVmFs
dWUoQ0ZTVFIoV2ViS2l0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzUHJlZmVyZW5jZUtleSks
IGFsbG93QWNjZXNzKTsKKyAgICByZXR1cm4gU19PSzsKK30KKwogSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6aXNYU1NBdWRpdG9yRW5hYmxlZCgKICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIEJPT0wqIGVuYWJsZWQpCiB7CkluZGV4OiBXZWJLaXQvd2luL0ludGVyZmFj
ZXMvSVdlYlByZWZlcmVuY2VzUHJpdmF0ZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9J
bnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlc1ByaXZhdGUuaWRsCShyZXZpc2lvbiA1NDU5NikKKysr
IFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXNQcml2YXRlLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtOTcsNCArOTcsNyBAQAogCiAgICAgSFJFU1VMVCBzZXRDdXN0b21EcmFnQ3Vy
c29yc0VuYWJsZWQoW2luXSBCT09MKTsKICAgICBIUkVTVUxUIGN1c3RvbURyYWdDdXJzb3JzRW5h
YmxlZChbb3V0LCByZXR2YWxdIEJPT0wqKTsKKworICAgIEhSRVNVTFQgYWxsb3dGaWxlQWNjZXNz
RnJvbUZpbGVVUkxzKFtvdXQsIHJldHZhbF0gQk9PTCAqYWxsb3dBY2Nlc3MpOworICAgIEhSRVNV
TFQgc2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKFtpbl0gQk9PTCBhbGxvd0FjY2Vzcyk7
CiB9CkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCShy
ZXZpc2lvbiA1NDU5NikKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZh
dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSw5IEBACiAtIChCT09MKWFsbG93VW5p
dmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzOwogLSAodm9pZClzZXRBbGxvd1VuaXZlcnNhbEFjY2Vz
c0Zyb21GaWxlVVJMczooQk9PTClmbGFnOwogCistIChCT09MKWFsbG93RmlsZUFjY2Vzc0Zyb21G
aWxlVVJMczsKKy0gKHZvaWQpc2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzOihCT09MKWZs
YWc7CisKIC0gKEJPT0wpem9vbXNUZXh0T25seTsKIC0gKHZvaWQpc2V0Wm9vbXNUZXh0T25seToo
Qk9PTCl6b29tc1RleHRPbmx5OwogCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVy
ZW5jZUtleXNQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBy
ZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCShyZXZpc2lvbiA1NDU5NikKKysrIFdlYktpdC9tYWMvV2Vi
Vmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiAr
NTEsNyBAQAogI2RlZmluZSBXZWJLaXRKYXZhU2NyaXB0RW5hYmxlZFByZWZlcmVuY2VLZXkgQCJX
ZWJLaXRKYXZhU2NyaXB0RW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0V2ViU2VjdXJpdHlFbmFibGVk
UHJlZmVyZW5jZUtleSBAIldlYktpdFdlYlNlY3VyaXR5RW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0
QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHNQcmVmZXJlbmNlS2V5IEAiV2ViS2l0QWxs
b3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMiCisjZGVmaW5lIFdlYktpdEFsbG93RmlsZUFj
Y2Vzc0Zyb21GaWxlVVJMc1ByZWZlcmVuY2VLZXkgQCJXZWJLaXRBbGxvd0ZpbGVBY2Nlc3NGcm9t
RmlsZVVSTHMiCiAjZGVmaW5lIFdlYktpdEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRp
Y2FsbHlQcmVmZXJlbmNlS2V5IEAiV2ViS2l0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21h
dGljYWxseSIKICNkZWZpbmUgV2ViS2l0UGx1Z2luc0VuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2Vi
S2l0UGx1Z2luc0VuYWJsZWQiCiAjZGVmaW5lIFdlYktpdERhdGFiYXNlc0VuYWJsZWRQcmVmZXJl
bmNlS2V5IEAiV2ViS2l0RGF0YWJhc2VzRW5hYmxlZFByZWZlcmVuY2VLZXkiCkluZGV4OiBXZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQkocmV2aXNpb24gNTQ1OTYpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTI4Niw2ICsxMjg2LDcgQEAKICAgICBzZXR0aW5n
cy0+c2V0SmF2YVNjcmlwdEVuYWJsZWQoW3ByZWZlcmVuY2VzIGlzSmF2YVNjcmlwdEVuYWJsZWRd
KTsKICAgICBzZXR0aW5ncy0+c2V0V2ViU2VjdXJpdHlFbmFibGVkKFtwcmVmZXJlbmNlcyBpc1dl
YlNlY3VyaXR5RW5hYmxlZF0pOwogICAgIHNldHRpbmdzLT5zZXRBbGxvd1VuaXZlcnNhbEFjY2Vz
c0Zyb21GaWxlVVJMcyhbcHJlZmVyZW5jZXMgYWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVS
THNdKTsKKyAgICBzZXR0aW5ncy0+c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKFtwcmVm
ZXJlbmNlcyBhbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHNdKTsKICAgICBzZXR0aW5ncy0+c2V0
SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseShbcHJlZmVyZW5jZXMgamF2YVNj
cmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseV0pOwogICAgIHNldHRpbmdzLT5zZXRNaW5p
bXVtRm9udFNpemUoW3ByZWZlcmVuY2VzIG1pbmltdW1Gb250U2l6ZV0pOwogICAgIHNldHRpbmdz
LT5zZXRNaW5pbXVtTG9naWNhbEZvbnRTaXplKFtwcmVmZXJlbmNlcyBtaW5pbXVtTG9naWNhbEZv
bnRTaXplXSk7CkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCShyZXZpc2lv
biA1NDU5NikKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzE2LDYgKzMxNiw3IEBACiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRo
Qm9vbDpZRVNdLCAgV2ViS2l0SmF2YVNjcmlwdEVuYWJsZWRQcmVmZXJlbmNlS2V5LAogICAgICAg
ICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgIFdlYktpdFdlYlNlY3VyaXR5RW5hYmxl
ZFByZWZlcmVuY2VLZXksCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdLCAg
V2ViS2l0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHNQcmVmZXJlbmNlS2V5LAorICAg
ICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgIFdlYktpdEFsbG93RmlsZUFjY2Vz
c0Zyb21GaWxlVVJMc1ByZWZlcmVuY2VLZXksCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRo
Qm9vbDpZRVNdLCAgV2ViS2l0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseVBy
ZWZlcmVuY2VLZXksCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdLCAgV2Vi
S2l0UGx1Z2luc0VuYWJsZWRQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVy
V2l0aEJvb2w6WUVTXSwgIFdlYktpdERhdGFiYXNlc0VuYWJsZWRQcmVmZXJlbmNlS2V5LApAQCAt
OTE5LDYgKzkyMCwxNiBAQAogICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6IGZsYWcgZm9yS2V5OiBX
ZWJLaXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMc1ByZWZlcmVuY2VLZXldOwogfQog
CistIChCT09MKWFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcworeworICAgIHJldHVybiBbc2Vs
ZiBfYm9vbFZhbHVlRm9yS2V5OiBXZWJLaXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHNQcmVm
ZXJlbmNlS2V5XTsKK30KKworLSAodm9pZClzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHM6
KEJPT0wpZmxhZworeworICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6IGZsYWcgZm9yS2V5OiBXZWJL
aXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHNQcmVmZXJlbmNlS2V5XTsKK30KKwogLSAoTlNU
aW1lSW50ZXJ2YWwpX2JhY2tGb3J3YXJkQ2FjaGVFeHBpcmF0aW9uSW50ZXJ2YWwKIHsKICAgICAv
LyBGSVhNRTogVGhlcmUncyBwcm9iYWJseSBubyBnb29kIHJlYXNvbiB0byByZWFkIGZyb20gdGhl
IHN0YW5kYXJkIHVzZXIgZGVmYXVsdHMgaW5zdGVhZCBvZiBzZWxmLgpJbmRleDogV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJR
dC5jcHAJKHJldmlzaW9uIDU0NTk2KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQv
TGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5OCw2ICsyOTgs
MTEgQEAKICAgICBtX2RydC0+d2ViUGFnZSgpLT5zZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdl
YlNldHRpbmdzOjpMb2NhbENvbnRlbnRDYW5BY2Nlc3NSZW1vdGVVcmxzLCBlbmFibGVkKTsKIH0K
IAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVV
UkxzKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX2RydC0+d2ViUGFnZSgpLT5zZXR0aW5ncygpLT5z
ZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpMb2NhbENvbnRlbnRDYW5BY2Nlc3NGaWxlVXJscywg
ZW5hYmxlZCk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEphdmFTY3JpcHRQ
cm9maWxpbmdFbmFibGVkKGJvb2wgZW5hYmxlKQogewogICAgIG1fdG9wTG9hZGluZ0ZyYW1lLT5w
YWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OkRldmVsb3BlckV4
dHJhc0VuYWJsZWQsIHRydWUpOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQv
TGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAkocmV2aXNpb24gNTQ1OTYpCisr
KyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTExOCw2ICsxMTgsNyBAQAogCiAgICAgdm9pZCBzZXRGcmFtZVNl
dEZsYXR0ZW5pbmdFbmFibGVkKGJvb2wgZW5hYmxlKTsKICAgICB2b2lkIHNldEFsbG93VW5pdmVy
c2FsQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wgZW5hYmxlKTsKKyAgICB2b2lkIHNldEFsbG93Rmls
ZUFjY2Vzc0Zyb21GaWxlVVJMcyhib29sIGVuYWJsZSk7CiAgICAgdm9pZCBzZXRKYXZhU2NyaXB0
UHJvZmlsaW5nRW5hYmxlZChib29sIGVuYWJsZSk7CiAgICAgdm9pZCBzZXRGaXhlZENvbnRlbnRz
U2l6ZShpbnQgd2lkdGgsIGludCBoZWlnaHQpOwogICAgIHZvaWQgc2V0UHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZChib29sIGVuYWJsZSk7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9n
dGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAJKHJldmlzaW9u
IDU0NTk2KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250
cm9sbGVyR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQzLDYgKzM0MywxNSBAQAogICAgIGdf
b2JqZWN0X3NldChHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtdW5pdmVyc2FsLWFjY2Vzcy1m
cm9tLWZpbGUtdXJpcyIsIGZsYWcsIE5VTEwpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCBmbGFnKQoreworICAgIFdl
YktpdFdlYlZpZXcqIHZpZXcgPSB3ZWJraXRfd2ViX2ZyYW1lX2dldF93ZWJfdmlldyhtYWluRnJh
bWUpOworICAgIEFTU0VSVCh2aWV3KTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5n
cyA9IHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Modmlldyk7CisgICAgZ19vYmplY3Rfc2V0
KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1maWxlLWFjY2Vzcy1mcm9tLWZpbGUtdXJpcyIs
IGZsYWcsIE5VTEwpOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBdXRob3JB
bmRVc2VyU3R5bGVzRW5hYmxlZChib29sIGZsYWcpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVu
dApJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xs
ZXJXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5
b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAJKHJldmlzaW9uIDU0NTk2KQorKysgV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE3NSw2ICsxNzUsMTEgQEAKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CiB9CiAKK3Zv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhi
b29sIGVuYWJsZWQpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQorCiB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChib29sIGZsYWcp
CiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudApJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQkocmV2aXNpb24gNTQ1OTYpCisrKyBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTM5Niw2ICszOTYsNyBAQAogICAgIFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNl
cyA9IFtXZWJQcmVmZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXTsKIAogICAgIFtwcmVmZXJl
bmNlcyBzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMczpZRVNdOworICAgIFtwcmVm
ZXJlbmNlcyBzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHM6WUVTXTsKICAgICBbcHJlZmVy
ZW5jZXMgc2V0U3RhbmRhcmRGb250RmFtaWx5OkAiVGltZXMiXTsKICAgICBbcHJlZmVyZW5jZXMg
c2V0Rml4ZWRGb250RmFtaWx5OkAiQ291cmllciJdOwogICAgIFtwcmVmZXJlbmNlcyBzZXRTZXJp
ZkZvbnRGYW1pbHk6QCJUaW1lcyJdOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkocmV2aXNpb24g
NTQ1OTYpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRy
b2xsZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyOSw2ICszMjksMTEgQEAKICAgICBbW1tt
YWluRnJhbWUgd2ViVmlld10gcHJlZmVyZW5jZXNdIHNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJv
bUZpbGVVUkxzOmVuYWJsZWRdOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRB
bGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCBlbmFibGVkKQoreworICAgIFtbW21haW5G
cmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gc2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxz
OmVuYWJsZWRdOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRQb3B1cEJsb2Nr
aW5nRW5hYmxlZChib29sIHBvcHVwQmxvY2tpbmdFbmFibGVkKQogewogICAgIFtbW21haW5GcmFt
ZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gc2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21h
dGljYWxseTohcG9wdXBCbG9ja2luZ0VuYWJsZWRdOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gNTQ1
OTYpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTkyOCw2ICs5MjgsMTggQEAKICAgICByZXR1cm4gSlNWYWx1
ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHNldEFsbG93
RmlsZUFjY2Vzc0Zyb21GaWxlVVJMc0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50
Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikKK3sKKyAgICAvLyBIYXMgbWFjICYgd2luZG93cyBpbXBsZW1lbnRhdGlvbgorICAgIGlmIChh
cmd1bWVudENvdW50IDwgMSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpOworCisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNf
Y2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0
KSk7CisgICAgY29udHJvbGxlci0+c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKEpTVmFs
dWVUb0Jvb2xlYW4oY29udGV4dCwgYXJndW1lbnRzWzBdKSk7CisKKyAgICByZXR1cm4gSlNWYWx1
ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIHNldFRhYktl
eUN5Y2xlc1Rocm91Z2hFbGVtZW50c0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50
Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikKIHsKICAgICAvLyBIYXMgbWFjICYgd2luZG93cyBpbXBsZW1lbnRhdGlvbgpAQCAtMTM2OCw2
ICsxMzgwLDcgQEAKICAgICAgICAgeyAicmVwYWludFN3ZWVwSG9yaXpvbnRhbGx5IiwgcmVwYWlu
dFN3ZWVwSG9yaXpvbnRhbGx5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0QWNjZXB0
c0VkaXRpbmciLCBzZXRBY2NlcHRzRWRpdGluZ0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsg
InNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzIiwgc2V0QWxsb3dVbml2ZXJzYWxB
Y2Nlc3NGcm9tRmlsZVVSTHNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzZXRBbGxvd0Zp
bGVBY2Nlc3NGcm9tRmlsZVVSTHMiLCBzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHNDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRBbHdheXNBY2NlcHRDb29raWVzIiwgc2V0QWx3
YXlzQWNjZXB0Q29va2llc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEFwcENhY2hl
TWF4aW11bVNpemUiLCBzZXRBcHBDYWNoZU1heGltdW1TaXplQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwgCiAg
ICAgICAgIHsgInNldEF1dGhlbnRpY2F0aW9uUGFzc3dvcmQiLCBzZXRBdXRoZW50aWNhdGlvblBh
c3N3b3JkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAkocmV2aXNp
b24gNTQ1OTYpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENv
bnRyb2xsZXJXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODksNiArMzg5LDIzIEBACiAgICAg
cHJlZnNQcml2YXRlLT5zZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyhlbmFibGVk
KTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dGaWxlQWNjZXNzRnJv
bUZpbGVVUkxzKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBDT01QdHI8SVdlYlZpZXc+IHdlYlZpZXc7
CisgICAgaWYgKEZBSUxFRChmcmFtZS0+d2ViVmlldygmd2ViVmlldykpKQorICAgICAgICByZXR1
cm47CisKKyAgICBDT01QdHI8SVdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlczsKKyAgICBpZiAo
RkFJTEVEKHdlYlZpZXctPnByZWZlcmVuY2VzKCZwcmVmZXJlbmNlcykpKQorICAgICAgICByZXR1
cm47CisKKyAgICBDT01QdHI8SVdlYlByZWZlcmVuY2VzUHJpdmF0ZT4gcHJlZnNQcml2YXRlKFF1
ZXJ5LCBwcmVmZXJlbmNlcyk7CisgICAgaWYgKCFwcmVmc1ByaXZhdGUpCisgICAgICAgIHJldHVy
bjsKKworICAgIHByZWZzUHJpdmF0ZS0+c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKGVu
YWJsZWQpOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRQb3B1cEJsb2NraW5n
RW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAgICAgQ09NUHRyPElXZWJWaWV3PiB3ZWJWaWV3OwpJ
bmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRy
ZWUuY3BwCShyZXZpc2lvbiA1NDU5NikKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9EdW1wUmVuZGVyVHJlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4Nyw2ICs3ODcsNyBAQAog
ICAgIENPTVB0cjxJV2ViUHJlZmVyZW5jZXNQcml2YXRlPiBwcmVmc1ByaXZhdGUoUXVlcnksIHBy
ZWZlcmVuY2VzKTsKICAgICBpZiAocHJlZnNQcml2YXRlKSB7CiAgICAgICAgIHByZWZzUHJpdmF0
ZS0+c2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoVFJVRSk7CisgICAgICAgIHBy
ZWZzUHJpdmF0ZS0+c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKFRSVUUpOwogICAgICAg
ICBwcmVmc1ByaXZhdGUtPnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKFRSVUUpOwogICAg
ICAgICBwcmVmc1ByaXZhdGUtPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoRkFMU0UpOwogICAg
ICAgICBwcmVmc1ByaXZhdGUtPnNldEV4cGVyaW1lbnRhbE5vdGlmaWNhdGlvbnNFbmFibGVkKFRS
VUUpOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oCShyZXZpc2lvbiA1NDU5NikKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDcg
QEAKICAgICB2b2lkIHJlbW92ZUFsbFZpc2l0ZWRMaW5rcygpOwogICAgIHZvaWQgc2V0QWNjZXB0
c0VkaXRpbmcoYm9vbCBhY2NlcHRzRWRpdGluZyk7CiAgICAgdm9pZCBzZXRBbGxvd1VuaXZlcnNh
bEFjY2Vzc0Zyb21GaWxlVVJMcyhib29sKTsKKyAgICB2b2lkIHNldEFsbG93RmlsZUFjY2Vzc0Zy
b21GaWxlVVJMcyhib29sKTsKICAgICB2b2lkIHNldEFwcENhY2hlTWF4aW11bVNpemUodW5zaWdu
ZWQgbG9uZyBsb25nIHF1b3RhKTsKICAgICB2b2lkIHNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFi
bGVkKGJvb2wpOwogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbChpbnQpOwo=
</data>
<flag name="review"
          id="31248"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="31295"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48863</attachid>
            <date>2010-02-16 22:53:38 -0800</date>
            <delta_ts>2010-02-16 23:32:36 -0800</delta_ts>
            <desc>Export new WebCore function to fix Mac link error</desc>
            <filename>file.diff</filename>
            <type>text/plain</type>
            <size>28594</size>
            <attacher name="Chris Evans">scarybeasts</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDU0ODQ4KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDE3LDYgKzQ0MTcsMTAgQEAKICAgICAgICAgICAvLyBT
b21lIGNsaWVudHMgd2FudCBmaWxlOi8vIFVSTHMgdG8gaGF2ZSB1bml2ZXJzYWwgYWNjZXNzLCBi
dXQgdGhhdAogICAgICAgICAgIC8vIHNldHRpbmcgaXMgZGFuZ2Vyb3VzIGZvciBvdGhlciBjbGll
bnRzLgogICAgICAgICAgIHNlY3VyaXR5T3JpZ2luKCktPmdyYW50VW5pdmVyc2FsQWNjZXNzKCk7
CisgICAgICAgIH0gZWxzZSBpZiAoIXNldHRpbmdzLT5hbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVS
THMoKSAmJiBzZWN1cml0eU9yaWdpbigpLT5pc0xvY2FsKCkpIHsKKyAgICAgICAgICAvLyBTb21l
IGNsaWVudHMgd2FudCBmaWxlOi8vIFVSTHMgdG8gaGF2ZSBldmVuIHRpZ2h0ZXIgcmVzdHJpY3Rp
b25zIGJ5CisgICAgICAgICAgLy8gZGVmYXVsdCwgYW5kIG5vdCBiZSBhYmxlIHRvIGFjY2VzcyBv
dGhlciBsb2NhbCBmaWxlcy4KKyAgICAgICAgICBzZWN1cml0eU9yaWdpbigpLT5tYWtlVW5pcXVl
KCk7CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NDg0OCkKKysrIFdlYkNvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMDktMDItMTYgIENocmlz
IEV2YW5zICA8Y2V2YW5zQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgc2V0dGluZyB3aGljaCBnaXZlcyB0aGUg
b3B0aW9uIG9mIGFzc2lnbmluZyBldmVyeSBmaWxlOi8vLworICAgICAgICB0byBpdHMgb3duIHVu
aXF1ZSBkb21haW4uCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM0Nzc4CisKKyAgICAgICAgVGVzdDogUGVuZGluZyBpbiBmb3J0aGNvbWluZyBzZXBh
cmF0ZSBjaGFuZ2UgZHVlIHRvIG5vbi10cml2aWFsCisgICAgICAgIGRlcGVuZGVuY2llcy4KKwor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
aW5pdFNlY3VyaXR5Q29udGV4dCk6IFBsYWNlIGZpbGU6Ly8vIFVSSSBkb2N1bWVudHMKKyAgICAg
ICAgaW50byB0aGVpciBvd24gdW5pcXVlIGRvbWFpbnMgaWYgdGhlIG5ldyBzZXR0aW5nIHJlcXVp
cmVzIGl0LgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKiBwYWdlL1NldHRp
bmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRBbGxvd0ZpbGVBY2Nlc3NG
cm9tRmlsZVVSTHMpOiBTaW1wbGUgc2V0dGVyLgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmln
aW4uaDoKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luOjptYWtlVW5pcXVlKTogQWRkIHNpbXBsZSBhYmlsaXR5IHRvIGZv
cmNlIGFuCisgICAgICAgIG9yaWdpbiB0byBiZSBjb25zaWRlcmVkIHVuaXF1ZS4KKwogMjAxMC0w
Mi0xNiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAkocmV2aXNpb24gNTQ4NDgp
CisrKyBXZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAJKHdvcmtpbmcgY29weSkKQEAgLTY3MCw2ICs2
NzAsNyBAQAogX19aTjdXZWJDb3JlOFNldHRpbmdzMjhzZXRGb3JjZUZUUERpcmVjdG9yeUxpc3Rp
bmdzRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczI5c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJs
ZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjlzZXRXZWJBcmNoaXZlRGVidWdNb2RlRW5hYmxl
ZEViCitfX1pON1dlYkNvcmU4U2V0dGluZ3MzMHNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJM
c0ViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MzMXNldFNocmlua3NTdGFuZGFsb25lSW1hZ2VzVG9G
aXRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMzJzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5h
YmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MzMnNldE5lZWRzQWRvYmVGcmFtZVJlbG9hZGlu
Z1F1aXJrRWIKSW5kZXg6IFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGFnZS9TZXR0aW5ncy5oCShyZXZpc2lvbiA1NDg0OCkKKysrIFdlYkNvcmUvcGFnZS9T
ZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNiArMTEyLDkgQEAKICAgICAgICAgdm9p
ZCBzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyhib29sKTsKICAgICAgICAgYm9v
bCBhbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcygpIGNvbnN0IHsgcmV0dXJuIG1fYWxs
b3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHM7IH0KIAorICAgICAgICB2b2lkIHNldEFsbG93
RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhib29sKTsKKyAgICAgICAgYm9vbCBhbGxvd0ZpbGVBY2Nl
c3NGcm9tRmlsZVVSTHMoKSBjb25zdCB7IHJldHVybiBtX2FsbG93RmlsZUFjY2Vzc0Zyb21GaWxl
VVJMczsgfQorCiAgICAgICAgIHZvaWQgc2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21h
dGljYWxseShib29sKTsKICAgICAgICAgYm9vbCBqYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRv
bWF0aWNhbGx5KCkgY29uc3QgeyByZXR1cm4gbV9qYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRv
bWF0aWNhbGx5OyB9CiAKQEAgLTMyMCw2ICszMjMsNyBAQAogICAgICAgICBib29sIG1faXNKYXZh
U2NyaXB0RW5hYmxlZCA6IDE7CiAgICAgICAgIGJvb2wgbV9pc1dlYlNlY3VyaXR5RW5hYmxlZCA6
IDE7CiAgICAgICAgIGJvb2wgbV9hbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMczogMTsK
KyAgICAgICAgYm9vbCBtX2FsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMczogMTsKICAgICAgICAg
Ym9vbCBtX2phdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkgOiAxOwogICAgICAg
ICBib29sIG1fc2hvdWxkUHJpbnRCYWNrZ3JvdW5kcyA6IDE7CiAgICAgICAgIGJvb2wgbV90ZXh0
QXJlYXNBcmVSZXNpemFibGUgOiAxOwpJbmRleDogV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCShyZXZp
c2lvbiA1NDg0OCkKKysrIFdlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI4Niw2ICsyODYsMTEgQEAKICAgICBtX3VuaXZlcnNhbEFjY2VzcyA9IHRydWU7
CiB9CiAKK3ZvaWQgU2VjdXJpdHlPcmlnaW46Om1ha2VVbmlxdWUoKQoreworICAgIG1faXNVbmlx
dWUgPSB0cnVlOworfQorCiBib29sIFNlY3VyaXR5T3JpZ2luOjppc0xvY2FsKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gc2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKG1fcHJvdG9jb2wpOwpJbmRl
eDogV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MuY3BwCShyZXZpc2lvbiA1NDg0OCkKKysrIFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDcgQEAKICAgICAsIG1faXNKYXZhU2NyaXB0
RW5hYmxlZChmYWxzZSkKICAgICAsIG1faXNXZWJTZWN1cml0eUVuYWJsZWQodHJ1ZSkKICAgICAs
IG1fYWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHModHJ1ZSkKKyAgICAsIG1fYWxsb3dG
aWxlQWNjZXNzRnJvbUZpbGVVUkxzKHRydWUpCiAgICAgLCBtX2phdmFTY3JpcHRDYW5PcGVuV2lu
ZG93c0F1dG9tYXRpY2FsbHkoZmFsc2UpCiAgICAgLCBtX3Nob3VsZFByaW50QmFja2dyb3VuZHMo
ZmFsc2UpCiAgICAgLCBtX3RleHRBcmVhc0FyZVJlc2l6YWJsZShmYWxzZSkKQEAgLTI0MCw2ICsy
NDEsMTEgQEAKICAgICBtX2FsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzID0gYWxsb3dV
bml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHM7CiB9CiAKK3ZvaWQgU2V0dGluZ3M6OnNldEFsbG93
RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhib29sIGFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcykK
K3sKKyAgICBtX2FsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyA9IGFsbG93RmlsZUFjY2Vzc0Zy
b21GaWxlVVJMczsKK30KKwogdm9pZCBTZXR0aW5nczo6c2V0SmF2YUVuYWJsZWQoYm9vbCBpc0ph
dmFFbmFibGVkKQogewogICAgIG1faXNKYXZhRW5hYmxlZCA9IGlzSmF2YUVuYWJsZWQ7CkluZGV4
OiBXZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlPcmlnaW4uaAkocmV2aXNpb24gNTQ4NDgpCisrKyBXZWJDb3JlL3BhZ2UvU2Vj
dXJpdHlPcmlnaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDYgKzEzOCw5IEBACiAgICAgLy8g
YWRkaXRpb24sIHRoZSBTYW5kYm94T3JpZ2luIGZsYWcgaXMgaW5oZXJpdGVkIGJ5IGlmcmFtZXMu
CiAgICAgYm9vbCBpc1VuaXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNVbmlxdWU7IH0KIAorICAg
IC8vIE1hcmtzIGFuIG9yaWdpbiBhcyBiZWluZyB1bmlxdWUuCisgICAgdm9pZCBtYWtlVW5pcXVl
KCk7CisKICAgICAvLyBDb252ZXJ0IHRoaXMgU2VjdXJpdHlPcmlnaW4gaW50byBhIHN0cmluZy4g
VGhlIHN0cmluZwogICAgIC8vIHJlcHJlc2VudGF0aW9uIG9mIGEgU2VjdXJpdHlPcmlnaW4gaXMg
c2ltaWxhciB0byBhIFVSTCwgZXhjZXB0IGl0CiAgICAgLy8gbGFja3MgYSBwYXRoIGNvbXBvbmVu
dC4gVGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBkb2VzIG5vdCBlbmNvZGUKSW5kZXg6IFdlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAJKHJldmlzaW9uIDU0ODQ4KQorKysgV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MzYsNiArMjM2LDExIEBACiAgICAgbV9zZXR0aW5ncy0+c2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NG
cm9tRmlsZVVSTHMoYWxsb3cpOwogfQogCit2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0QWxsb3dG
aWxlQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wgYWxsb3cpCit7CisgICAgbV9zZXR0aW5ncy0+c2V0
QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKGFsbG93KTsKK30KKwogdm9pZCBXZWJTZXR0aW5n
c0ltcGw6OnNldFRleHREaXJlY3Rpb25TdWJtZW51SW5jbHVzaW9uQmVoYXZpb3JOZXZlckluY2x1
ZGVkKCkKIHsKICAgICAvLyBGSVhNRTogSWYgeW91IGV2ZXIgbmVlZCBtb3JlIGJlaGF2aW9ycyB0
aGFuIHRoaXMsIHRoZW4gd2Ugc2hvdWxkIHByb2JhYmx5CkluZGV4OiBXZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlNldHRpbmdzSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU2V0dGluZ3NJbXBsLmgJKHJldmlzaW9uIDU0ODQ4KQorKysgV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJTZXR0aW5nc0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtODAsNiArODAsNyBAQAogICAg
IHZpcnR1YWwgdm9pZCBzZXRTaG91bGRQYWludEN1c3RvbVNjcm9sbGJhcnMoYm9vbCk7CiAgICAg
dmlydHVhbCB2b2lkIHNldERhdGFiYXNlc0VuYWJsZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lk
IHNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wpOworICAgIHZpcnR1YWwg
dm9pZCBzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCk7CiAgICAgdmlydHVhbCB2
b2lkIHNldFRleHREaXJlY3Rpb25TdWJtZW51SW5jbHVzaW9uQmVoYXZpb3JOZXZlckluY2x1ZGVk
KCk7CiAgICAgdmlydHVhbCB2b2lkIHNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxl
ZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RXhwZXJpbWVudGFsV2ViR0xFbmFibGVkKGJv
b2wpOwpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAkocmV2aXNpb24gNTQ4
NDgpCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc4LDYgKzc4LDcgQEAKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkUGFpbnRDdXN0
b21TY3JvbGxiYXJzKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YWJhc2VzRW5h
YmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEFsbG93VW5pdmVyc2FsQWNjZXNz
RnJvbUZpbGVVUkxzKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QWxsb3dGaWxlQWNj
ZXNzRnJvbUZpbGVVUkxzKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dERpcmVj
dGlvblN1Ym1lbnVJbmNsdXNpb25CZWhhdmlvck5ldmVySW5jbHVkZWQoKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChib29sKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHNldEV4cGVyaW1lbnRhbFdlYkdMRW5hYmxlZChib29sKSA9IDA7
CkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9xdC9BcGkvcXdlYnNldHRpbmdzLmgJKHJldmlzaW9uIDU0ODQ4KQorKysgV2ViS2l0L3F0L0Fw
aS9xd2Vic2V0dGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNiArNjcsNyBAQAogICAgICAg
ICBMb2NhbFN0b3JhZ2VEYXRhYmFzZUVuYWJsZWQgPSBMb2NhbFN0b3JhZ2VFbmFibGVkLAogI2Vu
ZGlmCiAgICAgICAgIExvY2FsQ29udGVudENhbkFjY2Vzc1JlbW90ZVVybHMsCisgICAgICAgIExv
Y2FsQ29udGVudENhbkFjY2Vzc0ZpbGVVcmxzLAogICAgICAgICBEbnNQcmVmZXRjaEVuYWJsZWQs
CiAgICAgICAgIFhTU0F1ZGl0b3JFbmFibGVkLAogICAgICAgICBBY2NlbGVyYXRlZENvbXBvc2l0
aW5nRW5hYmxlZApJbmRleDogV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAkocmV2aXNpb24gNTQ4NDgpCisr
KyBXZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNSw2
ICsyMTUsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFs
LT5hdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6TG9jYWxDb250ZW50Q2FuQWNjZXNzUmVt
b3RlVXJscykpOwogICAgICAgICBzZXR0aW5ncy0+c2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9t
RmlsZVVSTHModmFsdWUpOwogCisgICAgICAgIHZhbHVlID0gYXR0cmlidXRlcy52YWx1ZShRV2Vi
U2V0dGluZ3M6OkxvY2FsQ29udGVudENhbkFjY2Vzc0ZpbGVVcmxzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwtPmF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRp
bmdzOjpMb2NhbENvbnRlbnRDYW5BY2Nlc3NGaWxlVXJscykpOworICAgICAgICBzZXR0aW5ncy0+
c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKHZhbHVlKTsKKwogICAgICAgICB2YWx1ZSA9
IGF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpYU1NBdWRpdG9yRW5hYmxlZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsLT5hdHRyaWJ1dGVzLnZhbHVl
KFFXZWJTZXR0aW5nczo6WFNTQXVkaXRvckVuYWJsZWQpKTsKICAgICAgICAgc2V0dGluZ3MtPnNl
dFhTU0F1ZGl0b3JFbmFibGVkKHZhbHVlKTsKQEAgLTM2Myw2ICszNjcsNyBAQAogICAgIFx2YWx1
ZSBMb2NhbFN0b3JhZ2VEYXRhYmFzZUVuYWJsZWQgXGV7VGhpcyBlbnVtIHZhbHVlIGlzIGRlcHJl
Y2F0ZWQufSBVc2UKICAgICAgICAgUVdlYlNldHRpbmdzOjpMb2NhbFN0b3JhZ2VFbmFibGVkIGlu
c3RlYWQuCiAgICAgXHZhbHVlIExvY2FsQ29udGVudENhbkFjY2Vzc1JlbW90ZVVybHMgU3BlY2lm
aWVzIHdoZXRoZXIgbG9jYWxseSBsb2FkZWQgZG9jdW1lbnRzIGFyZSBhbGxvd2VkIHRvIGFjY2Vz
cyByZW1vdGUgdXJscy4KKyAgICBcdmFsdWUgTG9jYWxDb250ZW50Q2FuQWNjZXNzRmlsZVVybHMg
U3BlY2lmaWVzIHdoZXRoZXIgbG9jYWxseSBsb2FkZWQgZG9jdW1lbnRzIGFyZSBhbGxvd2VkIHRv
IGFjY2VzcyBvdGhlciBsb2NhbCAgdXJscy4KICAgICBcdmFsdWUgWFNTQXVkaXRvckVuYWJsZWQg
U3BlY2lmaWVzIHdoZXRoZXIgbG9hZCByZXF1ZXN0cyBzaG91bGQgYmUgbW9uaXRvcmVkIGZvciBj
cm9zcy1zaXRlIHNjcmlwdGluZyBhdHRlbXB0cy4KICovCiAKQEAgLTM5NCw2ICszOTksNyBAQAog
ICAgIGQtPmF0dHJpYnV0ZXMuaW5zZXJ0KFFXZWJTZXR0aW5nczo6T2ZmbGluZVdlYkFwcGxpY2F0
aW9uQ2FjaGVFbmFibGVkLCBmYWxzZSk7CiAgICAgZC0+YXR0cmlidXRlcy5pbnNlcnQoUVdlYlNl
dHRpbmdzOjpMb2NhbFN0b3JhZ2VFbmFibGVkLCBmYWxzZSk7CiAgICAgZC0+YXR0cmlidXRlcy5p
bnNlcnQoUVdlYlNldHRpbmdzOjpMb2NhbENvbnRlbnRDYW5BY2Nlc3NSZW1vdGVVcmxzLCBmYWxz
ZSk7CisgICAgZC0+YXR0cmlidXRlcy5pbnNlcnQoUVdlYlNldHRpbmdzOjpMb2NhbENvbnRlbnRD
YW5BY2Nlc3NGaWxlVXJscywgdHJ1ZSk7CiAgICAgZC0+YXR0cmlidXRlcy5pbnNlcnQoUVdlYlNl
dHRpbmdzOjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCwgZmFsc2UpOwogICAgIGQtPm9m
ZmxpbmVTdG9yYWdlRGVmYXVsdFF1b3RhID0gNSAqIDEwMjQgKiAxMDI0OwogICAgIGQtPmRlZmF1
bHRUZXh0RW5jb2RpbmcgPSBRTGF0aW4xU3RyaW5nKCJpc28tODg1OS0xIik7CkluZGV4OiBXZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkocmV2aXNpb24gNTQ4NDgpCisrKyBXZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU1MCw3ICsyNTUw
LDggQEAKICAgICAgICAgZW5hYmxlU2NyaXB0cywgZW5hYmxlUGx1Z2lucywgZW5hYmxlRGV2ZWxv
cGVyRXh0cmFzLCByZXNpemFibGVUZXh0QXJlYXMsCiAgICAgICAgIGVuYWJsZVByaXZhdGVCcm93
c2luZywgZW5hYmxlQ2FyZXRCcm93c2luZywgZW5hYmxlSFRNTDVEYXRhYmFzZSwgZW5hYmxlSFRN
TDVMb2NhbFN0b3JhZ2UsCiAgICAgICAgIGVuYWJsZVhTU0F1ZGl0b3IsIGphdmFzY3JpcHRDYW5P
cGVuV2luZG93cywgZW5hYmxlT2ZmbGluZVdlYkFwcENhY2hlLAotICAgICAgICBlbmFibGVVbml2
ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSSSwgZW5hYmxlRE9NUGFzdGUsIHRhYktleUN5Y2xlc1Rocm91
Z2hFbGVtZW50cywKKyAgICAgICAgZW5hYmxlVW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkksIGVu
YWJsZUZpbGVBY2Nlc3NGcm9tRmlsZVVSSSwKKyAgICAgICAgZW5hYmxlRE9NUGFzdGUsIHRhYktl
eUN5Y2xlc1Rocm91Z2hFbGVtZW50cywKICAgICAgICAgZW5hYmxlU2l0ZVNwZWNpZmljUXVpcmtz
LCB1c2VQYWdlQ2FjaGU7CiAKICAgICBXZWJLaXRFZGl0aW5nQmVoYXZpb3IgZWRpdGluZ0JlaGF2
aW9yOwpAQCAtMjU4MCw2ICsyNTgxLDcgQEAKICAgICAgICAgICAgICAgICAgImVuYWJsZS1vZmZs
aW5lLXdlYi1hcHBsaWNhdGlvbi1jYWNoZSIsICZlbmFibGVPZmZsaW5lV2ViQXBwQ2FjaGUsCiAg
ICAgICAgICAgICAgICAgICJlZGl0aW5nLWJlaGF2aW9yIiwgJmVkaXRpbmdCZWhhdmlvciwKICAg
ICAgICAgICAgICAgICAgImVuYWJsZS11bml2ZXJzYWwtYWNjZXNzLWZyb20tZmlsZS11cmlzIiwg
JmVuYWJsZVVuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJJLAorICAgICAgICAgICAgICAgICAiZW5h
YmxlLWZpbGUtYWNjZXNzLWZyb20tZmlsZS11cmlzIiwgJmVuYWJsZUZpbGVBY2Nlc3NGcm9tRmls
ZVVSSSwKICAgICAgICAgICAgICAgICAgImVuYWJsZS1kb20tcGFzdGUiLCAmZW5hYmxlRE9NUGFz
dGUsCiAgICAgICAgICAgICAgICAgICJ0YWIta2V5LWN5Y2xlcy10aHJvdWdoLWVsZW1lbnRzIiwg
JnRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cywKICAgICAgICAgICAgICAgICAgImVuYWJsZS1z
aXRlLXNwZWNpZmljLXF1aXJrcyIsICZlbmFibGVTaXRlU3BlY2lmaWNRdWlya3MsCkBAIC0yNjEw
LDYgKzI2MTIsNyBAQAogICAgIHNldHRpbmdzLT5zZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNo
ZUVuYWJsZWQoZW5hYmxlT2ZmbGluZVdlYkFwcENhY2hlKTsKICAgICBzZXR0aW5ncy0+c2V0RWRp
dGluZ0JlaGF2aW9yKGNvcmUoZWRpdGluZ0JlaGF2aW9yKSk7CiAgICAgc2V0dGluZ3MtPnNldEFs
bG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKGVuYWJsZVVuaXZlcnNhbEFjY2Vzc0Zyb21G
aWxlVVJJKTsKKyAgICBzZXR0aW5ncy0+c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKGVu
YWJsZUZpbGVBY2Nlc3NGcm9tRmlsZVVSSSk7CiAgICAgc2V0dGluZ3MtPnNldERPTVBhc3RlQWxs
b3dlZChlbmFibGVET01QYXN0ZSk7CiAgICAgc2V0dGluZ3MtPnNldE5lZWRzU2l0ZVNwZWNpZmlj
UXVpcmtzKGVuYWJsZVNpdGVTcGVjaWZpY1F1aXJrcyk7CiAgICAgc2V0dGluZ3MtPnNldFVzZXNQ
YWdlQ2FjaGUodXNlUGFnZUNhY2hlKTsKQEAgLTI3MDMsNiArMjcwNiw4IEBACiAgICAgICAgIHNl
dHRpbmdzLT5zZXRFZGl0aW5nQmVoYXZpb3IoY29yZShzdGF0aWNfY2FzdDxXZWJLaXRFZGl0aW5n
QmVoYXZpb3I+KGdfdmFsdWVfZ2V0X2VudW0oJnZhbHVlKSkpKTsKICAgICBlbHNlIGlmIChuYW1l
ID09IGdfaW50ZXJuX3N0cmluZygiZW5hYmxlLXVuaXZlcnNhbC1hY2Nlc3MtZnJvbS1maWxlLXVy
aXMiKSkKICAgICAgICAgc2V0dGluZ3MtPnNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVV
UkxzKGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnZhbHVlKSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSBn
X2ludGVybl9zdHJpbmcoImVuYWJsZS1maWxlLWFjY2Vzcy1mcm9tLWZpbGUtdXJpcyIpKQorICAg
ICAgICBzZXR0aW5ncy0+c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKGdfdmFsdWVfZ2V0
X2Jvb2xlYW4oJnZhbHVlKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBnX2ludGVybl9zdHJpbmco
ImVuYWJsZS1kb20tcGFzdGUiKSkKICAgICAgICAgc2V0dGluZ3MtPnNldERPTVBhc3RlQWxsb3dl
ZChnX3ZhbHVlX2dldF9ib29sZWFuKCZ2YWx1ZSkpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19p
bnRlcm5fc3RyaW5nKCJ0YWIta2V5LWN5Y2xlcy10aHJvdWdoLWVsZW1lbnRzIikpIHsKSW5kZXg6
IFdlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dl
YlByZWZlcmVuY2VzLmgJKHJldmlzaW9uIDU0ODQ4KQorKysgV2ViS2l0L3dpbi9XZWJQcmVmZXJl
bmNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNjIsNiArMzYyLDEyIEBACiAgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVV
UkxzKAogICAgIC8qIFtpbl0gKi8gQk9PTCBhbGxvd0FjY2Vzcyk7CiAKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKAorICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogYWxsb3dBY2Nlc3MpOworCisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcygK
KyAgICAvKiBbaW5dICovIEJPT0wgYWxsb3dBY2Nlc3MpOworCiAgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGlzWFNTQXVkaXRvckVuYWJsZWQoCiAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBCT09MKiBlbmFibGVkKTsKIApJbmRleDogV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNl
S2V5c1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlByZWZlcmVuY2VLZXlz
UHJpdmF0ZS5oCShyZXZpc2lvbiA1NDg0OCkKKysrIFdlYktpdC93aW4vV2ViUHJlZmVyZW5jZUtl
eXNQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAKICNkZWZpbmUgV2Vi
S2l0SmF2YVNjcmlwdEVuYWJsZWRQcmVmZXJlbmNlS2V5ICJXZWJLaXRKYXZhU2NyaXB0RW5hYmxl
ZCIKICNkZWZpbmUgV2ViS2l0V2ViU2VjdXJpdHlFbmFibGVkUHJlZmVyZW5jZUtleSAiV2ViS2l0
V2ViU2VjdXJpdHlFbmFibGVkIgogI2RlZmluZSBXZWJLaXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zy
b21GaWxlVVJMc1ByZWZlcmVuY2VLZXkgIldlYktpdEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZp
bGVVUkxzIgorI2RlZmluZSBXZWJLaXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHNQcmVmZXJl
bmNlS2V5ICJXZWJLaXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMiCiAjZGVmaW5lIFdlYktp
dEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHlQcmVmZXJlbmNlS2V5ICJXZWJL
aXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5IgogI2RlZmluZSBXZWJLaXRQ
bHVnaW5zRW5hYmxlZFByZWZlcmVuY2VLZXkgIldlYktpdFBsdWdpbnNFbmFibGVkIgogI2RlZmlu
ZSBXZWJLaXREYXRhYmFzZXNFbmFibGVkUHJlZmVyZW5jZUtleSAiV2ViS2l0RGF0YWJhc2VzRW5h
YmxlZCIKSW5kZXg6IFdlYktpdC93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gNTQ4NDgpCisrKyBXZWJLaXQvd2luL1dlYlZpZXcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjIyLDYgKzQ2MjIsMTEgQEAKICAgICAgICAgcmV0dXJu
IGhyOwogICAgIHNldHRpbmdzLT5zZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcygh
IWVuYWJsZWQpOwogCisgICAgaHIgPSBwcmVmc1ByaXZhdGUtPmFsbG93RmlsZUFjY2Vzc0Zyb21G
aWxlVVJMcygmZW5hYmxlZCk7CisgICAgaWYgKEZBSUxFRChocikpCisgICAgICAgIHJldHVybiBo
cjsKKyAgICBzZXR0aW5ncy0+c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKCEhZW5hYmxl
ZCk7CisKICAgICBociA9IHByZWZzUHJpdmF0ZS0+aXNYU1NBdWRpdG9yRW5hYmxlZCgmZW5hYmxl
ZCk7CiAgICAgaWYgKEZBSUxFRChocikpCiAgICAgICAgIHJldHVybiBocjsKSW5kZXg6IFdlYktp
dC93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViUHJl
ZmVyZW5jZXMuY3BwCShyZXZpc2lvbiA1NDg0OCkKKysrIFdlYktpdC93aW4vV2ViUHJlZmVyZW5j
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDUsNiArMjA1LDcgQEAKICAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0SmF2YVNjcmlwdEVuYWJsZWRQcmVmZXJl
bmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLCBDRlNUUihXZWJLaXRXZWJTZWN1cml0eUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9v
bGVhblRydWUpOwogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJL
aXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29s
ZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJL
aXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRy
dWUpOwogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRYU1NB
dWRpdG9yRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEZyYW1lU2V0RmxhdHRlbmluZ0Vu
YWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKICAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0
b21hdGljYWxseVByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CkBAIC03OTIsNiArNzkz
LDIwIEBACiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViUHJlZmVyZW5jZXM6OmFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcygKKyAgICAvKiBbcmV0
dmFsXVtvdXRdICovIEJPT0wqIGFsbG93QWNjZXNzKQoreworICAgICphbGxvd0FjY2VzcyA9IGJv
b2xWYWx1ZUZvcktleShDRlNUUihXZWJLaXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHNQcmVm
ZXJlbmNlS2V5KSk7CisgICAgcmV0dXJuIFNfT0s7Cit9CisKK0hSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcygKKyAg
ICAvKiBbaW5dICovIEJPT0wgYWxsb3dBY2Nlc3MpCit7CisgICAgc2V0Qm9vbFZhbHVlKENGU1RS
KFdlYktpdEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMc1ByZWZlcmVuY2VLZXkpLCBhbGxvd0Fj
Y2Vzcyk7CisgICAgcmV0dXJuIFNfT0s7Cit9CisKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViUHJlZmVyZW5jZXM6OmlzWFNTQXVkaXRvckVuYWJsZWQoCiAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBCT09MKiBlbmFibGVkKQogewpJbmRleDogV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJQ
cmVmZXJlbmNlc1ByaXZhdGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vSW50ZXJmYWNl
cy9JV2ViUHJlZmVyZW5jZXNQcml2YXRlLmlkbAkocmV2aXNpb24gNTQ4NDgpCisrKyBXZWJLaXQv
d2luL0ludGVyZmFjZXMvSVdlYlByZWZlcmVuY2VzUHJpdmF0ZS5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTEwMCw0ICsxMDAsNyBAQAogCiAgICAgSFJFU1VMVCBzZXRDdXN0b21EcmFnQ3Vyc29yc0Vu
YWJsZWQoW2luXSBCT09MKTsKICAgICBIUkVTVUxUIGN1c3RvbURyYWdDdXJzb3JzRW5hYmxlZChb
b3V0LCByZXR2YWxdIEJPT0wqKTsKKworICAgIEhSRVNVTFQgYWxsb3dGaWxlQWNjZXNzRnJvbUZp
bGVVUkxzKFtvdXQsIHJldHZhbF0gQk9PTCAqYWxsb3dBY2Nlc3MpOworICAgIEhSRVNVTFQgc2V0
QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKFtpbl0gQk9PTCBhbGxvd0FjY2Vzcyk7CiB9Cklu
ZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCShyZXZpc2lv
biA1NDg0OCkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSw5IEBACiAtIChCT09MKWFsbG93VW5pdmVyc2Fs
QWNjZXNzRnJvbUZpbGVVUkxzOwogLSAodm9pZClzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21G
aWxlVVJMczooQk9PTClmbGFnOwogCistIChCT09MKWFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJM
czsKKy0gKHZvaWQpc2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzOihCT09MKWZsYWc7CisK
IC0gKEJPT0wpem9vbXNUZXh0T25seTsKIC0gKHZvaWQpc2V0Wm9vbXNUZXh0T25seTooQk9PTCl6
b29tc1RleHRPbmx5OwogCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtl
eXNQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVu
Y2VLZXlzUHJpdmF0ZS5oCShyZXZpc2lvbiA1NDg0OCkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9X
ZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBA
QAogI2RlZmluZSBXZWJLaXRKYXZhU2NyaXB0RW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRK
YXZhU2NyaXB0RW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0V2ViU2VjdXJpdHlFbmFibGVkUHJlZmVy
ZW5jZUtleSBAIldlYktpdFdlYlNlY3VyaXR5RW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0QWxsb3dV
bml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHNQcmVmZXJlbmNlS2V5IEAiV2ViS2l0QWxsb3dVbml2
ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMiCisjZGVmaW5lIFdlYktpdEFsbG93RmlsZUFjY2Vzc0Zy
b21GaWxlVVJMc1ByZWZlcmVuY2VLZXkgQCJXZWJLaXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVS
THMiCiAjZGVmaW5lIFdlYktpdEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHlQ
cmVmZXJlbmNlS2V5IEAiV2ViS2l0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxs
eSIKICNkZWZpbmUgV2ViS2l0UGx1Z2luc0VuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0UGx1
Z2luc0VuYWJsZWQiCiAjZGVmaW5lIFdlYktpdERhdGFiYXNlc0VuYWJsZWRQcmVmZXJlbmNlS2V5
IEAiV2ViS2l0RGF0YWJhc2VzRW5hYmxlZFByZWZlcmVuY2VLZXkiCkluZGV4OiBXZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQkocmV2aXNpb24gNTQ4NDgpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMTI4Niw2ICsxMjg2LDcgQEAKICAgICBzZXR0aW5ncy0+c2V0
SmF2YVNjcmlwdEVuYWJsZWQoW3ByZWZlcmVuY2VzIGlzSmF2YVNjcmlwdEVuYWJsZWRdKTsKICAg
ICBzZXR0aW5ncy0+c2V0V2ViU2VjdXJpdHlFbmFibGVkKFtwcmVmZXJlbmNlcyBpc1dlYlNlY3Vy
aXR5RW5hYmxlZF0pOwogICAgIHNldHRpbmdzLT5zZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21G
aWxlVVJMcyhbcHJlZmVyZW5jZXMgYWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHNdKTsK
KyAgICBzZXR0aW5ncy0+c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKFtwcmVmZXJlbmNl
cyBhbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHNdKTsKICAgICBzZXR0aW5ncy0+c2V0SmF2YVNj
cmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseShbcHJlZmVyZW5jZXMgamF2YVNjcmlwdENh
bk9wZW5XaW5kb3dzQXV0b21hdGljYWxseV0pOwogICAgIHNldHRpbmdzLT5zZXRNaW5pbXVtRm9u
dFNpemUoW3ByZWZlcmVuY2VzIG1pbmltdW1Gb250U2l6ZV0pOwogICAgIHNldHRpbmdzLT5zZXRN
aW5pbXVtTG9naWNhbEZvbnRTaXplKFtwcmVmZXJlbmNlcyBtaW5pbXVtTG9naWNhbEZvbnRTaXpl
XSk7CkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCShyZXZpc2lvbiA1NDg0
OCkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzE2LDYgKzMxNiw3IEBACiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZ
RVNdLCAgV2ViS2l0SmF2YVNjcmlwdEVuYWJsZWRQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNO
dW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgIFdlYktpdFdlYlNlY3VyaXR5RW5hYmxlZFByZWZl
cmVuY2VLZXksCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdLCAgV2ViS2l0
QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHNQcmVmZXJlbmNlS2V5LAorICAgICAgICBb
TlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgIFdlYktpdEFsbG93RmlsZUFjY2Vzc0Zyb21G
aWxlVVJMc1ByZWZlcmVuY2VLZXksCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZ
RVNdLCAgV2ViS2l0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseVByZWZlcmVu
Y2VLZXksCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdLCAgV2ViS2l0UGx1
Z2luc0VuYWJsZWRQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJv
b2w6WUVTXSwgIFdlYktpdERhdGFiYXNlc0VuYWJsZWRQcmVmZXJlbmNlS2V5LApAQCAtOTIwLDYg
KzkyMSwxNiBAQAogICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6IGZsYWcgZm9yS2V5OiBXZWJLaXRB
bGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMc1ByZWZlcmVuY2VLZXldOwogfQogCistIChC
T09MKWFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcworeworICAgIHJldHVybiBbc2VsZiBfYm9v
bFZhbHVlRm9yS2V5OiBXZWJLaXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHNQcmVmZXJlbmNl
S2V5XTsKK30KKworLSAodm9pZClzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHM6KEJPT0wp
ZmxhZworeworICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6IGZsYWcgZm9yS2V5OiBXZWJLaXRBbGxv
d0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHNQcmVmZXJlbmNlS2V5XTsKK30KKwogLSAoTlNUaW1lSW50
ZXJ2YWwpX2JhY2tGb3J3YXJkQ2FjaGVFeHBpcmF0aW9uSW50ZXJ2YWwKIHsKICAgICAvLyBGSVhN
RTogVGhlcmUncyBwcm9iYWJseSBubyBnb29kIHJlYXNvbiB0byByZWFkIGZyb20gdGhlIHN0YW5k
YXJkIHVzZXIgZGVmYXVsdHMgaW5zdGVhZCBvZiBzZWxmLgpJbmRleDogV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAJ
KHJldmlzaW9uIDU0ODQ4KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0
VGVzdENvbnRyb2xsZXJRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNyw2ICszMTcsMTEgQEAK
ICAgICBtX2RydC0+d2ViUGFnZSgpLT5zZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRp
bmdzOjpMb2NhbENvbnRlbnRDYW5BY2Nlc3NSZW1vdGVVcmxzLCBlbmFibGVkKTsKIH0KIAordm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKGJv
b2wgZW5hYmxlZCkKK3sKKyAgICBtX2RydC0+d2ViUGFnZSgpLT5zZXR0aW5ncygpLT5zZXRBdHRy
aWJ1dGUoUVdlYlNldHRpbmdzOjpMb2NhbENvbnRlbnRDYW5BY2Nlc3NGaWxlVXJscywgZW5hYmxl
ZCk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEphdmFTY3JpcHRQcm9maWxp
bmdFbmFibGVkKGJvb2wgZW5hYmxlKQogewogICAgIG1fdG9wTG9hZGluZ0ZyYW1lLT5wYWdlKCkt
PnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OkRldmVsb3BlckV4dHJhc0Vu
YWJsZWQsIHRydWUpOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0
VGVzdENvbnRyb2xsZXJRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAkocmV2aXNpb24gNTQ4NDgpCisrKyBXZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEyMCw2ICsxMjAsNyBAQAogCiAgICAgdm9pZCBzZXRGcmFtZVNldEZsYXR0
ZW5pbmdFbmFibGVkKGJvb2wgZW5hYmxlKTsKICAgICB2b2lkIHNldEFsbG93VW5pdmVyc2FsQWNj
ZXNzRnJvbUZpbGVVUkxzKGJvb2wgZW5hYmxlKTsKKyAgICB2b2lkIHNldEFsbG93RmlsZUFjY2Vz
c0Zyb21GaWxlVVJMcyhib29sIGVuYWJsZSk7CiAgICAgdm9pZCBzZXRKYXZhU2NyaXB0UHJvZmls
aW5nRW5hYmxlZChib29sIGVuYWJsZSk7CiAgICAgdm9pZCBzZXRUaW1lbGluZVByb2ZpbGluZ0Vu
YWJsZWQoYm9vbCBlbmFibGUpOwogICAgIHZvaWQgc2V0Rml4ZWRDb250ZW50c1NpemUoaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KTsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9M
YXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAkocmV2aXNpb24gNTQ4
NDgpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xs
ZXJHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDgsNiArMzQ4LDE1IEBACiAgICAgZ19vYmpl
Y3Rfc2V0KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS11bml2ZXJzYWwtYWNjZXNzLWZyb20t
ZmlsZS11cmlzIiwgZmxhZywgTlVMTCk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhib29sIGZsYWcpCit7CisgICAgV2ViS2l0
V2ViVmlldyogdmlldyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3dlYl92aWV3KG1haW5GcmFtZSk7
CisgICAgQVNTRVJUKHZpZXcpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzID0g
d2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh2aWV3KTsKKyAgICBnX29iamVjdF9zZXQoR19P
QkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLWZpbGUtYWNjZXNzLWZyb20tZmlsZS11cmlzIiwgZmxh
ZywgTlVMTCk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dGhvckFuZFVz
ZXJTdHlsZXNFbmFibGVkKGJvb2wgZmxhZykKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50Cklu
ZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRU
ZXN0Q29udHJvbGxlcld4LmNwcAkocmV2aXNpb24gNTQ4NDgpCisrKyBXZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTgwLDYgKzE4MCwxMSBAQAogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKIH0KIAordm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wg
ZW5hYmxlZCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9CisKIHZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKGJvb2wgZmxhZykKIHsK
ICAgICAvLyBGSVhNRTogaW1wbGVtZW50CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCShyZXZpc2lvbiA1NDg0OCkKKysrIFdlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzk2LDYgKzM5Niw3IEBACiAgICAgV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzID0g
W1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdOwogCiAgICAgW3ByZWZlcmVuY2Vz
IHNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzOllFU107CisgICAgW3ByZWZlcmVu
Y2VzIHNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMczpZRVNdOwogICAgIFtwcmVmZXJlbmNl
cyBzZXRTdGFuZGFyZEZvbnRGYW1pbHk6QCJUaW1lcyJdOwogICAgIFtwcmVmZXJlbmNlcyBzZXRG
aXhlZEZvbnRGYW1pbHk6QCJDb3VyaWVyIl07CiAgICAgW3ByZWZlcmVuY2VzIHNldFNlcmlmRm9u
dEZhbWlseTpAIlRpbWVzIl07CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
TGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCShyZXZpc2lvbiA1NDg0
OCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxl
ck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzM0LDYgKzMzNCwxMSBAQAogICAgIFtbW21haW5G
cmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gc2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmls
ZVVSTHM6ZW5hYmxlZF07CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93
RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhib29sIGVuYWJsZWQpCit7CisgICAgW1tbbWFpbkZyYW1l
IHdlYlZpZXddIHByZWZlcmVuY2VzXSBzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHM6ZW5h
YmxlZF07Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFBvcHVwQmxvY2tpbmdF
bmFibGVkKGJvb2wgcG9wdXBCbG9ja2luZ0VuYWJsZWQpCiB7CiAgICAgW1tbbWFpbkZyYW1lIHdl
YlZpZXddIHByZWZlcmVuY2VzXSBzZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNh
bGx5OiFwb3B1cEJsb2NraW5nRW5hYmxlZF07CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA1NDg0OCkK
KysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTQwLDYgKzk0MCwxOCBAQAogICAgIHJldHVybiBKU1ZhbHVlTWFr
ZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgc2V0QWxsb3dGaWxl
QWNjZXNzRnJvbUZpbGVVUkxzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3Vu
dCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQor
eworICAgIC8vIEhhcyBtYWMgJiB3aW5kb3dzIGltcGxlbWVudGF0aW9uCisgICAgaWYgKGFyZ3Vt
ZW50Q291bnQgPCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4
dCk7CisKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0
PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsK
KyAgICBjb250cm9sbGVyLT5zZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoSlNWYWx1ZVRv
Qm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMF0pKTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFr
ZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgc2V0VGFiS2V5Q3lj
bGVzVGhyb3VnaEVsZW1lbnRzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3Vu
dCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQog
ewogICAgIC8vIEhhcyBtYWMgJiB3aW5kb3dzIGltcGxlbWVudGF0aW9uCkBAIC0xMzgwLDYgKzEz
OTIsNyBAQAogICAgICAgICB7ICJyZXBhaW50U3dlZXBIb3Jpem9udGFsbHkiLCByZXBhaW50U3dl
ZXBIb3Jpem9udGFsbHlDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRBY2NlcHRzRWRp
dGluZyIsIHNldEFjY2VwdHNFZGl0aW5nQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0
QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMiLCBzZXRBbGxvd1VuaXZlcnNhbEFjY2Vz
c0Zyb21GaWxlVVJMc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgInNldEFsbG93RmlsZUFj
Y2Vzc0Zyb21GaWxlVVJMcyIsIHNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMc0NhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEFsd2F5c0FjY2VwdENvb2tpZXMiLCBzZXRBbHdheXNB
Y2NlcHRDb29raWVzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0QXBwQ2FjaGVNYXhp
bXVtU2l6ZSIsIHNldEFwcENhY2hlTWF4aW11bVNpemVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LCAKICAgICAg
ICAgeyAic2V0QXV0aGVudGljYXRpb25QYXNzd29yZCIsIHNldEF1dGhlbnRpY2F0aW9uUGFzc3dv
cmRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LApJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCShyZXZpc2lvbiA1
NDg0OCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJv
bGxlcldpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwNiw2ICs0MDYsMjMgQEAKICAgICBwcmVm
c1ByaXZhdGUtPnNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKGVuYWJsZWQpOwog
fQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmls
ZVVSTHMoYm9vbCBlbmFibGVkKQoreworICAgIENPTVB0cjxJV2ViVmlldz4gd2ViVmlldzsKKyAg
ICBpZiAoRkFJTEVEKGZyYW1lLT53ZWJWaWV3KCZ3ZWJWaWV3KSkpCisgICAgICAgIHJldHVybjsK
KworICAgIENPTVB0cjxJV2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzOworICAgIGlmIChGQUlM
RUQod2ViVmlldy0+cHJlZmVyZW5jZXMoJnByZWZlcmVuY2VzKSkpCisgICAgICAgIHJldHVybjsK
KworICAgIENPTVB0cjxJV2ViUHJlZmVyZW5jZXNQcml2YXRlPiBwcmVmc1ByaXZhdGUoUXVlcnks
IHByZWZlcmVuY2VzKTsKKyAgICBpZiAoIXByZWZzUHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgcHJlZnNQcml2YXRlLT5zZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoZW5hYmxl
ZCk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFBvcHVwQmxvY2tpbmdFbmFi
bGVkKGJvb2wgZW5hYmxlZCkKIHsKICAgICBDT01QdHI8SVdlYlZpZXc+IHdlYlZpZXc7CkluZGV4
OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5j
cHAJKHJldmlzaW9uIDU0ODQ4KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1
bXBSZW5kZXJUcmVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzg3LDYgKzc4Nyw3IEBACiAgICAg
Q09NUHRyPElXZWJQcmVmZXJlbmNlc1ByaXZhdGU+IHByZWZzUHJpdmF0ZShRdWVyeSwgcHJlZmVy
ZW5jZXMpOwogICAgIGlmIChwcmVmc1ByaXZhdGUpIHsKICAgICAgICAgcHJlZnNQcml2YXRlLT5z
ZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyhUUlVFKTsKKyAgICAgICAgcHJlZnNQ
cml2YXRlLT5zZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoVFJVRSk7CiAgICAgICAgIHBy
ZWZzUHJpdmF0ZS0+c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoVFJVRSk7CiAgICAgICAg
IHByZWZzUHJpdmF0ZS0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChGQUxTRSk7CiAgICAgICAg
IHByZWZzUHJpdmF0ZS0+c2V0RXhwZXJpbWVudGFsTm90aWZpY2F0aW9uc0VuYWJsZWQoVFJVRSk7
CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmgJKHJldmlzaW9uIDU0ODQ4KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksNyBAQAog
ICAgIHZvaWQgcmVtb3ZlQWxsVmlzaXRlZExpbmtzKCk7CiAgICAgdm9pZCBzZXRBY2NlcHRzRWRp
dGluZyhib29sIGFjY2VwdHNFZGl0aW5nKTsKICAgICB2b2lkIHNldEFsbG93VW5pdmVyc2FsQWNj
ZXNzRnJvbUZpbGVVUkxzKGJvb2wpOworICAgIHZvaWQgc2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZp
bGVVUkxzKGJvb2wpOwogICAgIHZvaWQgc2V0QXBwQ2FjaGVNYXhpbXVtU2l6ZSh1bnNpZ25lZCBs
b25nIGxvbmcgcXVvdGEpOwogICAgIHZvaWQgc2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQo
Ym9vbCk7CiAgICAgdm9pZCBzZXRDYWNoZU1vZGVsKGludCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>