<?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>133413</bug_id>
          
          <creation_ts>2014-05-30 16:08:02 -0700</creation_ts>
          <short_desc>REGRESSION (WebKit2): space space to insert period doesn&apos;t work in web forms</short_desc>
          <delta_ts>2014-06-02 13:43:50 -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>iPhone / iPad</rep_platform>
          <op_sys>Unspecified</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="Enrica Casucci">enrica</reporter>
          <assigned_to name="Enrica Casucci">enrica</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1012694</commentid>
    <comment_count>0</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2014-05-30 16:08:02 -0700</bug_when>
    <thetext>Any input field in Safari shows the problem, using the on-screen keyboard.

&lt;rdar://problem/16948333&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012695</commentid>
    <comment_count>1</comment_count>
      <attachid>232308</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2014-05-30 16:23:51 -0700</bug_when>
    <thetext>Created attachment 232308
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012698</commentid>
    <comment_count>2</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2014-05-30 16:36:45 -0700</bug_when>
    <thetext>I&apos;ve fixed the EWS failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012700</commentid>
    <comment_count>3</comment_count>
      <attachid>232310</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2014-05-30 16:39:08 -0700</bug_when>
    <thetext>Created attachment 232310
Patch that fixes EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012702</commentid>
    <comment_count>4</comment_count>
      <attachid>232310</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-05-30 16:45:28 -0700</bug_when>
    <thetext>Comment on attachment 232310
Patch that fixes EWS

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

&gt; Source/WebCore/editing/VisibleUnits.cpp:1819
&gt; +// The elements in the returned vector are:
&gt; +// 0 - the character after the given position (if it exists)
&gt; +// 1 - the character before the given position (if it exists)
&gt; +// 2 - the character before the position prior to the given position (if it exists).

Let&apos;s make the return value a struct. That way you can name all the values, which is gonna be easier to understand at the call sites.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012706</commentid>
    <comment_count>5</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2014-05-30 17:13:48 -0700</bug_when>
    <thetext>Landed the change that addresses Ben&apos;s comments.
Committed revision 169500.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012711</commentid>
    <comment_count>6</comment_count>
      <attachid>232310</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-05-30 18:05:54 -0700</bug_when>
    <thetext>Comment on attachment 232310
Patch that fixes EWS

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

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:2488
&gt; +    const UChar noBreakSpace = 0x00A0;

CharacterNames.h already has this constant. Can’t we include that instead of adding a new declaration?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012998</commentid>
    <comment_count>7</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2014-06-02 13:43:50 -0700</bug_when>
    <thetext>Removed unwanted changes.
Committed revision 169543</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232308</attachid>
            <date>2014-05-30 16:23:51 -0700</date>
            <delta_ts>2014-05-30 16:39:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>spacespacedot.txt</filename>
            <type>text/plain</type>
            <size>24180</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTQ5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDE0LTA1LTMwICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAoV2ViS2l0
