<?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>154431</bug_id>
          
          <creation_ts>2016-02-18 17:45:47 -0800</creation_ts>
          <short_desc>AX: Inconsistency between CharacterOffset and VisiblePostition</short_desc>
          <delta_ts>2016-02-19 10:58:33 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nan Wang">n_wang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>mario</cc>
    
    <cc>n_wang</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1166274</commentid>
    <comment_count>0</comment_count>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2016-02-18 17:45:47 -0800</bug_when>
    <thetext>The previous/next text marker from CharacterOffset should be consistent with VisiblePosition so that node start and end will be included when navigating.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166276</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-02-18 17:47:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/24733435&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166281</commentid>
    <comment_count>2</comment_count>
      <attachid>271720</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2016-02-18 18:05:53 -0800</bug_when>
    <thetext>Created attachment 271720
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166359</commentid>
    <comment_count>3</comment_count>
      <attachid>271720</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2016-02-19 00:01:36 -0800</bug_when>
    <thetext>Comment on attachment 271720
patch

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

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:1866
&gt; +        // When VisiblePostion move to next node, it will count the leading line break as

&quot;moves&quot; to the next node

&gt; Source/WebCore/accessibility/AXObjectCache.h:-199
&gt; -    CharacterOffset nextCharacterOffset(const CharacterOffset&amp;, bool ignoreStart = true);

it&apos;s not clear what ignoreStart/ignorePrevEnd means here. can you add a comment or rename this param?
/??</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166419</commentid>
    <comment_count>4</comment_count>
      <attachid>271755</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2016-02-19 08:39:07 -0800</bug_when>
    <thetext>Created attachment 271755
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166468</commentid>
    <comment_count>5</comment_count>
      <attachid>271755</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-19 10:58:29 -0800</bug_when>
    <thetext>Comment on attachment 271755
patch

Clearing flags on attachment: 271755

Committed r196824: &lt;http://trac.webkit.org/changeset/196824&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166469</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-19 10:58:33 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271720</attachid>
            <date>2016-02-18 18:05:53 -0800</date>
            <delta_ts>2016-02-19 08:39:07 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>26897</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5Njc5MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDE2LTAyLTE4ICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEluY29uc2lzdGVuY3kgYmV0d2Vl
