<?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>105727</bug_id>
          
          <creation_ts>2012-12-24 09:36:22 -0800</creation_ts>
          <short_desc>Web Inspector: Support inspector file system access with isolated file system through InspectorFrontendHost.</short_desc>
          <delta_ts>2013-01-15 01:07:35 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Vsevolod Vlasov">vsevik</reporter>
          <assigned_to name="Vsevolod Vlasov">vsevik</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>keishi</cc>
    
    <cc>kinuko</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>796996</commentid>
    <comment_count>0</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-12-24 09:36:22 -0800</bug_when>
    <thetext>Inspector needs file system access to allow developers edit/add sources (even those that are not loaded from server, e.g. deployment descriptors, server scripts).

We plan to use File System API (isolated file system).
FileSystem access request is implemented through InspectorFrontendHost methods and InspectorFrontendAPI callbacks.

InspectorFrontendHost.canAccessFileSystem() - Returns true if file system access is implemented for this embedder.

InspectorFrontendHost.requestFileSystemPermissions() - This method should be called once on inspector start.
InspectorFrontendAPI.fileSystemPermissionsLoaded(fileSystems) - This method is called once isolated file systems are registered, and provides inspector with all necessary information.

void selectFolderAndGrantFileSystemPermission() - Requests embedder to show user select file dialog and register selected dialog as a file system.
InspectorFrontendAPI.fileSystemFolderSelected(errorMessage, fileSystem) - This method is called after user action. 

void revokeFileSystemPermission(in DOMString fileSystemPath) - Requests embedder to revoke registered isolated file system.
InspectorFrontendAPI.fileSystemFolderPermissionsRevoked(fileSystemPath) - revoke callback.

DOMFileSystem isolatedFileSystem(in DOMString fileSystemId, in DOMString registeredName) - Creates javascript DOMFileSystem object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796998</commentid>
    <comment_count>1</comment_count>
      <attachid>180676</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-12-24 09:43:35 -0800</bug_when>
    <thetext>Created attachment 180676
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796999</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-24 09:48:43 -0800</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797000</commentid>
    <comment_count>3</comment_count>
      <attachid>180676</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-24 09:50:34 -0800</bug_when>
    <thetext>Comment on attachment 180676
Patch

Attachment 180676 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15527053</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797001</commentid>
    <comment_count>4</comment_count>
      <attachid>180676</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-12-24 09:57:15 -0800</bug_when>
    <thetext>Comment on attachment 180676
Patch

Attachment 180676 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15495528</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797002</commentid>
    <comment_count>5</comment_count>
      <attachid>180676</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-24 09:57:17 -0800</bug_when>
    <thetext>Comment on attachment 180676
Patch

Attachment 180676 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15527055</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797003</commentid>
    <comment_count>6</comment_count>
      <attachid>180676</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-24 09:57:35 -0800</bug_when>
    <thetext>Comment on attachment 180676
Patch

Attachment 180676 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15507496</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797005</commentid>
    <comment_count>7</comment_count>
      <attachid>180676</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-12-24 10:03:37 -0800</bug_when>
    <thetext>Comment on attachment 180676
Patch

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

&gt; Source/WebCore/inspector/InspectorFrontendClient.h:75
&gt; +    virtual bool canAccessFileSystem() = 0;

supportsFilesystems()

&gt; Source/WebCore/inspector/InspectorFrontendClient.h:76
&gt; +    virtual void requestFileSystemPermissions() = 0;

requestFilesystems()

&gt; Source/WebCore/inspector/InspectorFrontendClient.h:77
&gt; +    virtual void selectFolderAndGrantFileSystemPermission() = 0;

addFilesystem()

&gt; Source/WebCore/inspector/InspectorFrontendClient.h:78
&gt; +    virtual void revokeFileSystemPermission(const String&amp; fileSystemPath) = 0;

removeFilesystem()

&gt; Source/WebCore/inspector/front-end/FileSystemMapping.js:40
&gt; +    fileSystemPathes: function() { },

Paths

&gt; Source/WebCore/inspector/front-end/FileSystemMapping.js:46
&gt; +    fileSystemPathForURI: function(uri) { },

fileSystemForURI

&gt; Source/WebCore/inspector/front-end/FileSystemMapping.js:52
&gt; +    filePathForURI: function(uri) { },

pathForURI

&gt; Source/WebCore/inspector/front-end/FileSystemMapping.js:59
&gt; +    uriForPath: function(fileSystemPath, filePath) { },

Should you introduce a FileDescriptor class?

&gt; Source/WebCore/inspector/front-end/FileSystemMapping.js:65
&gt; +    uriPrefixForPath: function(path) { }

Why do you need this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797921</commentid>
    <comment_count>8</comment_count>
      <attachid>180882</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-12-28 09:05:10 -0800</bug_when>
    <thetext>Created attachment 180882
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797924</commentid>
    <comment_count>9</comment_count>
      <attachid>180884</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-12-28 09:13:11 -0800</bug_when>
    <thetext>Created attachment 180884
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798056</commentid>
    <comment_count>10</comment_count>
      <attachid>180918</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-12-28 21:47:12 -0800</bug_when>
    <thetext>Created attachment 180918
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798058</commentid>
    <comment_count>11</comment_count>
      <attachid>180919</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-12-28 22:10:18 -0800</bug_when>
    <thetext>Created attachment 180919
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>798121</commentid>
    <comment_count>12</comment_count>
      <attachid>180919</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-12-29 05:05:10 -0800</bug_when>
    <thetext>Comment on attachment 180919
Patch

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

&gt; Source/WebCore/inspector/front-end/IsolatedFilesystemModel.js:205
&gt; +    this._isolatedFilesystemModel = isolatedFilesystemModel;

You either need a new model or a new manager :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803281</commentid>
    <comment_count>13</comment_count>
      <attachid>180919</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2013-01-09 06:13:27 -0800</bug_when>
    <thetext>Comment on attachment 180919
Patch

A few comments for the changes in filesystem Module:

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

&gt; Source/WebCore/Modules/filesystem/DOMFileSystem.cpp:65
&gt; +PassRefPtr&lt;DOMFileSystem&gt; DOMFileSystem::createIsolatedFileSystem(ScriptExecutionContext* context, const String&amp; filesystemId, const String&amp; registeredName)

nit: since the &apos;registeredName&apos; part is used as (a part of) the root directory path, naming this &apos;additionalRootPath&apos; or something like that might make it clearer?

&gt; Source/WebCore/Modules/filesystem/DOMFileSystem.cpp:86
&gt; +        rootURL.append(registeredName);

Can we check if the given registeredName doesn&apos;t contain any &apos;..&apos;?  (Also if there&apos;s any assumptions we should probably check them here too)

&gt; Source/WebKit/chromium/src/InspectorFrontendClientImpl.cpp:177
&gt; +

nit: extra empty line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803321</commentid>
    <comment_count>14</comment_count>
      <attachid>180919</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2013-01-09 07:19:02 -0800</bug_when>
    <thetext>Comment on attachment 180919
Patch

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

&gt; Source/WebCore/inspector/InspectorFrontendHost.cpp:327
&gt; +    return DOMFileSystem::createIsolatedFileSystem(context, filesystemId, registeredName);

By the way instead of modifying DOMFileSystem.{h,cc} you can also create fileSystemName and rootPath in the embedder side (i.e. chromium) and directly create a DOMFileSystem like this:

DOMFileSystem::create(context, FileSystemTypeIsolated, fileSystemName, rootPath);

while it may look a bit tricky it seems more common pattern when we create custom isolated filesystems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806298</commentid>
    <comment_count>15</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2013-01-14 05:56:54 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 180919 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=180919&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorFrontendHost.cpp:327
&gt; &gt; +    return DOMFileSystem::createIsolatedFileSystem(context, filesystemId, registeredName);
&gt; 
&gt; By the way instead of modifying DOMFileSystem.{h,cc} you can also create fileSystemName and rootPath in the embedder side (i.e. chromium) and directly create a DOMFileSystem like this:
&gt; 
&gt; DOMFileSystem::create(context, FileSystemTypeIsolated, fileSystemName, rootPath);
&gt; 
&gt; while it may look a bit tricky it seems more common pattern when we create custom isolated filesystems.

Sure, this is exactly what I need, thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807082</commentid>
    <comment_count>16</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2013-01-15 01:07:35 -0800</bug_when>
    <thetext>Committed r139726: &lt;http://trac.webkit.org/changeset/139726&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180676</attachid>
            <date>2012-12-24 09:43:35 -0800</date>
            <delta_ts>2012-12-28 09:05:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105727-20121224214047.patch</filename>
            <type>text/plain</type>
            <size>36691</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NDMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGYyZjBhYTgxNjc3ZDZm
NDNmOWYyOTUwODU1MWJiNGI5YjM0YmEwNC4uYWVhOGZmNWYxZjljZTRkYjFhMDVmODA3MDUwYTVl
MjMwNzA5NmI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTEyLTI0ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFN1cHBvcnQgaW5zcGVjdG9yIGZpbGUgc3lzdGVtIGFjY2VzcyB3aXRoIGlzb2xhdGVkIGZp
bGUgc3lzdGVtIHRocm91Z2ggSW5zcGVjdG9yRnJvbnRlbmRIb3N0LgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1NzI3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRmlsZSBzeXN0ZW0gYWNjZXNzIHRocm91
Z2ggaXNvbGF0ZWQgZmlsZSBzeXN0ZW0gaXMgaW1wbGVtZW50ZWQgaW4gaW5zcGVjdG9yLgorICAg
ICAgICBGaWxlIHN5c3RlbSBhY2Nlc3MgcmVxdWVzdHMgYXJlIHNlbnQgdGhyb3VnaCBJbnNwZWN0
b3JGcm9udGVuZEhvc3QuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kQ2xpZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JGcm9udGVuZENsaWVudCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmNhbkFjY2Vzc0ZpbGVT
eXN0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6
cmVxdWVzdEZpbGVTeXN0ZW1QZXJtaXNzaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JGcm9udGVuZENsaWVudExvY2FsOjpzZWxlY3RGb2xkZXJBbmRHcmFudEZpbGVTeXN0ZW1QZXJt
aXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6
OnJldm9rZUZpbGVTeXN0ZW1QZXJtaXNzaW9uKToKKyAgICAgICAgKEluc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpjYW5BY2Nlc3NG
aWxlU3lzdGVtKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRnJvbnRlbmRIb3N0OjpyZXF1ZXN0RmlsZVN5c3RlbVBlcm1pc3Npb25zKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kSG9zdDo6c2VsZWN0Rm9sZGVyQW5kR3JhbnRGaWxl
U3lzdGVtUGVybWlzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEhv
c3Q6OnJldm9rZUZpbGVTeXN0ZW1QZXJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckZyb250ZW5kSG9zdDo6aXNvbGF0ZWRGaWxlU3lzdGVtKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KEluc3BlY3RvckZyb250ZW5kSG9zdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kSG9zdC5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1hcHBpbmcuanM6IEFk
ZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSXNvbGF0ZWRGaWxlU3lzdGVtTW9k
ZWwuanM6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYzoK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2V4dGVybnMuanM6CisgICAgICAgIChET01G
aWxlU3lzdGVtKToKKyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kSG9zdEFQSS5wcm90b3R5cGUu
Y2FuQWNjZXNzRmlsZVN5c3RlbSk6CisgICAgICAgIChJbnNwZWN0b3JGcm9udGVuZEhvc3RBUEku
cHJvdG90eXBlLnJlcXVlc3RGaWxlU3lzdGVtUGVybWlzc2lvbnMpOgorICAgICAgICAoSW5zcGVj
dG9yRnJvbnRlbmRIb3N0QVBJLnByb3RvdHlwZS5zZWxlY3RGb2xkZXJBbmRHcmFudEZpbGVTeXN0
ZW1QZXJtaXNzaW9uKToKKyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kSG9zdEFQSS5wcm90b3R5
cGUucmV2b2tlRmlsZVN5c3RlbVBlcm1pc3Npb24pOgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRl
bmRIb3N0QVBJLnByb3RvdHlwZS5pc29sYXRlZEZpbGVTeXN0ZW0pOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9pbnNwZWN0b3IuanM6CisKIDIwMTItMTItMjMgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6
a292QGNocm9taXVtLm9yZz4KIAogICAgICAgICBTcGxpdCBmYXN0LXJlamVjdGlvbiBmaWx0ZXIg
bG9naWMgb2ZmIFNlbGVjdG9yQ2hlY2tlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
N2U1YjBjY2Q3NmYzZGQyODdjMDYwMTNhZTg5NjIyZTk5ODk5ODQwOC4uMDAwZWMxMzdmZjg2MTU5
MzBkOTlmOTQ1ODljYmViNDlkOGYyNGNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNiBAQAorMjAxMi0xMi0yNCAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBTdXBwb3J0IGluc3BlY3RvciBmaWxl
IHN5c3RlbSBhY2Nlc3Mgd2l0aCBpc29sYXRlZCBmaWxlIHN5c3RlbSB0aHJvdWdoIEluc3BlY3Rv
ckZyb250ZW5kSG9zdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwNTcyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEZpbGUgc3lzdGVtIGFjY2VzcyBtZXRob2RzIHBsdW1iaW5nIG1hZGUgZm9yIENocm9t
aXVtLgorCisgICAgICAgICogcHVibGljL1dlYkRldlRvb2xzRnJvbnRlbmRDbGllbnQuaDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNGcm9udGVuZENsaWVudDo6cmVxdWVzdEZpbGVTeXN0
ZW1QZXJtaXNzaW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzRnJvbnRlbmRDbGll
bnQ6OnNlbGVjdEZvbGRlckFuZEdyYW50RmlsZVN5c3RlbVBlcm1pc3Npb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50OjpyZXZva2VGaWxlU3lzdGVtUGVybWlz
c2lvbik6CisgICAgICAgIChXZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50KToKKyAgICAgICAgKiBz
cmMvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRJbXBsOjpjYW5BY2Nlc3NGaWxlU3lzdGVtKToKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbDo6
cmVxdWVzdEZpbGVTeXN0ZW1QZXJtaXNzaW9ucyk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50SW1wbDo6c2VsZWN0Rm9sZGVyQW5kR3JhbnRGaWxlU3lzdGVtUGVybWlz
c2lvbik6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbDo6cmV2
b2tlRmlsZVN5c3RlbVBlcm1pc3Npb24pOgorICAgICAgICAqIHNyYy9JbnNwZWN0b3JGcm9udGVu
ZENsaWVudEltcGwuaDoKKyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbCk6CisK
IDIwMTItMTItMjEgIFhpYW56aHUgV2FuZyAgPHdhbmd4aWFuemh1QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbQ2hyb21pdW0tQW5kcm9pZF0gVXNlIGhhcmZidXp6LW5nIGluc3RlYWQgb2YgaGFy
ZmJ1enotb2xkIG9uIEFuZHJvaWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBjZjliYmExYjlmMDY4MTk3
MmZmY2M1MWY5OTY1YzZmMTg3ZDNhYzdkLi5iMTUwNDdmOGIyZmNjYmRjODNmZjRmMzRjM2RmYjI4
ODkzMGZmMjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC01MTIwLDYgKzUxMjAsNyBAQAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzJywKICAgICAgICAg
ICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblZpZXcuanMnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZU1hbmFnZXIuanMnLAorICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1hcHBpbmcuanMnLAogICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1vZGVsLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL0ZpbGVVdGlscy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250
LWVuZC9Gb250Vmlldy5qcycsCkBAIC01MTM1LDYgKzUxMzYsNyBAQAogICAgICAgICAgICAgJ2lu
c3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5qcycsCiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JWaWV3LmpzJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcycsCisgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC9Jc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbC5qcycsCiAgICAgICAgICAgICAn
aW5zcGVjdG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0Rm9ybWF0dGVyLmpzJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL2pzZGlmZmxpYi5qcycsCiAgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC9LZXlib2FyZFNob3J0Y3V0LmpzJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggMjgyMGQ1ZTFhOGJjMTlkMjA3ZmNlMGZh
ODQ5ODY1MDBhMjJjMGUzYy4uYjdhYjE4NDkyYWVkZjJkOWM4MGRjMmYzYmM5MWQyMzJhZGNkOWQx
YyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAg
LTc2NTgxLDYgKzc2NTgxLDEwIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXEZpbGVTeXN0ZW1NYXBwaW5n
LmpzIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0i
Li5caW5zcGVjdG9yXGZyb250LWVuZFxGaWxlU3lzdGVtTW9kZWwuanMiCiAJCQkJCT4KIAkJCQk8
L0ZpbGU+CkBAIC03NjcxNyw2ICs3NjcyMSwxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJ
CTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxJc29sYXRl
ZEZpbGVTeXN0ZW1Nb2RlbC5qcyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcY21camF2YXNjcmlwdC5qcyIK
IAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kQ2xpZW50LmgKaW5kZXggZjdmZDg1YzgxNmZkZmMxZTg5ZTc1YTMxNGI2
ZTkyNjhjNzAwYzEyNy4uNmZjODE4YjkyZTViMzA1MGEwZWQ4YmViZjcxNzdlYmM3NzBjMjYyYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xp
ZW50LmgKQEAgLTcxLDYgKzcxLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVj
dGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2Vu
ZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJikgPSAwOworCisgICAgdmlydHVhbCBib29s
IGNhbkFjY2Vzc0ZpbGVTeXN0ZW0oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RGaWxl
U3lzdGVtUGVybWlzc2lvbnMoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNlbGVjdEZvbGRlckFu
ZEdyYW50RmlsZVN5c3RlbVBlcm1pc3Npb24oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJldm9r
ZUZpbGVTeXN0ZW1QZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYgZmlsZVN5c3RlbVBhdGgpID0gMDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCmluZGV4IDdmOWYwMjM0
ZTM5Nzk5OTlhN2M4MjQ5ODEwMjVlMmM3NjdmNjkyNjguLjU0MGI3MThjOTgzOWM5YzE1MWFmZDBm
M2E3ZTRlNjcwZmYyYTZmOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaApAQCAtNzYsNiArNzYsMTEgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSk7CiAKKyAgICB2aXJ0dWFsIGJvb2wgY2FuQWNjZXNzRmlsZVN5c3RlbSgpIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RGaWxlU3lzdGVtUGVybWlz
c2lvbnMoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0Rm9sZGVyQW5kR3JhbnRGaWxlU3lz
dGVtUGVybWlzc2lvbigpIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZXZva2VGaWxlU3lzdGVtUGVy
bWlzc2lvbihjb25zdCBTdHJpbmcmIGZpbGVTeXN0ZW1QYXRoKSB7IH0KKwogICAgIGJvb2wgY2Fu
QXR0YWNoV2luZG93KCk7CiAgICAgdm9pZCBzZXREb2NraW5nVW5hdmFpbGFibGUoYm9vbCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhv
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5j
cHAKaW5kZXggMTliNzEyZDViNjc0M2YyYTRjOGI4NTlhYTc1OWQ5YTJlYmM2M2IwMS4uNWJkYjU1
MjViYTE1NzZjZmFhNjNiNDIwZjM1Y2IzMmZkN2U5ZTA2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKQEAgLTM3LDYgKzM3LDcg
QEAKICNpbmNsdWRlICJDb250ZXh0TWVudUl0ZW0uaCIKICNpbmNsdWRlICJDb250ZXh0TWVudUNv
bnRyb2xsZXIuaCIKICNpbmNsdWRlICJDb250ZXh0TWVudVByb3ZpZGVyLmgiCisjaW5jbHVkZSAi
RE9NRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZS5o
IgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCkBAIC0yOTQsNiArMjk1LDU3IEBAIFN0cmluZyBJ
bnNwZWN0b3JGcm9udGVuZEhvc3Q6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgU3Ry
aW5nJiB1cmwpCiAgICAgcmV0dXJuIFN0cmluZyhkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwog
fQogCitib29sIEluc3BlY3RvckZyb250ZW5kSG9zdDo6Y2FuQWNjZXNzRmlsZVN5c3RlbSgpCit7
CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICByZXR1cm4gbV9jbGllbnQtPmNhbkFjY2Vzc0Zp
bGVTeXN0ZW0oKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRl
bmRIb3N0OjpyZXF1ZXN0RmlsZVN5c3RlbVBlcm1pc3Npb25zKCkKK3sKKyAgICBpZiAobV9jbGll
bnQpCisgICAgICAgIG1fY2xpZW50LT5yZXF1ZXN0RmlsZVN5c3RlbVBlcm1pc3Npb25zKCk7Cit9
CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpzZWxlY3RGb2xkZXJBbmRHcmFudEZpbGVT
eXN0ZW1QZXJtaXNzaW9uKCkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50
LT5zZWxlY3RGb2xkZXJBbmRHcmFudEZpbGVTeXN0ZW1QZXJtaXNzaW9uKCk7Cit9CisKK3ZvaWQg
SW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpyZXZva2VGaWxlU3lzdGVtUGVybWlzc2lvbihjb25zdCBT
dHJpbmcmIGZpbGVTeXN0ZW1QYXRoKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9j
bGllbnQtPnJldm9rZUZpbGVTeXN0ZW1QZXJtaXNzaW9uKGZpbGVTeXN0ZW1QYXRoKTsKK30KKwor
UGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6Omlzb2xhdGVk
RmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIGZpbGVTeXN0ZW1JZCwgY29uc3QgU3RyaW5nJiByZWdp
c3RlcmVkTmFtZSkKK3sKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gbV9m
cm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpOworCisgICAgU3RyaW5nQnVpbGRl
ciBmaWxlU3lzdGVtTmFtZTsKKyAgICBmaWxlU3lzdGVtTmFtZS5hcHBlbmQoY29udGV4dC0+c2Vj
dXJpdHlPcmlnaW4oKS0+ZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgIGZpbGVTeXN0ZW1OYW1l
LmFwcGVuZCgiOklzb2xhdGVkXyIpOworICAgIGZpbGVTeXN0ZW1OYW1lLmFwcGVuZChmaWxlU3lz
dGVtSWQpOworCisgICAgLy8gVGhlIHJvb3RVUkwgY3JlYXRlZCBoZXJlIGlzIGdvaW5nIHRvIGJl
IGF0dGFjaGVkIHRvIGVhY2ggZmlsZXN5c3RlbSByZXF1ZXN0IGFuZAorICAgIC8vIGlzIHRvIGJl
IHZhbGlkYXRlZCBlYWNoIHRpbWUgdGhlIHJlcXVlc3QgaXMgYmVpbmcgaGFuZGxlZC4KKyAgICBT
dHJpbmdCdWlsZGVyIHJvb3RVUkw7CisgICAgcm9vdFVSTC5hcHBlbmQoImZpbGVzeXN0ZW06Iik7
CisgICAgcm9vdFVSTC5hcHBlbmQoY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmco
KSk7CisgICAgcm9vdFVSTC5hcHBlbmQoIi8iKTsKKyAgICByb290VVJMLmFwcGVuZChET01GaWxl
U3lzdGVtQmFzZTo6aXNvbGF0ZWRQYXRoUHJlZml4KTsKKyAgICByb290VVJMLmFwcGVuZCgiLyIp
OworICAgIHJvb3RVUkwuYXBwZW5kKGZpbGVTeXN0ZW1JZCk7CisgICAgcm9vdFVSTC5hcHBlbmQo
Ii8iKTsKKyAgICByb290VVJMLmFwcGVuZChyZWdpc3RlcmVkTmFtZSk7CisgICAgcm9vdFVSTC5h
cHBlbmQoIi8iKTsKKworICAgIFJlZlB0cjxET01GaWxlU3lzdGVtPiBkb21GaWxlU3lzdGVtID0g
RE9NRmlsZVN5c3RlbTo6Y3JlYXRlKGNvbnRleHQsIGZpbGVTeXN0ZW1OYW1lLnRvU3RyaW5nKCks
IEZpbGVTeXN0ZW1UeXBlSXNvbGF0ZWQsIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCByb290VVJMLnRv
U3RyaW5nKCkpLCBBc3luY0ZpbGVTeXN0ZW06OmNyZWF0ZSgpKTsKKyAgICByZXR1cm4gZG9tRmls
ZVN5c3RlbS5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZEhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZEhvc3QuaAppbmRleCBlYTZkMTAxOTgzZDk5OTk3ZDQyYTcwOTI5OWY2MjJmZWRj
OTgzNTAxLi41NDEzNWUwZWU0OWRiNmIyYzBhN2FjYTU0NTA4OTVmYjU1NjIxMzMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oCkBAIC0z
OSw2ICszOSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRleHRNZW51SXRl
bTsKK2NsYXNzIERPTUZpbGVTeXN0ZW07CiBjbGFzcyBFdmVudDsKIGNsYXNzIEZyb250ZW5kTWVu
dVByb3ZpZGVyOwogY2xhc3MgSW5zcGVjdG9yQ2xpZW50OwpAQCAtODUsNiArODYsMTIgQEAgcHVi
bGljOgogCiAgICAgU3RyaW5nIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgU3RyaW5n
JiB1cmwpOwogCisgICAgYm9vbCBjYW5BY2Nlc3NGaWxlU3lzdGVtKCk7CisgICAgdm9pZCByZXF1
ZXN0RmlsZVN5c3RlbVBlcm1pc3Npb25zKCk7CisgICAgdm9pZCBzZWxlY3RGb2xkZXJBbmRHcmFu
dEZpbGVTeXN0ZW1QZXJtaXNzaW9uKCk7CisgICAgdm9pZCByZXZva2VGaWxlU3lzdGVtUGVybWlz
c2lvbihjb25zdCBTdHJpbmcmIGZpbGVTeXN0ZW1QYXRoKTsKKyAgICBQYXNzUmVmUHRyPERPTUZp
bGVTeXN0ZW0+IGlzb2xhdGVkRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIGZpbGVTeXN0ZW1JZCwg
Y29uc3QgU3RyaW5nJiByZWdpc3RlcmVkTmFtZSk7CisKIHByaXZhdGU6CiAjaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpCiAgICAgZnJpZW5kIGNsYXNzIEZyb250ZW5kTWVudVByb3ZpZGVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbApp
bmRleCA3MjhhYTBjMGU0YjBmOTAxMzI0NjczYTEwMDVkMThjNmU5OTczZDFiLi5lNWMwNjE5NzVi
YTcyZTgyMmJjN2YwNzRhZWUwNjFkYzNjNDViOGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbApAQCAtNjYsNCArNjYsMTAgQEAK
ICAgICBbQ3VzdG9tXSB2b2lkIHJlY29yZFNldHRpbmdDaGFuZ2VkKGluIHVuc2lnbmVkIGxvbmcg
c2V0dGluZ0NoYW5nZWQpOwogICAgIAogICAgIERPTVN0cmluZyBsb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5KGluIERPTVN0cmluZyB1cmwpOworCisgICAgYm9vbGVhbiBjYW5BY2Nlc3NGaWxlU3lz
dGVtKCk7CisgICAgdm9pZCByZXF1ZXN0RmlsZVN5c3RlbVBlcm1pc3Npb25zKCk7CisgICAgdm9p
ZCBzZWxlY3RGb2xkZXJBbmRHcmFudEZpbGVTeXN0ZW1QZXJtaXNzaW9uKCk7CisgICAgdm9pZCBy
ZXZva2VGaWxlU3lzdGVtUGVybWlzc2lvbihpbiBET01TdHJpbmcgZmlsZVN5c3RlbVBhdGgpOwor
ICAgIERPTUZpbGVTeXN0ZW0gaXNvbGF0ZWRGaWxlU3lzdGVtKGluIERPTVN0cmluZyBmaWxlU3lz
dGVtSWQsIGluIERPTVN0cmluZyByZWdpc3RlcmVkTmFtZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5IGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CmluZGV4IDAwZjU1NTY0NGEwMjY4NGRi
NTVkY2U1MDNlMGRkNDY5MjY0ODc3ZjUuLjdmYWJjZmU3NGIyNGFmYzMzYTgwOWMyYTMxNDYyZTBi
ZTRjZTUzMDUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZy
b250LWVuZC5weQorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1l
bmQucHkKQEAgLTc2LDExICs3NiwxMyBAQCBtb2R1bGVzID0gWwogICAgICAgICAgICAgIkRlYnVn
Z2VyTW9kZWwuanMiLAogICAgICAgICAgICAgIkRlYnVnZ2VyU2NyaXB0TWFwcGluZy5qcyIsCiAg
ICAgICAgICAgICAiRmlsZU1hbmFnZXIuanMiLAorICAgICAgICAgICAgIkZpbGVTeXN0ZW1NYXBw
aW5nLmpzIiwKICAgICAgICAgICAgICJGaWxlU3lzdGVtTW9kZWwuanMiLAogICAgICAgICAgICAg
IkZpbGVVdGlscy5qcyIsCiAgICAgICAgICAgICAiSEFSRW50cnkuanMiLAogICAgICAgICAgICAg
IkluZGV4ZWREQk1vZGVsLmpzIiwKICAgICAgICAgICAgICJJbnNwZWN0b3JCYWNrZW5kLmpzIiwK
KyAgICAgICAgICAgICJJc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbC5qcyIsCiAgICAgICAgICAgICAi
TGlua2lmaWVyLmpzIiwKICAgICAgICAgICAgICJOZXR3b3JrTG9nLmpzIiwKICAgICAgICAgICAg
ICJOZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIuanMiLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtTWFwcGluZy5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1hcHBpbmcuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzRkNTllMzdmNWViN2FmY2EwZGY1YzU1YzBiN2ZiYzljNzBlNmI5NAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1hcHBp
bmcuanMKQEAgLTAsMCArMSwxOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBpbnRlcmZhY2UKKyAqLworV2ViSW5zcGVj
dG9yLkZpbGVTeXN0ZW1NYXBwaW5nID0gZnVuY3Rpb24oKSB7IH0KKworV2ViSW5zcGVjdG9yLkZp
bGVTeXN0ZW1NYXBwaW5nLnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtB
cnJheS48c3RyaW5nPn0KKyAgICAgKi8KKyAgICBmaWxlU3lzdGVtUGF0aGVzOiBmdW5jdGlvbigp
IHsgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmkKKyAgICAgKiBAcmV0
dXJuIHs/c3RyaW5nfQorICAgICAqLworICAgIGZpbGVTeXN0ZW1QYXRoRm9yVVJJOiBmdW5jdGlv
bih1cmkpIHsgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmkKKyAgICAg
KiBAcmV0dXJuIHs/c3RyaW5nfQorICAgICAqLworICAgIGZpbGVQYXRoRm9yVVJJOiBmdW5jdGlv
bih1cmkpIHsgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlU3lzdGVt
UGF0aAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlUGF0aAorICAgICAqIEByZXR1cm4ge3N0
cmluZ30KKyAgICAgKi8KKyAgICB1cmlGb3JQYXRoOiBmdW5jdGlvbihmaWxlU3lzdGVtUGF0aCwg
ZmlsZVBhdGgpIHsgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoCisg
ICAgICogQHJldHVybiB7P3N0cmluZ30KKyAgICAgKi8KKyAgICB1cmlQcmVmaXhGb3JQYXRoOiBm
dW5jdGlvbihwYXRoKSB7IH0KK30KKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBpbXBsZW1l
bnRzIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1hcHBpbmd9CisgKiBAZXh0ZW5kcyB7V2ViSW5z
cGVjdG9yLk9iamVjdH0KKyAqLworV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1NYXBwaW5nSW1wbCA9
IGZ1bmN0aW9uKCkKK3sKKyAgICB0aGlzLl9maWxlU3lzdGVtTWFwcGluZ1NldHRpbmcgPSBXZWJJ
bnNwZWN0b3Iuc2V0dGluZ3MuY3JlYXRlU2V0dGluZygiZmlsZVN5c3RlbU1hcHBpbmciLCB7fSk7
CisgICAgLyoqIEB0eXBlIHshT2JqZWN0LjxzdHJpbmcsIHN0cmluZz59ICovCisgICAgdGhpcy5f
bWFwcGVkTmFtZXMgPSB0aGlzLl9maWxlU3lzdGVtTWFwcGluZ1NldHRpbmcuZ2V0KCk7Cit9CisK
K1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTWFwcGluZ0ltcGwucHJvdG90eXBlID0geworICAgIC8q
KgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlU3lzdGVtUGF0aAorICAgICAqLworICAgIGFk
ZEZpbGVTeXN0ZW1NYXBwaW5nOiBmdW5jdGlvbihmaWxlU3lzdGVtUGF0aCkKKyAgICB7CisgICAg
ICAgIGlmICh0aGlzLl9tYXBwZWROYW1lc1tmaWxlU3lzdGVtUGF0aF0pCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIHZhciBwYXRoU2VnbWVudHMgPSBmaWxlU3lzdGVtUGF0aC5zcGxpdCgi
LyIpOworICAgICAgICB2YXIgbWFwcGVkTmFtZSA9IHBhdGhTZWdtZW50c1twYXRoU2VnbWVudHMu
bGVuZ3RoIC0gMV07CisgICAgICAgIHZhciB1bmlxdWVNYXBwZWROYW1lID0gdGhpcy5fdW5pcXVl
TWFwcGVkTmFtZShtYXBwZWROYW1lKTsKKyAgICAgICAgdGhpcy5fbWFwcGVkTmFtZXNbZmlsZVN5
c3RlbVBhdGhdID0gbWFwcGVkTmFtZTsKKyAgICAgICAgdGhpcy5fZmlsZVN5c3RlbU1hcHBpbmdT
ZXR0aW5nLnNldCh0aGlzLl9tYXBwZWROYW1lcyk7CisgICAgfSwKKworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7c3RyaW5nfSBtYXBwZWROYW1lCisgICAgICovCisgICAgX3VuaXF1ZU1hcHBlZE5h
bWU6IGZ1bmN0aW9uKG1hcHBlZE5hbWUpCisgICAgeworICAgICAgICB2YXIgdW5pcXVlTWFwcGVk
TmFtZSA9IG1hcHBlZE5hbWU7CisgICAgICAgIHZhciBpID0gMTsKKyAgICAgICAgd2hpbGUgKE9i
amVjdC52YWx1ZXModGhpcy5fbWFwcGVkTmFtZXMpLmluZGV4T2YodW5pcXVlTWFwcGVkTmFtZSkg
IT09IC0xKSB7CisgICAgICAgICAgICB1bmlxdWVNYXBwZWROYW1lID0gbWFwcGVkTmFtZSArICIg
KCIgKyBpICsgIikiOworICAgICAgICAgICAgKytpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biB1bmlxdWVNYXBwZWROYW1lOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0
cmluZ30gZmlsZVN5c3RlbVBhdGgKKyAgICAgKi8KKyAgICByZW1vdmVGaWxlU3lzdGVtTWFwcGlu
ZzogZnVuY3Rpb24oZmlsZVN5c3RlbVBhdGgpCisgICAgeworICAgICAgICBkZWxldGUgdGhpcy5f
bWFwcGVkTmFtZXNbZmlsZVN5c3RlbVBhdGhdOworICAgICAgICB0aGlzLl9maWxlU3lzdGVtTWFw
cGluZ1NldHRpbmcuc2V0KHRoaXMuX21hcHBlZE5hbWVzKTsKKyAgICB9LAorCisgICAgLyoqCisg
ICAgICogQHJldHVybiB7QXJyYXkuPHN0cmluZz59CisgICAgICovCisgICAgZmlsZVN5c3RlbVBh
dGhlczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMu
X21hcHBlZE5hbWVzKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7c3RyaW5n
fQorICAgICAqLworICAgIF91cmlQcmVmaXhGb3JNYXBwZWROYW1lOiBmdW5jdGlvbihtYXBwZWRO
YW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuICJmaWxlOi8vLyIgKyBtYXBwZWROYW1lICsgIi8i
OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJpCisgICAgICog
QHJldHVybiB7P3N0cmluZ30KKyAgICAgKi8KKyAgICBmaWxlU3lzdGVtUGF0aEZvclVSSTogZnVu
Y3Rpb24odXJpKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgZmlsZVN5c3RlbVBhdGggaW4gdGhp
cy5fbWFwcGVkTmFtZXMpIHsKKyAgICAgICAgICAgIHZhciB1cmlQcmVmaXggPSB0aGlzLl91cmlQ
cmVmaXhGb3JNYXBwZWROYW1lKHRoaXMuX21hcHBlZE5hbWVzW2ZpbGVTeXN0ZW1QYXRoXSk7Cisg
ICAgICAgICAgICBpZiAodXJpLmluZGV4T2YodXJpUHJlZml4KSA9PT0gMCkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmlsZVN5c3RlbVBhdGg7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51
bGw7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmkKKyAgICAg
KiBAcmV0dXJuIHs/c3RyaW5nfQorICAgICAqLworICAgIGZpbGVQYXRoRm9yVVJJOiBmdW5jdGlv
bih1cmkpCisgICAgeworICAgICAgICBmb3IgKHZhciBmaWxlU3lzdGVtUGF0aCBpbiB0aGlzLl9t
YXBwZWROYW1lcykgeworICAgICAgICAgICAgdmFyIG1hcHBlZE5hbWUgPSB0aGlzLl9tYXBwZWRO
YW1lc1tmaWxlU3lzdGVtUGF0aF07CisgICAgICAgICAgICB2YXIgdXJpUHJlZml4ID0gdGhpcy5f
dXJpUHJlZml4Rm9yTWFwcGVkTmFtZShtYXBwZWROYW1lKTsKKyAgICAgICAgICAgIGlmICh1cmku
aW5kZXhPZih1cmlQcmVmaXgpID09PSAwKQorICAgICAgICAgICAgICAgIHJldHVybiAiLyIgKyB1
cmkuc3Vic3RyaW5nKHVyaVByZWZpeC5sZW5ndGgpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBudWxsOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZVN5
c3RlbVBhdGgKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZVBhdGgKKyAgICAgKiBAcmV0dXJu
IHtzdHJpbmd9CisgICAgICovCisgICAgdXJpRm9yUGF0aDogZnVuY3Rpb24oZmlsZVN5c3RlbVBh
dGgsIGZpbGVQYXRoKQorICAgIHsKKyAgICAgICAgdmFyIHVyaVByZWZpeCA9IHRoaXMuX3VyaVBy
ZWZpeEZvck1hcHBlZE5hbWUodGhpcy5fbWFwcGVkTmFtZXNbZmlsZVN5c3RlbVBhdGhdKTsKKyAg
ICAgICAgcmV0dXJuIHVyaVByZWZpeCArIGZpbGVQYXRoLnN1YnN0cmluZygiLyIubGVuZ3RoKTsK
KyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGgKKyAgICAgKiBA
cmV0dXJuIHs/c3RyaW5nfQorICAgICAqLworICAgIHVyaVByZWZpeEZvclBhdGg6IGZ1bmN0aW9u
KHBhdGgpCisgICAgeworICAgICAgICBmb3IgKHZhciBmaWxlU3lzdGVtUGF0aCBpbiB0aGlzLl9t
YXBwZWROYW1lcykgeworICAgICAgICAgICAgaWYgKHBhdGguaW5kZXhPZihmaWxlU3lzdGVtUGF0
aCkgPT09IDApIHsKKyAgICAgICAgICAgICAgICB2YXIgdXJpUHJlZml4ID0gdGhpcy5fdXJpUHJl
Zml4Rm9yTWFwcGVkTmFtZSh0aGlzLl9tYXBwZWROYW1lc1tmaWxlU3lzdGVtUGF0aF0pOworICAg
ICAgICAgICAgICAgIHZhciBzdWJQYXRoID0gcGF0aC5zdWJzdHJpbmcoZmlsZVN5c3RlbVBhdGgu
bGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBpZiAoc3ViUGF0aC5sZW5ndGggPT09IDApCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB1cmlQcmVmaXg7CisgICAgICAgICAgICAgICAgZWxzZSBp
ZiAoc3ViUGF0aFswXSA9PT0gIi8iKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdXJpUHJl
Zml4ICsgc3ViUGF0aC5zdWJzdHJpbmcoIi8iLmxlbmd0aCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMK
aW5kZXggYWMyNzZiNDA3NTMwZGRhZGU3YTA1ZjRhNzcyNDQzNzIzNzBjMTM1Ni4uYTM1ZTBmNzQw
ZWRlYTAyOGNhMDRiOGRlM2E0ZDI3NTRiNGViZDg0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckZyb250ZW5kQVBJLmpzCkBA
IC0xMTAsNiArMTEwLDIxIEBAIHZhciBJbnNwZWN0b3JGcm9udGVuZEFQSSA9IHsKICAgICAgICAg
V2ViSW5zcGVjdG9yLnRvZ2dsZVNlYXJjaGluZ0Zvck5vZGUoKTsKICAgICB9LAogCisgICAgZmls
ZVN5c3RlbVBlcm1pc3Npb25zTG9hZGVkOiBmdW5jdGlvbihmaWxlU3lzdGVtcykKKyAgICB7Cisg
ICAgICAgIFdlYkluc3BlY3Rvci5pc29sYXRlZEZpbGVTeXN0ZW1NYW5hZ2VyLmZpbGVTeXN0ZW1Q
ZXJtaXNzaW9uc0xvYWRlZChmaWxlU3lzdGVtcyk7CisgICAgfSwKKworICAgIGZpbGVTeXN0ZW1G
b2xkZXJQZXJtaXNzaW9uc1Jldm9rZWQ6IGZ1bmN0aW9uKGZpbGVTeXN0ZW1QYXRoKQorICAgIHsK
KyAgICAgICAgV2ViSW5zcGVjdG9yLmlzb2xhdGVkRmlsZVN5c3RlbU1hbmFnZXIuZmlsZVN5c3Rl
bUZvbGRlclBlcm1pc3Npb25zUmV2b2tlZChmaWxlU3lzdGVtUGF0aCk7CisgICAgfSwKKworICAg
IGZpbGVTeXN0ZW1Gb2xkZXJTZWxlY3RlZDogZnVuY3Rpb24oZXJyb3JNZXNzYWdlLCBmaWxlU3lz
dGVtKQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmlzb2xhdGVkRmlsZVN5c3RlbU1hbmFn
ZXIuZmlsZVN5c3RlbUZvbGRlclNlbGVjdGVkKGZpbGVTeXN0ZW0sIGVycm9yTWVzc2FnZSk7Cisg
ICAgfSwKKwogICAgIHNhdmVkVVJMOiBmdW5jdGlvbih1cmwpCiAgICAgewogICAgICAgICBXZWJJ
bnNwZWN0b3IuZmlsZU1hbmFnZXIuc2F2ZWRVUkwodXJsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yRnJvbnRlbmRIb3N0
U3R1Yi5qcwppbmRleCBjNjE2YzFkMTlkMzJjZGM5YTEzMGVlYWFhMTQ3NWY3N2UyNTFjMjI1Li5l
MDBlODJlYWJkNmVlYzNiZWIyOTgwYjFiYTBjMjBiMWVhY2VjODUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckZyb250ZW5kSG9zdFN0dWIu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JGcm9u
dGVuZEhvc3RTdHViLmpzCkBAIC0xOTUsNiArMTk1LDI4IEBAIFdlYkluc3BlY3Rvci5JbnNwZWN0
b3JGcm9udGVuZEhvc3RTdHViLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIGxvYWRYSFIo
dXJsKTsKICAgICB9LAogCisgICAgY2FuQWNjZXNzRmlsZVN5c3RlbTogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0sCisKKyAgICByZXF1ZXN0RmlsZVN5c3Rl
bVBlcm1pc3Npb25zOiBmdW5jdGlvbigpCisgICAgeworICAgIH0sCisKKyAgICBzZWxlY3RGb2xk
ZXJBbmRHcmFudEZpbGVTeXN0ZW1QZXJtaXNzaW9uOiBmdW5jdGlvbigpCisgICAgeworICAgIH0s
CisKKyAgICByZXZva2VGaWxlU3lzdGVtUGVybWlzc2lvbjogZnVuY3Rpb24oZmlsZVN5c3RlbVBh
dGgpCisgICAgeworICAgIH0sCisKKyAgICBpc29sYXRlZEZpbGVTeXN0ZW06IGZ1bmN0aW9uKGZp
bGVTeXN0ZW1JZCwgcmVnaXN0ZXJlZE5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gbnVsbDsK
KyAgICB9LAorCiAgICAgc2V0Wm9vbUZhY3RvcjogZnVuY3Rpb24oem9vbSkKICAgICB7CiAgICAg
fSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSXNvbGF0
ZWRGaWxlU3lzdGVtTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0lzb2xhdGVkRmlsZVN5c3RlbU1vZGVsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyMzllMjE2MWNjMDE0MjI2
ZmY4YTVmMjE1YzJhYzU2NjMwZmU1ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0lzb2xhdGVkRmlsZVN5c3RlbU1vZGVsLmpzCkBAIC0wLDAg
KzEsMjQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqLworV2ViSW5zcGVjdG9yLklzb2xhdGVk
RmlsZVN5c3RlbU1vZGVsID0gZnVuY3Rpb24oKQoreworICAgIC8qKiBAdHlwZSB7IU9iamVjdC48
c3RyaW5nLCBXZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbT59
ICovCisgICAgdGhpcy5fZmlsZVN5c3RlbXMgPSB7fTsKKyAgICAvKiogQHR5cGUge09iamVjdC48
c3RyaW5nLCBBcnJheS48ZnVuY3Rpb24oRE9NRmlsZVN5c3RlbSk+Pn0gKi8KKyAgICB0aGlzLl9w
ZW5kaW5nRmlsZVN5c3RlbVJlcXVlc3RzID0ge307CisgICAgdGhpcy5fZmlsZVN5c3RlbU1hcHBp
bmcgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1NYXBwaW5nSW1wbCgpOworCisgICAgaWYg
KHRoaXMuY2FuQWNjZXNzRmlsZVN5c3RlbSgpKQorICAgICAgICB0aGlzLnJlcXVlc3RGaWxlU3lz
dGVtUGF0aGVzKGZ1bmN0aW9uKCkgeyB9KQorfQorCisvKiogQHR5cGVkZWYge3tmaWxlU3lzdGVt
SWQ6IHN0cmluZywgcmVnaXN0ZXJlZE5hbWU6IHN0cmluZywgZmlsZVN5c3RlbVBhdGg6IHN0cmlu
Z319ICovCitXZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwuRmlsZVN5c3RlbTsK
KworV2ViSW5zcGVjdG9yLklzb2xhdGVkRmlsZVN5c3RlbU1vZGVsLnByb3RvdHlwZSA9IHsKKyAg
ICAvKioKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbU1hcHBpbmd9Cisg
ICAgICovCisgICAgZmlsZVN5c3RlbU1hcHBpbmc6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLl9maWxlU3lzdGVtTWFwcGluZzsKKyAgICB9LAorCisgICAgLyoqCisgICAg
ICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBjYW5BY2Nlc3NGaWxlU3lzdGVtOiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNh
bkFjY2Vzc0ZpbGVTeXN0ZW0oKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtm
dW5jdGlvbihBcnJheS48c3RyaW5nPil9IGNhbGxiYWNrCisgICAgICovCisgICAgcmVxdWVzdEZp
bGVTeXN0ZW1QYXRoZXM6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgaWYgKCF0
aGlzLl9sb2FkZWQpIHsKKyAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdGaWxlU3lzdGVtUGF0aGVz
UmVxdWVzdCA9IGNhbGxiYWNrOworICAgICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnJl
cXVlc3RGaWxlU3lzdGVtUGVybWlzc2lvbnMoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICBjYWxsYmFjayh0aGlzLl9maWxlU3lzdGVtUGF0aGVzKCkpOworICAgIH0s
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKHN0cmluZyl9IGNhbGxiYWNrCisg
ICAgICovCisgICAgc2VsZWN0TmV3RmlsZVN5c3RlbVBhdGg6IGZ1bmN0aW9uKGNhbGxiYWNrKQor
ICAgIHsKKyAgICAgICAgdGhpcy5fc2VsZWN0RmlsZVN5c3RlbVBhdGhDYWxsYmFjayA9IGNhbGxi
YWNrOworICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3Quc2VsZWN0Rm9sZGVyQW5kR3JhbnRG
aWxlU3lzdGVtUGVybWlzc2lvbigpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e2Z1bmN0aW9uKCl9IGNhbGxiYWNrCisgICAgICovCisgICAgcmV2b2tlRmlsZVN5c3RlbVBhdGg6
IGZ1bmN0aW9uKGZpbGVTeXN0ZW1QYXRoLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHRoaXMu
X3Jldm9rZUZpbGVTeXN0ZW1QYXRoQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LnJldm9rZUZpbGVTeXN0ZW1QZXJtaXNzaW9uKGZpbGVTeXN0ZW1QYXRo
KTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJheS48V2ViSW5zcGVjdG9y
Lklzb2xhdGVkRmlsZVN5c3RlbU1vZGVsLkZpbGVTeXN0ZW0+fSBmaWxlU3lzdGVtcworICAgICAq
LworICAgIF9maWxlU3lzdGVtUGVybWlzc2lvbnNMb2FkZWQ6IGZ1bmN0aW9uKGZpbGVTeXN0ZW1z
KQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWxlU3lzdGVtcy5sZW5ndGg7
ICsraSkKKyAgICAgICAgICAgIHRoaXMuX2FkZEZpbGVTeXN0ZW0oZmlsZVN5c3RlbXNbaV0pOwor
ICAgICAgICB0aGlzLl9sb2FkZWQgPSB0cnVlOworICAgICAgICB0aGlzLl9wcm9jZXNzUGVuZGlu
Z0ZpbGVTeXN0ZW1SZXF1ZXN0cygpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e1dlYkluc3BlY3Rvci5Jc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbC5GaWxlU3lzdGVtfSBmaWxlU3lz
dGVtCisgICAgICovCisgICAgX2FkZEZpbGVTeXN0ZW06IGZ1bmN0aW9uKGZpbGVTeXN0ZW0pCisg
ICAgeworICAgICAgICB0aGlzLl9maWxlU3lzdGVtTWFwcGluZy5hZGRGaWxlU3lzdGVtTWFwcGlu
ZyhmaWxlU3lzdGVtLmZpbGVTeXN0ZW1QYXRoKTsKKyAgICAgICAgdGhpcy5fZmlsZVN5c3RlbXNb
ZmlsZVN5c3RlbS5maWxlU3lzdGVtUGF0aF0gPSBmaWxlU3lzdGVtOworICAgIH0sCisKKyAgICAv
KioKKyAgICAgKiBAcmV0dXJuIHtBcnJheS48c3RyaW5nPn0KKyAgICAgKi8KKyAgICBfZmlsZVN5
c3RlbVBhdGhlczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlz
KHRoaXMuX2ZpbGVTeXN0ZW1zKTsKKyAgICB9LAorCisgICAgX3Byb2Nlc3NQZW5kaW5nRmlsZVN5
c3RlbVJlcXVlc3RzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9wZW5kaW5nRmls
ZVN5c3RlbVBhdGhlc1JlcXVlc3QodGhpcy5fZmlsZVN5c3RlbVBhdGhlcygpKTsKKyAgICAgICAg
Zm9yICh2YXIgZmlsZVN5c3RlbVBhdGggaW4gdGhpcy5fcGVuZGluZ0ZpbGVTeXN0ZW1SZXF1ZXN0
cykgeworICAgICAgICAgICAgdmFyIGNhbGxiYWNrcyA9IHRoaXMuX3BlbmRpbmdGaWxlU3lzdGVt
UmVxdWVzdHNbZmlsZVN5c3RlbVBhdGhdOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBjYWxsYmFja3MubGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAgY2FsbGJhY2tzW2ldKHRo
aXMuX2lzb2xhdGVkRmlsZVN5c3RlbShmaWxlU3lzdGVtUGF0aCkpOworICAgICAgICB9CisgICAg
fSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBlcnJvck1lc3NhZ2UKKyAgICAg
KiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Jc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbC5GaWxlU3lzdGVt
fSBmaWxlU3lzdGVtCisgICAgICovCisgICAgX2ZpbGVTeXN0ZW1Gb2xkZXJTZWxlY3RlZDogZnVu
Y3Rpb24oZXJyb3JNZXNzYWdlLCBmaWxlU3lzdGVtKQorICAgIHsKKyAgICAgICAgaWYgKGVycm9y
TWVzc2FnZSkgeworICAgICAgICAgICAgY29uc29sZS5lcnJvcigiRXJyb3I6ICIgKyBlcnJvck1l
c3NhZ2UpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmICghZmls
ZVN5c3RlbSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdmFyIGZpbGVTeXN0ZW1QYXRo
OworICAgICAgICBpZiAoZmlsZVN5c3RlbSkgeworICAgICAgICAgICAgdGhpcy5fYWRkRmlsZVN5
c3RlbShmaWxlU3lzdGVtKTsKKyAgICAgICAgICAgIGZpbGVTeXN0ZW1QYXRoID0gZmlsZVN5c3Rl
bS5maWxlU3lzdGVtUGF0aDsKKyAgICAgICAgfQorICAgICAgICBpZiAodGhpcy5fc2VsZWN0Rmls
ZVN5c3RlbVBhdGhDYWxsYmFjaykgeworICAgICAgICAgICAgdGhpcy5fc2VsZWN0RmlsZVN5c3Rl
bVBhdGhDYWxsYmFjayhmaWxlU3lzdGVtUGF0aCk7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5f
c2VsZWN0RmlsZVN5c3RlbVBhdGhDYWxsYmFjazsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZVN5c3RlbVBhdGgKKyAgICAgKi8KKyAgICBf
ZmlsZVN5c3RlbUZvbGRlclBlcm1pc3Npb25zUmV2b2tlZDogZnVuY3Rpb24oZmlsZVN5c3RlbVBh
dGgpCisgICAgeworICAgICAgICBkZWxldGUgdGhpcy5fZmlsZVN5c3RlbXNbZmlsZVN5c3RlbVBh
dGhdOworICAgICAgICB0aGlzLl9maWxlU3lzdGVtTWFwcGluZy5yZW1vdmVGaWxlU3lzdGVtTWFw
cGluZyhmaWxlU3lzdGVtUGF0aCk7CisKKyAgICAgICAgaWYgKHRoaXMuX3Jldm9rZUZpbGVTeXN0
ZW1QYXRoQ2FsbGJhY2spIHsKKyAgICAgICAgICAgIHRoaXMuX3Jldm9rZUZpbGVTeXN0ZW1QYXRo
Q2FsbGJhY2soZmlsZVN5c3RlbVBhdGgpOworICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3Jldm9r
ZUZpbGVTeXN0ZW1QYXRoQ2FsbGJhY2s7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGVTeXN0ZW1QYXRoCisgICAgICogQHJldHVybiB7RE9N
RmlsZVN5c3RlbX0KKyAgICAgKi8KKyAgICBfaXNvbGF0ZWRGaWxlU3lzdGVtOiBmdW5jdGlvbihm
aWxlU3lzdGVtUGF0aCkKKyAgICB7CisgICAgICAgIHZhciBmaWxlU3lzdGVtID0gdGhpcy5fZmls
ZVN5c3RlbXNbZmlsZVN5c3RlbVBhdGhdOworICAgICAgICBpZiAoIWZpbGVTeXN0ZW0pCisgICAg
ICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgcmV0dXJuIEluc3BlY3RvckZyb250ZW5kSG9z
dC5pc29sYXRlZEZpbGVTeXN0ZW0oZmlsZVN5c3RlbS5maWxlU3lzdGVtSWQsIGZpbGVTeXN0ZW0u
cmVnaXN0ZXJlZE5hbWUpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmlu
Z30gZmlsZVN5c3RlbVBhdGgKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKERPTUZpbGVTeXN0ZW0p
fSBjYWxsYmFjaworICAgICAqLworICAgIHJlcXVlc3RET01GaWxlU3lzdGVtOiBmdW5jdGlvbihm
aWxlU3lzdGVtUGF0aCwgY2FsbGJhY2spCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2xvYWRl
ZCkgeworICAgICAgICAgICAgaWYgKCF0aGlzLl9wZW5kaW5nRmlsZVN5c3RlbVJlcXVlc3RzW2Zp
bGVTeXN0ZW1QYXRoXSkKKyAgICAgICAgICAgICAgICB0aGlzLl9wZW5kaW5nRmlsZVN5c3RlbVJl
cXVlc3RzW2ZpbGVTeXN0ZW1QYXRoXSA9IHRoaXMuX3BlbmRpbmdGaWxlU3lzdGVtUmVxdWVzdHNb
ZmlsZVN5c3RlbVBhdGhdIHx8IFtdOworICAgICAgICAgICAgdGhpcy5fcGVuZGluZ0ZpbGVTeXN0
ZW1SZXF1ZXN0c1tmaWxlU3lzdGVtUGF0aF0ucHVzaChjYWxsYmFjayk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY2FsbGJhY2sodGhpcy5faXNvbGF0ZWRGaWxlU3lz
dGVtKGZpbGVTeXN0ZW1QYXRoKSk7CisgICAgfQorfQorCisvKioKKyAqIEB0eXBlIHs/V2ViSW5z
cGVjdG9yLklzb2xhdGVkRmlsZVN5c3RlbU1vZGVsfQorICovCitXZWJJbnNwZWN0b3IuaXNvbGF0
ZWRGaWxlU3lzdGVtTW9kZWwgPSBudWxsOworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQHBh
cmFtIHtXZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWx9IGlzb2xhdGVkRmlsZVN5
c3RlbU1vZGVsCisgKi8KK1dlYkluc3BlY3Rvci5Jc29sYXRlZEZpbGVTeXN0ZW1NYW5hZ2VyID0g
ZnVuY3Rpb24oaXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwpCit7CisgICAgdGhpcy5faXNvbGF0ZWRG
aWxlU3lzdGVtTW9kZWwgPSBpc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbDsKK30KKworV2ViSW5zcGVj
dG9yLklzb2xhdGVkRmlsZVN5c3RlbU1hbmFnZXIucHJvdG90eXBlID0geworICAgIC8qKgorICAg
ICAqIEBwYXJhbSB7QXJyYXkuPFdlYkluc3BlY3Rvci5Jc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbC5G
aWxlU3lzdGVtPn0gZmlsZVN5c3RlbXMKKyAgICAgKi8KKyAgICBmaWxlU3lzdGVtUGVybWlzc2lv
bnNMb2FkZWQ6IGZ1bmN0aW9uKGZpbGVTeXN0ZW1zKQorICAgIHsKKyAgICAgICAgdGhpcy5faXNv
bGF0ZWRGaWxlU3lzdGVtTW9kZWwuX2ZpbGVTeXN0ZW1QZXJtaXNzaW9uc0xvYWRlZChmaWxlU3lz
dGVtcyk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlU3lz
dGVtUGF0aAorICAgICAqLworICAgIGZpbGVTeXN0ZW1Gb2xkZXJQZXJtaXNzaW9uc1Jldm9rZWQ6
IGZ1bmN0aW9uKGZpbGVTeXN0ZW1QYXRoKQorICAgIHsKKyAgICAgICAgdGhpcy5faXNvbGF0ZWRG
aWxlU3lzdGVtTW9kZWwuX2ZpbGVTeXN0ZW1Gb2xkZXJQZXJtaXNzaW9uc1Jldm9rZWQoZmlsZVN5
c3RlbVBhdGgpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXJy
b3JNZXNzYWdlCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlU3lzdGVt
TW9kZWwuRmlsZVN5c3RlbX0gZmlsZVN5c3RlbQorICAgICAqLworICAgIGZpbGVTeXN0ZW1Gb2xk
ZXJTZWxlY3RlZDogZnVuY3Rpb24oZXJyb3JNZXNzYWdlLCBmaWxlU3lzdGVtKQorICAgIHsKKyAg
ICAgICAgdGhpcy5faXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwuX2ZpbGVTeXN0ZW1Gb2xkZXJTZWxl
Y3RlZChlcnJvck1lc3NhZ2UsIGZpbGVTeXN0ZW0pOworICAgIH0KK30KKworLyoqCisgKiBAdHlw
ZSB7P1dlYkluc3BlY3Rvci5Jc29sYXRlZEZpbGVTeXN0ZW1NYW5hZ2VyfQorICovCitXZWJJbnNw
ZWN0b3IuaXNvbGF0ZWRGaWxlU3lzdGVtTWFuYWdlciA9IG51bGw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5kZXggZTQ0MjJkZmE0MGJmMDhlNmUz
MzFmZGRlOWUzZWMzYmQ5YzJlODcyNi4uNDRkMzg5MjY4ZjMwMDAwMjdkZTA5NjVhY2NiZWEzZDI5
MDNlODE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9X
ZWJLaXQucXJjCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0
LnFyYwpAQCAtNzMsNiArNzMsNyBAQAogICAgIDxmaWxlPkV4dGVuc2lvblZpZXcuanM8L2ZpbGU+
CiAgICAgPGZpbGU+RmlsZUNvbnRlbnRWaWV3LmpzPC9maWxlPgogICAgIDxmaWxlPkZpbGVNYW5h
Z2VyLmpzPC9maWxlPgorICAgIDxmaWxlPkZpbGVTeXN0ZW1NYXBwaW5nLmpzPC9maWxlPgogICAg
IDxmaWxlPkZpbGVTeXN0ZW1Nb2RlbC5qczwvZmlsZT4KICAgICA8ZmlsZT5GaWxlU3lzdGVtVmll
dy5qczwvZmlsZT4KICAgICA8ZmlsZT5GaWxlVXRpbHMuanM8L2ZpbGU+CkBAIC05OCw2ICs5OSw3
IEBACiAgICAgPGZpbGU+SW5zcGVjdG9yRnJvbnRlbmRBUEkuanM8L2ZpbGU+CiAgICAgPGZpbGU+
SW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5qczwvZmlsZT4KICAgICA8ZmlsZT5JbnNwZWN0b3JW
aWV3LmpzPC9maWxlPgorICAgIDxmaWxlPklzb2xhdGVkRmlsZVN5c3RlbU1vZGVsLmpzPC9maWxl
PgogICAgIDxmaWxlPkphdmFTY3JpcHRGb3JtYXR0ZXIuanM8L2ZpbGU+CiAgICAgPGZpbGU+SmF2
YVNjcmlwdFNvdXJjZUZyYW1lLmpzPC9maWxlPgogICAgIDxmaWxlPmpzZGlmZmxpYi5qczwvZmls
ZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvZXh0ZXJu
cy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvZXh0ZXJucy5qcwppbmRl
eCA4YzVhNGVmOGE3YzYzODIwMDk2YjIzMDZiNjllNjM1ZjkxOGYwNTU3Li5lMGFiOWNlMjRkNDhi
M2ZiOWQzMzgxYzU3MWFmZDZiMjZhMDBjNmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2V4dGVybnMuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9leHRlcm5zLmpzCkBAIC0xMzgsNiArMTM4LDEyIEBAIERPTUFwcGxpY2F0
aW9uQ2FjaGUucHJvdG90eXBlLkRPV05MT0FESU5HID0gMzsKIERPTUFwcGxpY2F0aW9uQ2FjaGUu
cHJvdG90eXBlLlVQREFURVJFQURZID0gNDsKIERPTUFwcGxpY2F0aW9uQ2FjaGUucHJvdG90eXBl
Lk9CU09MRVRFID0gNTsKIAorLy8gRmlsZSBTeXN0ZW0gQVBJCisvKioKKyAqIEBjb25zdHJ1Y3Rv
cgorICovCitmdW5jdGlvbiBET01GaWxlU3lzdGVtKCkge30KKwogLyoqIEB0eXBlIHtOb2RlfSAq
LwogUmFuZ2UucHJvdG90eXBlLnN0YXJ0Q29udGFpbmVyOwogCkBAIC0xNzEsNiArMTc3LDExIEBA
IEluc3BlY3RvckZyb250ZW5kSG9zdEFQSS5wcm90b3R5cGUucmVjb3JkQWN0aW9uVGFrZW4gPSBm
dW5jdGlvbihhY3Rpb25Db2RlKSB7fQogSW5zcGVjdG9yRnJvbnRlbmRIb3N0QVBJLnByb3RvdHlw
ZS5yZWNvcmRQYW5lbFNob3duID0gZnVuY3Rpb24ocGFuZWxDb2RlKSB7fQogSW5zcGVjdG9yRnJv
bnRlbmRIb3N0QVBJLnByb3RvdHlwZS5yZWNvcmRTZXR0aW5nQ2hhbmdlZCA9IGZ1bmN0aW9uKHNl
dHRpbmdDb2RlKSB7fQogSW5zcGVjdG9yRnJvbnRlbmRIb3N0QVBJLnByb3RvdHlwZS5sb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5ID0gZnVuY3Rpb24odXJsKSB7fQorSW5zcGVjdG9yRnJvbnRlbmRI
b3N0QVBJLnByb3RvdHlwZS5jYW5BY2Nlc3NGaWxlU3lzdGVtID0gZnVuY3Rpb24oKSB7fQorSW5z
cGVjdG9yRnJvbnRlbmRIb3N0QVBJLnByb3RvdHlwZS5yZXF1ZXN0RmlsZVN5c3RlbVBlcm1pc3Np
b25zID0gZnVuY3Rpb24oKSB7fQorSW5zcGVjdG9yRnJvbnRlbmRIb3N0QVBJLnByb3RvdHlwZS5z
ZWxlY3RGb2xkZXJBbmRHcmFudEZpbGVTeXN0ZW1QZXJtaXNzaW9uID0gZnVuY3Rpb24oKSB7fQor
SW5zcGVjdG9yRnJvbnRlbmRIb3N0QVBJLnByb3RvdHlwZS5yZXZva2VGaWxlU3lzdGVtUGVybWlz
c2lvbiA9IGZ1bmN0aW9uKGZpbGVTeXN0ZW1QYXRoKSB7fQorSW5zcGVjdG9yRnJvbnRlbmRIb3N0
QVBJLnByb3RvdHlwZS5pc29sYXRlZEZpbGVTeXN0ZW0gPSBmdW5jdGlvbihmaWxlU3lzdGVtSWQs
IHJlZ2lzdGVyZWROYW1lKSB7fQogSW5zcGVjdG9yRnJvbnRlbmRIb3N0QVBJLnByb3RvdHlwZS5z
ZXRab29tRmFjdG9yID0gZnVuY3Rpb24oem9vbSkge30KIEluc3BlY3RvckZyb250ZW5kSG9zdEFQ
SS5wcm90b3R5cGUuY2FuSW5zcGVjdFdvcmtlcnMgPSBmdW5jdGlvbigpIHt9CiAvKiogQHR5cGUg
e0luc3BlY3RvckZyb250ZW5kSG9zdEFQSX0gKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCmluZGV4IGVjNWY0YjZhZjZiYjY0OGYyOWVj
Nzg4MjJkODkzNjkyMTRlOWU5ZGYuLmJjODA5MTM4N2MwYzQ5NzYzMzI5ZWFkNzk4NmQ2NGJhMTc1
N2QxMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmh0bWwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuaHRtbApAQCAtMTM3LDYgKzEzNyw4IEBAIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgICAgPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRGVidWdnZXJTY3JpcHRNYXBwaW5nLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJQcmVzZW50YXRpb25D
b25zb2xlTWVzc2FnZUhlbHBlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIHNyYz0iTmV0d29ya1dvcmtzcGFjZVByb3ZpZGVyLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJJc29sYXRlZEZpbGVTeXN0
ZW1Nb2RlbC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iRmlsZVN5c3RlbU1hcHBpbmcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9IldvcmtzcGFjZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQnJlYWtwb2ludE1hbmFnZXIuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkNvbnRlbnRQcm92
aWRlcnMuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5qcwppbmRleCA3ZWViYWI0ZjgyYWE5ZDg5YjQ3MGRiN2M5YjQ0NWVjMWY4
MjAyNzVmLi42ZmVmMzJiMmRhMGFjYzM3ZjgyMjkxYjE5ZDdjMTk3YTYwMjRmMmY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtNDMw
LDYgKzQzMCw5IEBAIFdlYkluc3BlY3Rvci5fZG9Mb2FkZWREb25lV2l0aENhcGFiaWxpdGllcyA9
IGZ1bmN0aW9uKCkKICAgICB0aGlzLm9wZW5BbmNob3JMb2NhdGlvblJlZ2lzdHJ5ID0gbmV3IFdl
Ykluc3BlY3Rvci5IYW5kbGVyUmVnaXN0cnkob3BlbkFuY2hvckxvY2F0aW9uU2V0dGluZyk7CiAg
ICAgdGhpcy5vcGVuQW5jaG9yTG9jYXRpb25SZWdpc3RyeS5yZWdpc3RlckhhbmRsZXIoYXV0b3Nl
bGVjdFBhbmVsLCBmdW5jdGlvbigpIHsgcmV0dXJuIGZhbHNlOyB9KTsKIAorICAgIHRoaXMuaXNv
bGF0ZWRGaWxlU3lzdGVtTW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLklzb2xhdGVkRmlsZVN5c3Rl
bU1vZGVsKCk7CisgICAgdGhpcy5pc29sYXRlZEZpbGVTeXN0ZW1NYW5hZ2VyID0gbmV3IFdlYklu
c3BlY3Rvci5Jc29sYXRlZEZpbGVTeXN0ZW1NYW5hZ2VyKHRoaXMuaXNvbGF0ZWRGaWxlU3lzdGVt
TW9kZWwpOworCiAgICAgdGhpcy5uZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIgPSBuZXcgV2ViSW5z
cGVjdG9yLk5ldHdvcmtXb3Jrc3BhY2VQcm92aWRlcigpOwogICAgIHRoaXMud29ya3NwYWNlID0g
bmV3IFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2UoKTsKICAgICB0aGlzLndvcmtzcGFjZS5hZGRQcm9q
ZWN0KCJuZXR3b3JrIiwgdGhpcy5uZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2VG9vbHNGcm9udGVuZENsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2VG9vbHNGcm9udGVuZENs
aWVudC5oCmluZGV4IDA0MzhjZDM1NTZkMTRiZDU0ZmZjNjhiOGYyOWJmMGRlN2Q2ZWZmZjYuLjIy
OTJjMWNjNTllYzdlNjgxNzcwYjQ2MDc4N2RhNGEzMWRhNTU3YjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldlRvb2xzRnJvbnRlbmRDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50
LmgKQEAgLTUzLDYgKzUzLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2F2ZShjb25z
dCBXZWJTdHJpbmcmIHVybCwgY29uc3QgV2ViU3RyaW5nJiBjb250ZW50LCBib29sIHNhdmVBcykg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZChjb25zdCBXZWJTdHJpbmcmIHVybCwgY29uc3Qg
V2ViU3RyaW5nJiBjb250ZW50KSB7IH0KIAorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RmlsZVN5
c3RlbVBlcm1pc3Npb25zKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNlbGVjdEZvbGRlckFuZEdy
YW50RmlsZVN5c3RlbVBlcm1pc3Npb24oKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmV2b2tlRmls
ZVN5c3RlbVBlcm1pc3Npb24oY29uc3QgV2ViU3RyaW5nJiBmaWxlU3lzdGVtUGF0aCkgeyB9CisK
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5XZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50KCkge30K
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JGcm9u
dGVuZENsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRJbXBsLmNwcAppbmRleCBmY2ZhMjVmOWM5OTcwNjVhMTUxNDJlYjM2MWQ3
ZjkxYzljNWU5MTYzLi5mZDZlZmRhM2IwZWYyNmMyM2ExNDE4YmVmYTNiODg0ZmNhNjdjOTU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JGcm9udGVuZENs
aWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckZy
b250ZW5kQ2xpZW50SW1wbC5jcHAKQEAgLTE1NCw0ICsxNTQsMjUgQEAgdm9pZCBJbnNwZWN0b3JG
cm9udGVuZENsaWVudEltcGw6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKICAgICBtX2NsaWVudC0+c2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2FnZSk7CiB9CiAK
K2Jvb2wgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRJbXBsOjpjYW5BY2Nlc3NGaWxlU3lzdGVtKCkK
K3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudElt
cGw6OnJlcXVlc3RGaWxlU3lzdGVtUGVybWlzc2lvbnMoKQoreworICAgIG1fY2xpZW50LT5yZXF1
ZXN0RmlsZVN5c3RlbVBlcm1pc3Npb25zKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRJbXBsOjpzZWxlY3RGb2xkZXJBbmRHcmFudEZpbGVTeXN0ZW1QZXJtaXNzaW9uKCkKK3sK
KyAgICBtX2NsaWVudC0+c2VsZWN0Rm9sZGVyQW5kR3JhbnRGaWxlU3lzdGVtUGVybWlzc2lvbigp
OworfQorCit2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbDo6cmV2b2tlRmlsZVN5c3Rl
bVBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBmaWxlU3lzdGVtUGF0aCkKK3sKKyAgICBtX2NsaWVu
dC0+cmV2b2tlRmlsZVN5c3RlbVBlcm1pc3Npb24oZmlsZVN5c3RlbVBhdGgpOworfQorCisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9JbnNwZWN0b3JGcm9udGVuZENsaWVudEltcGwuaAppbmRleCA3MmY4ZDY4YjZiMmQyYzAw
ZGJkOWIwNjI1MTBkOTc4N2NmOTA2YzAwLi5kOGI0NjFmY2I5MTBmMjFmNWUyZTU3ZGQ5OTA5ZDY2
ZDhhM2I2NWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0
b3JGcm9udGVuZENsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9J
bnNwZWN0b3JGcm9udGVuZENsaWVudEltcGwuaApAQCAtNzUsNiArNzUsMTEgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFdURjo6U3RyaW5nJik7
CiAKICAgICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgV1RGOjpTdHJp
bmcmKTsKKworICAgIHZpcnR1YWwgYm9vbCBjYW5BY2Nlc3NGaWxlU3lzdGVtKCk7CisgICAgdmly
dHVhbCB2b2lkIHJlcXVlc3RGaWxlU3lzdGVtUGVybWlzc2lvbnMoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2VsZWN0Rm9sZGVyQW5kR3JhbnRGaWxlU3lzdGVtUGVybWlzc2lvbigpOworICAgIHZpcnR1
YWwgdm9pZCByZXZva2VGaWxlU3lzdGVtUGVybWlzc2lvbihjb25zdCBTdHJpbmcmIGZpbGVTeXN0
ZW1QYXRoKTsKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UGFnZSogbV9mcm9udGVuZFBhZ2U7CiAg
ICAgV2ViRGV2VG9vbHNGcm9udGVuZENsaWVudCogbV9jbGllbnQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180882</attachid>
            <date>2012-12-28 09:05:10 -0800</date>
            <delta_ts>2012-12-28 09:13:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105727-20121228210220.patch</filename>
            <type>text/plain</type>
            <size>37792</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGZjZjY3NjVhNzM1NGNj
YTYyYjJlZDcyYjNkNzcwMGI0MDI3MzliYi4uOWEzNzFhODdmNGZhZjBkZWZhZGVlMTY5ZmM2NzA4
NjRkYjE2MTE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEyLTEyLTI4ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFN1cHBvcnQgaW5zcGVjdG9yIGZpbGUgc3lzdGVtIGFjY2VzcyB3aXRoIGlzb2xhdGVkIGZp
bGUgc3lzdGVtIHRocm91Z2ggSW5zcGVjdG9yRnJvbnRlbmRIb3N0LgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1NzI3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRmlsZSBzeXN0ZW0gYWNjZXNzIHRocm91
Z2ggaXNvbGF0ZWQgZmlsZSBzeXN0ZW0gaXMgaW1wbGVtZW50ZWQgaW4gaW5zcGVjdG9yLgorICAg
ICAgICBGaWxlIHN5c3RlbSBhY2Nlc3MgcmVxdWVzdHMgYXJlIHNlbnQgdGhyb3VnaCBJbnNwZWN0
b3JGcm9udGVuZEhvc3QuCisgICAgICAgIEludHJvZHVjZWQgSXNvbGF0ZWRGaWxlc3lzdGVtTW9k
ZWwgZW5jYXBzdWxhdGluZyBmaWxlIHN5c3RlbSBhY2Nlc3MgbG9naWMuIAorICAgICAgICBJbnRy
b2R1Y2VkIEZpbGVzeXN0ZW1NYXBwaW5nIHRoYXQgcHJvdmlkZXMgbWFwcGluZyBiZXR3ZWVuIHdv
cmtzcGFjZSB1cmlzIGFuZCBmaWxlIHN5c3RlbSBwYXRoZXMuCisgICAgICAgIERPTUZpbGVTeXN0
ZW0uY3JlYXRlSXNvbGF0ZWRGaWxlU3lzdGVtIG1vZGlmaWVkIHRvIGFjY2VwdCBvcHRpb25hbCBy
ZWdpc3RlcmVkTmFtZSBwYXJhbWV0ZXIuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0v
RE9NRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtOjpjcmVh
dGVJc29sYXRlZEZpbGVTeXN0ZW0pOgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9ET01G
aWxlU3lzdGVtLmg6CisgICAgICAgIChET01GaWxlU3lzdGVtKToKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50Lmg6CisgICAgICAgIChJbnNwZWN0
b3JGcm9udGVuZENsaWVudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWwuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWw6OnN1cHBvcnRzRmlsZXN5c3RlbXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbDo6cmVxdWVzdEZpbGVzeXN0ZW1zKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmFkZEZpbGVzeXN0ZW0pOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6cmVtb3ZlRmlsZXN5c3Rl
bSk6CisgICAgICAgIChJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckZyb250ZW5kSG9zdDo6c3VwcG9ydHNGaWxlc3lzdGVtcyk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kSG9zdDo6cmVxdWVzdEZp
bGVzeXN0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kSG9zdDo6YWRk
RmlsZXN5c3RlbSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnJl
bW92ZUZpbGVzeXN0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRIb3N0
Ojppc29sYXRlZEZpbGVzeXN0ZW0pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRl
bmRIb3N0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9GaWxlc3lzdGVtTWFwcGluZy5qczogQWRkZWQuCisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qczoKKyAgICAgICAgKElu
c3BlY3RvckZyb250ZW5kQVBJLmZpbGVzeXN0ZW1zTG9hZGVkKToKKyAgICAgICAgKEluc3BlY3Rv
ckZyb250ZW5kQVBJLmZpbGVzeXN0ZW1SZW1vdmVkKToKKyAgICAgICAgKEluc3BlY3RvckZyb250
ZW5kQVBJLmZpbGVzeXN0ZW1BZGRlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9J
bnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLmpzOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNw
ZWN0b3JGcm9udGVuZEhvc3RTdHViLnByb3RvdHlwZS5zdXBwb3J0c0ZpbGVzeXN0ZW1zKToKKyAg
ICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5wcm90b3R5cGUu
cmVxdWVzdEZpbGVzeXN0ZW1zKToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yRnJv
bnRlbmRIb3N0U3R1Yi5wcm90b3R5cGUuYWRkRmlsZXN5c3RlbSk6CisgICAgICAgICguV2ViSW5z
cGVjdG9yLkluc3BlY3RvckZyb250ZW5kSG9zdFN0dWIucHJvdG90eXBlLnJlbW92ZUZpbGVzeXN0
ZW0pOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLnBy
b3RvdHlwZS5pc29sYXRlZEZpbGVzeXN0ZW0pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvSXNvbGF0ZWRGaWxlc3lzdGVtTW9kZWwuanM6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvV2ViS2l0LnFyYzoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2V4
dGVybnMuanM6CisgICAgICAgIChET01GaWxlU3lzdGVtKToKKyAgICAgICAgKEluc3BlY3RvckZy
b250ZW5kSG9zdEFQSS5wcm90b3R5cGUuc3VwcG9ydHNGaWxlc3lzdGVtcyk6CisgICAgICAgIChJ
bnNwZWN0b3JGcm9udGVuZEhvc3RBUEkucHJvdG90eXBlLnJlcXVlc3RGaWxlc3lzdGVtcyk6Cisg
ICAgICAgIChJbnNwZWN0b3JGcm9udGVuZEhvc3RBUEkucHJvdG90eXBlLmFkZEZpbGVzeXN0ZW0p
OgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRIb3N0QVBJLnByb3RvdHlwZS5yZW1vdmVGaWxl
c3lzdGVtKToKKyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kSG9zdEFQSS5wcm90b3R5cGUuaXNv
bGF0ZWRGaWxlc3lzdGVtKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgorCiAy
MDEyLTEyLTI3ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IEludHJvZHVjZSB1cmkgYXMgYSBVSVNvdXJjZUNvZGUgdW5pcXVl
IGlkZW50aWZpZXIgaW4gd29ya3NwYWNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBj
MjdlZjhiZmNlYmVkZjE4MWJmZTYwZTI1ZTVjODA3M2I2Mzk5ZjEwLi5hNWEzNjA1Y2I2MTE3MWRh
NzMzZmJkMzA1Y2E2Yjg0Y2E1ZTM2Njg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI2IEBACisyMDEyLTEyLTI4ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFN1cHBvcnQgaW5zcGVjdG9yIGZpbGUg
c3lzdGVtIGFjY2VzcyB3aXRoIGlzb2xhdGVkIGZpbGUgc3lzdGVtIHRocm91Z2ggSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA1NzI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRmlsZSBzeXN0ZW0gYWNjZXNzIG1ldGhvZHMgcGx1bWJpbmcgbWFkZSBmb3IgQ2hyb21p
dW0uCisKKyAgICAgICAgKiBwdWJsaWMvV2ViRGV2VG9vbHNGcm9udGVuZENsaWVudC5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50OjpyZXF1ZXN0RmlsZXN5c3Rl
bXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50OjphZGRGaWxl
c3lzdGVtKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNGcm9udGVuZENsaWVudDo6cmVt
b3ZlRmlsZXN5c3RlbSk6CisgICAgICAgIChXZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50KToKKyAg
ICAgICAgKiBzcmMvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRJbXBsOjpzdXBwb3J0c0ZpbGVzeXN0ZW1zKToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckZyb250ZW5kQ2xp
ZW50SW1wbDo6cmVxdWVzdEZpbGVzeXN0ZW1zKToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRJbXBsOjphZGRGaWxlc3lzdGVtKToKKyAgICAgICAgKFdlYktpdDo6SW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRJbXBsOjpyZW1vdmVGaWxlc3lzdGVtKToKKyAgICAgICAgKiBz
cmMvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRJbXBsLmg6CisgICAgICAgIChJbnNwZWN0b3JGcm9u
dGVuZENsaWVudEltcGwpOgorCiAyMDEyLTEyLTI2ICBOaWNvIFdlYmVyICA8dGhha2lzQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIERpc2FibGUgdW5wcmVmaXhlZCBjc3MgdHJh
bnNpdGlvbnMgdW50aWwgdGhleSdyZSBmdW5jdGlvbmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbS5jcHAKaW5kZXggNGU4ZWQ0YjQxOTI0
NmMwMjUxOTBiZWE5ZWFlZTc3MWEwZDExODU5Ni4uMGExZGIxNDA1MGU1NjM2ZjJkYzJlMzQzMjMz
ZTJjNzI5NTllMzgxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0RPTUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9ET01GaWxlU3lzdGVtLmNwcApAQCAtNjIsNyArNjIsNyBAQCBQYXNzUmVmUHRyPERPTUZp
bGVTeXN0ZW0+IERPTUZpbGVTeXN0ZW06OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LAogICAgIHJldHVybiBmaWxlU3lzdGVtLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0
cjxET01GaWxlU3lzdGVtPiBET01GaWxlU3lzdGVtOjpjcmVhdGVJc29sYXRlZEZpbGVTeXN0ZW0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBmaWxlc3lzdGVt
SWQpCitQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IERPTUZpbGVTeXN0ZW06OmNyZWF0ZUlzb2xh
dGVkRmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJp
bmcmIGZpbGVzeXN0ZW1JZCwgY29uc3QgU3RyaW5nJiByZWdpc3RlcmVkTmFtZSkKIHsKICAgICBp
ZiAoZmlsZXN5c3RlbUlkLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC04Miw2ICs4
MiwxMCBAQCBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IERPTUZpbGVTeXN0ZW06OmNyZWF0ZUlz
b2xhdGVkRmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpbwogICAgIHJvb3RVUkwuYXBwZW5kKCIvIik7
CiAgICAgcm9vdFVSTC5hcHBlbmQoZmlsZXN5c3RlbUlkKTsKICAgICByb290VVJMLmFwcGVuZCgi
LyIpOworICAgIGlmICghcmVnaXN0ZXJlZE5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAgIHJvb3RV
UkwuYXBwZW5kKHJlZ2lzdGVyZWROYW1lKTsKKyAgICAgICAgcm9vdFVSTC5hcHBlbmQoIi8iKTsK
KyAgICB9CiAKICAgICByZXR1cm4gRE9NRmlsZVN5c3RlbTo6Y3JlYXRlKGNvbnRleHQsIGZpbGVz
eXN0ZW1OYW1lLnRvU3RyaW5nKCksIEZpbGVTeXN0ZW1UeXBlSXNvbGF0ZWQsIEtVUkwoUGFyc2Vk
VVJMU3RyaW5nLCByb290VVJMLnRvU3RyaW5nKCkpLCBBc3luY0ZpbGVTeXN0ZW06OmNyZWF0ZSgp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01G
aWxlU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5
c3RlbS5oCmluZGV4IDNiNGVlMTBjNjhhNzFlNmIwNDhhYzNiMDE0NjVkZjE3Zjg3YzA5ZTAuLjUz
ZjliMmFkODA5OWQ2MWYxYmU3MGFiYzkyNzdkYjlkYWQyOTEyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uaApAQCAtNDksOCArNDks
OCBAQCBjbGFzcyBET01GaWxlU3lzdGVtIDogcHVibGljIERPTUZpbGVTeXN0ZW1CYXNlLCBwdWJs
aWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01G
aWxlU3lzdGVtPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYg
bmFtZSwgRmlsZVN5c3RlbVR5cGUsIGNvbnN0IEtVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtPik7CiAKLSAgICAvLyBDcmVhdGVzIGEgbmV3IGlzb2xhdGVkIGZpbGUgc3lz
dGVtIGZvciB0aGUgZ2l2ZW4gZmlsZXN5c3RlbUlkLgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERP
TUZpbGVTeXN0ZW0+IGNyZWF0ZUlzb2xhdGVkRmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgU3RyaW5nJiBmaWxlc3lzdGVtSWQpOworICAgIC8vIENyZWF0ZXMgYSBuZXcg
aXNvbGF0ZWQgZmlsZSBzeXN0ZW0gZm9yIHRoZSBnaXZlbiBmaWxlc3lzdGVtSWQgYW5kIG9wdGlv
bmFsIHJlZ2lzdGVyZWROYW1lLgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+
IGNyZWF0ZUlzb2xhdGVkRmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3Qg
U3RyaW5nJiBmaWxlc3lzdGVtSWQsIGNvbnN0IFN0cmluZyYgcmVnaXN0ZXJlZE5hbWUgPSBTdHJp
bmcoKSk7CiAKICAgICBQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5PiByb290KCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQppbmRleCA3MzliYzBiYzk0MmJlYjQ2YjQ4ZDg2ZDlmMWEyMDAzN2RlYTkzZjU1Li44
N2FmOWZmNzc0NjI1MGJjNzMzYTM0ZjAxMTUyNzc4N2E4MWVlY2E5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CkBAIC01MTIzLDYgKzUxMjMsNyBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQv
RXh0ZW5zaW9uU2VydmVyLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0V4
dGVuc2lvblZpZXcuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZU1h
bmFnZXIuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZXN5c3RlbU1h
cHBpbmcuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1v
ZGVsLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVVdGlscy5qcycs
CiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Gb250Vmlldy5qcycsCkBAIC01MTM4
LDYgKzUxMzksNyBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9y
RnJvbnRlbmRIb3N0U3R1Yi5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9J
bnNwZWN0b3JWaWV3LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3Bl
Y3Rvci5qcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Jc29sYXRlZEZpbGVz
eXN0ZW1Nb2RlbC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9KYXZhU2Ny
aXB0Rm9ybWF0dGVyLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL2pzZGlm
ZmxpYi5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9LZXlib2FyZFNob3J0
Y3V0LmpzJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
aW5kZXggYzE2MzA4ZGJiN2YzY2EzMjQzODI1ZGY0OWI0NDFkNzFjMGQ1MTY0YS4uYmQzZDIyZDcy
MWE3ZDJiM2ZiOWMyNDE4ZGMwNzE4Mzg1YjY3Y2Q4YiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTc2NTg1LDYgKzc2NTg1LDEwIEBACiAJCQkJ
CT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0
b3JcZnJvbnQtZW5kXEZpbGVzeXN0ZW1NYXBwaW5nLmpzIgorCQkJCQk+CisJCQkJPC9GaWxlPgor
CQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxGaWxl
U3lzdGVtTW9kZWwuanMiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkBAIC03NjcyMSw2ICs3NjcyNSwx
MCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0i
Li5caW5zcGVjdG9yXGZyb250LWVuZFxJc29sYXRlZEZpbGVzeXN0ZW1Nb2RlbC5qcyIKKwkJCQkJ
PgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rv
clxmcm9udC1lbmRcY21camF2YXNjcmlwdC5qcyIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50LmgKaW5k
ZXggZjdmZDg1YzgxNmZkZmMxZTg5ZTc1YTMxNGI2ZTkyNjhjNzAwYzEyNy4uZWY3MGZmNzVkZTkx
Y2U4YTM4MWQwMGU1MTJiM2FhMWZjYjU5ODY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50LmgKQEAgLTcxLDYgKzcxLDExIEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcm
KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3Ry
aW5nJikgPSAwOworCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRmlsZXN5c3RlbXMoKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RGaWxlc3lzdGVtcygpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgYWRkRmlsZXN5c3RlbSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRmlsZXN5
c3RlbShjb25zdCBTdHJpbmcmIGZpbGVzeXN0ZW1QYXRoKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaAppbmRleCA3ZjlmMDIzNGUzOTc5OTk5YTdjODI0OTgx
MDI1ZTJjNzY3ZjY5MjY4Li5jOWQ4MDk3ZGJiM2RiNDE4NmY1MGFjYTA4M2QxZGI1NmIwN2EyNzNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsLmgKQEAgLTc2LDYgKzc2LDExIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogCisg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzRmlsZXN5c3RlbXMoKSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RmlsZXN5c3RlbXMoKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgYWRkRmlsZXN5c3RlbSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZW1vdmVGaWxlc3lzdGVt
KGNvbnN0IFN0cmluZyYgZmlsZXN5c3RlbVBhdGgpIHsgfQorCiAgICAgYm9vbCBjYW5BdHRhY2hX
aW5kb3coKTsKICAgICB2b2lkIHNldERvY2tpbmdVbmF2YWlsYWJsZShib29sKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAppbmRl
eCAxOWI3MTJkNWI2NzQzZjJhNGM4Yjg1OWFhNzU5ZDlhMmViYzYzYjAxLi40OWNhNWYwNGQyMjJi
ZWRjZGJlN2U0N2UyZmRjNzA0MDg1NTkyODcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2lu
Y2x1ZGUgIkNvbnRleHRNZW51SXRlbS5oIgogI2luY2x1ZGUgIkNvbnRleHRNZW51Q29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIkNvbnRleHRNZW51UHJvdmlkZXIuaCIKKyNpbmNsdWRlICJET01GaWxl
U3lzdGVtLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5j
bHVkZSAiRnJhbWVMb2FkZXIuaCIKQEAgLTI5NCw2ICsyOTUsMzcgQEAgU3RyaW5nIEluc3BlY3Rv
ckZyb250ZW5kSG9zdDo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBTdHJpbmcmIHVy
bCkKICAgICByZXR1cm4gU3RyaW5nKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9CiAKK2Jv
b2wgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpzdXBwb3J0c0ZpbGVzeXN0ZW1zKCkKK3sKKyAgICBp
ZiAobV9jbGllbnQpCisgICAgICAgIHJldHVybiBtX2NsaWVudC0+c3VwcG9ydHNGaWxlc3lzdGVt
cygpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6
OnJlcXVlc3RGaWxlc3lzdGVtcygpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2Ns
aWVudC0+cmVxdWVzdEZpbGVzeXN0ZW1zKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmRI
b3N0OjphZGRGaWxlc3lzdGVtKCkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xp
ZW50LT5hZGRGaWxlc3lzdGVtKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Ojpy
ZW1vdmVGaWxlc3lzdGVtKGNvbnN0IFN0cmluZyYgZmlsZXN5c3RlbVBhdGgpCit7CisgICAgaWYg
KG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+cmVtb3ZlRmlsZXN5c3RlbShmaWxlc3lzdGVt
UGF0aCk7Cit9CisKK1Bhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gSW5zcGVjdG9yRnJvbnRlbmRI
b3N0Ojppc29sYXRlZEZpbGVzeXN0ZW0oY29uc3QgU3RyaW5nJiBmaWxlc3lzdGVtSWQsIGNvbnN0
IFN0cmluZyYgcmVnaXN0ZXJlZE5hbWUpCit7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCA9IG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKTsKKyAgICBy
ZXR1cm4gRE9NRmlsZVN5c3RlbTo6Y3JlYXRlSXNvbGF0ZWRGaWxlU3lzdGVtKGNvbnRleHQsIGZp
bGVzeXN0ZW1JZCwgcmVnaXN0ZXJlZE5hbWUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oCmluZGV4IGVhNmQxMDE5ODNkOTk5OTdkNDJh
NzA5Mjk5ZjYyMmZlZGM5ODM1MDEuLjEyYTZhMzQ1YzhmNDdjMzYwYmY5OTE2MmJhZmEzNzZlNDQ2
YTIzMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LmgKQEAgLTM5LDYgKzM5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Q29udGV4dE1lbnVJdGVtOworY2xhc3MgRE9NRmlsZVN5c3RlbTsKIGNsYXNzIEV2ZW50OwogY2xh
c3MgRnJvbnRlbmRNZW51UHJvdmlkZXI7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CkBAIC04NSw2
ICs4NiwxMiBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgbG9hZFJlc291cmNlU3luY2hyb25vdXNs
eShjb25zdCBTdHJpbmcmIHVybCk7CiAKKyAgICBib29sIHN1cHBvcnRzRmlsZXN5c3RlbXMoKTsK
KyAgICB2b2lkIHJlcXVlc3RGaWxlc3lzdGVtcygpOworICAgIHZvaWQgYWRkRmlsZXN5c3RlbSgp
OworICAgIHZvaWQgcmVtb3ZlRmlsZXN5c3RlbShjb25zdCBTdHJpbmcmIGZpbGVzeXN0ZW1QYXRo
KTsKKyAgICBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGlzb2xhdGVkRmlsZXN5c3RlbShjb25z
dCBTdHJpbmcmIGZpbGVzeXN0ZW1JZCwgY29uc3QgU3RyaW5nJiByZWdpc3RlcmVkTmFtZSk7CisK
IHByaXZhdGU6CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgZnJpZW5kIGNsYXNzIEZy
b250ZW5kTWVudVByb3ZpZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LmlkbAppbmRleCA3MjhhYTBjMGU0YjBmOTAxMzI0NjczYTEwMDVk
MThjNmU5OTczZDFiLi5lOTNkMjViOTA2YTM0OWUyZDAyMWUzZDQ2ODBmN2MwYWZkMjEzNWMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmlkbApAQCAtNjYsNCArNjYsMTAgQEAKICAgICBbQ3VzdG9tXSB2b2lkIHJlY29yZFNldHRpbmdD
aGFuZ2VkKGluIHVuc2lnbmVkIGxvbmcgc2V0dGluZ0NoYW5nZWQpOwogICAgIAogICAgIERPTVN0
cmluZyBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGluIERPTVN0cmluZyB1cmwpOworCisgICAg
Ym9vbGVhbiBzdXBwb3J0c0ZpbGVzeXN0ZW1zKCk7CisgICAgdm9pZCByZXF1ZXN0RmlsZXN5c3Rl
bXMoKTsKKyAgICB2b2lkIGFkZEZpbGVzeXN0ZW0oKTsKKyAgICB2b2lkIHJlbW92ZUZpbGVzeXN0
ZW0oaW4gRE9NU3RyaW5nIGZpbGVzeXN0ZW1QYXRoKTsKKyAgICBET01GaWxlU3lzdGVtIGlzb2xh
dGVkRmlsZXN5c3RlbShpbiBET01TdHJpbmcgZmlsZXN5c3RlbUlkLCBpbiBET01TdHJpbmcgcmVn
aXN0ZXJlZE5hbWUpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9j
b21waWxlLWZyb250LWVuZC5weSBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZy
b250LWVuZC5weQppbmRleCA3YWIzZmE0MDZjODMyYTIwMGQ2OGE5M2M1ZTM0ZWM5MGMwMTg3Yzdm
Li5iZjM3MmRkYzZjZTRlYzc5ZjYzMWE0ZGI0MGUzNjI0ZjQ2NGNmMGM5IDEwMDc1NQotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CkBAIC03NiwxMSArNzYsMTMg
QEAgbW9kdWxlcyA9IFsKICAgICAgICAgICAgICJEZWJ1Z2dlck1vZGVsLmpzIiwKICAgICAgICAg
ICAgICJEZWJ1Z2dlclNjcmlwdE1hcHBpbmcuanMiLAogICAgICAgICAgICAgIkZpbGVNYW5hZ2Vy
LmpzIiwKKyAgICAgICAgICAgICJGaWxlc3lzdGVtTWFwcGluZy5qcyIsCiAgICAgICAgICAgICAi
RmlsZVN5c3RlbU1vZGVsLmpzIiwKICAgICAgICAgICAgICJGaWxlVXRpbHMuanMiLAogICAgICAg
ICAgICAgIkhBUkVudHJ5LmpzIiwKICAgICAgICAgICAgICJJbmRleGVkREJNb2RlbC5qcyIsCiAg
ICAgICAgICAgICAiSW5zcGVjdG9yQmFja2VuZC5qcyIsCisgICAgICAgICAgICAiSXNvbGF0ZWRG
aWxlc3lzdGVtTW9kZWwuanMiLAogICAgICAgICAgICAgIkxpbmtpZmllci5qcyIsCiAgICAgICAg
ICAgICAiTmV0d29ya0xvZy5qcyIsCiAgICAgICAgICAgICAiTmV0d29ya1VJU291cmNlQ29kZVBy
b3ZpZGVyLmpzIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRmlsZXN5c3RlbU1hcHBpbmcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0ZpbGVzeXN0ZW1NYXBwaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhYzM1NDM2MGExYjk3MjE3MzIz
MzJhN2U1ODRjOTE5YTc0ZTU3NDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVzeXN0ZW1NYXBwaW5nLmpzCkBAIC0wLDAgKzEsMTc4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
LyoqCisgKiBAaW50ZXJmYWNlCisgKi8KK1dlYkluc3BlY3Rvci5GaWxlc3lzdGVtTWFwcGluZyA9
IGZ1bmN0aW9uKCkgeyB9CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKi8KK1dlYkluc3BlY3Rv
ci5GaWxlc3lzdGVtTWFwcGluZy5GaWxlRGVzY3JpcHRvciA9IGZ1bmN0aW9uKGZpbGVzeXN0ZW1Q
YXRoLCBmaWxlUGF0aCkKK3sKKyAgICB0aGlzLmZpbGVzeXN0ZW1QYXRoID0gZmlsZXN5c3RlbVBh
dGg7CisgICAgdGhpcy5maWxlUGF0aCA9IGZpbGVQYXRoOworfQorCitXZWJJbnNwZWN0b3IuRmls
ZXN5c3RlbU1hcHBpbmcucHJvdG90eXBlID0geworICAgIC8qKgorICAgICAqIEByZXR1cm4ge0Fy
cmF5LjxzdHJpbmc+fQorICAgICAqLworICAgIGZpbGVzeXN0ZW1QYXRoczogZnVuY3Rpb24oKSB7
IH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJpCisgICAgICogQHJldHVy
biB7P1dlYkluc3BlY3Rvci5GaWxlc3lzdGVtTWFwcGluZy5GaWxlRGVzY3JpcHRvcn0KKyAgICAg
Ki8KKyAgICBmaWxlRm9yVVJJOiBmdW5jdGlvbih1cmkpIHsgfSwKKworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVzeXN0ZW1NYXBwaW5nLkZpbGVEZXNjcmlwdG9yfSBm
aWxlRGVzY3JpcHRvcgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICB1cmlG
b3JGaWxlOiBmdW5jdGlvbihmaWxlRGVzY3JpcHRvcikgeyB9LAorCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtzdHJpbmd9IHBhdGgKKyAgICAgKiBAcmV0dXJuIHs/c3RyaW5nfQorICAgICAqLwor
ICAgIHVyaUZvclBhdGg6IGZ1bmN0aW9uKHBhdGgpIHsgfQorfQorCisvKioKKyAqIEBjb25zdHJ1
Y3RvcgorICogQGltcGxlbWVudHMge1dlYkluc3BlY3Rvci5GaWxlc3lzdGVtTWFwcGluZ30KKyAq
IEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuT2JqZWN0fQorICovCitXZWJJbnNwZWN0b3IuRmlsZXN5
c3RlbU1hcHBpbmdJbXBsID0gZnVuY3Rpb24oKQoreworICAgIHRoaXMuX2ZpbGVzeXN0ZW1NYXBw
aW5nU2V0dGluZyA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5jcmVhdGVTZXR0aW5nKCJmaWxlc3lz
dGVtTWFwcGluZyIsIHt9KTsKKyAgICAvKiogQHR5cGUgeyFPYmplY3QuPHN0cmluZywgc3RyaW5n
Pn0gKi8KKyAgICB0aGlzLl9tYXBwZWROYW1lcyA9IHRoaXMuX2ZpbGVzeXN0ZW1NYXBwaW5nU2V0
dGluZy5nZXQoKTsKK30KKworV2ViSW5zcGVjdG9yLkZpbGVzeXN0ZW1NYXBwaW5nSW1wbC5wcm90
b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGVzeXN0ZW1QYXRo
CisgICAgICovCisgICAgYWRkRmlsZXN5c3RlbU1hcHBpbmc6IGZ1bmN0aW9uKGZpbGVzeXN0ZW1Q
YXRoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX21hcHBlZE5hbWVzW2ZpbGVzeXN0ZW1QYXRo
XSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdmFyIHBhdGhTZWdtZW50cyA9IGZpbGVz
eXN0ZW1QYXRoLnNwbGl0KCIvIik7CisgICAgICAgIHZhciBtYXBwZWROYW1lID0gcGF0aFNlZ21l
bnRzW3BhdGhTZWdtZW50cy5sZW5ndGggLSAxXTsKKyAgICAgICAgdmFyIHVuaXF1ZU1hcHBlZE5h
bWUgPSB0aGlzLl91bmlxdWVNYXBwZWROYW1lKG1hcHBlZE5hbWUpOworICAgICAgICB0aGlzLl9t
YXBwZWROYW1lc1tmaWxlc3lzdGVtUGF0aF0gPSBtYXBwZWROYW1lOworICAgICAgICB0aGlzLl9m
aWxlc3lzdGVtTWFwcGluZ1NldHRpbmcuc2V0KHRoaXMuX21hcHBlZE5hbWVzKTsKKyAgICB9LAor
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG1hcHBlZE5hbWUKKyAgICAgKi8KKyAg
ICBfdW5pcXVlTWFwcGVkTmFtZTogZnVuY3Rpb24obWFwcGVkTmFtZSkKKyAgICB7CisgICAgICAg
IHZhciB1bmlxdWVNYXBwZWROYW1lID0gbWFwcGVkTmFtZTsKKyAgICAgICAgdmFyIGkgPSAxOwor
ICAgICAgICB3aGlsZSAoT2JqZWN0LnZhbHVlcyh0aGlzLl9tYXBwZWROYW1lcykuaW5kZXhPZih1
bmlxdWVNYXBwZWROYW1lKSAhPT0gLTEpIHsKKyAgICAgICAgICAgIHVuaXF1ZU1hcHBlZE5hbWUg
PSBtYXBwZWROYW1lICsgIiAoIiArIGkgKyAiKSI7CisgICAgICAgICAgICArK2k7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIHVuaXF1ZU1hcHBlZE5hbWU7CisgICAgfSwKKworICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlc3lzdGVtUGF0aAorICAgICAqLworICAgIHJlbW92
ZUZpbGVzeXN0ZW1NYXBwaW5nOiBmdW5jdGlvbihmaWxlc3lzdGVtUGF0aCkKKyAgICB7CisgICAg
ICAgIGRlbGV0ZSB0aGlzLl9tYXBwZWROYW1lc1tmaWxlc3lzdGVtUGF0aF07CisgICAgICAgIHRo
aXMuX2ZpbGVzeXN0ZW1NYXBwaW5nU2V0dGluZy5zZXQodGhpcy5fbWFwcGVkTmFtZXMpOworICAg
IH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtBcnJheS48c3RyaW5nPn0KKyAgICAgKi8K
KyAgICBmaWxlc3lzdGVtUGF0aHM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBP
YmplY3Qua2V5cyh0aGlzLl9tYXBwZWROYW1lcyk7CisgICAgfSwKKworICAgIC8qKgorICAgICAq
IEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBfdXJpUHJlZml4Rm9yTWFwcGVkTmFtZTog
ZnVuY3Rpb24obWFwcGVkTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiAiZmlsZTovLy8iICsg
bWFwcGVkTmFtZSArICIvIjsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJp
bmd9IHVyaQorICAgICAqIEByZXR1cm4gez9XZWJJbnNwZWN0b3IuRmlsZXN5c3RlbU1hcHBpbmcu
RmlsZURlc2NyaXB0b3J9CisgICAgICovCisgICAgZmlsZUZvclVSSTogZnVuY3Rpb24odXJpKQor
ICAgIHsKKyAgICAgICAgZm9yICh2YXIgZmlsZXN5c3RlbVBhdGggaW4gdGhpcy5fbWFwcGVkTmFt
ZXMpIHsKKyAgICAgICAgICAgIHZhciB1cmlQcmVmaXggPSB0aGlzLl91cmlQcmVmaXhGb3JNYXBw
ZWROYW1lKHRoaXMuX21hcHBlZE5hbWVzW2ZpbGVzeXN0ZW1QYXRoXSk7CisgICAgICAgICAgICBp
ZiAodXJpLmluZGV4T2YodXJpUHJlZml4KSA9PT0gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IFdlYkluc3BlY3Rvci5GaWxlc3lzdGVtTWFwcGluZy5GaWxlRGVzY3JpcHRvcihmaWxlc3lz
dGVtUGF0aCwgIi8iICsgdXJpLnN1YnN0cmluZyh1cmlQcmVmaXgubGVuZ3RoKSk7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7V2ViSW5zcGVjdG9yLkZpbGVzeXN0ZW1NYXBwaW5nLkZpbGVEZXNjcmlwdG9yfSBmaWxlRGVz
Y3JpcHRvcgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICB1cmlGb3JGaWxl
OiBmdW5jdGlvbihmaWxlRGVzY3JpcHRvcikKKyAgICB7CisgICAgICAgIHZhciB1cmlQcmVmaXgg
PSB0aGlzLl91cmlQcmVmaXhGb3JNYXBwZWROYW1lKHRoaXMuX21hcHBlZE5hbWVzW2ZpbGVEZXNj
cmlwdG9yLmZpbGVzeXN0ZW1QYXRoXSk7CisgICAgICAgIHJldHVybiB1cmlQcmVmaXggKyBmaWxl
RGVzY3JpcHRvci5maWxlUGF0aC5zdWJzdHJpbmcoIi8iLmxlbmd0aCk7CisgICAgfSwKKyAgICAK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aAorICAgICAqIEByZXR1cm4gez9z
dHJpbmd9CisgICAgICovCisgICAgdXJpRm9yUGF0aDogZnVuY3Rpb24ocGF0aCkKKyAgICB7Cisg
ICAgICAgIGZvciAodmFyIGZpbGVzeXN0ZW1QYXRoIGluIHRoaXMuX21hcHBlZE5hbWVzKSB7Cisg
ICAgICAgICAgICBpZiAocGF0aC5pbmRleE9mKGZpbGVzeXN0ZW1QYXRoKSA9PT0gMCkgeworICAg
ICAgICAgICAgICAgIHZhciB1cmlQcmVmaXggPSB0aGlzLl91cmlQcmVmaXhGb3JNYXBwZWROYW1l
KHRoaXMuX21hcHBlZE5hbWVzW2ZpbGVzeXN0ZW1QYXRoXSk7CisgICAgICAgICAgICAgICAgdmFy
IHN1YlBhdGggPSBwYXRoLnN1YnN0cmluZyhmaWxlc3lzdGVtUGF0aC5sZW5ndGgpOworICAgICAg
ICAgICAgICAgIGlmIChzdWJQYXRoLmxlbmd0aCA9PT0gMCkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHVyaVByZWZpeDsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChzdWJQYXRoWzBdID09
PSAiLyIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB1cmlQcmVmaXggKyBzdWJQYXRoLnN1
YnN0cmluZygiLyIubGVuZ3RoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gbnVsbDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0luc3BlY3RvckZyb250ZW5kQVBJLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcwppbmRleCA5MDBhMTdiNjUy
MmM2M2M1YjI0ODAwMGMzZDZmNjJlZTEwZWRiYTllLi5iNGE3YjcxNjYwY2YwMzk3YTYzZjAzNWJl
ODFkM2FiMDFhZWE3OTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0luc3BlY3RvckZyb250ZW5kQVBJLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKQEAgLTExMCw2ICsxMTAsMjEg
QEAgdmFyIEluc3BlY3RvckZyb250ZW5kQVBJID0gewogICAgICAgICBXZWJJbnNwZWN0b3IudG9n
Z2xlU2VhcmNoaW5nRm9yTm9kZSgpOwogICAgIH0sCiAKKyAgICBmaWxlc3lzdGVtc0xvYWRlZDog
ZnVuY3Rpb24oZmlsZXN5c3RlbXMpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3IuaXNvbGF0
ZWRGaWxlc3lzdGVtTWFuYWdlci5maWxlc3lzdGVtc0xvYWRlZChmaWxlc3lzdGVtcyk7CisgICAg
fSwKKworICAgIGZpbGVzeXN0ZW1SZW1vdmVkOiBmdW5jdGlvbihmaWxlc3lzdGVtUGF0aCkKKyAg
ICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5pc29sYXRlZEZpbGVzeXN0ZW1NYW5hZ2VyLmZpbGVz
eXN0ZW1SZW1vdmVkKGZpbGVzeXN0ZW1QYXRoKTsKKyAgICB9LAorCisgICAgZmlsZXN5c3RlbUFk
ZGVkOiBmdW5jdGlvbihlcnJvck1lc3NhZ2UsIGZpbGVzeXN0ZW0pCisgICAgeworICAgICAgICBX
ZWJJbnNwZWN0b3IuaXNvbGF0ZWRGaWxlc3lzdGVtTWFuYWdlci5maWxlc3lzdGVtQWRkZWQoZXJy
b3JNZXNzYWdlLCBmaWxlc3lzdGVtKTsKKyAgICB9LAorCiAgICAgc2F2ZWRVUkw6IGZ1bmN0aW9u
KHVybCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5maWxlTWFuYWdlci5zYXZlZFVSTCh1
cmwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNw
ZWN0b3JGcm9udGVuZEhvc3RTdHViLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLmpzCmluZGV4IGM2MTZjMWQxOWQzMmNkYzlh
MTMwZWVhYWExNDc1Zjc3ZTI1MWMyMjUuLjk4OTYxYTVjMjhlNDgyMzg1ZTUxYmQ3ODI3YjBmMDVm
MGU0Njg3ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0luc3BlY3RvckZyb250ZW5kSG9zdFN0dWIuanMKQEAgLTE5NSw2ICsxOTUs
MjggQEAgV2ViSW5zcGVjdG9yLkluc3BlY3RvckZyb250ZW5kSG9zdFN0dWIucHJvdG90eXBlID0g
ewogICAgICAgICByZXR1cm4gbG9hZFhIUih1cmwpOwogICAgIH0sCiAKKyAgICBzdXBwb3J0c0Zp
bGVzeXN0ZW1zOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fSwKKworICAgIHJlcXVlc3RGaWxlc3lzdGVtczogZnVuY3Rpb24oKQorICAgIHsKKyAgICB9LAor
CisgICAgYWRkRmlsZXN5c3RlbTogZnVuY3Rpb24oKQorICAgIHsKKyAgICB9LAorCisgICAgcmVt
b3ZlRmlsZXN5c3RlbTogZnVuY3Rpb24oZmlsZXN5c3RlbVBhdGgpCisgICAgeworICAgIH0sCisK
KyAgICBpc29sYXRlZEZpbGVzeXN0ZW06IGZ1bmN0aW9uKGZpbGVzeXN0ZW1JZCwgcmVnaXN0ZXJl
ZE5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9LAorCiAgICAgc2V0Wm9v
bUZhY3RvcjogZnVuY3Rpb24oem9vbSkKICAgICB7CiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSXNvbGF0ZWRGaWxlc3lzdGVtTW9kZWwuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0lzb2xhdGVkRmlsZXN5c3RlbU1v
ZGVsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmNkMmZiYjQzMmQ0ODY1NWFiNmNkNjBjNThkOTk1YWFhNDI4NTBm
YWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0lzb2xhdGVkRmlsZXN5c3RlbU1vZGVsLmpzCkBAIC0wLDAgKzEsMjM2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAY29u
c3RydWN0b3IKKyAqLworV2ViSW5zcGVjdG9yLklzb2xhdGVkRmlsZXN5c3RlbU1vZGVsID0gZnVu
Y3Rpb24oKQoreworICAgIC8qKiBAdHlwZSB7IU9iamVjdC48c3RyaW5nLCBXZWJJbnNwZWN0b3Iu
SXNvbGF0ZWRGaWxlc3lzdGVtTW9kZWwuRmlsZXN5c3RlbT59ICovCisgICAgdGhpcy5fZmlsZXN5
c3RlbXMgPSB7fTsKKyAgICAvKiogQHR5cGUge09iamVjdC48c3RyaW5nLCBBcnJheS48ZnVuY3Rp
b24oRE9NRmlsZVN5c3RlbSk+Pn0gKi8KKyAgICB0aGlzLl9wZW5kaW5nRmlsZXN5c3RlbVJlcXVl
c3RzID0ge307CisgICAgdGhpcy5fZmlsZXN5c3RlbU1hcHBpbmcgPSBuZXcgV2ViSW5zcGVjdG9y
LkZpbGVzeXN0ZW1NYXBwaW5nSW1wbCgpOworCisgICAgaWYgKHRoaXMuc3VwcG9ydHNGaWxlc3lz
dGVtcygpKQorICAgICAgICB0aGlzLl9yZXF1ZXN0RmlsZXN5c3RlbXMoKTsKK30KKworLyoqIEB0
eXBlZGVmIHt7ZmlsZXN5c3RlbUlkOiBzdHJpbmcsIHJlZ2lzdGVyZWROYW1lOiBzdHJpbmcsIGZp
bGVzeXN0ZW1QYXRoOiBzdHJpbmd9fSAqLworV2ViSW5zcGVjdG9yLklzb2xhdGVkRmlsZXN5c3Rl
bU1vZGVsLkZpbGVzeXN0ZW07CisKK1dlYkluc3BlY3Rvci5Jc29sYXRlZEZpbGVzeXN0ZW1Nb2Rl
bC5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLkZp
bGVzeXN0ZW1NYXBwaW5nfQorICAgICAqLworICAgIG1hcHBpbmc6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIHJldHVybiB0aGlzLl9maWxlc3lzdGVtTWFwcGluZzsKKyAgICB9LAorCisgICAg
LyoqCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBzdXBwb3J0c0ZpbGVz
eXN0ZW1zOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LnN1cHBvcnRzRmlsZXN5c3RlbXMoKTsKKyAgICB9LAorCisgICAgX3JlcXVlc3RGaWxl
c3lzdGVtczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMu
X2xvYWRlZCk7CisgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5yZXF1ZXN0RmlsZXN5c3Rl
bXMoKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihzdHJpbmcp
fSBjYWxsYmFjaworICAgICAqLworICAgIGFkZEZpbGVzeXN0ZW06IGZ1bmN0aW9uKGNhbGxiYWNr
KQorICAgIHsKKyAgICAgICAgdGhpcy5fc2VsZWN0RmlsZXN5c3RlbVBhdGhDYWxsYmFjayA9IGNh
bGxiYWNrOworICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QuYWRkRmlsZXN5c3RlbSgpOwor
ICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCl9IGNhbGxiYWNrCisg
ICAgICovCisgICAgcmVtb3ZlRmlsZXN5c3RlbTogZnVuY3Rpb24oZmlsZXN5c3RlbVBhdGgsIGNh
bGxiYWNrKQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVtb3ZlRmlsZXN5c3RlbUNhbGxiYWNrID0g
Y2FsbGJhY2s7CisgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5yZW1vdmVGaWxlc3lzdGVt
KGZpbGVzeXN0ZW1QYXRoKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJh
eS48V2ViSW5zcGVjdG9yLklzb2xhdGVkRmlsZXN5c3RlbU1vZGVsLkZpbGVzeXN0ZW0+fSBmaWxl
c3lzdGVtcworICAgICAqLworICAgIF9maWxlc3lzdGVtc0xvYWRlZDogZnVuY3Rpb24oZmlsZXN5
c3RlbXMpCisgICAgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZpbGVzeXN0ZW1zLmxl
bmd0aDsgKytpKQorICAgICAgICAgICAgdGhpcy5faW5uZXJBZGRGaWxlc3lzdGVtKGZpbGVzeXN0
ZW1zW2ldKTsKKyAgICAgICAgdGhpcy5fbG9hZGVkID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fcHJv
Y2Vzc1BlbmRpbmdGaWxlc3lzdGVtUmVxdWVzdHMoKTsKKyAgICB9LAorCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlc3lzdGVtTW9kZWwuRmlsZXN5c3Rl
bX0gZmlsZXN5c3RlbQorICAgICAqLworICAgIF9pbm5lckFkZEZpbGVzeXN0ZW06IGZ1bmN0aW9u
KGZpbGVzeXN0ZW0pCisgICAgeworICAgICAgICB0aGlzLl9maWxlc3lzdGVtTWFwcGluZy5hZGRG
aWxlc3lzdGVtTWFwcGluZyhmaWxlc3lzdGVtLmZpbGVzeXN0ZW1QYXRoKTsKKyAgICAgICAgdGhp
cy5fZmlsZXN5c3RlbXNbZmlsZXN5c3RlbS5maWxlc3lzdGVtUGF0aF0gPSBmaWxlc3lzdGVtOwor
ICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtBcnJheS48c3RyaW5nPn0KKyAgICAg
Ki8KKyAgICBfZmlsZXN5c3RlbVBhdGhzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1
cm4gT2JqZWN0LmtleXModGhpcy5fZmlsZXN5c3RlbXMpOworICAgIH0sCisKKyAgICBfcHJvY2Vz
c1BlbmRpbmdGaWxlc3lzdGVtUmVxdWVzdHM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGZv
ciAodmFyIGZpbGVzeXN0ZW1QYXRoIGluIHRoaXMuX3BlbmRpbmdGaWxlc3lzdGVtUmVxdWVzdHMp
IHsKKyAgICAgICAgICAgIHZhciBjYWxsYmFja3MgPSB0aGlzLl9wZW5kaW5nRmlsZXN5c3RlbVJl
cXVlc3RzW2ZpbGVzeXN0ZW1QYXRoXTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
Y2FsbGJhY2tzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrc1tpXSh0aGlz
Ll9pc29sYXRlZEZpbGVzeXN0ZW0oZmlsZXN5c3RlbVBhdGgpKTsKKyAgICAgICAgfQorICAgIH0s
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXJyb3JNZXNzYWdlCisgICAgICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlc3lzdGVtTW9kZWwuRmlsZXN5c3RlbX0g
ZmlsZXN5c3RlbQorICAgICAqLworICAgIF9maWxlc3lzdGVtQWRkZWQ6IGZ1bmN0aW9uKGVycm9y
TWVzc2FnZSwgZmlsZXN5c3RlbSkKKyAgICB7CisgICAgICAgIGlmIChlcnJvck1lc3NhZ2UpIHsK
KyAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIkVycm9yOiAiICsgZXJyb3JNZXNzYWdlKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWZpbGVzeXN0ZW0pCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIHZhciBmaWxlc3lzdGVtUGF0aDsKKyAgICAgICAg
aWYgKGZpbGVzeXN0ZW0pIHsKKyAgICAgICAgICAgIHRoaXMuX2lubmVyQWRkRmlsZXN5c3RlbShm
aWxlc3lzdGVtKTsKKyAgICAgICAgICAgIGZpbGVzeXN0ZW1QYXRoID0gZmlsZXN5c3RlbS5maWxl
c3lzdGVtUGF0aDsKKyAgICAgICAgfQorICAgICAgICBpZiAodGhpcy5fc2VsZWN0RmlsZXN5c3Rl
bVBhdGhDYWxsYmFjaykgeworICAgICAgICAgICAgdGhpcy5fc2VsZWN0RmlsZXN5c3RlbVBhdGhD
YWxsYmFjayhmaWxlc3lzdGVtUGF0aCk7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fc2VsZWN0
RmlsZXN5c3RlbVBhdGhDYWxsYmFjazsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZXN5c3RlbVBhdGgKKyAgICAgKi8KKyAgICBfZmlsZXN5
c3RlbVJlbW92ZWQ6IGZ1bmN0aW9uKGZpbGVzeXN0ZW1QYXRoKQorICAgIHsKKyAgICAgICAgZGVs
ZXRlIHRoaXMuX2ZpbGVzeXN0ZW1zW2ZpbGVzeXN0ZW1QYXRoXTsKKyAgICAgICAgdGhpcy5fZmls
ZXN5c3RlbU1hcHBpbmcucmVtb3ZlRmlsZXN5c3RlbU1hcHBpbmcoZmlsZXN5c3RlbVBhdGgpOwor
CisgICAgICAgIGlmICh0aGlzLl9yZW1vdmVGaWxlc3lzdGVtQ2FsbGJhY2spIHsKKyAgICAgICAg
ICAgIHRoaXMuX3JlbW92ZUZpbGVzeXN0ZW1DYWxsYmFjayhmaWxlc3lzdGVtUGF0aCk7CisgICAg
ICAgICAgICBkZWxldGUgdGhpcy5fcmVtb3ZlRmlsZXN5c3RlbUNhbGxiYWNrOworICAgICAgICB9
CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlc3lzdGVtUGF0
aAorICAgICAqIEByZXR1cm4ge0RPTUZpbGVTeXN0ZW19CisgICAgICovCisgICAgX2lzb2xhdGVk
RmlsZXN5c3RlbTogZnVuY3Rpb24oZmlsZXN5c3RlbVBhdGgpCisgICAgeworICAgICAgICB2YXIg
ZmlsZXN5c3RlbSA9IHRoaXMuX2ZpbGVzeXN0ZW1zW2ZpbGVzeXN0ZW1QYXRoXTsKKyAgICAgICAg
aWYgKCFmaWxlc3lzdGVtKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIHJldHVy
biBJbnNwZWN0b3JGcm9udGVuZEhvc3QuaXNvbGF0ZWRGaWxlc3lzdGVtKGZpbGVzeXN0ZW0uZmls
ZXN5c3RlbUlkLCBmaWxlc3lzdGVtLnJlZ2lzdGVyZWROYW1lKTsKKyAgICB9LAorCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGVzeXN0ZW1QYXRoCisgICAgICogQHBhcmFtIHtm
dW5jdGlvbihET01GaWxlU3lzdGVtKX0gY2FsbGJhY2sKKyAgICAgKi8KKyAgICByZXF1ZXN0RE9N
RmlsZVN5c3RlbTogZnVuY3Rpb24oZmlsZXN5c3RlbVBhdGgsIGNhbGxiYWNrKQorICAgIHsKKyAg
ICAgICAgaWYgKCF0aGlzLl9sb2FkZWQpIHsKKyAgICAgICAgICAgIGlmICghdGhpcy5fcGVuZGlu
Z0ZpbGVzeXN0ZW1SZXF1ZXN0c1tmaWxlc3lzdGVtUGF0aF0pCisgICAgICAgICAgICAgICAgdGhp
cy5fcGVuZGluZ0ZpbGVzeXN0ZW1SZXF1ZXN0c1tmaWxlc3lzdGVtUGF0aF0gPSB0aGlzLl9wZW5k
aW5nRmlsZXN5c3RlbVJlcXVlc3RzW2ZpbGVzeXN0ZW1QYXRoXSB8fCBbXTsKKyAgICAgICAgICAg
IHRoaXMuX3BlbmRpbmdGaWxlc3lzdGVtUmVxdWVzdHNbZmlsZXN5c3RlbVBhdGhdLnB1c2goY2Fs
bGJhY2spOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNhbGxiYWNr
KHRoaXMuX2lzb2xhdGVkRmlsZXN5c3RlbShmaWxlc3lzdGVtUGF0aCkpOworICAgIH0KK30KKwor
LyoqCisgKiBAdHlwZSB7P1dlYkluc3BlY3Rvci5Jc29sYXRlZEZpbGVzeXN0ZW1Nb2RlbH0KKyAq
LworV2ViSW5zcGVjdG9yLmlzb2xhdGVkRmlsZXN5c3RlbU1vZGVsID0gbnVsbDsKKworLyoqCisg
KiBAY29uc3RydWN0b3IKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLklzb2xhdGVkRmlsZXN5c3Rl
bU1vZGVsfSBpc29sYXRlZEZpbGVzeXN0ZW1Nb2RlbAorICovCitXZWJJbnNwZWN0b3IuSXNvbGF0
ZWRGaWxlc3lzdGVtTWFuYWdlciA9IGZ1bmN0aW9uKGlzb2xhdGVkRmlsZXN5c3RlbU1vZGVsKQor
eworICAgIHRoaXMuX2lzb2xhdGVkRmlsZXN5c3RlbU1vZGVsID0gaXNvbGF0ZWRGaWxlc3lzdGVt
TW9kZWw7Cit9CisKK1dlYkluc3BlY3Rvci5Jc29sYXRlZEZpbGVzeXN0ZW1NYW5hZ2VyLnByb3Rv
dHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxXZWJJbnNwZWN0b3IuSXNv
bGF0ZWRGaWxlc3lzdGVtTW9kZWwuRmlsZXN5c3RlbT59IGZpbGVzeXN0ZW1zCisgICAgICovCisg
ICAgZmlsZXN5c3RlbXNMb2FkZWQ6IGZ1bmN0aW9uKGZpbGVzeXN0ZW1zKQorICAgIHsKKyAgICAg
ICAgdGhpcy5faXNvbGF0ZWRGaWxlc3lzdGVtTW9kZWwuX2ZpbGVzeXN0ZW1zTG9hZGVkKGZpbGVz
eXN0ZW1zKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGVz
eXN0ZW1QYXRoCisgICAgICovCisgICAgZmlsZXN5c3RlbVJlbW92ZWQ6IGZ1bmN0aW9uKGZpbGVz
eXN0ZW1QYXRoKQorICAgIHsKKyAgICAgICAgdGhpcy5faXNvbGF0ZWRGaWxlc3lzdGVtTW9kZWwu
X2ZpbGVzeXN0ZW1SZW1vdmVkKGZpbGVzeXN0ZW1QYXRoKTsKKyAgICB9LAorCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHtzdHJpbmd9IGVycm9yTWVzc2FnZQorICAgICAqIEBwYXJhbSB7V2ViSW5z
cGVjdG9yLklzb2xhdGVkRmlsZXN5c3RlbU1vZGVsLkZpbGVzeXN0ZW19IGZpbGVzeXN0ZW0KKyAg
ICAgKi8KKyAgICBmaWxlc3lzdGVtQWRkZWQ6IGZ1bmN0aW9uKGVycm9yTWVzc2FnZSwgZmlsZXN5
c3RlbSkKKyAgICB7CisgICAgICAgIHRoaXMuX2lzb2xhdGVkRmlsZXN5c3RlbU1vZGVsLl9maWxl
c3lzdGVtQWRkZWQoZXJyb3JNZXNzYWdlLCBmaWxlc3lzdGVtKTsKKyAgICB9Cit9CisKKy8qKgor
ICogQHR5cGUgez9XZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlc3lzdGVtTWFuYWdlcn0KKyAqLwor
V2ViSW5zcGVjdG9yLmlzb2xhdGVkRmlsZXN5c3RlbU1hbmFnZXIgPSBudWxsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCmluZGV4IDUyNDA5NDVkYjZj
MmM2ZTBlNGJiZmMwMWY2ODk0NWM1YzAwYzI1ODIuLjJjMDhhNmEwZTg1OTc2OGEwN2FiMzQ0YTNi
Y2I4OGY3YWQxMDY1NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvV2ViS2l0LnFyYworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1dlYktpdC5xcmMKQEAgLTc0LDYgKzc0LDcgQEAKICAgICA8ZmlsZT5FeHRlbnNpb25WaWV3Lmpz
PC9maWxlPgogICAgIDxmaWxlPkZpbGVDb250ZW50Vmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5G
aWxlTWFuYWdlci5qczwvZmlsZT4KKyAgICA8ZmlsZT5GaWxlc3lzdGVtTWFwcGluZy5qczwvZmls
ZT4KICAgICA8ZmlsZT5GaWxlU3lzdGVtTW9kZWwuanM8L2ZpbGU+CiAgICAgPGZpbGU+RmlsZVN5
c3RlbVZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+RmlsZVV0aWxzLmpzPC9maWxlPgpAQCAtMTAw
LDYgKzEwMSw3IEBACiAgICAgPGZpbGU+SW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5qczwvZmls
ZT4KICAgICA8ZmlsZT5JbnNwZWN0b3JWaWV3LmpzPC9maWxlPgogICAgIDxmaWxlPkpTSGVhcFNu
YXBzaG90LmpzPC9maWxlPgorICAgIDxmaWxlPklzb2xhdGVkRmlsZXN5c3RlbU1vZGVsLmpzPC9m
aWxlPgogICAgIDxmaWxlPkphdmFTY3JpcHRGb3JtYXR0ZXIuanM8L2ZpbGU+CiAgICAgPGZpbGU+
SmF2YVNjcmlwdFNvdXJjZUZyYW1lLmpzPC9maWxlPgogICAgIDxmaWxlPmpzZGlmZmxpYi5qczwv
ZmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvZXh0
ZXJucy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvZXh0ZXJucy5qcwpp
bmRleCBmM2IwMTA4OWMwY2M1NjU2MmYxZGJmZTE0NmRlZGFmOTU4MzZhMjZkLi5hODVlM2Y1N2Rh
NmMyMzZmNDJiMGE2Y2IyYTFmMzc1N2M0MTdkYjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2V4dGVybnMuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9leHRlcm5zLmpzCkBAIC0xMzgsNiArMTM4LDEyIEBAIERPTUFwcGxp
Y2F0aW9uQ2FjaGUucHJvdG90eXBlLkRPV05MT0FESU5HID0gMzsKIERPTUFwcGxpY2F0aW9uQ2Fj
aGUucHJvdG90eXBlLlVQREFURVJFQURZID0gNDsKIERPTUFwcGxpY2F0aW9uQ2FjaGUucHJvdG90
eXBlLk9CU09MRVRFID0gNTsKIAorLy8gRmlsZSBTeXN0ZW0gQVBJCisvKioKKyAqIEBjb25zdHJ1
Y3RvcgorICovCitmdW5jdGlvbiBET01GaWxlU3lzdGVtKCkge30KKwogLyoqIEB0eXBlIHtOb2Rl
fSAqLwogUmFuZ2UucHJvdG90eXBlLnN0YXJ0Q29udGFpbmVyOwogCkBAIC0xNzEsNiArMTc3LDEx
IEBAIEluc3BlY3RvckZyb250ZW5kSG9zdEFQSS5wcm90b3R5cGUucmVjb3JkQWN0aW9uVGFrZW4g
PSBmdW5jdGlvbihhY3Rpb25Db2RlKSB7fQogSW5zcGVjdG9yRnJvbnRlbmRIb3N0QVBJLnByb3Rv
dHlwZS5yZWNvcmRQYW5lbFNob3duID0gZnVuY3Rpb24ocGFuZWxDb2RlKSB7fQogSW5zcGVjdG9y
RnJvbnRlbmRIb3N0QVBJLnByb3RvdHlwZS5yZWNvcmRTZXR0aW5nQ2hhbmdlZCA9IGZ1bmN0aW9u
KHNldHRpbmdDb2RlKSB7fQogSW5zcGVjdG9yRnJvbnRlbmRIb3N0QVBJLnByb3RvdHlwZS5sb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5ID0gZnVuY3Rpb24odXJsKSB7fQorSW5zcGVjdG9yRnJvbnRl
bmRIb3N0QVBJLnByb3RvdHlwZS5zdXBwb3J0c0ZpbGVzeXN0ZW1zID0gZnVuY3Rpb24oKSB7fQor
SW5zcGVjdG9yRnJvbnRlbmRIb3N0QVBJLnByb3RvdHlwZS5yZXF1ZXN0RmlsZXN5c3RlbXMgPSBm
dW5jdGlvbigpIHt9CitJbnNwZWN0b3JGcm9udGVuZEhvc3RBUEkucHJvdG90eXBlLmFkZEZpbGVz
eXN0ZW0gPSBmdW5jdGlvbigpIHt9CitJbnNwZWN0b3JGcm9udGVuZEhvc3RBUEkucHJvdG90eXBl
LnJlbW92ZUZpbGVzeXN0ZW0gPSBmdW5jdGlvbihmaWxlc3lzdGVtUGF0aCkge30KK0luc3BlY3Rv
ckZyb250ZW5kSG9zdEFQSS5wcm90b3R5cGUuaXNvbGF0ZWRGaWxlc3lzdGVtID0gZnVuY3Rpb24o
ZmlsZXN5c3RlbUlkLCByZWdpc3RlcmVkTmFtZSkge30KIEluc3BlY3RvckZyb250ZW5kSG9zdEFQ
SS5wcm90b3R5cGUuc2V0Wm9vbUZhY3RvciA9IGZ1bmN0aW9uKHpvb20pIHt9CiBJbnNwZWN0b3JG
cm9udGVuZEhvc3RBUEkucHJvdG90eXBlLmNhbkluc3BlY3RXb3JrZXJzID0gZnVuY3Rpb24oKSB7
fQogLyoqIEB0eXBlIHtJbnNwZWN0b3JGcm9udGVuZEhvc3RBUEl9ICovCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAppbmRleCBhM2FmNTlm
YmYyMzZhNTAyNjFiOGJjNjUxNzhlZTRmMTFjNWI3OTk3Li5mNzgwMGM3ODA2ZWM5YTNiNGNjNGYz
NjBhZTc2YzliYTM3MWQxN2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKQEAgLTEzOCw2ICsxMzgsOCBAQCBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRlYnVnZ2VyU2NyaXB0TWFwcGlu
Zy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0i
UHJlc2VudGF0aW9uQ29uc29sZU1lc3NhZ2VIZWxwZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ik5ldHdvcmtXb3Jrc3BhY2VQcm92aWRlci5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iSXNv
bGF0ZWRGaWxlc3lzdGVtTW9kZWwuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBzcmM9IkZpbGVzeXN0ZW1NYXBwaW5nLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJXb3Jrc3BhY2UuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkJyZWFrcG9pbnRNYW5h
Z2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3Jj
PSJDb250ZW50UHJvdmlkZXJzLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKaW5kZXggMmEwOTNhN2FkMjg1ZjZiMmM5ZDNh
ZjRkZGQ3YzQxM2U1YzljMDEwMy4uYjlmNTBmMzFhMDcwNWE4M2YyYjNiZWZjNDJjMmY2NDIzNGEz
YTJlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuanMKQEAgLTQzMCw2ICs0MzAsOSBAQCBXZWJJbnNwZWN0b3IuX2RvTG9hZGVkRG9uZVdpdGhD
YXBhYmlsaXRpZXMgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5vcGVuQW5jaG9yTG9jYXRpb25SZWdp
c3RyeSA9IG5ldyBXZWJJbnNwZWN0b3IuSGFuZGxlclJlZ2lzdHJ5KG9wZW5BbmNob3JMb2NhdGlv
blNldHRpbmcpOwogICAgIHRoaXMub3BlbkFuY2hvckxvY2F0aW9uUmVnaXN0cnkucmVnaXN0ZXJI
YW5kbGVyKGF1dG9zZWxlY3RQYW5lbCwgZnVuY3Rpb24oKSB7IHJldHVybiBmYWxzZTsgfSk7CiAK
KyAgICB0aGlzLmlzb2xhdGVkRmlsZXN5c3RlbU1vZGVsID0gbmV3IFdlYkluc3BlY3Rvci5Jc29s
YXRlZEZpbGVzeXN0ZW1Nb2RlbCgpOworICAgIHRoaXMuaXNvbGF0ZWRGaWxlc3lzdGVtTWFuYWdl
ciA9IG5ldyBXZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlc3lzdGVtTWFuYWdlcih0aGlzLmlzb2xh
dGVkRmlsZXN5c3RlbU1vZGVsKTsKKwogICAgIHRoaXMud29ya3NwYWNlID0gbmV3IFdlYkluc3Bl
Y3Rvci5Xb3Jrc3BhY2UoKTsKICAgICB0aGlzLm5ldHdvcmtXb3Jrc3BhY2VQcm92aWRlciA9IG5l
dyBXZWJJbnNwZWN0b3IuTmV0d29ya1dvcmtzcGFjZVByb3ZpZGVyKCk7CiAgICAgdGhpcy5uZXR3
b3JrUHJvamVjdCA9IHRoaXMud29ya3NwYWNlLmFkZFByb2plY3QoIm5ldHdvcmsiLCB0aGlzLm5l
dHdvcmtXb3Jrc3BhY2VQcm92aWRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50LmgKaW5kZXggMDQzOGNkMzU1
NmQxNGJkNTRmZmM2OGI4ZjI5YmYwZGU3ZDZlZmZmNi4uZGFkMjkyODJmZWZiNzQyM2I1ZmIwNDgw
ODM5YThkYzExZmJjYzMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViRGV2VG9vbHNGcm9udGVuZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkRldlRvb2xzRnJvbnRlbmRDbGllbnQuaApAQCAtNTMsNiArNTMsMTAgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzYXZlKGNvbnN0IFdlYlN0cmluZyYgdXJsLCBjb25z
dCBXZWJTdHJpbmcmIGNvbnRlbnQsIGJvb2wgc2F2ZUFzKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
YXBwZW5kKGNvbnN0IFdlYlN0cmluZyYgdXJsLCBjb25zdCBXZWJTdHJpbmcmIGNvbnRlbnQpIHsg
fQogCisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RGaWxlc3lzdGVtcygpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBhZGRGaWxlc3lzdGVtKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUZpbGVz
eXN0ZW0oY29uc3QgV2ViU3RyaW5nJiBmaWxlc3lzdGVtUGF0aCkgeyB9CisKIHByb3RlY3RlZDoK
ICAgICB2aXJ0dWFsIH5XZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50KCkge30KIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JGcm9udGVuZENsaWVudElt
cGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRJbXBsLmNwcAppbmRleCBmY2ZhMjVmOWM5OTcwNjVhMTUxNDJlYjM2MWQ3ZjkxYzljNWU5MTYz
Li4yOWE5MjE3YjE5NjVhMGFhZmUzNGMwNjIxZDE5YTdjNGQyM2NjYWI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JGcm9udGVuZENsaWVudEltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckZyb250ZW5kQ2xpZW50
SW1wbC5jcHAKQEAgLTE1NCw0ICsxNTQsMjUgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVu
dEltcGw6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICBt
X2NsaWVudC0+c2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2FnZSk7CiB9CiAKK2Jvb2wgSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRJbXBsOjpzdXBwb3J0c0ZpbGVzeXN0ZW1zKCkKK3sKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwordm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudEltcGw6OnJlcXVlc3RG
aWxlc3lzdGVtcygpCit7CisgICAgbV9jbGllbnQtPnJlcXVlc3RGaWxlc3lzdGVtcygpOworfQor
Cit2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbDo6YWRkRmlsZXN5c3RlbSgpCit7Cisg
ICAgbV9jbGllbnQtPmFkZEZpbGVzeXN0ZW0oKTsKK30KKwordm9pZCBJbnNwZWN0b3JGcm9udGVu
ZENsaWVudEltcGw6OnJlbW92ZUZpbGVzeXN0ZW0oY29uc3QgU3RyaW5nJiBmaWxlc3lzdGVtUGF0
aCkKK3sKKyAgICBtX2NsaWVudC0+cmVtb3ZlRmlsZXN5c3RlbShmaWxlc3lzdGVtUGF0aCk7Cit9
CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JbnNwZWN0b3JGcm9udGVuZENsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0luc3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbC5oCmluZGV4IDcyZjhkNjhi
NmIyZDJjMDBkYmQ5YjA2MjUxMGQ5Nzg3Y2Y5MDZjMDAuLjc3NDZhYTU3Y2UyM2NiNzdhNzZhNzhi
ZWQ5YjVjOWE5YWUzMTBlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0luc3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0luc3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbC5oCkBAIC03NSw2ICs3NSwxMSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgV1RGOjpT
dHJpbmcmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBX
VEY6OlN0cmluZyYpOworCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRmlsZXN5c3RlbXMoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdEZpbGVzeXN0ZW1zKCk7CisgICAgdmlydHVhbCB2b2lk
IGFkZEZpbGVzeXN0ZW0oKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRmlsZXN5c3RlbShjb25z
dCBTdHJpbmcmIGZpbGVzeXN0ZW1QYXRoKTsKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UGFnZSog
bV9mcm9udGVuZFBhZ2U7CiAgICAgV2ViRGV2VG9vbHNGcm9udGVuZENsaWVudCogbV9jbGllbnQ7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180884</attachid>
            <date>2012-12-28 09:13:11 -0800</date>
            <delta_ts>2012-12-28 21:47:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105727-20121228211021.patch</filename>
            <type>text/plain</type>
            <size>37951</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGZjZjY3NjVhNzM1NGNj
YTYyYjJlZDcyYjNkNzcwMGI0MDI3MzliYi4uOWEzNzFhODdmNGZhZjBkZWZhZGVlMTY5ZmM2NzA4
NjRkYjE2MTE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEyLTEyLTI4ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFN1cHBvcnQgaW5zcGVjdG9yIGZpbGUgc3lzdGVtIGFjY2VzcyB3aXRoIGlzb2xhdGVkIGZp
bGUgc3lzdGVtIHRocm91Z2ggSW5zcGVjdG9yRnJvbnRlbmRIb3N0LgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1NzI3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRmlsZSBzeXN0ZW0gYWNjZXNzIHRocm91
Z2ggaXNvbGF0ZWQgZmlsZSBzeXN0ZW0gaXMgaW1wbGVtZW50ZWQgaW4gaW5zcGVjdG9yLgorICAg
ICAgICBGaWxlIHN5c3RlbSBhY2Nlc3MgcmVxdWVzdHMgYXJlIHNlbnQgdGhyb3VnaCBJbnNwZWN0
b3JGcm9udGVuZEhvc3QuCisgICAgICAgIEludHJvZHVjZWQgSXNvbGF0ZWRGaWxlc3lzdGVtTW9k
ZWwgZW5jYXBzdWxhdGluZyBmaWxlIHN5c3RlbSBhY2Nlc3MgbG9naWMuIAorICAgICAgICBJbnRy
b2R1Y2VkIEZpbGVzeXN0ZW1NYXBwaW5nIHRoYXQgcHJvdmlkZXMgbWFwcGluZyBiZXR3ZWVuIHdv
cmtzcGFjZSB1cmlzIGFuZCBmaWxlIHN5c3RlbSBwYXRoZXMuCisgICAgICAgIERPTUZpbGVTeXN0
ZW0uY3JlYXRlSXNvbGF0ZWRGaWxlU3lzdGVtIG1vZGlmaWVkIHRvIGFjY2VwdCBvcHRpb25hbCBy
ZWdpc3RlcmVkTmFtZSBwYXJhbWV0ZXIuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0v
RE9NRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtOjpjcmVh
dGVJc29sYXRlZEZpbGVTeXN0ZW0pOgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9ET01G
aWxlU3lzdGVtLmg6CisgICAgICAgIChET01GaWxlU3lzdGVtKToKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50Lmg6CisgICAgICAgIChJbnNwZWN0
b3JGcm9udGVuZENsaWVudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWwuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWw6OnN1cHBvcnRzRmlsZXN5c3RlbXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbDo6cmVxdWVzdEZpbGVzeXN0ZW1zKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmFkZEZpbGVzeXN0ZW0pOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6cmVtb3ZlRmlsZXN5c3Rl
bSk6CisgICAgICAgIChJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckZyb250ZW5kSG9zdDo6c3VwcG9ydHNGaWxlc3lzdGVtcyk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kSG9zdDo6cmVxdWVzdEZp
bGVzeXN0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kSG9zdDo6YWRk
RmlsZXN5c3RlbSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnJl
bW92ZUZpbGVzeXN0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRIb3N0
Ojppc29sYXRlZEZpbGVzeXN0ZW0pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRl
bmRIb3N0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9GaWxlc3lzdGVtTWFwcGluZy5qczogQWRkZWQuCisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qczoKKyAgICAgICAgKElu
c3BlY3RvckZyb250ZW5kQVBJLmZpbGVzeXN0ZW1zTG9hZGVkKToKKyAgICAgICAgKEluc3BlY3Rv
ckZyb250ZW5kQVBJLmZpbGVzeXN0ZW1SZW1vdmVkKToKKyAgICAgICAgKEluc3BlY3RvckZyb250
ZW5kQVBJLmZpbGVzeXN0ZW1BZGRlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9J
bnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLmpzOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNw
ZWN0b3JGcm9udGVuZEhvc3RTdHViLnByb3RvdHlwZS5zdXBwb3J0c0ZpbGVzeXN0ZW1zKToKKyAg
ICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5wcm90b3R5cGUu
cmVxdWVzdEZpbGVzeXN0ZW1zKToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yRnJv
bnRlbmRIb3N0U3R1Yi5wcm90b3R5cGUuYWRkRmlsZXN5c3RlbSk6CisgICAgICAgICguV2ViSW5z
cGVjdG9yLkluc3BlY3RvckZyb250ZW5kSG9zdFN0dWIucHJvdG90eXBlLnJlbW92ZUZpbGVzeXN0
ZW0pOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLnBy
b3RvdHlwZS5pc29sYXRlZEZpbGVzeXN0ZW0pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvSXNvbGF0ZWRGaWxlc3lzdGVtTW9kZWwuanM6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvV2ViS2l0LnFyYzoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2V4
dGVybnMuanM6CisgICAgICAgIChET01GaWxlU3lzdGVtKToKKyAgICAgICAgKEluc3BlY3RvckZy
b250ZW5kSG9zdEFQSS5wcm90b3R5cGUuc3VwcG9ydHNGaWxlc3lzdGVtcyk6CisgICAgICAgIChJ
bnNwZWN0b3JGcm9udGVuZEhvc3RBUEkucHJvdG90eXBlLnJlcXVlc3RGaWxlc3lzdGVtcyk6Cisg
ICAgICAgIChJbnNwZWN0b3JGcm9udGVuZEhvc3RBUEkucHJvdG90eXBlLmFkZEZpbGVzeXN0ZW0p
OgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRIb3N0QVBJLnByb3RvdHlwZS5yZW1vdmVGaWxl
c3lzdGVtKToKKyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kSG9zdEFQSS5wcm90b3R5cGUuaXNv
bGF0ZWRGaWxlc3lzdGVtKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgorCiAy
MDEyLTEyLTI3ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IEludHJvZHVjZSB1cmkgYXMgYSBVSVNvdXJjZUNvZGUgdW5pcXVl
IGlkZW50aWZpZXIgaW4gd29ya3NwYWNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBj
MjdlZjhiZmNlYmVkZjE4MWJmZTYwZTI1ZTVjODA3M2I2Mzk5ZjEwLi5hNWEzNjA1Y2I2MTE3MWRh
NzMzZmJkMzA1Y2E2Yjg0Y2E1ZTM2Njg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI2IEBACisyMDEyLTEyLTI4ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFN1cHBvcnQgaW5zcGVjdG9yIGZpbGUg
c3lzdGVtIGFjY2VzcyB3aXRoIGlzb2xhdGVkIGZpbGUgc3lzdGVtIHRocm91Z2ggSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA1NzI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRmlsZSBzeXN0ZW0gYWNjZXNzIG1ldGhvZHMgcGx1bWJpbmcgbWFkZSBmb3IgQ2hyb21p
dW0uCisKKyAgICAgICAgKiBwdWJsaWMvV2ViRGV2VG9vbHNGcm9udGVuZENsaWVudC5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50OjpyZXF1ZXN0RmlsZXN5c3Rl
bXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50OjphZGRGaWxl
c3lzdGVtKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNGcm9udGVuZENsaWVudDo6cmVt
b3ZlRmlsZXN5c3RlbSk6CisgICAgICAgIChXZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50KToKKyAg
ICAgICAgKiBzcmMvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRJbXBsOjpzdXBwb3J0c0ZpbGVzeXN0ZW1zKToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckZyb250ZW5kQ2xp
ZW50SW1wbDo6cmVxdWVzdEZpbGVzeXN0ZW1zKToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRJbXBsOjphZGRGaWxlc3lzdGVtKToKKyAgICAgICAgKFdlYktpdDo6SW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRJbXBsOjpyZW1vdmVGaWxlc3lzdGVtKToKKyAgICAgICAgKiBz
cmMvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRJbXBsLmg6CisgICAgICAgIChJbnNwZWN0b3JGcm9u
dGVuZENsaWVudEltcGwpOgorCiAyMDEyLTEyLTI2ICBOaWNvIFdlYmVyICA8dGhha2lzQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIERpc2FibGUgdW5wcmVmaXhlZCBjc3MgdHJh
bnNpdGlvbnMgdW50aWwgdGhleSdyZSBmdW5jdGlvbmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbS5jcHAKaW5kZXggNGU4ZWQ0YjQxOTI0
NmMwMjUxOTBiZWE5ZWFlZTc3MWEwZDExODU5Ni4uMGExZGIxNDA1MGU1NjM2ZjJkYzJlMzQzMjMz
ZTJjNzI5NTllMzgxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0RPTUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9ET01GaWxlU3lzdGVtLmNwcApAQCAtNjIsNyArNjIsNyBAQCBQYXNzUmVmUHRyPERPTUZp
bGVTeXN0ZW0+IERPTUZpbGVTeXN0ZW06OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LAogICAgIHJldHVybiBmaWxlU3lzdGVtLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0
cjxET01GaWxlU3lzdGVtPiBET01GaWxlU3lzdGVtOjpjcmVhdGVJc29sYXRlZEZpbGVTeXN0ZW0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBmaWxlc3lzdGVt
SWQpCitQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IERPTUZpbGVTeXN0ZW06OmNyZWF0ZUlzb2xh
dGVkRmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJp
bmcmIGZpbGVzeXN0ZW1JZCwgY29uc3QgU3RyaW5nJiByZWdpc3RlcmVkTmFtZSkKIHsKICAgICBp
ZiAoZmlsZXN5c3RlbUlkLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC04Miw2ICs4
MiwxMCBAQCBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IERPTUZpbGVTeXN0ZW06OmNyZWF0ZUlz
b2xhdGVkRmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpbwogICAgIHJvb3RVUkwuYXBwZW5kKCIvIik7
CiAgICAgcm9vdFVSTC5hcHBlbmQoZmlsZXN5c3RlbUlkKTsKICAgICByb290VVJMLmFwcGVuZCgi
LyIpOworICAgIGlmICghcmVnaXN0ZXJlZE5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAgIHJvb3RV
UkwuYXBwZW5kKHJlZ2lzdGVyZWROYW1lKTsKKyAgICAgICAgcm9vdFVSTC5hcHBlbmQoIi8iKTsK
KyAgICB9CiAKICAgICByZXR1cm4gRE9NRmlsZVN5c3RlbTo6Y3JlYXRlKGNvbnRleHQsIGZpbGVz
eXN0ZW1OYW1lLnRvU3RyaW5nKCksIEZpbGVTeXN0ZW1UeXBlSXNvbGF0ZWQsIEtVUkwoUGFyc2Vk
VVJMU3RyaW5nLCByb290VVJMLnRvU3RyaW5nKCkpLCBBc3luY0ZpbGVTeXN0ZW06OmNyZWF0ZSgp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01G
aWxlU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5
c3RlbS5oCmluZGV4IDNiNGVlMTBjNjhhNzFlNmIwNDhhYzNiMDE0NjVkZjE3Zjg3YzA5ZTAuLjUz
ZjliMmFkODA5OWQ2MWYxYmU3MGFiYzkyNzdkYjlkYWQyOTEyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uaApAQCAtNDksOCArNDks
OCBAQCBjbGFzcyBET01GaWxlU3lzdGVtIDogcHVibGljIERPTUZpbGVTeXN0ZW1CYXNlLCBwdWJs
aWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01G
aWxlU3lzdGVtPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYg
bmFtZSwgRmlsZVN5c3RlbVR5cGUsIGNvbnN0IEtVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtPik7CiAKLSAgICAvLyBDcmVhdGVzIGEgbmV3IGlzb2xhdGVkIGZpbGUgc3lz
dGVtIGZvciB0aGUgZ2l2ZW4gZmlsZXN5c3RlbUlkLgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERP
TUZpbGVTeXN0ZW0+IGNyZWF0ZUlzb2xhdGVkRmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgU3RyaW5nJiBmaWxlc3lzdGVtSWQpOworICAgIC8vIENyZWF0ZXMgYSBuZXcg
aXNvbGF0ZWQgZmlsZSBzeXN0ZW0gZm9yIHRoZSBnaXZlbiBmaWxlc3lzdGVtSWQgYW5kIG9wdGlv
bmFsIHJlZ2lzdGVyZWROYW1lLgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+
IGNyZWF0ZUlzb2xhdGVkRmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3Qg
U3RyaW5nJiBmaWxlc3lzdGVtSWQsIGNvbnN0IFN0cmluZyYgcmVnaXN0ZXJlZE5hbWUgPSBTdHJp
bmcoKSk7CiAKICAgICBQYXNzUmVmUHRyPERpcmVjdG9yeUVudHJ5PiByb290KCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQppbmRleCA3MzliYzBiYzk0MmJlYjQ2YjQ4ZDg2ZDlmMWEyMDAzN2RlYTkzZjU1Li44
N2FmOWZmNzc0NjI1MGJjNzMzYTM0ZjAxMTUyNzc4N2E4MWVlY2E5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CkBAIC01MTIzLDYgKzUxMjMsNyBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQv
RXh0ZW5zaW9uU2VydmVyLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0V4
dGVuc2lvblZpZXcuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZU1h
bmFnZXIuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZXN5c3RlbU1h
cHBpbmcuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbU1v
ZGVsLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVVdGlscy5qcycs
CiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Gb250Vmlldy5qcycsCkBAIC01MTM4
LDYgKzUxMzksNyBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9y
RnJvbnRlbmRIb3N0U3R1Yi5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9J
bnNwZWN0b3JWaWV3LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3Bl
Y3Rvci5qcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Jc29sYXRlZEZpbGVz
eXN0ZW1Nb2RlbC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9KYXZhU2Ny
aXB0Rm9ybWF0dGVyLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL2pzZGlm
ZmxpYi5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9LZXlib2FyZFNob3J0
Y3V0LmpzJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
aW5kZXggYzE2MzA4ZGJiN2YzY2EzMjQzODI1ZGY0OWI0NDFkNzFjMGQ1MTY0YS4uYmQzZDIyZDcy
MWE3ZDJiM2ZiOWMyNDE4ZGMwNzE4Mzg1YjY3Y2Q4YiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTc2NTg1LDYgKzc2NTg1LDEwIEBACiAJCQkJ
CT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0
b3JcZnJvbnQtZW5kXEZpbGVzeXN0ZW1NYXBwaW5nLmpzIgorCQkJCQk+CisJCQkJPC9GaWxlPgor
CQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxGaWxl
U3lzdGVtTW9kZWwuanMiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkBAIC03NjcyMSw2ICs3NjcyNSwx
MCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0i
Li5caW5zcGVjdG9yXGZyb250LWVuZFxJc29sYXRlZEZpbGVzeXN0ZW1Nb2RlbC5qcyIKKwkJCQkJ
PgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rv
clxmcm9udC1lbmRcY21camF2YXNjcmlwdC5qcyIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50LmgKaW5k
ZXggZjdmZDg1YzgxNmZkZmMxZTg5ZTc1YTMxNGI2ZTkyNjhjNzAwYzEyNy4uZWY3MGZmNzVkZTkx
Y2U4YTM4MWQwMGU1MTJiM2FhMWZjYjU5ODY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50LmgKQEAgLTcxLDYgKzcxLDExIEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcm
KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3Ry
aW5nJikgPSAwOworCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRmlsZXN5c3RlbXMoKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RGaWxlc3lzdGVtcygpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgYWRkRmlsZXN5c3RlbSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRmlsZXN5
c3RlbShjb25zdCBTdHJpbmcmIGZpbGVzeXN0ZW1QYXRoKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaAppbmRleCA3ZjlmMDIzNGUzOTc5OTk5YTdjODI0OTgx
MDI1ZTJjNzY3ZjY5MjY4Li4xYjNmOTIxMWUzMzI0NWNjZjVmMzE1MDM5NzA5ZWE2ODc5YjRkOWNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsLmgKQEAgLTc2LDYgKzc2LDExIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogCisg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzRmlsZXN5c3RlbXMoKSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RmlsZXN5c3RlbXMoKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgYWRkRmlsZXN5c3RlbSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZW1vdmVGaWxlc3lzdGVt
KGNvbnN0IFN0cmluZyYpIHsgfQorCiAgICAgYm9vbCBjYW5BdHRhY2hXaW5kb3coKTsKICAgICB2
b2lkIHNldERvY2tpbmdVbmF2YWlsYWJsZShib29sKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAppbmRleCAxOWI3MTJkNWI2NzQz
ZjJhNGM4Yjg1OWFhNzU5ZDlhMmViYzYzYjAxLi40MTBmNzZjZjZhNGUxYjM5ZGU3YWM2ZWY5N2Q3
NjE5MDEwZmY2OGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkNvbnRleHRN
ZW51SXRlbS5oIgogI2luY2x1ZGUgIkNvbnRleHRNZW51Q29udHJvbGxlci5oIgogI2luY2x1ZGUg
IkNvbnRleHRNZW51UHJvdmlkZXIuaCIKKyNpbmNsdWRlICJET01GaWxlU3lzdGVtLmgiCiAjaW5j
bHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2Fk
ZXIuaCIKQEAgLTI5NCw2ICsyOTUsMzkgQEAgU3RyaW5nIEluc3BlY3RvckZyb250ZW5kSG9zdDo6
bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBTdHJpbmcmIHVybCkKICAgICByZXR1cm4g
U3RyaW5nKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9CiAKK2Jvb2wgSW5zcGVjdG9yRnJv
bnRlbmRIb3N0OjpzdXBwb3J0c0ZpbGVzeXN0ZW1zKCkKK3sKKyAgICBpZiAobV9jbGllbnQpCisg
ICAgICAgIHJldHVybiBtX2NsaWVudC0+c3VwcG9ydHNGaWxlc3lzdGVtcygpOworICAgIHJldHVy
biBmYWxzZTsKK30KKwordm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnJlcXVlc3RGaWxlc3lz
dGVtcygpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+cmVxdWVzdEZp
bGVzeXN0ZW1zKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjphZGRGaWxlc3lz
dGVtKCkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5hZGRGaWxlc3lz
dGVtKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpyZW1vdmVGaWxlc3lzdGVt
KGNvbnN0IFN0cmluZyYgZmlsZXN5c3RlbVBhdGgpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAg
ICAgICBtX2NsaWVudC0+cmVtb3ZlRmlsZXN5c3RlbShmaWxlc3lzdGVtUGF0aCk7Cit9CisKKyNp
ZiBFTkFCTEUoRklMRV9TWVNURU0pCitQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IEluc3BlY3Rv
ckZyb250ZW5kSG9zdDo6aXNvbGF0ZWRGaWxlc3lzdGVtKGNvbnN0IFN0cmluZyYgZmlsZXN5c3Rl
bUlkLCBjb25zdCBTdHJpbmcmIHJlZ2lzdGVyZWROYW1lKQoreworICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQgPSBtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCktPmRvY3VtZW50
KCk7CisgICAgcmV0dXJuIERPTUZpbGVTeXN0ZW06OmNyZWF0ZUlzb2xhdGVkRmlsZVN5c3RlbShj
b250ZXh0LCBmaWxlc3lzdGVtSWQsIHJlZ2lzdGVyZWROYW1lKTsKK30KKyNlbmRpZgorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oCmluZGV4IGVh
NmQxMDE5ODNkOTk5OTdkNDJhNzA5Mjk5ZjYyMmZlZGM5ODM1MDEuLmEyYjc2MWM1ZTA3ZTE0MWFh
ZjkxZTI2NGE4NTJmODQ1Y2Q3ZGNlMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgKQEAgLTM5LDYgKzM5LDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQ29udGV4dE1lbnVJdGVtOworY2xhc3MgRE9NRmlsZVN5c3RlbTsK
IGNsYXNzIEV2ZW50OwogY2xhc3MgRnJvbnRlbmRNZW51UHJvdmlkZXI7CiBjbGFzcyBJbnNwZWN0
b3JDbGllbnQ7CkBAIC04NSw2ICs4NiwxNCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgbG9hZFJl
c291cmNlU3luY2hyb25vdXNseShjb25zdCBTdHJpbmcmIHVybCk7CiAKKyAgICBib29sIHN1cHBv
cnRzRmlsZXN5c3RlbXMoKTsKKyAgICB2b2lkIHJlcXVlc3RGaWxlc3lzdGVtcygpOworICAgIHZv
aWQgYWRkRmlsZXN5c3RlbSgpOworICAgIHZvaWQgcmVtb3ZlRmlsZXN5c3RlbShjb25zdCBTdHJp
bmcmIGZpbGVzeXN0ZW1QYXRoKTsKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisgICAgUGFzc1Jl
ZlB0cjxET01GaWxlU3lzdGVtPiBpc29sYXRlZEZpbGVzeXN0ZW0oY29uc3QgU3RyaW5nJiBmaWxl
c3lzdGVtSWQsIGNvbnN0IFN0cmluZyYgcmVnaXN0ZXJlZE5hbWUpOworI2VuZGlmCisKIHByaXZh
dGU6CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgZnJpZW5kIGNsYXNzIEZyb250ZW5k
TWVudVByb3ZpZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kSG9zdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LmlkbAppbmRleCA3MjhhYTBjMGU0YjBmOTAxMzI0NjczYTEwMDVkMThjNmU5
OTczZDFiLi40NDhlNDMyN2U1YzY1MzdjNTg2Y2RjN2E4ZmFiZDc2ODk3NmE5YzdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbApA
QCAtNjYsNCArNjYsMTAgQEAKICAgICBbQ3VzdG9tXSB2b2lkIHJlY29yZFNldHRpbmdDaGFuZ2Vk
KGluIHVuc2lnbmVkIGxvbmcgc2V0dGluZ0NoYW5nZWQpOwogICAgIAogICAgIERPTVN0cmluZyBs
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGluIERPTVN0cmluZyB1cmwpOworCisgICAgYm9vbGVh
biBzdXBwb3J0c0ZpbGVzeXN0ZW1zKCk7CisgICAgdm9pZCByZXF1ZXN0RmlsZXN5c3RlbXMoKTsK
KyAgICB2b2lkIGFkZEZpbGVzeXN0ZW0oKTsKKyAgICB2b2lkIHJlbW92ZUZpbGVzeXN0ZW0oaW4g
RE9NU3RyaW5nIGZpbGVzeXN0ZW1QYXRoKTsKKyAgICBbQ29uZGl0aW9uYWw9RklMRV9TWVNURU1d
IERPTUZpbGVTeXN0ZW0gaXNvbGF0ZWRGaWxlc3lzdGVtKGluIERPTVN0cmluZyBmaWxlc3lzdGVt
SWQsIGluIERPTVN0cmluZyByZWdpc3RlcmVkTmFtZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5IGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CmluZGV4IDdhYjNmYTQwNmM4MzJhMjAwZDY4
YTkzYzVlMzRlYzkwYzAxODdjN2YuLmJmMzcyZGRjNmNlNGVjNzlmNjMxYTRkYjQwZTM2MjRmNDY0
Y2YwYzkgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250
LWVuZC5weQorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQu
cHkKQEAgLTc2LDExICs3NiwxMyBAQCBtb2R1bGVzID0gWwogICAgICAgICAgICAgIkRlYnVnZ2Vy
TW9kZWwuanMiLAogICAgICAgICAgICAgIkRlYnVnZ2VyU2NyaXB0TWFwcGluZy5qcyIsCiAgICAg
ICAgICAgICAiRmlsZU1hbmFnZXIuanMiLAorICAgICAgICAgICAgIkZpbGVzeXN0ZW1NYXBwaW5n
LmpzIiwKICAgICAgICAgICAgICJGaWxlU3lzdGVtTW9kZWwuanMiLAogICAgICAgICAgICAgIkZp
bGVVdGlscy5qcyIsCiAgICAgICAgICAgICAiSEFSRW50cnkuanMiLAogICAgICAgICAgICAgIklu
ZGV4ZWREQk1vZGVsLmpzIiwKICAgICAgICAgICAgICJJbnNwZWN0b3JCYWNrZW5kLmpzIiwKKyAg
ICAgICAgICAgICJJc29sYXRlZEZpbGVzeXN0ZW1Nb2RlbC5qcyIsCiAgICAgICAgICAgICAiTGlu
a2lmaWVyLmpzIiwKICAgICAgICAgICAgICJOZXR3b3JrTG9nLmpzIiwKICAgICAgICAgICAgICJO
ZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIuanMiLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlc3lzdGVtTWFwcGluZy5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZXN5c3RlbU1hcHBpbmcuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MWFjMzU0MzYwYTFiOTcyMTczMjMzMmE3ZTU4NGM5MTlhNzRlNTc0NQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZXN5c3RlbU1hcHBpbmcu
anMKQEAgLTAsMCArMSwxNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBpbnRlcmZhY2UKKyAqLworV2ViSW5zcGVjdG9y
LkZpbGVzeXN0ZW1NYXBwaW5nID0gZnVuY3Rpb24oKSB7IH0KKworLyoqCisgKiBAY29uc3RydWN0
b3IKKyAqLworV2ViSW5zcGVjdG9yLkZpbGVzeXN0ZW1NYXBwaW5nLkZpbGVEZXNjcmlwdG9yID0g
ZnVuY3Rpb24oZmlsZXN5c3RlbVBhdGgsIGZpbGVQYXRoKQoreworICAgIHRoaXMuZmlsZXN5c3Rl
bVBhdGggPSBmaWxlc3lzdGVtUGF0aDsKKyAgICB0aGlzLmZpbGVQYXRoID0gZmlsZVBhdGg7Cit9
CisKK1dlYkluc3BlY3Rvci5GaWxlc3lzdGVtTWFwcGluZy5wcm90b3R5cGUgPSB7CisgICAgLyoq
CisgICAgICogQHJldHVybiB7QXJyYXkuPHN0cmluZz59CisgICAgICovCisgICAgZmlsZXN5c3Rl
bVBhdGhzOiBmdW5jdGlvbigpIHsgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5n
fSB1cmkKKyAgICAgKiBAcmV0dXJuIHs/V2ViSW5zcGVjdG9yLkZpbGVzeXN0ZW1NYXBwaW5nLkZp
bGVEZXNjcmlwdG9yfQorICAgICAqLworICAgIGZpbGVGb3JVUkk6IGZ1bmN0aW9uKHVyaSkgeyB9
LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZXN5c3RlbU1hcHBp
bmcuRmlsZURlc2NyaXB0b3J9IGZpbGVEZXNjcmlwdG9yCisgICAgICogQHJldHVybiB7c3RyaW5n
fQorICAgICAqLworICAgIHVyaUZvckZpbGU6IGZ1bmN0aW9uKGZpbGVEZXNjcmlwdG9yKSB7IH0s
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aAorICAgICAqIEByZXR1cm4g
ez9zdHJpbmd9CisgICAgICovCisgICAgdXJpRm9yUGF0aDogZnVuY3Rpb24ocGF0aCkgeyB9Cit9
CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAaW1wbGVtZW50cyB7V2ViSW5zcGVjdG9yLkZp
bGVzeXN0ZW1NYXBwaW5nfQorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5PYmplY3R9CisgKi8K
K1dlYkluc3BlY3Rvci5GaWxlc3lzdGVtTWFwcGluZ0ltcGwgPSBmdW5jdGlvbigpCit7CisgICAg
dGhpcy5fZmlsZXN5c3RlbU1hcHBpbmdTZXR0aW5nID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLmNy
ZWF0ZVNldHRpbmcoImZpbGVzeXN0ZW1NYXBwaW5nIiwge30pOworICAgIC8qKiBAdHlwZSB7IU9i
amVjdC48c3RyaW5nLCBzdHJpbmc+fSAqLworICAgIHRoaXMuX21hcHBlZE5hbWVzID0gdGhpcy5f
ZmlsZXN5c3RlbU1hcHBpbmdTZXR0aW5nLmdldCgpOworfQorCitXZWJJbnNwZWN0b3IuRmlsZXN5
c3RlbU1hcHBpbmdJbXBsLnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0
cmluZ30gZmlsZXN5c3RlbVBhdGgKKyAgICAgKi8KKyAgICBhZGRGaWxlc3lzdGVtTWFwcGluZzog
ZnVuY3Rpb24oZmlsZXN5c3RlbVBhdGgpCisgICAgeworICAgICAgICBpZiAodGhpcy5fbWFwcGVk
TmFtZXNbZmlsZXN5c3RlbVBhdGhdKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB2YXIg
cGF0aFNlZ21lbnRzID0gZmlsZXN5c3RlbVBhdGguc3BsaXQoIi8iKTsKKyAgICAgICAgdmFyIG1h
cHBlZE5hbWUgPSBwYXRoU2VnbWVudHNbcGF0aFNlZ21lbnRzLmxlbmd0aCAtIDFdOworICAgICAg
ICB2YXIgdW5pcXVlTWFwcGVkTmFtZSA9IHRoaXMuX3VuaXF1ZU1hcHBlZE5hbWUobWFwcGVkTmFt
ZSk7CisgICAgICAgIHRoaXMuX21hcHBlZE5hbWVzW2ZpbGVzeXN0ZW1QYXRoXSA9IG1hcHBlZE5h
bWU7CisgICAgICAgIHRoaXMuX2ZpbGVzeXN0ZW1NYXBwaW5nU2V0dGluZy5zZXQodGhpcy5fbWFw
cGVkTmFtZXMpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWFw
cGVkTmFtZQorICAgICAqLworICAgIF91bmlxdWVNYXBwZWROYW1lOiBmdW5jdGlvbihtYXBwZWRO
YW1lKQorICAgIHsKKyAgICAgICAgdmFyIHVuaXF1ZU1hcHBlZE5hbWUgPSBtYXBwZWROYW1lOwor
ICAgICAgICB2YXIgaSA9IDE7CisgICAgICAgIHdoaWxlIChPYmplY3QudmFsdWVzKHRoaXMuX21h
cHBlZE5hbWVzKS5pbmRleE9mKHVuaXF1ZU1hcHBlZE5hbWUpICE9PSAtMSkgeworICAgICAgICAg
ICAgdW5pcXVlTWFwcGVkTmFtZSA9IG1hcHBlZE5hbWUgKyAiICgiICsgaSArICIpIjsKKyAgICAg
ICAgICAgICsraTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdW5pcXVlTWFwcGVkTmFtZTsK
KyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGVzeXN0ZW1QYXRo
CisgICAgICovCisgICAgcmVtb3ZlRmlsZXN5c3RlbU1hcHBpbmc6IGZ1bmN0aW9uKGZpbGVzeXN0
ZW1QYXRoKQorICAgIHsKKyAgICAgICAgZGVsZXRlIHRoaXMuX21hcHBlZE5hbWVzW2ZpbGVzeXN0
ZW1QYXRoXTsKKyAgICAgICAgdGhpcy5fZmlsZXN5c3RlbU1hcHBpbmdTZXR0aW5nLnNldCh0aGlz
Ll9tYXBwZWROYW1lcyk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge0FycmF5
LjxzdHJpbmc+fQorICAgICAqLworICAgIGZpbGVzeXN0ZW1QYXRoczogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX21hcHBlZE5hbWVzKTsKKyAgICB9
LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLworICAgIF91cmlQ
cmVmaXhGb3JNYXBwZWROYW1lOiBmdW5jdGlvbihtYXBwZWROYW1lKQorICAgIHsKKyAgICAgICAg
cmV0dXJuICJmaWxlOi8vLyIgKyBtYXBwZWROYW1lICsgIi8iOworICAgIH0sCisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJpCisgICAgICogQHJldHVybiB7P1dlYkluc3BlY3Rv
ci5GaWxlc3lzdGVtTWFwcGluZy5GaWxlRGVzY3JpcHRvcn0KKyAgICAgKi8KKyAgICBmaWxlRm9y
VVJJOiBmdW5jdGlvbih1cmkpCisgICAgeworICAgICAgICBmb3IgKHZhciBmaWxlc3lzdGVtUGF0
aCBpbiB0aGlzLl9tYXBwZWROYW1lcykgeworICAgICAgICAgICAgdmFyIHVyaVByZWZpeCA9IHRo
aXMuX3VyaVByZWZpeEZvck1hcHBlZE5hbWUodGhpcy5fbWFwcGVkTmFtZXNbZmlsZXN5c3RlbVBh
dGhdKTsKKyAgICAgICAgICAgIGlmICh1cmkuaW5kZXhPZih1cmlQcmVmaXgpID09PSAwKQorICAg
ICAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkZpbGVzeXN0ZW1NYXBwaW5nLkZp
bGVEZXNjcmlwdG9yKGZpbGVzeXN0ZW1QYXRoLCAiLyIgKyB1cmkuc3Vic3RyaW5nKHVyaVByZWZp
eC5sZW5ndGgpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9LAorCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRmlsZXN5c3RlbU1hcHBpbmcuRmls
ZURlc2NyaXB0b3J9IGZpbGVEZXNjcmlwdG9yCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAg
ICAqLworICAgIHVyaUZvckZpbGU6IGZ1bmN0aW9uKGZpbGVEZXNjcmlwdG9yKQorICAgIHsKKyAg
ICAgICAgdmFyIHVyaVByZWZpeCA9IHRoaXMuX3VyaVByZWZpeEZvck1hcHBlZE5hbWUodGhpcy5f
bWFwcGVkTmFtZXNbZmlsZURlc2NyaXB0b3IuZmlsZXN5c3RlbVBhdGhdKTsKKyAgICAgICAgcmV0
dXJuIHVyaVByZWZpeCArIGZpbGVEZXNjcmlwdG9yLmZpbGVQYXRoLnN1YnN0cmluZygiLyIubGVu
Z3RoKTsKKyAgICB9LAorICAgIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRo
CisgICAgICogQHJldHVybiB7P3N0cmluZ30KKyAgICAgKi8KKyAgICB1cmlGb3JQYXRoOiBmdW5j
dGlvbihwYXRoKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgZmlsZXN5c3RlbVBhdGggaW4gdGhp
cy5fbWFwcGVkTmFtZXMpIHsKKyAgICAgICAgICAgIGlmIChwYXRoLmluZGV4T2YoZmlsZXN5c3Rl
bVBhdGgpID09PSAwKSB7CisgICAgICAgICAgICAgICAgdmFyIHVyaVByZWZpeCA9IHRoaXMuX3Vy
aVByZWZpeEZvck1hcHBlZE5hbWUodGhpcy5fbWFwcGVkTmFtZXNbZmlsZXN5c3RlbVBhdGhdKTsK
KyAgICAgICAgICAgICAgICB2YXIgc3ViUGF0aCA9IHBhdGguc3Vic3RyaW5nKGZpbGVzeXN0ZW1Q
YXRoLmxlbmd0aCk7CisgICAgICAgICAgICAgICAgaWYgKHN1YlBhdGgubGVuZ3RoID09PSAwKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdXJpUHJlZml4OworICAgICAgICAgICAgICAgIGVs
c2UgaWYgKHN1YlBhdGhbMF0gPT09ICIvIikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVy
aVByZWZpeCArIHN1YlBhdGguc3Vic3RyaW5nKCIvIi5sZW5ndGgpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckZyb250ZW5kQVBJ
LmpzCmluZGV4IDkwMGExN2I2NTIyYzYzYzViMjQ4MDAwYzNkNmY2MmVlMTBlZGJhOWUuLmI0YTdi
NzE2NjBjZjAzOTdhNjNmMDM1YmU4MWQzYWIwMWFlYTc5MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JGcm9udGVuZEFQSS5q
cwpAQCAtMTEwLDYgKzExMCwyMSBAQCB2YXIgSW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7CiAgICAg
ICAgIFdlYkluc3BlY3Rvci50b2dnbGVTZWFyY2hpbmdGb3JOb2RlKCk7CiAgICAgfSwKIAorICAg
IGZpbGVzeXN0ZW1zTG9hZGVkOiBmdW5jdGlvbihmaWxlc3lzdGVtcykKKyAgICB7CisgICAgICAg
IFdlYkluc3BlY3Rvci5pc29sYXRlZEZpbGVzeXN0ZW1NYW5hZ2VyLmZpbGVzeXN0ZW1zTG9hZGVk
KGZpbGVzeXN0ZW1zKTsKKyAgICB9LAorCisgICAgZmlsZXN5c3RlbVJlbW92ZWQ6IGZ1bmN0aW9u
KGZpbGVzeXN0ZW1QYXRoKQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmlzb2xhdGVkRmls
ZXN5c3RlbU1hbmFnZXIuZmlsZXN5c3RlbVJlbW92ZWQoZmlsZXN5c3RlbVBhdGgpOworICAgIH0s
CisKKyAgICBmaWxlc3lzdGVtQWRkZWQ6IGZ1bmN0aW9uKGVycm9yTWVzc2FnZSwgZmlsZXN5c3Rl
bSkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5pc29sYXRlZEZpbGVzeXN0ZW1NYW5hZ2Vy
LmZpbGVzeXN0ZW1BZGRlZChlcnJvck1lc3NhZ2UsIGZpbGVzeXN0ZW0pOworICAgIH0sCisKICAg
ICBzYXZlZFVSTDogZnVuY3Rpb24odXJsKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmZp
bGVNYW5hZ2VyLnNhdmVkVVJMKHVybCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckZyb250ZW5kSG9zdFN0dWIuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckZyb250ZW5kSG9zdFN0dWIuanMKaW5k
ZXggYzYxNmMxZDE5ZDMyY2RjOWExMzBlZWFhYTE0NzVmNzdlMjUxYzIyNS4uOTg5NjFhNWMyOGU0
ODIzODVlNTFiZDc4MjdiMGYwNWYwZTQ2ODdkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1
Yi5qcwpAQCAtMTk1LDYgKzE5NSwyOCBAQCBXZWJJbnNwZWN0b3IuSW5zcGVjdG9yRnJvbnRlbmRI
b3N0U3R1Yi5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBsb2FkWEhSKHVybCk7CiAgICAg
fSwKIAorICAgIHN1cHBvcnRzRmlsZXN5c3RlbXM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9LAorCisgICAgcmVxdWVzdEZpbGVzeXN0ZW1zOiBmdW5jdGlv
bigpCisgICAgeworICAgIH0sCisKKyAgICBhZGRGaWxlc3lzdGVtOiBmdW5jdGlvbigpCisgICAg
eworICAgIH0sCisKKyAgICByZW1vdmVGaWxlc3lzdGVtOiBmdW5jdGlvbihmaWxlc3lzdGVtUGF0
aCkKKyAgICB7CisgICAgfSwKKworICAgIGlzb2xhdGVkRmlsZXN5c3RlbTogZnVuY3Rpb24oZmls
ZXN5c3RlbUlkLCByZWdpc3RlcmVkTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBudWxsOwor
ICAgIH0sCisKICAgICBzZXRab29tRmFjdG9yOiBmdW5jdGlvbih6b29tKQogICAgIHsKICAgICB9
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Jc29sYXRl
ZEZpbGVzeXN0ZW1Nb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
SXNvbGF0ZWRGaWxlc3lzdGVtTW9kZWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTY5MzI1ZWE5NmY3ZTI1OTc4
Njg2MWI4NjY0YjE5Y2MwMjRlNTRlYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvSXNvbGF0ZWRGaWxlc3lzdGVtTW9kZWwuanMKQEAgLTAsMCAr
MSwyMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICovCitXZWJJbnNwZWN0b3IuSXNvbGF0ZWRG
aWxlc3lzdGVtTW9kZWwgPSBmdW5jdGlvbigpCit7CisgICAgLyoqIEB0eXBlIHshT2JqZWN0Ljxz
dHJpbmcsIFdlYkluc3BlY3Rvci5Jc29sYXRlZEZpbGVzeXN0ZW1Nb2RlbC5GaWxlc3lzdGVtPn0g
Ki8KKyAgICB0aGlzLl9maWxlc3lzdGVtcyA9IHt9OworICAgIC8qKiBAdHlwZSB7T2JqZWN0Ljxz
dHJpbmcsIEFycmF5LjxmdW5jdGlvbihET01GaWxlU3lzdGVtKT4+fSAqLworICAgIHRoaXMuX3Bl
bmRpbmdGaWxlc3lzdGVtUmVxdWVzdHMgPSB7fTsKKyAgICB0aGlzLl9maWxlc3lzdGVtTWFwcGlu
ZyA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZXN5c3RlbU1hcHBpbmdJbXBsKCk7CisKKyAgICBpZiAo
dGhpcy5zdXBwb3J0c0ZpbGVzeXN0ZW1zKCkpCisgICAgICAgIHRoaXMuX3JlcXVlc3RGaWxlc3lz
dGVtcygpOworfQorCisvKiogQHR5cGVkZWYge3tmaWxlc3lzdGVtSWQ6IHN0cmluZywgcmVnaXN0
ZXJlZE5hbWU6IHN0cmluZywgZmlsZXN5c3RlbVBhdGg6IHN0cmluZ319ICovCitXZWJJbnNwZWN0
b3IuSXNvbGF0ZWRGaWxlc3lzdGVtTW9kZWwuRmlsZXN5c3RlbTsKKworV2ViSW5zcGVjdG9yLklz
b2xhdGVkRmlsZXN5c3RlbU1vZGVsLnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcmV0
dXJuIHtXZWJJbnNwZWN0b3IuRmlsZXN5c3RlbU1hcHBpbmd9CisgICAgICovCisgICAgbWFwcGlu
ZzogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbGVzeXN0ZW1NYXBw
aW5nOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAq
LworICAgIHN1cHBvcnRzRmlsZXN5c3RlbXM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBJbnNwZWN0b3JGcm9udGVuZEhvc3Quc3VwcG9ydHNGaWxlc3lzdGVtcygpOworICAgIH0s
CisKKyAgICBfcmVxdWVzdEZpbGVzeXN0ZW1zOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBj
b25zb2xlLmFzc2VydCghdGhpcy5fbG9hZGVkKTsKKyAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LnJlcXVlc3RGaWxlc3lzdGVtcygpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge2Z1bmN0aW9uKHN0cmluZyl9IGNhbGxiYWNrCisgICAgICovCisgICAgYWRkRmlsZXN5c3Rl
bTogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgeworICAgICAgICB0aGlzLl9zZWxlY3RGaWxlc3lz
dGVtUGF0aENhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9z
dC5hZGRGaWxlc3lzdGVtKCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7ZnVu
Y3Rpb24oKX0gY2FsbGJhY2sKKyAgICAgKi8KKyAgICByZW1vdmVGaWxlc3lzdGVtOiBmdW5jdGlv
bihmaWxlc3lzdGVtUGF0aCwgY2FsbGJhY2spCisgICAgeworICAgICAgICB0aGlzLl9yZW1vdmVG
aWxlc3lzdGVtQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LnJlbW92ZUZpbGVzeXN0ZW0oZmlsZXN5c3RlbVBhdGgpOworICAgIH0sCisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge0FycmF5LjxXZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlc3lzdGVtTW9k
ZWwuRmlsZXN5c3RlbT59IGZpbGVzeXN0ZW1zCisgICAgICovCisgICAgX2ZpbGVzeXN0ZW1zTG9h
ZGVkOiBmdW5jdGlvbihmaWxlc3lzdGVtcykKKyAgICB7CisgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgZmlsZXN5c3RlbXMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0aGlzLl9pbm5lckFk
ZEZpbGVzeXN0ZW0oZmlsZXN5c3RlbXNbaV0pOworICAgICAgICB0aGlzLl9sb2FkZWQgPSB0cnVl
OworICAgICAgICB0aGlzLl9wcm9jZXNzUGVuZGluZ0ZpbGVzeXN0ZW1SZXF1ZXN0cygpOworICAg
IH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Jc29sYXRlZEZpbGVz
eXN0ZW1Nb2RlbC5GaWxlc3lzdGVtfSBmaWxlc3lzdGVtCisgICAgICovCisgICAgX2lubmVyQWRk
RmlsZXN5c3RlbTogZnVuY3Rpb24oZmlsZXN5c3RlbSkKKyAgICB7CisgICAgICAgIHRoaXMuX2Zp
bGVzeXN0ZW1NYXBwaW5nLmFkZEZpbGVzeXN0ZW1NYXBwaW5nKGZpbGVzeXN0ZW0uZmlsZXN5c3Rl
bVBhdGgpOworICAgICAgICB0aGlzLl9maWxlc3lzdGVtc1tmaWxlc3lzdGVtLmZpbGVzeXN0ZW1Q
YXRoXSA9IGZpbGVzeXN0ZW07CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge0Fy
cmF5LjxzdHJpbmc+fQorICAgICAqLworICAgIF9maWxlc3lzdGVtUGF0aHM6IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLl9maWxlc3lzdGVtcyk7Cisg
ICAgfSwKKworICAgIF9wcm9jZXNzUGVuZGluZ0ZpbGVzeXN0ZW1SZXF1ZXN0czogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgZmlsZXN5c3RlbVBhdGggaW4gdGhpcy5fcGVuZGlu
Z0ZpbGVzeXN0ZW1SZXF1ZXN0cykgeworICAgICAgICAgICAgdmFyIGNhbGxiYWNrcyA9IHRoaXMu
X3BlbmRpbmdGaWxlc3lzdGVtUmVxdWVzdHNbZmlsZXN5c3RlbVBhdGhdOworICAgICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBjYWxsYmFja3MubGVuZ3RoOyArK2kpCisgICAgICAgICAgICAg
ICAgY2FsbGJhY2tzW2ldKHRoaXMuX2lzb2xhdGVkRmlsZXN5c3RlbShmaWxlc3lzdGVtUGF0aCkp
OworICAgICAgICB9CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBl
cnJvck1lc3NhZ2UKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Jc29sYXRlZEZpbGVzeXN0
ZW1Nb2RlbC5GaWxlc3lzdGVtfSBmaWxlc3lzdGVtCisgICAgICovCisgICAgX2ZpbGVzeXN0ZW1B
ZGRlZDogZnVuY3Rpb24oZXJyb3JNZXNzYWdlLCBmaWxlc3lzdGVtKQorICAgIHsKKyAgICAgICAg
aWYgKGVycm9yTWVzc2FnZSkgeworICAgICAgICAgICAgY29uc29sZS5lcnJvcigiRXJyb3I6ICIg
KyBlcnJvck1lc3NhZ2UpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IGlmICghZmlsZXN5c3RlbSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdmFyIGZpbGVz
eXN0ZW1QYXRoOworICAgICAgICBpZiAoZmlsZXN5c3RlbSkgeworICAgICAgICAgICAgdGhpcy5f
aW5uZXJBZGRGaWxlc3lzdGVtKGZpbGVzeXN0ZW0pOworICAgICAgICAgICAgZmlsZXN5c3RlbVBh
dGggPSBmaWxlc3lzdGVtLmZpbGVzeXN0ZW1QYXRoOworICAgICAgICB9CisgICAgICAgIGlmICh0
aGlzLl9zZWxlY3RGaWxlc3lzdGVtUGF0aENhbGxiYWNrKSB7CisgICAgICAgICAgICB0aGlzLl9z
ZWxlY3RGaWxlc3lzdGVtUGF0aENhbGxiYWNrKGZpbGVzeXN0ZW1QYXRoKTsKKyAgICAgICAgICAg
IGRlbGV0ZSB0aGlzLl9zZWxlY3RGaWxlc3lzdGVtUGF0aENhbGxiYWNrOworICAgICAgICB9Cisg
ICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlc3lzdGVtUGF0aAor
ICAgICAqLworICAgIF9maWxlc3lzdGVtUmVtb3ZlZDogZnVuY3Rpb24oZmlsZXN5c3RlbVBhdGgp
CisgICAgeworICAgICAgICBkZWxldGUgdGhpcy5fZmlsZXN5c3RlbXNbZmlsZXN5c3RlbVBhdGhd
OworICAgICAgICB0aGlzLl9maWxlc3lzdGVtTWFwcGluZy5yZW1vdmVGaWxlc3lzdGVtTWFwcGlu
ZyhmaWxlc3lzdGVtUGF0aCk7CisKKyAgICAgICAgaWYgKHRoaXMuX3JlbW92ZUZpbGVzeXN0ZW1D
YWxsYmFjaykgeworICAgICAgICAgICAgdGhpcy5fcmVtb3ZlRmlsZXN5c3RlbUNhbGxiYWNrKGZp
bGVzeXN0ZW1QYXRoKTsKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9yZW1vdmVGaWxlc3lzdGVt
Q2FsbGJhY2s7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtz
dHJpbmd9IGZpbGVzeXN0ZW1QYXRoCisgICAgICogQHJldHVybiB7RE9NRmlsZVN5c3RlbX0KKyAg
ICAgKi8KKyAgICBfaXNvbGF0ZWRGaWxlc3lzdGVtOiBmdW5jdGlvbihmaWxlc3lzdGVtUGF0aCkK
KyAgICB7CisgICAgICAgIHZhciBmaWxlc3lzdGVtID0gdGhpcy5fZmlsZXN5c3RlbXNbZmlsZXN5
c3RlbVBhdGhdOworICAgICAgICBpZiAoIWZpbGVzeXN0ZW0pCisgICAgICAgICAgICByZXR1cm4g
bnVsbDsKKyAgICAgICAgaWYgKCFJbnNwZWN0b3JGcm9udGVuZEhvc3QuaXNvbGF0ZWRGaWxlc3lz
dGVtKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3JG
cm9udGVuZEhvc3QuaXNvbGF0ZWRGaWxlc3lzdGVtKGZpbGVzeXN0ZW0uZmlsZXN5c3RlbUlkLCBm
aWxlc3lzdGVtLnJlZ2lzdGVyZWROYW1lKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtzdHJpbmd9IGZpbGVzeXN0ZW1QYXRoCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihET01G
aWxlU3lzdGVtKX0gY2FsbGJhY2sKKyAgICAgKi8KKyAgICByZXF1ZXN0RE9NRmlsZVN5c3RlbTog
ZnVuY3Rpb24oZmlsZXN5c3RlbVBhdGgsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgaWYgKCF0
aGlzLl9sb2FkZWQpIHsKKyAgICAgICAgICAgIGlmICghdGhpcy5fcGVuZGluZ0ZpbGVzeXN0ZW1S
ZXF1ZXN0c1tmaWxlc3lzdGVtUGF0aF0pCisgICAgICAgICAgICAgICAgdGhpcy5fcGVuZGluZ0Zp
bGVzeXN0ZW1SZXF1ZXN0c1tmaWxlc3lzdGVtUGF0aF0gPSB0aGlzLl9wZW5kaW5nRmlsZXN5c3Rl
bVJlcXVlc3RzW2ZpbGVzeXN0ZW1QYXRoXSB8fCBbXTsKKyAgICAgICAgICAgIHRoaXMuX3BlbmRp
bmdGaWxlc3lzdGVtUmVxdWVzdHNbZmlsZXN5c3RlbVBhdGhdLnB1c2goY2FsbGJhY2spOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNhbGxiYWNrKHRoaXMuX2lzb2xh
dGVkRmlsZXN5c3RlbShmaWxlc3lzdGVtUGF0aCkpOworICAgIH0KK30KKworLyoqCisgKiBAdHlw
ZSB7P1dlYkluc3BlY3Rvci5Jc29sYXRlZEZpbGVzeXN0ZW1Nb2RlbH0KKyAqLworV2ViSW5zcGVj
dG9yLmlzb2xhdGVkRmlsZXN5c3RlbU1vZGVsID0gbnVsbDsKKworLyoqCisgKiBAY29uc3RydWN0
b3IKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLklzb2xhdGVkRmlsZXN5c3RlbU1vZGVsfSBpc29s
YXRlZEZpbGVzeXN0ZW1Nb2RlbAorICovCitXZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlc3lzdGVt
TWFuYWdlciA9IGZ1bmN0aW9uKGlzb2xhdGVkRmlsZXN5c3RlbU1vZGVsKQoreworICAgIHRoaXMu
X2lzb2xhdGVkRmlsZXN5c3RlbU1vZGVsID0gaXNvbGF0ZWRGaWxlc3lzdGVtTW9kZWw7Cit9CisK
K1dlYkluc3BlY3Rvci5Jc29sYXRlZEZpbGVzeXN0ZW1NYW5hZ2VyLnByb3RvdHlwZSA9IHsKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxXZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlc3lz
dGVtTW9kZWwuRmlsZXN5c3RlbT59IGZpbGVzeXN0ZW1zCisgICAgICovCisgICAgZmlsZXN5c3Rl
bXNMb2FkZWQ6IGZ1bmN0aW9uKGZpbGVzeXN0ZW1zKQorICAgIHsKKyAgICAgICAgdGhpcy5faXNv
bGF0ZWRGaWxlc3lzdGVtTW9kZWwuX2ZpbGVzeXN0ZW1zTG9hZGVkKGZpbGVzeXN0ZW1zKTsKKyAg
ICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGVzeXN0ZW1QYXRoCisg
ICAgICovCisgICAgZmlsZXN5c3RlbVJlbW92ZWQ6IGZ1bmN0aW9uKGZpbGVzeXN0ZW1QYXRoKQor
ICAgIHsKKyAgICAgICAgdGhpcy5faXNvbGF0ZWRGaWxlc3lzdGVtTW9kZWwuX2ZpbGVzeXN0ZW1S
ZW1vdmVkKGZpbGVzeXN0ZW1QYXRoKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtzdHJpbmd9IGVycm9yTWVzc2FnZQorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLklzb2xh
dGVkRmlsZXN5c3RlbU1vZGVsLkZpbGVzeXN0ZW19IGZpbGVzeXN0ZW0KKyAgICAgKi8KKyAgICBm
aWxlc3lzdGVtQWRkZWQ6IGZ1bmN0aW9uKGVycm9yTWVzc2FnZSwgZmlsZXN5c3RlbSkKKyAgICB7
CisgICAgICAgIHRoaXMuX2lzb2xhdGVkRmlsZXN5c3RlbU1vZGVsLl9maWxlc3lzdGVtQWRkZWQo
ZXJyb3JNZXNzYWdlLCBmaWxlc3lzdGVtKTsKKyAgICB9Cit9CisKKy8qKgorICogQHR5cGUgez9X
ZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlc3lzdGVtTWFuYWdlcn0KKyAqLworV2ViSW5zcGVjdG9y
Lmlzb2xhdGVkRmlsZXN5c3RlbU1hbmFnZXIgPSBudWxsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCmluZGV4IDUyNDA5NDVkYjZjMmM2ZTBlNGJiZmMw
MWY2ODk0NWM1YzAwYzI1ODIuLjJjMDhhNmEwZTg1OTc2OGEwN2FiMzQ0YTNiY2I4OGY3YWQxMDY1
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0
LnFyYworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMK
QEAgLTc0LDYgKzc0LDcgQEAKICAgICA8ZmlsZT5FeHRlbnNpb25WaWV3LmpzPC9maWxlPgogICAg
IDxmaWxlPkZpbGVDb250ZW50Vmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5GaWxlTWFuYWdlci5q
czwvZmlsZT4KKyAgICA8ZmlsZT5GaWxlc3lzdGVtTWFwcGluZy5qczwvZmlsZT4KICAgICA8Zmls
ZT5GaWxlU3lzdGVtTW9kZWwuanM8L2ZpbGU+CiAgICAgPGZpbGU+RmlsZVN5c3RlbVZpZXcuanM8
L2ZpbGU+CiAgICAgPGZpbGU+RmlsZVV0aWxzLmpzPC9maWxlPgpAQCAtMTAwLDYgKzEwMSw3IEBA
CiAgICAgPGZpbGU+SW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5qczwvZmlsZT4KICAgICA8Zmls
ZT5JbnNwZWN0b3JWaWV3LmpzPC9maWxlPgogICAgIDxmaWxlPkpTSGVhcFNuYXBzaG90LmpzPC9m
aWxlPgorICAgIDxmaWxlPklzb2xhdGVkRmlsZXN5c3RlbU1vZGVsLmpzPC9maWxlPgogICAgIDxm
aWxlPkphdmFTY3JpcHRGb3JtYXR0ZXIuanM8L2ZpbGU+CiAgICAgPGZpbGU+SmF2YVNjcmlwdFNv
dXJjZUZyYW1lLmpzPC9maWxlPgogICAgIDxmaWxlPmpzZGlmZmxpYi5qczwvZmlsZT4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvZXh0ZXJucy5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvZXh0ZXJucy5qcwppbmRleCBmM2IwMTA4
OWMwY2M1NjU2MmYxZGJmZTE0NmRlZGFmOTU4MzZhMjZkLi5hODVlM2Y1N2RhNmMyMzZmNDJiMGE2
Y2IyYTFmMzc1N2M0MTdkYjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2V4dGVybnMuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9leHRlcm5zLmpzCkBAIC0xMzgsNiArMTM4LDEyIEBAIERPTUFwcGxpY2F0aW9uQ2FjaGUu
cHJvdG90eXBlLkRPV05MT0FESU5HID0gMzsKIERPTUFwcGxpY2F0aW9uQ2FjaGUucHJvdG90eXBl
LlVQREFURVJFQURZID0gNDsKIERPTUFwcGxpY2F0aW9uQ2FjaGUucHJvdG90eXBlLk9CU09MRVRF
ID0gNTsKIAorLy8gRmlsZSBTeXN0ZW0gQVBJCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICovCitm
dW5jdGlvbiBET01GaWxlU3lzdGVtKCkge30KKwogLyoqIEB0eXBlIHtOb2RlfSAqLwogUmFuZ2Uu
cHJvdG90eXBlLnN0YXJ0Q29udGFpbmVyOwogCkBAIC0xNzEsNiArMTc3LDExIEBAIEluc3BlY3Rv
ckZyb250ZW5kSG9zdEFQSS5wcm90b3R5cGUucmVjb3JkQWN0aW9uVGFrZW4gPSBmdW5jdGlvbihh
Y3Rpb25Db2RlKSB7fQogSW5zcGVjdG9yRnJvbnRlbmRIb3N0QVBJLnByb3RvdHlwZS5yZWNvcmRQ
YW5lbFNob3duID0gZnVuY3Rpb24ocGFuZWxDb2RlKSB7fQogSW5zcGVjdG9yRnJvbnRlbmRIb3N0
QVBJLnByb3RvdHlwZS5yZWNvcmRTZXR0aW5nQ2hhbmdlZCA9IGZ1bmN0aW9uKHNldHRpbmdDb2Rl
KSB7fQogSW5zcGVjdG9yRnJvbnRlbmRIb3N0QVBJLnByb3RvdHlwZS5sb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5ID0gZnVuY3Rpb24odXJsKSB7fQorSW5zcGVjdG9yRnJvbnRlbmRIb3N0QVBJLnBy
b3RvdHlwZS5zdXBwb3J0c0ZpbGVzeXN0ZW1zID0gZnVuY3Rpb24oKSB7fQorSW5zcGVjdG9yRnJv
bnRlbmRIb3N0QVBJLnByb3RvdHlwZS5yZXF1ZXN0RmlsZXN5c3RlbXMgPSBmdW5jdGlvbigpIHt9
CitJbnNwZWN0b3JGcm9udGVuZEhvc3RBUEkucHJvdG90eXBlLmFkZEZpbGVzeXN0ZW0gPSBmdW5j
dGlvbigpIHt9CitJbnNwZWN0b3JGcm9udGVuZEhvc3RBUEkucHJvdG90eXBlLnJlbW92ZUZpbGVz
eXN0ZW0gPSBmdW5jdGlvbihmaWxlc3lzdGVtUGF0aCkge30KK0luc3BlY3RvckZyb250ZW5kSG9z
dEFQSS5wcm90b3R5cGUuaXNvbGF0ZWRGaWxlc3lzdGVtID0gZnVuY3Rpb24oZmlsZXN5c3RlbUlk
LCByZWdpc3RlcmVkTmFtZSkge30KIEluc3BlY3RvckZyb250ZW5kSG9zdEFQSS5wcm90b3R5cGUu
c2V0Wm9vbUZhY3RvciA9IGZ1bmN0aW9uKHpvb20pIHt9CiBJbnNwZWN0b3JGcm9udGVuZEhvc3RB
UEkucHJvdG90eXBlLmNhbkluc3BlY3RXb3JrZXJzID0gZnVuY3Rpb24oKSB7fQogLyoqIEB0eXBl
IHtJbnNwZWN0b3JGcm9udGVuZEhvc3RBUEl9ICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAppbmRleCBhM2FmNTlmYmYyMzZhNTAyNjFi
OGJjNjUxNzhlZTRmMTFjNWI3OTk3Li5mNzgwMGM3ODA2ZWM5YTNiNGNjNGYzNjBhZTc2YzliYTM3
MWQxN2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5odG1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmh0bWwKQEAgLTEzOCw2ICsxMzgsOCBAQCBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAgIDxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRlYnVnZ2VyU2NyaXB0TWFwcGluZy5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUHJlc2VudGF0aW9u
Q29uc29sZU1lc3NhZ2VIZWxwZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBzcmM9Ik5ldHdvcmtXb3Jrc3BhY2VQcm92aWRlci5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iSXNvbGF0ZWRGaWxlc3lz
dGVtTW9kZWwuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBzcmM9IkZpbGVzeXN0ZW1NYXBwaW5nLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgc3JjPSJXb3Jrc3BhY2UuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkJyZWFrcG9pbnRNYW5hZ2VyLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJDb250ZW50UHJv
dmlkZXJzLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9pbnNwZWN0b3IuanMKaW5kZXggMmEwOTNhN2FkMjg1ZjZiMmM5ZDNhZjRkZGQ3YzQxM2U1
YzljMDEwMy4uYjlmNTBmMzFhMDcwNWE4M2YyYjNiZWZjNDJjMmY2NDIzNGEzYTJlNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTQz
MCw2ICs0MzAsOSBAQCBXZWJJbnNwZWN0b3IuX2RvTG9hZGVkRG9uZVdpdGhDYXBhYmlsaXRpZXMg
PSBmdW5jdGlvbigpCiAgICAgdGhpcy5vcGVuQW5jaG9yTG9jYXRpb25SZWdpc3RyeSA9IG5ldyBX
ZWJJbnNwZWN0b3IuSGFuZGxlclJlZ2lzdHJ5KG9wZW5BbmNob3JMb2NhdGlvblNldHRpbmcpOwog
ICAgIHRoaXMub3BlbkFuY2hvckxvY2F0aW9uUmVnaXN0cnkucmVnaXN0ZXJIYW5kbGVyKGF1dG9z
ZWxlY3RQYW5lbCwgZnVuY3Rpb24oKSB7IHJldHVybiBmYWxzZTsgfSk7CiAKKyAgICB0aGlzLmlz
b2xhdGVkRmlsZXN5c3RlbU1vZGVsID0gbmV3IFdlYkluc3BlY3Rvci5Jc29sYXRlZEZpbGVzeXN0
ZW1Nb2RlbCgpOworICAgIHRoaXMuaXNvbGF0ZWRGaWxlc3lzdGVtTWFuYWdlciA9IG5ldyBXZWJJ
bnNwZWN0b3IuSXNvbGF0ZWRGaWxlc3lzdGVtTWFuYWdlcih0aGlzLmlzb2xhdGVkRmlsZXN5c3Rl
bU1vZGVsKTsKKwogICAgIHRoaXMud29ya3NwYWNlID0gbmV3IFdlYkluc3BlY3Rvci5Xb3Jrc3Bh
Y2UoKTsKICAgICB0aGlzLm5ldHdvcmtXb3Jrc3BhY2VQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0
b3IuTmV0d29ya1dvcmtzcGFjZVByb3ZpZGVyKCk7CiAgICAgdGhpcy5uZXR3b3JrUHJvamVjdCA9
IHRoaXMud29ya3NwYWNlLmFkZFByb2plY3QoIm5ldHdvcmsiLCB0aGlzLm5ldHdvcmtXb3Jrc3Bh
Y2VQcm92aWRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50LmgKaW5kZXggMDQzOGNkMzU1NmQxNGJkNTRmZmM2
OGI4ZjI5YmYwZGU3ZDZlZmZmNi4uZGFkMjkyODJmZWZiNzQyM2I1ZmIwNDgwODM5YThkYzExZmJj
YzMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2VG9v
bHNGcm9udGVuZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkRldlRvb2xzRnJvbnRlbmRDbGllbnQuaApAQCAtNTMsNiArNTMsMTAgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBzYXZlKGNvbnN0IFdlYlN0cmluZyYgdXJsLCBjb25zdCBXZWJTdHJpbmcm
IGNvbnRlbnQsIGJvb2wgc2F2ZUFzKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kKGNvbnN0
IFdlYlN0cmluZyYgdXJsLCBjb25zdCBXZWJTdHJpbmcmIGNvbnRlbnQpIHsgfQogCisgICAgdmly
dHVhbCB2b2lkIHJlcXVlc3RGaWxlc3lzdGVtcygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhZGRG
aWxlc3lzdGVtKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUZpbGVzeXN0ZW0oY29uc3Qg
V2ViU3RyaW5nJiBmaWxlc3lzdGVtUGF0aCkgeyB9CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFs
IH5XZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50KCkge30KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JGcm9udGVuZENsaWVudEltcGwuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRJbXBsLmNwcApp
bmRleCBmY2ZhMjVmOWM5OTcwNjVhMTUxNDJlYjM2MWQ3ZjkxYzljNWU5MTYzLi4yOWE5MjE3YjE5
NjVhMGFhZmUzNGMwNjIxZDE5YTdjNGQyM2NjYWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JGcm9udGVuZENsaWVudEltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbC5jcHAKQEAg
LTE1NCw0ICsxNTQsMjUgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudEltcGw6OnNlbmRN
ZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICBtX2NsaWVudC0+c2Vu
ZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2FnZSk7CiB9CiAKK2Jvb2wgSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRJbXBsOjpzdXBwb3J0c0ZpbGVzeXN0ZW1zKCkKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kwordm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudEltcGw6OnJlcXVlc3RGaWxlc3lzdGVtcygp
Cit7CisgICAgbV9jbGllbnQtPnJlcXVlc3RGaWxlc3lzdGVtcygpOworfQorCit2b2lkIEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50SW1wbDo6YWRkRmlsZXN5c3RlbSgpCit7CisgICAgbV9jbGllbnQt
PmFkZEZpbGVzeXN0ZW0oKTsKK30KKwordm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudEltcGw6
OnJlbW92ZUZpbGVzeXN0ZW0oY29uc3QgU3RyaW5nJiBmaWxlc3lzdGVtUGF0aCkKK3sKKyAgICBt
X2NsaWVudC0+cmVtb3ZlRmlsZXN5c3RlbShmaWxlc3lzdGVtUGF0aCk7Cit9CisKKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9J
bnNwZWN0b3JGcm9udGVuZENsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0luc3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbC5oCmluZGV4IDcyZjhkNjhiNmIyZDJjMDBkYmQ5
YjA2MjUxMGQ5Nzg3Y2Y5MDZjMDAuLjc3NDZhYTU3Y2UyM2NiNzdhNzZhNzhiZWQ5YjVjOWE5YWUz
MTBlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckZy
b250ZW5kQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3Bl
Y3RvckZyb250ZW5kQ2xpZW50SW1wbC5oCkBAIC03NSw2ICs3NSwxMSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgV1RGOjpTdHJpbmcmKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBXVEY6OlN0cmluZyYp
OworCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRmlsZXN5c3RlbXMoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVxdWVzdEZpbGVzeXN0ZW1zKCk7CisgICAgdmlydHVhbCB2b2lkIGFkZEZpbGVzeXN0
ZW0oKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRmlsZXN5c3RlbShjb25zdCBTdHJpbmcmIGZp
bGVzeXN0ZW1QYXRoKTsKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UGFnZSogbV9mcm9udGVuZFBh
Z2U7CiAgICAgV2ViRGV2VG9vbHNGcm9udGVuZENsaWVudCogbV9jbGllbnQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180918</attachid>
            <date>2012-12-28 21:47:12 -0800</date>
            <delta_ts>2012-12-28 22:10:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105727-20121229094421.patch</filename>
            <type>text/plain</type>
            <size>37886</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGU1ZGUzY2FiNjI1YjJk
N2I5ZTk5OTkzN2NiN2JiOWYwZjY5YWVlNS4uZjZiMjQ0MTY2Y2VjMzMyNmM4YjZlMDIxNDliMmQz
NmY0YWQyMjczZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEyLTEyLTI4ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFN1cHBvcnQgaW5zcGVjdG9yIGZpbGUgc3lzdGVtIGFjY2VzcyB3aXRoIGlzb2xhdGVkIGZp
bGUgc3lzdGVtIHRocm91Z2ggSW5zcGVjdG9yRnJvbnRlbmRIb3N0LgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1NzI3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRmlsZSBzeXN0ZW0gYWNjZXNzIHRocm91
Z2ggaXNvbGF0ZWQgZmlsZSBzeXN0ZW0gaXMgaW1wbGVtZW50ZWQgaW4gaW5zcGVjdG9yLgorICAg
ICAgICBGaWxlIHN5c3RlbSBhY2Nlc3MgcmVxdWVzdHMgYXJlIHNlbnQgdGhyb3VnaCBJbnNwZWN0
b3JGcm9udGVuZEhvc3QuCisgICAgICAgIEludHJvZHVjZWQgSXNvbGF0ZWRGaWxlc3lzdGVtTW9k
ZWwgZW5jYXBzdWxhdGluZyBmaWxlIHN5c3RlbSBhY2Nlc3MgbG9naWMuIAorICAgICAgICBJbnRy
b2R1Y2VkIEZpbGVzeXN0ZW1NYXBwaW5nIHRoYXQgcHJvdmlkZXMgbWFwcGluZyBiZXR3ZWVuIHdv
cmtzcGFjZSB1cmlzIGFuZCBmaWxlIHN5c3RlbSBwYXRoZXMuCisgICAgICAgIERPTUZpbGVTeXN0
ZW0uY3JlYXRlSXNvbGF0ZWRGaWxlU3lzdGVtIG1vZGlmaWVkIHRvIGFjY2VwdCBvcHRpb25hbCBy
ZWdpc3RlcmVkTmFtZSBwYXJhbWV0ZXIuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0v
RE9NRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtOjpjcmVh
dGVJc29sYXRlZEZpbGVTeXN0ZW0pOgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9ET01G
aWxlU3lzdGVtLmg6CisgICAgICAgIChET01GaWxlU3lzdGVtKToKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50Lmg6CisgICAgICAgIChJbnNwZWN0
b3JGcm9udGVuZENsaWVudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWwuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWw6OnN1cHBvcnRzRmlsZXN5c3RlbXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbDo6cmVxdWVzdEZpbGVzeXN0ZW1zKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmFkZEZpbGVzeXN0ZW0pOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6cmVtb3ZlRmlsZXN5c3Rl
bSk6CisgICAgICAgIChJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckZyb250ZW5kSG9zdDo6c3VwcG9ydHNGaWxlc3lzdGVtcyk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kSG9zdDo6cmVxdWVzdEZp
bGVzeXN0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kSG9zdDo6YWRk
RmlsZXN5c3RlbSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnJl
bW92ZUZpbGVzeXN0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRIb3N0
Ojppc29sYXRlZEZpbGVzeXN0ZW0pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRl
bmRIb3N0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9GaWxlc3lzdGVtTWFwcGluZy5qczogQWRkZWQuCisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qczoKKyAgICAgICAgKElu
c3BlY3RvckZyb250ZW5kQVBJLmZpbGVzeXN0ZW1zTG9hZGVkKToKKyAgICAgICAgKEluc3BlY3Rv
ckZyb250ZW5kQVBJLmZpbGVzeXN0ZW1SZW1vdmVkKToKKyAgICAgICAgKEluc3BlY3RvckZyb250
ZW5kQVBJLmZpbGVzeXN0ZW1BZGRlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9J
bnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLmpzOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNw
ZWN0b3JGcm9udGVuZEhvc3RTdHViLnByb3RvdHlwZS5zdXBwb3J0c0ZpbGVzeXN0ZW1zKToKKyAg
ICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5wcm90b3R5cGUu
cmVxdWVzdEZpbGVzeXN0ZW1zKToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yRnJv
bnRlbmRIb3N0U3R1Yi5wcm90b3R5cGUuYWRkRmlsZXN5c3RlbSk6CisgICAgICAgICguV2ViSW5z
cGVjdG9yLkluc3BlY3RvckZyb250ZW5kSG9zdFN0dWIucHJvdG90eXBlLnJlbW92ZUZpbGVzeXN0
ZW0pOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLnBy
b3RvdHlwZS5pc29sYXRlZEZpbGVzeXN0ZW0pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvSXNvbGF0ZWRGaWxlc3lzdGVtTW9kZWwuanM6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvV2ViS2l0LnFyYzoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2V4
dGVybnMuanM6CisgICAgICAgIChET01GaWxlU3lzdGVtKToKKyAgICAgICAgKEluc3BlY3RvckZy
b250ZW5kSG9zdEFQSS5wcm90b3R5cGUuc3VwcG9ydHNGaWxlc3lzdGVtcyk6CisgICAgICAgIChJ
bnNwZWN0b3JGcm9udGVuZEhvc3RBUEkucHJvdG90eXBlLnJlcXVlc3RGaWxlc3lzdGVtcyk6Cisg
ICAgICAgIChJbnNwZWN0b3JGcm9udGVuZEhvc3RBUEkucHJvdG90eXBlLmFkZEZpbGVzeXN0ZW0p
OgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRIb3N0QVBJLnByb3RvdHlwZS5yZW1vdmVGaWxl
c3lzdGVtKToKKyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kSG9zdEFQSS5wcm90b3R5cGUuaXNv
bGF0ZWRGaWxlc3lzdGVtKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgorCiAy
MDEyLTEyLTI4ICBObydhbSBSb3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UkVHUkVTU0lPTjogcjEzODU1NSBhc3NlcnRzIG9uIExpbnV4IEVGTC9RdCBkZWJ1ZyBidWlsZHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOTU0MzU1YWM1ZjdmYzkxYmU3MGUzM2FiYzJh
YTk0N2MyMTAxNjM3Yy4uZTM1OGU4ZDFlMTZiODVmZjFhZWM0ZThhZWNkYTMzYzI5YTMxZGY3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMi0xMi0yOCAg
VnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBTdXBwb3J0IGluc3BlY3RvciBmaWxlIHN5c3RlbSBhY2Nlc3Mgd2l0aCBpc29sYXRl
ZCBmaWxlIHN5c3RlbSB0aHJvdWdoIEluc3BlY3RvckZyb250ZW5kSG9zdC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTcyNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpbGUgc3lzdGVtIGFjY2VzcyBt
ZXRob2RzIHBsdW1iaW5nIG1hZGUgZm9yIENocm9taXVtLgorCisgICAgICAgICogcHVibGljL1dl
YkRldlRvb2xzRnJvbnRlbmRDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNG
cm9udGVuZENsaWVudDo6cmVxdWVzdEZpbGVzeXN0ZW1zKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RGV2VG9vbHNGcm9udGVuZENsaWVudDo6YWRkRmlsZXN5c3RlbSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkRldlRvb2xzRnJvbnRlbmRDbGllbnQ6OnJlbW92ZUZpbGVzeXN0ZW0pOgorICAgICAgICAo
V2ViRGV2VG9vbHNGcm9udGVuZENsaWVudCk6CisgICAgICAgICogc3JjL0luc3BlY3RvckZyb250
ZW5kQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckZyb250ZW5kQ2xp
ZW50SW1wbDo6c3VwcG9ydHNGaWxlc3lzdGVtcyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViS2l0OjpJbnNwZWN0b3JGcm9udGVuZENsaWVudEltcGw6OnJlcXVlc3RGaWxlc3lzdGVt
cyk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbDo6YWRkRmls
ZXN5c3RlbSk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbDo6
cmVtb3ZlRmlsZXN5c3RlbSk6CisgICAgICAgICogc3JjL0luc3BlY3RvckZyb250ZW5kQ2xpZW50
SW1wbC5oOgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRJbXBsKToKKwogMjAxMi0x
Mi0yOCAgRmFkeSBTYW11ZWwgIDxmc2FtdWVsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSb2xs
IENocm9taXVtIERFUFMgdG8gcjE3NDczOQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uY3BwCmluZGV4IDRlOGVkNGI0MTkyNDZjMDI1MTkw
YmVhOWVhZWU3NzFhMGQxMTg1OTYuLjBhMWRiMTQwNTBlNTYzNmYyZGMyZTM0MzIzM2UyYzcyOTU5
ZTM4MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01G
aWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9N
RmlsZVN5c3RlbS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVt
PiBET01GaWxlU3lzdGVtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwK
ICAgICByZXR1cm4gZmlsZVN5c3RlbS5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8RE9NRmls
ZVN5c3RlbT4gRE9NRmlsZVN5c3RlbTo6Y3JlYXRlSXNvbGF0ZWRGaWxlU3lzdGVtKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgZmlsZXN5c3RlbUlkKQorUGFz
c1JlZlB0cjxET01GaWxlU3lzdGVtPiBET01GaWxlU3lzdGVtOjpjcmVhdGVJc29sYXRlZEZpbGVT
eXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBmaWxl
c3lzdGVtSWQsIGNvbnN0IFN0cmluZyYgcmVnaXN0ZXJlZE5hbWUpCiB7CiAgICAgaWYgKGZpbGVz
eXN0ZW1JZC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtODIsNiArODIsMTAgQEAg
UGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBET01GaWxlU3lzdGVtOjpjcmVhdGVJc29sYXRlZEZp
bGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW8KICAgICByb290VVJMLmFwcGVuZCgiLyIpOwogICAgIHJv
b3RVUkwuYXBwZW5kKGZpbGVzeXN0ZW1JZCk7CiAgICAgcm9vdFVSTC5hcHBlbmQoIi8iKTsKKyAg
ICBpZiAoIXJlZ2lzdGVyZWROYW1lLmlzRW1wdHkoKSkgeworICAgICAgICByb290VVJMLmFwcGVu
ZChyZWdpc3RlcmVkTmFtZSk7CisgICAgICAgIHJvb3RVUkwuYXBwZW5kKCIvIik7CisgICAgfQog
CiAgICAgcmV0dXJuIERPTUZpbGVTeXN0ZW06OmNyZWF0ZShjb250ZXh0LCBmaWxlc3lzdGVtTmFt
ZS50b1N0cmluZygpLCBGaWxlU3lzdGVtVHlwZUlzb2xhdGVkLCBLVVJMKFBhcnNlZFVSTFN0cmlu
Zywgcm9vdFVSTC50b1N0cmluZygpKSwgQXN5bmNGaWxlU3lzdGVtOjpjcmVhdGUoKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3Rl
bS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uaApp
bmRleCAzYjRlZTEwYzY4YTcxZTZiMDQ4YWMzYjAxNDY1ZGYxN2Y4N2MwOWUwLi41M2Y5YjJhZDgw
OTlkNjFmMWJlNzBhYmM5Mjc3ZGI5ZGFkMjkxMmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmgKQEAgLTQ5LDggKzQ5LDggQEAgY2xh
c3MgRE9NRmlsZVN5c3RlbSA6IHB1YmxpYyBET01GaWxlU3lzdGVtQmFzZSwgcHVibGljIEFjdGl2
ZURPTU9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3Rl
bT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIEZp
bGVTeXN0ZW1UeXBlLCBjb25zdCBLVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbT4pOwogCi0gICAgLy8gQ3JlYXRlcyBhIG5ldyBpc29sYXRlZCBmaWxlIHN5c3RlbSBmb3Ig
dGhlIGdpdmVuIGZpbGVzeXN0ZW1JZC4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01GaWxlU3lz
dGVtPiBjcmVhdGVJc29sYXRlZEZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IFN0cmluZyYgZmlsZXN5c3RlbUlkKTsKKyAgICAvLyBDcmVhdGVzIGEgbmV3IGlzb2xhdGVk
IGZpbGUgc3lzdGVtIGZvciB0aGUgZ2l2ZW4gZmlsZXN5c3RlbUlkIGFuZCBvcHRpb25hbCByZWdp
c3RlcmVkTmFtZS4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBjcmVhdGVJ
c29sYXRlZEZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYg
ZmlsZXN5c3RlbUlkLCBjb25zdCBTdHJpbmcmIHJlZ2lzdGVyZWROYW1lID0gU3RyaW5nKCkpOwog
CiAgICAgUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeT4gcm9vdCgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
aW5kZXggNzM5YmMwYmM5NDJiZWI0NmI0OGQ4NmQ5ZjFhMjAwMzdkZWE5M2Y1NS4uODdhZjlmZjc3
NDYyNTBiYzczM2EzNGYwMTE1Mjc3ODdhODFlZWNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNTEy
Myw2ICs1MTIzLDcgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lv
blNlcnZlci5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25W
aWV3LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVNYW5hZ2VyLmpz
JywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVzeXN0ZW1NYXBwaW5nLmpz
JywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcycs
CiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlVXRpbHMuanMnLAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRm9udFZpZXcuanMnLApAQCAtNTEzOCw2ICs1MTM5
LDcgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckZyb250ZW5k
SG9zdFN0dWIuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9y
Vmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMn
LAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSXNvbGF0ZWRGaWxlc3lzdGVtTW9k
ZWwuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNjcmlwdEZvcm1h
dHRlci5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9qc2RpZmZsaWIuanMn
LAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvS2V5Ym9hcmRTaG9ydGN1dC5qcycs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGMx
NjMwOGRiYjdmM2NhMzI0MzgyNWRmNDliNDQxZDcxYzBkNTE2NGEuLmJkM2QyMmQ3MjFhN2QyYjNm
YjljMjQxOGRjMDcxODM4NWI2N2NkOGIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCkBAIC03NjU4NSw2ICs3NjU4NSwxMCBAQAogCQkJCQk+CiAJCQkJ
PC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250
LWVuZFxGaWxlc3lzdGVtTWFwcGluZy5qcyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8Rmls
ZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcRmlsZVN5c3RlbU1v
ZGVsLmpzIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtNzY3MjEsNiArNzY3MjUsMTAgQEAKIAkJ
CQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3Bl
Y3Rvclxmcm9udC1lbmRcSXNvbGF0ZWRGaWxlc3lzdGVtTW9kZWwuanMiCisJCQkJCT4KKwkJCQk8
L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQt
ZW5kXGNtXGphdmFzY3JpcHQuanMiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCmluZGV4IGY3ZmQ4
NWM4MTZmZGZjMWU4OWU3NWEzMTRiNmU5MjY4YzcwMGMxMjcuLmVmNzBmZjc1ZGU5MWNlOGEzODFk
MDBlNTEyYjNhYTFmY2I1OTg2NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCkBAIC03MSw2ICs3MSwxMSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJikgPSAwOwog
CiAgICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYpID0g
MDsKKworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZpbGVzeXN0ZW1zKCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCByZXF1ZXN0RmlsZXN5c3RlbXMoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFk
ZEZpbGVzeXN0ZW0oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUZpbGVzeXN0ZW0oY29u
c3QgU3RyaW5nJiBmaWxlc3lzdGVtUGF0aCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsLmgKaW5kZXggN2Y5ZjAyMzRlMzk3OTk5OWE3YzgyNDk4MTAyNWUyYzc2
N2Y2OTI2OC4uMWIzZjkyMTFlMzMyNDVjY2Y1ZjMxNTAzOTcwOWVhNjg3OWI0ZDljYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbC5oCkBAIC03Niw2ICs3NiwxMSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQg
c2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKIAorICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c0ZpbGVzeXN0ZW1zKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdEZpbGVzeXN0ZW1zKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGFkZEZp
bGVzeXN0ZW0oKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRmlsZXN5c3RlbShjb25zdCBT
dHJpbmcmKSB7IH0KKwogICAgIGJvb2wgY2FuQXR0YWNoV2luZG93KCk7CiAgICAgdm9pZCBzZXRE
b2NraW5nVW5hdmFpbGFibGUoYm9vbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKaW5kZXggMTliNzEyZDViNjc0M2YyYTRjOGI4
NTlhYTc1OWQ5YTJlYmM2M2IwMS4uNDEwZjc2Y2Y2YTRlMWIzOWRlN2FjNmVmOTdkNzYxOTAxMGZm
NjhlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kSG9zdC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJDb250ZXh0TWVudUl0ZW0u
aCIKICNpbmNsdWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJDb250ZXh0
TWVudVByb3ZpZGVyLmgiCisjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkVs
ZW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCkBA
IC0yOTQsNiArMjk1LDM5IEBAIFN0cmluZyBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OmxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgcmV0dXJuIFN0cmluZyhk
YXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQogCitib29sIEluc3BlY3RvckZyb250ZW5kSG9z
dDo6c3VwcG9ydHNGaWxlc3lzdGVtcygpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBy
ZXR1cm4gbV9jbGllbnQtPnN1cHBvcnRzRmlsZXN5c3RlbXMoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpyZXF1ZXN0RmlsZXN5c3RlbXMoKQor
eworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnJlcXVlc3RGaWxlc3lzdGVt
cygpOworfQorCit2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6YWRkRmlsZXN5c3RlbSgpCit7
CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+YWRkRmlsZXN5c3RlbSgpOwor
fQorCit2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6cmVtb3ZlRmlsZXN5c3RlbShjb25zdCBT
dHJpbmcmIGZpbGVzeXN0ZW1QYXRoKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9j
bGllbnQtPnJlbW92ZUZpbGVzeXN0ZW0oZmlsZXN5c3RlbVBhdGgpOworfQorCisjaWYgRU5BQkxF
KEZJTEVfU1lTVEVNKQorUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBJbnNwZWN0b3JGcm9udGVu
ZEhvc3Q6Omlzb2xhdGVkRmlsZXN5c3RlbShjb25zdCBTdHJpbmcmIGZpbGVzeXN0ZW1JZCwgY29u
c3QgU3RyaW5nJiByZWdpc3RlcmVkTmFtZSkKK3sKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0ID0gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpOworICAg
IHJldHVybiBET01GaWxlU3lzdGVtOjpjcmVhdGVJc29sYXRlZEZpbGVTeXN0ZW0oY29udGV4dCwg
ZmlsZXN5c3RlbUlkLCByZWdpc3RlcmVkTmFtZSk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaAppbmRleCBlYTZkMTAxOTgz
ZDk5OTk3ZDQyYTcwOTI5OWY2MjJmZWRjOTgzNTAxLi5hMmI3NjFjNWUwN2UxNDFhYWY5MWUyNjRh
ODUyZjg0NWNkN2RjZTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kSG9zdC5oCkBAIC0zOSw2ICszOSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENvbnRleHRNZW51SXRlbTsKK2NsYXNzIERPTUZpbGVTeXN0ZW07CiBjbGFzcyBF
dmVudDsKIGNsYXNzIEZyb250ZW5kTWVudVByb3ZpZGVyOwogY2xhc3MgSW5zcGVjdG9yQ2xpZW50
OwpAQCAtODUsNiArODYsMTQgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkoY29uc3QgU3RyaW5nJiB1cmwpOwogCisgICAgYm9vbCBzdXBwb3J0c0ZpbGVz
eXN0ZW1zKCk7CisgICAgdm9pZCByZXF1ZXN0RmlsZXN5c3RlbXMoKTsKKyAgICB2b2lkIGFkZEZp
bGVzeXN0ZW0oKTsKKyAgICB2b2lkIHJlbW92ZUZpbGVzeXN0ZW0oY29uc3QgU3RyaW5nJiBmaWxl
c3lzdGVtUGF0aCk7CisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorICAgIFBhc3NSZWZQdHI8RE9N
RmlsZVN5c3RlbT4gaXNvbGF0ZWRGaWxlc3lzdGVtKGNvbnN0IFN0cmluZyYgZmlsZXN5c3RlbUlk
LCBjb25zdCBTdHJpbmcmIHJlZ2lzdGVyZWROYW1lKTsKKyNlbmRpZgorCiBwcml2YXRlOgogI2lm
IEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIGZyaWVuZCBjbGFzcyBGcm9udGVuZE1lbnVQcm92
aWRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
SG9zdC5pZGwKaW5kZXggNzI4YWEwYzBlNGIwZjkwMTMyNDY3M2ExMDA1ZDE4YzZlOTk3M2QxYi4u
NDQ4ZTQzMjdlNWM2NTM3YzU4NmNkYzdhOGZhYmQ3Njg5NzZhOWM3YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwKQEAgLTY2LDQg
KzY2LDEwIEBACiAgICAgW0N1c3RvbV0gdm9pZCByZWNvcmRTZXR0aW5nQ2hhbmdlZChpbiB1bnNp
Z25lZCBsb25nIHNldHRpbmdDaGFuZ2VkKTsKICAgICAKICAgICBET01TdHJpbmcgbG9hZFJlc291
cmNlU3luY2hyb25vdXNseShpbiBET01TdHJpbmcgdXJsKTsKKworICAgIGJvb2xlYW4gc3VwcG9y
dHNGaWxlc3lzdGVtcygpOworICAgIHZvaWQgcmVxdWVzdEZpbGVzeXN0ZW1zKCk7CisgICAgdm9p
ZCBhZGRGaWxlc3lzdGVtKCk7CisgICAgdm9pZCByZW1vdmVGaWxlc3lzdGVtKGluIERPTVN0cmlu
ZyBmaWxlc3lzdGVtUGF0aCk7CisgICAgW0NvbmRpdGlvbmFsPUZJTEVfU1lTVEVNXSBET01GaWxl
U3lzdGVtIGlzb2xhdGVkRmlsZXN5c3RlbShpbiBET01TdHJpbmcgZmlsZXN5c3RlbUlkLCBpbiBE
T01TdHJpbmcgcmVnaXN0ZXJlZE5hbWUpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weSBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9jb21waWxlLWZyb250LWVuZC5weQppbmRleCA3YWIzZmE0MDZjODMyYTIwMGQ2OGE5M2M1ZTM0
ZWM5MGMwMTg3YzdmLi5iZjM3MmRkYzZjZTRlYzc5ZjYzMWE0ZGI0MGUzNjI0ZjQ2NGNmMGM5IDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CkBAIC03
NiwxMSArNzYsMTMgQEAgbW9kdWxlcyA9IFsKICAgICAgICAgICAgICJEZWJ1Z2dlck1vZGVsLmpz
IiwKICAgICAgICAgICAgICJEZWJ1Z2dlclNjcmlwdE1hcHBpbmcuanMiLAogICAgICAgICAgICAg
IkZpbGVNYW5hZ2VyLmpzIiwKKyAgICAgICAgICAgICJGaWxlc3lzdGVtTWFwcGluZy5qcyIsCiAg
ICAgICAgICAgICAiRmlsZVN5c3RlbU1vZGVsLmpzIiwKICAgICAgICAgICAgICJGaWxlVXRpbHMu
anMiLAogICAgICAgICAgICAgIkhBUkVudHJ5LmpzIiwKICAgICAgICAgICAgICJJbmRleGVkREJN
b2RlbC5qcyIsCiAgICAgICAgICAgICAiSW5zcGVjdG9yQmFja2VuZC5qcyIsCisgICAgICAgICAg
ICAiSXNvbGF0ZWRGaWxlc3lzdGVtTW9kZWwuanMiLAogICAgICAgICAgICAgIkxpbmtpZmllci5q
cyIsCiAgICAgICAgICAgICAiTmV0d29ya0xvZy5qcyIsCiAgICAgICAgICAgICAiTmV0d29ya1VJ
U291cmNlQ29kZVByb3ZpZGVyLmpzIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRmlsZXN5c3RlbU1hcHBpbmcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0ZpbGVzeXN0ZW1NYXBwaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhYzM1NDM2
MGExYjk3MjE3MzIzMzJhN2U1ODRjOTE5YTc0ZTU3NDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVzeXN0ZW1NYXBwaW5nLmpzCkBAIC0w
LDAgKzEsMTc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworLyoqCisgKiBAaW50ZXJmYWNlCisgKi8KK1dlYkluc3BlY3Rvci5GaWxlc3lz
dGVtTWFwcGluZyA9IGZ1bmN0aW9uKCkgeyB9CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKi8K
K1dlYkluc3BlY3Rvci5GaWxlc3lzdGVtTWFwcGluZy5GaWxlRGVzY3JpcHRvciA9IGZ1bmN0aW9u
KGZpbGVzeXN0ZW1QYXRoLCBmaWxlUGF0aCkKK3sKKyAgICB0aGlzLmZpbGVzeXN0ZW1QYXRoID0g
ZmlsZXN5c3RlbVBhdGg7CisgICAgdGhpcy5maWxlUGF0aCA9IGZpbGVQYXRoOworfQorCitXZWJJ
bnNwZWN0b3IuRmlsZXN5c3RlbU1hcHBpbmcucHJvdG90eXBlID0geworICAgIC8qKgorICAgICAq
IEByZXR1cm4ge0FycmF5LjxzdHJpbmc+fQorICAgICAqLworICAgIGZpbGVzeXN0ZW1QYXRoczog
ZnVuY3Rpb24oKSB7IH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJpCisg
ICAgICogQHJldHVybiB7P1dlYkluc3BlY3Rvci5GaWxlc3lzdGVtTWFwcGluZy5GaWxlRGVzY3Jp
cHRvcn0KKyAgICAgKi8KKyAgICBmaWxlRm9yVVJJOiBmdW5jdGlvbih1cmkpIHsgfSwKKworICAg
IC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVzeXN0ZW1NYXBwaW5nLkZpbGVE
ZXNjcmlwdG9yfSBmaWxlRGVzY3JpcHRvcgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAg
Ki8KKyAgICB1cmlGb3JGaWxlOiBmdW5jdGlvbihmaWxlRGVzY3JpcHRvcikgeyB9LAorCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGgKKyAgICAgKiBAcmV0dXJuIHs/c3RyaW5n
fQorICAgICAqLworICAgIHVyaUZvclBhdGg6IGZ1bmN0aW9uKHBhdGgpIHsgfQorfQorCisvKioK
KyAqIEBjb25zdHJ1Y3RvcgorICogQGltcGxlbWVudHMge1dlYkluc3BlY3Rvci5GaWxlc3lzdGVt
TWFwcGluZ30KKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuT2JqZWN0fQorICovCitXZWJJbnNw
ZWN0b3IuRmlsZXN5c3RlbU1hcHBpbmdJbXBsID0gZnVuY3Rpb24oKQoreworICAgIHRoaXMuX2Zp
bGVzeXN0ZW1NYXBwaW5nU2V0dGluZyA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5jcmVhdGVTZXR0
aW5nKCJmaWxlc3lzdGVtTWFwcGluZyIsIHt9KTsKKyAgICAvKiogQHR5cGUgeyFPYmplY3QuPHN0
cmluZywgc3RyaW5nPn0gKi8KKyAgICB0aGlzLl9tYXBwZWROYW1lcyA9IHRoaXMuX2ZpbGVzeXN0
ZW1NYXBwaW5nU2V0dGluZy5nZXQoKTsKK30KKworV2ViSW5zcGVjdG9yLkZpbGVzeXN0ZW1NYXBw
aW5nSW1wbC5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGZp
bGVzeXN0ZW1QYXRoCisgICAgICovCisgICAgYWRkRmlsZXN5c3RlbU1hcHBpbmc6IGZ1bmN0aW9u
KGZpbGVzeXN0ZW1QYXRoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX21hcHBlZE5hbWVzW2Zp
bGVzeXN0ZW1QYXRoXSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdmFyIHBhdGhTZWdt
ZW50cyA9IGZpbGVzeXN0ZW1QYXRoLnNwbGl0KCIvIik7CisgICAgICAgIHZhciBtYXBwZWROYW1l
ID0gcGF0aFNlZ21lbnRzW3BhdGhTZWdtZW50cy5sZW5ndGggLSAxXTsKKyAgICAgICAgdmFyIHVu
aXF1ZU1hcHBlZE5hbWUgPSB0aGlzLl91bmlxdWVNYXBwZWROYW1lKG1hcHBlZE5hbWUpOworICAg
ICAgICB0aGlzLl9tYXBwZWROYW1lc1tmaWxlc3lzdGVtUGF0aF0gPSBtYXBwZWROYW1lOworICAg
ICAgICB0aGlzLl9maWxlc3lzdGVtTWFwcGluZ1NldHRpbmcuc2V0KHRoaXMuX21hcHBlZE5hbWVz
KTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG1hcHBlZE5hbWUK
KyAgICAgKi8KKyAgICBfdW5pcXVlTWFwcGVkTmFtZTogZnVuY3Rpb24obWFwcGVkTmFtZSkKKyAg
ICB7CisgICAgICAgIHZhciB1bmlxdWVNYXBwZWROYW1lID0gbWFwcGVkTmFtZTsKKyAgICAgICAg
dmFyIGkgPSAxOworICAgICAgICB3aGlsZSAoT2JqZWN0LnZhbHVlcyh0aGlzLl9tYXBwZWROYW1l
cykuaW5kZXhPZih1bmlxdWVNYXBwZWROYW1lKSAhPT0gLTEpIHsKKyAgICAgICAgICAgIHVuaXF1
ZU1hcHBlZE5hbWUgPSBtYXBwZWROYW1lICsgIiAoIiArIGkgKyAiKSI7CisgICAgICAgICAgICAr
K2k7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHVuaXF1ZU1hcHBlZE5hbWU7CisgICAgfSwK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlc3lzdGVtUGF0aAorICAgICAq
LworICAgIHJlbW92ZUZpbGVzeXN0ZW1NYXBwaW5nOiBmdW5jdGlvbihmaWxlc3lzdGVtUGF0aCkK
KyAgICB7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9tYXBwZWROYW1lc1tmaWxlc3lzdGVtUGF0aF07
CisgICAgICAgIHRoaXMuX2ZpbGVzeXN0ZW1NYXBwaW5nU2V0dGluZy5zZXQodGhpcy5fbWFwcGVk
TmFtZXMpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtBcnJheS48c3RyaW5n
Pn0KKyAgICAgKi8KKyAgICBmaWxlc3lzdGVtUGF0aHM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLl9tYXBwZWROYW1lcyk7CisgICAgfSwKKworICAg
IC8qKgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBfdXJpUHJlZml4Rm9y
TWFwcGVkTmFtZTogZnVuY3Rpb24obWFwcGVkTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiAi
ZmlsZTovLy8iICsgbWFwcGVkTmFtZSArICIvIjsKKyAgICB9LAorCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtzdHJpbmd9IHVyaQorICAgICAqIEByZXR1cm4gez9XZWJJbnNwZWN0b3IuRmlsZXN5
c3RlbU1hcHBpbmcuRmlsZURlc2NyaXB0b3J9CisgICAgICovCisgICAgZmlsZUZvclVSSTogZnVu
Y3Rpb24odXJpKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgZmlsZXN5c3RlbVBhdGggaW4gdGhp
cy5fbWFwcGVkTmFtZXMpIHsKKyAgICAgICAgICAgIHZhciB1cmlQcmVmaXggPSB0aGlzLl91cmlQ
cmVmaXhGb3JNYXBwZWROYW1lKHRoaXMuX21hcHBlZE5hbWVzW2ZpbGVzeXN0ZW1QYXRoXSk7Cisg
ICAgICAgICAgICBpZiAodXJpLmluZGV4T2YodXJpUHJlZml4KSA9PT0gMCkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5GaWxlc3lzdGVtTWFwcGluZy5GaWxlRGVzY3Jp
cHRvcihmaWxlc3lzdGVtUGF0aCwgIi8iICsgdXJpLnN1YnN0cmluZyh1cmlQcmVmaXgubGVuZ3Ro
KSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfSwKKworICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVzeXN0ZW1NYXBwaW5nLkZpbGVEZXNjcmlw
dG9yfSBmaWxlRGVzY3JpcHRvcgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAg
ICB1cmlGb3JGaWxlOiBmdW5jdGlvbihmaWxlRGVzY3JpcHRvcikKKyAgICB7CisgICAgICAgIHZh
ciB1cmlQcmVmaXggPSB0aGlzLl91cmlQcmVmaXhGb3JNYXBwZWROYW1lKHRoaXMuX21hcHBlZE5h
bWVzW2ZpbGVEZXNjcmlwdG9yLmZpbGVzeXN0ZW1QYXRoXSk7CisgICAgICAgIHJldHVybiB1cmlQ
cmVmaXggKyBmaWxlRGVzY3JpcHRvci5maWxlUGF0aC5zdWJzdHJpbmcoIi8iLmxlbmd0aCk7Cisg
ICAgfSwKKyAgICAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aAorICAgICAq
IEByZXR1cm4gez9zdHJpbmd9CisgICAgICovCisgICAgdXJpRm9yUGF0aDogZnVuY3Rpb24ocGF0
aCkKKyAgICB7CisgICAgICAgIGZvciAodmFyIGZpbGVzeXN0ZW1QYXRoIGluIHRoaXMuX21hcHBl
ZE5hbWVzKSB7CisgICAgICAgICAgICBpZiAocGF0aC5pbmRleE9mKGZpbGVzeXN0ZW1QYXRoKSA9
PT0gMCkgeworICAgICAgICAgICAgICAgIHZhciB1cmlQcmVmaXggPSB0aGlzLl91cmlQcmVmaXhG
b3JNYXBwZWROYW1lKHRoaXMuX21hcHBlZE5hbWVzW2ZpbGVzeXN0ZW1QYXRoXSk7CisgICAgICAg
ICAgICAgICAgdmFyIHN1YlBhdGggPSBwYXRoLnN1YnN0cmluZyhmaWxlc3lzdGVtUGF0aC5sZW5n
dGgpOworICAgICAgICAgICAgICAgIGlmIChzdWJQYXRoLmxlbmd0aCA9PT0gMCkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHVyaVByZWZpeDsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChz
dWJQYXRoWzBdID09PSAiLyIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB1cmlQcmVmaXgg
KyBzdWJQYXRoLnN1YnN0cmluZygiLyIubGVuZ3RoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckZyb250ZW5kQVBJLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcwppbmRl
eCA5MDBhMTdiNjUyMmM2M2M1YjI0ODAwMGMzZDZmNjJlZTEwZWRiYTllLi5iNGE3YjcxNjYwY2Yw
Mzk3YTYzZjAzNWJlODFkM2FiMDFhZWE3OTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckZyb250ZW5kQVBJLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKQEAgLTEx
MCw2ICsxMTAsMjEgQEAgdmFyIEluc3BlY3RvckZyb250ZW5kQVBJID0gewogICAgICAgICBXZWJJ
bnNwZWN0b3IudG9nZ2xlU2VhcmNoaW5nRm9yTm9kZSgpOwogICAgIH0sCiAKKyAgICBmaWxlc3lz
dGVtc0xvYWRlZDogZnVuY3Rpb24oZmlsZXN5c3RlbXMpCisgICAgeworICAgICAgICBXZWJJbnNw
ZWN0b3IuaXNvbGF0ZWRGaWxlc3lzdGVtTWFuYWdlci5maWxlc3lzdGVtc0xvYWRlZChmaWxlc3lz
dGVtcyk7CisgICAgfSwKKworICAgIGZpbGVzeXN0ZW1SZW1vdmVkOiBmdW5jdGlvbihmaWxlc3lz
dGVtUGF0aCkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5pc29sYXRlZEZpbGVzeXN0ZW1N
YW5hZ2VyLmZpbGVzeXN0ZW1SZW1vdmVkKGZpbGVzeXN0ZW1QYXRoKTsKKyAgICB9LAorCisgICAg
ZmlsZXN5c3RlbUFkZGVkOiBmdW5jdGlvbihlcnJvck1lc3NhZ2UsIGZpbGVzeXN0ZW0pCisgICAg
eworICAgICAgICBXZWJJbnNwZWN0b3IuaXNvbGF0ZWRGaWxlc3lzdGVtTWFuYWdlci5maWxlc3lz
dGVtQWRkZWQoZXJyb3JNZXNzYWdlLCBmaWxlc3lzdGVtKTsKKyAgICB9LAorCiAgICAgc2F2ZWRV
Ukw6IGZ1bmN0aW9uKHVybCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5maWxlTWFuYWdl
ci5zYXZlZFVSTCh1cmwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLmpzCmluZGV4IGM2MTZj
MWQxOWQzMmNkYzlhMTMwZWVhYWExNDc1Zjc3ZTI1MWMyMjUuLjk4OTYxYTVjMjhlNDgyMzg1ZTUx
YmQ3ODI3YjBmMDVmMGU0Njg3ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckZyb250ZW5kSG9zdFN0dWIuanMKQEAg
LTE5NSw2ICsxOTUsMjggQEAgV2ViSW5zcGVjdG9yLkluc3BlY3RvckZyb250ZW5kSG9zdFN0dWIu
cHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gbG9hZFhIUih1cmwpOwogICAgIH0sCiAKKyAg
ICBzdXBwb3J0c0ZpbGVzeXN0ZW1zOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfSwKKworICAgIHJlcXVlc3RGaWxlc3lzdGVtczogZnVuY3Rpb24oKQorICAg
IHsKKyAgICB9LAorCisgICAgYWRkRmlsZXN5c3RlbTogZnVuY3Rpb24oKQorICAgIHsKKyAgICB9
LAorCisgICAgcmVtb3ZlRmlsZXN5c3RlbTogZnVuY3Rpb24oZmlsZXN5c3RlbVBhdGgpCisgICAg
eworICAgIH0sCisKKyAgICBpc29sYXRlZEZpbGVzeXN0ZW06IGZ1bmN0aW9uKGZpbGVzeXN0ZW1J
ZCwgcmVnaXN0ZXJlZE5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9LAor
CiAgICAgc2V0Wm9vbUZhY3RvcjogZnVuY3Rpb24oem9vbSkKICAgICB7CiAgICAgfSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSXNvbGF0ZWRGaWxlc3lz
dGVtTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0lzb2xhdGVk
RmlsZXN5c3RlbU1vZGVsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2OTMyNWVhOTZmN2UyNTk3ODY4NjFiODY2
NGIxOWNjMDI0ZTU0ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0lzb2xhdGVkRmlsZXN5c3RlbU1vZGVsLmpzCkBAIC0wLDAgKzEsMjM4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
LyoqCisgKiBAY29uc3RydWN0b3IKKyAqLworV2ViSW5zcGVjdG9yLklzb2xhdGVkRmlsZXN5c3Rl
bU1vZGVsID0gZnVuY3Rpb24oKQoreworICAgIC8qKiBAdHlwZSB7IU9iamVjdC48c3RyaW5nLCBX
ZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlc3lzdGVtTW9kZWwuRmlsZXN5c3RlbT59ICovCisgICAg
dGhpcy5fZmlsZXN5c3RlbXMgPSB7fTsKKyAgICAvKiogQHR5cGUge09iamVjdC48c3RyaW5nLCBB
cnJheS48ZnVuY3Rpb24oRE9NRmlsZVN5c3RlbSk+Pn0gKi8KKyAgICB0aGlzLl9wZW5kaW5nRmls
ZXN5c3RlbVJlcXVlc3RzID0ge307CisgICAgdGhpcy5fZmlsZXN5c3RlbU1hcHBpbmcgPSBuZXcg
V2ViSW5zcGVjdG9yLkZpbGVzeXN0ZW1NYXBwaW5nSW1wbCgpOworCisgICAgaWYgKHRoaXMuc3Vw
cG9ydHNGaWxlc3lzdGVtcygpKQorICAgICAgICB0aGlzLl9yZXF1ZXN0RmlsZXN5c3RlbXMoKTsK
K30KKworLyoqIEB0eXBlZGVmIHt7ZmlsZXN5c3RlbUlkOiBzdHJpbmcsIHJlZ2lzdGVyZWROYW1l
OiBzdHJpbmcsIGZpbGVzeXN0ZW1QYXRoOiBzdHJpbmd9fSAqLworV2ViSW5zcGVjdG9yLklzb2xh
dGVkRmlsZXN5c3RlbU1vZGVsLkZpbGVzeXN0ZW07CisKK1dlYkluc3BlY3Rvci5Jc29sYXRlZEZp
bGVzeXN0ZW1Nb2RlbC5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHJldHVybiB7V2Vi
SW5zcGVjdG9yLkZpbGVzeXN0ZW1NYXBwaW5nfQorICAgICAqLworICAgIG1hcHBpbmc6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9maWxlc3lzdGVtTWFwcGluZzsKKyAg
ICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBz
dXBwb3J0c0ZpbGVzeXN0ZW1zOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LnN1cHBvcnRzRmlsZXN5c3RlbXMoKTsKKyAgICB9LAorCisgICAg
X3JlcXVlc3RGaWxlc3lzdGVtczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQoIXRoaXMuX2xvYWRlZCk7CisgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5yZXF1
ZXN0RmlsZXN5c3RlbXMoKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtmdW5j
dGlvbihzdHJpbmcpfSBjYWxsYmFjaworICAgICAqLworICAgIGFkZEZpbGVzeXN0ZW06IGZ1bmN0
aW9uKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdGhpcy5fc2VsZWN0RmlsZXN5c3RlbVBhdGhD
YWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QuYWRkRmls
ZXN5c3RlbSgpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCl9
IGNhbGxiYWNrCisgICAgICovCisgICAgcmVtb3ZlRmlsZXN5c3RlbTogZnVuY3Rpb24oZmlsZXN5
c3RlbVBhdGgsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVtb3ZlRmlsZXN5c3Rl
bUNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5yZW1v
dmVGaWxlc3lzdGVtKGZpbGVzeXN0ZW1QYXRoKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtBcnJheS48V2ViSW5zcGVjdG9yLklzb2xhdGVkRmlsZXN5c3RlbU1vZGVsLkZpbGVz
eXN0ZW0+fSBmaWxlc3lzdGVtcworICAgICAqLworICAgIF9maWxlc3lzdGVtc0xvYWRlZDogZnVu
Y3Rpb24oZmlsZXN5c3RlbXMpCisgICAgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZp
bGVzeXN0ZW1zLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGhpcy5faW5uZXJBZGRGaWxlc3lz
dGVtKGZpbGVzeXN0ZW1zW2ldKTsKKyAgICAgICAgdGhpcy5fbG9hZGVkID0gdHJ1ZTsKKyAgICAg
ICAgdGhpcy5fcHJvY2Vzc1BlbmRpbmdGaWxlc3lzdGVtUmVxdWVzdHMoKTsKKyAgICB9LAorCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlc3lzdGVtTW9k
ZWwuRmlsZXN5c3RlbX0gZmlsZXN5c3RlbQorICAgICAqLworICAgIF9pbm5lckFkZEZpbGVzeXN0
ZW06IGZ1bmN0aW9uKGZpbGVzeXN0ZW0pCisgICAgeworICAgICAgICB0aGlzLl9maWxlc3lzdGVt
TWFwcGluZy5hZGRGaWxlc3lzdGVtTWFwcGluZyhmaWxlc3lzdGVtLmZpbGVzeXN0ZW1QYXRoKTsK
KyAgICAgICAgdGhpcy5fZmlsZXN5c3RlbXNbZmlsZXN5c3RlbS5maWxlc3lzdGVtUGF0aF0gPSBm
aWxlc3lzdGVtOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtBcnJheS48c3Ry
aW5nPn0KKyAgICAgKi8KKyAgICBfZmlsZXN5c3RlbVBhdGhzOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5fZmlsZXN5c3RlbXMpOworICAgIH0sCisK
KyAgICBfcHJvY2Vzc1BlbmRpbmdGaWxlc3lzdGVtUmVxdWVzdHM6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIGZvciAodmFyIGZpbGVzeXN0ZW1QYXRoIGluIHRoaXMuX3BlbmRpbmdGaWxlc3lz
dGVtUmVxdWVzdHMpIHsKKyAgICAgICAgICAgIHZhciBjYWxsYmFja3MgPSB0aGlzLl9wZW5kaW5n
RmlsZXN5c3RlbVJlcXVlc3RzW2ZpbGVzeXN0ZW1QYXRoXTsKKyAgICAgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgY2FsbGJhY2tzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgIGNhbGxi
YWNrc1tpXSh0aGlzLl9pc29sYXRlZEZpbGVzeXN0ZW0oZmlsZXN5c3RlbVBhdGgpKTsKKyAgICAg
ICAgfQorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXJyb3JNZXNz
YWdlCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlc3lzdGVtTW9kZWwu
RmlsZXN5c3RlbX0gZmlsZXN5c3RlbQorICAgICAqLworICAgIF9maWxlc3lzdGVtQWRkZWQ6IGZ1
bmN0aW9uKGVycm9yTWVzc2FnZSwgZmlsZXN5c3RlbSkKKyAgICB7CisgICAgICAgIGlmIChlcnJv
ck1lc3NhZ2UpIHsKKyAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIkVycm9yOiAiICsgZXJyb3JN
ZXNzYWdlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWZp
bGVzeXN0ZW0pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHZhciBmaWxlc3lzdGVtUGF0
aDsKKyAgICAgICAgaWYgKGZpbGVzeXN0ZW0pIHsKKyAgICAgICAgICAgIHRoaXMuX2lubmVyQWRk
RmlsZXN5c3RlbShmaWxlc3lzdGVtKTsKKyAgICAgICAgICAgIGZpbGVzeXN0ZW1QYXRoID0gZmls
ZXN5c3RlbS5maWxlc3lzdGVtUGF0aDsKKyAgICAgICAgfQorICAgICAgICBpZiAodGhpcy5fc2Vs
ZWN0RmlsZXN5c3RlbVBhdGhDYWxsYmFjaykgeworICAgICAgICAgICAgdGhpcy5fc2VsZWN0Rmls
ZXN5c3RlbVBhdGhDYWxsYmFjayhmaWxlc3lzdGVtUGF0aCk7CisgICAgICAgICAgICBkZWxldGUg
dGhpcy5fc2VsZWN0RmlsZXN5c3RlbVBhdGhDYWxsYmFjazsKKyAgICAgICAgfQorICAgIH0sCisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZXN5c3RlbVBhdGgKKyAgICAgKi8K
KyAgICBfZmlsZXN5c3RlbVJlbW92ZWQ6IGZ1bmN0aW9uKGZpbGVzeXN0ZW1QYXRoKQorICAgIHsK
KyAgICAgICAgZGVsZXRlIHRoaXMuX2ZpbGVzeXN0ZW1zW2ZpbGVzeXN0ZW1QYXRoXTsKKyAgICAg
ICAgdGhpcy5fZmlsZXN5c3RlbU1hcHBpbmcucmVtb3ZlRmlsZXN5c3RlbU1hcHBpbmcoZmlsZXN5
c3RlbVBhdGgpOworCisgICAgICAgIGlmICh0aGlzLl9yZW1vdmVGaWxlc3lzdGVtQ2FsbGJhY2sp
IHsKKyAgICAgICAgICAgIHRoaXMuX3JlbW92ZUZpbGVzeXN0ZW1DYWxsYmFjayhmaWxlc3lzdGVt
UGF0aCk7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fcmVtb3ZlRmlsZXN5c3RlbUNhbGxiYWNr
OworICAgICAgICB9CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBm
aWxlc3lzdGVtUGF0aAorICAgICAqIEByZXR1cm4ge0RPTUZpbGVTeXN0ZW19CisgICAgICovCisg
ICAgX2lzb2xhdGVkRmlsZXN5c3RlbTogZnVuY3Rpb24oZmlsZXN5c3RlbVBhdGgpCisgICAgewor
ICAgICAgICB2YXIgZmlsZXN5c3RlbSA9IHRoaXMuX2ZpbGVzeXN0ZW1zW2ZpbGVzeXN0ZW1QYXRo
XTsKKyAgICAgICAgaWYgKCFmaWxlc3lzdGVtKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7Cisg
ICAgICAgIGlmICghSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmlzb2xhdGVkRmlsZXN5c3RlbSkKKyAg
ICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yRnJvbnRlbmRI
b3N0Lmlzb2xhdGVkRmlsZXN5c3RlbShmaWxlc3lzdGVtLmZpbGVzeXN0ZW1JZCwgZmlsZXN5c3Rl
bS5yZWdpc3RlcmVkTmFtZSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3Ry
aW5nfSBmaWxlc3lzdGVtUGF0aAorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oRE9NRmlsZVN5c3Rl
bSl9IGNhbGxiYWNrCisgICAgICovCisgICAgcmVxdWVzdERPTUZpbGVTeXN0ZW06IGZ1bmN0aW9u
KGZpbGVzeXN0ZW1QYXRoLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fbG9h
ZGVkKSB7CisgICAgICAgICAgICBpZiAoIXRoaXMuX3BlbmRpbmdGaWxlc3lzdGVtUmVxdWVzdHNb
ZmlsZXN5c3RlbVBhdGhdKQorICAgICAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdGaWxlc3lzdGVt
UmVxdWVzdHNbZmlsZXN5c3RlbVBhdGhdID0gdGhpcy5fcGVuZGluZ0ZpbGVzeXN0ZW1SZXF1ZXN0
c1tmaWxlc3lzdGVtUGF0aF0gfHwgW107CisgICAgICAgICAgICB0aGlzLl9wZW5kaW5nRmlsZXN5
c3RlbVJlcXVlc3RzW2ZpbGVzeXN0ZW1QYXRoXS5wdXNoKGNhbGxiYWNrKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjYWxsYmFjayh0aGlzLl9pc29sYXRlZEZpbGVz
eXN0ZW0oZmlsZXN5c3RlbVBhdGgpKTsKKyAgICB9Cit9CisKKy8qKgorICogQHR5cGUgez9XZWJJ
bnNwZWN0b3IuSXNvbGF0ZWRGaWxlc3lzdGVtTW9kZWx9CisgKi8KK1dlYkluc3BlY3Rvci5pc29s
YXRlZEZpbGVzeXN0ZW1Nb2RlbCA9IG51bGw7CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBA
cGFyYW0ge1dlYkluc3BlY3Rvci5Jc29sYXRlZEZpbGVzeXN0ZW1Nb2RlbH0gaXNvbGF0ZWRGaWxl
c3lzdGVtTW9kZWwKKyAqLworV2ViSW5zcGVjdG9yLklzb2xhdGVkRmlsZXN5c3RlbU1hbmFnZXIg
PSBmdW5jdGlvbihpc29sYXRlZEZpbGVzeXN0ZW1Nb2RlbCkKK3sKKyAgICB0aGlzLl9pc29sYXRl
ZEZpbGVzeXN0ZW1Nb2RlbCA9IGlzb2xhdGVkRmlsZXN5c3RlbU1vZGVsOworfQorCitXZWJJbnNw
ZWN0b3IuSXNvbGF0ZWRGaWxlc3lzdGVtTWFuYWdlci5wcm90b3R5cGUgPSB7CisgICAgLyoqCisg
ICAgICogQHBhcmFtIHtBcnJheS48V2ViSW5zcGVjdG9yLklzb2xhdGVkRmlsZXN5c3RlbU1vZGVs
LkZpbGVzeXN0ZW0+fSBmaWxlc3lzdGVtcworICAgICAqLworICAgIGZpbGVzeXN0ZW1zTG9hZGVk
OiBmdW5jdGlvbihmaWxlc3lzdGVtcykKKyAgICB7CisgICAgICAgIHRoaXMuX2lzb2xhdGVkRmls
ZXN5c3RlbU1vZGVsLl9maWxlc3lzdGVtc0xvYWRlZChmaWxlc3lzdGVtcyk7CisgICAgfSwKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlc3lzdGVtUGF0aAorICAgICAqLwor
ICAgIGZpbGVzeXN0ZW1SZW1vdmVkOiBmdW5jdGlvbihmaWxlc3lzdGVtUGF0aCkKKyAgICB7Cisg
ICAgICAgIHRoaXMuX2lzb2xhdGVkRmlsZXN5c3RlbU1vZGVsLl9maWxlc3lzdGVtUmVtb3ZlZChm
aWxlc3lzdGVtUGF0aCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5n
fSBlcnJvck1lc3NhZ2UKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Jc29sYXRlZEZpbGVz
eXN0ZW1Nb2RlbC5GaWxlc3lzdGVtfSBmaWxlc3lzdGVtCisgICAgICovCisgICAgZmlsZXN5c3Rl
bUFkZGVkOiBmdW5jdGlvbihlcnJvck1lc3NhZ2UsIGZpbGVzeXN0ZW0pCisgICAgeworICAgICAg
ICB0aGlzLl9pc29sYXRlZEZpbGVzeXN0ZW1Nb2RlbC5fZmlsZXN5c3RlbUFkZGVkKGVycm9yTWVz
c2FnZSwgZmlsZXN5c3RlbSk7CisgICAgfQorfQorCisvKioKKyAqIEB0eXBlIHs/V2ViSW5zcGVj
dG9yLklzb2xhdGVkRmlsZXN5c3RlbU1hbmFnZXJ9CisgKi8KK1dlYkluc3BlY3Rvci5pc29sYXRl
ZEZpbGVzeXN0ZW1NYW5hZ2VyID0gbnVsbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvV2ViS2l0LnFyYwppbmRleCA1MjQwOTQ1ZGI2YzJjNmUwZTRiYmZjMDFmNjg5NDVj
NWMwMGMyNTgyLi4yYzA4YTZhMGU4NTk3NjhhMDdhYjM0NGEzYmNiODhmN2FkMTA2NTQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCkBAIC03NCw2
ICs3NCw3IEBACiAgICAgPGZpbGU+RXh0ZW5zaW9uVmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5G
aWxlQ29udGVudFZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+RmlsZU1hbmFnZXIuanM8L2ZpbGU+
CisgICAgPGZpbGU+RmlsZXN5c3RlbU1hcHBpbmcuanM8L2ZpbGU+CiAgICAgPGZpbGU+RmlsZVN5
c3RlbU1vZGVsLmpzPC9maWxlPgogICAgIDxmaWxlPkZpbGVTeXN0ZW1WaWV3LmpzPC9maWxlPgog
ICAgIDxmaWxlPkZpbGVVdGlscy5qczwvZmlsZT4KQEAgLTEwMCw2ICsxMDEsNyBAQAogICAgIDxm
aWxlPkluc3BlY3RvckZyb250ZW5kSG9zdFN0dWIuanM8L2ZpbGU+CiAgICAgPGZpbGU+SW5zcGVj
dG9yVmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5KU0hlYXBTbmFwc2hvdC5qczwvZmlsZT4KKyAg
ICA8ZmlsZT5Jc29sYXRlZEZpbGVzeXN0ZW1Nb2RlbC5qczwvZmlsZT4KICAgICA8ZmlsZT5KYXZh
U2NyaXB0Rm9ybWF0dGVyLmpzPC9maWxlPgogICAgIDxmaWxlPkphdmFTY3JpcHRTb3VyY2VGcmFt
ZS5qczwvZmlsZT4KICAgICA8ZmlsZT5qc2RpZmZsaWIuanM8L2ZpbGU+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2V4dGVybnMuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2V4dGVybnMuanMKaW5kZXggZjNiMDEwODljMGNjNTY1
NjJmMWRiZmUxNDZkZWRhZjk1ODM2YTI2ZC4uYTg1ZTNmNTdkYTZjMjM2ZjQyYjBhNmNiMmExZjM3
NTdjNDE3ZGI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9leHRlcm5zLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvZXh0
ZXJucy5qcwpAQCAtMTM4LDYgKzEzOCwxMiBAQCBET01BcHBsaWNhdGlvbkNhY2hlLnByb3RvdHlw
ZS5ET1dOTE9BRElORyA9IDM7CiBET01BcHBsaWNhdGlvbkNhY2hlLnByb3RvdHlwZS5VUERBVEVS
RUFEWSA9IDQ7CiBET01BcHBsaWNhdGlvbkNhY2hlLnByb3RvdHlwZS5PQlNPTEVURSA9IDU7CiAK
Ky8vIEZpbGUgU3lzdGVtIEFQSQorLyoqCisgKiBAY29uc3RydWN0b3IKKyAqLworZnVuY3Rpb24g
RE9NRmlsZVN5c3RlbSgpIHt9CisKIC8qKiBAdHlwZSB7Tm9kZX0gKi8KIFJhbmdlLnByb3RvdHlw
ZS5zdGFydENvbnRhaW5lcjsKIApAQCAtMTcxLDYgKzE3NywxMSBAQCBJbnNwZWN0b3JGcm9udGVu
ZEhvc3RBUEkucHJvdG90eXBlLnJlY29yZEFjdGlvblRha2VuID0gZnVuY3Rpb24oYWN0aW9uQ29k
ZSkge30KIEluc3BlY3RvckZyb250ZW5kSG9zdEFQSS5wcm90b3R5cGUucmVjb3JkUGFuZWxTaG93
biA9IGZ1bmN0aW9uKHBhbmVsQ29kZSkge30KIEluc3BlY3RvckZyb250ZW5kSG9zdEFQSS5wcm90
b3R5cGUucmVjb3JkU2V0dGluZ0NoYW5nZWQgPSBmdW5jdGlvbihzZXR0aW5nQ29kZSkge30KIElu
c3BlY3RvckZyb250ZW5kSG9zdEFQSS5wcm90b3R5cGUubG9hZFJlc291cmNlU3luY2hyb25vdXNs
eSA9IGZ1bmN0aW9uKHVybCkge30KK0luc3BlY3RvckZyb250ZW5kSG9zdEFQSS5wcm90b3R5cGUu
c3VwcG9ydHNGaWxlc3lzdGVtcyA9IGZ1bmN0aW9uKCkge30KK0luc3BlY3RvckZyb250ZW5kSG9z
dEFQSS5wcm90b3R5cGUucmVxdWVzdEZpbGVzeXN0ZW1zID0gZnVuY3Rpb24oKSB7fQorSW5zcGVj
dG9yRnJvbnRlbmRIb3N0QVBJLnByb3RvdHlwZS5hZGRGaWxlc3lzdGVtID0gZnVuY3Rpb24oKSB7
fQorSW5zcGVjdG9yRnJvbnRlbmRIb3N0QVBJLnByb3RvdHlwZS5yZW1vdmVGaWxlc3lzdGVtID0g
ZnVuY3Rpb24oZmlsZXN5c3RlbVBhdGgpIHt9CitJbnNwZWN0b3JGcm9udGVuZEhvc3RBUEkucHJv
dG90eXBlLmlzb2xhdGVkRmlsZXN5c3RlbSA9IGZ1bmN0aW9uKGZpbGVzeXN0ZW1JZCwgcmVnaXN0
ZXJlZE5hbWUpIHt9CiBJbnNwZWN0b3JGcm9udGVuZEhvc3RBUEkucHJvdG90eXBlLnNldFpvb21G
YWN0b3IgPSBmdW5jdGlvbih6b29tKSB7fQogSW5zcGVjdG9yRnJvbnRlbmRIb3N0QVBJLnByb3Rv
dHlwZS5jYW5JbnNwZWN0V29ya2VycyA9IGZ1bmN0aW9uKCkge30KIC8qKiBAdHlwZSB7SW5zcGVj
dG9yRnJvbnRlbmRIb3N0QVBJfSAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5kZXggYTNhZjU5ZmJmMjM2YTUwMjYxYjhiYzY1MTc4
ZWU0ZjExYzViNzk5Ny4uZjc4MDBjNzgwNmVjOWEzYjRjYzRmMzYwYWU3NmM5YmEzNzFkMTdhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
aHRtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5o
dG1sCkBAIC0xMzgsNiArMTM4LDggQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSJEZWJ1Z2dlclNjcmlwdE1hcHBpbmcuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlByZXNlbnRhdGlvbkNvbnNvbGVN
ZXNzYWdlSGVscGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSJOZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Iklzb2xhdGVkRmlsZXN5c3RlbU1vZGVs
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJG
aWxlc3lzdGVtTWFwcGluZy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiIHNyYz0iV29ya3NwYWNlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgc3JjPSJCcmVha3BvaW50TWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQ29udGVudFByb3ZpZGVycy5q
cyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmpzCmluZGV4IDJhMDkzYTdhZDI4NWY2YjJjOWQzYWY0ZGRkN2M0MTNlNWM5YzAxMDMu
LmI5ZjUwZjMxYTA3MDVhODNmMmIzYmVmYzQyYzJmNjQyMzRhM2EyZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC00MzAsNiArNDMw
LDkgQEAgV2ViSW5zcGVjdG9yLl9kb0xvYWRlZERvbmVXaXRoQ2FwYWJpbGl0aWVzID0gZnVuY3Rp
b24oKQogICAgIHRoaXMub3BlbkFuY2hvckxvY2F0aW9uUmVnaXN0cnkgPSBuZXcgV2ViSW5zcGVj
dG9yLkhhbmRsZXJSZWdpc3RyeShvcGVuQW5jaG9yTG9jYXRpb25TZXR0aW5nKTsKICAgICB0aGlz
Lm9wZW5BbmNob3JMb2NhdGlvblJlZ2lzdHJ5LnJlZ2lzdGVySGFuZGxlcihhdXRvc2VsZWN0UGFu
ZWwsIGZ1bmN0aW9uKCkgeyByZXR1cm4gZmFsc2U7IH0pOwogCisgICAgdGhpcy5pc29sYXRlZEZp
bGVzeXN0ZW1Nb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlc3lzdGVtTW9kZWwo
KTsKKyAgICB0aGlzLmlzb2xhdGVkRmlsZXN5c3RlbU1hbmFnZXIgPSBuZXcgV2ViSW5zcGVjdG9y
Lklzb2xhdGVkRmlsZXN5c3RlbU1hbmFnZXIodGhpcy5pc29sYXRlZEZpbGVzeXN0ZW1Nb2RlbCk7
CisKICAgICB0aGlzLndvcmtzcGFjZSA9IG5ldyBXZWJJbnNwZWN0b3IuV29ya3NwYWNlKCk7CiAg
ICAgdGhpcy5uZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLk5ldHdv
cmtXb3Jrc3BhY2VQcm92aWRlcigpOwogICAgIHRoaXMubmV0d29ya1Byb2plY3QgPSB0aGlzLndv
cmtzcGFjZS5hZGRQcm9qZWN0KCJuZXR3b3JrIiwgdGhpcy5uZXR3b3JrV29ya3NwYWNlUHJvdmlk
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2VG9v
bHNGcm9udGVuZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2
VG9vbHNGcm9udGVuZENsaWVudC5oCmluZGV4IDA0MzhjZDM1NTZkMTRiZDU0ZmZjNjhiOGYyOWJm
MGRlN2Q2ZWZmZjYuLmRhZDI5MjgyZmVmYjc0MjNiNWZiMDQ4MDgzOWE4ZGMxMWZiY2MzM2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldlRvb2xzRnJvbnRl
bmRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZUb29s
c0Zyb250ZW5kQ2xpZW50LmgKQEAgLTUzLDYgKzUzLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc2F2ZShjb25zdCBXZWJTdHJpbmcmIHVybCwgY29uc3QgV2ViU3RyaW5nJiBjb250ZW50
LCBib29sIHNhdmVBcykgeyB9CiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZChjb25zdCBXZWJTdHJp
bmcmIHVybCwgY29uc3QgV2ViU3RyaW5nJiBjb250ZW50KSB7IH0KIAorICAgIHZpcnR1YWwgdm9p
ZCByZXF1ZXN0RmlsZXN5c3RlbXMoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWRkRmlsZXN5c3Rl
bSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZW1vdmVGaWxlc3lzdGVtKGNvbnN0IFdlYlN0cmlu
ZyYgZmlsZXN5c3RlbVBhdGgpIHsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+V2ViRGV2
VG9vbHNGcm9udGVuZENsaWVudCgpIHt9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbC5jcHAKaW5kZXggZmNm
YTI1ZjljOTk3MDY1YTE1MTQyZWIzNjFkN2Y5MWM5YzVlOTE2My4uMjlhOTIxN2IxOTY1YTBhYWZl
MzRjMDYyMWQxOWE3YzRkMjNjY2FiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JGcm9udGVuZENsaWVudEltcGwuY3BwCkBAIC0xNTQsNCAr
MTU0LDI1IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRJbXBsOjpzZW5kTWVzc2FnZVRv
QmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgbV9jbGllbnQtPnNlbmRNZXNzYWdl
VG9CYWNrZW5kKG1lc3NhZ2UpOwogfQogCitib29sIEluc3BlY3RvckZyb250ZW5kQ2xpZW50SW1w
bDo6c3VwcG9ydHNGaWxlc3lzdGVtcygpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQg
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRJbXBsOjpyZXF1ZXN0RmlsZXN5c3RlbXMoKQoreworICAg
IG1fY2xpZW50LT5yZXF1ZXN0RmlsZXN5c3RlbXMoKTsKK30KKwordm9pZCBJbnNwZWN0b3JGcm9u
dGVuZENsaWVudEltcGw6OmFkZEZpbGVzeXN0ZW0oKQoreworICAgIG1fY2xpZW50LT5hZGRGaWxl
c3lzdGVtKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRJbXBsOjpyZW1vdmVG
aWxlc3lzdGVtKGNvbnN0IFN0cmluZyYgZmlsZXN5c3RlbVBhdGgpCit7CisgICAgbV9jbGllbnQt
PnJlbW92ZUZpbGVzeXN0ZW0oZmlsZXN5c3RlbVBhdGgpOworfQorCisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0
b3JGcm9udGVuZENsaWVudEltcGwuaAppbmRleCA3MmY4ZDY4YjZiMmQyYzAwZGJkOWIwNjI1MTBk
OTc4N2NmOTA2YzAwLi43NzQ2YWE1N2NlMjNjYjc3YTc2YTc4YmVkOWI1YzlhOWFlMzEwZTFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JGcm9udGVuZENs
aWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JGcm9u
dGVuZENsaWVudEltcGwuaApAQCAtNzUsNiArNzUsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBpbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFdURjo6U3RyaW5nJik7CiAKICAgICB2aXJ0
dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgV1RGOjpTdHJpbmcmKTsKKworICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZpbGVzeXN0ZW1zKCk7CisgICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RGaWxlc3lzdGVtcygpOworICAgIHZpcnR1YWwgdm9pZCBhZGRGaWxlc3lzdGVtKCk7Cisg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZUZpbGVzeXN0ZW0oY29uc3QgU3RyaW5nJiBmaWxlc3lzdGVt
UGF0aCk7CiBwcml2YXRlOgogICAgIFdlYkNvcmU6OlBhZ2UqIG1fZnJvbnRlbmRQYWdlOwogICAg
IFdlYkRldlRvb2xzRnJvbnRlbmRDbGllbnQqIG1fY2xpZW50Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180919</attachid>
            <date>2012-12-28 22:10:18 -0800</date>
            <delta_ts>2013-01-09 07:19:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105727-20121229100727.patch</filename>
            <type>text/plain</type>
            <size>37888</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGU1ZGUzY2FiNjI1YjJk
N2I5ZTk5OTkzN2NiN2JiOWYwZjY5YWVlNS4uZjZiMjQ0MTY2Y2VjMzMyNmM4YjZlMDIxNDliMmQz
NmY0YWQyMjczZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEyLTEyLTI4ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFN1cHBvcnQgaW5zcGVjdG9yIGZpbGUgc3lzdGVtIGFjY2VzcyB3aXRoIGlzb2xhdGVkIGZp
bGUgc3lzdGVtIHRocm91Z2ggSW5zcGVjdG9yRnJvbnRlbmRIb3N0LgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1NzI3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRmlsZSBzeXN0ZW0gYWNjZXNzIHRocm91
Z2ggaXNvbGF0ZWQgZmlsZSBzeXN0ZW0gaXMgaW1wbGVtZW50ZWQgaW4gaW5zcGVjdG9yLgorICAg
ICAgICBGaWxlIHN5c3RlbSBhY2Nlc3MgcmVxdWVzdHMgYXJlIHNlbnQgdGhyb3VnaCBJbnNwZWN0
b3JGcm9udGVuZEhvc3QuCisgICAgICAgIEludHJvZHVjZWQgSXNvbGF0ZWRGaWxlc3lzdGVtTW9k
ZWwgZW5jYXBzdWxhdGluZyBmaWxlIHN5c3RlbSBhY2Nlc3MgbG9naWMuIAorICAgICAgICBJbnRy
b2R1Y2VkIEZpbGVzeXN0ZW1NYXBwaW5nIHRoYXQgcHJvdmlkZXMgbWFwcGluZyBiZXR3ZWVuIHdv
cmtzcGFjZSB1cmlzIGFuZCBmaWxlIHN5c3RlbSBwYXRoZXMuCisgICAgICAgIERPTUZpbGVTeXN0
ZW0uY3JlYXRlSXNvbGF0ZWRGaWxlU3lzdGVtIG1vZGlmaWVkIHRvIGFjY2VwdCBvcHRpb25hbCBy
ZWdpc3RlcmVkTmFtZSBwYXJhbWV0ZXIuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZpbGVzeXN0ZW0v
RE9NRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtOjpjcmVh
dGVJc29sYXRlZEZpbGVTeXN0ZW0pOgorICAgICAgICAqIE1vZHVsZXMvZmlsZXN5c3RlbS9ET01G
aWxlU3lzdGVtLmg6CisgICAgICAgIChET01GaWxlU3lzdGVtKToKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50Lmg6CisgICAgICAgIChJbnNwZWN0
b3JGcm9udGVuZENsaWVudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWwuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWw6OnN1cHBvcnRzRmlsZXN5c3RlbXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbDo6cmVxdWVzdEZpbGVzeXN0ZW1zKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmFkZEZpbGVzeXN0ZW0pOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6cmVtb3ZlRmlsZXN5c3Rl
bSk6CisgICAgICAgIChJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckZyb250ZW5kSG9zdDo6c3VwcG9ydHNGaWxlc3lzdGVtcyk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kSG9zdDo6cmVxdWVzdEZp
bGVzeXN0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kSG9zdDo6YWRk
RmlsZXN5c3RlbSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnJl
bW92ZUZpbGVzeXN0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRIb3N0
Ojppc29sYXRlZEZpbGVzeXN0ZW0pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRl
bmRIb3N0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9GaWxlc3lzdGVtTWFwcGluZy5qczogQWRkZWQuCisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qczoKKyAgICAgICAgKElu
c3BlY3RvckZyb250ZW5kQVBJLmZpbGVzeXN0ZW1zTG9hZGVkKToKKyAgICAgICAgKEluc3BlY3Rv
ckZyb250ZW5kQVBJLmZpbGVzeXN0ZW1SZW1vdmVkKToKKyAgICAgICAgKEluc3BlY3RvckZyb250
ZW5kQVBJLmZpbGVzeXN0ZW1BZGRlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9J
bnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLmpzOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNw
ZWN0b3JGcm9udGVuZEhvc3RTdHViLnByb3RvdHlwZS5zdXBwb3J0c0ZpbGVzeXN0ZW1zKToKKyAg
ICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5wcm90b3R5cGUu
cmVxdWVzdEZpbGVzeXN0ZW1zKToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9yRnJv
bnRlbmRIb3N0U3R1Yi5wcm90b3R5cGUuYWRkRmlsZXN5c3RlbSk6CisgICAgICAgICguV2ViSW5z
cGVjdG9yLkluc3BlY3RvckZyb250ZW5kSG9zdFN0dWIucHJvdG90eXBlLnJlbW92ZUZpbGVzeXN0
ZW0pOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLnBy
b3RvdHlwZS5pc29sYXRlZEZpbGVzeXN0ZW0pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvSXNvbGF0ZWRGaWxlc3lzdGVtTW9kZWwuanM6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvV2ViS2l0LnFyYzoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2V4
dGVybnMuanM6CisgICAgICAgIChET01GaWxlU3lzdGVtKToKKyAgICAgICAgKEluc3BlY3RvckZy
b250ZW5kSG9zdEFQSS5wcm90b3R5cGUuc3VwcG9ydHNGaWxlc3lzdGVtcyk6CisgICAgICAgIChJ
bnNwZWN0b3JGcm9udGVuZEhvc3RBUEkucHJvdG90eXBlLnJlcXVlc3RGaWxlc3lzdGVtcyk6Cisg
ICAgICAgIChJbnNwZWN0b3JGcm9udGVuZEhvc3RBUEkucHJvdG90eXBlLmFkZEZpbGVzeXN0ZW0p
OgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRIb3N0QVBJLnByb3RvdHlwZS5yZW1vdmVGaWxl
c3lzdGVtKToKKyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kSG9zdEFQSS5wcm90b3R5cGUuaXNv
bGF0ZWRGaWxlc3lzdGVtKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgorCiAy
MDEyLTEyLTI4ICBObydhbSBSb3NlbnRoYWwgIDxub2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UkVHUkVTU0lPTjogcjEzODU1NSBhc3NlcnRzIG9uIExpbnV4IEVGTC9RdCBkZWJ1ZyBidWlsZHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOTU0MzU1YWM1ZjdmYzkxYmU3MGUzM2FiYzJh
YTk0N2MyMTAxNjM3Yy4uZTM1OGU4ZDFlMTZiODVmZjFhZWM0ZThhZWNkYTMzYzI5YTMxZGY3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMi0xMi0yOCAg
VnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBTdXBwb3J0IGluc3BlY3RvciBmaWxlIHN5c3RlbSBhY2Nlc3Mgd2l0aCBpc29sYXRl
ZCBmaWxlIHN5c3RlbSB0aHJvdWdoIEluc3BlY3RvckZyb250ZW5kSG9zdC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTcyNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpbGUgc3lzdGVtIGFjY2VzcyBt
ZXRob2RzIHBsdW1iaW5nIG1hZGUgZm9yIENocm9taXVtLgorCisgICAgICAgICogcHVibGljL1dl
YkRldlRvb2xzRnJvbnRlbmRDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNG
cm9udGVuZENsaWVudDo6cmVxdWVzdEZpbGVzeXN0ZW1zKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RGV2VG9vbHNGcm9udGVuZENsaWVudDo6YWRkRmlsZXN5c3RlbSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkRldlRvb2xzRnJvbnRlbmRDbGllbnQ6OnJlbW92ZUZpbGVzeXN0ZW0pOgorICAgICAgICAo
V2ViRGV2VG9vbHNGcm9udGVuZENsaWVudCk6CisgICAgICAgICogc3JjL0luc3BlY3RvckZyb250
ZW5kQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckZyb250ZW5kQ2xp
ZW50SW1wbDo6c3VwcG9ydHNGaWxlc3lzdGVtcyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViS2l0OjpJbnNwZWN0b3JGcm9udGVuZENsaWVudEltcGw6OnJlcXVlc3RGaWxlc3lzdGVt
cyk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbDo6YWRkRmls
ZXN5c3RlbSk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbDo6
cmVtb3ZlRmlsZXN5c3RlbSk6CisgICAgICAgICogc3JjL0luc3BlY3RvckZyb250ZW5kQ2xpZW50
SW1wbC5oOgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRJbXBsKToKKwogMjAxMi0x
Mi0yOCAgRmFkeSBTYW11ZWwgIDxmc2FtdWVsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSb2xs
IENocm9taXVtIERFUFMgdG8gcjE3NDczOQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uY3BwCmluZGV4IDRlOGVkNGI0MTkyNDZjMDI1MTkw
YmVhOWVhZWU3NzFhMGQxMTg1OTYuLjBhMWRiMTQwNTBlNTYzNmYyZGMyZTM0MzIzM2UyYzcyOTU5
ZTM4MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01G
aWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9N
RmlsZVN5c3RlbS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVt
PiBET01GaWxlU3lzdGVtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwK
ICAgICByZXR1cm4gZmlsZVN5c3RlbS5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8RE9NRmls
ZVN5c3RlbT4gRE9NRmlsZVN5c3RlbTo6Y3JlYXRlSXNvbGF0ZWRGaWxlU3lzdGVtKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgZmlsZXN5c3RlbUlkKQorUGFz
c1JlZlB0cjxET01GaWxlU3lzdGVtPiBET01GaWxlU3lzdGVtOjpjcmVhdGVJc29sYXRlZEZpbGVT
eXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBmaWxl
c3lzdGVtSWQsIGNvbnN0IFN0cmluZyYgcmVnaXN0ZXJlZE5hbWUpCiB7CiAgICAgaWYgKGZpbGVz
eXN0ZW1JZC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtODIsNiArODIsMTAgQEAg
UGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBET01GaWxlU3lzdGVtOjpjcmVhdGVJc29sYXRlZEZp
bGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW8KICAgICByb290VVJMLmFwcGVuZCgiLyIpOwogICAgIHJv
b3RVUkwuYXBwZW5kKGZpbGVzeXN0ZW1JZCk7CiAgICAgcm9vdFVSTC5hcHBlbmQoIi8iKTsKKyAg
ICBpZiAoIXJlZ2lzdGVyZWROYW1lLmlzRW1wdHkoKSkgeworICAgICAgICByb290VVJMLmFwcGVu
ZChyZWdpc3RlcmVkTmFtZSk7CisgICAgICAgIHJvb3RVUkwuYXBwZW5kKCIvIik7CisgICAgfQog
CiAgICAgcmV0dXJuIERPTUZpbGVTeXN0ZW06OmNyZWF0ZShjb250ZXh0LCBmaWxlc3lzdGVtTmFt
ZS50b1N0cmluZygpLCBGaWxlU3lzdGVtVHlwZUlzb2xhdGVkLCBLVVJMKFBhcnNlZFVSTFN0cmlu
Zywgcm9vdFVSTC50b1N0cmluZygpKSwgQXN5bmNGaWxlU3lzdGVtOjpjcmVhdGUoKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3Rl
bS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uaApp
bmRleCAzYjRlZTEwYzY4YTcxZTZiMDQ4YWMzYjAxNDY1ZGYxN2Y4N2MwOWUwLi41M2Y5YjJhZDgw
OTlkNjFmMWJlNzBhYmM5Mjc3ZGI5ZGFkMjkxMmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmgKQEAgLTQ5LDggKzQ5LDggQEAgY2xh
c3MgRE9NRmlsZVN5c3RlbSA6IHB1YmxpYyBET01GaWxlU3lzdGVtQmFzZSwgcHVibGljIEFjdGl2
ZURPTU9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3Rl
bT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIEZp
bGVTeXN0ZW1UeXBlLCBjb25zdCBLVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbT4pOwogCi0gICAgLy8gQ3JlYXRlcyBhIG5ldyBpc29sYXRlZCBmaWxlIHN5c3RlbSBmb3Ig
dGhlIGdpdmVuIGZpbGVzeXN0ZW1JZC4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01GaWxlU3lz
dGVtPiBjcmVhdGVJc29sYXRlZEZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IFN0cmluZyYgZmlsZXN5c3RlbUlkKTsKKyAgICAvLyBDcmVhdGVzIGEgbmV3IGlzb2xhdGVk
IGZpbGUgc3lzdGVtIGZvciB0aGUgZ2l2ZW4gZmlsZXN5c3RlbUlkIGFuZCBvcHRpb25hbCByZWdp
c3RlcmVkTmFtZS4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBjcmVhdGVJ
c29sYXRlZEZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYg
ZmlsZXN5c3RlbUlkLCBjb25zdCBTdHJpbmcmIHJlZ2lzdGVyZWROYW1lID0gU3RyaW5nKCkpOwog
CiAgICAgUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeT4gcm9vdCgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
aW5kZXggNzM5YmMwYmM5NDJiZWI0NmI0OGQ4NmQ5ZjFhMjAwMzdkZWE5M2Y1NS4uODdhZjlmZjc3
NDYyNTBiYzczM2EzNGYwMTE1Mjc3ODdhODFlZWNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNTEy
Myw2ICs1MTIzLDcgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lv
blNlcnZlci5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25W
aWV3LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVNYW5hZ2VyLmpz
JywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVzeXN0ZW1NYXBwaW5nLmpz
JywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcycs
CiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlVXRpbHMuanMnLAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRm9udFZpZXcuanMnLApAQCAtNTEzOCw2ICs1MTM5
LDcgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckZyb250ZW5k
SG9zdFN0dWIuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9y
Vmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMn
LAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSXNvbGF0ZWRGaWxlc3lzdGVtTW9k
ZWwuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNjcmlwdEZvcm1h
dHRlci5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9qc2RpZmZsaWIuanMn
LAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvS2V5Ym9hcmRTaG9ydGN1dC5qcycs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGMx
NjMwOGRiYjdmM2NhMzI0MzgyNWRmNDliNDQxZDcxYzBkNTE2NGEuLmJkM2QyMmQ3MjFhN2QyYjNm
YjljMjQxOGRjMDcxODM4NWI2N2NkOGIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCkBAIC03NjU4NSw2ICs3NjU4NSwxMCBAQAogCQkJCQk+CiAJCQkJ
PC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250
LWVuZFxGaWxlc3lzdGVtTWFwcGluZy5qcyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8Rmls
ZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcRmlsZVN5c3RlbU1v
ZGVsLmpzIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtNzY3MjEsNiArNzY3MjUsMTAgQEAKIAkJ
CQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3Bl
Y3Rvclxmcm9udC1lbmRcSXNvbGF0ZWRGaWxlc3lzdGVtTW9kZWwuanMiCisJCQkJCT4KKwkJCQk8
L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQt
ZW5kXGNtXGphdmFzY3JpcHQuanMiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCmluZGV4IGY3ZmQ4
NWM4MTZmZGZjMWU4OWU3NWEzMTRiNmU5MjY4YzcwMGMxMjcuLmVmNzBmZjc1ZGU5MWNlOGEzODFk
MDBlNTEyYjNhYTFmY2I1OTg2NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCkBAIC03MSw2ICs3MSwxMSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJikgPSAwOwog
CiAgICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYpID0g
MDsKKworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZpbGVzeXN0ZW1zKCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCByZXF1ZXN0RmlsZXN5c3RlbXMoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFk
ZEZpbGVzeXN0ZW0oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUZpbGVzeXN0ZW0oY29u
c3QgU3RyaW5nJiBmaWxlc3lzdGVtUGF0aCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsLmgKaW5kZXggN2Y5ZjAyMzRlMzk3OTk5OWE3YzgyNDk4MTAyNWUyYzc2
N2Y2OTI2OC4uMWIzZjkyMTFlMzMyNDVjY2Y1ZjMxNTAzOTcwOWVhNjg3OWI0ZDljYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbC5oCkBAIC03Niw2ICs3NiwxMSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQg
c2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKIAorICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c0ZpbGVzeXN0ZW1zKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdEZpbGVzeXN0ZW1zKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGFkZEZp
bGVzeXN0ZW0oKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRmlsZXN5c3RlbShjb25zdCBT
dHJpbmcmKSB7IH0KKwogICAgIGJvb2wgY2FuQXR0YWNoV2luZG93KCk7CiAgICAgdm9pZCBzZXRE
b2NraW5nVW5hdmFpbGFibGUoYm9vbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKaW5kZXggMTliNzEyZDViNjc0M2YyYTRjOGI4
NTlhYTc1OWQ5YTJlYmM2M2IwMS4uNDEwZjc2Y2Y2YTRlMWIzOWRlN2FjNmVmOTdkNzYxOTAxMGZm
NjhlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kSG9zdC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJDb250ZXh0TWVudUl0ZW0u
aCIKICNpbmNsdWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJDb250ZXh0
TWVudVByb3ZpZGVyLmgiCisjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkVs
ZW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCkBA
IC0yOTQsNiArMjk1LDM5IEBAIFN0cmluZyBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OmxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgcmV0dXJuIFN0cmluZyhk
YXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQogCitib29sIEluc3BlY3RvckZyb250ZW5kSG9z
dDo6c3VwcG9ydHNGaWxlc3lzdGVtcygpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBy
ZXR1cm4gbV9jbGllbnQtPnN1cHBvcnRzRmlsZXN5c3RlbXMoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpyZXF1ZXN0RmlsZXN5c3RlbXMoKQor
eworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnJlcXVlc3RGaWxlc3lzdGVt
cygpOworfQorCit2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6YWRkRmlsZXN5c3RlbSgpCit7
CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+YWRkRmlsZXN5c3RlbSgpOwor
fQorCit2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6cmVtb3ZlRmlsZXN5c3RlbShjb25zdCBT
dHJpbmcmIGZpbGVzeXN0ZW1QYXRoKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9j
bGllbnQtPnJlbW92ZUZpbGVzeXN0ZW0oZmlsZXN5c3RlbVBhdGgpOworfQorCisjaWYgRU5BQkxF
KEZJTEVfU1lTVEVNKQorUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBJbnNwZWN0b3JGcm9udGVu
ZEhvc3Q6Omlzb2xhdGVkRmlsZXN5c3RlbShjb25zdCBTdHJpbmcmIGZpbGVzeXN0ZW1JZCwgY29u
c3QgU3RyaW5nJiByZWdpc3RlcmVkTmFtZSkKK3sKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0ID0gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpOworICAg
IHJldHVybiBET01GaWxlU3lzdGVtOjpjcmVhdGVJc29sYXRlZEZpbGVTeXN0ZW0oY29udGV4dCwg
ZmlsZXN5c3RlbUlkLCByZWdpc3RlcmVkTmFtZSk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaAppbmRleCBlYTZkMTAxOTgz
ZDk5OTk3ZDQyYTcwOTI5OWY2MjJmZWRjOTgzNTAxLi5hMmI3NjFjNWUwN2UxNDFhYWY5MWUyNjRh
ODUyZjg0NWNkN2RjZTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kSG9zdC5oCkBAIC0zOSw2ICszOSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENvbnRleHRNZW51SXRlbTsKK2NsYXNzIERPTUZpbGVTeXN0ZW07CiBjbGFzcyBF
dmVudDsKIGNsYXNzIEZyb250ZW5kTWVudVByb3ZpZGVyOwogY2xhc3MgSW5zcGVjdG9yQ2xpZW50
OwpAQCAtODUsNiArODYsMTQgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkoY29uc3QgU3RyaW5nJiB1cmwpOwogCisgICAgYm9vbCBzdXBwb3J0c0ZpbGVz
eXN0ZW1zKCk7CisgICAgdm9pZCByZXF1ZXN0RmlsZXN5c3RlbXMoKTsKKyAgICB2b2lkIGFkZEZp
bGVzeXN0ZW0oKTsKKyAgICB2b2lkIHJlbW92ZUZpbGVzeXN0ZW0oY29uc3QgU3RyaW5nJiBmaWxl
c3lzdGVtUGF0aCk7CisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQorICAgIFBhc3NSZWZQdHI8RE9N
RmlsZVN5c3RlbT4gaXNvbGF0ZWRGaWxlc3lzdGVtKGNvbnN0IFN0cmluZyYgZmlsZXN5c3RlbUlk
LCBjb25zdCBTdHJpbmcmIHJlZ2lzdGVyZWROYW1lKTsKKyNlbmRpZgorCiBwcml2YXRlOgogI2lm
IEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIGZyaWVuZCBjbGFzcyBGcm9udGVuZE1lbnVQcm92
aWRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
SG9zdC5pZGwKaW5kZXggNzI4YWEwYzBlNGIwZjkwMTMyNDY3M2ExMDA1ZDE4YzZlOTk3M2QxYi4u
NDQ4ZTQzMjdlNWM2NTM3YzU4NmNkYzdhOGZhYmQ3Njg5NzZhOWM3YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwKQEAgLTY2LDQg
KzY2LDEwIEBACiAgICAgW0N1c3RvbV0gdm9pZCByZWNvcmRTZXR0aW5nQ2hhbmdlZChpbiB1bnNp
Z25lZCBsb25nIHNldHRpbmdDaGFuZ2VkKTsKICAgICAKICAgICBET01TdHJpbmcgbG9hZFJlc291
cmNlU3luY2hyb25vdXNseShpbiBET01TdHJpbmcgdXJsKTsKKworICAgIGJvb2xlYW4gc3VwcG9y
dHNGaWxlc3lzdGVtcygpOworICAgIHZvaWQgcmVxdWVzdEZpbGVzeXN0ZW1zKCk7CisgICAgdm9p
ZCBhZGRGaWxlc3lzdGVtKCk7CisgICAgdm9pZCByZW1vdmVGaWxlc3lzdGVtKGluIERPTVN0cmlu
ZyBmaWxlc3lzdGVtUGF0aCk7CisgICAgW0NvbmRpdGlvbmFsPUZJTEVfU1lTVEVNXSBET01GaWxl
U3lzdGVtIGlzb2xhdGVkRmlsZXN5c3RlbShpbiBET01TdHJpbmcgZmlsZXN5c3RlbUlkLCBpbiBE
T01TdHJpbmcgcmVnaXN0ZXJlZE5hbWUpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weSBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9jb21waWxlLWZyb250LWVuZC5weQppbmRleCA3YWIzZmE0MDZjODMyYTIwMGQ2OGE5M2M1ZTM0
ZWM5MGMwMTg3YzdmLi5iZjM3MmRkYzZjZTRlYzc5ZjYzMWE0ZGI0MGUzNjI0ZjQ2NGNmMGM5IDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CkBAIC03
NiwxMSArNzYsMTMgQEAgbW9kdWxlcyA9IFsKICAgICAgICAgICAgICJEZWJ1Z2dlck1vZGVsLmpz
IiwKICAgICAgICAgICAgICJEZWJ1Z2dlclNjcmlwdE1hcHBpbmcuanMiLAogICAgICAgICAgICAg
IkZpbGVNYW5hZ2VyLmpzIiwKKyAgICAgICAgICAgICJGaWxlc3lzdGVtTWFwcGluZy5qcyIsCiAg
ICAgICAgICAgICAiRmlsZVN5c3RlbU1vZGVsLmpzIiwKICAgICAgICAgICAgICJGaWxlVXRpbHMu
anMiLAogICAgICAgICAgICAgIkhBUkVudHJ5LmpzIiwKICAgICAgICAgICAgICJJbmRleGVkREJN
b2RlbC5qcyIsCiAgICAgICAgICAgICAiSW5zcGVjdG9yQmFja2VuZC5qcyIsCisgICAgICAgICAg
ICAiSXNvbGF0ZWRGaWxlc3lzdGVtTW9kZWwuanMiLAogICAgICAgICAgICAgIkxpbmtpZmllci5q
cyIsCiAgICAgICAgICAgICAiTmV0d29ya0xvZy5qcyIsCiAgICAgICAgICAgICAiTmV0d29ya1VJ
U291cmNlQ29kZVByb3ZpZGVyLmpzIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRmlsZXN5c3RlbU1hcHBpbmcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0ZpbGVzeXN0ZW1NYXBwaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhYzM1NDM2
MGExYjk3MjE3MzIzMzJhN2U1ODRjOTE5YTc0ZTU3NDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVzeXN0ZW1NYXBwaW5nLmpzCkBAIC0w
LDAgKzEsMTc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworLyoqCisgKiBAaW50ZXJmYWNlCisgKi8KK1dlYkluc3BlY3Rvci5GaWxlc3lz
dGVtTWFwcGluZyA9IGZ1bmN0aW9uKCkgeyB9CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKi8K
K1dlYkluc3BlY3Rvci5GaWxlc3lzdGVtTWFwcGluZy5GaWxlRGVzY3JpcHRvciA9IGZ1bmN0aW9u
KGZpbGVzeXN0ZW1QYXRoLCBmaWxlUGF0aCkKK3sKKyAgICB0aGlzLmZpbGVzeXN0ZW1QYXRoID0g
ZmlsZXN5c3RlbVBhdGg7CisgICAgdGhpcy5maWxlUGF0aCA9IGZpbGVQYXRoOworfQorCitXZWJJ
bnNwZWN0b3IuRmlsZXN5c3RlbU1hcHBpbmcucHJvdG90eXBlID0geworICAgIC8qKgorICAgICAq
IEByZXR1cm4ge0FycmF5LjxzdHJpbmc+fQorICAgICAqLworICAgIGZpbGVzeXN0ZW1QYXRoczog
ZnVuY3Rpb24oKSB7IH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJpCisg
ICAgICogQHJldHVybiB7P1dlYkluc3BlY3Rvci5GaWxlc3lzdGVtTWFwcGluZy5GaWxlRGVzY3Jp
cHRvcn0KKyAgICAgKi8KKyAgICBmaWxlRm9yVVJJOiBmdW5jdGlvbih1cmkpIHsgfSwKKworICAg
IC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVzeXN0ZW1NYXBwaW5nLkZpbGVE
ZXNjcmlwdG9yfSBmaWxlRGVzY3JpcHRvcgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAg
Ki8KKyAgICB1cmlGb3JGaWxlOiBmdW5jdGlvbihmaWxlRGVzY3JpcHRvcikgeyB9LAorCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGgKKyAgICAgKiBAcmV0dXJuIHs/c3RyaW5n
fQorICAgICAqLworICAgIHVyaUZvclBhdGg6IGZ1bmN0aW9uKHBhdGgpIHsgfQorfQorCisvKioK
KyAqIEBjb25zdHJ1Y3RvcgorICogQGltcGxlbWVudHMge1dlYkluc3BlY3Rvci5GaWxlc3lzdGVt
TWFwcGluZ30KKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuT2JqZWN0fQorICovCitXZWJJbnNw
ZWN0b3IuRmlsZXN5c3RlbU1hcHBpbmdJbXBsID0gZnVuY3Rpb24oKQoreworICAgIHRoaXMuX2Zp
bGVzeXN0ZW1NYXBwaW5nU2V0dGluZyA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5jcmVhdGVTZXR0
aW5nKCJmaWxlc3lzdGVtTWFwcGluZyIsIHt9KTsKKyAgICAvKiogQHR5cGUgeyFPYmplY3QuPHN0
cmluZywgc3RyaW5nPn0gKi8KKyAgICB0aGlzLl9tYXBwZWROYW1lcyA9IHRoaXMuX2ZpbGVzeXN0
ZW1NYXBwaW5nU2V0dGluZy5nZXQoKTsKK30KKworV2ViSW5zcGVjdG9yLkZpbGVzeXN0ZW1NYXBw
aW5nSW1wbC5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGZp
bGVzeXN0ZW1QYXRoCisgICAgICovCisgICAgYWRkRmlsZXN5c3RlbU1hcHBpbmc6IGZ1bmN0aW9u
KGZpbGVzeXN0ZW1QYXRoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX21hcHBlZE5hbWVzW2Zp
bGVzeXN0ZW1QYXRoXSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdmFyIHBhdGhTZWdt
ZW50cyA9IGZpbGVzeXN0ZW1QYXRoLnNwbGl0KCIvIik7CisgICAgICAgIHZhciBtYXBwZWROYW1l
ID0gcGF0aFNlZ21lbnRzW3BhdGhTZWdtZW50cy5sZW5ndGggLSAxXTsKKyAgICAgICAgdmFyIHVu
aXF1ZU1hcHBlZE5hbWUgPSB0aGlzLl91bmlxdWVNYXBwZWROYW1lKG1hcHBlZE5hbWUpOworICAg
ICAgICB0aGlzLl9tYXBwZWROYW1lc1tmaWxlc3lzdGVtUGF0aF0gPSBtYXBwZWROYW1lOworICAg
ICAgICB0aGlzLl9maWxlc3lzdGVtTWFwcGluZ1NldHRpbmcuc2V0KHRoaXMuX21hcHBlZE5hbWVz
KTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG1hcHBlZE5hbWUK
KyAgICAgKi8KKyAgICBfdW5pcXVlTWFwcGVkTmFtZTogZnVuY3Rpb24obWFwcGVkTmFtZSkKKyAg
ICB7CisgICAgICAgIHZhciB1bmlxdWVNYXBwZWROYW1lID0gbWFwcGVkTmFtZTsKKyAgICAgICAg
dmFyIGkgPSAxOworICAgICAgICB3aGlsZSAoT2JqZWN0LnZhbHVlcyh0aGlzLl9tYXBwZWROYW1l
cykuaW5kZXhPZih1bmlxdWVNYXBwZWROYW1lKSAhPT0gLTEpIHsKKyAgICAgICAgICAgIHVuaXF1
ZU1hcHBlZE5hbWUgPSBtYXBwZWROYW1lICsgIiAoIiArIGkgKyAiKSI7CisgICAgICAgICAgICAr
K2k7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHVuaXF1ZU1hcHBlZE5hbWU7CisgICAgfSwK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlc3lzdGVtUGF0aAorICAgICAq
LworICAgIHJlbW92ZUZpbGVzeXN0ZW1NYXBwaW5nOiBmdW5jdGlvbihmaWxlc3lzdGVtUGF0aCkK
KyAgICB7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9tYXBwZWROYW1lc1tmaWxlc3lzdGVtUGF0aF07
CisgICAgICAgIHRoaXMuX2ZpbGVzeXN0ZW1NYXBwaW5nU2V0dGluZy5zZXQodGhpcy5fbWFwcGVk
TmFtZXMpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtBcnJheS48c3RyaW5n
Pn0KKyAgICAgKi8KKyAgICBmaWxlc3lzdGVtUGF0aHM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLl9tYXBwZWROYW1lcyk7CisgICAgfSwKKworICAg
IC8qKgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICBfdXJpUHJlZml4Rm9y
TWFwcGVkTmFtZTogZnVuY3Rpb24obWFwcGVkTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiAi
ZmlsZTovLy8iICsgbWFwcGVkTmFtZSArICIvIjsKKyAgICB9LAorCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtzdHJpbmd9IHVyaQorICAgICAqIEByZXR1cm4gez9XZWJJbnNwZWN0b3IuRmlsZXN5
c3RlbU1hcHBpbmcuRmlsZURlc2NyaXB0b3J9CisgICAgICovCisgICAgZmlsZUZvclVSSTogZnVu
Y3Rpb24odXJpKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgZmlsZXN5c3RlbVBhdGggaW4gdGhp
cy5fbWFwcGVkTmFtZXMpIHsKKyAgICAgICAgICAgIHZhciB1cmlQcmVmaXggPSB0aGlzLl91cmlQ
cmVmaXhGb3JNYXBwZWROYW1lKHRoaXMuX21hcHBlZE5hbWVzW2ZpbGVzeXN0ZW1QYXRoXSk7Cisg
ICAgICAgICAgICBpZiAodXJpLmluZGV4T2YodXJpUHJlZml4KSA9PT0gMCkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5GaWxlc3lzdGVtTWFwcGluZy5GaWxlRGVzY3Jp
cHRvcihmaWxlc3lzdGVtUGF0aCwgIi8iICsgdXJpLnN1YnN0cmluZyh1cmlQcmVmaXgubGVuZ3Ro
KSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfSwKKworICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVzeXN0ZW1NYXBwaW5nLkZpbGVEZXNjcmlw
dG9yfSBmaWxlRGVzY3JpcHRvcgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAg
ICB1cmlGb3JGaWxlOiBmdW5jdGlvbihmaWxlRGVzY3JpcHRvcikKKyAgICB7CisgICAgICAgIHZh
ciB1cmlQcmVmaXggPSB0aGlzLl91cmlQcmVmaXhGb3JNYXBwZWROYW1lKHRoaXMuX21hcHBlZE5h
bWVzW2ZpbGVEZXNjcmlwdG9yLmZpbGVzeXN0ZW1QYXRoXSk7CisgICAgICAgIHJldHVybiB1cmlQ
cmVmaXggKyBmaWxlRGVzY3JpcHRvci5maWxlUGF0aC5zdWJzdHJpbmcoIi8iLmxlbmd0aCk7Cisg
ICAgfSwKKyAgICAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aAorICAgICAq
IEByZXR1cm4gez9zdHJpbmd9CisgICAgICovCisgICAgdXJpRm9yUGF0aDogZnVuY3Rpb24ocGF0
aCkKKyAgICB7CisgICAgICAgIGZvciAodmFyIGZpbGVzeXN0ZW1QYXRoIGluIHRoaXMuX21hcHBl
ZE5hbWVzKSB7CisgICAgICAgICAgICBpZiAocGF0aC5pbmRleE9mKGZpbGVzeXN0ZW1QYXRoKSA9
PT0gMCkgeworICAgICAgICAgICAgICAgIHZhciB1cmlQcmVmaXggPSB0aGlzLl91cmlQcmVmaXhG
b3JNYXBwZWROYW1lKHRoaXMuX21hcHBlZE5hbWVzW2ZpbGVzeXN0ZW1QYXRoXSk7CisgICAgICAg
ICAgICAgICAgdmFyIHN1YlBhdGggPSBwYXRoLnN1YnN0cmluZyhmaWxlc3lzdGVtUGF0aC5sZW5n
dGgpOworICAgICAgICAgICAgICAgIGlmIChzdWJQYXRoLmxlbmd0aCA9PT0gMCkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHVyaVByZWZpeDsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChz
dWJQYXRoWzBdID09PSAiLyIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB1cmlQcmVmaXgg
KyBzdWJQYXRoLnN1YnN0cmluZygiLyIubGVuZ3RoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckZyb250ZW5kQVBJLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcwppbmRl
eCA5MDBhMTdiNjUyMmM2M2M1YjI0ODAwMGMzZDZmNjJlZTEwZWRiYTllLi5iNGE3YjcxNjYwY2Yw
Mzk3YTYzZjAzNWJlODFkM2FiMDFhZWE3OTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckZyb250ZW5kQVBJLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKQEAgLTEx
MCw2ICsxMTAsMjEgQEAgdmFyIEluc3BlY3RvckZyb250ZW5kQVBJID0gewogICAgICAgICBXZWJJ
bnNwZWN0b3IudG9nZ2xlU2VhcmNoaW5nRm9yTm9kZSgpOwogICAgIH0sCiAKKyAgICBmaWxlc3lz
dGVtc0xvYWRlZDogZnVuY3Rpb24oZmlsZXN5c3RlbXMpCisgICAgeworICAgICAgICBXZWJJbnNw
ZWN0b3IuaXNvbGF0ZWRGaWxlc3lzdGVtTWFuYWdlci5maWxlc3lzdGVtc0xvYWRlZChmaWxlc3lz
dGVtcyk7CisgICAgfSwKKworICAgIGZpbGVzeXN0ZW1SZW1vdmVkOiBmdW5jdGlvbihmaWxlc3lz
dGVtUGF0aCkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5pc29sYXRlZEZpbGVzeXN0ZW1N
YW5hZ2VyLmZpbGVzeXN0ZW1SZW1vdmVkKGZpbGVzeXN0ZW1QYXRoKTsKKyAgICB9LAorCisgICAg
ZmlsZXN5c3RlbUFkZGVkOiBmdW5jdGlvbihlcnJvck1lc3NhZ2UsIGZpbGVzeXN0ZW0pCisgICAg
eworICAgICAgICBXZWJJbnNwZWN0b3IuaXNvbGF0ZWRGaWxlc3lzdGVtTWFuYWdlci5maWxlc3lz
dGVtQWRkZWQoZXJyb3JNZXNzYWdlLCBmaWxlc3lzdGVtKTsKKyAgICB9LAorCiAgICAgc2F2ZWRV
Ukw6IGZ1bmN0aW9uKHVybCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5maWxlTWFuYWdl
ci5zYXZlZFVSTCh1cmwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLmpzCmluZGV4IGM2MTZj
MWQxOWQzMmNkYzlhMTMwZWVhYWExNDc1Zjc3ZTI1MWMyMjUuLjk4OTYxYTVjMjhlNDgyMzg1ZTUx
YmQ3ODI3YjBmMDVmMGU0Njg3ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckZyb250ZW5kSG9zdFN0dWIuanMKQEAg
LTE5NSw2ICsxOTUsMjggQEAgV2ViSW5zcGVjdG9yLkluc3BlY3RvckZyb250ZW5kSG9zdFN0dWIu
cHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gbG9hZFhIUih1cmwpOwogICAgIH0sCiAKKyAg
ICBzdXBwb3J0c0ZpbGVzeXN0ZW1zOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfSwKKworICAgIHJlcXVlc3RGaWxlc3lzdGVtczogZnVuY3Rpb24oKQorICAg
IHsKKyAgICB9LAorCisgICAgYWRkRmlsZXN5c3RlbTogZnVuY3Rpb24oKQorICAgIHsKKyAgICB9
LAorCisgICAgcmVtb3ZlRmlsZXN5c3RlbTogZnVuY3Rpb24oZmlsZXN5c3RlbVBhdGgpCisgICAg
eworICAgIH0sCisKKyAgICBpc29sYXRlZEZpbGVzeXN0ZW06IGZ1bmN0aW9uKGZpbGVzeXN0ZW1J
ZCwgcmVnaXN0ZXJlZE5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9LAor
CiAgICAgc2V0Wm9vbUZhY3RvcjogZnVuY3Rpb24oem9vbSkKICAgICB7CiAgICAgfSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSXNvbGF0ZWRGaWxlc3lz
dGVtTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0lzb2xhdGVk
RmlsZXN5c3RlbU1vZGVsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2OTMyNWVhOTZmN2UyNTk3ODY4NjFiODY2
NGIxOWNjMDI0ZTU0ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0lzb2xhdGVkRmlsZXN5c3RlbU1vZGVsLmpzCkBAIC0wLDAgKzEsMjM4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
LyoqCisgKiBAY29uc3RydWN0b3IKKyAqLworV2ViSW5zcGVjdG9yLklzb2xhdGVkRmlsZXN5c3Rl
bU1vZGVsID0gZnVuY3Rpb24oKQoreworICAgIC8qKiBAdHlwZSB7IU9iamVjdC48c3RyaW5nLCBX
ZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlc3lzdGVtTW9kZWwuRmlsZXN5c3RlbT59ICovCisgICAg
dGhpcy5fZmlsZXN5c3RlbXMgPSB7fTsKKyAgICAvKiogQHR5cGUge09iamVjdC48c3RyaW5nLCBB
cnJheS48ZnVuY3Rpb24oRE9NRmlsZVN5c3RlbSk+Pn0gKi8KKyAgICB0aGlzLl9wZW5kaW5nRmls
ZXN5c3RlbVJlcXVlc3RzID0ge307CisgICAgdGhpcy5fZmlsZXN5c3RlbU1hcHBpbmcgPSBuZXcg
V2ViSW5zcGVjdG9yLkZpbGVzeXN0ZW1NYXBwaW5nSW1wbCgpOworCisgICAgaWYgKHRoaXMuc3Vw
cG9ydHNGaWxlc3lzdGVtcygpKQorICAgICAgICB0aGlzLl9yZXF1ZXN0RmlsZXN5c3RlbXMoKTsK
K30KKworLyoqIEB0eXBlZGVmIHt7ZmlsZXN5c3RlbUlkOiBzdHJpbmcsIHJlZ2lzdGVyZWROYW1l
OiBzdHJpbmcsIGZpbGVzeXN0ZW1QYXRoOiBzdHJpbmd9fSAqLworV2ViSW5zcGVjdG9yLklzb2xh
dGVkRmlsZXN5c3RlbU1vZGVsLkZpbGVzeXN0ZW07CisKK1dlYkluc3BlY3Rvci5Jc29sYXRlZEZp
bGVzeXN0ZW1Nb2RlbC5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHJldHVybiB7V2Vi
SW5zcGVjdG9yLkZpbGVzeXN0ZW1NYXBwaW5nfQorICAgICAqLworICAgIG1hcHBpbmc6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9maWxlc3lzdGVtTWFwcGluZzsKKyAg
ICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBz
dXBwb3J0c0ZpbGVzeXN0ZW1zOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LnN1cHBvcnRzRmlsZXN5c3RlbXMoKTsKKyAgICB9LAorCisgICAg
X3JlcXVlc3RGaWxlc3lzdGVtczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQoIXRoaXMuX2xvYWRlZCk7CisgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5yZXF1
ZXN0RmlsZXN5c3RlbXMoKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtmdW5j
dGlvbihzdHJpbmcpfSBjYWxsYmFjaworICAgICAqLworICAgIGFkZEZpbGVzeXN0ZW06IGZ1bmN0
aW9uKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdGhpcy5fc2VsZWN0RmlsZXN5c3RlbVBhdGhD
YWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QuYWRkRmls
ZXN5c3RlbSgpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCl9
IGNhbGxiYWNrCisgICAgICovCisgICAgcmVtb3ZlRmlsZXN5c3RlbTogZnVuY3Rpb24oZmlsZXN5
c3RlbVBhdGgsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVtb3ZlRmlsZXN5c3Rl
bUNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5yZW1v
dmVGaWxlc3lzdGVtKGZpbGVzeXN0ZW1QYXRoKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtBcnJheS48V2ViSW5zcGVjdG9yLklzb2xhdGVkRmlsZXN5c3RlbU1vZGVsLkZpbGVz
eXN0ZW0+fSBmaWxlc3lzdGVtcworICAgICAqLworICAgIF9maWxlc3lzdGVtc0xvYWRlZDogZnVu
Y3Rpb24oZmlsZXN5c3RlbXMpCisgICAgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZp
bGVzeXN0ZW1zLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGhpcy5faW5uZXJBZGRGaWxlc3lz
dGVtKGZpbGVzeXN0ZW1zW2ldKTsKKyAgICAgICAgdGhpcy5fbG9hZGVkID0gdHJ1ZTsKKyAgICAg
ICAgdGhpcy5fcHJvY2Vzc1BlbmRpbmdGaWxlc3lzdGVtUmVxdWVzdHMoKTsKKyAgICB9LAorCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlc3lzdGVtTW9k
ZWwuRmlsZXN5c3RlbX0gZmlsZXN5c3RlbQorICAgICAqLworICAgIF9pbm5lckFkZEZpbGVzeXN0
ZW06IGZ1bmN0aW9uKGZpbGVzeXN0ZW0pCisgICAgeworICAgICAgICB0aGlzLl9maWxlc3lzdGVt
TWFwcGluZy5hZGRGaWxlc3lzdGVtTWFwcGluZyhmaWxlc3lzdGVtLmZpbGVzeXN0ZW1QYXRoKTsK
KyAgICAgICAgdGhpcy5fZmlsZXN5c3RlbXNbZmlsZXN5c3RlbS5maWxlc3lzdGVtUGF0aF0gPSBm
aWxlc3lzdGVtOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtBcnJheS48c3Ry
aW5nPn0KKyAgICAgKi8KKyAgICBfZmlsZXN5c3RlbVBhdGhzOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5fZmlsZXN5c3RlbXMpOworICAgIH0sCisK
KyAgICBfcHJvY2Vzc1BlbmRpbmdGaWxlc3lzdGVtUmVxdWVzdHM6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIGZvciAodmFyIGZpbGVzeXN0ZW1QYXRoIGluIHRoaXMuX3BlbmRpbmdGaWxlc3lz
dGVtUmVxdWVzdHMpIHsKKyAgICAgICAgICAgIHZhciBjYWxsYmFja3MgPSB0aGlzLl9wZW5kaW5n
RmlsZXN5c3RlbVJlcXVlc3RzW2ZpbGVzeXN0ZW1QYXRoXTsKKyAgICAgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgY2FsbGJhY2tzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgIGNhbGxi
YWNrc1tpXSh0aGlzLl9pc29sYXRlZEZpbGVzeXN0ZW0oZmlsZXN5c3RlbVBhdGgpKTsKKyAgICAg
ICAgfQorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXJyb3JNZXNz
YWdlCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlc3lzdGVtTW9kZWwu
RmlsZXN5c3RlbX0gZmlsZXN5c3RlbQorICAgICAqLworICAgIF9maWxlc3lzdGVtQWRkZWQ6IGZ1
bmN0aW9uKGVycm9yTWVzc2FnZSwgZmlsZXN5c3RlbSkKKyAgICB7CisgICAgICAgIGlmIChlcnJv
ck1lc3NhZ2UpIHsKKyAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIkVycm9yOiAiICsgZXJyb3JN
ZXNzYWdlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWZp
bGVzeXN0ZW0pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHZhciBmaWxlc3lzdGVtUGF0
aDsKKyAgICAgICAgaWYgKGZpbGVzeXN0ZW0pIHsKKyAgICAgICAgICAgIHRoaXMuX2lubmVyQWRk
RmlsZXN5c3RlbShmaWxlc3lzdGVtKTsKKyAgICAgICAgICAgIGZpbGVzeXN0ZW1QYXRoID0gZmls
ZXN5c3RlbS5maWxlc3lzdGVtUGF0aDsKKyAgICAgICAgfQorICAgICAgICBpZiAodGhpcy5fc2Vs
ZWN0RmlsZXN5c3RlbVBhdGhDYWxsYmFjaykgeworICAgICAgICAgICAgdGhpcy5fc2VsZWN0Rmls
ZXN5c3RlbVBhdGhDYWxsYmFjayhmaWxlc3lzdGVtUGF0aCk7CisgICAgICAgICAgICBkZWxldGUg
dGhpcy5fc2VsZWN0RmlsZXN5c3RlbVBhdGhDYWxsYmFjazsKKyAgICAgICAgfQorICAgIH0sCisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZXN5c3RlbVBhdGgKKyAgICAgKi8K
KyAgICBfZmlsZXN5c3RlbVJlbW92ZWQ6IGZ1bmN0aW9uKGZpbGVzeXN0ZW1QYXRoKQorICAgIHsK
KyAgICAgICAgZGVsZXRlIHRoaXMuX2ZpbGVzeXN0ZW1zW2ZpbGVzeXN0ZW1QYXRoXTsKKyAgICAg
ICAgdGhpcy5fZmlsZXN5c3RlbU1hcHBpbmcucmVtb3ZlRmlsZXN5c3RlbU1hcHBpbmcoZmlsZXN5
c3RlbVBhdGgpOworCisgICAgICAgIGlmICh0aGlzLl9yZW1vdmVGaWxlc3lzdGVtQ2FsbGJhY2sp
IHsKKyAgICAgICAgICAgIHRoaXMuX3JlbW92ZUZpbGVzeXN0ZW1DYWxsYmFjayhmaWxlc3lzdGVt
UGF0aCk7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fcmVtb3ZlRmlsZXN5c3RlbUNhbGxiYWNr
OworICAgICAgICB9CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBm
aWxlc3lzdGVtUGF0aAorICAgICAqIEByZXR1cm4ge0RPTUZpbGVTeXN0ZW19CisgICAgICovCisg
ICAgX2lzb2xhdGVkRmlsZXN5c3RlbTogZnVuY3Rpb24oZmlsZXN5c3RlbVBhdGgpCisgICAgewor
ICAgICAgICB2YXIgZmlsZXN5c3RlbSA9IHRoaXMuX2ZpbGVzeXN0ZW1zW2ZpbGVzeXN0ZW1QYXRo
XTsKKyAgICAgICAgaWYgKCFmaWxlc3lzdGVtKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7Cisg
ICAgICAgIGlmICghSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmlzb2xhdGVkRmlsZXN5c3RlbSkKKyAg
ICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yRnJvbnRlbmRI
b3N0Lmlzb2xhdGVkRmlsZXN5c3RlbShmaWxlc3lzdGVtLmZpbGVzeXN0ZW1JZCwgZmlsZXN5c3Rl
bS5yZWdpc3RlcmVkTmFtZSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3Ry
aW5nfSBmaWxlc3lzdGVtUGF0aAorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oRE9NRmlsZVN5c3Rl
bSl9IGNhbGxiYWNrCisgICAgICovCisgICAgcmVxdWVzdERPTUZpbGVTeXN0ZW06IGZ1bmN0aW9u
KGZpbGVzeXN0ZW1QYXRoLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fbG9h
ZGVkKSB7CisgICAgICAgICAgICBpZiAoIXRoaXMuX3BlbmRpbmdGaWxlc3lzdGVtUmVxdWVzdHNb
ZmlsZXN5c3RlbVBhdGhdKQorICAgICAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdGaWxlc3lzdGVt
UmVxdWVzdHNbZmlsZXN5c3RlbVBhdGhdID0gdGhpcy5fcGVuZGluZ0ZpbGVzeXN0ZW1SZXF1ZXN0
c1tmaWxlc3lzdGVtUGF0aF0gfHwgW107CisgICAgICAgICAgICB0aGlzLl9wZW5kaW5nRmlsZXN5
c3RlbVJlcXVlc3RzW2ZpbGVzeXN0ZW1QYXRoXS5wdXNoKGNhbGxiYWNrKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjYWxsYmFjayh0aGlzLl9pc29sYXRlZEZpbGVz
eXN0ZW0oZmlsZXN5c3RlbVBhdGgpKTsKKyAgICB9Cit9CisKKy8qKgorICogQHR5cGUgez9XZWJJ
bnNwZWN0b3IuSXNvbGF0ZWRGaWxlc3lzdGVtTW9kZWx9CisgKi8KK1dlYkluc3BlY3Rvci5pc29s
YXRlZEZpbGVzeXN0ZW1Nb2RlbCA9IG51bGw7CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBA
cGFyYW0ge1dlYkluc3BlY3Rvci5Jc29sYXRlZEZpbGVzeXN0ZW1Nb2RlbH0gaXNvbGF0ZWRGaWxl
c3lzdGVtTW9kZWwKKyAqLworV2ViSW5zcGVjdG9yLklzb2xhdGVkRmlsZXN5c3RlbU1hbmFnZXIg
PSBmdW5jdGlvbihpc29sYXRlZEZpbGVzeXN0ZW1Nb2RlbCkKK3sKKyAgICB0aGlzLl9pc29sYXRl
ZEZpbGVzeXN0ZW1Nb2RlbCA9IGlzb2xhdGVkRmlsZXN5c3RlbU1vZGVsOworfQorCitXZWJJbnNw
ZWN0b3IuSXNvbGF0ZWRGaWxlc3lzdGVtTWFuYWdlci5wcm90b3R5cGUgPSB7CisgICAgLyoqCisg
ICAgICogQHBhcmFtIHtBcnJheS48V2ViSW5zcGVjdG9yLklzb2xhdGVkRmlsZXN5c3RlbU1vZGVs
LkZpbGVzeXN0ZW0+fSBmaWxlc3lzdGVtcworICAgICAqLworICAgIGZpbGVzeXN0ZW1zTG9hZGVk
OiBmdW5jdGlvbihmaWxlc3lzdGVtcykKKyAgICB7CisgICAgICAgIHRoaXMuX2lzb2xhdGVkRmls
ZXN5c3RlbU1vZGVsLl9maWxlc3lzdGVtc0xvYWRlZChmaWxlc3lzdGVtcyk7CisgICAgfSwKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlc3lzdGVtUGF0aAorICAgICAqLwor
ICAgIGZpbGVzeXN0ZW1SZW1vdmVkOiBmdW5jdGlvbihmaWxlc3lzdGVtUGF0aCkKKyAgICB7Cisg
ICAgICAgIHRoaXMuX2lzb2xhdGVkRmlsZXN5c3RlbU1vZGVsLl9maWxlc3lzdGVtUmVtb3ZlZChm
aWxlc3lzdGVtUGF0aCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5n
fSBlcnJvck1lc3NhZ2UKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Jc29sYXRlZEZpbGVz
eXN0ZW1Nb2RlbC5GaWxlc3lzdGVtfSBmaWxlc3lzdGVtCisgICAgICovCisgICAgZmlsZXN5c3Rl
bUFkZGVkOiBmdW5jdGlvbihlcnJvck1lc3NhZ2UsIGZpbGVzeXN0ZW0pCisgICAgeworICAgICAg
ICB0aGlzLl9pc29sYXRlZEZpbGVzeXN0ZW1Nb2RlbC5fZmlsZXN5c3RlbUFkZGVkKGVycm9yTWVz
c2FnZSwgZmlsZXN5c3RlbSk7CisgICAgfQorfQorCisvKioKKyAqIEB0eXBlIHs/V2ViSW5zcGVj
dG9yLklzb2xhdGVkRmlsZXN5c3RlbU1hbmFnZXJ9CisgKi8KK1dlYkluc3BlY3Rvci5pc29sYXRl
ZEZpbGVzeXN0ZW1NYW5hZ2VyID0gbnVsbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvV2ViS2l0LnFyYwppbmRleCA1MjQwOTQ1ZGI2YzJjNmUwZTRiYmZjMDFmNjg5NDVj
NWMwMGMyNTgyLi4yYzA4YTZhMGU4NTk3NjhhMDdhYjM0NGEzYmNiODhmN2FkMTA2NTQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCkBAIC03NCw2
ICs3NCw3IEBACiAgICAgPGZpbGU+RXh0ZW5zaW9uVmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5G
aWxlQ29udGVudFZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+RmlsZU1hbmFnZXIuanM8L2ZpbGU+
CisgICAgPGZpbGU+RmlsZXN5c3RlbU1hcHBpbmcuanM8L2ZpbGU+CiAgICAgPGZpbGU+RmlsZVN5
c3RlbU1vZGVsLmpzPC9maWxlPgogICAgIDxmaWxlPkZpbGVTeXN0ZW1WaWV3LmpzPC9maWxlPgog
ICAgIDxmaWxlPkZpbGVVdGlscy5qczwvZmlsZT4KQEAgLTEwMCw2ICsxMDEsNyBAQAogICAgIDxm
aWxlPkluc3BlY3RvckZyb250ZW5kSG9zdFN0dWIuanM8L2ZpbGU+CiAgICAgPGZpbGU+SW5zcGVj
dG9yVmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5KU0hlYXBTbmFwc2hvdC5qczwvZmlsZT4KKyAg
ICA8ZmlsZT5Jc29sYXRlZEZpbGVzeXN0ZW1Nb2RlbC5qczwvZmlsZT4KICAgICA8ZmlsZT5KYXZh
U2NyaXB0Rm9ybWF0dGVyLmpzPC9maWxlPgogICAgIDxmaWxlPkphdmFTY3JpcHRTb3VyY2VGcmFt
ZS5qczwvZmlsZT4KICAgICA8ZmlsZT5qc2RpZmZsaWIuanM8L2ZpbGU+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2V4dGVybnMuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2V4dGVybnMuanMKaW5kZXggMTNiODNmZTFkMDg2ZWRh
MDA0NWRlNzFkOGEwMjI2ZTJlMDZjMDQ1ZC4uMzY5YmQ1NjNkMzZiMDZiMTQ4YTdhOGU0MmJkZTM4
ZGRmNTdhYTE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9leHRlcm5zLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvZXh0
ZXJucy5qcwpAQCAtMTM4LDYgKzEzOCwxMiBAQCBET01BcHBsaWNhdGlvbkNhY2hlLnByb3RvdHlw
ZS5ET1dOTE9BRElORyA9IDM7CiBET01BcHBsaWNhdGlvbkNhY2hlLnByb3RvdHlwZS5VUERBVEVS
RUFEWSA9IDQ7CiBET01BcHBsaWNhdGlvbkNhY2hlLnByb3RvdHlwZS5PQlNPTEVURSA9IDU7CiAK
Ky8vIEZpbGUgU3lzdGVtIEFQSQorLyoqCisgKiBAY29uc3RydWN0b3IKKyAqLworZnVuY3Rpb24g
RE9NRmlsZVN5c3RlbSgpIHt9CisKIC8qKiBAdHlwZSB7Tm9kZX0gKi8KIFJhbmdlLnByb3RvdHlw
ZS5zdGFydENvbnRhaW5lcjsKIApAQCAtMTcxLDYgKzE3NywxMSBAQCBJbnNwZWN0b3JGcm9udGVu
ZEhvc3RBUEkucHJvdG90eXBlLnJlY29yZEFjdGlvblRha2VuID0gZnVuY3Rpb24oYWN0aW9uQ29k
ZSkge30KIEluc3BlY3RvckZyb250ZW5kSG9zdEFQSS5wcm90b3R5cGUucmVjb3JkUGFuZWxTaG93
biA9IGZ1bmN0aW9uKHBhbmVsQ29kZSkge30KIEluc3BlY3RvckZyb250ZW5kSG9zdEFQSS5wcm90
b3R5cGUucmVjb3JkU2V0dGluZ0NoYW5nZWQgPSBmdW5jdGlvbihzZXR0aW5nQ29kZSkge30KIElu
c3BlY3RvckZyb250ZW5kSG9zdEFQSS5wcm90b3R5cGUubG9hZFJlc291cmNlU3luY2hyb25vdXNs
eSA9IGZ1bmN0aW9uKHVybCkge30KK0luc3BlY3RvckZyb250ZW5kSG9zdEFQSS5wcm90b3R5cGUu
c3VwcG9ydHNGaWxlc3lzdGVtcyA9IGZ1bmN0aW9uKCkge30KK0luc3BlY3RvckZyb250ZW5kSG9z
dEFQSS5wcm90b3R5cGUucmVxdWVzdEZpbGVzeXN0ZW1zID0gZnVuY3Rpb24oKSB7fQorSW5zcGVj
dG9yRnJvbnRlbmRIb3N0QVBJLnByb3RvdHlwZS5hZGRGaWxlc3lzdGVtID0gZnVuY3Rpb24oKSB7
fQorSW5zcGVjdG9yRnJvbnRlbmRIb3N0QVBJLnByb3RvdHlwZS5yZW1vdmVGaWxlc3lzdGVtID0g
ZnVuY3Rpb24oZmlsZXN5c3RlbVBhdGgpIHt9CitJbnNwZWN0b3JGcm9udGVuZEhvc3RBUEkucHJv
dG90eXBlLmlzb2xhdGVkRmlsZXN5c3RlbSA9IGZ1bmN0aW9uKGZpbGVzeXN0ZW1JZCwgcmVnaXN0
ZXJlZE5hbWUpIHt9CiBJbnNwZWN0b3JGcm9udGVuZEhvc3RBUEkucHJvdG90eXBlLnNldFpvb21G
YWN0b3IgPSBmdW5jdGlvbih6b29tKSB7fQogSW5zcGVjdG9yRnJvbnRlbmRIb3N0QVBJLnByb3Rv
dHlwZS5jYW5JbnNwZWN0V29ya2VycyA9IGZ1bmN0aW9uKCkge30KIC8qKiBAdHlwZSB7SW5zcGVj
dG9yRnJvbnRlbmRIb3N0QVBJfSAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5kZXggYTNhZjU5ZmJmMjM2YTUwMjYxYjhiYzY1MTc4
ZWU0ZjExYzViNzk5Ny4uZjc4MDBjNzgwNmVjOWEzYjRjYzRmMzYwYWU3NmM5YmEzNzFkMTdhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
aHRtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5o
dG1sCkBAIC0xMzgsNiArMTM4LDggQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSJEZWJ1Z2dlclNjcmlwdE1hcHBpbmcuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlByZXNlbnRhdGlvbkNvbnNvbGVN
ZXNzYWdlSGVscGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSJOZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Iklzb2xhdGVkRmlsZXN5c3RlbU1vZGVs
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJG
aWxlc3lzdGVtTWFwcGluZy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiIHNyYz0iV29ya3NwYWNlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgc3JjPSJCcmVha3BvaW50TWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQ29udGVudFByb3ZpZGVycy5q
cyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmpzCmluZGV4IDg3NDZjYjU4ZGMyM2ZiYTBlMTM0ODQzOTRiYjdlMmNjOTMxM2ZlNDEu
LjMzZWU0OTBlNDAxZDdhMTc3MTVkYWQ5YTI4ZDIzN2YzYmYxNzc1ODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC00MzAsNiArNDMw
LDkgQEAgV2ViSW5zcGVjdG9yLl9kb0xvYWRlZERvbmVXaXRoQ2FwYWJpbGl0aWVzID0gZnVuY3Rp
b24oKQogICAgIHRoaXMub3BlbkFuY2hvckxvY2F0aW9uUmVnaXN0cnkgPSBuZXcgV2ViSW5zcGVj
dG9yLkhhbmRsZXJSZWdpc3RyeShvcGVuQW5jaG9yTG9jYXRpb25TZXR0aW5nKTsKICAgICB0aGlz
Lm9wZW5BbmNob3JMb2NhdGlvblJlZ2lzdHJ5LnJlZ2lzdGVySGFuZGxlcihhdXRvc2VsZWN0UGFu
ZWwsIGZ1bmN0aW9uKCkgeyByZXR1cm4gZmFsc2U7IH0pOwogCisgICAgdGhpcy5pc29sYXRlZEZp
bGVzeXN0ZW1Nb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuSXNvbGF0ZWRGaWxlc3lzdGVtTW9kZWwo
KTsKKyAgICB0aGlzLmlzb2xhdGVkRmlsZXN5c3RlbU1hbmFnZXIgPSBuZXcgV2ViSW5zcGVjdG9y
Lklzb2xhdGVkRmlsZXN5c3RlbU1hbmFnZXIodGhpcy5pc29sYXRlZEZpbGVzeXN0ZW1Nb2RlbCk7
CisKICAgICB0aGlzLm5ldHdvcmtXb3Jrc3BhY2VQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3Iu
TmV0d29ya1dvcmtzcGFjZVByb3ZpZGVyKCk7CiAgICAgdGhpcy53b3Jrc3BhY2UgPSBuZXcgV2Vi
SW5zcGVjdG9yLldvcmtzcGFjZSgpOwogICAgIHRoaXMuZGVidWdnZXJXb3Jrc3BhY2VQcm92aWRl
ciA9IG5ldyBXZWJJbnNwZWN0b3IuRGVidWdnZXJXb3Jrc3BhY2VQcm92aWRlcih0aGlzLndvcmtz
cGFjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZU
b29sc0Zyb250ZW5kQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJE
ZXZUb29sc0Zyb250ZW5kQ2xpZW50LmgKaW5kZXggMDQzOGNkMzU1NmQxNGJkNTRmZmM2OGI4ZjI5
YmYwZGU3ZDZlZmZmNi4uZGFkMjkyODJmZWZiNzQyM2I1ZmIwNDgwODM5YThkYzExZmJjYzMzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2VG9vbHNGcm9u
dGVuZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldlRv
b2xzRnJvbnRlbmRDbGllbnQuaApAQCAtNTMsNiArNTMsMTAgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBzYXZlKGNvbnN0IFdlYlN0cmluZyYgdXJsLCBjb25zdCBXZWJTdHJpbmcmIGNvbnRl
bnQsIGJvb2wgc2F2ZUFzKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kKGNvbnN0IFdlYlN0
cmluZyYgdXJsLCBjb25zdCBXZWJTdHJpbmcmIGNvbnRlbnQpIHsgfQogCisgICAgdmlydHVhbCB2
b2lkIHJlcXVlc3RGaWxlc3lzdGVtcygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhZGRGaWxlc3lz
dGVtKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUZpbGVzeXN0ZW0oY29uc3QgV2ViU3Ry
aW5nJiBmaWxlc3lzdGVtUGF0aCkgeyB9CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5XZWJE
ZXZUb29sc0Zyb250ZW5kQ2xpZW50KCkge30KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JGcm9udGVuZENsaWVudEltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRJbXBsLmNwcAppbmRleCBm
Y2ZhMjVmOWM5OTcwNjVhMTUxNDJlYjM2MWQ3ZjkxYzljNWU5MTYzLi4yOWE5MjE3YjE5NjVhMGFh
ZmUzNGMwNjIxZDE5YTdjNGQyM2NjYWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JbnNwZWN0b3JGcm9udGVuZENsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbC5jcHAKQEAgLTE1NCw0
ICsxNTQsMjUgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudEltcGw6OnNlbmRNZXNzYWdl
VG9CYWNrZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICBtX2NsaWVudC0+c2VuZE1lc3Nh
Z2VUb0JhY2tlbmQobWVzc2FnZSk7CiB9CiAKK2Jvb2wgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRJ
bXBsOjpzdXBwb3J0c0ZpbGVzeXN0ZW1zKCkKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9p
ZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudEltcGw6OnJlcXVlc3RGaWxlc3lzdGVtcygpCit7Cisg
ICAgbV9jbGllbnQtPnJlcXVlc3RGaWxlc3lzdGVtcygpOworfQorCit2b2lkIEluc3BlY3RvckZy
b250ZW5kQ2xpZW50SW1wbDo6YWRkRmlsZXN5c3RlbSgpCit7CisgICAgbV9jbGllbnQtPmFkZEZp
bGVzeXN0ZW0oKTsKK30KKwordm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudEltcGw6OnJlbW92
ZUZpbGVzeXN0ZW0oY29uc3QgU3RyaW5nJiBmaWxlc3lzdGVtUGF0aCkKK3sKKyAgICBtX2NsaWVu
dC0+cmVtb3ZlRmlsZXN5c3RlbShmaWxlc3lzdGVtUGF0aCk7Cit9CisKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0
b3JGcm9udGVuZENsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3Bl
Y3RvckZyb250ZW5kQ2xpZW50SW1wbC5oCmluZGV4IDcyZjhkNjhiNmIyZDJjMDBkYmQ5YjA2MjUx
MGQ5Nzg3Y2Y5MDZjMDAuLjc3NDZhYTU3Y2UyM2NiNzdhNzZhNzhiZWQ5YjVjOWE5YWUzMTBlMWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckZyb250ZW5k
Q2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckZy
b250ZW5kQ2xpZW50SW1wbC5oCkBAIC03NSw2ICs3NSwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgV1RGOjpTdHJpbmcmKTsKIAogICAgIHZp
cnR1YWwgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBXVEY6OlN0cmluZyYpOworCisg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzRmlsZXN5c3RlbXMoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVxdWVzdEZpbGVzeXN0ZW1zKCk7CisgICAgdmlydHVhbCB2b2lkIGFkZEZpbGVzeXN0ZW0oKTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRmlsZXN5c3RlbShjb25zdCBTdHJpbmcmIGZpbGVzeXN0
ZW1QYXRoKTsKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UGFnZSogbV9mcm9udGVuZFBhZ2U7CiAg
ICAgV2ViRGV2VG9vbHNGcm9udGVuZENsaWVudCogbV9jbGllbnQ7Cg==
</data>
<flag name="review"
          id="198344"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>