Mik6IHNwYWNlIHNwYWNlIHRvIGluc2VydCBwZXJpb2QgZG9lc24ndCB3b3JrIGluIHdlYiBmb3Jt
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzQx
MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTY5NDgzMzM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIHV0aWxpdHkgZnVuY3Rpb25zIGFu
ZCB0aGVpciBleHBvcnRzLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICog
ZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGxhaW5UZXh0UmVw
bGFjaW5nTm9CcmVha1NwYWNlKTogU2FtZSBhcyBwbGFpblRleHQgYnV0CisgICAgICAgIHJlcGxh
Y2VzIG5vQnJlYWtTcGFjZSB3aXRoIHRoZSBzcGFjZSBjaGFyYWN0ZXIsIHRvIG1ha2UgaU9TCisg
ICAgICAgIFRleHRJbnB1dCBoYXBweS4KKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5o
OgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNoYXJhY3RlcnNBcm91bmRQb3NpdGlvbik6IENvbXB1dGVzIHRoZSB0aHJlZSBjaGFyYWN0ZXJz
CisgICAgICAgIHN1cnJvdW5kaW5nIGEgZ2l2ZW4gcG9zaXRpb246IG9uZSBhZnRlciwgb25lIGJl
Zm9yZSwgdHdvIGJlZm9yZS4KKyAgICAgICAgVGhpcyBpcyB1c2VkIHRvIHJldHVybiBpbmZvcm1h
dGlvbiBpbiBFZGl0b3JTdGF0ZSBpbiBXZWJLaXQyLgorICAgICAgICBJdCByZXBsYWNlcyBjaGFy
YWN0ZXJCZWZvcmVQb3NpdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OmNoYXJhY3RlckJlZm9yZVBv
c2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVVbml0cy5oOgorCiAy
MDE0LTA1LTMwICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ2xl
YW51cCB0ZW1wb3Jhcnkgc2V0dGluZyBvZiBpbWFnZSBpbnRlcnBvbGF0aW9uIHF1YWxpdHkgaW4g
R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UqCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2
aXNpb24gMTY5NDk4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTI2MDksNyArMjYwOSw3IEBAIF9fWk43V2ViQ29yZTIxd29yZFJhbmdlRnJvbVBv
c2l0aW9uRVJLTlMKIF9fWk43V2ViQ29yZTIyc3RhcnRPZkVkaXRhYmxlQ29udGVudEVSS05TXzE1
VmlzaWJsZVBvc2l0aW9uRQogX19aTjdXZWJDb3JlMjNhcHBsaWNhdGlvbklzTW9iaWxlTWFpbEV2
CiBfX1pON1dlYkNvcmUyM2F0Qm91bmRhcnlPZkdyYW51bGFyaXR5RVJLTlNfMTVWaXNpYmxlUG9z
aXRpb25FTlNfMTVUZXh0R3JhbnVsYXJpdHlFTlNfMThTZWxlY3Rpb25EaXJlY3Rpb25FCi1fX1pO
N1dlYkNvcmUyM2NoYXJhY3RlckJlZm9yZVBvc2l0aW9uRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25F
CitfX1pON1dlYkNvcmUyNGNoYXJhY3RlcnNBcm91bmRQb3NpdGlvbkVSS05TXzE1VmlzaWJsZVBv
c2l0aW9uRQogX19aTjdXZWJDb3JlMjREb2N1bWVudE1hcmtlckNvbnRyb2xsZXIxNG1hcmtlcnNJ
blJhbmdlRVBOU181UmFuZ2VFTlNfMTREb2N1bWVudE1hcmtlcjExTWFya2VyVHlwZXNFCiBfX1pO
N1dlYkNvcmUyNEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudDIxZW5hYmxlRGVub3JtYWxTdXBwb3J0
RXYKIF9fWk43V2ViQ29yZTI0RmxvYXRpbmdQb2ludEVudmlyb25tZW50MjVzYXZlTWFpblRocmVh
ZEVudmlyb25tZW50RXYKQEAgLTI2MzEsNiArMjYzMSw3IEBAIF9fWk43V2ViQ29yZTI3dGlsZUNv
bnRyb2xsZXJNZW1vcnlIYW5kbGUKIF9fWk43V2ViQ29yZTI3d2l0aGluVGV4dFVuaXRPZkdyYW51
bGFyaXR5RVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FTlNfMTVUZXh0R3JhbnVsYXJpdHlFTlNfMThT
ZWxlY3Rpb25EaXJlY3Rpb25FCiBfX1pON1dlYkNvcmUzMGNsb3Nlc3RXb3JkQm91bmRhcnlGb3JQ
b3NpdGlvbkVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRQogX19aTjdXZWJDb3JlMzBlbmNsb3NpbmdU
ZXh0VW5pdE9mR3JhbnVsYXJpdHlFUktOU18xNVZpc2libGVQb3NpdGlvbkVOU18xNVRleHRHcmFu
dWxhcml0eUVOU18xOFNlbGVjdGlvbkRpcmVjdGlvbkUKK19fWk43V2ViQ29yZTMwcGxhaW5UZXh0
UmVwbGFjaW5nTm9CcmVha1NwYWNlRVBLTlNfNVJhbmdlRXRiCiBfX1pON1dlYkNvcmUzMU5vblNo
YXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3JDMUVOM1dURjEwU3RyaW5nVmlld0UKIF9fWk43V2Vi
Q29yZTMxTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvckQxRXYKIF9fWk43V2ViQ29yZTMx
YXBwbGljYXRpb25Jc0RhaWppc2VuRGljdGlvbmFyeUV2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0SXRlcmF0b3IuY3BwCShyZXZpc2lvbiAxNjk0OTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MTMsNiArMjUx
MywxMSBAQCBTdHJpbmcgcGxhaW5UZXh0KGNvbnN0IFJhbmdlKiByLCBUZXh0SXRlCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAorU3RyaW5nIHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShj
b25zdCBSYW5nZSogcmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2aW9yIGRlZmF1bHRCZWhhdmlvciwg
Ym9vbCBpc0Rpc3BsYXlTdHJpbmcpCit7CisgICAgcmV0dXJuIHBsYWluVGV4dChyYW5nZSwgZGVm
YXVsdEJlaGF2aW9yLCBpc0Rpc3BsYXlTdHJpbmcpLnJlcGxhY2Uobm9CcmVha1NwYWNlLCAnICcp
OworfQorCiBzdGF0aWMgUGFzc1JlZlB0cjxSYW5nZT4gY29sbGFwc2VkVG9Cb3VuZGFyeShjb25z
dCBSYW5nZSYgcmFuZ2UsIGJvb2wgZm9yd2FyZCkKIHsKICAgICBSZWZQdHI8UmFuZ2U+IHJlc3Vs
dCA9IHJhbmdlLmNsb25lUmFuZ2UoQVNTRVJUX05PX0VYQ0VQVElPTik7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgJKHJldmlzaW9uIDE2OTQ5OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQx
LDcgQEAgY2xhc3MgUmVuZGVyVGV4dDsKIGNsYXNzIFJlbmRlclRleHRGcmFnbWVudDsKIAogU3Ry
aW5nIHBsYWluVGV4dChjb25zdCBSYW5nZSosIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4dEl0
ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCBib29sIGlzRGlzcGxheVN0cmluZyA9IGZhbHNlKTsKK1N0
cmluZyBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UoY29uc3QgUmFuZ2UqLCBUZXh0SXRl
cmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvciwgYm9vbCBpc0Rpc3Bs
YXlTdHJpbmcgPSBmYWxzZSk7CiBQYXNzUmVmUHRyPFJhbmdlPiBmaW5kUGxhaW5UZXh0KGNvbnN0
IFJhbmdlJiwgY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMpOwogCiAvLyBGSVhNRTogTW92ZSB0
aGlzIHNvbWV3aGVyZSBlbHNlIGluIHRoZSBlZGl0aW5nIGRpcmVjdG9yeS4gSXQgZG9lc24ndCBi
ZWxvbmcgaGVyZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAJ
KHJldmlzaW9uIDE2OTQ5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxMiwyNSArMTgxMiw0MyBAQCBpbnQgZGlzdGFuY2VC
ZXR3ZWVuUG9zaXRpb25zKGNvbnN0IFZpc2liCiAKICAgICByZXR1cm4gKHRoaXNJc1N0YXJ0ID8g
LWRpc3RhbmNlIDogZGlzdGFuY2UpOwogfQotICAgIAotVUNoYXIzMiBjaGFyYWN0ZXJCZWZvcmVQ
b3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uKQorCisvLyBUaGUgZWxlbWVu
dHMgaW4gdGhlIHJldHVybmVkIHZlY3RvciBhcmU6CisvLyAwIC0gdGhlIGNoYXJhY3RlciBhZnRl
ciB0aGUgZ2l2ZW4gcG9zaXRpb24gKGlmIGl0IGV4aXN0cykKKy8vIDEgLSB0aGUgY2hhcmFjdGVy
IGJlZm9yZSB0aGUgZ2l2ZW4gcG9zaXRpb24gKGlmIGl0IGV4aXN0cykKKy8vIDIgLSB0aGUgY2hh
cmFjdGVyIGJlZm9yZSB0aGUgcG9zaXRpb24gcHJpb3IgdG8gdGhlIGdpdmVuIHBvc2l0aW9uIChp
ZiBpdCBleGlzdHMpLgorCitWZWN0b3I8VUNoYXIzMj4gY2hhcmFjdGVyc0Fyb3VuZFBvc2l0aW9u
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pCiB7CisgICAgVmVjdG9yPFVDaGFyMzI+
IGNoYXJhY3RlcnMoMyk7CisKICAgICBpZiAocG9zaXRpb24uaXNOdWxsKCkgfHwgaXNTdGFydE9m
RG9jdW1lbnQocG9zaXRpb24pKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIGNo
YXJhY3RlcnM7CisKKyAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRQb3NpdGlvbiA9IHBvc2l0aW9u
OworICAgIFZpc2libGVQb3NpdGlvbiBlbmRQb3NpdGlvbiA9IHBvc2l0aW9uOworCisgICAgVmlz
aWJsZVBvc2l0aW9uIG5leHRQb3NpdGlvbiA9IG5leHRDaGFyYWN0ZXJCb3VuZGFyeUluRGlyZWN0
aW9uKHBvc2l0aW9uLCBEaXJlY3Rpb25Gb3J3YXJkKTsKKyAgICBpZiAobmV4dFBvc2l0aW9uLmlz
Tm90TnVsbCgpKQorICAgICAgICBlbmRQb3NpdGlvbiA9IG5leHRQb3NpdGlvbjsKKwogICAgIFZp
c2libGVQb3NpdGlvbiBwcmV2aW91c1Bvc2l0aW9uID0gbmV4dENoYXJhY3RlckJvdW5kYXJ5SW5E
aXJlY3Rpb24ocG9zaXRpb24sIERpcmVjdGlvbkJhY2t3YXJkKTsKLSAgICBpZiAocHJldmlvdXNQ
b3NpdGlvbi5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgU3RyaW5nIGNoYXJhY3Rl
clN0cmluZyA9IHBsYWluVGV4dChSYW5nZTo6Y3JlYXRlKHBvc2l0aW9uLmRlZXBFcXVpdmFsZW50
KCkuYW5jaG9yTm9kZSgpLT5kb2N1bWVudCgpLCBwcmV2aW91c1Bvc2l0aW9uLCBwb3NpdGlvbiku
Z2V0KCksIFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvciwgdHJ1ZSk7Ci0gICAgaWYgKGNoYXJh
Y3RlclN0cmluZy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIAotICAgIGlmIChj
aGFyYWN0ZXJTdHJpbmcubGVuZ3RoKCkgPT0gMikgewotICAgICAgICBVVEYzMkNoYXIgbGVhZCA9
IGNoYXJhY3RlclN0cmluZ1swXTsKLSAgICAgICAgVVRGMzJDaGFyIHRyYWlsID0gY2hhcmFjdGVy
U3RyaW5nWzFdOwotICAgICAgICBpZiAoVTE2X0lTX0xFQUQobGVhZCkgJiYgVTE2X0lTX1RSQUlM
KHRyYWlsKSkKLSAgICAgICAgICAgIHJldHVybiBVMTZfR0VUX1NVUFBMRU1FTlRBUlkobGVhZCwg
dHJhaWwpOworICAgIGlmIChwcmV2aW91c1Bvc2l0aW9uLmlzTm90TnVsbCgpKSB7CisgICAgICAg
IHN0YXJ0UG9zaXRpb24gPSBwcmV2aW91c1Bvc2l0aW9uOworICAgICAgICBwcmV2aW91c1Bvc2l0
aW9uID0gbmV4dENoYXJhY3RlckJvdW5kYXJ5SW5EaXJlY3Rpb24ocHJldmlvdXNQb3NpdGlvbiwg
RGlyZWN0aW9uQmFja3dhcmQpOworICAgICAgICBpZiAocHJldmlvdXNQb3NpdGlvbi5pc05vdE51
bGwoKSkKKyAgICAgICAgICAgIHN0YXJ0UG9zaXRpb24gPSBwcmV2aW91c1Bvc2l0aW9uOworICAg
IH0KKworICAgIGlmIChzdGFydFBvc2l0aW9uICE9IGVuZFBvc2l0aW9uKSB7CisgICAgICAgIFN0
cmluZyBjaGFyYWN0ZXJTdHJpbmcgPSBwbGFpblRleHQoUmFuZ2U6OmNyZWF0ZShwb3NpdGlvbi5k
ZWVwRXF1aXZhbGVudCgpLmFuY2hvck5vZGUoKS0+ZG9jdW1lbnQoKSwgc3RhcnRQb3NpdGlvbiwg
ZW5kUG9zaXRpb24pLmdldCgpKS5yZXBsYWNlKG5vQnJlYWtTcGFjZSwgJyAnKTsKKyAgICAgICAg
Zm9yIChpbnQgaSA9IGNoYXJhY3RlclN0cmluZy5sZW5ndGgoKSAtIDEsIGluZGV4ID0gMDsgaSA+
PSAwOyAtLWkpIHsKKyAgICAgICAgICAgIGlmICghaW5kZXggJiYgbmV4dFBvc2l0aW9uLmlzTnVs
bCgpKQorICAgICAgICAgICAgICAgIGluZGV4Kys7CisgICAgICAgICAgICBjaGFyYWN0ZXJzW2lu
ZGV4KytdID0gY2hhcmFjdGVyU3RyaW5nW2ldOworICAgICAgICB9CiAgICAgfQotICAgIHJldHVy
biBjaGFyYWN0ZXJTdHJpbmdbMF0gIT0gbm9CcmVha1NwYWNlID8gY2hhcmFjdGVyU3RyaW5nWzBd
IDogJyAnOworICAgIHJldHVybiBjaGFyYWN0ZXJzOwogfQogCiBQYXNzUmVmUHRyPFJhbmdlPiB3
b3JkUmFuZ2VGcm9tUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuaAkocmV2aXNpb24gMTY5NDk4KQor
KysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuaAkod29ya2luZyBjb3B5KQpA
QCAtMTA0LDcgKzEwNCw3IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IGVuY2xvc2luZ1RleHRVbml0T2ZH
cmEKIGludCBkaXN0YW5jZUJldHdlZW5Qb3NpdGlvbnMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwg
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CiBQYXNzUmVmUHRyPFJhbmdlPiB3b3JkUmFuZ2VGcm9t
UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbik7CiBWaXNpYmxlUG9zaXRp
b24gY2xvc2VzdFdvcmRCb3VuZGFyeUZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
cG9zaXRpb24pOwotVUNoYXIzMiBjaGFyYWN0ZXJCZWZvcmVQb3NpdGlvbihjb25zdCBWaXNpYmxl
UG9zaXRpb24mKTsKK1ZlY3RvcjxVQ2hhcjMyPiBjaGFyYWN0ZXJzQXJvdW5kUG9zaXRpb24oY29u
c3QgVmlzaWJsZVBvc2l0aW9uJik7CiAjZW5kaWYKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJ
bmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTY5NDk4KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTQtMDUtMzAgIEVucmljYSBD
YXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChXZWJLaXQy
KTogc3BhY2Ugc3BhY2UgdG8gaW5zZXJ0IHBlcmlvZCBkb2Vzbid0IHdvcmsgaW4gd2ViIGZvcm1z
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzNDEz
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNjk0ODMzMz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBpT1MgVGV4dElucHV0IG5lZWRzIHRvIGtub3cg
YWJvdXQgY29udGVudCBzdXJyb3VuZGluZyB0aGUKKyAgICAgICAgY3VycmVudCBwb3NpdGlvbiB3
aGlsZSBlZGl0aW5nLiBTaW5jZSB3ZSBkb24ndCB3YW50IHRvCisgICAgICAgIHF1ZXJ5IHRoaXMg
aW5mb3JtYXRpb24gc3luY2hyb25vdXNseSB3aGVuIGFza2VkLCB3ZSBjYWNoZSBpdAorICAgICAg
ICBhcyBwYXJ0IG9mIHRoZSBFZGl0b3JTdGF0ZS4gRWRpdG9yU3RhdGUgbm93IGNvbnRhaW5zIGEg
dmVjdG9yIG9mCisgICAgICAgIHRocmVlIGNoYXJhY3RlcnMgcmVwcmVzZW50aW5nIHRoZSBjb250
ZW50IGFmdGVyLCBiZWZvcmUgYW5kIHR3bworICAgICAgICBwb3NpdGlvbiBiZWZvcmUgdGhlIGNh
cmV0IHBvc2l0aW9uLgorICAgICAgICBUaGUgcGF0Y2ggYWxzbyByZXBsYWNlcyBhbGwgY2FsbHMg
dG8gcGxhaW5UZXh0IHdpdGggcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlCisgICAgICAg
IHRvIHdvcmsgd2VsbCB3aXRoIGlPUyB0ZXh0IGlucHV0LgorCisgICAgICAgICogU2hhcmVkL0Vk
aXRvclN0YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yU3RhdGU6OmVuY29kZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkVkaXRvclN0YXRlOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9F
ZGl0b3JTdGF0ZS5oOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JTdGF0ZTo6RWRpdG9yU3RhdGUp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgor
ICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jaGFyYWN0ZXJCZWZvcmVDYXJldFNlbGVjdGlvbl0p
OgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jaGFyYWN0ZXJJblJlbGF0aW9uVG9DYXJldFNl
bGVjdGlvbjpdKToKKyAgICAgICAgKCtbV0tBdXRvY29ycmVjdGlvbkNvbnRleHQgYXV0b2NvcnJl
Y3Rpb25Db250ZXh0V2l0aERhdGE6bWFya2VkVGV4dDpzZWxlY3RlZFRleHQ6YWZ0ZXJUZXh0OnNl
bGVjdGVkUmFuZ2VJbk1hcmtlZFRleHQ6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjplZGl0b3JTdGF0ZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0RGljdGF0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJlcGxhY2VTZWxlY3RlZFRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpyZXBsYWNlRGljdGF0ZWRUZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVx
dWVzdEF1dG9jb3JyZWN0aW9uRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnN5bmNB
cHBseUF1dG9jb3JyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6Y29tcHV0ZUF1dG9jb3JyZWN0
aW9uQ29udGV4dCk6CisKIDIwMTQtMDUtMzAgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxl
LmNvbT4KIAogICAgICAgICBGaXhlZCB0aGUgYnVpbGQgYnkgYWRkaW5nIGJhY2sgYSBkZWNsYXJh
dGlvbiBJIGRlbGV0ZWQgYnkgYWNjaWRlbnQgOiguCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRWRpdG9yU3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9F
ZGl0b3JTdGF0ZS5jcHAJKHJldmlzaW9uIDE2OTQ5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9FZGl0b3JTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgdm9pZCBF
ZGl0b3JTdGF0ZTo6ZW5jb2RlKElQQzo6QXJndW1lbnRFbgogCiAjaWYgUExBVEZPUk0oSU9TKQog
ICAgIGVuY29kZXIgPDwgaXNSZXBsYWNlQWxsb3dlZDsKLSAgICBlbmNvZGVyIDw8IGNoYXJhY3Rl
ckJlZm9yZVNlbGVjdGlvbjsKKyAgICBlbmNvZGVyIDw8IGNoYXJhY3RlcnNBcm91bmRTZWxlY3Rp
b247CiAgICAgZW5jb2RlciA8PCBjYXJldFJlY3RBdFN0YXJ0OwogICAgIGVuY29kZXIgPDwgY2Fy
ZXRSZWN0QXRFbmQ7CiAgICAgZW5jb2RlciA8PCBzZWxlY3Rpb25SZWN0czsKQEAgLTkzLDcgKzkz
LDcgQEAgYm9vbCBFZGl0b3JTdGF0ZTo6ZGVjb2RlKElQQzo6QXJndW1lbnREZQogI2lmIFBMQVRG
T1JNKElPUykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pc1JlcGxhY2VBbGxvd2Vk
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
LmNoYXJhY3RlckJlZm9yZVNlbGVjdGlvbikpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQuY2hhcmFjdGVyc0Fyb3VuZFNlbGVjdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jYXJldFJlY3RBdFN0YXJ0KSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0VkaXRvclN0YXRlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0VkaXRvclN0YXRlLmgJKHJldmlz
aW9uIDE2OTQ5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9FZGl0b3JTdGF0ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OCwxMCArNDgsMTAgQEAgc3RydWN0IEVkaXRvclN0YXRlIHsKICAgICAg
ICAgLCBoYXNDb21wb3NpdGlvbihmYWxzZSkKICNpZiBQTEFURk9STShJT1MpCiAgICAgICAgICwg
aXNSZXBsYWNlQWxsb3dlZChmYWxzZSkKLSAgICAgICAgLCBjaGFyYWN0ZXJCZWZvcmVTZWxlY3Rp
b24oMCkKICAgICAgICAgLCBzZWxlY3RlZFRleHRMZW5ndGgoMCkKICNlbmRpZgogICAgIHsKKyAg
ICAgICAgY2hhcmFjdGVyc0Fyb3VuZFNlbGVjdGlvbi5yZXNpemUoMyk7CiAgICAgfQogCiAgICAg
Ym9vbCBzaG91bGRJZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZTsKQEAgLTY2LDcgKzY2
LDcgQEAgc3RydWN0IEVkaXRvclN0YXRlIHsKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBib29s
IGlzUmVwbGFjZUFsbG93ZWQ7Ci0gICAgVUNoYXIzMiBjaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb247
CisgICAgVmVjdG9yPFVDaGFyMzI+IGNoYXJhY3RlcnNBcm91bmRTZWxlY3Rpb247CiAgICAgV2Vi
Q29yZTo6SW50UmVjdCBjYXJldFJlY3RBdFN0YXJ0OwogICAgIFdlYkNvcmU6OkludFJlY3QgY2Fy
ZXRSZWN0QXRFbmQ7CiAgICAgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlvblJlY3Q+IHNlbGVjdGlv
blJlY3RzOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0JKHJldmlzaW9uIDE2OTQ5OCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDgzLDcgKzE0ODMsMjEgQEAgLSAodm9pZClyZXF1ZXN0QXV0b2NvcnJl
Y3Rpb25SZWN0c0ZvclN0cgogCiAtIChVVEYzMkNoYXIpX2NoYXJhY3RlckJlZm9yZUNhcmV0U2Vs
ZWN0aW9uCiB7Ci0gICAgcmV0dXJuIF9wYWdlLT5lZGl0b3JTdGF0ZSgpLmNoYXJhY3RlckJlZm9y
ZVNlbGVjdGlvbjsKKyAgICByZXR1cm4gX3BhZ2UtPmVkaXRvclN0YXRlKCkuY2hhcmFjdGVyc0Fy
b3VuZFNlbGVjdGlvblsxXTsKK30KKworLSAoVVRGMzJDaGFyKV9jaGFyYWN0ZXJJblJlbGF0aW9u
VG9DYXJldFNlbGVjdGlvbjooaW50KWFtb3VudAoreworICAgIHN3aXRjaCAoYW1vdW50KSB7Cisg
ICAgY2FzZSAwOgorICAgICAgICByZXR1cm4gX3BhZ2UtPmVkaXRvclN0YXRlKCkuY2hhcmFjdGVy
c0Fyb3VuZFNlbGVjdGlvblswXTsKKyAgICBjYXNlIC0xOgorICAgICAgICByZXR1cm4gX3BhZ2Ut
PmVkaXRvclN0YXRlKCkuY2hhcmFjdGVyc0Fyb3VuZFNlbGVjdGlvblsxXTsKKyAgICBjYXNlIC0y
OgorICAgICAgICByZXR1cm4gX3BhZ2UtPmVkaXRvclN0YXRlKCkuY2hhcmFjdGVyc0Fyb3VuZFNl
bGVjdGlvblsyXTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gMDsKKyAgICB9CiB9CiAK
IC0gKENHUmVjdCl0ZXh0Rmlyc3RSZWN0CkBAIC0yNDcxLDE0ICsyNDg1LDE2IEBAICsgKFdLQXV0
b2NvcnJlY3Rpb25Db250ZXh0ICopYXV0b2NvcnJlY3QKIHsKICAgICBXS0F1dG9jb3JyZWN0aW9u
Q29udGV4dCAqY29udGV4dCA9IFtbV0tBdXRvY29ycmVjdGlvbkNvbnRleHQgYWxsb2NdIGluaXRd
OwogCisgICAgY29uc3QgVUNoYXIgbm9CcmVha1NwYWNlID0gMHgwMEEwOworCiAgICAgaWYgKFti
ZWZvcmVUZXh0IGxlbmd0aF0pCi0gICAgICAgIGNvbnRleHQuY29udGV4dEJlZm9yZVNlbGVjdGlv
biA9IFtiZWZvcmVUZXh0IGNvcHldOworICAgICAgICBjb250ZXh0LmNvbnRleHRCZWZvcmVTZWxl
Y3Rpb24gPSBbW2JlZm9yZVRleHQgX3N0cmluZ0J5UmVwbGFjaW5nQ2hhcmFjdGVyOih1bmljaGFy
KW5vQnJlYWtTcGFjZSB3aXRoQ2hhcmFjdGVyOicgJ10gY29weV07CiAgICAgaWYgKFtzZWxlY3Rl
ZFRleHQgbGVuZ3RoXSkKLSAgICAgICAgY29udGV4dC5zZWxlY3RlZFRleHQgPSBbc2VsZWN0ZWRU
ZXh0IGNvcHldOworICAgICAgICBjb250ZXh0LnNlbGVjdGVkVGV4dCA9IFtbc2VsZWN0ZWRUZXh0
IF9zdHJpbmdCeVJlcGxhY2luZ0NoYXJhY3RlcjoodW5pY2hhcilub0JyZWFrU3BhY2Ugd2l0aENo
YXJhY3RlcjonICddIGNvcHldOwogICAgIGlmIChbbWFya2VkVGV4dCBsZW5ndGhdKQotICAgICAg
ICBjb250ZXh0Lm1hcmtlZFRleHQgPSBbbWFya2VkVGV4dCBjb3B5XTsKKyAgICAgICAgY29udGV4
dC5tYXJrZWRUZXh0ID0gW1ttYXJrZWRUZXh0IF9zdHJpbmdCeVJlcGxhY2luZ0NoYXJhY3Rlcjoo
dW5pY2hhcilub0JyZWFrU3BhY2Ugd2l0aENoYXJhY3RlcjonICddIGNvcHldOwogICAgIGlmIChb
YWZ0ZXJUZXh0IGxlbmd0aF0pCi0gICAgICAgIGNvbnRleHQuY29udGV4dEFmdGVyU2VsZWN0aW9u
ID0gW2FmdGVyVGV4dCBjb3B5XTsKKyAgICAgICAgY29udGV4dC5jb250ZXh0QWZ0ZXJTZWxlY3Rp
b24gPSBbW2FmdGVyVGV4dCBfc3RyaW5nQnlSZXBsYWNpbmdDaGFyYWN0ZXI6KHVuaWNoYXIpbm9C
cmVha1NwYWNlIHdpdGhDaGFyYWN0ZXI6JyAnXSBjb3B5XTsKICAgICBjb250ZXh0LnJhbmdlSW5N
YXJrZWRUZXh0ID0gcmFuZ2U7CiAgICAgcmV0dXJuIFtjb250ZXh0IGF1dG9yZWxlYXNlXTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJ
KHJldmlzaW9uIDE2OTQ5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzA0LDcgKzcwNCw3IEBAIEVkaXRvclN0YXRl
IFdlYlBhZ2U6OmVkaXRvclN0YXRlKCkgY29uc3QKICAgICAgICAgICAgIHJlc3VsdC5sYXN0TWFy
a2VkUmVjdCA9IGNvbXBvc2l0aW9uUmVjdHMubGFzdCgpLnJlY3QoKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgcmVzdWx0Lmxhc3RNYXJrZWRSZWN0ID0gcmVzdWx0LmZpcnN0TWFya2VkUmVj
dDsKLSAgICAgICAgcmVzdWx0Lm1hcmtlZFRleHQgPSBwbGFpblRleHQoY29tcG9zaXRpb25SYW5n
ZS5nZXQoKSk7CisgICAgICAgIHJlc3VsdC5tYXJrZWRUZXh0ID0gcGxhaW5UZXh0UmVwbGFjaW5n
Tm9CcmVha1NwYWNlKGNvbXBvc2l0aW9uUmFuZ2UuZ2V0KCkpOwogICAgIH0KICAgICBGcmFtZVZp
ZXcqIHZpZXcgPSBmcmFtZS52aWV3KCk7CiAgICAgaWYgKHNlbGVjdGlvbi5pc0NhcmV0KCkpIHsK
QEAgLTcxMiwxNSArNzEyLDE1IEBAIEVkaXRvclN0YXRlIFdlYlBhZ2U6OmVkaXRvclN0YXRlKCkg
Y29uc3QKICAgICAgICAgcmVzdWx0LmNhcmV0UmVjdEF0RW5kID0gcmVzdWx0LmNhcmV0UmVjdEF0
U3RhcnQ7CiAgICAgICAgIC8vIEZJWE1FOiBUaGUgZm9sbG93aW5nIGNoZWNrIHNob3VsZCB0YWtl
IGludG8gYWNjb3VudCB3cml0aW5nIGRpcmVjdGlvbi4KICAgICAgICAgcmVzdWx0LmlzUmVwbGFj
ZUFsbG93ZWQgPSByZXN1bHQuaXNDb250ZW50RWRpdGFibGUgJiYgYXRCb3VuZGFyeU9mR3JhbnVs
YXJpdHkoc2VsZWN0aW9uLnN0YXJ0KCksIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2Fy
ZCk7Ci0gICAgICAgIHJlc3VsdC53b3JkQXRTZWxlY3Rpb24gPSBwbGFpblRleHQod29yZFJhbmdl
RnJvbVBvc2l0aW9uKHNlbGVjdGlvbi5zdGFydCgpKS5nZXQoKSk7Ci0gICAgICAgIHJlc3VsdC5j
aGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb24gPSBjaGFyYWN0ZXJCZWZvcmVQb3NpdGlvbihzZWxlY3Rp
b24uc3RhcnQoKSk7CisgICAgICAgIHJlc3VsdC53b3JkQXRTZWxlY3Rpb24gPSBwbGFpblRleHRS
ZXBsYWNpbmdOb0JyZWFrU3BhY2Uod29yZFJhbmdlRnJvbVBvc2l0aW9uKHNlbGVjdGlvbi5zdGFy
dCgpKS5nZXQoKSk7CisgICAgICAgIHJlc3VsdC5jaGFyYWN0ZXJzQXJvdW5kU2VsZWN0aW9uID0g
Y2hhcmFjdGVyc0Fyb3VuZFBvc2l0aW9uKHNlbGVjdGlvbi5zdGFydCgpKTsKICAgICB9IGVsc2Ug
aWYgKHNlbGVjdGlvbi5pc1JhbmdlKCkpIHsKICAgICAgICAgcmVzdWx0LmNhcmV0UmVjdEF0U3Rh
cnQgPSB2aWV3LT5jb250ZW50c1RvUm9vdFZpZXcoVmlzaWJsZVBvc2l0aW9uKHNlbGVjdGlvbi5z
dGFydCgpKS5hYnNvbHV0ZUNhcmV0Qm91bmRzKCkpOwogICAgICAgICByZXN1bHQuY2FyZXRSZWN0
QXRFbmQgPSB2aWV3LT5jb250ZW50c1RvUm9vdFZpZXcoVmlzaWJsZVBvc2l0aW9uKHNlbGVjdGlv
bi5lbmQoKSkuYWJzb2x1dGVDYXJldEJvdW5kcygpKTsKICAgICAgICAgUmVmUHRyPFJhbmdlPiBz
ZWxlY3RlZFJhbmdlID0gc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7CiAgICAgICAgIHNl
bGVjdGVkUmFuZ2UtPmNvbGxlY3RTZWxlY3Rpb25SZWN0cyhyZXN1bHQuc2VsZWN0aW9uUmVjdHMp
OwogICAgICAgICBjb252ZXJ0U2VsZWN0aW9uUmVjdHNUb1Jvb3RWaWV3KHZpZXcsIHJlc3VsdC5z
ZWxlY3Rpb25SZWN0cyk7Ci0gICAgICAgIFN0cmluZyBzZWxlY3RlZFRleHQgPSBwbGFpblRleHQo
c2VsZWN0ZWRSYW5nZS5nZXQoKSwgVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCB0cnVlKTsK
KyAgICAgICAgU3RyaW5nIHNlbGVjdGVkVGV4dCA9IHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtT
cGFjZShzZWxlY3RlZFJhbmdlLmdldCgpLCBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IsIHRy
dWUpOwogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRpc2FsbG93IHJlcGxhY2Ugd2hlbiB0
aGUgc3RyaW5nIGNvbnRhaW5zIG9ubHkgQ0ogY2hhcmFjdGVycy4KICAgICAgICAgcmVzdWx0Lmlz
UmVwbGFjZUFsbG93ZWQgPSByZXN1bHQuaXNDb250ZW50RWRpdGFibGUgJiYgIXJlc3VsdC5pc0lu
UGFzc3dvcmRGaWVsZCAmJiAhc2VsZWN0ZWRUZXh0LmNvbnRhaW5zT25seVdoaXRlc3BhY2UoKTsK
ICAgICAgICAgcmVzdWx0LnNlbGVjdGVkVGV4dExlbmd0aCA9IHNlbGVjdGVkVGV4dC5sZW5ndGgo
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0JKHJldmlzaW9uIDE2OTQ5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTM3Nyw3
ICsxMzc3LDcgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0RGljdGF0aW9uQ29udGV4dCh1aQogCiAg
ICAgU3RyaW5nIHNlbGVjdGVkVGV4dDsKICAgICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuaXNSYW5n
ZSgpKQotICAgICAgICBzZWxlY3RlZFRleHQgPSBwbGFpblRleHQoZnJhbWUuc2VsZWN0aW9uKCku
c2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CisgICAgICAgIHNlbGVjdGVk
VGV4dCA9IHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShmcmFtZS5zZWxlY3Rpb24oKS5z
ZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKIAogICAgIFN0cmluZyBjb250
ZXh0QmVmb3JlOwogICAgIGlmIChzdGFydFBvc2l0aW9uICE9IHN0YXJ0T2ZFZGl0YWJsZUNvbnRl
bnQoc3RhcnRQb3NpdGlvbikpIHsKQEAgLTEzOTAsNyArMTM5MCw3IEBAIHZvaWQgV2ViUGFnZTo6
cmVxdWVzdERpY3RhdGlvbkNvbnRleHQodWkKICAgICAgICAgICAgIGxhc3RQb3NpdGlvbiA9IGN1
cnJlbnRQb3NpdGlvbjsKICAgICAgICAgfQogICAgICAgICBpZiAobGFzdFBvc2l0aW9uLmlzTm90
TnVsbCgpICYmIGxhc3RQb3NpdGlvbiAhPSBzdGFydFBvc2l0aW9uKQotICAgICAgICAgICAgY29u
dGV4dEJlZm9yZSA9IHBsYWluVGV4dChSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBs
YXN0UG9zaXRpb24sIHN0YXJ0UG9zaXRpb24pLmdldCgpKTsKKyAgICAgICAgICAgIGNvbnRleHRC
ZWZvcmUgPSBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UoUmFuZ2U6OmNyZWF0ZSgqZnJh
bWUuZG9jdW1lbnQoKSwgbGFzdFBvc2l0aW9uLCBzdGFydFBvc2l0aW9uKS5nZXQoKSk7CiAgICAg
fQogCiAgICAgU3RyaW5nIGNvbnRleHRBZnRlcjsKQEAgLTE0MDQsNyArMTQwNCw3IEBAIHZvaWQg
V2ViUGFnZTo6cmVxdWVzdERpY3RhdGlvbkNvbnRleHQodWkKICAgICAgICAgICAgIGxhc3RQb3Np
dGlvbiA9IGN1cnJlbnRQb3NpdGlvbjsKICAgICAgICAgfQogICAgICAgICBpZiAobGFzdFBvc2l0
aW9uLmlzTm90TnVsbCgpICYmIGxhc3RQb3NpdGlvbiAhPSBlbmRQb3NpdGlvbikKLSAgICAgICAg
ICAgIGNvbnRleHRBZnRlciA9IHBsYWluVGV4dChSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVu
dCgpLCBlbmRQb3NpdGlvbiwgbGFzdFBvc2l0aW9uKS5nZXQoKSk7CisgICAgICAgICAgICBjb250
ZXh0QWZ0ZXIgPSBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UoUmFuZ2U6OmNyZWF0ZSgq
ZnJhbWUuZG9jdW1lbnQoKSwgZW5kUG9zaXRpb24sIGxhc3RQb3NpdGlvbikuZ2V0KCkpOwogICAg
IH0KIAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGljdGF0aW9uQ29udGV4dENh
bGxiYWNrKHNlbGVjdGVkVGV4dCwgY29udGV4dEJlZm9yZSwgY29udGV4dEFmdGVyLCBjYWxsYmFj
a0lEKSk7CkBAIC0xNDE0LDcgKzE0MTQsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlcGxhY2VTZWxlY3Rl
ZFRleHQoY29uc3QgCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBSZWZQdHI8UmFuZ2U+IHdvcmRSYW5nZSA9
IGZyYW1lLnNlbGVjdGlvbigpLmlzQ2FyZXQoKSA/IHdvcmRSYW5nZUZyb21Qb3NpdGlvbihmcmFt
ZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpKSA6IGZyYW1lLnNlbGVjdGlvbigpLnRv
Tm9ybWFsaXplZFJhbmdlKCk7Ci0gICAgaWYgKHBsYWluVGV4dCh3b3JkUmFuZ2UuZ2V0KCkpICE9
IG9sZFRleHQpCisgICAgaWYgKHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZSh3b3JkUmFu
Z2UuZ2V0KCkpICE9IG9sZFRleHQpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBmcmFtZS5l
ZGl0b3IoKS5zZXRJZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSh0cnVlKTsKQEAgLTE0
NDAsNyArMTQ0MCw3IEBAIHZvaWQgV2ViUGFnZTo6cmVwbGFjZURpY3RhdGVkVGV4dChjb25zdCAK
ICAgICAgICAgcG9zaXRpb24gPSBzdGFydE9mRG9jdW1lbnQoc3RhdGljX2Nhc3Q8Tm9kZSo+KGZy
YW1lLmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpKSk7CiAgICAgUmVmUHRyPFJhbmdlPiBy
YW5nZSA9IFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIHBvc2l0aW9uLCBmcmFtZS5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpKTsKIAotICAgIGlmIChwbGFpblRleHQocmFu
Z2UuZ2V0KCkpICE9IG9sZFRleHQpCisgICAgaWYgKHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtT
cGFjZShyYW5nZS5nZXQoKSkgIT0gb2xkVGV4dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
V2UgZG9uJ3Qgd2FudCB0byBub3RpZnkgdGhlIGNsaWVudCB0aGF0IHRoZSBzZWxlY3Rpb24gaGFz
IGNoYW5nZWQgdW50aWwgd2UgYXJlIGRvbmUgaW5zZXJ0aW5nIHRoZSBuZXcgdGV4dC4KQEAgLTE0
NTksNyArMTQ1OSw3IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YSgK
ICAgICBWZWN0b3I8U2VsZWN0aW9uUmVjdD4gc2VsZWN0aW9uUmVjdHM7CiAKICAgICByYW5nZSA9
IHdvcmRSYW5nZUZyb21Qb3NpdGlvbihwb3NpdGlvbik7Ci0gICAgU3RyaW5nIHRleHRGb3JSYW5n
ZSA9IHBsYWluVGV4dChyYW5nZS5nZXQoKSk7CisgICAgU3RyaW5nIHRleHRGb3JSYW5nZSA9IHBs
YWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZS5nZXQoKSk7CiAgICAgY29uc3QgdW5z
aWduZWQgbWF4U2VhcmNoQXR0ZW1wdHMgPSA1OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyAgaSA8
IG1heFNlYXJjaEF0dGVtcHRzICYmIHRleHRGb3JSYW5nZSAhPSB0ZXh0Rm9yQXV0b2NvcnJlY3Rp
b247ICsraSkKICAgICB7CkBAIC0xNDY3LDcgKzE0NjcsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVl
c3RBdXRvY29ycmVjdGlvbkRhdGEoCiAgICAgICAgIGlmIChwb3NpdGlvbi5pc051bGwoKSB8fCBw
b3NpdGlvbiA9PSByYW5nZS0+c3RhcnRQb3NpdGlvbigpKQogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgd29yZFJhbmdl
RnJvbVBvc2l0aW9uKHBvc2l0aW9uKS0+c3RhcnRQb3NpdGlvbigpLCByYW5nZS0+ZW5kUG9zaXRp
b24oKSk7Ci0gICAgICAgIHRleHRGb3JSYW5nZSA9IHBsYWluVGV4dChyYW5nZS5nZXQoKSk7Cisg
ICAgICAgIHRleHRGb3JSYW5nZSA9IHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShyYW5n
ZS5nZXQoKSk7CiAgICAgfQogICAgIGlmICh0ZXh0Rm9yUmFuZ2UgPT0gdGV4dEZvckF1dG9jb3Jy
ZWN0aW9uKQogICAgICAgICByYW5nZS0+Y29sbGVjdFNlbGVjdGlvblJlY3RzKHNlbGVjdGlvblJl
Y3RzKTsKQEAgLTE1MDcsNyArMTUwNyw3IEBAIHZvaWQgV2ViUGFnZTo6c3luY0FwcGx5QXV0b2Nv
cnJlY3Rpb24oY28KICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSBmcmFtZS5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKS5zdGFydCgpOwogICAgIAogICAgIHJhbmdlID0gd29yZFJhbmdlRnJv
bVBvc2l0aW9uKHBvc2l0aW9uKTsKLSAgICBTdHJpbmcgdGV4dEZvclJhbmdlID0gcGxhaW5UZXh0
KHJhbmdlLmdldCgpKTsKKyAgICBTdHJpbmcgdGV4dEZvclJhbmdlID0gcGxhaW5UZXh0UmVwbGFj
aW5nTm9CcmVha1NwYWNlKHJhbmdlLmdldCgpKTsKICAgICBpZiAodGV4dEZvclJhbmdlICE9IG9y
aWdpbmFsVGV4dCkgewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9yaWdpbmFsVGV4
dC5sZW5ndGgoKTsgKytpKQogICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbi5wcmV2aW91
cygpOwpAQCAtMTUxNSw3ICsxNTE1LDcgQEAgdm9pZCBXZWJQYWdlOjpzeW5jQXBwbHlBdXRvY29y
cmVjdGlvbihjbwogICAgICAgICAgICAgcG9zaXRpb24gPSBzdGFydE9mRG9jdW1lbnQoc3RhdGlj
X2Nhc3Q8Tm9kZSo+KGZyYW1lLmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpKSk7CiAgICAg
ICAgIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgcG9zaXRpb24sIGZy
YW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCkpOwogICAgICAgICBpZiAocmFuZ2Up
Ci0gICAgICAgICAgICB0ZXh0Rm9yUmFuZ2UgPSAocmFuZ2UpID8gcGxhaW5UZXh0KHJhbmdlLmdl
dCgpKSA6IGVtcHR5U3RyaW5nKCk7CisgICAgICAgICAgICB0ZXh0Rm9yUmFuZ2UgPSAocmFuZ2Up
ID8gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlLmdldCgpKSA6IGVtcHR5U3Ry
aW5nKCk7CiAgICAgICAgIHVuc2lnbmVkIGxvb3BDb3VudCA9IDA7CiAgICAgICAgIGNvbnN0IHVu
c2lnbmVkIG1heFBvc2l0aW9uc0F0dGVtcHRzID0gMTA7CiAgICAgICAgIHdoaWxlICh0ZXh0Rm9y
UmFuZ2UubGVuZ3RoKCkgJiYgdGV4dEZvclJhbmdlLmxlbmd0aCgpID4gb3JpZ2luYWxUZXh0Lmxl
bmd0aCgpICYmIGxvb3BDb3VudCA8IG1heFBvc2l0aW9uc0F0dGVtcHRzKSB7CkBAIC0xNTI0LDcg
KzE1MjQsNyBAQCB2b2lkIFdlYlBhZ2U6OnN5bmNBcHBseUF1dG9jb3JyZWN0aW9uKGNvCiAgICAg
ICAgICAgICAgICAgcmFuZ2UgPSBOVUxMOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgcG9zaXRpb24sIGZy
YW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCkpOwotICAgICAgICAgICAgdGV4dEZv
clJhbmdlID0gKHJhbmdlKSA/IHBsYWluVGV4dChyYW5nZS5nZXQoKSkgOiBlbXB0eVN0cmluZygp
OworICAgICAgICAgICAgdGV4dEZvclJhbmdlID0gKHJhbmdlKSA/IHBsYWluVGV4dFJlcGxhY2lu
Z05vQnJlYWtTcGFjZShyYW5nZS5nZXQoKSkgOiBlbXB0eVN0cmluZygpOwogICAgICAgICAgICAg
bG9vcENvdW50Kys7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNTUzLDE3ICsxNTUzLDE3IEBAIHN0
YXRpYyB2b2lkIGNvbXB1dGVBdXRvY29ycmVjdGlvbkNvbnRleHQKICAgICBjb25zdCB1bnNpZ25l
ZCBtYXhDb250ZXh0TGVuZ3RoID0gMzA7CiAKICAgICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuaXNS
YW5nZSgpKQotICAgICAgICBzZWxlY3RlZFRleHQgPSBwbGFpblRleHQoZnJhbWUuc2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CisgICAgICAgIHNlbGVj
dGVkVGV4dCA9IHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShmcmFtZS5zZWxlY3Rpb24o
KS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKIAogICAgIGlmIChmcmFt
ZS5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpKSB7CiAgICAgICAgIHJhbmdlID0gUmFuZ2U6OmNy
ZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgZnJhbWUuZWRpdG9yKCkuY29tcG9zaXRpb25SYW5nZSgp
LT5zdGFydFBvc2l0aW9uKCksIHN0YXJ0UG9zaXRpb24pOwogICAgICAgICBTdHJpbmcgbWFya2Vk
VGV4dEJlZm9yZTsKICAgICAgICAgaWYgKHJhbmdlKQotICAgICAgICAgICAgbWFya2VkVGV4dEJl
Zm9yZSA9IHBsYWluVGV4dChyYW5nZS5nZXQoKSk7CisgICAgICAgICAgICBtYXJrZWRUZXh0QmVm
b3JlID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlLmdldCgpKTsKICAgICAg
ICAgcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBlbmRQb3NpdGlvbiwg
ZnJhbWUuZWRpdG9yKCkuY29tcG9zaXRpb25SYW5nZSgpLT5lbmRQb3NpdGlvbigpKTsKICAgICAg
ICAgU3RyaW5nIG1hcmtlZFRleHRBZnRlcjsKICAgICAgICAgaWYgKHJhbmdlKQotICAgICAgICAg
ICAgbWFya2VkVGV4dEFmdGVyID0gcGxhaW5UZXh0KHJhbmdlLmdldCgpKTsKKyAgICAgICAgICAg
IG1hcmtlZFRleHRBZnRlciA9IHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShyYW5nZS5n
ZXQoKSk7CiAgICAgICAgIG1hcmtlZFRleHQgPSBtYXJrZWRUZXh0QmVmb3JlICsgc2VsZWN0ZWRU
ZXh0ICsgbWFya2VkVGV4dEFmdGVyOwogICAgICAgICBpZiAoIW1hcmtlZFRleHQuaXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICBsb2NhdGlvbiA9IG1hcmtlZFRleHRCZWZvcmUubGVuZ3RoKCk7CkBA
IC0xNTgwLDE0ICsxNTgwLDE0IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVBdXRvY29ycmVjdGlvbkNv
bnRleHQKICAgICAgICAgICAgICAgICBwcmV2aW91c1Bvc2l0aW9uID0gc3RhcnRPZldvcmQocG9z
aXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoY3VycmVudFBvc2l0aW9uLCBXb3JkR3Jh
bnVsYXJpdHksIERpcmVjdGlvbkJhY2t3YXJkKSk7CiAgICAgICAgICAgICAgICAgaWYgKHByZXZp
b3VzUG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIFN0cmluZyBjdXJyZW50V29yZCA9IHBsYWluVGV4dChSYW5nZTo6Y3JlYXRlKCpm
cmFtZS5kb2N1bWVudCgpLCBwcmV2aW91c1Bvc2l0aW9uLCBjdXJyZW50UG9zaXRpb24pLmdldCgp
KTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgY3VycmVudFdvcmQgPSBwbGFpblRleHRSZXBsYWNp
bmdOb0JyZWFrU3BhY2UoUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgcHJldmlvdXNQ
b3NpdGlvbiwgY3VycmVudFBvc2l0aW9uKS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgdG90YWxD
b250ZXh0TGVuZ3RoICs9IGN1cnJlbnRXb3JkLmxlbmd0aCgpOwogICAgICAgICAgICAgICAgIGlm
ICh0b3RhbENvbnRleHRMZW5ndGggPj0gbWF4Q29udGV4dExlbmd0aCkKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY3VycmVudFBvc2l0aW9uID0gcHJldmlvdXNQ
b3NpdGlvbjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChjdXJyZW50UG9zaXRpb24u
aXNOb3ROdWxsKCkgJiYgY3VycmVudFBvc2l0aW9uICE9IHN0YXJ0UG9zaXRpb24pIHsKLSAgICAg
ICAgICAgICAgICBjb250ZXh0QmVmb3JlID0gcGxhaW5UZXh0KFJhbmdlOjpjcmVhdGUoKmZyYW1l
LmRvY3VtZW50KCksIGN1cnJlbnRQb3NpdGlvbiwgc3RhcnRQb3NpdGlvbikuZ2V0KCkpOworICAg
ICAgICAgICAgICAgIGNvbnRleHRCZWZvcmUgPSBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3Bh
Y2UoUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgY3VycmVudFBvc2l0aW9uLCBzdGFy
dFBvc2l0aW9uKS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGF0Qm91bmRhcnlPZkdyYW51
bGFyaXR5KGN1cnJlbnRQb3NpdGlvbiwgUGFyYWdyYXBoR3JhbnVsYXJpdHksIERpcmVjdGlvbkJh
Y2t3YXJkKSkKICAgICAgICAgICAgICAgICAgICAgY29udGV4dEJlZm9yZSA9IEFTQ0lJTGl0ZXJh
bCgiXG4gIikgKyBjb250ZXh0QmVmb3JlOwogICAgICAgICAgICAgfQpAQCAtMTU5OCw3ICsxNTk4
LDcgQEAgc3RhdGljIHZvaWQgY29tcHV0ZUF1dG9jb3JyZWN0aW9uQ29udGV4dAogICAgICAgICAg
ICAgaWYgKCFhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShlbmRQb3NpdGlvbiwgV29yZEdyYW51bGFy
aXR5LCBEaXJlY3Rpb25Gb3J3YXJkKSAmJiB3aXRoaW5UZXh0VW5pdE9mR3JhbnVsYXJpdHkoZW5k
UG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCkpCiAgICAgICAgICAg
ICAgICAgbmV4dFBvc2l0aW9uID0gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVsYXJpdHko
ZW5kUG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCk7CiAgICAgICAg
ICAgICBpZiAobmV4dFBvc2l0aW9uLmlzTm90TnVsbCgpKQotICAgICAgICAgICAgICAgIGNvbnRl
eHRBZnRlciA9IHBsYWluVGV4dChSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBlbmRQ
b3NpdGlvbiwgbmV4dFBvc2l0aW9uKS5nZXQoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dEFm
dGVyID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKFJhbmdlOjpjcmVhdGUoKmZyYW1l
LmRvY3VtZW50KCksIGVuZFBvc2l0aW9uLCBuZXh0UG9zaXRpb24pLmdldCgpKTsKICAgICAgICAg
fQogICAgIH0KIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232310</attachid>
            <date>2014-05-30 16:39:08 -0700</date>
            <delta_ts>2014-05-30 18:05:54 -0700</delta_ts>
            <desc>Patch that fixes EWS</desc>
            <filename>spacespacedot.txt</filename>
            <type>text/plain</type>
            <size>24113</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTQ5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDE0LTA1LTMwICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAoV2ViS2l0
