<?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>46043</bug_id>
          
          <creation_ts>2010-09-18 16:47:18 -0700</creation_ts>
          <short_desc>Improve/unify the PageLoadClient interfaces</short_desc>
          <delta_ts>2010-09-19 10:52:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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></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>ossy</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>281212</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-18 16:47:18 -0700</bug_when>
    <thetext>Improve/unify the PageLoadClient interfaces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281213</commentid>
    <comment_count>1</comment_count>
      <attachid>68018</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-18 16:48:16 -0700</bug_when>
    <thetext>Created attachment 68018
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281215</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-18 16:53:59 -0700</bug_when>
    <thetext>Attachment 68018 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h:84:  Extra space between WKBundlePageDidFirstLayoutForFrame and didFirstLayoutForFrame  [whitespace/declaration] [3]
WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h:85:  Extra space between WKBundlePageDidFirstVisuallyNonEmptyLayoutForFrame and didFirstVisuallyNonEmptyLayoutForFrame  [whitespace/declaration] [3]
Total errors found: 2 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281223</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-18 17:31:23 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/67802.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281284</commentid>
    <comment_count>4</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-09-19 10:52:16 -0700</bug_when>
    <thetext>Qt buildfix landed in http://trac.webkit.org/changeset/67814.
Please take notice of red &quot;Qt Linux Release&quot; buildbot next time.

Build errors were that:
../../../WebKit2/UIProcess/API/qt/qwkpage.cpp: In constructor ‘QWKPage::QWKPage(const OpaqueWKPageNamespace*)’:
../../../WebKit2/UIProcess/API/qt/qwkpage.cpp:249: error: invalid conversion from ‘void (*)(const OpaqueWKPage*, const OpaqueWKFrame*, const void*)’ to ‘void (*)(const OpaqueWKPage*, const OpaqueWKFrame*, const void*, const void*)’
../../../WebKit2/UIProcess/API/qt/qwkpage.cpp:249: error: invalid conversion from ‘void (*)(const OpaqueWKPage*, const OpaqueWKFrame*, const void*)’ to ‘void (*)(const OpaqueWKPage*, const OpaqueWKFrame*, const void*, const void*)’
../../../WebKit2/UIProcess/API/qt/qwkpage.cpp:249: error: invalid conversion from ‘void (*)(const OpaqueWKPage*, const OpaqueWKFrame*, const void*)’ to ‘void (*)(const OpaqueWKPage*, const OpaqueWKFrame*, const void*, const void*)’
../../../WebKit2/UIProcess/API/qt/qwkpage.cpp:249: error: invalid conversion from ‘void (*)(const OpaqueWKPage*, const OpaqueWKFrame*, const void*)’ to ‘void (*)(const OpaqueWKPage*, const OpaqueWKFrame*, const void*, const void*)’
../../../WebKit2/UIProcess/API/qt/qwkpage.cpp:249: error: invalid conversion from ‘void (*)(const OpaqueWKPage*, const OpaqueWKFrame*, const void*)’ to ‘void (*)(const OpaqueWKPage*, const OpaqueWKFrame*, const void*, const void*)’
../../../WebKit2/UIProcess/API/qt/qwkpage.cpp:249: error: invalid conversion from ‘void (*)(const OpaqueWKPage*, const OpaqueWKFrame*, const void*)’ to ‘void (*)(const OpaqueWKPage*, const OpaqueWKFrame*, const void*, const void*)’
../../../WebKit2/UIProcess/API/qt/qwkpage.cpp:249: error: invalid conversion from ‘void (*)(const OpaqueWKPage*, const OpaqueWKFrame*, const void*)’ to ‘void (*)(const OpaqueWKPage*, const OpaqueWKFrame*, const void*, const void*)’
../../../WebKit2/UIProcess/API/qt/qwkpage.cpp:249: error: invalid conversion from ‘void (*)(const OpaqueWKPage*, const OpaqueWKString*, const OpaqueWKFrame*, const void*)’ to ‘void (*)(const OpaqueWKPage*, const OpaqueWKString*, const OpaqueWKFrame*, const void*, const void*)’
../../../WebKit2/UIProcess/API/qt/qwkpage.cpp:249: error: invalid conversion from ‘void (*)(const OpaqueWKPage*, const OpaqueWKFrame*, const void*)’ to ‘void (*)(const OpaqueWKPage*, const OpaqueWKFrame*, const void*, const void*)’
../../../WebKit2/UIProcess/API/qt/qwkpage.cpp:249: error: invalid conversion from ‘void (*)(const OpaqueWKPage*, const OpaqueWKFrame*, const void*)’ to ‘void (*)(const OpaqueWKPage*, const OpaqueWKFrame*, const void*, const void*)’</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68018</attachid>
            <date>2010-09-18 16:48:16 -0700</date>
            <delta_ts>2010-09-18 16:58:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>improve.diff</filename>
            <type>text/plain</type>
            <size>77331</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2Nzc5OCkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsOTIgQEAKKzIwMTAtMDktMTggIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXByb3Zl
