<?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>45785</bug_id>
          
          <creation_ts>2010-09-14 15:39:57 -0700</creation_ts>
          <short_desc>Remove WKBundleNodeRef, replacing uses with WKBundleNodeHandleRef.</short_desc>
          <delta_ts>2010-09-14 19:44:19 -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>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>279210</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-14 15:39:57 -0700</bug_when>
    <thetext>Remove WKBundleNodeRef, replacing uses with WKBundleNodeHandleRef.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279212</commentid>
    <comment_count>1</comment_count>
      <attachid>67614</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-14 15:41:34 -0700</bug_when>
    <thetext>Created attachment 67614
Patch

All tests pass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279215</commentid>
    <comment_count>2</comment_count>
      <attachid>67614</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-09-14 15:45:04 -0700</bug_when>
    <thetext>Comment on attachment 67614
Patch

&gt; Index: WebKitTools/ChangeLog
&gt; ===================================================================
&gt; --- WebKitTools/ChangeLog	(revision 67503)
&gt; +++ WebKitTools/ChangeLog	(working copy)
&gt; @@ -1,3 +1,28 @@
&gt; +2010-09-14  Sam Weinig  &lt;sam@webkit.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Remove WKBundleNodeRef, replacing uses with WKBundleNodeHandleRef.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=45785
&gt; +
&gt; +        * MiniBrowser/mac/AppDelegate.m:
&gt; +        (-[BrowserAppDelegate init]):

I don&apos;t think you intended to add this.