Mik6IHNwYWNlIHNwYWNlIHRvIGluc2VydCBwZXJpb2QgZG9lc24ndCB3b3JrIGluIHdlYiBmb3Jt
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzQx
MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTY5NDgzMzM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIHV0aWxpdHkgZnVuY3Rpb25zIGFu
ZCB0aGVpciBleHBvcnRzLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICog
ZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGxhaW5UZXh0UmVw
bGFjaW5nTm9CcmVha1NwYWNlKTogU2FtZSBhcyBwbGFpblRleHQgYnV0CisgICAgICAgIHJlcGxh
Y2VzIG5vQnJlYWtTcGFjZSB3aXRoIHRoZSBzcGFjZSBjaGFyYWN0ZXIsIHRvIG1ha2UgaU9TCisg
ICAgICAgIFRleHRJbnB1dCBoYXBweS4KKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5o
OgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNoYXJhY3RlcnNBcm91bmRQb3NpdGlvbik6IENvbXB1dGVzIHRoZSB0aHJlZSBjaGFyYWN0ZXJz
CisgICAgICAgIHN1cnJvdW5kaW5nIGEgZ2l2ZW4gcG9zaXRpb246IG9uZSBhZnRlciwgb25lIGJl
Zm9yZSwgdHdvIGJlZm9yZS4KKyAgICAgICAgVGhpcyBpcyB1c2VkIHRvIHJldHVybiBpbmZvcm1h
dGlvbiBpbiBFZGl0b3JTdGF0ZSBpbiBXZWJLaXQyLgorICAgICAgICBJdCByZXBsYWNlcyBjaGFy
YWN0ZXJCZWZvcmVQb3NpdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OmNoYXJhY3RlckJlZm9yZVBv
c2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVVbml0cy5oOgorCiAy
MDE0LTA1LTMwICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ2xl
YW51cCB0ZW1wb3Jhcnkgc2V0dGluZyBvZiBpbWFnZSBpbnRlcnBvbGF0aW9uIHF1YWxpdHkgaW4g
R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UqCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2
aXNpb24gMTY5NDk4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTI2MDksNyArMjYwOSw3IEBAIF9fWk43V2ViQ29yZTIxd29yZFJhbmdlRnJvbVBv
c2l0aW9uRVJLTlMKIF9fWk43V2ViQ29yZTIyc3RhcnRPZkVkaXRhYmxlQ29udGVudEVSS05TXzE1
VmlzaWJsZVBvc2l0aW9uRQogX19aTjdXZWJDb3JlMjNhcHBsaWNhdGlvbklzTW9iaWxlTWFpbEV2
CiBfX1pON1dlYkNvcmUyM2F0Qm91bmRhcnlPZkdyYW51bGFyaXR5RVJLTlNfMTVWaXNpYmxlUG9z
aXRpb25FTlNfMTVUZXh0R3JhbnVsYXJpdHlFTlNfMThTZWxlY3Rpb25EaXJlY3Rpb25FCi1fX1pO
N1dlYkNvcmUyM2NoYXJhY3RlckJlZm9yZVBvc2l0aW9uRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25F
CitfX1pON1dlYkNvcmUyNGNoYXJhY3RlcnNBcm91bmRQb3NpdGlvbkVSS05TXzE1VmlzaWJsZVBv
c2l0aW9uRQogX19aTjdXZWJDb3JlMjREb2N1bWVudE1hcmtlckNvbnRyb2xsZXIxNG1hcmtlcnNJ
blJhbmdlRVBOU181UmFuZ2VFTlNfMTREb2N1bWVudE1hcmtlcjExTWFya2VyVHlwZXNFCiBfX1pO
N1dlYkNvcmUyNEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudDIxZW5hYmxlRGVub3JtYWxTdXBwb3J0
RXYKIF9fWk43V2ViQ29yZTI0RmxvYXRpbmdQb2ludEVudmlyb25tZW50MjVzYXZlTWFpblRocmVh
ZEVudmlyb25tZW50RXYKQEAgLTI2MzEsNiArMjYzMSw3IEBAIF9fWk43V2ViQ29yZTI3dGlsZUNv
bnRyb2xsZXJNZW1vcnlIYW5kbGUKIF9fWk43V2ViQ29yZTI3d2l0aGluVGV4dFVuaXRPZkdyYW51
bGFyaXR5RVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FTlNfMTVUZXh0R3JhbnVsYXJpdHlFTlNfMThT
ZWxlY3Rpb25EaXJlY3Rpb25FCiBfX1pON1dlYkNvcmUzMGNsb3Nlc3RXb3JkQm91bmRhcnlGb3JQ
b3NpdGlvbkVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRQogX19aTjdXZWJDb3JlMzBlbmNsb3NpbmdU
ZXh0VW5pdE9mR3JhbnVsYXJpdHlFUktOU18xNVZpc2libGVQb3NpdGlvbkVOU18xNVRleHRHcmFu
dWxhcml0eUVOU18xOFNlbGVjdGlvbkRpcmVjdGlvbkUKK19fWk43V2ViQ29yZTMwcGxhaW5UZXh0
UmVwbGFjaW5nTm9CcmVha1NwYWNlRVBLTlNfNVJhbmdlRXRiCiBfX1pON1dlYkNvcmUzMU5vblNo
YXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3JDMUVOM1dURjEwU3RyaW5nVmlld0UKIF9fWk43V2Vi
Q29yZTMxTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvckQxRXYKIF9fWk43V2ViQ29yZTMx
YXBwbGljYXRpb25Jc0RhaWppc2VuRGljdGlvbmFyeUV2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0SXRlcmF0b3IuY3BwCShyZXZpc2lvbiAxNjk0OTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MTMsNiArMjUx
MywxMSBAQCBTdHJpbmcgcGxhaW5UZXh0KGNvbnN0IFJhbmdlKiByLCBUZXh0SXRlCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAorU3RyaW5nIHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShj
b25zdCBSYW5nZSogcmFuZ2UsIFRleHRJdGVyYXRvckJlaGF2aW9yIGRlZmF1bHRCZWhhdmlvciwg
Ym9vbCBpc0Rpc3BsYXlTdHJpbmcpCit7CisgICAgcmV0dXJuIHBsYWluVGV4dChyYW5nZSwgZGVm
YXVsdEJlaGF2aW9yLCBpc0Rpc3BsYXlTdHJpbmcpLnJlcGxhY2Uobm9CcmVha1NwYWNlLCAnICcp
OworfQorCiBzdGF0aWMgUGFzc1JlZlB0cjxSYW5nZT4gY29sbGFwc2VkVG9Cb3VuZGFyeShjb25z
dCBSYW5nZSYgcmFuZ2UsIGJvb2wgZm9yd2FyZCkKIHsKICAgICBSZWZQdHI8UmFuZ2U+IHJlc3Vs
dCA9IHJhbmdlLmNsb25lUmFuZ2UoQVNTRVJUX05PX0VYQ0VQVElPTik7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgJKHJldmlzaW9uIDE2OTQ5OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQx
LDcgQEAgY2xhc3MgUmVuZGVyVGV4dDsKIGNsYXNzIFJlbmRlclRleHRGcmFnbWVudDsKIAogU3Ry
aW5nIHBsYWluVGV4dChjb25zdCBSYW5nZSosIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4dEl0
ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCBib29sIGlzRGlzcGxheVN0cmluZyA9IGZhbHNlKTsKK1N0
cmluZyBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UoY29uc3QgUmFuZ2UqLCBUZXh0SXRl
cmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvciwgYm9vbCBpc0Rpc3Bs
YXlTdHJpbmcgPSBmYWxzZSk7CiBQYXNzUmVmUHRyPFJhbmdlPiBmaW5kUGxhaW5UZXh0KGNvbnN0
IFJhbmdlJiwgY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMpOwogCiAvLyBGSVhNRTogTW92ZSB0
aGlzIHNvbWV3aGVyZSBlbHNlIGluIHRoZSBlZGl0aW5nIGRpcmVjdG9yeS4gSXQgZG9lc24ndCBi
ZWxvbmcgaGVyZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAJ
KHJldmlzaW9uIDE2OTQ5OCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxMiwyNSArMTgxMiw0MyBAQCBpbnQgZGlzdGFuY2VC
ZXR3ZWVuUG9zaXRpb25zKGNvbnN0IFZpc2liCiAKICAgICByZXR1cm4gKHRoaXNJc1N0YXJ0ID8g
LWRpc3RhbmNlIDogZGlzdGFuY2UpOwogfQotICAgIAotVUNoYXIzMiBjaGFyYWN0ZXJCZWZvcmVQ
b3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uKQorCisvLyBUaGUgZWxlbWVu
dHMgaW4gdGhlIHJldHVybmVkIHZlY3RvciBhcmU6CisvLyAwIC0gdGhlIGNoYXJhY3RlciBhZnRl
ciB0aGUgZ2l2ZW4gcG9zaXRpb24gKGlmIGl0IGV4aXN0cykKKy8vIDEgLSB0aGUgY2hhcmFjdGVy
IGJlZm9yZSB0aGUgZ2l2ZW4gcG9zaXRpb24gKGlmIGl0IGV4aXN0cykKKy8vIDIgLSB0aGUgY2hh
cmFjdGVyIGJlZm9yZSB0aGUgcG9zaXRpb24gcHJpb3IgdG8gdGhlIGdpdmVuIHBvc2l0aW9uIChp
ZiBpdCBleGlzdHMpLgorCitWZWN0b3I8VUNoYXIzMj4gY2hhcmFjdGVyc0Fyb3VuZFBvc2l0aW9u
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pCiB7CisgICAgVmVjdG9yPFVDaGFyMzI+
IGNoYXJhY3RlcnMoMyk7CisKICAgICBpZiAocG9zaXRpb24uaXNOdWxsKCkgfHwgaXNTdGFydE9m
RG9jdW1lbnQocG9zaXRpb24pKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIGNo
YXJhY3RlcnM7CisKKyAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRQb3NpdGlvbiA9IHBvc2l0aW9u
OworICAgIFZpc2libGVQb3NpdGlvbiBlbmRQb3NpdGlvbiA9IHBvc2l0aW9uOworCisgICAgVmlz
aWJsZVBvc2l0aW9uIG5leHRQb3NpdGlvbiA9IG5leHRDaGFyYWN0ZXJCb3VuZGFyeUluRGlyZWN0
aW9uKHBvc2l0aW9uLCBEaXJlY3Rpb25Gb3J3YXJkKTsKKyAgICBpZiAobmV4dFBvc2l0aW9uLmlz
Tm90TnVsbCgpKQorICAgICAgICBlbmRQb3NpdGlvbiA9IG5leHRQb3NpdGlvbjsKKwogICAgIFZp
c2libGVQb3NpdGlvbiBwcmV2aW91c1Bvc2l0aW9uID0gbmV4dENoYXJhY3RlckJvdW5kYXJ5SW5E
aXJlY3Rpb24ocG9zaXRpb24sIERpcmVjdGlvbkJhY2t3YXJkKTsKLSAgICBpZiAocHJldmlvdXNQ
b3NpdGlvbi5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgU3RyaW5nIGNoYXJhY3Rl
clN0cmluZyA9IHBsYWluVGV4dChSYW5nZTo6Y3JlYXRlKHBvc2l0aW9uLmRlZXBFcXVpdmFsZW50
KCkuYW5jaG9yTm9kZSgpLT5kb2N1bWVudCgpLCBwcmV2aW91c1Bvc2l0aW9uLCBwb3NpdGlvbiku
Z2V0KCksIFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvciwgdHJ1ZSk7Ci0gICAgaWYgKGNoYXJh
Y3RlclN0cmluZy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIAotICAgIGlmIChj
aGFyYWN0ZXJTdHJpbmcubGVuZ3RoKCkgPT0gMikgewotICAgICAgICBVVEYzMkNoYXIgbGVhZCA9
IGNoYXJhY3RlclN0cmluZ1swXTsKLSAgICAgICAgVVRGMzJDaGFyIHRyYWlsID0gY2hhcmFjdGVy
U3RyaW5nWzFdOwotICAgICAgICBpZiAoVTE2X0lTX0xFQUQobGVhZCkgJiYgVTE2X0lTX1RSQUlM
KHRyYWlsKSkKLSAgICAgICAgICAgIHJldHVybiBVMTZfR0VUX1NVUFBMRU1FTlRBUlkobGVhZCwg
dHJhaWwpOworICAgIGlmIChwcmV2aW91c1Bvc2l0aW9uLmlzTm90TnVsbCgpKSB7CisgICAgICAg
IHN0YXJ0UG9zaXRpb24gPSBwcmV2aW91c1Bvc2l0aW9uOworICAgICAgICBwcmV2aW91c1Bvc2l0
aW9uID0gbmV4dENoYXJhY3RlckJvdW5kYXJ5SW5EaXJlY3Rpb24ocHJldmlvdXNQb3NpdGlvbiwg
RGlyZWN0aW9uQmFja3dhcmQpOworICAgICAgICBpZiAocHJldmlvdXNQb3NpdGlvbi5pc05vdE51
bGwoKSkKKyAgICAgICAgICAgIHN0YXJ0UG9zaXRpb24gPSBwcmV2aW91c1Bvc2l0aW9uOworICAg
IH0KKworICAgIGlmIChzdGFydFBvc2l0aW9uICE9IGVuZFBvc2l0aW9uKSB7CisgICAgICAgIFN0
cmluZyBjaGFyYWN0ZXJTdHJpbmcgPSBwbGFpblRleHQoUmFuZ2U6OmNyZWF0ZShwb3NpdGlvbi5k
ZWVwRXF1aXZhbGVudCgpLmFuY2hvck5vZGUoKS0+ZG9jdW1lbnQoKSwgc3RhcnRQb3NpdGlvbiwg
ZW5kUG9zaXRpb24pLmdldCgpKS5yZXBsYWNlKG5vQnJlYWtTcGFjZSwgJyAnKTsKKyAgICAgICAg
Zm9yIChpbnQgaSA9IGNoYXJhY3RlclN0cmluZy5sZW5ndGgoKSAtIDEsIGluZGV4ID0gMDsgaSA+
PSAwOyAtLWkpIHsKKyAgICAgICAgICAgIGlmICghaW5kZXggJiYgbmV4dFBvc2l0aW9uLmlzTnVs
bCgpKQorICAgICAgICAgICAgICAgIGluZGV4Kys7CisgICAgICAgICAgICBjaGFyYWN0ZXJzW2lu
ZGV4KytdID0gY2hhcmFjdGVyU3RyaW5nW2ldOworICAgICAgICB9CiAgICAgfQotICAgIHJldHVy
biBjaGFyYWN0ZXJTdHJpbmdbMF0gIT0gbm9CcmVha1NwYWNlID8gY2hhcmFjdGVyU3RyaW5nWzBd
IDogJyAnOworICAgIHJldHVybiBjaGFyYWN0ZXJzOwogfQogCiBQYXNzUmVmUHRyPFJhbmdlPiB3
b3JkUmFuZ2VGcm9tUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuaAkocmV2aXNpb24gMTY5NDk4KQor
KysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuaAkod29ya2luZyBjb3B5KQpA
QCAtMTA0LDcgKzEwNCw3IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IGVuY2xvc2luZ1RleHRVbml0T2ZH
cmEKIGludCBkaXN0YW5jZUJldHdlZW5Qb3NpdGlvbnMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwg
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CiBQYXNzUmVmUHRyPFJhbmdlPiB3b3JkUmFuZ2VGcm9t
UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbik7CiBWaXNpYmxlUG9zaXRp
b24gY2xvc2VzdFdvcmRCb3VuZGFyeUZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
cG9zaXRpb24pOwotVUNoYXIzMiBjaGFyYWN0ZXJCZWZvcmVQb3NpdGlvbihjb25zdCBWaXNpYmxl
UG9zaXRpb24mKTsKK1ZlY3RvcjxVQ2hhcjMyPiBjaGFyYWN0ZXJzQXJvdW5kUG9zaXRpb24oY29u
c3QgVmlzaWJsZVBvc2l0aW9uJik7CiAjZW5kaWYKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJ
bmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTY5NDk4KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTQtMDUtMzAgIEVucmljYSBD
YXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChXZWJLaXQy
KTogc3BhY2Ugc3BhY2UgdG8gaW5zZXJ0IHBlcmlvZCBkb2Vzbid0IHdvcmsgaW4gd2ViIGZvcm1z
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzNDEz
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNjk0ODMzMz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBpT1MgVGV4dElucHV0IG5lZWRzIHRvIGtub3cg
YWJvdXQgY29udGVudCBzdXJyb3VuZGluZyB0aGUKKyAgICAgICAgY3VycmVudCBwb3NpdGlvbiB3
aGlsZSBlZGl0aW5nLiBTaW5jZSB3ZSBkb24ndCB3YW50IHRvCisgICAgICAgIHF1ZXJ5IHRoaXMg
aW5mb3JtYXRpb24gc3luY2hyb25vdXNseSB3aGVuIGFza2VkLCB3ZSBjYWNoZSBpdAorICAgICAg
ICBhcyBwYXJ0IG9mIHRoZSBFZGl0b3JTdGF0ZS4gRWRpdG9yU3RhdGUgbm93IGNvbnRhaW5zIGEg
dmVjdG9yIG9mCisgICAgICAgIHRocmVlIGNoYXJhY3RlcnMgcmVwcmVzZW50aW5nIHRoZSBjb250
ZW50IGFmdGVyLCBiZWZvcmUgYW5kIHR3bworICAgICAgICBwb3NpdGlvbiBiZWZvcmUgdGhlIGNh
cmV0IHBvc2l0aW9uLgorICAgICAgICBUaGUgcGF0Y2ggYWxzbyByZXBsYWNlcyBhbGwgY2FsbHMg
dG8gcGxhaW5UZXh0IHdpdGggcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlCisgICAgICAg
IHRvIHdvcmsgd2VsbCB3aXRoIGlPUyB0ZXh0IGlucHV0LgorCisgICAgICAgICogU2hhcmVkL0Vk
aXRvclN0YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yU3RhdGU6OmVuY29kZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkVkaXRvclN0YXRlOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9F
ZGl0b3JTdGF0ZS5oOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JTdGF0ZTo6RWRpdG9yU3RhdGUp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgor
ICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jaGFyYWN0ZXJCZWZvcmVDYXJldFNlbGVjdGlvbl0p
OgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jaGFyYWN0ZXJJblJlbGF0aW9uVG9DYXJldFNl
bGVjdGlvbjpdKToKKyAgICAgICAgKCtbV0tBdXRvY29ycmVjdGlvbkNvbnRleHQgYXV0b2NvcnJl
Y3Rpb25Db250ZXh0V2l0aERhdGE6bWFya2VkVGV4dDpzZWxlY3RlZFRleHQ6YWZ0ZXJUZXh0OnNl
bGVjdGVkUmFuZ2VJbk1hcmtlZFRleHQ6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjplZGl0b3JTdGF0ZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0RGljdGF0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJlcGxhY2VTZWxlY3RlZFRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpyZXBsYWNlRGljdGF0ZWRUZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVx
dWVzdEF1dG9jb3JyZWN0aW9uRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnN5bmNB
cHBseUF1dG9jb3JyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6Y29tcHV0ZUF1dG9jb3JyZWN0
aW9uQ29udGV4dCk6CisKIDIwMTQtMDUtMzAgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxl
LmNvbT4KIAogICAgICAgICBGaXhlZCB0aGUgYnVpbGQgYnkgYWRkaW5nIGJhY2sgYSBkZWNsYXJh
dGlvbiBJIGRlbGV0ZWQgYnkgYWNjaWRlbnQgOiguCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRWRpdG9yU3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9F
ZGl0b3JTdGF0ZS5jcHAJKHJldmlzaW9uIDE2OTQ5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9FZGl0b3JTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgdm9pZCBF
ZGl0b3JTdGF0ZTo6ZW5jb2RlKElQQzo6QXJndW1lbnRFbgogCiAjaWYgUExBVEZPUk0oSU9TKQog
ICAgIGVuY29kZXIgPDwgaXNSZXBsYWNlQWxsb3dlZDsKLSAgICBlbmNvZGVyIDw8IGNoYXJhY3Rl
ckJlZm9yZVNlbGVjdGlvbjsKKyAgICBlbmNvZGVyIDw8IGNoYXJhY3RlcnNBcm91bmRTZWxlY3Rp
b247CiAgICAgZW5jb2RlciA8PCBjYXJldFJlY3RBdFN0YXJ0OwogICAgIGVuY29kZXIgPDwgY2Fy
ZXRSZWN0QXRFbmQ7CiAgICAgZW5jb2RlciA8PCBzZWxlY3Rpb25SZWN0czsKQEAgLTkzLDcgKzkz
LDcgQEAgYm9vbCBFZGl0b3JTdGF0ZTo6ZGVjb2RlKElQQzo6QXJndW1lbnREZQogI2lmIFBMQVRG
T1JNKElPUykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pc1JlcGxhY2VBbGxvd2Vk
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
LmNoYXJhY3RlckJlZm9yZVNlbGVjdGlvbikpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQuY2hhcmFjdGVyc0Fyb3VuZFNlbGVjdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jYXJldFJlY3RBdFN0YXJ0KSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0VkaXRvclN0YXRlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0VkaXRvclN0YXRlLmgJKHJldmlz
aW9uIDE2OTQ5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9FZGl0b3JTdGF0ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHN0cnVjdCBFZGl0b3JTdGF0ZSB7CiAgICAgICAg
ICwgaGFzQ29tcG9zaXRpb24oZmFsc2UpCiAjaWYgUExBVEZPUk0oSU9TKQogICAgICAgICAsIGlz
UmVwbGFjZUFsbG93ZWQoZmFsc2UpCi0gICAgICAgICwgY2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9u
KDApCisgICAgICAgICwgY2hhcmFjdGVyc0Fyb3VuZFNlbGVjdGlvbigzKQogICAgICAgICAsIHNl
bGVjdGVkVGV4dExlbmd0aCgwKQogI2VuZGlmCiAgICAgewpAQCAtNjYsNyArNjYsNyBAQCBzdHJ1
Y3QgRWRpdG9yU3RhdGUgewogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGJvb2wgaXNSZXBsYWNl
QWxsb3dlZDsKLSAgICBVQ2hhcjMyIGNoYXJhY3RlckJlZm9yZVNlbGVjdGlvbjsKKyAgICBWZWN0
b3I8VUNoYXIzMj4gY2hhcmFjdGVyc0Fyb3VuZFNlbGVjdGlvbjsKICAgICBXZWJDb3JlOjpJbnRS
ZWN0IGNhcmV0UmVjdEF0U3RhcnQ7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBjYXJldFJlY3RBdEVu
ZDsKICAgICBWZWN0b3I8V2ViQ29yZTo6U2VsZWN0aW9uUmVjdD4gc2VsZWN0aW9uUmVjdHM7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQkocmV2aXNpb24gMTY5NDk4KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0JKHdvcmtpbmcgY29weSkK
QEAgLTE0ODMsNyArMTQ4MywyMSBAQCAtICh2b2lkKXJlcXVlc3RBdXRvY29ycmVjdGlvblJlY3Rz
Rm9yU3RyCiAKIC0gKFVURjMyQ2hhcilfY2hhcmFjdGVyQmVmb3JlQ2FyZXRTZWxlY3Rpb24KIHsK
LSAgICByZXR1cm4gX3BhZ2UtPmVkaXRvclN0YXRlKCkuY2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9u
OworICAgIHJldHVybiBfcGFnZS0+ZWRpdG9yU3RhdGUoKS5jaGFyYWN0ZXJzQXJvdW5kU2VsZWN0
aW9uWzFdOworfQorCistIChVVEYzMkNoYXIpX2NoYXJhY3RlckluUmVsYXRpb25Ub0NhcmV0U2Vs
ZWN0aW9uOihpbnQpYW1vdW50Cit7CisgICAgc3dpdGNoIChhbW91bnQpIHsKKyAgICBjYXNlIDA6
CisgICAgICAgIHJldHVybiBfcGFnZS0+ZWRpdG9yU3RhdGUoKS5jaGFyYWN0ZXJzQXJvdW5kU2Vs
ZWN0aW9uWzBdOworICAgIGNhc2UgLTE6CisgICAgICAgIHJldHVybiBfcGFnZS0+ZWRpdG9yU3Rh
dGUoKS5jaGFyYWN0ZXJzQXJvdW5kU2VsZWN0aW9uWzFdOworICAgIGNhc2UgLTI6CisgICAgICAg
IHJldHVybiBfcGFnZS0+ZWRpdG9yU3RhdGUoKS5jaGFyYWN0ZXJzQXJvdW5kU2VsZWN0aW9uWzJd
OworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiAwOworICAgIH0KIH0KIAogLSAoQ0dSZWN0
KXRleHRGaXJzdFJlY3QKQEAgLTI0NzEsMTQgKzI0ODUsMTYgQEAgKyAoV0tBdXRvY29ycmVjdGlv
bkNvbnRleHQgKilhdXRvY29ycmVjdAogewogICAgIFdLQXV0b2NvcnJlY3Rpb25Db250ZXh0ICpj
b250ZXh0ID0gW1tXS0F1dG9jb3JyZWN0aW9uQ29udGV4dCBhbGxvY10gaW5pdF07CiAKKyAgICBj
b25zdCBVQ2hhciBub0JyZWFrU3BhY2UgPSAweDAwQTA7CisKICAgICBpZiAoW2JlZm9yZVRleHQg
bGVuZ3RoXSkKLSAgICAgICAgY29udGV4dC5jb250ZXh0QmVmb3JlU2VsZWN0aW9uID0gW2JlZm9y
ZVRleHQgY29weV07CisgICAgICAgIGNvbnRleHQuY29udGV4dEJlZm9yZVNlbGVjdGlvbiA9IFtb
YmVmb3JlVGV4dCBfc3RyaW5nQnlSZXBsYWNpbmdDaGFyYWN0ZXI6KHVuaWNoYXIpbm9CcmVha1Nw
YWNlIHdpdGhDaGFyYWN0ZXI6JyAnXSBjb3B5XTsKICAgICBpZiAoW3NlbGVjdGVkVGV4dCBsZW5n
dGhdKQotICAgICAgICBjb250ZXh0LnNlbGVjdGVkVGV4dCA9IFtzZWxlY3RlZFRleHQgY29weV07
CisgICAgICAgIGNvbnRleHQuc2VsZWN0ZWRUZXh0ID0gW1tzZWxlY3RlZFRleHQgX3N0cmluZ0J5
UmVwbGFjaW5nQ2hhcmFjdGVyOih1bmljaGFyKW5vQnJlYWtTcGFjZSB3aXRoQ2hhcmFjdGVyOicg
J10gY29weV07CiAgICAgaWYgKFttYXJrZWRUZXh0IGxlbmd0aF0pCi0gICAgICAgIGNvbnRleHQu
bWFya2VkVGV4dCA9IFttYXJrZWRUZXh0IGNvcHldOworICAgICAgICBjb250ZXh0Lm1hcmtlZFRl
eHQgPSBbW21hcmtlZFRleHQgX3N0cmluZ0J5UmVwbGFjaW5nQ2hhcmFjdGVyOih1bmljaGFyKW5v
QnJlYWtTcGFjZSB3aXRoQ2hhcmFjdGVyOicgJ10gY29weV07CiAgICAgaWYgKFthZnRlclRleHQg
bGVuZ3RoXSkKLSAgICAgICAgY29udGV4dC5jb250ZXh0QWZ0ZXJTZWxlY3Rpb24gPSBbYWZ0ZXJU
ZXh0IGNvcHldOworICAgICAgICBjb250ZXh0LmNvbnRleHRBZnRlclNlbGVjdGlvbiA9IFtbYWZ0
ZXJUZXh0IF9zdHJpbmdCeVJlcGxhY2luZ0NoYXJhY3RlcjoodW5pY2hhcilub0JyZWFrU3BhY2Ug
d2l0aENoYXJhY3RlcjonICddIGNvcHldOwogICAgIGNvbnRleHQucmFuZ2VJbk1hcmtlZFRleHQg
PSByYW5nZTsKICAgICByZXR1cm4gW2NvbnRleHQgYXV0b3JlbGVhc2VdOwogfQpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24g
MTY5NDk4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03MDQsNyArNzA0LDcgQEAgRWRpdG9yU3RhdGUgV2ViUGFnZTo6
ZWRpdG9yU3RhdGUoKSBjb25zdAogICAgICAgICAgICAgcmVzdWx0Lmxhc3RNYXJrZWRSZWN0ID0g
Y29tcG9zaXRpb25SZWN0cy5sYXN0KCkucmVjdCgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICByZXN1bHQubGFzdE1hcmtlZFJlY3QgPSByZXN1bHQuZmlyc3RNYXJrZWRSZWN0OwotICAgICAg
ICByZXN1bHQubWFya2VkVGV4dCA9IHBsYWluVGV4dChjb21wb3NpdGlvblJhbmdlLmdldCgpKTsK
KyAgICAgICAgcmVzdWx0Lm1hcmtlZFRleHQgPSBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3Bh
Y2UoY29tcG9zaXRpb25SYW5nZS5nZXQoKSk7CiAgICAgfQogICAgIEZyYW1lVmlldyogdmlldyA9
IGZyYW1lLnZpZXcoKTsKICAgICBpZiAoc2VsZWN0aW9uLmlzQ2FyZXQoKSkgewpAQCAtNzEyLDE1
ICs3MTIsMTUgQEAgRWRpdG9yU3RhdGUgV2ViUGFnZTo6ZWRpdG9yU3RhdGUoKSBjb25zdAogICAg
ICAgICByZXN1bHQuY2FyZXRSZWN0QXRFbmQgPSByZXN1bHQuY2FyZXRSZWN0QXRTdGFydDsKICAg
ICAgICAgLy8gRklYTUU6IFRoZSBmb2xsb3dpbmcgY2hlY2sgc2hvdWxkIHRha2UgaW50byBhY2Nv
dW50IHdyaXRpbmcgZGlyZWN0aW9uLgogICAgICAgICByZXN1bHQuaXNSZXBsYWNlQWxsb3dlZCA9
IHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSAmJiBhdEJvdW5kYXJ5T2ZHcmFudWxhcml0eShzZWxl
Y3Rpb24uc3RhcnQoKSwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKTsKLSAgICAg
ICAgcmVzdWx0LndvcmRBdFNlbGVjdGlvbiA9IHBsYWluVGV4dCh3b3JkUmFuZ2VGcm9tUG9zaXRp
b24oc2VsZWN0aW9uLnN0YXJ0KCkpLmdldCgpKTsKLSAgICAgICAgcmVzdWx0LmNoYXJhY3RlckJl
Zm9yZVNlbGVjdGlvbiA9IGNoYXJhY3RlckJlZm9yZVBvc2l0aW9uKHNlbGVjdGlvbi5zdGFydCgp
KTsKKyAgICAgICAgcmVzdWx0LndvcmRBdFNlbGVjdGlvbiA9IHBsYWluVGV4dFJlcGxhY2luZ05v
QnJlYWtTcGFjZSh3b3JkUmFuZ2VGcm9tUG9zaXRpb24oc2VsZWN0aW9uLnN0YXJ0KCkpLmdldCgp
KTsKKyAgICAgICAgcmVzdWx0LmNoYXJhY3RlcnNBcm91bmRTZWxlY3Rpb24gPSBjaGFyYWN0ZXJz
QXJvdW5kUG9zaXRpb24oc2VsZWN0aW9uLnN0YXJ0KCkpOwogICAgIH0gZWxzZSBpZiAoc2VsZWN0
aW9uLmlzUmFuZ2UoKSkgewogICAgICAgICByZXN1bHQuY2FyZXRSZWN0QXRTdGFydCA9IHZpZXct
PmNvbnRlbnRzVG9Sb290VmlldyhWaXNpYmxlUG9zaXRpb24oc2VsZWN0aW9uLnN0YXJ0KCkpLmFi
c29sdXRlQ2FyZXRCb3VuZHMoKSk7CiAgICAgICAgIHJlc3VsdC5jYXJldFJlY3RBdEVuZCA9IHZp
ZXctPmNvbnRlbnRzVG9Sb290VmlldyhWaXNpYmxlUG9zaXRpb24oc2VsZWN0aW9uLmVuZCgpKS5h
YnNvbHV0ZUNhcmV0Qm91bmRzKCkpOwogICAgICAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGVkUmFu
Z2UgPSBzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKTsKICAgICAgICAgc2VsZWN0ZWRSYW5n
ZS0+Y29sbGVjdFNlbGVjdGlvblJlY3RzKHJlc3VsdC5zZWxlY3Rpb25SZWN0cyk7CiAgICAgICAg
IGNvbnZlcnRTZWxlY3Rpb25SZWN0c1RvUm9vdFZpZXcodmlldywgcmVzdWx0LnNlbGVjdGlvblJl
Y3RzKTsKLSAgICAgICAgU3RyaW5nIHNlbGVjdGVkVGV4dCA9IHBsYWluVGV4dChzZWxlY3RlZFJh
bmdlLmdldCgpLCBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IsIHRydWUpOworICAgICAgICBT
dHJpbmcgc2VsZWN0ZWRUZXh0ID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHNlbGVj
dGVkUmFuZ2UuZ2V0KCksIFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvciwgdHJ1ZSk7CiAgICAg
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZGlzYWxsb3cgcmVwbGFjZSB3aGVuIHRoZSBzdHJpbmcg
Y29udGFpbnMgb25seSBDSiBjaGFyYWN0ZXJzLgogICAgICAgICByZXN1bHQuaXNSZXBsYWNlQWxs
b3dlZCA9IHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSAmJiAhcmVzdWx0LmlzSW5QYXNzd29yZEZp
ZWxkICYmICFzZWxlY3RlZFRleHQuY29udGFpbnNPbmx5V2hpdGVzcGFjZSgpOwogICAgICAgICBy
ZXN1bHQuc2VsZWN0ZWRUZXh0TGVuZ3RoID0gc2VsZWN0ZWRUZXh0Lmxlbmd0aCgpOwpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbQkocmV2aXNpb24gMTY5NDk4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzc3LDcgKzEzNzcsNyBA
QCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3REaWN0YXRpb25Db250ZXh0KHVpCiAKICAgICBTdHJpbmcg
c2VsZWN0ZWRUZXh0OwogICAgIGlmIChmcmFtZS5zZWxlY3Rpb24oKS5pc1JhbmdlKCkpCi0gICAg
ICAgIHNlbGVjdGVkVGV4dCA9IHBsYWluVGV4dChmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24o
KS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKKyAgICAgICAgc2VsZWN0ZWRUZXh0ID0gcGxh
aW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigp
LnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOwogCiAgICAgU3RyaW5nIGNvbnRleHRCZWZvcmU7
CiAgICAgaWYgKHN0YXJ0UG9zaXRpb24gIT0gc3RhcnRPZkVkaXRhYmxlQ29udGVudChzdGFydFBv
c2l0aW9uKSkgewpAQCAtMTM5MCw3ICsxMzkwLDcgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0RGlj
dGF0aW9uQ29udGV4dCh1aQogICAgICAgICAgICAgbGFzdFBvc2l0aW9uID0gY3VycmVudFBvc2l0
aW9uOwogICAgICAgICB9CiAgICAgICAgIGlmIChsYXN0UG9zaXRpb24uaXNOb3ROdWxsKCkgJiYg
bGFzdFBvc2l0aW9uICE9IHN0YXJ0UG9zaXRpb24pCi0gICAgICAgICAgICBjb250ZXh0QmVmb3Jl
ID0gcGxhaW5UZXh0KFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIGxhc3RQb3NpdGlv
biwgc3RhcnRQb3NpdGlvbikuZ2V0KCkpOworICAgICAgICAgICAgY29udGV4dEJlZm9yZSA9IHBs
YWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVu
dCgpLCBsYXN0UG9zaXRpb24sIHN0YXJ0UG9zaXRpb24pLmdldCgpKTsKICAgICB9CiAKICAgICBT
dHJpbmcgY29udGV4dEFmdGVyOwpAQCAtMTQwNCw3ICsxNDA0LDcgQEAgdm9pZCBXZWJQYWdlOjpy
ZXF1ZXN0RGljdGF0aW9uQ29udGV4dCh1aQogICAgICAgICAgICAgbGFzdFBvc2l0aW9uID0gY3Vy
cmVudFBvc2l0aW9uOwogICAgICAgICB9CiAgICAgICAgIGlmIChsYXN0UG9zaXRpb24uaXNOb3RO
dWxsKCkgJiYgbGFzdFBvc2l0aW9uICE9IGVuZFBvc2l0aW9uKQotICAgICAgICAgICAgY29udGV4
dEFmdGVyID0gcGxhaW5UZXh0KFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIGVuZFBv
c2l0aW9uLCBsYXN0UG9zaXRpb24pLmdldCgpKTsKKyAgICAgICAgICAgIGNvbnRleHRBZnRlciA9
IHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1
bWVudCgpLCBlbmRQb3NpdGlvbiwgbGFzdFBvc2l0aW9uKS5nZXQoKSk7CiAgICAgfQogCiAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWN0YXRpb25Db250ZXh0Q2FsbGJhY2soc2Vs
ZWN0ZWRUZXh0LCBjb250ZXh0QmVmb3JlLCBjb250ZXh0QWZ0ZXIsIGNhbGxiYWNrSUQpKTsKQEAg
LTE0MTQsNyArMTQxNCw3IEBAIHZvaWQgV2ViUGFnZTo6cmVwbGFjZVNlbGVjdGVkVGV4dChjb25z
dCAKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3Vz
ZWRPck1haW5GcmFtZSgpOwogICAgIFJlZlB0cjxSYW5nZT4gd29yZFJhbmdlID0gZnJhbWUuc2Vs
ZWN0aW9uKCkuaXNDYXJldCgpID8gd29yZFJhbmdlRnJvbVBvc2l0aW9uKGZyYW1lLnNlbGVjdGlv
bigpLnNlbGVjdGlvbigpLnN0YXJ0KCkpIDogZnJhbWUuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVk
UmFuZ2UoKTsKLSAgICBpZiAocGxhaW5UZXh0KHdvcmRSYW5nZS5nZXQoKSkgIT0gb2xkVGV4dCkK
KyAgICBpZiAocGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHdvcmRSYW5nZS5nZXQoKSkg
IT0gb2xkVGV4dCkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGZyYW1lLmVkaXRvcigpLnNl
dElnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlKHRydWUpOwpAQCAtMTQ0MCw3ICsxNDQw
LDcgQEAgdm9pZCBXZWJQYWdlOjpyZXBsYWNlRGljdGF0ZWRUZXh0KGNvbnN0IAogICAgICAgICBw
b3NpdGlvbiA9IHN0YXJ0T2ZEb2N1bWVudChzdGF0aWNfY2FzdDxOb2RlKj4oZnJhbWUuZG9jdW1l
bnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkpKTsKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFu
Z2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgcG9zaXRpb24sIGZyYW1lLnNlbGVjdGlvbigp
LnNlbGVjdGlvbigpLnN0YXJ0KCkpOwogCi0gICAgaWYgKHBsYWluVGV4dChyYW5nZS5nZXQoKSkg
IT0gb2xkVGV4dCkKKyAgICBpZiAocGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHJhbmdl
LmdldCgpKSAhPSBvbGRUZXh0KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBXZSBkb24ndCB3
YW50IHRvIG5vdGlmeSB0aGUgY2xpZW50IHRoYXQgdGhlIHNlbGVjdGlvbiBoYXMgY2hhbmdlZCB1
bnRpbCB3ZSBhcmUgZG9uZSBpbnNlcnRpbmcgdGhlIG5ldyB0ZXh0LgpAQCAtMTQ1OSw3ICsxNDU5
LDcgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKAogICAgIFZlY3Rv
cjxTZWxlY3Rpb25SZWN0PiBzZWxlY3Rpb25SZWN0czsKIAogICAgIHJhbmdlID0gd29yZFJhbmdl
RnJvbVBvc2l0aW9uKHBvc2l0aW9uKTsKLSAgICBTdHJpbmcgdGV4dEZvclJhbmdlID0gcGxhaW5U
ZXh0KHJhbmdlLmdldCgpKTsKKyAgICBTdHJpbmcgdGV4dEZvclJhbmdlID0gcGxhaW5UZXh0UmVw
bGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlLmdldCgpKTsKICAgICBjb25zdCB1bnNpZ25lZCBtYXhT
ZWFyY2hBdHRlbXB0cyA9IDU7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7ICBpIDwgbWF4U2VhcmNo
QXR0ZW1wdHMgJiYgdGV4dEZvclJhbmdlICE9IHRleHRGb3JBdXRvY29ycmVjdGlvbjsgKytpKQog
ICAgIHsKQEAgLTE0NjcsNyArMTQ2Nyw3IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdEF1dG9jb3Jy
ZWN0aW9uRGF0YSgKICAgICAgICAgaWYgKHBvc2l0aW9uLmlzTnVsbCgpIHx8IHBvc2l0aW9uID09
IHJhbmdlLT5zdGFydFBvc2l0aW9uKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgcmFu
Z2UgPSBSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCB3b3JkUmFuZ2VGcm9tUG9zaXRp
b24ocG9zaXRpb24pLT5zdGFydFBvc2l0aW9uKCksIHJhbmdlLT5lbmRQb3NpdGlvbigpKTsKLSAg
ICAgICAgdGV4dEZvclJhbmdlID0gcGxhaW5UZXh0KHJhbmdlLmdldCgpKTsKKyAgICAgICAgdGV4
dEZvclJhbmdlID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlLmdldCgpKTsK
ICAgICB9CiAgICAgaWYgKHRleHRGb3JSYW5nZSA9PSB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24pCiAg
ICAgICAgIHJhbmdlLT5jb2xsZWN0U2VsZWN0aW9uUmVjdHMoc2VsZWN0aW9uUmVjdHMpOwpAQCAt
MTUwNyw3ICsxNTA3LDcgQEAgdm9pZCBXZWJQYWdlOjpzeW5jQXBwbHlBdXRvY29ycmVjdGlvbihj
bwogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigpLnNlbGVj
dGlvbigpLnN0YXJ0KCk7CiAgICAgCiAgICAgcmFuZ2UgPSB3b3JkUmFuZ2VGcm9tUG9zaXRpb24o
cG9zaXRpb24pOwotICAgIFN0cmluZyB0ZXh0Rm9yUmFuZ2UgPSBwbGFpblRleHQocmFuZ2UuZ2V0
KCkpOworICAgIFN0cmluZyB0ZXh0Rm9yUmFuZ2UgPSBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFr
U3BhY2UocmFuZ2UuZ2V0KCkpOwogICAgIGlmICh0ZXh0Rm9yUmFuZ2UgIT0gb3JpZ2luYWxUZXh0
KSB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3JpZ2luYWxUZXh0Lmxlbmd0aCgp
OyArK2kpCiAgICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uLnByZXZpb3VzKCk7CkBAIC0x
NTE1LDcgKzE1MTUsNyBAQCB2b2lkIFdlYlBhZ2U6OnN5bmNBcHBseUF1dG9jb3JyZWN0aW9uKGNv
CiAgICAgICAgICAgICBwb3NpdGlvbiA9IHN0YXJ0T2ZEb2N1bWVudChzdGF0aWNfY2FzdDxOb2Rl
Kj4oZnJhbWUuZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkpKTsKICAgICAgICAgcmFuZ2Ug
PSBSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBwb3NpdGlvbiwgZnJhbWUuc2VsZWN0
aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSk7CiAgICAgICAgIGlmIChyYW5nZSkKLSAgICAgICAg
ICAgIHRleHRGb3JSYW5nZSA9IChyYW5nZSkgPyBwbGFpblRleHQocmFuZ2UuZ2V0KCkpIDogZW1w
dHlTdHJpbmcoKTsKKyAgICAgICAgICAgIHRleHRGb3JSYW5nZSA9IChyYW5nZSkgPyBwbGFpblRl
eHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2UuZ2V0KCkpIDogZW1wdHlTdHJpbmcoKTsKICAg
ICAgICAgdW5zaWduZWQgbG9vcENvdW50ID0gMDsKICAgICAgICAgY29uc3QgdW5zaWduZWQgbWF4
UG9zaXRpb25zQXR0ZW1wdHMgPSAxMDsKICAgICAgICAgd2hpbGUgKHRleHRGb3JSYW5nZS5sZW5n
dGgoKSAmJiB0ZXh0Rm9yUmFuZ2UubGVuZ3RoKCkgPiBvcmlnaW5hbFRleHQubGVuZ3RoKCkgJiYg
bG9vcENvdW50IDwgbWF4UG9zaXRpb25zQXR0ZW1wdHMpIHsKQEAgLTE1MjQsNyArMTUyNCw3IEBA
IHZvaWQgV2ViUGFnZTo6c3luY0FwcGx5QXV0b2NvcnJlY3Rpb24oY28KICAgICAgICAgICAgICAg
ICByYW5nZSA9IE5VTEw7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmFuZ2Ug
PSBSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBwb3NpdGlvbiwgZnJhbWUuc2VsZWN0
aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSk7Ci0gICAgICAgICAgICB0ZXh0Rm9yUmFuZ2UgPSAo
cmFuZ2UpID8gcGxhaW5UZXh0KHJhbmdlLmdldCgpKSA6IGVtcHR5U3RyaW5nKCk7CisgICAgICAg
ICAgICB0ZXh0Rm9yUmFuZ2UgPSAocmFuZ2UpID8gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1Nw
YWNlKHJhbmdlLmdldCgpKSA6IGVtcHR5U3RyaW5nKCk7CiAgICAgICAgICAgICBsb29wQ291bnQr
KzsKICAgICAgICAgfQogICAgIH0KQEAgLTE1NTMsMTcgKzE1NTMsMTcgQEAgc3RhdGljIHZvaWQg
Y29tcHV0ZUF1dG9jb3JyZWN0aW9uQ29udGV4dAogICAgIGNvbnN0IHVuc2lnbmVkIG1heENvbnRl
eHRMZW5ndGggPSAzMDsKIAogICAgIGlmIChmcmFtZS5zZWxlY3Rpb24oKS5pc1JhbmdlKCkpCi0g
ICAgICAgIHNlbGVjdGVkVGV4dCA9IHBsYWluVGV4dChmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rp
b24oKS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKKyAgICAgICAgc2VsZWN0ZWRUZXh0ID0g
cGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlv
bigpLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOwogCiAgICAgaWYgKGZyYW1lLmVkaXRvcigp
Lmhhc0NvbXBvc2l0aW9uKCkpIHsKICAgICAgICAgcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpmcmFt
ZS5kb2N1bWVudCgpLCBmcmFtZS5lZGl0b3IoKS5jb21wb3NpdGlvblJhbmdlKCktPnN0YXJ0UG9z
aXRpb24oKSwgc3RhcnRQb3NpdGlvbik7CiAgICAgICAgIFN0cmluZyBtYXJrZWRUZXh0QmVmb3Jl
OwogICAgICAgICBpZiAocmFuZ2UpCi0gICAgICAgICAgICBtYXJrZWRUZXh0QmVmb3JlID0gcGxh
aW5UZXh0KHJhbmdlLmdldCgpKTsKKyAgICAgICAgICAgIG1hcmtlZFRleHRCZWZvcmUgPSBwbGFp
blRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UocmFuZ2UuZ2V0KCkpOwogICAgICAgICByYW5nZSA9
IFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIGVuZFBvc2l0aW9uLCBmcmFtZS5lZGl0
b3IoKS5jb21wb3NpdGlvblJhbmdlKCktPmVuZFBvc2l0aW9uKCkpOwogICAgICAgICBTdHJpbmcg
bWFya2VkVGV4dEFmdGVyOwogICAgICAgICBpZiAocmFuZ2UpCi0gICAgICAgICAgICBtYXJrZWRU
ZXh0QWZ0ZXIgPSBwbGFpblRleHQocmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAgbWFya2VkVGV4
dEFmdGVyID0gcGxhaW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKHJhbmdlLmdldCgpKTsKICAg
ICAgICAgbWFya2VkVGV4dCA9IG1hcmtlZFRleHRCZWZvcmUgKyBzZWxlY3RlZFRleHQgKyBtYXJr
ZWRUZXh0QWZ0ZXI7CiAgICAgICAgIGlmICghbWFya2VkVGV4dC5pc0VtcHR5KCkpIHsKICAgICAg
ICAgICAgIGxvY2F0aW9uID0gbWFya2VkVGV4dEJlZm9yZS5sZW5ndGgoKTsKQEAgLTE1ODAsMTQg
KzE1ODAsMTQgQEAgc3RhdGljIHZvaWQgY29tcHV0ZUF1dG9jb3JyZWN0aW9uQ29udGV4dAogICAg
ICAgICAgICAgICAgIHByZXZpb3VzUG9zaXRpb24gPSBzdGFydE9mV29yZChwb3NpdGlvbk9mTmV4
dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShjdXJyZW50UG9zaXRpb24sIFdvcmRHcmFudWxhcml0eSwg
RGlyZWN0aW9uQmFja3dhcmQpKTsKICAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNQb3NpdGlv
bi5pc051bGwoKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
U3RyaW5nIGN1cnJlbnRXb3JkID0gcGxhaW5UZXh0KFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3Vt
ZW50KCksIHByZXZpb3VzUG9zaXRpb24sIGN1cnJlbnRQb3NpdGlvbikuZ2V0KCkpOworICAgICAg
ICAgICAgICAgIFN0cmluZyBjdXJyZW50V29yZCA9IHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtT
cGFjZShSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBwcmV2aW91c1Bvc2l0aW9uLCBj
dXJyZW50UG9zaXRpb24pLmdldCgpKTsKICAgICAgICAgICAgICAgICB0b3RhbENvbnRleHRMZW5n
dGggKz0gY3VycmVudFdvcmQubGVuZ3RoKCk7CiAgICAgICAgICAgICAgICAgaWYgKHRvdGFsQ29u
dGV4dExlbmd0aCA+PSBtYXhDb250ZXh0TGVuZ3RoKQogICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICBjdXJyZW50UG9zaXRpb24gPSBwcmV2aW91c1Bvc2l0aW9uOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGN1cnJlbnRQb3NpdGlvbi5pc05vdE51bGwo
KSAmJiBjdXJyZW50UG9zaXRpb24gIT0gc3RhcnRQb3NpdGlvbikgewotICAgICAgICAgICAgICAg
IGNvbnRleHRCZWZvcmUgPSBwbGFpblRleHQoUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQo
KSwgY3VycmVudFBvc2l0aW9uLCBzdGFydFBvc2l0aW9uKS5nZXQoKSk7CisgICAgICAgICAgICAg
ICAgY29udGV4dEJlZm9yZSA9IHBsYWluVGV4dFJlcGxhY2luZ05vQnJlYWtTcGFjZShSYW5nZTo6
Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBjdXJyZW50UG9zaXRpb24sIHN0YXJ0UG9zaXRpb24p
LmdldCgpKTsKICAgICAgICAgICAgICAgICBpZiAoYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoY3Vy
cmVudFBvc2l0aW9uLCBQYXJhZ3JhcGhHcmFudWxhcml0eSwgRGlyZWN0aW9uQmFja3dhcmQpKQog
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0QmVmb3JlID0gQVNDSUlMaXRlcmFsKCJcbiAiKSAr
IGNvbnRleHRCZWZvcmU7CiAgICAgICAgICAgICB9CkBAIC0xNTk4LDcgKzE1OTgsNyBAQCBzdGF0
aWMgdm9pZCBjb21wdXRlQXV0b2NvcnJlY3Rpb25Db250ZXh0CiAgICAgICAgICAgICBpZiAoIWF0
Qm91bmRhcnlPZkdyYW51bGFyaXR5KGVuZFBvc2l0aW9uLCBXb3JkR3JhbnVsYXJpdHksIERpcmVj
dGlvbkZvcndhcmQpICYmIHdpdGhpblRleHRVbml0T2ZHcmFudWxhcml0eShlbmRQb3NpdGlvbiwg
V29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKSkKICAgICAgICAgICAgICAgICBuZXh0
UG9zaXRpb24gPSBwb3NpdGlvbk9mTmV4dEJvdW5kYXJ5T2ZHcmFudWxhcml0eShlbmRQb3NpdGlv
biwgV29yZEdyYW51bGFyaXR5LCBEaXJlY3Rpb25Gb3J3YXJkKTsKICAgICAgICAgICAgIGlmIChu
ZXh0UG9zaXRpb24uaXNOb3ROdWxsKCkpCi0gICAgICAgICAgICAgICAgY29udGV4dEFmdGVyID0g
cGxhaW5UZXh0KFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIGVuZFBvc2l0aW9uLCBu
ZXh0UG9zaXRpb24pLmdldCgpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0QWZ0ZXIgPSBwbGFp
blRleHRSZXBsYWNpbmdOb0JyZWFrU3BhY2UoUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQo
KSwgZW5kUG9zaXRpb24sIG5leHRQb3NpdGlvbikuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQog
fQo=
</data>
<flag name="review"
          id="256807"
          type_id="1"
          status="+"
          setter="benjamin"
    />
    <flag name="commit-queue"
          id="256810"
          type_id="3"
          status="-"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>