biBDaGFyYWN0ZXJPZmZzZXQgYW5kIFZpc2libGVQb3N0aXRpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDQzMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFZvaWNlT3ZlciBpcyBub3QgZ2V0dGluZyB0
aGUgY29ycmVjdCB0ZXh0IG1hcmtlciBmcm9tIFZpc2libGVQb3N0aXRpb24gd2hlbgorICAgICAg
ICBuYXZpZ2F0aW5nIHVzaW5nIGFycm93IGtleXMuIFdlIHNob3VsZCBtYWtlIHRoZSBDaGFyYWN0
ZXJPZmZzZXQgYmVoYXZpb3IgY29uc2lzdGVudAorICAgICAgICB3aXRoIFZpc2libGVQb3NpdGlv
biBzbyB0aGF0IHRoZSBjb252ZXJzaW9uIGJldHdlZW4gdGhlIHR3byB3b24ndCBjcmVhdGUgZGlm
ZmVyZW50CisgICAgICAgIHRleHQgbWFya2Vycy4KKworICAgICAgICBDaGFuZ2VzIGFyZSBjb3Zl
cmVkIGluIHRoZSBtb2RpZmllZCB0ZXN0cy4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpjaGFyYWN0
ZXJPZmZzZXRGb3JUZXh0TWFya2VyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENh
Y2hlOjp0cmF2ZXJzZVRvT2Zmc2V0SW5SYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVj
dENhY2hlOjpzdGFydE9yRW5kQ2hhcmFjdGVyT2Zmc2V0Rm9yUmFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6QVhPYmplY3RDYWNoZTo6c3RhcnRPckVuZFRleHRNYXJrZXJEYXRhRm9yUmFuZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Y2hhcmFjdGVyT2Zmc2V0Rm9yTm9kZUFu
ZE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0
YUZvck5leHRDaGFyYWN0ZXJPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNo
ZTo6dGV4dE1hcmtlckRhdGFGb3JQcmV2aW91c0NoYXJhY3Rlck9mZnNldCk6CisgICAgICAgIChX
ZWJDb3JlOjpBWE9iamVjdENhY2hlOjp2aXNpYmxlUG9zaXRpb25Gcm9tQ2hhcmFjdGVyT2Zmc2V0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmNoYXJhY3Rlck9mZnNldEZyb21W
aXNpYmxlUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6YWNjZXNz
aWJpbGl0eU9iamVjdEZvclRleHRNYXJrZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2Jq
ZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9yVmlzaWJsZVBvc2l0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkFYT2JqZWN0Q2FjaGU6Om5leHRDaGFyYWN0ZXJPZmZzZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6QVhPYmplY3RDYWNoZTo6cHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQpOgorICAgICAgICAo
V2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6c3RhcnRDaGFyYWN0ZXJPZmZzZXRPZldvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6ZW5kQ2hhcmFjdGVyT2Zmc2V0T2ZXb3JkKToK
KyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnByZXZpb3VzV29yZFN0YXJ0Q2hhcmFj
dGVyT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnByZXZpb3VzUGFy
YWdyYXBoU3RhcnRDaGFyYWN0ZXJPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RD
YWNoZTo6cHJldmlvdXNTZW50ZW5jZVN0YXJ0Q2hhcmFjdGVyT2Zmc2V0KToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbToKKyAgICAgICAgKC1bV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgZG9BWEF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2Vy
UmFuZ2U6XSk6CisKIDIwMTYtMDItMTggIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5j
b20+CiAKICAgICAgICAgRXh0ZW5kIEhhc2hDb3VudGVkU2V0IHdpdGggYSBtZXRob2QgdG8gZWZm
aWNpZW50bHkgc2V0IHRoZSBjb3VudCBvZiBhbiBlbnRyeQpJbmRleDogU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCShyZXZpc2lvbiAxOTY2OTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDM2LDExICsxNDM2LDEzIEBAIENoYXJhY3Rlck9mZnNldCBBWE9iamVjdENh
Y2hlOjpjaGFyYWN0ZXIKICAgICByZXR1cm4gQ2hhcmFjdGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRh
Lm5vZGUsIHRleHRNYXJrZXJEYXRhLmNoYXJhY3RlclN0YXJ0SW5kZXgsIHRleHRNYXJrZXJEYXRh
LmNoYXJhY3Rlck9mZnNldCk7CiB9CiAKLUNoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjp0
cmF2ZXJzZVRvT2Zmc2V0SW5SYW5nZShSZWZQdHI8UmFuZ2U+cmFuZ2UsIGludCBvZmZzZXQsIGJv
b2wgdG9Ob2RlRW5kLCBib29sIHN0YXlXaXRoaW5SYW5nZSkKK0NoYXJhY3Rlck9mZnNldCBBWE9i
amVjdENhY2hlOjp0cmF2ZXJzZVRvT2Zmc2V0SW5SYW5nZShSZWZQdHI8UmFuZ2U+cmFuZ2UsIGlu
dCBvZmZzZXQsIFRyYXZlcnNlT3B0aW9uIG9wdGlvbiwgYm9vbCBzdGF5V2l0aGluUmFuZ2UpCiB7
CiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIENoYXJhY3Rlck9mZnNldCgpOwogICAg
IAorICAgIGJvb2wgdG9Ob2RlRW5kID0gb3B0aW9uICYgVHJhdmVyc2VPcHRpb25Ub05vZGVFbmQ7
CisgICAgCiAgICAgaW50IG9mZnNldEluQ2hhcmFjdGVyID0gMDsKICAgICBpbnQgb2Zmc2V0U29G
YXIgPSAwOwogICAgIGludCByZW1haW5pbmcgPSAwOwpAQCAtMTQ2NCw3ICsxNDY2LDcgQEAgQ2hh
cmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OnRyYXZlcnNlVAogICAgICAgICAgICAgLy8gSGVy
ZSB3aGVuIHdlIGRvbid0IGhhdmUgYW55IGNoYXJhY3RlciB0byBtb3ZlIGFuZCB3ZSBhcmUgZ29p
bmcgYmFja3dhcmRzLCB3ZSB0cmF2ZXJzZSB0byB0aGUgcHJldmlvdXMgbm9kZS4KICAgICAgICAg
ICAgIGlmICghbGFzdExlbmd0aCAmJiB0b05vZGVFbmQgJiYgIXN0YXlXaXRoaW5SYW5nZSkgewog
ICAgICAgICAgICAgICAgIGlmIChOb2RlKiBwcmVOb2RlID0gcHJldmlvdXNOb2RlKGN1cnJlbnRO
b2RlKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyYXZlcnNlVG9PZmZzZXRJblJhbmdl
KHJhbmdlRm9yTm9kZUNvbnRlbnRzKHByZU5vZGUpLCBvZmZzZXQsIHRvTm9kZUVuZCk7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzZVRvT2Zmc2V0SW5SYW5nZShyYW5nZUZvck5v
ZGVDb250ZW50cyhwcmVOb2RlKSwgb2Zmc2V0LCBvcHRpb24pOwogICAgICAgICAgICAgICAgIHJl
dHVybiBDaGFyYWN0ZXJPZmZzZXQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTUw
MSw4ICsxNTAzLDExIEBAIENoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjp0cmF2ZXJzZVQK
ICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZSAmJiBjaGlsZE5vZGUtPnJlbmRlcmVy
KCkgJiYgY2hpbGROb2RlLT5yZW5kZXJlcigpLT5pc0JSKCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGN1cnJlbnROb2RlID0gY2hpbGROb2RlOwogICAgICAgICAgICAgICAgICAgICAgICAg
aGFzUmVwbGFjZWROb2RlT3JCUiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoY3VycmVudE5vZGUgIT0gcHJldmlvdXNOb2RlKQorICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKGN1cnJlbnROb2RlICE9IHByZXZpb3VzTm9kZSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gV2Ugc2hvdWxkIHNldCB0aGUgY3VycmVudE5vZGUgdG8gcHJldmlvdXMgb25lIGlu
IGNhc2UgdGhpcyBpcyB0aGUgbGFzdCBpdGVyYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAg
ICBjdXJyZW50Tm9kZSA9IHByZXZpb3VzTm9kZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgb2Zmc2V0U29GYXIgKz0gY3VycmVudExlbmd0aDsKQEAgLTE2
OTcsMTIgKzE3MDIsMTIgQEAgQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OnN0YXJ0T3JF
bgogICAgIE5vZGUqIG5vZGUgPSAmY29weVJhbmdlLT5zdGFydENvbnRhaW5lcigpOwogICAgIGlm
IChub2RlLT5vZmZzZXRJbkNoYXJhY3RlcnMoKSkgewogICAgICAgICBjb3B5UmFuZ2UgPSBSYW5n
ZTo6Y3JlYXRlKHJhbmdlLT5vd25lckRvY3VtZW50KCksICZyYW5nZS0+c3RhcnRDb250YWluZXIo
KSwgcmFuZ2UtPnN0YXJ0T2Zmc2V0KCksICZyYW5nZS0+ZW5kQ29udGFpbmVyKCksIHJhbmdlLT5l
bmRPZmZzZXQoKSk7Ci0gICAgICAgIENoYXJhY3Rlck9mZnNldCBub2RlU3RhcnRPZmZzZXQgPSB0
cmF2ZXJzZVRvT2Zmc2V0SW5SYW5nZShyYW5nZUZvck5vZGVDb250ZW50cyhub2RlKSwgMCwgZmFs
c2UpOworICAgICAgICBDaGFyYWN0ZXJPZmZzZXQgbm9kZVN0YXJ0T2Zmc2V0ID0gdHJhdmVyc2VU
b09mZnNldEluUmFuZ2UocmFuZ2VGb3JOb2RlQ29udGVudHMobm9kZSksIDApOwogICAgICAgICBv
ZmZzZXQgPSBzdGQ6Om1heChjb3B5UmFuZ2UtPnN0YXJ0T2Zmc2V0KCkgLSBub2RlU3RhcnRPZmZz
ZXQuc3RhcnRJbmRleCwgMCk7CiAgICAgICAgIGNvcHlSYW5nZS0+c2V0U3RhcnQobm9kZSwgbm9k
ZVN0YXJ0T2Zmc2V0LnN0YXJ0SW5kZXgpOwogICAgIH0KICAgICAKLSAgICByZXR1cm4gdHJhdmVy
c2VUb09mZnNldEluUmFuZ2UoY29weVJhbmdlLCBvZmZzZXQsICFpc1N0YXJ0LCBzdGF5V2l0aGlu
UmFuZ2UpOworICAgIHJldHVybiB0cmF2ZXJzZVRvT2Zmc2V0SW5SYW5nZShjb3B5UmFuZ2UsIG9m
ZnNldCwgaXNTdGFydCA/IFRyYXZlcnNlT3B0aW9uRGVmYXVsdCA6IFRyYXZlcnNlT3B0aW9uVG9O
b2RlRW5kLCBzdGF5V2l0aGluUmFuZ2UpOwogfQogCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OnN0YXJ0
T3JFbmRUZXh0TWFya2VyRGF0YUZvclJhbmdlKFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFya2VyRGF0
YSwgUmVmUHRyPFJhbmdlPiByYW5nZSwgYm9vbCBpc1N0YXJ0KQpAQCAtMTc1MCwxMyArMTc1NSwx
MyBAQCBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6Y2hhcmFjdGVyCiAKICAgICAvLyBU
cmF2ZXJzZSB0aGUgb2Zmc2V0IGFtb3VudCBvZiBjaGFyYWN0ZXJzIGZvcndhcmQgYW5kIHNlZSBp
ZiB0aGVyZSdzIHJlbWFpbmluZyBvZmZzZXRzLgogICAgIC8vIEtlZXAgdHJhdmVyc2luZyB0byB0
aGUgbmV4dCBub2RlIHdoZW4gdGhlcmUncyByZW1haW5pbmcgb2Zmc2V0cy4KLSAgICBDaGFyYWN0
ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0ID0gdHJhdmVyc2VUb09mZnNldEluUmFuZ2UocmFuZ2Us
IG9mZnNldCwgdG9Ob2RlRW5kKTsKKyAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0
ID0gdHJhdmVyc2VUb09mZnNldEluUmFuZ2UocmFuZ2UsIG9mZnNldCwgb3B0aW9uKTsKICAgICB3
aGlsZSAoIWNoYXJhY3Rlck9mZnNldC5pc051bGwoKSAmJiBjaGFyYWN0ZXJPZmZzZXQucmVtYWlu
aW5nKCkgJiYgIXRvTm9kZUVuZCkgewogICAgICAgICBkb21Ob2RlID0gbmV4dE5vZGUoZG9tTm9k
ZSk7CiAgICAgICAgIGlmICghZG9tTm9kZSkKICAgICAgICAgICAgIHJldHVybiBDaGFyYWN0ZXJP
ZmZzZXQoKTsKICAgICAgICAgcmFuZ2UgPSByYW5nZUZvck5vZGVDb250ZW50cyhkb21Ob2RlKTsK
LSAgICAgICAgY2hhcmFjdGVyT2Zmc2V0ID0gdHJhdmVyc2VUb09mZnNldEluUmFuZ2UocmFuZ2Us
IGNoYXJhY3Rlck9mZnNldC5yZW1haW5pbmcoKSwgdG9Ob2RlRW5kKTsKKyAgICAgICAgY2hhcmFj
dGVyT2Zmc2V0ID0gdHJhdmVyc2VUb09mZnNldEluUmFuZ2UocmFuZ2UsIGNoYXJhY3Rlck9mZnNl
dC5yZW1haW5pbmcoKSwgb3B0aW9uKTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIGNoYXJhY3Rl
ck9mZnNldDsKQEAgLTE3NzIsNyArMTc3Nyw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6dGV4dE1h
cmtlckRhdGFGb3JOZXgKIHsKICAgICBDaGFyYWN0ZXJPZmZzZXQgbmV4dCA9IGNoYXJhY3Rlck9m
ZnNldDsKICAgICBkbyB7Ci0gICAgICAgIG5leHQgPSBuZXh0Q2hhcmFjdGVyT2Zmc2V0KG5leHQp
OworICAgICAgICBuZXh0ID0gbmV4dENoYXJhY3Rlck9mZnNldChuZXh0LCBmYWxzZSk7CiAgICAg
ICAgIHRleHRNYXJrZXJEYXRhRm9yQ2hhcmFjdGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBuZXh0
KTsKICAgICB9IHdoaWxlICh0ZXh0TWFya2VyRGF0YS5pZ25vcmVkKTsKIH0KQEAgLTE3ODEsNyAr
MTc4Niw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JQcmUKIHsKICAg
ICBDaGFyYWN0ZXJPZmZzZXQgcHJldmlvdXMgPSBjaGFyYWN0ZXJPZmZzZXQ7CiAgICAgZG8gewot
ICAgICAgICBwcmV2aW91cyA9IHByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KHByZXZpb3VzKTsKKyAg
ICAgICAgcHJldmlvdXMgPSBwcmV2aW91c0NoYXJhY3Rlck9mZnNldChwcmV2aW91cywgZmFsc2Up
OwogICAgICAgICB0ZXh0TWFya2VyRGF0YUZvckNoYXJhY3Rlck9mZnNldCh0ZXh0TWFya2VyRGF0
YSwgcHJldmlvdXMpOwogICAgIH0gd2hpbGUgKHRleHRNYXJrZXJEYXRhLmlnbm9yZWQpOwogfQpA
QCAtMTgxOCw4ICsxODIzLDExIEBAIFZpc2libGVQb3NpdGlvbiBBWE9iamVjdENhY2hlOjp2aXNp
YmxlUG8KICAgICAvLyBuZXh0VmlzaWJsZVBvc2l0aW9uIG1lYW5zIGFkdmFuY2luZyBvbmUgY2hh
cmFjdGVyLiBVc2UgdGhpcyB0byBjYWxjdWxhdGUgdGhlIGNoYXJhY3RlciBvZmZzZXQuCiAgICAg
VmlzaWJsZVBvc2l0aW9uUmFuZ2UgdnBSYW5nZSA9IG9iai0+dmlzaWJsZVBvc2l0aW9uUmFuZ2Uo
KTsKICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQgPSB2cFJhbmdlLnN0YXJ0OworICAgIAorICAg
IC8vIFNvbWV0aW1lcyB2cFJhbmdlLnN0YXJ0IHdpbGwgYmUgdGhlIHByZXZpb3VzIG5vZGUncyBl
bmQgcG9zaXRpb24gYW5kIFZpc2libGVQb3NpdGlvbiB3aWxsIGNvdW50IHRoZSBsZWFkaW5nIGxp
bmUgYnJlYWsgYXMgMSBvZmZzZXQuCisgICAgaW50IGNoYXJhY3RlckNvdW50ID0gc3RhcnQuZGVl
cEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgpID09IGNoYXJhY3Rlck9mZnNldC5ub2RlID8g
Y2hhcmFjdGVyT2Zmc2V0Lm9mZnNldCA6IGNoYXJhY3Rlck9mZnNldC5vZmZzZXQgKyBjaGFyYWN0
ZXJPZmZzZXQuc3RhcnRJbmRleDsKICAgICBWaXNpYmxlUG9zaXRpb24gcmVzdWx0ID0gc3RhcnQ7
Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjaGFyYWN0ZXJPZmZzZXQub2Zmc2V0OyBpKyspCisg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjaGFyYWN0ZXJDb3VudDsgaSsrKQogICAgICAgICByZXN1
bHQgPSBvYmotPm5leHRWaXNpYmxlUG9zaXRpb24ocmVzdWx0KTsKICAgICAKICAgICByZXR1cm4g
cmVzdWx0OwpAQCAtMTg1NCw5ICsxODYyLDE2IEBAIENoYXJhY3Rlck9mZnNldCBBWE9iamVjdENh
Y2hlOjpjaGFyYWN0ZXIKICAgICAgICAgaWYgKHZwRGVlcFBvcy5lcXVhbHMocHJldmlvdXNWaXNp
YmxlUG9zLmRlZXBFcXVpdmFsZW50KCkpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNo
YXJhY3Rlck9mZnNldCsrOworICAgICAgICAKKyAgICAgICAgLy8gV2hlbiBWaXNpYmxlUG9zdGlv
biBtb3ZlIHRvIG5leHQgbm9kZSwgaXQgd2lsbCBjb3VudCB0aGUgbGVhZGluZyBsaW5lIGJyZWFr
IGFzCisgICAgICAgIC8vIDEgb2Zmc2V0LCB3aGljaCB3ZSBzaG91bGRuJ3QgaW5jbHVkZSBpbiBD
aGFyYWN0ZXJPZmZzZXQuCisgICAgICAgIGlmICh2cERlZXBQb3MuZGVwcmVjYXRlZE5vZGUoKSAh
PSBwcmV2aW91c1Zpc2libGVQb3MuZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgpKSB7
CisgICAgICAgICAgICBpZiAodnAuY2hhcmFjdGVyQmVmb3JlKCkgPT0gJ1xuJykKKyAgICAgICAg
ICAgICAgICBjaGFyYWN0ZXJPZmZzZXQtLTsKKyAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBy
ZXR1cm4gdHJhdmVyc2VUb09mZnNldEluUmFuZ2UocmFuZ2VGb3JOb2RlQ29udGVudHMob2JqLT5u
b2RlKCkpLCBjaGFyYWN0ZXJPZmZzZXQsIGZhbHNlKTsKKyAgICByZXR1cm4gdHJhdmVyc2VUb09m
ZnNldEluUmFuZ2UocmFuZ2VGb3JOb2RlQ29udGVudHMob2JqLT5ub2RlKCkpLCBjaGFyYWN0ZXJP
ZmZzZXQpOwogfQogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjphY2Nlc3Np
YmlsaXR5T2JqZWN0Rm9yVGV4dE1hcmtlckRhdGEoVGV4dE1hcmtlckRhdGEmIHRleHRNYXJrZXJE
YXRhKQpAQCAtMTkwMywyMCArMTkxOCwzMCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJr
ZXJEYXRhRm9yVmlzCiAgICAgY2FjaGUtPnNldE5vZGVJblVzZShkb21Ob2RlKTsKIH0KIAotQ2hh
cmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6Om5leHRDaGFyYWN0ZXJPZmZzZXQoY29uc3QgQ2hh
cmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQsIGJvb2wgaWdub3JlU3RhcnQpCitDaGFyYWN0
ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6bmV4dENoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0
ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCwgYm9vbCBpZ25vcmVOZXh0U3RhcnQpCiB7CiAgICAg
aWYgKGNoYXJhY3Rlck9mZnNldC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIENoYXJhY3Rlck9m
ZnNldCgpOwogICAgIAotICAgIHJldHVybiBjaGFyYWN0ZXJPZmZzZXRGb3JOb2RlQW5kT2Zmc2V0
KCpjaGFyYWN0ZXJPZmZzZXQubm9kZSwgY2hhcmFjdGVyT2Zmc2V0Lm9mZnNldCArIDEsIGlnbm9y
ZVN0YXJ0ID8gVHJhdmVyc2VPcHRpb25EZWZhdWx0IDogVHJhdmVyc2VPcHRpb25JbmNsdWRlU3Rh
cnQpOworICAgIENoYXJhY3Rlck9mZnNldCBuZXh0ID0gY2hhcmFjdGVyT2Zmc2V0Rm9yTm9kZUFu
ZE9mZnNldCgqY2hhcmFjdGVyT2Zmc2V0Lm5vZGUsIGNoYXJhY3Rlck9mZnNldC5vZmZzZXQgKyAx
KTsKKyAgICAvLyBUbyBiZSBjb25zaXN0ZW50IHdpdGggVmlzaWJsZVBvc2l0aW9uLCB3ZSBzaG91
bGQgY29uc2lkZXIgdGhlIGNhc2UgdGhhdCBub2RlIGVuZCB0byBuZXh0IG5vZGUgc3RhcnQgY291
bnRzIDEgb2Zmc2V0LgorICAgIGJvb2wgaXNSZXBsYWNlZE9yQlIgPSBpc1JlcGxhY2VkTm9kZU9y
QlIoY2hhcmFjdGVyT2Zmc2V0Lm5vZGUpIHx8IGlzUmVwbGFjZWROb2RlT3JCUihuZXh0Lm5vZGUp
OworICAgIGlmICghaWdub3JlTmV4dFN0YXJ0ICYmICFuZXh0LmlzTnVsbCgpICYmICFpc1JlcGxh
Y2VkT3JCUiAmJiBuZXh0Lm5vZGUgIT0gY2hhcmFjdGVyT2Zmc2V0Lm5vZGUpCisgICAgICAgIG5l
eHQgPSBjaGFyYWN0ZXJPZmZzZXRGb3JOb2RlQW5kT2Zmc2V0KCpuZXh0Lm5vZGUsIDAsIFRyYXZl
cnNlT3B0aW9uSW5jbHVkZVN0YXJ0KTsKKyAgICAKKyAgICByZXR1cm4gbmV4dDsKIH0KIAotQ2hh
cmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OnByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KGNvbnN0
IENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0LCBib29sIGlnbm9yZVN0YXJ0KQorQ2hh
cmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OnByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KGNvbnN0
IENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0LCBib29sIGlnbm9yZVByZXZpb3VzRW5k
KQogewogICAgIGlmIChjaGFyYWN0ZXJPZmZzZXQuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBD
aGFyYWN0ZXJPZmZzZXQoKTsKICAgICAKLSAgICByZXR1cm4gY2hhcmFjdGVyT2Zmc2V0Rm9yTm9k
ZUFuZE9mZnNldCgqY2hhcmFjdGVyT2Zmc2V0Lm5vZGUsIGNoYXJhY3Rlck9mZnNldC5vZmZzZXQg
LSAxLCBpZ25vcmVTdGFydCA/IFRyYXZlcnNlT3B0aW9uRGVmYXVsdCA6IFRyYXZlcnNlT3B0aW9u
SW5jbHVkZVN0YXJ0KTsKKyAgICAvLyBUbyBiZSBjb25zaXN0ZW50IHdpdGggVmlzaWJsZVBvc2l0
aW9uLCB3ZSBzaG91bGQgY29uc2lkZXIgdGhlIGNhc2UgdGhhdCBub2RlIHN0YXJ0IHRvIHByZXZp
b3VzIG5vZGUgZW5kIGNvdW50cyAxIG9mZnNldC4KKyAgICBpZiAoIWlnbm9yZVByZXZpb3VzRW5k
ICYmICFjaGFyYWN0ZXJPZmZzZXQub2Zmc2V0KQorICAgICAgICByZXR1cm4gY2hhcmFjdGVyT2Zm
c2V0Rm9yTm9kZUFuZE9mZnNldCgqY2hhcmFjdGVyT2Zmc2V0Lm5vZGUsIDApOworICAgIAorICAg
IHJldHVybiBjaGFyYWN0ZXJPZmZzZXRGb3JOb2RlQW5kT2Zmc2V0KCpjaGFyYWN0ZXJPZmZzZXQu
bm9kZSwgY2hhcmFjdGVyT2Zmc2V0Lm9mZnNldCAtIDEsIFRyYXZlcnNlT3B0aW9uSW5jbHVkZVN0
YXJ0KTsKIH0KIAogQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OnN0YXJ0Q2hhcmFjdGVy
T2Zmc2V0T2ZXb3JkKGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0LCBFV29y
ZFNpZGUgc2lkZSkKQEAgLTE5NDksOSArMTk3NCwxMyBAQCBDaGFyYWN0ZXJPZmZzZXQgQVhPYmpl
Y3RDYWNoZTo6ZW5kQ2hhcmFjCiAgICAgICAgIGlmIChjLmlzRXF1YWwoc3RhcnRPZlBhcmFncmFw
aCkpCiAgICAgICAgICAgICByZXR1cm4gYzsKICAgICAgICAgCi0gICAgICAgIGMgPSBwcmV2aW91
c0NoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQsIGZhbHNlKTsKKyAgICAgICAgYyA9IHBy
ZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rlck9mZnNldCk7CiAgICAgICAgIGlmIChjLmlz
TnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuIGNoYXJhY3Rlck9mZnNldDsKKyAgICB9IGVsc2Ug
eworICAgICAgICBDaGFyYWN0ZXJPZmZzZXQgZW5kT2ZQYXJhZ3JhcGggPSBlbmRDaGFyYWN0ZXJP
ZmZzZXRPZlBhcmFncmFwaChjaGFyYWN0ZXJPZmZzZXQpOworICAgICAgICBpZiAoY2hhcmFjdGVy
T2Zmc2V0LmlzRXF1YWwoZW5kT2ZQYXJhZ3JhcGgpKQorICAgICAgICAgICAgcmV0dXJuIGNoYXJh
Y3Rlck9mZnNldDsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIG5leHRCb3VuZGFyeShjLCBlbmRX
b3JkQm91bmRhcnkpOwpAQCAtMTk2Miw3ICsxOTkxLDcgQEAgQ2hhcmFjdGVyT2Zmc2V0IEFYT2Jq
ZWN0Q2FjaGU6OnByZXZpb3VzVwogICAgIGlmIChjaGFyYWN0ZXJPZmZzZXQuaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybiBDaGFyYWN0ZXJPZmZzZXQoKTsKICAgICAKLSAgICBDaGFyYWN0ZXJPZmZz
ZXQgcHJldmlvdXNPZmZzZXQgPSBwcmV2aW91c0NoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZz
ZXQsIGZhbHNlKTsKKyAgICBDaGFyYWN0ZXJPZmZzZXQgcHJldmlvdXNPZmZzZXQgPSBwcmV2aW91
c0NoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpOwogICAgIGlmIChwcmV2aW91c09mZnNl
dC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIENoYXJhY3Rlck9mZnNldCgpOwogICAgIApAQCAt
MjIwNywxMSArMjIzNiwxMSBAQCBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6bmV4dFBh
cmFnCiBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6cHJldmlvdXNQYXJhZ3JhcGhTdGFy
dENoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkK
IHsKICAgICAvLyBtYWtlIHN1cmUgd2UgbW92ZSBvZmYgb2YgYSBwYXJhZ3JhcGggc3RhcnQKLSAg
ICBDaGFyYWN0ZXJPZmZzZXQgcHJldmlvdXMgPSBwcmV2aW91c0NoYXJhY3Rlck9mZnNldChjaGFy
YWN0ZXJPZmZzZXQsIGZhbHNlKTsKKyAgICBDaGFyYWN0ZXJPZmZzZXQgcHJldmlvdXMgPSBwcmV2
aW91c0NoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpOwogICAgIAogICAgIC8vIFdlIHNo
b3VsZCBza2lwIHRoZSBwcmVjZWRpbmcgQlIgbm9kZS4KICAgICBpZiAoY2hhcmFjdGVyT2Zmc2V0
Tm9kZUlzQlIocHJldmlvdXMpICYmICFjaGFyYWN0ZXJPZmZzZXROb2RlSXNCUihjaGFyYWN0ZXJP
ZmZzZXQpKQotICAgICAgICBwcmV2aW91cyA9IHByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KHByZXZp
b3VzLCBmYWxzZSk7CisgICAgICAgIHByZXZpb3VzID0gcHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQo
cHJldmlvdXMpOwogICAgIAogICAgIHJldHVybiBzdGFydENoYXJhY3Rlck9mZnNldE9mUGFyYWdy
YXBoKHByZXZpb3VzKTsKIH0KQEAgLTIyNDIsMTEgKzIyNzEsMTEgQEAgQ2hhcmFjdGVyT2Zmc2V0
IEFYT2JqZWN0Q2FjaGU6Om5leHRTZW50ZQogQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6
OnByZXZpb3VzU2VudGVuY2VTdGFydENoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZz
ZXQmIGNoYXJhY3Rlck9mZnNldCkKIHsKICAgICAvLyBNYWtlIHN1cmUgd2UgbW92ZSBvZmYgb2Yg
YSBzZW50ZW5jZSBzdGFydC4KLSAgICBDaGFyYWN0ZXJPZmZzZXQgcHJldmlvdXMgPSBwcmV2aW91
c0NoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQsIGZhbHNlKTsKKyAgICBDaGFyYWN0ZXJP
ZmZzZXQgcHJldmlvdXMgPSBwcmV2aW91c0NoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQp
OwogICAgIAogICAgIC8vIFdlIHNob3VsZCBza2lwIHRoZSBwcmVjZWRpbmcgQlIgbm9kZS4KLSAg
ICBpZiAoIXByZXZpb3VzLmlzTnVsbCgpICYmIHByZXZpb3VzLm5vZGUtPmhhc1RhZ05hbWUoYnJU
YWcpICYmICFjaGFyYWN0ZXJPZmZzZXQubm9kZS0+aGFzVGFnTmFtZShiclRhZykpCi0gICAgICAg
IHByZXZpb3VzID0gcHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQocHJldmlvdXMsIGZhbHNlKTsKKyAg
ICBpZiAoY2hhcmFjdGVyT2Zmc2V0Tm9kZUlzQlIocHJldmlvdXMpICYmICFjaGFyYWN0ZXJPZmZz
ZXROb2RlSXNCUihjaGFyYWN0ZXJPZmZzZXQpKQorICAgICAgICBwcmV2aW91cyA9IHByZXZpb3Vz
Q2hhcmFjdGVyT2Zmc2V0KHByZXZpb3VzKTsKICAgICAKICAgICByZXR1cm4gc3RhcnRDaGFyYWN0
ZXJPZmZzZXRPZlNlbnRlbmNlKHByZXZpb3VzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCShyZXZpc2lvbiAxOTY2OTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMTk2LDggKzE5Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHRleHRNYXJrZXJEYXRhRm9yUHJl
dmlvdXNDaGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmLCBjb25zdCBDaGFyYWN0ZXJPZmZz
ZXQmKTsKICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlckRh
dGEoVGV4dE1hcmtlckRhdGEmKTsKICAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0
Rm9yVGV4dE1hcmtlckRhdGEoVGV4dE1hcmtlckRhdGEmKTsKLSAgICBDaGFyYWN0ZXJPZmZzZXQg
bmV4dENoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmLCBib29sIGlnbm9yZVN0
YXJ0ID0gdHJ1ZSk7Ci0gICAgQ2hhcmFjdGVyT2Zmc2V0IHByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0
KGNvbnN0IENoYXJhY3Rlck9mZnNldCYsIGJvb2wgaWdub3JlU3RhcnQgPSB0cnVlKTsKKyAgICBD
aGFyYWN0ZXJPZmZzZXQgbmV4dENoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQm
LCBib29sIGlnbm9yZU5leHRTdGFydCA9IHRydWUpOworICAgIENoYXJhY3Rlck9mZnNldCBwcmV2
aW91c0NoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmLCBib29sIGlnbm9yZVBy
ZXZpb3VzRW5kID0gdHJ1ZSk7CiAgICAgdm9pZCBzdGFydE9yRW5kVGV4dE1hcmtlckRhdGFGb3JS
YW5nZShUZXh0TWFya2VyRGF0YSYsIFJlZlB0cjxSYW5nZT4sIGJvb2wpOwogICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGFjY2Vzc2liaWxpdHlPYmplY3RGb3JUZXh0TWFya2VyRGF0YShUZXh0TWFy
a2VyRGF0YSYpOwogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2VGb3JVbm9yZGVyZWRDaGFyYWN0ZXJP
ZmZzZXRzKGNvbnN0IENoYXJhY3Rlck9mZnNldCYsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOwpA
QCAtMzE0LDcgKzMxNCw3IEBAIHByb3RlY3RlZDoKICAgICBlbnVtIFRyYXZlcnNlT3B0aW9uIHsg
VHJhdmVyc2VPcHRpb25EZWZhdWx0ID0gMSA8PCAwLCBUcmF2ZXJzZU9wdGlvblRvTm9kZUVuZCA9
IDEgPDwgMSwgVHJhdmVyc2VPcHRpb25JbmNsdWRlU3RhcnQgPSAxIDw8IDIgfTsKICAgICBOb2Rl
KiBuZXh0Tm9kZShOb2RlKikgY29uc3Q7CiAgICAgTm9kZSogcHJldmlvdXNOb2RlKE5vZGUqKSBj
b25zdDsKLSAgICBDaGFyYWN0ZXJPZmZzZXQgdHJhdmVyc2VUb09mZnNldEluUmFuZ2UoUmVmUHRy
PFJhbmdlPiwgaW50LCBib29sLCBib29sIHN0YXlXaXRoaW5SYW5nZSA9IGZhbHNlKTsKKyAgICBD
aGFyYWN0ZXJPZmZzZXQgdHJhdmVyc2VUb09mZnNldEluUmFuZ2UoUmVmUHRyPFJhbmdlPiwgaW50
LCBUcmF2ZXJzZU9wdGlvbiA9IFRyYXZlcnNlT3B0aW9uRGVmYXVsdCwgYm9vbCBzdGF5V2l0aGlu
UmFuZ2UgPSBmYWxzZSk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZyb21D
aGFyYWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CiAgICAgQ2hhcmFjdGVyT2Zm
c2V0IGNoYXJhY3Rlck9mZnNldEZyb21WaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0
aW9uJik7CiAgICAgdm9pZCBzZXRUZXh0TWFya2VyRGF0YVdpdGhDaGFyYWN0ZXJPZmZzZXQoVGV4
dE1hcmtlckRhdGEmLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCShyZXZpc2lvbiAxOTY2OTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTI5MywxOSArMTI5Myw5IEBAIC0gKE5TQXR0cmlidXRl
ZFN0cmluZyopZG9BWEF0dHJpYnV0ZWRTdHIKICAgICBpZiAoIW1fb2JqZWN0KQogICAgICAgICBy
ZXR1cm4gbmlsOwogICAgIAotICAgIC8vIGV4dHJhY3QgdGhlIHN0YXJ0IGFuZCBlbmQgVmlzaWJs
ZVBvc2l0aW9uCi0gICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0VmlzaWJsZVBvc2l0aW9uID0gdmlz
aWJsZVBvc2l0aW9uRm9yU3RhcnRPZlRleHRNYXJrZXJSYW5nZShtX29iamVjdC0+YXhPYmplY3RD
YWNoZSgpLCB0ZXh0TWFya2VyUmFuZ2UpOwotICAgIGlmIChzdGFydFZpc2libGVQb3NpdGlvbi5p
c051bGwoKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBWaXNpYmxlUG9zaXRpb24g
ZW5kVmlzaWJsZVBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uRm9yRW5kT2ZUZXh0TWFya2VyUmFu
Z2UobV9vYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgdGV4dE1hcmtlclJhbmdlKTsKLSAgICBpZiAo
ZW5kVmlzaWJsZVBvc2l0aW9uLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAot
ICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlKHN0YXJ0VmlzaWJs
ZVBvc2l0aW9uLCBlbmRWaXNpYmxlUG9zaXRpb24pOwotICAgIC8vIGl0ZXJhdGUgb3ZlciB0aGUg
cmFuZ2UgdG8gYnVpbGQgdGhlIEFYIGF0dHJpYnV0ZWQgc3RyaW5nCisgICAgUmVmUHRyPFJhbmdl
PiByYW5nZSA9IFtzZWxmIHJhbmdlRm9yVGV4dE1hcmtlclJhbmdlOnRleHRNYXJrZXJSYW5nZV07
CiAgICAgTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZyA9IFtbTlNNdXRhYmxl
QXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdF07Ci0gICAgVGV4dEl0ZXJhdG9yIGl0KG1ha2VS
YW5nZShzdGFydFZpc2libGVQb3NpdGlvbiwgZW5kVmlzaWJsZVBvc2l0aW9uKS5nZXQoKSk7Cisg
ICAgVGV4dEl0ZXJhdG9yIGl0KHJhbmdlLmdldCgpKTsKICAgICB3aGlsZSAoIWl0LmF0RW5kKCkp
IHsKICAgICAgICAgLy8gbG9jYXRlIHRoZSBub2RlIGFuZCBzdGFydGluZyBvZmZzZXQgZm9yIHRo
aXMgcmFuZ2UKICAgICAgICAgTm9kZSYgbm9kZSA9IGl0LnJhbmdlKCktPnN0YXJ0Q29udGFpbmVy
KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTY2OTkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0wMi0xOCAgTmFuIFdhbmcgIDxu
X3dhbmdAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBJbmNvbnNpc3RlbmN5IGJldHdlZW4gQ2hh
cmFjdGVyT2Zmc2V0IGFuZCBWaXNpYmxlUG9zdGl0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ0MzEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL3RleHQtbWFya2Vy
LXdvcmQtbmF2LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy90ZXh0
LW1hcmtlci13b3JkLW5hdi5odG1sOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvdGV4dC1tYXJr
ZXIvdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC5odG1sOgorCiAyMDE2LTAyLTE3ICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IEltcGxlbWVudCBzZW50ZW5jZSBy
ZWxhdGVkIHRleHQgbWFya2VyIGZ1bmN0aW9ucyB1c2luZyBUZXh0SXRlcmF0b3IKSW5kZXg6IExh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHQtbWFya2VyLXdvcmQtbmF2LWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0LW1h
cmtlci13b3JkLW5hdi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE5NjY5OSkKKysrIExheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHQtbWFya2VyLXdvcmQtbmF2LWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMTksNiArMTksMTEgQEAgTGVmdCB3b3JkIGlzOiB3b3JkMQogUmln
aHQgd29yZCBpczogd29yZDEKIFByZSB3b3JkIHN0YXJ0IHRvIG5leHQgd29yZCBlbmQ6IHdvcmQx
CiAKK0N1cnJlbnQgY2hhcmFjdGVyIGlzOiB0CitMZWZ0IHdvcmQgaXM6IHRlc3QKK1JpZ2h0IHdv
cmQgaXM6IAorUHJlIHdvcmQgc3RhcnQgdG8gbmV4dCB3b3JkIGVuZDogdGVzdCdsaW5lIGJyZWFr
J1RoaXNpc2xvbmd3b3JkCisKIEN1cnJlbnQgY2hhcmFjdGVyIGlzOiBUCiBMZWZ0IHdvcmQgaXM6
IFRoaXNpc2xvbmd3b3JkCiBSaWdodCB3b3JkIGlzOiBUaGlzaXNsb25nd29yZApAQCAtODYsMTcg
KzkxLDE3IEBAIFByZSB3b3JkIHN0YXJ0IHRvIG5leHQgd29yZCBlbmQ6IGJvdGggICAKIAogQ3Vy
cmVudCBjaGFyYWN0ZXIgaXM6IHMKIExlZnQgd29yZCBpczogc3BhY2VzCi1SaWdodCB3b3JkIGlz
OiAnbGluZSBicmVhaycKK1JpZ2h0IHdvcmQgaXM6IAogUHJlIHdvcmQgc3RhcnQgdG8gbmV4dCB3
b3JkIGVuZDogc3BhY2VzJ2xpbmUgYnJlYWsnCiAKIEN1cnJlbnQgY2hhcmFjdGVyIGlzOiBlCiBM
ZWZ0IHdvcmQgaXM6IHNvbWUKLVJpZ2h0IHdvcmQgaXM6ICdsaW5lIGJyZWFrJworUmlnaHQgd29y
ZCBpczogCiBQcmUgd29yZCBzdGFydCB0byBuZXh0IHdvcmQgZW5kOiBzb21lJ2xpbmUgYnJlYWsn
CiAKIEN1cnJlbnQgY2hhcmFjdGVyIGlzOiAnbGluZSBicmVhaycKLUxlZnQgd29yZCBpczogJ2xp
bmUgYnJlYWsnCi1SaWdodCB3b3JkIGlzOiB0ZXh0CitMZWZ0IHdvcmQgaXM6IAorUmlnaHQgd29y
ZCBpczogCiBQcmUgd29yZCBzdGFydCB0byBuZXh0IHdvcmQgZW5kOiAnbGluZSBicmVhayd0ZXh0
CiAKIEN1cnJlbnQgY2hhcmFjdGVyIGlzOiAgCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy90ZXh0LW1hcmtlci13b3JkLW5hdi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHQtbWFya2VyLXdvcmQtbmF2Lmh0bWwJKHJldmlzaW9u
IDE5NjY5OSkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHQtbWFya2VyLXdv
cmQtbmF2Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTU3LDE3ICs1NywyMCBAQCB0ZXN0IGF1ZGlv
IDxhdWRpbyBjb250cm9scz48c291cmNlIHNyYz0iCiAgICAgICAgIHZhciBzdGFydE1hcmtlciA9
IHRleHQuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7
CiAgICAgICAgIHZhciBjdXJyZW50TWFya2VyID0gYWR2YW5jZUFuZFZlcmlmeShzdGFydE1hcmtl
ciwgMSwgdGV4dCk7CiAgICAgICAgIAorICAgICAgICAvLyBDaGVjayB0aGF0IHdlIGFyZSBhdCB0
aGUgZW5kIG9mIHBhcmFncmFwaCwgc28gcmlnaHQgd29yZCBzaG91bGQgYmUgZW1wdHkKKyAgICAg
ICAgY3VycmVudE1hcmtlciA9IGFkdmFuY2VBbmRWZXJpZnkoY3VycmVudE1hcmtlciwgOSwgdGV4
dCk7CisgICAgICAgIAogICAgICAgICAvLyBDaGVjayB0aGUgY2FzZSB3aXRoIHNwYW4KICAgICAg
ICAgLy8gQXQgIlQiIGluICJUaGlzaXMiLCBzaG91bGQgcmV0dXJuIHRoZSB3b3JkIGFzICJUaGlz
aXNsb25nd29yZCIuCi0gICAgICAgIGN1cnJlbnRNYXJrZXIgPSBhZHZhbmNlQW5kVmVyaWZ5KGN1
cnJlbnRNYXJrZXIsIDEwLCB0ZXh0KTsKKyAgICAgICAgY3VycmVudE1hcmtlciA9IGFkdmFuY2VB
bmRWZXJpZnkoY3VycmVudE1hcmtlciwgMiwgdGV4dCk7CiAgICAgICAgIC8vIEF0ICIgIiBiZWZv
cmUgIkkiLCB0aGUgd29yZCBzaG91bGQgYmUgIkknbGwiLgotICAgICAgICBjdXJyZW50TWFya2Vy
ID0gYWR2YW5jZUFuZFZlcmlmeShjdXJyZW50TWFya2VyLCAxNCwgdGV4dCk7CisgICAgICAgIGN1
cnJlbnRNYXJrZXIgPSBhZHZhbmNlQW5kVmVyaWZ5KGN1cnJlbnRNYXJrZXIsIDE1LCB0ZXh0KTsK
ICAgICAgICAgLy8gQXQgIiAiIGJlZm9yZSAidHJ5IiwgdGhlIHdvcmQgc2hvdWxkIGV4Y2x1ZGVz
ICIuIgotICAgICAgICBjdXJyZW50TWFya2VyID0gYWR2YW5jZUFuZFZlcmlmeShjdXJyZW50TWFy
a2VyLCA1LCB0ZXh0KTsKKyAgICAgICAgY3VycmVudE1hcmtlciA9IGFkdmFuY2VBbmRWZXJpZnko
Y3VycmVudE1hcmtlciwgNiwgdGV4dCk7CiAgICAgICAgIAogICAgICAgICAvLyBDaGVjayB0aGUg
Y2FzZSB3aXRoIGNvbnRlbnRlZGl0YWJsZQogICAgICAgICAvLyBBdCAiZSIgaW4gImVkaXRhYmxl
IiwgdGhlIHdvcmQgc2hvdWxkIE5PVCBpbmNsdWRlICJDb250ZW50IiBiZWZvcmUgaXQuCi0gICAg
ICAgIGN1cnJlbnRNYXJrZXIgPSBhZHZhbmNlQW5kVmVyaWZ5KGN1cnJlbnRNYXJrZXIsIDE3LCB0
ZXh0KTsKKyAgICAgICAgY3VycmVudE1hcmtlciA9IGFkdmFuY2VBbmRWZXJpZnkoY3VycmVudE1h
cmtlciwgMTksIHRleHQpOwogICAgICAgICAKICAgICAgICAgLy8gQ2hlY2sgdGhlIGNhc2Ugd2l0
aCByZXBsYWNlZCBub2RlLCB0aGUgcmVwbGFjZWQgbm9kZSBzaG91bGQgYmUgY29uc2lkZXJlZCBh
IHdvcmQuCiAgICAgICAgIHZhciB0ZXh0MiA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vz
c2libGVFbGVtZW50QnlJZCgidGV4dDIiKTsKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJl
dmlvdXMtbmV4dC5odG1sCShyZXZpc2lvbiAxOTY2OTkpCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtNDksMzEgKzQ5LDMyIEBAIGYKICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXh0
LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihlbmRNYXJrZXIpLmlzRXF1YWwodGV4
dCkiKTsKICAgICAgICAgCiAgICAgICAgIC8vIENoZWNrIG5leHQgdGV4dCBtYXJrZXIuIChBZHZh
bmNlIDUgY2hhcmFjdGVycywgaXQgd2lsbCBsYW5kIGF0IDxicj4uKQotICAgICAgICB2YXIgY3Vy
cmVudE1hcmtlciA9IHN0YXJ0TWFya2VyOwotICAgICAgICB2YXIgcHJldmlvdXNNYXJrZXIsIG1h
cmtlclJhbmdlOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDU7IGkrKykgewotICAgICAg
ICAgICAgcHJldmlvdXNNYXJrZXIgPSBjdXJyZW50TWFya2VyOwotICAgICAgICAgICAgY3VycmVu
dE1hcmtlciA9IHRleHQubmV4dFRleHRNYXJrZXIoY3VycmVudE1hcmtlcik7Ci0gICAgICAgIH0K
KyAgICAgICAgdmFyIGN1cnJlbnRNYXJrZXIsIHByZXZpb3VzTWFya2VyLCBtYXJrZXJSYW5nZTs7
CisgICAgICAgIHZhciByZXN1bHQgPSBmb3J3YXJkKDUsIHByZXZpb3VzTWFya2VyLCBzdGFydE1h
cmtlciwgdGV4dCk7CisgICAgICAgIHByZXZpb3VzTWFya2VyID0gcmVzdWx0LnByZXZpb3VzOwor
ICAgICAgICBjdXJyZW50TWFya2VyID0gcmVzdWx0LmN1cnJlbnQ7CiAgICAgICAgIG1hcmtlclJh
bmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJy
ZW50TWFya2VyKTsKICAgICAgICAgdmFyIG5ld2xpbmUgPSAnXG4nOwogICAgICAgICBzaG91bGRC
ZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIm5ld2xpbmUi
KTsKICAgICAgICAgCi0gICAgICAgIC8vIEFkdmFuY2Ugb25lIG1vcmUgY2hhcmFjdGVyLCBpdCB3
aWxsIGxhbmRlIGF0ICJ0IiBpbiAidGV4dDEiLgotICAgICAgICBwcmV2aW91c01hcmtlciA9IGN1
cnJlbnRNYXJrZXI7Ci0gICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0Lm5leHRUZXh0TWFya2Vy
KGN1cnJlbnRNYXJrZXIpOworICAgICAgICAvLyBBZHZhbmNlIG9uZSBtb3JlIGNoYXJhY3RlcnMs
IGl0IHdpbGwgbGFuZGUgYXQgInQiIGluICJ0ZXh0MSIuCisgICAgICAgIHJlc3VsdCA9IGZvcndh
cmQoMSwgcHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIsIHRleHQpOworICAgICAgICBwcmV2
aW91c01hcmtlciA9IHJlc3VsdC5wcmV2aW91czsKKyAgICAgICAgY3VycmVudE1hcmtlciA9IHJl
c3VsdC5jdXJyZW50OwogICAgICAgICBtYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdl
Rm9yTWFya2VycyhwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlcik7CiAgICAgICAgIHNob3Vs
ZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ3QnIik7
CiAgICAgICAgIAogICAgICAgICAvLyBDaGVjayBwcmV2aW91cyB0ZXh0IG1hcmtlci4gKFRyYXZl
cnNlIGJhY2t3YXJkcyBvbmUgY2hhcmFjdGVyLCBpdCB3aWxsIGxhbmQgYXQgPGJyPi4pCi0gICAg
ICAgIHByZXZpb3VzTWFya2VyID0gdGV4dC5wcmV2aW91c1RleHRNYXJrZXIocHJldmlvdXNNYXJr
ZXIpOwotICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dC5wcmV2aW91c1RleHRNYXJrZXIoY3Vy
cmVudE1hcmtlcik7CisgICAgICAgIHJlc3VsdCA9IGJhY2t3YXJkcygxLCBwcmV2aW91c01hcmtl
ciwgY3VycmVudE1hcmtlciwgdGV4dCk7CisgICAgICAgIHByZXZpb3VzTWFya2VyID0gcmVzdWx0
LnByZXZpb3VzOworICAgICAgICBjdXJyZW50TWFya2VyID0gcmVzdWx0LmN1cnJlbnQ7CiAgICAg
ICAgIG1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3Vz
TWFya2VyLCBjdXJyZW50TWFya2VyKTsKICAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICJuZXdsaW5lIik7CiAgICAgICAgIAotICAg
ICAgICAvLyBUcmF2ZXJzZSBiYWNrd2FyZHMgb25lIG1vcmUgY2hhcmFjdGVyLCBpdCB3aWxsIGxh
bmQgYXQgdGhlIGxhc3QgY2hhcmFjdGVyIG9mICJ0ZXh0Ii4KLSAgICAgICAgcHJldmlvdXNNYXJr
ZXIgPSB0ZXh0LnByZXZpb3VzVGV4dE1hcmtlcihwcmV2aW91c01hcmtlcik7Ci0gICAgICAgIGN1
cnJlbnRNYXJrZXIgPSB0ZXh0LnByZXZpb3VzVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKKyAg
ICAgICAgLy8gVHJhdmVyc2UgYmFja3dhcmRzIHR3byBtb3JlIGNoYXJhY3RlciwgaXQgd2lsbCBs
YW5kIGF0IHRoZSBsYXN0IGNoYXJhY3RlciBvZiAidGV4dCIuCisgICAgICAgIHJlc3VsdCA9IGJh
Y2t3YXJkcygyLCBwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlciwgdGV4dCk7CisgICAgICAg
IHByZXZpb3VzTWFya2VyID0gcmVzdWx0LnByZXZpb3VzOworICAgICAgICBjdXJyZW50TWFya2Vy
ID0gcmVzdWx0LmN1cnJlbnQ7CiAgICAgICAgIG1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2Vy
UmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyKTsKICAgICAgICAg
c2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICIn
dCciKTsKICAgICAgICAgCkBAIC04NiwzMCArODcsMjkgQEAgZgogICAgICAgICAKICAgICAgICAg
Y3VycmVudE1hcmtlciA9IHRleHQyLnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0
ZXh0TWFya2VyUmFuZ2UyKTsKICAgICAgICAgLy8gQWR2YW5jZSA1IGNoYXJhY3RlcnMsIGl0IHdp
bGwgbGFuZCBhdCAiZCIuCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNTsgaSsrKSB7Ci0g
ICAgICAgICAgICBwcmV2aW91c01hcmtlciA9IGN1cnJlbnRNYXJrZXI7Ci0gICAgICAgICAgICBj
dXJyZW50TWFya2VyID0gdGV4dDIubmV4dFRleHRNYXJrZXIoY3VycmVudE1hcmtlcik7Ci0gICAg
ICAgIH0KKyAgICAgICAgcmVzdWx0ID0gZm9yd2FyZCg1LCBwcmV2aW91c01hcmtlciwgY3VycmVu
dE1hcmtlciwgdGV4dDIpOworICAgICAgICBwcmV2aW91c01hcmtlciA9IHJlc3VsdC5wcmV2aW91
czsKKyAgICAgICAgY3VycmVudE1hcmtlciA9IHJlc3VsdC5jdXJyZW50OwogICAgICAgICBtYXJr
ZXJSYW5nZSA9IHRleHQyLnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIs
IGN1cnJlbnRNYXJrZXIpOwogICAgICAgICBzaG91bGRCZSgidGV4dDIuc3RyaW5nRm9yVGV4dE1h
cmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInZCciKTsKICAgICAgICAgCi0gICAgICAgIC8vIFRy
YXZlcnNlIGJhY2t3YXJkcyA1IGNoYXJhY3RlcnMsIGl0IHdpbGwgbGFuZCBhdCB0aGUgbGFzdCBj
aGFyYWN0ZXIgb2YgInRleHQxIi4KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA1OyBpKysp
IHsKLSAgICAgICAgICAgIHByZXZpb3VzTWFya2VyID0gdGV4dDIucHJldmlvdXNUZXh0TWFya2Vy
KHByZXZpb3VzTWFya2VyKTsKLSAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0Mi5wcmV2
aW91c1RleHRNYXJrZXIoY3VycmVudE1hcmtlcik7Ci0gICAgICAgIH0KKyAgICAgICAgLy8gVHJh
dmVyc2UgYmFja3dhcmRzIDggY2hhcmFjdGVycywgaXQgd2lsbCBsYW5kIGF0IHRoZSBsYXN0IGNo
YXJhY3RlciBvZiAidGV4dDEiLgorICAgICAgICByZXN1bHQgPSBiYWNrd2FyZHMoOCwgcHJldmlv
dXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIsIHRleHQyKTsKKyAgICAgICAgcHJldmlvdXNNYXJrZXIg
PSByZXN1bHQucHJldmlvdXM7CisgICAgICAgIGN1cnJlbnRNYXJrZXIgPSByZXN1bHQuY3VycmVu
dDsKICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0Mi50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJz
KHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyKTsKICAgICAgICAgc2hvdWxkQmUoInRleHQy
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJzEnIik7CiAgICAgICAg
IAogICAgICAgICAvLyBDaGVjayB0aGUgY2FzZSB3aXRoIHVzZXItc2VsZWN0Om5vbmUsIG5leHRU
ZXh0TWFya2VyL3ByZXZpb3VzVGV4dE1hcmtlciBzaG91bGQgc3RpbGwgd29yay4KICAgICAgICAg
dmFyIHRleHQzID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCJ0ZXh0MyIpOwogICAgICAgICB0ZXh0MyA9IHRleHQzLmNoaWxkQXRJbmRleCgwKTsKKyAgICAg
ICAgCiAgICAgICAgIC8vIEFkdmFuY2UgdG8gbGFuZCBhdCB1c2VyLXNlbGVjdDpub25lIG5vZGUu
CiAgICAgICAgIHZhciBtYXJrZXIxLCBtYXJrZXIyOwotICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IDE3OyBpKyspIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxODsgaSsrKSB7CiAg
ICAgICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dDMubmV4dFRleHRNYXJrZXIoY3VycmVudE1h
cmtlcik7Ci0gICAgICAgICAgICAvLyBpID09IDEzLCBpdCBzaG91bGQgbGFuZCBvbiAiZSIsIGFu
ZCBpID09IDE2LCBpdCBzaG91bGQgbGFuZCBvbiAidCIKLSAgICAgICAgICAgIGlmIChpID09IDEz
KSB7CisgICAgICAgICAgICAvLyBpID09IDE0LCBpdCBzaG91bGQgbGFuZCBvbiAiZSIsIGFuZCBp
ID09IDE3LCBpdCBzaG91bGQgbGFuZCBvbiAidCIKKyAgICAgICAgICAgIGlmIChpID09IDE0KSB7
CiAgICAgICAgICAgICAgICAgbWFya2VyMSA9IGN1cnJlbnRNYXJrZXI7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KQEAgLTEzOSw2ICsxMzksNyBAQCBmCiAgICAgICAgIHNob3VsZEJlVHJ1ZSgi
dGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlz
RXF1YWwodGV4dDMpIik7CiAgICAgICAgIC8vIENoZWNrIHByZXZpb3VzIHRleHQgbWFya2VyLCBp
dCBzaG91bGQgbGFuZCBvbiAiIGQiIG5vZGUuCiAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0
Mi5wcmV2aW91c1RleHRNYXJrZXIoY3VycmVudE1hcmtlcik7CisgICAgICAgIGN1cnJlbnRNYXJr
ZXIgPSB0ZXh0Mi5wcmV2aW91c1RleHRNYXJrZXIoY3VycmVudE1hcmtlcik7CiAgICAgICAgIHNo
b3VsZEJlVHJ1ZSgidGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJl
bnRNYXJrZXIpLmlzRXF1YWwodGV4dDIuY2hpbGRBdEluZGV4KDIpKSIpOwogICAgICAgICAKICAg
ICAgICAgCkBAIC0xNjIsNiArMTYzLDI3IEBAIGYKICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0
LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMoc3RhcnRNYXJrZXIsIGN1cnJlbnRNYXJrZXIpCiAg
ICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5n
ZSkiLCAiJ2EnIik7CiAgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBmb3J3YXJkKGNvdW50LCBw
cmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlciwgb2JqKSB7CisgICAgICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAgICAgICAgICAgICBwcmV2aW91c01hcmtl
ciA9IGN1cnJlbnRNYXJrZXI7CisgICAgICAgICAgICAgICAgY3VycmVudE1hcmtlciA9IG9iai5u
ZXh0VGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHJldHVybiB7CisgICAgICAgICAgICAgICAgcHJldmlvdXM6IHByZXZpb3VzTWFya2VyLAorICAg
ICAgICAgICAgICAgIGN1cnJlbnQ6IGN1cnJlbnRNYXJrZXIKKyAgICAgICAgICAgIH07CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIGZ1bmN0aW9uIGJhY2t3YXJkcyhjb3VudCwgcHJldmlv
dXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIsIG9iaikgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgICAgICAgICAgcHJldmlvdXNNYXJrZXIgPSBv
YmoucHJldmlvdXNUZXh0TWFya2VyKHByZXZpb3VzTWFya2VyKTsKKyAgICAgICAgICAgICAgICBj
dXJyZW50TWFya2VyID0gb2JqLnByZXZpb3VzVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgcHJldmlv
dXM6IHByZXZpb3VzTWFya2VyLAorICAgICAgICAgICAgICAgIGN1cnJlbnQ6IGN1cnJlbnRNYXJr
ZXIKKyAgICAgICAgICAgIH07CisgICAgICAgIH0KICAgICB9CiAKIDwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271755</attachid>
            <date>2016-02-19 08:39:07 -0800</date>
            <delta_ts>2016-02-19 10:58:29 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>27034</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NjgxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDE2LTAyLTE5ICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEluY29uc2lzdGVuY3kgYmV0d2Vl