&gt; Index: WebKitTools/MiniBrowser/mac/AppDelegate.m
&gt; ===================================================================
&gt; --- WebKitTools/MiniBrowser/mac/AppDelegate.m	(revision 67475)
&gt; +++ WebKitTools/MiniBrowser/mac/AppDelegate.m	(working copy)
&gt; @@ -32,7 +32,7 @@
&gt;  #import &lt;WebKit2/WKStringCF.h&gt;
&gt;  #import &lt;WebKit2/WKURLCF.h&gt;
&gt;  
&gt; -static NSString *defaultURL = @&quot;http://www.webkit.org/&quot;;
&gt; +static NSString *defaultURL = @&quot;http://www.tivofaq.com/&quot;;
&gt;  
&gt;  @implementation BrowserAppDelegate
&gt;  
&gt; @@ -113,10 +113,7 @@ - (id)init
&gt;  {
&gt;      self = [super init];
&gt;      if (self) {
&gt; -        if ([NSEvent modifierFlags] &amp; NSShiftKeyMask)
&gt; -            currentProcessModel = kProcessModelSharedSecondaryThread;
&gt; -        else
&gt; -            currentProcessModel = kProcessModelSharedSecondaryProcess;
&gt; +        currentProcessModel = kProcessModelSharedSecondaryThread;
&gt;  
&gt;          WKContextRef threadContext = WKContextGetSharedThreadContext();
&gt;          WKContextHistoryClient historyClient = {

Or this. Looks fine otherwise!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279218</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-14 15:47:39 -0700</bug_when>
    <thetext>Attachment 67614 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit2/WebProcess/InjectedBundle/InjectedBundlePageEditorClient.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 9 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>279222</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-14 15:53:48 -0700</bug_when>
    <thetext>Landed in r67507.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279343</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-14 19:44:19 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/67507 might have broken Leopard Intel Debug (Tests)
The following changes are on the blame list:
http://trac.webkit.org/changeset/67506
http://trac.webkit.org/changeset/67507</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67614</attachid>
            <date>2010-09-14 15:41:34 -0700</date>
            <delta_ts>2010-09-14 15:45:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>33303</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NzUwMykKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTAtMDktMTQgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUg
V0tCdW5kbGVOb2RlUmVmLCByZXBsYWNpbmcgdXNlcyB3aXRoIFdLQnVuZGxlTm9kZUhhbmRsZVJl
Zi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1Nzg1
CisKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogd2luL1dlYktpdDIudmNwcm9qOgorICAgICAgICBSZW1vdmUgZmlsZXMuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJQ2FzdC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVCYXNlLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGUuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVOb2RlLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlUmFuZ2UuY3BwOgorICAgICAgICAoV0tCdW5kbGVSYW5nZUNvcHlT
dGFydENvbnRhaW5lcik6CisgICAgICAgIChXS0J1bmRsZVJhbmdlQ29weUVuZENvbnRhaW5lcik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVJhbmdl
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VF
ZGl0b3JDbGllbnQ6OnNob3VsZEluc2VydE5vZGUpOgorICAgICAgICBDaGFuZ2UgdG8gYmUgaW4g
dGVybXMgb2YgV0tCdW5kbGVOb2RlSGFuZGxlUmVmLgorCiAyMDEwLTA5LTE0ICBKZXNzaWUgQmVy
bGluICA8amJlcmxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jl
bi4KSW5kZXg6IFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiA2NzQ3NSkKKysrIFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0zNTQsOCArMzU0LDYgQEAKIAkJRTFFRTUzRTcxMUY4Q0ZGQjAw
Q0NCRUU0IC8qIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVFNTNFNjExRjhDRkZCMDBDQ0JF
RTQgLyogSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCAqLzsgfTsKIAkJRTFFRTU1
RjQxMUY4RjE4OTAwQ0NCRUU0IC8qIFdLQnVuZGxlUmFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRUU1NUYzMTFGOEYxODkwMENDQkVFNCAvKiBX
S0J1bmRsZVJhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9
OyB9OwogCQlFMUVFNTVGODExRjhGMUJDMDBDQ0JFRTQgLyogV0tCdW5kbGVSYW5nZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVFNTVGNzExRjhG
MUJDMDBDQ0JFRTQgLyogV0tCdW5kbGVSYW5nZS5jcHAgKi87IH07Ci0JCUUxRUU1NjMwMTFGOEY2
QUEwMENDQkVFNCAvKiBXS0J1bmRsZU5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUxRUU1NjJGMTFGOEY2QUEwMENDQkVFNCAvKiBXS0J1bmRsZU5v
ZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07Ci0JCUUx
RUU1NjU2MTFGOEY3MTcwMENDQkVFNCAvKiBXS0J1bmRsZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFRTU2NTUxMUY4RjcxNzAwQ0NCRUU0
IC8qIFdLQnVuZGxlTm9kZS5jcHAgKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24g
Ki8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTc0MCw4
ICs3MzgsNiBAQAogCQlFMUVFNTNFNjExRjhDRkZCMDBDQ0JFRTQgLyogSW5qZWN0ZWRCdW5kbGVQ
YWdlRWRpdG9yQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUxRUU1NUYzMTFGOEYxODkwMENDQkVFNCAvKiBXS0J1bmRsZVJhbmdlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlUmFuZ2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFFRTU1RjcxMUY4RjFCQzAwQ0NCRUU0IC8qIFdLQnVuZGxl
UmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tCdW5kbGVS
YW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxRUU1NjJGMTFGOEY2QUEw
MENDQkVFNCAvKiBXS0J1bmRsZU5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0tCdW5kbGVOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxRUU1NjU1
MTFGOEY3MTcwMENDQkVFNCAvKiBXS0J1bmRsZU5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV0tCdW5kbGVOb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJY
RnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtMTM0Myw4ICsxMzM5LDYgQEAKIAkJ
CQlCQ0QyNUYxNTExRDZCREUxMDAxNjlCMEUgLyogV0tCdW5kbGVGcmFtZS5oICovLAogCQkJCUJD
RjA0OUU0MTFGRTIwRjYwMEY4NkE1OCAvKiBXS0J1bmRsZUZyYW1lUHJpdmF0ZS5oICovLAogCQkJ
CUJDMjA0RUVEMTFDODNFQzgwMDhGMzM3NSAvKiBXS0J1bmRsZUluaXRpYWxpemUuaCAqLywKLQkJ
CQlFMUVFNTY1NTExRjhGNzE3MDBDQ0JFRTQgLyogV0tCdW5kbGVOb2RlLmNwcCAqLywKLQkJCQlF
MUVFNTYyRjExRjhGNkFBMDBDQ0JFRTQgLyogV0tCdW5kbGVOb2RlLmggKi8sCiAJCQkJQkM0QkVG
RTAxMjBBMUE0QzAwRkJBMEM3IC8qIFdLQnVuZGxlTm9kZUhhbmRsZS5jcHAgKi8sCiAJCQkJQkM0
QkVGREYxMjBBMUE0QzAwRkJBMEM3IC8qIFdLQnVuZGxlTm9kZUhhbmRsZS5oICovLAogCQkJCUJD
MjA1MjgwMTFDOTQyODQwMDhGMzM3NSAvKiBXS0J1bmRsZVBhZ2UuY3BwICovLApAQCAtMTU4OCw3
ICsxNTgyLDYgQEAKIAkJCQkxQTI0QjVGMzExRjUzMUU4MDBDMzgyNjkgLyogTWFjaFV0aWxpdGll
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFFRTUzRTMxMUY4Q0ZDMDAwQ0NCRUU0IC8qIEluamVj
dGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFFRTU1RjQx
MUY4RjE4OTAwQ0NCRUU0IC8qIFdLQnVuZGxlUmFuZ2UuaCBpbiBIZWFkZXJzICovLAotCQkJCUUx
RUU1NjMwMTFGOEY2QUEwMENDQkVFNCAvKiBXS0J1bmRsZU5vZGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDRjA0OUU2MTFGRTIwRjYwMEY4NkE1OCAvKiBXS0J1bmRsZUZyYW1lUHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkNGMDQ5RTcxMUZFMjBGNjAwRjg2QTU4IC8qIFdLQnVuZGxlUHJp
dmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFNDk3NjgxMUZGNjU4RTAwNDhCNDY0IC8qIE5Q
SlNPYmplY3QuaCBpbiBIZWFkZXJzICovLApAQCAtMTg0Miw3ICsxODM1LDYgQEAKIAkJCQkxQTI0
QjVGMjExRjUzMUU4MDBDMzgyNjkgLyogTWFjaFV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlFMUVFNTNFNzExRjhDRkZCMDBDQ0JFRTQgLyogSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxRUU1NUY4MTFGOEYxQkMwMENDQkVFNCAv
KiBXS0J1bmRsZVJhbmdlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUUxRUU1NjU2MTFGOEY3MTcw
MENDQkVFNCAvKiBXS0J1bmRsZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFNDk3Njkx
MUZGNjU4RTAwNDhCNDY0IC8qIE5QSlNPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFF
NDk4NzkxMUZGN0ZBQTAwNDhCNDY0IC8qIEpTTlBPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUFFNDlBNEExMUZGQThDRTAwNDhCNDY0IC8qIEpTTlBNZXRob2QuY3BwIGluIFNvdXJjZXMg
Ki8sCkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAkocmV2aXNp
b24gNjc0NzUpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBA
QAogCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0Lmgi
CisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmgiCiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNjIsOCArNjMs
MTAgQEAgYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQ6OnNobwogCiBib29sIElu
amVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudDo6c2hvdWxkSW5zZXJ0Tm9kZShXZWJQYWdlKiBw
YWdlLCBOb2RlKiBub2RlLCBSYW5nZSogcmFuZ2VUb1JlcGxhY2UsIEVkaXRvckluc2VydEFjdGlv
biBhY3Rpb24pCiB7Ci0gICAgaWYgKG1fY2xpZW50LnNob3VsZEluc2VydE5vZGUpCi0gICAgICAg
IHJldHVybiBtX2NsaWVudC5zaG91bGRJbnNlcnROb2RlKHRvUmVmKHBhZ2UpLCB0b1JlZihub2Rl
KSwgdG9SZWYocmFuZ2VUb1JlcGxhY2UpLCB0b1dLKGFjdGlvbiksIG1fY2xpZW50LmNsaWVudElu
Zm8pOworICAgIGlmIChtX2NsaWVudC5zaG91bGRJbnNlcnROb2RlKSB7CisgICAgICAgIFJlZlB0
cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IG5vZGVIYW5kbGUgPSBJbmplY3RlZEJ1bmRsZU5v
ZGVIYW5kbGU6OmdldE9yQ3JlYXRlKG5vZGUpOworICAgICAgICByZXR1cm4gbV9jbGllbnQuc2hv
dWxkSW5zZXJ0Tm9kZSh0b1JlZihwYWdlKSwgdG9SZWYobm9kZUhhbmRsZS5nZXQoKSksIHRvUmVm
KHJhbmdlVG9SZXBsYWNlKSwgdG9XSyhhY3Rpb24pLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAg
ICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUFQSUNhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0LmgJKHJldmlz
aW9uIDY3NDc1KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlQVBJQ2FzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw2IEBAIHRlbXBsYXRl
PD4gc3RydWN0IEJ1bmRsZUFQSVR5cGVJbmZvPFdLQnUKIHRlbXBsYXRlPD4gc3RydWN0IEJ1bmRs
ZUFQSVR5cGVJbmZvPFdLQnVuZGxlUmVmPiAgICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZWRl
ZiBJbmplY3RlZEJ1bmRsZSogSW1wbFR5cGU7IH07CiB0ZW1wbGF0ZTw+IHN0cnVjdCBCdW5kbGVB
UElUeXBlSW5mbzxXS0J1bmRsZU5vZGVIYW5kbGVSZWY+ICAgICAgICAgICAgICB7IHR5cGVkZWYg
SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlKiBJbXBsVHlwZTsgfTsKIHRlbXBsYXRlPD4gc3RydWN0
IEJ1bmRsZUFQSVR5cGVJbmZvPFdLQnVuZGxlU2NyaXB0V29ybGRSZWY+ICAgICAgICAgICAgIHsg
dHlwZWRlZiBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiBJbXBsVHlwZTsgfTsKLXRlbXBsYXRl
PD4gc3RydWN0IEJ1bmRsZUFQSVR5cGVJbmZvPFdLQnVuZGxlTm9kZVJlZj4gICAgICAgICAgICAg
ICAgICAgIHsgdHlwZWRlZiBXZWJDb3JlOjpOb2RlKiBJbXBsVHlwZTsgfTsKIHRlbXBsYXRlPD4g
c3RydWN0IEJ1bmRsZUFQSVR5cGVJbmZvPFdLQnVuZGxlUmFuZ2VSZWY+ICAgICAgICAgICAgICAg
ICAgIHsgdHlwZWRlZiBXZWJDb3JlOjpSYW5nZSogSW1wbFR5cGU7IH07CiB0ZW1wbGF0ZTw+IHN0
cnVjdCBCdW5kbGVBUElUeXBlSW5mbzxXS0J1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25SZWY+ICAg
ICB7IHR5cGVkZWYgV2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbiogSW1wbFR5cGU7IH07CiAK
QEAgLTY2LDcgKzY1LDYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQnVuZGxlSW1wbFR5cGVJbmZvPElu
agogdGVtcGxhdGU8PiBzdHJ1Y3QgQnVuZGxlSW1wbFR5cGVJbmZvPFdlYkZyYW1lKj4gICAgICAg
ICAgICAgICAgICAgICAgICAgeyB0eXBlZGVmIFdLQnVuZGxlRnJhbWVSZWYgQVBJVHlwZTsgfTsK
IHRlbXBsYXRlPD4gc3RydWN0IEJ1bmRsZUltcGxUeXBlSW5mbzxXZWJQYWdlKj4gICAgICAgICAg
ICAgICAgICAgICAgICAgIHsgdHlwZWRlZiBXS0J1bmRsZVBhZ2VSZWYgQVBJVHlwZTsgfTsKIHRl
bXBsYXRlPD4gc3RydWN0IEJ1bmRsZUltcGxUeXBlSW5mbzxXZWJDb3JlOjpDU1NTdHlsZURlY2xh
cmF0aW9uKj4gICAgIHsgdHlwZWRlZiBXS0J1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25SZWYgQVBJ
VHlwZTsgfTsKLXRlbXBsYXRlPD4gc3RydWN0IEJ1bmRsZUltcGxUeXBlSW5mbzxXZWJDb3JlOjpO
b2RlKj4gICAgICAgICAgICAgICAgICAgIHsgdHlwZWRlZiBXS0J1bmRsZU5vZGVSZWYgQVBJVHlw
ZTsgfTsKIHRlbXBsYXRlPD4gc3RydWN0IEJ1bmRsZUltcGxUeXBlSW5mbzxXZWJDb3JlOjpSYW5n
ZSo+ICAgICAgICAgICAgICAgICAgIHsgdHlwZWRlZiBXS0J1bmRsZVJhbmdlUmVmIEFQSVR5cGU7
IH07CiAKIC8qIE9wYXF1ZSB0eXBpbmcgY29udmVuaWVuY2UgbWV0aG9kcyAqLwpJbmRleDogV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQmFzZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUJhc2UuaAkocmV2aXNpb24gNjc0NzUpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDYg
QEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVQYWdlKgogdHlwZWRlZiBjb25z
dCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVTY3JpcHRXb3JsZCogV0tCdW5kbGVTY3JpcHRXb3JsZFJl
ZjsKIAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVET01DU1NTdHlsZURlY2xh
cmF0aW9uKiBXS0J1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25SZWY7Ci10eXBlZGVmIGNvbnN0IHN0
cnVjdCBPcGFxdWVXS0J1bmRsZU5vZGUqIFdLQnVuZGxlTm9kZVJlZjsKIHR5cGVkZWYgY29uc3Qg
c3RydWN0IE9wYXF1ZVdLQnVuZGxlUmFuZ2UqIFdLQnVuZGxlUmFuZ2VSZWY7CiAKICN1bmRlZiBX
S19FWFBPUlQKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZU5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGUuY3BwCShyZXZpc2lvbiA2NzQ3NSkKKysrIFdlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiV0tCdW5k
bGVOb2RlLmgiCi0KLSNpbmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXS0J1bmRsZUFQ
SUNhc3QuaCIKLSNpbmNsdWRlICJXS0J1bmRsZU5vZGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0Nv
bnRhaW5lck5vZGUuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci11c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwotCi1XS1N0cmluZ1JlZiBXS0J1bmRsZU5vZGVDb3B5Tm9kZU5hbWUoV0tCdW5k
bGVOb2RlUmVmIG5vZGUpCi17Ci0gICAgcmV0dXJuIHRvQ29waWVkUmVmKHRvV0sobm9kZSktPm5v
ZGVOYW1lKCkpOwotfQotCi1XS0J1bmRsZU5vZGVSZWYgV0tCdW5kbGVOb2RlR2V0UGFyZW50KFdL
QnVuZGxlTm9kZVJlZiBub2RlKQotewotICAgIE5vZGUqIHBhcmVudCA9IHRvV0sobm9kZSktPnBh
cmVudCgpOwotICAgIHJldHVybiB0b1JlZihwYXJlbnQpOwotfQpJbmRleDogV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9kZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGUuaAko
cmV2aXNpb24gNjc0NzUpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgV0tCdW5kbGVOb2RlX2gKLSNkZWZpbmUgV0tCdW5kbGVOb2RlX2gKLQot
I2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+Ci0jaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZUJh
c2UuaD4KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi1XS19F
WFBPUlQgV0tTdHJpbmdSZWYgV0tCdW5kbGVOb2RlQ29weU5vZGVOYW1lKFdLQnVuZGxlTm9kZVJl
ZiBub2RlKTsKLQotV0tfRVhQT1JUIFdLQnVuZGxlTm9kZVJlZiBXS0J1bmRsZU5vZGVHZXRQYXJl
bnQoV0tCdW5kbGVOb2RlUmVmIG5vZGUpOwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRp
ZgotCi0jZW5kaWYgLyogV0tCdW5kbGVOb2RlX2ggKi8KSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgJKHJldmlz
aW9uIDY3NDc1KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNyArMTA5LDcgQEAgdHlwZWRlZiBz
dHJ1Y3QgV0tCdW5kbGVQYWdlVUlDbGllbnQgV0tCdQogLy8gRWRpdG9yIGNsaWVudAogdHlwZWRl
ZiBib29sICgqV0tCdW5kbGVQYWdlU2hvdWxkQmVnaW5FZGl0aW5nQ2FsbGJhY2spKFdLQnVuZGxl
UGFnZVJlZiBwYWdlLCBXS0J1bmRsZVJhbmdlUmVmIHJhbmdlLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKTsKIHR5cGVkZWYgYm9vbCAoKldLQnVuZGxlUGFnZVNob3VsZEVuZEVkaXRpbmdDYWxsYmFj
aykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlUmFuZ2VSZWYgcmFuZ2UsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pOwotdHlwZWRlZiBib29sICgqV0tCdW5kbGVQYWdlU2hvdWxkSW5zZXJ0
Tm9kZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVOb2RlUmVmIG5vZGUs
IFdLQnVuZGxlUmFuZ2VSZWYgcmFuZ2VUb1JlcGxhY2UsIFdLSW5zZXJ0QWN0aW9uVHlwZSBhY3Rp
b24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRlZiBib29sICgqV0tCdW5kbGVQYWdl
U2hvdWxkSW5zZXJ0Tm9kZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVO
b2RlSGFuZGxlUmVmIG5vZGUsIFdLQnVuZGxlUmFuZ2VSZWYgcmFuZ2VUb1JlcGxhY2UsIFdLSW5z
ZXJ0QWN0aW9uVHlwZSBhY3Rpb24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlwZWRlZiBi
b29sICgqV0tCdW5kbGVQYWdlU2hvdWxkSW5zZXJ0VGV4dENhbGxiYWNrKShXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSwgV0tTdHJpbmdSZWYgc3RyaW5nLCBXS0J1bmRsZVJhbmdlUmVmIHJhbmdlVG9SZXBs
YWNlLCBXS0luc2VydEFjdGlvblR5cGUgYWN0aW9uLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsK
IHR5cGVkZWYgYm9vbCAoKldLQnVuZGxlUGFnZVNob3VsZERlbGV0ZVJhbmdlQ2FsbGJhY2spKFdL
QnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZVJhbmdlUmVmIHJhbmdlLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKTsKIHR5cGVkZWYgYm9vbCAoKldLQnVuZGxlUGFnZVNob3VsZENoYW5nZVNlbGVj
dGVkUmFuZ2UpKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZVJhbmdlUmVmIGZyb21SYW5n
ZSwgV0tCdW5kbGVSYW5nZVJlZiB0b1JhbmdlLCBXS0FmZmluaXR5VHlwZSBhZmZpbml0eSwgYm9v
bCBzdGlsbFNlbGVjdGluZywgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CkluZGV4OiBXZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVSYW5nZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UmFuZ2UuY3BwCShyZXZpc2lvbiA2NzQ3NSkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVJhbmdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsOCAr
MjUsOCBAQAogCiAjaW5jbHVkZSAiV0tCdW5kbGVSYW5nZS5oIgogCisjaW5jbHVkZSAiSW5qZWN0
ZWRCdW5kbGVOb2RlSGFuZGxlLmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCi0jaW5j
bHVkZSAiV0tCdW5kbGVOb2RlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SYW5nZS5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTM3LDkgKzM3LDEwIEBAIHVuc2lnbmVkIFdLQnVuZGxl
UmFuZ2VHZXRTdGFydE9mZnNldChXS0IKICAgICByZXR1cm4gdG9XSyhyYW5nZSktPnN0YXJ0T2Zm
c2V0KCk7CiB9CiAKLVdLQnVuZGxlTm9kZVJlZiBXS0J1bmRsZVJhbmdlR2V0U3RhcnRDb250YWlu
ZXIoV0tCdW5kbGVSYW5nZVJlZiByYW5nZSkKK1dLQnVuZGxlTm9kZUhhbmRsZVJlZiBXS0J1bmRs
ZVJhbmdlQ29weVN0YXJ0Q29udGFpbmVyKFdLQnVuZGxlUmFuZ2VSZWYgcmFuZ2UpCiB7Ci0gICAg
cmV0dXJuIHRvUmVmKHRvV0socmFuZ2UpLT5zdGFydENvbnRhaW5lcigpKTsKKyAgICBSZWZQdHI8
SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBub2RlSGFuZGxlID0gSW5qZWN0ZWRCdW5kbGVOb2Rl
SGFuZGxlOjpnZXRPckNyZWF0ZSh0b1dLKHJhbmdlKS0+c3RhcnRDb250YWluZXIoKSk7CisgICAg
cmV0dXJuIHRvUmVmKG5vZGVIYW5kbGUucmVsZWFzZSgpLmxlYWtSZWYoKSk7CiB9CiAKIHVuc2ln
bmVkIFdLQnVuZGxlUmFuZ2VHZXRFbmRPZmZzZXQoV0tCdW5kbGVSYW5nZVJlZiByYW5nZSkKQEAg
LTQ3LDcgKzQ4LDggQEAgdW5zaWduZWQgV0tCdW5kbGVSYW5nZUdldEVuZE9mZnNldChXS0J1bgog
ICAgIHJldHVybiB0b1dLKHJhbmdlKS0+ZW5kT2Zmc2V0KCk7CiB9CiAKLVdLQnVuZGxlTm9kZVJl
ZiBXS0J1bmRsZVJhbmdlR2V0RW5kQ29udGFpbmVyKFdLQnVuZGxlUmFuZ2VSZWYgcmFuZ2UpCitX
S0J1bmRsZU5vZGVIYW5kbGVSZWYgV0tCdW5kbGVSYW5nZUNvcHlFbmRDb250YWluZXIoV0tCdW5k
bGVSYW5nZVJlZiByYW5nZSkKIHsKLSAgICByZXR1cm4gdG9SZWYodG9XSyhyYW5nZSktPmVuZENv
bnRhaW5lcigpKTsKKyAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBub2RlSGFu
ZGxlID0gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpnZXRPckNyZWF0ZSh0b1dLKHJhbmdlKS0+
ZW5kQ29udGFpbmVyKCkpOworICAgIHJldHVybiB0b1JlZihub2RlSGFuZGxlLnJlbGVhc2UoKS5s
ZWFrUmVmKCkpOwogfQpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUmFuZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVSYW5nZS5oCShyZXZpc2lvbiA2NzQ3NSkKKysrIFdl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVJhbmdlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM5LDExICszOSwxMSBAQCBleHRlcm4gIkMiIHsKIAogV0tfRVhQT1JU
IHVuc2lnbmVkIFdLQnVuZGxlUmFuZ2VHZXRTdGFydE9mZnNldChXS0J1bmRsZVJhbmdlUmVmIHJh
bmdlKTsKIAotV0tfRVhQT1JUIFdLQnVuZGxlTm9kZVJlZiBXS0J1bmRsZVJhbmdlR2V0U3RhcnRD
b250YWluZXIoV0tCdW5kbGVSYW5nZVJlZiByYW5nZSk7CitXS19FWFBPUlQgV0tCdW5kbGVOb2Rl
SGFuZGxlUmVmIFdLQnVuZGxlUmFuZ2VDb3B5U3RhcnRDb250YWluZXIoV0tCdW5kbGVSYW5nZVJl
ZiByYW5nZSk7CiAKIFdLX0VYUE9SVCB1bnNpZ25lZCBXS0J1bmRsZVJhbmdlR2V0RW5kT2Zmc2V0
KFdLQnVuZGxlUmFuZ2VSZWYgcmFuZ2UpOwogCi1XS19FWFBPUlQgV0tCdW5kbGVOb2RlUmVmIFdL
QnVuZGxlUmFuZ2VHZXRFbmRDb250YWluZXIoV0tCdW5kbGVSYW5nZVJlZiByYW5nZSk7CitXS19F
WFBPUlQgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIFdLQnVuZGxlUmFuZ2VDb3B5RW5kQ29udGFpbmVy
KFdLQnVuZGxlUmFuZ2VSZWYgcmFuZ2UpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KSW5kZXg6
IFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvd2luL1dl
YktpdDIudmNwcm9qCShyZXZpc2lvbiA2NzQ3NSkKKysrIFdlYktpdDIvd2luL1dlYktpdDIudmNw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC04NzQsMTQgKzg3NCw2IEBACiAJCQkJCQkJPg0KIAkJCQkJ
CTwvRmlsZT4NCiAJCQkJCQk8RmlsZQ0KLQkJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nl
c3NcSW5qZWN0ZWRCdW5kbGVcQVBJXGNcV0tCdW5kbGVOb2RlLmNwcCINCi0JCQkJCQkJPg0KLQkJ
CQkJCTwvRmlsZT4NCi0JCQkJCQk8RmlsZQ0KLQkJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlBy
b2Nlc3NcSW5qZWN0ZWRCdW5kbGVcQVBJXGNcV0tCdW5kbGVOb2RlLmgiDQotCQkJCQkJCT4NCi0J
CQkJCQk8L0ZpbGU+DQotCQkJCQkJPEZpbGUNCiAJCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQ
cm9jZXNzXEluamVjdGVkQnVuZGxlXEFQSVxjXFdLQnVuZGxlTm9kZUhhbmRsZS5jcHAiDQogCQkJ
CQkJCT4NCiAJCQkJCQk8L0ZpbGU+DQpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNjc1MDMpCisrKyBXZWJL
aXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0w
OS0xNCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBXS0J1bmRsZU5vZGVSZWYsIHJlcGxh
Y2luZyB1c2VzIHdpdGggV0tCdW5kbGVOb2RlSGFuZGxlUmVmLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDU3ODUKKworICAgICAgICAqIE1pbmlCcm93
c2VyL21hYy9BcHBEZWxlZ2F0ZS5tOgorICAgICAgICAoLVtCcm93c2VyQXBwRGVsZWdhdGUgaW5p
dF0pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6cHJvcGVydHlWYWx1ZSk6CisgICAgICAgIChX
VFI6Om51bWVyaWNXaW5kb3dQcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKFdUUjo6ZHVtcFBhdGgp
OgorICAgICAgICAoV1RSOjp0b1N0cik6CisgICAgICAgIChXVFI6Om9wZXJhdG9yPDwpOgorICAg
ICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OkluamVjdGVkQnVuZGxlUGFnZSk6CisgICAg
ICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6c2hvdWxkSW5zZXJ0Tm9kZSk6CisgICAgICAg
IChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6c2hvdWxkQmVnaW5FZGl0aW5nKToKKyAgICAgICAg
KFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpzaG91bGRFbmRFZGl0aW5nKToKKyAgICAgICAgKFdU
Ujo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpzaG91bGRJbnNlcnRUZXh0KToKKyAgICAgICAgKFdUUjo6
SW5qZWN0ZWRCdW5kbGVQYWdlOjpzaG91bGREZWxldGVSYW5nZSk6CisgICAgICAgIChXVFI6Oklu
amVjdGVkQnVuZGxlUGFnZTo6c2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZSk6CisgICAgICAgIChX
VFI6OkluamVjdGVkQnVuZGxlUGFnZTo6c2hvdWxkQXBwbHlTdHlsZSk6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaDoKKwogMjAx
MC0wOS0xNCAgQ2hyaXMgR3VpbGxvcnkgICA8Y2hyaXMuZ3VpbGxvcnlAZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBGbGVpemFjaC4KSW5kZXg6IFdlYktpdFRvb2xzL01p
bmlCcm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL01p
bmlCcm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5tCShyZXZpc2lvbiA2NzQ3NSkKKysrIFdlYktpdFRv
b2xzL01pbmlCcm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5tCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3
ICszMiw3IEBACiAjaW1wb3J0IDxXZWJLaXQyL1dLU3RyaW5nQ0YuaD4KICNpbXBvcnQgPFdlYktp
dDIvV0tVUkxDRi5oPgogCi1zdGF0aWMgTlNTdHJpbmcgKmRlZmF1bHRVUkwgPSBAImh0dHA6Ly93
d3cud2Via2l0Lm9yZy8iOworc3RhdGljIE5TU3RyaW5nICpkZWZhdWx0VVJMID0gQCJodHRwOi8v
d3d3LnRpdm9mYXEuY29tLyI7CiAKIEBpbXBsZW1lbnRhdGlvbiBCcm93c2VyQXBwRGVsZWdhdGUK
IApAQCAtMTEzLDEwICsxMTMsNyBAQCAtIChpZClpbml0CiB7CiAgICAgc2VsZiA9IFtzdXBlciBp
bml0XTsKICAgICBpZiAoc2VsZikgewotICAgICAgICBpZiAoW05TRXZlbnQgbW9kaWZpZXJGbGFn
c10gJiBOU1NoaWZ0S2V5TWFzaykKLSAgICAgICAgICAgIGN1cnJlbnRQcm9jZXNzTW9kZWwgPSBr
UHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5VGhyZWFkOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBjdXJyZW50UHJvY2Vzc01vZGVsID0ga1Byb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVBy
b2Nlc3M7CisgICAgICAgIGN1cnJlbnRQcm9jZXNzTW9kZWwgPSBrUHJvY2Vzc01vZGVsU2hhcmVk
U2Vjb25kYXJ5VGhyZWFkOwogCiAgICAgICAgIFdLQ29udGV4dFJlZiB0aHJlYWRDb250ZXh0ID0g
V0tDb250ZXh0R2V0U2hhcmVkVGhyZWFkQ29udGV4dCgpOwogICAgICAgICBXS0NvbnRleHRIaXN0
b3J5Q2xpZW50IGhpc3RvcnlDbGllbnQgPSB7CkluZGV4OiBXZWJLaXRUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2UuY3BwCShyZXZpc2lvbiA2NzQ3NSkKKysrIFdlYktpdFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgPFdlYktpdDIvV0tBcnJheS5oPgogI2luY2x1
ZGUgPFdlYktpdDIvV0tCdW5kbGVGcmFtZS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVG
cmFtZVByaXZhdGUuaD4KLSNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlTm9kZS5oPgogI2luY2x1
ZGUgPFdlYktpdDIvV0tCdW5kbGVQYWdlUHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tS
ZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlUmFuZ2UuaD4KQEAgLTQxLDQ0
ICs0MCw2OCBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV1RSIHsKIAotc3Rh
dGljIG9zdHJlYW0mIG9wZXJhdG9yPDwob3N0cmVhbSYgb3V0LCBXS0J1bmRsZUZyYW1lUmVmIGZy
YW1lKQorc3RhdGljIEpTVmFsdWVSZWYgcHJvcGVydHlWYWx1ZShKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNPYmplY3RSZWYgb2JqZWN0LCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG5hbWUoQWRvcHRXSywgV0tCdW5kbGVGcmFtZUNvcHlO
YW1lKGZyYW1lKSk7Ci0gICAgaWYgKFdLQnVuZGxlRnJhbWVJc01haW5GcmFtZShmcmFtZSkpIHsK
LSAgICAgICAgaWYgKCFXS1N0cmluZ0lzRW1wdHkobmFtZS5nZXQoKSkpCi0gICAgICAgICAgICBv
dXQgPDwgIm1haW4gZnJhbWUgXCIiIDw8IG5hbWUgPDwgIlwiIjsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgb3V0IDw8ICJtYWluIGZyYW1lIjsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAo
IVdLU3RyaW5nSXNFbXB0eShuYW1lLmdldCgpKSkKLSAgICAgICAgICAgIG91dCA8PCAiZnJhbWUg
XCIiIDw8IG5hbWUgPDwgIlwiIjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgb3V0IDw8ICJm
cmFtZSAoYW5vbnltb3VzKSI7Ci0gICAgfQorICAgIGlmICghb2JqZWN0KQorICAgICAgICByZXR1
cm4gMDsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcHJvcGVydHlOYW1lU3RyaW5nKEFk
b3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBK
U1ZhbHVlUmVmIGV4Y2VwdGlvbjsKKyAgICByZXR1cm4gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250
ZXh0LCBvYmplY3QsIHByb3BlcnR5TmFtZVN0cmluZy5nZXQoKSwgJmV4Y2VwdGlvbik7Cit9CiAK
LSAgICByZXR1cm4gb3V0Oworc3RhdGljIGRvdWJsZSBudW1lcmljV2luZG93UHJvcGVydHlWYWx1
ZShXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUpCit7Cisg
ICAgSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlw
dENvbnRleHQoZnJhbWUpOworICAgIEpTVmFsdWVSZWYgdmFsdWUgPSBwcm9wZXJ0eVZhbHVlKGNv
bnRleHQsIEpTQ29udGV4dEdldEdsb2JhbE9iamVjdChjb250ZXh0KSwgcHJvcGVydHlOYW1lKTsK
KyAgICBpZiAoIXZhbHVlKQorICAgICAgICByZXR1cm4gMDsKKyAgICBKU1ZhbHVlUmVmIGV4Y2Vw
dGlvbjsKKyAgICByZXR1cm4gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIHZhbHVlLCAmZXhjZXB0
aW9uKTsKIH0KIAotc3RhdGljIHN0cmluZyBkdW1wUGF0aChXS0J1bmRsZU5vZGVSZWYgbm9kZSkK
K3N0YXRpYyBzdHJpbmcgZHVtcFBhdGgoSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQsIEpTT2Jq
ZWN0UmVmIG5vZGVWYWx1ZSkKIHsKLSAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybiAiKG51
bGwpIjsKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbm9kZU5hbWUoQWRvcHRXSywgV0tC
dW5kbGVOb2RlQ29weU5vZGVOYW1lKG5vZGUpKTsKKyAgICBKU1ZhbHVlUmVmIG5vZGVOYW1lVmFs
dWUgPSBwcm9wZXJ0eVZhbHVlKGNvbnRleHQsIG5vZGVWYWx1ZSwgIm5vZGVOYW1lIik7CisgICAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGpzU3RyaW5nTm9kZU5hbWUoQWRvcHQsIEpTVmFsdWVU
b1N0cmluZ0NvcHkoY29udGV4dCwgbm9kZU5hbWVWYWx1ZSwgMCkpOworICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiBub2RlTmFtZSA9IHRvV0soanNTdHJpbmdOb2RlTmFtZSk7CisKKyAgICBK
U1ZhbHVlUmVmIHBhcmVudE5vZGUgPSBwcm9wZXJ0eVZhbHVlKGNvbnRleHQsIG5vZGVWYWx1ZSwg
InBhcmVudE5vZGUiKTsKKwogICAgIG9zdHJpbmdzdHJlYW0gb3V0OwogICAgIG91dCA8PCBub2Rl
TmFtZTsKLSAgICBpZiAoV0tCdW5kbGVOb2RlUmVmIHBhcmVudCA9IFdLQnVuZGxlTm9kZUdldFBh
cmVudChub2RlKSkKLSAgICAgICAgb3V0IDw8ICIgPiAiIDw8IGR1bXBQYXRoKHBhcmVudCk7CisK
KyAgICBpZiAocGFyZW50Tm9kZSAmJiBKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgcGFyZW50Tm9k
ZSkpCisgICAgICAgIG91dCA8PCAiID4gIiA8PCBkdW1wUGF0aChjb250ZXh0LCAoSlNPYmplY3RS
ZWYpcGFyZW50Tm9kZSk7CisKICAgICByZXR1cm4gb3V0LnN0cigpOwogfQogCi1zdGF0aWMgb3N0
cmVhbSYgb3BlcmF0b3I8PChvc3RyZWFtJiBvdXQsIFdLQnVuZGxlUmFuZ2VSZWYgcmFuZ2VSZWYp
CitzdGF0aWMgc3RyaW5nIGR1bXBQYXRoKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZVNj
cmlwdFdvcmxkUmVmIHdvcmxkLCBXS0J1bmRsZU5vZGVIYW5kbGVSZWYgbm9kZSkKIHsKLSAgICBp
ZiAocmFuZ2VSZWYpCi0gICAgICAgIG91dCA8PCAicmFuZ2UgZnJvbSAiIDw8IFdLQnVuZGxlUmFu
Z2VHZXRTdGFydE9mZnNldChyYW5nZVJlZikgPDwgIiBvZiAiIDw8IGR1bXBQYXRoKFdLQnVuZGxl
UmFuZ2VHZXRTdGFydENvbnRhaW5lcihyYW5nZVJlZikpIDw8ICIgdG8gIiA8PCBXS0J1bmRsZVJh
bmdlR2V0RW5kT2Zmc2V0KHJhbmdlUmVmKSA8PCAiIG9mICIgPDwgZHVtcFBhdGgoV0tCdW5kbGVS
YW5nZUdldEVuZENvbnRhaW5lcihyYW5nZVJlZikpOwotICAgIGVsc2UKLSAgICAgICAgb3V0IDw8
ICIobnVsbCkiOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuICIobnVsbCkiOwogCi0g
ICAgcmV0dXJuIG91dDsKKyAgICBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lID0gV0tCdW5kbGVQYWdl
R2V0TWFpbkZyYW1lKHBhZ2UpOworCisgICAgSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQgPSBX
S0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHRGb3JXb3JsZChmcmFtZSwgd29ybGQpOwor
ICAgIEpTVmFsdWVSZWYgbm9kZVZhbHVlID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRXcmFw
cGVyRm9yTm9kZUZvcldvcmxkKGZyYW1lLCBub2RlLCB3b3JsZCk7CisgICAgQVNTRVJUKEpTVmFs
dWVJc09iamVjdChjb250ZXh0LCBub2RlVmFsdWUpKTsKKyAgICBKU09iamVjdFJlZiBub2RlT2Jq
ZWN0ID0gKEpTT2JqZWN0UmVmKW5vZGVWYWx1ZTsKKworICAgIHJldHVybiBkdW1wUGF0aChjb250
ZXh0LCBub2RlT2JqZWN0KTsKK30KKworc3RhdGljIHN0cmluZyB0b1N0cihXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSwgV0tCdW5kbGVTY3JpcHRXb3JsZFJlZiB3b3JsZCwgV0tCdW5kbGVSYW5nZVJlZiBy
YW5nZVJlZikKK3sKKyAgICBpZiAoIXJhbmdlUmVmKQorICAgICAgICByZXR1cm4gIihudWxsKSI7
CisKKyAgICBXS1JldGFpblB0cjxXS0J1bmRsZU5vZGVIYW5kbGVSZWY+IHN0YXJ0Tm9kZShBZG9w
dFdLLCBXS0J1bmRsZVJhbmdlQ29weVN0YXJ0Q29udGFpbmVyKHJhbmdlUmVmKSk7CisgICAgV0tS
ZXRhaW5QdHI8V0tCdW5kbGVOb2RlSGFuZGxlUmVmPiBlbmROb2RlKEFkb3B0V0ssIFdLQnVuZGxl
UmFuZ2VDb3B5RW5kQ29udGFpbmVyKHJhbmdlUmVmKSk7CisKKyAgICBvc3RyaW5nc3RyZWFtIG91
dDsKKyAgICBvdXQgPDwgInJhbmdlIGZyb20gIiA8PCBXS0J1bmRsZVJhbmdlR2V0U3RhcnRPZmZz
ZXQocmFuZ2VSZWYpIDw8ICIgb2YgIiA8PCBkdW1wUGF0aChwYWdlLCB3b3JsZCwgc3RhcnROb2Rl
LmdldCgpKSA8PCAiIHRvICIgPDwgV0tCdW5kbGVSYW5nZUdldEVuZE9mZnNldChyYW5nZVJlZikg
PDwgIiBvZiAiIDw8IGR1bXBQYXRoKHBhZ2UsIHdvcmxkLCBlbmROb2RlLmdldCgpKTsKKyAgICBy
ZXR1cm4gb3V0LnN0cigpOwogfQogCiBzdGF0aWMgb3N0cmVhbSYgb3BlcmF0b3I8PChvc3RyZWFt
JiBvdXQsIFdLQnVuZGxlQ1NTU3R5bGVEZWNsYXJhdGlvblJlZiBzdHlsZSkKQEAgLTkwLDggKzEx
MywyNyBAQCBzdGF0aWMgb3N0cmVhbSYgb3BlcmF0b3I8PChvc3RyZWFtJiBvdXQsCiAgICAgcmV0
dXJuIG91dDsKIH0KIAorc3RhdGljIG9zdHJlYW0mIG9wZXJhdG9yPDwob3N0cmVhbSYgb3V0LCBX
S0J1bmRsZUZyYW1lUmVmIGZyYW1lKQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBu
YW1lKEFkb3B0V0ssIFdLQnVuZGxlRnJhbWVDb3B5TmFtZShmcmFtZSkpOworICAgIGlmIChXS0J1
bmRsZUZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKSB7CisgICAgICAgIGlmICghV0tTdHJpbmdJc0Vt
cHR5KG5hbWUuZ2V0KCkpKQorICAgICAgICAgICAgb3V0IDw8ICJtYWluIGZyYW1lIFwiIiA8PCBu
YW1lIDw8ICJcIiI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG91dCA8PCAibWFpbiBmcmFt
ZSI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFXS1N0cmluZ0lzRW1wdHkobmFtZS5nZXQo
KSkpCisgICAgICAgICAgICBvdXQgPDwgImZyYW1lIFwiIiA8PCBuYW1lIDw8ICJcIiI7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIG91dCA8PCAiZnJhbWUgKGFub255bW91cykiOworICAgIH0K
KworICAgIHJldHVybiBvdXQ7Cit9CisKIEluamVjdGVkQnVuZGxlUGFnZTo6SW5qZWN0ZWRCdW5k
bGVQYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlKQogICAgIDogbV9wYWdlKHBhZ2UpCisgICAgLCBt
X3dvcmxkKEFkb3B0V0ssIFdLQnVuZGxlU2NyaXB0V29ybGRDcmVhdGVXb3JsZCgpKQogICAgICwg
bV9pc0xvYWRpbmcoZmFsc2UpCiB7CiAgICAgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50IGxvYWRl
ckNsaWVudCA9IHsKQEAgLTI2MSwyNSArMzAzLDYgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6
OmRpZENvbW1pdExvYWRGbwogewogfQogCi1zdGF0aWMgSlNWYWx1ZVJlZiBwcm9wZXJ0eVZhbHVl
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBvYmplY3QsIGNvbnN0IGNoYXIqIHBy
b3BlcnR5TmFtZSkKLXsKLSAgICBpZiAoIW9iamVjdCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHByb3BlcnR5TmFtZVN0cmluZyhBZG9wdCwgSlNTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgSlNWYWx1ZVJlZiBl
eGNlcHRpb247Ci0gICAgcmV0dXJuIEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgb2JqZWN0
LCBwcm9wZXJ0eU5hbWVTdHJpbmcuZ2V0KCksICZleGNlcHRpb24pOwotfQotCi1zdGF0aWMgZG91
YmxlIG51bWVyaWNXaW5kb3dQcm9wZXJ0eVZhbHVlKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIGNv
bnN0IGNoYXIqIHByb3BlcnR5TmFtZSkKLXsKLSAgICBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4
dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4dChmcmFtZSk7Ci0gICAgSlNWYWx1
ZVJlZiB2YWx1ZSA9IHByb3BlcnR5VmFsdWUoY29udGV4dCwgSlNDb250ZXh0R2V0R2xvYmFsT2Jq
ZWN0KGNvbnRleHQpLCBwcm9wZXJ0eU5hbWUpOwotICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJl
dHVybiAwOwotICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uOwotICAgIHJldHVybiBKU1ZhbHVlVG9O
dW1iZXIoY29udGV4dCwgdmFsdWUsICZleGNlcHRpb24pOwotfQotCiBlbnVtIEZyYW1lTmFtZVBv
bGljeSB7IFNob3VsZE5vdEluY2x1ZGVGcmFtZU5hbWUsIFNob3VsZEluY2x1ZGVGcmFtZU5hbWUg
fTsKIAogc3RhdGljIHZvaWQgZHVtcEZyYW1lU2Nyb2xsUG9zaXRpb24oV0tCdW5kbGVGcmFtZVJl
ZiBmcmFtZSwgRnJhbWVOYW1lUG9saWN5IHNob3VsZEluY2x1ZGVGcmFtZU5hbWUgPSBTaG91bGRO
b3RJbmNsdWRlRnJhbWVOYW1lKQpAQCAtNTQ0LDcgKzU2Nyw3IEBAIGJvb2wgSW5qZWN0ZWRCdW5k
bGVQYWdlOjpzaG91bGRFbmRFZGl0aW4KICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5qZWN0ZWRC
dW5kbGVQYWdlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5zaG91bGRFbmRFZGl0
aW5nKHJhbmdlKTsKIH0KIAotYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2U6OnNob3VsZEluc2VydE5v
ZGUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlTm9kZVJlZiBub2RlLCBXS0J1bmRsZVJh
bmdlUmVmIHJhbmdlVG9SZXBsYWNlLCBXS0luc2VydEFjdGlvblR5cGUgYWN0aW9uLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQorYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2U6OnNob3VsZEluc2VydE5v
ZGUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBub2RlLCBXS0J1
bmRsZVJhbmdlUmVmIHJhbmdlVG9SZXBsYWNlLCBXS0luc2VydEFjdGlvblR5cGUgYWN0aW9uLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbmplY3Rl
ZEJ1bmRsZVBhZ2UqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPnNob3VsZEluc2Vy
dE5vZGUobm9kZSwgcmFuZ2VUb1JlcGxhY2UsIGFjdGlvbik7CiB9CkBAIC01OTUsNyArNjE4LDcg
QEAgYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2U6OnNob3VsZEJlZ2luRWRpdAogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAogICAgIGlmIChJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkubGF5b3V0VGVzdENv
bnRyb2xsZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkKLSAgICAgICAgSW5qZWN0
ZWRCdW5kbGU6OnNoYXJlZCgpLm9zKCkgPDwgIkVESVRJTkcgREVMRUdBVEU6IHNob3VsZEJlZ2lu
RWRpdGluZ0luRE9NUmFuZ2U6IiA8PCByYW5nZSA8PCAiXG4iOworICAgICAgICBJbmplY3RlZEJ1
bmRsZTo6c2hhcmVkKCkub3MoKSA8PCAiRURJVElORyBERUxFR0FURTogc2hvdWxkQmVnaW5FZGl0
aW5nSW5ET01SYW5nZToiIDw8IHRvU3RyKG1fcGFnZSwgbV93b3JsZC5nZXQoKSwgcmFuZ2UpIDw8
ICJcbiI7CiAgICAgcmV0dXJuIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5sYXlvdXRUZXN0Q29u
dHJvbGxlcigpLT5zaG91bGRBbGxvd0VkaXRpbmcoKTsKIH0KIApAQCAtNjA1LDExICs2MjgsMTEg
QEAgYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2U6OnNob3VsZEVuZEVkaXRpbgogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAogICAgIGlmIChJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkubGF5b3V0VGVzdENv
bnRyb2xsZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkKLSAgICAgICAgSW5qZWN0
ZWRCdW5kbGU6OnNoYXJlZCgpLm9zKCkgPDwgIkVESVRJTkcgREVMRUdBVEU6IHNob3VsZEVuZEVk
aXRpbmdJbkRPTVJhbmdlOiIgPDwgcmFuZ2UgPDwgIlxuIjsKKyAgICAgICAgSW5qZWN0ZWRCdW5k
bGU6OnNoYXJlZCgpLm9zKCkgPDwgIkVESVRJTkcgREVMRUdBVEU6IHNob3VsZEVuZEVkaXRpbmdJ
bkRPTVJhbmdlOiIgPDwgdG9TdHIobV9wYWdlLCBtX3dvcmxkLmdldCgpLCByYW5nZSkgPDwgIlxu
IjsKICAgICByZXR1cm4gSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmxheW91dFRlc3RDb250cm9s
bGVyKCktPnNob3VsZEFsbG93RWRpdGluZygpOwogfQogCi1ib29sIEluamVjdGVkQnVuZGxlUGFn
ZTo6c2hvdWxkSW5zZXJ0Tm9kZShXS0J1bmRsZU5vZGVSZWYgbm9kZSwgV0tCdW5kbGVSYW5nZVJl
ZiByYW5nZVRvUmVwbGFjZSwgV0tJbnNlcnRBY3Rpb25UeXBlIGFjdGlvbikKK2Jvb2wgSW5qZWN0
ZWRCdW5kbGVQYWdlOjpzaG91bGRJbnNlcnROb2RlKFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBub2Rl
LCBXS0J1bmRsZVJhbmdlUmVmIHJhbmdlVG9SZXBsYWNlLCBXS0luc2VydEFjdGlvblR5cGUgYWN0
aW9uKQogewogICAgIGlmICghSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmlzVGVzdFJ1bm5pbmco
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC02MjEsNyArNjQ0LDcgQEAgYm9vbCBJbmplY3Rl
ZEJ1bmRsZVBhZ2U6OnNob3VsZEluc2VydE5vZAogICAgIH07CiAKICAgICBpZiAoSW5qZWN0ZWRC
dW5kbGU6OnNoYXJlZCgpLmxheW91dFRlc3RDb250cm9sbGVyKCktPnNob3VsZER1bXBFZGl0aW5n
Q2FsbGJhY2tzKCkpCi0gICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5vcygpIDw8ICJF
RElUSU5HIERFTEVHQVRFOiBzaG91bGRJbnNlcnROb2RlOiIgPDwgZHVtcFBhdGgobm9kZSkgPDwg
IiByZXBsYWNpbmdET01SYW5nZToiIDw8IHJhbmdlVG9SZXBsYWNlIDw8ICIgZ2l2ZW5BY3Rpb246
IiA8PCBpbnNlcnRhY3Rpb25zdHJpbmdbYWN0aW9uXSA8PCAiXG4iOworICAgICAgICBJbmplY3Rl
ZEJ1bmRsZTo6c2hhcmVkKCkub3MoKSA8PCAiRURJVElORyBERUxFR0FURTogc2hvdWxkSW5zZXJ0
Tm9kZToiIDw8IGR1bXBQYXRoKG1fcGFnZSwgbV93b3JsZC5nZXQoKSwgbm9kZSkgPDwgIiByZXBs
YWNpbmdET01SYW5nZToiIDw8IHRvU3RyKG1fcGFnZSwgbV93b3JsZC5nZXQoKSwgcmFuZ2VUb1Jl
cGxhY2UpIDw8ICIgZ2l2ZW5BY3Rpb246IiA8PCBpbnNlcnRhY3Rpb25zdHJpbmdbYWN0aW9uXSA8
PCAiXG4iOwogICAgIHJldHVybiBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkubGF5b3V0VGVzdENv
bnRyb2xsZXIoKS0+c2hvdWxkQWxsb3dFZGl0aW5nKCk7CiB9CiAKQEAgLTYzNyw3ICs2NjAsNyBA
QCBib29sIEluamVjdGVkQnVuZGxlUGFnZTo6c2hvdWxkSW5zZXJ0VGV4CiAgICAgfTsKIAogICAg
IGlmIChJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkubGF5b3V0VGVzdENvbnRyb2xsZXIoKS0+c2hv
dWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSkKLSAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJl
ZCgpLm9zKCkgPDwgIkVESVRJTkcgREVMRUdBVEU6IHNob3VsZEluc2VydFRleHQ6IiA8PCB0ZXh0
IDw8ICIgcmVwbGFjaW5nRE9NUmFuZ2U6IiA8PCByYW5nZVRvUmVwbGFjZSA8PCAiIGdpdmVuQWN0
aW9uOiIgPDwgaW5zZXJ0YWN0aW9uc3RyaW5nW2FjdGlvbl0gPDwgIlxuIjsKKyAgICAgICAgSW5q
ZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLm9zKCkgPDwgIkVESVRJTkcgREVMRUdBVEU6IHNob3VsZElu
c2VydFRleHQ6IiA8PCB0ZXh0IDw8ICIgcmVwbGFjaW5nRE9NUmFuZ2U6IiA8PCB0b1N0cihtX3Bh
Z2UsIG1fd29ybGQuZ2V0KCksIHJhbmdlVG9SZXBsYWNlKSA8PCAiIGdpdmVuQWN0aW9uOiIgPDwg
aW5zZXJ0YWN0aW9uc3RyaW5nW2FjdGlvbl0gPDwgIlxuIjsKICAgICByZXR1cm4gSW5qZWN0ZWRC
dW5kbGU6OnNoYXJlZCgpLmxheW91dFRlc3RDb250cm9sbGVyKCktPnNob3VsZEFsbG93RWRpdGlu
ZygpOwogfQogCkBAIC02NDcsNyArNjcwLDcgQEAgYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2U6OnNo
b3VsZERlbGV0ZVJhbgogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChJbmplY3RlZEJ1
bmRsZTo6c2hhcmVkKCkubGF5b3V0VGVzdENvbnRyb2xsZXIoKS0+c2hvdWxkRHVtcEVkaXRpbmdD
YWxsYmFja3MoKSkKLSAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLm9zKCkgPDwgIkVE
SVRJTkcgREVMRUdBVEU6IHNob3VsZERlbGV0ZURPTVJhbmdlOiIgPDwgcmFuZ2UgPDwgIlxuIjsK
KyAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLm9zKCkgPDwgIkVESVRJTkcgREVMRUdB
VEU6IHNob3VsZERlbGV0ZURPTVJhbmdlOiIgPDwgdG9TdHIobV9wYWdlLCBtX3dvcmxkLmdldCgp
LCByYW5nZSkgPDwgIlxuIjsKICAgICByZXR1cm4gSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmxh
eW91dFRlc3RDb250cm9sbGVyKCktPnNob3VsZEFsbG93RWRpdGluZygpOwogfQogCkBAIC02NjYs
NyArNjg5LDcgQEAgYm9vbCBJbmplY3RlZEJ1bmRsZVBhZ2U6OnNob3VsZENoYW5nZVNlbAogICAg
IH07CiAKICAgICBpZiAoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmxheW91dFRlc3RDb250cm9s
bGVyKCktPnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkpCi0gICAgICAgIEluamVjdGVkQnVu
ZGxlOjpzaGFyZWQoKS5vcygpIDw8ICJFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxl
Y3RlZERPTVJhbmdlOiIgPDwgZnJvbVJhbmdlIDw8ICIgdG9ET01SYW5nZToiIDw8IHRvUmFuZ2Ug
PDwgIiBhZmZpbml0eToiIDw8IGFmZmluaXR5c3RyaW5nW2FmZmluaXR5XSA8PCAiIHN0aWxsU2Vs
ZWN0aW5nOiIgPDwgYm9vbHN0cmluZ1tzdGlsbFNlbGVjdGluZ10gPDwgIlxuIjsKKyAgICAgICAg
SW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLm9zKCkgPDwgIkVESVRJTkcgREVMRUdBVEU6IHNob3Vs
ZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6IiA8PCB0b1N0cihtX3BhZ2UsIG1fd29ybGQuZ2V0KCks
IGZyb21SYW5nZSkgPDwgIiB0b0RPTVJhbmdlOiIgPDwgdG9TdHIobV9wYWdlLCBtX3dvcmxkLmdl
dCgpLCB0b1JhbmdlKSA8PCAiIGFmZmluaXR5OiIgPDwgYWZmaW5pdHlzdHJpbmdbYWZmaW5pdHld
IDw8ICIgc3RpbGxTZWxlY3Rpbmc6IiA8PCBib29sc3RyaW5nW3N0aWxsU2VsZWN0aW5nXSA8PCAi
XG4iOwogICAgIHJldHVybiBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkubGF5b3V0VGVzdENvbnRy
b2xsZXIoKS0+c2hvdWxkQWxsb3dFZGl0aW5nKCk7CiB9CiAKQEAgLTY3Niw3ICs2OTksNyBAQCBi
b29sIEluamVjdGVkQnVuZGxlUGFnZTo6c2hvdWxkQXBwbHlTdHlsCiAgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgaWYgKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5sYXlvdXRUZXN0Q29udHJv
bGxlcigpLT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpKQotICAgICAgICBJbmplY3RlZEJ1
bmRsZTo6c2hhcmVkKCkub3MoKSA8PCAiRURJVElORyBERUxFR0FURTogc2hvdWxkQXBwbHlTdHls
ZToiIDw8IHN0eWxlIDw8ICIgdG9FbGVtZW50c0luRE9NUmFuZ2U6IiA8PCByYW5nZSA8PCAiXG4i
OworICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkub3MoKSA8PCAiRURJVElORyBERUxF
R0FURTogc2hvdWxkQXBwbHlTdHlsZToiIDw8IHN0eWxlIDw8ICIgdG9FbGVtZW50c0luRE9NUmFu
Z2U6IiA8PCB0b1N0cihtX3BhZ2UsIG1fd29ybGQuZ2V0KCksIHJhbmdlKSAgPDwgIlxuIjsKICAg
ICByZXR1cm4gSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmxheW91dFRlc3RDb250cm9sbGVyKCkt
PnNob3VsZEFsbG93RWRpdGluZygpOwogfQogCkluZGV4OiBXZWJLaXRUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlLmgJKHJldmlzaW9uIDY3NDc1KQorKysgV2ViS2l0VG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MjcsNiArMjcsOCBAQAogI2RlZmluZSBJbmplY3RlZEJ1bmRsZVBhZ2VfaAogCiAjaW5jbHVkZSA8
V2ViS2l0Mi9XS0J1bmRsZVBhZ2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlU2NyaXB0
V29ybGQuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBX
VFIgewogCkBAIC05MSw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgLy8gRWRpdG9yIGNsaWVudAog
ICAgIHN0YXRpYyBib29sIHNob3VsZEJlZ2luRWRpdGluZyhXS0J1bmRsZVBhZ2VSZWYsIFdLQnVu
ZGxlUmFuZ2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogICAgIHN0YXRpYyBib29sIHNo
b3VsZEVuZEVkaXRpbmcoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZVJhbmdlUmVmLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKTsKLSAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnNlcnROb2RlKFdLQnVu
ZGxlUGFnZVJlZiwgV0tCdW5kbGVOb2RlUmVmLCBXS0J1bmRsZVJhbmdlUmVmIHJhbmdlVG9SZXBs
YWNlLCBXS0luc2VydEFjdGlvblR5cGUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0
YXRpYyBib29sIHNob3VsZEluc2VydE5vZGUoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZU5vZGVI
YW5kbGVSZWYsIFdLQnVuZGxlUmFuZ2VSZWYgcmFuZ2VUb1JlcGxhY2UsIFdLSW5zZXJ0QWN0aW9u
VHlwZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW5z
ZXJ0VGV4dChXS0J1bmRsZVBhZ2VSZWYsIFdLU3RyaW5nUmVmLCBXS0J1bmRsZVJhbmdlUmVmIHJh
bmdlVG9SZXBsYWNlLCBXS0luc2VydEFjdGlvblR5cGUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
OwogICAgIHN0YXRpYyBib29sIHNob3VsZERlbGV0ZVJhbmdlKFdLQnVuZGxlUGFnZVJlZiwgV0tC
dW5kbGVSYW5nZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAgICAgc3RhdGljIGJvb2wg
c2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlUmFuZ2VS
ZWYgZnJvbVJhbmdlLCBXS0J1bmRsZVJhbmdlUmVmIHRvUmFuZ2UsIFdLQWZmaW5pdHlUeXBlLCBi
b29sIHN0aWxsU2VsZWN0aW5nLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKQEAgLTEwMiw3ICsx
MDQsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZVNlbGVjdGlvbihXS0J1
bmRsZVBhZ2VSZWYsIFdLU3RyaW5nUmVmIG5vdGlmaWNhdGlvbk5hbWUsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pOwogICAgIGJvb2wgc2hvdWxkQmVnaW5FZGl0aW5nKFdLQnVuZGxlUmFuZ2VSZWYp
OwogICAgIGJvb2wgc2hvdWxkRW5kRWRpdGluZyhXS0J1bmRsZVJhbmdlUmVmKTsKLSAgICBib29s
IHNob3VsZEluc2VydE5vZGUoV0tCdW5kbGVOb2RlUmVmLCBXS0J1bmRsZVJhbmdlUmVmIHJhbmdl
VG9SZXBsYWNlLCBXS0luc2VydEFjdGlvblR5cGUpOworICAgIGJvb2wgc2hvdWxkSW5zZXJ0Tm9k
ZShXS0J1bmRsZU5vZGVIYW5kbGVSZWYsIFdLQnVuZGxlUmFuZ2VSZWYgcmFuZ2VUb1JlcGxhY2Us
IFdLSW5zZXJ0QWN0aW9uVHlwZSk7CiAgICAgYm9vbCBzaG91bGRJbnNlcnRUZXh0KFdLU3RyaW5n
UmVmLCBXS0J1bmRsZVJhbmdlUmVmIHJhbmdlVG9SZXBsYWNlLCBXS0luc2VydEFjdGlvblR5cGUp
OwogICAgIGJvb2wgc2hvdWxkRGVsZXRlUmFuZ2UoV0tCdW5kbGVSYW5nZVJlZik7CiAgICAgYm9v
bCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFdLQnVuZGxlUmFuZ2VSZWYgZnJvbVJhbmdlLCBX
S0J1bmRsZVJhbmdlUmVmIHRvUmFuZ2UsIFdLQWZmaW5pdHlUeXBlLCBib29sIHN0aWxsU2VsZWN0
aW5nKTsKQEAgLTExNiw2ICsxMTgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZHVtcEFsbEZyYW1l
U2Nyb2xsUG9zaXRpb25zKCk7CiAKICAgICBXS0J1bmRsZVBhZ2VSZWYgbV9wYWdlOworICAgIFdL
UmV0YWluUHRyPFdLQnVuZGxlU2NyaXB0V29ybGRSZWY+IG1fd29ybGQ7CiAgICAgYm9vbCBtX2lz
TG9hZGluZzsKIH07CiAK
</data>
<flag name="review"
          id="56960"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>