L3VuaWZ5IHRoZSBQYWdlTG9hZENsaWVudCBpbnRlcmZhY2VzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDYwNDMKKworICAgICAgICAtIEVuc3VyZSB0
aGF0IGFsbCB0aGUgUGFnZUxvYWRDbGllbnQgZnVuY3Rpb25zICh0aGF0IGFyZSBsb2FkIHJlbGF0
ZWQpCisgICAgICAgICAgaGF2ZSBidW5kbGUgQVBJIGVxdWl2YWxlbnRzICh0aGlzIG1lYW50IGFk
ZGluZyBkaWRGaXJzdExheW91dEZvckZyYW1lCisgICAgICAgICAgYW5kIGRpZEZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dEZvckZyYW1lIHRvIHRoZSBCdW5kbGVQYWdlTG9hZENsaWVudCkuCisg
ICAgICAgIC0gQWRkIGEgdXNlckRhdGEgb3V0IHBhcmFtZXRlcnMgdG8gYWxsIHRoZSBub3cgcGFp
cmVkIEJ1bmRsZVBhZ2VMb2FkQ2xpZW50CisgICAgICAgICAgZnVuY3Rpb25zLCBhbmQgYSBtYXRj
aGluZyB1c2VyRGF0YSBwYXJhbWV0ZXIgdG8gdGhlIFBhZ2VMb2FkQ2xpZW50IG9uZXMuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9xdC9DbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKHF0X3drX2RpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUpOgorICAgICAgICAocXRfd2tfZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9y
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAocXRfd2tfZGlkRmFpbFByb3Zpc2lv
bmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKToKKyAgICAgICAgKHF0X3drX2RpZENvbW1pdExvYWRG
b3JGcmFtZSk6CisgICAgICAgIChxdF93a19kaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSk6
CisgICAgICAgIChxdF93a19kaWRGaW5pc2hMb2FkRm9yRnJhbWUpOgorICAgICAgICAocXRfd2tf
ZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZSk6CisgICAgICAgIChxdF93a19kaWRSZWNlaXZl
VGl0bGVGb3JGcmFtZSk6CisgICAgICAgIChxdF93a19kaWRGaXJzdExheW91dEZvckZyYW1lKToK
KyAgICAgICAgKHF0X3drX2RpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViTG9hZGVyQ2xpZW50OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlckNs
aWVudDo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKToKKyAgICAgICAg
KFdlYktpdDo6V2ViTG9hZGVyQ2xpZW50OjpkaWRDb21taXRMb2FkRm9yRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1l
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yRnJh
bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJDbGllbnQ6OmRpZEZhaWxMb2FkV2l0aEVy
cm9yRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJDbGllbnQ6OmRpZFJlY2Vp
dmVUaXRsZUZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyQ2xpZW50OjpkaWRG
aXJzdExheW91dEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyQ2xpZW50Ojpk
aWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkxvYWRlckNsaWVudDo6ZGlkU3RhcnRQcm9ncmVzcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkxvYWRlckNsaWVudDo6ZGlkQ2hhbmdlUHJvZ3Jlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJM
b2FkZXJDbGllbnQ6OmRpZEZpbmlzaFByb2dyZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9h
ZGVyQ2xpZW50OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJM
b2FkZXJDbGllbnQ6OmRpZEJlY29tZVJlc3BvbnNpdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJM
b2FkZXJDbGllbnQ6OnByb2Nlc3NEaWRFeGl0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVy
Q2xpZW50OjpkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFt
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpkaWRGYWlsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25h
bExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudDo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKToKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRDb21taXRMb2Fk
Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQ6OmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUpOgorICAg
ICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZEZhaWxMb2Fk
V2l0aEVycm9yRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRGaXJzdExheW91dEZvckZyYW1lKToK
KyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRGaXJz
dFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JGcmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkQ2Fu
Y2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKToK
KyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRDaGFu
Z2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVk
QnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUpOgor
ICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZERpc3Bs
YXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkUmVjZWl2ZVRpdGxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50
TG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZEZpbmlzaExvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEaWRGaXJzdExheW91dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCk6CisKIDIwMTAtMDkt
MTggIEFkZW1hciBkZSBTb3V6YSBSZWlzIEpyICA8YWRlbWFyLnJlaXNAb3BlbmJvc3NhLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6
IFdlYktpdDIvVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gNjc3ODYpCisrKyBX
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MywxMDYgKzQzLDE0MCBAQCB2b2lkIFdlYkxvYWRlckNsaWVudDo6aW5pdGlhbGl6ZShjb25zdCBX
CiAgICAgICAgIG1lbXNldCgmbV9wYWdlTG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobV9wYWdlTG9h
ZGVyQ2xpZW50KSk7CiB9CiAKLXZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRTdGFydFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUp
Cit2b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShX
ZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBBUElPYmplY3QqIHVzZXJE
YXRhKQogewotICAgIGlmIChtX3BhZ2VMb2FkZXJDbGllbnQuZGlkU3RhcnRQcm92aXNpb25hbExv
YWRGb3JGcmFtZSkKLSAgICAgICAgbV9wYWdlTG9hZGVyQ2xpZW50LmRpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUodG9SZWYocGFnZSksIHRvUmVmKGZyYW1lKSwgbV9wYWdlTG9hZGVyQ2xp
ZW50LmNsaWVudEluZm8pOworICAgIGlmICghbV9wYWdlTG9hZGVyQ2xpZW50LmRpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGFnZUxvYWRl
ckNsaWVudC5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHRvUmVmKHBhZ2UpLCB0b1Jl
ZihmcmFtZSksIHRvUmVmKHVzZXJEYXRhKSwgbV9wYWdlTG9hZGVyQ2xpZW50LmNsaWVudEluZm8p
OwogfQogCi12b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9y
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5
KiBmcmFtZSkKK3ZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJv
eHkqIGZyYW1lLCBBUElPYmplY3QqIHVzZXJEYXRhKQogewotICAgIGlmIChtX3BhZ2VMb2FkZXJD
bGllbnQuZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUp
Ci0gICAgICAgIG1fcGFnZUxvYWRlckNsaWVudC5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQ
cm92aXNpb25hbExvYWRGb3JGcmFtZSh0b1JlZihwYWdlKSwgdG9SZWYoZnJhbWUpLCBtX3BhZ2VM
b2FkZXJDbGllbnQuY2xpZW50SW5mbyk7CisgICAgaWYgKCFtX3BhZ2VMb2FkZXJDbGllbnQuZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fcGFnZUxvYWRlckNsaWVudC5kaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh0b1JlZihwYWdlKSwgdG9SZWYoZnJhbWUpLCB0
b1JlZih1c2VyRGF0YSksIG1fcGFnZUxvYWRlckNsaWVudC5jbGllbnRJbmZvKTsKIH0KIAotdm9p
ZCBXZWJMb2FkZXJDbGllbnQ6OmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFt
ZShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lKQordm9pZCBXZWJMb2Fk
ZXJDbGllbnQ6OmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXZWJQYWdl
UHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBBUElPYmplY3QqIHVzZXJEYXRhKQog
ewotICAgIGlmIChtX3BhZ2VMb2FkZXJDbGllbnQuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhF
cnJvckZvckZyYW1lKQotICAgICAgICBtX3BhZ2VMb2FkZXJDbGllbnQuZGlkRmFpbFByb3Zpc2lv
bmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKHRvUmVmKHBhZ2UpLCB0b1JlZihmcmFtZSksIG1fcGFn
ZUxvYWRlckNsaWVudC5jbGllbnRJbmZvKTsKKyAgICBpZiAoIW1fcGFnZUxvYWRlckNsaWVudC5k
aWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fcGFnZUxvYWRlckNsaWVudC5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9y
Rm9yRnJhbWUodG9SZWYocGFnZSksIHRvUmVmKGZyYW1lKSwgdG9SZWYodXNlckRhdGEpLCBtX3Bh
Z2VMb2FkZXJDbGllbnQuY2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgV2ViTG9hZGVyQ2xpZW50Ojpk
aWRDb21taXRMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBm
cmFtZSkKK3ZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViUGFn
ZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgQVBJT2JqZWN0KiB1c2VyRGF0YSkK
IHsKLSAgICBpZiAobV9wYWdlTG9hZGVyQ2xpZW50LmRpZENvbW1pdExvYWRGb3JGcmFtZSkKLSAg
ICAgICAgbV9wYWdlTG9hZGVyQ2xpZW50LmRpZENvbW1pdExvYWRGb3JGcmFtZSh0b1JlZihwYWdl
KSwgdG9SZWYoZnJhbWUpLCBtX3BhZ2VMb2FkZXJDbGllbnQuY2xpZW50SW5mbyk7CisgICAgaWYg
KCFtX3BhZ2VMb2FkZXJDbGllbnQuZGlkQ29tbWl0TG9hZEZvckZyYW1lKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX3BhZ2VMb2FkZXJDbGllbnQuZGlkQ29tbWl0TG9hZEZvckZyYW1lKHRvUmVm
KHBhZ2UpLCB0b1JlZihmcmFtZSksIHRvUmVmKHVzZXJEYXRhKSwgbV9wYWdlTG9hZGVyQ2xpZW50
LmNsaWVudEluZm8pOwogfQogCi12b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkRmluaXNoRG9jdW1l
bnRMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSkK
K3ZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXZWJQ
YWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBBUElPYmplY3QqIHVzZXJEYXRh
KQogewotICAgIGlmIChtX3BhZ2VMb2FkZXJDbGllbnQuZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9y
RnJhbWUpCi0gICAgICAgIG1fcGFnZUxvYWRlckNsaWVudC5kaWRGaW5pc2hEb2N1bWVudExvYWRG
b3JGcmFtZSh0b1JlZihwYWdlKSwgdG9SZWYoZnJhbWUpLCBtX3BhZ2VMb2FkZXJDbGllbnQuY2xp
ZW50SW5mbyk7CisgICAgaWYgKCFtX3BhZ2VMb2FkZXJDbGllbnQuZGlkRmluaXNoRG9jdW1lbnRM
b2FkRm9yRnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGFnZUxvYWRlckNsaWVudC5k
aWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSh0b1JlZihwYWdlKSwgdG9SZWYoZnJhbWUpLCB0
b1JlZih1c2VyRGF0YSksIG1fcGFnZUxvYWRlckNsaWVudC5jbGllbnRJbmZvKTsKIH0KIAotdm9p
ZCBXZWJMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JGcmFtZShXZWJQYWdlUHJveHkqIHBh
Z2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lKQordm9pZCBXZWJMb2FkZXJDbGllbnQ6OmRpZEZpbmlz
aExvYWRGb3JGcmFtZShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBB
UElPYmplY3QqIHVzZXJEYXRhKQogewotICAgIGlmIChtX3BhZ2VMb2FkZXJDbGllbnQuZGlkRmlu
aXNoTG9hZEZvckZyYW1lKQotICAgICAgICBtX3BhZ2VMb2FkZXJDbGllbnQuZGlkRmluaXNoTG9h
ZEZvckZyYW1lKHRvUmVmKHBhZ2UpLCB0b1JlZihmcmFtZSksIG1fcGFnZUxvYWRlckNsaWVudC5j
bGllbnRJbmZvKTsKKyAgICBpZiAoIW1fcGFnZUxvYWRlckNsaWVudC5kaWRGaW5pc2hMb2FkRm9y
RnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGFnZUxvYWRlckNsaWVudC5kaWRGaW5p
c2hMb2FkRm9yRnJhbWUodG9SZWYocGFnZSksIHRvUmVmKGZyYW1lKSwgdG9SZWYodXNlckRhdGEp
LCBtX3BhZ2VMb2FkZXJDbGllbnQuY2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgV2ViTG9hZGVyQ2xp
ZW50OjpkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdlYlBhZ2VQcm94eSogcGFnZSwgV2Vi
RnJhbWVQcm94eSogZnJhbWUpCit2b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkRmFpbExvYWRXaXRo
RXJyb3JGb3JGcmFtZShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBB
UElPYmplY3QqIHVzZXJEYXRhKQogewotICAgIGlmIChtX3BhZ2VMb2FkZXJDbGllbnQuZGlkRmFp
bExvYWRXaXRoRXJyb3JGb3JGcmFtZSkKLSAgICAgICAgbV9wYWdlTG9hZGVyQ2xpZW50LmRpZEZh
aWxMb2FkV2l0aEVycm9yRm9yRnJhbWUodG9SZWYocGFnZSksIHRvUmVmKGZyYW1lKSwgbV9wYWdl
TG9hZGVyQ2xpZW50LmNsaWVudEluZm8pOworICAgIGlmICghbV9wYWdlTG9hZGVyQ2xpZW50LmRp
ZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGFn
ZUxvYWRlckNsaWVudC5kaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKHRvUmVmKHBhZ2UpLCB0
b1JlZihmcmFtZSksIHRvUmVmKHVzZXJEYXRhKSwgbV9wYWdlTG9hZGVyQ2xpZW50LmNsaWVudElu
Zm8pOwogfQogCi12b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUo
V2ViUGFnZVByb3h5KiBwYWdlLCBTdHJpbmdJbXBsKiB0aXRsZSwgV2ViRnJhbWVQcm94eSogZnJh
bWUpCit2b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUoV2ViUGFn
ZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwg
QVBJT2JqZWN0KiB1c2VyRGF0YSkKIHsKLSAgICBpZiAobV9wYWdlTG9hZGVyQ2xpZW50LmRpZFJl
Y2VpdmVUaXRsZUZvckZyYW1lKQotICAgICAgICBtX3BhZ2VMb2FkZXJDbGllbnQuZGlkUmVjZWl2
ZVRpdGxlRm9yRnJhbWUodG9SZWYocGFnZSksIHRvUmVmKHRpdGxlKSwgdG9SZWYoZnJhbWUpLCBt
X3BhZ2VMb2FkZXJDbGllbnQuY2xpZW50SW5mbyk7CisgICAgaWYgKCFtX3BhZ2VMb2FkZXJDbGll
bnQuZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGFn
ZUxvYWRlckNsaWVudC5kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZSh0b1JlZihwYWdlKSwgdG9SZWYo
dGl0bGUuaW1wbCgpKSwgdG9SZWYoZnJhbWUpLCB0b1JlZih1c2VyRGF0YSksIG1fcGFnZUxvYWRl
ckNsaWVudC5jbGllbnRJbmZvKTsKIH0KIAotdm9pZCBXZWJMb2FkZXJDbGllbnQ6OmRpZEZpcnN0
TGF5b3V0Rm9yRnJhbWUoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSkK
K3ZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRGaXJzdExheW91dEZvckZyYW1lKFdlYlBhZ2VQcm94
eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSU9iamVjdCogdXNlckRhdGEpCiB7Ci0g
ICAgaWYgKG1fcGFnZUxvYWRlckNsaWVudC5kaWRGaXJzdExheW91dEZvckZyYW1lKQotICAgICAg
ICBtX3BhZ2VMb2FkZXJDbGllbnQuZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSh0b1JlZihwYWdlKSwg
dG9SZWYoZnJhbWUpLCBtX3BhZ2VMb2FkZXJDbGllbnQuY2xpZW50SW5mbyk7CisgICAgaWYgKCFt
X3BhZ2VMb2FkZXJDbGllbnQuZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9wYWdlTG9hZGVyQ2xpZW50LmRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUodG9SZWYo
cGFnZSksIHRvUmVmKGZyYW1lKSwgdG9SZWYodXNlckRhdGEpLCBtX3BhZ2VMb2FkZXJDbGllbnQu
Y2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkq
IGZyYW1lKQordm9pZCBXZWJMb2FkZXJDbGllbnQ6OmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dEZvckZyYW1lKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIEFQ
SU9iamVjdCogdXNlckRhdGEpCiB7Ci0gICAgaWYgKG1fcGFnZUxvYWRlckNsaWVudC5kaWRGaXJz
dFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSkKLSAgICAgICAgbV9wYWdlTG9hZGVyQ2xp
ZW50LmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKHRvUmVmKHBhZ2UpLCB0
b1JlZihmcmFtZSksIG1fcGFnZUxvYWRlckNsaWVudC5jbGllbnRJbmZvKTsKKyAgICBpZiAoIW1f
cGFnZUxvYWRlckNsaWVudC5kaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9wYWdlTG9hZGVyQ2xpZW50LmRpZEZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dEZvckZyYW1lKHRvUmVmKHBhZ2UpLCB0b1JlZihmcmFtZSksIHRvUmVm
KHVzZXJEYXRhKSwgbV9wYWdlTG9hZGVyQ2xpZW50LmNsaWVudEluZm8pOwogfQogCiB2b2lkIFdl
YkxvYWRlckNsaWVudDo6ZGlkU3RhcnRQcm9ncmVzcyhXZWJQYWdlUHJveHkqIHBhZ2UpCiB7Ci0g
ICAgaWYgKG1fcGFnZUxvYWRlckNsaWVudC5kaWRTdGFydFByb2dyZXNzKQotICAgICAgICBtX3Bh
Z2VMb2FkZXJDbGllbnQuZGlkU3RhcnRQcm9ncmVzcyh0b1JlZihwYWdlKSwgbV9wYWdlTG9hZGVy
Q2xpZW50LmNsaWVudEluZm8pOworICAgIGlmICghbV9wYWdlTG9hZGVyQ2xpZW50LmRpZFN0YXJ0
UHJvZ3Jlc3MpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGFnZUxvYWRlckNsaWVudC5kaWRT
dGFydFByb2dyZXNzKHRvUmVmKHBhZ2UpLCBtX3BhZ2VMb2FkZXJDbGllbnQuY2xpZW50SW5mbyk7
CiB9CiAKIHZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRDaGFuZ2VQcm9ncmVzcyhXZWJQYWdlUHJv
eHkqIHBhZ2UpCiB7Ci0gICAgaWYgKG1fcGFnZUxvYWRlckNsaWVudC5kaWRDaGFuZ2VQcm9ncmVz
cykKLSAgICAgICAgbV9wYWdlTG9hZGVyQ2xpZW50LmRpZENoYW5nZVByb2dyZXNzKHRvUmVmKHBh
Z2UpLCBtX3BhZ2VMb2FkZXJDbGllbnQuY2xpZW50SW5mbyk7CisgICAgaWYgKCFtX3BhZ2VMb2Fk
ZXJDbGllbnQuZGlkQ2hhbmdlUHJvZ3Jlc3MpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGFn
ZUxvYWRlckNsaWVudC5kaWRDaGFuZ2VQcm9ncmVzcyh0b1JlZihwYWdlKSwgbV9wYWdlTG9hZGVy
Q2xpZW50LmNsaWVudEluZm8pOwogfQogCiB2b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkRmluaXNo
UHJvZ3Jlc3MoV2ViUGFnZVByb3h5KiBwYWdlKQogewotICAgIGlmIChtX3BhZ2VMb2FkZXJDbGll
bnQuZGlkRmluaXNoUHJvZ3Jlc3MpCi0gICAgICAgIG1fcGFnZUxvYWRlckNsaWVudC5kaWRGaW5p
c2hQcm9ncmVzcyh0b1JlZihwYWdlKSwgbV9wYWdlTG9hZGVyQ2xpZW50LmNsaWVudEluZm8pOwor
ICAgIGlmICghbV9wYWdlTG9hZGVyQ2xpZW50LmRpZEZpbmlzaFByb2dyZXNzKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX3BhZ2VMb2FkZXJDbGllbnQuZGlkRmluaXNoUHJvZ3Jlc3ModG9SZWYo
cGFnZSksIG1fcGFnZUxvYWRlckNsaWVudC5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBXZWJMb2Fk
ZXJDbGllbnQ6OmRpZEJlY29tZVVucmVzcG9uc2l2ZShXZWJQYWdlUHJveHkqIHBhZ2UpCiB7Ci0g
ICAgaWYgKG1fcGFnZUxvYWRlckNsaWVudC5kaWRCZWNvbWVVbnJlc3BvbnNpdmUpCi0gICAgICAg
IG1fcGFnZUxvYWRlckNsaWVudC5kaWRCZWNvbWVVbnJlc3BvbnNpdmUodG9SZWYocGFnZSksIG1f
cGFnZUxvYWRlckNsaWVudC5jbGllbnRJbmZvKTsKKyAgICBpZiAoIW1fcGFnZUxvYWRlckNsaWVu
dC5kaWRCZWNvbWVVbnJlc3BvbnNpdmUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGFnZUxv
YWRlckNsaWVudC5kaWRCZWNvbWVVbnJlc3BvbnNpdmUodG9SZWYocGFnZSksIG1fcGFnZUxvYWRl
ckNsaWVudC5jbGllbnRJbmZvKTsKIH0KIAogdm9pZCBXZWJMb2FkZXJDbGllbnQ6OmRpZEJlY29t
ZVJlc3BvbnNpdmUoV2ViUGFnZVByb3h5KiBwYWdlKQogewotICAgIGlmIChtX3BhZ2VMb2FkZXJD
bGllbnQuZGlkQmVjb21lUmVzcG9uc2l2ZSkKLSAgICAgICAgbV9wYWdlTG9hZGVyQ2xpZW50LmRp
ZEJlY29tZVJlc3BvbnNpdmUodG9SZWYocGFnZSksIG1fcGFnZUxvYWRlckNsaWVudC5jbGllbnRJ
bmZvKTsKKyAgICBpZiAoIW1fcGFnZUxvYWRlckNsaWVudC5kaWRCZWNvbWVSZXNwb25zaXZlKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX3BhZ2VMb2FkZXJDbGllbnQuZGlkQmVjb21lUmVzcG9u
c2l2ZSh0b1JlZihwYWdlKSwgbV9wYWdlTG9hZGVyQ2xpZW50LmNsaWVudEluZm8pOwogfQogCiB2
b2lkIFdlYkxvYWRlckNsaWVudDo6cHJvY2Vzc0RpZEV4aXQoV2ViUGFnZVByb3h5KiBwYWdlKQog
ewotICAgIGlmIChtX3BhZ2VMb2FkZXJDbGllbnQucHJvY2Vzc0RpZEV4aXQpCi0gICAgICAgIG1f
cGFnZUxvYWRlckNsaWVudC5wcm9jZXNzRGlkRXhpdCh0b1JlZihwYWdlKSwgbV9wYWdlTG9hZGVy
Q2xpZW50LmNsaWVudEluZm8pOworICAgIGlmICghbV9wYWdlTG9hZGVyQ2xpZW50LnByb2Nlc3NE
aWRFeGl0KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3BhZ2VMb2FkZXJDbGllbnQucHJvY2Vz
c0RpZEV4aXQodG9SZWYocGFnZSksIG1fcGFnZUxvYWRlckNsaWVudC5jbGllbnRJbmZvKTsKIH0K
IAogdm9pZCBXZWJMb2FkZXJDbGllbnQ6OmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdChXZWJQYWdl
UHJveHkqIHBhZ2UpCiB7Ci0gICAgaWYgKG1fcGFnZUxvYWRlckNsaWVudC5kaWRDaGFuZ2VCYWNr
Rm9yd2FyZExpc3QpCi0gICAgICAgIG1fcGFnZUxvYWRlckNsaWVudC5kaWRDaGFuZ2VCYWNrRm9y
d2FyZExpc3QodG9SZWYocGFnZSksIG1fcGFnZUxvYWRlckNsaWVudC5jbGllbnRJbmZvKTsKKyAg
ICBpZiAoIW1fcGFnZUxvYWRlckNsaWVudC5kaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fcGFnZUxvYWRlckNsaWVudC5kaWRDaGFuZ2VCYWNrRm9yd2Fy
ZExpc3QodG9SZWYocGFnZSksIG1fcGFnZUxvYWRlckNsaWVudC5jbGllbnRJbmZvKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQu
aAkocmV2aXNpb24gNjc3ODYpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAorY2xhc3MgQVBJT2JqZWN0OwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViRnJhbWVQ
cm94eTsKIApAQCAtMzksMTYgKzQwLDE3IEBAIHB1YmxpYzoKICAgICBXZWJMb2FkZXJDbGllbnQo
KTsKICAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgV0tQYWdlTG9hZGVyQ2xpZW50Kik7CiAKLSAg
ICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgV2Vi
RnJhbWVQcm94eSopOwotICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSopOwotICAgIHZv
aWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdlYlBhZ2VQcm94eSos
IFdlYkZyYW1lUHJveHkqKTsKLSAgICB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZShXZWJQYWdl
UHJveHkqLCBXZWJGcmFtZVByb3h5Kik7Ci0gICAgdm9pZCBkaWRGaW5pc2hEb2N1bWVudExvYWRG
b3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5Kik7Ci0gICAgdm9pZCBkaWRGaW5p
c2hMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSopOwotICAgIHZvaWQg
ZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5
Kik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBTdHJp
bmdJbXBsKiwgV2ViRnJhbWVQcm94eSopOwotICAgIHZvaWQgZGlkRmlyc3RMYXlvdXRGb3JGcmFt
ZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5Kik7Ci0gICAgdm9pZCBkaWRGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5Kik7
CisgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYlBhZ2VQcm94eSos
IFdlYkZyYW1lUHJveHkqLCBBUElPYmplY3QqKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJS
ZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1l
UHJveHkqLCBBUElPYmplY3QqKTsKKyAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRo
RXJyb3JGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJT2JqZWN0Kik7
CisgICAgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQ
cm94eSosIEFQSU9iamVjdCopOworICAgIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJh
bWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIEFQSU9iamVjdCopOworICAgIHZvaWQg
ZGlkRmluaXNoTG9hZEZvckZyYW1lKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBBUElP
YmplY3QqKTsKKyAgICB2b2lkIGRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV2ViUGFnZVBy
b3h5KiwgV2ViRnJhbWVQcm94eSosIEFQSU9iamVjdCopOworICAgIHZvaWQgZGlkUmVjZWl2ZVRp
dGxlRm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJiwgV2ViRnJhbWVQcm94eSos
IEFQSU9iamVjdCopOworICAgIHZvaWQgZGlkRmlyc3RMYXlvdXRGb3JGcmFtZShXZWJQYWdlUHJv
eHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJT2JqZWN0Kik7CisgICAgdm9pZCBkaWRGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5Kiwg
QVBJT2JqZWN0Kik7CisKICAgICB2b2lkIGRpZFN0YXJ0UHJvZ3Jlc3MoV2ViUGFnZVByb3h5Kik7
CiAgICAgdm9pZCBkaWRDaGFuZ2VQcm9ncmVzcyhXZWJQYWdlUHJveHkqKTsKICAgICB2b2lkIGRp
ZEZpbmlzaFByb2dyZXNzKFdlYlBhZ2VQcm94eSopOwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCShyZXZpc2lvbiA2Nzc4NikKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0MSw3NSArNTQxLDEyNSBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yCiAgICAgICAgIGNhc2UgV2ViUGFnZVByb3h5
TWVzc2FnZTo6RGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTogewogICAgICAgICAgICAg
dWludDY0X3QgZnJhbWVJRDsKICAgICAgICAgICAgIFN0cmluZyB1cmw7Ci0gICAgICAgICAgICBp
ZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKENvcmVJUEM6Ok91dChmcmFtZUlELCB1cmwpKSkKKworICAg
ICAgICAgICAgUmVmUHRyPEFQSU9iamVjdD4gdXNlckRhdGE7CisgICAgICAgICAgICBXZWJDb250
ZXh0VXNlck1lc3NhZ2VEZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKHVzZXJEYXRhLCBwYWdlTmFtZXNw
YWNlKCktPmNvbnRleHQoKSk7CisKKyAgICAgICAgICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUo
Q29yZUlQQzo6T3V0KGZyYW1lSUQsIHVybCwgbWVzc2FnZURlY29kZXIpKSkKICAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
KHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCksIHVybCk7CisKKyAgICAgICAgICAgIGRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUocHJvY2VzcygpLT53ZWJGcmFtZShmcmFtZUlEKSwg
dXJsLCB1c2VyRGF0YS5nZXQoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIFdlYlBhZ2VQcm94eU1lc3NhZ2U6OkRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZv
clByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiB7CiAgICAgICAgICAgICB1aW50NjRfdCBmcmFtZUlE
OwogICAgICAgICAgICAgU3RyaW5nIHVybDsKLSAgICAgICAgICAgIGlmICghYXJndW1lbnRzLT5k
ZWNvZGUoQ29yZUlQQzo6T3V0KGZyYW1lSUQsIHVybCkpKQorCisgICAgICAgICAgICBSZWZQdHI8
QVBJT2JqZWN0PiB1c2VyRGF0YTsKKyAgICAgICAgICAgIFdlYkNvbnRleHRVc2VyTWVzc2FnZURl
Y29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsIHBhZ2VOYW1lc3BhY2UoKS0+Y29udGV4dCgp
KTsKKworICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShDb3JlSVBDOjpPdXQoZnJh
bWVJRCwgdXJsLCBtZXNzYWdlRGVjb2RlcikpKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCksIHVybCk7CisKKyAgICAgICAgICAgIGRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHByb2Nlc3Mo
KS0+d2ViRnJhbWUoZnJhbWVJRCksIHVybCwgdXNlckRhdGEuZ2V0KCkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBXZWJQYWdlUHJveHlNZXNzYWdlOjpEaWRG
YWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHsKICAgICAgICAgICAgIHVpbnQ2NF90IGZyYW1l
SUQ7Ci0gICAgICAgICAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKGZyYW1lSUQpKQorICAgICAg
ICAgICAgCisgICAgICAgICAgICBSZWZQdHI8QVBJT2JqZWN0PiB1c2VyRGF0YTsKKyAgICAgICAg
ICAgIFdlYkNvbnRleHRVc2VyTWVzc2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEs
IHBhZ2VOYW1lc3BhY2UoKS0+Y29udGV4dCgpKTsKKworICAgICAgICAgICAgaWYgKCFhcmd1bWVu
dHMtPmRlY29kZShDb3JlSVBDOjpPdXQoZnJhbWVJRCwgbWVzc2FnZURlY29kZXIpKSkKICAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUocHJvY2VzcygpLT53ZWJGcmFtZShmcmFtZUlEKSk7CisKKyAgICAgICAgICAgIGRpZEZh
aWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShwcm9jZXNzKCktPndlYkZyYW1lKGZyYW1lSUQpLCB1
c2VyRGF0YS5nZXQoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIFdlYlBhZ2VQcm94eU1lc3NhZ2U6OkRpZENvbW1pdExvYWRGb3JGcmFtZTogewogICAgICAg
ICAgICAgdWludDY0X3QgZnJhbWVJRDsKICAgICAgICAgICAgIFBsYXRmb3JtQ2VydGlmaWNhdGVJ
bmZvIGNlcnRpZmljYXRlSW5mbzsKLSAgICAgICAgICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUo
Q29yZUlQQzo6T3V0KGZyYW1lSUQsIGNlcnRpZmljYXRlSW5mbykpKQorCisgICAgICAgICAgICBS
ZWZQdHI8QVBJT2JqZWN0PiB1c2VyRGF0YTsKKyAgICAgICAgICAgIFdlYkNvbnRleHRVc2VyTWVz
c2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsIHBhZ2VOYW1lc3BhY2UoKS0+Y29u
dGV4dCgpKTsKKworICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShDb3JlSVBDOjpP
dXQoZnJhbWVJRCwgY2VydGlmaWNhdGVJbmZvLCBtZXNzYWdlRGVjb2RlcikpKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGRpZENvbW1pdExvYWRGb3JGcmFtZShwcm9jZXNz
KCktPndlYkZyYW1lKGZyYW1lSUQpLCBjZXJ0aWZpY2F0ZUluZm8pOworICAgIAorICAgICAgICAg
ICAgZGlkQ29tbWl0TG9hZEZvckZyYW1lKHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCksIGNl
cnRpZmljYXRlSW5mbywgdXNlckRhdGEuZ2V0KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBXZWJQYWdlUHJveHlNZXNzYWdlOjpEaWRGaW5pc2hEb2N1bWVu
dExvYWRGb3JGcmFtZTogewogICAgICAgICAgICAgdWludDY0X3QgZnJhbWVJRDsKLSAgICAgICAg
ICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUoZnJhbWVJRCkpCisKKyAgICAgICAgICAgIFJlZlB0
cjxBUElPYmplY3Q+IHVzZXJEYXRhOworICAgICAgICAgICAgV2ViQ29udGV4dFVzZXJNZXNzYWdl
RGVjb2RlciBtZXNzYWdlRGVjb2Rlcih1c2VyRGF0YSwgcGFnZU5hbWVzcGFjZSgpLT5jb250ZXh0
KCkpOworCisgICAgICAgICAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKENvcmVJUEM6Ok91dChm
cmFtZUlELCBtZXNzYWdlRGVjb2RlcikpKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKHByb2Nlc3MoKS0+d2ViRnJhbWUo
ZnJhbWVJRCkpOworCisgICAgICAgICAgICBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShw
cm9jZXNzKCktPndlYkZyYW1lKGZyYW1lSUQpLCB1c2VyRGF0YS5nZXQoKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIFdlYlBhZ2VQcm94eU1lc3NhZ2U6OkRp
ZEZpbmlzaExvYWRGb3JGcmFtZTogewogICAgICAgICAgICAgdWludDY0X3QgZnJhbWVJRDsKLSAg
ICAgICAgICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUoZnJhbWVJRCkpCisKKyAgICAgICAgICAg
IFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOworICAgICAgICAgICAgV2ViQ29udGV4dFVzZXJN
ZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVjb2Rlcih1c2VyRGF0YSwgcGFnZU5hbWVzcGFjZSgpLT5j
b250ZXh0KCkpOworCisgICAgICAgICAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKENvcmVJUEM6
Ok91dChmcmFtZUlELCBtZXNzYWdlRGVjb2RlcikpKQogICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIGRpZEZpbmlzaExvYWRGb3JGcmFtZShwcm9jZXNzKCktPndlYkZyYW1lKGZy
YW1lSUQpKTsKKworICAgICAgICAgICAgZGlkRmluaXNoTG9hZEZvckZyYW1lKHByb2Nlc3MoKS0+
d2ViRnJhbWUoZnJhbWVJRCksIHVzZXJEYXRhLmdldCgpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgV2ViUGFnZVByb3h5TWVzc2FnZTo6RGlkRmFpbExvYWRG
b3JGcmFtZTogewogICAgICAgICAgICAgdWludDY0X3QgZnJhbWVJRDsKLSAgICAgICAgICAgIGlm
ICghYXJndW1lbnRzLT5kZWNvZGUoZnJhbWVJRCkpCisKKyAgICAgICAgICAgIFJlZlB0cjxBUElP
YmplY3Q+IHVzZXJEYXRhOworICAgICAgICAgICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2Rl
ciBtZXNzYWdlRGVjb2Rlcih1c2VyRGF0YSwgcGFnZU5hbWVzcGFjZSgpLT5jb250ZXh0KCkpOwor
CisgICAgICAgICAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKENvcmVJUEM6Ok91dChmcmFtZUlE
LCBtZXNzYWdlRGVjb2RlcikpKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IGRpZEZhaWxMb2FkRm9yRnJhbWUocHJvY2VzcygpLT53ZWJGcmFtZShmcmFtZUlEKSk7CisKKyAg
ICAgICAgICAgIGRpZEZhaWxMb2FkRm9yRnJhbWUocHJvY2VzcygpLT53ZWJGcmFtZShmcmFtZUlE
KSwgdXNlckRhdGEuZ2V0KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBXZWJQYWdlUHJveHlNZXNzYWdlOjpEaWRSZWNlaXZlVGl0bGVGb3JGcmFtZTogewog
ICAgICAgICAgICAgdWludDY0X3QgZnJhbWVJRDsKICAgICAgICAgICAgIFN0cmluZyB0aXRsZTsK
LSAgICAgICAgICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUoQ29yZUlQQzo6T3V0KGZyYW1lSUQs
IHRpdGxlKSkpCisKKyAgICAgICAgICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOworICAg
ICAgICAgICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVjb2Rlcih1c2Vy
RGF0YSwgcGFnZU5hbWVzcGFjZSgpLT5jb250ZXh0KCkpOworCisgICAgICAgICAgICBpZiAoIWFy
Z3VtZW50cy0+ZGVjb2RlKENvcmVJUEM6Ok91dChmcmFtZUlELCB0aXRsZSwgbWVzc2FnZURlY29k
ZXIpKSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBkaWRSZWNlaXZlVGl0
bGVGb3JGcmFtZShwcm9jZXNzKCktPndlYkZyYW1lKGZyYW1lSUQpLCB0aXRsZSk7CisKKyAgICAg
ICAgICAgIGRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJ
RCksIHRpdGxlLCB1c2VyRGF0YS5nZXQoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBjYXNlIFdlYlBhZ2VQcm94eU1lc3NhZ2U6OkRpZEZpcnN0TGF5b3V0Rm9yRnJh
bWU6IHsKICAgICAgICAgICAgIHVpbnQ2NF90IGZyYW1lSUQ7Ci0gICAgICAgICAgICBpZiAoIWFy
Z3VtZW50cy0+ZGVjb2RlKGZyYW1lSUQpKQorCisgICAgICAgICAgICBSZWZQdHI8QVBJT2JqZWN0
PiB1c2VyRGF0YTsKKyAgICAgICAgICAgIFdlYkNvbnRleHRVc2VyTWVzc2FnZURlY29kZXIgbWVz
c2FnZURlY29kZXIodXNlckRhdGEsIHBhZ2VOYW1lc3BhY2UoKS0+Y29udGV4dCgpKTsKKworICAg
ICAgICAgICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShDb3JlSVBDOjpPdXQoZnJhbWVJRCwgbWVz
c2FnZURlY29kZXIpKSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBkaWRG
aXJzdExheW91dEZvckZyYW1lKHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCkpOworCisgICAg
ICAgICAgICBkaWRGaXJzdExheW91dEZvckZyYW1lKHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJ
RCksIHVzZXJEYXRhLmdldCgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgV2ViUGFnZVByb3h5TWVzc2FnZTo6RGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0Rm9yRnJhbWU6IHsKICAgICAgICAgICAgIHVpbnQ2NF90IGZyYW1lSUQ7Ci0gICAgICAgICAg
ICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKGZyYW1lSUQpKQorCisgICAgICAgICAgICBSZWZQdHI8
QVBJT2JqZWN0PiB1c2VyRGF0YTsKKyAgICAgICAgICAgIFdlYkNvbnRleHRVc2VyTWVzc2FnZURl
Y29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsIHBhZ2VOYW1lc3BhY2UoKS0+Y29udGV4dCgp
KTsKKworICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShDb3JlSVBDOjpPdXQoZnJh
bWVJRCwgbWVzc2FnZURlY29kZXIpKSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZShwcm9jZXNzKCktPndl
YkZyYW1lKGZyYW1lSUQpKTsKKworICAgICAgICAgICAgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0Rm9yRnJhbWUocHJvY2VzcygpLT53ZWJGcmFtZShmcmFtZUlEKSwgdXNlckRhdGEuZ2V0
KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBXZWJQYWdl
UHJveHlNZXNzYWdlOjpEaWRTdGFydFByb2dyZXNzOgpAQCAtOTI1LDQ3ICs5NzUsNDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaFByb2dyZXNzKCkKICAgICBtX2xvYWRlckNsaWVudC5k
aWRGaW5pc2hQcm9ncmVzcyh0aGlzKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFN0cmlu
ZyYgdXJsKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFN0cmluZyYgdXJsLCBBUElPYmplY3QqIHVz
ZXJEYXRhKQogewogICAgIGZyYW1lLT5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZCh1cmwpOwotICAg
IG1fbG9hZGVyQ2xpZW50LmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodGhpcywgZnJh
bWUpOworICAgIG1fbG9hZGVyQ2xpZW50LmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUo
dGhpcywgZnJhbWUsIHVzZXJEYXRhKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYkZyYW1lUHJveHkq
IGZyYW1lLCBjb25zdCBTdHJpbmcmIHVybCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJGcmFtZVByb3h5KiBm
cmFtZSwgY29uc3QgU3RyaW5nJiB1cmwsIEFQSU9iamVjdCogdXNlckRhdGEpCiB7CiAgICAgZnJh
bWUtPmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCh1cmwpOwotICAg
IG1fbG9hZGVyQ2xpZW50LmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKHRoaXMsIGZyYW1lKTsKKyAgICBtX2xvYWRlckNsaWVudC5kaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh0aGlzLCBmcmFtZSwgdXNlckRh
dGEpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92
aXNpb25hbExvYWRGb3JGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgQVBJT2JqZWN0KiB1c2Vy
RGF0YSkKIHsKLSAgICBtX2xvYWRlckNsaWVudC5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVy
cm9yRm9yRnJhbWUodGhpcywgZnJhbWUpOworICAgIG1fbG9hZGVyQ2xpZW50LmRpZEZhaWxQcm92
aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZSh0aGlzLCBmcmFtZSwgdXNlckRhdGEpOwogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYkZyYW1lUHJveHkq
IGZyYW1lLCBjb25zdCBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvKQor
dm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShXZWJGcmFtZVByb3h5KiBm
cmFtZSwgY29uc3QgUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgQVBJ
T2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICBmcmFtZS0+c2V0Q2VydGlmaWNhdGVJbmZvKFdlYkNl
cnRpZmljYXRlSW5mbzo6Y3JlYXRlKGNlcnRpZmljYXRlSW5mbykpOwogICAgIGZyYW1lLT5kaWRD
b21taXRMb2FkKCk7Ci0gICAgbV9sb2FkZXJDbGllbnQuZGlkQ29tbWl0TG9hZEZvckZyYW1lKHRo
aXMsIGZyYW1lKTsKKyAgICBtX2xvYWRlckNsaWVudC5kaWRDb21taXRMb2FkRm9yRnJhbWUodGhp
cywgZnJhbWUsIHVzZXJEYXRhKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaERv
Y3VtZW50TG9hZEZvckZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lKQordm9pZCBXZWJQYWdlUHJv
eHk6OmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBB
UElPYmplY3QqIHVzZXJEYXRhKQogewotICAgIG1fbG9hZGVyQ2xpZW50LmRpZEZpbmlzaERvY3Vt
ZW50TG9hZEZvckZyYW1lKHRoaXMsIGZyYW1lKTsKKyAgICBtX2xvYWRlckNsaWVudC5kaWRGaW5p
c2hEb2N1bWVudExvYWRGb3JGcmFtZSh0aGlzLCBmcmFtZSwgdXNlckRhdGEpOwogfQogCi12b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1l
KQordm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZShXZWJGcmFtZVByb3h5
KiBmcmFtZSwgQVBJT2JqZWN0KiB1c2VyRGF0YSkKIHsKICAgICBmcmFtZS0+ZGlkRmluaXNoTG9h
ZCgpOwotICAgIG1fbG9hZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSh0aGlzLCBmcmFt
ZSk7CisgICAgbV9sb2FkZXJDbGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1lKHRoaXMsIGZyYW1l
LCB1c2VyRGF0YSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsTG9hZEZvckZyYW1l
KFdlYkZyYW1lUHJveHkqIGZyYW1lKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9y
RnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSU9iamVjdCogdXNlckRhdGEpCiB7Ci0gICAg
bV9sb2FkZXJDbGllbnQuZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZSh0aGlzLCBmcmFtZSk7
CisgICAgbV9sb2FkZXJDbGllbnQuZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZSh0aGlzLCBm
cmFtZSwgdXNlckRhdGEpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVRpdGxl
Rm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFN0cmluZyYgdGl0bGUpCit2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJh
bWUsIGNvbnN0IFN0cmluZyYgdGl0bGUsIEFQSU9iamVjdCogdXNlckRhdGEpCiB7CiAgICAgZnJh
bWUtPmRpZFJlY2VpdmVUaXRsZSh0aXRsZSk7CiAKQEAgLTk3MywxNyArMTAyMywxNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhCiAgICAgaWYgKGZyYW1lID09IG1f
bWFpbkZyYW1lKQogICAgICAgICBtX3BhZ2VUaXRsZSA9IHRpdGxlOwogCi0gICAgbV9sb2FkZXJD
bGllbnQuZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUodGhpcywgdGl0bGUuaW1wbCgpLCBmcmFtZSk7
CisgICAgbV9sb2FkZXJDbGllbnQuZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUodGhpcywgdGl0bGUs
IGZyYW1lLCB1c2VyRGF0YSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaXJzdExheW91
dEZvckZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZEZp
cnN0TGF5b3V0Rm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSU9iamVjdCogdXNlckRh
dGEpCiB7Ci0gICAgbV9sb2FkZXJDbGllbnQuZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSh0aGlzLCBm
cmFtZSk7CisgICAgbV9sb2FkZXJDbGllbnQuZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSh0aGlzLCBm
cmFtZSwgdXNlckRhdGEpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUpCit2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUoV2ViRnJhbWVQ
cm94eSogZnJhbWUsIEFQSU9iamVjdCogdXNlckRhdGEpCiB7Ci0gICAgbV9sb2FkZXJDbGllbnQu
ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUodGhpcywgZnJhbWUpOworICAg
IG1fbG9hZGVyQ2xpZW50LmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKHRo
aXMsIGZyYW1lLCB1c2VyRGF0YSk7CiB9CiAKIC8vIFBvbGljeUNsaWVudApJbmRleDogV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDY3Nzg2KQorKysgV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNSwxNiArMjA1LDE2IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRDcmVhdGVNYWluRnJhbWUodWludDY0X3QgZnJhbWVJRCk7CiAgICAg
dm9pZCBkaWRDcmVhdGVTdWJGcmFtZSh1aW50NjRfdCBmcmFtZUlEKTsKIAotICAgIHZvaWQgZGlk
U3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJGcmFtZVByb3h5KiwgY29uc3QgU3RyaW5n
Jik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRG
b3JGcmFtZShXZWJGcmFtZVByb3h5KiwgY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBkaWRGYWls
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViRnJhbWVQcm94eSopOwotICAgIHZvaWQgZGlkQ29t
bWl0TG9hZEZvckZyYW1lKFdlYkZyYW1lUHJveHkqLCBjb25zdCBQbGF0Zm9ybUNlcnRpZmljYXRl
SW5mbyYpOwotICAgIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoV2ViRnJhbWVQ
cm94eSopOwotICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdlYkZyYW1lUHJveHkqKTsK
LSAgICB2b2lkIGRpZEZhaWxMb2FkRm9yRnJhbWUoV2ViRnJhbWVQcm94eSopOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSosIGNvbnN0IFN0cmluZyYpOwot
ICAgIHZvaWQgZGlkRmlyc3RMYXlvdXRGb3JGcmFtZShXZWJGcmFtZVByb3h5Kik7Ci0gICAgdm9p
ZCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZShXZWJGcmFtZVByb3h5Kik7
CisgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYkZyYW1lUHJveHkq
LCBjb25zdCBTdHJpbmcmLCBBUElPYmplY3QqKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJS
ZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYkZyYW1lUHJveHkqLCBjb25zdCBT
dHJpbmcmLCBBUElPYmplY3QqKTsKKyAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JG
cmFtZShXZWJGcmFtZVByb3h5KiwgQVBJT2JqZWN0Kik7CisgICAgdm9pZCBkaWRDb21taXRMb2Fk
Rm9yRnJhbWUoV2ViRnJhbWVQcm94eSosIGNvbnN0IFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvJiwg
QVBJT2JqZWN0Kik7CisgICAgdm9pZCBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXZWJG
cmFtZVByb3h5KiwgQVBJT2JqZWN0Kik7CisgICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUo
V2ViRnJhbWVQcm94eSosIEFQSU9iamVjdCopOworICAgIHZvaWQgZGlkRmFpbExvYWRGb3JGcmFt
ZShXZWJGcmFtZVByb3h5KiwgQVBJT2JqZWN0Kik7CisgICAgdm9pZCBkaWRSZWNlaXZlVGl0bGVG
b3JGcmFtZShXZWJGcmFtZVByb3h5KiwgY29uc3QgU3RyaW5nJiwgQVBJT2JqZWN0Kik7CisgICAg
dm9pZCBkaWRGaXJzdExheW91dEZvckZyYW1lKFdlYkZyYW1lUHJveHkqLCBBUElPYmplY3QqKTsK
KyAgICB2b2lkIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKFdlYkZyYW1l
UHJveHkqLCBBUElPYmplY3QqKTsKICAgICB2b2lkIGRpZFN0YXJ0UHJvZ3Jlc3MoKTsKICAgICB2
b2lkIGRpZENoYW5nZVByb2dyZXNzKGRvdWJsZSk7CiAgICAgdm9pZCBkaWRGaW5pc2hQcm9ncmVz
cygpOwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJKHJldmlzaW9uIDY3Nzg2KQorKysg
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDE2
ICs1NywxNiBAQCBlbnVtIHsKIHR5cGVkZWYgdWludDMyX3QgV0tFdmVudE1vZGlmaWVyczsKIAog
Ly8gRnJhbWVMb2FkIENsaWVudAotdHlwZWRlZiB2b2lkICgqV0tQYWdlRGlkU3RhcnRQcm92aXNp
b25hbExvYWRGb3JGcmFtZUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFt
ZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRSZWNl
aXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZUNhbGxiYWNrKShXS1Bh
Z2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10
eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJh
bWVDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQg
KmNsaWVudEluZm8pOyAvLyBGSVhNRTogQWRkIFdLRXJyb3JSZWYuCi10eXBlZGVmIHZvaWQgKCpX
S1BhZ2VEaWRDb21taXRMb2FkRm9yRnJhbWVDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJh
bWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiB2b2lkICgqV0tQ
YWdlRGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWVDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2Us
IFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiB2b2lk
ICgqV0tQYWdlRGlkRmluaXNoTG9hZEZvckZyYW1lQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBX
S0ZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAo
KldLUGFnZURpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWVDYWxsYmFjaykoV0tQYWdlUmVmIHBh
Z2UsIFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOyAvLyBGSVhNRTog
QWRkIFdLRXJyb3JSZWYuCi10eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRSZWNlaXZlVGl0bGVGb3JG
cmFtZUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgdGl0bGUsIFdLRnJhbWVS
ZWYgZnJhbWUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiB2b2lkICgqV0tQYWdl
RGlkRmlyc3RMYXlvdXRGb3JGcmFtZSkoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUs
IGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiB2b2lkICgqV0tQYWdlRGlkRmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUpKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVm
IGZyYW1lLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLUGFnZURp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdL
RnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5m
byk7Cit0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbExvYWRGb3JGcmFtZUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBm
cmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVk
ZWYgdm9pZCAoKldLUGFnZURpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZUNh
bGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzZXJE
YXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsgLy8gRklYTUU6IEFkZCBXS0Vycm9yUmVmLgor
dHlwZWRlZiB2b2lkICgqV0tQYWdlRGlkQ29tbWl0TG9hZEZvckZyYW1lQ2FsbGJhY2spKFdLUGFn
ZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZv
aWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tQYWdlRGlkRmluaXNoRG9jdW1lbnRM
b2FkRm9yRnJhbWVDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdL
VHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQg
KCpXS1BhZ2VEaWRGaW5pc2hMb2FkRm9yRnJhbWVDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdL
RnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5m
byk7Cit0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lQ2Fs
bGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlckRh
dGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOyAvLyBGSVhNRTogQWRkIFdLRXJyb3JSZWYuCit0
eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRSZWNlaXZlVGl0bGVGb3JGcmFtZUNhbGxiYWNrKShXS1Bh
Z2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgdGl0bGUsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJl
ZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS1Bh
Z2VEaWRGaXJzdExheW91dEZvckZyYW1lKShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFt
ZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYg
dm9pZCAoKldLUGFnZURpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKShXS1Bh
Z2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2
b2lkICpjbGllbnRJbmZvKTsKIAogLy8gUHJvZ3Jlc3MgQ2xpZW50CiB0eXBlZGVmIHZvaWQgKCpX
S1BhZ2VEaWRTdGFydFByb2dyZXNzQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lk
ICpjbGllbnRJbmZvKTsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9DbGllbnRJbXBs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvQ2xpZW50SW1wbC5j
cHAJKHJldmlzaW9uIDY3Nzg2KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L0NsaWVudElt
cGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIHN0YXRpYyBRV0tQYWdlKiB0
b1FXS1BhZ2UoY29uc3Qgdm9pZCogY2wKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBxdF93a19k
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVm
IGZyYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQordm9pZCBxdF93a19kaWRTdGFydFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5
cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CiAgICAgaWYgKCFXS0Zy
YW1lSXNNYWluRnJhbWUoZnJhbWUpKQogICAgICAgICByZXR1cm47CkBAIC00NCwxNSArNDQsMTUg
QEAgdm9pZCBxdF93a19kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYQogICAgIFFXS1BhZ2VQ
cml2YXRlOjpnZXQodG9RV0tQYWdlKGNsaWVudEluZm8pKS0+dXBkYXRlTmF2aWdhdGlvbkFjdGlv
bnMoKTsKIH0KIAotdm9pZCBxdF93a19kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNp
b25hbExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKK3ZvaWQgcXRfd2tfZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9y
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUs
IFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKIH0KIAotdm9p
ZCBxdF93a19kaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV0tQYWdlUmVm
IHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit2b2lkIHF0
X3drX2RpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS1BhZ2VSZWYgcGFn
ZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQogewogfQogCi12b2lkIHF0X3drX2RpZENvbW1pdExvYWRGb3JGcmFtZShXS1BhZ2VS
ZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3ZvaWQg
cXRfd2tfZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZy
YW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CiAgICAg
aWYgKCFXS0ZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKQogICAgICAgICByZXR1cm47CkBAIC02Mywx
MiArNjMsMTIgQEAgdm9pZCBxdF93a19kaWRDb21taXRMb2FkRm9yRnJhbWUoV0tQYWdlUgogICAg
IFFXS1BhZ2VQcml2YXRlOjpnZXQodG9RV0tQYWdlKGNsaWVudEluZm8pKS0+dXBkYXRlTmF2aWdh
dGlvbkFjdGlvbnMoKTsKIH0KIAotdm9pZCBxdF93a19kaWRGaW5pc2hEb2N1bWVudExvYWRGb3JG
cmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbykKK3ZvaWQgcXRfd2tfZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoV0tQYWdlUmVm
IHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IChidWcgIzQ0OTM0KQogfQog
Ci12b2lkIHF0X3drX2RpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFt
ZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3ZvaWQgcXRfd2tfZGlkRmluaXNo
TG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYg
dXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CiAgICAgaWYgKCFXS0ZyYW1lSXNN
YWluRnJhbWUoZnJhbWUpKQogICAgICAgICByZXR1cm47CkBAIC03Niw3ICs3Niw3IEBAIHZvaWQg
cXRfd2tfZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZVIKICAgICBRV0tQYWdlUHJpdmF0ZTo6
Z2V0KHRvUVdLUGFnZShjbGllbnRJbmZvKSktPnVwZGF0ZU5hdmlnYXRpb25BY3Rpb25zKCk7CiB9
CiAKLXZvaWQgcXRfd2tfZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS1BhZ2VSZWYgcGFn
ZSwgV0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3ZvaWQgcXRfd2tf
ZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBm
cmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewogICAg
IGlmICghV0tGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKICAgICAgICAgcmV0dXJuOwpAQCAtODQs
NyArODQsNyBAQCB2b2lkIHF0X3drX2RpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoCiAgICAg
UVdLUGFnZVByaXZhdGU6OmdldCh0b1FXS1BhZ2UoY2xpZW50SW5mbykpLT51cGRhdGVOYXZpZ2F0
aW9uQWN0aW9ucygpOwogfQogCi12b2lkIHF0X3drX2RpZFJlY2VpdmVUaXRsZUZvckZyYW1lKFdL
UGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiB0aXRsZSwgV0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKK3ZvaWQgcXRfd2tfZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUoV0tQ
YWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIHRpdGxlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVS
ZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CiAgICAgaWYgKCFXS0ZyYW1l
SXNNYWluRnJhbWUoZnJhbWUpKQogICAgICAgICByZXR1cm47CkBAIC05MiwxNCArOTIsMTQgQEAg
dm9pZCBxdF93a19kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZShXS1BhZwogICAgIGVtaXQgdG9RV0tQ
YWdlKGNsaWVudEluZm8pLT50aXRsZUNoYW5nZWQocVRpdGxlKTsKIH0KIAotdm9pZCBxdF93a19k
aWRGaXJzdExheW91dEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQordm9pZCBxdF93a19kaWRGaXJzdExheW91dEZvckZyYW1l
KFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CiAgICAgaWYgKCFXS0ZyYW1lSXNNYWluRnJhbWUoZnJh
bWUpKQogICAgICAgICByZXR1cm47CiAgICAgZW1pdCB0b1FXS1BhZ2UoY2xpZW50SW5mbyktPmlu
aXRpYWxMYXlvdXRDb21wbGV0ZWQoKTsKIH0KIAotdm9pZCBxdF93a19kaWRGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3ZvaWQgcXRfd2tfZGlkRmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0Rm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlw
ZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKICAgICBpZiAoIVdLRnJh
bWVJc01haW5GcmFtZShmcmFtZSkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFdlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiA2Nzc4NikKKysrIFdlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw5NCArNDcsMTYwIEBAIHZvaWQgSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50OjppbmkKICAgICAgICAgbWVtc2V0KCZtX2NsaWVudCwgMCwgc2l6
ZW9mKG1fY2xpZW50KSk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1l
KiBmcmFtZSkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1lKiBmcmFtZSwgUmVm
UHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKQogewotICAgIGlmIChtX2NsaWVudC5kaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKQotICAgICAgICBtX2NsaWVudC5kaWRTdGFydFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lKHRvUmVmKHBhZ2UpLCB0b1JlZihmcmFtZSksIG1fY2xpZW50LmNsaWVu
dEluZm8pOworICAgIGlmICghbV9jbGllbnQuZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFt
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tUeXBlUmVmIHVzZXJEYXRhVG9QYXNzID0gMDsK
KyAgICBtX2NsaWVudC5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHRvUmVmKHBhZ2Up
LCB0b1JlZihmcmFtZSksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuY2xpZW50SW5mbyk7Cisg
ICAgdXNlckRhdGEgPSBhZG9wdFJlZih0b1dLKHVzZXJEYXRhVG9QYXNzKSk7Cit9CisKK3ZvaWQg
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJGcmFtZSogZnJhbWUs
IFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSkKK3sKKyAgICBpZiAoIW1fY2xpZW50LmRpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBXS1R5cGVSZWYgdXNlckRhdGFUb1Bhc3MgPSAwOworICAgIG1fY2xpZW50
LmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHRvUmVm
KHBhZ2UpLCB0b1JlZihmcmFtZSksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuY2xpZW50SW5m
byk7CisgICAgdXNlckRhdGEgPSBhZG9wdFJlZih0b1dLKHVzZXJEYXRhVG9QYXNzKSk7CiB9CiAK
LXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJGcmFtZSog
ZnJhbWUpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkRmFpbFByb3Zp
c2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1lKiBmcmFt
ZSwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKQogewotICAgIGlmIChtX2NsaWVudC5kaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSkKLSAgICAgICAg
bV9jbGllbnQuZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUodG9SZWYocGFnZSksIHRvUmVmKGZyYW1lKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAg
aWYgKCFtX2NsaWVudC5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUpCisg
ICAgICAgIHJldHVybjsKKworICAgIFdLVHlwZVJlZiB1c2VyRGF0YVRvUGFzcyA9IDA7CisgICAg
bV9jbGllbnQuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKHRvUmVmKHBh
Z2UpLCB0b1JlZihmcmFtZSksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuY2xpZW50SW5mbyk7
CisgICAgdXNlckRhdGEgPSBhZG9wdFJlZih0b1dLKHVzZXJEYXRhVG9QYXNzKSk7CiB9CiAKLXZv
aWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
V2l0aEVycm9yRm9yRnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViRnJhbWUqIGZyYW1lKQordm9pZCBJ
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZENvbW1pdExvYWRGb3JGcmFtZShXZWJQ
YWdlKiBwYWdlLCBXZWJGcmFtZSogZnJhbWUsIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSkK
IHsKLSAgICBpZiAobV9jbGllbnQuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZy
YW1lKQotICAgICAgICBtX2NsaWVudC5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9y
RnJhbWUodG9SZWYocGFnZSksIHRvUmVmKGZyYW1lKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7Cisg
ICAgaWYgKCFtX2NsaWVudC5kaWRDb21taXRMb2FkRm9yRnJhbWUpCisgICAgICAgIHJldHVybjsK
KworICAgIFdLVHlwZVJlZiB1c2VyRGF0YVRvUGFzcyA9IDA7CisgICAgbV9jbGllbnQuZGlkQ29t
bWl0TG9hZEZvckZyYW1lKHRvUmVmKHBhZ2UpLCB0b1JlZihmcmFtZSksICZ1c2VyRGF0YVRvUGFz
cywgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgdXNlckRhdGEgPSBhZG9wdFJlZih0b1dLKHVz
ZXJEYXRhVG9QYXNzKSk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50
OjpkaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViRnJhbWUqIGZyYW1lKQor
dm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaERvY3VtZW50TG9h
ZEZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1lKiBmcmFtZSwgUmVmUHRyPEFQSU9iamVj
dD4mIHVzZXJEYXRhKQogewotICAgIGlmIChtX2NsaWVudC5kaWRDb21taXRMb2FkRm9yRnJhbWUp
Ci0gICAgICAgIG1fY2xpZW50LmRpZENvbW1pdExvYWRGb3JGcmFtZSh0b1JlZihwYWdlKSwgdG9S
ZWYoZnJhbWUpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBpZiAoIW1fY2xpZW50LmRpZEZp
bmlzaERvY3VtZW50TG9hZEZvckZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1R5cGVS
ZWYgdXNlckRhdGFUb1Bhc3MgPSAwOworICAgIG1fY2xpZW50LmRpZEZpbmlzaERvY3VtZW50TG9h
ZEZvckZyYW1lKHRvUmVmKHBhZ2UpLCB0b1JlZihmcmFtZSksICZ1c2VyRGF0YVRvUGFzcywgbV9j
bGllbnQuY2xpZW50SW5mbyk7CisgICAgdXNlckRhdGEgPSBhZG9wdFJlZih0b1dLKHVzZXJEYXRh
VG9QYXNzKSk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRG
aW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJGcmFtZSogZnJhbWUp
Cit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZEZvckZy
YW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1lKiBmcmFtZSwgUmVmUHRyPEFQSU9iamVjdD4mIHVz
ZXJEYXRhKQogewotICAgIGlmIChtX2NsaWVudC5kaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFt
ZSkKLSAgICAgICAgbV9jbGllbnQuZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUodG9SZWYo
cGFnZSksIHRvUmVmKGZyYW1lKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgaWYgKCFtX2Ns
aWVudC5kaWRGaW5pc2hMb2FkRm9yRnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIFdLVHlw
ZVJlZiB1c2VyRGF0YVRvUGFzcyA9IDA7CisgICAgbV9jbGllbnQuZGlkRmluaXNoTG9hZEZvckZy
YW1lKHRvUmVmKHBhZ2UpLCB0b1JlZihmcmFtZSksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQu
Y2xpZW50SW5mbyk7CisgICAgdXNlckRhdGEgPSBhZG9wdFJlZih0b1dLKHVzZXJEYXRhVG9QYXNz
KSk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hM
b2FkRm9yRnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViRnJhbWUqIGZyYW1lKQordm9pZCBJbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV2Vi
UGFnZSogcGFnZSwgV2ViRnJhbWUqIGZyYW1lLCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEp
CiB7Ci0gICAgaWYgKG1fY2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSkKLSAgICAgICAgbV9j
bGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1lKHRvUmVmKHBhZ2UpLCB0b1JlZihmcmFtZSksIG1f
Y2xpZW50LmNsaWVudEluZm8pOworICAgIGlmICghbV9jbGllbnQuZGlkRmFpbExvYWRXaXRoRXJy
b3JGb3JGcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tUeXBlUmVmIHVzZXJEYXRhVG9Q
YXNzID0gMDsKKyAgICBtX2NsaWVudC5kaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKHRvUmVm
KHBhZ2UpLCB0b1JlZihmcmFtZSksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuY2xpZW50SW5m
byk7CisgICAgdXNlckRhdGEgPSBhZG9wdFJlZih0b1dLKHVzZXJEYXRhVG9QYXNzKSk7CiB9CiAK
LXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRGYWlsTG9hZFdpdGhFcnJv
ckZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1lKiBmcmFtZSkKK3ZvaWQgSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZShXZWJQYWdlKiBw
YWdlLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBXZWJGcmFtZSogZnJhbWUsIFJlZlB0cjxBUElPYmpl
Y3Q+JiB1c2VyRGF0YSkKIHsKLSAgICBpZiAobV9jbGllbnQuZGlkRmFpbExvYWRXaXRoRXJyb3JG
b3JGcmFtZSkKLSAgICAgICAgbV9jbGllbnQuZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZSh0
b1JlZihwYWdlKSwgdG9SZWYoZnJhbWUpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBpZiAo
IW1fY2xpZW50LmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAg
ICBXS1R5cGVSZWYgdXNlckRhdGFUb1Bhc3MgPSAwOworICAgIG1fY2xpZW50LmRpZFJlY2VpdmVU
aXRsZUZvckZyYW1lKHRvUmVmKHBhZ2UpLCB0b1JlZih0aXRsZS5pbXBsKCkpLCB0b1JlZihmcmFt
ZSksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgdXNlckRhdGEg
PSBhZG9wdFJlZih0b1dLKHVzZXJEYXRhVG9QYXNzKSk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZShXZWJQYWdlKiBwYWdl
LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBXZWJGcmFtZSogZnJhbWUpCit2b2lkIEluamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkRmlyc3RMYXlvdXRGb3JGcmFtZShXZWJQYWdlKiBwYWdl
LCBXZWJGcmFtZSogZnJhbWUsIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSkKIHsKLSAgICBp
ZiAobV9jbGllbnQuZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUpCi0gICAgICAgIG1fY2xpZW50LmRp
ZFJlY2VpdmVUaXRsZUZvckZyYW1lKHRvUmVmKHBhZ2UpLCB0b1JlZih0aXRsZS5pbXBsKCkpLCB0
b1JlZihmcmFtZSksIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIGlmICghbV9jbGllbnQuZGlk
Rmlyc3RMYXlvdXRGb3JGcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tUeXBlUmVmIHVz
ZXJEYXRhVG9QYXNzID0gMDsKKyAgICBtX2NsaWVudC5kaWRGaXJzdExheW91dEZvckZyYW1lKHRv
UmVmKHBhZ2UpLCB0b1JlZihmcmFtZSksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuY2xpZW50
SW5mbyk7CisgICAgdXNlckRhdGEgPSBhZG9wdFJlZih0b1dLKHVzZXJEYXRhVG9QYXNzKSk7Cit9
CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJGcmFtZSogZnJhbWUsIFJl
ZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSkKK3sKKyAgICBpZiAoIW1fY2xpZW50LmRpZEZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBX
S1R5cGVSZWYgdXNlckRhdGFUb1Bhc3MgPSAwOworICAgIG1fY2xpZW50LmRpZEZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dEZvckZyYW1lKHRvUmVmKHBhZ2UpLCB0b1JlZihmcmFtZSksICZ1c2Vy
RGF0YVRvUGFzcywgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgdXNlckRhdGEgPSBhZG9wdFJl
Zih0b1dLKHVzZXJEYXRhVG9QYXNzKSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50OjpkaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdl
YkZyYW1lKiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKIHsKLSAgICBpZiAobV9jbGll
bnQuZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JGcmFtZSkKLSAgICAgICAgbV9jbGllbnQuZGlkQ2xl
YXJXaW5kb3dPYmplY3RGb3JGcmFtZSh0b1JlZihwYWdlKSwgdG9SZWYoZnJhbWUpLCB0b1JlZihJ
bmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpnZXRPckNyZWF0ZSh3b3JsZCkuZ2V0KCkpLCBtX2Ns
aWVudC5jbGllbnRJbmZvKTsKKyAgICBpZiAoIW1fY2xpZW50LmRpZENsZWFyV2luZG93T2JqZWN0
Rm9yRnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY2xpZW50LmRpZENsZWFyV2luZG93
T2JqZWN0Rm9yRnJhbWUodG9SZWYocGFnZSksIHRvUmVmKGZyYW1lKSwgdG9SZWYoSW5qZWN0ZWRC
dW5kbGVTY3JpcHRXb3JsZDo6Z2V0T3JDcmVhdGUod29ybGQpLmdldCgpKSwgbV9jbGllbnQuY2xp
ZW50SW5mbyk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRD
YW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1lKiBmcmFt
ZSkKIHsKLSAgICBpZiAobV9jbGllbnQuZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSkK
LSAgICAgICAgbV9jbGllbnQuZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh0b1JlZihw
YWdlKSwgdG9SZWYoZnJhbWUpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBpZiAoIW1fY2xp
ZW50LmRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fY2xpZW50LmRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUodG9SZWYocGFnZSks
IHRvUmVmKGZyYW1lKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWUo
V2ViUGFnZSogcGFnZSwgV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHVybCwgZG91Ymxl
IGRlbGF5LCBkb3VibGUgZGF0ZSkKIHsKLSAgICBpZiAobV9jbGllbnQud2lsbFBlcmZvcm1DbGll
bnRSZWRpcmVjdEZvckZyYW1lKQotICAgICAgICBtX2NsaWVudC53aWxsUGVyZm9ybUNsaWVudFJl
ZGlyZWN0Rm9yRnJhbWUodG9SZWYocGFnZSksIHRvUmVmKGZyYW1lKSwgdG9VUkxSZWYodXJsLmlt
cGwoKSksIGRlbGF5LCBkYXRlLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICBpZiAoIW1fY2xp
ZW50LndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9jbGllbnQud2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKHRvUmVmKHBh
Z2UpLCB0b1JlZihmcmFtZSksIHRvVVJMUmVmKHVybC5pbXBsKCkpLCBkZWxheSwgZGF0ZSwgbV9j
bGllbnQuY2xpZW50SW5mbyk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50OjpkaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZShXZWJQYWdlKiBwYWdlLCBX
ZWJGcmFtZSogZnJhbWUpCiB7Ci0gICAgaWYgKG1fY2xpZW50LmRpZENoYW5nZUxvY2F0aW9uV2l0
aGluUGFnZUZvckZyYW1lKQotICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VMb2NhdGlvbldpdGhp
blBhZ2VGb3JGcmFtZSh0b1JlZihwYWdlKSwgdG9SZWYoZnJhbWUpLCBtX2NsaWVudC5jbGllbnRJ
bmZvKTsKKyAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZy
YW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC5kaWRDaGFuZ2VMb2NhdGlvbldp
dGhpblBhZ2VGb3JGcmFtZSh0b1JlZihwYWdlKSwgdG9SZWYoZnJhbWUpLCBtX2NsaWVudC5jbGll
bnRJbmZvKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZEhh
bmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1lKiBmcmFtZSkK
IHsKLSAgICBpZiAobV9jbGllbnQuZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUpCi0gICAg
ICAgIG1fY2xpZW50LmRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lKHRvUmVmKHBhZ2UpLCB0
b1JlZihmcmFtZSksIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIGlmICghbV9jbGllbnQuZGlk
SGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY2xp
ZW50LmRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lKHRvUmVmKHBhZ2UpLCB0b1JlZihmcmFt
ZSksIG1fY2xpZW50LmNsaWVudEluZm8pOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudDo6ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZvckZyYW1lKFdlYlBhZ2UqIHBh
Z2UsIFdlYkZyYW1lKiBmcmFtZSkKIHsKLSAgICBpZiAobV9jbGllbnQuZGlkRGlzcGxheUluc2Vj
dXJlQ29udGVudEZvckZyYW1lKQotICAgICAgICBtX2NsaWVudC5kaWREaXNwbGF5SW5zZWN1cmVD
b250ZW50Rm9yRnJhbWUodG9SZWYocGFnZSksIHRvUmVmKGZyYW1lKSwgbV9jbGllbnQuY2xpZW50
SW5mbyk7CisgICAgaWYgKCFtX2NsaWVudC5kaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJh
bWUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY2xpZW50LmRpZERpc3BsYXlJbnNlY3VyZUNv
bnRlbnRGb3JGcmFtZSh0b1JlZihwYWdlKSwgdG9SZWYoZnJhbWUpLCBtX2NsaWVudC5jbGllbnRJ
bmZvKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZFJ1bklu
c2VjdXJlQ29udGVudEZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1lKiBmcmFtZSkKIHsK
LSAgICBpZiAobV9jbGllbnQuZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUpCi0gICAgICAg
IG1fY2xpZW50LmRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKHRvUmVmKHBhZ2UpLCB0b1Jl
ZihmcmFtZSksIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIGlmICghbV9jbGllbnQuZGlkUnVu
SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY2xpZW50
LmRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKHRvUmVmKHBhZ2UpLCB0b1JlZihmcmFtZSks
IG1fY2xpZW50LmNsaWVudEluZm8pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6
IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDY3Nzg2KQorKysg
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBAIGNsYXNzIERPTVdyYXBw
ZXJXb3JsZDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIEFQSU9iamVjdDsKIGNsYXNz
IFdlYlBhZ2U7CiBjbGFzcyBXZWJGcmFtZTsKIApAQCAtNDQsMTQgKzQ1LDE3IEBAIHB1YmxpYzoK
ICAgICBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQoKTsKICAgICB2b2lkIGluaXRpYWxp
emUoV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Kik7CiAKLSAgICB2b2lkIGRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKik7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJQYWdlKiwgV2Vi
RnJhbWUqKTsKLSAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFt
ZShXZWJQYWdlKiwgV2ViRnJhbWUqKTsKLSAgICB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZShX
ZWJQYWdlKiwgV2ViRnJhbWUqKTsKLSAgICB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZy
YW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSopOwotICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1l
KFdlYlBhZ2UqLCBXZWJGcmFtZSopOwotICAgIHZvaWQgZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JG
cmFtZShXZWJQYWdlKiwgV2ViRnJhbWUqKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVUaXRsZUZvckZy
YW1lKFdlYlBhZ2UqLCBjb25zdCBTdHJpbmcmLCBXZWJGcmFtZSopOworICAgIHZvaWQgZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJQYWdlKiwgV2ViRnJhbWUqLCBSZWZQdHI8QVBJ
T2JqZWN0PiYgdXNlckRhdGEpOworICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9y
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKiwgUmVmUHRyPEFQSU9i
amVjdD4mIHVzZXJEYXRhKTsKKyAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJy
b3JGb3JGcmFtZShXZWJQYWdlKiwgV2ViRnJhbWUqLCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRh
dGEpOworICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSos
IFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7CisgICAgdm9pZCBkaWRGaW5pc2hEb2N1bWVu
dExvYWRGb3JGcmFtZShXZWJQYWdlKiwgV2ViRnJhbWUqLCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNl
ckRhdGEpOworICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFt
ZSosIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7CisgICAgdm9pZCBkaWRGYWlsTG9hZFdp
dGhFcnJvckZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSosIFJlZlB0cjxBUElPYmplY3Q+JiB1
c2VyRGF0YSk7CisgICAgdm9pZCBkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZShXZWJQYWdlKiwgY29u
c3QgU3RyaW5nJiwgV2ViRnJhbWUqLCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpOworICAg
IHZvaWQgZGlkRmlyc3RMYXlvdXRGb3JGcmFtZShXZWJQYWdlKiwgV2ViRnJhbWUqLCBSZWZQdHI8
QVBJT2JqZWN0PiYgdXNlckRhdGEpOworICAgIHZvaWQgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0Rm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKiwgUmVmUHRyPEFQSU9iamVjdD4mIHVz
ZXJEYXRhKTsKKwogICAgIHZvaWQgZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JGcmFtZShXZWJQYWdl
KiwgV2ViRnJhbWUqLCBXZWJDb3JlOjpET01XcmFwcGVyV29ybGQqKTsKICAgICB2b2lkIGRpZENh
bmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKik7CiAgICAgdm9p
ZCB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKiwg
Y29uc3QgU3RyaW5nJiB1cmwsIGRvdWJsZSBkZWxheSwgZG91YmxlIGRhdGUpOwpJbmRleDogV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZVBhZ2UuaAkocmV2aXNpb24gNjc3ODYpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDE5ICs0OSwy
MiBAQCBlbnVtIHsKIHR5cGVkZWYgdWludDMyX3QgV0tBZmZpbml0eVR5cGU7CiAKIC8vIExvYWRl
ciBDbGllbnQKLXR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVS
ZWYgZnJhbWUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiB2b2lkICgqV0tCdW5k
bGVQYWdlRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVD
YWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIGNv
bnN0IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlkRmFp
bFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJl
ZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsg
Ly8gRklYTUU6IEFkZCBXS0Vycm9yUmVmLgotdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlk
Q29tbWl0TG9hZEZvckZyYW1lQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRs
ZUZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAo
KldLQnVuZGxlUGFnZURpZERvY3VtZW50RmluaXNoTG9hZEZvckZyYW1lQ2FsbGJhY2spKFdLQnVu
ZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkICpjbGll
bnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZEZpbmlzaExvYWRGb3JGcmFt
ZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwg
Y29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VEaWRG
YWlsTG9hZFdpdGhFcnJvckZvckZyYW1lQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBX
S0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsgLy8gRklYTUU6
IEFkZCBXS0Vycm9yUmVmLgotdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlkUmVjZWl2ZVRp
dGxlRm9yRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIHRp
dGxlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5
cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVD
YWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdL
VHlwZVJlZiogdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lk
ICgqV0tCdW5kbGVQYWdlRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYg
ZnJhbWUsIFdLVHlwZVJlZiogdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlw
ZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZv
ckZyYW1lQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZy
YW1lLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsgLy8gRklY
TUU6IEFkZCBXS0Vycm9yUmVmLgordHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlkQ29tbWl0
TG9hZEZvckZyYW1lQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1l
UmVmIGZyYW1lLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsK
K3R5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZERvY3VtZW50RmluaXNoTG9hZEZvckZyYW1l
Q2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBX
S1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9p
ZCAoKldLQnVuZGxlUGFnZURpZEZpbmlzaExvYWRGb3JGcmFtZUNhbGxiYWNrKShXS0J1bmRsZVBh
Z2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmKiB1c2VyRGF0YSwg
Y29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VEaWRG
aW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwg
V0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmKiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAq
Y2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VEaWRGYWlsTG9hZFdpdGhF
cnJvckZvckZyYW1lQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1l
UmVmIGZyYW1lLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsg
Ly8gRklYTUU6IEFkZCBXS0Vycm9yUmVmLgordHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlk
UmVjZWl2ZVRpdGxlRm9yRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3Ry
aW5nUmVmIHRpdGxlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYqIHVzZXJEYXRh
LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURp
ZEZpcnN0TGF5b3V0Rm9yRnJhbWUpKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1l
UmVmIGZyYW1lLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsK
K3R5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dEZvckZyYW1lKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwg
V0tUeXBlUmVmKiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CisvLyBGSVhNRTog
VGhlcmUgYXJlIG5vIFdLUGFnZSBlcXVpdmlsZW50IG9mIHRoZXNlIGZ1bmN0aW9ucyB5ZXQuCiB0
eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VEaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1lQ2Fs
bGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS0J1
bmRsZVNjcmlwdFdvcmxkUmVmIHdvcmxkLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVk
ZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWVDYWxs
YmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIGNvbnN0
IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlV2lsbFBlcmZv
cm1DbGllbnRSZWRpcmVjdEZvckZyYW1lQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBX
S0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS1VSTFJlZiB1cmwsIGRvdWJsZSBkZWxheSwgZG91Ymxl
IGRhdGUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQ
YWdlRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQgKmNsaWVudElu
Zm8pOwotdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlkRmluaXNoRG9jdW1lbnRMb2FkRm9y
RnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJh
bWUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdl
RGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBh
Z2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlw
ZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZvckZyYW1l
Q2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBj
b25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZFJ1
bkluc2VjdXJlQ29udGVudEZvckZyYW1lQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBX
S0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsgLy8gRklYTUU6
IEFkZCBXS1NlY3VyaXR5T3JpZ2luUmVmLgpAQCAtNzgsNiArODEsMTAgQEAgc3RydWN0IFdLQnVu
ZGxlUGFnZUxvYWRlckNsaWVudCB7CiAgICAgV0tCdW5kbGVQYWdlRGlkRmluaXNoTG9hZEZvckZy
YW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRGaW5pc2hMb2FkRm9yRnJh
bWU7CiAgICAgV0tCdW5kbGVQYWdlRGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZUNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICBkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lOwogICAgIFdL
QnVuZGxlUGFnZURpZFJlY2VpdmVUaXRsZUZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWU7CisgICAgV0tCdW5kbGVQYWdlRGlkRmly
c3RMYXlvdXRGb3JGcmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRGaXJz
dExheW91dEZvckZyYW1lOworICAgIFdLQnVuZGxlUGFnZURpZEZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dEZvckZyYW1lICAgICAgICAgICAgICAgICAgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0Rm9yRnJhbWU7CisKKyAgICAvLyBGSVhNRTogVGhlcmUgYXJlIG5vIFdLUGFnZSBlcXVp
dmlsZW50IG9mIHRoZXNlIGZ1bmN0aW9ucyB5ZXQuCiAgICAgV0tCdW5kbGVQYWdlRGlkQ2xlYXJX
aW5kb3dPYmplY3RGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICBkaWRDbGVhcldp
bmRvd09iamVjdEZvckZyYW1lOwogICAgIFdLQnVuZGxlUGFnZURpZENhbmNlbENsaWVudFJlZGly
ZWN0Rm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgZGlkQ2FuY2VsQ2xpZW50UmVkaXJl
Y3RGb3JGcmFtZTsKICAgICBXS0J1bmRsZVBhZ2VXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9y
RnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JG
cmFtZTsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gNjc3ODYpCisrKyBXZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMDcsMTIgKzIwNywxMyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZFJlCiAKICAgICBEb2N1bWVudExvYWRlciogcHJvdmlzaW9uYWxMb2Fk
ZXIgPSBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCktPnByb3Zpc2lvbmFsRG9jdW1lbnRM
b2FkZXIoKTsKICAgICBjb25zdCBTdHJpbmcmIHVybCA9IHByb3Zpc2lvbmFsTG9hZGVyLT51cmwo
KS5zdHJpbmcoKTsKKyAgICBSZWZQdHI8QVBJT2JqZWN0PiB1c2VyRGF0YTsKIAogICAgIC8vIE5v
dGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KLSAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRl
ckNsaWVudCgpLmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKHdlYlBhZ2UsIG1fZnJhbWUpOworICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVy
Q2xpZW50KCkuZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUod2ViUGFnZSwgbV9mcmFtZSwgdXNlckRhdGEpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBVSVBy
b2Nlc3MuCi0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKFdlYlBh
Z2VQcm94eU1lc3NhZ2U6OkRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lLCB3ZWJQYWdlLT5wYWdlSUQoKSwgQ29yZUlQQzo6SW4obV9mcmFtZS0+ZnJhbWVJ
RCgpLCB1cmwpKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQo
V2ViUGFnZVByb3h5TWVzc2FnZTo6RGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUsIHdlYlBhZ2UtPnBhZ2VJRCgpLCBDb3JlSVBDOjpJbihtX2ZyYW1lLT5m
cmFtZUlEKCksIHVybCwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEu
Z2V0KCkpKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2Fu
Y2VsQ2xpZW50UmVkaXJlY3QoKQpAQCAtMjc4LDEyICsyNzksMTMgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRTdAogCiAgICAgRG9jdW1lbnRMb2FkZXIqIHByb3Zpc2lv
bmFsTG9hZGVyID0gbV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLT5wcm92aXNpb25hbERv
Y3VtZW50TG9hZGVyKCk7CiAgICAgY29uc3QgU3RyaW5nJiB1cmwgPSBwcm92aXNpb25hbExvYWRl
ci0+dXJsKCkuc3RyaW5nKCk7CisgICAgUmVmUHRyPEFQSU9iamVjdD4gdXNlckRhdGE7CiAKICAg
ICAvLyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCi0gICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5k
bGVMb2FkZXJDbGllbnQoKS5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHdlYlBhZ2Us
IG1fZnJhbWUpOworICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlk
U3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh3ZWJQYWdlLCBtX2ZyYW1lLCB1c2VyRGF0YSk7
CiAKICAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQo
KS5jb25uZWN0aW9uKCktPnNlbmQoV2ViUGFnZVByb3h5TWVzc2FnZTo6RGlkU3RhcnRQcm92aXNp
b25hbExvYWRGb3JGcmFtZSwgd2ViUGFnZS0+cGFnZUlEKCksIENvcmVJUEM6OkluKG1fZnJhbWUt
PmZyYW1lSUQoKSwgdXJsKSk7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigp
LT5zZW5kKFdlYlBhZ2VQcm94eU1lc3NhZ2U6OkRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUsIHdlYlBhZ2UtPnBhZ2VJRCgpLCBDb3JlSVBDOjpJbihtX2ZyYW1lLT5mcmFtZUlEKCksIHVy
bCwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CiB9
CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNv
bnN0IFN0cmluZyYgdGl0bGUpCkBAIC0yOTIsMTEgKzI5NCwxMyBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlCiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1
cm47CiAKKyAgICBSZWZQdHI8QVBJT2JqZWN0PiB1c2VyRGF0YTsKKwogICAgIC8vIE5vdGlmeSB0
aGUgYnVuZGxlIGNsaWVudC4KLSAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVu
dCgpLmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKHdlYlBhZ2UsIHRpdGxlLCBtX2ZyYW1lKTsKKyAg
ICB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZFJlY2VpdmVUaXRsZUZv
ckZyYW1lKHdlYlBhZ2UsIHRpdGxlLCBtX2ZyYW1lLCB1c2VyRGF0YSk7CiAKICAgICAvLyBOb3Rp
ZnkgdGhlIFVJUHJvY2Vzcy4KLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCkt
PnNlbmQoV2ViUGFnZVByb3h5TWVzc2FnZTo6RGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUsIHdlYlBh
Z2UtPnBhZ2VJRCgpLCBDb3JlSVBDOjpJbihtX2ZyYW1lLT5mcmFtZUlEKCksIHRpdGxlKSk7Cisg
ICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKFdlYlBhZ2VQcm94eU1l
c3NhZ2U6OkRpZFJlY2VpdmVUaXRsZUZvckZyYW1lLCB3ZWJQYWdlLT5wYWdlSUQoKSwgQ29yZUlQ
Qzo6SW4obV9mcmFtZS0+ZnJhbWVJRCgpLCB0aXRsZSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2Fn
ZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQpAQCAtMzExLDEyICszMTUsMTMgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDbwogICAgICAgICByZXR1cm47CiAKICAg
ICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSA9IG1fZnJhbWUtPmNvcmVGcmFtZSgp
LT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKTsKKyAgICBSZWZQdHI8QVBJ
T2JqZWN0PiB1c2VyRGF0YTsKIAogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KLSAg
ICB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZENvbW1pdExvYWRGb3JG
cmFtZSh3ZWJQYWdlLCBtX2ZyYW1lKTsKKyAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRl
ckNsaWVudCgpLmRpZENvbW1pdExvYWRGb3JGcmFtZSh3ZWJQYWdlLCBtX2ZyYW1lLCB1c2VyRGF0
YSk7CiAKICAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KLSAgICBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoV2ViUGFnZVByb3h5TWVzc2FnZTo6RGlkQ29tbWl0TG9h
ZEZvckZyYW1lLCB3ZWJQYWdlLT5wYWdlSUQoKSwgQ29yZUlQQzo6SW4obV9mcmFtZS0+ZnJhbWVJ
RCgpLCBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyhyZXNwb25zZSkpKTsKKyAgICBXZWJQcm9jZXNz
OjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoV2ViUGFnZVByb3h5TWVzc2FnZTo6RGlkQ29t
bWl0TG9hZEZvckZyYW1lLCB3ZWJQYWdlLT5wYWdlSUQoKSwgQ29yZUlQQzo6SW4obV9mcmFtZS0+
ZnJhbWVJRCgpLCBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyhyZXNwb25zZSksIEluamVjdGVkQnVu
ZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOwogfQogCiB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpCkBAIC0zMjUsMTEgKzMzMCwxMyBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhCiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1
cm47CiAKKyAgICBSZWZQdHI8QVBJT2JqZWN0PiB1c2VyRGF0YTsKKwogICAgIC8vIE5vdGlmeSB0
aGUgYnVuZGxlIGNsaWVudC4KLSAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVu
dCgpLmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZSh3ZWJQYWdlLCBtX2Zy
YW1lKTsKKyAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZEZhaWxQ
cm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZSh3ZWJQYWdlLCBtX2ZyYW1lLCB1c2VyRGF0
YSk7CiAKICAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KLSAgICBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoV2ViUGFnZVByb3h5TWVzc2FnZTo6RGlkRmFpbFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lLCB3ZWJQYWdlLT5wYWdlSUQoKSwgQ29yZUlQQzo6SW4obV9mcmFt
ZS0+ZnJhbWVJRCgpKSk7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5z
ZW5kKFdlYlBhZ2VQcm94eU1lc3NhZ2U6OkRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSwg
d2ViUGFnZS0+cGFnZUlEKCksIENvcmVJUEM6OkluKG1fZnJhbWUtPmZyYW1lSUQoKSwgSW5qZWN0
ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CiAgICAgCiAgICAg
Ly8gSWYgd2UgaGF2ZSBhIGxvYWQgbGlzdGVuZXIsIG5vdGlmeSBpdC4KICAgICBpZiAoV2ViRnJh
bWU6OkxvYWRMaXN0ZW5lciogbG9hZExpc3RlbmVyID0gbV9mcmFtZS0+bG9hZExpc3RlbmVyKCkp
CkBAIC0zNDIsMTEgKzM0OSwxMyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZEZhCiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKKyAgICBSZWZQdHI8
QVBJT2JqZWN0PiB1c2VyRGF0YTsKKwogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4K
LSAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZEZhaWxMb2FkV2l0
aEVycm9yRm9yRnJhbWUod2ViUGFnZSwgbV9mcmFtZSk7CisgICAgd2ViUGFnZS0+aW5qZWN0ZWRC
dW5kbGVMb2FkZXJDbGllbnQoKS5kaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKHdlYlBhZ2Us
IG1fZnJhbWUsIHVzZXJEYXRhKTsKIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgotICAg
IFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChXZWJQYWdlUHJveHlNZXNz
YWdlOjpEaWRGYWlsTG9hZEZvckZyYW1lLCB3ZWJQYWdlLT5wYWdlSUQoKSwgQ29yZUlQQzo6SW4o
bV9mcmFtZS0+ZnJhbWVJRCgpKSk7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlv
bigpLT5zZW5kKFdlYlBhZ2VQcm94eU1lc3NhZ2U6OkRpZEZhaWxMb2FkRm9yRnJhbWUsIHdlYlBh
Z2UtPnBhZ2VJRCgpLCBDb3JlSVBDOjpJbihtX2ZyYW1lLT5mcmFtZUlEKCksIEluamVjdGVkQnVu
ZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOwogCiAgICAgLy8gSWYgd2Ug
aGF2ZSBhIGxvYWQgbGlzdGVuZXIsIG5vdGlmeSBpdC4KICAgICBpZiAoV2ViRnJhbWU6OkxvYWRM
aXN0ZW5lciogbG9hZExpc3RlbmVyID0gbV9mcmFtZS0+bG9hZExpc3RlbmVyKCkpCkBAIC0zNTks
MTEgKzM2OCwxMyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpCiAg
ICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKKyAgICBSZWZQdHI8QVBJT2JqZWN0
PiB1c2VyRGF0YTsKKwogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KLSAgICB3ZWJQ
YWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZEZpbmlzaERvY3VtZW50TG9hZEZv
ckZyYW1lKHdlYlBhZ2UsIG1fZnJhbWUpOworICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9h
ZGVyQ2xpZW50KCkuZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUod2ViUGFnZSwgbV9mcmFt
ZSwgdXNlckRhdGEpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAgV2ViUHJv
Y2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKFdlYlBhZ2VQcm94eU1lc3NhZ2U6OkRp
ZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lLCB3ZWJQYWdlLT5wYWdlSUQoKSwgQ29yZUlQQzo6
SW4obV9mcmFtZS0+ZnJhbWVJRCgpKSk7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVj
dGlvbigpLT5zZW5kKFdlYlBhZ2VQcm94eU1lc3NhZ2U6OkRpZEZpbmlzaERvY3VtZW50TG9hZEZv
ckZyYW1lLCB3ZWJQYWdlLT5wYWdlSUQoKSwgQ29yZUlQQzo6SW4obV9mcmFtZS0+ZnJhbWVJRCgp
LCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKIH0K
IAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCkKQEAg
LTM3MiwxMSArMzgzLDEzIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
RmkKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIFJlZlB0cjxBUElP
YmplY3Q+IHVzZXJEYXRhOworCiAgICAgLy8gTm90aWZ5IHRoZSBidW5kbGUgY2xpZW50LgotICAg
IHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkRmluaXNoTG9hZEZvckZy
YW1lKHdlYlBhZ2UsIG1fZnJhbWUpOworICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVy
Q2xpZW50KCkuZGlkRmluaXNoTG9hZEZvckZyYW1lKHdlYlBhZ2UsIG1fZnJhbWUsIHVzZXJEYXRh
KTsKIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgotICAgIFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChXZWJQYWdlUHJveHlNZXNzYWdlOjpEaWRGaW5pc2hMb2Fk
Rm9yRnJhbWUsIHdlYlBhZ2UtPnBhZ2VJRCgpLCBDb3JlSVBDOjpJbihtX2ZyYW1lLT5mcmFtZUlE
KCkpKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoV2ViUGFn
ZVByb3h5TWVzc2FnZTo6RGlkRmluaXNoTG9hZEZvckZyYW1lLCB3ZWJQYWdlLT5wYWdlSUQoKSwg
Q29yZUlQQzo6SW4obV9mcmFtZS0+ZnJhbWVJRCgpLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdl
RW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKIAogICAgIC8vIElmIHdlIGhhdmUgYSBsb2FkIGxp
c3RlbmVyLCBub3RpZnkgaXQuCiAgICAgaWYgKFdlYkZyYW1lOjpMb2FkTGlzdGVuZXIqIGxvYWRM
aXN0ZW5lciA9IG1fZnJhbWUtPmxvYWRMaXN0ZW5lcigpKQpAQCAtMzg5LDcgKzQwMiwxMyBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpCiAgICAgaWYgKCF3ZWJQYWdl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9u
KCktPnNlbmQoV2ViUGFnZVByb3h5TWVzc2FnZTo6RGlkRmlyc3RMYXlvdXRGb3JGcmFtZSwgd2Vi
UGFnZS0+cGFnZUlEKCksIENvcmVJUEM6OkluKG1fZnJhbWUtPmZyYW1lSUQoKSkpOworICAgIFJl
ZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOworCisgICAgLy8gTm90aWZ5IHRoZSBidW5kbGUgY2xp
ZW50LgorICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkRmlyc3RM
YXlvdXRGb3JGcmFtZSh3ZWJQYWdlLCBtX2ZyYW1lLCB1c2VyRGF0YSk7CisKKyAgICAvLyBOb3Rp
ZnkgdGhlIFVJUHJvY2Vzcy4KKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCkt
PnNlbmQoV2ViUGFnZVByb3h5TWVzc2FnZTo6RGlkRmlyc3RMYXlvdXRGb3JGcmFtZSwgd2ViUGFn
ZS0+cGFnZUlEKCksIENvcmVJUEM6OkluKG1fZnJhbWUtPmZyYW1lSUQoKSwgSW5qZWN0ZWRCdW5k
bGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CiB9CiAKIHZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCkK
QEAgLTM5OCw3ICs0MTcsMTMgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRGaQogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViUHJvY2Vz
czo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKFdlYlBhZ2VQcm94eU1lc3NhZ2U6OkRpZEZp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lLCB3ZWJQYWdlLT5wYWdlSUQoKSwgQ29y
ZUlQQzo6SW4obV9mcmFtZS0+ZnJhbWVJRCgpKSk7CisgICAgUmVmUHRyPEFQSU9iamVjdD4gdXNl
ckRhdGE7CisKKyAgICAvLyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCisgICAgd2ViUGFnZS0+
aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXRGb3JGcmFtZSh3ZWJQYWdlLCBtX2ZyYW1lLCB1c2VyRGF0YSk7CisKKyAgICAvLyBOb3RpZnkg
dGhlIFVJUHJvY2Vzcy4KKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNl
bmQoV2ViUGFnZVByb3h5TWVzc2FnZTo6RGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9y
RnJhbWUsIHdlYlBhZ2UtPnBhZ2VJRCgpLCBDb3JlSVBDOjpJbihtX2ZyYW1lLT5mcmFtZUlEKCks
IEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOwogfQog
CiBGcmFtZSogV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoQ3JlYXRlUGFnZSgpCkluZGV4
OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiA2Nzc5OCkKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDEwLTA5LTE4ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW1wcm92ZS91bmlmeSB0aGUgUGFnZUxvYWRDbGllbnQgaW50ZXJmYWNlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDYwNDMKKworICAgICAgICAqIE1p
bmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tOgorICAgICAgICAoZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChkaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChkaWRGYWlsUHJvdmlz
aW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUpOgorICAgICAgICAoZGlkQ29tbWl0TG9hZEZvckZy
YW1lKToKKyAgICAgICAgKGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKToKKyAgICAgICAg
KGRpZEZpbmlzaExvYWRGb3JGcmFtZSk6CisgICAgICAgIChkaWRGYWlsTG9hZFdpdGhFcnJvckZv
ckZyYW1lKToKKyAgICAgICAgKGRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKToKKyAgICAgICAgKGRp
ZEZpcnN0TGF5b3V0Rm9yRnJhbWUpOgorICAgICAgICAoZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0Rm9yRnJhbWUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQ
YWdlOjpJbmplY3RlZEJ1bmRsZVBhZ2UpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBh
Z2U6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV1RSOjpJbmpl
Y3RlZEJ1bmRsZVBhZ2U6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRGYWlsUHJv
dmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1
bmRsZVBhZ2U6OmRpZENvbW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXVFI6OkluamVjdGVk
QnVuZGxlUGFnZTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdUUjo6SW5qZWN0
ZWRCdW5kbGVQYWdlOjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSk6CisgICAgICAgIChX
VFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZSk6Cisg
ICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUp
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21Jbmpl
Y3RlZEJ1bmRsZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWRGaW5pc2hMb2Fk
Rm9yRnJhbWUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoK
KwogMjAxMC0wOS0xNyAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZC4gIEFkZGluZyBhIHNoZWxsIHNjcmlwdCBJIHVzZSB0byBydW4gdGhlCkluZGV4
OiBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0Nv
bnRyb2xsZXIubQkocmV2aXNpb24gNjc3ODYpCisrKyBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci9t
YWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQkod29ya2luZyBjb3B5KQpAQCAtMjQ4LDU0ICsy
NDgsNTQgQEAgLSAoSUJBY3Rpb24pZHVtcFNvdXJjZVRvQ29uc29sZTooaWQpc2VuZAogCiAjcHJh
Z21hIG1hcmsgTG9hZGVyIENsaWVudCBDYWxsYmFja3MKIAotc3RhdGljIHZvaWQgZGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwg
Y29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3N0YXRpYyB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1
c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKIHsKICAgICBbKEJyb3dzZXJXaW5kb3dD
b250cm9sbGVyICopY2xpZW50SW5mbyBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOmZy
YW1lXTsKIH0KIAotc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0
IHZvaWQgKmNsaWVudEluZm8pCitzdGF0aWMgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFt
ZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQogewogICAgIFso
QnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgKiljbGllbnRJbmZvIGRpZFJlY2VpdmVTZXJ2ZXJSZWRp
cmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOmZyYW1lXTsKIH0KIAotc3RhdGljIHZvaWQg
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBX
S0ZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQorc3RhdGljIHZvaWQgZGlk
RmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0Zy
YW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8p
CiB7CiAgICAgWyhCcm93c2VyV2luZG93Q29udHJvbGxlciAqKWNsaWVudEluZm8gZGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lOmZyYW1lXTsKIH0KIAotc3RhdGljIHZvaWQg
ZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBj
b25zdCB2b2lkICpjbGllbnRJbmZvKQorc3RhdGljIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1l
KFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNv
bnN0IHZvaWQgKmNsaWVudEluZm8pCiB7CiAgICAgWyhCcm93c2VyV2luZG93Q29udHJvbGxlciAq
KWNsaWVudEluZm8gZGlkQ29tbWl0TG9hZEZvckZyYW1lOmZyYW1lXTsKIH0KIAotc3RhdGljIHZv
aWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVS
ZWYgZnJhbWUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCitzdGF0aWMgdm9pZCBkaWRGaW5pc2hE
b2N1bWVudExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tU
eXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQogewogICAgIExPRyhAImRp
ZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lIik7CiB9CiAKLXN0YXRpYyB2b2lkIGRpZEZpbmlz
aExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9p
ZCAqY2xpZW50SW5mbykKK3N0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VS
ZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lk
ICpjbGllbnRJbmZvKQogewogICAgIExPRyhAImRpZEZpbmlzaExvYWRGb3JGcmFtZSIpOwogfQog
Ci1zdGF0aWMgdm9pZCBkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdLUGFnZVJlZiBwYWdl
LCBXS0ZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQorc3RhdGljIHZvaWQg
ZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBm
cmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQogewogICAg
IFsoQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgKiljbGllbnRJbmZvIGRpZEZhaWxMb2FkV2l0aEVy
cm9yRm9yRnJhbWU6ZnJhbWVdOwogfQogCi1zdGF0aWMgdm9pZCBkaWRSZWNlaXZlVGl0bGVGb3JG
cmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgdGl0bGUsIFdLRnJhbWVSZWYgZnJhbWUs
IGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCitzdGF0aWMgdm9pZCBkaWRSZWNlaXZlVGl0bGVGb3JG
cmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgdGl0bGUsIFdLRnJhbWVSZWYgZnJhbWUs
IFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKIHsKICAgICBDRlN0
cmluZ1JlZiBjZlRpdGxlID0gV0tTdHJpbmdDb3B5Q0ZTdHJpbmcoMCwgdGl0bGUpOwogICAgIExP
RyhAImRpZFJlY2VpdmVUaXRsZUZvckZyYW1lIFwiJUBcIiIsIChOU1N0cmluZyAqKWNmVGl0bGUp
OwogICAgIENGUmVsZWFzZShjZlRpdGxlKTsKIH0KIAotc3RhdGljIHZvaWQgZGlkRmlyc3RMYXlv
dXRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCAq
Y2xpZW50SW5mbykKK3N0YXRpYyB2b2lkIGRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUoV0tQYWdlUmVm
IHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAq
Y2xpZW50SW5mbykKIHsKICAgICBMT0coQCJkaWRGaXJzdExheW91dEZvckZyYW1lIik7CiB9CiAK
LXN0YXRpYyB2b2lkIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKFdLUGFn
ZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQorc3Rh
dGljIHZvaWQgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUoV0tQYWdlUmVm
IHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAq
Y2xpZW50SW5mbykKIHsKICAgICBMT0coQCJkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRG
b3JGcmFtZSIpOwogfQpJbmRleDogV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDY3Nzg2KQorKysgV2ViS2l0VG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MCw3ICsy
NTAsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpydW4oKQogCiAvLyBXS0NvbnRleHRJbmplY3Rl
ZEJ1bmRsZUNsaWVudAogCi12b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgbWVzc2Fn
ZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3Zv
aWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdL
Q29udGV4dFJlZiBjb250ZXh0LCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1l
c3NhZ2VCb2R5LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewogICAgIHN0YXRpY19jYXN0PFRl
c3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kaWRSZWNlaXZl
TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShtZXNzYWdlTmFtZSwgbWVzc2FnZUJvZHkpOwogfQpA
QCAtMjYyLDcgKzI2Miw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVNZXNzYWdl
RnIKIAogLy8gV0tQYWdlTG9hZGVyQ2xpZW50CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZEZp
bmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRpZEZpbmlzaExvYWRGb3JG
cmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQogewogICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29u
c3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kaWRGaW5pc2hMb2FkRm9yRnJhbWUocGFnZSwg
ZnJhbWUpOwogfQpJbmRleDogV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuaAkocmV2aXNpb24gNjc3ODYpCisrKyBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3Ry
aW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHkpOwogCiAgICAgLy8gV0tQ
YWdlTG9hZGVyQ2xpZW50Ci0gICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdL
UGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkKik7CisgICAgc3RhdGlj
IHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZy
YW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqKTsKICAgICB2b2lkIGRpZEZpbmlz
aExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSk7CiAKIApJbmRl
eDogV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAkocmV2aXNpb24gNjc3ODYpCisr
KyBXZWJLaXRUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw2ICsxNDUsOCBAQCBJbmplY3RlZEJ1
bmRsZVBhZ2U6OkluamVjdGVkQnVuZGxlUGFnZShXCiAgICAgICAgIGRpZEZpbmlzaExvYWRGb3JG
cmFtZSwKICAgICAgICAgZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZSwKICAgICAgICAgZGlk
UmVjZWl2ZVRpdGxlRm9yRnJhbWUsCisgICAgICAgIDAsCisgICAgICAgIDAsCiAgICAgICAgIGRp
ZENsZWFyV2luZG93Rm9yRnJhbWUsCiAgICAgICAgIGRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9y
RnJhbWUsCiAgICAgICAgIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSwKQEAgLTIw
NCwzNyArMjA2LDQyIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpyZXNldCgpCiAKIC8vIExv
YWRlciBDbGllbnQgQ2FsbGJhY2tzCiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZy
YW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQordm9pZCBJbmplY3RlZEJ1bmRs
ZVBhZ2U6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBh
Z2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiosIGNvbnN0IHZvaWQgKmNsaWVu
dEluZm8pCiB7CiAgICAgc3RhdGljX2Nhc3Q8SW5qZWN0ZWRCdW5kbGVQYWdlKj4oY29uc3RfY2Fz
dDx2b2lkKj4oY2xpZW50SW5mbykpLT5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKGZy
YW1lKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRp
cmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1
bmRsZUZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQordm9pZCBJbmplY3Rl
ZEJ1bmRsZVBhZ2U6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS1R5
cGVSZWYqLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQogewogICAgIHN0YXRpY19jYXN0PEluamVj
dGVkQnVuZGxlUGFnZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoZnJhbWUpOwogfQogCi12
b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZv
ckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBjb25z
dCB2b2lkICpjbGllbnRJbmZvKQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZEZhaWxQcm92
aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5k
bGVGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmKiwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKIHsK
ICAgICBzdGF0aWNfY2FzdDxJbmplY3RlZEJ1bmRsZVBhZ2UqPihjb25zdF9jYXN0PHZvaWQqPihj
bGllbnRJbmZvKSktPmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZShmcmFt
ZSk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRDb21taXRMb2FkRm9yRnJhbWUo
V0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQg
KmNsaWVudEluZm8pCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkQ29tbWl0TG9hZEZvckZy
YW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS1R5cGVS
ZWYqLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQogewogICAgIHN0YXRpY19jYXN0PEluamVjdGVk
QnVuZGxlUGFnZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZGlkQ29tbWl0TG9h
ZEZvckZyYW1lKGZyYW1lKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZEZpbmlz
aExvYWRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFt
ZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRG
aW5pc2hMb2FkRm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYg
ZnJhbWUsIFdLVHlwZVJlZiosIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCiB7CiAgICAgc3RhdGlj
X2Nhc3Q8SW5qZWN0ZWRCdW5kbGVQYWdlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykp
LT5kaWRGaW5pc2hMb2FkRm9yRnJhbWUoZnJhbWUpOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxl
UGFnZTo6ZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwg
V0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3ZvaWQgSW5q
ZWN0ZWRCdW5kbGVQYWdlOjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXS0J1bmRsZVBh
Z2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmKiwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbykKK3sKKyAgICBzdGF0aWNfY2FzdDxJbmplY3RlZEJ1bmRsZVBhZ2UqPihj
b25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZy
YW1lKGZyYW1lKTsKK30KKwordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZEZhaWxMb2FkV2l0
aEVycm9yRm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJh
bWUsIFdLVHlwZVJlZiosIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCiB7CiAgICAgc3RhdGljX2Nh
c3Q8SW5qZWN0ZWRCdW5kbGVQYWdlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5k
aWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKGZyYW1lKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1
bmRsZVBhZ2U6OmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBX
S1N0cmluZ1JlZiB0aXRsZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCAqY2xp
ZW50SW5mbykKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRSZWNlaXZlVGl0bGVGb3JGcmFt
ZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgdGl0bGUsIFdLQnVuZGxlRnJhbWVS
ZWYgZnJhbWUsIFdLVHlwZVJlZiosIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCiB7CiAgICAgc3Rh
dGljX2Nhc3Q8SW5qZWN0ZWRCdW5kbGVQYWdlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5m
bykpLT5kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZSh0aXRsZSwgZnJhbWUpOwogfQpAQCAtMjU5LDEx
ICsyNjYsNiBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkQ2hhbmdlTG9jYXRpCiAgICAg
c3RhdGljX2Nhc3Q8SW5qZWN0ZWRCdW5kbGVQYWdlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50
SW5mbykpLT5kaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZShmcmFtZSk7CiB9CiAK
LXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShX
S0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKLXsKLSAgICBzdGF0aWNfY2FzdDxJbmplY3RlZEJ1bmRsZVBhZ2UqPihjb25z
dF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1l
KGZyYW1lKTsKLX0KLQogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZEhhbmRsZU9ubG9hZEV2
ZW50c0ZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1l
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewogICAgIHN0YXRpY19jYXN0PEluamVjdGVkQnVu
ZGxlUGFnZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZGlkSGFuZGxlT25sb2Fk
RXZlbnRzRm9yRnJhbWUoZnJhbWUpOwpJbmRleDogV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZS5oCShyZXZpc2lvbiA2Nzc4NikKKysrIFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDE4
ICs0NywxOCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgLy8gTG9hZGVyIENsaWVudAotICAg
IHN0YXRpYyB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tCdW5kbGVQYWdl
UmVmLCBXS0J1bmRsZUZyYW1lUmVmLCBjb25zdCB2b2lkKik7Ci0gICAgc3RhdGljIHZvaWQgZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tCdW5kbGVQ
YWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmLCBjb25zdCB2b2lkKik7Ci0gICAgc3RhdGljIHZvaWQg
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiwg
V0tCdW5kbGVGcmFtZVJlZiwgY29uc3Qgdm9pZCopOwotICAgIHN0YXRpYyB2b2lkIGRpZENvbW1p
dExvYWRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYsIGNvbnN0IHZv
aWQqKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tCdW5kbGVQYWdl
UmVmLCBXS0J1bmRsZUZyYW1lUmVmLCBjb25zdCB2b2lkKik7Ci0gICAgc3RhdGljIHZvaWQgZGlk
RmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVS
ZWYsIGNvbnN0IHZvaWQqKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlVGl0bGVGb3JGcmFt
ZShXS0J1bmRsZVBhZ2VSZWYsIFdLU3RyaW5nUmVmIHRpdGxlLCBXS0J1bmRsZUZyYW1lUmVmLCBj
b25zdCB2b2lkKik7CisgICAgc3RhdGljIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JG
cmFtZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYsIFdLVHlwZVJlZiosIGNvbnN0
IHZvaWQqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbExvYWRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYsIFdL
VHlwZVJlZiosIGNvbnN0IHZvaWQqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGYWlsUHJvdmlzaW9u
YWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVm
LCBXS1R5cGVSZWYqLCBjb25zdCB2b2lkKik7CisgICAgc3RhdGljIHZvaWQgZGlkQ29tbWl0TG9h
ZEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiwgV0tUeXBlUmVmKiwg
Y29uc3Qgdm9pZCopOworICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS0J1
bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYsIFdLVHlwZVJlZiosIGNvbnN0IHZvaWQqKTsK
KyAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXS0J1bmRsZVBh
Z2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYsICBXS1R5cGVSZWYqLCBjb25zdCB2b2lkKik7CisgICAg
c3RhdGljIHZvaWQgZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYs
IFdLQnVuZGxlRnJhbWVSZWYsIFdLVHlwZVJlZiosIGNvbnN0IHZvaWQqKTsKKyAgICBzdGF0aWMg
dm9pZCBkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYsIFdLU3RyaW5nUmVm
IHRpdGxlLCBXS0J1bmRsZUZyYW1lUmVmLCBXS1R5cGVSZWYqLCBjb25zdCB2b2lkKik7CiAgICAg
c3RhdGljIHZvaWQgZGlkQ2xlYXJXaW5kb3dGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVu
ZGxlRnJhbWVSZWYsIFdLQnVuZGxlU2NyaXB0V29ybGRSZWYsIGNvbnN0IHZvaWQqKTsKICAgICBz
dGF0aWMgdm9pZCBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKFdLQnVuZGxlUGFnZVJl
ZiwgV0tCdW5kbGVGcmFtZVJlZiwgY29uc3Qgdm9pZCopOwogICAgIHN0YXRpYyB2b2lkIHdpbGxQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJh
bWVSZWYsIFdLVVJMUmVmIHVybCwgZG91YmxlIGRlbGF5LCBkb3VibGUgZGF0ZSwgY29uc3Qgdm9p
ZCopOwogICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1l
KFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiwgY29uc3Qgdm9pZCopOwotICAgIHN0
YXRpYyB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiwg
V0tCdW5kbGVGcmFtZVJlZiwgY29uc3Qgdm9pZCopOwogICAgIHN0YXRpYyB2b2lkIGRpZEhhbmRs
ZU9ubG9hZEV2ZW50c0ZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiwg
Y29uc3Qgdm9pZCopOwogICAgIHN0YXRpYyB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRG
b3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYsIGNvbnN0IHZvaWQqKTsK
ICAgICBzdGF0aWMgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZShXS0J1bmRsZVBh
Z2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYsIGNvbnN0IHZvaWQqKTsK
</data>
<flag name="review"
          id="57462"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>