<?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>50898</bug_id>
          
          <creation_ts>2010-12-12 15:27:23 -0800</creation_ts>
          <short_desc>Change the WebKit2 public API so there is no explicit WKPageNamespace object</short_desc>
          <delta_ts>2010-12-13 14:38:47 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>mitz</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>320889</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-12-12 15:27:23 -0800</bug_when>
    <thetext>Lets get rid of WKPageNamespace and replace it with the ability to create a view that is forced into the same namespace as another page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320898</commentid>
    <comment_count>1</comment_count>
      <attachid>76339</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-12-12 16:24:42 -0800</bug_when>
    <thetext>Created attachment 76339
WIP (Do not review)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320901</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-12-12 16:33:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/8253496&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320903</commentid>
    <comment_count>3</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-12-12 16:41:24 -0800</bug_when>
    <thetext>Attachment 76339 did not build on qt:
Build output: http://queues.webkit.org/results/6984081</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320905</commentid>
    <comment_count>4</comment_count>
      <attachid>76341</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-12-12 17:03:45 -0800</bug_when>
    <thetext>Created attachment 76341
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320906</commentid>
    <comment_count>5</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-12-12 17:16:54 -0800</bug_when>
    <thetext>Attachment 76341 did not build on qt:
Build output: http://queues.webkit.org/results/7005066</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320907</commentid>
    <comment_count>6</comment_count>
      <attachid>76341</attachid>
    <who name="">mitz</who>
    <bug_when>2010-12-12 17:20:25 -0800</bug_when>
    <thetext>Comment on attachment 76341
Patch

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

&gt; WebKit2/ChangeLog:24
&gt; +        all callers of it will have their views end up in the same shared process, where
&gt; +        as with WKViewCreate, a new internal page namespace will be created and could

whereas?

&gt; WebKit2/ChangeLog:49
&gt; +        Add new initializers for the objective-c WKView. It follows the same

Objective-C

&gt; WebKit2/UIProcess/WebContext.cpp:238
&gt; +    if (m_sharedNamespace)
&gt; +        return m_sharedNamespace.get();
&gt; +
&gt; +    m_sharedNamespace = createPageNamespace();
&gt; +    return m_sharedNamespace.get();

A shorter way to write this is:
if (!m_sharedNamespace)
    m_sharedNamespace = createPageNamespace();

return m_sharedNamespace.get();

&gt; WebKit2/UIProcess/API/C/win/WKView.h:40
&gt; +WK_EXPORT WKViewRef WKViewCreateForAssociatedPage(RECT rect, WKPageRef page, WKPageGroupRef pageGroup, HWND parentWindow);

I think a WKPageRef-based create API is an unnecessary convenience. This one is also awkwardly named. Is calling this different from calling WKViewCreate() passing the context of the page? If so, and three different WKViewCreate…() functions are needed, I suggest merging them into one and adding an options parameter.

&gt; WebKit2/UIProcess/API/mac/WKView.h:44
&gt; -- (id)initWithFrame:(NSRect)frame pageNamespaceRef:(WKPageNamespaceRef)pageNamespaceRef;
&gt; -- (id)initWithFrame:(NSRect)frame pageNamespaceRef:(WKPageNamespaceRef)pageNamespaceRef pageGroupRef:(WKPageGroupRef)pageGroupRef;
&gt; +- (id)initWithFrame:(NSRect)frame contextRef:(WKContextRef)contextRef;
&gt; +- (id)initWithFrame:(NSRect)frame contextRef:(WKContextRef)contextRef pageGroupRef:(WKPageGroupRef)pageGroupRef;
&gt;  
&gt; -- (WKPageRef)pageRef;
&gt; +- (id)initWithFrame:(NSRect)frame contextRef:(WKContextRef)contextRef usingSharedProcess:(BOOL)usingSharedProcess;
&gt; +- (id)initWithFrame:(NSRect)frame contextRef:(WKContextRef)contextRef pageGroupRef:(WKPageGroupRef)pageGroupRef usingSharedProcess:(BOOL)usingSharedProcess;;
&gt;  
&gt; -- (void)setDrawsBackground:(BOOL)flag;
&gt; -- (BOOL)drawsBackground;
&gt; +- (id)initWithFrame:(NSRect)frame forAssociatedPageRef:(WKPageRef)pageRef;
&gt; +- (id)initWithFrame:(NSRect)frame forAssociatedPageRef:(WKPageRef)pageRef pageGroupRef:(WKPageGroupRef)pageGroupRef;
&gt;  

Similar comments about the Objective-C API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320908</commentid>
    <comment_count>7</comment_count>
      <attachid>76342</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-12-12 17:31:15 -0800</bug_when>
    <thetext>Created attachment 76342
Updated Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320910</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-12-12 17:38:57 -0800</bug_when>
    <thetext>
&gt; &gt; WebKit2/UIProcess/API/C/win/WKView.h:40
&gt; &gt; +WK_EXPORT WKViewRef WKViewCreateForAssociatedPage(RECT rect, WKPageRef page, WKPageGroupRef pageGroup, HWND parentWindow);
&gt; 
&gt; I think a WKPageRef-based create API is an unnecessary convenience. This one is also awkwardly named. Is calling this different from calling WKViewCreate() passing the context of the page? If so, and three different WKViewCreate…() functions are needed, I suggest merging them into one and adding an options parameter.

The associate page create function is not a convenience, it is the only way ensure that two views have their WebProcess counterparts in the same WebProcess.  It should be used in cases like one page calling window.open().  I am not sure how we can merge these into one function, can you explain what its signature would be?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320912</commentid>
    <comment_count>9</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-12-12 17:44:03 -0800</bug_when>
    <thetext>Attachment 76342 did not build on qt:
Build output: http://queues.webkit.org/results/6895068</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320913</commentid>
    <comment_count>10</comment_count>
    <who name="">mitz</who>
    <bug_when>2010-12-12 17:46:17 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; &gt; WebKit2/UIProcess/API/C/win/WKView.h:40
&gt; &gt; &gt; +WK_EXPORT WKViewRef WKViewCreateForAssociatedPage(RECT rect, WKPageRef page, WKPageGroupRef pageGroup, HWND parentWindow);
&gt; &gt; 
&gt; &gt; I think a WKPageRef-based create API is an unnecessary convenience. This one is also awkwardly named. Is calling this different from calling WKViewCreate() passing the context of the page? If so, and three different WKViewCreate…() functions are needed, I suggest merging them into one and adding an options parameter.
&gt; 
&gt; The associate page create function is not a convenience, it is the only way ensure that two views have their WebProcess counterparts in the same WebProcess.  It should be used in cases like one page calling window.open().  I am not sure how we can merge these into one function, can you explain what its signature would be?

I see now why a separate WKPageRef-based API is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321389</commentid>
    <comment_count>11</comment_count>
      <attachid>76342</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-12-13 14:02:14 -0800</bug_when>
    <thetext>Comment on attachment 76342
Updated Patch

r-, because Qt build is still broken. I&apos;m going to check what the problem is, and will help you to fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321395</commentid>
    <comment_count>12</comment_count>
      <attachid>76436</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-12-13 14:08:01 -0800</bug_when>
    <thetext>Created attachment 76436
Update Patch

Does the Qt bot stop after the first error?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321408</commentid>
    <comment_count>13</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-12-13 14:19:10 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Does the Qt bot stop after the first error?
Unfortunately yes.

But I started a clean build locally with your patch.
It will be finished ~6-8 min, and then I&apos;ll ping you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321425</commentid>
    <comment_count>14</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-12-13 14:29:33 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; Does the Qt bot stop after the first error?
&gt; Unfortunately yes.
&gt; 
&gt; But I started a clean build locally with your patch.
&gt; It will be finished ~6-8 min, and then I&apos;ll ping you.

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321429</commentid>
    <comment_count>15</comment_count>
      <attachid>76436</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-12-13 14:32:31 -0800</bug_when>
    <thetext>Comment on attachment 76436
Update Patch

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

&gt; WebKitTools/WebKitTestRunner/qt/PlatformWebViewQt.cpp:65
&gt; +PlatformWebView(WKContextRef, WKPageGroupRef);
&gt; +PlatformWebView(WKPageRef, WKPageGroupRef);
&gt; +

Please remove these useless lines, and Qt build will happy. ;)
rs+=me to land the previous patch with this Qt file change. (Of course r=Anders)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321438</commentid>
    <comment_count>16</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-12-13 14:38:47 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 76436 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=76436&amp;action=review
&gt; 
&gt; &gt; WebKitTools/WebKitTestRunner/qt/PlatformWebViewQt.cpp:65
&gt; &gt; +PlatformWebView(WKContextRef, WKPageGroupRef);
&gt; &gt; +PlatformWebView(WKPageRef, WKPageGroupRef);
&gt; &gt; +
&gt; 
&gt; Please remove these useless lines, and Qt build will happy. ;)
&gt; rs+=me to land the previous patch with this Qt file change. (Of course r=Anders)

Thanks, landed in r73965.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76339</attachid>
            <date>2010-12-12 16:24:42 -0800</date>
            <delta_ts>2010-12-12 17:03:45 -0800</delta_ts>
            <desc>WIP (Do not review)</desc>
            <filename>patchToTest.diff</filename>
            <type>text/plain</type>
            <size>65688</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvV2ViS2l0Mi5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJLaXQy
LnBybwkocmV2aXNpb24gNzM4ODApCisrKyBXZWJLaXQyL1dlYktpdDIucHJvCSh3b3JraW5nIGNv
cHkpCkBAIC0yODksNyArMjg5LDYgQEAgSEVBREVSUyArPSBcCiAgICAgVUlQcm9jZXNzL0FQSS9D
L1dLTmF2aWdhdGlvbkRhdGEuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oIFwKICAg
ICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuaCBcCi0gICAgVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZU5hbWVzcGFjZS5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oIFwK
ICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5oIFwKICAgICBVSVByb2Nlc3MvQVBJ
L0MvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaCBcCkBAIC00ODksNyArNDg4LDYgQEAgU09VUkNFUyAr
PSBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkRhdGEuY3BwIFwKICAgICBVSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUGFnZUdyb3Vw
LmNwcCBcCi0gICAgVUlQcm9jZXNzL0FQSS9DL1dLUGFnZU5hbWVzcGFjZS5jcHAgXAogICAgIFVJ
UHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dL
UHJvdGVjdGlvblNwYWNlLmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9jcHAvcXQvV0tTdHJpbmdR
dC5jcHAgXApJbmRleDogV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgJKHJldmlzaW9uIDczODgwKQorKysgV2Vi
S2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDYg
QEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tJbnNwZWN0b3IqIAogdHlwZWRlZiBjb25z
dCBzdHJ1Y3QgT3BhcXVlV0tOYXZpZ2F0aW9uRGF0YSogV0tOYXZpZ2F0aW9uRGF0YVJlZjsKIHR5
cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUGFnZSogV0tQYWdlUmVmOwogdHlwZWRlZiBjb25z
dCBzdHJ1Y3QgT3BhcXVlV0tQYWdlR3JvdXAqIFdLUGFnZUdyb3VwUmVmOwotdHlwZWRlZiBjb25z
dCBzdHJ1Y3QgT3BhcXVlV0tQYWdlTmFtZXNwYWNlKiBXS1BhZ2VOYW1lc3BhY2VSZWY7CiB0eXBl
ZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1ByZWZlcmVuY2VzKiBXS1ByZWZlcmVuY2VzUmVmOwog
dHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQcm90ZWN0aW9uU3BhY2UqIFdLUHJvdGVjdGlv
blNwYWNlUmVmOwogCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAkocmV2aXNpb24gNzM4
ODApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzksNiArNzksNyBAQCBQYXNzUmVmUHRyPFdlYkNvbnRleHQ+IFdlYkNvbnRleHQ6OmNyZWF0
CiAgICAgCiBXZWJDb250ZXh0OjpXZWJDb250ZXh0KFByb2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWws
IGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYXRoKQogICAgIDogbV9wcm9jZXNzTW9kZWwo
cHJvY2Vzc01vZGVsKQorICAgICwgbV9zaGFyZWROYW1lc3BhY2UoMCkKICAgICAsIG1fZGVmYXVs
dFBhZ2VHcm91cChXZWJQYWdlR3JvdXA6OmNyZWF0ZSgpKQogICAgICwgbV9pbmplY3RlZEJ1bmRs
ZVBhdGgoaW5qZWN0ZWRCdW5kbGVQYXRoKQogICAgICwgbV92aXNpdGVkTGlua1Byb3ZpZGVyKHRo
aXMpCkBAIC0yMjgsMTUgKzIyOSwyNyBAQCB2b2lkIFdlYkNvbnRleHQ6OnJlbGF1bmNoUHJvY2Vz
c0lmTmVjZXNzCiAgICAgZW5zdXJlV2ViUHJvY2VzcygpOwogfQogCi1XZWJQYWdlTmFtZXNwYWNl
KiBXZWJDb250ZXh0OjpjcmVhdGVQYWdlTmFtZXNwYWNlKCkKK1dlYlBhZ2VOYW1lc3BhY2UqIFdl
YkNvbnRleHQ6OnNoYXJlZFBhZ2VOYW1lc3BhY2UoKQoreworICAgIGlmIChtX3NoYXJlZE5hbWVz
cGFjZSkKKyAgICAgICAgcmV0dXJuIG1fc2hhcmVkTmFtZXNwYWNlLmdldCgpOworCisgICAgbV9z
aGFyZWROYW1lc3BhY2UgPSBjcmVhdGVQYWdlTmFtZXNwYWNlKCk7CisgICAgcmV0dXJuIG1fc2hh
cmVkTmFtZXNwYWNlLmdldCgpOworfQorCitQYXNzUmVmUHRyPFdlYlBhZ2VOYW1lc3BhY2U+IFdl
YkNvbnRleHQ6OmNyZWF0ZVBhZ2VOYW1lc3BhY2UoKQogewogICAgIFJlZlB0cjxXZWJQYWdlTmFt
ZXNwYWNlPiBwYWdlTmFtZXNwYWNlID0gV2ViUGFnZU5hbWVzcGFjZTo6Y3JlYXRlKHRoaXMpOwog
ICAgIG1fcGFnZU5hbWVzcGFjZXMuYWRkKHBhZ2VOYW1lc3BhY2UuZ2V0KCkpOwotICAgIHJldHVy
biBwYWdlTmFtZXNwYWNlLnJlbGVhc2UoKS5yZWxlYXNlUmVmKCk7CisgICAgcmV0dXJuIHBhZ2VO
YW1lc3BhY2UucmVsZWFzZSgpOwogfQogCiB2b2lkIFdlYkNvbnRleHQ6OnBhZ2VOYW1lc3BhY2VX
YXNEZXN0cm95ZWQoV2ViUGFnZU5hbWVzcGFjZSogcGFnZU5hbWVzcGFjZSkKIHsKKyAgICBpZiAo
cGFnZU5hbWVzcGFjZSA9PSBtX3NoYXJlZE5hbWVzcGFjZSkKKyAgICAgICAgbV9zaGFyZWROYW1l
c3BhY2UgPSAwOworCiAgICAgQVNTRVJUKG1fcGFnZU5hbWVzcGFjZXMuY29udGFpbnMocGFnZU5h
bWVzcGFjZSkpOwogICAgIG1fcGFnZU5hbWVzcGFjZXMucmVtb3ZlKHBhZ2VOYW1lc3BhY2UpOwog
fQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAkocmV2aXNpb24gNzM4ODApCisrKyBXZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDggKzQyLDYgQEAK
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKLXN0cnVjdCBXS0NvbnRleHRTdGF0aXN0aWNzOwotCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogY2xhc3MgRG93bmxvYWRQcm94eTsKQEAgLTc3LDcgKzc1LDggQEAgcHVibGljOgog
CiAgICAgdm9pZCByZWxhdW5jaFByb2Nlc3NJZk5lY2Vzc2FyeSgpOwogCi0gICAgV2ViUGFnZU5h
bWVzcGFjZSogY3JlYXRlUGFnZU5hbWVzcGFjZSgpOworICAgIFdlYlBhZ2VOYW1lc3BhY2UqIHNo
YXJlZFBhZ2VOYW1lc3BhY2UoKTsKKyAgICBQYXNzUmVmUHRyPFdlYlBhZ2VOYW1lc3BhY2U+IGNy
ZWF0ZVBhZ2VOYW1lc3BhY2UoKTsKICAgICB2b2lkIHBhZ2VOYW1lc3BhY2VXYXNEZXN0cm95ZWQo
V2ViUGFnZU5hbWVzcGFjZSopOwogCiAgICAgY29uc3QgU3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBh
dGgoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVkQnVuZGxlUGF0aDsgfQpAQCAtMTY0LDYgKzE2
Myw3IEBAIHByaXZhdGU6CiAgICAgLy8gRklYTUU6IEluIHRoZSBmdXR1cmUsIHRoaXMgc2hvdWxk
IGJlIG9uZSBvciBtb3JlIFdlYlByb2Nlc3NQcm94aWVzLgogICAgIFJlZlB0cjxXZWJQcm9jZXNz
UHJveHk+IG1fcHJvY2VzczsKIAorICAgIFJlZlB0cjxXZWJQYWdlTmFtZXNwYWNlPiBtX3NoYXJl
ZE5hbWVzcGFjZTsKICAgICBIYXNoU2V0PFdlYlBhZ2VOYW1lc3BhY2UqPiBtX3BhZ2VOYW1lc3Bh
Y2VzOwogCiAgICAgUmVmUHRyPFdlYlBhZ2VHcm91cD4gbV9kZWZhdWx0UGFnZUdyb3VwOwpJbmRl
eDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZU5hbWVzcGFjZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VOYW1lc3BhY2UuaAkocmV2aXNpb24gNzM4ODApCisrKyBX
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlTmFtZXNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDggKzMxLDYgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KIAotc3RydWN0IFdLQ29udGV4dFN0YXRpc3RpY3M7Ci0KIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBXZWJDb250ZXh0OwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCShyZXZpc2lvbiA3Mzg4MCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMyw2ICsxMzMsMTEgQEAgV2ViUHJvY2Vzc1Byb3h5KiBX
ZWJQYWdlUHJveHk6OnByb2Nlc3MoKQogICAgIHJldHVybiBtX3BhZ2VOYW1lc3BhY2UtPnByb2Nl
c3MoKTsKIH0KIAorV2ViQ29udGV4dCogV2ViUGFnZVByb3h5Ojpjb250ZXh0KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9wYWdlTmFtZXNwYWNlLT5jb250ZXh0KCk7Cit9CisKIGJvb2wgV2ViUGFn
ZVByb3h5Ojppc1ZhbGlkKCkKIHsKICAgICAvLyBBIHBhZ2UgdGhhdCBoYXMgYmVlbiBleHBsaWNp
dGx5IGNsb3NlZCBpcyBuZXZlciB2YWxpZC4KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CShyZXZpc2lvbiA3Mzg4MCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3
b3JraW5nIGNvcHkpCkBAIC03MSw4ICs3MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBz
dHJ1Y3QgV2luZG93RmVhdHVyZXM7CiB9CiAKLXN0cnVjdCBXS0NvbnRleHRTdGF0aXN0aWNzOwot
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRHJhd2luZ0FyZWFQcm94eTsKQEAgLTI1Miw2
ICsyNTAsNyBAQCBwdWJsaWM6CiAKICAgICBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MoKSBjb25z
dDsKICAgICBXZWJQYWdlTmFtZXNwYWNlKiBwYWdlTmFtZXNwYWNlKCkgY29uc3QgeyByZXR1cm4g
bV9wYWdlTmFtZXNwYWNlLmdldCgpOyB9CisgICAgV2ViQ29udGV4dCogY29udGV4dCgpIGNvbnN0
OwogCiAgICAgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VH
cm91cC5nZXQoKTsgfQogCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkocmV2
aXNpb24gNzM4ODApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkod29y
a2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNiBAQCBjbGFzcyBXZWJGcmFtZVByb3h5OwogY2xhc3Mg
V2ViSW5zcGVjdG9yUHJveHk7CiBjbGFzcyBXZWJOYXZpZ2F0aW9uRGF0YTsKIGNsYXNzIFdlYlBh
Z2VHcm91cDsKLWNsYXNzIFdlYlBhZ2VOYW1lc3BhY2U7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBj
bGFzcyBXZWJQcmVmZXJlbmNlczsKIGNsYXNzIFdlYlByb3RlY3Rpb25TcGFjZTsKQEAgLTcwLDE2
ICs2OSwxNiBAQCBXS19BRERfQVBJX01BUFBJTkcoV0tEb3dubG9hZFJlZiwgRG93bmxvCiBXS19B
RERfQVBJX01BUFBJTkcoV0tGb3JtU3VibWlzc2lvbkxpc3RlbmVyUmVmLCBXZWJGb3JtU3VibWlz
c2lvbkxpc3RlbmVyUHJveHkpCiBXS19BRERfQVBJX01BUFBJTkcoV0tGcmFtZVBvbGljeUxpc3Rl
bmVyUmVmLCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkpCiBXS19BRERfQVBJX01BUFBJTkco
V0tGcmFtZVJlZiwgV2ViRnJhbWVQcm94eSkKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotV0tfQURE
X0FQSV9NQVBQSU5HKFdLSW5zcGVjdG9yUmVmLCBXZWJJbnNwZWN0b3JQcm94eSkKLSNlbmRpZgog
V0tfQUREX0FQSV9NQVBQSU5HKFdLTmF2aWdhdGlvbkRhdGFSZWYsIFdlYk5hdmlnYXRpb25EYXRh
KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUGFnZUdyb3VwUmVmLCBXZWJQYWdlR3JvdXApCi1XS19B
RERfQVBJX01BUFBJTkcoV0tQYWdlTmFtZXNwYWNlUmVmLCBXZWJQYWdlTmFtZXNwYWNlKQogV0tf
QUREX0FQSV9NQVBQSU5HKFdLUGFnZVJlZiwgV2ViUGFnZVByb3h5KQogV0tfQUREX0FQSV9NQVBQ
SU5HKFdLUHJlZmVyZW5jZXNSZWYsIFdlYlByZWZlcmVuY2VzKQogV0tfQUREX0FQSV9NQVBQSU5H
KFdLUHJvdGVjdGlvblNwYWNlUmVmLCBXZWJQcm90ZWN0aW9uU3BhY2UpCiAKKyNpZiBFTkFCTEUo
SU5TUEVDVE9SKQorV0tfQUREX0FQSV9NQVBQSU5HKFdLSW5zcGVjdG9yUmVmLCBXZWJJbnNwZWN0
b3JQcm94eSkKKyNlbmRpZgorCiAvKiBFbnVtIGNvbnZlcnNpb25zICovCiAKIGlubGluZSBDYWNo
ZU1vZGVsIHRvQ2FjaGVNb2RlbChXS0NhY2hlTW9kZWwgd2tDYWNoZU1vZGVsKQpJbmRleDogV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiA3Mzg4MCkKKysrIFdlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDkgKzQyLDkgQEAg
V0tUeXBlSUQgV0tQYWdlR2V0VHlwZUlEKCkKICAgICByZXR1cm4gdG9BUEkoV2ViUGFnZVByb3h5
OjpBUElUeXBlKTsKIH0KIAotV0tQYWdlTmFtZXNwYWNlUmVmIFdLUGFnZUdldFBhZ2VOYW1lc3Bh
Y2UoV0tQYWdlUmVmIHBhZ2VSZWYpCitXS0NvbnRleHRSZWYgV0tQYWdlR2V0Q29udGV4dChXS1Bh
Z2VSZWYgcGFnZVJlZikKIHsKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKHBhZ2VSZWYpLT5wYWdl
TmFtZXNwYWNlKCkpOworICAgIHJldHVybiB0b0FQSSh0b0ltcGwocGFnZVJlZiktPmNvbnRleHQo
KSk7CiB9CiAKIFdLUGFnZUdyb3VwUmVmIFdLUGFnZUdldFBhZ2VHcm91cChXS1BhZ2VSZWYgcGFn
ZVJlZikKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCShyZXZpc2lvbiA3Mzg4MCkKKysr
IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTcs
NyArMjE3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tQYWdlQ29udGV4dE1lbnVDbGllbnQgVwogCiBX
S19FWFBPUlQgV0tUeXBlSUQgV0tQYWdlR2V0VHlwZUlEKCk7CiAKLVdLX0VYUE9SVCBXS1BhZ2VO
YW1lc3BhY2VSZWYgV0tQYWdlR2V0UGFnZU5hbWVzcGFjZShXS1BhZ2VSZWYgcGFnZSk7CitXS19F
WFBPUlQgV0tDb250ZXh0UmVmIFdLUGFnZUdldENvbnRleHQoV0tQYWdlUmVmIHBhZ2UpOwogV0tf
RVhQT1JUIFdLUGFnZUdyb3VwUmVmIFdLUGFnZUdldFBhZ2VHcm91cChXS1BhZ2VSZWYgcGFnZSk7
CiAKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZUxvYWRVUkwoV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVm
IHVybCk7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VOYW1lc3BhY2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZU5hbWVzcGFjZS5j
cHAJKHJldmlzaW9uIDczODgwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlTmFt
ZXNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw0OCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgIldLUGFnZU5hbWVzcGFjZS5oIgotCi0jaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0j
aW5jbHVkZSAiV2ViUGFnZU5hbWVzcGFjZS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1X
S1R5cGVJRCBXS1BhZ2VOYW1lc3BhY2VHZXRUeXBlSUQoKQotewotICAgIHJldHVybiB0b0FQSShX
ZWJQYWdlTmFtZXNwYWNlOjpBUElUeXBlKTsKLX0KLQotV0tQYWdlTmFtZXNwYWNlUmVmIFdLUGFn
ZU5hbWVzcGFjZUNyZWF0ZShXS0NvbnRleHRSZWYgb3duZXJDb250ZXh0UmVmKQotewotICAgIHJl
dHVybiB0b0FQSSh0b0ltcGwob3duZXJDb250ZXh0UmVmKS0+Y3JlYXRlUGFnZU5hbWVzcGFjZSgp
KTsKLX0KLQotV0tDb250ZXh0UmVmIFdLUGFnZU5hbWVzcGFjZUdldENvbnRleHQoV0tQYWdlTmFt
ZXNwYWNlUmVmIHBhZ2VOYW1lc3BhY2VSZWYpCi17Ci0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbChw
YWdlTmFtZXNwYWNlUmVmKS0+Y29udGV4dCgpKTsKLX0KSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZU5hbWVzcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZU5hbWVzcGFjZS5oCShyZXZpc2lvbiA3Mzg4MCkKKysrIFdlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZU5hbWVzcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ1ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdLUGFnZU5hbWVzcGFjZV9oCi0jZGVmaW5lIFdL
UGFnZU5hbWVzcGFjZV9oCi0KLSNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgotCi0jaWZkZWYg
X19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLVdLX0VYUE9SVCBXS1R5cGVJRCBX
S1BhZ2VOYW1lc3BhY2VHZXRUeXBlSUQoKTsKLQotV0tfRVhQT1JUIFdLUGFnZU5hbWVzcGFjZVJl
ZiBXS1BhZ2VOYW1lc3BhY2VDcmVhdGUoV0tDb250ZXh0UmVmIG93bmVyQ29udGV4dCk7Ci0KLVdL
X0VYUE9SVCBXS0NvbnRleHRSZWYgV0tQYWdlTmFtZXNwYWNlR2V0Q29udGV4dChXS1BhZ2VOYW1l
c3BhY2VSZWYgcGFnZU5hbWVzcGFjZSk7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlm
Ci0KLSNlbmRpZiAvKiBXS1BhZ2VOYW1lc3BhY2VfaCAqLwpJbmRleDogV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV2ViS2l0Mi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dlYktpdDIuaAkocmV2aXNpb24gNzM4ODApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
ZWJLaXQyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDYgQEAKICNpbmNsdWRlIDxXZWJL
aXQyL1dLTnVtYmVyLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2UuaD4KICNpbmNsdWRlIDxX
ZWJLaXQyL1dLUGFnZUdyb3VwLmg+Ci0jaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2VOYW1lc3BhY2Uu
aD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUHJlZmVyZW5jZXMuaD4KICNpbmNsdWRlIDxXZWJLaXQy
L1dLU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1VSTC5oPgpJbmRleDogV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAJKHJldmlzaW9uIDczODgwKQorKysgV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDkgKzM1
LDIxIEBAIFdLVHlwZUlEIFdLVmlld0dldFR5cGVJRCgpCiAgICAgcmV0dXJuIHRvQVBJKEFQSU9i
amVjdDo6VHlwZVZpZXcpOwogfQogCi1XS1ZpZXdSZWYgV0tWaWV3Q3JlYXRlKFJFQ1QgcmVjdCwg
V0tQYWdlTmFtZXNwYWNlUmVmIHBhZ2VOYW1lc3BhY2VSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VH
cm91cFJlZiwgSFdORCBwYXJlbnRXaW5kb3cpCitXS1ZpZXdSZWYgV0tWaWV3Q3JlYXRlKFJFQ1Qg
cmVjdCwgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJl
ZiwgSFdORCBwYXJlbnRXaW5kb3cpCiB7Ci0gICAgUmVmUHRyPFdlYlZpZXc+IHZpZXcgPSBXZWJW
aWV3OjpjcmVhdGUocmVjdCwgdG9JbXBsKHBhZ2VOYW1lc3BhY2VSZWYpLCB0b0ltcGwocGFnZUdy
b3VwUmVmKSwgcGFyZW50V2luZG93KTsKKyAgICBSZWZQdHI8V2ViVmlldz4gdmlldyA9IFdlYlZp
ZXc6OmNyZWF0ZShyZWN0LCB0b0ltcGwoY29udGV4dFJlZiksIHRvSW1wbChwYWdlR3JvdXBSZWYp
LCBwYXJlbnRXaW5kb3cpOworICAgIHJldHVybiB0b0FQSSh2aWV3LnJlbGVhc2UoKS5yZWxlYXNl
UmVmKCkpOworfQorCitXS1ZpZXdSZWYgV0tWaWV3Q3JlYXRlVXNpbmdTaGFyZWRQcm9jZXNzKFJF
Q1QgcmVjdCwgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91
cFJlZiwgSFdORCBwYXJlbnRXaW5kb3cpCit7CisgICAgUmVmUHRyPFdlYlZpZXc+IHZpZXcgPSBX
ZWJWaWV3OjpjcmVhdGVVc2luZ1NoYXJlZFByb2Nlc3MocmVjdCwgdG9JbXBsKGNvbnRleHRSZWYp
LCB0b0ltcGwocGFnZUdyb3VwUmVmKSwgcGFyZW50V2luZG93KTsKKyAgICByZXR1cm4gdG9BUEko
dmlldy5yZWxlYXNlKCkucmVsZWFzZVJlZigpKTsKK30KKworV0tWaWV3UmVmIFdLVmlld0NyZWF0
ZUZvckFzc29jaWF0ZWRQYWdlKFJFQ1QgcmVjdCwgV0tQYWdlUmVmIHBhZ2VSZWYsIFdLUGFnZUdy
b3VwUmVmIHBhZ2VHcm91cFJlZiwgSFdORCBwYXJlbnRXaW5kb3cpCit7CisgICAgUmVmUHRyPFdl
YlZpZXc+IHZpZXcgPSBXZWJWaWV3OjpjcmVhdGVGb3JBc3NvY2lhdGVkUGFnZShyZWN0LCB0b0lt
cGwocGFnZVJlZiksIHRvSW1wbChwYWdlR3JvdXBSZWYpLCBwYXJlbnRXaW5kb3cpOwogICAgIHJl
dHVybiB0b0FQSSh2aWV3LnJlbGVhc2UoKS5yZWxlYXNlUmVmKCkpOwogfQogCkluZGV4OiBXZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy93aW4vV0tWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5oCShyZXZpc2lvbiA3Mzg4MCkKKysrIFdlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL3dpbi9XS1ZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUs
OSBAQCBleHRlcm4gIkMiIHsKIAogV0tfRVhQT1JUIFdLVHlwZUlEIFdLVmlld0dldFR5cGVJRCgp
OwogCi1XS19FWFBPUlQgV0tWaWV3UmVmIFdLVmlld0NyZWF0ZShSRUNUIHJlY3QsIFdLUGFnZU5h
bWVzcGFjZVJlZiBwYWdlTmFtZXNwYWNlLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXAsIEhXTkQg
cGFyZW50V2luZG93KTsKK1dLX0VYUE9SVCBXS1ZpZXdSZWYgV0tWaWV3Q3JlYXRlKFJFQ1QgcmVj
dCwgV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCwgSFdORCBw
YXJlbnRXaW5kb3cpOworV0tfRVhQT1JUIFdLVmlld1JlZiBXS1ZpZXdDcmVhdGVVc2luZ1NoYXJl
ZFByb2Nlc3MoUkVDVCByZWN0LCBXS0NvbnRleHRSZWYgY29udGV4dCwgV0tQYWdlR3JvdXBSZWYg
cGFnZUdyb3VwLCBIV05EIHBhcmVudFdpbmRvdyk7CitXS19FWFBPUlQgV0tWaWV3UmVmIFdLVmll
d0NyZWF0ZUZvckFzc29jaWF0ZWRQYWdlKFJFQ1QgcmVjdCwgV0tQYWdlUmVmIHBhZ2UsIFdLUGFn
ZUdyb3VwUmVmIHBhZ2VHcm91cCwgSFdORCBwYXJlbnRXaW5kb3cpOwogCiBXS19FWFBPUlQgSFdO
RCBXS1ZpZXdHZXRXaW5kb3coV0tWaWV3UmVmIHZpZXcpOwogCkluZGV4OiBXZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1dLVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQ
SS9tYWMvV0tWaWV3LmgJKHJldmlzaW9uIDczODgwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9XS1ZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTUgKzMzLDE4IEBAIEBpbnRlcmZh
Y2UgV0tWaWV3IDogTlNWaWV3IDxOU1RleHRJbnB1dD4KICAgICBXS1ZpZXdEYXRhICpfZGF0YTsK
IH0KIAotLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIHBhZ2VOYW1lc3BhY2VSZWY6
KFdLUGFnZU5hbWVzcGFjZVJlZilwYWdlTmFtZXNwYWNlUmVmOwotLSAoaWQpaW5pdFdpdGhGcmFt
ZTooTlNSZWN0KWZyYW1lIHBhZ2VOYW1lc3BhY2VSZWY6KFdLUGFnZU5hbWVzcGFjZVJlZilwYWdl
TmFtZXNwYWNlUmVmIHBhZ2VHcm91cFJlZjooV0tQYWdlR3JvdXBSZWYpcGFnZUdyb3VwUmVmOwor
LSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGNvbnRleHRSZWY6KFdLQ29udGV4dFJl
Ziljb250ZXh0UmVmOworLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGNvbnRleHRS
ZWY6KFdLQ29udGV4dFJlZiljb250ZXh0UmVmIHBhZ2VHcm91cFJlZjooV0tQYWdlR3JvdXBSZWYp
cGFnZUdyb3VwUmVmOwogCi0tIChXS1BhZ2VSZWYpcGFnZVJlZjsKKy0gKGlkKWluaXRXaXRoRnJh
bWU6KE5TUmVjdClmcmFtZSBjb250ZXh0UmVmOihXS0NvbnRleHRSZWYpY29udGV4dFJlZiB1c2lu
Z1NoYXJlZFByb2Nlc3M6KEJPT0wpdXNpbmdTaGFyZWRQcm9jZXNzOworLSAoaWQpaW5pdFdpdGhG
cmFtZTooTlNSZWN0KWZyYW1lIGNvbnRleHRSZWY6KFdLQ29udGV4dFJlZiljb250ZXh0UmVmIHBh
Z2VHcm91cFJlZjooV0tQYWdlR3JvdXBSZWYpcGFnZUdyb3VwUmVmIHVzaW5nU2hhcmVkUHJvY2Vz
czooQk9PTCl1c2luZ1NoYXJlZFByb2Nlc3M7OwogCi0tICh2b2lkKXNldERyYXdzQmFja2dyb3Vu
ZDooQk9PTClmbGFnOwotLSAoQk9PTClkcmF3c0JhY2tncm91bmQ7CistIChpZClpbml0V2l0aEZy
YW1lOihOU1JlY3QpZnJhbWUgZm9yQXNzb2NpYXRlZFBhZ2VSZWY6KFdLUGFnZVJlZilwYWdlUmVm
OworLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGZvckFzc29jaWF0ZWRQYWdlUmVm
OihXS1BhZ2VSZWYpcGFnZVJlZiBwYWdlR3JvdXBSZWY6KFdLUGFnZUdyb3VwUmVmKXBhZ2VHcm91
cFJlZjsKIAotLSAodm9pZClzZXREcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZDooQk9PTClmbGFn
OwotLSAoQk9PTClkcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZDsKK0Bwcm9wZXJ0eShyZWFkb25s
eSkgV0tQYWdlUmVmIHBhZ2VSZWY7CisKK0Bwcm9wZXJ0eSBCT09MIGRyYXdzQmFja2dyb3VuZDsK
K0Bwcm9wZXJ0eSBCT09MIGRyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kOwogCiBAZW5kCkluZGV4
OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkocmV2aXNpb24gNzM4ODApCisrKyBXZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTI3LDkg
KzEyNyw1NCBAQCAtIChCT09MKXdhbnRzVG9IYW5kbGVNb3VzZUV2ZW50czsKIC0gKEJPT0wpaGFu
ZGxlTW91c2VFdmVudDooTlNFdmVudCAqKWV2ZW50OwogQGVuZAogCitAaW50ZXJmYWNlIFdLVmll
dyAoKQorLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIHBhZ2VOYW1lc3BhY2U6KFdl
YlBhZ2VOYW1lc3BhY2UqKXBhZ2VOYW1lc3BhY2UgcGFnZUdyb3VwOihXZWJQYWdlR3JvdXAqKXBh
Z2VHcm91cDsKK0BlbmQKKwogQGltcGxlbWVudGF0aW9uIFdLVmlldwogCi0tIChpZClpbml0V2l0
aEZyYW1lOihOU1JlY3QpZnJhbWUgcGFnZU5hbWVzcGFjZVJlZjooV0tQYWdlTmFtZXNwYWNlUmVm
KXBhZ2VOYW1lc3BhY2VSZWYgcGFnZUdyb3VwUmVmOihXS1BhZ2VHcm91cFJlZilwYWdlR3JvdXBS
ZWYKKy0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZQoreworICAgIHJldHVybiBbc2Vs
ZiBpbml0V2l0aEZyYW1lOmZyYW1lIGNvbnRleHRSZWY6dG9BUEkoV2ViQ29udGV4dDo6c2hhcmVk
UHJvY2Vzc0NvbnRleHQoKSldOworfQorCistIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJh
bWUgY29udGV4dFJlZjooV0tDb250ZXh0UmVmKWNvbnRleHRSZWYKK3sgICAKKyAgICByZXR1cm4g
W3NlbGYgaW5pdFdpdGhGcmFtZTpmcmFtZSBjb250ZXh0UmVmOmNvbnRleHRSZWYgcGFnZUdyb3Vw
UmVmOm5pbF07Cit9CisKKy0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBjb250ZXh0
UmVmOihXS0NvbnRleHRSZWYpY29udGV4dFJlZiBwYWdlR3JvdXBSZWY6KFdLUGFnZUdyb3VwUmVm
KXBhZ2VHcm91cFJlZgoreworICAgIHJldHVybiBbc2VsZiBpbml0V2l0aEZyYW1lOmZyYW1lIGNv
bnRleHRSZWY6Y29udGV4dFJlZiBwYWdlR3JvdXBSZWY6cGFnZUdyb3VwUmVmIHVzaW5nU2hhcmVk
UHJvY2VzczpOT107Cit9CisKKy0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBjb250
ZXh0UmVmOihXS0NvbnRleHRSZWYpY29udGV4dFJlZiB1c2luZ1NoYXJlZFByb2Nlc3M6KEJPT0wp
dXNpbmdTaGFyZWRQcm9jZXNzCit7CisgICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoRnJhbWU6ZnJh
bWUgY29udGV4dFJlZjpjb250ZXh0UmVmIHBhZ2VHcm91cFJlZjpuaWwgdXNpbmdTaGFyZWRQcm9j
ZXNzOnVzaW5nU2hhcmVkUHJvY2Vzc107Cit9CisKKy0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVj
dClmcmFtZSBjb250ZXh0UmVmOihXS0NvbnRleHRSZWYpY29udGV4dFJlZiBwYWdlR3JvdXBSZWY6
KFdLUGFnZUdyb3VwUmVmKXBhZ2VHcm91cFJlZiB1c2luZ1NoYXJlZFByb2Nlc3M6KEJPT0wpdXNp
bmdTaGFyZWRQcm9jZXNzCit7CisgICAgUmVmUHRyPFdlYlBhZ2VOYW1lc3BhY2U+IHBhZ2VOYW1l
c3BhY2U7CisgICAgaWYgKHVzaW5nU2hhcmVkUHJvY2VzcykKKyAgICAgICAgcGFnZU5hbWVzcGFj
ZSA9IHRvSW1wbChjb250ZXh0UmVmKS0+c2hhcmVkUGFnZU5hbWVzcGFjZSgpOworICAgIGVsc2UK
KyAgICAgICAgcGFnZU5hbWVzcGFjZSA9IHRvSW1wbChjb250ZXh0UmVmKS0+Y3JlYXRlUGFnZU5h
bWVzcGFjZSgpOworCisgICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoRnJhbWU6ZnJhbWUgcGFnZU5h
bWVzcGFjZTpwYWdlTmFtZXNwYWNlLmdldCgpIHBhZ2VHcm91cDp0b0ltcGwocGFnZUdyb3VwUmVm
KV07Cit9CisKKy0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBmb3JBc3NvY2lhdGVk
UGFnZVJlZjooV0tQYWdlUmVmKXBhZ2VSZWYKK3sKKyAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhG
cmFtZTpmcmFtZSBmb3JBc3NvY2lhdGVkUGFnZVJlZjpwYWdlUmVmIHBhZ2VHcm91cFJlZjpuaWxd
OworfQorCistIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgZm9yQXNzb2NpYXRlZFBh
Z2VSZWY6KFdLUGFnZVJlZilwYWdlUmVmIHBhZ2VHcm91cFJlZjooV0tQYWdlR3JvdXBSZWYpcGFn
ZUdyb3VwUmVmCit7CisgICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoRnJhbWU6ZnJhbWUgcGFnZU5h
bWVzcGFjZTp0b0ltcGwocGFnZVJlZiktPnBhZ2VOYW1lc3BhY2UoKSBwYWdlR3JvdXA6dG9JbXBs
KHBhZ2VHcm91cFJlZildOworfQorCistIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUg
cGFnZU5hbWVzcGFjZTooV2ViUGFnZU5hbWVzcGFjZSopcGFnZU5hbWVzcGFjZSBwYWdlR3JvdXA6
KFdlYlBhZ2VHcm91cCopcGFnZUdyb3VwCiB7CiAgICAgc2VsZiA9IFtzdXBlciBpbml0V2l0aEZy
YW1lOmZyYW1lXTsKICAgICBpZiAoIXNlbGYpCkBAIC0xNDgsNyArMTkzLDcgQEAgLSAoaWQpaW5p
dFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIHBhZ2VOYQogICAgIF9kYXRhID0gW1tXS1ZpZXdEYXRh
IGFsbG9jXSBpbml0XTsKIAogICAgIF9kYXRhLT5fcGFnZUNsaWVudCA9IFBhZ2VDbGllbnRJbXBs
OjpjcmVhdGUoc2VsZik7Ci0gICAgX2RhdGEtPl9wYWdlID0gdG9JbXBsKHBhZ2VOYW1lc3BhY2VS
ZWYpLT5jcmVhdGVXZWJQYWdlKHRvSW1wbChwYWdlR3JvdXBSZWYpKTsKKyAgICBfZGF0YS0+X3Bh
Z2UgPSBwYWdlTmFtZXNwYWNlLT5jcmVhdGVXZWJQYWdlKHBhZ2VHcm91cCk7CiAgICAgX2RhdGEt
Pl9wYWdlLT5zZXRQYWdlQ2xpZW50KF9kYXRhLT5fcGFnZUNsaWVudC5nZXQoKSk7CiAgICAgX2Rh
dGEtPl9wYWdlLT5zZXREcmF3aW5nQXJlYShDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eTo6
Y3JlYXRlKHNlbGYpKTsKICAgICBfZGF0YS0+X3BhZ2UtPmluaXRpYWxpemVXZWJQYWdlKEludFNp
emUoZnJhbWUuc2l6ZSkpOwpAQCAtMTY4LDE3ICsyMTMsNiBAQCAtIChpZClpbml0V2l0aEZyYW1l
OihOU1JlY3QpZnJhbWUgcGFnZU5hCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0gKGlkKWluaXRX
aXRoRnJhbWU6KE5TUmVjdClmcmFtZSBwYWdlTmFtZXNwYWNlUmVmOihXS1BhZ2VOYW1lc3BhY2VS
ZWYpcGFnZU5hbWVzcGFjZVJlZgotewotICAgIHJldHVybiBbc2VsZiBpbml0V2l0aEZyYW1lOmZy
YW1lIHBhZ2VOYW1lc3BhY2VSZWY6cGFnZU5hbWVzcGFjZVJlZiBwYWdlR3JvdXBSZWY6bmlsXTsK
LX0KLQotLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lCi17Ci0gICAgV2ViQ29udGV4
dCogY29udGV4dCA9IFdlYkNvbnRleHQ6OnNoYXJlZFByb2Nlc3NDb250ZXh0KCk7Ci0gICAgcmV0
dXJuIFtzZWxmIGluaXRXaXRoRnJhbWU6ZnJhbWUgcGFnZU5hbWVzcGFjZVJlZjp0b0FQSShjb250
ZXh0LT5jcmVhdGVQYWdlTmFtZXNwYWNlKCkpXTsKLX0KLQogLSAodm9pZClkZWFsbG9jCiB7CiAg
ICAgX2RhdGEtPl9wYWdlLT5jbG9zZSgpOwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F3a2NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
d2tjb250ZXh0LmNwcAkocmV2aXNpb24gNzM4ODApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXdrY29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDE1ICs1MCwyMyBAQCBRV0tD
b250ZXh0OjpRV0tDb250ZXh0KFFPYmplY3QqIHBhcmVudCkKICAgICAsIGQobmV3IFFXS0NvbnRl
eHRQcml2YXRlKHRoaXMpKQogewogICAgIGQtPmNvbnRleHQgPSBXZWJDb250ZXh0OjpjcmVhdGUo
U3RyaW5nKCkpOwotICAgIGQtPnBhZ2VOYW1lc3BhY2UgPSBkLT5jb250ZXh0LT5jcmVhdGVQYWdl
TmFtZXNwYWNlKCk7CisgICAgZC0+cGFnZU5hbWVzcGFjZSA9IGQtPmNvbnRleHQtPnNoYXJlZE5h
bWVzcGFjZSgpOwogfQogCi1RV0tDb250ZXh0OjpRV0tDb250ZXh0KFdLUGFnZU5hbWVzcGFjZVJl
ZiBwYWdlTmFtZXNwYWNlUmVmLCBRT2JqZWN0KiBwYXJlbnQpCitRV0tDb250ZXh0OjpRV0tDb250
ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBRT2JqZWN0KiBwYXJlbnQpCiAgICAgOiBRT2Jq
ZWN0KHBhcmVudCkKICAgICAsIGQobmV3IFFXS0NvbnRleHRQcml2YXRlKHRoaXMpKQogewotICAg
IGQtPnBhZ2VOYW1lc3BhY2UgPSB0b0ltcGwocGFnZU5hbWVzcGFjZVJlZik7Ci0gICAgZC0+Y29u
dGV4dCA9IGQtPnBhZ2VOYW1lc3BhY2UtPmNvbnRleHQoKTsKKyAgICBkLT5jb250ZXh0ID0gdG9J
bXBsKGNvbnRleHRSZWYpOworICAgIGQtPnBhZ2VOYW1lc3BhY2UgPSBkLT5jb250ZXh0LT5zaGFy
ZWROYW1lc3BhY2UoKTsKK30KKworUVdLQ29udGV4dDo6UVdLQ29udGV4dChXS1BhZ2VSZWYgcGFn
ZVJlZiwgUU9iamVjdCogcGFyZW50KQorICAgIDogUU9iamVjdChwYXJlbnQpCisgICAgLCBkKG5l
dyBRV0tDb250ZXh0UHJpdmF0ZSh0aGlzKSkKK3sKKyAgICBkLT5jb250ZXh0ID0gdG9JbXBsKHBh
Z2VSZWYpLT5jb250ZXh0KCk7CisgICAgZC0+cGFnZU5hbWVzcGFjZSA9IGQtPmNvbnRleHQtPnNo
YXJlZE5hbWVzcGFjZSgpOwogfQogCiBRV0tDb250ZXh0Ojp+UVdLQ29udGV4dCgpCkluZGV4OiBX
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrY29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xd2tjb250ZXh0LmgJKHJldmlzaW9uIDczODgwKQorKysgV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a2NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMjIs
NyArMjIsOCBAQAogCiAjaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgogI2luY2x1ZGUgPFFPYmpl
Y3Q+Ci0jaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2VOYW1lc3BhY2UuaD4KKyNpbmNsdWRlIDxXZWJL
aXQyL1dLQ29udGV4dC5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tQYWdlLmg+CiAKIGNsYXNzIFFX
S0NvbnRleHRQcml2YXRlOwogCkBAIC0zMyw3ICszNCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5RV0tDb250ZXh0KCk7CiAKICAgICAvLyBCcmlkZ2UgZnJvbSB0aGUgQyBBUEkKLSAgICBRV0tD
b250ZXh0KFdLUGFnZU5hbWVzcGFjZVJlZiBwYWdlTmFtZXNwYWNlUmVmLCBRT2JqZWN0KiBwYXJl
bnQgPSAwKTsKKyAgICBRV0tDb250ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBRT2JqZWN0
KiBwYXJlbnQgPSAwKTsKKyAgICBRV0tDb250ZXh0KFdLUGFnZVJlZiBwYWdlUmVmLCBRT2JqZWN0
KiBwYXJlbnQgPSAwKTsKIAogcHJpdmF0ZToKICAgICBRV0tDb250ZXh0UHJpdmF0ZSogZDsKSW5k
ZXg6IFdlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0JKHJl
dmlzaW9uIDczODgwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5
TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03OCwxMCArNzgsMTAgQEAgV2ViUGFnZVByb3h5KiBX
ZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcgogICAgIEFTU0VSVChtX3BhZ2UpOwogICAgIEFTU0VS
VCghbV9pbnNwZWN0b3JWaWV3KTsKIAotICAgIG1faW5zcGVjdG9yVmlldy5hZG9wdE5TKFtbV0tW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgcGFnZU5hbWVzcGFjZVJlZjp0b0FQ
SShtX3BhZ2UtPnBhZ2VOYW1lc3BhY2UoKSkgcGFnZUdyb3VwUmVmOnRvQVBJKGluc3BlY3RvclBh
Z2VHcm91cCgpKV0pOworICAgIG1faW5zcGVjdG9yVmlldy5hZG9wdE5TKFtbV0tWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgZm9yQXNzb2NpYXRlZFBhZ2VSZWY6dG9BUEkocGFn
ZSgpKSBwYWdlR3JvdXBSZWY6dG9BUEkoaW5zcGVjdG9yUGFnZUdyb3VwKCkpXSk7CiAgICAgQVNT
RVJUKG1faW5zcGVjdG9yVmlldyk7CiAKLSAgICByZXR1cm4gdG9JbXBsKFttX2luc3BlY3RvclZp
ZXcuZ2V0KCkgcGFnZVJlZl0pOworICAgIHJldHVybiB0b0ltcGwobV9pbnNwZWN0b3JWaWV3Lmdl
dCgpLnBhZ2VSZWYpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybU9wZW4o
KQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4u
Y3BwCShyZXZpc2lvbiA3Mzg4MCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0
b3JQcm94eVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw4ICsxNDEsOCBAQCBXZWJQYWdl
UHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9yCiAgICAgQVNTRVJUKCFtX2luc3BlY3Rv
cldpbmRvdyk7CiAKICAgICBSRUNUIGVtcHR5UmVjdCA9IHswfTsKLSAgICBtX2luc3BlY3RvclZp
ZXcgPSBXZWJWaWV3OjpjcmVhdGUoZW1wdHlSZWN0LCBtX3BhZ2UtPnBhZ2VOYW1lc3BhY2UoKSwg
aW5zcGVjdG9yUGFnZUdyb3VwKCksIDApLmxlYWtSZWYoKTsKLSAgICAKKyAgICBtX2luc3BlY3Rv
clZpZXcgPSBXZWJWaWV3OjpjcmVhdGVGb3JBc3NvY2lhdGVkUGFnZShlbXB0eVJlY3QsIG1fcGFn
ZSwgaW5zcGVjdG9yUGFnZUdyb3VwKCksIDApLmxlYWtSZWYoKTsKKwogICAgIHJldHVybiBtX2lu
c3BlY3RvclZpZXctPnBhZ2UoKTsKIH0KIApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dl
YlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNw
cAkocmV2aXNpb24gNzM4ODApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE4Miw3ICsxODIsNyBAQCBib29sIFdlYlZpZXc6OnJlZ2lzdGVy
V2ViVmlld1dpbmRvd0NsYXNzCiAgICAgcmV0dXJuICEhOjpSZWdpc3RlckNsYXNzRXgoJndjZXgp
OwogfQogCi1XZWJWaWV3OjpXZWJWaWV3KFJFQ1QgcmVjdCwgV2ViUGFnZU5hbWVzcGFjZSogcGFn
ZU5hbWVzcGFjZSwgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAsIEhXTkQgcGFyZW50V2luZG93KQor
V2ViVmlldzo6V2ViVmlldyhSRUNUIHJlY3QsIFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYlBhZ2VH
cm91cCogcGFnZUdyb3VwLCBIV05EIHBhcmVudFdpbmRvdywgYm9vbCB1c2luZ1NoYXJlZFByb2Nl
c3MpCiAgICAgOiBtX3JlY3QocmVjdCkKICAgICAsIG1fdG9wTGV2ZWxQYXJlbnRXaW5kb3coMCkK
ICAgICAsIG1fdG9vbFRpcFdpbmRvdygwKQpAQCAtMTkyLDYgKzE5MiwzMCBAQCBXZWJWaWV3OjpX
ZWJWaWV3KFJFQ1QgcmVjdCwgV2ViUGFnZU5hbWVzCiAgICAgLCBtX3RyYWNraW5nTW91c2VMZWF2
ZShmYWxzZSkKICAgICAsIG1faXNCZWluZ0Rlc3Ryb3llZChmYWxzZSkKIHsKKyAgICBSZWZQdHI8
V2ViUGFnZU5hbWVzcGFjZT4gcGFnZU5hbWVzcGFjZTsKKyAgICBpZiAodXNpbmdTaGFyZWRQcm9j
ZXNzKQorICAgICAgICBwYWdlTmFtZXNwYWNlID0gY29udGV4dC0+c2hhcmVkUGFnZU5hbWVzcGFj
ZSgpOworICAgIGVsc2UKKyAgICAgICAgcGFnZU5hbWVzcGFjZSA9IGNvbnRleHQtPmNyZWF0ZVBh
Z2VOYW1lc3BhY2UoKTsKKworICAgIGluaXRpYWxpemUocGFnZU5hbWVzcGFjZS5nZXQoKSwgcGFn
ZUdyb3VwLCBwYXJlbnRXaW5kb3cpOworfQorCitXZWJWaWV3OjpXZWJWaWV3KFJFQ1QgcmVjdCwg
V2ViUGFnZVByb3h5KiBwYWdlLCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCwgSFdORCBwYXJlbnRX
aW5kb3cpCisgICAgOiBtX3JlY3QocmVjdCkKKyAgICAsIG1fdG9wTGV2ZWxQYXJlbnRXaW5kb3co
MCkKKyAgICAsIG1fdG9vbFRpcFdpbmRvdygwKQorICAgICwgbV9sYXN0Q3Vyc29yU2V0KDApCisg
ICAgLCBtX3dlYkNvcmVDdXJzb3IoMCkKKyAgICAsIG1fb3ZlcnJpZGVDdXJzb3IoMCkKKyAgICAs
IG1fdHJhY2tpbmdNb3VzZUxlYXZlKGZhbHNlKQorICAgICwgbV9pc0JlaW5nRGVzdHJveWVkKGZh
bHNlKQoreworICAgIGluaXRpYWxpemUocGFnZS0+cGFnZU5hbWVzcGFjZSgpLCBwYWdlR3JvdXAs
IHBhcmVudFdpbmRvdyk7Cit9CisKK3ZvaWQgV2ViVmlldzo6aW5pdGlhbGl6ZShXZWJQYWdlTmFt
ZXNwYWNlKiBwYWdlTmFtZXNwYWNlLCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCwgSFdORCBwYXJl
bnRXaW5kb3cpCit7CiAgICAgcmVnaXN0ZXJXZWJWaWV3V2luZG93Q2xhc3MoKTsKIAogICAgIG1f
cGFnZSA9IHBhZ2VOYW1lc3BhY2UtPmNyZWF0ZVdlYlBhZ2UocGFnZUdyb3VwKTsKQEAgLTE5OSwx
MCArMjIzLDEwIEBAIFdlYlZpZXc6OldlYlZpZXcoUkVDVCByZWN0LCBXZWJQYWdlTmFtZXMKICAg
ICBtX3BhZ2UtPnNldERyYXdpbmdBcmVhKENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5Ojpj
cmVhdGUodGhpcykpOwogCiAgICAgbV93aW5kb3cgPSA6OkNyZWF0ZVdpbmRvd0V4KDAsIGtXZWJL
aXQyV2ViVmlld1dpbmRvd0NsYXNzTmFtZSwgMCwgV1NfQ0hJTEQgfCBXU19DTElQU0lCTElOR1Mg
fCBXU19DTElQQ0hJTERSRU4sCi0gICAgICAgIHJlY3QudG9wLCByZWN0LmxlZnQsIHJlY3Qucmln
aHQgLSByZWN0LmxlZnQsIHJlY3QuYm90dG9tIC0gcmVjdC50b3AsIHBhcmVudFdpbmRvdyA/IHBh
cmVudFdpbmRvdyA6IEhXTkRfTUVTU0FHRSwgMCwgaW5zdGFuY2VIYW5kbGUoKSwgdGhpcyk7Cisg
ICAgICAgIG1fcmVjdC50b3AsIG1fcmVjdC5sZWZ0LCBtX3JlY3QucmlnaHQgLSBtX3JlY3QubGVm
dCwgbV9yZWN0LmJvdHRvbSAtIG1fcmVjdC50b3AsIHBhcmVudFdpbmRvdyA/IHBhcmVudFdpbmRv
dyA6IEhXTkRfTUVTU0FHRSwgMCwgaW5zdGFuY2VIYW5kbGUoKSwgdGhpcyk7CiAgICAgQVNTRVJU
KDo6SXNXaW5kb3cobV93aW5kb3cpKTsKIAotICAgIG1fcGFnZS0+aW5pdGlhbGl6ZVdlYlBhZ2Uo
SW50UmVjdChyZWN0KS5zaXplKCkpOworICAgIG1fcGFnZS0+aW5pdGlhbGl6ZVdlYlBhZ2UoSW50
UmVjdChtX3JlY3QpLnNpemUoKSk7CiAKICAgICA6OlNob3dXaW5kb3cobV93aW5kb3csIFNXX1NI
T1cpOwogCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmgJKHJldmlzaW9uIDczODgwKQorKysg
V2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsOSAr
NDEsMTcgQEAgY2xhc3MgV2ViUGFnZU5hbWVzcGFjZTsKIAogY2xhc3MgV2ViVmlldyA6IHB1Ymxp
YyBBUElPYmplY3QsIHB1YmxpYyBQYWdlQ2xpZW50LCBXZWJDb3JlOjpXaW5kb3dNZXNzYWdlTGlz
dGVuZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlZpZXc+IGNyZWF0ZShS
RUNUIHJlY3QsIFdlYlBhZ2VOYW1lc3BhY2UqIHBhZ2VOYW1lc3BhY2UsIFdlYlBhZ2VHcm91cCog
cGFnZUdyb3VwLCBIV05EIHBhcmVudFdpbmRvdykKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJW
aWV3PiBjcmVhdGUoUkVDVCByZWN0LCBXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJQYWdlR3JvdXAq
IHBhZ2VHcm91cCwgSFdORCBwYXJlbnRXaW5kb3cpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFdlYlZpZXcocmVjdCwgcGFnZU5hbWVzcGFjZSwgcGFnZUdyb3VwLCBwYXJlbnRX
aW5kb3cpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJWaWV3KHJlY3QsIGNvbnRl
eHQsIHBhZ2VHcm91cCwgcGFyZW50V2luZG93LCBmYWxzZSkpOworICAgIH0KKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxXZWJWaWV3PiBjcmVhdGVVc2luZ1NoYXJlZFByb2Nlc3MoUkVDVCByZWN0LCBX
ZWJDb250ZXh0KiBjb250ZXh0LCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCwgSFdORCBwYXJlbnRX
aW5kb3cpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlZpZXcocmVjdCwg
Y29udGV4dCwgcGFnZUdyb3VwLCBwYXJlbnRXaW5kb3csIHRydWUpKTsKKyAgICB9CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViVmlldz4gY3JlYXRlRm9yQXNzb2NpYXRlZFBhZ2UoUkVDVCByZWN0
LCBXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwLCBIV05EIHBhcmVu
dFdpbmRvdykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViVmlldyhyZWN0
LCBwYWdlLCBwYWdlR3JvdXAsIHBhcmVudFdpbmRvdykpOwogICAgIH0KICAgICB+V2ViVmlldygp
OwogCkBAIC01OCw3ICs2NiwxMCBAQCBwdWJsaWM6CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlKCkg
Y29uc3QgeyByZXR1cm4gbV9wYWdlLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgV2ViVmlldyhS
RUNULCBXZWJQYWdlTmFtZXNwYWNlKiwgV2ViUGFnZUdyb3VwKiwgSFdORCBwYXJlbnRXaW5kb3cp
OworICAgIFdlYlZpZXcoUkVDVCwgV2ViQ29udGV4dCosIFdlYlBhZ2VHcm91cCosIEhXTkQgcGFy
ZW50V2luZG93LCBib29sIHVzaW5nU2hhcmVkUHJvY2Vzcyk7CisgICAgV2ViVmlldyhSRUNULCBX
ZWJQYWdlUHJveHkqLCBXZWJQYWdlR3JvdXAqLCBIV05EIHBhcmVudFdpbmRvdyk7CisKKyAgICB2
b2lkIGluaXRpYWxpemUoV2ViUGFnZU5hbWVzcGFjZSosIFdlYlBhZ2VHcm91cCosIEhXTkQgcGFy
ZW50V2luZG93KTsKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gVHlw
ZVZpZXc7IH0KIApJbmRleDogV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDczODgwKQorKysgV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU0MSw4ICs1NDEsNiBAQAogCQlCQ0VFOTY2RDEx
MkZBRjU3MDA2QkNDMjQgLyogQXR0YWNobWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFRTk2NkIxMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1l
bnQuaCAqLzsgfTsKIAkJQkNFRTk4QzYxMTMzMTRENzAwNkJDQzI0IC8qIFdlYlBhZ2VOYW1lc3Bh
Y2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNF
RTk4QzQxMTMzMTRENzAwNkJDQzI0IC8qIFdlYlBhZ2VOYW1lc3BhY2UuY3BwICovOyB9OwogCQlC
Q0VFOThDNzExMzMxNEQ3MDA2QkNDMjQgLyogV2ViUGFnZU5hbWVzcGFjZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFRTk4QzUxMTMzMTRENzAwNkJD
QzI0IC8qIFdlYlBhZ2VOYW1lc3BhY2UuaCAqLzsgfTsKLQkJQkNFRTk4Q0MxMTMzMTc0QzAwNkJD
QzI0IC8qIFdLUGFnZU5hbWVzcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQ0VFOThDQTExMzMxNzRDMDA2QkNDMjQgLyogV0tQYWdlTmFtZXNw
YWNlLmNwcCAqLzsgfTsKLQkJQkNFRTk4Q0QxMTMzMTc0QzAwNkJDQzI0IC8qIFdLUGFnZU5hbWVz
cGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNF
RTk4Q0IxMTMzMTc0QzAwNkJDQzI0IC8qIFdLUGFnZU5hbWVzcGFjZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJQkNGMDQ5RTYxMUZFMjBGNjAwRjg2
QTU4IC8qIFdLQnVuZGxlRnJhbWVQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0YwNDlFNDExRkUyMEY2MDBGODZBNTggLyogV0tCdW5kbGVG
cmFtZVByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlCQ0YwNDlFNzExRkUyMEY2MDBGODZBNTggLyogV0tCdW5kbGVQcml2YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0YwNDlFNTExRkUy
MEY2MDBGODZBNTggLyogV0tCdW5kbGVQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNGNTAxMjExMjNFRDNCMzAwNTk1NUFFIC8qIFRo
cmVhZExhdW5jaGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0Y1MDExRjEyM0VEM0IzMDA1OTU1QUUgLyogVGhyZWFkTGF1bmNoZXIuaCAqLzsgfTsK
QEAgLTExOTYsOCArMTE5NCw2IEBACiAJCUJDRUU5NjZCMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRh
Y2htZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF0dGFjaG1lbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFRTk4QzQxMTMzMTRENzAwNkJDQzI0IC8q
IFdlYlBhZ2VOYW1lc3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViUGFnZU5hbWVzcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
RUU5OEM1MTEzMzE0RDcwMDZCQ0MyNCAvKiBXZWJQYWdlTmFtZXNwYWNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBhZ2VOYW1lc3BhY2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQkNFRTk4Q0ExMTMzMTc0QzAwNkJDQzI0IC8qIFdLUGFnZU5hbWVzcGFj
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1BhZ2VOYW1lc3Bh
Y2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQ0VFOThDQjExMzMxNzRDMDA2
QkNDMjQgLyogV0tQYWdlTmFtZXNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLUGFnZU5hbWVzcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0Yw
NDlFNDExRkUyMEY2MDBGODZBNTggLyogV0tCdW5kbGVGcmFtZVByaXZhdGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCdW5kbGVGcmFtZVByaXZhdGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNGMDQ5RTUxMUZFMjBGNjAwRjg2QTU4IC8qIFdLQnVuZGxl
UHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0J1bmRsZVByaXZh
dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNGMDRDOEMxMUZGOUI3RDAwRjg2
QTU4IC8qIEFQSU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElP
YmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NzAsOCArMTk2Niw2IEBA
CiAJCQkJQkNENTk3RDUxMTJCNTZEQzAwRUM4QzIzIC8qIFdLUGFnZS5oICovLAogCQkJCUJDN0I2
MzM2MTJBNDVBQkEwMEQxNzRBNCAvKiBXS1BhZ2VHcm91cC5jcHAgKi8sCiAJCQkJQkM3QjYzMzUx
MkE0NUFCQTAwRDE3NEE0IC8qIFdLUGFnZUdyb3VwLmggKi8sCi0JCQkJQkNFRTk4Q0ExMTMzMTc0
QzAwNkJDQzI0IC8qIFdLUGFnZU5hbWVzcGFjZS5jcHAgKi8sCi0JCQkJQkNFRTk4Q0IxMTMzMTc0
QzAwNkJDQzI0IC8qIFdLUGFnZU5hbWVzcGFjZS5oICovLAogCQkJCUJDMTc3NDY0MTE4QjlGRjQw
MDdEOUU5QSAvKiBXS1BhZ2VQcml2YXRlLmggKi8sCiAJCQkJQkNENTk3Q0YxMTJCNTZBQzAwRUM4
QzIzIC8qIFdLUHJlZmVyZW5jZXMuY3BwICovLAogCQkJCUJDRDU5N0NFMTEyQjU2QUMwMEVDOEMy
MyAvKiBXS1ByZWZlcmVuY2VzLmggKi8sCkBAIC0yNTEwLDcgKzI1MDQsNiBAQAogCQkJCUJDQjlG
NkE1MTEyM0REMEQwMEExMzdFMCAvKiBXS0ZyYW1lUG9saWN5TGlzdGVuZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDRjY5RkE5MTE3NkQxQ0IwMDQ3MUE1MiAvKiBXS05hdmlnYXRpb25EYXRhLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQ0Q1OTdENzExMkI1NkRDMDBFQzhDMjMgLyogV0tQYWdlLmgg
aW4gSGVhZGVycyAqLywKLQkJCQlCQ0VFOThDRDExMzMxNzRDMDA2QkNDMjQgLyogV0tQYWdlTmFt
ZXNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE3NzQ2NTExOEI5RkY0MDA3RDlFOUEgLyog
V0tQYWdlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNENTk3RDAxMTJCNTZBQzAwRUM4
QzIzIC8qIFdLUHJlZmVyZW5jZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTc2MkI3NDhEMTIwQkM3
NUMwMDgxOTMzOSAvKiBXS1ByZWZlcmVuY2VzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
OTM1LDcgKzI5MjgsNiBAQAogCQkJCUJDQjlGNkE2MTEyM0REMEQwMEExMzdFMCAvKiBXS0ZyYW1l
UG9saWN5TGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNGNjlGQUExMTc2RDFDQjAw
NDcxQTUyIC8qIFdLTmF2aWdhdGlvbkRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNENTk3
RDYxMTJCNTZEQzAwRUM4QzIzIC8qIFdLUGFnZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCQ0VF
OThDQzExMzMxNzRDMDA2QkNDMjQgLyogV0tQYWdlTmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUJDRDU5N0QxMTEyQjU2QUMwMEVDOEMyMyAvKiBXS1ByZWZlcmVuY2VzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDODY5OUI2MTE2QUFEQUEwMDJBOTI1QiAvKiBXS1ZpZXcubW0gaW4g
U291cmNlcyAqLywKIAkJCQlCQzJFNkU4RDExNDE5NzE1MDBBNjNCMUUgLyogV29ya1F1ZXVlLmNw
cCBpbiBTb3VyY2VzICovLApJbmRleDogV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oJKHJldmlzaW9uIDczODgwKQorKysg
V2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTIyMjUsMTQgKzIy
MjUsNiBAQAogCQkJCQkJPgogCQkJCQk8L0ZpbGU+CiAJCQkJCTxGaWxlCi0JCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xBUElcQ1xXS1BhZ2VOYW1lc3BhY2UuY3BwIgotCQkJCQkJPgot
CQkJCQk8L0ZpbGU+Ci0JCQkJCTxGaWxlCi0JCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vz
c1xBUElcQ1xXS1BhZ2VOYW1lc3BhY2UuaCIKLQkJCQkJCT4KLQkJCQkJPC9GaWxlPgotCQkJCQk8
RmlsZQogCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcQVBJXENcV0tQYWdlUHJpdmF0
ZS5oIgogCQkJCQkJPgogCQkJCQk8L0ZpbGU+CkluZGV4OiBXZWJLaXQyL3dpbi9XZWJLaXQyR2Vu
ZXJhdGVkLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi93aW4vV2ViS2l0MkdlbmVyYXRlZC5t
YWtlCShyZXZpc2lvbiA3Mzg4MCkKKysrIFdlYktpdDIvd2luL1dlYktpdDJHZW5lcmF0ZWQubWFr
ZQkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNiBAQCBhbGw6CiAgICAgeGNvcHkgL3kgL2Qg
Ii4uXFVJUHJvY2Vzc1xBUElcQ1xXS05hdmlnYXRpb25EYXRhLmgiICIkKFdFQktJVE9VVFBVVERJ
UilcaW5jbHVkZVxXZWJLaXQyIgogICAgIHhjb3B5IC95IC9kICIuLlxVSVByb2Nlc3NcQVBJXENc
V0tQYWdlLmgiICIkKFdFQktJVE9VVFBVVERJUilcaW5jbHVkZVxXZWJLaXQyIgogICAgIHhjb3B5
IC95IC9kICIuLlxVSVByb2Nlc3NcQVBJXENcV0tQYWdlR3JvdXAuaCIgIiQoV0VCS0lUT1VUUFVU
RElSKVxpbmNsdWRlXFdlYktpdDIiCi0gICAgeGNvcHkgL3kgL2QgIi4uXFVJUHJvY2Vzc1xBUElc
Q1xXS1BhZ2VOYW1lc3BhY2UuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIi
CiAgICAgeGNvcHkgL3kgL2QgIi4uXFVJUHJvY2Vzc1xBUElcQ1xXS1ByZWZlcmVuY2VzLmgiICIk
KFdFQktJVE9VVFBVVERJUilcaW5jbHVkZVxXZWJLaXQyIgogICAgIHhjb3B5IC95IC9kICIuLlxV
SVByb2Nlc3NcQVBJXENcV0tQcmVmZXJlbmNlc1ByaXZhdGUuaCIgIiQoV0VCS0lUT1VUUFVURElS
KVxpbmNsdWRlXFdlYktpdDIiCiAgICAgeGNvcHkgL3kgL2QgIi4uXFVJUHJvY2Vzc1xBUElcQ1xX
S1Byb3RlY3Rpb25TcGFjZS5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIK
SW5kZXg6IFdlYktpdFRvb2xzL01pbmlCcm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFRvb2xzL01pbmlCcm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5oCShyZXZpc2lv
biA3Mzg4MCkKKysrIFdlYktpdFRvb2xzL01pbmlCcm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCwxMiArMzAsMTIgQEAgZW51bSBQcm9jZXNzTW9kZWwgewogdHlw
ZWRlZiB1bnNpZ25lZCBsb25nIFByb2Nlc3NNb2RlbDsKIAogQGludGVyZmFjZSBCcm93c2VyQXBw
RGVsZWdhdGUgOiBOU09iamVjdCA8TlNBcHBsaWNhdGlvbkRlbGVnYXRlPiB7Ci0gICAgUHJvY2Vz
c01vZGVsIGN1cnJlbnRQcm9jZXNzTW9kZWw7Ci0gICAgV0tQYWdlTmFtZXNwYWNlUmVmIHRocmVh
ZFBhZ2VOYW1lc3BhY2U7Ci0gICAgV0tQYWdlTmFtZXNwYWNlUmVmIHByb2Nlc3NQYWdlTmFtZXNw
YWNlOworICAgIFByb2Nlc3NNb2RlbCBfY3VycmVudFByb2Nlc3NNb2RlbDsKKyAgICBXS0NvbnRl
eHRSZWYgX3RocmVhZENvbnRleHQ7CisgICAgV0tDb250ZXh0UmVmIF9wcm9jZXNzQ29udGV4dDsK
IH0KIAotLSAoV0tQYWdlTmFtZXNwYWNlUmVmKWdldEN1cnJlbnRQYWdlTmFtZXNwYWNlOworLSAo
V0tDb250ZXh0UmVmKWdldEN1cnJlbnRDb250ZXh0OwogCiAtIChJQkFjdGlvbilzZXRTaGFyZWRQ
cm9jZXNzUHJvY2Vzc01vZGVsOihpZClzZW5kZXI7CiAtIChJQkFjdGlvbilzZXRTaGFyZWRUaHJl
YWRQcm9jZXNzTW9kZWw6KGlkKXNlbmRlcjsKSW5kZXg6IFdlYktpdFRvb2xzL01pbmlCcm93c2Vy
L21hYy9BcHBEZWxlZ2F0ZS5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL01pbmlCcm93c2Vy
L21hYy9BcHBEZWxlZ2F0ZS5tCShyZXZpc2lvbiA3Mzg4MCkKKysrIFdlYktpdFRvb2xzL01pbmlC
cm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsOSArMTE0LDkg
QEAgLSAoaWQpaW5pdAogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKHNlbGYpIHsK
ICAgICAgICAgaWYgKFtOU0V2ZW50IG1vZGlmaWVyRmxhZ3NdICYgTlNTaGlmdEtleU1hc2spCi0g
ICAgICAgICAgICBjdXJyZW50UHJvY2Vzc01vZGVsID0ga1Byb2Nlc3NNb2RlbFNoYXJlZFNlY29u
ZGFyeVRocmVhZDsKKyAgICAgICAgICAgIF9jdXJyZW50UHJvY2Vzc01vZGVsID0ga1Byb2Nlc3NN
b2RlbFNoYXJlZFNlY29uZGFyeVRocmVhZDsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY3Vy
cmVudFByb2Nlc3NNb2RlbCA9IGtQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzOwor
ICAgICAgICAgICAgX2N1cnJlbnRQcm9jZXNzTW9kZWwgPSBrUHJvY2Vzc01vZGVsU2hhcmVkU2Vj
b25kYXJ5UHJvY2VzczsKIAogICAgICAgICBXS0NvbnRleHRIaXN0b3J5Q2xpZW50IGhpc3RvcnlD
bGllbnQgPSB7CiAgICAgICAgICAgICAwLApAQCAtMTI4LDE3ICsxMjgsMTQgQEAgLSAoaWQpaW5p
dAogICAgICAgICAgICAgcG9wdWxhdGVWaXNpdGVkTGlua3MKICAgICAgICAgfTsKIAotICAgICAg
ICBXS0NvbnRleHRSZWYgdGhyZWFkQ29udGV4dCA9IFdLQ29udGV4dEdldFNoYXJlZFRocmVhZENv
bnRleHQoKTsKLSAgICAgICAgV0tDb250ZXh0U2V0SGlzdG9yeUNsaWVudCh0aHJlYWRDb250ZXh0
LCAmaGlzdG9yeUNsaWVudCk7Ci0gICAgICAgIFdLQ29udGV4dFNldENhY2hlTW9kZWwodGhyZWFk
Q29udGV4dCwga1dLQ2FjaGVNb2RlbFByaW1hcnlXZWJCcm93c2VyKTsKLQotICAgICAgICB0aHJl
YWRQYWdlTmFtZXNwYWNlID0gV0tQYWdlTmFtZXNwYWNlQ3JlYXRlKHRocmVhZENvbnRleHQpOwot
ICAgICAgICBXS1JlbGVhc2UodGhyZWFkQ29udGV4dCk7CisgICAgICAgIF90aHJlYWRDb250ZXh0
ID0gV0tDb250ZXh0R2V0U2hhcmVkVGhyZWFkQ29udGV4dCgpOworICAgICAgICBXS0NvbnRleHRT
ZXRIaXN0b3J5Q2xpZW50KF90aHJlYWRDb250ZXh0LCAmaGlzdG9yeUNsaWVudCk7CisgICAgICAg
IFdLQ29udGV4dFNldENhY2hlTW9kZWwoX3RocmVhZENvbnRleHQsIGtXS0NhY2hlTW9kZWxQcmlt
YXJ5V2ViQnJvd3Nlcik7CiAKICAgICAgICAgQ0ZTdHJpbmdSZWYgYnVuZGxlUGF0aENGID0gKENG
U3RyaW5nUmVmKVtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gcGF0aEZvckF1eGlsaWFyeUV4ZWN1dGFi
bGU6QCJXZWJCdW5kbGUuYnVuZGxlIl07CiAgICAgICAgIFdLU3RyaW5nUmVmIGJ1bmRsZVBhdGgg
PSBXS1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZyhidW5kbGVQYXRoQ0YpOwogCi0gICAgICAgIFdL
Q29udGV4dFJlZiBwcm9jZXNzQ29udGV4dCA9IFdLQ29udGV4dENyZWF0ZVdpdGhJbmplY3RlZEJ1
bmRsZVBhdGgoYnVuZGxlUGF0aCk7CisgICAgICAgIF9wcm9jZXNzQ29udGV4dCA9IFdLQ29udGV4
dENyZWF0ZVdpdGhJbmplY3RlZEJ1bmRsZVBhdGgoYnVuZGxlUGF0aCk7CiAgICAgICAgIAogICAg
ICAgICBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudCBidW5kbGVDbGllbnQgPSB7CiAgICAg
ICAgICAgICAwLCAgICAgIC8qIHZlcnNpb24gKi8KQEAgLTE0NiwxMiArMTQzLDkgQEAgLSAoaWQp
aW5pdAogICAgICAgICAgICAgZGlkUmVjaWV2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUsCiAg
ICAgICAgICAgICAwCiAgICAgICAgIH07Ci0gICAgICAgIFdLQ29udGV4dFNldEluamVjdGVkQnVu
ZGxlQ2xpZW50KHByb2Nlc3NDb250ZXh0LCAmYnVuZGxlQ2xpZW50KTsKLSAgICAgICAgV0tDb250
ZXh0U2V0SGlzdG9yeUNsaWVudChwcm9jZXNzQ29udGV4dCwgJmhpc3RvcnlDbGllbnQpOwotICAg
ICAgICBXS0NvbnRleHRTZXRDYWNoZU1vZGVsKHByb2Nlc3NDb250ZXh0LCBrV0tDYWNoZU1vZGVs
UHJpbWFyeVdlYkJyb3dzZXIpOwotCi0gICAgICAgIHByb2Nlc3NQYWdlTmFtZXNwYWNlID0gV0tQ
YWdlTmFtZXNwYWNlQ3JlYXRlKHByb2Nlc3NDb250ZXh0KTsKLSAgICAgICAgV0tSZWxlYXNlKHBy
b2Nlc3NDb250ZXh0KTsKKyAgICAgICAgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQo
X3Byb2Nlc3NDb250ZXh0LCAmYnVuZGxlQ2xpZW50KTsKKyAgICAgICAgV0tDb250ZXh0U2V0SGlz
dG9yeUNsaWVudChfcHJvY2Vzc0NvbnRleHQsICZoaXN0b3J5Q2xpZW50KTsKKyAgICAgICAgV0tD
b250ZXh0U2V0Q2FjaGVNb2RlbChfcHJvY2Vzc0NvbnRleHQsIGtXS0NhY2hlTW9kZWxQcmltYXJ5
V2ViQnJvd3Nlcik7CiAKICAgICAgICAgV0tSZWxlYXNlKGJ1bmRsZVBhdGgpOwogICAgIH0KQEAg
LTE2MSwzMiArMTU1LDMyIEBAIC0gKGlkKWluaXQKIAogLSAoSUJBY3Rpb24pbmV3V2luZG93Oihp
ZClzZW5kZXIKIHsKLSAgICBCcm93c2VyV2luZG93Q29udHJvbGxlciAqY29udHJvbGxlciA9IFtb
QnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoUGFnZU5hbWVzcGFjZTpbc2Vs
ZiBnZXRDdXJyZW50UGFnZU5hbWVzcGFjZV1dOworICAgIEJyb3dzZXJXaW5kb3dDb250cm9sbGVy
ICpjb250cm9sbGVyID0gW1tCcm93c2VyV2luZG93Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhD
b250ZXh0OltzZWxmIGdldEN1cnJlbnRDb250ZXh0XV07CiAgICAgW1tjb250cm9sbGVyIHdpbmRv
d10gbWFrZUtleUFuZE9yZGVyRnJvbnQ6c2VuZGVyXTsKICAgICAKICAgICBbY29udHJvbGxlciBs
b2FkVVJMU3RyaW5nOmRlZmF1bHRVUkxdOwogfQogCi0tIChXS1BhZ2VOYW1lc3BhY2VSZWYpZ2V0
Q3VycmVudFBhZ2VOYW1lc3BhY2UKKy0gKFdLQ29udGV4dFJlZilnZXRDdXJyZW50Q29udGV4dAog
ewotICAgIHJldHVybiAoY3VycmVudFByb2Nlc3NNb2RlbCA9PSBrUHJvY2Vzc01vZGVsU2hhcmVk
U2Vjb25kYXJ5VGhyZWFkKSA/IHRocmVhZFBhZ2VOYW1lc3BhY2UgOiBwcm9jZXNzUGFnZU5hbWVz
cGFjZTsKKyAgICByZXR1cm4gKF9jdXJyZW50UHJvY2Vzc01vZGVsID09IGtQcm9jZXNzTW9kZWxT
aGFyZWRTZWNvbmRhcnlUaHJlYWQpID8gX3RocmVhZENvbnRleHQgOiBfcHJvY2Vzc0NvbnRleHQ7
CiB9CiAKIC0gKEJPT0wpdmFsaWRhdGVNZW51SXRlbTooTlNNZW51SXRlbSAqKW1lbnVJdGVtCiB7
CiAgICAgaWYgKFttZW51SXRlbSBhY3Rpb25dID09IEBzZWxlY3RvcihzZXRTaGFyZWRQcm9jZXNz
UHJvY2Vzc01vZGVsOikpCi0gICAgICAgIFttZW51SXRlbSBzZXRTdGF0ZTpjdXJyZW50UHJvY2Vz
c01vZGVsID09IGtQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzID8gTlNPblN0YXRl
IDogTlNPZmZTdGF0ZV07CisgICAgICAgIFttZW51SXRlbSBzZXRTdGF0ZTpfY3VycmVudFByb2Nl
c3NNb2RlbCA9PSBrUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcyA/IE5TT25TdGF0
ZSA6IE5TT2ZmU3RhdGVdOwogICAgIGVsc2UgaWYgKFttZW51SXRlbSBhY3Rpb25dID09IEBzZWxl
Y3RvcihzZXRTaGFyZWRUaHJlYWRQcm9jZXNzTW9kZWw6KSkKLSAgICAgICAgW21lbnVJdGVtIHNl
dFN0YXRlOmN1cnJlbnRQcm9jZXNzTW9kZWwgPT0ga1Byb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFy
eVRocmVhZCA/IE5TT25TdGF0ZSA6IE5TT2ZmU3RhdGVdOworICAgICAgICBbbWVudUl0ZW0gc2V0
U3RhdGU6X2N1cnJlbnRQcm9jZXNzTW9kZWwgPT0ga1Byb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFy
eVRocmVhZCA/IE5TT25TdGF0ZSA6IE5TT2ZmU3RhdGVdOwogICAgIHJldHVybiBZRVM7CiB9ICAg
ICAgICAKIAogLSAodm9pZClfc2V0UHJvY2Vzc01vZGVsOihQcm9jZXNzTW9kZWwpcHJvY2Vzc01v
ZGVsCiB7Ci0gICAgaWYgKHByb2Nlc3NNb2RlbCA9PSBjdXJyZW50UHJvY2Vzc01vZGVsKQorICAg
IGlmIChwcm9jZXNzTW9kZWwgPT0gX2N1cnJlbnRQcm9jZXNzTW9kZWwpCiAgICAgICAgIHJldHVy
bjsKICAKLSAgICBjdXJyZW50UHJvY2Vzc01vZGVsID0gcHJvY2Vzc01vZGVsOworICAgIF9jdXJy
ZW50UHJvY2Vzc01vZGVsID0gcHJvY2Vzc01vZGVsOwogfQogCiAtIChJQkFjdGlvbilzZXRTaGFy
ZWRQcm9jZXNzUHJvY2Vzc01vZGVsOihpZClzZW5kZXIKQEAgLTIwMyw4ICsxOTcsOCBAQCAtIChJ
QkFjdGlvbilzaG93U3RhdGlzdGljc1dpbmRvdzooaWQpc2VuCiB7CiAgICAgc3RhdGljIEJyb3dz
ZXJTdGF0aXN0aWNzV2luZG93Q29udHJvbGxlciogd2luZG93Q29udHJvbGxlcjsKICAgICBpZiAo
IXdpbmRvd0NvbnRyb2xsZXIpCi0gICAgICAgIHdpbmRvd0NvbnRyb2xsZXIgPSBbW0Jyb3dzZXJT
dGF0aXN0aWNzV2luZG93Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhUaHJlYWRlZFdLQ29udGV4
dFJlZjpXS1BhZ2VOYW1lc3BhY2VHZXRDb250ZXh0KHRocmVhZFBhZ2VOYW1lc3BhY2UpIAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHByb2Nlc3NXS0NvbnRleHRSZWY6V0tQYWdlTmFtZXNwYWNlR2V0
Q29udGV4dChwcm9jZXNzUGFnZU5hbWVzcGFjZSldOworICAgICAgICB3aW5kb3dDb250cm9sbGVy
ID0gW1tCcm93c2VyU3RhdGlzdGljc1dpbmRvd0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoVGhy
ZWFkZWRXS0NvbnRleHRSZWY6X3RocmVhZENvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
cm9jZXNzV0tDb250ZXh0UmVmOl9wcm9jZXNzQ29udGV4dF07CiAKICAgICBbW3dpbmRvd0NvbnRy
b2xsZXIgd2luZG93XSBtYWtlS2V5QW5kT3JkZXJGcm9udDpzZWxmXTsKIH0KQEAgLTIyNCwxMiAr
MjE4LDkgQEAgLSAodm9pZClhcHBsaWNhdGlvbldpbGxUZXJtaW5hdGU6KE5TTm90aQogICAgICAg
ICAgICAgW2NvbnRyb2xsZXIgYXBwbGljYXRpb25UZXJtaW5hdGluZ107CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgCi0gICAgV0tSZWxlYXNlKHRocmVhZFBhZ2VOYW1lc3BhY2UpOwotICAgIHRocmVh
ZFBhZ2VOYW1lc3BhY2UgPSAwOwogCi0gICAgV0tSZWxlYXNlKHByb2Nlc3NQYWdlTmFtZXNwYWNl
KTsKLSAgICBwcm9jZXNzUGFnZU5hbWVzcGFjZSA9IDA7CisgICAgV0tSZWxlYXNlKF9wcm9jZXNz
Q29udGV4dCk7CisgICAgX3Byb2Nlc3NDb250ZXh0ID0gMDsKIH0KIAogLSAoQnJvd3NlcldpbmRv
d0NvbnRyb2xsZXIgKilmcm9udG1vc3RCcm93c2VyV2luZG93Q29udHJvbGxlcgpAQCAtMjY1LDcg
KzI1Niw3IEBAIC0gKHZvaWQpb3BlblBhbmVsRGlkRW5kOihOU09wZW5QYW5lbCAqKXMKIAogICAg
IEJyb3dzZXJXaW5kb3dDb250cm9sbGVyICpjb250cm9sbGVyID0gW3NlbGYgZnJvbnRtb3N0QnJv
d3NlcldpbmRvd0NvbnRyb2xsZXJdOwogICAgIGlmICghY29udHJvbGxlcikgewotICAgICAgICBj
b250cm9sbGVyID0gW1tCcm93c2VyV2luZG93Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhQYWdl
TmFtZXNwYWNlOltzZWxmIGdldEN1cnJlbnRQYWdlTmFtZXNwYWNlXV07CisgICAgICAgIGNvbnRy
b2xsZXIgPSBbW0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aENvbnRleHQ6
W3NlbGYgZ2V0Q3VycmVudENvbnRleHRdXTsKICAgICAgICAgW1tjb250cm9sbGVyIHdpbmRvd10g
bWFrZUtleUFuZE9yZGVyRnJvbnQ6c2VsZl07CiAgICAgfQogICAgIApJbmRleDogV2ViS2l0VG9v
bHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLmgJ
KHJldmlzaW9uIDczODgwKQorKysgV2ViS2l0VG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJX
aW5kb3dDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgQGludGVy
ZmFjZSBCcm93c2VyV2luZG93Q29udHJvbGxlciA6IE5TVwogICAgIAogICAgIElCT3V0bGV0IE5T
V2luZG93ICpmaW5kUGFuZWxXaW5kb3c7CiAgICAgCi0gICAgV0tQYWdlTmFtZXNwYWNlUmVmIF9w
YWdlTmFtZXNwYWNlOworICAgIFdLQ29udGV4dFJlZiBfY29udGV4dDsKICAgICBXS1ZpZXcgKl93
ZWJWaWV3OwogICAgIEJPT0wgX3pvb21UZXh0T25seTsKIH0KQEAgLTQ3LDcgKzQ3LDcgQEAgQGlu
dGVyZmFjZSBCcm93c2VyV2luZG93Q29udHJvbGxlciA6IE5TVwogLSAoSUJBY3Rpb24pc2hvd0hp
ZGVXZWJWaWV3OihpZClzZW5kZXI7CiAtIChJQkFjdGlvbilyZW1vdmVSZWluc2VydFdlYlZpZXc6
KGlkKXNlbmRlcjsKIAotLSAoaWQpaW5pdFdpdGhQYWdlTmFtZXNwYWNlOihXS1BhZ2VOYW1lc3Bh
Y2VSZWYpcGFnZU5hbWVzcGFjZTsKKy0gKGlkKWluaXRXaXRoQ29udGV4dDooV0tDb250ZXh0UmVm
KWNvbnRleHQ7CiAtICh2b2lkKWxvYWRVUkxTdHJpbmc6KE5TU3RyaW5nICopdXJsU3RyaW5nOwog
LSAodm9pZClhcHBsaWNhdGlvblRlcm1pbmF0aW5nOwogCkluZGV4OiBXZWJLaXRUb29scy9NaW5p
QnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9NaW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQkocmV2aXNp
b24gNzM4ODApCisrKyBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0Nv
bnRyb2xsZXIubQkod29ya2luZyBjb3B5KQpAQCAtNDMsMTAgKzQzLDEwIEBAIC0gKHZvaWQpZGlk
U2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW0KIAogQGltcGxlbWVudGF0aW9uIEJyb3dzZXJX
aW5kb3dDb250cm9sbGVyCiAKLS0gKGlkKWluaXRXaXRoUGFnZU5hbWVzcGFjZTooV0tQYWdlTmFt
ZXNwYWNlUmVmKXBhZ2VOYW1lc3BhY2UKKy0gKGlkKWluaXRXaXRoQ29udGV4dDooV0tDb250ZXh0
UmVmKWNvbnRleHQKIHsKICAgICBpZiAoKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhXaW5kb3dOaWJO
YW1lOkAiQnJvd3NlcldpbmRvdyJdKSkgewotICAgICAgICBfcGFnZU5hbWVzcGFjZSA9IFdLUmV0
YWluKHBhZ2VOYW1lc3BhY2UpOworICAgICAgICBfY29udGV4dCA9IFdLUmV0YWluKGNvbnRleHQp
OwogICAgICAgICBfem9vbVRleHRPbmx5ID0gTk87CiAgICAgfQogICAgIApAQCAtNTUsNyArNTUs
NyBAQCAtIChpZClpbml0V2l0aFBhZ2VOYW1lc3BhY2U6KFdLUGFnZU5hbWVzCiAKIC0gKHZvaWQp
ZGVhbGxvYwogewotICAgIGFzc2VydCghX3BhZ2VOYW1lc3BhY2UpOworICAgIGFzc2VydCghX2Nv
bnRleHQpOwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIApAQCAtMTU3LDggKzE1Nyw4IEBAIC0g
KEJPT0wpd2luZG93U2hvdWxkQ2xvc2U6KGlkKXNlbmRlcgogCiAtICh2b2lkKXdpbmRvd1dpbGxD
bG9zZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KIHsKLSAgICBXS1JlbGVhc2UoX3Bh
Z2VOYW1lc3BhY2UpOwotICAgIF9wYWdlTmFtZXNwYWNlID0gMDsKKyAgICBXS1JlbGVhc2UoX2Nv
bnRleHQpOworICAgIF9jb250ZXh0ID0gMDsKIH0KIAogLSAodm9pZClhcHBsaWNhdGlvblRlcm1p
bmF0aW5nCkBAIC0zODAsNyArMzgwLDcgQEAgc3RhdGljIHZvaWQgZGVjaWRlUG9saWN5Rm9yTUlN
RVR5cGUoV0tQYQogc3RhdGljIFdLUGFnZVJlZiBjcmVhdGVOZXdQYWdlKFdLUGFnZVJlZiBwYWdl
LCBXS0RpY3Rpb25hcnlSZWYgZmVhdHVyZXMsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBX
S0V2ZW50TW91c2VCdXR0b24gYnV0dG9uLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewogICAg
IExPRyhAImNyZWF0ZU5ld1BhZ2UiKTsKLSAgICBCcm93c2VyV2luZG93Q29udHJvbGxlciAqY29u
dHJvbGxlciA9IFtbQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoUGFnZU5h
bWVzcGFjZTpXS1BhZ2VHZXRQYWdlTmFtZXNwYWNlKHBhZ2UpXTsKKyAgICBCcm93c2VyV2luZG93
Q29udHJvbGxlciAqY29udHJvbGxlciA9IFtbQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgYWxsb2Nd
IGluaXRXaXRoQ29udGV4dDpXS1BhZ2VHZXRDb250ZXh0KHBhZ2UpXTsKICAgICBbY29udHJvbGxl
ciBsb2FkV2luZG93XTsKIAogICAgIHJldHVybiBjb250cm9sbGVyLT5fd2ViVmlldy5wYWdlUmVm
OwpAQCAtNTM3LDcgKzUzNyw3IEBAIHN0YXRpYyBib29sIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1Q
YW5lbCgKIAogLSAodm9pZClhd2FrZUZyb21OaWIKIHsKLSAgICBfd2ViVmlldyA9IFtbV0tWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOltjb250YWluZXJWaWV3IGZyYW1lXSBwYWdlTmFtZXNwYWNl
UmVmOl9wYWdlTmFtZXNwYWNlXTsKKyAgICBfd2ViVmlldyA9IFtbV0tWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOltjb250YWluZXJWaWV3IGZyYW1lXSBjb250ZXh0UmVmOl9jb250ZXh0XTsKIAog
ICAgIFtjb250YWluZXJWaWV3IGFkZFN1YnZpZXc6X3dlYlZpZXddOwogICAgIFtfd2ViVmlldyBz
ZXRGcmFtZTpbY29udGFpbmVyVmlldyBmcmFtZV1dOwpJbmRleDogV2ViS2l0VG9vbHMvTWluaUJy
b3dzZXIvd2luL0Jyb3dzZXJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9NaW5p
QnJvd3Nlci93aW4vQnJvd3NlclZpZXcuY3BwCShyZXZpc2lvbiA3Mzg4MCkKKysrIFdlYktpdFRv
b2xzL01pbmlCcm93c2VyL3dpbi9Ccm93c2VyVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkw
LDkgKzkwLDcgQEAgdm9pZCBCcm93c2VyVmlldzo6Y3JlYXRlKFJFQ1Qgd2ViVmlld1JlYwogICAg
IGVsc2UKICAgICAgICAgY29udGV4dCA9IFdLQ29udGV4dEdldFNoYXJlZFByb2Nlc3NDb250ZXh0
KCk7CiAKLSAgICBXS1BhZ2VOYW1lc3BhY2VSZWYgcGFnZU5hbWVzcGFjZSA9IFdLUGFnZU5hbWVz
cGFjZUNyZWF0ZShjb250ZXh0KTsKLQotICAgIG1fd2ViVmlldyA9IFdLVmlld0NyZWF0ZSh3ZWJW
aWV3UmVjdCwgcGFnZU5hbWVzcGFjZSwgMCwgcGFyZW50V2luZG93LT53aW5kb3coKSk7CisgICAg
bV93ZWJWaWV3ID0gV0tWaWV3Q3JlYXRlKHdlYlZpZXdSZWN0LCBjb250ZXh0LCAwLCBwYXJlbnRX
aW5kb3ctPndpbmRvdygpKTsKIAogICAgIFdLUGFnZVVJQ2xpZW50IHVpQ2xpZW50ID0gewogICAg
ICAgICAwLCAgICAgICAgICAgICAgLyogdmVyc2lvbiAqLwpJbmRleDogV2ViS2l0VG9vbHMvVGVz
dFdlYktpdEFQSS9QbGF0Zm9ybVdlYlZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9U
ZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oCShyZXZpc2lvbiA3Mzg4MCkKKysrIFdlYktp
dFRvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAg
LTUxLDcgKzUxLDggQEAgY2xhc3MgV2luZG93TWVzc2FnZU9ic2VydmVyOwogCiBjbGFzcyBQbGF0
Zm9ybVdlYlZpZXcgewogcHVibGljOgotICAgIFBsYXRmb3JtV2ViVmlldyhXS1BhZ2VOYW1lc3Bh
Y2VSZWYsIFdLUGFnZUdyb3VwUmVmID0gMCk7CisgICAgUGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4
dFJlZiwgV0tQYWdlR3JvdXBSZWYgPSAwKTsKKyAgICBQbGF0Zm9ybVdlYlZpZXcoV0tQYWdlUmVm
LCBXS1BhZ2VHcm91cFJlZiA9IDApOwogICAgIH5QbGF0Zm9ybVdlYlZpZXcoKTsKIAogICAgIFdL
UGFnZVJlZiBwYWdlKCk7CkluZGV4OiBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDIvRG9jdW1lbnRTdGFydFVzZXJTY3JpcHRBbGVydENyYXNoLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRG9jdW1lbnRTdGFydFVz
ZXJTY3JpcHRBbGVydENyYXNoLmNwcAkocmV2aXNpb24gNzM4ODApCisrKyBXZWJLaXRUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRG9jdW1lbnRTdGFydFVzZXJTY3JpcHRBbGVydENy
YXNoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsOCArNDgsNyBAQCBURVNUKFdlYktpdDIsIERv
Y3VtZW50U3RhcnRVc2VyU2NyaXB0QWxlCiAgICAgV0tSZXRhaW5QdHI8V0tQYWdlR3JvdXBSZWY+
IHBhZ2VHcm91cChBZG9wdFdLLCBXS1BhZ2VHcm91cENyZWF0ZVdpdGhJZGVudGlmaWVyKFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJEb2N1bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jh
c2hUZXN0UGFnZUdyb3VwIikpKTsgCiAKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNv
bnRleHQoQWRvcHRXSywgVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgi
RG9jdW1lbnRTdGFydFVzZXJTY3JpcHRBbGVydENyYXNoVGVzdCIsIHBhZ2VHcm91cC5nZXQoKSkp
OwotICAgIFdLUmV0YWluUHRyPFdLUGFnZU5hbWVzcGFjZVJlZj4gcGFnZU5hbWVzcGFjZShBZG9w
dFdLLCBXS1BhZ2VOYW1lc3BhY2VDcmVhdGUoY29udGV4dC5nZXQoKSkpOwotICAgIFBsYXRmb3Jt
V2ViVmlldyB3ZWJWaWV3KHBhZ2VOYW1lc3BhY2UuZ2V0KCksIHBhZ2VHcm91cC5nZXQoKSk7Cisg
ICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSwgcGFnZUdyb3VwLmdldCgp
KTsKIAogICAgIFdLUGFnZVVJQ2xpZW50IHVpQ2xpZW50OwogICAgIG1lbXNldCgmdWlDbGllbnQs
IDAsIHNpemVvZih1aUNsaWVudCkpOwpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyL0V2YWx1YXRlSmF2YVNjcmlwdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0V2YWx1YXRlSmF2YVNjcmlwdC5jcHAJ
KHJldmlzaW9uIDczODgwKQorKysgV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyL0V2YWx1YXRlSmF2YVNjcmlwdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDggKzQ5LDcg
QEAgc3RhdGljIHZvaWQgZGlkUnVuSmF2YVNjcmlwdChXS1N0cmluZ1JlZgogVEVTVChXZWJLaXQy
LCBFdmFsdWF0ZUphdmFTY3JpcHRUaGF0VGhyb3dzQW5FeGNlcHRpb24pCiB7CiAgICAgV0tSZXRh
aW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFdLQ29udGV4dENyZWF0ZSgpKTsK
LSAgICBXS1JldGFpblB0cjxXS1BhZ2VOYW1lc3BhY2VSZWY+IHBhZ2VOYW1lc3BhY2UoQWRvcHRX
SywgV0tQYWdlTmFtZXNwYWNlQ3JlYXRlKGNvbnRleHQuZ2V0KCkpKTsKLSAgICBQbGF0Zm9ybVdl
YlZpZXcgd2ViVmlldyhwYWdlTmFtZXNwYWNlLmdldCgpKTsKKyAgICBQbGF0Zm9ybVdlYlZpZXcg
d2ViVmlldyhjb250ZXh0LmdldCgpKTsKIAogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBq
YXZhU2NyaXB0U3RyaW5nKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJ0
aHJvdyAnSGVsbG8nIikpOwogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh3ZWJW
aWV3LnBhZ2UoKSwgamF2YVNjcmlwdFN0cmluZy5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oMHgxMjM0NTc4KSwgZGlkUnVuSmF2YVNjcmlwdCk7CkluZGV4OiBXZWJLaXRUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRmFpbGVkTG9hZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0ZhaWxlZExvYWQuY3BwCShyZXZp
c2lvbiA3Mzg4MCkKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9G
YWlsZWRMb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksOCArNDksNyBAQCBzdGF0aWMgdm9p
ZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVyCiBURVNUKFdlYktpdDIsIEZhaWxlZExvYWQp
CiB7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFdLQ29u
dGV4dENyZWF0ZSgpKTsKLSAgICBXS1JldGFpblB0cjxXS1BhZ2VOYW1lc3BhY2VSZWY+IHBhZ2VO
YW1lc3BhY2UoQWRvcHRXSywgV0tQYWdlTmFtZXNwYWNlQ3JlYXRlKGNvbnRleHQuZ2V0KCkpKTsK
LSAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhwYWdlTmFtZXNwYWNlLmdldCgpKTsKKyAgICBQ
bGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgpKTsKIAogICAgIFdLUGFnZUxvYWRl
ckNsaWVudCBsb2FkZXJDbGllbnQ7CiAgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVv
Zihsb2FkZXJDbGllbnQpKTsKSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9GaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvRmluZC5jcHAJKHJldmlzaW9uIDczODgwKQorKysgV2ViS2l0VG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0ZpbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MSw5ICs1MSw3IEBAIHN0YXRpYyB2b2lkIGRpZENvdW50U3RyaW5nTWF0Y2hlcyhXS1BhZ2UKIFRF
U1QoV2ViS2l0MiwgRmluZCkKIHsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRl
eHQoQWRvcHRXSywgV0tDb250ZXh0Q3JlYXRlKCkpOwotICAgIFdLUmV0YWluUHRyPFdLUGFnZU5h
bWVzcGFjZVJlZj4gcGFnZU5hbWVzcGFjZShBZG9wdFdLLCBXS1BhZ2VOYW1lc3BhY2VDcmVhdGUo
Y29udGV4dC5nZXQoKSkpOwotICAgIAotICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KHBhZ2VO
YW1lc3BhY2UuZ2V0KCkpOworICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0
KCkpOwogICAgIAogICAgIFdLUGFnZUxvYWRlckNsaWVudCBsb2FkZXJDbGllbnQ7CiAgICAgbWVt
c2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKSW5kZXg6IFdlYktp
dFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9GcmFtZU1JTUVUeXBlSFRNTC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0Zy
YW1lTUlNRVR5cGVIVE1MLmNwcAkocmV2aXNpb24gNzM4ODApCisrKyBXZWJLaXRUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRnJhbWVNSU1FVHlwZUhUTUwuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01Nyw4ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShX
S1BhZ2UKIFRFU1QoV2ViS2l0MiwgRnJhbWVNSU1FVHlwZUhUTUwpCiB7CiAgICAgV0tSZXRhaW5Q
dHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFdLQ29udGV4dENyZWF0ZSgpKTsKLSAg
ICBXS1JldGFpblB0cjxXS1BhZ2VOYW1lc3BhY2VSZWY+IHBhZ2VOYW1lc3BhY2UoQWRvcHRXSywg
V0tQYWdlTmFtZXNwYWNlQ3JlYXRlKGNvbnRleHQuZ2V0KCkpKTsKLSAgICBQbGF0Zm9ybVdlYlZp
ZXcgd2ViVmlldyhwYWdlTmFtZXNwYWNlLmdldCgpKTsKKyAgICBQbGF0Zm9ybVdlYlZpZXcgd2Vi
Vmlldyhjb250ZXh0LmdldCgpKTsKIAogICAgIFdLUGFnZUxvYWRlckNsaWVudCBsb2FkZXJDbGll
bnQ7CiAgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsK
SW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9GcmFtZU1JTUVU
eXBlUE5HLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvRnJhbWVNSU1FVHlwZVBORy5jcHAJKHJldmlzaW9uIDczODgwKQorKysgV2ViS2l0
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0ZyYW1lTUlNRVR5cGVQTkcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01Nyw4ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRG
b3JGcmFtZShXS1BhZ2UKIFRFU1QoV2ViS2l0MiwgRnJhbWVNSU1FVHlwZVBORykKIHsKICAgICBX
S1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgV0tDb250ZXh0Q3JlYXRl
KCkpOwotICAgIFdLUmV0YWluUHRyPFdLUGFnZU5hbWVzcGFjZVJlZj4gcGFnZU5hbWVzcGFjZShB
ZG9wdFdLLCBXS1BhZ2VOYW1lc3BhY2VDcmVhdGUoY29udGV4dC5nZXQoKSkpOwotICAgIFBsYXRm
b3JtV2ViVmlldyB3ZWJWaWV3KHBhZ2VOYW1lc3BhY2UuZ2V0KCkpOworICAgIFBsYXRmb3JtV2Vi
VmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwogCiAgICAgV0tQYWdlTG9hZGVyQ2xpZW50IGxv
YWRlckNsaWVudDsKICAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRlckNs
aWVudCkpOwpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0lu
amVjdGVkQnVuZGxlQmFzaWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9JbmplY3RlZEJ1bmRsZUJhc2ljLmNwcAkocmV2aXNpb24gNzM4
ODApCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvSW5qZWN0ZWRC
dW5kbGVCYXNpYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDYgQEAgc3RhdGljIHZv
aWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZQogVEVTVChXZWJLaXQyLCBJbmplY3RlZEJ1
bmRsZUJhc2ljKQogewogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9w
dFdLLCBVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJJbmplY3RlZEJ1
bmRsZUJhc2ljVGVzdCIpKTsKLSAgICBXS1JldGFpblB0cjxXS1BhZ2VOYW1lc3BhY2VSZWY+IHBh
Z2VOYW1lc3BhY2UoQWRvcHRXSywgV0tQYWdlTmFtZXNwYWNlQ3JlYXRlKGNvbnRleHQuZ2V0KCkp
KTsKIAogICAgIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50IGluamVjdGVkQnVuZGxlQ2xp
ZW50OwogICAgIG1lbXNldCgmaW5qZWN0ZWRCdW5kbGVDbGllbnQsIDAsIHNpemVvZihpbmplY3Rl
ZEJ1bmRsZUNsaWVudCkpOwpAQCAtNjIsNyArNjEsNyBAQCBURVNUKFdlYktpdDIsIEluamVjdGVk
QnVuZGxlQmFzaWMpCiAgICAgaW5qZWN0ZWRCdW5kbGVDbGllbnQuZGlkUmVjZWl2ZU1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGUgPSBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZTsK
ICAgICBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb250ZXh0LmdldCgpLCAmaW5q
ZWN0ZWRCdW5kbGVDbGllbnQpOwogIAotICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KHBhZ2VO
YW1lc3BhY2UuZ2V0KCkpOworICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0
KCkpOwogCiAgICAgV0tQYWdlTG9hZGVyQ2xpZW50IGxvYWRlckNsaWVudDsKICAgICBtZW1zZXQo
JmxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRlckNsaWVudCkpOwpJbmRleDogV2ViS2l0VG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1BhZ2VMb2FkQmFzaWMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9QYWdlTG9hZEJh
c2ljLmNwcAkocmV2aXNpb24gNzM4ODApCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvUGFnZUxvYWRCYXNpYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMyw5ICsx
MTMsNyBAQCBURVNUKFdlYktpdDIsIFBhZ2VMb2FkQmFzaWMpCiAgICAgU3RhdGUgc3RhdGU7CiAK
ICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgV0tDb250ZXh0
Q3JlYXRlKCkpOwotICAgIFdLUmV0YWluUHRyPFdLUGFnZU5hbWVzcGFjZVJlZj4gcGFnZU5hbWVz
cGFjZShBZG9wdFdLLCBXS1BhZ2VOYW1lc3BhY2VDcmVhdGUoY29udGV4dC5nZXQoKSkpOwotIAot
ICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KHBhZ2VOYW1lc3BhY2UuZ2V0KCkpOworICAgIFBs
YXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwogCiAgICAgV0tQYWdlTG9hZGVy
Q2xpZW50IGxvYWRlckNsaWVudDsKICAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9m
KGxvYWRlckNsaWVudCkpOwpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyL1BhZ2VMb2FkRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9QYWdl
TG9hZERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lLmNwcAkocmV2aXNpb24gNzM4
ODApCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUGFnZUxvYWRE
aWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYwLDkgKzYwLDcgQEAgc3RhdGljIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvcgog
VEVTVChXZWJLaXQyLCBQYWdlTG9hZERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1l
KQogewogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBXS0Nv
bnRleHRDcmVhdGUoKSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tQYWdlTmFtZXNwYWNlUmVmPiBwYWdl
TmFtZXNwYWNlKEFkb3B0V0ssIFdLUGFnZU5hbWVzcGFjZUNyZWF0ZShjb250ZXh0LmdldCgpKSk7
Ci0KLSAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhwYWdlTmFtZXNwYWNlLmdldCgpKTsKKyAg
ICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgpKTsKIAogICAgIFdLUGFnZUxv
YWRlckNsaWVudCBsb2FkZXJDbGllbnQ7CiAgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNp
emVvZihsb2FkZXJDbGllbnQpKTsKSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi9QcmV2ZW50RW1wdHlVc2VyQWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9QcmV2ZW50RW1wdHlVc2VyQWdlbnQu
Y3BwCShyZXZpc2lvbiA3Mzg4MCkKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9QcmV2ZW50RW1wdHlVc2VyQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw4
ICs0OCw3IEBAIHN0YXRpYyB2b2lkIGRpZFJ1bkphdmFTY3JpcHQoV0tTdHJpbmdSZWYKIFRFU1Qo
V2ViS2l0MiwgUHJldmVudEVtcHR5VXNlckFnZW50KQogewogICAgIFdLUmV0YWluUHRyPFdLQ29u
dGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBXS0NvbnRleHRDcmVhdGUoKSk7Ci0gICAgV0tSZXRh
aW5QdHI8V0tQYWdlTmFtZXNwYWNlUmVmPiBwYWdlTmFtZXNwYWNlKEFkb3B0V0ssIFdLUGFnZU5h
bWVzcGFjZUNyZWF0ZShjb250ZXh0LmdldCgpKSk7Ci0gICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZp
ZXcocGFnZU5hbWVzcGFjZS5nZXQoKSk7CisgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29u
dGV4dC5nZXQoKSk7CiAKICAgICBXS1BhZ2VTZXRDdXN0b21Vc2VyQWdlbnQod2ViVmlldy5wYWdl
KCksIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCIiKSk7CiAgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IGphdmFTY3JpcHRTdHJpbmcoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIm5hdmlnYXRvci51c2VyQWdlbnQiKSk7CkluZGV4OiBXZWJLaXRUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvU3BhY2ViYXJTY3JvbGxpbmcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9TcGFjZWJhclNj
cm9sbGluZy5jcHAJKHJldmlzaW9uIDczODgwKQorKysgV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL1NwYWNlYmFyU2Nyb2xsaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzksOSArNzksNyBAQCBzdGF0aWMgYm9vbCBydW5KU1Rlc3QoV0tQYWdlUmVmIHBhZ2UsIGNvCiBU
RVNUKFdlYktpdDIsIFNwYWNlYmFyU2Nyb2xsaW5nKQogewogICAgIFdLUmV0YWluUHRyPFdLQ29u
dGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBXS0NvbnRleHRDcmVhdGUoKSk7Ci0gICAgV0tSZXRh
aW5QdHI8V0tQYWdlTmFtZXNwYWNlUmVmPiBwYWdlTmFtZXNwYWNlKEFkb3B0V0ssIFdLUGFnZU5h
bWVzcGFjZUNyZWF0ZShjb250ZXh0LmdldCgpKSk7Ci0KLSAgICBQbGF0Zm9ybVdlYlZpZXcgd2Vi
VmlldyhwYWdlTmFtZXNwYWNlLmdldCgpKTsKKyAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhj
b250ZXh0LmdldCgpKTsKIAogICAgIFdLUGFnZUxvYWRlckNsaWVudCBsb2FkZXJDbGllbnQ7CiAg
ICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKSW5kZXg6
IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi93aW4vQWx0S2V5R2VuZXJh
dGVzV01TeXNDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDIvd2luL0FsdEtleUdlbmVyYXRlc1dNU3lzQ29tbWFuZC5jcHAJKHJl
dmlzaW9uIDczODgwKQorKysgV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L3dpbi9BbHRLZXlHZW5lcmF0ZXNXTVN5c0NvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
MSw5ICs2MSw3IEBAIHN0YXRpYyB2b2lkIGRpZE5vdEhhbmRsZUtleUV2ZW50Q2FsbGJhY2sKIFRF
U1QoV2ViS2l0MiwgQWx0S2V5R2VuZXJhdGVzV01TeXNDb21tYW5kKQogewogICAgIFdLUmV0YWlu
UHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBXS0NvbnRleHRDcmVhdGUoKSk7Ci0g
ICAgV0tSZXRhaW5QdHI8V0tQYWdlTmFtZXNwYWNlUmVmPiBwYWdlTmFtZXNwYWNlKEFkb3B0V0ss
IFdLUGFnZU5hbWVzcGFjZUNyZWF0ZShjb250ZXh0LmdldCgpKSk7Ci0KLSAgICBQbGF0Zm9ybVdl
YlZpZXcgd2ViVmlldyhwYWdlTmFtZXNwYWNlLmdldCgpKTsKKyAgICBQbGF0Zm9ybVdlYlZpZXcg
d2ViVmlldyhjb250ZXh0LmdldCgpKTsKIAogICAgIFdLUGFnZVVJQ2xpZW50IHVpQ2xpZW50Owog
ICAgIG1lbXNldCgmdWlDbGllbnQsIDAsIHNpemVvZih1aUNsaWVudCkpOwpJbmRleDogV2ViS2l0
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL3dpbi9XTUNsb3NlQ2FsbHNVSUNsaWVu
dENsb3NlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvd2luL1dNQ2xvc2VDYWxsc1VJQ2xpZW50Q2xvc2UuY3BwCShyZXZpc2lvbiA3Mzg4
MCkKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi93aW4vV01DbG9z
ZUNhbGxzVUlDbGllbnRDbG9zZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDkgKzQxLDcgQEAg
c3RhdGljIHZvaWQgY2xvc2UoV0tQYWdlUmVmLCBjb25zdCB2b2lkKgogVEVTVChXZWJLaXQyLCBX
TUNsb3NlQ2FsbHNVSUNsaWVudENsb3NlKQogewogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJl
Zj4gY29udGV4dChBZG9wdFdLLCBXS0NvbnRleHRDcmVhdGUoKSk7Ci0gICAgV0tSZXRhaW5QdHI8
V0tQYWdlTmFtZXNwYWNlUmVmPiBwYWdlTmFtZXNwYWNlKEFkb3B0V0ssIFdLUGFnZU5hbWVzcGFj
ZUNyZWF0ZShjb250ZXh0LmdldCgpKSk7Ci0KLSAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhw
YWdlTmFtZXNwYWNlLmdldCgpKTsKKyAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0
LmdldCgpKTsKIAogICAgIFdLUGFnZVVJQ2xpZW50IHVpQ2xpZW50OwogICAgIG1lbXNldCgmdWlD
bGllbnQsIDAsIHNpemVvZih1aUNsaWVudCkpOwpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdlYktp
dEFQSS9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L1Rlc3RXZWJLaXRBUEkvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQkocmV2aXNpb24gNzM4ODAp
CisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI5LDEwICsyOSwyNCBAQAogCiBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7CiAKLVBsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLUGFnZU5hbWVzcGFj
ZVJlZiBwYWdlTmFtZXNwYWNlUmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCitQbGF0
Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQ
YWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQogewogICAgIE5TUmVjdCByZWN0ID0gTlNNYWtlUmVj
dCgwLCAwLCA4MDAsIDYwMCk7Ci0gICAgbV92aWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6cmVjdCBwYWdlTmFtZXNwYWNlUmVmOnBhZ2VOYW1lc3BhY2VSZWYgcGFnZUdyb3VwUmVm
OnBhZ2VHcm91cFJlZl07CisgICAgbV92aWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6cmVjdCBjb250ZXh0UmVmOmNvbnRleHRSZWYgcGFnZUdyb3VwUmVmOnBhZ2VHcm91cFJlZl07
CisKKyAgICBOU1JlY3Qgd2luZG93UmVjdCA9IE5TT2Zmc2V0UmVjdChyZWN0LCAtMTAwMDAsIFtb
W05TU2NyZWVuIHNjcmVlbnNdIG9iamVjdEF0SW5kZXg6MF0gZnJhbWVdLnNpemUuaGVpZ2h0IC0g
cmVjdC5zaXplLmhlaWdodCArIDEwMDAwKTsKKyAgICBtX3dpbmRvdyA9IFtbTlNXaW5kb3cgYWxs
b2NdIGluaXRXaXRoQ29udGVudFJlY3Q6d2luZG93UmVjdCBzdHlsZU1hc2s6TlNCb3JkZXJsZXNz
V2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6WUVTXTsKKyAg
ICBbbV93aW5kb3cgc2V0Q29sb3JTcGFjZTpbW05TU2NyZWVuIG1haW5TY3JlZW5dIGNvbG9yU3Bh
Y2VdXTsKKyAgICBbW21fd2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3Om1fdmlld107Cisg
ICAgW21fd2luZG93IG9yZGVyQmFjazpuaWxdOworICAgIFttX3dpbmRvdyBzZXRBdXRvZGlzcGxh
eTpOT107CisgICAgW21fd2luZG93IHNldFJlbGVhc2VkV2hlbkNsb3NlZDpOT107Cit9CisKK1Bs
YXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLUGFnZVJlZiBwYWdlUmVmLCBXS1BhZ2VH
cm91cFJlZiBwYWdlR3JvdXBSZWYpCit7CisgICAgTlNSZWN0IHJlY3QgPSBOU01ha2VSZWN0KDAs
IDAsIDgwMCwgNjAwKTsKKyAgICBtX3ZpZXcgPSBbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpyZWN0IGZvckFzc29jaWF0ZWRQYWdlUmVmOnBhZ2VSZWYgcGFnZUdyb3VwUmVmOnBhZ2VHcm91
cFJlZl07CiAKICAgICBOU1JlY3Qgd2luZG93UmVjdCA9IE5TT2Zmc2V0UmVjdChyZWN0LCAtMTAw
MDAsIFtbW05TU2NyZWVuIHNjcmVlbnNdIG9iamVjdEF0SW5kZXg6MF0gZnJhbWVdLnNpemUuaGVp
Z2h0IC0gcmVjdC5zaXplLmhlaWdodCArIDEwMDAwKTsKICAgICBtX3dpbmRvdyA9IFtbTlNXaW5k
b3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6d2luZG93UmVjdCBzdHlsZU1hc2s6TlNCb3Jk
ZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6WUVT
XTsKSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3JtV2ViVmlld1dp
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZv
cm1XZWJWaWV3V2luLmNwcAkocmV2aXNpb24gNzM4ODApCisrKyBXZWJLaXRUb29scy9UZXN0V2Vi
S2l0QVBJL3dpbi9QbGF0Zm9ybVdlYlZpZXdXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niwx
NCArNTYsMjUgQEAgdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnJlZ2lzdGVyV2luZG93Q2xhcwogICAg
IDo6UmVnaXN0ZXJDbGFzc0V4Vygmd25kQ2xhc3MpOwogfQogCi1QbGF0Zm9ybVdlYlZpZXc6OlBs
YXRmb3JtV2ViVmlldyhXS1BhZ2VOYW1lc3BhY2VSZWYgbmFtZXNwYWNlUmVmLCBXS1BhZ2VHcm91
cFJlZiBwYWdlR3JvdXBSZWYpCisKK1BsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdL
Q29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCisgICAg
OiBtX3BhcmVudFdpbmRvd01lc3NhZ2VPYnNlcnZlcigwKQoreworICAgIHJlZ2lzdGVyV2luZG93
Q2xhc3MoKTsKKworICAgIFJFQ1Qgdmlld1JlY3QgPSB7MCwgMCwgODAwLCA2MDB9OworICAgIG1f
d2luZG93ID0gQ3JlYXRlV2luZG93RXhXKDAsIGhvc3RXaW5kb3dDbGFzc05hbWUsIEwiVGVzdFdl
YktpdEFQSSIsIFdTX09WRVJMQVBQRURXSU5ET1csIHZpZXdSZWN0LmxlZnQsIHZpZXdSZWN0LnRv
cCwgdmlld1JlY3QucmlnaHQsIHZpZXdSZWN0LmJvdHRvbSwgMCwgMCwgMCwgdGhpcyk7CisgICAg
bV92aWV3ID0gV0tWaWV3Q3JlYXRlKHZpZXdSZWN0LCBjb250ZXh0UmVmLCBwYWdlR3JvdXBSZWYs
IG1fd2luZG93KTsKK30KKworUGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tQYWdl
UmVmIHBhZ2VSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKICAgICA6IG1fcGFyZW50
V2luZG93TWVzc2FnZU9ic2VydmVyKDApCiB7CiAgICAgcmVnaXN0ZXJXaW5kb3dDbGFzcygpOwog
CiAgICAgUkVDVCB2aWV3UmVjdCA9IHswLCAwLCA4MDAsIDYwMH07CiAgICAgbV93aW5kb3cgPSBD
cmVhdGVXaW5kb3dFeFcoMCwgaG9zdFdpbmRvd0NsYXNzTmFtZSwgTCJUZXN0V2ViS2l0QVBJIiwg
V1NfT1ZFUkxBUFBFRFdJTkRPVywgdmlld1JlY3QubGVmdCwgdmlld1JlY3QudG9wLCB2aWV3UmVj
dC5yaWdodCwgdmlld1JlY3QuYm90dG9tLCAwLCAwLCAwLCB0aGlzKTsKLSAgICBtX3ZpZXcgPSBX
S1ZpZXdDcmVhdGUodmlld1JlY3QsIG5hbWVzcGFjZVJlZiwgcGFnZUdyb3VwUmVmLCBtX3dpbmRv
dyk7CisgICAgbV92aWV3ID0gV0tWaWV3Q3JlYXRlRm9yQXNzb2NpYXRlZFBhZ2Uodmlld1JlY3Qs
IHBhZ2VSZWYsIHBhZ2VHcm91cFJlZiwgbV93aW5kb3cpOwogfQogCiBQbGF0Zm9ybVdlYlZpZXc6
On5QbGF0Zm9ybVdlYlZpZXcoKQpJbmRleDogV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Q
bGF0Zm9ybVdlYlZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVu
bmVyL1BsYXRmb3JtV2ViVmlldy5oCShyZXZpc2lvbiA3Mzg4MCkKKysrIFdlYktpdFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcg
KzUyLDggQEAgbmFtZXNwYWNlIFdUUiB7CiAKIGNsYXNzIFBsYXRmb3JtV2ViVmlldyB7CiBwdWJs
aWM6Ci0gICAgUGxhdGZvcm1XZWJWaWV3KFdLUGFnZU5hbWVzcGFjZVJlZiwgV0tQYWdlR3JvdXBS
ZWYpOworICAgIFBsYXRmb3JtV2ViVmlldyhXS0NvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmKTsK
KyAgICBQbGF0Zm9ybVdlYlZpZXcoV0tQYWdlUmVmLCBXS1BhZ2VHcm91cFJlZik7CiAgICAgflBs
YXRmb3JtV2ViVmlldygpOwogCiAgICAgV0tQYWdlUmVmIHBhZ2UoKTsKSW5kZXg6IFdlYktpdFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA3
Mzg4MCkKKysrIFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNyArMTA2LDcgQEAgc3RhdGljIHZvaWQgY2xvc2VPdGhl
clBhZ2UoV0tQYWdlUmVmIHBhZwogCiBzdGF0aWMgV0tQYWdlUmVmIGNyZWF0ZU90aGVyUGFnZShX
S1BhZ2VSZWYgb2xkUGFnZSwgV0tEaWN0aW9uYXJ5UmVmLCBXS0V2ZW50TW9kaWZpZXJzLCBXS0V2
ZW50TW91c2VCdXR0b24sIGNvbnN0IHZvaWQqKQogewotICAgIFBsYXRmb3JtV2ViVmlldyogdmll
dyA9IG5ldyBQbGF0Zm9ybVdlYlZpZXcoV0tQYWdlR2V0UGFnZU5hbWVzcGFjZShvbGRQYWdlKSwg
V0tQYWdlR2V0UGFnZUdyb3VwKG9sZFBhZ2UpKTsKKyAgICBQbGF0Zm9ybVdlYlZpZXcqIHZpZXcg
PSBuZXcgUGxhdGZvcm1XZWJWaWV3KG9sZFBhZ2UsIFdLUGFnZUdldFBhZ2VHcm91cChvbGRQYWdl
KSk7CiAgICAgV0tQYWdlUmVmIG5ld1BhZ2UgPSB2aWV3LT5wYWdlKCk7CiAKICAgICB2aWV3LT5y
ZXNpemVUbyg4MDAsIDYwMCk7CkBAIC0yMTEsOCArMjExLDcgQEAgdm9pZCBUZXN0Q29udHJvbGxl
cjo6aW5pdGlhbGl6ZShpbnQgYXJnYwogCiAgICAgX1dLQ29udGV4dFNldEFkZGl0aW9uYWxQbHVn
aW5zRGlyZWN0b3J5KG1fY29udGV4dC5nZXQoKSwgdGVzdFBsdWdpbkRpcmVjdG9yeSgpKTsKIAot
ICAgIG1fcGFnZU5hbWVzcGFjZS5hZG9wdChXS1BhZ2VOYW1lc3BhY2VDcmVhdGUobV9jb250ZXh0
LmdldCgpKSk7Ci0gICAgbV9tYWluV2ViVmlldyA9IGFkb3B0UHRyKG5ldyBQbGF0Zm9ybVdlYlZp
ZXcobV9wYWdlTmFtZXNwYWNlLmdldCgpLCBtX3BhZ2VHcm91cC5nZXQoKSkpOworICAgIG1fbWFp
bldlYlZpZXcgPSBhZG9wdFB0cihuZXcgUGxhdGZvcm1XZWJWaWV3KG1fY29udGV4dC5nZXQoKSwg
bV9wYWdlR3JvdXAuZ2V0KCkpKTsKIAogICAgIFdLUGFnZVVJQ2xpZW50IHBhZ2VVSUNsaWVudCA9
IHsKICAgICAgICAgMCwKSW5kZXg6IFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDczODgwKQorKysgV2ViS2l0VG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw2IEBA
IHB1YmxpYzoKICAgICBXS1N0cmluZ1JlZiB0ZXN0UGx1Z2luRGlyZWN0b3J5KCkgeyByZXR1cm4g
bV90ZXN0UGx1Z2luRGlyZWN0b3J5LmdldCgpOyB9CiAKICAgICBQbGF0Zm9ybVdlYlZpZXcqIG1h
aW5XZWJWaWV3KCkgeyByZXR1cm4gbV9tYWluV2ViVmlldy5nZXQoKTsgfQotICAgIFdLUGFnZU5h
bWVzcGFjZVJlZiBwYWdlTmFtZXNwYWNlKCkgeyByZXR1cm4gbV9wYWdlTmFtZXNwYWNlLmdldCgp
OyB9CiAgICAgV0tDb250ZXh0UmVmIGNvbnRleHQoKSB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7
IH0KIAogICAgIC8vIFJ1bnMgdGhlIHJ1biBsb29wIHVudGlsIGBkb25lYCBpcyB0cnVlIG9yIHRo
ZSB0aW1lb3V0IGVsYXBzZXMuCkBAIC05Niw5ICs5NSw4IEBAIHByaXZhdGU6CiAKICAgICBPd25Q
dHI8UGxhdGZvcm1XZWJWaWV3PiBtX21haW5XZWJWaWV3OwogICAgIFdLUmV0YWluUHRyPFdLQ29u
dGV4dFJlZj4gbV9jb250ZXh0OwotICAgIFdLUmV0YWluUHRyPFdLUGFnZU5hbWVzcGFjZVJlZj4g
bV9wYWdlTmFtZXNwYWNlOwogICAgIFdLUmV0YWluUHRyPFdLUGFnZUdyb3VwUmVmPiBtX3BhZ2VH
cm91cDsKLSAgICAKKwogICAgIGVudW0gU3RhdGUgewogICAgICAgICBJbml0aWFsLAogICAgICAg
ICBSZXNldHRpbmcsCkluZGV4OiBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0
Zm9ybVdlYlZpZXdNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tCShyZXZpc2lvbiA3Mzg4MCkKKysrIFdlYktp
dFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsMTAgKzI3LDI0IEBACiAKIG5hbWVzcGFjZSBXVFIgewogCi1QbGF0Zm9y
bVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhXS1BhZ2VOYW1lc3BhY2VSZWYgbmFtZXNwYWNlUmVm
LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCitQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3Jt
V2ViVmlldyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3Vw
UmVmKQogewogICAgIE5TUmVjdCByZWN0ID0gTlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCk7Ci0g
ICAgbV92aWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6cmVjdCBwYWdlTmFtZXNw
YWNlUmVmOm5hbWVzcGFjZVJlZiBwYWdlR3JvdXBSZWY6cGFnZUdyb3VwUmVmXTsKKyAgICBtX3Zp
ZXcgPSBbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpyZWN0IGNvbnRleHRSZWY6Y29udGV4
dFJlZiBwYWdlR3JvdXBSZWY6cGFnZUdyb3VwUmVmXTsKKworICAgIE5TUmVjdCB3aW5kb3dSZWN0
ID0gTlNPZmZzZXRSZWN0KHJlY3QsIC0xMDAwMCwgW1tbTlNTY3JlZW4gc2NyZWVuc10gb2JqZWN0
QXRJbmRleDowXSBmcmFtZV0uc2l6ZS5oZWlnaHQgLSByZWN0LnNpemUuaGVpZ2h0ICsgMTAwMDAp
OworICAgIG1fd2luZG93ID0gW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDp3
aW5kb3dSZWN0IHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNr
aW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpZRVNdOworICAgIFttX3dpbmRvdyBzZXRDb2xvclNwYWNl
OltbTlNTY3JlZW4gbWFpblNjcmVlbl0gY29sb3JTcGFjZV1dOworICAgIFtbbV93aW5kb3cgY29u
dGVudFZpZXddIGFkZFN1YnZpZXc6bV92aWV3XTsKKyAgICBbbV93aW5kb3cgb3JkZXJCYWNrOm5p
bF07CisgICAgW21fd2luZG93IHNldEF1dG9kaXNwbGF5Ok5PXTsKKyAgICBbbV93aW5kb3cgc2V0
UmVsZWFzZWRXaGVuQ2xvc2VkOk5PXTsKK30KKworUGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdl
YlZpZXcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKK3sK
KyAgICBOU1JlY3QgcmVjdCA9IE5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApOworICAgIG1fdmll
dyA9IFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOnJlY3QgZm9yQXNzb2NpYXRlZFBhZ2VS
ZWY6cGFnZVJlZiBwYWdlR3JvdXBSZWY6cGFnZUdyb3VwUmVmXTsKIAogICAgIE5TUmVjdCB3aW5k
b3dSZWN0ID0gTlNPZmZzZXRSZWN0KHJlY3QsIC0xMDAwMCwgW1tbTlNTY3JlZW4gc2NyZWVuc10g
b2JqZWN0QXRJbmRleDowXSBmcmFtZV0uc2l6ZS5oZWlnaHQgLSByZWN0LnNpemUuaGVpZ2h0ICsg
MTAwMDApOwogICAgIG1fd2luZG93ID0gW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50
UmVjdDp3aW5kb3dSZWN0IHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6
TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpZRVNdOwpJbmRleDogV2ViS2l0VG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9xdC9QbGF0Zm9ybVdlYlZpZXdRdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9QbGF0Zm9ybVdlYlZpZXdRdC5jcHAJKHJldmlz
aW9uIDczODgwKQorKysgV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9QbGF0Zm9ybVdl
YlZpZXdRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDE2ICs0MywzNiBAQCBwcml2YXRlOgog
ICAgIFFHcmFwaGljc1dLVmlldyogbV9pdGVtOwogfTsKIAotV2ViVmlldzo6V2ViVmlldyhXS1Bh
Z2VOYW1lc3BhY2VSZWYgbmFtZXNwYWNlUmVmKQorV2ViVmlldzo6V2ViVmlldyhXS0NvbnRleHRS
ZWYgY29udGV4dFJlZikKICAgICA6IFFHcmFwaGljc1ZpZXcoKQotICAgICwgbV9pdGVtKG5ldyBR
R3JhcGhpY3NXS1ZpZXcobmV3IFFXS0NvbnRleHQobmFtZXNwYWNlUmVmLCB0aGlzKSkpCisgICAg
LCBtX2l0ZW0obmV3IFFHcmFwaGljc1dLVmlldyhuZXcgUVdLQ29udGV4dChjb250ZXh0UmVmLCB0
aGlzKSkpCiB7CiAgICAgc2V0U2NlbmUobmV3IFFHcmFwaGljc1NjZW5lKHRoaXMpKTsKICAgICBz
Y2VuZSgpLT5hZGRJdGVtKG1faXRlbSk7CiB9CiAKLVBsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1X
ZWJWaWV3KFdLUGFnZU5hbWVzcGFjZVJlZiBuYW1lc3BhY2VSZWYsIFdLUGFnZUdyb3VwUmVmKQot
ICAgIDogbV92aWV3KG5ldyBXZWJWaWV3KG5hbWVzcGFjZVJlZikpCitXZWJWaWV3OjpXZWJWaWV3
KFdLUGFnZVJlZiBwYWdlUmVmKQorICAgIDogUUdyYXBoaWNzVmlldygpCisgICAgLCBtX2l0ZW0o
bmV3IFFHcmFwaGljc1dLVmlldyhuZXcgUVdLQ29udGV4dChwYWdlUmVmLCB0aGlzKSkpCit7Cisg
ICAgc2V0U2NlbmUobmV3IFFHcmFwaGljc1NjZW5lKHRoaXMpKTsKKyAgICBzY2VuZSgpLT5hZGRJ
dGVtKG1faXRlbSk7Cit9CisKK1BsYXRmb3JtV2ViVmlldyhXS0NvbnRleHRSZWYsIFdLUGFnZUdy
b3VwUmVmKTsKK1BsYXRmb3JtV2ViVmlldyhXS1BhZ2VSZWYsIFdLUGFnZUdyb3VwUmVmKTsKKwor
UGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYs
IFdLUGFnZUdyb3VwUmVmKQorICAgIDogbV92aWV3KG5ldyBXZWJWaWV3KGNvbnRleHRSZWYpKQor
ICAgICwgbV93aW5kb3cobmV3IFFNYWluV2luZG93KCkpCit7CisgICAgbV92aWV3LT5zZXRQYXJl
bnQobV93aW5kb3cpOworICAgIG1fd2luZG93LT5zZXRDZW50cmFsV2lkZ2V0KG1fdmlldyk7Cisg
ICAgbV93aW5kb3ctPnNldEdlb21ldHJ5KDAsIDAsIDgwMCwgNjAwKTsKK30KKworUGxhdGZvcm1X
ZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLUGFnZUdyb3VwUmVm
KQorICAgIDogbV92aWV3KG5ldyBXZWJWaWV3KHBhZ2VSZWYpKQogICAgICwgbV93aW5kb3cobmV3
IFFNYWluV2luZG93KCkpCiB7CiAgICAgbV92aWV3LT5zZXRQYXJlbnQobV93aW5kb3cpOwpJbmRl
eDogV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vUGxhdGZvcm1XZWJWaWV3V2luLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9QbGF0Zm9y
bVdlYlZpZXdXaW4uY3BwCShyZXZpc2lvbiA3Mzg4MCkKKysrIFdlYktpdFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvd2luL1BsYXRmb3JtV2ViVmlld1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDEzICs0NywyMiBAQCBzdGF0aWMgdm9pZCByZWdpc3RlcldpbmRvd0NsYXNzKCkKICAgICBSZWdp
c3RlckNsYXNzRXhXKCZ3bmRDbGFzcyk7CiB9CiAKLVBsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1X
ZWJWaWV3KFdLUGFnZU5hbWVzcGFjZVJlZiBuYW1lc3BhY2VSZWYsIFdLUGFnZUdyb3VwUmVmIHBh
Z2VHcm91cFJlZikKK1BsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4dFJl
ZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCiB7CiAgICAgcmVnaXN0
ZXJXaW5kb3dDbGFzcygpOwogCiAgICAgUkVDVCB2aWV3UmVjdCA9IHswLCAwLCA4MDAsIDYwMH07
CiAgICAgbV93aW5kb3cgPSBDcmVhdGVXaW5kb3dFeFcoMCwgaG9zdFdpbmRvd0NsYXNzTmFtZSwg
TCJXZWJLaXRUZXN0UnVubmVyIiwgV1NfT1ZFUkxBUFBFRFdJTkRPVywgMCAvKlhPRkZTRVQqLywg
MCAvKllPRkZTRVQqLywgdmlld1JlY3QucmlnaHQsIHZpZXdSZWN0LmJvdHRvbSwgMCwgMCwgR2V0
TW9kdWxlSGFuZGxlKDApLCAwKTsKLSAgICBtX3ZpZXcgPSBXS1ZpZXdDcmVhdGUodmlld1JlY3Qs
IG5hbWVzcGFjZVJlZiwgcGFnZUdyb3VwUmVmLCBtX3dpbmRvdyk7CisgICAgbV92aWV3ID0gV0tW
aWV3Q3JlYXRlKHZpZXdSZWN0LCBjb250ZXh0UmVmLCBwYWdlR3JvdXBSZWYsIG1fd2luZG93KTsK
K30KKworUGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tQYWdlUmVmIHBhZ2VSZWYs
IFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKK3sKKyAgICByZWdpc3RlcldpbmRvd0NsYXNz
KCk7CisKKyAgICBSRUNUIHZpZXdSZWN0ID0gezAsIDAsIDgwMCwgNjAwfTsKKyAgICBtX3dpbmRv
dyA9IENyZWF0ZVdpbmRvd0V4VygwLCBob3N0V2luZG93Q2xhc3NOYW1lLCBMIldlYktpdFRlc3RS
dW5uZXIiLCBXU19PVkVSTEFQUEVEV0lORE9XLCAwIC8qWE9GRlNFVCovLCAwIC8qWU9GRlNFVCov
LCB2aWV3UmVjdC5yaWdodCwgdmlld1JlY3QuYm90dG9tLCAwLCAwLCBHZXRNb2R1bGVIYW5kbGUo
MCksIDApOworICAgIG1fdmlldyA9IFdLVmlld0NyZWF0ZUZvckFzc29jaWF0ZWRQYWdlKHZpZXdS
ZWN0LCBwYWdlUmVmLCBwYWdlR3JvdXBSZWYsIG1fd2luZG93KTsKIH0KIAogUGxhdGZvcm1XZWJW
aWV3Ojp+UGxhdGZvcm1XZWJWaWV3KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76341</attachid>
            <date>2010-12-12 17:03:45 -0800</date>
            <delta_ts>2010-12-12 17:31:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>forReview.diff</filename>
            <type>text/plain</type>
            <size>71920</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3Mzg4MikKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODcgQEAKKzIwMTAtMTItMTIgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2Ug
dGhlIFdlYktpdDIgcHVibGljIEFQSSBzbyB0aGVyZSBpcyBubyBleHBsaWNpdCBXS1BhZ2VOYW1l
c3BhY2Ugb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01MDg5OAorCisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQmFzZS5oOiBSZW1vdmUgZGVm
aW5pdGlvbiBvZiBXS1BhZ2VOYW1lc3BhY2VSZWYuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLQVBJQ2FzdC5oOiBSZW1vdmUgdG9BUEkvdG9JbXBsIGZvciBXS1BhZ2VOYW1lc3BhY2VSZWYu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmg6CisgICAgICAgIFJlcGxhY2UgV0tQYWdlR2V0UGFnZU5hbWVz
cGFjZSB3aXRoIFdLUGFnZUdldENvbnRleHQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlTmFtZXNwYWNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlTmFtZXNwYWNlLmg6IFJlbW92ZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V2ViS2l0Mi5oOiBSZW1vdmUgI2luY2x1ZGUgb2YgV0tQYWdlTmFtZXNwYWNlLmguCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHA6CisgICAgICAgIChXS1ZpZXdDcmVh
dGUpOiBDaGFuZ2VkIHRvIHRha2UgYSBXS0NvbnRleHRSZWYgaW5zdGVhZCBvZiBhIFdLUGFnZU5h
bWVzcGFjZVJlZi4KKyAgICAgICAgKFdLVmlld0NyZWF0ZVVzaW5nU2hhcmVkUHJvY2Vzcyk6IEFk
ZGVkLiBTaW1pbGFyIHRvIFdLVmlld0NyZWF0ZSBleGNlcHQgdGhhdAorICAgICAgICBhbGwgY2Fs
bGVycyBvZiBpdCB3aWxsIGhhdmUgdGhlaXIgdmlld3MgZW5kIHVwIGluIHRoZSBzYW1lIHNoYXJl
ZCBwcm9jZXNzLCB3aGVyZQorICAgICAgICBhcyB3aXRoIFdLVmlld0NyZWF0ZSwgYSBuZXcgaW50
ZXJuYWwgcGFnZSBuYW1lc3BhY2Ugd2lsbCBiZSBjcmVhdGVkIGFuZCBjb3VsZAorICAgICAgICBw
bGFjZSB0aGUgdmlldydzIFdlYlBhZ2UgaW50byBhIG5ldyBwcm9jZXNzLgorICAgICAgICAoV0tW
aWV3Q3JlYXRlRm9yQXNzb2NpYXRlZFBhZ2UpOiBBZGRlZC4gQ3JlYXRlcyBhIHZpZXcgdGhhdCBp
cyBmb3JjZWQgdG8gdXNlIHRoZQorICAgICAgICBzYW1lIHByb2Nlc3MgYXMgdGhlIHBhc3NlZCBp
biBwYWdlLgorCisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlldzo6V2ViVmlldyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6Omlu
aXRpYWxpemUpOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViVmlldy5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpjcmVh
dGVVc2luZ1NoYXJlZFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpjcmVhdGVG
b3JBc3NvY2lhdGVkUGFnZSk6CisgICAgICAgIEltcGxlbWVudGF0aW9uIG9mIHRoZSBXS1ZpZXcg
Y3JlYXRlIGZ1bmN0aW9ucy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy93aW4vV0tWaWV3
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgaW5pdFdpdGhGcmFt
ZTpdKToKKyAgICAgICAgKC1bV0tWaWV3IGluaXRXaXRoRnJhbWU6Y29udGV4dFJlZjpdKToKKyAg
ICAgICAgKC1bV0tWaWV3IGluaXRXaXRoRnJhbWU6Y29udGV4dFJlZjpwYWdlR3JvdXBSZWY6XSk6
CisgICAgICAgICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOmNvbnRleHRSZWY6dXNpbmdTaGFyZWRQ
cm9jZXNzOl0pOgorICAgICAgICAoLVtXS1ZpZXcgaW5pdFdpdGhGcmFtZTpjb250ZXh0UmVmOnBh
Z2VHcm91cFJlZjp1c2luZ1NoYXJlZFByb2Nlc3M6XSk6CisgICAgICAgICgtW1dLVmlldyBpbml0
V2l0aEZyYW1lOmZvckFzc29jaWF0ZWRQYWdlUmVmOl0pOgorICAgICAgICAoLVtXS1ZpZXcgaW5p
dFdpdGhGcmFtZTpmb3JBc3NvY2lhdGVkUGFnZVJlZjpwYWdlR3JvdXBSZWY6XSk6CisgICAgICAg
ICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOnBhZ2VOYW1lc3BhY2U6cGFnZUdyb3VwOl0pOgorICAg
ICAgICBBZGQgbmV3IGluaXRpYWxpemVycyBmb3IgdGhlIG9iamVjdGl2ZS1jIFdLVmlldy4gSXQg
Zm9sbG93cyB0aGUgc2FtZQorICAgICAgICBwYXR0ZXJuIGFzIFdLVmlld1JlZi4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdrY29udGV4dC5jcHA6CisgICAgICAgIChRV0tDb250ZXh0
OjpRV0tDb250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3a2NvbnRleHQuaDoK
KyAgICAgICAgUmVtb3ZlIHVzZXMgb2YgV0tQYWdlTmFtZXNwYWNlUmVmLgorCisgICAgICAgICog
VUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojpz
aGFyZWRQYWdlTmFtZXNwYWNlKTogUmV0dXJucyBhIHNoYXJlZAorICAgICAgICBwYWdlIG5hbWVz
cGFjZSB1c2VkIGJ5IHRoZSB2aWV3J3MgY3JlYXRlVXNpbmdTaGFyZWRQcm9jZXNzIGNvbnN0cnVj
dGlvbnMuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmNyZWF0ZVBhZ2VOYW1lc3BhY2Up
OiBDaGFuZ2UgdG8gcmV0dXJuCisgICAgICAgIGEgUGFzc1JlZlB0ciB0byBtYWtlIHRoaW5ncyBj
bGVhcmVyLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwYWdlTmFtZXNwYWNlV2FzRGVz
dHJveWVkKTogQ2xlYXIgdGhlIHNoYXJlZAorICAgICAgICBuYW1lc3BhY2UgaWYgaXQgaXMgY2xl
YXJlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgorCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VOYW1lc3BhY2UuaDogUmVtb3ZlIHVudXNlZCAic3RydWN0IFdLQ29udGV4
dFN0YXRpc3RpY3MiLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGV4dCk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICBBZGQgY29udGV4dCBnZXR0ZXIuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSk6
CisgICAgICAgIFVzZSBmb3JBc3NvY2lhdGVkUGFnZVJlZiBjb25zdHJ1Y3RvciBmb3IgdGhlIFdl
Ykluc3BlY3RvciB2aWV3LgorCisgICAgICAgICogV2ViS2l0Mi5wcm86CisgICAgICAgICogV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHdpbi9XZWJLaXQyLnZj
cHJvajoKKyAgICAgICAgKiB3aW4vV2ViS2l0MkdlbmVyYXRlZC5tYWtlOgorICAgICAgICBSZW1v
dmUgV0tQYWdlTmFtZXNwYWNlLmgvY3BwLgorCiAyMDEwLTEyLTEyICBTYW0gV2VpbmlnICA8c2Ft
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRl
eDogV2ViS2l0Mi9XZWJLaXQyLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYktpdDIucHJv
CShyZXZpc2lvbiA3Mzg4MCkKKysrIFdlYktpdDIvV2ViS2l0Mi5wcm8JKHdvcmtpbmcgY29weSkK
QEAgLTI4OSw3ICsyODksNiBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tO
YXZpZ2F0aW9uRGF0YS5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmggXAogICAgIFVJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5oIFwKLSAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdl
TmFtZXNwYWNlLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmggXAogICAg
IFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9X
S1ByZWZlcmVuY2VzUHJpdmF0ZS5oIFwKQEAgLTQ4OSw3ICs0ODgsNiBAQCBTT1VSQ0VTICs9IFwK
ICAgICBVSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uRGF0YS5jcHAgXAogICAgIFVJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2UuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3Bw
IFwKLSAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlTmFtZXNwYWNlLmNwcCBcCiAgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQcm90
ZWN0aW9uU3BhY2UuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL2NwcC9xdC9XS1N0cmluZ1F0LmNw
cCBcCkluZGV4OiBXZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAkocmV2aXNpb24gNzM4ODApCisrKyBXZWJLaXQy
L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNiBAQCB0
eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0luc3BlY3RvciogCiB0eXBlZGVmIGNvbnN0IHN0
cnVjdCBPcGFxdWVXS05hdmlnYXRpb25EYXRhKiBXS05hdmlnYXRpb25EYXRhUmVmOwogdHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQYWdlKiBXS1BhZ2VSZWY7CiB0eXBlZGVmIGNvbnN0IHN0
cnVjdCBPcGFxdWVXS1BhZ2VHcm91cCogV0tQYWdlR3JvdXBSZWY7Ci10eXBlZGVmIGNvbnN0IHN0
cnVjdCBPcGFxdWVXS1BhZ2VOYW1lc3BhY2UqIFdLUGFnZU5hbWVzcGFjZVJlZjsKIHR5cGVkZWYg
Y29uc3Qgc3RydWN0IE9wYXF1ZVdLUHJlZmVyZW5jZXMqIFdLUHJlZmVyZW5jZXNSZWY7CiB0eXBl
ZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1Byb3RlY3Rpb25TcGFjZSogV0tQcm90ZWN0aW9uU3Bh
Y2VSZWY7CiAKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCShyZXZpc2lvbiA3Mzg4MCkK
KysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
OSw2ICs3OSw3IEBAIFBhc3NSZWZQdHI8V2ViQ29udGV4dD4gV2ViQ29udGV4dDo6Y3JlYXQKICAg
ICAKIFdlYkNvbnRleHQ6OldlYkNvbnRleHQoUHJvY2Vzc01vZGVsIHByb2Nlc3NNb2RlbCwgY29u
c3QgU3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgpCiAgICAgOiBtX3Byb2Nlc3NNb2RlbChwcm9j
ZXNzTW9kZWwpCisgICAgLCBtX3NoYXJlZE5hbWVzcGFjZSgwKQogICAgICwgbV9kZWZhdWx0UGFn
ZUdyb3VwKFdlYlBhZ2VHcm91cDo6Y3JlYXRlKCkpCiAgICAgLCBtX2luamVjdGVkQnVuZGxlUGF0
aChpbmplY3RlZEJ1bmRsZVBhdGgpCiAgICAgLCBtX3Zpc2l0ZWRMaW5rUHJvdmlkZXIodGhpcykK
QEAgLTIyOCwxNSArMjI5LDI3IEBAIHZvaWQgV2ViQ29udGV4dDo6cmVsYXVuY2hQcm9jZXNzSWZO
ZWNlc3MKICAgICBlbnN1cmVXZWJQcm9jZXNzKCk7CiB9CiAKLVdlYlBhZ2VOYW1lc3BhY2UqIFdl
YkNvbnRleHQ6OmNyZWF0ZVBhZ2VOYW1lc3BhY2UoKQorV2ViUGFnZU5hbWVzcGFjZSogV2ViQ29u
dGV4dDo6c2hhcmVkUGFnZU5hbWVzcGFjZSgpCit7CisgICAgaWYgKG1fc2hhcmVkTmFtZXNwYWNl
KQorICAgICAgICByZXR1cm4gbV9zaGFyZWROYW1lc3BhY2UuZ2V0KCk7CisKKyAgICBtX3NoYXJl
ZE5hbWVzcGFjZSA9IGNyZWF0ZVBhZ2VOYW1lc3BhY2UoKTsKKyAgICByZXR1cm4gbV9zaGFyZWRO
YW1lc3BhY2UuZ2V0KCk7Cit9CisKK1Bhc3NSZWZQdHI8V2ViUGFnZU5hbWVzcGFjZT4gV2ViQ29u
dGV4dDo6Y3JlYXRlUGFnZU5hbWVzcGFjZSgpCiB7CiAgICAgUmVmUHRyPFdlYlBhZ2VOYW1lc3Bh
Y2U+IHBhZ2VOYW1lc3BhY2UgPSBXZWJQYWdlTmFtZXNwYWNlOjpjcmVhdGUodGhpcyk7CiAgICAg
bV9wYWdlTmFtZXNwYWNlcy5hZGQocGFnZU5hbWVzcGFjZS5nZXQoKSk7Ci0gICAgcmV0dXJuIHBh
Z2VOYW1lc3BhY2UucmVsZWFzZSgpLnJlbGVhc2VSZWYoKTsKKyAgICByZXR1cm4gcGFnZU5hbWVz
cGFjZS5yZWxlYXNlKCk7CiB9CiAKIHZvaWQgV2ViQ29udGV4dDo6cGFnZU5hbWVzcGFjZVdhc0Rl
c3Ryb3llZChXZWJQYWdlTmFtZXNwYWNlKiBwYWdlTmFtZXNwYWNlKQogeworICAgIGlmIChwYWdl
TmFtZXNwYWNlID09IG1fc2hhcmVkTmFtZXNwYWNlKQorICAgICAgICBtX3NoYXJlZE5hbWVzcGFj
ZSA9IDA7CisKICAgICBBU1NFUlQobV9wYWdlTmFtZXNwYWNlcy5jb250YWlucyhwYWdlTmFtZXNw
YWNlKSk7CiAgICAgbV9wYWdlTmFtZXNwYWNlcy5yZW1vdmUocGFnZU5hbWVzcGFjZSk7CiB9Cklu
ZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCShyZXZpc2lvbiA3Mzg4MCkKKysrIFdlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsOCArNDIsNiBAQAogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAotc3RydWN0IFdLQ29udGV4dFN0YXRpc3RpY3M7Ci0KIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjbGFzcyBEb3dubG9hZFByb3h5OwpAQCAtNzcsNyArNzUsOCBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHJlbGF1bmNoUHJvY2Vzc0lmTmVjZXNzYXJ5KCk7CiAKLSAgICBXZWJQYWdlTmFtZXNw
YWNlKiBjcmVhdGVQYWdlTmFtZXNwYWNlKCk7CisgICAgV2ViUGFnZU5hbWVzcGFjZSogc2hhcmVk
UGFnZU5hbWVzcGFjZSgpOworICAgIFBhc3NSZWZQdHI8V2ViUGFnZU5hbWVzcGFjZT4gY3JlYXRl
UGFnZU5hbWVzcGFjZSgpOwogICAgIHZvaWQgcGFnZU5hbWVzcGFjZVdhc0Rlc3Ryb3llZChXZWJQ
YWdlTmFtZXNwYWNlKik7CiAKICAgICBjb25zdCBTdHJpbmcmIGluamVjdGVkQnVuZGxlUGF0aCgp
IGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRCdW5kbGVQYXRoOyB9CkBAIC0xNjQsNiArMTYzLDcg
QEAgcHJpdmF0ZToKICAgICAvLyBGSVhNRTogSW4gdGhlIGZ1dHVyZSwgdGhpcyBzaG91bGQgYmUg
b25lIG9yIG1vcmUgV2ViUHJvY2Vzc1Byb3hpZXMuCiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94
eT4gbV9wcm9jZXNzOwogCisgICAgUmVmUHRyPFdlYlBhZ2VOYW1lc3BhY2U+IG1fc2hhcmVkTmFt
ZXNwYWNlOwogICAgIEhhc2hTZXQ8V2ViUGFnZU5hbWVzcGFjZSo+IG1fcGFnZU5hbWVzcGFjZXM7
CiAKICAgICBSZWZQdHI8V2ViUGFnZUdyb3VwPiBtX2RlZmF1bHRQYWdlR3JvdXA7CkluZGV4OiBX
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlTmFtZXNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZU5hbWVzcGFjZS5oCShyZXZpc2lvbiA3Mzg4MCkKKysrIFdlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VOYW1lc3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCAr
MzEsNiBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogCi1zdHJ1Y3QgV0tDb250ZXh0U3RhdGlzdGljczsKLQogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNsYXNzIFdlYkNvbnRleHQ7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJ
KHJldmlzaW9uIDczODgwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTMzLDYgKzEzMywxMSBAQCBXZWJQcm9jZXNzUHJveHkqIFdlYlBh
Z2VQcm94eTo6cHJvY2VzcygpCiAgICAgcmV0dXJuIG1fcGFnZU5hbWVzcGFjZS0+cHJvY2Vzcygp
OwogfQogCitXZWJDb250ZXh0KiBXZWJQYWdlUHJveHk6OmNvbnRleHQoKSBjb25zdAoreworICAg
IHJldHVybiBtX3BhZ2VOYW1lc3BhY2UtPmNvbnRleHQoKTsKK30KKwogYm9vbCBXZWJQYWdlUHJv
eHk6OmlzVmFsaWQoKQogewogICAgIC8vIEEgcGFnZSB0aGF0IGhhcyBiZWVuIGV4cGxpY2l0bHkg
Y2xvc2VkIGlzIG5ldmVyIHZhbGlkLgpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJl
dmlzaW9uIDczODgwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTcxLDggKzcxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHN0cnVj
dCBXaW5kb3dGZWF0dXJlczsKIH0KIAotc3RydWN0IFdLQ29udGV4dFN0YXRpc3RpY3M7Ci0KIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBEcmF3aW5nQXJlYVByb3h5OwpAQCAtMjUyLDYgKzI1
MCw3IEBAIHB1YmxpYzoKIAogICAgIFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcygpIGNvbnN0Owog
ICAgIFdlYlBhZ2VOYW1lc3BhY2UqIHBhZ2VOYW1lc3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3Bh
Z2VOYW1lc3BhY2UuZ2V0KCk7IH0KKyAgICBXZWJDb250ZXh0KiBjb250ZXh0KCkgY29uc3Q7CiAK
ICAgICBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUdyb3Vw
LmdldCgpOyB9CiAKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCShyZXZpc2lv
biA3Mzg4MCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC01NCw3ICs1NCw2IEBAIGNsYXNzIFdlYkZyYW1lUHJveHk7CiBjbGFzcyBXZWJJ
bnNwZWN0b3JQcm94eTsKIGNsYXNzIFdlYk5hdmlnYXRpb25EYXRhOwogY2xhc3MgV2ViUGFnZUdy
b3VwOwotY2xhc3MgV2ViUGFnZU5hbWVzcGFjZTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNz
IFdlYlByZWZlcmVuY2VzOwogY2xhc3MgV2ViUHJvdGVjdGlvblNwYWNlOwpAQCAtNzAsMTYgKzY5
LDE2IEBAIFdLX0FERF9BUElfTUFQUElORyhXS0Rvd25sb2FkUmVmLCBEb3dubG8KIFdLX0FERF9B
UElfTUFQUElORyhXS0Zvcm1TdWJtaXNzaW9uTGlzdGVuZXJSZWYsIFdlYkZvcm1TdWJtaXNzaW9u
TGlzdGVuZXJQcm94eSkKIFdLX0FERF9BUElfTUFQUElORyhXS0ZyYW1lUG9saWN5TGlzdGVuZXJS
ZWYsIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSkKIFdLX0FERF9BUElfTUFQUElORyhXS0Zy
YW1lUmVmLCBXZWJGcmFtZVByb3h5KQotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi1XS19BRERfQVBJ
X01BUFBJTkcoV0tJbnNwZWN0b3JSZWYsIFdlYkluc3BlY3RvclByb3h5KQotI2VuZGlmCiBXS19B
RERfQVBJX01BUFBJTkcoV0tOYXZpZ2F0aW9uRGF0YVJlZiwgV2ViTmF2aWdhdGlvbkRhdGEpCiBX
S19BRERfQVBJX01BUFBJTkcoV0tQYWdlR3JvdXBSZWYsIFdlYlBhZ2VHcm91cCkKLVdLX0FERF9B
UElfTUFQUElORyhXS1BhZ2VOYW1lc3BhY2VSZWYsIFdlYlBhZ2VOYW1lc3BhY2UpCiBXS19BRERf
QVBJX01BUFBJTkcoV0tQYWdlUmVmLCBXZWJQYWdlUHJveHkpCiBXS19BRERfQVBJX01BUFBJTkco
V0tQcmVmZXJlbmNlc1JlZiwgV2ViUHJlZmVyZW5jZXMpCiBXS19BRERfQVBJX01BUFBJTkcoV0tQ
cm90ZWN0aW9uU3BhY2VSZWYsIFdlYlByb3RlY3Rpb25TcGFjZSkKIAorI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCitXS19BRERfQVBJX01BUFBJTkcoV0tJbnNwZWN0b3JSZWYsIFdlYkluc3BlY3RvclBy
b3h5KQorI2VuZGlmCisKIC8qIEVudW0gY29udmVyc2lvbnMgKi8KIAogaW5saW5lIENhY2hlTW9k
ZWwgdG9DYWNoZU1vZGVsKFdLQ2FjaGVNb2RlbCB3a0NhY2hlTW9kZWwpCkluZGV4OiBXZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHJldmlzaW9uIDczODgwKQorKysgV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsOSArNDIsOSBAQCBXS1R5
cGVJRCBXS1BhZ2VHZXRUeXBlSUQoKQogICAgIHJldHVybiB0b0FQSShXZWJQYWdlUHJveHk6OkFQ
SVR5cGUpOwogfQogCi1XS1BhZ2VOYW1lc3BhY2VSZWYgV0tQYWdlR2V0UGFnZU5hbWVzcGFjZShX
S1BhZ2VSZWYgcGFnZVJlZikKK1dLQ29udGV4dFJlZiBXS1BhZ2VHZXRDb250ZXh0KFdLUGFnZVJl
ZiBwYWdlUmVmKQogewotICAgIHJldHVybiB0b0FQSSh0b0ltcGwocGFnZVJlZiktPnBhZ2VOYW1l
c3BhY2UoKSk7CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChwYWdlUmVmKS0+Y29udGV4dCgpKTsK
IH0KIAogV0tQYWdlR3JvdXBSZWYgV0tQYWdlR2V0UGFnZUdyb3VwKFdLUGFnZVJlZiBwYWdlUmVm
KQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJKHJldmlzaW9uIDczODgwKQorKysgV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNyw3ICsy
MTcsNyBAQCB0eXBlZGVmIHN0cnVjdCBXS1BhZ2VDb250ZXh0TWVudUNsaWVudCBXCiAKIFdLX0VY
UE9SVCBXS1R5cGVJRCBXS1BhZ2VHZXRUeXBlSUQoKTsKIAotV0tfRVhQT1JUIFdLUGFnZU5hbWVz
cGFjZVJlZiBXS1BhZ2VHZXRQYWdlTmFtZXNwYWNlKFdLUGFnZVJlZiBwYWdlKTsKK1dLX0VYUE9S
VCBXS0NvbnRleHRSZWYgV0tQYWdlR2V0Q29udGV4dChXS1BhZ2VSZWYgcGFnZSk7CiBXS19FWFBP
UlQgV0tQYWdlR3JvdXBSZWYgV0tQYWdlR2V0UGFnZUdyb3VwKFdLUGFnZVJlZiBwYWdlKTsKIAog
V0tfRVhQT1JUIHZvaWQgV0tQYWdlTG9hZFVSTChXS1BhZ2VSZWYgcGFnZSwgV0tVUkxSZWYgdXJs
KTsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZU5hbWVzcGFjZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlTmFtZXNwYWNlLmNwcAko
cmV2aXNpb24gNzM4ODApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VOYW1lc3Bh
Y2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiV0tQYWdlTmFtZXNwYWNlLmgiCi0KLSNpbmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNs
dWRlICJXZWJQYWdlTmFtZXNwYWNlLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLVdLVHlw
ZUlEIFdLUGFnZU5hbWVzcGFjZUdldFR5cGVJRCgpCi17Ci0gICAgcmV0dXJuIHRvQVBJKFdlYlBh
Z2VOYW1lc3BhY2U6OkFQSVR5cGUpOwotfQotCi1XS1BhZ2VOYW1lc3BhY2VSZWYgV0tQYWdlTmFt
ZXNwYWNlQ3JlYXRlKFdLQ29udGV4dFJlZiBvd25lckNvbnRleHRSZWYpCi17Ci0gICAgcmV0dXJu
IHRvQVBJKHRvSW1wbChvd25lckNvbnRleHRSZWYpLT5jcmVhdGVQYWdlTmFtZXNwYWNlKCkpOwot
fQotCi1XS0NvbnRleHRSZWYgV0tQYWdlTmFtZXNwYWNlR2V0Q29udGV4dChXS1BhZ2VOYW1lc3Bh
Y2VSZWYgcGFnZU5hbWVzcGFjZVJlZikKLXsKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKHBhZ2VO
YW1lc3BhY2VSZWYpLT5jb250ZXh0KCkpOwotfQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlTmFtZXNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlTmFtZXNwYWNlLmgJKHJldmlzaW9uIDczODgwKQorKysgV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlTmFtZXNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNDUgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgV0tQYWdlTmFtZXNwYWNlX2gKLSNkZWZpbmUgV0tQYWdl
TmFtZXNwYWNlX2gKLQotI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+Ci0KLSNpZmRlZiBfX2Nw
bHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotV0tfRVhQT1JUIFdLVHlwZUlEIFdLUGFn
ZU5hbWVzcGFjZUdldFR5cGVJRCgpOwotCi1XS19FWFBPUlQgV0tQYWdlTmFtZXNwYWNlUmVmIFdL
UGFnZU5hbWVzcGFjZUNyZWF0ZShXS0NvbnRleHRSZWYgb3duZXJDb250ZXh0KTsKLQotV0tfRVhQ
T1JUIFdLQ29udGV4dFJlZiBXS1BhZ2VOYW1lc3BhY2VHZXRDb250ZXh0KFdLUGFnZU5hbWVzcGFj
ZVJlZiBwYWdlTmFtZXNwYWNlKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQot
I2VuZGlmIC8qIFdLUGFnZU5hbWVzcGFjZV9oICovCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XZWJLaXQyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV2Vi
S2l0Mi5oCShyZXZpc2lvbiA3Mzg4MCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dlYktp
dDIuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1ZGUgPFdlYktpdDIv
V0tOdW1iZXIuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZS5oPgogI2luY2x1ZGUgPFdlYktp
dDIvV0tQYWdlR3JvdXAuaD4KLSNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZU5hbWVzcGFjZS5oPgog
I2luY2x1ZGUgPFdlYktpdDIvV0tQcmVmZXJlbmNlcy5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tT
dHJpbmcuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLVVJMLmg+CkluZGV4OiBXZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy93aW4vV0tWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy93aW4vV0tWaWV3LmNwcAkocmV2aXNpb24gNzM4ODApCisrKyBXZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy93aW4vV0tWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsOSArMzUsMjEg
QEAgV0tUeXBlSUQgV0tWaWV3R2V0VHlwZUlEKCkKICAgICByZXR1cm4gdG9BUEkoQVBJT2JqZWN0
OjpUeXBlVmlldyk7CiB9CiAKLVdLVmlld1JlZiBXS1ZpZXdDcmVhdGUoUkVDVCByZWN0LCBXS1Bh
Z2VOYW1lc3BhY2VSZWYgcGFnZU5hbWVzcGFjZVJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3Vw
UmVmLCBIV05EIHBhcmVudFdpbmRvdykKK1dLVmlld1JlZiBXS1ZpZXdDcmVhdGUoUkVDVCByZWN0
LCBXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmLCBI
V05EIHBhcmVudFdpbmRvdykKIHsKLSAgICBSZWZQdHI8V2ViVmlldz4gdmlldyA9IFdlYlZpZXc6
OmNyZWF0ZShyZWN0LCB0b0ltcGwocGFnZU5hbWVzcGFjZVJlZiksIHRvSW1wbChwYWdlR3JvdXBS
ZWYpLCBwYXJlbnRXaW5kb3cpOworICAgIFJlZlB0cjxXZWJWaWV3PiB2aWV3ID0gV2ViVmlldzo6
Y3JlYXRlKHJlY3QsIHRvSW1wbChjb250ZXh0UmVmKSwgdG9JbXBsKHBhZ2VHcm91cFJlZiksIHBh
cmVudFdpbmRvdyk7CisgICAgcmV0dXJuIHRvQVBJKHZpZXcucmVsZWFzZSgpLnJlbGVhc2VSZWYo
KSk7Cit9CisKK1dLVmlld1JlZiBXS1ZpZXdDcmVhdGVVc2luZ1NoYXJlZFByb2Nlc3MoUkVDVCBy
ZWN0LCBXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVm
LCBIV05EIHBhcmVudFdpbmRvdykKK3sKKyAgICBSZWZQdHI8V2ViVmlldz4gdmlldyA9IFdlYlZp
ZXc6OmNyZWF0ZVVzaW5nU2hhcmVkUHJvY2VzcyhyZWN0LCB0b0ltcGwoY29udGV4dFJlZiksIHRv
SW1wbChwYWdlR3JvdXBSZWYpLCBwYXJlbnRXaW5kb3cpOworICAgIHJldHVybiB0b0FQSSh2aWV3
LnJlbGVhc2UoKS5yZWxlYXNlUmVmKCkpOworfQorCitXS1ZpZXdSZWYgV0tWaWV3Q3JlYXRlRm9y
QXNzb2NpYXRlZFBhZ2UoUkVDVCByZWN0LCBXS1BhZ2VSZWYgcGFnZVJlZiwgV0tQYWdlR3JvdXBS
ZWYgcGFnZUdyb3VwUmVmLCBIV05EIHBhcmVudFdpbmRvdykKK3sKKyAgICBSZWZQdHI8V2ViVmll
dz4gdmlldyA9IFdlYlZpZXc6OmNyZWF0ZUZvckFzc29jaWF0ZWRQYWdlKHJlY3QsIHRvSW1wbChw
YWdlUmVmKSwgdG9JbXBsKHBhZ2VHcm91cFJlZiksIHBhcmVudFdpbmRvdyk7CiAgICAgcmV0dXJu
IHRvQVBJKHZpZXcucmVsZWFzZSgpLnJlbGVhc2VSZWYoKSk7CiB9CiAKSW5kZXg6IFdlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL3dpbi9XS1ZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy93aW4vV0tWaWV3LmgJKHJldmlzaW9uIDczODgwKQorKysgV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw5IEBA
IGV4dGVybiAiQyIgewogCiBXS19FWFBPUlQgV0tUeXBlSUQgV0tWaWV3R2V0VHlwZUlEKCk7CiAK
LVdLX0VYUE9SVCBXS1ZpZXdSZWYgV0tWaWV3Q3JlYXRlKFJFQ1QgcmVjdCwgV0tQYWdlTmFtZXNw
YWNlUmVmIHBhZ2VOYW1lc3BhY2UsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCwgSFdORCBwYXJl
bnRXaW5kb3cpOworV0tfRVhQT1JUIFdLVmlld1JlZiBXS1ZpZXdDcmVhdGUoUkVDVCByZWN0LCBX
S0NvbnRleHRSZWYgY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwLCBIV05EIHBhcmVu
dFdpbmRvdyk7CitXS19FWFBPUlQgV0tWaWV3UmVmIFdLVmlld0NyZWF0ZVVzaW5nU2hhcmVkUHJv
Y2VzcyhSRUNUIHJlY3QsIFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdl
R3JvdXAsIEhXTkQgcGFyZW50V2luZG93KTsKK1dLX0VYUE9SVCBXS1ZpZXdSZWYgV0tWaWV3Q3Jl
YXRlRm9yQXNzb2NpYXRlZFBhZ2UoUkVDVCByZWN0LCBXS1BhZ2VSZWYgcGFnZSwgV0tQYWdlR3Jv
dXBSZWYgcGFnZUdyb3VwLCBIV05EIHBhcmVudFdpbmRvdyk7CiAKIFdLX0VYUE9SVCBIV05EIFdL
Vmlld0dldFdpbmRvdyhXS1ZpZXdSZWYgdmlldyk7CiAKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNz
L0FQSS9tYWMvV0tWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9XS1ZpZXcuaAkocmV2aXNpb24gNzM4ODApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFj
L1dLVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxNSArMzMsMTggQEAgQGludGVyZmFjZSBX
S1ZpZXcgOiBOU1ZpZXcgPE5TVGV4dElucHV0PgogICAgIFdLVmlld0RhdGEgKl9kYXRhOwogfQog
Ci0tIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgcGFnZU5hbWVzcGFjZVJlZjooV0tQ
YWdlTmFtZXNwYWNlUmVmKXBhZ2VOYW1lc3BhY2VSZWY7Ci0tIChpZClpbml0V2l0aEZyYW1lOihO
U1JlY3QpZnJhbWUgcGFnZU5hbWVzcGFjZVJlZjooV0tQYWdlTmFtZXNwYWNlUmVmKXBhZ2VOYW1l
c3BhY2VSZWYgcGFnZUdyb3VwUmVmOihXS1BhZ2VHcm91cFJlZilwYWdlR3JvdXBSZWY7CistIChp
ZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgY29udGV4dFJlZjooV0tDb250ZXh0UmVmKWNv
bnRleHRSZWY7CistIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgY29udGV4dFJlZjoo
V0tDb250ZXh0UmVmKWNvbnRleHRSZWYgcGFnZUdyb3VwUmVmOihXS1BhZ2VHcm91cFJlZilwYWdl
R3JvdXBSZWY7CiAKLS0gKFdLUGFnZVJlZilwYWdlUmVmOworLSAoaWQpaW5pdFdpdGhGcmFtZToo
TlNSZWN0KWZyYW1lIGNvbnRleHRSZWY6KFdLQ29udGV4dFJlZiljb250ZXh0UmVmIHVzaW5nU2hh
cmVkUHJvY2VzczooQk9PTCl1c2luZ1NoYXJlZFByb2Nlc3M7CistIChpZClpbml0V2l0aEZyYW1l
OihOU1JlY3QpZnJhbWUgY29udGV4dFJlZjooV0tDb250ZXh0UmVmKWNvbnRleHRSZWYgcGFnZUdy
b3VwUmVmOihXS1BhZ2VHcm91cFJlZilwYWdlR3JvdXBSZWYgdXNpbmdTaGFyZWRQcm9jZXNzOihC
T09MKXVzaW5nU2hhcmVkUHJvY2Vzczs7CiAKLS0gKHZvaWQpc2V0RHJhd3NCYWNrZ3JvdW5kOihC
T09MKWZsYWc7Ci0tIChCT09MKWRyYXdzQmFja2dyb3VuZDsKKy0gKGlkKWluaXRXaXRoRnJhbWU6
KE5TUmVjdClmcmFtZSBmb3JBc3NvY2lhdGVkUGFnZVJlZjooV0tQYWdlUmVmKXBhZ2VSZWY7Cist
IChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgZm9yQXNzb2NpYXRlZFBhZ2VSZWY6KFdL
UGFnZVJlZilwYWdlUmVmIHBhZ2VHcm91cFJlZjooV0tQYWdlR3JvdXBSZWYpcGFnZUdyb3VwUmVm
OwogCi0tICh2b2lkKXNldERyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kOihCT09MKWZsYWc7Ci0t
IChCT09MKWRyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kOworQHByb3BlcnR5KHJlYWRvbmx5KSBX
S1BhZ2VSZWYgcGFnZVJlZjsKKworQHByb3BlcnR5IEJPT0wgZHJhd3NCYWNrZ3JvdW5kOworQHBy
b3BlcnR5IEJPT0wgZHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQ7CiAKIEBlbmQKSW5kZXg6IFdl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCShyZXZpc2lvbiA3Mzg4MCkKKysrIFdlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsOSArMTI3
LDU0IEBAIC0gKEJPT0wpd2FudHNUb0hhbmRsZU1vdXNlRXZlbnRzOwogLSAoQk9PTCloYW5kbGVN
b3VzZUV2ZW50OihOU0V2ZW50ICopZXZlbnQ7CiBAZW5kCiAKK0BpbnRlcmZhY2UgV0tWaWV3ICgp
CistIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgcGFnZU5hbWVzcGFjZTooV2ViUGFn
ZU5hbWVzcGFjZSopcGFnZU5hbWVzcGFjZSBwYWdlR3JvdXA6KFdlYlBhZ2VHcm91cCopcGFnZUdy
b3VwOworQGVuZAorCiBAaW1wbGVtZW50YXRpb24gV0tWaWV3CiAKLS0gKGlkKWluaXRXaXRoRnJh
bWU6KE5TUmVjdClmcmFtZSBwYWdlTmFtZXNwYWNlUmVmOihXS1BhZ2VOYW1lc3BhY2VSZWYpcGFn
ZU5hbWVzcGFjZVJlZiBwYWdlR3JvdXBSZWY6KFdLUGFnZUdyb3VwUmVmKXBhZ2VHcm91cFJlZgor
LSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lCit7CisgICAgcmV0dXJuIFtzZWxmIGlu
aXRXaXRoRnJhbWU6ZnJhbWUgY29udGV4dFJlZjp0b0FQSShXZWJDb250ZXh0OjpzaGFyZWRQcm9j
ZXNzQ29udGV4dCgpKV07Cit9CisKKy0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBj
b250ZXh0UmVmOihXS0NvbnRleHRSZWYpY29udGV4dFJlZgoreyAgIAorICAgIHJldHVybiBbc2Vs
ZiBpbml0V2l0aEZyYW1lOmZyYW1lIGNvbnRleHRSZWY6Y29udGV4dFJlZiBwYWdlR3JvdXBSZWY6
bmlsXTsKK30KKworLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGNvbnRleHRSZWY6
KFdLQ29udGV4dFJlZiljb250ZXh0UmVmIHBhZ2VHcm91cFJlZjooV0tQYWdlR3JvdXBSZWYpcGFn
ZUdyb3VwUmVmCit7CisgICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoRnJhbWU6ZnJhbWUgY29udGV4
dFJlZjpjb250ZXh0UmVmIHBhZ2VHcm91cFJlZjpwYWdlR3JvdXBSZWYgdXNpbmdTaGFyZWRQcm9j
ZXNzOk5PXTsKK30KKworLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGNvbnRleHRS
ZWY6KFdLQ29udGV4dFJlZiljb250ZXh0UmVmIHVzaW5nU2hhcmVkUHJvY2VzczooQk9PTCl1c2lu
Z1NoYXJlZFByb2Nlc3MKK3sKKyAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhGcmFtZTpmcmFtZSBj
b250ZXh0UmVmOmNvbnRleHRSZWYgcGFnZUdyb3VwUmVmOm5pbCB1c2luZ1NoYXJlZFByb2Nlc3M6
dXNpbmdTaGFyZWRQcm9jZXNzXTsKK30KKworLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZy
YW1lIGNvbnRleHRSZWY6KFdLQ29udGV4dFJlZiljb250ZXh0UmVmIHBhZ2VHcm91cFJlZjooV0tQ
YWdlR3JvdXBSZWYpcGFnZUdyb3VwUmVmIHVzaW5nU2hhcmVkUHJvY2VzczooQk9PTCl1c2luZ1No
YXJlZFByb2Nlc3MKK3sKKyAgICBSZWZQdHI8V2ViUGFnZU5hbWVzcGFjZT4gcGFnZU5hbWVzcGFj
ZTsKKyAgICBpZiAodXNpbmdTaGFyZWRQcm9jZXNzKQorICAgICAgICBwYWdlTmFtZXNwYWNlID0g
dG9JbXBsKGNvbnRleHRSZWYpLT5zaGFyZWRQYWdlTmFtZXNwYWNlKCk7CisgICAgZWxzZQorICAg
ICAgICBwYWdlTmFtZXNwYWNlID0gdG9JbXBsKGNvbnRleHRSZWYpLT5jcmVhdGVQYWdlTmFtZXNw
YWNlKCk7CisKKyAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhGcmFtZTpmcmFtZSBwYWdlTmFtZXNw
YWNlOnBhZ2VOYW1lc3BhY2UuZ2V0KCkgcGFnZUdyb3VwOnRvSW1wbChwYWdlR3JvdXBSZWYpXTsK
K30KKworLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGZvckFzc29jaWF0ZWRQYWdl
UmVmOihXS1BhZ2VSZWYpcGFnZVJlZgoreworICAgIHJldHVybiBbc2VsZiBpbml0V2l0aEZyYW1l
OmZyYW1lIGZvckFzc29jaWF0ZWRQYWdlUmVmOnBhZ2VSZWYgcGFnZUdyb3VwUmVmOm5pbF07Cit9
CisKKy0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBmb3JBc3NvY2lhdGVkUGFnZVJl
ZjooV0tQYWdlUmVmKXBhZ2VSZWYgcGFnZUdyb3VwUmVmOihXS1BhZ2VHcm91cFJlZilwYWdlR3Jv
dXBSZWYKK3sKKyAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhGcmFtZTpmcmFtZSBwYWdlTmFtZXNw
YWNlOnRvSW1wbChwYWdlUmVmKS0+cGFnZU5hbWVzcGFjZSgpIHBhZ2VHcm91cDp0b0ltcGwocGFn
ZUdyb3VwUmVmKV07Cit9CisKKy0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBwYWdl
TmFtZXNwYWNlOihXZWJQYWdlTmFtZXNwYWNlKilwYWdlTmFtZXNwYWNlIHBhZ2VHcm91cDooV2Vi
UGFnZUdyb3VwKilwYWdlR3JvdXAKIHsKICAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRoRnJhbWU6
ZnJhbWVdOwogICAgIGlmICghc2VsZikKQEAgLTE0OCw3ICsxOTMsNyBAQCAtIChpZClpbml0V2l0
aEZyYW1lOihOU1JlY3QpZnJhbWUgcGFnZU5hCiAgICAgX2RhdGEgPSBbW1dLVmlld0RhdGEgYWxs
b2NdIGluaXRdOwogCiAgICAgX2RhdGEtPl9wYWdlQ2xpZW50ID0gUGFnZUNsaWVudEltcGw6OmNy
ZWF0ZShzZWxmKTsKLSAgICBfZGF0YS0+X3BhZ2UgPSB0b0ltcGwocGFnZU5hbWVzcGFjZVJlZikt
PmNyZWF0ZVdlYlBhZ2UodG9JbXBsKHBhZ2VHcm91cFJlZikpOworICAgIF9kYXRhLT5fcGFnZSA9
IHBhZ2VOYW1lc3BhY2UtPmNyZWF0ZVdlYlBhZ2UocGFnZUdyb3VwKTsKICAgICBfZGF0YS0+X3Bh
Z2UtPnNldFBhZ2VDbGllbnQoX2RhdGEtPl9wYWdlQ2xpZW50LmdldCgpKTsKICAgICBfZGF0YS0+
X3BhZ2UtPnNldERyYXdpbmdBcmVhKENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5OjpjcmVh
dGUoc2VsZikpOwogICAgIF9kYXRhLT5fcGFnZS0+aW5pdGlhbGl6ZVdlYlBhZ2UoSW50U2l6ZShm
cmFtZS5zaXplKSk7CkBAIC0xNjgsMTcgKzIxMyw2IEBAIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5T
UmVjdClmcmFtZSBwYWdlTmEKICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAoaWQpaW5pdFdpdGhG
cmFtZTooTlNSZWN0KWZyYW1lIHBhZ2VOYW1lc3BhY2VSZWY6KFdLUGFnZU5hbWVzcGFjZVJlZilw
YWdlTmFtZXNwYWNlUmVmCi17Ci0gICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoRnJhbWU6ZnJhbWUg
cGFnZU5hbWVzcGFjZVJlZjpwYWdlTmFtZXNwYWNlUmVmIHBhZ2VHcm91cFJlZjpuaWxdOwotfQot
Ci0tIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUKLXsKLSAgICBXZWJDb250ZXh0KiBj
b250ZXh0ID0gV2ViQ29udGV4dDo6c2hhcmVkUHJvY2Vzc0NvbnRleHQoKTsKLSAgICByZXR1cm4g
W3NlbGYgaW5pdFdpdGhGcmFtZTpmcmFtZSBwYWdlTmFtZXNwYWNlUmVmOnRvQVBJKGNvbnRleHQt
PmNyZWF0ZVBhZ2VOYW1lc3BhY2UoKSldOwotfQotCiAtICh2b2lkKWRlYWxsb2MKIHsKICAgICBf
ZGF0YS0+X3BhZ2UtPmNsb3NlKCk7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdr
Y29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a2Nv
bnRleHQuY3BwCShyZXZpc2lvbiA3Mzg4MCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
d2tjb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTUgKzUwLDIzIEBAIFFXS0NvbnRl
eHQ6OlFXS0NvbnRleHQoUU9iamVjdCogcGFyZW50KQogICAgICwgZChuZXcgUVdLQ29udGV4dFBy
aXZhdGUodGhpcykpCiB7CiAgICAgZC0+Y29udGV4dCA9IFdlYkNvbnRleHQ6OmNyZWF0ZShTdHJp
bmcoKSk7Ci0gICAgZC0+cGFnZU5hbWVzcGFjZSA9IGQtPmNvbnRleHQtPmNyZWF0ZVBhZ2VOYW1l
c3BhY2UoKTsKKyAgICBkLT5wYWdlTmFtZXNwYWNlID0gZC0+Y29udGV4dC0+c2hhcmVkUGFnZU5h
bWVzcGFjZSgpOwogfQogCi1RV0tDb250ZXh0OjpRV0tDb250ZXh0KFdLUGFnZU5hbWVzcGFjZVJl
ZiBwYWdlTmFtZXNwYWNlUmVmLCBRT2JqZWN0KiBwYXJlbnQpCitRV0tDb250ZXh0OjpRV0tDb250
ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBRT2JqZWN0KiBwYXJlbnQpCiAgICAgOiBRT2Jq
ZWN0KHBhcmVudCkKICAgICAsIGQobmV3IFFXS0NvbnRleHRQcml2YXRlKHRoaXMpKQogewotICAg
IGQtPnBhZ2VOYW1lc3BhY2UgPSB0b0ltcGwocGFnZU5hbWVzcGFjZVJlZik7Ci0gICAgZC0+Y29u
dGV4dCA9IGQtPnBhZ2VOYW1lc3BhY2UtPmNvbnRleHQoKTsKKyAgICBkLT5jb250ZXh0ID0gdG9J
bXBsKGNvbnRleHRSZWYpOworICAgIGQtPnBhZ2VOYW1lc3BhY2UgPSBkLT5jb250ZXh0LT5zaGFy
ZWRQYWdlTmFtZXNwYWNlKCk7Cit9CisKK1FXS0NvbnRleHQ6OlFXS0NvbnRleHQoV0tQYWdlUmVm
IHBhZ2VSZWYsIFFPYmplY3QqIHBhcmVudCkKKyAgICA6IFFPYmplY3QocGFyZW50KQorICAgICwg
ZChuZXcgUVdLQ29udGV4dFByaXZhdGUodGhpcykpCit7CisgICAgZC0+Y29udGV4dCA9IHRvSW1w
bChwYWdlUmVmKS0+Y29udGV4dCgpOworICAgIGQtPnBhZ2VOYW1lc3BhY2UgPSBkLT5jb250ZXh0
LT5zaGFyZWRQYWdlTmFtZXNwYWNlKCk7CiB9CiAKIFFXS0NvbnRleHQ6On5RV0tDb250ZXh0KCkK
SW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2tjb250ZXh0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a2NvbnRleHQuaAkocmV2aXNpb24gNzM4ODAp
CisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrY29udGV4dC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMiw3ICsyMiw4IEBACiAKICNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCiAjaW5jbHVk
ZSA8UU9iamVjdD4KLSNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZU5hbWVzcGFjZS5oPgorI2luY2x1
ZGUgPFdlYktpdDIvV0tDb250ZXh0Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2UuaD4KIAog
Y2xhc3MgUVdLQ29udGV4dFByaXZhdGU7CiAKQEAgLTMzLDcgKzM0LDggQEAgcHVibGljOgogICAg
IHZpcnR1YWwgflFXS0NvbnRleHQoKTsKIAogICAgIC8vIEJyaWRnZSBmcm9tIHRoZSBDIEFQSQot
ICAgIFFXS0NvbnRleHQoV0tQYWdlTmFtZXNwYWNlUmVmIHBhZ2VOYW1lc3BhY2VSZWYsIFFPYmpl
Y3QqIHBhcmVudCA9IDApOworICAgIFFXS0NvbnRleHQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYs
IFFPYmplY3QqIHBhcmVudCA9IDApOworICAgIFFXS0NvbnRleHQoV0tQYWdlUmVmIHBhZ2VSZWYs
IFFPYmplY3QqIHBhcmVudCA9IDApOwogCiBwcml2YXRlOgogICAgIFFXS0NvbnRleHRQcml2YXRl
KiBkOwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1h
Yy5tbQkocmV2aXNpb24gNzM4ODApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVj
dG9yUHJveHlNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTc4LDEwICs3OCwxMCBAQCBXZWJQYWdl
UHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9yCiAgICAgQVNTRVJUKG1fcGFnZSk7CiAg
ICAgQVNTRVJUKCFtX2luc3BlY3RvclZpZXcpOwogCi0gICAgbV9pbnNwZWN0b3JWaWV3LmFkb3B0
TlMoW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBwYWdlTmFtZXNwYWNl
UmVmOnRvQVBJKG1fcGFnZS0+cGFnZU5hbWVzcGFjZSgpKSBwYWdlR3JvdXBSZWY6dG9BUEkoaW5z
cGVjdG9yUGFnZUdyb3VwKCkpXSk7CisgICAgbV9pbnNwZWN0b3JWaWV3LmFkb3B0TlMoW1tXS1Zp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBmb3JBc3NvY2lhdGVkUGFnZVJlZjp0
b0FQSShwYWdlKCkpIHBhZ2VHcm91cFJlZjp0b0FQSShpbnNwZWN0b3JQYWdlR3JvdXAoKSldKTsK
ICAgICBBU1NFUlQobV9pbnNwZWN0b3JWaWV3KTsKIAotICAgIHJldHVybiB0b0ltcGwoW21faW5z
cGVjdG9yVmlldy5nZXQoKSBwYWdlUmVmXSk7CisgICAgcmV0dXJuIHRvSW1wbChtX2luc3BlY3Rv
clZpZXcuZ2V0KCkucGFnZVJlZik7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRm
b3JtT3BlbigpCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJveHlX
aW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQ
cm94eVdpbi5jcHAJKHJldmlzaW9uIDczODgwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dl
Ykluc3BlY3RvclByb3h5V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDggKzE0MSw4IEBA
IFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3IKICAgICBBU1NFUlQoIW1f
aW5zcGVjdG9yV2luZG93KTsKIAogICAgIFJFQ1QgZW1wdHlSZWN0ID0gezB9OwotICAgIG1faW5z
cGVjdG9yVmlldyA9IFdlYlZpZXc6OmNyZWF0ZShlbXB0eVJlY3QsIG1fcGFnZS0+cGFnZU5hbWVz
cGFjZSgpLCBpbnNwZWN0b3JQYWdlR3JvdXAoKSwgMCkubGVha1JlZigpOwotICAgIAorICAgIG1f
aW5zcGVjdG9yVmlldyA9IFdlYlZpZXc6OmNyZWF0ZUZvckFzc29jaWF0ZWRQYWdlKGVtcHR5UmVj
dCwgbV9wYWdlLCBpbnNwZWN0b3JQYWdlR3JvdXAoKSwgMCkubGVha1JlZigpOworCiAgICAgcmV0
dXJuIG1faW5zcGVjdG9yVmlldy0+cGFnZSgpOwogfQogCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vz
cy93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dl
YlZpZXcuY3BwCShyZXZpc2lvbiA3Mzg4MCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJW
aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgyLDcgKzE4Miw3IEBAIGJvb2wgV2ViVmlldzo6
cmVnaXN0ZXJXZWJWaWV3V2luZG93Q2xhc3MKICAgICByZXR1cm4gISE6OlJlZ2lzdGVyQ2xhc3NF
eCgmd2NleCk7CiB9CiAKLVdlYlZpZXc6OldlYlZpZXcoUkVDVCByZWN0LCBXZWJQYWdlTmFtZXNw
YWNlKiBwYWdlTmFtZXNwYWNlLCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCwgSFdORCBwYXJlbnRX
aW5kb3cpCitXZWJWaWV3OjpXZWJWaWV3KFJFQ1QgcmVjdCwgV2ViQ29udGV4dCogY29udGV4dCwg
V2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAsIEhXTkQgcGFyZW50V2luZG93LCBib29sIHVzaW5nU2hh
cmVkUHJvY2VzcykKICAgICA6IG1fcmVjdChyZWN0KQogICAgICwgbV90b3BMZXZlbFBhcmVudFdp
bmRvdygwKQogICAgICwgbV90b29sVGlwV2luZG93KDApCkBAIC0xOTIsNiArMTkyLDMwIEBAIFdl
YlZpZXc6OldlYlZpZXcoUkVDVCByZWN0LCBXZWJQYWdlTmFtZXMKICAgICAsIG1fdHJhY2tpbmdN
b3VzZUxlYXZlKGZhbHNlKQogICAgICwgbV9pc0JlaW5nRGVzdHJveWVkKGZhbHNlKQogeworICAg
IFJlZlB0cjxXZWJQYWdlTmFtZXNwYWNlPiBwYWdlTmFtZXNwYWNlOworICAgIGlmICh1c2luZ1No
YXJlZFByb2Nlc3MpCisgICAgICAgIHBhZ2VOYW1lc3BhY2UgPSBjb250ZXh0LT5zaGFyZWRQYWdl
TmFtZXNwYWNlKCk7CisgICAgZWxzZQorICAgICAgICBwYWdlTmFtZXNwYWNlID0gY29udGV4dC0+
Y3JlYXRlUGFnZU5hbWVzcGFjZSgpOworCisgICAgaW5pdGlhbGl6ZShwYWdlTmFtZXNwYWNlLmdl
dCgpLCBwYWdlR3JvdXAsIHBhcmVudFdpbmRvdyk7Cit9CisKK1dlYlZpZXc6OldlYlZpZXcoUkVD
VCByZWN0LCBXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwLCBIV05E
IHBhcmVudFdpbmRvdykKKyAgICA6IG1fcmVjdChyZWN0KQorICAgICwgbV90b3BMZXZlbFBhcmVu
dFdpbmRvdygwKQorICAgICwgbV90b29sVGlwV2luZG93KDApCisgICAgLCBtX2xhc3RDdXJzb3JT
ZXQoMCkKKyAgICAsIG1fd2ViQ29yZUN1cnNvcigwKQorICAgICwgbV9vdmVycmlkZUN1cnNvcigw
KQorICAgICwgbV90cmFja2luZ01vdXNlTGVhdmUoZmFsc2UpCisgICAgLCBtX2lzQmVpbmdEZXN0
cm95ZWQoZmFsc2UpCit7CisgICAgaW5pdGlhbGl6ZShwYWdlLT5wYWdlTmFtZXNwYWNlKCksIHBh
Z2VHcm91cCwgcGFyZW50V2luZG93KTsKK30KKwordm9pZCBXZWJWaWV3Ojppbml0aWFsaXplKFdl
YlBhZ2VOYW1lc3BhY2UqIHBhZ2VOYW1lc3BhY2UsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwLCBI
V05EIHBhcmVudFdpbmRvdykKK3sKICAgICByZWdpc3RlcldlYlZpZXdXaW5kb3dDbGFzcygpOwog
CiAgICAgbV9wYWdlID0gcGFnZU5hbWVzcGFjZS0+Y3JlYXRlV2ViUGFnZShwYWdlR3JvdXApOwpA
QCAtMTk5LDEwICsyMjMsMTAgQEAgV2ViVmlldzo6V2ViVmlldyhSRUNUIHJlY3QsIFdlYlBhZ2VO
YW1lcwogICAgIG1fcGFnZS0+c2V0RHJhd2luZ0FyZWEoQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVh
UHJveHk6OmNyZWF0ZSh0aGlzKSk7CiAKICAgICBtX3dpbmRvdyA9IDo6Q3JlYXRlV2luZG93RXgo
MCwga1dlYktpdDJXZWJWaWV3V2luZG93Q2xhc3NOYW1lLCAwLCBXU19DSElMRCB8IFdTX0NMSVBT
SUJMSU5HUyB8IFdTX0NMSVBDSElMRFJFTiwKLSAgICAgICAgcmVjdC50b3AsIHJlY3QubGVmdCwg
cmVjdC5yaWdodCAtIHJlY3QubGVmdCwgcmVjdC5ib3R0b20gLSByZWN0LnRvcCwgcGFyZW50V2lu
ZG93ID8gcGFyZW50V2luZG93IDogSFdORF9NRVNTQUdFLCAwLCBpbnN0YW5jZUhhbmRsZSgpLCB0
aGlzKTsKKyAgICAgICAgbV9yZWN0LnRvcCwgbV9yZWN0LmxlZnQsIG1fcmVjdC5yaWdodCAtIG1f
cmVjdC5sZWZ0LCBtX3JlY3QuYm90dG9tIC0gbV9yZWN0LnRvcCwgcGFyZW50V2luZG93ID8gcGFy
ZW50V2luZG93IDogSFdORF9NRVNTQUdFLCAwLCBpbnN0YW5jZUhhbmRsZSgpLCB0aGlzKTsKICAg
ICBBU1NFUlQoOjpJc1dpbmRvdyhtX3dpbmRvdykpOwogCi0gICAgbV9wYWdlLT5pbml0aWFsaXpl
V2ViUGFnZShJbnRSZWN0KHJlY3QpLnNpemUoKSk7CisgICAgbV9wYWdlLT5pbml0aWFsaXplV2Vi
UGFnZShJbnRSZWN0KG1fcmVjdCkuc2l6ZSgpKTsKIAogICAgIDo6U2hvd1dpbmRvdyhtX3dpbmRv
dywgU1dfU0hPVyk7CiAKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuaAkocmV2aXNpb24gNzM4
ODApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MSw5ICs0MSwxNyBAQCBjbGFzcyBXZWJQYWdlTmFtZXNwYWNlOwogCiBjbGFzcyBXZWJWaWV3
IDogcHVibGljIEFQSU9iamVjdCwgcHVibGljIFBhZ2VDbGllbnQsIFdlYkNvcmU6OldpbmRvd01l
c3NhZ2VMaXN0ZW5lciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViVmlldz4g
Y3JlYXRlKFJFQ1QgcmVjdCwgV2ViUGFnZU5hbWVzcGFjZSogcGFnZU5hbWVzcGFjZSwgV2ViUGFn
ZUdyb3VwKiBwYWdlR3JvdXAsIEhXTkQgcGFyZW50V2luZG93KQorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFdlYlZpZXc+IGNyZWF0ZShSRUNUIHJlY3QsIFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYlBh
Z2VHcm91cCogcGFnZUdyb3VwLCBIV05EIHBhcmVudFdpbmRvdykKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgV2ViVmlldyhyZWN0LCBwYWdlTmFtZXNwYWNlLCBwYWdlR3JvdXAs
IHBhcmVudFdpbmRvdykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlZpZXcocmVj
dCwgY29udGV4dCwgcGFnZUdyb3VwLCBwYXJlbnRXaW5kb3csIGZhbHNlKSk7CisgICAgfQorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYlZpZXc+IGNyZWF0ZVVzaW5nU2hhcmVkUHJvY2VzcyhSRUNU
IHJlY3QsIFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwLCBIV05E
IHBhcmVudFdpbmRvdykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViVmll
dyhyZWN0LCBjb250ZXh0LCBwYWdlR3JvdXAsIHBhcmVudFdpbmRvdywgdHJ1ZSkpOworICAgIH0K
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJWaWV3PiBjcmVhdGVGb3JBc3NvY2lhdGVkUGFnZShS
RUNUIHJlY3QsIFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAsIEhX
TkQgcGFyZW50V2luZG93KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJW
aWV3KHJlY3QsIHBhZ2UsIHBhZ2VHcm91cCwgcGFyZW50V2luZG93KSk7CiAgICAgfQogICAgIH5X
ZWJWaWV3KCk7CiAKQEAgLTU4LDcgKzY2LDEwIEBAIHB1YmxpYzoKICAgICBXZWJQYWdlUHJveHkq
IHBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2UuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBX
ZWJWaWV3KFJFQ1QsIFdlYlBhZ2VOYW1lc3BhY2UqLCBXZWJQYWdlR3JvdXAqLCBIV05EIHBhcmVu
dFdpbmRvdyk7CisgICAgV2ViVmlldyhSRUNULCBXZWJDb250ZXh0KiwgV2ViUGFnZUdyb3VwKiwg
SFdORCBwYXJlbnRXaW5kb3csIGJvb2wgdXNpbmdTaGFyZWRQcm9jZXNzKTsKKyAgICBXZWJWaWV3
KFJFQ1QsIFdlYlBhZ2VQcm94eSosIFdlYlBhZ2VHcm91cCosIEhXTkQgcGFyZW50V2luZG93KTsK
KworICAgIHZvaWQgaW5pdGlhbGl6ZShXZWJQYWdlTmFtZXNwYWNlKiwgV2ViUGFnZUdyb3VwKiwg
SFdORCBwYXJlbnRXaW5kb3cpOwogCiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJl
dHVybiBUeXBlVmlldzsgfQogCkluZGV4OiBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gNzM4ODApCisrKyBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTQxLDggKzU0MSw2IEBACiAJCUJD
RUU5NjZEMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VFOTY2QjExMkZBRjU3MDA2QkNDMjQgLyog
QXR0YWNobWVudC5oICovOyB9OwogCQlCQ0VFOThDNjExMzMxNEQ3MDA2QkNDMjQgLyogV2ViUGFn
ZU5hbWVzcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0VFOThDNDExMzMxNEQ3MDA2QkNDMjQgLyogV2ViUGFnZU5hbWVzcGFjZS5jcHAgKi87
IH07CiAJCUJDRUU5OEM3MTEzMzE0RDcwMDZCQ0MyNCAvKiBXZWJQYWdlTmFtZXNwYWNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VFOThDNTExMzMx
NEQ3MDA2QkNDMjQgLyogV2ViUGFnZU5hbWVzcGFjZS5oICovOyB9OwotCQlCQ0VFOThDQzExMzMx
NzRDMDA2QkNDMjQgLyogV0tQYWdlTmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUU5OENBMTEzMzE3NEMwMDZCQ0MyNCAvKiBXS1Bh
Z2VOYW1lc3BhY2UuY3BwICovOyB9OwotCQlCQ0VFOThDRDExMzMxNzRDMDA2QkNDMjQgLyogV0tQ
YWdlTmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0VFOThDQjExMzMxNzRDMDA2QkNDMjQgLyogV0tQYWdlTmFtZXNwYWNlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQlCQ0YwNDlFNjExRkUy
MEY2MDBGODZBNTggLyogV0tCdW5kbGVGcmFtZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRjA0OUU0MTFGRTIwRjYwMEY4NkE1OCAvKiBX
S0J1bmRsZUZyYW1lUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUJDRjA0OUU3MTFGRTIwRjYwMEY4NkE1OCAvKiBXS0J1bmRsZVByaXZh
dGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRjA0
OUU1MTFGRTIwRjYwMEY4NkE1OCAvKiBXS0J1bmRsZVByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0Y1MDEyMTEyM0VEM0IzMDA1OTU1
QUUgLyogVGhyZWFkTGF1bmNoZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDRjUwMTFGMTIzRUQzQjMwMDU5NTVBRSAvKiBUaHJlYWRMYXVuY2hlci5o
ICovOyB9OwpAQCAtMTE5Niw4ICsxMTk0LDYgQEAKIAkJQkNFRTk2NkIxMTJGQUY1NzAwNkJDQzI0
IC8qIEF0dGFjaG1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXR0YWNo
bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0VFOThDNDExMzMxNEQ3MDA2
QkNDMjQgLyogV2ViUGFnZU5hbWVzcGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJQYWdlTmFtZXNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkNFRTk4QzUxMTMzMTRENzAwNkJDQzI0IC8qIFdlYlBhZ2VOYW1lc3BhY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGFnZU5hbWVzcGFjZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlCQ0VFOThDQTExMzMxNzRDMDA2QkNDMjQgLyogV0tQYWdl
TmFtZXNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLUGFn
ZU5hbWVzcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDRUU5OENCMTEz
MzE3NEMwMDZCQ0MyNCAvKiBXS1BhZ2VOYW1lc3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tQYWdlTmFtZXNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDRjA0OUU0MTFGRTIwRjYwMEY4NkE1OCAvKiBXS0J1bmRsZUZyYW1lUHJpdmF0ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0J1bmRsZUZyYW1lUHJpdmF0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0YwNDlFNTExRkUyMEY2MDBGODZBNTggLyog
V0tCdW5kbGVQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVu
ZGxlUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0YwNEM4QzExRkY5
QjdEMDBGODZBNTggLyogQVBJT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFQSU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk3MCw4ICsx
OTY2LDYgQEAKIAkJCQlCQ0Q1OTdENTExMkI1NkRDMDBFQzhDMjMgLyogV0tQYWdlLmggKi8sCiAJ
CQkJQkM3QjYzMzYxMkE0NUFCQTAwRDE3NEE0IC8qIFdLUGFnZUdyb3VwLmNwcCAqLywKIAkJCQlC
QzdCNjMzNTEyQTQ1QUJBMDBEMTc0QTQgLyogV0tQYWdlR3JvdXAuaCAqLywKLQkJCQlCQ0VFOThD
QTExMzMxNzRDMDA2QkNDMjQgLyogV0tQYWdlTmFtZXNwYWNlLmNwcCAqLywKLQkJCQlCQ0VFOThD
QjExMzMxNzRDMDA2QkNDMjQgLyogV0tQYWdlTmFtZXNwYWNlLmggKi8sCiAJCQkJQkMxNzc0NjQx
MThCOUZGNDAwN0Q5RTlBIC8qIFdLUGFnZVByaXZhdGUuaCAqLywKIAkJCQlCQ0Q1OTdDRjExMkI1
NkFDMDBFQzhDMjMgLyogV0tQcmVmZXJlbmNlcy5jcHAgKi8sCiAJCQkJQkNENTk3Q0UxMTJCNTZB
QzAwRUM4QzIzIC8qIFdLUHJlZmVyZW5jZXMuaCAqLywKQEAgLTI1MTAsNyArMjUwNCw2IEBACiAJ
CQkJQkNCOUY2QTUxMTIzREQwRDAwQTEzN0UwIC8qIFdLRnJhbWVQb2xpY3lMaXN0ZW5lci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkNGNjlGQTkxMTc2RDFDQjAwNDcxQTUyIC8qIFdLTmF2aWdhdGlv
bkRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDU5N0Q3MTEyQjU2REMwMEVDOEMyMyAvKiBX
S1BhZ2UuaCBpbiBIZWFkZXJzICovLAotCQkJCUJDRUU5OENEMTEzMzE3NEMwMDZCQ0MyNCAvKiBX
S1BhZ2VOYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTc3NDY1MTE4QjlGRjQwMDdE
OUU5QSAvKiBXS1BhZ2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0Q1OTdEMDExMkI1
NkFDMDBFQzhDMjMgLyogV0tQcmVmZXJlbmNlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzYyQjc0
OEQxMjBCQzc1QzAwODE5MzM5IC8qIFdLUHJlZmVyZW5jZXNQcml2YXRlLmggaW4gSGVhZGVycyAq
LywKQEAgLTI5MzUsNyArMjkyOCw2IEBACiAJCQkJQkNCOUY2QTYxMTIzREQwRDAwQTEzN0UwIC8q
IFdLRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0Y2OUZBQTEx
NzZEMUNCMDA0NzFBNTIgLyogV0tOYXZpZ2F0aW9uRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQ0Q1OTdENjExMkI1NkRDMDBFQzhDMjMgLyogV0tQYWdlLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCUJDRUU5OENDMTEzMzE3NEMwMDZCQ0MyNCAvKiBXS1BhZ2VOYW1lc3BhY2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkNENTk3RDExMTJCNTZBQzAwRUM4QzIzIC8qIFdLUHJlZmVyZW5jZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4Njk5QjYxMTZBQURBQTAwMkE5MjVCIC8qIFdLVmll
dy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDMkU2RThEMTE0MTk3MTUwMEE2M0IxRSAvKiBXb3Jr
UXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBXZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagkocmV2aXNpb24gNzM4
ODApCisrKyBXZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjIy
NSwxNCArMjIyNSw2IEBACiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KIAkJCQkJPEZpbGUKLQkJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXEFQSVxDXFdLUGFnZU5hbWVzcGFjZS5jcHAiCi0J
CQkJCQk+Ci0JCQkJCTwvRmlsZT4KLQkJCQkJPEZpbGUKLQkJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
VUlQcm9jZXNzXEFQSVxDXFdLUGFnZU5hbWVzcGFjZS5oIgotCQkJCQkJPgotCQkJCQk8L0ZpbGU+
Ci0JCQkJCTxGaWxlCiAJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xBUElcQ1xXS1Bh
Z2VQcml2YXRlLmgiCiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KSW5kZXg6IFdlYktpdDIvd2luL1dl
YktpdDJHZW5lcmF0ZWQubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL3dpbi9XZWJLaXQyR2Vu
ZXJhdGVkLm1ha2UJKHJldmlzaW9uIDczODgwKQorKysgV2ViS2l0Mi93aW4vV2ViS2l0MkdlbmVy
YXRlZC5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw2IEBAIGFsbDoKICAgICB4Y29w
eSAveSAvZCAiLi5cVUlQcm9jZXNzXEFQSVxDXFdLTmF2aWdhdGlvbkRhdGEuaCIgIiQoV0VCS0lU
T1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCiAgICAgeGNvcHkgL3kgL2QgIi4uXFVJUHJvY2Vz
c1xBUElcQ1xXS1BhZ2UuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCiAg
ICAgeGNvcHkgL3kgL2QgIi4uXFVJUHJvY2Vzc1xBUElcQ1xXS1BhZ2VHcm91cC5oIiAiJChXRUJL
SVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKLSAgICB4Y29weSAveSAvZCAiLi5cVUlQcm9j
ZXNzXEFQSVxDXFdLUGFnZU5hbWVzcGFjZS5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVc
V2ViS2l0MiIKICAgICB4Y29weSAveSAvZCAiLi5cVUlQcm9jZXNzXEFQSVxDXFdLUHJlZmVyZW5j
ZXMuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCiAgICAgeGNvcHkgL3kg
L2QgIi4uXFVJUHJvY2Vzc1xBUElcQ1xXS1ByZWZlcmVuY2VzUHJpdmF0ZS5oIiAiJChXRUJLSVRP
VVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKICAgICB4Y29weSAveSAvZCAiLi5cVUlQcm9jZXNz
XEFQSVxDXFdLUHJvdGVjdGlvblNwYWNlLmgiICIkKFdFQktJVE9VVFBVVERJUilcaW5jbHVkZVxX
ZWJLaXQyIgpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNzM4ODIpCisrKyBXZWJLaXRUb29scy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MyBAQAorMjAxMC0xMi0xMiAgU2FtIFdlaW5p
ZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIENoYW5nZSB0aGUgV2ViS2l0MiBwdWJsaWMgQVBJIHNvIHRoZXJlIGlzIG5v
IGV4cGxpY2l0IFdLUGFnZU5hbWVzcGFjZSBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwODk4CisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9t
YWMvQXBwRGVsZWdhdGUuaDoKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUu
bToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIuaDoK
KyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubToKKyAg
ICAgICAgKiBNaW5pQnJvd3Nlci93aW4vQnJvd3NlclZpZXcuY3BwOgorICAgICAgICBDb252ZXJ0
IE1pbmlCcm93c2VyIHRvIG5vdCB1c2UgUGFnZU5hbWVzcGFjZXMuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi9Eb2N1bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jhc2guY3BwOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9FdmFsdWF0ZUphdmFTY3JpcHQuY3BwOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9GYWlsZWRMb2FkLmNwcDoKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRmluZC5jcHA6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0ZyYW1lTUlNRVR5cGVIVE1MLmNwcDoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRnJhbWVNSU1FVHlwZVBORy5jcHA6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0luamVjdGVkQnVuZGxlQmFzaWMu
Y3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9QYWdlTG9hZEJhc2lj
LmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUGFnZUxvYWREaWRD
aGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZS5jcHA6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyL1ByZXZlbnRFbXB0eVVzZXJBZ2VudC5jcHA6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1NwYWNlYmFyU2Nyb2xsaW5nLmNwcDoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvd2luL0FsdEtleUdlbmVyYXRlc1dNU3lz
Q29tbWFuZC5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL3dpbi9X
TUNsb3NlQ2FsbHNVSUNsaWVudENsb3NlLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL21h
Yy9QbGF0Zm9ybVdlYlZpZXdNYWMubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS93aW4vUGxh
dGZvcm1XZWJWaWV3V2luLmNwcDoKKyAgICAgICAgQ29udmVydCBUZXN0V2ViS2l0QVBJIHRvIG5v
dCB1c2UgUGFnZU5hbWVzcGFjZXMuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1BsYXRm
b3JtV2ViVmlldy5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW06CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9xdC9QbGF0Zm9ybVdlYlZpZXdRdC5jcHA6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci93aW4vUGxhdGZvcm1XZWJWaWV3V2luLmNwcDoKKyAgICAgICAgQ29u
dmVydCBXZWJLaXRUZXN0UnVubmVyIHRvIG5vdCB1c2UgUGFnZU5hbWVzcGFjZXMuCisKIDIwMTAt
MTItMTIgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBbmRlcnMgQ2FybHNzb24uCkluZGV4OiBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci9tYWMvQXBw
RGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci9tYWMvQXBw
RGVsZWdhdGUuaAkocmV2aXNpb24gNzM4ODApCisrKyBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci9t
YWMvQXBwRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTIgKzMwLDEyIEBAIGVudW0g
UHJvY2Vzc01vZGVsIHsKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBQcm9jZXNzTW9kZWw7CiAKIEBp
bnRlcmZhY2UgQnJvd3NlckFwcERlbGVnYXRlIDogTlNPYmplY3QgPE5TQXBwbGljYXRpb25EZWxl
Z2F0ZT4gewotICAgIFByb2Nlc3NNb2RlbCBjdXJyZW50UHJvY2Vzc01vZGVsOwotICAgIFdLUGFn
ZU5hbWVzcGFjZVJlZiB0aHJlYWRQYWdlTmFtZXNwYWNlOwotICAgIFdLUGFnZU5hbWVzcGFjZVJl
ZiBwcm9jZXNzUGFnZU5hbWVzcGFjZTsKKyAgICBQcm9jZXNzTW9kZWwgX2N1cnJlbnRQcm9jZXNz
TW9kZWw7CisgICAgV0tDb250ZXh0UmVmIF90aHJlYWRDb250ZXh0OworICAgIFdLQ29udGV4dFJl
ZiBfcHJvY2Vzc0NvbnRleHQ7CiB9CiAKLS0gKFdLUGFnZU5hbWVzcGFjZVJlZilnZXRDdXJyZW50
UGFnZU5hbWVzcGFjZTsKKy0gKFdLQ29udGV4dFJlZilnZXRDdXJyZW50Q29udGV4dDsKIAogLSAo
SUJBY3Rpb24pc2V0U2hhcmVkUHJvY2Vzc1Byb2Nlc3NNb2RlbDooaWQpc2VuZGVyOwogLSAoSUJB
Y3Rpb24pc2V0U2hhcmVkVGhyZWFkUHJvY2Vzc01vZGVsOihpZClzZW5kZXI7CkluZGV4OiBXZWJL
aXRUb29scy9NaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9NaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubQkocmV2aXNpb24gNzM4ODApCisr
KyBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubQkod29ya2luZyBjb3B5
KQpAQCAtMTE0LDkgKzExNCw5IEBAIC0gKGlkKWluaXQKICAgICBzZWxmID0gW3N1cGVyIGluaXRd
OwogICAgIGlmIChzZWxmKSB7CiAgICAgICAgIGlmIChbTlNFdmVudCBtb2RpZmllckZsYWdzXSAm
IE5TU2hpZnRLZXlNYXNrKQotICAgICAgICAgICAgY3VycmVudFByb2Nlc3NNb2RlbCA9IGtQcm9j
ZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlUaHJlYWQ7CisgICAgICAgICAgICBfY3VycmVudFByb2Nl
c3NNb2RlbCA9IGtQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlUaHJlYWQ7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIGN1cnJlbnRQcm9jZXNzTW9kZWwgPSBrUHJvY2Vzc01vZGVsU2hhcmVk
U2Vjb25kYXJ5UHJvY2VzczsKKyAgICAgICAgICAgIF9jdXJyZW50UHJvY2Vzc01vZGVsID0ga1By
b2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3M7CiAKICAgICAgICAgV0tDb250ZXh0SGlz
dG9yeUNsaWVudCBoaXN0b3J5Q2xpZW50ID0gewogICAgICAgICAgICAgMCwKQEAgLTEyOCwxNyAr
MTI4LDE0IEBAIC0gKGlkKWluaXQKICAgICAgICAgICAgIHBvcHVsYXRlVmlzaXRlZExpbmtzCiAg
ICAgICAgIH07CiAKLSAgICAgICAgV0tDb250ZXh0UmVmIHRocmVhZENvbnRleHQgPSBXS0NvbnRl
eHRHZXRTaGFyZWRUaHJlYWRDb250ZXh0KCk7Ci0gICAgICAgIFdLQ29udGV4dFNldEhpc3RvcnlD
bGllbnQodGhyZWFkQ29udGV4dCwgJmhpc3RvcnlDbGllbnQpOwotICAgICAgICBXS0NvbnRleHRT
ZXRDYWNoZU1vZGVsKHRocmVhZENvbnRleHQsIGtXS0NhY2hlTW9kZWxQcmltYXJ5V2ViQnJvd3Nl
cik7Ci0KLSAgICAgICAgdGhyZWFkUGFnZU5hbWVzcGFjZSA9IFdLUGFnZU5hbWVzcGFjZUNyZWF0
ZSh0aHJlYWRDb250ZXh0KTsKLSAgICAgICAgV0tSZWxlYXNlKHRocmVhZENvbnRleHQpOworICAg
ICAgICBfdGhyZWFkQ29udGV4dCA9IFdLQ29udGV4dEdldFNoYXJlZFRocmVhZENvbnRleHQoKTsK
KyAgICAgICAgV0tDb250ZXh0U2V0SGlzdG9yeUNsaWVudChfdGhyZWFkQ29udGV4dCwgJmhpc3Rv
cnlDbGllbnQpOworICAgICAgICBXS0NvbnRleHRTZXRDYWNoZU1vZGVsKF90aHJlYWRDb250ZXh0
LCBrV0tDYWNoZU1vZGVsUHJpbWFyeVdlYkJyb3dzZXIpOwogCiAgICAgICAgIENGU3RyaW5nUmVm
IGJ1bmRsZVBhdGhDRiA9IChDRlN0cmluZ1JlZilbW05TQnVuZGxlIG1haW5CdW5kbGVdIHBhdGhG
b3JBdXhpbGlhcnlFeGVjdXRhYmxlOkAiV2ViQnVuZGxlLmJ1bmRsZSJdOwogICAgICAgICBXS1N0
cmluZ1JlZiBidW5kbGVQYXRoID0gV0tTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoYnVuZGxlUGF0
aENGKTsKIAotICAgICAgICBXS0NvbnRleHRSZWYgcHJvY2Vzc0NvbnRleHQgPSBXS0NvbnRleHRD
cmVhdGVXaXRoSW5qZWN0ZWRCdW5kbGVQYXRoKGJ1bmRsZVBhdGgpOworICAgICAgICBfcHJvY2Vz
c0NvbnRleHQgPSBXS0NvbnRleHRDcmVhdGVXaXRoSW5qZWN0ZWRCdW5kbGVQYXRoKGJ1bmRsZVBh
dGgpOwogICAgICAgICAKICAgICAgICAgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQgYnVu
ZGxlQ2xpZW50ID0gewogICAgICAgICAgICAgMCwgICAgICAvKiB2ZXJzaW9uICovCkBAIC0xNDYs
MTIgKzE0Myw5IEBAIC0gKGlkKWluaXQKICAgICAgICAgICAgIGRpZFJlY2lldmVNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlLAogICAgICAgICAgICAgMAogICAgICAgICB9OwotICAgICAgICBXS0Nv
bnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudChwcm9jZXNzQ29udGV4dCwgJmJ1bmRsZUNsaWVu
dCk7Ci0gICAgICAgIFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQocHJvY2Vzc0NvbnRleHQsICZo
aXN0b3J5Q2xpZW50KTsKLSAgICAgICAgV0tDb250ZXh0U2V0Q2FjaGVNb2RlbChwcm9jZXNzQ29u
dGV4dCwga1dLQ2FjaGVNb2RlbFByaW1hcnlXZWJCcm93c2VyKTsKLQotICAgICAgICBwcm9jZXNz
UGFnZU5hbWVzcGFjZSA9IFdLUGFnZU5hbWVzcGFjZUNyZWF0ZShwcm9jZXNzQ29udGV4dCk7Ci0g
ICAgICAgIFdLUmVsZWFzZShwcm9jZXNzQ29udGV4dCk7CisgICAgICAgIFdLQ29udGV4dFNldElu
amVjdGVkQnVuZGxlQ2xpZW50KF9wcm9jZXNzQ29udGV4dCwgJmJ1bmRsZUNsaWVudCk7CisgICAg
ICAgIFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQoX3Byb2Nlc3NDb250ZXh0LCAmaGlzdG9yeUNs
aWVudCk7CisgICAgICAgIFdLQ29udGV4dFNldENhY2hlTW9kZWwoX3Byb2Nlc3NDb250ZXh0LCBr
V0tDYWNoZU1vZGVsUHJpbWFyeVdlYkJyb3dzZXIpOwogCiAgICAgICAgIFdLUmVsZWFzZShidW5k
bGVQYXRoKTsKICAgICB9CkBAIC0xNjEsMzIgKzE1NSwzMiBAQCAtIChpZClpbml0CiAKIC0gKElC
QWN0aW9uKW5ld1dpbmRvdzooaWQpc2VuZGVyCiB7Ci0gICAgQnJvd3NlcldpbmRvd0NvbnRyb2xs
ZXIgKmNvbnRyb2xsZXIgPSBbW0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0
aFBhZ2VOYW1lc3BhY2U6W3NlbGYgZ2V0Q3VycmVudFBhZ2VOYW1lc3BhY2VdXTsKKyAgICBCcm93
c2VyV2luZG93Q29udHJvbGxlciAqY29udHJvbGxlciA9IFtbQnJvd3NlcldpbmRvd0NvbnRyb2xs
ZXIgYWxsb2NdIGluaXRXaXRoQ29udGV4dDpbc2VsZiBnZXRDdXJyZW50Q29udGV4dF1dOwogICAg
IFtbY29udHJvbGxlciB3aW5kb3ddIG1ha2VLZXlBbmRPcmRlckZyb250OnNlbmRlcl07CiAgICAg
CiAgICAgW2NvbnRyb2xsZXIgbG9hZFVSTFN0cmluZzpkZWZhdWx0VVJMXTsKIH0KIAotLSAoV0tQ
YWdlTmFtZXNwYWNlUmVmKWdldEN1cnJlbnRQYWdlTmFtZXNwYWNlCistIChXS0NvbnRleHRSZWYp
Z2V0Q3VycmVudENvbnRleHQKIHsKLSAgICByZXR1cm4gKGN1cnJlbnRQcm9jZXNzTW9kZWwgPT0g
a1Byb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVRocmVhZCkgPyB0aHJlYWRQYWdlTmFtZXNwYWNl
IDogcHJvY2Vzc1BhZ2VOYW1lc3BhY2U7CisgICAgcmV0dXJuIChfY3VycmVudFByb2Nlc3NNb2Rl
bCA9PSBrUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5VGhyZWFkKSA/IF90aHJlYWRDb250ZXh0
IDogX3Byb2Nlc3NDb250ZXh0OwogfQogCiAtIChCT09MKXZhbGlkYXRlTWVudUl0ZW06KE5TTWVu
dUl0ZW0gKiltZW51SXRlbQogewogICAgIGlmIChbbWVudUl0ZW0gYWN0aW9uXSA9PSBAc2VsZWN0
b3Ioc2V0U2hhcmVkUHJvY2Vzc1Byb2Nlc3NNb2RlbDopKQotICAgICAgICBbbWVudUl0ZW0gc2V0
U3RhdGU6Y3VycmVudFByb2Nlc3NNb2RlbCA9PSBrUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5
UHJvY2VzcyA/IE5TT25TdGF0ZSA6IE5TT2ZmU3RhdGVdOworICAgICAgICBbbWVudUl0ZW0gc2V0
U3RhdGU6X2N1cnJlbnRQcm9jZXNzTW9kZWwgPT0ga1Byb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFy
eVByb2Nlc3MgPyBOU09uU3RhdGUgOiBOU09mZlN0YXRlXTsKICAgICBlbHNlIGlmIChbbWVudUl0
ZW0gYWN0aW9uXSA9PSBAc2VsZWN0b3Ioc2V0U2hhcmVkVGhyZWFkUHJvY2Vzc01vZGVsOikpCi0g
ICAgICAgIFttZW51SXRlbSBzZXRTdGF0ZTpjdXJyZW50UHJvY2Vzc01vZGVsID09IGtQcm9jZXNz
TW9kZWxTaGFyZWRTZWNvbmRhcnlUaHJlYWQgPyBOU09uU3RhdGUgOiBOU09mZlN0YXRlXTsKKyAg
ICAgICAgW21lbnVJdGVtIHNldFN0YXRlOl9jdXJyZW50UHJvY2Vzc01vZGVsID09IGtQcm9jZXNz
TW9kZWxTaGFyZWRTZWNvbmRhcnlUaHJlYWQgPyBOU09uU3RhdGUgOiBOU09mZlN0YXRlXTsKICAg
ICByZXR1cm4gWUVTOwogfSAgICAgICAgCiAKIC0gKHZvaWQpX3NldFByb2Nlc3NNb2RlbDooUHJv
Y2Vzc01vZGVsKXByb2Nlc3NNb2RlbAogewotICAgIGlmIChwcm9jZXNzTW9kZWwgPT0gY3VycmVu
dFByb2Nlc3NNb2RlbCkKKyAgICBpZiAocHJvY2Vzc01vZGVsID09IF9jdXJyZW50UHJvY2Vzc01v
ZGVsKQogICAgICAgICByZXR1cm47CiAgCi0gICAgY3VycmVudFByb2Nlc3NNb2RlbCA9IHByb2Nl
c3NNb2RlbDsKKyAgICBfY3VycmVudFByb2Nlc3NNb2RlbCA9IHByb2Nlc3NNb2RlbDsKIH0KIAog
LSAoSUJBY3Rpb24pc2V0U2hhcmVkUHJvY2Vzc1Byb2Nlc3NNb2RlbDooaWQpc2VuZGVyCkBAIC0y
MDMsOCArMTk3LDggQEAgLSAoSUJBY3Rpb24pc2hvd1N0YXRpc3RpY3NXaW5kb3c6KGlkKXNlbgog
ewogICAgIHN0YXRpYyBCcm93c2VyU3RhdGlzdGljc1dpbmRvd0NvbnRyb2xsZXIqIHdpbmRvd0Nv
bnRyb2xsZXI7CiAgICAgaWYgKCF3aW5kb3dDb250cm9sbGVyKQotICAgICAgICB3aW5kb3dDb250
cm9sbGVyID0gW1tCcm93c2VyU3RhdGlzdGljc1dpbmRvd0NvbnRyb2xsZXIgYWxsb2NdIGluaXRX
aXRoVGhyZWFkZWRXS0NvbnRleHRSZWY6V0tQYWdlTmFtZXNwYWNlR2V0Q29udGV4dCh0aHJlYWRQ
YWdlTmFtZXNwYWNlKSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzV0tDb250ZXh0UmVm
OldLUGFnZU5hbWVzcGFjZUdldENvbnRleHQocHJvY2Vzc1BhZ2VOYW1lc3BhY2UpXTsKKyAgICAg
ICAgd2luZG93Q29udHJvbGxlciA9IFtbQnJvd3NlclN0YXRpc3RpY3NXaW5kb3dDb250cm9sbGVy
IGFsbG9jXSBpbml0V2l0aFRocmVhZGVkV0tDb250ZXh0UmVmOl90aHJlYWRDb250ZXh0CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHJvY2Vzc1dLQ29udGV4dFJlZjpfcHJvY2Vzc0NvbnRleHRdOwog
CiAgICAgW1t3aW5kb3dDb250cm9sbGVyIHdpbmRvd10gbWFrZUtleUFuZE9yZGVyRnJvbnQ6c2Vs
Zl07CiB9CkBAIC0yMjQsMTIgKzIxOCw5IEBAIC0gKHZvaWQpYXBwbGljYXRpb25XaWxsVGVybWlu
YXRlOihOU05vdGkKICAgICAgICAgICAgIFtjb250cm9sbGVyIGFwcGxpY2F0aW9uVGVybWluYXRp
bmddOwogICAgICAgICB9CiAgICAgfQotICAgIAotICAgIFdLUmVsZWFzZSh0aHJlYWRQYWdlTmFt
ZXNwYWNlKTsKLSAgICB0aHJlYWRQYWdlTmFtZXNwYWNlID0gMDsKIAotICAgIFdLUmVsZWFzZShw
cm9jZXNzUGFnZU5hbWVzcGFjZSk7Ci0gICAgcHJvY2Vzc1BhZ2VOYW1lc3BhY2UgPSAwOworICAg
IFdLUmVsZWFzZShfcHJvY2Vzc0NvbnRleHQpOworICAgIF9wcm9jZXNzQ29udGV4dCA9IDA7CiB9
CiAKIC0gKEJyb3dzZXJXaW5kb3dDb250cm9sbGVyICopZnJvbnRtb3N0QnJvd3NlcldpbmRvd0Nv
bnRyb2xsZXIKQEAgLTI2NSw3ICsyNTYsNyBAQCAtICh2b2lkKW9wZW5QYW5lbERpZEVuZDooTlNP
cGVuUGFuZWwgKilzCiAKICAgICBCcm93c2VyV2luZG93Q29udHJvbGxlciAqY29udHJvbGxlciA9
IFtzZWxmIGZyb250bW9zdEJyb3dzZXJXaW5kb3dDb250cm9sbGVyXTsKICAgICBpZiAoIWNvbnRy
b2xsZXIpIHsKLSAgICAgICAgY29udHJvbGxlciA9IFtbQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIg
YWxsb2NdIGluaXRXaXRoUGFnZU5hbWVzcGFjZTpbc2VsZiBnZXRDdXJyZW50UGFnZU5hbWVzcGFj
ZV1dOworICAgICAgICBjb250cm9sbGVyID0gW1tCcm93c2VyV2luZG93Q29udHJvbGxlciBhbGxv
Y10gaW5pdFdpdGhDb250ZXh0OltzZWxmIGdldEN1cnJlbnRDb250ZXh0XV07CiAgICAgICAgIFtb
Y29udHJvbGxlciB3aW5kb3ddIG1ha2VLZXlBbmRPcmRlckZyb250OnNlbGZdOwogICAgIH0KICAg
ICAKSW5kZXg6IFdlYktpdFRvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJv
bGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2Vy
V2luZG93Q29udHJvbGxlci5oCShyZXZpc2lvbiA3Mzg4MCkKKysrIFdlYktpdFRvb2xzL01pbmlC
cm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw3ICszNCw3IEBAIEBpbnRlcmZhY2UgQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgOiBOU1cKICAg
ICAKICAgICBJQk91dGxldCBOU1dpbmRvdyAqZmluZFBhbmVsV2luZG93OwogICAgIAotICAgIFdL
UGFnZU5hbWVzcGFjZVJlZiBfcGFnZU5hbWVzcGFjZTsKKyAgICBXS0NvbnRleHRSZWYgX2NvbnRl
eHQ7CiAgICAgV0tWaWV3ICpfd2ViVmlldzsKICAgICBCT09MIF96b29tVGV4dE9ubHk7CiB9CkBA
IC00Nyw3ICs0Nyw3IEBAIEBpbnRlcmZhY2UgQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgOiBOU1cK
IC0gKElCQWN0aW9uKXNob3dIaWRlV2ViVmlldzooaWQpc2VuZGVyOwogLSAoSUJBY3Rpb24pcmVt
b3ZlUmVpbnNlcnRXZWJWaWV3OihpZClzZW5kZXI7CiAKLS0gKGlkKWluaXRXaXRoUGFnZU5hbWVz
cGFjZTooV0tQYWdlTmFtZXNwYWNlUmVmKXBhZ2VOYW1lc3BhY2U7CistIChpZClpbml0V2l0aENv
bnRleHQ6KFdLQ29udGV4dFJlZiljb250ZXh0OwogLSAodm9pZClsb2FkVVJMU3RyaW5nOihOU1N0
cmluZyAqKXVybFN0cmluZzsKIC0gKHZvaWQpYXBwbGljYXRpb25UZXJtaW5hdGluZzsKIApJbmRl
eDogV2ViS2l0VG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dD
b250cm9sbGVyLm0JKHJldmlzaW9uIDczODgwKQorKysgV2ViS2l0VG9vbHMvTWluaUJyb3dzZXIv
bWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0JKHdvcmtpbmcgY29weSkKQEAgLTQzLDEwICs0
MywxMCBAQCAtICh2b2lkKWRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtCiAKIEBpbXBs
ZW1lbnRhdGlvbiBCcm93c2VyV2luZG93Q29udHJvbGxlcgogCi0tIChpZClpbml0V2l0aFBhZ2VO
YW1lc3BhY2U6KFdLUGFnZU5hbWVzcGFjZVJlZilwYWdlTmFtZXNwYWNlCistIChpZClpbml0V2l0
aENvbnRleHQ6KFdLQ29udGV4dFJlZiljb250ZXh0CiB7CiAgICAgaWYgKChzZWxmID0gW3N1cGVy
IGluaXRXaXRoV2luZG93TmliTmFtZTpAIkJyb3dzZXJXaW5kb3ciXSkpIHsKLSAgICAgICAgX3Bh
Z2VOYW1lc3BhY2UgPSBXS1JldGFpbihwYWdlTmFtZXNwYWNlKTsKKyAgICAgICAgX2NvbnRleHQg
PSBXS1JldGFpbihjb250ZXh0KTsKICAgICAgICAgX3pvb21UZXh0T25seSA9IE5POwogICAgIH0K
ICAgICAKQEAgLTU1LDcgKzU1LDcgQEAgLSAoaWQpaW5pdFdpdGhQYWdlTmFtZXNwYWNlOihXS1Bh
Z2VOYW1lcwogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBhc3NlcnQoIV9wYWdlTmFtZXNwYWNl
KTsKKyAgICBhc3NlcnQoIV9jb250ZXh0KTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKQEAg
LTE1Nyw4ICsxNTcsOCBAQCAtIChCT09MKXdpbmRvd1Nob3VsZENsb3NlOihpZClzZW5kZXIKIAog
LSAodm9pZCl3aW5kb3dXaWxsQ2xvc2U6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCiB7
Ci0gICAgV0tSZWxlYXNlKF9wYWdlTmFtZXNwYWNlKTsKLSAgICBfcGFnZU5hbWVzcGFjZSA9IDA7
CisgICAgV0tSZWxlYXNlKF9jb250ZXh0KTsKKyAgICBfY29udGV4dCA9IDA7CiB9CiAKIC0gKHZv
aWQpYXBwbGljYXRpb25UZXJtaW5hdGluZwpAQCAtMzgwLDcgKzM4MCw3IEBAIHN0YXRpYyB2b2lk
IGRlY2lkZVBvbGljeUZvck1JTUVUeXBlKFdLUGEKIHN0YXRpYyBXS1BhZ2VSZWYgY3JlYXRlTmV3
UGFnZShXS1BhZ2VSZWYgcGFnZSwgV0tEaWN0aW9uYXJ5UmVmIGZlYXR1cmVzLCBXS0V2ZW50TW9k
aWZpZXJzIG1vZGlmaWVycywgV0tFdmVudE1vdXNlQnV0dG9uIGJ1dHRvbiwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKIHsKICAgICBMT0coQCJjcmVhdGVOZXdQYWdlIik7Ci0gICAgQnJvd3Nlcldp
bmRvd0NvbnRyb2xsZXIgKmNvbnRyb2xsZXIgPSBbW0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyIGFs
bG9jXSBpbml0V2l0aFBhZ2VOYW1lc3BhY2U6V0tQYWdlR2V0UGFnZU5hbWVzcGFjZShwYWdlKV07
CisgICAgQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgKmNvbnRyb2xsZXIgPSBbW0Jyb3dzZXJXaW5k
b3dDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aENvbnRleHQ6V0tQYWdlR2V0Q29udGV4dChwYWdl
KV07CiAgICAgW2NvbnRyb2xsZXIgbG9hZFdpbmRvd107CiAKICAgICByZXR1cm4gY29udHJvbGxl
ci0+X3dlYlZpZXcucGFnZVJlZjsKQEAgLTUzNyw3ICs1MzcsNyBAQCBzdGF0aWMgYm9vbCBydW5C
ZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoCiAKIC0gKHZvaWQpYXdha2VGcm9tTmliCiB7Ci0gICAg
X3dlYlZpZXcgPSBbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpbY29udGFpbmVyVmlldyBm
cmFtZV0gcGFnZU5hbWVzcGFjZVJlZjpfcGFnZU5hbWVzcGFjZV07CisgICAgX3dlYlZpZXcgPSBb
W1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpbY29udGFpbmVyVmlldyBmcmFtZV0gY29udGV4
dFJlZjpfY29udGV4dF07CiAKICAgICBbY29udGFpbmVyVmlldyBhZGRTdWJ2aWV3Ol93ZWJWaWV3
XTsKICAgICBbX3dlYlZpZXcgc2V0RnJhbWU6W2NvbnRhaW5lclZpZXcgZnJhbWVdXTsKSW5kZXg6
IFdlYktpdFRvb2xzL01pbmlCcm93c2VyL3dpbi9Ccm93c2VyVmlldy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvTWluaUJyb3dzZXIvd2luL0Jyb3dzZXJWaWV3LmNwcAkocmV2aXNpb24g
NzM4ODApCisrKyBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci93aW4vQnJvd3NlclZpZXcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05MCw5ICs5MCw3IEBAIHZvaWQgQnJvd3NlclZpZXc6OmNyZWF0ZShS
RUNUIHdlYlZpZXdSZWMKICAgICBlbHNlCiAgICAgICAgIGNvbnRleHQgPSBXS0NvbnRleHRHZXRT
aGFyZWRQcm9jZXNzQ29udGV4dCgpOwogCi0gICAgV0tQYWdlTmFtZXNwYWNlUmVmIHBhZ2VOYW1l
c3BhY2UgPSBXS1BhZ2VOYW1lc3BhY2VDcmVhdGUoY29udGV4dCk7Ci0KLSAgICBtX3dlYlZpZXcg
PSBXS1ZpZXdDcmVhdGUod2ViVmlld1JlY3QsIHBhZ2VOYW1lc3BhY2UsIDAsIHBhcmVudFdpbmRv
dy0+d2luZG93KCkpOworICAgIG1fd2ViVmlldyA9IFdLVmlld0NyZWF0ZSh3ZWJWaWV3UmVjdCwg
Y29udGV4dCwgMCwgcGFyZW50V2luZG93LT53aW5kb3coKSk7CiAKICAgICBXS1BhZ2VVSUNsaWVu
dCB1aUNsaWVudCA9IHsKICAgICAgICAgMCwgICAgICAgICAgICAgIC8qIHZlcnNpb24gKi8KSW5k
ZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdlYlZpZXcuaAkocmV2aXNp
b24gNzM4ODApCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5o
CSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw4IEBAIGNsYXNzIFdpbmRvd01lc3NhZ2VPYnNl
cnZlcjsKIAogY2xhc3MgUGxhdGZvcm1XZWJWaWV3IHsKIHB1YmxpYzoKLSAgICBQbGF0Zm9ybVdl
YlZpZXcoV0tQYWdlTmFtZXNwYWNlUmVmLCBXS1BhZ2VHcm91cFJlZiA9IDApOworICAgIFBsYXRm
b3JtV2ViVmlldyhXS0NvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmID0gMCk7CisgICAgUGxhdGZv
cm1XZWJWaWV3KFdLUGFnZVJlZiwgV0tQYWdlR3JvdXBSZWYgPSAwKTsKICAgICB+UGxhdGZvcm1X
ZWJWaWV3KCk7CiAKICAgICBXS1BhZ2VSZWYgcGFnZSgpOwpJbmRleDogV2ViS2l0VG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RvY3VtZW50U3RhcnRVc2VyU2NyaXB0QWxlcnRDcmFz
aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyL0RvY3VtZW50U3RhcnRVc2VyU2NyaXB0QWxlcnRDcmFzaC5jcHAJKHJldmlzaW9uIDczODgw
KQorKysgV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RvY3VtZW50U3Rh
cnRVc2VyU2NyaXB0QWxlcnRDcmFzaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDggKzQ4LDcg
QEAgVEVTVChXZWJLaXQyLCBEb2N1bWVudFN0YXJ0VXNlclNjcmlwdEFsZQogICAgIFdLUmV0YWlu
UHRyPFdLUGFnZUdyb3VwUmVmPiBwYWdlR3JvdXAoQWRvcHRXSywgV0tQYWdlR3JvdXBDcmVhdGVX
aXRoSWRlbnRpZmllcihXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRG9jdW1lbnRTdGFy
dFVzZXJTY3JpcHRBbGVydENyYXNoVGVzdFBhZ2VHcm91cCIpKSk7IAogCiAgICAgV0tSZXRhaW5Q
dHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJ
bmplY3RlZEJ1bmRsZVRlc3QoIkRvY3VtZW50U3RhcnRVc2VyU2NyaXB0QWxlcnRDcmFzaFRlc3Qi
LCBwYWdlR3JvdXAuZ2V0KCkpKTsKLSAgICBXS1JldGFpblB0cjxXS1BhZ2VOYW1lc3BhY2VSZWY+
IHBhZ2VOYW1lc3BhY2UoQWRvcHRXSywgV0tQYWdlTmFtZXNwYWNlQ3JlYXRlKGNvbnRleHQuZ2V0
KCkpKTsKLSAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhwYWdlTmFtZXNwYWNlLmdldCgpLCBw
YWdlR3JvdXAuZ2V0KCkpOworICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0
KCksIHBhZ2VHcm91cC5nZXQoKSk7CiAKICAgICBXS1BhZ2VVSUNsaWVudCB1aUNsaWVudDsKICAg
ICBtZW1zZXQoJnVpQ2xpZW50LCAwLCBzaXplb2YodWlDbGllbnQpKTsKSW5kZXg6IFdlYktpdFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9FdmFsdWF0ZUphdmFTY3JpcHQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9FdmFs
dWF0ZUphdmFTY3JpcHQuY3BwCShyZXZpc2lvbiA3Mzg4MCkKKysrIFdlYktpdFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9FdmFsdWF0ZUphdmFTY3JpcHQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00OSw4ICs0OSw3IEBAIHN0YXRpYyB2b2lkIGRpZFJ1bkphdmFTY3JpcHQoV0tTdHJp
bmdSZWYKIFRFU1QoV2ViS2l0MiwgRXZhbHVhdGVKYXZhU2NyaXB0VGhhdFRocm93c0FuRXhjZXB0
aW9uKQogewogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBX
S0NvbnRleHRDcmVhdGUoKSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tQYWdlTmFtZXNwYWNlUmVmPiBw
YWdlTmFtZXNwYWNlKEFkb3B0V0ssIFdLUGFnZU5hbWVzcGFjZUNyZWF0ZShjb250ZXh0LmdldCgp
KSk7Ci0gICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcocGFnZU5hbWVzcGFjZS5nZXQoKSk7Cisg
ICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7CiAKICAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gamF2YVNjcmlwdFN0cmluZyhBZG9wdFdLLCBXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygidGhyb3cgJ0hlbGxvJyIpKTsKICAgICBXS1BhZ2VSdW5KYXZhU2Ny
aXB0SW5NYWluRnJhbWUod2ViVmlldy5wYWdlKCksIGphdmFTY3JpcHRTdHJpbmcuZ2V0KCksIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDB4MTIzNDU3OCksIGRpZFJ1bkphdmFTY3JpcHQpOwpJbmRl
eDogV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0ZhaWxlZExvYWQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9G
YWlsZWRMb2FkLmNwcAkocmV2aXNpb24gNzM4ODApCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDIvRmFpbGVkTG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDgg
KzQ5LDcgQEAgc3RhdGljIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcgogVEVTVChX
ZWJLaXQyLCBGYWlsZWRMb2FkKQogewogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29u
dGV4dChBZG9wdFdLLCBXS0NvbnRleHRDcmVhdGUoKSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tQYWdl
TmFtZXNwYWNlUmVmPiBwYWdlTmFtZXNwYWNlKEFkb3B0V0ssIFdLUGFnZU5hbWVzcGFjZUNyZWF0
ZShjb250ZXh0LmdldCgpKSk7Ci0gICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcocGFnZU5hbWVz
cGFjZS5nZXQoKSk7CisgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7
CiAKICAgICBXS1BhZ2VMb2FkZXJDbGllbnQgbG9hZGVyQ2xpZW50OwogICAgIG1lbXNldCgmbG9h
ZGVyQ2xpZW50LCAwLCBzaXplb2YobG9hZGVyQ2xpZW50KSk7CkluZGV4OiBXZWJLaXRUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRmluZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0ZpbmQuY3BwCShyZXZpc2lvbiA3Mzg4
MCkKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9GaW5kLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTEsOSArNTEsNyBAQCBzdGF0aWMgdm9pZCBkaWRDb3VudFN0cmlu
Z01hdGNoZXMoV0tQYWdlCiBURVNUKFdlYktpdDIsIEZpbmQpCiB7CiAgICAgV0tSZXRhaW5QdHI8
V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFdLQ29udGV4dENyZWF0ZSgpKTsKLSAgICBX
S1JldGFpblB0cjxXS1BhZ2VOYW1lc3BhY2VSZWY+IHBhZ2VOYW1lc3BhY2UoQWRvcHRXSywgV0tQ
YWdlTmFtZXNwYWNlQ3JlYXRlKGNvbnRleHQuZ2V0KCkpKTsKLSAgICAKLSAgICBQbGF0Zm9ybVdl
YlZpZXcgd2ViVmlldyhwYWdlTmFtZXNwYWNlLmdldCgpKTsKKyAgICBQbGF0Zm9ybVdlYlZpZXcg
d2ViVmlldyhjb250ZXh0LmdldCgpKTsKICAgICAKICAgICBXS1BhZ2VMb2FkZXJDbGllbnQgbG9h
ZGVyQ2xpZW50OwogICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9hZGVyQ2xp
ZW50KSk7CkluZGV4OiBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRnJh
bWVNSU1FVHlwZUhUTUwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mi9GcmFtZU1JTUVUeXBlSFRNTC5jcHAJKHJldmlzaW9uIDczODgwKQor
KysgV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0ZyYW1lTUlNRVR5cGVI
VE1MLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsOCArNTcsNyBAQCBzdGF0aWMgdm9pZCBkaWRG
aW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlCiBURVNUKFdlYktpdDIsIEZyYW1lTUlNRVR5cGVIVE1M
KQogewogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBXS0Nv
bnRleHRDcmVhdGUoKSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tQYWdlTmFtZXNwYWNlUmVmPiBwYWdl
TmFtZXNwYWNlKEFkb3B0V0ssIFdLUGFnZU5hbWVzcGFjZUNyZWF0ZShjb250ZXh0LmdldCgpKSk7
Ci0gICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcocGFnZU5hbWVzcGFjZS5nZXQoKSk7CisgICAg
UGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7CiAKICAgICBXS1BhZ2VMb2Fk
ZXJDbGllbnQgbG9hZGVyQ2xpZW50OwogICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXpl
b2YobG9hZGVyQ2xpZW50KSk7CkluZGV4OiBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvRnJhbWVNSU1FVHlwZVBORy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0ZyYW1lTUlNRVR5cGVQTkcuY3BwCShyZXZpc2lv
biA3Mzg4MCkKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9GcmFt
ZU1JTUVUeXBlUE5HLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsOCArNTcsNyBAQCBzdGF0aWMg
dm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlCiBURVNUKFdlYktpdDIsIEZyYW1lTUlN
RVR5cGVQTkcpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0
V0ssIFdLQ29udGV4dENyZWF0ZSgpKTsKLSAgICBXS1JldGFpblB0cjxXS1BhZ2VOYW1lc3BhY2VS
ZWY+IHBhZ2VOYW1lc3BhY2UoQWRvcHRXSywgV0tQYWdlTmFtZXNwYWNlQ3JlYXRlKGNvbnRleHQu
Z2V0KCkpKTsKLSAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhwYWdlTmFtZXNwYWNlLmdldCgp
KTsKKyAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgpKTsKIAogICAgIFdL
UGFnZUxvYWRlckNsaWVudCBsb2FkZXJDbGllbnQ7CiAgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQs
IDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mi9JbmplY3RlZEJ1bmRsZUJhc2ljLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvSW5qZWN0ZWRCdW5kbGVCYXNp
Yy5jcHAJKHJldmlzaW9uIDczODgwKQorKysgV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyL0luamVjdGVkQnVuZGxlQmFzaWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3
ICs1Myw2IEBAIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2UKIFRFU1Qo
V2ViS2l0MiwgSW5qZWN0ZWRCdW5kbGVCYXNpYykKIHsKICAgICBXS1JldGFpblB0cjxXS0NvbnRl
eHRSZWY+IGNvbnRleHQoQWRvcHRXSywgVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVu
ZGxlVGVzdCgiSW5qZWN0ZWRCdW5kbGVCYXNpY1Rlc3QiKSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tQ
YWdlTmFtZXNwYWNlUmVmPiBwYWdlTmFtZXNwYWNlKEFkb3B0V0ssIFdLUGFnZU5hbWVzcGFjZUNy
ZWF0ZShjb250ZXh0LmdldCgpKSk7CiAKICAgICBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVu
dCBpbmplY3RlZEJ1bmRsZUNsaWVudDsKICAgICBtZW1zZXQoJmluamVjdGVkQnVuZGxlQ2xpZW50
LCAwLCBzaXplb2YoaW5qZWN0ZWRCdW5kbGVDbGllbnQpKTsKQEAgLTYyLDcgKzYxLDcgQEAgVEVT
VChXZWJLaXQyLCBJbmplY3RlZEJ1bmRsZUJhc2ljKQogICAgIGluamVjdGVkQnVuZGxlQ2xpZW50
LmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlID0gZGlkUmVjZWl2ZU1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGU7CiAgICAgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQo
Y29udGV4dC5nZXQoKSwgJmluamVjdGVkQnVuZGxlQ2xpZW50KTsKICAKLSAgICBQbGF0Zm9ybVdl
YlZpZXcgd2ViVmlldyhwYWdlTmFtZXNwYWNlLmdldCgpKTsKKyAgICBQbGF0Zm9ybVdlYlZpZXcg
d2ViVmlldyhjb250ZXh0LmdldCgpKTsKIAogICAgIFdLUGFnZUxvYWRlckNsaWVudCBsb2FkZXJD
bGllbnQ7CiAgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQp
KTsKSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9QYWdlTG9h
ZEJhc2ljLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvUGFnZUxvYWRCYXNpYy5jcHAJKHJldmlzaW9uIDczODgwKQorKysgV2ViS2l0VG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1BhZ2VMb2FkQmFzaWMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTMsOSArMTEzLDcgQEAgVEVTVChXZWJLaXQyLCBQYWdlTG9hZEJhc2ljKQog
ICAgIFN0YXRlIHN0YXRlOwogCiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0
KEFkb3B0V0ssIFdLQ29udGV4dENyZWF0ZSgpKTsKLSAgICBXS1JldGFpblB0cjxXS1BhZ2VOYW1l
c3BhY2VSZWY+IHBhZ2VOYW1lc3BhY2UoQWRvcHRXSywgV0tQYWdlTmFtZXNwYWNlQ3JlYXRlKGNv
bnRleHQuZ2V0KCkpKTsKLSAKLSAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhwYWdlTmFtZXNw
YWNlLmdldCgpKTsKKyAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgpKTsK
IAogICAgIFdLUGFnZUxvYWRlckNsaWVudCBsb2FkZXJDbGllbnQ7CiAgICAgbWVtc2V0KCZsb2Fk
ZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKSW5kZXg6IFdlYktpdFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9QYWdlTG9hZERpZENoYW5nZUxvY2F0aW9uV2l0aGlu
UGFnZUZvckZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvUGFnZUxvYWREaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFt
ZS5jcHAJKHJldmlzaW9uIDczODgwKQorKysgV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyL1BhZ2VMb2FkRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02MCw5ICs2MCw3IEBAIHN0YXRpYyB2b2lkIGRpZFNhbWVEb2N1
bWVudE5hdmlnYXRpb25Gb3IKIFRFU1QoV2ViS2l0MiwgUGFnZUxvYWREaWRDaGFuZ2VMb2NhdGlv
bldpdGhpblBhZ2VGb3JGcmFtZSkKIHsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNv
bnRleHQoQWRvcHRXSywgV0tDb250ZXh0Q3JlYXRlKCkpOwotICAgIFdLUmV0YWluUHRyPFdLUGFn
ZU5hbWVzcGFjZVJlZj4gcGFnZU5hbWVzcGFjZShBZG9wdFdLLCBXS1BhZ2VOYW1lc3BhY2VDcmVh
dGUoY29udGV4dC5nZXQoKSkpOwotCi0gICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcocGFnZU5h
bWVzcGFjZS5nZXQoKSk7CisgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQo
KSk7CiAKICAgICBXS1BhZ2VMb2FkZXJDbGllbnQgbG9hZGVyQ2xpZW50OwogICAgIG1lbXNldCgm
bG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9hZGVyQ2xpZW50KSk7CkluZGV4OiBXZWJLaXRUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUHJldmVudEVtcHR5VXNlckFnZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUHJl
dmVudEVtcHR5VXNlckFnZW50LmNwcAkocmV2aXNpb24gNzM4ODApCisrKyBXZWJLaXRUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUHJldmVudEVtcHR5VXNlckFnZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDgsOCArNDgsNyBAQCBzdGF0aWMgdm9pZCBkaWRSdW5KYXZhU2NyaXB0
KFdLU3RyaW5nUmVmCiBURVNUKFdlYktpdDIsIFByZXZlbnRFbXB0eVVzZXJBZ2VudCkKIHsKICAg
ICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgV0tDb250ZXh0Q3Jl
YXRlKCkpOwotICAgIFdLUmV0YWluUHRyPFdLUGFnZU5hbWVzcGFjZVJlZj4gcGFnZU5hbWVzcGFj
ZShBZG9wdFdLLCBXS1BhZ2VOYW1lc3BhY2VDcmVhdGUoY29udGV4dC5nZXQoKSkpOwotICAgIFBs
YXRmb3JtV2ViVmlldyB3ZWJWaWV3KHBhZ2VOYW1lc3BhY2UuZ2V0KCkpOworICAgIFBsYXRmb3Jt
V2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwogCiAgICAgV0tQYWdlU2V0Q3VzdG9tVXNl
ckFnZW50KHdlYlZpZXcucGFnZSgpLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiIikp
OwogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBqYXZhU2NyaXB0U3RyaW5nKEFkb3B0V0ss
IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJuYXZpZ2F0b3IudXNlckFnZW50IikpOwpJ
bmRleDogV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1NwYWNlYmFyU2Ny
b2xsaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvU3BhY2ViYXJTY3JvbGxpbmcuY3BwCShyZXZpc2lvbiA3Mzg4MCkKKysrIFdlYktp
dFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9TcGFjZWJhclNjcm9sbGluZy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc5LDkgKzc5LDcgQEAgc3RhdGljIGJvb2wgcnVuSlNUZXN0KFdL
UGFnZVJlZiBwYWdlLCBjbwogVEVTVChXZWJLaXQyLCBTcGFjZWJhclNjcm9sbGluZykKIHsKICAg
ICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgV0tDb250ZXh0Q3Jl
YXRlKCkpOwotICAgIFdLUmV0YWluUHRyPFdLUGFnZU5hbWVzcGFjZVJlZj4gcGFnZU5hbWVzcGFj
ZShBZG9wdFdLLCBXS1BhZ2VOYW1lc3BhY2VDcmVhdGUoY29udGV4dC5nZXQoKSkpOwotCi0gICAg
UGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcocGFnZU5hbWVzcGFjZS5nZXQoKSk7CisgICAgUGxhdGZv
cm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7CiAKICAgICBXS1BhZ2VMb2FkZXJDbGll
bnQgbG9hZGVyQ2xpZW50OwogICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9h
ZGVyQ2xpZW50KSk7CkluZGV4OiBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDIvd2luL0FsdEtleUdlbmVyYXRlc1dNU3lzQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL3dpbi9BbHRLZXlHZW5lcmF0ZXNX
TVN5c0NvbW1hbmQuY3BwCShyZXZpc2lvbiA3Mzg4MCkKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi93aW4vQWx0S2V5R2VuZXJhdGVzV01TeXNDb21tYW5kLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjEsOSArNjEsNyBAQCBzdGF0aWMgdm9pZCBkaWROb3RIYW5kbGVL
ZXlFdmVudENhbGxiYWNrCiBURVNUKFdlYktpdDIsIEFsdEtleUdlbmVyYXRlc1dNU3lzQ29tbWFu
ZCkKIHsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgV0tD
b250ZXh0Q3JlYXRlKCkpOwotICAgIFdLUmV0YWluUHRyPFdLUGFnZU5hbWVzcGFjZVJlZj4gcGFn
ZU5hbWVzcGFjZShBZG9wdFdLLCBXS1BhZ2VOYW1lc3BhY2VDcmVhdGUoY29udGV4dC5nZXQoKSkp
OwotCi0gICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcocGFnZU5hbWVzcGFjZS5nZXQoKSk7Cisg
ICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7CiAKICAgICBXS1BhZ2VV
SUNsaWVudCB1aUNsaWVudDsKICAgICBtZW1zZXQoJnVpQ2xpZW50LCAwLCBzaXplb2YodWlDbGll
bnQpKTsKSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi93aW4v
V01DbG9zZUNhbGxzVUlDbGllbnRDbG9zZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL3dpbi9XTUNsb3NlQ2FsbHNVSUNsaWVudENsb3Nl
LmNwcAkocmV2aXNpb24gNzM4ODApCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvd2luL1dNQ2xvc2VDYWxsc1VJQ2xpZW50Q2xvc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MSw5ICs0MSw3IEBAIHN0YXRpYyB2b2lkIGNsb3NlKFdLUGFnZVJlZiwgY29uc3Qgdm9p
ZCoKIFRFU1QoV2ViS2l0MiwgV01DbG9zZUNhbGxzVUlDbGllbnRDbG9zZSkKIHsKICAgICBXS1Jl
dGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgV0tDb250ZXh0Q3JlYXRlKCkp
OwotICAgIFdLUmV0YWluUHRyPFdLUGFnZU5hbWVzcGFjZVJlZj4gcGFnZU5hbWVzcGFjZShBZG9w
dFdLLCBXS1BhZ2VOYW1lc3BhY2VDcmVhdGUoY29udGV4dC5nZXQoKSkpOwotCi0gICAgUGxhdGZv
cm1XZWJWaWV3IHdlYlZpZXcocGFnZU5hbWVzcGFjZS5nZXQoKSk7CisgICAgUGxhdGZvcm1XZWJW
aWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7CiAKICAgICBXS1BhZ2VVSUNsaWVudCB1aUNsaWVu
dDsKICAgICBtZW1zZXQoJnVpQ2xpZW50LCAwLCBzaXplb2YodWlDbGllbnQpKTsKSW5kZXg6IFdl
YktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMu
bW0JKHJldmlzaW9uIDczODgwKQorKysgV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvUGxh
dGZvcm1XZWJWaWV3TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMCArMjksMjQgQEAKIAog
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1QbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2Vi
VmlldyhXS1BhZ2VOYW1lc3BhY2VSZWYgcGFnZU5hbWVzcGFjZVJlZiwgV0tQYWdlR3JvdXBSZWYg
cGFnZUdyb3VwUmVmKQorUGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tDb250ZXh0
UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKIHsKICAgICBOU1Jl
Y3QgcmVjdCA9IE5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApOwotICAgIG1fdmlldyA9IFtbV0tW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOnJlY3QgcGFnZU5hbWVzcGFjZVJlZjpwYWdlTmFtZXNw
YWNlUmVmIHBhZ2VHcm91cFJlZjpwYWdlR3JvdXBSZWZdOworICAgIG1fdmlldyA9IFtbV0tWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOnJlY3QgY29udGV4dFJlZjpjb250ZXh0UmVmIHBhZ2VHcm91
cFJlZjpwYWdlR3JvdXBSZWZdOworCisgICAgTlNSZWN0IHdpbmRvd1JlY3QgPSBOU09mZnNldFJl
Y3QocmVjdCwgLTEwMDAwLCBbW1tOU1NjcmVlbiBzY3JlZW5zXSBvYmplY3RBdEluZGV4OjBdIGZy
YW1lXS5zaXplLmhlaWdodCAtIHJlY3Quc2l6ZS5oZWlnaHQgKyAxMDAwMCk7CisgICAgbV93aW5k
b3cgPSBbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0OndpbmRvd1JlY3Qgc3R5
bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZl
cmVkIGRlZmVyOllFU107CisgICAgW21fd2luZG93IHNldENvbG9yU3BhY2U6W1tOU1NjcmVlbiBt
YWluU2NyZWVuXSBjb2xvclNwYWNlXV07CisgICAgW1ttX3dpbmRvdyBjb250ZW50Vmlld10gYWRk
U3VidmlldzptX3ZpZXddOworICAgIFttX3dpbmRvdyBvcmRlckJhY2s6bmlsXTsKKyAgICBbbV93
aW5kb3cgc2V0QXV0b2Rpc3BsYXk6Tk9dOworICAgIFttX3dpbmRvdyBzZXRSZWxlYXNlZFdoZW5D
bG9zZWQ6Tk9dOworfQorCitQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhXS1BhZ2VS
ZWYgcGFnZVJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQoreworICAgIE5TUmVjdCBy
ZWN0ID0gTlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCk7CisgICAgbV92aWV3ID0gW1tXS1ZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6cmVjdCBmb3JBc3NvY2lhdGVkUGFnZVJlZjpwYWdlUmVmIHBh
Z2VHcm91cFJlZjpwYWdlR3JvdXBSZWZdOwogCiAgICAgTlNSZWN0IHdpbmRvd1JlY3QgPSBOU09m
ZnNldFJlY3QocmVjdCwgLTEwMDAwLCBbW1tOU1NjcmVlbiBzY3JlZW5zXSBvYmplY3RBdEluZGV4
OjBdIGZyYW1lXS5zaXplLmhlaWdodCAtIHJlY3Quc2l6ZS5oZWlnaHQgKyAxMDAwMCk7CiAgICAg
bV93aW5kb3cgPSBbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0OndpbmRvd1Jl
Y3Qgc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9y
ZUJ1ZmZlcmVkIGRlZmVyOllFU107CkluZGV4OiBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL3dp
bi9QbGF0Zm9ybVdlYlZpZXdXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvd2luL1BsYXRmb3JtV2ViVmlld1dpbi5jcHAJKHJldmlzaW9uIDczODgwKQorKysg
V2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZvcm1XZWJWaWV3V2luLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTYsMTQgKzU2LDI1IEBAIHZvaWQgUGxhdGZvcm1XZWJWaWV3OjpyZWdp
c3RlcldpbmRvd0NsYXMKICAgICA6OlJlZ2lzdGVyQ2xhc3NFeFcoJnduZENsYXNzKTsKIH0KIAot
UGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tQYWdlTmFtZXNwYWNlUmVmIG5hbWVz
cGFjZVJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQorCitQbGF0Zm9ybVdlYlZpZXc6
OlBsYXRmb3JtV2ViVmlldyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYg
cGFnZUdyb3VwUmVmKQorICAgIDogbV9wYXJlbnRXaW5kb3dNZXNzYWdlT2JzZXJ2ZXIoMCkKK3sK
KyAgICByZWdpc3RlcldpbmRvd0NsYXNzKCk7CisKKyAgICBSRUNUIHZpZXdSZWN0ID0gezAsIDAs
IDgwMCwgNjAwfTsKKyAgICBtX3dpbmRvdyA9IENyZWF0ZVdpbmRvd0V4VygwLCBob3N0V2luZG93
Q2xhc3NOYW1lLCBMIlRlc3RXZWJLaXRBUEkiLCBXU19PVkVSTEFQUEVEV0lORE9XLCB2aWV3UmVj
dC5sZWZ0LCB2aWV3UmVjdC50b3AsIHZpZXdSZWN0LnJpZ2h0LCB2aWV3UmVjdC5ib3R0b20sIDAs
IDAsIDAsIHRoaXMpOworICAgIG1fdmlldyA9IFdLVmlld0NyZWF0ZSh2aWV3UmVjdCwgY29udGV4
dFJlZiwgcGFnZUdyb3VwUmVmLCBtX3dpbmRvdyk7Cit9CisKK1BsYXRmb3JtV2ViVmlldzo6UGxh
dGZvcm1XZWJWaWV3KFdLUGFnZVJlZiBwYWdlUmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBS
ZWYpCiAgICAgOiBtX3BhcmVudFdpbmRvd01lc3NhZ2VPYnNlcnZlcigwKQogewogICAgIHJlZ2lz
dGVyV2luZG93Q2xhc3MoKTsKIAogICAgIFJFQ1Qgdmlld1JlY3QgPSB7MCwgMCwgODAwLCA2MDB9
OwogICAgIG1fd2luZG93ID0gQ3JlYXRlV2luZG93RXhXKDAsIGhvc3RXaW5kb3dDbGFzc05hbWUs
IEwiVGVzdFdlYktpdEFQSSIsIFdTX09WRVJMQVBQRURXSU5ET1csIHZpZXdSZWN0LmxlZnQsIHZp
ZXdSZWN0LnRvcCwgdmlld1JlY3QucmlnaHQsIHZpZXdSZWN0LmJvdHRvbSwgMCwgMCwgMCwgdGhp
cyk7Ci0gICAgbV92aWV3ID0gV0tWaWV3Q3JlYXRlKHZpZXdSZWN0LCBuYW1lc3BhY2VSZWYsIHBh
Z2VHcm91cFJlZiwgbV93aW5kb3cpOworICAgIG1fdmlldyA9IFdLVmlld0NyZWF0ZUZvckFzc29j
aWF0ZWRQYWdlKHZpZXdSZWN0LCBwYWdlUmVmLCBwYWdlR3JvdXBSZWYsIG1fd2luZG93KTsKIH0K
IAogUGxhdGZvcm1XZWJWaWV3Ojp+UGxhdGZvcm1XZWJWaWV3KCkKSW5kZXg6IFdlYktpdFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaAkocmV2aXNpb24gNzM4ODAp
CisrKyBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Miw3ICs1Miw4IEBAIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBQbGF0
Zm9ybVdlYlZpZXcgewogcHVibGljOgotICAgIFBsYXRmb3JtV2ViVmlldyhXS1BhZ2VOYW1lc3Bh
Y2VSZWYsIFdLUGFnZUdyb3VwUmVmKTsKKyAgICBQbGF0Zm9ybVdlYlZpZXcoV0tDb250ZXh0UmVm
LCBXS1BhZ2VHcm91cFJlZik7CisgICAgUGxhdGZvcm1XZWJWaWV3KFdLUGFnZVJlZiwgV0tQYWdl
R3JvdXBSZWYpOwogICAgIH5QbGF0Zm9ybVdlYlZpZXcoKTsKIAogICAgIFdLUGFnZVJlZiBwYWdl
KCk7CkluZGV4OiBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcAkocmV2aXNpb24gNzM4ODApCisrKyBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDcgKzEwNiw3IEBAIHN0
YXRpYyB2b2lkIGNsb3NlT3RoZXJQYWdlKFdLUGFnZVJlZiBwYWcKIAogc3RhdGljIFdLUGFnZVJl
ZiBjcmVhdGVPdGhlclBhZ2UoV0tQYWdlUmVmIG9sZFBhZ2UsIFdLRGljdGlvbmFyeVJlZiwgV0tF
dmVudE1vZGlmaWVycywgV0tFdmVudE1vdXNlQnV0dG9uLCBjb25zdCB2b2lkKikKIHsKLSAgICBQ
bGF0Zm9ybVdlYlZpZXcqIHZpZXcgPSBuZXcgUGxhdGZvcm1XZWJWaWV3KFdLUGFnZUdldFBhZ2VO
YW1lc3BhY2Uob2xkUGFnZSksIFdLUGFnZUdldFBhZ2VHcm91cChvbGRQYWdlKSk7CisgICAgUGxh
dGZvcm1XZWJWaWV3KiB2aWV3ID0gbmV3IFBsYXRmb3JtV2ViVmlldyhvbGRQYWdlLCBXS1BhZ2VH
ZXRQYWdlR3JvdXAob2xkUGFnZSkpOwogICAgIFdLUGFnZVJlZiBuZXdQYWdlID0gdmlldy0+cGFn
ZSgpOwogCiAgICAgdmlldy0+cmVzaXplVG8oODAwLCA2MDApOwpAQCAtMjExLDggKzIxMSw3IEBA
IHZvaWQgVGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemUoaW50IGFyZ2MKIAogICAgIF9XS0NvbnRl
eHRTZXRBZGRpdGlvbmFsUGx1Z2luc0RpcmVjdG9yeShtX2NvbnRleHQuZ2V0KCksIHRlc3RQbHVn
aW5EaXJlY3RvcnkoKSk7CiAKLSAgICBtX3BhZ2VOYW1lc3BhY2UuYWRvcHQoV0tQYWdlTmFtZXNw
YWNlQ3JlYXRlKG1fY29udGV4dC5nZXQoKSkpOwotICAgIG1fbWFpbldlYlZpZXcgPSBhZG9wdFB0
cihuZXcgUGxhdGZvcm1XZWJWaWV3KG1fcGFnZU5hbWVzcGFjZS5nZXQoKSwgbV9wYWdlR3JvdXAu
Z2V0KCkpKTsKKyAgICBtX21haW5XZWJWaWV3ID0gYWRvcHRQdHIobmV3IFBsYXRmb3JtV2ViVmll
dyhtX2NvbnRleHQuZ2V0KCksIG1fcGFnZUdyb3VwLmdldCgpKSk7CiAKICAgICBXS1BhZ2VVSUNs
aWVudCBwYWdlVUlDbGllbnQgPSB7CiAgICAgICAgIDAsCkluZGV4OiBXZWJLaXRUb29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiA3Mzg4MCkKKysrIFdl
YktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNTAsNyArNTAsNiBAQCBwdWJsaWM6CiAgICAgV0tTdHJpbmdSZWYgdGVzdFBsdWdpbkRp
cmVjdG9yeSgpIHsgcmV0dXJuIG1fdGVzdFBsdWdpbkRpcmVjdG9yeS5nZXQoKTsgfQogCiAgICAg
UGxhdGZvcm1XZWJWaWV3KiBtYWluV2ViVmlldygpIHsgcmV0dXJuIG1fbWFpbldlYlZpZXcuZ2V0
KCk7IH0KLSAgICBXS1BhZ2VOYW1lc3BhY2VSZWYgcGFnZU5hbWVzcGFjZSgpIHsgcmV0dXJuIG1f
cGFnZU5hbWVzcGFjZS5nZXQoKTsgfQogICAgIFdLQ29udGV4dFJlZiBjb250ZXh0KCkgeyByZXR1
cm4gbV9jb250ZXh0LmdldCgpOyB9CiAKICAgICAvLyBSdW5zIHRoZSBydW4gbG9vcCB1bnRpbCBg
ZG9uZWAgaXMgdHJ1ZSBvciB0aGUgdGltZW91dCBlbGFwc2VzLgpAQCAtOTYsOSArOTUsOCBAQCBw
cml2YXRlOgogCiAgICAgT3duUHRyPFBsYXRmb3JtV2ViVmlldz4gbV9tYWluV2ViVmlldzsKICAg
ICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IG1fY29udGV4dDsKLSAgICBXS1JldGFpblB0cjxX
S1BhZ2VOYW1lc3BhY2VSZWY+IG1fcGFnZU5hbWVzcGFjZTsKICAgICBXS1JldGFpblB0cjxXS1Bh
Z2VHcm91cFJlZj4gbV9wYWdlR3JvdXA7Ci0gICAgCisKICAgICBlbnVtIFN0YXRlIHsKICAgICAg
ICAgSW5pdGlhbCwKICAgICAgICAgUmVzZXR0aW5nLApJbmRleDogV2ViS2l0VG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQkocmV2aXNp
b24gNzM4ODApCisrKyBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdl
YlZpZXdNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDEwICsyNywyNCBAQAogCiBuYW1lc3Bh
Y2UgV1RSIHsKIAotUGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tQYWdlTmFtZXNw
YWNlUmVmIG5hbWVzcGFjZVJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQorUGxhdGZv
cm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFn
ZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKIHsKICAgICBOU1JlY3QgcmVjdCA9IE5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApOwotICAgIG1fdmlldyA9IFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOnJlY3QgcGFnZU5hbWVzcGFjZVJlZjpuYW1lc3BhY2VSZWYgcGFnZUdyb3VwUmVmOnBhZ2VH
cm91cFJlZl07CisgICAgbV92aWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6cmVj
dCBjb250ZXh0UmVmOmNvbnRleHRSZWYgcGFnZUdyb3VwUmVmOnBhZ2VHcm91cFJlZl07CisKKyAg
ICBOU1JlY3Qgd2luZG93UmVjdCA9IE5TT2Zmc2V0UmVjdChyZWN0LCAtMTAwMDAsIFtbW05TU2Ny
ZWVuIHNjcmVlbnNdIG9iamVjdEF0SW5kZXg6MF0gZnJhbWVdLnNpemUuaGVpZ2h0IC0gcmVjdC5z
aXplLmhlaWdodCArIDEwMDAwKTsKKyAgICBtX3dpbmRvdyA9IFtbTlNXaW5kb3cgYWxsb2NdIGlu
aXRXaXRoQ29udGVudFJlY3Q6d2luZG93UmVjdCBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93
TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6WUVTXTsKKyAgICBbbV93
aW5kb3cgc2V0Q29sb3JTcGFjZTpbW05TU2NyZWVuIG1haW5TY3JlZW5dIGNvbG9yU3BhY2VdXTsK
KyAgICBbW21fd2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3Om1fdmlld107CisgICAgW21f
d2luZG93IG9yZGVyQmFjazpuaWxdOworICAgIFttX3dpbmRvdyBzZXRBdXRvZGlzcGxheTpOT107
CisgICAgW21fd2luZG93IHNldFJlbGVhc2VkV2hlbkNsb3NlZDpOT107Cit9CisKK1BsYXRmb3Jt
V2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLUGFnZVJlZiBwYWdlUmVmLCBXS1BhZ2VHcm91cFJl
ZiBwYWdlR3JvdXBSZWYpCit7CisgICAgTlNSZWN0IHJlY3QgPSBOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKTsKKyAgICBtX3ZpZXcgPSBbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpyZWN0
IGZvckFzc29jaWF0ZWRQYWdlUmVmOnBhZ2VSZWYgcGFnZUdyb3VwUmVmOnBhZ2VHcm91cFJlZl07
CiAKICAgICBOU1JlY3Qgd2luZG93UmVjdCA9IE5TT2Zmc2V0UmVjdChyZWN0LCAtMTAwMDAsIFtb
W05TU2NyZWVuIHNjcmVlbnNdIG9iamVjdEF0SW5kZXg6MF0gZnJhbWVdLnNpemUuaGVpZ2h0IC0g
cmVjdC5zaXplLmhlaWdodCArIDEwMDAwKTsKICAgICBtX3dpbmRvdyA9IFtbTlNXaW5kb3cgYWxs
b2NdIGluaXRXaXRoQ29udGVudFJlY3Q6d2luZG93UmVjdCBzdHlsZU1hc2s6TlNCb3JkZXJsZXNz
V2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6WUVTXTsKSW5k
ZXg6IFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvUGxhdGZvcm1XZWJWaWV3UXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvUGxhdGZvcm1X
ZWJWaWV3UXQuY3BwCShyZXZpc2lvbiA3Mzg4MCkKKysrIFdlYktpdFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvcXQvUGxhdGZvcm1XZWJWaWV3UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MywxNiAr
NDMsMzYgQEAgcHJpdmF0ZToKICAgICBRR3JhcGhpY3NXS1ZpZXcqIG1faXRlbTsKIH07CiAKLVdl
YlZpZXc6OldlYlZpZXcoV0tQYWdlTmFtZXNwYWNlUmVmIG5hbWVzcGFjZVJlZikKK1dlYlZpZXc6
OldlYlZpZXcoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCiAgICAgOiBRR3JhcGhpY3NWaWV3KCkK
LSAgICAsIG1faXRlbShuZXcgUUdyYXBoaWNzV0tWaWV3KG5ldyBRV0tDb250ZXh0KG5hbWVzcGFj
ZVJlZiwgdGhpcykpKQorICAgICwgbV9pdGVtKG5ldyBRR3JhcGhpY3NXS1ZpZXcobmV3IFFXS0Nv
bnRleHQoY29udGV4dFJlZiwgdGhpcykpKQogewogICAgIHNldFNjZW5lKG5ldyBRR3JhcGhpY3NT
Y2VuZSh0aGlzKSk7CiAgICAgc2NlbmUoKS0+YWRkSXRlbShtX2l0ZW0pOwogfQogCi1QbGF0Zm9y
bVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhXS1BhZ2VOYW1lc3BhY2VSZWYgbmFtZXNwYWNlUmVm
LCBXS1BhZ2VHcm91cFJlZikKLSAgICA6IG1fdmlldyhuZXcgV2ViVmlldyhuYW1lc3BhY2VSZWYp
KQorV2ViVmlldzo6V2ViVmlldyhXS1BhZ2VSZWYgcGFnZVJlZikKKyAgICA6IFFHcmFwaGljc1Zp
ZXcoKQorICAgICwgbV9pdGVtKG5ldyBRR3JhcGhpY3NXS1ZpZXcobmV3IFFXS0NvbnRleHQocGFn
ZVJlZiwgdGhpcykpKQoreworICAgIHNldFNjZW5lKG5ldyBRR3JhcGhpY3NTY2VuZSh0aGlzKSk7
CisgICAgc2NlbmUoKS0+YWRkSXRlbShtX2l0ZW0pOworfQorCitQbGF0Zm9ybVdlYlZpZXcoV0tD
b250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZik7CitQbGF0Zm9ybVdlYlZpZXcoV0tQYWdlUmVmLCBX
S1BhZ2VHcm91cFJlZik7CisKK1BsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLQ29u
dGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZikKKyAgICA6IG1fdmlldyhuZXcgV2Vi
Vmlldyhjb250ZXh0UmVmKSkKKyAgICAsIG1fd2luZG93KG5ldyBRTWFpbldpbmRvdygpKQorewor
ICAgIG1fdmlldy0+c2V0UGFyZW50KG1fd2luZG93KTsKKyAgICBtX3dpbmRvdy0+c2V0Q2VudHJh
bFdpZGdldChtX3ZpZXcpOworICAgIG1fd2luZG93LT5zZXRHZW9tZXRyeSgwLCAwLCA4MDAsIDYw
MCk7Cit9CisKK1BsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLUGFnZVJlZiBwYWdl
UmVmLCBXS1BhZ2VHcm91cFJlZikKKyAgICA6IG1fdmlldyhuZXcgV2ViVmlldyhwYWdlUmVmKSkK
ICAgICAsIG1fd2luZG93KG5ldyBRTWFpbldpbmRvdygpKQogewogICAgIG1fdmlldy0+c2V0UGFy
ZW50KG1fd2luZG93KTsKSW5kZXg6IFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1Bs
YXRmb3JtV2ViVmlld1dpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci93aW4vUGxhdGZvcm1XZWJWaWV3V2luLmNwcAkocmV2aXNpb24gNzM4ODApCisrKyBX
ZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9QbGF0Zm9ybVdlYlZpZXdXaW4uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NywxMyArNDcsMjIgQEAgc3RhdGljIHZvaWQgcmVnaXN0ZXJXaW5k
b3dDbGFzcygpCiAgICAgUmVnaXN0ZXJDbGFzc0V4Vygmd25kQ2xhc3MpOwogfQogCi1QbGF0Zm9y
bVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhXS1BhZ2VOYW1lc3BhY2VSZWYgbmFtZXNwYWNlUmVm
LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCitQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3Jt
V2ViVmlldyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3Vw
UmVmKQogewogICAgIHJlZ2lzdGVyV2luZG93Q2xhc3MoKTsKIAogICAgIFJFQ1Qgdmlld1JlY3Qg
PSB7MCwgMCwgODAwLCA2MDB9OwogICAgIG1fd2luZG93ID0gQ3JlYXRlV2luZG93RXhXKDAsIGhv
c3RXaW5kb3dDbGFzc05hbWUsIEwiV2ViS2l0VGVzdFJ1bm5lciIsIFdTX09WRVJMQVBQRURXSU5E
T1csIDAgLypYT0ZGU0VUKi8sIDAgLypZT0ZGU0VUKi8sIHZpZXdSZWN0LnJpZ2h0LCB2aWV3UmVj
dC5ib3R0b20sIDAsIDAsIEdldE1vZHVsZUhhbmRsZSgwKSwgMCk7Ci0gICAgbV92aWV3ID0gV0tW
aWV3Q3JlYXRlKHZpZXdSZWN0LCBuYW1lc3BhY2VSZWYsIHBhZ2VHcm91cFJlZiwgbV93aW5kb3cp
OworICAgIG1fdmlldyA9IFdLVmlld0NyZWF0ZSh2aWV3UmVjdCwgY29udGV4dFJlZiwgcGFnZUdy
b3VwUmVmLCBtX3dpbmRvdyk7Cit9CisKK1BsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3
KFdLUGFnZVJlZiBwYWdlUmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCit7CisgICAg
cmVnaXN0ZXJXaW5kb3dDbGFzcygpOworCisgICAgUkVDVCB2aWV3UmVjdCA9IHswLCAwLCA4MDAs
IDYwMH07CisgICAgbV93aW5kb3cgPSBDcmVhdGVXaW5kb3dFeFcoMCwgaG9zdFdpbmRvd0NsYXNz
TmFtZSwgTCJXZWJLaXRUZXN0UnVubmVyIiwgV1NfT1ZFUkxBUFBFRFdJTkRPVywgMCAvKlhPRkZT
RVQqLywgMCAvKllPRkZTRVQqLywgdmlld1JlY3QucmlnaHQsIHZpZXdSZWN0LmJvdHRvbSwgMCwg
MCwgR2V0TW9kdWxlSGFuZGxlKDApLCAwKTsKKyAgICBtX3ZpZXcgPSBXS1ZpZXdDcmVhdGVGb3JB
c3NvY2lhdGVkUGFnZSh2aWV3UmVjdCwgcGFnZVJlZiwgcGFnZUdyb3VwUmVmLCBtX3dpbmRvdyk7
CiB9CiAKIFBsYXRmb3JtV2ViVmlldzo6flBsYXRmb3JtV2ViVmlldygpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76342</attachid>
            <date>2010-12-12 17:31:15 -0800</date>
            <delta_ts>2010-12-13 14:08:01 -0800</delta_ts>
            <desc>Updated Patch</desc>
            <filename>forReview.diff</filename>
            <type>text/plain</type>
            <size>72589</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3Mzg4MykKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODcgQEAKKzIwMTAtMTItMTIgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2Ug
dGhlIFdlYktpdDIgcHVibGljIEFQSSBzbyB0aGVyZSBpcyBubyBleHBsaWNpdCBXS1BhZ2VOYW1l
c3BhY2Ugb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01MDg5OAorCisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQmFzZS5oOiBSZW1vdmUgZGVm
aW5pdGlvbiBvZiBXS1BhZ2VOYW1lc3BhY2VSZWYuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLQVBJQ2FzdC5oOiBSZW1vdmUgdG9BUEkvdG9JbXBsIGZvciBXS1BhZ2VOYW1lc3BhY2VSZWYu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmg6CisgICAgICAgIFJlcGxhY2UgV0tQYWdlR2V0UGFnZU5hbWVz
cGFjZSB3aXRoIFdLUGFnZUdldENvbnRleHQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlTmFtZXNwYWNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlTmFtZXNwYWNlLmg6IFJlbW92ZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V2ViS2l0Mi5oOiBSZW1vdmUgI2luY2x1ZGUgb2YgV0tQYWdlTmFtZXNwYWNlLmguCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHA6CisgICAgICAgIChXS1ZpZXdDcmVh
dGUpOiBDaGFuZ2VkIHRvIHRha2UgYSBXS0NvbnRleHRSZWYgaW5zdGVhZCBvZiBhIFdLUGFnZU5h
bWVzcGFjZVJlZi4KKyAgICAgICAgKFdLVmlld0NyZWF0ZVVzaW5nU2hhcmVkUHJvY2Vzcyk6IEFk
ZGVkLiBTaW1pbGFyIHRvIFdLVmlld0NyZWF0ZSBleGNlcHQgdGhhdAorICAgICAgICBhbGwgY2Fs
bGVycyBvZiBpdCB3aWxsIGhhdmUgdGhlaXIgdmlld3MgZW5kIHVwIGluIHRoZSBzYW1lIHNoYXJl
ZCBwcm9jZXNzLCB3aGVyZQorICAgICAgICBhcyB3aXRoIFdLVmlld0NyZWF0ZSwgYSBuZXcgaW50
ZXJuYWwgcGFnZSBuYW1lc3BhY2Ugd2lsbCBiZSBjcmVhdGVkIGFuZCBjb3VsZAorICAgICAgICBw
bGFjZSB0aGUgdmlldydzIFdlYlBhZ2UgaW50byBhIG5ldyBwcm9jZXNzLgorICAgICAgICAoV0tW
aWV3Q3JlYXRlRm9yQXNzb2NpYXRlZFBhZ2UpOiBBZGRlZC4gQ3JlYXRlcyBhIHZpZXcgdGhhdCBp
cyBmb3JjZWQgdG8gdXNlIHRoZQorICAgICAgICBzYW1lIHByb2Nlc3MgYXMgdGhlIHBhc3NlZCBp
biBwYWdlLgorCisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlldzo6V2ViVmlldyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6Omlu
aXRpYWxpemUpOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViVmlldy5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpjcmVh
dGVVc2luZ1NoYXJlZFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpjcmVhdGVG
b3JBc3NvY2lhdGVkUGFnZSk6CisgICAgICAgIEltcGxlbWVudGF0aW9uIG9mIHRoZSBXS1ZpZXcg
Y3JlYXRlIGZ1bmN0aW9ucy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy93aW4vV0tWaWV3
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgaW5pdFdpdGhGcmFt
ZTpdKToKKyAgICAgICAgKC1bV0tWaWV3IGluaXRXaXRoRnJhbWU6Y29udGV4dFJlZjpdKToKKyAg
ICAgICAgKC1bV0tWaWV3IGluaXRXaXRoRnJhbWU6Y29udGV4dFJlZjpwYWdlR3JvdXBSZWY6XSk6
CisgICAgICAgICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOmNvbnRleHRSZWY6dXNpbmdTaGFyZWRQ
cm9jZXNzOl0pOgorICAgICAgICAoLVtXS1ZpZXcgaW5pdFdpdGhGcmFtZTpjb250ZXh0UmVmOnBh
Z2VHcm91cFJlZjp1c2luZ1NoYXJlZFByb2Nlc3M6XSk6CisgICAgICAgICgtW1dLVmlldyBpbml0
V2l0aEZyYW1lOmZvckFzc29jaWF0ZWRQYWdlUmVmOl0pOgorICAgICAgICAoLVtXS1ZpZXcgaW5p
dFdpdGhGcmFtZTpmb3JBc3NvY2lhdGVkUGFnZVJlZjpwYWdlR3JvdXBSZWY6XSk6CisgICAgICAg
ICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOnBhZ2VOYW1lc3BhY2U6cGFnZUdyb3VwOl0pOgorICAg
ICAgICBBZGQgbmV3IGluaXRpYWxpemVycyBmb3IgdGhlIG9iamVjdGl2ZS1jIFdLVmlldy4gSXQg
Zm9sbG93cyB0aGUgc2FtZQorICAgICAgICBwYXR0ZXJuIGFzIFdLVmlld1JlZi4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdrY29udGV4dC5jcHA6CisgICAgICAgIChRV0tDb250ZXh0
OjpRV0tDb250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3a2NvbnRleHQuaDoK
KyAgICAgICAgUmVtb3ZlIHVzZXMgb2YgV0tQYWdlTmFtZXNwYWNlUmVmLgorCisgICAgICAgICog
VUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojpz
aGFyZWRQYWdlTmFtZXNwYWNlKTogUmV0dXJucyBhIHNoYXJlZAorICAgICAgICBwYWdlIG5hbWVz
cGFjZSB1c2VkIGJ5IHRoZSB2aWV3J3MgY3JlYXRlVXNpbmdTaGFyZWRQcm9jZXNzIGNvbnN0cnVj
dGlvbnMuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmNyZWF0ZVBhZ2VOYW1lc3BhY2Up
OiBDaGFuZ2UgdG8gcmV0dXJuCisgICAgICAgIGEgUGFzc1JlZlB0ciB0byBtYWtlIHRoaW5ncyBj
bGVhcmVyLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwYWdlTmFtZXNwYWNlV2FzRGVz
dHJveWVkKTogQ2xlYXIgdGhlIHNoYXJlZAorICAgICAgICBuYW1lc3BhY2UgaWYgaXQgaXMgY2xl
YXJlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgorCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VOYW1lc3BhY2UuaDogUmVtb3ZlIHVudXNlZCAic3RydWN0IFdLQ29udGV4
dFN0YXRpc3RpY3MiLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGV4dCk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICBBZGQgY29udGV4dCBnZXR0ZXIuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSk6
CisgICAgICAgIFVzZSBmb3JBc3NvY2lhdGVkUGFnZVJlZiBjb25zdHJ1Y3RvciBmb3IgdGhlIFdl
Ykluc3BlY3RvciB2aWV3LgorCisgICAgICAgICogV2ViS2l0Mi5wcm86CisgICAgICAgICogV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHdpbi9XZWJLaXQyLnZj
cHJvajoKKyAgICAgICAgKiB3aW4vV2ViS2l0MkdlbmVyYXRlZC5tYWtlOgorICAgICAgICBSZW1v
dmUgV0tQYWdlTmFtZXNwYWNlLmgvY3BwLgorCiAyMDEwLTEyLTEyICBTYW0gV2VpbmlnICA8c2Ft
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRl
eDogV2ViS2l0Mi9XZWJLaXQyLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYktpdDIucHJv
CShyZXZpc2lvbiA3Mzg4MykKKysrIFdlYktpdDIvV2ViS2l0Mi5wcm8JKHdvcmtpbmcgY29weSkK
QEAgLTI4OSw3ICsyODksNiBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tO
YXZpZ2F0aW9uRGF0YS5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmggXAogICAgIFVJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5oIFwKLSAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdl
TmFtZXNwYWNlLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmggXAogICAg
IFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9X
S1ByZWZlcmVuY2VzUHJpdmF0ZS5oIFwKQEAgLTQ4OSw3ICs0ODgsNiBAQCBTT1VSQ0VTICs9IFwK
ICAgICBVSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uRGF0YS5jcHAgXAogICAgIFVJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2UuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3Bw
IFwKLSAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlTmFtZXNwYWNlLmNwcCBcCiAgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQcm90
ZWN0aW9uU3BhY2UuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL2NwcC9xdC9XS1N0cmluZ1F0LmNw
cCBcCkluZGV4OiBXZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAkocmV2aXNpb24gNzM4ODMpCisrKyBXZWJLaXQy
L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNiBAQCB0
eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0luc3BlY3RvciogCiB0eXBlZGVmIGNvbnN0IHN0
cnVjdCBPcGFxdWVXS05hdmlnYXRpb25EYXRhKiBXS05hdmlnYXRpb25EYXRhUmVmOwogdHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQYWdlKiBXS1BhZ2VSZWY7CiB0eXBlZGVmIGNvbnN0IHN0
cnVjdCBPcGFxdWVXS1BhZ2VHcm91cCogV0tQYWdlR3JvdXBSZWY7Ci10eXBlZGVmIGNvbnN0IHN0
cnVjdCBPcGFxdWVXS1BhZ2VOYW1lc3BhY2UqIFdLUGFnZU5hbWVzcGFjZVJlZjsKIHR5cGVkZWYg
Y29uc3Qgc3RydWN0IE9wYXF1ZVdLUHJlZmVyZW5jZXMqIFdLUHJlZmVyZW5jZXNSZWY7CiB0eXBl
ZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1Byb3RlY3Rpb25TcGFjZSogV0tQcm90ZWN0aW9uU3Bh
Y2VSZWY7CiAKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCShyZXZpc2lvbiA3Mzg4MykK
KysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
OSw2ICs3OSw3IEBAIFBhc3NSZWZQdHI8V2ViQ29udGV4dD4gV2ViQ29udGV4dDo6Y3JlYXQKICAg
ICAKIFdlYkNvbnRleHQ6OldlYkNvbnRleHQoUHJvY2Vzc01vZGVsIHByb2Nlc3NNb2RlbCwgY29u
c3QgU3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgpCiAgICAgOiBtX3Byb2Nlc3NNb2RlbChwcm9j
ZXNzTW9kZWwpCisgICAgLCBtX3NoYXJlZE5hbWVzcGFjZSgwKQogICAgICwgbV9kZWZhdWx0UGFn
ZUdyb3VwKFdlYlBhZ2VHcm91cDo6Y3JlYXRlKCkpCiAgICAgLCBtX2luamVjdGVkQnVuZGxlUGF0
aChpbmplY3RlZEJ1bmRsZVBhdGgpCiAgICAgLCBtX3Zpc2l0ZWRMaW5rUHJvdmlkZXIodGhpcykK
QEAgLTIyOCwxNSArMjI5LDI3IEBAIHZvaWQgV2ViQ29udGV4dDo6cmVsYXVuY2hQcm9jZXNzSWZO
ZWNlc3MKICAgICBlbnN1cmVXZWJQcm9jZXNzKCk7CiB9CiAKLVdlYlBhZ2VOYW1lc3BhY2UqIFdl
YkNvbnRleHQ6OmNyZWF0ZVBhZ2VOYW1lc3BhY2UoKQorV2ViUGFnZU5hbWVzcGFjZSogV2ViQ29u
dGV4dDo6c2hhcmVkUGFnZU5hbWVzcGFjZSgpCit7CisgICAgaWYgKG1fc2hhcmVkTmFtZXNwYWNl
KQorICAgICAgICByZXR1cm4gbV9zaGFyZWROYW1lc3BhY2UuZ2V0KCk7CisKKyAgICBtX3NoYXJl
ZE5hbWVzcGFjZSA9IGNyZWF0ZVBhZ2VOYW1lc3BhY2UoKTsKKyAgICByZXR1cm4gbV9zaGFyZWRO
YW1lc3BhY2UuZ2V0KCk7Cit9CisKK1Bhc3NSZWZQdHI8V2ViUGFnZU5hbWVzcGFjZT4gV2ViQ29u
dGV4dDo6Y3JlYXRlUGFnZU5hbWVzcGFjZSgpCiB7CiAgICAgUmVmUHRyPFdlYlBhZ2VOYW1lc3Bh
Y2U+IHBhZ2VOYW1lc3BhY2UgPSBXZWJQYWdlTmFtZXNwYWNlOjpjcmVhdGUodGhpcyk7CiAgICAg
bV9wYWdlTmFtZXNwYWNlcy5hZGQocGFnZU5hbWVzcGFjZS5nZXQoKSk7Ci0gICAgcmV0dXJuIHBh
Z2VOYW1lc3BhY2UucmVsZWFzZSgpLnJlbGVhc2VSZWYoKTsKKyAgICByZXR1cm4gcGFnZU5hbWVz
cGFjZS5yZWxlYXNlKCk7CiB9CiAKIHZvaWQgV2ViQ29udGV4dDo6cGFnZU5hbWVzcGFjZVdhc0Rl
c3Ryb3llZChXZWJQYWdlTmFtZXNwYWNlKiBwYWdlTmFtZXNwYWNlKQogeworICAgIGlmIChwYWdl
TmFtZXNwYWNlID09IG1fc2hhcmVkTmFtZXNwYWNlKQorICAgICAgICBtX3NoYXJlZE5hbWVzcGFj
ZSA9IDA7CisKICAgICBBU1NFUlQobV9wYWdlTmFtZXNwYWNlcy5jb250YWlucyhwYWdlTmFtZXNw
YWNlKSk7CiAgICAgbV9wYWdlTmFtZXNwYWNlcy5yZW1vdmUocGFnZU5hbWVzcGFjZSk7CiB9Cklu
ZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCShyZXZpc2lvbiA3Mzg4MykKKysrIFdlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsOCArNDIsNiBAQAogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAotc3RydWN0IFdLQ29udGV4dFN0YXRpc3RpY3M7Ci0KIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjbGFzcyBEb3dubG9hZFByb3h5OwpAQCAtNzcsNyArNzUsOCBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHJlbGF1bmNoUHJvY2Vzc0lmTmVjZXNzYXJ5KCk7CiAKLSAgICBXZWJQYWdlTmFtZXNw
YWNlKiBjcmVhdGVQYWdlTmFtZXNwYWNlKCk7CisgICAgV2ViUGFnZU5hbWVzcGFjZSogc2hhcmVk
UGFnZU5hbWVzcGFjZSgpOworICAgIFBhc3NSZWZQdHI8V2ViUGFnZU5hbWVzcGFjZT4gY3JlYXRl
UGFnZU5hbWVzcGFjZSgpOwogICAgIHZvaWQgcGFnZU5hbWVzcGFjZVdhc0Rlc3Ryb3llZChXZWJQ
YWdlTmFtZXNwYWNlKik7CiAKICAgICBjb25zdCBTdHJpbmcmIGluamVjdGVkQnVuZGxlUGF0aCgp
IGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRCdW5kbGVQYXRoOyB9CkBAIC0xNjQsNiArMTYzLDcg
QEAgcHJpdmF0ZToKICAgICAvLyBGSVhNRTogSW4gdGhlIGZ1dHVyZSwgdGhpcyBzaG91bGQgYmUg
b25lIG9yIG1vcmUgV2ViUHJvY2Vzc1Byb3hpZXMuCiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94
eT4gbV9wcm9jZXNzOwogCisgICAgUmVmUHRyPFdlYlBhZ2VOYW1lc3BhY2U+IG1fc2hhcmVkTmFt
ZXNwYWNlOwogICAgIEhhc2hTZXQ8V2ViUGFnZU5hbWVzcGFjZSo+IG1fcGFnZU5hbWVzcGFjZXM7
CiAKICAgICBSZWZQdHI8V2ViUGFnZUdyb3VwPiBtX2RlZmF1bHRQYWdlR3JvdXA7CkluZGV4OiBX
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlTmFtZXNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZU5hbWVzcGFjZS5oCShyZXZpc2lvbiA3Mzg4MykKKysrIFdlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VOYW1lc3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCAr
MzEsNiBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogCi1zdHJ1Y3QgV0tDb250ZXh0U3RhdGlzdGljczsKLQogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNsYXNzIFdlYkNvbnRleHQ7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJ
KHJldmlzaW9uIDczODgzKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTMzLDYgKzEzMywxMSBAQCBXZWJQcm9jZXNzUHJveHkqIFdlYlBh
Z2VQcm94eTo6cHJvY2VzcygpCiAgICAgcmV0dXJuIG1fcGFnZU5hbWVzcGFjZS0+cHJvY2Vzcygp
OwogfQogCitXZWJDb250ZXh0KiBXZWJQYWdlUHJveHk6OmNvbnRleHQoKSBjb25zdAoreworICAg
IHJldHVybiBtX3BhZ2VOYW1lc3BhY2UtPmNvbnRleHQoKTsKK30KKwogYm9vbCBXZWJQYWdlUHJv
eHk6OmlzVmFsaWQoKQogewogICAgIC8vIEEgcGFnZSB0aGF0IGhhcyBiZWVuIGV4cGxpY2l0bHkg
Y2xvc2VkIGlzIG5ldmVyIHZhbGlkLgpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJl
dmlzaW9uIDczODgzKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTcxLDggKzcxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHN0cnVj
dCBXaW5kb3dGZWF0dXJlczsKIH0KIAotc3RydWN0IFdLQ29udGV4dFN0YXRpc3RpY3M7Ci0KIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBEcmF3aW5nQXJlYVByb3h5OwpAQCAtMjUyLDYgKzI1
MCw3IEBAIHB1YmxpYzoKIAogICAgIFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcygpIGNvbnN0Owog
ICAgIFdlYlBhZ2VOYW1lc3BhY2UqIHBhZ2VOYW1lc3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3Bh
Z2VOYW1lc3BhY2UuZ2V0KCk7IH0KKyAgICBXZWJDb250ZXh0KiBjb250ZXh0KCkgY29uc3Q7CiAK
ICAgICBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUdyb3Vw
LmdldCgpOyB9CiAKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCShyZXZpc2lv
biA3Mzg4MykKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC01NCw3ICs1NCw2IEBAIGNsYXNzIFdlYkZyYW1lUHJveHk7CiBjbGFzcyBXZWJJ
bnNwZWN0b3JQcm94eTsKIGNsYXNzIFdlYk5hdmlnYXRpb25EYXRhOwogY2xhc3MgV2ViUGFnZUdy
b3VwOwotY2xhc3MgV2ViUGFnZU5hbWVzcGFjZTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNz
IFdlYlByZWZlcmVuY2VzOwogY2xhc3MgV2ViUHJvdGVjdGlvblNwYWNlOwpAQCAtNzAsMTYgKzY5
LDE2IEBAIFdLX0FERF9BUElfTUFQUElORyhXS0Rvd25sb2FkUmVmLCBEb3dubG8KIFdLX0FERF9B
UElfTUFQUElORyhXS0Zvcm1TdWJtaXNzaW9uTGlzdGVuZXJSZWYsIFdlYkZvcm1TdWJtaXNzaW9u
TGlzdGVuZXJQcm94eSkKIFdLX0FERF9BUElfTUFQUElORyhXS0ZyYW1lUG9saWN5TGlzdGVuZXJS
ZWYsIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSkKIFdLX0FERF9BUElfTUFQUElORyhXS0Zy
YW1lUmVmLCBXZWJGcmFtZVByb3h5KQotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi1XS19BRERfQVBJ
X01BUFBJTkcoV0tJbnNwZWN0b3JSZWYsIFdlYkluc3BlY3RvclByb3h5KQotI2VuZGlmCiBXS19B
RERfQVBJX01BUFBJTkcoV0tOYXZpZ2F0aW9uRGF0YVJlZiwgV2ViTmF2aWdhdGlvbkRhdGEpCiBX
S19BRERfQVBJX01BUFBJTkcoV0tQYWdlR3JvdXBSZWYsIFdlYlBhZ2VHcm91cCkKLVdLX0FERF9B
UElfTUFQUElORyhXS1BhZ2VOYW1lc3BhY2VSZWYsIFdlYlBhZ2VOYW1lc3BhY2UpCiBXS19BRERf
QVBJX01BUFBJTkcoV0tQYWdlUmVmLCBXZWJQYWdlUHJveHkpCiBXS19BRERfQVBJX01BUFBJTkco
V0tQcmVmZXJlbmNlc1JlZiwgV2ViUHJlZmVyZW5jZXMpCiBXS19BRERfQVBJX01BUFBJTkcoV0tQ
cm90ZWN0aW9uU3BhY2VSZWYsIFdlYlByb3RlY3Rpb25TcGFjZSkKIAorI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCitXS19BRERfQVBJX01BUFBJTkcoV0tJbnNwZWN0b3JSZWYsIFdlYkluc3BlY3RvclBy
b3h5KQorI2VuZGlmCisKIC8qIEVudW0gY29udmVyc2lvbnMgKi8KIAogaW5saW5lIENhY2hlTW9k
ZWwgdG9DYWNoZU1vZGVsKFdLQ2FjaGVNb2RlbCB3a0NhY2hlTW9kZWwpCkluZGV4OiBXZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHJldmlzaW9uIDczODgzKQorKysgV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsOSArNDIsOSBAQCBXS1R5
cGVJRCBXS1BhZ2VHZXRUeXBlSUQoKQogICAgIHJldHVybiB0b0FQSShXZWJQYWdlUHJveHk6OkFQ
SVR5cGUpOwogfQogCi1XS1BhZ2VOYW1lc3BhY2VSZWYgV0tQYWdlR2V0UGFnZU5hbWVzcGFjZShX
S1BhZ2VSZWYgcGFnZVJlZikKK1dLQ29udGV4dFJlZiBXS1BhZ2VHZXRDb250ZXh0KFdLUGFnZVJl
ZiBwYWdlUmVmKQogewotICAgIHJldHVybiB0b0FQSSh0b0ltcGwocGFnZVJlZiktPnBhZ2VOYW1l
c3BhY2UoKSk7CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChwYWdlUmVmKS0+Y29udGV4dCgpKTsK
IH0KIAogV0tQYWdlR3JvdXBSZWYgV0tQYWdlR2V0UGFnZUdyb3VwKFdLUGFnZVJlZiBwYWdlUmVm
KQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJKHJldmlzaW9uIDczODgzKQorKysgV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNyw3ICsy
MTcsNyBAQCB0eXBlZGVmIHN0cnVjdCBXS1BhZ2VDb250ZXh0TWVudUNsaWVudCBXCiAKIFdLX0VY
UE9SVCBXS1R5cGVJRCBXS1BhZ2VHZXRUeXBlSUQoKTsKIAotV0tfRVhQT1JUIFdLUGFnZU5hbWVz
cGFjZVJlZiBXS1BhZ2VHZXRQYWdlTmFtZXNwYWNlKFdLUGFnZVJlZiBwYWdlKTsKK1dLX0VYUE9S
VCBXS0NvbnRleHRSZWYgV0tQYWdlR2V0Q29udGV4dChXS1BhZ2VSZWYgcGFnZSk7CiBXS19FWFBP
UlQgV0tQYWdlR3JvdXBSZWYgV0tQYWdlR2V0UGFnZUdyb3VwKFdLUGFnZVJlZiBwYWdlKTsKIAog
V0tfRVhQT1JUIHZvaWQgV0tQYWdlTG9hZFVSTChXS1BhZ2VSZWYgcGFnZSwgV0tVUkxSZWYgdXJs
KTsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZU5hbWVzcGFjZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlTmFtZXNwYWNlLmNwcAko
cmV2aXNpb24gNzM4ODMpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VOYW1lc3Bh
Y2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiV0tQYWdlTmFtZXNwYWNlLmgiCi0KLSNpbmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNs
dWRlICJXZWJQYWdlTmFtZXNwYWNlLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLVdLVHlw
ZUlEIFdLUGFnZU5hbWVzcGFjZUdldFR5cGVJRCgpCi17Ci0gICAgcmV0dXJuIHRvQVBJKFdlYlBh
Z2VOYW1lc3BhY2U6OkFQSVR5cGUpOwotfQotCi1XS1BhZ2VOYW1lc3BhY2VSZWYgV0tQYWdlTmFt
ZXNwYWNlQ3JlYXRlKFdLQ29udGV4dFJlZiBvd25lckNvbnRleHRSZWYpCi17Ci0gICAgcmV0dXJu
IHRvQVBJKHRvSW1wbChvd25lckNvbnRleHRSZWYpLT5jcmVhdGVQYWdlTmFtZXNwYWNlKCkpOwot
fQotCi1XS0NvbnRleHRSZWYgV0tQYWdlTmFtZXNwYWNlR2V0Q29udGV4dChXS1BhZ2VOYW1lc3Bh
Y2VSZWYgcGFnZU5hbWVzcGFjZVJlZikKLXsKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKHBhZ2VO
YW1lc3BhY2VSZWYpLT5jb250ZXh0KCkpOwotfQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlTmFtZXNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlTmFtZXNwYWNlLmgJKHJldmlzaW9uIDczODgzKQorKysgV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlTmFtZXNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNDUgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgV0tQYWdlTmFtZXNwYWNlX2gKLSNkZWZpbmUgV0tQYWdl
TmFtZXNwYWNlX2gKLQotI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+Ci0KLSNpZmRlZiBfX2Nw
bHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotV0tfRVhQT1JUIFdLVHlwZUlEIFdLUGFn
ZU5hbWVzcGFjZUdldFR5cGVJRCgpOwotCi1XS19FWFBPUlQgV0tQYWdlTmFtZXNwYWNlUmVmIFdL
UGFnZU5hbWVzcGFjZUNyZWF0ZShXS0NvbnRleHRSZWYgb3duZXJDb250ZXh0KTsKLQotV0tfRVhQ
T1JUIFdLQ29udGV4dFJlZiBXS1BhZ2VOYW1lc3BhY2VHZXRDb250ZXh0KFdLUGFnZU5hbWVzcGFj
ZVJlZiBwYWdlTmFtZXNwYWNlKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQot
I2VuZGlmIC8qIFdLUGFnZU5hbWVzcGFjZV9oICovCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XZWJLaXQyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV2Vi
S2l0Mi5oCShyZXZpc2lvbiA3Mzg4MykKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dlYktp
dDIuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1ZGUgPFdlYktpdDIv
V0tOdW1iZXIuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZS5oPgogI2luY2x1ZGUgPFdlYktp
dDIvV0tQYWdlR3JvdXAuaD4KLSNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZU5hbWVzcGFjZS5oPgog
I2luY2x1ZGUgPFdlYktpdDIvV0tQcmVmZXJlbmNlcy5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tT
dHJpbmcuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLVVJMLmg+CkluZGV4OiBXZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy93aW4vV0tWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy93aW4vV0tWaWV3LmNwcAkocmV2aXNpb24gNzM4ODMpCisrKyBXZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy93aW4vV0tWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsOSArMzUsMjEg
QEAgV0tUeXBlSUQgV0tWaWV3R2V0VHlwZUlEKCkKICAgICByZXR1cm4gdG9BUEkoQVBJT2JqZWN0
OjpUeXBlVmlldyk7CiB9CiAKLVdLVmlld1JlZiBXS1ZpZXdDcmVhdGUoUkVDVCByZWN0LCBXS1Bh
Z2VOYW1lc3BhY2VSZWYgcGFnZU5hbWVzcGFjZVJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3Vw
UmVmLCBIV05EIHBhcmVudFdpbmRvdykKK1dLVmlld1JlZiBXS1ZpZXdDcmVhdGUoUkVDVCByZWN0
LCBXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmLCBI
V05EIHBhcmVudFdpbmRvdykKIHsKLSAgICBSZWZQdHI8V2ViVmlldz4gdmlldyA9IFdlYlZpZXc6
OmNyZWF0ZShyZWN0LCB0b0ltcGwocGFnZU5hbWVzcGFjZVJlZiksIHRvSW1wbChwYWdlR3JvdXBS
ZWYpLCBwYXJlbnRXaW5kb3cpOworICAgIFJlZlB0cjxXZWJWaWV3PiB2aWV3ID0gV2ViVmlldzo6
Y3JlYXRlKHJlY3QsIHRvSW1wbChjb250ZXh0UmVmKSwgdG9JbXBsKHBhZ2VHcm91cFJlZiksIHBh
cmVudFdpbmRvdyk7CisgICAgcmV0dXJuIHRvQVBJKHZpZXcucmVsZWFzZSgpLnJlbGVhc2VSZWYo
KSk7Cit9CisKK1dLVmlld1JlZiBXS1ZpZXdDcmVhdGVVc2luZ1NoYXJlZFByb2Nlc3MoUkVDVCBy
ZWN0LCBXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVm
LCBIV05EIHBhcmVudFdpbmRvdykKK3sKKyAgICBSZWZQdHI8V2ViVmlldz4gdmlldyA9IFdlYlZp
ZXc6OmNyZWF0ZVVzaW5nU2hhcmVkUHJvY2VzcyhyZWN0LCB0b0ltcGwoY29udGV4dFJlZiksIHRv
SW1wbChwYWdlR3JvdXBSZWYpLCBwYXJlbnRXaW5kb3cpOworICAgIHJldHVybiB0b0FQSSh2aWV3
LnJlbGVhc2UoKS5yZWxlYXNlUmVmKCkpOworfQorCitXS1ZpZXdSZWYgV0tWaWV3Q3JlYXRlRm9y
QXNzb2NpYXRlZFBhZ2UoUkVDVCByZWN0LCBXS1BhZ2VSZWYgcGFnZVJlZiwgV0tQYWdlR3JvdXBS
ZWYgcGFnZUdyb3VwUmVmLCBIV05EIHBhcmVudFdpbmRvdykKK3sKKyAgICBSZWZQdHI8V2ViVmll
dz4gdmlldyA9IFdlYlZpZXc6OmNyZWF0ZUZvckFzc29jaWF0ZWRQYWdlKHJlY3QsIHRvSW1wbChw
YWdlUmVmKSwgdG9JbXBsKHBhZ2VHcm91cFJlZiksIHBhcmVudFdpbmRvdyk7CiAgICAgcmV0dXJu
IHRvQVBJKHZpZXcucmVsZWFzZSgpLnJlbGVhc2VSZWYoKSk7CiB9CiAKSW5kZXg6IFdlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL3dpbi9XS1ZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy93aW4vV0tWaWV3LmgJKHJldmlzaW9uIDczODgzKQorKysgV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw5IEBA
IGV4dGVybiAiQyIgewogCiBXS19FWFBPUlQgV0tUeXBlSUQgV0tWaWV3R2V0VHlwZUlEKCk7CiAK
LVdLX0VYUE9SVCBXS1ZpZXdSZWYgV0tWaWV3Q3JlYXRlKFJFQ1QgcmVjdCwgV0tQYWdlTmFtZXNw
YWNlUmVmIHBhZ2VOYW1lc3BhY2UsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCwgSFdORCBwYXJl
bnRXaW5kb3cpOworV0tfRVhQT1JUIFdLVmlld1JlZiBXS1ZpZXdDcmVhdGUoUkVDVCByZWN0LCBX
S0NvbnRleHRSZWYgY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwLCBIV05EIHBhcmVu
dFdpbmRvdyk7CitXS19FWFBPUlQgV0tWaWV3UmVmIFdLVmlld0NyZWF0ZVVzaW5nU2hhcmVkUHJv
Y2VzcyhSRUNUIHJlY3QsIFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdl
R3JvdXAsIEhXTkQgcGFyZW50V2luZG93KTsKK1dLX0VYUE9SVCBXS1ZpZXdSZWYgV0tWaWV3Q3Jl
YXRlRm9yQXNzb2NpYXRlZFBhZ2UoUkVDVCByZWN0LCBXS1BhZ2VSZWYgcGFnZSwgV0tQYWdlR3Jv
dXBSZWYgcGFnZUdyb3VwLCBIV05EIHBhcmVudFdpbmRvdyk7CiAKIFdLX0VYUE9SVCBIV05EIFdL
Vmlld0dldFdpbmRvdyhXS1ZpZXdSZWYgdmlldyk7CiAKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNz
L0FQSS9tYWMvV0tWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9XS1ZpZXcuaAkocmV2aXNpb24gNzM4ODMpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFj
L1dLVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxNSArMzMsMTggQEAgQGludGVyZmFjZSBX
S1ZpZXcgOiBOU1ZpZXcgPE5TVGV4dElucHV0PgogICAgIFdLVmlld0RhdGEgKl9kYXRhOwogfQog
Ci0tIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgcGFnZU5hbWVzcGFjZVJlZjooV0tQ
YWdlTmFtZXNwYWNlUmVmKXBhZ2VOYW1lc3BhY2VSZWY7Ci0tIChpZClpbml0V2l0aEZyYW1lOihO
U1JlY3QpZnJhbWUgcGFnZU5hbWVzcGFjZVJlZjooV0tQYWdlTmFtZXNwYWNlUmVmKXBhZ2VOYW1l
c3BhY2VSZWYgcGFnZUdyb3VwUmVmOihXS1BhZ2VHcm91cFJlZilwYWdlR3JvdXBSZWY7CistIChp
ZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgY29udGV4dFJlZjooV0tDb250ZXh0UmVmKWNv
bnRleHRSZWY7CistIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgY29udGV4dFJlZjoo
V0tDb250ZXh0UmVmKWNvbnRleHRSZWYgcGFnZUdyb3VwUmVmOihXS1BhZ2VHcm91cFJlZilwYWdl
R3JvdXBSZWY7CiAKLS0gKFdLUGFnZVJlZilwYWdlUmVmOworLSAoaWQpaW5pdFdpdGhGcmFtZToo
TlNSZWN0KWZyYW1lIGNvbnRleHRSZWY6KFdLQ29udGV4dFJlZiljb250ZXh0UmVmIHVzaW5nU2hh
cmVkUHJvY2VzczooQk9PTCl1c2luZ1NoYXJlZFByb2Nlc3M7CistIChpZClpbml0V2l0aEZyYW1l
OihOU1JlY3QpZnJhbWUgY29udGV4dFJlZjooV0tDb250ZXh0UmVmKWNvbnRleHRSZWYgcGFnZUdy
b3VwUmVmOihXS1BhZ2VHcm91cFJlZilwYWdlR3JvdXBSZWYgdXNpbmdTaGFyZWRQcm9jZXNzOihC
T09MKXVzaW5nU2hhcmVkUHJvY2Vzczs7CiAKLS0gKHZvaWQpc2V0RHJhd3NCYWNrZ3JvdW5kOihC
T09MKWZsYWc7Ci0tIChCT09MKWRyYXdzQmFja2dyb3VuZDsKKy0gKGlkKWluaXRXaXRoRnJhbWU6
KE5TUmVjdClmcmFtZSBmb3JBc3NvY2lhdGVkUGFnZVJlZjooV0tQYWdlUmVmKXBhZ2VSZWY7Cist
IChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgZm9yQXNzb2NpYXRlZFBhZ2VSZWY6KFdL
UGFnZVJlZilwYWdlUmVmIHBhZ2VHcm91cFJlZjooV0tQYWdlR3JvdXBSZWYpcGFnZUdyb3VwUmVm
OwogCi0tICh2b2lkKXNldERyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kOihCT09MKWZsYWc7Ci0t
IChCT09MKWRyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kOworQHByb3BlcnR5KHJlYWRvbmx5KSBX
S1BhZ2VSZWYgcGFnZVJlZjsKKworQHByb3BlcnR5IEJPT0wgZHJhd3NCYWNrZ3JvdW5kOworQHBy
b3BlcnR5IEJPT0wgZHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQ7CiAKIEBlbmQKSW5kZXg6IFdl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCShyZXZpc2lvbiA3Mzg4MykKKysrIFdlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsOSArMTI3
LDU0IEBAIC0gKEJPT0wpd2FudHNUb0hhbmRsZU1vdXNlRXZlbnRzOwogLSAoQk9PTCloYW5kbGVN
b3VzZUV2ZW50OihOU0V2ZW50ICopZXZlbnQ7CiBAZW5kCiAKK0BpbnRlcmZhY2UgV0tWaWV3ICgp
CistIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgcGFnZU5hbWVzcGFjZTooV2ViUGFn
ZU5hbWVzcGFjZSopcGFnZU5hbWVzcGFjZSBwYWdlR3JvdXA6KFdlYlBhZ2VHcm91cCopcGFnZUdy
b3VwOworQGVuZAorCiBAaW1wbGVtZW50YXRpb24gV0tWaWV3CiAKLS0gKGlkKWluaXRXaXRoRnJh
bWU6KE5TUmVjdClmcmFtZSBwYWdlTmFtZXNwYWNlUmVmOihXS1BhZ2VOYW1lc3BhY2VSZWYpcGFn
ZU5hbWVzcGFjZVJlZiBwYWdlR3JvdXBSZWY6KFdLUGFnZUdyb3VwUmVmKXBhZ2VHcm91cFJlZgor
LSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lCit7CisgICAgcmV0dXJuIFtzZWxmIGlu
aXRXaXRoRnJhbWU6ZnJhbWUgY29udGV4dFJlZjp0b0FQSShXZWJDb250ZXh0OjpzaGFyZWRQcm9j
ZXNzQ29udGV4dCgpKV07Cit9CisKKy0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBj
b250ZXh0UmVmOihXS0NvbnRleHRSZWYpY29udGV4dFJlZgoreyAgIAorICAgIHJldHVybiBbc2Vs
ZiBpbml0V2l0aEZyYW1lOmZyYW1lIGNvbnRleHRSZWY6Y29udGV4dFJlZiBwYWdlR3JvdXBSZWY6
bmlsXTsKK30KKworLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGNvbnRleHRSZWY6
KFdLQ29udGV4dFJlZiljb250ZXh0UmVmIHBhZ2VHcm91cFJlZjooV0tQYWdlR3JvdXBSZWYpcGFn
ZUdyb3VwUmVmCit7CisgICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoRnJhbWU6ZnJhbWUgY29udGV4
dFJlZjpjb250ZXh0UmVmIHBhZ2VHcm91cFJlZjpwYWdlR3JvdXBSZWYgdXNpbmdTaGFyZWRQcm9j
ZXNzOk5PXTsKK30KKworLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGNvbnRleHRS
ZWY6KFdLQ29udGV4dFJlZiljb250ZXh0UmVmIHVzaW5nU2hhcmVkUHJvY2VzczooQk9PTCl1c2lu
Z1NoYXJlZFByb2Nlc3MKK3sKKyAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhGcmFtZTpmcmFtZSBj
b250ZXh0UmVmOmNvbnRleHRSZWYgcGFnZUdyb3VwUmVmOm5pbCB1c2luZ1NoYXJlZFByb2Nlc3M6
dXNpbmdTaGFyZWRQcm9jZXNzXTsKK30KKworLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZy
YW1lIGNvbnRleHRSZWY6KFdLQ29udGV4dFJlZiljb250ZXh0UmVmIHBhZ2VHcm91cFJlZjooV0tQ
YWdlR3JvdXBSZWYpcGFnZUdyb3VwUmVmIHVzaW5nU2hhcmVkUHJvY2VzczooQk9PTCl1c2luZ1No
YXJlZFByb2Nlc3MKK3sKKyAgICBSZWZQdHI8V2ViUGFnZU5hbWVzcGFjZT4gcGFnZU5hbWVzcGFj
ZTsKKyAgICBpZiAodXNpbmdTaGFyZWRQcm9jZXNzKQorICAgICAgICBwYWdlTmFtZXNwYWNlID0g
dG9JbXBsKGNvbnRleHRSZWYpLT5zaGFyZWRQYWdlTmFtZXNwYWNlKCk7CisgICAgZWxzZQorICAg
ICAgICBwYWdlTmFtZXNwYWNlID0gdG9JbXBsKGNvbnRleHRSZWYpLT5jcmVhdGVQYWdlTmFtZXNw
YWNlKCk7CisKKyAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhGcmFtZTpmcmFtZSBwYWdlTmFtZXNw
YWNlOnBhZ2VOYW1lc3BhY2UuZ2V0KCkgcGFnZUdyb3VwOnRvSW1wbChwYWdlR3JvdXBSZWYpXTsK
K30KKworLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGZvckFzc29jaWF0ZWRQYWdl
UmVmOihXS1BhZ2VSZWYpcGFnZVJlZgoreworICAgIHJldHVybiBbc2VsZiBpbml0V2l0aEZyYW1l
OmZyYW1lIGZvckFzc29jaWF0ZWRQYWdlUmVmOnBhZ2VSZWYgcGFnZUdyb3VwUmVmOm5pbF07Cit9
CisKKy0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBmb3JBc3NvY2lhdGVkUGFnZVJl
ZjooV0tQYWdlUmVmKXBhZ2VSZWYgcGFnZUdyb3VwUmVmOihXS1BhZ2VHcm91cFJlZilwYWdlR3Jv
dXBSZWYKK3sKKyAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhGcmFtZTpmcmFtZSBwYWdlTmFtZXNw
YWNlOnRvSW1wbChwYWdlUmVmKS0+cGFnZU5hbWVzcGFjZSgpIHBhZ2VHcm91cDp0b0ltcGwocGFn
ZUdyb3VwUmVmKV07Cit9CisKKy0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBwYWdl
TmFtZXNwYWNlOihXZWJQYWdlTmFtZXNwYWNlKilwYWdlTmFtZXNwYWNlIHBhZ2VHcm91cDooV2Vi
UGFnZUdyb3VwKilwYWdlR3JvdXAKIHsKICAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRoRnJhbWU6
ZnJhbWVdOwogICAgIGlmICghc2VsZikKQEAgLTE0OCw3ICsxOTMsNyBAQCAtIChpZClpbml0V2l0
aEZyYW1lOihOU1JlY3QpZnJhbWUgcGFnZU5hCiAgICAgX2RhdGEgPSBbW1dLVmlld0RhdGEgYWxs
b2NdIGluaXRdOwogCiAgICAgX2RhdGEtPl9wYWdlQ2xpZW50ID0gUGFnZUNsaWVudEltcGw6OmNy
ZWF0ZShzZWxmKTsKLSAgICBfZGF0YS0+X3BhZ2UgPSB0b0ltcGwocGFnZU5hbWVzcGFjZVJlZikt
PmNyZWF0ZVdlYlBhZ2UodG9JbXBsKHBhZ2VHcm91cFJlZikpOworICAgIF9kYXRhLT5fcGFnZSA9
IHBhZ2VOYW1lc3BhY2UtPmNyZWF0ZVdlYlBhZ2UocGFnZUdyb3VwKTsKICAgICBfZGF0YS0+X3Bh
Z2UtPnNldFBhZ2VDbGllbnQoX2RhdGEtPl9wYWdlQ2xpZW50LmdldCgpKTsKICAgICBfZGF0YS0+
X3BhZ2UtPnNldERyYXdpbmdBcmVhKENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5OjpjcmVh
dGUoc2VsZikpOwogICAgIF9kYXRhLT5fcGFnZS0+aW5pdGlhbGl6ZVdlYlBhZ2UoSW50U2l6ZShm
cmFtZS5zaXplKSk7CkBAIC0xNjgsMTcgKzIxMyw2IEBAIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5T
UmVjdClmcmFtZSBwYWdlTmEKICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAoaWQpaW5pdFdpdGhG
cmFtZTooTlNSZWN0KWZyYW1lIHBhZ2VOYW1lc3BhY2VSZWY6KFdLUGFnZU5hbWVzcGFjZVJlZilw
YWdlTmFtZXNwYWNlUmVmCi17Ci0gICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoRnJhbWU6ZnJhbWUg
cGFnZU5hbWVzcGFjZVJlZjpwYWdlTmFtZXNwYWNlUmVmIHBhZ2VHcm91cFJlZjpuaWxdOwotfQot
Ci0tIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUKLXsKLSAgICBXZWJDb250ZXh0KiBj
b250ZXh0ID0gV2ViQ29udGV4dDo6c2hhcmVkUHJvY2Vzc0NvbnRleHQoKTsKLSAgICByZXR1cm4g
W3NlbGYgaW5pdFdpdGhGcmFtZTpmcmFtZSBwYWdlTmFtZXNwYWNlUmVmOnRvQVBJKGNvbnRleHQt
PmNyZWF0ZVBhZ2VOYW1lc3BhY2UoKSldOwotfQotCiAtICh2b2lkKWRlYWxsb2MKIHsKICAgICBf
ZGF0YS0+X3BhZ2UtPmNsb3NlKCk7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdr
Y29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a2Nv
bnRleHQuY3BwCShyZXZpc2lvbiA3Mzg4MykKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
d2tjb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTUgKzUwLDIzIEBAIFFXS0NvbnRl
eHQ6OlFXS0NvbnRleHQoUU9iamVjdCogcGFyZW50KQogICAgICwgZChuZXcgUVdLQ29udGV4dFBy
aXZhdGUodGhpcykpCiB7CiAgICAgZC0+Y29udGV4dCA9IFdlYkNvbnRleHQ6OmNyZWF0ZShTdHJp
bmcoKSk7Ci0gICAgZC0+cGFnZU5hbWVzcGFjZSA9IGQtPmNvbnRleHQtPmNyZWF0ZVBhZ2VOYW1l
c3BhY2UoKTsKKyAgICBkLT5wYWdlTmFtZXNwYWNlID0gZC0+Y29udGV4dC0+c2hhcmVkUGFnZU5h
bWVzcGFjZSgpOwogfQogCi1RV0tDb250ZXh0OjpRV0tDb250ZXh0KFdLUGFnZU5hbWVzcGFjZVJl
ZiBwYWdlTmFtZXNwYWNlUmVmLCBRT2JqZWN0KiBwYXJlbnQpCitRV0tDb250ZXh0OjpRV0tDb250
ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBRT2JqZWN0KiBwYXJlbnQpCiAgICAgOiBRT2Jq
ZWN0KHBhcmVudCkKICAgICAsIGQobmV3IFFXS0NvbnRleHRQcml2YXRlKHRoaXMpKQogewotICAg
IGQtPnBhZ2VOYW1lc3BhY2UgPSB0b0ltcGwocGFnZU5hbWVzcGFjZVJlZik7Ci0gICAgZC0+Y29u
dGV4dCA9IGQtPnBhZ2VOYW1lc3BhY2UtPmNvbnRleHQoKTsKKyAgICBkLT5jb250ZXh0ID0gdG9J
bXBsKGNvbnRleHRSZWYpOworICAgIGQtPnBhZ2VOYW1lc3BhY2UgPSBkLT5jb250ZXh0LT5zaGFy
ZWRQYWdlTmFtZXNwYWNlKCk7Cit9CisKK1FXS0NvbnRleHQ6OlFXS0NvbnRleHQoV0tQYWdlUmVm
IHBhZ2VSZWYsIFFPYmplY3QqIHBhcmVudCkKKyAgICA6IFFPYmplY3QocGFyZW50KQorICAgICwg
ZChuZXcgUVdLQ29udGV4dFByaXZhdGUodGhpcykpCit7CisgICAgZC0+Y29udGV4dCA9IHRvSW1w
bChwYWdlUmVmKS0+Y29udGV4dCgpOworICAgIGQtPnBhZ2VOYW1lc3BhY2UgPSBkLT5jb250ZXh0
LT5zaGFyZWRQYWdlTmFtZXNwYWNlKCk7CiB9CiAKIFFXS0NvbnRleHQ6On5RV0tDb250ZXh0KCkK
SW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2tjb250ZXh0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a2NvbnRleHQuaAkocmV2aXNpb24gNzM4ODMp
CisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrY29udGV4dC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMiw3ICsyMiw4IEBACiAKICNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCiAjaW5jbHVk
ZSA8UU9iamVjdD4KLSNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZU5hbWVzcGFjZS5oPgorI2luY2x1
ZGUgPFdlYktpdDIvV0tDb250ZXh0Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2UuaD4KIAog
Y2xhc3MgUVdLQ29udGV4dFByaXZhdGU7CiAKQEAgLTMzLDcgKzM0LDggQEAgcHVibGljOgogICAg
IHZpcnR1YWwgflFXS0NvbnRleHQoKTsKIAogICAgIC8vIEJyaWRnZSBmcm9tIHRoZSBDIEFQSQot
ICAgIFFXS0NvbnRleHQoV0tQYWdlTmFtZXNwYWNlUmVmIHBhZ2VOYW1lc3BhY2VSZWYsIFFPYmpl
Y3QqIHBhcmVudCA9IDApOworICAgIFFXS0NvbnRleHQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYs
IFFPYmplY3QqIHBhcmVudCA9IDApOworICAgIFFXS0NvbnRleHQoV0tQYWdlUmVmIHBhZ2VSZWYs
IFFPYmplY3QqIHBhcmVudCA9IDApOwogCiBwcml2YXRlOgogICAgIFFXS0NvbnRleHRQcml2YXRl
KiBkOwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1h
Yy5tbQkocmV2aXNpb24gNzM4ODMpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVj
dG9yUHJveHlNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTc4LDEwICs3OCwxMCBAQCBXZWJQYWdl
UHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9yCiAgICAgQVNTRVJUKG1fcGFnZSk7CiAg
ICAgQVNTRVJUKCFtX2luc3BlY3RvclZpZXcpOwogCi0gICAgbV9pbnNwZWN0b3JWaWV3LmFkb3B0
TlMoW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBwYWdlTmFtZXNwYWNl
UmVmOnRvQVBJKG1fcGFnZS0+cGFnZU5hbWVzcGFjZSgpKSBwYWdlR3JvdXBSZWY6dG9BUEkoaW5z
cGVjdG9yUGFnZUdyb3VwKCkpXSk7CisgICAgbV9pbnNwZWN0b3JWaWV3LmFkb3B0TlMoW1tXS1Zp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBmb3JBc3NvY2lhdGVkUGFnZVJlZjp0
b0FQSShwYWdlKCkpIHBhZ2VHcm91cFJlZjp0b0FQSShpbnNwZWN0b3JQYWdlR3JvdXAoKSldKTsK
ICAgICBBU1NFUlQobV9pbnNwZWN0b3JWaWV3KTsKIAotICAgIHJldHVybiB0b0ltcGwoW21faW5z
cGVjdG9yVmlldy5nZXQoKSBwYWdlUmVmXSk7CisgICAgcmV0dXJuIHRvSW1wbChtX2luc3BlY3Rv
clZpZXcuZ2V0KCkucGFnZVJlZik7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRm
b3JtT3BlbigpCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJveHlX
aW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQ
cm94eVdpbi5jcHAJKHJldmlzaW9uIDczODgzKQorKysgV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dl
Ykluc3BlY3RvclByb3h5V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDggKzE0MSw4IEBA
IFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3IKICAgICBBU1NFUlQoIW1f
aW5zcGVjdG9yV2luZG93KTsKIAogICAgIFJFQ1QgZW1wdHlSZWN0ID0gezB9OwotICAgIG1faW5z
cGVjdG9yVmlldyA9IFdlYlZpZXc6OmNyZWF0ZShlbXB0eVJlY3QsIG1fcGFnZS0+cGFnZU5hbWVz
cGFjZSgpLCBpbnNwZWN0b3JQYWdlR3JvdXAoKSwgMCkubGVha1JlZigpOwotICAgIAorICAgIG1f
aW5zcGVjdG9yVmlldyA9IFdlYlZpZXc6OmNyZWF0ZUZvckFzc29jaWF0ZWRQYWdlKGVtcHR5UmVj
dCwgbV9wYWdlLCBpbnNwZWN0b3JQYWdlR3JvdXAoKSwgMCkubGVha1JlZigpOworCiAgICAgcmV0
dXJuIG1faW5zcGVjdG9yVmlldy0+cGFnZSgpOwogfQogCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vz
cy93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dl
YlZpZXcuY3BwCShyZXZpc2lvbiA3Mzg4MykKKysrIFdlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJW
aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgyLDcgKzE4Miw3IEBAIGJvb2wgV2ViVmlldzo6
cmVnaXN0ZXJXZWJWaWV3V2luZG93Q2xhc3MKICAgICByZXR1cm4gISE6OlJlZ2lzdGVyQ2xhc3NF
eCgmd2NleCk7CiB9CiAKLVdlYlZpZXc6OldlYlZpZXcoUkVDVCByZWN0LCBXZWJQYWdlTmFtZXNw
YWNlKiBwYWdlTmFtZXNwYWNlLCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCwgSFdORCBwYXJlbnRX
aW5kb3cpCitXZWJWaWV3OjpXZWJWaWV3KFJFQ1QgcmVjdCwgV2ViQ29udGV4dCogY29udGV4dCwg
V2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAsIEhXTkQgcGFyZW50V2luZG93LCBib29sIHVzaW5nU2hh
cmVkUHJvY2VzcykKICAgICA6IG1fcmVjdChyZWN0KQogICAgICwgbV90b3BMZXZlbFBhcmVudFdp
bmRvdygwKQogICAgICwgbV90b29sVGlwV2luZG93KDApCkBAIC0xOTIsNiArMTkyLDMwIEBAIFdl
YlZpZXc6OldlYlZpZXcoUkVDVCByZWN0LCBXZWJQYWdlTmFtZXMKICAgICAsIG1fdHJhY2tpbmdN
b3VzZUxlYXZlKGZhbHNlKQogICAgICwgbV9pc0JlaW5nRGVzdHJveWVkKGZhbHNlKQogeworICAg
IFJlZlB0cjxXZWJQYWdlTmFtZXNwYWNlPiBwYWdlTmFtZXNwYWNlOworICAgIGlmICh1c2luZ1No
YXJlZFByb2Nlc3MpCisgICAgICAgIHBhZ2VOYW1lc3BhY2UgPSBjb250ZXh0LT5zaGFyZWRQYWdl
TmFtZXNwYWNlKCk7CisgICAgZWxzZQorICAgICAgICBwYWdlTmFtZXNwYWNlID0gY29udGV4dC0+
Y3JlYXRlUGFnZU5hbWVzcGFjZSgpOworCisgICAgaW5pdGlhbGl6ZShwYWdlTmFtZXNwYWNlLmdl
dCgpLCBwYWdlR3JvdXAsIHBhcmVudFdpbmRvdyk7Cit9CisKK1dlYlZpZXc6OldlYlZpZXcoUkVD
VCByZWN0LCBXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwLCBIV05E
IHBhcmVudFdpbmRvdykKKyAgICA6IG1fcmVjdChyZWN0KQorICAgICwgbV90b3BMZXZlbFBhcmVu
dFdpbmRvdygwKQorICAgICwgbV90b29sVGlwV2luZG93KDApCisgICAgLCBtX2xhc3RDdXJzb3JT
ZXQoMCkKKyAgICAsIG1fd2ViQ29yZUN1cnNvcigwKQorICAgICwgbV9vdmVycmlkZUN1cnNvcigw
KQorICAgICwgbV90cmFja2luZ01vdXNlTGVhdmUoZmFsc2UpCisgICAgLCBtX2lzQmVpbmdEZXN0
cm95ZWQoZmFsc2UpCit7CisgICAgaW5pdGlhbGl6ZShwYWdlLT5wYWdlTmFtZXNwYWNlKCksIHBh
Z2VHcm91cCwgcGFyZW50V2luZG93KTsKK30KKwordm9pZCBXZWJWaWV3Ojppbml0aWFsaXplKFdl
YlBhZ2VOYW1lc3BhY2UqIHBhZ2VOYW1lc3BhY2UsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwLCBI
V05EIHBhcmVudFdpbmRvdykKK3sKICAgICByZWdpc3RlcldlYlZpZXdXaW5kb3dDbGFzcygpOwog
CiAgICAgbV9wYWdlID0gcGFnZU5hbWVzcGFjZS0+Y3JlYXRlV2ViUGFnZShwYWdlR3JvdXApOwpA
QCAtMTk5LDEwICsyMjMsMTAgQEAgV2ViVmlldzo6V2ViVmlldyhSRUNUIHJlY3QsIFdlYlBhZ2VO
YW1lcwogICAgIG1fcGFnZS0+c2V0RHJhd2luZ0FyZWEoQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVh
UHJveHk6OmNyZWF0ZSh0aGlzKSk7CiAKICAgICBtX3dpbmRvdyA9IDo6Q3JlYXRlV2luZG93RXgo
MCwga1dlYktpdDJXZWJWaWV3V2luZG93Q2xhc3NOYW1lLCAwLCBXU19DSElMRCB8IFdTX0NMSVBT
SUJMSU5HUyB8IFdTX0NMSVBDSElMRFJFTiwKLSAgICAgICAgcmVjdC50b3AsIHJlY3QubGVmdCwg
cmVjdC5yaWdodCAtIHJlY3QubGVmdCwgcmVjdC5ib3R0b20gLSByZWN0LnRvcCwgcGFyZW50V2lu
ZG93ID8gcGFyZW50V2luZG93IDogSFdORF9NRVNTQUdFLCAwLCBpbnN0YW5jZUhhbmRsZSgpLCB0
aGlzKTsKKyAgICAgICAgbV9yZWN0LnRvcCwgbV9yZWN0LmxlZnQsIG1fcmVjdC5yaWdodCAtIG1f
cmVjdC5sZWZ0LCBtX3JlY3QuYm90dG9tIC0gbV9yZWN0LnRvcCwgcGFyZW50V2luZG93ID8gcGFy
ZW50V2luZG93IDogSFdORF9NRVNTQUdFLCAwLCBpbnN0YW5jZUhhbmRsZSgpLCB0aGlzKTsKICAg
ICBBU1NFUlQoOjpJc1dpbmRvdyhtX3dpbmRvdykpOwogCi0gICAgbV9wYWdlLT5pbml0aWFsaXpl
V2ViUGFnZShJbnRSZWN0KHJlY3QpLnNpemUoKSk7CisgICAgbV9wYWdlLT5pbml0aWFsaXplV2Vi
UGFnZShJbnRSZWN0KG1fcmVjdCkuc2l6ZSgpKTsKIAogICAgIDo6U2hvd1dpbmRvdyhtX3dpbmRv
dywgU1dfU0hPVyk7CiAKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuaAkocmV2aXNpb24gNzM4
ODMpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MSw5ICs0MSwxNyBAQCBjbGFzcyBXZWJQYWdlTmFtZXNwYWNlOwogCiBjbGFzcyBXZWJWaWV3
IDogcHVibGljIEFQSU9iamVjdCwgcHVibGljIFBhZ2VDbGllbnQsIFdlYkNvcmU6OldpbmRvd01l
c3NhZ2VMaXN0ZW5lciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViVmlldz4g
Y3JlYXRlKFJFQ1QgcmVjdCwgV2ViUGFnZU5hbWVzcGFjZSogcGFnZU5hbWVzcGFjZSwgV2ViUGFn
ZUdyb3VwKiBwYWdlR3JvdXAsIEhXTkQgcGFyZW50V2luZG93KQorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFdlYlZpZXc+IGNyZWF0ZShSRUNUIHJlY3QsIFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYlBh
Z2VHcm91cCogcGFnZUdyb3VwLCBIV05EIHBhcmVudFdpbmRvdykKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgV2ViVmlldyhyZWN0LCBwYWdlTmFtZXNwYWNlLCBwYWdlR3JvdXAs
IHBhcmVudFdpbmRvdykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlZpZXcocmVj
dCwgY29udGV4dCwgcGFnZUdyb3VwLCBwYXJlbnRXaW5kb3csIGZhbHNlKSk7CisgICAgfQorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYlZpZXc+IGNyZWF0ZVVzaW5nU2hhcmVkUHJvY2VzcyhSRUNU
IHJlY3QsIFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwLCBIV05E
IHBhcmVudFdpbmRvdykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViVmll
dyhyZWN0LCBjb250ZXh0LCBwYWdlR3JvdXAsIHBhcmVudFdpbmRvdywgdHJ1ZSkpOworICAgIH0K
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJWaWV3PiBjcmVhdGVGb3JBc3NvY2lhdGVkUGFnZShS
RUNUIHJlY3QsIFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAsIEhX
TkQgcGFyZW50V2luZG93KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJW
aWV3KHJlY3QsIHBhZ2UsIHBhZ2VHcm91cCwgcGFyZW50V2luZG93KSk7CiAgICAgfQogICAgIH5X
ZWJWaWV3KCk7CiAKQEAgLTU4LDcgKzY2LDEwIEBAIHB1YmxpYzoKICAgICBXZWJQYWdlUHJveHkq
IHBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2UuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBX
ZWJWaWV3KFJFQ1QsIFdlYlBhZ2VOYW1lc3BhY2UqLCBXZWJQYWdlR3JvdXAqLCBIV05EIHBhcmVu
dFdpbmRvdyk7CisgICAgV2ViVmlldyhSRUNULCBXZWJDb250ZXh0KiwgV2ViUGFnZUdyb3VwKiwg
SFdORCBwYXJlbnRXaW5kb3csIGJvb2wgdXNpbmdTaGFyZWRQcm9jZXNzKTsKKyAgICBXZWJWaWV3
KFJFQ1QsIFdlYlBhZ2VQcm94eSosIFdlYlBhZ2VHcm91cCosIEhXTkQgcGFyZW50V2luZG93KTsK
KworICAgIHZvaWQgaW5pdGlhbGl6ZShXZWJQYWdlTmFtZXNwYWNlKiwgV2ViUGFnZUdyb3VwKiwg
SFdORCBwYXJlbnRXaW5kb3cpOwogCiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJl
dHVybiBUeXBlVmlldzsgfQogCkluZGV4OiBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gNzM4ODMpCisrKyBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTQxLDggKzU0MSw2IEBACiAJCUJD
RUU5NjZEMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VFOTY2QjExMkZBRjU3MDA2QkNDMjQgLyog
QXR0YWNobWVudC5oICovOyB9OwogCQlCQ0VFOThDNjExMzMxNEQ3MDA2QkNDMjQgLyogV2ViUGFn
ZU5hbWVzcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0VFOThDNDExMzMxNEQ3MDA2QkNDMjQgLyogV2ViUGFnZU5hbWVzcGFjZS5jcHAgKi87
IH07CiAJCUJDRUU5OEM3MTEzMzE0RDcwMDZCQ0MyNCAvKiBXZWJQYWdlTmFtZXNwYWNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VFOThDNTExMzMx
NEQ3MDA2QkNDMjQgLyogV2ViUGFnZU5hbWVzcGFjZS5oICovOyB9OwotCQlCQ0VFOThDQzExMzMx
NzRDMDA2QkNDMjQgLyogV0tQYWdlTmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUU5OENBMTEzMzE3NEMwMDZCQ0MyNCAvKiBXS1Bh
Z2VOYW1lc3BhY2UuY3BwICovOyB9OwotCQlCQ0VFOThDRDExMzMxNzRDMDA2QkNDMjQgLyogV0tQ
YWdlTmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0VFOThDQjExMzMxNzRDMDA2QkNDMjQgLyogV0tQYWdlTmFtZXNwYWNlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQlCQ0YwNDlFNjExRkUy
MEY2MDBGODZBNTggLyogV0tCdW5kbGVGcmFtZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRjA0OUU0MTFGRTIwRjYwMEY4NkE1OCAvKiBX
S0J1bmRsZUZyYW1lUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUJDRjA0OUU3MTFGRTIwRjYwMEY4NkE1OCAvKiBXS0J1bmRsZVByaXZh
dGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRjA0
OUU1MTFGRTIwRjYwMEY4NkE1OCAvKiBXS0J1bmRsZVByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0Y1MDEyMTEyM0VEM0IzMDA1OTU1
QUUgLyogVGhyZWFkTGF1bmNoZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDRjUwMTFGMTIzRUQzQjMwMDU5NTVBRSAvKiBUaHJlYWRMYXVuY2hlci5o
ICovOyB9OwpAQCAtMTE5Niw4ICsxMTk0LDYgQEAKIAkJQkNFRTk2NkIxMTJGQUY1NzAwNkJDQzI0
IC8qIEF0dGFjaG1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXR0YWNo
bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0VFOThDNDExMzMxNEQ3MDA2
QkNDMjQgLyogV2ViUGFnZU5hbWVzcGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJQYWdlTmFtZXNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkNFRTk4QzUxMTMzMTRENzAwNkJDQzI0IC8qIFdlYlBhZ2VOYW1lc3BhY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGFnZU5hbWVzcGFjZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlCQ0VFOThDQTExMzMxNzRDMDA2QkNDMjQgLyogV0tQYWdl
TmFtZXNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLUGFn
ZU5hbWVzcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDRUU5OENCMTEz
MzE3NEMwMDZCQ0MyNCAvKiBXS1BhZ2VOYW1lc3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tQYWdlTmFtZXNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDRjA0OUU0MTFGRTIwRjYwMEY4NkE1OCAvKiBXS0J1bmRsZUZyYW1lUHJpdmF0ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0J1bmRsZUZyYW1lUHJpdmF0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0YwNDlFNTExRkUyMEY2MDBGODZBNTggLyog
V0tCdW5kbGVQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVu
ZGxlUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0YwNEM4QzExRkY5
QjdEMDBGODZBNTggLyogQVBJT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFQSU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk3MCw4ICsx
OTY2LDYgQEAKIAkJCQlCQ0Q1OTdENTExMkI1NkRDMDBFQzhDMjMgLyogV0tQYWdlLmggKi8sCiAJ
CQkJQkM3QjYzMzYxMkE0NUFCQTAwRDE3NEE0IC8qIFdLUGFnZUdyb3VwLmNwcCAqLywKIAkJCQlC
QzdCNjMzNTEyQTQ1QUJBMDBEMTc0QTQgLyogV0tQYWdlR3JvdXAuaCAqLywKLQkJCQlCQ0VFOThD
QTExMzMxNzRDMDA2QkNDMjQgLyogV0tQYWdlTmFtZXNwYWNlLmNwcCAqLywKLQkJCQlCQ0VFOThD
QjExMzMxNzRDMDA2QkNDMjQgLyogV0tQYWdlTmFtZXNwYWNlLmggKi8sCiAJCQkJQkMxNzc0NjQx
MThCOUZGNDAwN0Q5RTlBIC8qIFdLUGFnZVByaXZhdGUuaCAqLywKIAkJCQlCQ0Q1OTdDRjExMkI1
NkFDMDBFQzhDMjMgLyogV0tQcmVmZXJlbmNlcy5jcHAgKi8sCiAJCQkJQkNENTk3Q0UxMTJCNTZB
QzAwRUM4QzIzIC8qIFdLUHJlZmVyZW5jZXMuaCAqLywKQEAgLTI1MTAsNyArMjUwNCw2IEBACiAJ
CQkJQkNCOUY2QTUxMTIzREQwRDAwQTEzN0UwIC8qIFdLRnJhbWVQb2xpY3lMaXN0ZW5lci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkNGNjlGQTkxMTc2RDFDQjAwNDcxQTUyIC8qIFdLTmF2aWdhdGlv
bkRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDU5N0Q3MTEyQjU2REMwMEVDOEMyMyAvKiBX
S1BhZ2UuaCBpbiBIZWFkZXJzICovLAotCQkJCUJDRUU5OENEMTEzMzE3NEMwMDZCQ0MyNCAvKiBX
S1BhZ2VOYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTc3NDY1MTE4QjlGRjQwMDdE
OUU5QSAvKiBXS1BhZ2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0Q1OTdEMDExMkI1
NkFDMDBFQzhDMjMgLyogV0tQcmVmZXJlbmNlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzYyQjc0
OEQxMjBCQzc1QzAwODE5MzM5IC8qIFdLUHJlZmVyZW5jZXNQcml2YXRlLmggaW4gSGVhZGVycyAq
LywKQEAgLTI5MzUsNyArMjkyOCw2IEBACiAJCQkJQkNCOUY2QTYxMTIzREQwRDAwQTEzN0UwIC8q
IFdLRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0Y2OUZBQTEx
NzZEMUNCMDA0NzFBNTIgLyogV0tOYXZpZ2F0aW9uRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQ0Q1OTdENjExMkI1NkRDMDBFQzhDMjMgLyogV0tQYWdlLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCUJDRUU5OENDMTEzMzE3NEMwMDZCQ0MyNCAvKiBXS1BhZ2VOYW1lc3BhY2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkNENTk3RDExMTJCNTZBQzAwRUM4QzIzIC8qIFdLUHJlZmVyZW5jZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4Njk5QjYxMTZBQURBQTAwMkE5MjVCIC8qIFdLVmll
dy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDMkU2RThEMTE0MTk3MTUwMEE2M0IxRSAvKiBXb3Jr
UXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBXZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagkocmV2aXNpb24gNzM4
ODMpCisrKyBXZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjIy
NSwxNCArMjIyNSw2IEBACiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KIAkJCQkJPEZpbGUKLQkJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXEFQSVxDXFdLUGFnZU5hbWVzcGFjZS5jcHAiCi0J
CQkJCQk+Ci0JCQkJCTwvRmlsZT4KLQkJCQkJPEZpbGUKLQkJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
VUlQcm9jZXNzXEFQSVxDXFdLUGFnZU5hbWVzcGFjZS5oIgotCQkJCQkJPgotCQkJCQk8L0ZpbGU+
Ci0JCQkJCTxGaWxlCiAJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xBUElcQ1xXS1Bh
Z2VQcml2YXRlLmgiCiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KSW5kZXg6IFdlYktpdDIvd2luL1dl
YktpdDJHZW5lcmF0ZWQubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL3dpbi9XZWJLaXQyR2Vu
ZXJhdGVkLm1ha2UJKHJldmlzaW9uIDczODgzKQorKysgV2ViS2l0Mi93aW4vV2ViS2l0MkdlbmVy
YXRlZC5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw2IEBAIGFsbDoKICAgICB4Y29w
eSAveSAvZCAiLi5cVUlQcm9jZXNzXEFQSVxDXFdLTmF2aWdhdGlvbkRhdGEuaCIgIiQoV0VCS0lU
T1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCiAgICAgeGNvcHkgL3kgL2QgIi4uXFVJUHJvY2Vz
c1xBUElcQ1xXS1BhZ2UuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCiAg
ICAgeGNvcHkgL3kgL2QgIi4uXFVJUHJvY2Vzc1xBUElcQ1xXS1BhZ2VHcm91cC5oIiAiJChXRUJL
SVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKLSAgICB4Y29weSAveSAvZCAiLi5cVUlQcm9j
ZXNzXEFQSVxDXFdLUGFnZU5hbWVzcGFjZS5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVc
V2ViS2l0MiIKICAgICB4Y29weSAveSAvZCAiLi5cVUlQcm9jZXNzXEFQSVxDXFdLUHJlZmVyZW5j
ZXMuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCiAgICAgeGNvcHkgL3kg
L2QgIi4uXFVJUHJvY2Vzc1xBUElcQ1xXS1ByZWZlcmVuY2VzUHJpdmF0ZS5oIiAiJChXRUJLSVRP
VVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKICAgICB4Y29weSAveSAvZCAiLi5cVUlQcm9jZXNz
XEFQSVxDXFdLUHJvdGVjdGlvblNwYWNlLmgiICIkKFdFQktJVE9VVFBVVERJUilcaW5jbHVkZVxX
ZWJLaXQyIgpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNzM4ODMpCisrKyBXZWJLaXRUb29scy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MyBAQAorMjAxMC0xMi0xMiAgU2FtIFdlaW5p
ZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIENoYW5nZSB0aGUgV2ViS2l0MiBwdWJsaWMgQVBJIHNvIHRoZXJlIGlzIG5v
IGV4cGxpY2l0IFdLUGFnZU5hbWVzcGFjZSBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwODk4CisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9t
YWMvQXBwRGVsZWdhdGUuaDoKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUu
bToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIuaDoK
KyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubToKKyAg
ICAgICAgKiBNaW5pQnJvd3Nlci93aW4vQnJvd3NlclZpZXcuY3BwOgorICAgICAgICBDb252ZXJ0
IE1pbmlCcm93c2VyIHRvIG5vdCB1c2UgUGFnZU5hbWVzcGFjZXMuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi9Eb2N1bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jhc2guY3BwOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9FdmFsdWF0ZUphdmFTY3JpcHQuY3BwOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9GYWlsZWRMb2FkLmNwcDoKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRmluZC5jcHA6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0ZyYW1lTUlNRVR5cGVIVE1MLmNwcDoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRnJhbWVNSU1FVHlwZVBORy5jcHA6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0luamVjdGVkQnVuZGxlQmFzaWMu
Y3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9QYWdlTG9hZEJhc2lj
LmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUGFnZUxvYWREaWRD
aGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZS5jcHA6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyL1ByZXZlbnRFbXB0eVVzZXJBZ2VudC5jcHA6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1NwYWNlYmFyU2Nyb2xsaW5nLmNwcDoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvd2luL0FsdEtleUdlbmVyYXRlc1dNU3lz
Q29tbWFuZC5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL3dpbi9X
TUNsb3NlQ2FsbHNVSUNsaWVudENsb3NlLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL21h
Yy9QbGF0Zm9ybVdlYlZpZXdNYWMubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS93aW4vUGxh
dGZvcm1XZWJWaWV3V2luLmNwcDoKKyAgICAgICAgQ29udmVydCBUZXN0V2ViS2l0QVBJIHRvIG5v
dCB1c2UgUGFnZU5hbWVzcGFjZXMuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1BsYXRm
b3JtV2ViVmlldy5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW06CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9xdC9QbGF0Zm9ybVdlYlZpZXdRdC5jcHA6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci93aW4vUGxhdGZvcm1XZWJWaWV3V2luLmNwcDoKKyAgICAgICAgQ29u
dmVydCBXZWJLaXRUZXN0UnVubmVyIHRvIG5vdCB1c2UgUGFnZU5hbWVzcGFjZXMuCisKIDIwMTAt
MTItMTIgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBbmRlcnMgQ2FybHNzb24uCkluZGV4OiBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci9tYWMvQXBw
RGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci9tYWMvQXBw
RGVsZWdhdGUuaAkocmV2aXNpb24gNzM4ODMpCisrKyBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci9t
YWMvQXBwRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTIgKzMwLDEyIEBAIGVudW0g
UHJvY2Vzc01vZGVsIHsKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBQcm9jZXNzTW9kZWw7CiAKIEBp
bnRlcmZhY2UgQnJvd3NlckFwcERlbGVnYXRlIDogTlNPYmplY3QgPE5TQXBwbGljYXRpb25EZWxl
Z2F0ZT4gewotICAgIFByb2Nlc3NNb2RlbCBjdXJyZW50UHJvY2Vzc01vZGVsOwotICAgIFdLUGFn
ZU5hbWVzcGFjZVJlZiB0aHJlYWRQYWdlTmFtZXNwYWNlOwotICAgIFdLUGFnZU5hbWVzcGFjZVJl
ZiBwcm9jZXNzUGFnZU5hbWVzcGFjZTsKKyAgICBQcm9jZXNzTW9kZWwgX2N1cnJlbnRQcm9jZXNz
TW9kZWw7CisgICAgV0tDb250ZXh0UmVmIF90aHJlYWRDb250ZXh0OworICAgIFdLQ29udGV4dFJl
ZiBfcHJvY2Vzc0NvbnRleHQ7CiB9CiAKLS0gKFdLUGFnZU5hbWVzcGFjZVJlZilnZXRDdXJyZW50
UGFnZU5hbWVzcGFjZTsKKy0gKFdLQ29udGV4dFJlZilnZXRDdXJyZW50Q29udGV4dDsKIAogLSAo
SUJBY3Rpb24pc2V0U2hhcmVkUHJvY2Vzc1Byb2Nlc3NNb2RlbDooaWQpc2VuZGVyOwogLSAoSUJB
Y3Rpb24pc2V0U2hhcmVkVGhyZWFkUHJvY2Vzc01vZGVsOihpZClzZW5kZXI7CkluZGV4OiBXZWJL
aXRUb29scy9NaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9NaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubQkocmV2aXNpb24gNzM4ODMpCisr
KyBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubQkod29ya2luZyBjb3B5
KQpAQCAtMTE0LDkgKzExNCw5IEBAIC0gKGlkKWluaXQKICAgICBzZWxmID0gW3N1cGVyIGluaXRd
OwogICAgIGlmIChzZWxmKSB7CiAgICAgICAgIGlmIChbTlNFdmVudCBtb2RpZmllckZsYWdzXSAm
IE5TU2hpZnRLZXlNYXNrKQotICAgICAgICAgICAgY3VycmVudFByb2Nlc3NNb2RlbCA9IGtQcm9j
ZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlUaHJlYWQ7CisgICAgICAgICAgICBfY3VycmVudFByb2Nl
c3NNb2RlbCA9IGtQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlUaHJlYWQ7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIGN1cnJlbnRQcm9jZXNzTW9kZWwgPSBrUHJvY2Vzc01vZGVsU2hhcmVk
U2Vjb25kYXJ5UHJvY2VzczsKKyAgICAgICAgICAgIF9jdXJyZW50UHJvY2Vzc01vZGVsID0ga1By
b2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3M7CiAKICAgICAgICAgV0tDb250ZXh0SGlz
dG9yeUNsaWVudCBoaXN0b3J5Q2xpZW50ID0gewogICAgICAgICAgICAgMCwKQEAgLTEyOCwxNyAr
MTI4LDE0IEBAIC0gKGlkKWluaXQKICAgICAgICAgICAgIHBvcHVsYXRlVmlzaXRlZExpbmtzCiAg
ICAgICAgIH07CiAKLSAgICAgICAgV0tDb250ZXh0UmVmIHRocmVhZENvbnRleHQgPSBXS0NvbnRl
eHRHZXRTaGFyZWRUaHJlYWRDb250ZXh0KCk7Ci0gICAgICAgIFdLQ29udGV4dFNldEhpc3RvcnlD
bGllbnQodGhyZWFkQ29udGV4dCwgJmhpc3RvcnlDbGllbnQpOwotICAgICAgICBXS0NvbnRleHRT
ZXRDYWNoZU1vZGVsKHRocmVhZENvbnRleHQsIGtXS0NhY2hlTW9kZWxQcmltYXJ5V2ViQnJvd3Nl
cik7Ci0KLSAgICAgICAgdGhyZWFkUGFnZU5hbWVzcGFjZSA9IFdLUGFnZU5hbWVzcGFjZUNyZWF0
ZSh0aHJlYWRDb250ZXh0KTsKLSAgICAgICAgV0tSZWxlYXNlKHRocmVhZENvbnRleHQpOworICAg
ICAgICBfdGhyZWFkQ29udGV4dCA9IFdLQ29udGV4dEdldFNoYXJlZFRocmVhZENvbnRleHQoKTsK
KyAgICAgICAgV0tDb250ZXh0U2V0SGlzdG9yeUNsaWVudChfdGhyZWFkQ29udGV4dCwgJmhpc3Rv
cnlDbGllbnQpOworICAgICAgICBXS0NvbnRleHRTZXRDYWNoZU1vZGVsKF90aHJlYWRDb250ZXh0
LCBrV0tDYWNoZU1vZGVsUHJpbWFyeVdlYkJyb3dzZXIpOwogCiAgICAgICAgIENGU3RyaW5nUmVm
IGJ1bmRsZVBhdGhDRiA9IChDRlN0cmluZ1JlZilbW05TQnVuZGxlIG1haW5CdW5kbGVdIHBhdGhG
b3JBdXhpbGlhcnlFeGVjdXRhYmxlOkAiV2ViQnVuZGxlLmJ1bmRsZSJdOwogICAgICAgICBXS1N0
cmluZ1JlZiBidW5kbGVQYXRoID0gV0tTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoYnVuZGxlUGF0
aENGKTsKIAotICAgICAgICBXS0NvbnRleHRSZWYgcHJvY2Vzc0NvbnRleHQgPSBXS0NvbnRleHRD
cmVhdGVXaXRoSW5qZWN0ZWRCdW5kbGVQYXRoKGJ1bmRsZVBhdGgpOworICAgICAgICBfcHJvY2Vz
c0NvbnRleHQgPSBXS0NvbnRleHRDcmVhdGVXaXRoSW5qZWN0ZWRCdW5kbGVQYXRoKGJ1bmRsZVBh
dGgpOwogICAgICAgICAKICAgICAgICAgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQgYnVu
ZGxlQ2xpZW50ID0gewogICAgICAgICAgICAgMCwgICAgICAvKiB2ZXJzaW9uICovCkBAIC0xNDYs
MTIgKzE0Myw5IEBAIC0gKGlkKWluaXQKICAgICAgICAgICAgIGRpZFJlY2lldmVNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlLAogICAgICAgICAgICAgMAogICAgICAgICB9OwotICAgICAgICBXS0Nv
bnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudChwcm9jZXNzQ29udGV4dCwgJmJ1bmRsZUNsaWVu
dCk7Ci0gICAgICAgIFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQocHJvY2Vzc0NvbnRleHQsICZo
aXN0b3J5Q2xpZW50KTsKLSAgICAgICAgV0tDb250ZXh0U2V0Q2FjaGVNb2RlbChwcm9jZXNzQ29u
dGV4dCwga1dLQ2FjaGVNb2RlbFByaW1hcnlXZWJCcm93c2VyKTsKLQotICAgICAgICBwcm9jZXNz
UGFnZU5hbWVzcGFjZSA9IFdLUGFnZU5hbWVzcGFjZUNyZWF0ZShwcm9jZXNzQ29udGV4dCk7Ci0g
ICAgICAgIFdLUmVsZWFzZShwcm9jZXNzQ29udGV4dCk7CisgICAgICAgIFdLQ29udGV4dFNldElu
amVjdGVkQnVuZGxlQ2xpZW50KF9wcm9jZXNzQ29udGV4dCwgJmJ1bmRsZUNsaWVudCk7CisgICAg
ICAgIFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQoX3Byb2Nlc3NDb250ZXh0LCAmaGlzdG9yeUNs
aWVudCk7CisgICAgICAgIFdLQ29udGV4dFNldENhY2hlTW9kZWwoX3Byb2Nlc3NDb250ZXh0LCBr
V0tDYWNoZU1vZGVsUHJpbWFyeVdlYkJyb3dzZXIpOwogCiAgICAgICAgIFdLUmVsZWFzZShidW5k
bGVQYXRoKTsKICAgICB9CkBAIC0xNjEsMzIgKzE1NSwzMiBAQCAtIChpZClpbml0CiAKIC0gKElC
QWN0aW9uKW5ld1dpbmRvdzooaWQpc2VuZGVyCiB7Ci0gICAgQnJvd3NlcldpbmRvd0NvbnRyb2xs
ZXIgKmNvbnRyb2xsZXIgPSBbW0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0
aFBhZ2VOYW1lc3BhY2U6W3NlbGYgZ2V0Q3VycmVudFBhZ2VOYW1lc3BhY2VdXTsKKyAgICBCcm93
c2VyV2luZG93Q29udHJvbGxlciAqY29udHJvbGxlciA9IFtbQnJvd3NlcldpbmRvd0NvbnRyb2xs
ZXIgYWxsb2NdIGluaXRXaXRoQ29udGV4dDpbc2VsZiBnZXRDdXJyZW50Q29udGV4dF1dOwogICAg
IFtbY29udHJvbGxlciB3aW5kb3ddIG1ha2VLZXlBbmRPcmRlckZyb250OnNlbmRlcl07CiAgICAg
CiAgICAgW2NvbnRyb2xsZXIgbG9hZFVSTFN0cmluZzpkZWZhdWx0VVJMXTsKIH0KIAotLSAoV0tQ
YWdlTmFtZXNwYWNlUmVmKWdldEN1cnJlbnRQYWdlTmFtZXNwYWNlCistIChXS0NvbnRleHRSZWYp
Z2V0Q3VycmVudENvbnRleHQKIHsKLSAgICByZXR1cm4gKGN1cnJlbnRQcm9jZXNzTW9kZWwgPT0g
a1Byb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVRocmVhZCkgPyB0aHJlYWRQYWdlTmFtZXNwYWNl
IDogcHJvY2Vzc1BhZ2VOYW1lc3BhY2U7CisgICAgcmV0dXJuIChfY3VycmVudFByb2Nlc3NNb2Rl
bCA9PSBrUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5VGhyZWFkKSA/IF90aHJlYWRDb250ZXh0
IDogX3Byb2Nlc3NDb250ZXh0OwogfQogCiAtIChCT09MKXZhbGlkYXRlTWVudUl0ZW06KE5TTWVu
dUl0ZW0gKiltZW51SXRlbQogewogICAgIGlmIChbbWVudUl0ZW0gYWN0aW9uXSA9PSBAc2VsZWN0
b3Ioc2V0U2hhcmVkUHJvY2Vzc1Byb2Nlc3NNb2RlbDopKQotICAgICAgICBbbWVudUl0ZW0gc2V0
U3RhdGU6Y3VycmVudFByb2Nlc3NNb2RlbCA9PSBrUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5
UHJvY2VzcyA/IE5TT25TdGF0ZSA6IE5TT2ZmU3RhdGVdOworICAgICAgICBbbWVudUl0ZW0gc2V0
U3RhdGU6X2N1cnJlbnRQcm9jZXNzTW9kZWwgPT0ga1Byb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFy
eVByb2Nlc3MgPyBOU09uU3RhdGUgOiBOU09mZlN0YXRlXTsKICAgICBlbHNlIGlmIChbbWVudUl0
ZW0gYWN0aW9uXSA9PSBAc2VsZWN0b3Ioc2V0U2hhcmVkVGhyZWFkUHJvY2Vzc01vZGVsOikpCi0g
ICAgICAgIFttZW51SXRlbSBzZXRTdGF0ZTpjdXJyZW50UHJvY2Vzc01vZGVsID09IGtQcm9jZXNz
TW9kZWxTaGFyZWRTZWNvbmRhcnlUaHJlYWQgPyBOU09uU3RhdGUgOiBOU09mZlN0YXRlXTsKKyAg
ICAgICAgW21lbnVJdGVtIHNldFN0YXRlOl9jdXJyZW50UHJvY2Vzc01vZGVsID09IGtQcm9jZXNz
TW9kZWxTaGFyZWRTZWNvbmRhcnlUaHJlYWQgPyBOU09uU3RhdGUgOiBOU09mZlN0YXRlXTsKICAg
ICByZXR1cm4gWUVTOwogfSAgICAgICAgCiAKIC0gKHZvaWQpX3NldFByb2Nlc3NNb2RlbDooUHJv
Y2Vzc01vZGVsKXByb2Nlc3NNb2RlbAogewotICAgIGlmIChwcm9jZXNzTW9kZWwgPT0gY3VycmVu
dFByb2Nlc3NNb2RlbCkKKyAgICBpZiAocHJvY2Vzc01vZGVsID09IF9jdXJyZW50UHJvY2Vzc01v
ZGVsKQogICAgICAgICByZXR1cm47CiAgCi0gICAgY3VycmVudFByb2Nlc3NNb2RlbCA9IHByb2Nl
c3NNb2RlbDsKKyAgICBfY3VycmVudFByb2Nlc3NNb2RlbCA9IHByb2Nlc3NNb2RlbDsKIH0KIAog
LSAoSUJBY3Rpb24pc2V0U2hhcmVkUHJvY2Vzc1Byb2Nlc3NNb2RlbDooaWQpc2VuZGVyCkBAIC0y
MDMsOCArMTk3LDggQEAgLSAoSUJBY3Rpb24pc2hvd1N0YXRpc3RpY3NXaW5kb3c6KGlkKXNlbgog
ewogICAgIHN0YXRpYyBCcm93c2VyU3RhdGlzdGljc1dpbmRvd0NvbnRyb2xsZXIqIHdpbmRvd0Nv
bnRyb2xsZXI7CiAgICAgaWYgKCF3aW5kb3dDb250cm9sbGVyKQotICAgICAgICB3aW5kb3dDb250
cm9sbGVyID0gW1tCcm93c2VyU3RhdGlzdGljc1dpbmRvd0NvbnRyb2xsZXIgYWxsb2NdIGluaXRX
aXRoVGhyZWFkZWRXS0NvbnRleHRSZWY6V0tQYWdlTmFtZXNwYWNlR2V0Q29udGV4dCh0aHJlYWRQ
YWdlTmFtZXNwYWNlKSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzV0tDb250ZXh0UmVm
OldLUGFnZU5hbWVzcGFjZUdldENvbnRleHQocHJvY2Vzc1BhZ2VOYW1lc3BhY2UpXTsKKyAgICAg
ICAgd2luZG93Q29udHJvbGxlciA9IFtbQnJvd3NlclN0YXRpc3RpY3NXaW5kb3dDb250cm9sbGVy
IGFsbG9jXSBpbml0V2l0aFRocmVhZGVkV0tDb250ZXh0UmVmOl90aHJlYWRDb250ZXh0CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHJvY2Vzc1dLQ29udGV4dFJlZjpfcHJvY2Vzc0NvbnRleHRdOwog
CiAgICAgW1t3aW5kb3dDb250cm9sbGVyIHdpbmRvd10gbWFrZUtleUFuZE9yZGVyRnJvbnQ6c2Vs
Zl07CiB9CkBAIC0yMjQsMTIgKzIxOCw5IEBAIC0gKHZvaWQpYXBwbGljYXRpb25XaWxsVGVybWlu
YXRlOihOU05vdGkKICAgICAgICAgICAgIFtjb250cm9sbGVyIGFwcGxpY2F0aW9uVGVybWluYXRp
bmddOwogICAgICAgICB9CiAgICAgfQotICAgIAotICAgIFdLUmVsZWFzZSh0aHJlYWRQYWdlTmFt
ZXNwYWNlKTsKLSAgICB0aHJlYWRQYWdlTmFtZXNwYWNlID0gMDsKIAotICAgIFdLUmVsZWFzZShw
cm9jZXNzUGFnZU5hbWVzcGFjZSk7Ci0gICAgcHJvY2Vzc1BhZ2VOYW1lc3BhY2UgPSAwOworICAg
IFdLUmVsZWFzZShfcHJvY2Vzc0NvbnRleHQpOworICAgIF9wcm9jZXNzQ29udGV4dCA9IDA7CiB9
CiAKIC0gKEJyb3dzZXJXaW5kb3dDb250cm9sbGVyICopZnJvbnRtb3N0QnJvd3NlcldpbmRvd0Nv
bnRyb2xsZXIKQEAgLTI2NSw3ICsyNTYsNyBAQCAtICh2b2lkKW9wZW5QYW5lbERpZEVuZDooTlNP
cGVuUGFuZWwgKilzCiAKICAgICBCcm93c2VyV2luZG93Q29udHJvbGxlciAqY29udHJvbGxlciA9
IFtzZWxmIGZyb250bW9zdEJyb3dzZXJXaW5kb3dDb250cm9sbGVyXTsKICAgICBpZiAoIWNvbnRy
b2xsZXIpIHsKLSAgICAgICAgY29udHJvbGxlciA9IFtbQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIg
YWxsb2NdIGluaXRXaXRoUGFnZU5hbWVzcGFjZTpbc2VsZiBnZXRDdXJyZW50UGFnZU5hbWVzcGFj
ZV1dOworICAgICAgICBjb250cm9sbGVyID0gW1tCcm93c2VyV2luZG93Q29udHJvbGxlciBhbGxv
Y10gaW5pdFdpdGhDb250ZXh0OltzZWxmIGdldEN1cnJlbnRDb250ZXh0XV07CiAgICAgICAgIFtb
Y29udHJvbGxlciB3aW5kb3ddIG1ha2VLZXlBbmRPcmRlckZyb250OnNlbGZdOwogICAgIH0KICAg
ICAKSW5kZXg6IFdlYktpdFRvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJv
bGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2Vy
V2luZG93Q29udHJvbGxlci5oCShyZXZpc2lvbiA3Mzg4MykKKysrIFdlYktpdFRvb2xzL01pbmlC
cm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw3ICszNCw3IEBAIEBpbnRlcmZhY2UgQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgOiBOU1cKICAg
ICAKICAgICBJQk91dGxldCBOU1dpbmRvdyAqZmluZFBhbmVsV2luZG93OwogICAgIAotICAgIFdL
UGFnZU5hbWVzcGFjZVJlZiBfcGFnZU5hbWVzcGFjZTsKKyAgICBXS0NvbnRleHRSZWYgX2NvbnRl
eHQ7CiAgICAgV0tWaWV3ICpfd2ViVmlldzsKICAgICBCT09MIF96b29tVGV4dE9ubHk7CiB9CkBA
IC00Nyw3ICs0Nyw3IEBAIEBpbnRlcmZhY2UgQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgOiBOU1cK
IC0gKElCQWN0aW9uKXNob3dIaWRlV2ViVmlldzooaWQpc2VuZGVyOwogLSAoSUJBY3Rpb24pcmVt
b3ZlUmVpbnNlcnRXZWJWaWV3OihpZClzZW5kZXI7CiAKLS0gKGlkKWluaXRXaXRoUGFnZU5hbWVz
cGFjZTooV0tQYWdlTmFtZXNwYWNlUmVmKXBhZ2VOYW1lc3BhY2U7CistIChpZClpbml0V2l0aENv
bnRleHQ6KFdLQ29udGV4dFJlZiljb250ZXh0OwogLSAodm9pZClsb2FkVVJMU3RyaW5nOihOU1N0
cmluZyAqKXVybFN0cmluZzsKIC0gKHZvaWQpYXBwbGljYXRpb25UZXJtaW5hdGluZzsKIApJbmRl
eDogV2ViS2l0VG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dD
b250cm9sbGVyLm0JKHJldmlzaW9uIDczODgzKQorKysgV2ViS2l0VG9vbHMvTWluaUJyb3dzZXIv
bWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0JKHdvcmtpbmcgY29weSkKQEAgLTQzLDEwICs0
MywxMCBAQCAtICh2b2lkKWRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtCiAKIEBpbXBs
ZW1lbnRhdGlvbiBCcm93c2VyV2luZG93Q29udHJvbGxlcgogCi0tIChpZClpbml0V2l0aFBhZ2VO
YW1lc3BhY2U6KFdLUGFnZU5hbWVzcGFjZVJlZilwYWdlTmFtZXNwYWNlCistIChpZClpbml0V2l0
aENvbnRleHQ6KFdLQ29udGV4dFJlZiljb250ZXh0CiB7CiAgICAgaWYgKChzZWxmID0gW3N1cGVy
IGluaXRXaXRoV2luZG93TmliTmFtZTpAIkJyb3dzZXJXaW5kb3ciXSkpIHsKLSAgICAgICAgX3Bh
Z2VOYW1lc3BhY2UgPSBXS1JldGFpbihwYWdlTmFtZXNwYWNlKTsKKyAgICAgICAgX2NvbnRleHQg
PSBXS1JldGFpbihjb250ZXh0KTsKICAgICAgICAgX3pvb21UZXh0T25seSA9IE5POwogICAgIH0K
ICAgICAKQEAgLTU1LDcgKzU1LDcgQEAgLSAoaWQpaW5pdFdpdGhQYWdlTmFtZXNwYWNlOihXS1Bh
Z2VOYW1lcwogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBhc3NlcnQoIV9wYWdlTmFtZXNwYWNl
KTsKKyAgICBhc3NlcnQoIV9jb250ZXh0KTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKQEAg
LTE1Nyw4ICsxNTcsOCBAQCAtIChCT09MKXdpbmRvd1Nob3VsZENsb3NlOihpZClzZW5kZXIKIAog
LSAodm9pZCl3aW5kb3dXaWxsQ2xvc2U6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCiB7
Ci0gICAgV0tSZWxlYXNlKF9wYWdlTmFtZXNwYWNlKTsKLSAgICBfcGFnZU5hbWVzcGFjZSA9IDA7
CisgICAgV0tSZWxlYXNlKF9jb250ZXh0KTsKKyAgICBfY29udGV4dCA9IDA7CiB9CiAKIC0gKHZv
aWQpYXBwbGljYXRpb25UZXJtaW5hdGluZwpAQCAtMzgwLDcgKzM4MCw3IEBAIHN0YXRpYyB2b2lk
IGRlY2lkZVBvbGljeUZvck1JTUVUeXBlKFdLUGEKIHN0YXRpYyBXS1BhZ2VSZWYgY3JlYXRlTmV3
UGFnZShXS1BhZ2VSZWYgcGFnZSwgV0tEaWN0aW9uYXJ5UmVmIGZlYXR1cmVzLCBXS0V2ZW50TW9k
aWZpZXJzIG1vZGlmaWVycywgV0tFdmVudE1vdXNlQnV0dG9uIGJ1dHRvbiwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKIHsKICAgICBMT0coQCJjcmVhdGVOZXdQYWdlIik7Ci0gICAgQnJvd3Nlcldp
bmRvd0NvbnRyb2xsZXIgKmNvbnRyb2xsZXIgPSBbW0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyIGFs
bG9jXSBpbml0V2l0aFBhZ2VOYW1lc3BhY2U6V0tQYWdlR2V0UGFnZU5hbWVzcGFjZShwYWdlKV07
CisgICAgQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgKmNvbnRyb2xsZXIgPSBbW0Jyb3dzZXJXaW5k
b3dDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aENvbnRleHQ6V0tQYWdlR2V0Q29udGV4dChwYWdl
KV07CiAgICAgW2NvbnRyb2xsZXIgbG9hZFdpbmRvd107CiAKICAgICByZXR1cm4gY29udHJvbGxl
ci0+X3dlYlZpZXcucGFnZVJlZjsKQEAgLTUzNyw3ICs1MzcsNyBAQCBzdGF0aWMgYm9vbCBydW5C
ZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoCiAKIC0gKHZvaWQpYXdha2VGcm9tTmliCiB7Ci0gICAg
X3dlYlZpZXcgPSBbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpbY29udGFpbmVyVmlldyBm
cmFtZV0gcGFnZU5hbWVzcGFjZVJlZjpfcGFnZU5hbWVzcGFjZV07CisgICAgX3dlYlZpZXcgPSBb
W1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpbY29udGFpbmVyVmlldyBmcmFtZV0gY29udGV4
dFJlZjpfY29udGV4dF07CiAKICAgICBbY29udGFpbmVyVmlldyBhZGRTdWJ2aWV3Ol93ZWJWaWV3
XTsKICAgICBbX3dlYlZpZXcgc2V0RnJhbWU6W2NvbnRhaW5lclZpZXcgZnJhbWVdXTsKSW5kZXg6
IFdlYktpdFRvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdFRvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cuY3BwCShyZXZpc2lv
biA3Mzg4MykKKysrIFdlYktpdFRvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw2IEBACiAKICNpbmNsdWRlICJCcm93c2VyV2lu
ZG93LmgiCiAKLSNpbmNsdWRlICJXS1BhZ2VOYW1lc3BhY2UuaCIKLQogQnJvd3NlcldpbmRvdzo6
QnJvd3NlcldpbmRvdyhRR3JhcGhpY3NXS1ZpZXc6OkJhY2tpbmdTdG9yZVR5cGUgdHlwZSkKICAg
ICA6IG1fYmFja2luZ1N0b3JlVHlwZSh0eXBlKQogewpJbmRleDogV2ViS2l0VG9vbHMvTWluaUJy
b3dzZXIvd2luL0Jyb3dzZXJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9NaW5p
QnJvd3Nlci93aW4vQnJvd3NlclZpZXcuY3BwCShyZXZpc2lvbiA3Mzg4MykKKysrIFdlYktpdFRv
b2xzL01pbmlCcm93c2VyL3dpbi9Ccm93c2VyVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkw
LDkgKzkwLDcgQEAgdm9pZCBCcm93c2VyVmlldzo6Y3JlYXRlKFJFQ1Qgd2ViVmlld1JlYwogICAg
IGVsc2UKICAgICAgICAgY29udGV4dCA9IFdLQ29udGV4dEdldFNoYXJlZFByb2Nlc3NDb250ZXh0
KCk7CiAKLSAgICBXS1BhZ2VOYW1lc3BhY2VSZWYgcGFnZU5hbWVzcGFjZSA9IFdLUGFnZU5hbWVz
cGFjZUNyZWF0ZShjb250ZXh0KTsKLQotICAgIG1fd2ViVmlldyA9IFdLVmlld0NyZWF0ZSh3ZWJW
aWV3UmVjdCwgcGFnZU5hbWVzcGFjZSwgMCwgcGFyZW50V2luZG93LT53aW5kb3coKSk7CisgICAg
bV93ZWJWaWV3ID0gV0tWaWV3Q3JlYXRlKHdlYlZpZXdSZWN0LCBjb250ZXh0LCAwLCBwYXJlbnRX
aW5kb3ctPndpbmRvdygpKTsKIAogICAgIFdLUGFnZVVJQ2xpZW50IHVpQ2xpZW50ID0gewogICAg
ICAgICAwLCAgICAgICAgICAgICAgLyogdmVyc2lvbiAqLwpJbmRleDogV2ViS2l0VG9vbHMvVGVz
dFdlYktpdEFQSS9QbGF0Zm9ybVdlYlZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9U
ZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oCShyZXZpc2lvbiA3Mzg4MykKKysrIFdlYktp
dFRvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAg
LTUxLDcgKzUxLDggQEAgY2xhc3MgV2luZG93TWVzc2FnZU9ic2VydmVyOwogCiBjbGFzcyBQbGF0
Zm9ybVdlYlZpZXcgewogcHVibGljOgotICAgIFBsYXRmb3JtV2ViVmlldyhXS1BhZ2VOYW1lc3Bh
Y2VSZWYsIFdLUGFnZUdyb3VwUmVmID0gMCk7CisgICAgUGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4
dFJlZiwgV0tQYWdlR3JvdXBSZWYgPSAwKTsKKyAgICBQbGF0Zm9ybVdlYlZpZXcoV0tQYWdlUmVm
LCBXS1BhZ2VHcm91cFJlZiA9IDApOwogICAgIH5QbGF0Zm9ybVdlYlZpZXcoKTsKIAogICAgIFdL
UGFnZVJlZiBwYWdlKCk7CkluZGV4OiBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDIvRG9jdW1lbnRTdGFydFVzZXJTY3JpcHRBbGVydENyYXNoLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRG9jdW1lbnRTdGFydFVz
ZXJTY3JpcHRBbGVydENyYXNoLmNwcAkocmV2aXNpb24gNzM4ODMpCisrKyBXZWJLaXRUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRG9jdW1lbnRTdGFydFVzZXJTY3JpcHRBbGVydENy
YXNoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsOCArNDgsNyBAQCBURVNUKFdlYktpdDIsIERv
Y3VtZW50U3RhcnRVc2VyU2NyaXB0QWxlCiAgICAgV0tSZXRhaW5QdHI8V0tQYWdlR3JvdXBSZWY+
IHBhZ2VHcm91cChBZG9wdFdLLCBXS1BhZ2VHcm91cENyZWF0ZVdpdGhJZGVudGlmaWVyKFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJEb2N1bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jh
c2hUZXN0UGFnZUdyb3VwIikpKTsgCiAKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNv
bnRleHQoQWRvcHRXSywgVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgi
RG9jdW1lbnRTdGFydFVzZXJTY3JpcHRBbGVydENyYXNoVGVzdCIsIHBhZ2VHcm91cC5nZXQoKSkp
OwotICAgIFdLUmV0YWluUHRyPFdLUGFnZU5hbWVzcGFjZVJlZj4gcGFnZU5hbWVzcGFjZShBZG9w
dFdLLCBXS1BhZ2VOYW1lc3BhY2VDcmVhdGUoY29udGV4dC5nZXQoKSkpOwotICAgIFBsYXRmb3Jt
V2ViVmlldyB3ZWJWaWV3KHBhZ2VOYW1lc3BhY2UuZ2V0KCksIHBhZ2VHcm91cC5nZXQoKSk7Cisg
ICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSwgcGFnZUdyb3VwLmdldCgp
KTsKIAogICAgIFdLUGFnZVVJQ2xpZW50IHVpQ2xpZW50OwogICAgIG1lbXNldCgmdWlDbGllbnQs
IDAsIHNpemVvZih1aUNsaWVudCkpOwpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyL0V2YWx1YXRlSmF2YVNjcmlwdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0V2YWx1YXRlSmF2YVNjcmlwdC5jcHAJ
KHJldmlzaW9uIDczODgzKQorKysgV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyL0V2YWx1YXRlSmF2YVNjcmlwdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDggKzQ5LDcg
QEAgc3RhdGljIHZvaWQgZGlkUnVuSmF2YVNjcmlwdChXS1N0cmluZ1JlZgogVEVTVChXZWJLaXQy
LCBFdmFsdWF0ZUphdmFTY3JpcHRUaGF0VGhyb3dzQW5FeGNlcHRpb24pCiB7CiAgICAgV0tSZXRh
aW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFdLQ29udGV4dENyZWF0ZSgpKTsK
LSAgICBXS1JldGFpblB0cjxXS1BhZ2VOYW1lc3BhY2VSZWY+IHBhZ2VOYW1lc3BhY2UoQWRvcHRX
SywgV0tQYWdlTmFtZXNwYWNlQ3JlYXRlKGNvbnRleHQuZ2V0KCkpKTsKLSAgICBQbGF0Zm9ybVdl
YlZpZXcgd2ViVmlldyhwYWdlTmFtZXNwYWNlLmdldCgpKTsKKyAgICBQbGF0Zm9ybVdlYlZpZXcg
d2ViVmlldyhjb250ZXh0LmdldCgpKTsKIAogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBq
YXZhU2NyaXB0U3RyaW5nKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJ0
aHJvdyAnSGVsbG8nIikpOwogICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh3ZWJW
aWV3LnBhZ2UoKSwgamF2YVNjcmlwdFN0cmluZy5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oMHgxMjM0NTc4KSwgZGlkUnVuSmF2YVNjcmlwdCk7CkluZGV4OiBXZWJLaXRUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRmFpbGVkTG9hZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0ZhaWxlZExvYWQuY3BwCShyZXZp
c2lvbiA3Mzg4MykKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9G
YWlsZWRMb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksOCArNDksNyBAQCBzdGF0aWMgdm9p
ZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVyCiBURVNUKFdlYktpdDIsIEZhaWxlZExvYWQp
CiB7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFdLQ29u
dGV4dENyZWF0ZSgpKTsKLSAgICBXS1JldGFpblB0cjxXS1BhZ2VOYW1lc3BhY2VSZWY+IHBhZ2VO
YW1lc3BhY2UoQWRvcHRXSywgV0tQYWdlTmFtZXNwYWNlQ3JlYXRlKGNvbnRleHQuZ2V0KCkpKTsK
LSAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhwYWdlTmFtZXNwYWNlLmdldCgpKTsKKyAgICBQ
bGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgpKTsKIAogICAgIFdLUGFnZUxvYWRl
ckNsaWVudCBsb2FkZXJDbGllbnQ7CiAgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVv
Zihsb2FkZXJDbGllbnQpKTsKSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9GaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvRmluZC5jcHAJKHJldmlzaW9uIDczODgzKQorKysgV2ViS2l0VG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0ZpbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MSw5ICs1MSw3IEBAIHN0YXRpYyB2b2lkIGRpZENvdW50U3RyaW5nTWF0Y2hlcyhXS1BhZ2UKIFRF
U1QoV2ViS2l0MiwgRmluZCkKIHsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRl
eHQoQWRvcHRXSywgV0tDb250ZXh0Q3JlYXRlKCkpOwotICAgIFdLUmV0YWluUHRyPFdLUGFnZU5h
bWVzcGFjZVJlZj4gcGFnZU5hbWVzcGFjZShBZG9wdFdLLCBXS1BhZ2VOYW1lc3BhY2VDcmVhdGUo
Y29udGV4dC5nZXQoKSkpOwotICAgIAotICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KHBhZ2VO
YW1lc3BhY2UuZ2V0KCkpOworICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0
KCkpOwogICAgIAogICAgIFdLUGFnZUxvYWRlckNsaWVudCBsb2FkZXJDbGllbnQ7CiAgICAgbWVt
c2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKSW5kZXg6IFdlYktp
dFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9GcmFtZU1JTUVUeXBlSFRNTC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0Zy
YW1lTUlNRVR5cGVIVE1MLmNwcAkocmV2aXNpb24gNzM4ODMpCisrKyBXZWJLaXRUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRnJhbWVNSU1FVHlwZUhUTUwuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01Nyw4ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShX
S1BhZ2UKIFRFU1QoV2ViS2l0MiwgRnJhbWVNSU1FVHlwZUhUTUwpCiB7CiAgICAgV0tSZXRhaW5Q
dHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFdLQ29udGV4dENyZWF0ZSgpKTsKLSAg
ICBXS1JldGFpblB0cjxXS1BhZ2VOYW1lc3BhY2VSZWY+IHBhZ2VOYW1lc3BhY2UoQWRvcHRXSywg
V0tQYWdlTmFtZXNwYWNlQ3JlYXRlKGNvbnRleHQuZ2V0KCkpKTsKLSAgICBQbGF0Zm9ybVdlYlZp
ZXcgd2ViVmlldyhwYWdlTmFtZXNwYWNlLmdldCgpKTsKKyAgICBQbGF0Zm9ybVdlYlZpZXcgd2Vi
Vmlldyhjb250ZXh0LmdldCgpKTsKIAogICAgIFdLUGFnZUxvYWRlckNsaWVudCBsb2FkZXJDbGll
bnQ7CiAgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsK
SW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9GcmFtZU1JTUVU
eXBlUE5HLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvRnJhbWVNSU1FVHlwZVBORy5jcHAJKHJldmlzaW9uIDczODgzKQorKysgV2ViS2l0
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0ZyYW1lTUlNRVR5cGVQTkcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01Nyw4ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRG
b3JGcmFtZShXS1BhZ2UKIFRFU1QoV2ViS2l0MiwgRnJhbWVNSU1FVHlwZVBORykKIHsKICAgICBX
S1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgV0tDb250ZXh0Q3JlYXRl
KCkpOwotICAgIFdLUmV0YWluUHRyPFdLUGFnZU5hbWVzcGFjZVJlZj4gcGFnZU5hbWVzcGFjZShB
ZG9wdFdLLCBXS1BhZ2VOYW1lc3BhY2VDcmVhdGUoY29udGV4dC5nZXQoKSkpOwotICAgIFBsYXRm
b3JtV2ViVmlldyB3ZWJWaWV3KHBhZ2VOYW1lc3BhY2UuZ2V0KCkpOworICAgIFBsYXRmb3JtV2Vi
VmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwogCiAgICAgV0tQYWdlTG9hZGVyQ2xpZW50IGxv
YWRlckNsaWVudDsKICAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRlckNs
aWVudCkpOwpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0lu
amVjdGVkQnVuZGxlQmFzaWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9JbmplY3RlZEJ1bmRsZUJhc2ljLmNwcAkocmV2aXNpb24gNzM4
ODMpCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvSW5qZWN0ZWRC
dW5kbGVCYXNpYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDYgQEAgc3RhdGljIHZv
aWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZQogVEVTVChXZWJLaXQyLCBJbmplY3RlZEJ1
bmRsZUJhc2ljKQogewogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9w
dFdLLCBVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJJbmplY3RlZEJ1
bmRsZUJhc2ljVGVzdCIpKTsKLSAgICBXS1JldGFpblB0cjxXS1BhZ2VOYW1lc3BhY2VSZWY+IHBh
Z2VOYW1lc3BhY2UoQWRvcHRXSywgV0tQYWdlTmFtZXNwYWNlQ3JlYXRlKGNvbnRleHQuZ2V0KCkp
KTsKIAogICAgIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50IGluamVjdGVkQnVuZGxlQ2xp
ZW50OwogICAgIG1lbXNldCgmaW5qZWN0ZWRCdW5kbGVDbGllbnQsIDAsIHNpemVvZihpbmplY3Rl
ZEJ1bmRsZUNsaWVudCkpOwpAQCAtNjIsNyArNjEsNyBAQCBURVNUKFdlYktpdDIsIEluamVjdGVk
QnVuZGxlQmFzaWMpCiAgICAgaW5qZWN0ZWRCdW5kbGVDbGllbnQuZGlkUmVjZWl2ZU1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGUgPSBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZTsK
ICAgICBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb250ZXh0LmdldCgpLCAmaW5q
ZWN0ZWRCdW5kbGVDbGllbnQpOwogIAotICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KHBhZ2VO
YW1lc3BhY2UuZ2V0KCkpOworICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0
KCkpOwogCiAgICAgV0tQYWdlTG9hZGVyQ2xpZW50IGxvYWRlckNsaWVudDsKICAgICBtZW1zZXQo
JmxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRlckNsaWVudCkpOwpJbmRleDogV2ViS2l0VG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1BhZ2VMb2FkQmFzaWMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9QYWdlTG9hZEJh
c2ljLmNwcAkocmV2aXNpb24gNzM4ODMpCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvUGFnZUxvYWRCYXNpYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMyw5ICsx
MTMsNyBAQCBURVNUKFdlYktpdDIsIFBhZ2VMb2FkQmFzaWMpCiAgICAgU3RhdGUgc3RhdGU7CiAK
ICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgV0tDb250ZXh0
Q3JlYXRlKCkpOwotICAgIFdLUmV0YWluUHRyPFdLUGFnZU5hbWVzcGFjZVJlZj4gcGFnZU5hbWVz
cGFjZShBZG9wdFdLLCBXS1BhZ2VOYW1lc3BhY2VDcmVhdGUoY29udGV4dC5nZXQoKSkpOwotIAot
ICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KHBhZ2VOYW1lc3BhY2UuZ2V0KCkpOworICAgIFBs
YXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwogCiAgICAgV0tQYWdlTG9hZGVy
Q2xpZW50IGxvYWRlckNsaWVudDsKICAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9m
KGxvYWRlckNsaWVudCkpOwpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyL1BhZ2VMb2FkRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9QYWdl
TG9hZERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lLmNwcAkocmV2aXNpb24gNzM4
ODMpCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUGFnZUxvYWRE
aWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYwLDkgKzYwLDcgQEAgc3RhdGljIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvcgog
VEVTVChXZWJLaXQyLCBQYWdlTG9hZERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1l
KQogewogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBXS0Nv
bnRleHRDcmVhdGUoKSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tQYWdlTmFtZXNwYWNlUmVmPiBwYWdl
TmFtZXNwYWNlKEFkb3B0V0ssIFdLUGFnZU5hbWVzcGFjZUNyZWF0ZShjb250ZXh0LmdldCgpKSk7
Ci0KLSAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhwYWdlTmFtZXNwYWNlLmdldCgpKTsKKyAg
ICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgpKTsKIAogICAgIFdLUGFnZUxv
YWRlckNsaWVudCBsb2FkZXJDbGllbnQ7CiAgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNp
emVvZihsb2FkZXJDbGllbnQpKTsKSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi9QcmV2ZW50RW1wdHlVc2VyQWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9QcmV2ZW50RW1wdHlVc2VyQWdlbnQu
Y3BwCShyZXZpc2lvbiA3Mzg4MykKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9QcmV2ZW50RW1wdHlVc2VyQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw4
ICs0OCw3IEBAIHN0YXRpYyB2b2lkIGRpZFJ1bkphdmFTY3JpcHQoV0tTdHJpbmdSZWYKIFRFU1Qo
V2ViS2l0MiwgUHJldmVudEVtcHR5VXNlckFnZW50KQogewogICAgIFdLUmV0YWluUHRyPFdLQ29u
dGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBXS0NvbnRleHRDcmVhdGUoKSk7Ci0gICAgV0tSZXRh
aW5QdHI8V0tQYWdlTmFtZXNwYWNlUmVmPiBwYWdlTmFtZXNwYWNlKEFkb3B0V0ssIFdLUGFnZU5h
bWVzcGFjZUNyZWF0ZShjb250ZXh0LmdldCgpKSk7Ci0gICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZp
ZXcocGFnZU5hbWVzcGFjZS5nZXQoKSk7CisgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29u
dGV4dC5nZXQoKSk7CiAKICAgICBXS1BhZ2VTZXRDdXN0b21Vc2VyQWdlbnQod2ViVmlldy5wYWdl
KCksIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCIiKSk7CiAgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IGphdmFTY3JpcHRTdHJpbmcoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIm5hdmlnYXRvci51c2VyQWdlbnQiKSk7CkluZGV4OiBXZWJLaXRUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvU3BhY2ViYXJTY3JvbGxpbmcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9TcGFjZWJhclNj
cm9sbGluZy5jcHAJKHJldmlzaW9uIDczODgzKQorKysgV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL1NwYWNlYmFyU2Nyb2xsaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzksOSArNzksNyBAQCBzdGF0aWMgYm9vbCBydW5KU1Rlc3QoV0tQYWdlUmVmIHBhZ2UsIGNvCiBU
RVNUKFdlYktpdDIsIFNwYWNlYmFyU2Nyb2xsaW5nKQogewogICAgIFdLUmV0YWluUHRyPFdLQ29u
dGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBXS0NvbnRleHRDcmVhdGUoKSk7Ci0gICAgV0tSZXRh
aW5QdHI8V0tQYWdlTmFtZXNwYWNlUmVmPiBwYWdlTmFtZXNwYWNlKEFkb3B0V0ssIFdLUGFnZU5h
bWVzcGFjZUNyZWF0ZShjb250ZXh0LmdldCgpKSk7Ci0KLSAgICBQbGF0Zm9ybVdlYlZpZXcgd2Vi
VmlldyhwYWdlTmFtZXNwYWNlLmdldCgpKTsKKyAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhj
b250ZXh0LmdldCgpKTsKIAogICAgIFdLUGFnZUxvYWRlckNsaWVudCBsb2FkZXJDbGllbnQ7CiAg
ICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKSW5kZXg6
IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi93aW4vQWx0S2V5R2VuZXJh
dGVzV01TeXNDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDIvd2luL0FsdEtleUdlbmVyYXRlc1dNU3lzQ29tbWFuZC5jcHAJKHJl
dmlzaW9uIDczODgzKQorKysgV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L3dpbi9BbHRLZXlHZW5lcmF0ZXNXTVN5c0NvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
MSw5ICs2MSw3IEBAIHN0YXRpYyB2b2lkIGRpZE5vdEhhbmRsZUtleUV2ZW50Q2FsbGJhY2sKIFRF
U1QoV2ViS2l0MiwgQWx0S2V5R2VuZXJhdGVzV01TeXNDb21tYW5kKQogewogICAgIFdLUmV0YWlu
UHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBXS0NvbnRleHRDcmVhdGUoKSk7Ci0g
ICAgV0tSZXRhaW5QdHI8V0tQYWdlTmFtZXNwYWNlUmVmPiBwYWdlTmFtZXNwYWNlKEFkb3B0V0ss
IFdLUGFnZU5hbWVzcGFjZUNyZWF0ZShjb250ZXh0LmdldCgpKSk7Ci0KLSAgICBQbGF0Zm9ybVdl
YlZpZXcgd2ViVmlldyhwYWdlTmFtZXNwYWNlLmdldCgpKTsKKyAgICBQbGF0Zm9ybVdlYlZpZXcg
d2ViVmlldyhjb250ZXh0LmdldCgpKTsKIAogICAgIFdLUGFnZVVJQ2xpZW50IHVpQ2xpZW50Owog
ICAgIG1lbXNldCgmdWlDbGllbnQsIDAsIHNpemVvZih1aUNsaWVudCkpOwpJbmRleDogV2ViS2l0
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL3dpbi9XTUNsb3NlQ2FsbHNVSUNsaWVu
dENsb3NlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvd2luL1dNQ2xvc2VDYWxsc1VJQ2xpZW50Q2xvc2UuY3BwCShyZXZpc2lvbiA3Mzg4
MykKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi93aW4vV01DbG9z
ZUNhbGxzVUlDbGllbnRDbG9zZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDkgKzQxLDcgQEAg
c3RhdGljIHZvaWQgY2xvc2UoV0tQYWdlUmVmLCBjb25zdCB2b2lkKgogVEVTVChXZWJLaXQyLCBX
TUNsb3NlQ2FsbHNVSUNsaWVudENsb3NlKQogewogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJl
Zj4gY29udGV4dChBZG9wdFdLLCBXS0NvbnRleHRDcmVhdGUoKSk7Ci0gICAgV0tSZXRhaW5QdHI8
V0tQYWdlTmFtZXNwYWNlUmVmPiBwYWdlTmFtZXNwYWNlKEFkb3B0V0ssIFdLUGFnZU5hbWVzcGFj
ZUNyZWF0ZShjb250ZXh0LmdldCgpKSk7Ci0KLSAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhw
YWdlTmFtZXNwYWNlLmdldCgpKTsKKyAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0
LmdldCgpKTsKIAogICAgIFdLUGFnZVVJQ2xpZW50IHVpQ2xpZW50OwogICAgIG1lbXNldCgmdWlD
bGllbnQsIDAsIHNpemVvZih1aUNsaWVudCkpOwpJbmRleDogV2ViS2l0VG9vbHMvVGVzdFdlYktp
dEFQSS9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L1Rlc3RXZWJLaXRBUEkvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQkocmV2aXNpb24gNzM4ODMp
CisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI5LDEwICsyOSwyNCBAQAogCiBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7CiAKLVBsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLUGFnZU5hbWVzcGFj
ZVJlZiBwYWdlTmFtZXNwYWNlUmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCitQbGF0
Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQ
YWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQogewogICAgIE5TUmVjdCByZWN0ID0gTlNNYWtlUmVj
dCgwLCAwLCA4MDAsIDYwMCk7Ci0gICAgbV92aWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6cmVjdCBwYWdlTmFtZXNwYWNlUmVmOnBhZ2VOYW1lc3BhY2VSZWYgcGFnZUdyb3VwUmVm
OnBhZ2VHcm91cFJlZl07CisgICAgbV92aWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6cmVjdCBjb250ZXh0UmVmOmNvbnRleHRSZWYgcGFnZUdyb3VwUmVmOnBhZ2VHcm91cFJlZl07
CisKKyAgICBOU1JlY3Qgd2luZG93UmVjdCA9IE5TT2Zmc2V0UmVjdChyZWN0LCAtMTAwMDAsIFtb
W05TU2NyZWVuIHNjcmVlbnNdIG9iamVjdEF0SW5kZXg6MF0gZnJhbWVdLnNpemUuaGVpZ2h0IC0g
cmVjdC5zaXplLmhlaWdodCArIDEwMDAwKTsKKyAgICBtX3dpbmRvdyA9IFtbTlNXaW5kb3cgYWxs
b2NdIGluaXRXaXRoQ29udGVudFJlY3Q6d2luZG93UmVjdCBzdHlsZU1hc2s6TlNCb3JkZXJsZXNz
V2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6WUVTXTsKKyAg
ICBbbV93aW5kb3cgc2V0Q29sb3JTcGFjZTpbW05TU2NyZWVuIG1haW5TY3JlZW5dIGNvbG9yU3Bh
Y2VdXTsKKyAgICBbW21fd2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3Om1fdmlld107Cisg
ICAgW21fd2luZG93IG9yZGVyQmFjazpuaWxdOworICAgIFttX3dpbmRvdyBzZXRBdXRvZGlzcGxh
eTpOT107CisgICAgW21fd2luZG93IHNldFJlbGVhc2VkV2hlbkNsb3NlZDpOT107Cit9CisKK1Bs
YXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLUGFnZVJlZiBwYWdlUmVmLCBXS1BhZ2VH
cm91cFJlZiBwYWdlR3JvdXBSZWYpCit7CisgICAgTlNSZWN0IHJlY3QgPSBOU01ha2VSZWN0KDAs
IDAsIDgwMCwgNjAwKTsKKyAgICBtX3ZpZXcgPSBbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpyZWN0IGZvckFzc29jaWF0ZWRQYWdlUmVmOnBhZ2VSZWYgcGFnZUdyb3VwUmVmOnBhZ2VHcm91
cFJlZl07CiAKICAgICBOU1JlY3Qgd2luZG93UmVjdCA9IE5TT2Zmc2V0UmVjdChyZWN0LCAtMTAw
MDAsIFtbW05TU2NyZWVuIHNjcmVlbnNdIG9iamVjdEF0SW5kZXg6MF0gZnJhbWVdLnNpemUuaGVp
Z2h0IC0gcmVjdC5zaXplLmhlaWdodCArIDEwMDAwKTsKICAgICBtX3dpbmRvdyA9IFtbTlNXaW5k
b3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6d2luZG93UmVjdCBzdHlsZU1hc2s6TlNCb3Jk
ZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6WUVT
XTsKSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3JtV2ViVmlld1dp
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZv
cm1XZWJWaWV3V2luLmNwcAkocmV2aXNpb24gNzM4ODMpCisrKyBXZWJLaXRUb29scy9UZXN0V2Vi
S2l0QVBJL3dpbi9QbGF0Zm9ybVdlYlZpZXdXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niwx
NCArNTYsMjUgQEAgdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnJlZ2lzdGVyV2luZG93Q2xhcwogICAg
IDo6UmVnaXN0ZXJDbGFzc0V4Vygmd25kQ2xhc3MpOwogfQogCi1QbGF0Zm9ybVdlYlZpZXc6OlBs
YXRmb3JtV2ViVmlldyhXS1BhZ2VOYW1lc3BhY2VSZWYgbmFtZXNwYWNlUmVmLCBXS1BhZ2VHcm91
cFJlZiBwYWdlR3JvdXBSZWYpCisKK1BsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdL
Q29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCisgICAg
OiBtX3BhcmVudFdpbmRvd01lc3NhZ2VPYnNlcnZlcigwKQoreworICAgIHJlZ2lzdGVyV2luZG93
Q2xhc3MoKTsKKworICAgIFJFQ1Qgdmlld1JlY3QgPSB7MCwgMCwgODAwLCA2MDB9OworICAgIG1f
d2luZG93ID0gQ3JlYXRlV2luZG93RXhXKDAsIGhvc3RXaW5kb3dDbGFzc05hbWUsIEwiVGVzdFdl
YktpdEFQSSIsIFdTX09WRVJMQVBQRURXSU5ET1csIHZpZXdSZWN0LmxlZnQsIHZpZXdSZWN0LnRv
cCwgdmlld1JlY3QucmlnaHQsIHZpZXdSZWN0LmJvdHRvbSwgMCwgMCwgMCwgdGhpcyk7CisgICAg
bV92aWV3ID0gV0tWaWV3Q3JlYXRlKHZpZXdSZWN0LCBjb250ZXh0UmVmLCBwYWdlR3JvdXBSZWYs
IG1fd2luZG93KTsKK30KKworUGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tQYWdl
UmVmIHBhZ2VSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKICAgICA6IG1fcGFyZW50
V2luZG93TWVzc2FnZU9ic2VydmVyKDApCiB7CiAgICAgcmVnaXN0ZXJXaW5kb3dDbGFzcygpOwog
CiAgICAgUkVDVCB2aWV3UmVjdCA9IHswLCAwLCA4MDAsIDYwMH07CiAgICAgbV93aW5kb3cgPSBD
cmVhdGVXaW5kb3dFeFcoMCwgaG9zdFdpbmRvd0NsYXNzTmFtZSwgTCJUZXN0V2ViS2l0QVBJIiwg
V1NfT1ZFUkxBUFBFRFdJTkRPVywgdmlld1JlY3QubGVmdCwgdmlld1JlY3QudG9wLCB2aWV3UmVj
dC5yaWdodCwgdmlld1JlY3QuYm90dG9tLCAwLCAwLCAwLCB0aGlzKTsKLSAgICBtX3ZpZXcgPSBX
S1ZpZXdDcmVhdGUodmlld1JlY3QsIG5hbWVzcGFjZVJlZiwgcGFnZUdyb3VwUmVmLCBtX3dpbmRv
dyk7CisgICAgbV92aWV3ID0gV0tWaWV3Q3JlYXRlRm9yQXNzb2NpYXRlZFBhZ2Uodmlld1JlY3Qs
IHBhZ2VSZWYsIHBhZ2VHcm91cFJlZiwgbV93aW5kb3cpOwogfQogCiBQbGF0Zm9ybVdlYlZpZXc6
On5QbGF0Zm9ybVdlYlZpZXcoKQpJbmRleDogV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Q
bGF0Zm9ybVdlYlZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVu
bmVyL1BsYXRmb3JtV2ViVmlldy5oCShyZXZpc2lvbiA3Mzg4MykKKysrIFdlYktpdFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcg
KzUyLDggQEAgbmFtZXNwYWNlIFdUUiB7CiAKIGNsYXNzIFBsYXRmb3JtV2ViVmlldyB7CiBwdWJs
aWM6Ci0gICAgUGxhdGZvcm1XZWJWaWV3KFdLUGFnZU5hbWVzcGFjZVJlZiwgV0tQYWdlR3JvdXBS
ZWYpOworICAgIFBsYXRmb3JtV2ViVmlldyhXS0NvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmKTsK
KyAgICBQbGF0Zm9ybVdlYlZpZXcoV0tQYWdlUmVmLCBXS1BhZ2VHcm91cFJlZik7CiAgICAgflBs
YXRmb3JtV2ViVmlldygpOwogCiAgICAgV0tQYWdlUmVmIHBhZ2UoKTsKSW5kZXg6IFdlYktpdFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA3
Mzg4MykKKysrIFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNyArMTA2LDcgQEAgc3RhdGljIHZvaWQgY2xvc2VPdGhl
clBhZ2UoV0tQYWdlUmVmIHBhZwogCiBzdGF0aWMgV0tQYWdlUmVmIGNyZWF0ZU90aGVyUGFnZShX
S1BhZ2VSZWYgb2xkUGFnZSwgV0tEaWN0aW9uYXJ5UmVmLCBXS0V2ZW50TW9kaWZpZXJzLCBXS0V2
ZW50TW91c2VCdXR0b24sIGNvbnN0IHZvaWQqKQogewotICAgIFBsYXRmb3JtV2ViVmlldyogdmll
dyA9IG5ldyBQbGF0Zm9ybVdlYlZpZXcoV0tQYWdlR2V0UGFnZU5hbWVzcGFjZShvbGRQYWdlKSwg
V0tQYWdlR2V0UGFnZUdyb3VwKG9sZFBhZ2UpKTsKKyAgICBQbGF0Zm9ybVdlYlZpZXcqIHZpZXcg
PSBuZXcgUGxhdGZvcm1XZWJWaWV3KG9sZFBhZ2UsIFdLUGFnZUdldFBhZ2VHcm91cChvbGRQYWdl
KSk7CiAgICAgV0tQYWdlUmVmIG5ld1BhZ2UgPSB2aWV3LT5wYWdlKCk7CiAKICAgICB2aWV3LT5y
ZXNpemVUbyg4MDAsIDYwMCk7CkBAIC0yMTEsOCArMjExLDcgQEAgdm9pZCBUZXN0Q29udHJvbGxl
cjo6aW5pdGlhbGl6ZShpbnQgYXJnYwogCiAgICAgX1dLQ29udGV4dFNldEFkZGl0aW9uYWxQbHVn
aW5zRGlyZWN0b3J5KG1fY29udGV4dC5nZXQoKSwgdGVzdFBsdWdpbkRpcmVjdG9yeSgpKTsKIAot
ICAgIG1fcGFnZU5hbWVzcGFjZS5hZG9wdChXS1BhZ2VOYW1lc3BhY2VDcmVhdGUobV9jb250ZXh0
LmdldCgpKSk7Ci0gICAgbV9tYWluV2ViVmlldyA9IGFkb3B0UHRyKG5ldyBQbGF0Zm9ybVdlYlZp
ZXcobV9wYWdlTmFtZXNwYWNlLmdldCgpLCBtX3BhZ2VHcm91cC5nZXQoKSkpOworICAgIG1fbWFp
bldlYlZpZXcgPSBhZG9wdFB0cihuZXcgUGxhdGZvcm1XZWJWaWV3KG1fY29udGV4dC5nZXQoKSwg
bV9wYWdlR3JvdXAuZ2V0KCkpKTsKIAogICAgIFdLUGFnZVVJQ2xpZW50IHBhZ2VVSUNsaWVudCA9
IHsKICAgICAgICAgMCwKSW5kZXg6IFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDczODgzKQorKysgV2ViS2l0VG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw2IEBA
IHB1YmxpYzoKICAgICBXS1N0cmluZ1JlZiB0ZXN0UGx1Z2luRGlyZWN0b3J5KCkgeyByZXR1cm4g
bV90ZXN0UGx1Z2luRGlyZWN0b3J5LmdldCgpOyB9CiAKICAgICBQbGF0Zm9ybVdlYlZpZXcqIG1h
aW5XZWJWaWV3KCkgeyByZXR1cm4gbV9tYWluV2ViVmlldy5nZXQoKTsgfQotICAgIFdLUGFnZU5h
bWVzcGFjZVJlZiBwYWdlTmFtZXNwYWNlKCkgeyByZXR1cm4gbV9wYWdlTmFtZXNwYWNlLmdldCgp
OyB9CiAgICAgV0tDb250ZXh0UmVmIGNvbnRleHQoKSB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7
IH0KIAogICAgIC8vIFJ1bnMgdGhlIHJ1biBsb29wIHVudGlsIGBkb25lYCBpcyB0cnVlIG9yIHRo
ZSB0aW1lb3V0IGVsYXBzZXMuCkBAIC05Niw5ICs5NSw4IEBAIHByaXZhdGU6CiAKICAgICBPd25Q
dHI8UGxhdGZvcm1XZWJWaWV3PiBtX21haW5XZWJWaWV3OwogICAgIFdLUmV0YWluUHRyPFdLQ29u
dGV4dFJlZj4gbV9jb250ZXh0OwotICAgIFdLUmV0YWluUHRyPFdLUGFnZU5hbWVzcGFjZVJlZj4g
bV9wYWdlTmFtZXNwYWNlOwogICAgIFdLUmV0YWluUHRyPFdLUGFnZUdyb3VwUmVmPiBtX3BhZ2VH
cm91cDsKLSAgICAKKwogICAgIGVudW0gU3RhdGUgewogICAgICAgICBJbml0aWFsLAogICAgICAg
ICBSZXNldHRpbmcsCkluZGV4OiBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0
Zm9ybVdlYlZpZXdNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tCShyZXZpc2lvbiA3Mzg4MykKKysrIFdlYktp
dFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsMTAgKzI3LDI0IEBACiAKIG5hbWVzcGFjZSBXVFIgewogCi1QbGF0Zm9y
bVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhXS1BhZ2VOYW1lc3BhY2VSZWYgbmFtZXNwYWNlUmVm
LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCitQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3Jt
V2ViVmlldyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3Vw
UmVmKQogewogICAgIE5TUmVjdCByZWN0ID0gTlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCk7Ci0g
ICAgbV92aWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6cmVjdCBwYWdlTmFtZXNw
YWNlUmVmOm5hbWVzcGFjZVJlZiBwYWdlR3JvdXBSZWY6cGFnZUdyb3VwUmVmXTsKKyAgICBtX3Zp
ZXcgPSBbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpyZWN0IGNvbnRleHRSZWY6Y29udGV4
dFJlZiBwYWdlR3JvdXBSZWY6cGFnZUdyb3VwUmVmXTsKKworICAgIE5TUmVjdCB3aW5kb3dSZWN0
ID0gTlNPZmZzZXRSZWN0KHJlY3QsIC0xMDAwMCwgW1tbTlNTY3JlZW4gc2NyZWVuc10gb2JqZWN0
QXRJbmRleDowXSBmcmFtZV0uc2l6ZS5oZWlnaHQgLSByZWN0LnNpemUuaGVpZ2h0ICsgMTAwMDAp
OworICAgIG1fd2luZG93ID0gW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDp3
aW5kb3dSZWN0IHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNr
aW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpZRVNdOworICAgIFttX3dpbmRvdyBzZXRDb2xvclNwYWNl
OltbTlNTY3JlZW4gbWFpblNjcmVlbl0gY29sb3JTcGFjZV1dOworICAgIFtbbV93aW5kb3cgY29u
dGVudFZpZXddIGFkZFN1YnZpZXc6bV92aWV3XTsKKyAgICBbbV93aW5kb3cgb3JkZXJCYWNrOm5p
bF07CisgICAgW21fd2luZG93IHNldEF1dG9kaXNwbGF5Ok5PXTsKKyAgICBbbV93aW5kb3cgc2V0
UmVsZWFzZWRXaGVuQ2xvc2VkOk5PXTsKK30KKworUGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdl
YlZpZXcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKK3sK
KyAgICBOU1JlY3QgcmVjdCA9IE5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApOworICAgIG1fdmll
dyA9IFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOnJlY3QgZm9yQXNzb2NpYXRlZFBhZ2VS
ZWY6cGFnZVJlZiBwYWdlR3JvdXBSZWY6cGFnZUdyb3VwUmVmXTsKIAogICAgIE5TUmVjdCB3aW5k
b3dSZWN0ID0gTlNPZmZzZXRSZWN0KHJlY3QsIC0xMDAwMCwgW1tbTlNTY3JlZW4gc2NyZWVuc10g
b2JqZWN0QXRJbmRleDowXSBmcmFtZV0uc2l6ZS5oZWlnaHQgLSByZWN0LnNpemUuaGVpZ2h0ICsg
MTAwMDApOwogICAgIG1fd2luZG93ID0gW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50
UmVjdDp3aW5kb3dSZWN0IHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6
TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpZRVNdOwpJbmRleDogV2ViS2l0VG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9xdC9QbGF0Zm9ybVdlYlZpZXdRdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9QbGF0Zm9ybVdlYlZpZXdRdC5jcHAJKHJldmlz
aW9uIDczODgzKQorKysgV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9QbGF0Zm9ybVdl
YlZpZXdRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDggQEAgbmFtZXNwYWNlIFdU
UiB7CiAKIGNsYXNzIFdlYlZpZXcgOiBwdWJsaWMgUUdyYXBoaWNzVmlldyB7CiBwdWJsaWM6Ci0g
ICAgV2ViVmlldyhXS1BhZ2VOYW1lc3BhY2VSZWYpOworICAgIFdlYlZpZXcoV0tDb250ZXh0UmVm
KTsKKyAgICBXZWJWaWV3KFdLUGFnZVJlZik7CiAKICAgICBRR3JhcGhpY3NXS1ZpZXcqIHdrVmll
dygpIGNvbnN0IHsgcmV0dXJuIG1faXRlbTsgfQogCkBAIC00MywxNiArNDQsMzYgQEAgcHJpdmF0
ZToKICAgICBRR3JhcGhpY3NXS1ZpZXcqIG1faXRlbTsKIH07CiAKLVdlYlZpZXc6OldlYlZpZXco
V0tQYWdlTmFtZXNwYWNlUmVmIG5hbWVzcGFjZVJlZikKK1dlYlZpZXc6OldlYlZpZXcoV0tDb250
ZXh0UmVmIGNvbnRleHRSZWYpCiAgICAgOiBRR3JhcGhpY3NWaWV3KCkKLSAgICAsIG1faXRlbShu
ZXcgUUdyYXBoaWNzV0tWaWV3KG5ldyBRV0tDb250ZXh0KG5hbWVzcGFjZVJlZiwgdGhpcykpKQor
ICAgICwgbV9pdGVtKG5ldyBRR3JhcGhpY3NXS1ZpZXcobmV3IFFXS0NvbnRleHQoY29udGV4dFJl
ZiwgdGhpcykpKQogewogICAgIHNldFNjZW5lKG5ldyBRR3JhcGhpY3NTY2VuZSh0aGlzKSk7CiAg
ICAgc2NlbmUoKS0+YWRkSXRlbShtX2l0ZW0pOwogfQogCi1QbGF0Zm9ybVdlYlZpZXc6OlBsYXRm
b3JtV2ViVmlldyhXS1BhZ2VOYW1lc3BhY2VSZWYgbmFtZXNwYWNlUmVmLCBXS1BhZ2VHcm91cFJl
ZikKLSAgICA6IG1fdmlldyhuZXcgV2ViVmlldyhuYW1lc3BhY2VSZWYpKQorV2ViVmlldzo6V2Vi
VmlldyhXS1BhZ2VSZWYgcGFnZVJlZikKKyAgICA6IFFHcmFwaGljc1ZpZXcoKQorICAgICwgbV9p
dGVtKG5ldyBRR3JhcGhpY3NXS1ZpZXcobmV3IFFXS0NvbnRleHQocGFnZVJlZiwgdGhpcykpKQor
eworICAgIHNldFNjZW5lKG5ldyBRR3JhcGhpY3NTY2VuZSh0aGlzKSk7CisgICAgc2NlbmUoKS0+
YWRkSXRlbShtX2l0ZW0pOworfQorCitQbGF0Zm9ybVdlYlZpZXcoV0tDb250ZXh0UmVmLCBXS1Bh
Z2VHcm91cFJlZik7CitQbGF0Zm9ybVdlYlZpZXcoV0tQYWdlUmVmLCBXS1BhZ2VHcm91cFJlZik7
CisKK1BsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4dFJlZiBjb250ZXh0
UmVmLCBXS1BhZ2VHcm91cFJlZikKKyAgICA6IG1fdmlldyhuZXcgV2ViVmlldyhjb250ZXh0UmVm
KSkKKyAgICAsIG1fd2luZG93KG5ldyBRTWFpbldpbmRvdygpKQoreworICAgIG1fdmlldy0+c2V0
UGFyZW50KG1fd2luZG93KTsKKyAgICBtX3dpbmRvdy0+c2V0Q2VudHJhbFdpZGdldChtX3ZpZXcp
OworICAgIG1fd2luZG93LT5zZXRHZW9tZXRyeSgwLCAwLCA4MDAsIDYwMCk7Cit9CisKK1BsYXRm
b3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLUGFnZVJlZiBwYWdlUmVmLCBXS1BhZ2VHcm91
cFJlZikKKyAgICA6IG1fdmlldyhuZXcgV2ViVmlldyhwYWdlUmVmKSkKICAgICAsIG1fd2luZG93
KG5ldyBRTWFpbldpbmRvdygpKQogewogICAgIG1fdmlldy0+c2V0UGFyZW50KG1fd2luZG93KTsK
SW5kZXg6IFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1BsYXRmb3JtV2ViVmlld1dp
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vUGxh
dGZvcm1XZWJWaWV3V2luLmNwcAkocmV2aXNpb24gNzM4ODMpCisrKyBXZWJLaXRUb29scy9XZWJL
aXRUZXN0UnVubmVyL3dpbi9QbGF0Zm9ybVdlYlZpZXdXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NywxMyArNDcsMjIgQEAgc3RhdGljIHZvaWQgcmVnaXN0ZXJXaW5kb3dDbGFzcygpCiAgICAg
UmVnaXN0ZXJDbGFzc0V4Vygmd25kQ2xhc3MpOwogfQogCi1QbGF0Zm9ybVdlYlZpZXc6OlBsYXRm
b3JtV2ViVmlldyhXS1BhZ2VOYW1lc3BhY2VSZWYgbmFtZXNwYWNlUmVmLCBXS1BhZ2VHcm91cFJl
ZiBwYWdlR3JvdXBSZWYpCitQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhXS0NvbnRl
eHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQogewogICAgIHJl
Z2lzdGVyV2luZG93Q2xhc3MoKTsKIAogICAgIFJFQ1Qgdmlld1JlY3QgPSB7MCwgMCwgODAwLCA2
MDB9OwogICAgIG1fd2luZG93ID0gQ3JlYXRlV2luZG93RXhXKDAsIGhvc3RXaW5kb3dDbGFzc05h
bWUsIEwiV2ViS2l0VGVzdFJ1bm5lciIsIFdTX09WRVJMQVBQRURXSU5ET1csIDAgLypYT0ZGU0VU
Ki8sIDAgLypZT0ZGU0VUKi8sIHZpZXdSZWN0LnJpZ2h0LCB2aWV3UmVjdC5ib3R0b20sIDAsIDAs
IEdldE1vZHVsZUhhbmRsZSgwKSwgMCk7Ci0gICAgbV92aWV3ID0gV0tWaWV3Q3JlYXRlKHZpZXdS
ZWN0LCBuYW1lc3BhY2VSZWYsIHBhZ2VHcm91cFJlZiwgbV93aW5kb3cpOworICAgIG1fdmlldyA9
IFdLVmlld0NyZWF0ZSh2aWV3UmVjdCwgY29udGV4dFJlZiwgcGFnZUdyb3VwUmVmLCBtX3dpbmRv
dyk7Cit9CisKK1BsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLUGFnZVJlZiBwYWdl
UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCit7CisgICAgcmVnaXN0ZXJXaW5kb3dD
bGFzcygpOworCisgICAgUkVDVCB2aWV3UmVjdCA9IHswLCAwLCA4MDAsIDYwMH07CisgICAgbV93
aW5kb3cgPSBDcmVhdGVXaW5kb3dFeFcoMCwgaG9zdFdpbmRvd0NsYXNzTmFtZSwgTCJXZWJLaXRU
ZXN0UnVubmVyIiwgV1NfT1ZFUkxBUFBFRFdJTkRPVywgMCAvKlhPRkZTRVQqLywgMCAvKllPRkZT
RVQqLywgdmlld1JlY3QucmlnaHQsIHZpZXdSZWN0LmJvdHRvbSwgMCwgMCwgR2V0TW9kdWxlSGFu
ZGxlKDApLCAwKTsKKyAgICBtX3ZpZXcgPSBXS1ZpZXdDcmVhdGVGb3JBc3NvY2lhdGVkUGFnZSh2
aWV3UmVjdCwgcGFnZVJlZiwgcGFnZUdyb3VwUmVmLCBtX3dpbmRvdyk7CiB9CiAKIFBsYXRmb3Jt
V2ViVmlldzo6flBsYXRmb3JtV2ViVmlldygpCg==
</data>
<flag name="review"
          id="67291"
          type_id="1"
          status="-"
          setter="ossy"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76436</attachid>
            <date>2010-12-13 14:08:01 -0800</date>
            <delta_ts>2010-12-13 14:32:31 -0800</delta_ts>
            <desc>Update Patch</desc>
            <filename>forReview.diff</filename>
            <type>text/plain</type>
            <size>72551</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3Mzg4MykKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODcgQEAKKzIwMTAtMTItMTIgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2Ug
dGhlIFdlYktpdDIgcHVibGljIEFQSSBzbyB0aGVyZSBpcyBubyBleHBsaWNpdCBXS1BhZ2VOYW1l
c3BhY2Ugb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01MDg5OAorCisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQmFzZS5oOiBSZW1vdmUgZGVm
aW5pdGlvbiBvZiBXS1BhZ2VOYW1lc3BhY2VSZWYuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLQVBJQ2FzdC5oOiBSZW1vdmUgdG9BUEkvdG9JbXBsIGZvciBXS1BhZ2VOYW1lc3BhY2VSZWYu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmg6CisgICAgICAgIFJlcGxhY2UgV0tQYWdlR2V0UGFnZU5hbWVz
cGFjZSB3aXRoIFdLUGFnZUdldENvbnRleHQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlTmFtZXNwYWNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlTmFtZXNwYWNlLmg6IFJlbW92ZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V2ViS2l0Mi5oOiBSZW1vdmUgI2luY2x1ZGUgb2YgV0tQYWdlTmFtZXNwYWNlLmguCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHA6CisgICAgICAgIChXS1ZpZXdDcmVh
dGUpOiBDaGFuZ2VkIHRvIHRha2UgYSBXS0NvbnRleHRSZWYgaW5zdGVhZCBvZiBhIFdLUGFnZU5h
bWVzcGFjZVJlZi4KKyAgICAgICAgKFdLVmlld0NyZWF0ZVVzaW5nU2hhcmVkUHJvY2Vzcyk6IEFk
ZGVkLiBTaW1pbGFyIHRvIFdLVmlld0NyZWF0ZSBleGNlcHQgdGhhdAorICAgICAgICBhbGwgY2Fs
bGVycyBvZiBpdCB3aWxsIGhhdmUgdGhlaXIgdmlld3MgZW5kIHVwIGluIHRoZSBzYW1lIHNoYXJl
ZCBwcm9jZXNzLCB3aGVyZWFzIAorICAgICAgICB3aXRoIFdLVmlld0NyZWF0ZSwgYSBuZXcgaW50
ZXJuYWwgcGFnZSBuYW1lc3BhY2Ugd2lsbCBiZSBjcmVhdGVkIGFuZCBjb3VsZCBwbGFjZQorICAg
ICAgICB0aGUgdmlldydzIFdlYlBhZ2UgaW50byBhIG5ldyBwcm9jZXNzLgorICAgICAgICAoV0tW
aWV3Q3JlYXRlRm9yQXNzb2NpYXRlZFBhZ2UpOiBBZGRlZC4gQ3JlYXRlcyBhIHZpZXcgdGhhdCBp
cyBmb3JjZWQgdG8gdXNlIHRoZQorICAgICAgICBzYW1lIHByb2Nlc3MgYXMgdGhlIHBhc3NlZCBp
biBwYWdlLgorCisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlldzo6V2ViVmlldyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6Omlu
aXRpYWxpemUpOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViVmlldy5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpjcmVh
dGVVc2luZ1NoYXJlZFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpjcmVhdGVG
b3JBc3NvY2lhdGVkUGFnZSk6CisgICAgICAgIEltcGxlbWVudGF0aW9uIG9mIHRoZSBXS1ZpZXcg
Y3JlYXRlIGZ1bmN0aW9ucy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy93aW4vV0tWaWV3
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgaW5pdFdpdGhGcmFt
ZTpdKToKKyAgICAgICAgKC1bV0tWaWV3IGluaXRXaXRoRnJhbWU6Y29udGV4dFJlZjpdKToKKyAg
ICAgICAgKC1bV0tWaWV3IGluaXRXaXRoRnJhbWU6Y29udGV4dFJlZjpwYWdlR3JvdXBSZWY6XSk6
CisgICAgICAgICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOmNvbnRleHRSZWY6dXNpbmdTaGFyZWRQ
cm9jZXNzOl0pOgorICAgICAgICAoLVtXS1ZpZXcgaW5pdFdpdGhGcmFtZTpjb250ZXh0UmVmOnBh
Z2VHcm91cFJlZjp1c2luZ1NoYXJlZFByb2Nlc3M6XSk6CisgICAgICAgICgtW1dLVmlldyBpbml0
V2l0aEZyYW1lOmZvckFzc29jaWF0ZWRQYWdlUmVmOl0pOgorICAgICAgICAoLVtXS1ZpZXcgaW5p
dFdpdGhGcmFtZTpmb3JBc3NvY2lhdGVkUGFnZVJlZjpwYWdlR3JvdXBSZWY6XSk6CisgICAgICAg
ICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOnBhZ2VOYW1lc3BhY2U6cGFnZUdyb3VwOl0pOgorICAg
ICAgICBBZGQgbmV3IGluaXRpYWxpemVycyBmb3IgdGhlIG9iamVjdGl2ZS1jIFdLVmlldy4gSXQg
Zm9sbG93cyB0aGUgc2FtZQorICAgICAgICBwYXR0ZXJuIGFzIFdLVmlld1JlZi4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdrY29udGV4dC5jcHA6CisgICAgICAgIChRV0tDb250ZXh0
OjpRV0tDb250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3a2NvbnRleHQuaDoK
KyAgICAgICAgUmVtb3ZlIHVzZXMgb2YgV0tQYWdlTmFtZXNwYWNlUmVmLgorCisgICAgICAgICog
VUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojpz
aGFyZWRQYWdlTmFtZXNwYWNlKTogUmV0dXJucyBhIHNoYXJlZAorICAgICAgICBwYWdlIG5hbWVz
cGFjZSB1c2VkIGJ5IHRoZSB2aWV3J3MgY3JlYXRlVXNpbmdTaGFyZWRQcm9jZXNzIGNvbnN0cnVj
dGlvbnMuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmNyZWF0ZVBhZ2VOYW1lc3BhY2Up
OiBDaGFuZ2UgdG8gcmV0dXJuCisgICAgICAgIGEgUGFzc1JlZlB0ciB0byBtYWtlIHRoaW5ncyBj
bGVhcmVyLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpwYWdlTmFtZXNwYWNlV2FzRGVz
dHJveWVkKTogQ2xlYXIgdGhlIHNoYXJlZAorICAgICAgICBuYW1lc3BhY2UgaWYgaXQgaXMgY2xl
YXJlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgorCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VOYW1lc3BhY2UuaDogUmVtb3ZlIHVudXNlZCAic3RydWN0IFdLQ29udGV4
dFN0YXRpc3RpY3MiLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGV4dCk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICBBZGQgY29udGV4dCBnZXR0ZXIuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSk6
CisgICAgICAgIFVzZSBmb3JBc3NvY2lhdGVkUGFnZVJlZiBjb25zdHJ1Y3RvciBmb3IgdGhlIFdl
Ykluc3BlY3RvciB2aWV3LgorCisgICAgICAgICogV2ViS2l0Mi5wcm86CisgICAgICAgICogV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHdpbi9XZWJLaXQyLnZj
cHJvajoKKyAgICAgICAgKiB3aW4vV2ViS2l0MkdlbmVyYXRlZC5tYWtlOgorICAgICAgICBSZW1v
dmUgV0tQYWdlTmFtZXNwYWNlLmgvY3BwLgorCiAyMDEwLTEyLTEyICBTYW0gV2VpbmlnICA8c2Ft
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRl
eDogV2ViS2l0Mi9XZWJLaXQyLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYktpdDIucHJv
CShyZXZpc2lvbiA3Mzg4MykKKysrIFdlYktpdDIvV2ViS2l0Mi5wcm8JKHdvcmtpbmcgY29weSkK
QEAgLTI4OSw3ICsyODksNiBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tO
YXZpZ2F0aW9uRGF0YS5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmggXAogICAgIFVJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2VHcm91cC5oIFwKLSAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdl
TmFtZXNwYWNlLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmggXAogICAg
IFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9X
S1ByZWZlcmVuY2VzUHJpdmF0ZS5oIFwKQEAgLTQ4OSw3ICs0ODgsNiBAQCBTT1VSQ0VTICs9IFwK
ICAgICBVSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uRGF0YS5jcHAgXAogICAgIFVJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2UuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlR3JvdXAuY3Bw
IFwKLSAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlTmFtZXNwYWNlLmNwcCBcCiAgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQcm90
ZWN0aW9uU3BhY2UuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL2NwcC9xdC9XS1N0cmluZ1F0LmNw
cCBcCkluZGV4OiBXZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAkocmV2aXNpb24gNzM4ODMpCisrKyBXZWJLaXQy
L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNiBAQCB0
eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0luc3BlY3RvciogCiB0eXBlZGVmIGNvbnN0IHN0
cnVjdCBPcGFxdWVXS05hdmlnYXRpb25EYXRhKiBXS05hdmlnYXRpb25EYXRhUmVmOwogdHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQYWdlKiBXS1BhZ2VSZWY7CiB0eXBlZGVmIGNvbnN0IHN0
cnVjdCBPcGFxdWVXS1BhZ2VHcm91cCogV0tQYWdlR3JvdXBSZWY7Ci10eXBlZGVmIGNvbnN0IHN0
cnVjdCBPcGFxdWVXS1BhZ2VOYW1lc3BhY2UqIFdLUGFnZU5hbWVzcGFjZVJlZjsKIHR5cGVkZWYg
Y29uc3Qgc3RydWN0IE9wYXF1ZVdLUHJlZmVyZW5jZXMqIFdLUHJlZmVyZW5jZXNSZWY7CiB0eXBl
ZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1Byb3RlY3Rpb25TcGFjZSogV0tQcm90ZWN0aW9uU3Bh
Y2VSZWY7CiAKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCShyZXZpc2lvbiA3Mzg4MykK
KysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
OSw2ICs3OSw3IEBAIFBhc3NSZWZQdHI8V2ViQ29udGV4dD4gV2ViQ29udGV4dDo6Y3JlYXQKICAg
ICAKIFdlYkNvbnRleHQ6OldlYkNvbnRleHQoUHJvY2Vzc01vZGVsIHByb2Nlc3NNb2RlbCwgY29u
c3QgU3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgpCiAgICAgOiBtX3Byb2Nlc3NNb2RlbChwcm9j
ZXNzTW9kZWwpCisgICAgLCBtX3NoYXJlZE5hbWVzcGFjZSgwKQogICAgICwgbV9kZWZhdWx0UGFn
ZUdyb3VwKFdlYlBhZ2VHcm91cDo6Y3JlYXRlKCkpCiAgICAgLCBtX2luamVjdGVkQnVuZGxlUGF0
aChpbmplY3RlZEJ1bmRsZVBhdGgpCiAgICAgLCBtX3Zpc2l0ZWRMaW5rUHJvdmlkZXIodGhpcykK
QEAgLTIyOCwxNSArMjI5LDI1IEBAIHZvaWQgV2ViQ29udGV4dDo6cmVsYXVuY2hQcm9jZXNzSWZO
ZWNlc3MKICAgICBlbnN1cmVXZWJQcm9jZXNzKCk7CiB9CiAKLVdlYlBhZ2VOYW1lc3BhY2UqIFdl
YkNvbnRleHQ6OmNyZWF0ZVBhZ2VOYW1lc3BhY2UoKQorV2ViUGFnZU5hbWVzcGFjZSogV2ViQ29u
dGV4dDo6c2hhcmVkUGFnZU5hbWVzcGFjZSgpCit7CisgICAgaWYgKCFtX3NoYXJlZE5hbWVzcGFj
ZSkKKyAgICAgICAgbV9zaGFyZWROYW1lc3BhY2UgPSBjcmVhdGVQYWdlTmFtZXNwYWNlKCk7Cisg
ICAgcmV0dXJuIG1fc2hhcmVkTmFtZXNwYWNlLmdldCgpOworfQorCitQYXNzUmVmUHRyPFdlYlBh
Z2VOYW1lc3BhY2U+IFdlYkNvbnRleHQ6OmNyZWF0ZVBhZ2VOYW1lc3BhY2UoKQogewogICAgIFJl
ZlB0cjxXZWJQYWdlTmFtZXNwYWNlPiBwYWdlTmFtZXNwYWNlID0gV2ViUGFnZU5hbWVzcGFjZTo6
Y3JlYXRlKHRoaXMpOwogICAgIG1fcGFnZU5hbWVzcGFjZXMuYWRkKHBhZ2VOYW1lc3BhY2UuZ2V0
KCkpOwotICAgIHJldHVybiBwYWdlTmFtZXNwYWNlLnJlbGVhc2UoKS5yZWxlYXNlUmVmKCk7Cisg
ICAgcmV0dXJuIHBhZ2VOYW1lc3BhY2UucmVsZWFzZSgpOwogfQogCiB2b2lkIFdlYkNvbnRleHQ6
OnBhZ2VOYW1lc3BhY2VXYXNEZXN0cm95ZWQoV2ViUGFnZU5hbWVzcGFjZSogcGFnZU5hbWVzcGFj
ZSkKIHsKKyAgICBpZiAocGFnZU5hbWVzcGFjZSA9PSBtX3NoYXJlZE5hbWVzcGFjZSkKKyAgICAg
ICAgbV9zaGFyZWROYW1lc3BhY2UgPSAwOworCiAgICAgQVNTRVJUKG1fcGFnZU5hbWVzcGFjZXMu
Y29udGFpbnMocGFnZU5hbWVzcGFjZSkpOwogICAgIG1fcGFnZU5hbWVzcGFjZXMucmVtb3ZlKHBh
Z2VOYW1lc3BhY2UpOwogfQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAkocmV2aXNpb24gNzM4
ODMpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDggKzQyLDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLXN0cnVjdCBXS0NvbnRleHRTdGF0aXN0aWNzOwot
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRG93bmxvYWRQcm94eTsKQEAgLTc3LDcgKzc1
LDggQEAgcHVibGljOgogCiAgICAgdm9pZCByZWxhdW5jaFByb2Nlc3NJZk5lY2Vzc2FyeSgpOwog
Ci0gICAgV2ViUGFnZU5hbWVzcGFjZSogY3JlYXRlUGFnZU5hbWVzcGFjZSgpOworICAgIFdlYlBh
Z2VOYW1lc3BhY2UqIHNoYXJlZFBhZ2VOYW1lc3BhY2UoKTsKKyAgICBQYXNzUmVmUHRyPFdlYlBh
Z2VOYW1lc3BhY2U+IGNyZWF0ZVBhZ2VOYW1lc3BhY2UoKTsKICAgICB2b2lkIHBhZ2VOYW1lc3Bh
Y2VXYXNEZXN0cm95ZWQoV2ViUGFnZU5hbWVzcGFjZSopOwogCiAgICAgY29uc3QgU3RyaW5nJiBp
bmplY3RlZEJ1bmRsZVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVkQnVuZGxlUGF0aDsg
fQpAQCAtMTY0LDYgKzE2Myw3IEBAIHByaXZhdGU6CiAgICAgLy8gRklYTUU6IEluIHRoZSBmdXR1
cmUsIHRoaXMgc2hvdWxkIGJlIG9uZSBvciBtb3JlIFdlYlByb2Nlc3NQcm94aWVzLgogICAgIFJl
ZlB0cjxXZWJQcm9jZXNzUHJveHk+IG1fcHJvY2VzczsKIAorICAgIFJlZlB0cjxXZWJQYWdlTmFt
ZXNwYWNlPiBtX3NoYXJlZE5hbWVzcGFjZTsKICAgICBIYXNoU2V0PFdlYlBhZ2VOYW1lc3BhY2Uq
PiBtX3BhZ2VOYW1lc3BhY2VzOwogCiAgICAgUmVmUHRyPFdlYlBhZ2VHcm91cD4gbV9kZWZhdWx0
UGFnZUdyb3VwOwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZU5hbWVzcGFjZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VOYW1lc3BhY2UuaAkocmV2aXNp
b24gNzM4ODMpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlTmFtZXNwYWNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDggKzMxLDYgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAotc3RydWN0IFdLQ29udGV4dFN0YXRpc3RpY3M7Ci0K
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJDb250ZXh0OwpJbmRleDogV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiA3Mzg4MykKKysrIFdlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMyw2ICsxMzMsMTEgQEAgV2Vi
UHJvY2Vzc1Byb3h5KiBXZWJQYWdlUHJveHk6OnByb2Nlc3MoKQogICAgIHJldHVybiBtX3BhZ2VO
YW1lc3BhY2UtPnByb2Nlc3MoKTsKIH0KIAorV2ViQ29udGV4dCogV2ViUGFnZVByb3h5Ojpjb250
ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wYWdlTmFtZXNwYWNlLT5jb250ZXh0KCk7Cit9
CisKIGJvb2wgV2ViUGFnZVByb3h5Ojppc1ZhbGlkKCkKIHsKICAgICAvLyBBIHBhZ2UgdGhhdCBo
YXMgYmVlbiBleHBsaWNpdGx5IGNsb3NlZCBpcyBuZXZlciB2YWxpZC4KSW5kZXg6IFdlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiA3Mzg4MykKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw4ICs3MSw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBzdHJ1Y3QgV2luZG93RmVhdHVyZXM7CiB9CiAKLXN0cnVjdCBXS0NvbnRl
eHRTdGF0aXN0aWNzOwotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRHJhd2luZ0FyZWFQ
cm94eTsKQEAgLTI1Miw2ICsyNTAsNyBAQCBwdWJsaWM6CiAKICAgICBXZWJQcm9jZXNzUHJveHkq
IHByb2Nlc3MoKSBjb25zdDsKICAgICBXZWJQYWdlTmFtZXNwYWNlKiBwYWdlTmFtZXNwYWNlKCkg
Y29uc3QgeyByZXR1cm4gbV9wYWdlTmFtZXNwYWNlLmdldCgpOyB9CisgICAgV2ViQ29udGV4dCog
Y29udGV4dCgpIGNvbnN0OwogCiAgICAgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAoKSBjb25zdCB7
IHJldHVybiBtX3BhZ2VHcm91cC5nZXQoKTsgfQogCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0FQSUNhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0FQSUNhc3QuaAkocmV2aXNpb24gNzM4ODMpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0FQSUNhc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNiBAQCBjbGFzcyBXZWJGcmFt
ZVByb3h5OwogY2xhc3MgV2ViSW5zcGVjdG9yUHJveHk7CiBjbGFzcyBXZWJOYXZpZ2F0aW9uRGF0
YTsKIGNsYXNzIFdlYlBhZ2VHcm91cDsKLWNsYXNzIFdlYlBhZ2VOYW1lc3BhY2U7CiBjbGFzcyBX
ZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQcmVmZXJlbmNlczsKIGNsYXNzIFdlYlByb3RlY3Rpb25T
cGFjZTsKQEAgLTcwLDE2ICs2OSwxNiBAQCBXS19BRERfQVBJX01BUFBJTkcoV0tEb3dubG9hZFJl
ZiwgRG93bmxvCiBXS19BRERfQVBJX01BUFBJTkcoV0tGb3JtU3VibWlzc2lvbkxpc3RlbmVyUmVm
LCBXZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHkpCiBXS19BRERfQVBJX01BUFBJTkcoV0tG
cmFtZVBvbGljeUxpc3RlbmVyUmVmLCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkpCiBXS19B
RERfQVBJX01BUFBJTkcoV0tGcmFtZVJlZiwgV2ViRnJhbWVQcm94eSkKLSNpZiBFTkFCTEUoSU5T
UEVDVE9SKQotV0tfQUREX0FQSV9NQVBQSU5HKFdLSW5zcGVjdG9yUmVmLCBXZWJJbnNwZWN0b3JQ
cm94eSkKLSNlbmRpZgogV0tfQUREX0FQSV9NQVBQSU5HKFdLTmF2aWdhdGlvbkRhdGFSZWYsIFdl
Yk5hdmlnYXRpb25EYXRhKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUGFnZUdyb3VwUmVmLCBXZWJQ
YWdlR3JvdXApCi1XS19BRERfQVBJX01BUFBJTkcoV0tQYWdlTmFtZXNwYWNlUmVmLCBXZWJQYWdl
TmFtZXNwYWNlKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUGFnZVJlZiwgV2ViUGFnZVByb3h5KQog
V0tfQUREX0FQSV9NQVBQSU5HKFdLUHJlZmVyZW5jZXNSZWYsIFdlYlByZWZlcmVuY2VzKQogV0tf
QUREX0FQSV9NQVBQSU5HKFdLUHJvdGVjdGlvblNwYWNlUmVmLCBXZWJQcm90ZWN0aW9uU3BhY2Up
CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorV0tfQUREX0FQSV9NQVBQSU5HKFdLSW5zcGVjdG9y
UmVmLCBXZWJJbnNwZWN0b3JQcm94eSkKKyNlbmRpZgorCiAvKiBFbnVtIGNvbnZlcnNpb25zICov
CiAKIGlubGluZSBDYWNoZU1vZGVsIHRvQ2FjaGVNb2RlbChXS0NhY2hlTW9kZWwgd2tDYWNoZU1v
ZGVsKQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiA3Mzg4MykK
KysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDkgKzQyLDkgQEAgV0tUeXBlSUQgV0tQYWdlR2V0VHlwZUlEKCkKICAgICByZXR1cm4gdG9B
UEkoV2ViUGFnZVByb3h5OjpBUElUeXBlKTsKIH0KIAotV0tQYWdlTmFtZXNwYWNlUmVmIFdLUGFn
ZUdldFBhZ2VOYW1lc3BhY2UoV0tQYWdlUmVmIHBhZ2VSZWYpCitXS0NvbnRleHRSZWYgV0tQYWdl
R2V0Q29udGV4dChXS1BhZ2VSZWYgcGFnZVJlZikKIHsKLSAgICByZXR1cm4gdG9BUEkodG9JbXBs
KHBhZ2VSZWYpLT5wYWdlTmFtZXNwYWNlKCkpOworICAgIHJldHVybiB0b0FQSSh0b0ltcGwocGFn
ZVJlZiktPmNvbnRleHQoKSk7CiB9CiAKIFdLUGFnZUdyb3VwUmVmIFdLUGFnZUdldFBhZ2VHcm91
cChXS1BhZ2VSZWYgcGFnZVJlZikKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCShyZXZp
c2lvbiA3Mzg4MykKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMTcsNyArMjE3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tQYWdlQ29udGV4dE1l
bnVDbGllbnQgVwogCiBXS19FWFBPUlQgV0tUeXBlSUQgV0tQYWdlR2V0VHlwZUlEKCk7CiAKLVdL
X0VYUE9SVCBXS1BhZ2VOYW1lc3BhY2VSZWYgV0tQYWdlR2V0UGFnZU5hbWVzcGFjZShXS1BhZ2VS
ZWYgcGFnZSk7CitXS19FWFBPUlQgV0tDb250ZXh0UmVmIFdLUGFnZUdldENvbnRleHQoV0tQYWdl
UmVmIHBhZ2UpOwogV0tfRVhQT1JUIFdLUGFnZUdyb3VwUmVmIFdLUGFnZUdldFBhZ2VHcm91cChX
S1BhZ2VSZWYgcGFnZSk7CiAKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZUxvYWRVUkwoV0tQYWdlUmVm
IHBhZ2UsIFdLVVJMUmVmIHVybCk7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2VOYW1lc3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZU5hbWVzcGFjZS5jcHAJKHJldmlzaW9uIDczODgzKQorKysgV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlTmFtZXNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw0OCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgIldLUGFnZU5hbWVzcGFjZS5oIgotCi0jaW5jbHVkZSAi
V0tBUElDYXN0LmgiCi0jaW5jbHVkZSAiV2ViUGFnZU5hbWVzcGFjZS5oIgotI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi11c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwotCi1XS1R5cGVJRCBXS1BhZ2VOYW1lc3BhY2VHZXRUeXBlSUQoKQotewotICAg
IHJldHVybiB0b0FQSShXZWJQYWdlTmFtZXNwYWNlOjpBUElUeXBlKTsKLX0KLQotV0tQYWdlTmFt
ZXNwYWNlUmVmIFdLUGFnZU5hbWVzcGFjZUNyZWF0ZShXS0NvbnRleHRSZWYgb3duZXJDb250ZXh0
UmVmKQotewotICAgIHJldHVybiB0b0FQSSh0b0ltcGwob3duZXJDb250ZXh0UmVmKS0+Y3JlYXRl
UGFnZU5hbWVzcGFjZSgpKTsKLX0KLQotV0tDb250ZXh0UmVmIFdLUGFnZU5hbWVzcGFjZUdldENv
bnRleHQoV0tQYWdlTmFtZXNwYWNlUmVmIHBhZ2VOYW1lc3BhY2VSZWYpCi17Ci0gICAgcmV0dXJu
IHRvQVBJKHRvSW1wbChwYWdlTmFtZXNwYWNlUmVmKS0+Y29udGV4dCgpKTsKLX0KSW5kZXg6IFdl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZU5hbWVzcGFjZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZU5hbWVzcGFjZS5oCShyZXZpc2lvbiA3Mzg4MykK
KysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZU5hbWVzcGFjZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdLUGFnZU5hbWVzcGFj
ZV9oCi0jZGVmaW5lIFdLUGFnZU5hbWVzcGFjZV9oCi0KLSNpbmNsdWRlIDxXZWJLaXQyL1dLQmFz
ZS5oPgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLVdLX0VY
UE9SVCBXS1R5cGVJRCBXS1BhZ2VOYW1lc3BhY2VHZXRUeXBlSUQoKTsKLQotV0tfRVhQT1JUIFdL
UGFnZU5hbWVzcGFjZVJlZiBXS1BhZ2VOYW1lc3BhY2VDcmVhdGUoV0tDb250ZXh0UmVmIG93bmVy
Q29udGV4dCk7Ci0KLVdLX0VYUE9SVCBXS0NvbnRleHRSZWYgV0tQYWdlTmFtZXNwYWNlR2V0Q29u
dGV4dChXS1BhZ2VOYW1lc3BhY2VSZWYgcGFnZU5hbWVzcGFjZSk7Ci0KLSNpZmRlZiBfX2NwbHVz
cGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZiAvKiBXS1BhZ2VOYW1lc3BhY2VfaCAqLwpJbmRleDog
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV2ViS2l0Mi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dlYktpdDIuaAkocmV2aXNpb24gNzM4ODMpCisrKyBXZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XZWJLaXQyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDYgQEAK
ICNpbmNsdWRlIDxXZWJLaXQyL1dLTnVtYmVyLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2Uu
aD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZUdyb3VwLmg+Ci0jaW5jbHVkZSA8V2ViS2l0Mi9X
S1BhZ2VOYW1lc3BhY2UuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUHJlZmVyZW5jZXMuaD4KICNp
bmNsdWRlIDxXZWJLaXQyL1dLU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1VSTC5oPgpJ
bmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAJKHJldmlzaW9uIDczODgz
KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM1LDkgKzM1LDIxIEBAIFdLVHlwZUlEIFdLVmlld0dldFR5cGVJRCgpCiAgICAgcmV0
dXJuIHRvQVBJKEFQSU9iamVjdDo6VHlwZVZpZXcpOwogfQogCi1XS1ZpZXdSZWYgV0tWaWV3Q3Jl
YXRlKFJFQ1QgcmVjdCwgV0tQYWdlTmFtZXNwYWNlUmVmIHBhZ2VOYW1lc3BhY2VSZWYsIFdLUGFn
ZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiwgSFdORCBwYXJlbnRXaW5kb3cpCitXS1ZpZXdSZWYgV0tW
aWV3Q3JlYXRlKFJFQ1QgcmVjdCwgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3Vw
UmVmIHBhZ2VHcm91cFJlZiwgSFdORCBwYXJlbnRXaW5kb3cpCiB7Ci0gICAgUmVmUHRyPFdlYlZp
ZXc+IHZpZXcgPSBXZWJWaWV3OjpjcmVhdGUocmVjdCwgdG9JbXBsKHBhZ2VOYW1lc3BhY2VSZWYp
LCB0b0ltcGwocGFnZUdyb3VwUmVmKSwgcGFyZW50V2luZG93KTsKKyAgICBSZWZQdHI8V2ViVmll
dz4gdmlldyA9IFdlYlZpZXc6OmNyZWF0ZShyZWN0LCB0b0ltcGwoY29udGV4dFJlZiksIHRvSW1w
bChwYWdlR3JvdXBSZWYpLCBwYXJlbnRXaW5kb3cpOworICAgIHJldHVybiB0b0FQSSh2aWV3LnJl
bGVhc2UoKS5yZWxlYXNlUmVmKCkpOworfQorCitXS1ZpZXdSZWYgV0tWaWV3Q3JlYXRlVXNpbmdT
aGFyZWRQcm9jZXNzKFJFQ1QgcmVjdCwgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdy
b3VwUmVmIHBhZ2VHcm91cFJlZiwgSFdORCBwYXJlbnRXaW5kb3cpCit7CisgICAgUmVmUHRyPFdl
YlZpZXc+IHZpZXcgPSBXZWJWaWV3OjpjcmVhdGVVc2luZ1NoYXJlZFByb2Nlc3MocmVjdCwgdG9J
bXBsKGNvbnRleHRSZWYpLCB0b0ltcGwocGFnZUdyb3VwUmVmKSwgcGFyZW50V2luZG93KTsKKyAg
ICByZXR1cm4gdG9BUEkodmlldy5yZWxlYXNlKCkucmVsZWFzZVJlZigpKTsKK30KKworV0tWaWV3
UmVmIFdLVmlld0NyZWF0ZUZvckFzc29jaWF0ZWRQYWdlKFJFQ1QgcmVjdCwgV0tQYWdlUmVmIHBh
Z2VSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiwgSFdORCBwYXJlbnRXaW5kb3cpCit7
CisgICAgUmVmUHRyPFdlYlZpZXc+IHZpZXcgPSBXZWJWaWV3OjpjcmVhdGVGb3JBc3NvY2lhdGVk
UGFnZShyZWN0LCB0b0ltcGwocGFnZVJlZiksIHRvSW1wbChwYWdlR3JvdXBSZWYpLCBwYXJlbnRX
aW5kb3cpOwogICAgIHJldHVybiB0b0FQSSh2aWV3LnJlbGVhc2UoKS5yZWxlYXNlUmVmKCkpOwog
fQogCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy93aW4vV0tWaWV3LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvd2luL1dLVmlldy5oCShyZXZpc2lvbiA3Mzg4
MykKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3dpbi9XS1ZpZXcuaAkod29ya2luZyBjb3B5
KQpAQCAtMzUsNyArMzUsOSBAQCBleHRlcm4gIkMiIHsKIAogV0tfRVhQT1JUIFdLVHlwZUlEIFdL
Vmlld0dldFR5cGVJRCgpOwogCi1XS19FWFBPUlQgV0tWaWV3UmVmIFdLVmlld0NyZWF0ZShSRUNU
IHJlY3QsIFdLUGFnZU5hbWVzcGFjZVJlZiBwYWdlTmFtZXNwYWNlLCBXS1BhZ2VHcm91cFJlZiBw
YWdlR3JvdXAsIEhXTkQgcGFyZW50V2luZG93KTsKK1dLX0VYUE9SVCBXS1ZpZXdSZWYgV0tWaWV3
Q3JlYXRlKFJFQ1QgcmVjdCwgV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLUGFnZUdyb3VwUmVmIHBh
Z2VHcm91cCwgSFdORCBwYXJlbnRXaW5kb3cpOworV0tfRVhQT1JUIFdLVmlld1JlZiBXS1ZpZXdD
cmVhdGVVc2luZ1NoYXJlZFByb2Nlc3MoUkVDVCByZWN0LCBXS0NvbnRleHRSZWYgY29udGV4dCwg
V0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwLCBIV05EIHBhcmVudFdpbmRvdyk7CitXS19FWFBPUlQg
V0tWaWV3UmVmIFdLVmlld0NyZWF0ZUZvckFzc29jaWF0ZWRQYWdlKFJFQ1QgcmVjdCwgV0tQYWdl
UmVmIHBhZ2UsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCwgSFdORCBwYXJlbnRXaW5kb3cpOwog
CiBXS19FWFBPUlQgSFdORCBXS1ZpZXdHZXRXaW5kb3coV0tWaWV3UmVmIHZpZXcpOwogCkluZGV4
OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3LmgJKHJldmlzaW9uIDczODgzKQorKysgV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTUgKzMz
LDE4IEBAIEBpbnRlcmZhY2UgV0tWaWV3IDogTlNWaWV3IDxOU1RleHRJbnB1dD4KICAgICBXS1Zp
ZXdEYXRhICpfZGF0YTsKIH0KIAotLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIHBh
Z2VOYW1lc3BhY2VSZWY6KFdLUGFnZU5hbWVzcGFjZVJlZilwYWdlTmFtZXNwYWNlUmVmOwotLSAo
aWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIHBhZ2VOYW1lc3BhY2VSZWY6KFdLUGFnZU5h
bWVzcGFjZVJlZilwYWdlTmFtZXNwYWNlUmVmIHBhZ2VHcm91cFJlZjooV0tQYWdlR3JvdXBSZWYp
cGFnZUdyb3VwUmVmOworLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGNvbnRleHRS
ZWY6KFdLQ29udGV4dFJlZiljb250ZXh0UmVmOworLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0
KWZyYW1lIGNvbnRleHRSZWY6KFdLQ29udGV4dFJlZiljb250ZXh0UmVmIHBhZ2VHcm91cFJlZjoo
V0tQYWdlR3JvdXBSZWYpcGFnZUdyb3VwUmVmOwogCi0tIChXS1BhZ2VSZWYpcGFnZVJlZjsKKy0g
KGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBjb250ZXh0UmVmOihXS0NvbnRleHRSZWYp
Y29udGV4dFJlZiB1c2luZ1NoYXJlZFByb2Nlc3M6KEJPT0wpdXNpbmdTaGFyZWRQcm9jZXNzOwor
LSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGNvbnRleHRSZWY6KFdLQ29udGV4dFJl
Ziljb250ZXh0UmVmIHBhZ2VHcm91cFJlZjooV0tQYWdlR3JvdXBSZWYpcGFnZUdyb3VwUmVmIHVz
aW5nU2hhcmVkUHJvY2VzczooQk9PTCl1c2luZ1NoYXJlZFByb2Nlc3M7OwogCi0tICh2b2lkKXNl
dERyYXdzQmFja2dyb3VuZDooQk9PTClmbGFnOwotLSAoQk9PTClkcmF3c0JhY2tncm91bmQ7Cist
IChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgZm9yQXNzb2NpYXRlZFBhZ2VSZWY6KFdL
UGFnZVJlZilwYWdlUmVmOworLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGZvckFz
c29jaWF0ZWRQYWdlUmVmOihXS1BhZ2VSZWYpcGFnZVJlZiBwYWdlR3JvdXBSZWY6KFdLUGFnZUdy
b3VwUmVmKXBhZ2VHcm91cFJlZjsKIAotLSAodm9pZClzZXREcmF3c1RyYW5zcGFyZW50QmFja2dy
b3VuZDooQk9PTClmbGFnOwotLSAoQk9PTClkcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZDsKK0Bw
cm9wZXJ0eShyZWFkb25seSkgV0tQYWdlUmVmIHBhZ2VSZWY7CisKK0Bwcm9wZXJ0eSBCT09MIGRy
YXdzQmFja2dyb3VuZDsKK0Bwcm9wZXJ0eSBCT09MIGRyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5k
OwogCiBAZW5kCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkocmV2aXNpb24g
NzM4ODMpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTI3LDkgKzEyNyw1NCBAQCAtIChCT09MKXdhbnRzVG9IYW5kbGVNb3VzZUV2ZW50
czsKIC0gKEJPT0wpaGFuZGxlTW91c2VFdmVudDooTlNFdmVudCAqKWV2ZW50OwogQGVuZAogCitA
aW50ZXJmYWNlIFdLVmlldyAoKQorLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIHBh
Z2VOYW1lc3BhY2U6KFdlYlBhZ2VOYW1lc3BhY2UqKXBhZ2VOYW1lc3BhY2UgcGFnZUdyb3VwOihX
ZWJQYWdlR3JvdXAqKXBhZ2VHcm91cDsKK0BlbmQKKwogQGltcGxlbWVudGF0aW9uIFdLVmlldwog
Ci0tIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgcGFnZU5hbWVzcGFjZVJlZjooV0tQ
YWdlTmFtZXNwYWNlUmVmKXBhZ2VOYW1lc3BhY2VSZWYgcGFnZUdyb3VwUmVmOihXS1BhZ2VHcm91
cFJlZilwYWdlR3JvdXBSZWYKKy0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZQorewor
ICAgIHJldHVybiBbc2VsZiBpbml0V2l0aEZyYW1lOmZyYW1lIGNvbnRleHRSZWY6dG9BUEkoV2Vi
Q29udGV4dDo6c2hhcmVkUHJvY2Vzc0NvbnRleHQoKSldOworfQorCistIChpZClpbml0V2l0aEZy
YW1lOihOU1JlY3QpZnJhbWUgY29udGV4dFJlZjooV0tDb250ZXh0UmVmKWNvbnRleHRSZWYKK3sg
ICAKKyAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhGcmFtZTpmcmFtZSBjb250ZXh0UmVmOmNvbnRl
eHRSZWYgcGFnZUdyb3VwUmVmOm5pbF07Cit9CisKKy0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVj
dClmcmFtZSBjb250ZXh0UmVmOihXS0NvbnRleHRSZWYpY29udGV4dFJlZiBwYWdlR3JvdXBSZWY6
KFdLUGFnZUdyb3VwUmVmKXBhZ2VHcm91cFJlZgoreworICAgIHJldHVybiBbc2VsZiBpbml0V2l0
aEZyYW1lOmZyYW1lIGNvbnRleHRSZWY6Y29udGV4dFJlZiBwYWdlR3JvdXBSZWY6cGFnZUdyb3Vw
UmVmIHVzaW5nU2hhcmVkUHJvY2VzczpOT107Cit9CisKKy0gKGlkKWluaXRXaXRoRnJhbWU6KE5T
UmVjdClmcmFtZSBjb250ZXh0UmVmOihXS0NvbnRleHRSZWYpY29udGV4dFJlZiB1c2luZ1NoYXJl
ZFByb2Nlc3M6KEJPT0wpdXNpbmdTaGFyZWRQcm9jZXNzCit7CisgICAgcmV0dXJuIFtzZWxmIGlu
aXRXaXRoRnJhbWU6ZnJhbWUgY29udGV4dFJlZjpjb250ZXh0UmVmIHBhZ2VHcm91cFJlZjpuaWwg
dXNpbmdTaGFyZWRQcm9jZXNzOnVzaW5nU2hhcmVkUHJvY2Vzc107Cit9CisKKy0gKGlkKWluaXRX
aXRoRnJhbWU6KE5TUmVjdClmcmFtZSBjb250ZXh0UmVmOihXS0NvbnRleHRSZWYpY29udGV4dFJl
ZiBwYWdlR3JvdXBSZWY6KFdLUGFnZUdyb3VwUmVmKXBhZ2VHcm91cFJlZiB1c2luZ1NoYXJlZFBy
b2Nlc3M6KEJPT0wpdXNpbmdTaGFyZWRQcm9jZXNzCit7CisgICAgUmVmUHRyPFdlYlBhZ2VOYW1l
c3BhY2U+IHBhZ2VOYW1lc3BhY2U7CisgICAgaWYgKHVzaW5nU2hhcmVkUHJvY2VzcykKKyAgICAg
ICAgcGFnZU5hbWVzcGFjZSA9IHRvSW1wbChjb250ZXh0UmVmKS0+c2hhcmVkUGFnZU5hbWVzcGFj
ZSgpOworICAgIGVsc2UKKyAgICAgICAgcGFnZU5hbWVzcGFjZSA9IHRvSW1wbChjb250ZXh0UmVm
KS0+Y3JlYXRlUGFnZU5hbWVzcGFjZSgpOworCisgICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoRnJh
bWU6ZnJhbWUgcGFnZU5hbWVzcGFjZTpwYWdlTmFtZXNwYWNlLmdldCgpIHBhZ2VHcm91cDp0b0lt
cGwocGFnZUdyb3VwUmVmKV07Cit9CisKKy0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFt
ZSBmb3JBc3NvY2lhdGVkUGFnZVJlZjooV0tQYWdlUmVmKXBhZ2VSZWYKK3sKKyAgICByZXR1cm4g
W3NlbGYgaW5pdFdpdGhGcmFtZTpmcmFtZSBmb3JBc3NvY2lhdGVkUGFnZVJlZjpwYWdlUmVmIHBh
Z2VHcm91cFJlZjpuaWxdOworfQorCistIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUg
Zm9yQXNzb2NpYXRlZFBhZ2VSZWY6KFdLUGFnZVJlZilwYWdlUmVmIHBhZ2VHcm91cFJlZjooV0tQ
YWdlR3JvdXBSZWYpcGFnZUdyb3VwUmVmCit7CisgICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoRnJh
bWU6ZnJhbWUgcGFnZU5hbWVzcGFjZTp0b0ltcGwocGFnZVJlZiktPnBhZ2VOYW1lc3BhY2UoKSBw
YWdlR3JvdXA6dG9JbXBsKHBhZ2VHcm91cFJlZildOworfQorCistIChpZClpbml0V2l0aEZyYW1l
OihOU1JlY3QpZnJhbWUgcGFnZU5hbWVzcGFjZTooV2ViUGFnZU5hbWVzcGFjZSopcGFnZU5hbWVz
cGFjZSBwYWdlR3JvdXA6KFdlYlBhZ2VHcm91cCopcGFnZUdyb3VwCiB7CiAgICAgc2VsZiA9IFtz
dXBlciBpbml0V2l0aEZyYW1lOmZyYW1lXTsKICAgICBpZiAoIXNlbGYpCkBAIC0xNDgsNyArMTkz
LDcgQEAgLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIHBhZ2VOYQogICAgIF9kYXRh
ID0gW1tXS1ZpZXdEYXRhIGFsbG9jXSBpbml0XTsKIAogICAgIF9kYXRhLT5fcGFnZUNsaWVudCA9
IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGUoc2VsZik7Ci0gICAgX2RhdGEtPl9wYWdlID0gdG9JbXBs
KHBhZ2VOYW1lc3BhY2VSZWYpLT5jcmVhdGVXZWJQYWdlKHRvSW1wbChwYWdlR3JvdXBSZWYpKTsK
KyAgICBfZGF0YS0+X3BhZ2UgPSBwYWdlTmFtZXNwYWNlLT5jcmVhdGVXZWJQYWdlKHBhZ2VHcm91
cCk7CiAgICAgX2RhdGEtPl9wYWdlLT5zZXRQYWdlQ2xpZW50KF9kYXRhLT5fcGFnZUNsaWVudC5n
ZXQoKSk7CiAgICAgX2RhdGEtPl9wYWdlLT5zZXREcmF3aW5nQXJlYShDaHVua2VkVXBkYXRlRHJh
d2luZ0FyZWFQcm94eTo6Y3JlYXRlKHNlbGYpKTsKICAgICBfZGF0YS0+X3BhZ2UtPmluaXRpYWxp
emVXZWJQYWdlKEludFNpemUoZnJhbWUuc2l6ZSkpOwpAQCAtMTY4LDE3ICsyMTMsNiBAQCAtIChp
ZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgcGFnZU5hCiAgICAgcmV0dXJuIHNlbGY7CiB9
CiAKLS0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBwYWdlTmFtZXNwYWNlUmVmOihX
S1BhZ2VOYW1lc3BhY2VSZWYpcGFnZU5hbWVzcGFjZVJlZgotewotICAgIHJldHVybiBbc2VsZiBp
bml0V2l0aEZyYW1lOmZyYW1lIHBhZ2VOYW1lc3BhY2VSZWY6cGFnZU5hbWVzcGFjZVJlZiBwYWdl
R3JvdXBSZWY6bmlsXTsKLX0KLQotLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lCi17
Ci0gICAgV2ViQ29udGV4dCogY29udGV4dCA9IFdlYkNvbnRleHQ6OnNoYXJlZFByb2Nlc3NDb250
ZXh0KCk7Ci0gICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoRnJhbWU6ZnJhbWUgcGFnZU5hbWVzcGFj
ZVJlZjp0b0FQSShjb250ZXh0LT5jcmVhdGVQYWdlTmFtZXNwYWNlKCkpXTsKLX0KLQogLSAodm9p
ZClkZWFsbG9jCiB7CiAgICAgX2RhdGEtPl9wYWdlLT5jbG9zZSgpOwpJbmRleDogV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3F3a2NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xd2tjb250ZXh0LmNwcAkocmV2aXNpb24gNzM4ODMpCisrKyBXZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXdrY29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDE1
ICs1MCwyMyBAQCBRV0tDb250ZXh0OjpRV0tDb250ZXh0KFFPYmplY3QqIHBhcmVudCkKICAgICAs
IGQobmV3IFFXS0NvbnRleHRQcml2YXRlKHRoaXMpKQogewogICAgIGQtPmNvbnRleHQgPSBXZWJD
b250ZXh0OjpjcmVhdGUoU3RyaW5nKCkpOwotICAgIGQtPnBhZ2VOYW1lc3BhY2UgPSBkLT5jb250
ZXh0LT5jcmVhdGVQYWdlTmFtZXNwYWNlKCk7CisgICAgZC0+cGFnZU5hbWVzcGFjZSA9IGQtPmNv
bnRleHQtPnNoYXJlZFBhZ2VOYW1lc3BhY2UoKTsKIH0KIAotUVdLQ29udGV4dDo6UVdLQ29udGV4
dChXS1BhZ2VOYW1lc3BhY2VSZWYgcGFnZU5hbWVzcGFjZVJlZiwgUU9iamVjdCogcGFyZW50KQor
UVdLQ29udGV4dDo6UVdLQ29udGV4dChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgUU9iamVjdCog
cGFyZW50KQogICAgIDogUU9iamVjdChwYXJlbnQpCiAgICAgLCBkKG5ldyBRV0tDb250ZXh0UHJp
dmF0ZSh0aGlzKSkKIHsKLSAgICBkLT5wYWdlTmFtZXNwYWNlID0gdG9JbXBsKHBhZ2VOYW1lc3Bh
Y2VSZWYpOwotICAgIGQtPmNvbnRleHQgPSBkLT5wYWdlTmFtZXNwYWNlLT5jb250ZXh0KCk7Cisg
ICAgZC0+Y29udGV4dCA9IHRvSW1wbChjb250ZXh0UmVmKTsKKyAgICBkLT5wYWdlTmFtZXNwYWNl
ID0gZC0+Y29udGV4dC0+c2hhcmVkUGFnZU5hbWVzcGFjZSgpOworfQorCitRV0tDb250ZXh0OjpR
V0tDb250ZXh0KFdLUGFnZVJlZiBwYWdlUmVmLCBRT2JqZWN0KiBwYXJlbnQpCisgICAgOiBRT2Jq
ZWN0KHBhcmVudCkKKyAgICAsIGQobmV3IFFXS0NvbnRleHRQcml2YXRlKHRoaXMpKQoreworICAg
IGQtPmNvbnRleHQgPSB0b0ltcGwocGFnZVJlZiktPmNvbnRleHQoKTsKKyAgICBkLT5wYWdlTmFt
ZXNwYWNlID0gZC0+Y29udGV4dC0+c2hhcmVkUGFnZU5hbWVzcGFjZSgpOwogfQogCiBRV0tDb250
ZXh0Ojp+UVdLQ29udGV4dCgpCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrY29u
dGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2tjb250ZXh0
LmgJKHJldmlzaW9uIDczODgzKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a2NvbnRl
eHQuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsOCBAQAogCiAjaW5jbHVkZSAicXdlYmtp
dGdsb2JhbC5oIgogI2luY2x1ZGUgPFFPYmplY3Q+Ci0jaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2VO
YW1lc3BhY2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQ29udGV4dC5oPgorI2luY2x1ZGUgPFdl
YktpdDIvV0tQYWdlLmg+CiAKIGNsYXNzIFFXS0NvbnRleHRQcml2YXRlOwogCkBAIC0zMyw3ICsz
NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5RV0tDb250ZXh0KCk7CiAKICAgICAvLyBCcmlk
Z2UgZnJvbSB0aGUgQyBBUEkKLSAgICBRV0tDb250ZXh0KFdLUGFnZU5hbWVzcGFjZVJlZiBwYWdl
TmFtZXNwYWNlUmVmLCBRT2JqZWN0KiBwYXJlbnQgPSAwKTsKKyAgICBRV0tDb250ZXh0KFdLQ29u
dGV4dFJlZiBjb250ZXh0UmVmLCBRT2JqZWN0KiBwYXJlbnQgPSAwKTsKKyAgICBRV0tDb250ZXh0
KFdLUGFnZVJlZiBwYWdlUmVmLCBRT2JqZWN0KiBwYXJlbnQgPSAwKTsKIAogcHJpdmF0ZToKICAg
ICBRV0tDb250ZXh0UHJpdmF0ZSogZDsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJ
bnNwZWN0b3JQcm94eU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
V2ViSW5zcGVjdG9yUHJveHlNYWMubW0JKHJldmlzaW9uIDczODgzKQorKysgV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03OCwx
MCArNzgsMTAgQEAgV2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcgogICAg
IEFTU0VSVChtX3BhZ2UpOwogICAgIEFTU0VSVCghbV9pbnNwZWN0b3JWaWV3KTsKIAotICAgIG1f
aW5zcGVjdG9yVmlldy5hZG9wdE5TKFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVy
b1JlY3QgcGFnZU5hbWVzcGFjZVJlZjp0b0FQSShtX3BhZ2UtPnBhZ2VOYW1lc3BhY2UoKSkgcGFn
ZUdyb3VwUmVmOnRvQVBJKGluc3BlY3RvclBhZ2VHcm91cCgpKV0pOworICAgIG1faW5zcGVjdG9y
Vmlldy5hZG9wdE5TKFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgZm9y
QXNzb2NpYXRlZFBhZ2VSZWY6dG9BUEkocGFnZSgpKSBwYWdlR3JvdXBSZWY6dG9BUEkoaW5zcGVj
dG9yUGFnZUdyb3VwKCkpXSk7CiAgICAgQVNTRVJUKG1faW5zcGVjdG9yVmlldyk7CiAKLSAgICBy
ZXR1cm4gdG9JbXBsKFttX2luc3BlY3RvclZpZXcuZ2V0KCkgcGFnZVJlZl0pOworICAgIHJldHVy
biB0b0ltcGwobV9pbnNwZWN0b3JWaWV3LmdldCgpLnBhZ2VSZWYpOwogfQogCiB2b2lkIFdlYklu
c3BlY3RvclByb3h5OjpwbGF0Zm9ybU9wZW4oKQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3Mvd2lu
L1dlYkluc3BlY3RvclByb3h5V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vz
cy93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwCShyZXZpc2lvbiA3Mzg4MykKKysrIFdlYktp
dDIvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE0MSw4ICsxNDEsOCBAQCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0
Zm9yCiAgICAgQVNTRVJUKCFtX2luc3BlY3RvcldpbmRvdyk7CiAKICAgICBSRUNUIGVtcHR5UmVj
dCA9IHswfTsKLSAgICBtX2luc3BlY3RvclZpZXcgPSBXZWJWaWV3OjpjcmVhdGUoZW1wdHlSZWN0
LCBtX3BhZ2UtPnBhZ2VOYW1lc3BhY2UoKSwgaW5zcGVjdG9yUGFnZUdyb3VwKCksIDApLmxlYWtS
ZWYoKTsKLSAgICAKKyAgICBtX2luc3BlY3RvclZpZXcgPSBXZWJWaWV3OjpjcmVhdGVGb3JBc3Nv
Y2lhdGVkUGFnZShlbXB0eVJlY3QsIG1fcGFnZSwgaW5zcGVjdG9yUGFnZUdyb3VwKCksIDApLmxl
YWtSZWYoKTsKKwogICAgIHJldHVybiBtX2luc3BlY3RvclZpZXctPnBhZ2UoKTsKIH0KIApJbmRl
eDogV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gNzM4ODMpCisrKyBXZWJLaXQy
L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Miw3ICsxODIs
NyBAQCBib29sIFdlYlZpZXc6OnJlZ2lzdGVyV2ViVmlld1dpbmRvd0NsYXNzCiAgICAgcmV0dXJu
ICEhOjpSZWdpc3RlckNsYXNzRXgoJndjZXgpOwogfQogCi1XZWJWaWV3OjpXZWJWaWV3KFJFQ1Qg
cmVjdCwgV2ViUGFnZU5hbWVzcGFjZSogcGFnZU5hbWVzcGFjZSwgV2ViUGFnZUdyb3VwKiBwYWdl
R3JvdXAsIEhXTkQgcGFyZW50V2luZG93KQorV2ViVmlldzo6V2ViVmlldyhSRUNUIHJlY3QsIFdl
YkNvbnRleHQqIGNvbnRleHQsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwLCBIV05EIHBhcmVudFdp
bmRvdywgYm9vbCB1c2luZ1NoYXJlZFByb2Nlc3MpCiAgICAgOiBtX3JlY3QocmVjdCkKICAgICAs
IG1fdG9wTGV2ZWxQYXJlbnRXaW5kb3coMCkKICAgICAsIG1fdG9vbFRpcFdpbmRvdygwKQpAQCAt
MTkyLDYgKzE5MiwzMCBAQCBXZWJWaWV3OjpXZWJWaWV3KFJFQ1QgcmVjdCwgV2ViUGFnZU5hbWVz
CiAgICAgLCBtX3RyYWNraW5nTW91c2VMZWF2ZShmYWxzZSkKICAgICAsIG1faXNCZWluZ0Rlc3Ry
b3llZChmYWxzZSkKIHsKKyAgICBSZWZQdHI8V2ViUGFnZU5hbWVzcGFjZT4gcGFnZU5hbWVzcGFj
ZTsKKyAgICBpZiAodXNpbmdTaGFyZWRQcm9jZXNzKQorICAgICAgICBwYWdlTmFtZXNwYWNlID0g
Y29udGV4dC0+c2hhcmVkUGFnZU5hbWVzcGFjZSgpOworICAgIGVsc2UKKyAgICAgICAgcGFnZU5h
bWVzcGFjZSA9IGNvbnRleHQtPmNyZWF0ZVBhZ2VOYW1lc3BhY2UoKTsKKworICAgIGluaXRpYWxp
emUocGFnZU5hbWVzcGFjZS5nZXQoKSwgcGFnZUdyb3VwLCBwYXJlbnRXaW5kb3cpOworfQorCitX
ZWJWaWV3OjpXZWJWaWV3KFJFQ1QgcmVjdCwgV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJQYWdlR3Jv
dXAqIHBhZ2VHcm91cCwgSFdORCBwYXJlbnRXaW5kb3cpCisgICAgOiBtX3JlY3QocmVjdCkKKyAg
ICAsIG1fdG9wTGV2ZWxQYXJlbnRXaW5kb3coMCkKKyAgICAsIG1fdG9vbFRpcFdpbmRvdygwKQor
ICAgICwgbV9sYXN0Q3Vyc29yU2V0KDApCisgICAgLCBtX3dlYkNvcmVDdXJzb3IoMCkKKyAgICAs
IG1fb3ZlcnJpZGVDdXJzb3IoMCkKKyAgICAsIG1fdHJhY2tpbmdNb3VzZUxlYXZlKGZhbHNlKQor
ICAgICwgbV9pc0JlaW5nRGVzdHJveWVkKGZhbHNlKQoreworICAgIGluaXRpYWxpemUocGFnZS0+
cGFnZU5hbWVzcGFjZSgpLCBwYWdlR3JvdXAsIHBhcmVudFdpbmRvdyk7Cit9CisKK3ZvaWQgV2Vi
Vmlldzo6aW5pdGlhbGl6ZShXZWJQYWdlTmFtZXNwYWNlKiBwYWdlTmFtZXNwYWNlLCBXZWJQYWdl
R3JvdXAqIHBhZ2VHcm91cCwgSFdORCBwYXJlbnRXaW5kb3cpCit7CiAgICAgcmVnaXN0ZXJXZWJW
aWV3V2luZG93Q2xhc3MoKTsKIAogICAgIG1fcGFnZSA9IHBhZ2VOYW1lc3BhY2UtPmNyZWF0ZVdl
YlBhZ2UocGFnZUdyb3VwKTsKQEAgLTE5OSwxMCArMjIzLDEwIEBAIFdlYlZpZXc6OldlYlZpZXco
UkVDVCByZWN0LCBXZWJQYWdlTmFtZXMKICAgICBtX3BhZ2UtPnNldERyYXdpbmdBcmVhKENodW5r
ZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5OjpjcmVhdGUodGhpcykpOwogCiAgICAgbV93aW5kb3cg
PSA6OkNyZWF0ZVdpbmRvd0V4KDAsIGtXZWJLaXQyV2ViVmlld1dpbmRvd0NsYXNzTmFtZSwgMCwg
V1NfQ0hJTEQgfCBXU19DTElQU0lCTElOR1MgfCBXU19DTElQQ0hJTERSRU4sCi0gICAgICAgIHJl
Y3QudG9wLCByZWN0LmxlZnQsIHJlY3QucmlnaHQgLSByZWN0LmxlZnQsIHJlY3QuYm90dG9tIC0g
cmVjdC50b3AsIHBhcmVudFdpbmRvdyA/IHBhcmVudFdpbmRvdyA6IEhXTkRfTUVTU0FHRSwgMCwg
aW5zdGFuY2VIYW5kbGUoKSwgdGhpcyk7CisgICAgICAgIG1fcmVjdC50b3AsIG1fcmVjdC5sZWZ0
LCBtX3JlY3QucmlnaHQgLSBtX3JlY3QubGVmdCwgbV9yZWN0LmJvdHRvbSAtIG1fcmVjdC50b3As
IHBhcmVudFdpbmRvdyA/IHBhcmVudFdpbmRvdyA6IEhXTkRfTUVTU0FHRSwgMCwgaW5zdGFuY2VI
YW5kbGUoKSwgdGhpcyk7CiAgICAgQVNTRVJUKDo6SXNXaW5kb3cobV93aW5kb3cpKTsKIAotICAg
IG1fcGFnZS0+aW5pdGlhbGl6ZVdlYlBhZ2UoSW50UmVjdChyZWN0KS5zaXplKCkpOworICAgIG1f
cGFnZS0+aW5pdGlhbGl6ZVdlYlBhZ2UoSW50UmVjdChtX3JlY3QpLnNpemUoKSk7CiAKICAgICA6
OlNob3dXaW5kb3cobV93aW5kb3csIFNXX1NIT1cpOwogCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vz
cy93aW4vV2ViVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJW
aWV3LmgJKHJldmlzaW9uIDczODgzKQorKysgV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcu
aAkod29ya2luZyBjb3B5KQpAQCAtNDEsOSArNDEsMTcgQEAgY2xhc3MgV2ViUGFnZU5hbWVzcGFj
ZTsKIAogY2xhc3MgV2ViVmlldyA6IHB1YmxpYyBBUElPYmplY3QsIHB1YmxpYyBQYWdlQ2xpZW50
LCBXZWJDb3JlOjpXaW5kb3dNZXNzYWdlTGlzdGVuZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFdlYlZpZXc+IGNyZWF0ZShSRUNUIHJlY3QsIFdlYlBhZ2VOYW1lc3BhY2UqIHBh
Z2VOYW1lc3BhY2UsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwLCBIV05EIHBhcmVudFdpbmRvdykK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJWaWV3PiBjcmVhdGUoUkVDVCByZWN0LCBXZWJDb250
ZXh0KiBjb250ZXh0LCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCwgSFdORCBwYXJlbnRXaW5kb3cp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlZpZXcocmVjdCwgcGFnZU5h
bWVzcGFjZSwgcGFnZUdyb3VwLCBwYXJlbnRXaW5kb3cpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBXZWJWaWV3KHJlY3QsIGNvbnRleHQsIHBhZ2VHcm91cCwgcGFyZW50V2luZG93LCBm
YWxzZSkpOworICAgIH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJWaWV3PiBjcmVhdGVVc2lu
Z1NoYXJlZFByb2Nlc3MoUkVDVCByZWN0LCBXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJQYWdlR3Jv
dXAqIHBhZ2VHcm91cCwgSFdORCBwYXJlbnRXaW5kb3cpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFdlYlZpZXcocmVjdCwgY29udGV4dCwgcGFnZUdyb3VwLCBwYXJlbnRXaW5k
b3csIHRydWUpKTsKKyAgICB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViVmlldz4gY3JlYXRl
Rm9yQXNzb2NpYXRlZFBhZ2UoUkVDVCByZWN0LCBXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYlBhZ2VH
cm91cCogcGFnZUdyb3VwLCBIV05EIHBhcmVudFdpbmRvdykKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgV2ViVmlldyhyZWN0LCBwYWdlLCBwYWdlR3JvdXAsIHBhcmVudFdpbmRv
dykpOwogICAgIH0KICAgICB+V2ViVmlldygpOwogCkBAIC01OCw3ICs2NiwxMCBAQCBwdWJsaWM6
CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlLmdldCgpOyB9
CiAKIHByaXZhdGU6Ci0gICAgV2ViVmlldyhSRUNULCBXZWJQYWdlTmFtZXNwYWNlKiwgV2ViUGFn
ZUdyb3VwKiwgSFdORCBwYXJlbnRXaW5kb3cpOworICAgIFdlYlZpZXcoUkVDVCwgV2ViQ29udGV4
dCosIFdlYlBhZ2VHcm91cCosIEhXTkQgcGFyZW50V2luZG93LCBib29sIHVzaW5nU2hhcmVkUHJv
Y2Vzcyk7CisgICAgV2ViVmlldyhSRUNULCBXZWJQYWdlUHJveHkqLCBXZWJQYWdlR3JvdXAqLCBI
V05EIHBhcmVudFdpbmRvdyk7CisKKyAgICB2b2lkIGluaXRpYWxpemUoV2ViUGFnZU5hbWVzcGFj
ZSosIFdlYlBhZ2VHcm91cCosIEhXTkQgcGFyZW50V2luZG93KTsKIAogICAgIHZpcnR1YWwgVHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gVHlwZVZpZXc7IH0KIApJbmRleDogV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDczODgzKQorKysgV2ViS2l0
Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU0
MSw4ICs1NDEsNiBAQAogCQlCQ0VFOTY2RDExMkZBRjU3MDA2QkNDMjQgLyogQXR0YWNobWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFRTk2NkIx
MTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuaCAqLzsgfTsKIAkJQkNFRTk4QzYxMTMzMTRE
NzAwNkJDQzI0IC8qIFdlYlBhZ2VOYW1lc3BhY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFRTk4QzQxMTMzMTRENzAwNkJDQzI0IC8qIFdlYlBh
Z2VOYW1lc3BhY2UuY3BwICovOyB9OwogCQlCQ0VFOThDNzExMzMxNEQ3MDA2QkNDMjQgLyogV2Vi
UGFnZU5hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkNFRTk4QzUxMTMzMTRENzAwNkJDQzI0IC8qIFdlYlBhZ2VOYW1lc3BhY2UuaCAqLzsg
fTsKLQkJQkNFRTk4Q0MxMTMzMTc0QzAwNkJDQzI0IC8qIFdLUGFnZU5hbWVzcGFjZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0VFOThDQTExMzMx
NzRDMDA2QkNDMjQgLyogV0tQYWdlTmFtZXNwYWNlLmNwcCAqLzsgfTsKLQkJQkNFRTk4Q0QxMTMz
MTc0QzAwNkJDQzI0IC8qIFdLUGFnZU5hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFRTk4Q0IxMTMzMTc0QzAwNkJDQzI0IC8qIFdLUGFn
ZU5hbWVzcGFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsg
fTsKIAkJQkNGMDQ5RTYxMUZFMjBGNjAwRjg2QTU4IC8qIFdLQnVuZGxlRnJhbWVQcml2YXRlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0YwNDlFNDEx
RkUyMEY2MDBGODZBNTggLyogV0tCdW5kbGVGcmFtZVByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0YwNDlFNzExRkUyMEY2MDBGODZB
NTggLyogV0tCdW5kbGVQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0YwNDlFNTExRkUyMEY2MDBGODZBNTggLyogV0tCdW5kbGVQcml2YXRl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNG
NTAxMjExMjNFRDNCMzAwNTk1NUFFIC8qIFRocmVhZExhdW5jaGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Y1MDExRjEyM0VEM0IzMDA1OTU1QUUg
LyogVGhyZWFkTGF1bmNoZXIuaCAqLzsgfTsKQEAgLTExOTYsOCArMTE5NCw2IEBACiAJCUJDRUU5
NjZCMTEyRkFGNTcwMDZCQ0MyNCAvKiBBdHRhY2htZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEF0dGFjaG1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkNFRTk4QzQxMTMzMTRENzAwNkJDQzI0IC8qIFdlYlBhZ2VOYW1lc3BhY2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUGFnZU5hbWVzcGFjZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRUU5OEM1MTEzMzE0RDcwMDZCQ0MyNCAvKiBXZWJQ
YWdlTmFtZXNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBhZ2VO
YW1lc3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkNFRTk4Q0ExMTMzMTc0
QzAwNkJDQzI0IC8qIFdLUGFnZU5hbWVzcGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXS1BhZ2VOYW1lc3BhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlCQ0VFOThDQjExMzMxNzRDMDA2QkNDMjQgLyogV0tQYWdlTmFtZXNwYWNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUGFnZU5hbWVzcGFjZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0YwNDlFNDExRkUyMEY2MDBGODZBNTggLyogV0tCdW5k
bGVGcmFtZVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCdW5k
bGVGcmFtZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNGMDQ5RTUx
MUZFMjBGNjAwRjg2QTU4IC8qIFdLQnVuZGxlUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXS0J1bmRsZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkNGMDRDOEMxMUZGOUI3RDAwRjg2QTU4IC8qIEFQSU9iamVjdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBUElPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE5NzAsOCArMTk2Niw2IEBACiAJCQkJQkNENTk3RDUxMTJCNTZEQzAwRUM4QzIz
IC8qIFdLUGFnZS5oICovLAogCQkJCUJDN0I2MzM2MTJBNDVBQkEwMEQxNzRBNCAvKiBXS1BhZ2VH
cm91cC5jcHAgKi8sCiAJCQkJQkM3QjYzMzUxMkE0NUFCQTAwRDE3NEE0IC8qIFdLUGFnZUdyb3Vw
LmggKi8sCi0JCQkJQkNFRTk4Q0ExMTMzMTc0QzAwNkJDQzI0IC8qIFdLUGFnZU5hbWVzcGFjZS5j
cHAgKi8sCi0JCQkJQkNFRTk4Q0IxMTMzMTc0QzAwNkJDQzI0IC8qIFdLUGFnZU5hbWVzcGFjZS5o
ICovLAogCQkJCUJDMTc3NDY0MTE4QjlGRjQwMDdEOUU5QSAvKiBXS1BhZ2VQcml2YXRlLmggKi8s
CiAJCQkJQkNENTk3Q0YxMTJCNTZBQzAwRUM4QzIzIC8qIFdLUHJlZmVyZW5jZXMuY3BwICovLAog
CQkJCUJDRDU5N0NFMTEyQjU2QUMwMEVDOEMyMyAvKiBXS1ByZWZlcmVuY2VzLmggKi8sCkBAIC0y
NTEwLDcgKzI1MDQsNiBAQAogCQkJCUJDQjlGNkE1MTEyM0REMEQwMEExMzdFMCAvKiBXS0ZyYW1l
UG9saWN5TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRjY5RkE5MTE3NkQxQ0IwMDQ3
MUE1MiAvKiBXS05hdmlnYXRpb25EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0Q1OTdENzEx
MkI1NkRDMDBFQzhDMjMgLyogV0tQYWdlLmggaW4gSGVhZGVycyAqLywKLQkJCQlCQ0VFOThDRDEx
MzMxNzRDMDA2QkNDMjQgLyogV0tQYWdlTmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzE3NzQ2NTExOEI5RkY0MDA3RDlFOUEgLyogV0tQYWdlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNENTk3RDAxMTJCNTZBQzAwRUM4QzIzIC8qIFdLUHJlZmVyZW5jZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTc2MkI3NDhEMTIwQkM3NUMwMDgxOTMzOSAvKiBXS1ByZWZlcmVuY2VzUHJp
dmF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTM1LDcgKzI5MjgsNiBAQAogCQkJCUJDQjlGNkE2
MTEyM0REMEQwMEExMzdFMCAvKiBXS0ZyYW1lUG9saWN5TGlzdGVuZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkNGNjlGQUExMTc2RDFDQjAwNDcxQTUyIC8qIFdLTmF2aWdhdGlvbkRhdGEuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkNENTk3RDYxMTJCNTZEQzAwRUM4QzIzIC8qIFdLUGFnZS5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQlCQ0VFOThDQzExMzMxNzRDMDA2QkNDMjQgLyogV0tQYWdl
TmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRDU5N0QxMTEyQjU2QUMwMEVDOEMy
MyAvKiBXS1ByZWZlcmVuY2VzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDODY5OUI2MTE2QUFE
QUEwMDJBOTI1QiAvKiBXS1ZpZXcubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzJFNkU4RDExNDE5
NzE1MDBBNjNCMUUgLyogV29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogV2ViS2l0
Mi93aW4vV2ViS2l0Mi52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi93aW4vV2ViS2l0Mi52
Y3Byb2oJKHJldmlzaW9uIDczODgzKQorKysgV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oJKHdv
cmtpbmcgY29weSkKQEAgLTIyMjUsMTQgKzIyMjUsNiBAQAogCQkJCQkJPgogCQkJCQk8L0ZpbGU+
CiAJCQkJCTxGaWxlCi0JCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xBUElcQ1xXS1Bh
Z2VOYW1lc3BhY2UuY3BwIgotCQkJCQkJPgotCQkJCQk8L0ZpbGU+Ci0JCQkJCTxGaWxlCi0JCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xBUElcQ1xXS1BhZ2VOYW1lc3BhY2UuaCIKLQkJ
CQkJCT4KLQkJCQkJPC9GaWxlPgotCQkJCQk8RmlsZQogCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxV
SVByb2Nlc3NcQVBJXENcV0tQYWdlUHJpdmF0ZS5oIgogCQkJCQkJPgogCQkJCQk8L0ZpbGU+Cklu
ZGV4OiBXZWJLaXQyL3dpbi9XZWJLaXQyR2VuZXJhdGVkLm1ha2UKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0Mi93aW4vV2ViS2l0MkdlbmVyYXRlZC5tYWtlCShyZXZpc2lvbiA3Mzg4MykKKysrIFdlYktp
dDIvd2luL1dlYktpdDJHZW5lcmF0ZWQubWFrZQkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEs
NiBAQCBhbGw6CiAgICAgeGNvcHkgL3kgL2QgIi4uXFVJUHJvY2Vzc1xBUElcQ1xXS05hdmlnYXRp
b25EYXRhLmgiICIkKFdFQktJVE9VVFBVVERJUilcaW5jbHVkZVxXZWJLaXQyIgogICAgIHhjb3B5
IC95IC9kICIuLlxVSVByb2Nlc3NcQVBJXENcV0tQYWdlLmgiICIkKFdFQktJVE9VVFBVVERJUilc
aW5jbHVkZVxXZWJLaXQyIgogICAgIHhjb3B5IC95IC9kICIuLlxVSVByb2Nlc3NcQVBJXENcV0tQ
YWdlR3JvdXAuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCi0gICAgeGNv
cHkgL3kgL2QgIi4uXFVJUHJvY2Vzc1xBUElcQ1xXS1BhZ2VOYW1lc3BhY2UuaCIgIiQoV0VCS0lU
T1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCiAgICAgeGNvcHkgL3kgL2QgIi4uXFVJUHJvY2Vz
c1xBUElcQ1xXS1ByZWZlcmVuY2VzLmgiICIkKFdFQktJVE9VVFBVVERJUilcaW5jbHVkZVxXZWJL
aXQyIgogICAgIHhjb3B5IC95IC9kICIuLlxVSVByb2Nlc3NcQVBJXENcV0tQcmVmZXJlbmNlc1By
aXZhdGUuaCIgIiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCiAgICAgeGNvcHkg
L3kgL2QgIi4uXFVJUHJvY2Vzc1xBUElcQ1xXS1Byb3RlY3Rpb25TcGFjZS5oIiAiJChXRUJLSVRP
VVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDczODgzKQorKysg
V2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDMgQEAKKzIw
MTAtMTItMTIgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgdGhlIFdlYktpdDIgcHVibGlj
IEFQSSBzbyB0aGVyZSBpcyBubyBleHBsaWNpdCBXS1BhZ2VOYW1lc3BhY2Ugb2JqZWN0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDg5OAorCisgICAg
ICAgICogTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLmg6CisgICAgICAgICogTWluaUJyb3dz
ZXIvbWFjL0FwcERlbGVnYXRlLm06CisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJX
aW5kb3dDb250cm9sbGVyLmg6CisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5k
b3dDb250cm9sbGVyLm06CisgICAgICAgICogTWluaUJyb3dzZXIvd2luL0Jyb3dzZXJWaWV3LmNw
cDoKKyAgICAgICAgQ29udmVydCBNaW5pQnJvd3NlciB0byBub3QgdXNlIFBhZ2VOYW1lc3BhY2Vz
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdlYlZpZXcuaDoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRG9jdW1lbnRTdGFydFVzZXJTY3JpcHRBbGVy
dENyYXNoLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRXZhbHVh
dGVKYXZhU2NyaXB0LmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIv
RmFpbGVkTG9hZC5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0Zp
bmQuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9GcmFtZU1JTUVU
eXBlSFRNTC5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0ZyYW1l
TUlNRVR5cGVQTkcuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9J
bmplY3RlZEJ1bmRsZUJhc2ljLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDIvUGFnZUxvYWRCYXNpYy5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyL1BhZ2VMb2FkRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWUuY3BwOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9QcmV2ZW50RW1wdHlVc2VyQWdl
bnQuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9TcGFjZWJhclNj
cm9sbGluZy5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL3dpbi9B
bHRLZXlHZW5lcmF0ZXNXTVN5c0NvbW1hbmQuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mi93aW4vV01DbG9zZUNhbGxzVUlDbGllbnRDbG9zZS5jcHA6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvd2luL1BsYXRmb3JtV2ViVmlld1dpbi5jcHA6CisgICAgICAgIENvbnZlcnQg
VGVzdFdlYktpdEFQSSB0byBub3QgdXNlIFBhZ2VOYW1lc3BhY2VzLgorCisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJW
aWV3TWFjLm1tOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvcXQvUGxhdGZvcm1XZWJWaWV3
UXQuY3BwOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvd2luL1BsYXRmb3JtV2ViVmlld1dp
bi5jcHA6CisgICAgICAgIENvbnZlcnQgV2ViS2l0VGVzdFJ1bm5lciB0byBub3QgdXNlIFBhZ2VO
YW1lc3BhY2VzLgorCiAyMDEwLTEyLTEyICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDogV2ViS2l0VG9vbHMv
TWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMv
TWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLmgJKHJldmlzaW9uIDczODgzKQorKysgV2ViS2l0
VG9vbHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDEyICszMCwxMiBAQCBlbnVtIFByb2Nlc3NNb2RlbCB7CiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
UHJvY2Vzc01vZGVsOwogCiBAaW50ZXJmYWNlIEJyb3dzZXJBcHBEZWxlZ2F0ZSA6IE5TT2JqZWN0
IDxOU0FwcGxpY2F0aW9uRGVsZWdhdGU+IHsKLSAgICBQcm9jZXNzTW9kZWwgY3VycmVudFByb2Nl
c3NNb2RlbDsKLSAgICBXS1BhZ2VOYW1lc3BhY2VSZWYgdGhyZWFkUGFnZU5hbWVzcGFjZTsKLSAg
ICBXS1BhZ2VOYW1lc3BhY2VSZWYgcHJvY2Vzc1BhZ2VOYW1lc3BhY2U7CisgICAgUHJvY2Vzc01v
ZGVsIF9jdXJyZW50UHJvY2Vzc01vZGVsOworICAgIFdLQ29udGV4dFJlZiBfdGhyZWFkQ29udGV4
dDsKKyAgICBXS0NvbnRleHRSZWYgX3Byb2Nlc3NDb250ZXh0OwogfQogCi0tIChXS1BhZ2VOYW1l
c3BhY2VSZWYpZ2V0Q3VycmVudFBhZ2VOYW1lc3BhY2U7CistIChXS0NvbnRleHRSZWYpZ2V0Q3Vy
cmVudENvbnRleHQ7CiAKIC0gKElCQWN0aW9uKXNldFNoYXJlZFByb2Nlc3NQcm9jZXNzTW9kZWw6
KGlkKXNlbmRlcjsKIC0gKElCQWN0aW9uKXNldFNoYXJlZFRocmVhZFByb2Nlc3NNb2RlbDooaWQp
c2VuZGVyOwpJbmRleDogV2ViS2l0VG9vbHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm0J
KHJldmlzaW9uIDczODgzKQorKysgV2ViS2l0VG9vbHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVn
YXRlLm0JKHdvcmtpbmcgY29weSkKQEAgLTExNCw5ICsxMTQsOSBAQCAtIChpZClpbml0CiAgICAg
c2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAoc2VsZikgewogICAgICAgICBpZiAoW05TRXZl
bnQgbW9kaWZpZXJGbGFnc10gJiBOU1NoaWZ0S2V5TWFzaykKLSAgICAgICAgICAgIGN1cnJlbnRQ
cm9jZXNzTW9kZWwgPSBrUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5VGhyZWFkOworICAgICAg
ICAgICAgX2N1cnJlbnRQcm9jZXNzTW9kZWwgPSBrUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5
VGhyZWFkOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjdXJyZW50UHJvY2Vzc01vZGVsID0g
a1Byb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3M7CisgICAgICAgICAgICBfY3VycmVu
dFByb2Nlc3NNb2RlbCA9IGtQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzOwogCiAg
ICAgICAgIFdLQ29udGV4dEhpc3RvcnlDbGllbnQgaGlzdG9yeUNsaWVudCA9IHsKICAgICAgICAg
ICAgIDAsCkBAIC0xMjgsMTcgKzEyOCwxNCBAQCAtIChpZClpbml0CiAgICAgICAgICAgICBwb3B1
bGF0ZVZpc2l0ZWRMaW5rcwogICAgICAgICB9OwogCi0gICAgICAgIFdLQ29udGV4dFJlZiB0aHJl
YWRDb250ZXh0ID0gV0tDb250ZXh0R2V0U2hhcmVkVGhyZWFkQ29udGV4dCgpOwotICAgICAgICBX
S0NvbnRleHRTZXRIaXN0b3J5Q2xpZW50KHRocmVhZENvbnRleHQsICZoaXN0b3J5Q2xpZW50KTsK
LSAgICAgICAgV0tDb250ZXh0U2V0Q2FjaGVNb2RlbCh0aHJlYWRDb250ZXh0LCBrV0tDYWNoZU1v
ZGVsUHJpbWFyeVdlYkJyb3dzZXIpOwotCi0gICAgICAgIHRocmVhZFBhZ2VOYW1lc3BhY2UgPSBX
S1BhZ2VOYW1lc3BhY2VDcmVhdGUodGhyZWFkQ29udGV4dCk7Ci0gICAgICAgIFdLUmVsZWFzZSh0
aHJlYWRDb250ZXh0KTsKKyAgICAgICAgX3RocmVhZENvbnRleHQgPSBXS0NvbnRleHRHZXRTaGFy
ZWRUaHJlYWRDb250ZXh0KCk7CisgICAgICAgIFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQoX3Ro
cmVhZENvbnRleHQsICZoaXN0b3J5Q2xpZW50KTsKKyAgICAgICAgV0tDb250ZXh0U2V0Q2FjaGVN
b2RlbChfdGhyZWFkQ29udGV4dCwga1dLQ2FjaGVNb2RlbFByaW1hcnlXZWJCcm93c2VyKTsKIAog
ICAgICAgICBDRlN0cmluZ1JlZiBidW5kbGVQYXRoQ0YgPSAoQ0ZTdHJpbmdSZWYpW1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSBwYXRoRm9yQXV4aWxpYXJ5RXhlY3V0YWJsZTpAIldlYkJ1bmRsZS5idW5k
bGUiXTsKICAgICAgICAgV0tTdHJpbmdSZWYgYnVuZGxlUGF0aCA9IFdLU3RyaW5nQ3JlYXRlV2l0
aENGU3RyaW5nKGJ1bmRsZVBhdGhDRik7CiAKLSAgICAgICAgV0tDb250ZXh0UmVmIHByb2Nlc3ND
b250ZXh0ID0gV0tDb250ZXh0Q3JlYXRlV2l0aEluamVjdGVkQnVuZGxlUGF0aChidW5kbGVQYXRo
KTsKKyAgICAgICAgX3Byb2Nlc3NDb250ZXh0ID0gV0tDb250ZXh0Q3JlYXRlV2l0aEluamVjdGVk
QnVuZGxlUGF0aChidW5kbGVQYXRoKTsKICAgICAgICAgCiAgICAgICAgIFdLQ29udGV4dEluamVj
dGVkQnVuZGxlQ2xpZW50IGJ1bmRsZUNsaWVudCA9IHsKICAgICAgICAgICAgIDAsICAgICAgLyog
dmVyc2lvbiAqLwpAQCAtMTQ2LDEyICsxNDMsOSBAQCAtIChpZClpbml0CiAgICAgICAgICAgICBk
aWRSZWNpZXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSwKICAgICAgICAgICAgIDAKICAgICAg
ICAgfTsKLSAgICAgICAgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQocHJvY2Vzc0Nv
bnRleHQsICZidW5kbGVDbGllbnQpOwotICAgICAgICBXS0NvbnRleHRTZXRIaXN0b3J5Q2xpZW50
KHByb2Nlc3NDb250ZXh0LCAmaGlzdG9yeUNsaWVudCk7Ci0gICAgICAgIFdLQ29udGV4dFNldENh
Y2hlTW9kZWwocHJvY2Vzc0NvbnRleHQsIGtXS0NhY2hlTW9kZWxQcmltYXJ5V2ViQnJvd3Nlcik7
Ci0KLSAgICAgICAgcHJvY2Vzc1BhZ2VOYW1lc3BhY2UgPSBXS1BhZ2VOYW1lc3BhY2VDcmVhdGUo
cHJvY2Vzc0NvbnRleHQpOwotICAgICAgICBXS1JlbGVhc2UocHJvY2Vzc0NvbnRleHQpOworICAg
ICAgICBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudChfcHJvY2Vzc0NvbnRleHQsICZi
dW5kbGVDbGllbnQpOworICAgICAgICBXS0NvbnRleHRTZXRIaXN0b3J5Q2xpZW50KF9wcm9jZXNz
Q29udGV4dCwgJmhpc3RvcnlDbGllbnQpOworICAgICAgICBXS0NvbnRleHRTZXRDYWNoZU1vZGVs
KF9wcm9jZXNzQ29udGV4dCwga1dLQ2FjaGVNb2RlbFByaW1hcnlXZWJCcm93c2VyKTsKIAogICAg
ICAgICBXS1JlbGVhc2UoYnVuZGxlUGF0aCk7CiAgICAgfQpAQCAtMTYxLDMyICsxNTUsMzIgQEAg
LSAoaWQpaW5pdAogCiAtIChJQkFjdGlvbiluZXdXaW5kb3c6KGlkKXNlbmRlcgogewotICAgIEJy
b3dzZXJXaW5kb3dDb250cm9sbGVyICpjb250cm9sbGVyID0gW1tCcm93c2VyV2luZG93Q29udHJv
bGxlciBhbGxvY10gaW5pdFdpdGhQYWdlTmFtZXNwYWNlOltzZWxmIGdldEN1cnJlbnRQYWdlTmFt
ZXNwYWNlXV07CisgICAgQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgKmNvbnRyb2xsZXIgPSBbW0Jy
b3dzZXJXaW5kb3dDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aENvbnRleHQ6W3NlbGYgZ2V0Q3Vy
cmVudENvbnRleHRdXTsKICAgICBbW2NvbnRyb2xsZXIgd2luZG93XSBtYWtlS2V5QW5kT3JkZXJG
cm9udDpzZW5kZXJdOwogICAgIAogICAgIFtjb250cm9sbGVyIGxvYWRVUkxTdHJpbmc6ZGVmYXVs
dFVSTF07CiB9CiAKLS0gKFdLUGFnZU5hbWVzcGFjZVJlZilnZXRDdXJyZW50UGFnZU5hbWVzcGFj
ZQorLSAoV0tDb250ZXh0UmVmKWdldEN1cnJlbnRDb250ZXh0CiB7Ci0gICAgcmV0dXJuIChjdXJy
ZW50UHJvY2Vzc01vZGVsID09IGtQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlUaHJlYWQpID8g
dGhyZWFkUGFnZU5hbWVzcGFjZSA6IHByb2Nlc3NQYWdlTmFtZXNwYWNlOworICAgIHJldHVybiAo
X2N1cnJlbnRQcm9jZXNzTW9kZWwgPT0ga1Byb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVRocmVh
ZCkgPyBfdGhyZWFkQ29udGV4dCA6IF9wcm9jZXNzQ29udGV4dDsKIH0KIAogLSAoQk9PTCl2YWxp
ZGF0ZU1lbnVJdGVtOihOU01lbnVJdGVtICopbWVudUl0ZW0KIHsKICAgICBpZiAoW21lbnVJdGVt
IGFjdGlvbl0gPT0gQHNlbGVjdG9yKHNldFNoYXJlZFByb2Nlc3NQcm9jZXNzTW9kZWw6KSkKLSAg
ICAgICAgW21lbnVJdGVtIHNldFN0YXRlOmN1cnJlbnRQcm9jZXNzTW9kZWwgPT0ga1Byb2Nlc3NN
b2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MgPyBOU09uU3RhdGUgOiBOU09mZlN0YXRlXTsKKyAg
ICAgICAgW21lbnVJdGVtIHNldFN0YXRlOl9jdXJyZW50UHJvY2Vzc01vZGVsID09IGtQcm9jZXNz
TW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzID8gTlNPblN0YXRlIDogTlNPZmZTdGF0ZV07CiAg
ICAgZWxzZSBpZiAoW21lbnVJdGVtIGFjdGlvbl0gPT0gQHNlbGVjdG9yKHNldFNoYXJlZFRocmVh
ZFByb2Nlc3NNb2RlbDopKQotICAgICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6Y3VycmVudFByb2Nl
c3NNb2RlbCA9PSBrUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5VGhyZWFkID8gTlNPblN0YXRl
IDogTlNPZmZTdGF0ZV07CisgICAgICAgIFttZW51SXRlbSBzZXRTdGF0ZTpfY3VycmVudFByb2Nl
c3NNb2RlbCA9PSBrUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5VGhyZWFkID8gTlNPblN0YXRl
IDogTlNPZmZTdGF0ZV07CiAgICAgcmV0dXJuIFlFUzsKIH0gICAgICAgIAogCiAtICh2b2lkKV9z
ZXRQcm9jZXNzTW9kZWw6KFByb2Nlc3NNb2RlbClwcm9jZXNzTW9kZWwKIHsKLSAgICBpZiAocHJv
Y2Vzc01vZGVsID09IGN1cnJlbnRQcm9jZXNzTW9kZWwpCisgICAgaWYgKHByb2Nlc3NNb2RlbCA9
PSBfY3VycmVudFByb2Nlc3NNb2RlbCkKICAgICAgICAgcmV0dXJuOwogIAotICAgIGN1cnJlbnRQ
cm9jZXNzTW9kZWwgPSBwcm9jZXNzTW9kZWw7CisgICAgX2N1cnJlbnRQcm9jZXNzTW9kZWwgPSBw
cm9jZXNzTW9kZWw7CiB9CiAKIC0gKElCQWN0aW9uKXNldFNoYXJlZFByb2Nlc3NQcm9jZXNzTW9k
ZWw6KGlkKXNlbmRlcgpAQCAtMjAzLDggKzE5Nyw4IEBAIC0gKElCQWN0aW9uKXNob3dTdGF0aXN0
aWNzV2luZG93OihpZClzZW4KIHsKICAgICBzdGF0aWMgQnJvd3NlclN0YXRpc3RpY3NXaW5kb3dD
b250cm9sbGVyKiB3aW5kb3dDb250cm9sbGVyOwogICAgIGlmICghd2luZG93Q29udHJvbGxlcikK
LSAgICAgICAgd2luZG93Q29udHJvbGxlciA9IFtbQnJvd3NlclN0YXRpc3RpY3NXaW5kb3dDb250
cm9sbGVyIGFsbG9jXSBpbml0V2l0aFRocmVhZGVkV0tDb250ZXh0UmVmOldLUGFnZU5hbWVzcGFj
ZUdldENvbnRleHQodGhyZWFkUGFnZU5hbWVzcGFjZSkgCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJvY2Vzc1dLQ29udGV4dFJlZjpXS1BhZ2VOYW1lc3BhY2VHZXRDb250ZXh0KHByb2Nlc3NQYWdl
TmFtZXNwYWNlKV07CisgICAgICAgIHdpbmRvd0NvbnRyb2xsZXIgPSBbW0Jyb3dzZXJTdGF0aXN0
aWNzV2luZG93Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhUaHJlYWRlZFdLQ29udGV4dFJlZjpf
dGhyZWFkQ29udGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NXS0NvbnRleHRSZWY6
X3Byb2Nlc3NDb250ZXh0XTsKIAogICAgIFtbd2luZG93Q29udHJvbGxlciB3aW5kb3ddIG1ha2VL
ZXlBbmRPcmRlckZyb250OnNlbGZdOwogfQpAQCAtMjI0LDEyICsyMTgsOSBAQCAtICh2b2lkKWFw
cGxpY2F0aW9uV2lsbFRlcm1pbmF0ZTooTlNOb3RpCiAgICAgICAgICAgICBbY29udHJvbGxlciBh
cHBsaWNhdGlvblRlcm1pbmF0aW5nXTsKICAgICAgICAgfQogICAgIH0KLSAgICAKLSAgICBXS1Jl
bGVhc2UodGhyZWFkUGFnZU5hbWVzcGFjZSk7Ci0gICAgdGhyZWFkUGFnZU5hbWVzcGFjZSA9IDA7
CiAKLSAgICBXS1JlbGVhc2UocHJvY2Vzc1BhZ2VOYW1lc3BhY2UpOwotICAgIHByb2Nlc3NQYWdl
TmFtZXNwYWNlID0gMDsKKyAgICBXS1JlbGVhc2UoX3Byb2Nlc3NDb250ZXh0KTsKKyAgICBfcHJv
Y2Vzc0NvbnRleHQgPSAwOwogfQogCiAtIChCcm93c2VyV2luZG93Q29udHJvbGxlciAqKWZyb250
bW9zdEJyb3dzZXJXaW5kb3dDb250cm9sbGVyCkBAIC0yNjUsNyArMjU2LDcgQEAgLSAodm9pZClv
cGVuUGFuZWxEaWRFbmQ6KE5TT3BlblBhbmVsICopcwogCiAgICAgQnJvd3NlcldpbmRvd0NvbnRy
b2xsZXIgKmNvbnRyb2xsZXIgPSBbc2VsZiBmcm9udG1vc3RCcm93c2VyV2luZG93Q29udHJvbGxl
cl07CiAgICAgaWYgKCFjb250cm9sbGVyKSB7Ci0gICAgICAgIGNvbnRyb2xsZXIgPSBbW0Jyb3dz
ZXJXaW5kb3dDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aFBhZ2VOYW1lc3BhY2U6W3NlbGYgZ2V0
Q3VycmVudFBhZ2VOYW1lc3BhY2VdXTsKKyAgICAgICAgY29udHJvbGxlciA9IFtbQnJvd3Nlcldp
bmRvd0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoQ29udGV4dDpbc2VsZiBnZXRDdXJyZW50Q29u
dGV4dF1dOwogICAgICAgICBbW2NvbnRyb2xsZXIgd2luZG93XSBtYWtlS2V5QW5kT3JkZXJGcm9u
dDpzZWxmXTsKICAgICB9CiAgICAgCkluZGV4OiBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci9tYWMv
QnJvd3NlcldpbmRvd0NvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9NaW5p
QnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIuaAkocmV2aXNpb24gNzM4ODMpCisr
KyBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBAaW50ZXJmYWNlIEJyb3dzZXJXaW5kb3dD
b250cm9sbGVyIDogTlNXCiAgICAgCiAgICAgSUJPdXRsZXQgTlNXaW5kb3cgKmZpbmRQYW5lbFdp
bmRvdzsKICAgICAKLSAgICBXS1BhZ2VOYW1lc3BhY2VSZWYgX3BhZ2VOYW1lc3BhY2U7CisgICAg
V0tDb250ZXh0UmVmIF9jb250ZXh0OwogICAgIFdLVmlldyAqX3dlYlZpZXc7CiAgICAgQk9PTCBf
em9vbVRleHRPbmx5OwogfQpAQCAtNDcsNyArNDcsNyBAQCBAaW50ZXJmYWNlIEJyb3dzZXJXaW5k
b3dDb250cm9sbGVyIDogTlNXCiAtIChJQkFjdGlvbilzaG93SGlkZVdlYlZpZXc6KGlkKXNlbmRl
cjsKIC0gKElCQWN0aW9uKXJlbW92ZVJlaW5zZXJ0V2ViVmlldzooaWQpc2VuZGVyOwogCi0tIChp
ZClpbml0V2l0aFBhZ2VOYW1lc3BhY2U6KFdLUGFnZU5hbWVzcGFjZVJlZilwYWdlTmFtZXNwYWNl
OworLSAoaWQpaW5pdFdpdGhDb250ZXh0OihXS0NvbnRleHRSZWYpY29udGV4dDsKIC0gKHZvaWQp
bG9hZFVSTFN0cmluZzooTlNTdHJpbmcgKil1cmxTdHJpbmc7CiAtICh2b2lkKWFwcGxpY2F0aW9u
VGVybWluYXRpbmc7CiAKSW5kZXg6IFdlYktpdFRvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2Vy
V2luZG93Q29udHJvbGxlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL01pbmlCcm93c2Vy
L21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tCShyZXZpc2lvbiA3Mzg4MykKKysrIFdlYktp
dFRvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tCSh3b3JraW5n
IGNvcHkpCkBAIC00MywxMCArNDMsMTAgQEAgLSAodm9pZClkaWRTYW1lRG9jdW1lbnROYXZpZ2F0
aW9uRm9yRnJhbQogCiBAaW1wbGVtZW50YXRpb24gQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIKIAot
LSAoaWQpaW5pdFdpdGhQYWdlTmFtZXNwYWNlOihXS1BhZ2VOYW1lc3BhY2VSZWYpcGFnZU5hbWVz
cGFjZQorLSAoaWQpaW5pdFdpdGhDb250ZXh0OihXS0NvbnRleHRSZWYpY29udGV4dAogewogICAg
IGlmICgoc2VsZiA9IFtzdXBlciBpbml0V2l0aFdpbmRvd05pYk5hbWU6QCJCcm93c2VyV2luZG93
Il0pKSB7Ci0gICAgICAgIF9wYWdlTmFtZXNwYWNlID0gV0tSZXRhaW4ocGFnZU5hbWVzcGFjZSk7
CisgICAgICAgIF9jb250ZXh0ID0gV0tSZXRhaW4oY29udGV4dCk7CiAgICAgICAgIF96b29tVGV4
dE9ubHkgPSBOTzsKICAgICB9CiAgICAgCkBAIC01NSw3ICs1NSw3IEBAIC0gKGlkKWluaXRXaXRo
UGFnZU5hbWVzcGFjZTooV0tQYWdlTmFtZXMKIAogLSAodm9pZClkZWFsbG9jCiB7Ci0gICAgYXNz
ZXJ0KCFfcGFnZU5hbWVzcGFjZSk7CisgICAgYXNzZXJ0KCFfY29udGV4dCk7CiAgICAgW3N1cGVy
IGRlYWxsb2NdOwogfQogCkBAIC0xNTcsOCArMTU3LDggQEAgLSAoQk9PTCl3aW5kb3dTaG91bGRD
bG9zZTooaWQpc2VuZGVyCiAKIC0gKHZvaWQpd2luZG93V2lsbENsb3NlOihOU05vdGlmaWNhdGlv
biAqKW5vdGlmaWNhdGlvbgogewotICAgIFdLUmVsZWFzZShfcGFnZU5hbWVzcGFjZSk7Ci0gICAg
X3BhZ2VOYW1lc3BhY2UgPSAwOworICAgIFdLUmVsZWFzZShfY29udGV4dCk7CisgICAgX2NvbnRl
eHQgPSAwOwogfQogCiAtICh2b2lkKWFwcGxpY2F0aW9uVGVybWluYXRpbmcKQEAgLTM4MCw3ICsz
ODAsNyBAQCBzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JNSU1FVHlwZShXS1BhCiBzdGF0aWMg
V0tQYWdlUmVmIGNyZWF0ZU5ld1BhZ2UoV0tQYWdlUmVmIHBhZ2UsIFdLRGljdGlvbmFyeVJlZiBm
ZWF0dXJlcywgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdLRXZlbnRNb3VzZUJ1dHRvbiBi
dXR0b24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CiAgICAgTE9HKEAiY3JlYXRlTmV3UGFn
ZSIpOwotICAgIEJyb3dzZXJXaW5kb3dDb250cm9sbGVyICpjb250cm9sbGVyID0gW1tCcm93c2Vy
V2luZG93Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhQYWdlTmFtZXNwYWNlOldLUGFnZUdldFBh
Z2VOYW1lc3BhY2UocGFnZSldOworICAgIEJyb3dzZXJXaW5kb3dDb250cm9sbGVyICpjb250cm9s
bGVyID0gW1tCcm93c2VyV2luZG93Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhDb250ZXh0OldL
UGFnZUdldENvbnRleHQocGFnZSldOwogICAgIFtjb250cm9sbGVyIGxvYWRXaW5kb3ddOwogCiAg
ICAgcmV0dXJuIGNvbnRyb2xsZXItPl93ZWJWaWV3LnBhZ2VSZWY7CkBAIC01MzcsNyArNTM3LDcg
QEAgc3RhdGljIGJvb2wgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKAogCiAtICh2b2lkKWF3
YWtlRnJvbU5pYgogewotICAgIF93ZWJWaWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6W2NvbnRhaW5lclZpZXcgZnJhbWVdIHBhZ2VOYW1lc3BhY2VSZWY6X3BhZ2VOYW1lc3BhY2Vd
OworICAgIF93ZWJWaWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6W2NvbnRhaW5l
clZpZXcgZnJhbWVdIGNvbnRleHRSZWY6X2NvbnRleHRdOwogCiAgICAgW2NvbnRhaW5lclZpZXcg
YWRkU3Vidmlldzpfd2ViVmlld107CiAgICAgW193ZWJWaWV3IHNldEZyYW1lOltjb250YWluZXJW
aWV3IGZyYW1lXV07CkluZGV4OiBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2lu
ZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2Vy
V2luZG93LmNwcAkocmV2aXNpb24gNzM4ODMpCisrKyBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci9x
dC9Ccm93c2VyV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgsNiBAQAogCiAj
aW5jbHVkZSAiQnJvd3NlcldpbmRvdy5oIgogCi0jaW5jbHVkZSAiV0tQYWdlTmFtZXNwYWNlLmgi
Ci0KIEJyb3dzZXJXaW5kb3c6OkJyb3dzZXJXaW5kb3coUUdyYXBoaWNzV0tWaWV3OjpCYWNraW5n
U3RvcmVUeXBlIHR5cGUpCiAgICAgOiBtX2JhY2tpbmdTdG9yZVR5cGUodHlwZSkKIHsKSW5kZXg6
IFdlYktpdFRvb2xzL01pbmlCcm93c2VyL3dpbi9Ccm93c2VyVmlldy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvTWluaUJyb3dzZXIvd2luL0Jyb3dzZXJWaWV3LmNwcAkocmV2aXNpb24g
NzM4ODMpCisrKyBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci93aW4vQnJvd3NlclZpZXcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05MCw5ICs5MCw3IEBAIHZvaWQgQnJvd3NlclZpZXc6OmNyZWF0ZShS
RUNUIHdlYlZpZXdSZWMKICAgICBlbHNlCiAgICAgICAgIGNvbnRleHQgPSBXS0NvbnRleHRHZXRT
aGFyZWRQcm9jZXNzQ29udGV4dCgpOwogCi0gICAgV0tQYWdlTmFtZXNwYWNlUmVmIHBhZ2VOYW1l
c3BhY2UgPSBXS1BhZ2VOYW1lc3BhY2VDcmVhdGUoY29udGV4dCk7Ci0KLSAgICBtX3dlYlZpZXcg
PSBXS1ZpZXdDcmVhdGUod2ViVmlld1JlY3QsIHBhZ2VOYW1lc3BhY2UsIDAsIHBhcmVudFdpbmRv
dy0+d2luZG93KCkpOworICAgIG1fd2ViVmlldyA9IFdLVmlld0NyZWF0ZSh3ZWJWaWV3UmVjdCwg
Y29udGV4dCwgMCwgcGFyZW50V2luZG93LT53aW5kb3coKSk7CiAKICAgICBXS1BhZ2VVSUNsaWVu
dCB1aUNsaWVudCA9IHsKICAgICAgICAgMCwgICAgICAgICAgICAgIC8qIHZlcnNpb24gKi8KSW5k
ZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdlYlZpZXcuaAkocmV2aXNp
b24gNzM4ODMpCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5o
CSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw4IEBAIGNsYXNzIFdpbmRvd01lc3NhZ2VPYnNl
cnZlcjsKIAogY2xhc3MgUGxhdGZvcm1XZWJWaWV3IHsKIHB1YmxpYzoKLSAgICBQbGF0Zm9ybVdl
YlZpZXcoV0tQYWdlTmFtZXNwYWNlUmVmLCBXS1BhZ2VHcm91cFJlZiA9IDApOworICAgIFBsYXRm
b3JtV2ViVmlldyhXS0NvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmID0gMCk7CisgICAgUGxhdGZv
cm1XZWJWaWV3KFdLUGFnZVJlZiwgV0tQYWdlR3JvdXBSZWYgPSAwKTsKICAgICB+UGxhdGZvcm1X
ZWJWaWV3KCk7CiAKICAgICBXS1BhZ2VSZWYgcGFnZSgpOwpJbmRleDogV2ViS2l0VG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RvY3VtZW50U3RhcnRVc2VyU2NyaXB0QWxlcnRDcmFz
aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyL0RvY3VtZW50U3RhcnRVc2VyU2NyaXB0QWxlcnRDcmFzaC5jcHAJKHJldmlzaW9uIDczODgz
KQorKysgV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RvY3VtZW50U3Rh
cnRVc2VyU2NyaXB0QWxlcnRDcmFzaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDggKzQ4LDcg
QEAgVEVTVChXZWJLaXQyLCBEb2N1bWVudFN0YXJ0VXNlclNjcmlwdEFsZQogICAgIFdLUmV0YWlu
UHRyPFdLUGFnZUdyb3VwUmVmPiBwYWdlR3JvdXAoQWRvcHRXSywgV0tQYWdlR3JvdXBDcmVhdGVX
aXRoSWRlbnRpZmllcihXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRG9jdW1lbnRTdGFy
dFVzZXJTY3JpcHRBbGVydENyYXNoVGVzdFBhZ2VHcm91cCIpKSk7IAogCiAgICAgV0tSZXRhaW5Q
dHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJ
bmplY3RlZEJ1bmRsZVRlc3QoIkRvY3VtZW50U3RhcnRVc2VyU2NyaXB0QWxlcnRDcmFzaFRlc3Qi
LCBwYWdlR3JvdXAuZ2V0KCkpKTsKLSAgICBXS1JldGFpblB0cjxXS1BhZ2VOYW1lc3BhY2VSZWY+
IHBhZ2VOYW1lc3BhY2UoQWRvcHRXSywgV0tQYWdlTmFtZXNwYWNlQ3JlYXRlKGNvbnRleHQuZ2V0
KCkpKTsKLSAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhwYWdlTmFtZXNwYWNlLmdldCgpLCBw
YWdlR3JvdXAuZ2V0KCkpOworICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0
KCksIHBhZ2VHcm91cC5nZXQoKSk7CiAKICAgICBXS1BhZ2VVSUNsaWVudCB1aUNsaWVudDsKICAg
ICBtZW1zZXQoJnVpQ2xpZW50LCAwLCBzaXplb2YodWlDbGllbnQpKTsKSW5kZXg6IFdlYktpdFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9FdmFsdWF0ZUphdmFTY3JpcHQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9FdmFs
dWF0ZUphdmFTY3JpcHQuY3BwCShyZXZpc2lvbiA3Mzg4MykKKysrIFdlYktpdFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9FdmFsdWF0ZUphdmFTY3JpcHQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00OSw4ICs0OSw3IEBAIHN0YXRpYyB2b2lkIGRpZFJ1bkphdmFTY3JpcHQoV0tTdHJp
bmdSZWYKIFRFU1QoV2ViS2l0MiwgRXZhbHVhdGVKYXZhU2NyaXB0VGhhdFRocm93c0FuRXhjZXB0
aW9uKQogewogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBX
S0NvbnRleHRDcmVhdGUoKSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tQYWdlTmFtZXNwYWNlUmVmPiBw
YWdlTmFtZXNwYWNlKEFkb3B0V0ssIFdLUGFnZU5hbWVzcGFjZUNyZWF0ZShjb250ZXh0LmdldCgp
KSk7Ci0gICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcocGFnZU5hbWVzcGFjZS5nZXQoKSk7Cisg
ICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7CiAKICAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gamF2YVNjcmlwdFN0cmluZyhBZG9wdFdLLCBXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygidGhyb3cgJ0hlbGxvJyIpKTsKICAgICBXS1BhZ2VSdW5KYXZhU2Ny
aXB0SW5NYWluRnJhbWUod2ViVmlldy5wYWdlKCksIGphdmFTY3JpcHRTdHJpbmcuZ2V0KCksIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDB4MTIzNDU3OCksIGRpZFJ1bkphdmFTY3JpcHQpOwpJbmRl
eDogV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0ZhaWxlZExvYWQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9G
YWlsZWRMb2FkLmNwcAkocmV2aXNpb24gNzM4ODMpCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDIvRmFpbGVkTG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDgg
KzQ5LDcgQEAgc3RhdGljIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcgogVEVTVChX
ZWJLaXQyLCBGYWlsZWRMb2FkKQogewogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29u
dGV4dChBZG9wdFdLLCBXS0NvbnRleHRDcmVhdGUoKSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tQYWdl
TmFtZXNwYWNlUmVmPiBwYWdlTmFtZXNwYWNlKEFkb3B0V0ssIFdLUGFnZU5hbWVzcGFjZUNyZWF0
ZShjb250ZXh0LmdldCgpKSk7Ci0gICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcocGFnZU5hbWVz
cGFjZS5nZXQoKSk7CisgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7
CiAKICAgICBXS1BhZ2VMb2FkZXJDbGllbnQgbG9hZGVyQ2xpZW50OwogICAgIG1lbXNldCgmbG9h
ZGVyQ2xpZW50LCAwLCBzaXplb2YobG9hZGVyQ2xpZW50KSk7CkluZGV4OiBXZWJLaXRUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRmluZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0ZpbmQuY3BwCShyZXZpc2lvbiA3Mzg4
MykKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9GaW5kLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTEsOSArNTEsNyBAQCBzdGF0aWMgdm9pZCBkaWRDb3VudFN0cmlu
Z01hdGNoZXMoV0tQYWdlCiBURVNUKFdlYktpdDIsIEZpbmQpCiB7CiAgICAgV0tSZXRhaW5QdHI8
V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFdLQ29udGV4dENyZWF0ZSgpKTsKLSAgICBX
S1JldGFpblB0cjxXS1BhZ2VOYW1lc3BhY2VSZWY+IHBhZ2VOYW1lc3BhY2UoQWRvcHRXSywgV0tQ
YWdlTmFtZXNwYWNlQ3JlYXRlKGNvbnRleHQuZ2V0KCkpKTsKLSAgICAKLSAgICBQbGF0Zm9ybVdl
YlZpZXcgd2ViVmlldyhwYWdlTmFtZXNwYWNlLmdldCgpKTsKKyAgICBQbGF0Zm9ybVdlYlZpZXcg
d2ViVmlldyhjb250ZXh0LmdldCgpKTsKICAgICAKICAgICBXS1BhZ2VMb2FkZXJDbGllbnQgbG9h
ZGVyQ2xpZW50OwogICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9hZGVyQ2xp
ZW50KSk7CkluZGV4OiBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRnJh
bWVNSU1FVHlwZUhUTUwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mi9GcmFtZU1JTUVUeXBlSFRNTC5jcHAJKHJldmlzaW9uIDczODgzKQor
KysgV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0ZyYW1lTUlNRVR5cGVI
VE1MLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsOCArNTcsNyBAQCBzdGF0aWMgdm9pZCBkaWRG
aW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlCiBURVNUKFdlYktpdDIsIEZyYW1lTUlNRVR5cGVIVE1M
KQogewogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBXS0Nv
bnRleHRDcmVhdGUoKSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tQYWdlTmFtZXNwYWNlUmVmPiBwYWdl
TmFtZXNwYWNlKEFkb3B0V0ssIFdLUGFnZU5hbWVzcGFjZUNyZWF0ZShjb250ZXh0LmdldCgpKSk7
Ci0gICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcocGFnZU5hbWVzcGFjZS5nZXQoKSk7CisgICAg
UGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7CiAKICAgICBXS1BhZ2VMb2Fk
ZXJDbGllbnQgbG9hZGVyQ2xpZW50OwogICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXpl
b2YobG9hZGVyQ2xpZW50KSk7CkluZGV4OiBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvRnJhbWVNSU1FVHlwZVBORy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0ZyYW1lTUlNRVR5cGVQTkcuY3BwCShyZXZpc2lv
biA3Mzg4MykKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9GcmFt
ZU1JTUVUeXBlUE5HLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsOCArNTcsNyBAQCBzdGF0aWMg
dm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlCiBURVNUKFdlYktpdDIsIEZyYW1lTUlN
RVR5cGVQTkcpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0
V0ssIFdLQ29udGV4dENyZWF0ZSgpKTsKLSAgICBXS1JldGFpblB0cjxXS1BhZ2VOYW1lc3BhY2VS
ZWY+IHBhZ2VOYW1lc3BhY2UoQWRvcHRXSywgV0tQYWdlTmFtZXNwYWNlQ3JlYXRlKGNvbnRleHQu
Z2V0KCkpKTsKLSAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhwYWdlTmFtZXNwYWNlLmdldCgp
KTsKKyAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgpKTsKIAogICAgIFdL
UGFnZUxvYWRlckNsaWVudCBsb2FkZXJDbGllbnQ7CiAgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQs
IDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mi9JbmplY3RlZEJ1bmRsZUJhc2ljLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvSW5qZWN0ZWRCdW5kbGVCYXNp
Yy5jcHAJKHJldmlzaW9uIDczODgzKQorKysgV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyL0luamVjdGVkQnVuZGxlQmFzaWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3
ICs1Myw2IEBAIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2UKIFRFU1Qo
V2ViS2l0MiwgSW5qZWN0ZWRCdW5kbGVCYXNpYykKIHsKICAgICBXS1JldGFpblB0cjxXS0NvbnRl
eHRSZWY+IGNvbnRleHQoQWRvcHRXSywgVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVu
ZGxlVGVzdCgiSW5qZWN0ZWRCdW5kbGVCYXNpY1Rlc3QiKSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tQ
YWdlTmFtZXNwYWNlUmVmPiBwYWdlTmFtZXNwYWNlKEFkb3B0V0ssIFdLUGFnZU5hbWVzcGFjZUNy
ZWF0ZShjb250ZXh0LmdldCgpKSk7CiAKICAgICBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVu
dCBpbmplY3RlZEJ1bmRsZUNsaWVudDsKICAgICBtZW1zZXQoJmluamVjdGVkQnVuZGxlQ2xpZW50
LCAwLCBzaXplb2YoaW5qZWN0ZWRCdW5kbGVDbGllbnQpKTsKQEAgLTYyLDcgKzYxLDcgQEAgVEVT
VChXZWJLaXQyLCBJbmplY3RlZEJ1bmRsZUJhc2ljKQogICAgIGluamVjdGVkQnVuZGxlQ2xpZW50
LmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlID0gZGlkUmVjZWl2ZU1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGU7CiAgICAgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQo
Y29udGV4dC5nZXQoKSwgJmluamVjdGVkQnVuZGxlQ2xpZW50KTsKICAKLSAgICBQbGF0Zm9ybVdl
YlZpZXcgd2ViVmlldyhwYWdlTmFtZXNwYWNlLmdldCgpKTsKKyAgICBQbGF0Zm9ybVdlYlZpZXcg
d2ViVmlldyhjb250ZXh0LmdldCgpKTsKIAogICAgIFdLUGFnZUxvYWRlckNsaWVudCBsb2FkZXJD
bGllbnQ7CiAgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQp
KTsKSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9QYWdlTG9h
ZEJhc2ljLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvUGFnZUxvYWRCYXNpYy5jcHAJKHJldmlzaW9uIDczODgzKQorKysgV2ViS2l0VG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1BhZ2VMb2FkQmFzaWMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTMsOSArMTEzLDcgQEAgVEVTVChXZWJLaXQyLCBQYWdlTG9hZEJhc2ljKQog
ICAgIFN0YXRlIHN0YXRlOwogCiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0
KEFkb3B0V0ssIFdLQ29udGV4dENyZWF0ZSgpKTsKLSAgICBXS1JldGFpblB0cjxXS1BhZ2VOYW1l
c3BhY2VSZWY+IHBhZ2VOYW1lc3BhY2UoQWRvcHRXSywgV0tQYWdlTmFtZXNwYWNlQ3JlYXRlKGNv
bnRleHQuZ2V0KCkpKTsKLSAKLSAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhwYWdlTmFtZXNw
YWNlLmdldCgpKTsKKyAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgpKTsK
IAogICAgIFdLUGFnZUxvYWRlckNsaWVudCBsb2FkZXJDbGllbnQ7CiAgICAgbWVtc2V0KCZsb2Fk
ZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKSW5kZXg6IFdlYktpdFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9QYWdlTG9hZERpZENoYW5nZUxvY2F0aW9uV2l0aGlu
UGFnZUZvckZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvUGFnZUxvYWREaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFt
ZS5jcHAJKHJldmlzaW9uIDczODgzKQorKysgV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyL1BhZ2VMb2FkRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02MCw5ICs2MCw3IEBAIHN0YXRpYyB2b2lkIGRpZFNhbWVEb2N1
bWVudE5hdmlnYXRpb25Gb3IKIFRFU1QoV2ViS2l0MiwgUGFnZUxvYWREaWRDaGFuZ2VMb2NhdGlv
bldpdGhpblBhZ2VGb3JGcmFtZSkKIHsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNv
bnRleHQoQWRvcHRXSywgV0tDb250ZXh0Q3JlYXRlKCkpOwotICAgIFdLUmV0YWluUHRyPFdLUGFn
ZU5hbWVzcGFjZVJlZj4gcGFnZU5hbWVzcGFjZShBZG9wdFdLLCBXS1BhZ2VOYW1lc3BhY2VDcmVh
dGUoY29udGV4dC5nZXQoKSkpOwotCi0gICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcocGFnZU5h
bWVzcGFjZS5nZXQoKSk7CisgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQo
KSk7CiAKICAgICBXS1BhZ2VMb2FkZXJDbGllbnQgbG9hZGVyQ2xpZW50OwogICAgIG1lbXNldCgm
bG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9hZGVyQ2xpZW50KSk7CkluZGV4OiBXZWJLaXRUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUHJldmVudEVtcHR5VXNlckFnZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUHJl
dmVudEVtcHR5VXNlckFnZW50LmNwcAkocmV2aXNpb24gNzM4ODMpCisrKyBXZWJLaXRUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUHJldmVudEVtcHR5VXNlckFnZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDgsOCArNDgsNyBAQCBzdGF0aWMgdm9pZCBkaWRSdW5KYXZhU2NyaXB0
KFdLU3RyaW5nUmVmCiBURVNUKFdlYktpdDIsIFByZXZlbnRFbXB0eVVzZXJBZ2VudCkKIHsKICAg
ICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgV0tDb250ZXh0Q3Jl
YXRlKCkpOwotICAgIFdLUmV0YWluUHRyPFdLUGFnZU5hbWVzcGFjZVJlZj4gcGFnZU5hbWVzcGFj
ZShBZG9wdFdLLCBXS1BhZ2VOYW1lc3BhY2VDcmVhdGUoY29udGV4dC5nZXQoKSkpOwotICAgIFBs
YXRmb3JtV2ViVmlldyB3ZWJWaWV3KHBhZ2VOYW1lc3BhY2UuZ2V0KCkpOworICAgIFBsYXRmb3Jt
V2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwogCiAgICAgV0tQYWdlU2V0Q3VzdG9tVXNl
ckFnZW50KHdlYlZpZXcucGFnZSgpLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiIikp
OwogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBqYXZhU2NyaXB0U3RyaW5nKEFkb3B0V0ss
IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJuYXZpZ2F0b3IudXNlckFnZW50IikpOwpJ
bmRleDogV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1NwYWNlYmFyU2Ny
b2xsaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvU3BhY2ViYXJTY3JvbGxpbmcuY3BwCShyZXZpc2lvbiA3Mzg4MykKKysrIFdlYktp
dFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9TcGFjZWJhclNjcm9sbGluZy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc5LDkgKzc5LDcgQEAgc3RhdGljIGJvb2wgcnVuSlNUZXN0KFdL
UGFnZVJlZiBwYWdlLCBjbwogVEVTVChXZWJLaXQyLCBTcGFjZWJhclNjcm9sbGluZykKIHsKICAg
ICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgV0tDb250ZXh0Q3Jl
YXRlKCkpOwotICAgIFdLUmV0YWluUHRyPFdLUGFnZU5hbWVzcGFjZVJlZj4gcGFnZU5hbWVzcGFj
ZShBZG9wdFdLLCBXS1BhZ2VOYW1lc3BhY2VDcmVhdGUoY29udGV4dC5nZXQoKSkpOwotCi0gICAg
UGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcocGFnZU5hbWVzcGFjZS5nZXQoKSk7CisgICAgUGxhdGZv
cm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7CiAKICAgICBXS1BhZ2VMb2FkZXJDbGll
bnQgbG9hZGVyQ2xpZW50OwogICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9h
ZGVyQ2xpZW50KSk7CkluZGV4OiBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDIvd2luL0FsdEtleUdlbmVyYXRlc1dNU3lzQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL3dpbi9BbHRLZXlHZW5lcmF0ZXNX
TVN5c0NvbW1hbmQuY3BwCShyZXZpc2lvbiA3Mzg4MykKKysrIFdlYktpdFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi93aW4vQWx0S2V5R2VuZXJhdGVzV01TeXNDb21tYW5kLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjEsOSArNjEsNyBAQCBzdGF0aWMgdm9pZCBkaWROb3RIYW5kbGVL
ZXlFdmVudENhbGxiYWNrCiBURVNUKFdlYktpdDIsIEFsdEtleUdlbmVyYXRlc1dNU3lzQ29tbWFu
ZCkKIHsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgV0tD
b250ZXh0Q3JlYXRlKCkpOwotICAgIFdLUmV0YWluUHRyPFdLUGFnZU5hbWVzcGFjZVJlZj4gcGFn
ZU5hbWVzcGFjZShBZG9wdFdLLCBXS1BhZ2VOYW1lc3BhY2VDcmVhdGUoY29udGV4dC5nZXQoKSkp
OwotCi0gICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcocGFnZU5hbWVzcGFjZS5nZXQoKSk7Cisg
ICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7CiAKICAgICBXS1BhZ2VV
SUNsaWVudCB1aUNsaWVudDsKICAgICBtZW1zZXQoJnVpQ2xpZW50LCAwLCBzaXplb2YodWlDbGll
bnQpKTsKSW5kZXg6IFdlYktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi93aW4v
V01DbG9zZUNhbGxzVUlDbGllbnRDbG9zZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL3dpbi9XTUNsb3NlQ2FsbHNVSUNsaWVudENsb3Nl
LmNwcAkocmV2aXNpb24gNzM4ODMpCisrKyBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvd2luL1dNQ2xvc2VDYWxsc1VJQ2xpZW50Q2xvc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MSw5ICs0MSw3IEBAIHN0YXRpYyB2b2lkIGNsb3NlKFdLUGFnZVJlZiwgY29uc3Qgdm9p
ZCoKIFRFU1QoV2ViS2l0MiwgV01DbG9zZUNhbGxzVUlDbGllbnRDbG9zZSkKIHsKICAgICBXS1Jl
dGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgV0tDb250ZXh0Q3JlYXRlKCkp
OwotICAgIFdLUmV0YWluUHRyPFdLUGFnZU5hbWVzcGFjZVJlZj4gcGFnZU5hbWVzcGFjZShBZG9w
dFdLLCBXS1BhZ2VOYW1lc3BhY2VDcmVhdGUoY29udGV4dC5nZXQoKSkpOwotCi0gICAgUGxhdGZv
cm1XZWJWaWV3IHdlYlZpZXcocGFnZU5hbWVzcGFjZS5nZXQoKSk7CisgICAgUGxhdGZvcm1XZWJW
aWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7CiAKICAgICBXS1BhZ2VVSUNsaWVudCB1aUNsaWVu
dDsKICAgICBtZW1zZXQoJnVpQ2xpZW50LCAwLCBzaXplb2YodWlDbGllbnQpKTsKSW5kZXg6IFdl
YktpdFRvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMu
bW0JKHJldmlzaW9uIDczODgzKQorKysgV2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvUGxh
dGZvcm1XZWJWaWV3TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMCArMjksMjQgQEAKIAog
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1QbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2Vi
VmlldyhXS1BhZ2VOYW1lc3BhY2VSZWYgcGFnZU5hbWVzcGFjZVJlZiwgV0tQYWdlR3JvdXBSZWYg
cGFnZUdyb3VwUmVmKQorUGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tDb250ZXh0
UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKIHsKICAgICBOU1Jl
Y3QgcmVjdCA9IE5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApOwotICAgIG1fdmlldyA9IFtbV0tW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOnJlY3QgcGFnZU5hbWVzcGFjZVJlZjpwYWdlTmFtZXNw
YWNlUmVmIHBhZ2VHcm91cFJlZjpwYWdlR3JvdXBSZWZdOworICAgIG1fdmlldyA9IFtbV0tWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOnJlY3QgY29udGV4dFJlZjpjb250ZXh0UmVmIHBhZ2VHcm91
cFJlZjpwYWdlR3JvdXBSZWZdOworCisgICAgTlNSZWN0IHdpbmRvd1JlY3QgPSBOU09mZnNldFJl
Y3QocmVjdCwgLTEwMDAwLCBbW1tOU1NjcmVlbiBzY3JlZW5zXSBvYmplY3RBdEluZGV4OjBdIGZy
YW1lXS5zaXplLmhlaWdodCAtIHJlY3Quc2l6ZS5oZWlnaHQgKyAxMDAwMCk7CisgICAgbV93aW5k
b3cgPSBbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0OndpbmRvd1JlY3Qgc3R5
bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZl
cmVkIGRlZmVyOllFU107CisgICAgW21fd2luZG93IHNldENvbG9yU3BhY2U6W1tOU1NjcmVlbiBt
YWluU2NyZWVuXSBjb2xvclNwYWNlXV07CisgICAgW1ttX3dpbmRvdyBjb250ZW50Vmlld10gYWRk
U3VidmlldzptX3ZpZXddOworICAgIFttX3dpbmRvdyBvcmRlckJhY2s6bmlsXTsKKyAgICBbbV93
aW5kb3cgc2V0QXV0b2Rpc3BsYXk6Tk9dOworICAgIFttX3dpbmRvdyBzZXRSZWxlYXNlZFdoZW5D
bG9zZWQ6Tk9dOworfQorCitQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhXS1BhZ2VS
ZWYgcGFnZVJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQoreworICAgIE5TUmVjdCBy
ZWN0ID0gTlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCk7CisgICAgbV92aWV3ID0gW1tXS1ZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6cmVjdCBmb3JBc3NvY2lhdGVkUGFnZVJlZjpwYWdlUmVmIHBh
Z2VHcm91cFJlZjpwYWdlR3JvdXBSZWZdOwogCiAgICAgTlNSZWN0IHdpbmRvd1JlY3QgPSBOU09m
ZnNldFJlY3QocmVjdCwgLTEwMDAwLCBbW1tOU1NjcmVlbiBzY3JlZW5zXSBvYmplY3RBdEluZGV4
OjBdIGZyYW1lXS5zaXplLmhlaWdodCAtIHJlY3Quc2l6ZS5oZWlnaHQgKyAxMDAwMCk7CiAgICAg
bV93aW5kb3cgPSBbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0OndpbmRvd1Jl
Y3Qgc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9y
ZUJ1ZmZlcmVkIGRlZmVyOllFU107CkluZGV4OiBXZWJLaXRUb29scy9UZXN0V2ViS2l0QVBJL3dp
bi9QbGF0Zm9ybVdlYlZpZXdXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvd2luL1BsYXRmb3JtV2ViVmlld1dpbi5jcHAJKHJldmlzaW9uIDczODgzKQorKysg
V2ViS2l0VG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZvcm1XZWJWaWV3V2luLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTYsMTQgKzU2LDI1IEBAIHZvaWQgUGxhdGZvcm1XZWJWaWV3OjpyZWdp
c3RlcldpbmRvd0NsYXMKICAgICA6OlJlZ2lzdGVyQ2xhc3NFeFcoJnduZENsYXNzKTsKIH0KIAot
UGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tQYWdlTmFtZXNwYWNlUmVmIG5hbWVz
cGFjZVJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQorCitQbGF0Zm9ybVdlYlZpZXc6
OlBsYXRmb3JtV2ViVmlldyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYg
cGFnZUdyb3VwUmVmKQorICAgIDogbV9wYXJlbnRXaW5kb3dNZXNzYWdlT2JzZXJ2ZXIoMCkKK3sK
KyAgICByZWdpc3RlcldpbmRvd0NsYXNzKCk7CisKKyAgICBSRUNUIHZpZXdSZWN0ID0gezAsIDAs
IDgwMCwgNjAwfTsKKyAgICBtX3dpbmRvdyA9IENyZWF0ZVdpbmRvd0V4VygwLCBob3N0V2luZG93
Q2xhc3NOYW1lLCBMIlRlc3RXZWJLaXRBUEkiLCBXU19PVkVSTEFQUEVEV0lORE9XLCB2aWV3UmVj
dC5sZWZ0LCB2aWV3UmVjdC50b3AsIHZpZXdSZWN0LnJpZ2h0LCB2aWV3UmVjdC5ib3R0b20sIDAs
IDAsIDAsIHRoaXMpOworICAgIG1fdmlldyA9IFdLVmlld0NyZWF0ZSh2aWV3UmVjdCwgY29udGV4
dFJlZiwgcGFnZUdyb3VwUmVmLCBtX3dpbmRvdyk7Cit9CisKK1BsYXRmb3JtV2ViVmlldzo6UGxh
dGZvcm1XZWJWaWV3KFdLUGFnZVJlZiBwYWdlUmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBS
ZWYpCiAgICAgOiBtX3BhcmVudFdpbmRvd01lc3NhZ2VPYnNlcnZlcigwKQogewogICAgIHJlZ2lz
dGVyV2luZG93Q2xhc3MoKTsKIAogICAgIFJFQ1Qgdmlld1JlY3QgPSB7MCwgMCwgODAwLCA2MDB9
OwogICAgIG1fd2luZG93ID0gQ3JlYXRlV2luZG93RXhXKDAsIGhvc3RXaW5kb3dDbGFzc05hbWUs
IEwiVGVzdFdlYktpdEFQSSIsIFdTX09WRVJMQVBQRURXSU5ET1csIHZpZXdSZWN0LmxlZnQsIHZp
ZXdSZWN0LnRvcCwgdmlld1JlY3QucmlnaHQsIHZpZXdSZWN0LmJvdHRvbSwgMCwgMCwgMCwgdGhp
cyk7Ci0gICAgbV92aWV3ID0gV0tWaWV3Q3JlYXRlKHZpZXdSZWN0LCBuYW1lc3BhY2VSZWYsIHBh
Z2VHcm91cFJlZiwgbV93aW5kb3cpOworICAgIG1fdmlldyA9IFdLVmlld0NyZWF0ZUZvckFzc29j
aWF0ZWRQYWdlKHZpZXdSZWN0LCBwYWdlUmVmLCBwYWdlR3JvdXBSZWYsIG1fd2luZG93KTsKIH0K
IAogUGxhdGZvcm1XZWJWaWV3Ojp+UGxhdGZvcm1XZWJWaWV3KCkKSW5kZXg6IFdlYktpdFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaAkocmV2aXNpb24gNzM4ODMp
CisrKyBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Miw3ICs1Miw4IEBAIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBQbGF0
Zm9ybVdlYlZpZXcgewogcHVibGljOgotICAgIFBsYXRmb3JtV2ViVmlldyhXS1BhZ2VOYW1lc3Bh
Y2VSZWYsIFdLUGFnZUdyb3VwUmVmKTsKKyAgICBQbGF0Zm9ybVdlYlZpZXcoV0tDb250ZXh0UmVm
LCBXS1BhZ2VHcm91cFJlZik7CisgICAgUGxhdGZvcm1XZWJWaWV3KFdLUGFnZVJlZiwgV0tQYWdl
R3JvdXBSZWYpOwogICAgIH5QbGF0Zm9ybVdlYlZpZXcoKTsKIAogICAgIFdLUGFnZVJlZiBwYWdl
KCk7CkluZGV4OiBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcAkocmV2aXNpb24gNzM4ODMpCisrKyBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDcgKzEwNiw3IEBAIHN0
YXRpYyB2b2lkIGNsb3NlT3RoZXJQYWdlKFdLUGFnZVJlZiBwYWcKIAogc3RhdGljIFdLUGFnZVJl
ZiBjcmVhdGVPdGhlclBhZ2UoV0tQYWdlUmVmIG9sZFBhZ2UsIFdLRGljdGlvbmFyeVJlZiwgV0tF
dmVudE1vZGlmaWVycywgV0tFdmVudE1vdXNlQnV0dG9uLCBjb25zdCB2b2lkKikKIHsKLSAgICBQ
bGF0Zm9ybVdlYlZpZXcqIHZpZXcgPSBuZXcgUGxhdGZvcm1XZWJWaWV3KFdLUGFnZUdldFBhZ2VO
YW1lc3BhY2Uob2xkUGFnZSksIFdLUGFnZUdldFBhZ2VHcm91cChvbGRQYWdlKSk7CisgICAgUGxh
dGZvcm1XZWJWaWV3KiB2aWV3ID0gbmV3IFBsYXRmb3JtV2ViVmlldyhvbGRQYWdlLCBXS1BhZ2VH
ZXRQYWdlR3JvdXAob2xkUGFnZSkpOwogICAgIFdLUGFnZVJlZiBuZXdQYWdlID0gdmlldy0+cGFn
ZSgpOwogCiAgICAgdmlldy0+cmVzaXplVG8oODAwLCA2MDApOwpAQCAtMjExLDggKzIxMSw3IEBA
IHZvaWQgVGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemUoaW50IGFyZ2MKIAogICAgIF9XS0NvbnRl
eHRTZXRBZGRpdGlvbmFsUGx1Z2luc0RpcmVjdG9yeShtX2NvbnRleHQuZ2V0KCksIHRlc3RQbHVn
aW5EaXJlY3RvcnkoKSk7CiAKLSAgICBtX3BhZ2VOYW1lc3BhY2UuYWRvcHQoV0tQYWdlTmFtZXNw
YWNlQ3JlYXRlKG1fY29udGV4dC5nZXQoKSkpOwotICAgIG1fbWFpbldlYlZpZXcgPSBhZG9wdFB0
cihuZXcgUGxhdGZvcm1XZWJWaWV3KG1fcGFnZU5hbWVzcGFjZS5nZXQoKSwgbV9wYWdlR3JvdXAu
Z2V0KCkpKTsKKyAgICBtX21haW5XZWJWaWV3ID0gYWRvcHRQdHIobmV3IFBsYXRmb3JtV2ViVmll
dyhtX2NvbnRleHQuZ2V0KCksIG1fcGFnZUdyb3VwLmdldCgpKSk7CiAKICAgICBXS1BhZ2VVSUNs
aWVudCBwYWdlVUlDbGllbnQgPSB7CiAgICAgICAgIDAsCkluZGV4OiBXZWJLaXRUb29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiA3Mzg4MykKKysrIFdl
YktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNTAsNyArNTAsNiBAQCBwdWJsaWM6CiAgICAgV0tTdHJpbmdSZWYgdGVzdFBsdWdpbkRp
cmVjdG9yeSgpIHsgcmV0dXJuIG1fdGVzdFBsdWdpbkRpcmVjdG9yeS5nZXQoKTsgfQogCiAgICAg
UGxhdGZvcm1XZWJWaWV3KiBtYWluV2ViVmlldygpIHsgcmV0dXJuIG1fbWFpbldlYlZpZXcuZ2V0
KCk7IH0KLSAgICBXS1BhZ2VOYW1lc3BhY2VSZWYgcGFnZU5hbWVzcGFjZSgpIHsgcmV0dXJuIG1f
cGFnZU5hbWVzcGFjZS5nZXQoKTsgfQogICAgIFdLQ29udGV4dFJlZiBjb250ZXh0KCkgeyByZXR1
cm4gbV9jb250ZXh0LmdldCgpOyB9CiAKICAgICAvLyBSdW5zIHRoZSBydW4gbG9vcCB1bnRpbCBg
ZG9uZWAgaXMgdHJ1ZSBvciB0aGUgdGltZW91dCBlbGFwc2VzLgpAQCAtOTYsOSArOTUsOCBAQCBw
cml2YXRlOgogCiAgICAgT3duUHRyPFBsYXRmb3JtV2ViVmlldz4gbV9tYWluV2ViVmlldzsKICAg
ICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IG1fY29udGV4dDsKLSAgICBXS1JldGFpblB0cjxX
S1BhZ2VOYW1lc3BhY2VSZWY+IG1fcGFnZU5hbWVzcGFjZTsKICAgICBXS1JldGFpblB0cjxXS1Bh
Z2VHcm91cFJlZj4gbV9wYWdlR3JvdXA7Ci0gICAgCisKICAgICBlbnVtIFN0YXRlIHsKICAgICAg
ICAgSW5pdGlhbCwKICAgICAgICAgUmVzZXR0aW5nLApJbmRleDogV2ViS2l0VG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQkocmV2aXNp
b24gNzM4ODMpCisrKyBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdl
YlZpZXdNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDEwICsyNywyNCBAQAogCiBuYW1lc3Bh
Y2UgV1RSIHsKIAotUGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tQYWdlTmFtZXNw
YWNlUmVmIG5hbWVzcGFjZVJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQorUGxhdGZv
cm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFn
ZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKIHsKICAgICBOU1JlY3QgcmVjdCA9IE5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApOwotICAgIG1fdmlldyA9IFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOnJlY3QgcGFnZU5hbWVzcGFjZVJlZjpuYW1lc3BhY2VSZWYgcGFnZUdyb3VwUmVmOnBhZ2VH
cm91cFJlZl07CisgICAgbV92aWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6cmVj
dCBjb250ZXh0UmVmOmNvbnRleHRSZWYgcGFnZUdyb3VwUmVmOnBhZ2VHcm91cFJlZl07CisKKyAg
ICBOU1JlY3Qgd2luZG93UmVjdCA9IE5TT2Zmc2V0UmVjdChyZWN0LCAtMTAwMDAsIFtbW05TU2Ny
ZWVuIHNjcmVlbnNdIG9iamVjdEF0SW5kZXg6MF0gZnJhbWVdLnNpemUuaGVpZ2h0IC0gcmVjdC5z
aXplLmhlaWdodCArIDEwMDAwKTsKKyAgICBtX3dpbmRvdyA9IFtbTlNXaW5kb3cgYWxsb2NdIGlu
aXRXaXRoQ29udGVudFJlY3Q6d2luZG93UmVjdCBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93
TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6WUVTXTsKKyAgICBbbV93
aW5kb3cgc2V0Q29sb3JTcGFjZTpbW05TU2NyZWVuIG1haW5TY3JlZW5dIGNvbG9yU3BhY2VdXTsK
KyAgICBbW21fd2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3Om1fdmlld107CisgICAgW21f
d2luZG93IG9yZGVyQmFjazpuaWxdOworICAgIFttX3dpbmRvdyBzZXRBdXRvZGlzcGxheTpOT107
CisgICAgW21fd2luZG93IHNldFJlbGVhc2VkV2hlbkNsb3NlZDpOT107Cit9CisKK1BsYXRmb3Jt
V2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLUGFnZVJlZiBwYWdlUmVmLCBXS1BhZ2VHcm91cFJl
ZiBwYWdlR3JvdXBSZWYpCit7CisgICAgTlNSZWN0IHJlY3QgPSBOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKTsKKyAgICBtX3ZpZXcgPSBbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpyZWN0
IGZvckFzc29jaWF0ZWRQYWdlUmVmOnBhZ2VSZWYgcGFnZUdyb3VwUmVmOnBhZ2VHcm91cFJlZl07
CiAKICAgICBOU1JlY3Qgd2luZG93UmVjdCA9IE5TT2Zmc2V0UmVjdChyZWN0LCAtMTAwMDAsIFtb
W05TU2NyZWVuIHNjcmVlbnNdIG9iamVjdEF0SW5kZXg6MF0gZnJhbWVdLnNpemUuaGVpZ2h0IC0g
cmVjdC5zaXplLmhlaWdodCArIDEwMDAwKTsKICAgICBtX3dpbmRvdyA9IFtbTlNXaW5kb3cgYWxs
b2NdIGluaXRXaXRoQ29udGVudFJlY3Q6d2luZG93UmVjdCBzdHlsZU1hc2s6TlNCb3JkZXJsZXNz
V2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6WUVTXTsKSW5k
ZXg6IFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvUGxhdGZvcm1XZWJWaWV3UXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvUGxhdGZvcm1X
ZWJWaWV3UXQuY3BwCShyZXZpc2lvbiA3Mzg4MykKKysrIFdlYktpdFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvcXQvUGxhdGZvcm1XZWJWaWV3UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICsz
Myw4IEBAIG5hbWVzcGFjZSBXVFIgewogCiBjbGFzcyBXZWJWaWV3IDogcHVibGljIFFHcmFwaGlj
c1ZpZXcgewogcHVibGljOgotICAgIFdlYlZpZXcoV0tQYWdlTmFtZXNwYWNlUmVmKTsKKyAgICBX
ZWJWaWV3KFdLQ29udGV4dFJlZik7CisgICAgV2ViVmlldyhXS1BhZ2VSZWYpOwogCiAgICAgUUdy
YXBoaWNzV0tWaWV3KiB3a1ZpZXcoKSBjb25zdCB7IHJldHVybiBtX2l0ZW07IH0KIApAQCAtNDMs
MTYgKzQ0LDM2IEBAIHByaXZhdGU6CiAgICAgUUdyYXBoaWNzV0tWaWV3KiBtX2l0ZW07CiB9Owog
Ci1XZWJWaWV3OjpXZWJWaWV3KFdLUGFnZU5hbWVzcGFjZVJlZiBuYW1lc3BhY2VSZWYpCitXZWJW
aWV3OjpXZWJWaWV3KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmKQogICAgIDogUUdyYXBoaWNzVmll
dygpCi0gICAgLCBtX2l0ZW0obmV3IFFHcmFwaGljc1dLVmlldyhuZXcgUVdLQ29udGV4dChuYW1l
c3BhY2VSZWYsIHRoaXMpKSkKKyAgICAsIG1faXRlbShuZXcgUUdyYXBoaWNzV0tWaWV3KG5ldyBR
V0tDb250ZXh0KGNvbnRleHRSZWYsIHRoaXMpKSkKIHsKICAgICBzZXRTY2VuZShuZXcgUUdyYXBo
aWNzU2NlbmUodGhpcykpOwogICAgIHNjZW5lKCktPmFkZEl0ZW0obV9pdGVtKTsKIH0KIAotUGxh
dGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tQYWdlTmFtZXNwYWNlUmVmIG5hbWVzcGFj
ZVJlZiwgV0tQYWdlR3JvdXBSZWYpCi0gICAgOiBtX3ZpZXcobmV3IFdlYlZpZXcobmFtZXNwYWNl
UmVmKSkKK1dlYlZpZXc6OldlYlZpZXcoV0tQYWdlUmVmIHBhZ2VSZWYpCisgICAgOiBRR3JhcGhp
Y3NWaWV3KCkKKyAgICAsIG1faXRlbShuZXcgUUdyYXBoaWNzV0tWaWV3KG5ldyBRV0tDb250ZXh0
KHBhZ2VSZWYsIHRoaXMpKSkKK3sKKyAgICBzZXRTY2VuZShuZXcgUUdyYXBoaWNzU2NlbmUodGhp
cykpOworICAgIHNjZW5lKCktPmFkZEl0ZW0obV9pdGVtKTsKK30KKworUGxhdGZvcm1XZWJWaWV3
KFdLQ29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYpOworUGxhdGZvcm1XZWJWaWV3KFdLUGFnZVJl
ZiwgV0tQYWdlR3JvdXBSZWYpOworCitQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhX
S0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYpCisgICAgOiBtX3ZpZXcobmV3
IFdlYlZpZXcoY29udGV4dFJlZikpCisgICAgLCBtX3dpbmRvdyhuZXcgUU1haW5XaW5kb3coKSkK
K3sKKyAgICBtX3ZpZXctPnNldFBhcmVudChtX3dpbmRvdyk7CisgICAgbV93aW5kb3ctPnNldENl
bnRyYWxXaWRnZXQobV92aWV3KTsKKyAgICBtX3dpbmRvdy0+c2V0R2VvbWV0cnkoMCwgMCwgODAw
LCA2MDApOworfQorCitQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhXS1BhZ2VSZWYg
cGFnZVJlZiwgV0tQYWdlR3JvdXBSZWYpCisgICAgOiBtX3ZpZXcobmV3IFdlYlZpZXcocGFnZVJl
ZikpCiAgICAgLCBtX3dpbmRvdyhuZXcgUU1haW5XaW5kb3coKSkKIHsKICAgICBtX3ZpZXctPnNl
dFBhcmVudChtX3dpbmRvdyk7CkluZGV4OiBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL3dp
bi9QbGF0Zm9ybVdlYlZpZXdXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvd2luL1BsYXRmb3JtV2ViVmlld1dpbi5jcHAJKHJldmlzaW9uIDczODgzKQor
KysgV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vUGxhdGZvcm1XZWJWaWV3V2luLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTMgKzQ3LDIyIEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVy
V2luZG93Q2xhc3MoKQogICAgIFJlZ2lzdGVyQ2xhc3NFeFcoJnduZENsYXNzKTsKIH0KIAotUGxh
dGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tQYWdlTmFtZXNwYWNlUmVmIG5hbWVzcGFj
ZVJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQorUGxhdGZvcm1XZWJWaWV3OjpQbGF0
Zm9ybVdlYlZpZXcoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VH
cm91cFJlZikKIHsKICAgICByZWdpc3RlcldpbmRvd0NsYXNzKCk7CiAKICAgICBSRUNUIHZpZXdS
ZWN0ID0gezAsIDAsIDgwMCwgNjAwfTsKICAgICBtX3dpbmRvdyA9IENyZWF0ZVdpbmRvd0V4Vygw
LCBob3N0V2luZG93Q2xhc3NOYW1lLCBMIldlYktpdFRlc3RSdW5uZXIiLCBXU19PVkVSTEFQUEVE
V0lORE9XLCAwIC8qWE9GRlNFVCovLCAwIC8qWU9GRlNFVCovLCB2aWV3UmVjdC5yaWdodCwgdmll
d1JlY3QuYm90dG9tLCAwLCAwLCBHZXRNb2R1bGVIYW5kbGUoMCksIDApOwotICAgIG1fdmlldyA9
IFdLVmlld0NyZWF0ZSh2aWV3UmVjdCwgbmFtZXNwYWNlUmVmLCBwYWdlR3JvdXBSZWYsIG1fd2lu
ZG93KTsKKyAgICBtX3ZpZXcgPSBXS1ZpZXdDcmVhdGUodmlld1JlY3QsIGNvbnRleHRSZWYsIHBh
Z2VHcm91cFJlZiwgbV93aW5kb3cpOworfQorCitQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2Vi
VmlldyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQorewor
ICAgIHJlZ2lzdGVyV2luZG93Q2xhc3MoKTsKKworICAgIFJFQ1Qgdmlld1JlY3QgPSB7MCwgMCwg
ODAwLCA2MDB9OworICAgIG1fd2luZG93ID0gQ3JlYXRlV2luZG93RXhXKDAsIGhvc3RXaW5kb3dD
bGFzc05hbWUsIEwiV2ViS2l0VGVzdFJ1bm5lciIsIFdTX09WRVJMQVBQRURXSU5ET1csIDAgLypY
T0ZGU0VUKi8sIDAgLypZT0ZGU0VUKi8sIHZpZXdSZWN0LnJpZ2h0LCB2aWV3UmVjdC5ib3R0b20s
IDAsIDAsIEdldE1vZHVsZUhhbmRsZSgwKSwgMCk7CisgICAgbV92aWV3ID0gV0tWaWV3Q3JlYXRl
Rm9yQXNzb2NpYXRlZFBhZ2Uodmlld1JlY3QsIHBhZ2VSZWYsIHBhZ2VHcm91cFJlZiwgbV93aW5k
b3cpOwogfQogCiBQbGF0Zm9ybVdlYlZpZXc6On5QbGF0Zm9ybVdlYlZpZXcoKQo=
</data>
<flag name="review"
          id="67377"
          type_id="1"
          status="+"
          setter="ossy"
    />
          </attachment>
      

    </bug>

</bugzilla>