biBDaGFyYWN0ZXJPZmZzZXQgYW5kIFZpc2libGVQb3N0aXRpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDQzMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFZvaWNlT3ZlciBpcyBub3QgZ2V0dGluZyB0
aGUgY29ycmVjdCB0ZXh0IG1hcmtlciBmcm9tIFZpc2libGVQb3N0aXRpb24gd2hlbgorICAgICAg
ICBuYXZpZ2F0aW5nIHVzaW5nIGFycm93IGtleXMuIFdlIHNob3VsZCBtYWtlIHRoZSBDaGFyYWN0
ZXJPZmZzZXQgYmVoYXZpb3IgY29uc2lzdGVudAorICAgICAgICB3aXRoIFZpc2libGVQb3NpdGlv
biBzbyB0aGF0IHRoZSBjb252ZXJzaW9uIGJldHdlZW4gdGhlIHR3byB3b24ndCBjcmVhdGUgZGlm
ZmVyZW50CisgICAgICAgIHRleHQgbWFya2Vycy4KKyAgICAgICAgCisgICAgICAgIENoYW5nZXMg
YXJlIGNvdmVyZWQgaW4gdGhlIG1vZGlmaWVkIHRlc3RzLgorCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6
OmNoYXJhY3Rlck9mZnNldEZvclRleHRNYXJrZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkFY
T2JqZWN0Q2FjaGU6OnRyYXZlcnNlVG9PZmZzZXRJblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFYT2JqZWN0Q2FjaGU6OnN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZzZXRGb3JSYW5nZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpzdGFydE9yRW5kVGV4dE1hcmtlckRhdGFGb3JS
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpjaGFyYWN0ZXJPZmZzZXRG
b3JOb2RlQW5kT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnRleHRN
YXJrZXJEYXRhRm9yTmV4dENoYXJhY3Rlck9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9i
amVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvclByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnZpc2libGVQb3NpdGlvbkZyb21DaGFyYWN0
ZXJPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Y2hhcmFjdGVyT2Zm
c2V0RnJvbVZpc2libGVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hl
OjphY2Nlc3NpYmlsaXR5T2JqZWN0Rm9yVGV4dE1hcmtlckRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6QVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JWaXNpYmxlUG9zaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6bmV4dENoYXJhY3Rlck9mZnNldCk6CisgICAg
ICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpwcmV2aW91c0NoYXJhY3Rlck9mZnNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpzdGFydENoYXJhY3Rlck9mZnNldE9mV29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjplbmRDaGFyYWN0ZXJPZmZzZXRP
ZldvcmQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cHJldmlvdXNXb3JkU3Rh
cnRDaGFyYWN0ZXJPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cHJl
dmlvdXNQYXJhZ3JhcGhTdGFydENoYXJhY3Rlck9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpB
WE9iamVjdENhY2hlOjpwcmV2aW91c1NlbnRlbmNlU3RhcnRDaGFyYWN0ZXJPZmZzZXQpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oOgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAo
LVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBkb0FYQXR0cmlidXRlZFN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZTpdKToKKwogMjAxNi0wMi0xOSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBw
bGUuY29tPgogCiAgICAgICAgIEJsb2NrZWQgcGx1Zy1pbiBwbGFjZWhvbGRlciBpcyBzb21ldGlt
ZXMgbm90IHNob3duLgpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVj
dENhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuY3BwCShyZXZpc2lvbiAxOTY2OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDM2LDExICsx
NDM2LDEzIEBAIENoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjpjaGFyYWN0ZXIKICAgICBy
ZXR1cm4gQ2hhcmFjdGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLm5vZGUsIHRleHRNYXJrZXJEYXRh
LmNoYXJhY3RlclN0YXJ0SW5kZXgsIHRleHRNYXJrZXJEYXRhLmNoYXJhY3Rlck9mZnNldCk7CiB9
CiAKLUNoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjp0cmF2ZXJzZVRvT2Zmc2V0SW5SYW5n
ZShSZWZQdHI8UmFuZ2U+cmFuZ2UsIGludCBvZmZzZXQsIGJvb2wgdG9Ob2RlRW5kLCBib29sIHN0
YXlXaXRoaW5SYW5nZSkKK0NoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjp0cmF2ZXJzZVRv
T2Zmc2V0SW5SYW5nZShSZWZQdHI8UmFuZ2U+cmFuZ2UsIGludCBvZmZzZXQsIFRyYXZlcnNlT3B0
aW9uIG9wdGlvbiwgYm9vbCBzdGF5V2l0aGluUmFuZ2UpCiB7CiAgICAgaWYgKCFyYW5nZSkKICAg
ICAgICAgcmV0dXJuIENoYXJhY3Rlck9mZnNldCgpOwogICAgIAorICAgIGJvb2wgdG9Ob2RlRW5k
ID0gb3B0aW9uICYgVHJhdmVyc2VPcHRpb25Ub05vZGVFbmQ7CisgICAgCiAgICAgaW50IG9mZnNl
dEluQ2hhcmFjdGVyID0gMDsKICAgICBpbnQgb2Zmc2V0U29GYXIgPSAwOwogICAgIGludCByZW1h
aW5pbmcgPSAwOwpAQCAtMTQ2NCw3ICsxNDY2LDcgQEAgQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0
Q2FjaGU6OnRyYXZlcnNlVAogICAgICAgICAgICAgLy8gSGVyZSB3aGVuIHdlIGRvbid0IGhhdmUg
YW55IGNoYXJhY3RlciB0byBtb3ZlIGFuZCB3ZSBhcmUgZ29pbmcgYmFja3dhcmRzLCB3ZSB0cmF2
ZXJzZSB0byB0aGUgcHJldmlvdXMgbm9kZS4KICAgICAgICAgICAgIGlmICghbGFzdExlbmd0aCAm
JiB0b05vZGVFbmQgJiYgIXN0YXlXaXRoaW5SYW5nZSkgewogICAgICAgICAgICAgICAgIGlmIChO
b2RlKiBwcmVOb2RlID0gcHJldmlvdXNOb2RlKGN1cnJlbnROb2RlKSkKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRyYXZlcnNlVG9PZmZzZXRJblJhbmdlKHJhbmdlRm9yTm9kZUNvbnRlbnRz
KHByZU5vZGUpLCBvZmZzZXQsIHRvTm9kZUVuZCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cmF2ZXJzZVRvT2Zmc2V0SW5SYW5nZShyYW5nZUZvck5vZGVDb250ZW50cyhwcmVOb2RlKSwg
b2Zmc2V0LCBvcHRpb24pOwogICAgICAgICAgICAgICAgIHJldHVybiBDaGFyYWN0ZXJPZmZzZXQo
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTUwMSw4ICsxNTAzLDExIEBAIENoYXJh
Y3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjp0cmF2ZXJzZVQKICAgICAgICAgICAgICAgICAgICAg
aWYgKGNoaWxkTm9kZSAmJiBjaGlsZE5vZGUtPnJlbmRlcmVyKCkgJiYgY2hpbGROb2RlLT5yZW5k
ZXJlcigpLT5pc0JSKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnROb2RlID0g
Y2hpbGROb2RlOwogICAgICAgICAgICAgICAgICAgICAgICAgaGFzUmVwbGFjZWROb2RlT3JCUiA9
IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudE5vZGUgIT0gcHJl
dmlvdXNOb2RlKQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnROb2RlICE9
IHByZXZpb3VzTm9kZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIHNl
dCB0aGUgY3VycmVudE5vZGUgdG8gcHJldmlvdXMgb25lIGluIGNhc2UgdGhpcyBpcyB0aGUgbGFz
dCBpdGVyYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Tm9kZSA9IHByZXZp
b3VzTm9kZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAg
b2Zmc2V0U29GYXIgKz0gY3VycmVudExlbmd0aDsKQEAgLTE2OTcsMTIgKzE3MDIsMTIgQEAgQ2hh
cmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OnN0YXJ0T3JFbgogICAgIE5vZGUqIG5vZGUgPSAm
Y29weVJhbmdlLT5zdGFydENvbnRhaW5lcigpOwogICAgIGlmIChub2RlLT5vZmZzZXRJbkNoYXJh
Y3RlcnMoKSkgewogICAgICAgICBjb3B5UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHJhbmdlLT5vd25l
ckRvY3VtZW50KCksICZyYW5nZS0+c3RhcnRDb250YWluZXIoKSwgcmFuZ2UtPnN0YXJ0T2Zmc2V0
KCksICZyYW5nZS0+ZW5kQ29udGFpbmVyKCksIHJhbmdlLT5lbmRPZmZzZXQoKSk7Ci0gICAgICAg
IENoYXJhY3Rlck9mZnNldCBub2RlU3RhcnRPZmZzZXQgPSB0cmF2ZXJzZVRvT2Zmc2V0SW5SYW5n
ZShyYW5nZUZvck5vZGVDb250ZW50cyhub2RlKSwgMCwgZmFsc2UpOworICAgICAgICBDaGFyYWN0
ZXJPZmZzZXQgbm9kZVN0YXJ0T2Zmc2V0ID0gdHJhdmVyc2VUb09mZnNldEluUmFuZ2UocmFuZ2VG
b3JOb2RlQ29udGVudHMobm9kZSksIDApOwogICAgICAgICBvZmZzZXQgPSBzdGQ6Om1heChjb3B5
UmFuZ2UtPnN0YXJ0T2Zmc2V0KCkgLSBub2RlU3RhcnRPZmZzZXQuc3RhcnRJbmRleCwgMCk7CiAg
ICAgICAgIGNvcHlSYW5nZS0+c2V0U3RhcnQobm9kZSwgbm9kZVN0YXJ0T2Zmc2V0LnN0YXJ0SW5k
ZXgpOwogICAgIH0KICAgICAKLSAgICByZXR1cm4gdHJhdmVyc2VUb09mZnNldEluUmFuZ2UoY29w
eVJhbmdlLCBvZmZzZXQsICFpc1N0YXJ0LCBzdGF5V2l0aGluUmFuZ2UpOworICAgIHJldHVybiB0
cmF2ZXJzZVRvT2Zmc2V0SW5SYW5nZShjb3B5UmFuZ2UsIG9mZnNldCwgaXNTdGFydCA/IFRyYXZl
cnNlT3B0aW9uRGVmYXVsdCA6IFRyYXZlcnNlT3B0aW9uVG9Ob2RlRW5kLCBzdGF5V2l0aGluUmFu
Z2UpOwogfQogCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OnN0YXJ0T3JFbmRUZXh0TWFya2VyRGF0YUZv
clJhbmdlKFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFya2VyRGF0YSwgUmVmUHRyPFJhbmdlPiByYW5n
ZSwgYm9vbCBpc1N0YXJ0KQpAQCAtMTc1MCwxMyArMTc1NSwxMyBAQCBDaGFyYWN0ZXJPZmZzZXQg
QVhPYmplY3RDYWNoZTo6Y2hhcmFjdGVyCiAKICAgICAvLyBUcmF2ZXJzZSB0aGUgb2Zmc2V0IGFt
b3VudCBvZiBjaGFyYWN0ZXJzIGZvcndhcmQgYW5kIHNlZSBpZiB0aGVyZSdzIHJlbWFpbmluZyBv
ZmZzZXRzLgogICAgIC8vIEtlZXAgdHJhdmVyc2luZyB0byB0aGUgbmV4dCBub2RlIHdoZW4gdGhl
cmUncyByZW1haW5pbmcgb2Zmc2V0cy4KLSAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zm
c2V0ID0gdHJhdmVyc2VUb09mZnNldEluUmFuZ2UocmFuZ2UsIG9mZnNldCwgdG9Ob2RlRW5kKTsK
KyAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0ID0gdHJhdmVyc2VUb09mZnNldElu
UmFuZ2UocmFuZ2UsIG9mZnNldCwgb3B0aW9uKTsKICAgICB3aGlsZSAoIWNoYXJhY3Rlck9mZnNl
dC5pc051bGwoKSAmJiBjaGFyYWN0ZXJPZmZzZXQucmVtYWluaW5nKCkgJiYgIXRvTm9kZUVuZCkg
ewogICAgICAgICBkb21Ob2RlID0gbmV4dE5vZGUoZG9tTm9kZSk7CiAgICAgICAgIGlmICghZG9t
Tm9kZSkKICAgICAgICAgICAgIHJldHVybiBDaGFyYWN0ZXJPZmZzZXQoKTsKICAgICAgICAgcmFu
Z2UgPSByYW5nZUZvck5vZGVDb250ZW50cyhkb21Ob2RlKTsKLSAgICAgICAgY2hhcmFjdGVyT2Zm
c2V0ID0gdHJhdmVyc2VUb09mZnNldEluUmFuZ2UocmFuZ2UsIGNoYXJhY3Rlck9mZnNldC5yZW1h
aW5pbmcoKSwgdG9Ob2RlRW5kKTsKKyAgICAgICAgY2hhcmFjdGVyT2Zmc2V0ID0gdHJhdmVyc2VU
b09mZnNldEluUmFuZ2UocmFuZ2UsIGNoYXJhY3Rlck9mZnNldC5yZW1haW5pbmcoKSwgb3B0aW9u
KTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIGNoYXJhY3Rlck9mZnNldDsKQEAgLTE3NzIsNyAr
MTc3Nyw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JOZXgKIHsKICAg
ICBDaGFyYWN0ZXJPZmZzZXQgbmV4dCA9IGNoYXJhY3Rlck9mZnNldDsKICAgICBkbyB7Ci0gICAg
ICAgIG5leHQgPSBuZXh0Q2hhcmFjdGVyT2Zmc2V0KG5leHQpOworICAgICAgICBuZXh0ID0gbmV4
dENoYXJhY3Rlck9mZnNldChuZXh0LCBmYWxzZSk7CiAgICAgICAgIHRleHRNYXJrZXJEYXRhRm9y
Q2hhcmFjdGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBuZXh0KTsKICAgICB9IHdoaWxlICh0ZXh0
TWFya2VyRGF0YS5pZ25vcmVkKTsKIH0KQEAgLTE3ODEsNyArMTc4Niw3IEBAIHZvaWQgQVhPYmpl
Y3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JQcmUKIHsKICAgICBDaGFyYWN0ZXJPZmZzZXQgcHJl
dmlvdXMgPSBjaGFyYWN0ZXJPZmZzZXQ7CiAgICAgZG8gewotICAgICAgICBwcmV2aW91cyA9IHBy
ZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KHByZXZpb3VzKTsKKyAgICAgICAgcHJldmlvdXMgPSBwcmV2
aW91c0NoYXJhY3Rlck9mZnNldChwcmV2aW91cywgZmFsc2UpOwogICAgICAgICB0ZXh0TWFya2Vy
RGF0YUZvckNoYXJhY3Rlck9mZnNldCh0ZXh0TWFya2VyRGF0YSwgcHJldmlvdXMpOwogICAgIH0g
d2hpbGUgKHRleHRNYXJrZXJEYXRhLmlnbm9yZWQpOwogfQpAQCAtMTgxOCw4ICsxODIzLDExIEBA
IFZpc2libGVQb3NpdGlvbiBBWE9iamVjdENhY2hlOjp2aXNpYmxlUG8KICAgICAvLyBuZXh0Vmlz
aWJsZVBvc2l0aW9uIG1lYW5zIGFkdmFuY2luZyBvbmUgY2hhcmFjdGVyLiBVc2UgdGhpcyB0byBj
YWxjdWxhdGUgdGhlIGNoYXJhY3RlciBvZmZzZXQuCiAgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ug
dnBSYW5nZSA9IG9iai0+dmlzaWJsZVBvc2l0aW9uUmFuZ2UoKTsKICAgICBWaXNpYmxlUG9zaXRp
b24gc3RhcnQgPSB2cFJhbmdlLnN0YXJ0OworICAgIAorICAgIC8vIFNvbWV0aW1lcyB2cFJhbmdl
LnN0YXJ0IHdpbGwgYmUgdGhlIHByZXZpb3VzIG5vZGUncyBlbmQgcG9zaXRpb24gYW5kIFZpc2li
bGVQb3NpdGlvbiB3aWxsIGNvdW50IHRoZSBsZWFkaW5nIGxpbmUgYnJlYWsgYXMgMSBvZmZzZXQu
CisgICAgaW50IGNoYXJhY3RlckNvdW50ID0gc3RhcnQuZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNh
dGVkTm9kZSgpID09IGNoYXJhY3Rlck9mZnNldC5ub2RlID8gY2hhcmFjdGVyT2Zmc2V0Lm9mZnNl
dCA6IGNoYXJhY3Rlck9mZnNldC5vZmZzZXQgKyBjaGFyYWN0ZXJPZmZzZXQuc3RhcnRJbmRleDsK
ICAgICBWaXNpYmxlUG9zaXRpb24gcmVzdWx0ID0gc3RhcnQ7Ci0gICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBjaGFyYWN0ZXJPZmZzZXQub2Zmc2V0OyBpKyspCisgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBjaGFyYWN0ZXJDb3VudDsgaSsrKQogICAgICAgICByZXN1bHQgPSBvYmotPm5leHRWaXNpYmxl
UG9zaXRpb24ocmVzdWx0KTsKICAgICAKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTg1NCw5ICsx
ODYyLDE2IEBAIENoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjpjaGFyYWN0ZXIKICAgICAg
ICAgaWYgKHZwRGVlcFBvcy5lcXVhbHMocHJldmlvdXNWaXNpYmxlUG9zLmRlZXBFcXVpdmFsZW50
KCkpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNoYXJhY3Rlck9mZnNldCsrOworICAg
ICAgICAKKyAgICAgICAgLy8gV2hlbiBWaXNpYmxlUG9zdGlvbiBtb3ZlcyB0byBuZXh0IG5vZGUs
IGl0IHdpbGwgY291bnQgdGhlIGxlYWRpbmcgbGluZSBicmVhayBhcworICAgICAgICAvLyAxIG9m
ZnNldCwgd2hpY2ggd2Ugc2hvdWxkbid0IGluY2x1ZGUgaW4gQ2hhcmFjdGVyT2Zmc2V0LgorICAg
ICAgICBpZiAodnBEZWVwUG9zLmRlcHJlY2F0ZWROb2RlKCkgIT0gcHJldmlvdXNWaXNpYmxlUG9z
LmRlZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUoKSkgeworICAgICAgICAgICAgaWYgKHZw
LmNoYXJhY3RlckJlZm9yZSgpID09ICdcbicpCisgICAgICAgICAgICAgICAgY2hhcmFjdGVyT2Zm
c2V0LS07CisgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgcmV0dXJuIHRyYXZlcnNlVG9PZmZz
ZXRJblJhbmdlKHJhbmdlRm9yTm9kZUNvbnRlbnRzKG9iai0+bm9kZSgpKSwgY2hhcmFjdGVyT2Zm
c2V0LCBmYWxzZSk7CisgICAgcmV0dXJuIHRyYXZlcnNlVG9PZmZzZXRJblJhbmdlKHJhbmdlRm9y
Tm9kZUNvbnRlbnRzKG9iai0+bm9kZSgpKSwgY2hhcmFjdGVyT2Zmc2V0KTsKIH0KIAogQWNjZXNz
aWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eU9iamVjdEZvclRleHRN
YXJrZXJEYXRhKFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFya2VyRGF0YSkKQEAgLTE5MDMsMjAgKzE5
MTgsMzEgQEAgdm9pZCBBWE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvclZpcwogICAgIGNh
Y2hlLT5zZXROb2RlSW5Vc2UoZG9tTm9kZSk7CiB9CiAKLUNoYXJhY3Rlck9mZnNldCBBWE9iamVj
dENhY2hlOjpuZXh0Q2hhcmFjdGVyT2Zmc2V0KGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hhcmFj
dGVyT2Zmc2V0LCBib29sIGlnbm9yZVN0YXJ0KQorQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2Fj
aGU6Om5leHRDaGFyYWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJP
ZmZzZXQsIGJvb2wgaWdub3JlTmV4dE5vZGVTdGFydCkKIHsKICAgICBpZiAoY2hhcmFjdGVyT2Zm
c2V0LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gQ2hhcmFjdGVyT2Zmc2V0KCk7CiAgICAgCi0g
ICAgcmV0dXJuIGNoYXJhY3Rlck9mZnNldEZvck5vZGVBbmRPZmZzZXQoKmNoYXJhY3Rlck9mZnNl
dC5ub2RlLCBjaGFyYWN0ZXJPZmZzZXQub2Zmc2V0ICsgMSwgaWdub3JlU3RhcnQgPyBUcmF2ZXJz
ZU9wdGlvbkRlZmF1bHQgOiBUcmF2ZXJzZU9wdGlvbkluY2x1ZGVTdGFydCk7CisgICAgQ2hhcmFj
dGVyT2Zmc2V0IG5leHQgPSBjaGFyYWN0ZXJPZmZzZXRGb3JOb2RlQW5kT2Zmc2V0KCpjaGFyYWN0
ZXJPZmZzZXQubm9kZSwgY2hhcmFjdGVyT2Zmc2V0Lm9mZnNldCArIDEpOworICAgIAorICAgIC8v
IFRvIGJlIGNvbnNpc3RlbnQgd2l0aCBWaXNpYmxlUG9zaXRpb24sIHdlIHNob3VsZCBjb25zaWRl
ciB0aGUgY2FzZSB0aGF0IGN1cnJlbnQgbm9kZSBlbmQgdG8gbmV4dCBub2RlIHN0YXJ0IGNvdW50
cyAxIG9mZnNldC4KKyAgICBib29sIGlzUmVwbGFjZWRPckJSID0gaXNSZXBsYWNlZE5vZGVPckJS
KGNoYXJhY3Rlck9mZnNldC5ub2RlKSB8fCBpc1JlcGxhY2VkTm9kZU9yQlIobmV4dC5ub2RlKTsK
KyAgICBpZiAoIWlnbm9yZU5leHROb2RlU3RhcnQgJiYgIW5leHQuaXNOdWxsKCkgJiYgIWlzUmVw
bGFjZWRPckJSICYmIG5leHQubm9kZSAhPSBjaGFyYWN0ZXJPZmZzZXQubm9kZSkKKyAgICAgICAg
bmV4dCA9IGNoYXJhY3Rlck9mZnNldEZvck5vZGVBbmRPZmZzZXQoKm5leHQubm9kZSwgMCwgVHJh
dmVyc2VPcHRpb25JbmNsdWRlU3RhcnQpOworICAgIAorICAgIHJldHVybiBuZXh0OwogfQogCi1D
aGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6cHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQoY29u
c3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQsIGJvb2wgaWdub3JlU3RhcnQpCitD
aGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6cHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQoY29u
c3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQsIGJvb2wgaWdub3JlUHJldmlvdXNO
b2RlRW5kKQogewogICAgIGlmIChjaGFyYWN0ZXJPZmZzZXQuaXNOdWxsKCkpCiAgICAgICAgIHJl
dHVybiBDaGFyYWN0ZXJPZmZzZXQoKTsKICAgICAKLSAgICByZXR1cm4gY2hhcmFjdGVyT2Zmc2V0
Rm9yTm9kZUFuZE9mZnNldCgqY2hhcmFjdGVyT2Zmc2V0Lm5vZGUsIGNoYXJhY3Rlck9mZnNldC5v
ZmZzZXQgLSAxLCBpZ25vcmVTdGFydCA/IFRyYXZlcnNlT3B0aW9uRGVmYXVsdCA6IFRyYXZlcnNl
T3B0aW9uSW5jbHVkZVN0YXJ0KTsKKyAgICAvLyBUbyBiZSBjb25zaXN0ZW50IHdpdGggVmlzaWJs
ZVBvc2l0aW9uLCB3ZSBzaG91bGQgY29uc2lkZXIgdGhlIGNhc2UgdGhhdCBjdXJyZW50IG5vZGUg
c3RhcnQgdG8gcHJldmlvdXMgbm9kZSBlbmQgY291bnRzIDEgb2Zmc2V0LgorICAgIGlmICghaWdu
b3JlUHJldmlvdXNOb2RlRW5kICYmICFjaGFyYWN0ZXJPZmZzZXQub2Zmc2V0KQorICAgICAgICBy
ZXR1cm4gY2hhcmFjdGVyT2Zmc2V0Rm9yTm9kZUFuZE9mZnNldCgqY2hhcmFjdGVyT2Zmc2V0Lm5v
ZGUsIDApOworICAgIAorICAgIHJldHVybiBjaGFyYWN0ZXJPZmZzZXRGb3JOb2RlQW5kT2Zmc2V0
KCpjaGFyYWN0ZXJPZmZzZXQubm9kZSwgY2hhcmFjdGVyT2Zmc2V0Lm9mZnNldCAtIDEsIFRyYXZl
cnNlT3B0aW9uSW5jbHVkZVN0YXJ0KTsKIH0KIAogQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2Fj
aGU6OnN0YXJ0Q2hhcmFjdGVyT2Zmc2V0T2ZXb3JkKGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hh
cmFjdGVyT2Zmc2V0LCBFV29yZFNpZGUgc2lkZSkKQEAgLTE5NDksOSArMTk3NSwxMyBAQCBDaGFy
YWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6ZW5kQ2hhcmFjCiAgICAgICAgIGlmIChjLmlzRXF1
YWwoc3RhcnRPZlBhcmFncmFwaCkpCiAgICAgICAgICAgICByZXR1cm4gYzsKICAgICAgICAgCi0g
ICAgICAgIGMgPSBwcmV2aW91c0NoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQsIGZhbHNl
KTsKKyAgICAgICAgYyA9IHByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rlck9mZnNldCk7
CiAgICAgICAgIGlmIChjLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuIGNoYXJhY3Rlck9m
ZnNldDsKKyAgICB9IGVsc2UgeworICAgICAgICBDaGFyYWN0ZXJPZmZzZXQgZW5kT2ZQYXJhZ3Jh
cGggPSBlbmRDaGFyYWN0ZXJPZmZzZXRPZlBhcmFncmFwaChjaGFyYWN0ZXJPZmZzZXQpOworICAg
ICAgICBpZiAoY2hhcmFjdGVyT2Zmc2V0LmlzRXF1YWwoZW5kT2ZQYXJhZ3JhcGgpKQorICAgICAg
ICAgICAgcmV0dXJuIGNoYXJhY3Rlck9mZnNldDsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIG5l
eHRCb3VuZGFyeShjLCBlbmRXb3JkQm91bmRhcnkpOwpAQCAtMTk2Miw3ICsxOTkyLDcgQEAgQ2hh
cmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OnByZXZpb3VzVwogICAgIGlmIChjaGFyYWN0ZXJP
ZmZzZXQuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBDaGFyYWN0ZXJPZmZzZXQoKTsKICAgICAK
LSAgICBDaGFyYWN0ZXJPZmZzZXQgcHJldmlvdXNPZmZzZXQgPSBwcmV2aW91c0NoYXJhY3Rlck9m
ZnNldChjaGFyYWN0ZXJPZmZzZXQsIGZhbHNlKTsKKyAgICBDaGFyYWN0ZXJPZmZzZXQgcHJldmlv
dXNPZmZzZXQgPSBwcmV2aW91c0NoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpOwogICAg
IGlmIChwcmV2aW91c09mZnNldC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIENoYXJhY3Rlck9m
ZnNldCgpOwogICAgIApAQCAtMjIwNywxMSArMjIzNywxMSBAQCBDaGFyYWN0ZXJPZmZzZXQgQVhP
YmplY3RDYWNoZTo6bmV4dFBhcmFnCiBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6cHJl
dmlvdXNQYXJhZ3JhcGhTdGFydENoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQm
IGNoYXJhY3Rlck9mZnNldCkKIHsKICAgICAvLyBtYWtlIHN1cmUgd2UgbW92ZSBvZmYgb2YgYSBw
YXJhZ3JhcGggc3RhcnQKLSAgICBDaGFyYWN0ZXJPZmZzZXQgcHJldmlvdXMgPSBwcmV2aW91c0No
YXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQsIGZhbHNlKTsKKyAgICBDaGFyYWN0ZXJPZmZz
ZXQgcHJldmlvdXMgPSBwcmV2aW91c0NoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpOwog
ICAgIAogICAgIC8vIFdlIHNob3VsZCBza2lwIHRoZSBwcmVjZWRpbmcgQlIgbm9kZS4KICAgICBp
ZiAoY2hhcmFjdGVyT2Zmc2V0Tm9kZUlzQlIocHJldmlvdXMpICYmICFjaGFyYWN0ZXJPZmZzZXRO
b2RlSXNCUihjaGFyYWN0ZXJPZmZzZXQpKQotICAgICAgICBwcmV2aW91cyA9IHByZXZpb3VzQ2hh
cmFjdGVyT2Zmc2V0KHByZXZpb3VzLCBmYWxzZSk7CisgICAgICAgIHByZXZpb3VzID0gcHJldmlv
dXNDaGFyYWN0ZXJPZmZzZXQocHJldmlvdXMpOwogICAgIAogICAgIHJldHVybiBzdGFydENoYXJh
Y3Rlck9mZnNldE9mUGFyYWdyYXBoKHByZXZpb3VzKTsKIH0KQEAgLTIyNDIsMTEgKzIyNzIsMTEg
QEAgQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6Om5leHRTZW50ZQogQ2hhcmFjdGVyT2Zm
c2V0IEFYT2JqZWN0Q2FjaGU6OnByZXZpb3VzU2VudGVuY2VTdGFydENoYXJhY3Rlck9mZnNldChj
b25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKIHsKICAgICAvLyBNYWtlIHN1
cmUgd2UgbW92ZSBvZmYgb2YgYSBzZW50ZW5jZSBzdGFydC4KLSAgICBDaGFyYWN0ZXJPZmZzZXQg
cHJldmlvdXMgPSBwcmV2aW91c0NoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQsIGZhbHNl
KTsKKyAgICBDaGFyYWN0ZXJPZmZzZXQgcHJldmlvdXMgPSBwcmV2aW91c0NoYXJhY3Rlck9mZnNl
dChjaGFyYWN0ZXJPZmZzZXQpOwogICAgIAogICAgIC8vIFdlIHNob3VsZCBza2lwIHRoZSBwcmVj
ZWRpbmcgQlIgbm9kZS4KLSAgICBpZiAoIXByZXZpb3VzLmlzTnVsbCgpICYmIHByZXZpb3VzLm5v
ZGUtPmhhc1RhZ05hbWUoYnJUYWcpICYmICFjaGFyYWN0ZXJPZmZzZXQubm9kZS0+aGFzVGFnTmFt
ZShiclRhZykpCi0gICAgICAgIHByZXZpb3VzID0gcHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQocHJl
dmlvdXMsIGZhbHNlKTsKKyAgICBpZiAoY2hhcmFjdGVyT2Zmc2V0Tm9kZUlzQlIocHJldmlvdXMp
ICYmICFjaGFyYWN0ZXJPZmZzZXROb2RlSXNCUihjaGFyYWN0ZXJPZmZzZXQpKQorICAgICAgICBw
cmV2aW91cyA9IHByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KHByZXZpb3VzKTsKICAgICAKICAgICBy
ZXR1cm4gc3RhcnRDaGFyYWN0ZXJPZmZzZXRPZlNlbnRlbmNlKHByZXZpb3VzKTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCShyZXZpc2lv
biAxOTY2OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMTk2LDggKzE5Niw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHRl
eHRNYXJrZXJEYXRhRm9yUHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmLCBj
b25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0
aW9uRm9yVGV4dE1hcmtlckRhdGEoVGV4dE1hcmtlckRhdGEmKTsKICAgICBDaGFyYWN0ZXJPZmZz
ZXQgY2hhcmFjdGVyT2Zmc2V0Rm9yVGV4dE1hcmtlckRhdGEoVGV4dE1hcmtlckRhdGEmKTsKLSAg
ICBDaGFyYWN0ZXJPZmZzZXQgbmV4dENoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZz
ZXQmLCBib29sIGlnbm9yZVN0YXJ0ID0gdHJ1ZSk7Ci0gICAgQ2hhcmFjdGVyT2Zmc2V0IHByZXZp
b3VzQ2hhcmFjdGVyT2Zmc2V0KGNvbnN0IENoYXJhY3Rlck9mZnNldCYsIGJvb2wgaWdub3JlU3Rh
cnQgPSB0cnVlKTsKKyAgICAvLyBVc2UgaWdub3JlTmV4dE5vZGVTdGFydC9pZ25vcmVQcmV2aW91
c05vZGVFbmQgdG8gZGV0ZXJtaW5lIHRoZSBiZWhhdmlvciB3aGVuIHdlIGFyZSBhdCBub2RlIGJv
dW5kYXJ5LiAKKyAgICBDaGFyYWN0ZXJPZmZzZXQgbmV4dENoYXJhY3Rlck9mZnNldChjb25zdCBD
aGFyYWN0ZXJPZmZzZXQmLCBib29sIGlnbm9yZU5leHROb2RlU3RhcnQgPSB0cnVlKTsKKyAgICBD
aGFyYWN0ZXJPZmZzZXQgcHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zm
c2V0JiwgYm9vbCBpZ25vcmVQcmV2aW91c05vZGVFbmQgPSB0cnVlKTsKICAgICB2b2lkIHN0YXJ0
T3JFbmRUZXh0TWFya2VyRGF0YUZvclJhbmdlKFRleHRNYXJrZXJEYXRhJiwgUmVmUHRyPFJhbmdl
PiwgYm9vbCk7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjZXNzaWJpbGl0eU9iamVjdEZv
clRleHRNYXJrZXJEYXRhKFRleHRNYXJrZXJEYXRhJik7CiAgICAgUmVmUHRyPFJhbmdlPiByYW5n
ZUZvclVub3JkZXJlZENoYXJhY3Rlck9mZnNldHMoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiwgY29u
c3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CkBAIC0zMTQsNyArMzE1LDcgQEAgcHJvdGVjdGVkOgogICAg
IGVudW0gVHJhdmVyc2VPcHRpb24geyBUcmF2ZXJzZU9wdGlvbkRlZmF1bHQgPSAxIDw8IDAsIFRy
YXZlcnNlT3B0aW9uVG9Ob2RlRW5kID0gMSA8PCAxLCBUcmF2ZXJzZU9wdGlvbkluY2x1ZGVTdGFy
dCA9IDEgPDwgMiB9OwogICAgIE5vZGUqIG5leHROb2RlKE5vZGUqKSBjb25zdDsKICAgICBOb2Rl
KiBwcmV2aW91c05vZGUoTm9kZSopIGNvbnN0OwotICAgIENoYXJhY3Rlck9mZnNldCB0cmF2ZXJz
ZVRvT2Zmc2V0SW5SYW5nZShSZWZQdHI8UmFuZ2U+LCBpbnQsIGJvb2wsIGJvb2wgc3RheVdpdGhp
blJhbmdlID0gZmFsc2UpOworICAgIENoYXJhY3Rlck9mZnNldCB0cmF2ZXJzZVRvT2Zmc2V0SW5S
YW5nZShSZWZQdHI8UmFuZ2U+LCBpbnQsIFRyYXZlcnNlT3B0aW9uID0gVHJhdmVyc2VPcHRpb25E
ZWZhdWx0LCBib29sIHN0YXlXaXRoaW5SYW5nZSA9IGZhbHNlKTsKICAgICBWaXNpYmxlUG9zaXRp
b24gdmlzaWJsZVBvc2l0aW9uRnJvbUNoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZz
ZXQmKTsKICAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0RnJvbVZpc2libGVQb3Np
dGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKICAgICB2b2lkIHNldFRleHRNYXJrZXJEYXRh
V2l0aENoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYsIGNvbnN0IENoYXJhY3Rlck9mZnNl
dCYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0JKHJldmlz
aW9uIDE5NjY5OSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjkzLDE5ICsx
MjkzLDkgQEAgLSAoTlNBdHRyaWJ1dGVkU3RyaW5nKilkb0FYQXR0cmlidXRlZFN0cgogICAgIGlm
ICghbV9vYmplY3QpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCi0gICAgLy8gZXh0cmFjdCB0
aGUgc3RhcnQgYW5kIGVuZCBWaXNpYmxlUG9zaXRpb24KLSAgICBWaXNpYmxlUG9zaXRpb24gc3Rh
cnRWaXNpYmxlUG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25Gb3JTdGFydE9mVGV4dE1hcmtlclJh
bmdlKG1fb2JqZWN0LT5heE9iamVjdENhY2hlKCksIHRleHRNYXJrZXJSYW5nZSk7Ci0gICAgaWYg
KHN0YXJ0VmlzaWJsZVBvc2l0aW9uLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gbmlsOwotICAg
IAotICAgIFZpc2libGVQb3NpdGlvbiBlbmRWaXNpYmxlUG9zaXRpb24gPSB2aXNpYmxlUG9zaXRp
b25Gb3JFbmRPZlRleHRNYXJrZXJSYW5nZShtX29iamVjdC0+YXhPYmplY3RDYWNoZSgpLCB0ZXh0
TWFya2VyUmFuZ2UpOwotICAgIGlmIChlbmRWaXNpYmxlUG9zaXRpb24uaXNOdWxsKCkpCi0gICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBv
c2l0aW9uUmFuZ2Uoc3RhcnRWaXNpYmxlUG9zaXRpb24sIGVuZFZpc2libGVQb3NpdGlvbik7Ci0g
ICAgLy8gaXRlcmF0ZSBvdmVyIHRoZSByYW5nZSB0byBidWlsZCB0aGUgQVggYXR0cmlidXRlZCBz
dHJpbmcKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gW3NlbGYgcmFuZ2VGb3JUZXh0TWFya2Vy
UmFuZ2U6dGV4dE1hcmtlclJhbmdlXTsKICAgICBOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBh
dHRyU3RyaW5nID0gW1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0XTsKLSAg
ICBUZXh0SXRlcmF0b3IgaXQobWFrZVJhbmdlKHN0YXJ0VmlzaWJsZVBvc2l0aW9uLCBlbmRWaXNp
YmxlUG9zaXRpb24pLmdldCgpKTsKKyAgICBUZXh0SXRlcmF0b3IgaXQocmFuZ2UuZ2V0KCkpOwog
ICAgIHdoaWxlICghaXQuYXRFbmQoKSkgewogICAgICAgICAvLyBsb2NhdGUgdGhlIG5vZGUgYW5k
IHN0YXJ0aW5nIG9mZnNldCBmb3IgdGhpcyByYW5nZQogICAgICAgICBOb2RlJiBub2RlID0gaXQu
cmFuZ2UoKS0+c3RhcnRDb250YWluZXIoKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NjY5OSkKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisy
MDE2LTAyLTE5ICBOYW4gV2FuZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IElu
Y29uc2lzdGVuY3kgYmV0d2VlbiBDaGFyYWN0ZXJPZmZzZXQgYW5kIFZpc2libGVQb3N0aXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDQzMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9tYWMvdGV4dC1tYXJrZXItd29yZC1uYXYtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvbWFjL3RleHQtbWFya2VyLXdvcmQtbmF2Lmh0bWw6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0Lmh0bWw6
CisKIDIwMTYtMDItMTcgIE5hbiBXYW5nICA8bl93YW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBB
WDogSW1wbGVtZW50IHNlbnRlbmNlIHJlbGF0ZWQgdGV4dCBtYXJrZXIgZnVuY3Rpb25zIHVzaW5n
IFRleHRJdGVyYXRvcgpJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dC1t
YXJrZXItd29yZC1uYXYtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvbWFjL3RleHQtbWFya2VyLXdvcmQtbmF2LWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMTk2Njk5KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dC1tYXJrZXIt
d29yZC1uYXYtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xOSw2ICsxOSwxMSBAQCBM
ZWZ0IHdvcmQgaXM6IHdvcmQxCiBSaWdodCB3b3JkIGlzOiB3b3JkMQogUHJlIHdvcmQgc3RhcnQg
dG8gbmV4dCB3b3JkIGVuZDogd29yZDEKIAorQ3VycmVudCBjaGFyYWN0ZXIgaXM6IHQKK0xlZnQg
d29yZCBpczogdGVzdAorUmlnaHQgd29yZCBpczogCitQcmUgd29yZCBzdGFydCB0byBuZXh0IHdv
cmQgZW5kOiB0ZXN0J2xpbmUgYnJlYWsnVGhpc2lzbG9uZ3dvcmQKKwogQ3VycmVudCBjaGFyYWN0
ZXIgaXM6IFQKIExlZnQgd29yZCBpczogVGhpc2lzbG9uZ3dvcmQKIFJpZ2h0IHdvcmQgaXM6IFRo
aXNpc2xvbmd3b3JkCkBAIC04NiwxNyArOTEsMTcgQEAgUHJlIHdvcmQgc3RhcnQgdG8gbmV4dCB3
b3JkIGVuZDogYm90aCAgIAogCiBDdXJyZW50IGNoYXJhY3RlciBpczogcwogTGVmdCB3b3JkIGlz
OiBzcGFjZXMKLVJpZ2h0IHdvcmQgaXM6ICdsaW5lIGJyZWFrJworUmlnaHQgd29yZCBpczogCiBQ
cmUgd29yZCBzdGFydCB0byBuZXh0IHdvcmQgZW5kOiBzcGFjZXMnbGluZSBicmVhaycKIAogQ3Vy
cmVudCBjaGFyYWN0ZXIgaXM6IGUKIExlZnQgd29yZCBpczogc29tZQotUmlnaHQgd29yZCBpczog
J2xpbmUgYnJlYWsnCitSaWdodCB3b3JkIGlzOiAKIFByZSB3b3JkIHN0YXJ0IHRvIG5leHQgd29y
ZCBlbmQ6IHNvbWUnbGluZSBicmVhaycKIAogQ3VycmVudCBjaGFyYWN0ZXIgaXM6ICdsaW5lIGJy
ZWFrJwotTGVmdCB3b3JkIGlzOiAnbGluZSBicmVhaycKLVJpZ2h0IHdvcmQgaXM6IHRleHQKK0xl
ZnQgd29yZCBpczogCitSaWdodCB3b3JkIGlzOiAKIFByZSB3b3JkIHN0YXJ0IHRvIG5leHQgd29y
ZCBlbmQ6ICdsaW5lIGJyZWFrJ3RleHQKIAogQ3VycmVudCBjaGFyYWN0ZXIgaXM6ICAKSW5kZXg6
IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHQtbWFya2VyLXdvcmQtbmF2Lmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dC1tYXJrZXIt
d29yZC1uYXYuaHRtbAkocmV2aXNpb24gMTk2Njk5KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9tYWMvdGV4dC1tYXJrZXItd29yZC1uYXYuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNTcs
MTcgKzU3LDIwIEBAIHRlc3QgYXVkaW8gPGF1ZGlvIGNvbnRyb2xzPjxzb3VyY2Ugc3JjPSIKICAg
ICAgICAgdmFyIHN0YXJ0TWFya2VyID0gdGV4dC5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2Vy
UmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKICAgICAgICAgdmFyIGN1cnJlbnRNYXJrZXIgPSBhZHZh
bmNlQW5kVmVyaWZ5KHN0YXJ0TWFya2VyLCAxLCB0ZXh0KTsKICAgICAgICAgCisgICAgICAgIC8v
IENoZWNrIHRoYXQgd2UgYXJlIGF0IHRoZSBlbmQgb2YgcGFyYWdyYXBoLCBzbyByaWdodCB3b3Jk
IHNob3VsZCBiZSBlbXB0eQorICAgICAgICBjdXJyZW50TWFya2VyID0gYWR2YW5jZUFuZFZlcmlm
eShjdXJyZW50TWFya2VyLCA5LCB0ZXh0KTsKKyAgICAgICAgCiAgICAgICAgIC8vIENoZWNrIHRo
ZSBjYXNlIHdpdGggc3BhbgogICAgICAgICAvLyBBdCAiVCIgaW4gIlRoaXNpcyIsIHNob3VsZCBy
ZXR1cm4gdGhlIHdvcmQgYXMgIlRoaXNpc2xvbmd3b3JkIi4KLSAgICAgICAgY3VycmVudE1hcmtl
ciA9IGFkdmFuY2VBbmRWZXJpZnkoY3VycmVudE1hcmtlciwgMTAsIHRleHQpOworICAgICAgICBj
dXJyZW50TWFya2VyID0gYWR2YW5jZUFuZFZlcmlmeShjdXJyZW50TWFya2VyLCAyLCB0ZXh0KTsK
ICAgICAgICAgLy8gQXQgIiAiIGJlZm9yZSAiSSIsIHRoZSB3b3JkIHNob3VsZCBiZSAiSSdsbCIu
Ci0gICAgICAgIGN1cnJlbnRNYXJrZXIgPSBhZHZhbmNlQW5kVmVyaWZ5KGN1cnJlbnRNYXJrZXIs
IDE0LCB0ZXh0KTsKKyAgICAgICAgY3VycmVudE1hcmtlciA9IGFkdmFuY2VBbmRWZXJpZnkoY3Vy
cmVudE1hcmtlciwgMTUsIHRleHQpOwogICAgICAgICAvLyBBdCAiICIgYmVmb3JlICJ0cnkiLCB0
aGUgd29yZCBzaG91bGQgZXhjbHVkZXMgIi4iCi0gICAgICAgIGN1cnJlbnRNYXJrZXIgPSBhZHZh
bmNlQW5kVmVyaWZ5KGN1cnJlbnRNYXJrZXIsIDUsIHRleHQpOworICAgICAgICBjdXJyZW50TWFy
a2VyID0gYWR2YW5jZUFuZFZlcmlmeShjdXJyZW50TWFya2VyLCA2LCB0ZXh0KTsKICAgICAgICAg
CiAgICAgICAgIC8vIENoZWNrIHRoZSBjYXNlIHdpdGggY29udGVudGVkaXRhYmxlCiAgICAgICAg
IC8vIEF0ICJlIiBpbiAiZWRpdGFibGUiLCB0aGUgd29yZCBzaG91bGQgTk9UIGluY2x1ZGUgIkNv
bnRlbnQiIGJlZm9yZSBpdC4KLSAgICAgICAgY3VycmVudE1hcmtlciA9IGFkdmFuY2VBbmRWZXJp
ZnkoY3VycmVudE1hcmtlciwgMTcsIHRleHQpOworICAgICAgICBjdXJyZW50TWFya2VyID0gYWR2
YW5jZUFuZFZlcmlmeShjdXJyZW50TWFya2VyLCAxOSwgdGV4dCk7CiAgICAgICAgIAogICAgICAg
ICAvLyBDaGVjayB0aGUgY2FzZSB3aXRoIHJlcGxhY2VkIG5vZGUsIHRoZSByZXBsYWNlZCBub2Rl
IHNob3VsZCBiZSBjb25zaWRlcmVkIGEgd29yZC4KICAgICAgICAgdmFyIHRleHQyID0gYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0MiIpOwpJbmRleDog
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91
cy1uZXh0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90ZXh0
LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0Lmh0bWwJKHJldmlzaW9uIDE5NjY5OSkK
KysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJl
dmlvdXMtbmV4dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00OSwzMSArNDksMzIgQEAgZgogICAg
ICAgICBzaG91bGRCZVRydWUoInRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2Vy
KGVuZE1hcmtlcikuaXNFcXVhbCh0ZXh0KSIpOwogICAgICAgICAKICAgICAgICAgLy8gQ2hlY2sg
bmV4dCB0ZXh0IG1hcmtlci4gKEFkdmFuY2UgNSBjaGFyYWN0ZXJzLCBpdCB3aWxsIGxhbmQgYXQg
PGJyPi4pCi0gICAgICAgIHZhciBjdXJyZW50TWFya2VyID0gc3RhcnRNYXJrZXI7Ci0gICAgICAg
IHZhciBwcmV2aW91c01hcmtlciwgbWFya2VyUmFuZ2U7Ci0gICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgNTsgaSsrKSB7Ci0gICAgICAgICAgICBwcmV2aW91c01hcmtlciA9IGN1cnJlbnRNYXJr
ZXI7Ci0gICAgICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dC5uZXh0VGV4dE1hcmtlcihjdXJy
ZW50TWFya2VyKTsKLSAgICAgICAgfQorICAgICAgICB2YXIgY3VycmVudE1hcmtlciwgcHJldmlv
dXNNYXJrZXIsIG1hcmtlclJhbmdlOzsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGZvcndhcmQoNSwg
cHJldmlvdXNNYXJrZXIsIHN0YXJ0TWFya2VyLCB0ZXh0KTsKKyAgICAgICAgcHJldmlvdXNNYXJr
ZXIgPSByZXN1bHQucHJldmlvdXM7CisgICAgICAgIGN1cnJlbnRNYXJrZXIgPSByZXN1bHQuY3Vy
cmVudDsKICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtl
cnMocHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIpOwogICAgICAgICB2YXIgbmV3bGluZSA9
ICdcbic7CiAgICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSht
YXJrZXJSYW5nZSkiLCAibmV3bGluZSIpOwogICAgICAgICAKLSAgICAgICAgLy8gQWR2YW5jZSBv
bmUgbW9yZSBjaGFyYWN0ZXIsIGl0IHdpbGwgbGFuZGUgYXQgInQiIGluICJ0ZXh0MSIuCi0gICAg
ICAgIHByZXZpb3VzTWFya2VyID0gY3VycmVudE1hcmtlcjsKLSAgICAgICAgY3VycmVudE1hcmtl
ciA9IHRleHQubmV4dFRleHRNYXJrZXIoY3VycmVudE1hcmtlcik7CisgICAgICAgIC8vIEFkdmFu
Y2Ugb25lIG1vcmUgY2hhcmFjdGVycywgaXQgd2lsbCBsYW5kZSBhdCAidCIgaW4gInRleHQxIi4K
KyAgICAgICAgcmVzdWx0ID0gZm9yd2FyZCgxLCBwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtl
ciwgdGV4dCk7CisgICAgICAgIHByZXZpb3VzTWFya2VyID0gcmVzdWx0LnByZXZpb3VzOworICAg
ICAgICBjdXJyZW50TWFya2VyID0gcmVzdWx0LmN1cnJlbnQ7CiAgICAgICAgIG1hcmtlclJhbmdl
ID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50
TWFya2VyKTsKICAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
KG1hcmtlclJhbmdlKSIsICIndCciKTsKICAgICAgICAgCiAgICAgICAgIC8vIENoZWNrIHByZXZp
b3VzIHRleHQgbWFya2VyLiAoVHJhdmVyc2UgYmFja3dhcmRzIG9uZSBjaGFyYWN0ZXIsIGl0IHdp
bGwgbGFuZCBhdCA8YnI+LikKLSAgICAgICAgcHJldmlvdXNNYXJrZXIgPSB0ZXh0LnByZXZpb3Vz
VGV4dE1hcmtlcihwcmV2aW91c01hcmtlcik7Ci0gICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0
LnByZXZpb3VzVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKKyAgICAgICAgcmVzdWx0ID0gYmFj
a3dhcmRzKDEsIHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyLCB0ZXh0KTsKKyAgICAgICAg
cHJldmlvdXNNYXJrZXIgPSByZXN1bHQucHJldmlvdXM7CisgICAgICAgIGN1cnJlbnRNYXJrZXIg
PSByZXN1bHQuY3VycmVudDsKICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJS
YW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIpOwogICAgICAgICBz
aG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIm5l
d2xpbmUiKTsKICAgICAgICAgCi0gICAgICAgIC8vIFRyYXZlcnNlIGJhY2t3YXJkcyBvbmUgbW9y
ZSBjaGFyYWN0ZXIsIGl0IHdpbGwgbGFuZCBhdCB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgInRleHQi
LgotICAgICAgICBwcmV2aW91c01hcmtlciA9IHRleHQucHJldmlvdXNUZXh0TWFya2VyKHByZXZp
b3VzTWFya2VyKTsKLSAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQucHJldmlvdXNUZXh0TWFy
a2VyKGN1cnJlbnRNYXJrZXIpOworICAgICAgICAvLyBUcmF2ZXJzZSBiYWNrd2FyZHMgdHdvIG1v
cmUgY2hhcmFjdGVyLCBpdCB3aWxsIGxhbmQgYXQgdGhlIGxhc3QgY2hhcmFjdGVyIG9mICJ0ZXh0
Ii4KKyAgICAgICAgcmVzdWx0ID0gYmFja3dhcmRzKDIsIHByZXZpb3VzTWFya2VyLCBjdXJyZW50
TWFya2VyLCB0ZXh0KTsKKyAgICAgICAgcHJldmlvdXNNYXJrZXIgPSByZXN1bHQucHJldmlvdXM7
CisgICAgICAgIGN1cnJlbnRNYXJrZXIgPSByZXN1bHQuY3VycmVudDsKICAgICAgICAgbWFya2Vy
UmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1
cnJlbnRNYXJrZXIpOwogICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2Vy
UmFuZ2UobWFya2VyUmFuZ2UpIiwgIid0JyIpOwogICAgICAgICAKQEAgLTg2LDMwICs4NywyOSBA
QCBmCiAgICAgICAgIAogICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dDIuc3RhcnRUZXh0TWFy
a2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZTIpOwogICAgICAgICAvLyBBZHZh
bmNlIDUgY2hhcmFjdGVycywgaXQgd2lsbCBsYW5kIGF0ICJkIi4KLSAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCA1OyBpKyspIHsKLSAgICAgICAgICAgIHByZXZpb3VzTWFya2VyID0gY3VycmVu
dE1hcmtlcjsKLSAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0Mi5uZXh0VGV4dE1hcmtl
cihjdXJyZW50TWFya2VyKTsKLSAgICAgICAgfQorICAgICAgICByZXN1bHQgPSBmb3J3YXJkKDUs
IHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyLCB0ZXh0Mik7CisgICAgICAgIHByZXZpb3Vz
TWFya2VyID0gcmVzdWx0LnByZXZpb3VzOworICAgICAgICBjdXJyZW50TWFya2VyID0gcmVzdWx0
LmN1cnJlbnQ7CiAgICAgICAgIG1hcmtlclJhbmdlID0gdGV4dDIudGV4dE1hcmtlclJhbmdlRm9y
TWFya2VycyhwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlcik7CiAgICAgICAgIHNob3VsZEJl
KCJ0ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidkJyIpOwog
ICAgICAgICAKLSAgICAgICAgLy8gVHJhdmVyc2UgYmFja3dhcmRzIDUgY2hhcmFjdGVycywgaXQg
d2lsbCBsYW5kIGF0IHRoZSBsYXN0IGNoYXJhY3RlciBvZiAidGV4dDEiLgotICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IDU7IGkrKykgewotICAgICAgICAgICAgcHJldmlvdXNNYXJrZXIgPSB0
ZXh0Mi5wcmV2aW91c1RleHRNYXJrZXIocHJldmlvdXNNYXJrZXIpOwotICAgICAgICAgICAgY3Vy
cmVudE1hcmtlciA9IHRleHQyLnByZXZpb3VzVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKLSAg
ICAgICAgfQorICAgICAgICAvLyBUcmF2ZXJzZSBiYWNrd2FyZHMgOCBjaGFyYWN0ZXJzLCBpdCB3
aWxsIGxhbmQgYXQgdGhlIGxhc3QgY2hhcmFjdGVyIG9mICJ0ZXh0MSIuCisgICAgICAgIHJlc3Vs
dCA9IGJhY2t3YXJkcyg4LCBwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlciwgdGV4dDIpOwor
ICAgICAgICBwcmV2aW91c01hcmtlciA9IHJlc3VsdC5wcmV2aW91czsKKyAgICAgICAgY3VycmVu
dE1hcmtlciA9IHJlc3VsdC5jdXJyZW50OwogICAgICAgICBtYXJrZXJSYW5nZSA9IHRleHQyLnRl
eHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIpOwog
ICAgICAgICBzaG91bGRCZSgidGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJh
bmdlKSIsICInMSciKTsKICAgICAgICAgCiAgICAgICAgIC8vIENoZWNrIHRoZSBjYXNlIHdpdGgg
dXNlci1zZWxlY3Q6bm9uZSwgbmV4dFRleHRNYXJrZXIvcHJldmlvdXNUZXh0TWFya2VyIHNob3Vs
ZCBzdGlsbCB3b3JrLgogICAgICAgICB2YXIgdGV4dDMgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQzIik7CiAgICAgICAgIHRleHQzID0gdGV4dDMu
Y2hpbGRBdEluZGV4KDApOworICAgICAgICAKICAgICAgICAgLy8gQWR2YW5jZSB0byBsYW5kIGF0
IHVzZXItc2VsZWN0Om5vbmUgbm9kZS4KICAgICAgICAgdmFyIG1hcmtlcjEsIG1hcmtlcjI7Ci0g
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTc7IGkrKykgeworICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDE4OyBpKyspIHsKICAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0My5u
ZXh0VGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKLSAgICAgICAgICAgIC8vIGkgPT0gMTMsIGl0
IHNob3VsZCBsYW5kIG9uICJlIiwgYW5kIGkgPT0gMTYsIGl0IHNob3VsZCBsYW5kIG9uICJ0Igot
ICAgICAgICAgICAgaWYgKGkgPT0gMTMpIHsKKyAgICAgICAgICAgIC8vIGkgPT0gMTQsIGl0IHNo
b3VsZCBsYW5kIG9uICJlIiwgYW5kIGkgPT0gMTcsIGl0IHNob3VsZCBsYW5kIG9uICJ0IgorICAg
ICAgICAgICAgaWYgKGkgPT0gMTQpIHsKICAgICAgICAgICAgICAgICBtYXJrZXIxID0gY3VycmVu
dE1hcmtlcjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTM5LDYgKzEzOSw3IEBAIGYK
ICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRN
YXJrZXIoY3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0MykiKTsKICAgICAgICAgLy8gQ2hlY2sg
cHJldmlvdXMgdGV4dCBtYXJrZXIsIGl0IHNob3VsZCBsYW5kIG9uICIgZCIgbm9kZS4KICAgICAg
ICAgY3VycmVudE1hcmtlciA9IHRleHQyLnByZXZpb3VzVGV4dE1hcmtlcihjdXJyZW50TWFya2Vy
KTsKKyAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQyLnByZXZpb3VzVGV4dE1hcmtlcihjdXJy
ZW50TWFya2VyKTsKICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxl
bWVudEZvclRleHRNYXJrZXIoY3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0Mi5jaGlsZEF0SW5k
ZXgoMikpIik7CiAgICAgICAgIAogICAgICAgICAKQEAgLTE2Miw2ICsxNjMsMjcgQEAgZgogICAg
ICAgICBtYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhzdGFydE1h
cmtlciwgY3VycmVudE1hcmtlcikKICAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4
dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInYSciKTsKICAgICAgICAgCisgICAgICAgIGZ1
bmN0aW9uIGZvcndhcmQoY291bnQsIHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyLCBvYmop
IHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgICAg
ICAgICAgICAgIHByZXZpb3VzTWFya2VyID0gY3VycmVudE1hcmtlcjsKKyAgICAgICAgICAgICAg
ICBjdXJyZW50TWFya2VyID0gb2JqLm5leHRUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICBwcmV2aW91
czogcHJldmlvdXNNYXJrZXIsCisgICAgICAgICAgICAgICAgY3VycmVudDogY3VycmVudE1hcmtl
cgorICAgICAgICAgICAgfTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZnVuY3Rpb24g
YmFja3dhcmRzKGNvdW50LCBwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlciwgb2JqKSB7Cisg
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAgICAgICAg
ICAgICBwcmV2aW91c01hcmtlciA9IG9iai5wcmV2aW91c1RleHRNYXJrZXIocHJldmlvdXNNYXJr
ZXIpOworICAgICAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSBvYmoucHJldmlvdXNUZXh0TWFy
a2VyKGN1cnJlbnRNYXJrZXIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHsK
KyAgICAgICAgICAgICAgICBwcmV2aW91czogcHJldmlvdXNNYXJrZXIsCisgICAgICAgICAgICAg
ICAgY3VycmVudDogY3VycmVudE1hcmtlcgorICAgICAgICAgICAgfTsKKyAgICAgICAgfQogICAg
IH0KIAogPC9zY3JpcHQ+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>