<?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>137740</bug_id>
          
          <creation_ts>2014-10-15 06:34:35 -0700</creation_ts>
          <short_desc>Clean up subtrees selection code</short_desc>
          <delta_ts>2014-10-28 09:05:33 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mihnea Ovidenie">mihnea</reporter>
          <assigned_to name="Mihnea Ovidenie">mihnea</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>hyatt</cc>
    
    <cc>kling</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1041849</commentid>
    <comment_count>0</comment_count>
    <who name="Mihnea Ovidenie">mihnea</who>
    <bug_when>2014-10-15 06:34:35 -0700</bug_when>
    <thetext>Clean up subtrees selection code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041850</commentid>
    <comment_count>1</comment_count>
      <attachid>239871</attachid>
    <who name="Mihnea Ovidenie">mihnea</who>
    <bug_when>2014-10-15 06:36:56 -0700</bug_when>
    <thetext>Created attachment 239871
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043986</commentid>
    <comment_count>2</comment_count>
      <attachid>239871</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2014-10-24 11:09:12 -0700</bug_when>
    <thetext>Comment on attachment 239871
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044470</commentid>
    <comment_count>3</comment_count>
      <attachid>240539</attachid>
    <who name="Mihnea Ovidenie">mihnea</who>
    <bug_when>2014-10-28 08:06:05 -0700</bug_when>
    <thetext>Created attachment 240539
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044488</commentid>
    <comment_count>4</comment_count>
      <attachid>240539</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-28 09:05:29 -0700</bug_when>
    <thetext>Comment on attachment 240539
Patch for landing

Clearing flags on attachment: 240539

Committed r175252: &lt;http://trac.webkit.org/changeset/175252&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044489</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-28 09:05:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239871</attachid>
            <date>2014-10-15 06:36:56 -0700</date>
            <delta_ts>2014-10-28 08:05:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>137740.patch</filename>
            <type>text/plain</type>
            <size>26038</size>
            <attacher name="Mihnea Ovidenie">mihnea</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0NWY0OTkxLi43MGM3ZDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNTcg
QEAKIDIwMTQtMTAtMTUgIE1paG5lYSBPdmlkZW5pZSAgPG1paG5lYUBhZG9iZS5jb20+CiAKKyAg
ICAgICAgQ2xlYW4gdXAgc3VidHJlZXMgc2VsZWN0aW9uIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzc0MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENsZWFuIHVwIHN1YnRyZWVzIHNlbGVjdGlv
biBjb2RlLiBBZGQgYSBuZXcgY2xhc3MgU2VsZWN0aW9uU3VidHJlZURhdGEKKyAgICAgICAgdGhh
dCBrZWVwcyBvbmx5IHRoZSBzZWxlY3Rpb24gZGF0YS4gSGF2ZSBTZWxlY3Rpb25TdWJ0cmVlUm9v
dCBjbGFzcyBlbWJlZAorICAgICAgICBhIFNlbGVjdGlvblN1YnRyZWVEYXRhIG1lbWJlciBhbmQg
a2VlcCB0aGUgYnVzaW5lc3MgbG9naWMgbWV0aG9kcy4KKyAgICAgICAgTm8gZnVuY3Rpb25hbGl0
eSBjaGFuZ2VkIHRoZXJlZm9yZSBubyBuZXcgbGF5b3V0IHRlc3RzLgorCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6
OnNlbGVjdGlvblN0YXJ0RW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpzdWJ0cmVlU2VsZWN0aW9uQm91bmRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnJlcGFpbnRTdWJ0cmVlU2VsZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnNldFNlbGVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJWaWV3OjpzcGxpdFNlbGVjdGlvbkJldHdlZW5TdWJ0cmVlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3Ojp1cGRhdGVTZWxlY3Rpb25Gb3JTdWJ0cmVlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpjbGVhclN1YnRyZWVTZWxlY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6YXBwbHlTdWJ0cmVlU2VsZWN0aW9uKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5oOgorICAgICAgICAqIHJlbmRlcmluZy9TZWxlY3Rp
b25TdWJ0cmVlUm9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25TdWJ0cmVlUm9v
dDo6U2VsZWN0aW9uU3VidHJlZVJvb3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uU3Vi
dHJlZVJvb3Q6OmFkanVzdEZvclZpc2libGVTZWxlY3Rpb24pOgorICAgICAgICAqIHJlbmRlcmlu
Zy9TZWxlY3Rpb25TdWJ0cmVlUm9vdC5oOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uU3Vi
dHJlZVJvb3Q6OlNlbGVjdGlvblN1YnRyZWVEYXRhOjpTZWxlY3Rpb25TdWJ0cmVlRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25TdWJ0cmVlUm9vdDo6U2VsZWN0aW9uU3VidHJlZURh
dGE6OnNlbGVjdGlvblN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblN1YnRyZWVS
b290OjpTZWxlY3Rpb25TdWJ0cmVlRGF0YTo6c2VsZWN0aW9uU3RhcnRQb3MpOgorICAgICAgICAo
V2ViQ29yZTo6U2VsZWN0aW9uU3VidHJlZVJvb3Q6OlNlbGVjdGlvblN1YnRyZWVEYXRhOjpzZWxl
Y3Rpb25FbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uU3VidHJlZVJvb3Q6OlNlbGVj
dGlvblN1YnRyZWVEYXRhOjpzZWxlY3Rpb25FbmRQb3MpOgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0aW9uU3VidHJlZVJvb3Q6OlNlbGVjdGlvblN1YnRyZWVEYXRhOjpzZWxlY3Rpb25DbGVhcik6
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25TdWJ0cmVlUm9vdDo6U2VsZWN0aW9uU3VidHJl
ZURhdGE6OnNlbGVjdGlvblN0YXJ0RW5kUG9zaXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
bGVjdGlvblN1YnRyZWVSb290OjpTZWxlY3Rpb25TdWJ0cmVlRGF0YTo6c2V0U2VsZWN0aW9uU3Rh
cnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uU3VidHJlZVJvb3Q6OlNlbGVjdGlvblN1
YnRyZWVEYXRhOjpzZXRTZWxlY3Rpb25TdGFydFBvcyk6CisgICAgICAgIChXZWJDb3JlOjpTZWxl
Y3Rpb25TdWJ0cmVlUm9vdDo6U2VsZWN0aW9uU3VidHJlZURhdGE6OnNldFNlbGVjdGlvbkVuZCk6
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25TdWJ0cmVlUm9vdDo6U2VsZWN0aW9uU3VidHJl
ZURhdGE6OnNldFNlbGVjdGlvbkVuZFBvcyk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25T
dWJ0cmVlUm9vdDo6U2VsZWN0aW9uU3VidHJlZURhdGE6OmNsZWFyU2VsZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlbGVjdGlvblN1YnRyZWVSb290OjpzZWxlY3Rpb25EYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlbGVjdGlvblN1YnRyZWVSb290OjpzZXRTZWxlY3Rpb25EYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblN1YnRyZWVSb290OjpzZWxlY3Rpb25TdGFydCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25TdWJ0cmVlUm9vdDo6c2VsZWN0aW9u
U3RhcnRQb3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uU3VidHJlZVJv
b3Q6OnNlbGVjdGlvbkVuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25T
dWJ0cmVlUm9vdDo6c2VsZWN0aW9uRW5kUG9zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdGlvblN1YnRyZWVSb290OjpzZWxlY3Rpb25TdGFydEVuZFBvc2l0aW9ucyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25TdWJ0cmVlUm9vdDo6c2VsZWN0aW9uQ2xl
YXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uU3VidHJlZVJvb3Q6OnNl
dFNlbGVjdGlvblN0YXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblN1
YnRyZWVSb290OjpzZXRTZWxlY3Rpb25TdGFydFBvcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTZWxlY3Rpb25TdWJ0cmVlUm9vdDo6c2V0U2VsZWN0aW9uRW5kKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblN1YnRyZWVSb290OjpzZXRTZWxlY3Rpb25FbmRQb3Mp
OiBEZWxldGVkLgorCisyMDE0LTEwLTE1ICBNaWhuZWEgT3ZpZGVuaWUgIDxtaWhuZWFAYWRvYmUu
Y29tPgorCiAgICAgICAgIFVzZSBtb2Rlcm4gbG9vcHMgaW4gc3VidHJlZXMgc2VsZWN0aW9uIGNv
ZGUKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzY4
OAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IGZiOWZl
OGYuLjlmOTk1ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
CkBAIC0xNjY4LDcgKzE2NjgsNyBAQCBTZWxlY3Rpb25TdWJ0cmVlUm9vdCYgUmVuZGVyT2JqZWN0
OjpzZWxlY3Rpb25Sb290KCkgY29uc3QKIAogdm9pZCBSZW5kZXJPYmplY3Q6OnNlbGVjdGlvblN0
YXJ0RW5kKGludCYgc3BvcywgaW50JiBlcG9zKSBjb25zdAogewotICAgIHNlbGVjdGlvblJvb3Qo
KS5zZWxlY3Rpb25TdGFydEVuZFBvc2l0aW9ucyhzcG9zLCBlcG9zKTsKKyAgICBzZWxlY3Rpb25S
b290KCkuc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvblN0YXJ0RW5kUG9zaXRpb25zKHNwb3MsIGVw
b3MpOwogfQogCiB2b2lkIFJlbmRlck9iamVjdDo6aGFuZGxlRHluYW1pY0Zsb2F0UG9zaXRpb25D
aGFuZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCmluZGV4IDdjYzc0
ODEuLmViMmQzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAg
LTc1OSwxMSArNzU5LDExIEBAIExheW91dFJlY3QgUmVuZGVyVmlldzo6c3VidHJlZVNlbGVjdGlv
bkJvdW5kcyhjb25zdCBTZWxlY3Rpb25TdWJ0cmVlUm9vdCYgcm9vdCwKICAgICB0eXBlZGVmIEhh
c2hNYXA8UmVuZGVyT2JqZWN0Kiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclNlbGVjdGlvbkluZm8+
PiBTZWxlY3Rpb25NYXA7CiAgICAgU2VsZWN0aW9uTWFwIHNlbGVjdGVkT2JqZWN0czsKIAotICAg
IFJlbmRlck9iamVjdCogb3MgPSByb290LnNlbGVjdGlvblN0YXJ0KCk7Ci0gICAgUmVuZGVyT2Jq
ZWN0KiBzdG9wID0gcmVuZGVyZXJBZnRlclBvc2l0aW9uKHJvb3Quc2VsZWN0aW9uRW5kKCksIHJv
b3Quc2VsZWN0aW9uRW5kUG9zKCkpOworICAgIFJlbmRlck9iamVjdCogb3MgPSByb290LnNlbGVj
dGlvbkRhdGEoKS5zZWxlY3Rpb25TdGFydCgpOworICAgIFJlbmRlck9iamVjdCogc3RvcCA9IHJl
bmRlcmVyQWZ0ZXJQb3NpdGlvbihyb290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25FbmQoKSwg
cm9vdC5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uRW5kUG9zKCkpOwogICAgIFNlbGVjdGlvbkl0
ZXJhdG9yIHNlbGVjdGlvbkl0ZXJhdG9yKG9zKTsKICAgICB3aGlsZSAob3MgJiYgb3MgIT0gc3Rv
cCkgewotICAgICAgICBpZiAoKG9zLT5jYW5CZVNlbGVjdGlvbkxlYWYoKSB8fCBvcyA9PSByb290
LnNlbGVjdGlvblN0YXJ0KCkgfHwgb3MgPT0gcm9vdC5zZWxlY3Rpb25FbmQoKSkgJiYgb3MtPnNl
bGVjdGlvblN0YXRlKCkgIT0gU2VsZWN0aW9uTm9uZSkgeworICAgICAgICBpZiAoKG9zLT5jYW5C
ZVNlbGVjdGlvbkxlYWYoKSB8fCBvcyA9PSByb290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25T
dGFydCgpIHx8IG9zID09IHJvb3Quc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvbkVuZCgpKSAmJiBv
cy0+c2VsZWN0aW9uU3RhdGUoKSAhPSBTZWxlY3Rpb25Ob25lKSB7CiAgICAgICAgICAgICAvLyBC
bG9ja3MgYXJlIHJlc3BvbnNpYmxlIGZvciBwYWludGluZyBsaW5lIGdhcHMgYW5kIG1hcmdpbiBn
YXBzLiBUaGV5IG11c3QgYmUgZXhhbWluZWQgYXMgd2VsbC4KICAgICAgICAgICAgIHNlbGVjdGVk
T2JqZWN0cy5zZXQob3MsIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKm9z
LCBjbGlwVG9WaXNpYmxlQ29udGVudCkpOwogICAgICAgICAgICAgUmVuZGVyQmxvY2sqIGNiID0g
b3MtPmNvbnRhaW5pbmdCbG9jaygpOwpAQCAtODA5LDEwICs4MDksMTAgQEAgdm9pZCBSZW5kZXJW
aWV3OjpyZXBhaW50U3VidHJlZVNlbGVjdGlvbihjb25zdCBTZWxlY3Rpb25TdWJ0cmVlUm9vdCYg
cm9vdCkgY29uc3QKIHsKICAgICBIYXNoU2V0PFJlbmRlckJsb2NrKj4gcHJvY2Vzc2VkQmxvY2tz
OwogCi0gICAgUmVuZGVyT2JqZWN0KiBlbmQgPSByZW5kZXJlckFmdGVyUG9zaXRpb24ocm9vdC5z
ZWxlY3Rpb25FbmQoKSwgcm9vdC5zZWxlY3Rpb25FbmRQb3MoKSk7Ci0gICAgU2VsZWN0aW9uSXRl
cmF0b3Igc2VsZWN0aW9uSXRlcmF0b3Iocm9vdC5zZWxlY3Rpb25TdGFydCgpKTsKKyAgICBSZW5k
ZXJPYmplY3QqIGVuZCA9IHJlbmRlcmVyQWZ0ZXJQb3NpdGlvbihyb290LnNlbGVjdGlvbkRhdGEo
KS5zZWxlY3Rpb25FbmQoKSwgcm9vdC5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uRW5kUG9zKCkp
OworICAgIFNlbGVjdGlvbkl0ZXJhdG9yIHNlbGVjdGlvbkl0ZXJhdG9yKHJvb3Quc2VsZWN0aW9u
RGF0YSgpLnNlbGVjdGlvblN0YXJ0KCkpOwogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBvID0gc2Vs
ZWN0aW9uSXRlcmF0b3IuY3VycmVudCgpOyBvICYmIG8gIT0gZW5kOyBvID0gc2VsZWN0aW9uSXRl
cmF0b3IubmV4dCgpKSB7Ci0gICAgICAgIGlmICghby0+Y2FuQmVTZWxlY3Rpb25MZWFmKCkgJiYg
byAhPSByb290LnNlbGVjdGlvblN0YXJ0KCkgJiYgbyAhPSByb290LnNlbGVjdGlvbkVuZCgpKQor
ICAgICAgICBpZiAoIW8tPmNhbkJlU2VsZWN0aW9uTGVhZigpICYmIG8gIT0gcm9vdC5zZWxlY3Rp
b25EYXRhKCkuc2VsZWN0aW9uU3RhcnQoKSAmJiBvICE9IHJvb3Quc2VsZWN0aW9uRGF0YSgpLnNl
bGVjdGlvbkVuZCgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChvLT5zZWxl
Y3Rpb25TdGF0ZSgpID09IFNlbGVjdGlvbk5vbmUpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAg
LTg3MCw3ICs4NzAsNyBAQCB2b2lkIFJlbmRlclZpZXc6OnNldFNlbGVjdGlvbihSZW5kZXJPYmpl
Y3QqIHN0YXJ0LCBpbnQgc3RhcnRQb3MsIFJlbmRlck9iamVjdCogZQogICAgIC8vIElmIHRoZXJl
IGlzIG5vIFJlbmRlck5hbWVkRmxvd1RocmVhZHMgd2UgZm9sbG93IHRoZSByZWd1bGFyIHNlbGVj
dGlvbi4KICAgICBpZiAoIWhhc1JlbmRlck5hbWVkRmxvd1RocmVhZHMoKSkgewogICAgICAgICBS
ZW5kZXJTdWJ0cmVlc01hcCBzaW5nbGVTdWJ0cmVlTWFwOwotICAgICAgICBzaW5nbGVTdWJ0cmVl
TWFwLnNldCh0aGlzLCBTZWxlY3Rpb25TdWJ0cmVlUm9vdChzdGFydCwgc3RhcnRQb3MsIGVuZCwg
ZW5kUG9zKSk7CisgICAgICAgIHNpbmdsZVN1YnRyZWVNYXAuc2V0KHRoaXMsIFNlbGVjdGlvblN1
YnRyZWVEYXRhKHN0YXJ0LCBzdGFydFBvcywgZW5kLCBlbmRQb3MpKTsKICAgICAgICAgdXBkYXRl
U2VsZWN0aW9uRm9yU3VidHJlZXMoc2luZ2xlU3VidHJlZU1hcCwgYmxvY2tSZXBhaW50TW9kZSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC04ODMsNyArODgzLDcgQEAgdm9pZCBSZW5kZXJW
aWV3OjpzcGxpdFNlbGVjdGlvbkJldHdlZW5TdWJ0cmVlcyhjb25zdCBSZW5kZXJPYmplY3QqIHN0
YXJ0LCBpbnQgc3QKICAgICAvLyBDb21wdXRlIHRoZSB2aXNpYmxlIHNlbGVjdGlvbiBlbmQgcG9p
bnRzIGZvciBlYWNoIG9mIHRoZSBzdWJ0cmVlcy4KICAgICBSZW5kZXJTdWJ0cmVlc01hcCByZW5k
ZXJTdWJ0cmVlc01hcDsKIAotICAgIFNlbGVjdGlvblN1YnRyZWVSb290IGluaXRpYWxTZWxlY3Rp
b247CisgICAgU2VsZWN0aW9uU3VidHJlZURhdGEgaW5pdGlhbFNlbGVjdGlvbjsKICAgICByZW5k
ZXJTdWJ0cmVlc01hcC5zZXQodGhpcywgaW5pdGlhbFNlbGVjdGlvbik7CiAgICAgZm9yIChhdXRv
KiBuYW1lZEZsb3dUaHJlYWQgOiAqZmxvd1RocmVhZENvbnRyb2xsZXIoKS5yZW5kZXJOYW1lZEZs
b3dUaHJlYWRMaXN0KCkpCiAgICAgICAgIHJlbmRlclN1YnRyZWVzTWFwLnNldChuYW1lZEZsb3dU
aHJlYWQsIGluaXRpYWxTZWxlY3Rpb24pOwpAQCAtODk5LDcgKzg5OSw3IEBAIHZvaWQgUmVuZGVy
Vmlldzo6c3BsaXRTZWxlY3Rpb25CZXR3ZWVuU3VidHJlZXMoY29uc3QgUmVuZGVyT2JqZWN0KiBz
dGFydCwgaW50IHN0CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIFNl
bGVjdGlvblN1YnRyZWVSb290JiByb290ID0gcmVuZGVyZXItPnNlbGVjdGlvblJvb3QoKTsKLSAg
ICAgICAgICAgIFNlbGVjdGlvblN1YnRyZWVSb290IHNlbGVjdGlvbkRhdGEgPSByZW5kZXJTdWJ0
cmVlc01hcC5nZXQoJnJvb3QpOworICAgICAgICAgICAgU2VsZWN0aW9uU3VidHJlZURhdGEgc2Vs
ZWN0aW9uRGF0YSA9IHJlbmRlclN1YnRyZWVzTWFwLmdldCgmcm9vdCk7CiAgICAgICAgICAgICBp
ZiAoc2VsZWN0aW9uRGF0YS5zZWxlY3Rpb25DbGVhcigpKSB7CiAgICAgICAgICAgICAgICAgc2Vs
ZWN0aW9uRGF0YS5zZXRTZWxlY3Rpb25TdGFydChub2RlLT5yZW5kZXJlcigpKTsKICAgICAgICAg
ICAgICAgICBzZWxlY3Rpb25EYXRhLnNldFNlbGVjdGlvblN0YXJ0UG9zKG5vZGUgPT0gc3RhcnRO
b2RlID8gc3RhcnRQb3MgOiAwKTsKQEAgLTkyMiwyOSArOTIyLDI0IEBAIHZvaWQgUmVuZGVyVmll
dzo6dXBkYXRlU2VsZWN0aW9uRm9yU3VidHJlZXMoUmVuZGVyU3VidHJlZXNNYXAmIHJlbmRlclN1
YnRyZWVzTWFwCiB7CiAgICAgU3VidHJlZU9sZFNlbGVjdGlvbkRhdGFNYXAgb2xkU2VsZWN0aW9u
RGF0YU1hcDsKICAgICBmb3IgKGF1dG8mIHN1YnRyZWVTZWxlY3Rpb25JbmZvIDogcmVuZGVyU3Vi
dHJlZXNNYXApIHsKLSAgICAgICAgU2VsZWN0aW9uU3VidHJlZVJvb3QmIHN1YnRyZWVTZWxlY3Rp
b25EYXRhID0gc3VidHJlZVNlbGVjdGlvbkluZm8udmFsdWU7Ci0gICAgICAgIGlmIChoYXNSZW5k
ZXJOYW1lZEZsb3dUaHJlYWRzKCkpCi0gICAgICAgICAgICBzdWJ0cmVlU2VsZWN0aW9uRGF0YS5h
ZGp1c3RGb3JWaXNpYmxlU2VsZWN0aW9uKGRvY3VtZW50KCkpOwotCi0gICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxPbGRTZWxlY3Rpb25EYXRhPiBvbGRTZWxlY3Rpb25EYXRhID0gc3RkOjptYWtlX3Vu
aXF1ZTxPbGRTZWxlY3Rpb25EYXRhPigpOwogICAgICAgICBTZWxlY3Rpb25TdWJ0cmVlUm9vdCYg
cm9vdCA9ICpzdWJ0cmVlU2VsZWN0aW9uSW5mby5rZXk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxPbGRTZWxlY3Rpb25EYXRhPiBvbGRTZWxlY3Rpb25EYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxP
bGRTZWxlY3Rpb25EYXRhPigpOworCiAgICAgICAgIGNsZWFyU3VidHJlZVNlbGVjdGlvbihyb290
LCBibG9ja1JlcGFpbnRNb2RlLCAqb2xkU2VsZWN0aW9uRGF0YSk7CiAgICAgICAgIG9sZFNlbGVj
dGlvbkRhdGFNYXAuc2V0KCZyb290LCBXVEY6Om1vdmUob2xkU2VsZWN0aW9uRGF0YSkpOwogCi0g
ICAgICAgIHJvb3Quc2V0U2VsZWN0aW9uU3RhcnQoc3VidHJlZVNlbGVjdGlvbkRhdGEuc2VsZWN0
aW9uU3RhcnQoKSk7Ci0gICAgICAgIHJvb3Quc2V0U2VsZWN0aW9uU3RhcnRQb3Moc3VidHJlZVNl
bGVjdGlvbkRhdGEuc2VsZWN0aW9uU3RhcnRQb3MoKSk7Ci0gICAgICAgIHJvb3Quc2V0U2VsZWN0
aW9uRW5kKHN1YnRyZWVTZWxlY3Rpb25EYXRhLnNlbGVjdGlvbkVuZCgpKTsKLSAgICAgICAgcm9v
dC5zZXRTZWxlY3Rpb25FbmRQb3Moc3VidHJlZVNlbGVjdGlvbkRhdGEuc2VsZWN0aW9uRW5kUG9z
KCkpOworICAgICAgICByb290LnNldFNlbGVjdGlvbkRhdGEoc3VidHJlZVNlbGVjdGlvbkluZm8u
dmFsdWUpOworICAgICAgICBpZiAoaGFzUmVuZGVyTmFtZWRGbG93VGhyZWFkcygpKQorICAgICAg
ICAgICAgcm9vdC5hZGp1c3RGb3JWaXNpYmxlU2VsZWN0aW9uKGRvY3VtZW50KCkpOwogICAgIH0K
IAogICAgIC8vIFVwZGF0ZSBzZWxlY3Rpb24gc3RhdHVzIGZvciB0aGUgb2JqZWN0cyBpbnNpZGUg
dGhlIHNlbGVjdGlvbiBzdWJ0cmVlcy4KICAgICAvLyBUaGlzIG5lZWRzIHRvIGJlIGRvbmUgYWZ0
ZXIgdGhlIHByZXZpb3VzIGxvb3AgdXBkYXRlZCB0aGUgc2VsZWN0aW9uU3RhcnQvRW5kCiAgICAg
Ly8gcGFyYW1ldGVycyBvZiBhbGwgc3VidHJlZXMgYmVjYXVzZSB3ZSdyZSBnb2luZyB0byBiZSBj
bGltYmluZyB1cCB0aGUgY29udGFpbmluZwogICAgIC8vIGJsb2NrIGNoYWluIGFuZCB3ZSBtaWdo
dCBlbmQgdXAgaW4gYSBkaWZmZXJlbnQgc2VsZWN0aW9uIHN1YnRyZWUuCi0gICAgZm9yIChhdXRv
JiBzdWJ0cmVlU2VsZWN0aW9uSW5mbyA6IHJlbmRlclN1YnRyZWVzTWFwKSB7Ci0gICAgICAgIFNl
bGVjdGlvblN1YnRyZWVSb290JiBzdWJ0cmVlU2VsZWN0aW9uRGF0YSA9IHN1YnRyZWVTZWxlY3Rp
b25JbmZvLnZhbHVlOwotICAgICAgICBPbGRTZWxlY3Rpb25EYXRhJiBvbGRTZWxlY3Rpb25EYXRh
ID0gKm9sZFNlbGVjdGlvbkRhdGFNYXAuZ2V0KHN1YnRyZWVTZWxlY3Rpb25JbmZvLmtleSk7Ci0g
ICAgICAgIGFwcGx5U3VidHJlZVNlbGVjdGlvbigqc3VidHJlZVNlbGVjdGlvbkluZm8ua2V5LCBz
dWJ0cmVlU2VsZWN0aW9uRGF0YS5zZWxlY3Rpb25TdGFydCgpLCBzdWJ0cmVlU2VsZWN0aW9uRGF0
YS5zZWxlY3Rpb25FbmQoKSwgc3VidHJlZVNlbGVjdGlvbkRhdGEuc2VsZWN0aW9uRW5kUG9zKCks
IGJsb2NrUmVwYWludE1vZGUsIG9sZFNlbGVjdGlvbkRhdGEpOworICAgIGZvciAoY29uc3QgYXV0
byogc3VidHJlZVNlbGVjdGlvblJvb3QgOiByZW5kZXJTdWJ0cmVlc01hcC5rZXlzKCkpIHsKKyAg
ICAgICAgT2xkU2VsZWN0aW9uRGF0YSYgb2xkU2VsZWN0aW9uRGF0YSA9ICpvbGRTZWxlY3Rpb25E
YXRhTWFwLmdldChzdWJ0cmVlU2VsZWN0aW9uUm9vdCk7CisgICAgICAgIGFwcGx5U3VidHJlZVNl
bGVjdGlvbigqc3VidHJlZVNlbGVjdGlvblJvb3QsIGJsb2NrUmVwYWludE1vZGUsIG9sZFNlbGVj
dGlvbkRhdGEpOwogICAgIH0KIH0KIApAQCAtOTUyLDE4ICs5NDcsMTggQEAgdm9pZCBSZW5kZXJW
aWV3OjpjbGVhclN1YnRyZWVTZWxlY3Rpb24oY29uc3QgU2VsZWN0aW9uU3VidHJlZVJvb3QmIHJv
b3QsIFNlbGVjdGkKIHsKICAgICAvLyBSZWNvcmQgdGhlIG9sZCBzZWxlY3RlZCBvYmplY3RzLiAg
VGhlc2Ugd2lsbCBiZSB1c2VkIGxhdGVyCiAgICAgLy8gd2hlbiB3ZSBjb21wYXJlIGFnYWluc3Qg
dGhlIG5ldyBzZWxlY3RlZCBvYmplY3RzLgotICAgIG9sZFNlbGVjdGlvbkRhdGEuc2VsZWN0aW9u
U3RhcnRQb3MgPSByb290LnNlbGVjdGlvblN0YXJ0UG9zKCk7Ci0gICAgb2xkU2VsZWN0aW9uRGF0
YS5zZWxlY3Rpb25FbmRQb3MgPSByb290LnNlbGVjdGlvbkVuZFBvcygpOworICAgIG9sZFNlbGVj
dGlvbkRhdGEuc2VsZWN0aW9uU3RhcnRQb3MgPSByb290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rp
b25TdGFydFBvcygpOworICAgIG9sZFNlbGVjdGlvbkRhdGEuc2VsZWN0aW9uRW5kUG9zID0gcm9v
dC5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uRW5kUG9zKCk7CiAgICAgCiAgICAgLy8gQmxvY2tz
IGNvbnRhaW4gc2VsZWN0ZWQgb2JqZWN0cyBhbmQgZmlsbCBnYXBzIGJldHdlZW4gdGhlbSwgZWl0
aGVyIG9uIHRoZSBsZWZ0LCByaWdodCwgb3IgaW4gYmV0d2VlbiBsaW5lcyBhbmQgYmxvY2tzLgog
ICAgIC8vIEluIG9yZGVyIHRvIGdldCB0aGUgcmVwYWludCByZWN0IHJpZ2h0LCB3ZSBoYXZlIHRv
IGV4YW1pbmUgbGVmdCwgbWlkZGxlLCBhbmQgcmlnaHQgcmVjdHMgaW5kaXZpZHVhbGx5LCBzaW5j
ZSBvdGhlcndpc2UKICAgICAvLyB0aGUgdW5pb24gb2YgdGhvc2UgcmVjdHMgbWlnaHQgcmVtYWlu
IHRoZSBzYW1lIGV2ZW4gd2hlbiBjaGFuZ2VzIGhhdmUgb2NjdXJyZWQuCiAKLSAgICBSZW5kZXJP
YmplY3QqIG9zID0gcm9vdC5zZWxlY3Rpb25TdGFydCgpOwotICAgIFJlbmRlck9iamVjdCogc3Rv
cCA9IHJlbmRlcmVyQWZ0ZXJQb3NpdGlvbihyb290LnNlbGVjdGlvbkVuZCgpLCByb290LnNlbGVj
dGlvbkVuZFBvcygpKTsKKyAgICBSZW5kZXJPYmplY3QqIG9zID0gcm9vdC5zZWxlY3Rpb25EYXRh
KCkuc2VsZWN0aW9uU3RhcnQoKTsKKyAgICBSZW5kZXJPYmplY3QqIHN0b3AgPSByZW5kZXJlckFm
dGVyUG9zaXRpb24ocm9vdC5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uRW5kKCksIHJvb3Quc2Vs
ZWN0aW9uRGF0YSgpLnNlbGVjdGlvbkVuZFBvcygpKTsKICAgICBTZWxlY3Rpb25JdGVyYXRvciBz
ZWxlY3Rpb25JdGVyYXRvcihvcyk7CiAgICAgd2hpbGUgKG9zICYmIG9zICE9IHN0b3ApIHsKLSAg
ICAgICAgaWYgKChvcy0+Y2FuQmVTZWxlY3Rpb25MZWFmKCkgfHwgb3MgPT0gcm9vdC5zZWxlY3Rp
b25TdGFydCgpIHx8IG9zID09IHJvb3Quc2VsZWN0aW9uRW5kKCkpCisgICAgICAgIGlmICgob3Mt
PmNhbkJlU2VsZWN0aW9uTGVhZigpIHx8IG9zID09IHJvb3Quc2VsZWN0aW9uRGF0YSgpLnNlbGVj
dGlvblN0YXJ0KCkgfHwgb3MgPT0gcm9vdC5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uRW5kKCkp
CiAgICAgICAgICAgICAmJiBvcy0+c2VsZWN0aW9uU3RhdGUoKSAhPSBTZWxlY3Rpb25Ob25lKSB7
CiAgICAgICAgICAgICAvLyBCbG9ja3MgYXJlIHJlc3BvbnNpYmxlIGZvciBwYWludGluZyBsaW5l
IGdhcHMgYW5kIG1hcmdpbiBnYXBzLiAgVGhleSBtdXN0IGJlIGV4YW1pbmVkIGFzIHdlbGwuCiAg
ICAgICAgICAgICBvbGRTZWxlY3Rpb25EYXRhLnNlbGVjdGVkT2JqZWN0cy5zZXQob3MsIHN0ZDo6
bWFrZV91bmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKm9zLCB0cnVlKSk7CkBAIC05ODIsMjgg
Kzk3NywyOCBAQCB2b2lkIFJlbmRlclZpZXc6OmNsZWFyU3VidHJlZVNlbGVjdGlvbihjb25zdCBT
ZWxlY3Rpb25TdWJ0cmVlUm9vdCYgcm9vdCwgU2VsZWN0aQogICAgICAgICBvcyA9IHNlbGVjdGlv
bkl0ZXJhdG9yLm5leHQoKTsKICAgICB9CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHNlbGVjdGVk
T2JqZWN0SW5mbyA6IG9sZFNlbGVjdGlvbkRhdGEuc2VsZWN0ZWRPYmplY3RzKQotICAgICAgICBz
ZWxlY3RlZE9iamVjdEluZm8ua2V5LT5zZXRTZWxlY3Rpb25TdGF0ZUlmTmVlZGVkKFNlbGVjdGlv
bk5vbmUpOworICAgIGZvciAoYXV0byogc2VsZWN0ZWRPYmplY3QgOiBvbGRTZWxlY3Rpb25EYXRh
LnNlbGVjdGVkT2JqZWN0cy5rZXlzKCkpCisgICAgICAgIHNlbGVjdGVkT2JqZWN0LT5zZXRTZWxl
Y3Rpb25TdGF0ZUlmTmVlZGVkKFNlbGVjdGlvbk5vbmUpOwogfQogCi12b2lkIFJlbmRlclZpZXc6
OmFwcGx5U3VidHJlZVNlbGVjdGlvbihjb25zdCBTZWxlY3Rpb25TdWJ0cmVlUm9vdCYgcm9vdCwg
UmVuZGVyT2JqZWN0KiBzdGFydCwgUmVuZGVyT2JqZWN0KiBlbmQsIGludCBlbmRQb3MsIFNlbGVj
dGlvblJlcGFpbnRNb2RlIGJsb2NrUmVwYWludE1vZGUsIGNvbnN0IE9sZFNlbGVjdGlvbkRhdGEm
IG9sZFNlbGVjdGlvbkRhdGEpCit2b2lkIFJlbmRlclZpZXc6OmFwcGx5U3VidHJlZVNlbGVjdGlv
bihjb25zdCBTZWxlY3Rpb25TdWJ0cmVlUm9vdCYgcm9vdCwgU2VsZWN0aW9uUmVwYWludE1vZGUg
YmxvY2tSZXBhaW50TW9kZSwgY29uc3QgT2xkU2VsZWN0aW9uRGF0YSYgb2xkU2VsZWN0aW9uRGF0
YSkKIHsKICAgICAvLyBVcGRhdGUgdGhlIHNlbGVjdGlvbiBzdGF0dXMgb2YgYWxsIG9iamVjdHMg
YmV0d2VlbiBzZWxlY3Rpb25TdGFydCBhbmQgc2VsZWN0aW9uRW5kCi0gICAgaWYgKHN0YXJ0ICYm
IHN0YXJ0ID09IGVuZCkKLSAgICAgICAgc3RhcnQtPnNldFNlbGVjdGlvblN0YXRlSWZOZWVkZWQo
U2VsZWN0aW9uQm90aCk7CisgICAgaWYgKHJvb3Quc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvblN0
YXJ0KCkgJiYgcm9vdC5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uU3RhcnQoKSA9PSByb290LnNl
bGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25FbmQoKSkKKyAgICAgICAgcm9vdC5zZWxlY3Rpb25EYXRh
KCkuc2VsZWN0aW9uU3RhcnQoKS0+c2V0U2VsZWN0aW9uU3RhdGVJZk5lZWRlZChTZWxlY3Rpb25C
b3RoKTsKICAgICBlbHNlIHsKLSAgICAgICAgaWYgKHN0YXJ0KQotICAgICAgICAgICAgc3RhcnQt
PnNldFNlbGVjdGlvblN0YXRlSWZOZWVkZWQoU2VsZWN0aW9uU3RhcnQpOwotICAgICAgICBpZiAo
ZW5kKQotICAgICAgICAgICAgZW5kLT5zZXRTZWxlY3Rpb25TdGF0ZUlmTmVlZGVkKFNlbGVjdGlv
bkVuZCk7CisgICAgICAgIGlmIChyb290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25TdGFydCgp
KQorICAgICAgICAgICAgcm9vdC5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uU3RhcnQoKS0+c2V0
U2VsZWN0aW9uU3RhdGVJZk5lZWRlZChTZWxlY3Rpb25TdGFydCk7CisgICAgICAgIGlmIChyb290
LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25FbmQoKSkKKyAgICAgICAgICAgIHJvb3Quc2VsZWN0
aW9uRGF0YSgpLnNlbGVjdGlvbkVuZCgpLT5zZXRTZWxlY3Rpb25TdGF0ZUlmTmVlZGVkKFNlbGVj
dGlvbkVuZCk7CiAgICAgfQogCi0gICAgUmVuZGVyT2JqZWN0KiBvID0gc3RhcnQ7Ci0gICAgUmVu
ZGVyT2JqZWN0KiBzdG9wID0gcmVuZGVyZXJBZnRlclBvc2l0aW9uKGVuZCwgZW5kUG9zKTsKKyAg
ICBSZW5kZXJPYmplY3QqIG8gPSByb290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25TdGFydCgp
OworICAgIFJlbmRlck9iamVjdCogc3RvcCA9IHJlbmRlcmVyQWZ0ZXJQb3NpdGlvbihyb290LnNl
bGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25FbmQoKSwgcm9vdC5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0
aW9uRW5kUG9zKCkpOwogICAgIFNlbGVjdGlvbkl0ZXJhdG9yIHNlbGVjdGlvbkl0ZXJhdG9yKG8p
OwogICAgIAogICAgIHdoaWxlIChvICYmIG8gIT0gc3RvcCkgewotICAgICAgICBpZiAobyAhPSBz
dGFydCAmJiBvICE9IGVuZCAmJiBvLT5jYW5CZVNlbGVjdGlvbkxlYWYoKSkKKyAgICAgICAgaWYg
KG8gIT0gcm9vdC5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uU3RhcnQoKSAmJiBvICE9IHJvb3Qu
c2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvbkVuZCgpICYmIG8tPmNhbkJlU2VsZWN0aW9uTGVhZigp
KQogICAgICAgICAgICAgby0+c2V0U2VsZWN0aW9uU3RhdGVJZk5lZWRlZChTZWxlY3Rpb25JbnNp
ZGUpOwogICAgICAgICBvID0gc2VsZWN0aW9uSXRlcmF0b3IubmV4dCgpOwogICAgIH0KQEAgLTEw
MTUsMTAgKzEwMTAsMTAgQEAgdm9pZCBSZW5kZXJWaWV3OjphcHBseVN1YnRyZWVTZWxlY3Rpb24o
Y29uc3QgU2VsZWN0aW9uU3VidHJlZVJvb3QmIHJvb3QsIFJlbmRlck8KICAgICAvLyBwdXQgdGhl
bSBpbiB0aGUgbmV3IG9iamVjdHMgbGlzdC4KICAgICBTZWxlY3RlZE9iamVjdE1hcCBuZXdTZWxl
Y3RlZE9iamVjdHM7CiAgICAgU2VsZWN0ZWRCbG9ja01hcCBuZXdTZWxlY3RlZEJsb2NrczsKLSAg
ICBvID0gc3RhcnQ7CisgICAgbyA9IHJvb3Quc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvblN0YXJ0
KCk7CiAgICAgc2VsZWN0aW9uSXRlcmF0b3IgPSBTZWxlY3Rpb25JdGVyYXRvcihvKTsKICAgICB3
aGlsZSAobyAmJiBvICE9IHN0b3ApIHsKLSAgICAgICAgaWYgKChvLT5jYW5CZVNlbGVjdGlvbkxl
YWYoKSB8fCBvID09IHN0YXJ0IHx8IG8gPT0gZW5kKSAmJiBvLT5zZWxlY3Rpb25TdGF0ZSgpICE9
IFNlbGVjdGlvbk5vbmUpIHsKKyAgICAgICAgaWYgKChvLT5jYW5CZVNlbGVjdGlvbkxlYWYoKSB8
fCBvID09IHJvb3Quc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvblN0YXJ0KCkgfHwgbyA9PSByb290
LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25FbmQoKSkgJiYgby0+c2VsZWN0aW9uU3RhdGUoKSAh
PSBTZWxlY3Rpb25Ob25lKSB7CiAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU2Vs
ZWN0aW9uSW5mbz4gc2VsZWN0aW9uSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU2VsZWN0
aW9uSW5mbz4oKm8sIHRydWUpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCkBAIC0x
MDU2LDggKzEwNTEsOCBAQCB2b2lkIFJlbmRlclZpZXc6OmFwcGx5U3VidHJlZVNlbGVjdGlvbihj
b25zdCBTZWxlY3Rpb25TdWJ0cmVlUm9vdCYgcm9vdCwgUmVuZGVyTwogICAgICAgICBSZW5kZXJT
ZWxlY3Rpb25JbmZvKiBuZXdJbmZvID0gbmV3U2VsZWN0ZWRPYmplY3RzLmdldChvYmopOwogICAg
ICAgICBSZW5kZXJTZWxlY3Rpb25JbmZvKiBvbGRJbmZvID0gc2VsZWN0ZWRPYmplY3RJbmZvLnZh
bHVlLmdldCgpOwogICAgICAgICBpZiAoIW5ld0luZm8gfHwgb2xkSW5mby0+cmVjdCgpICE9IG5l
d0luZm8tPnJlY3QoKSB8fCBvbGRJbmZvLT5zdGF0ZSgpICE9IG5ld0luZm8tPnN0YXRlKCkKLSAg
ICAgICAgICAgIHx8IChyb290LnNlbGVjdGlvblN0YXJ0KCkgPT0gb2JqICYmIG9sZFNlbGVjdGlv
bkRhdGEuc2VsZWN0aW9uU3RhcnRQb3MgIT0gcm9vdC5zZWxlY3Rpb25TdGFydFBvcygpKQotICAg
ICAgICAgICAgfHwgKHJvb3Quc2VsZWN0aW9uRW5kKCkgPT0gb2JqICYmIG9sZFNlbGVjdGlvbkRh
dGEuc2VsZWN0aW9uRW5kUG9zICE9IHJvb3Quc2VsZWN0aW9uRW5kUG9zKCkpKSB7CisgICAgICAg
ICAgICB8fCAocm9vdC5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uU3RhcnQoKSA9PSBvYmogJiYg
b2xkU2VsZWN0aW9uRGF0YS5zZWxlY3Rpb25TdGFydFBvcyAhPSByb290LnNlbGVjdGlvbkRhdGEo
KS5zZWxlY3Rpb25TdGFydFBvcygpKQorICAgICAgICAgICAgfHwgKHJvb3Quc2VsZWN0aW9uRGF0
YSgpLnNlbGVjdGlvbkVuZCgpID09IG9iaiAmJiBvbGRTZWxlY3Rpb25EYXRhLnNlbGVjdGlvbkVu
ZFBvcyAhPSByb290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25FbmRQb3MoKSkpIHsKICAgICAg
ICAgICAgIG9sZEluZm8tPnJlcGFpbnQoKTsKICAgICAgICAgICAgIGlmIChuZXdJbmZvKSB7CiAg
ICAgICAgICAgICAgICAgbmV3SW5mby0+cmVwYWludCgpOwpAQCAtMTA3Miw3ICsxMDY3LDcgQEAg
dm9pZCBSZW5kZXJWaWV3OjphcHBseVN1YnRyZWVTZWxlY3Rpb24oY29uc3QgU2VsZWN0aW9uU3Vi
dHJlZVJvb3QmIHJvb3QsIFJlbmRlck8KIAogICAgIC8vIEhhdmUgYW55IG9mIHRoZSBvbGQgYmxv
Y2tzIGNoYW5nZWQ/CiAgICAgZm9yIChjb25zdCBhdXRvJiBzZWxlY3RlZEJsb2NrSW5mbyA6IG9s
ZFNlbGVjdGlvbkRhdGEuc2VsZWN0ZWRCbG9ja3MpIHsKLSAgICAgICAgUmVuZGVyQmxvY2sqIGJs
b2NrID0gc2VsZWN0ZWRCbG9ja0luZm8ua2V5OworICAgICAgICBjb25zdCBSZW5kZXJCbG9jayog
YmxvY2sgPSBzZWxlY3RlZEJsb2NrSW5mby5rZXk7CiAgICAgICAgIFJlbmRlckJsb2NrU2VsZWN0
aW9uSW5mbyogbmV3SW5mbyA9IG5ld1NlbGVjdGVkQmxvY2tzLmdldChibG9jayk7CiAgICAgICAg
IFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbyogb2xkSW5mbyA9IHNlbGVjdGVkQmxvY2tJbmZvLnZh
bHVlLmdldCgpOwogICAgICAgICBpZiAoIW5ld0luZm8gfHwgb2xkSW5mby0+cmVjdHMoKSAhPSBu
ZXdJbmZvLT5yZWN0cygpIHx8IG9sZEluZm8tPnN0YXRlKCkgIT0gbmV3SW5mby0+c3RhdGUoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKaW5kZXggYTk4MGJkYS4uODYxNzYx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCkBAIC0zMDQsNyArMzA0LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHNwbGl0U2VsZWN0aW9uQmV0d2VlblN1YnRyZWVzKGNvbnN0
IFJlbmRlck9iamVjdCogc3RhcnRSZW5kZXJlciwgaW50IHN0YXJ0UG9zLCBjb25zdCBSZW5kZXJP
YmplY3QqIGVuZFJlbmRlcmVyLCBpbnQgZW5kUG9zLCBTZWxlY3Rpb25SZXBhaW50TW9kZSBibG9j
a1JlcGFpbnRNb2RlKTsKICAgICB2b2lkIGNsZWFyU3VidHJlZVNlbGVjdGlvbihjb25zdCBTZWxl
Y3Rpb25TdWJ0cmVlUm9vdCYsIFNlbGVjdGlvblJlcGFpbnRNb2RlLCBPbGRTZWxlY3Rpb25EYXRh
JikgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25Gb3JTdWJ0cmVlcyhSZW5kZXJTdWJ0
cmVlc01hcCYsIFNlbGVjdGlvblJlcGFpbnRNb2RlKTsKLSAgICB2b2lkIGFwcGx5U3VidHJlZVNl
bGVjdGlvbihjb25zdCBTZWxlY3Rpb25TdWJ0cmVlUm9vdCYsIFJlbmRlck9iamVjdCogc3RhcnRS
ZW5kZXJlciwgUmVuZGVyT2JqZWN0KiBlbmRSZW5kZXJlciwgaW50IGVuZFBvcywgU2VsZWN0aW9u
UmVwYWludE1vZGUsIGNvbnN0IE9sZFNlbGVjdGlvbkRhdGEmKTsKKyAgICB2b2lkIGFwcGx5U3Vi
dHJlZVNlbGVjdGlvbihjb25zdCBTZWxlY3Rpb25TdWJ0cmVlUm9vdCYsIFNlbGVjdGlvblJlcGFp
bnRNb2RlLCBjb25zdCBPbGRTZWxlY3Rpb25EYXRhJik7CiAgICAgTGF5b3V0UmVjdCBzdWJ0cmVl
U2VsZWN0aW9uQm91bmRzKGNvbnN0IFNlbGVjdGlvblN1YnRyZWVSb290JiwgYm9vbCBjbGlwVG9W
aXNpYmxlQ29udGVudCA9IHRydWUpIGNvbnN0OwogICAgIHZvaWQgcmVwYWludFN1YnRyZWVTZWxl
Y3Rpb24oY29uc3QgU2VsZWN0aW9uU3VidHJlZVJvb3QmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblN1YnRyZWVSb290LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25TdWJ0cmVlUm9vdC5jcHAKaW5kZXggZmFmYWVl
Ni4uOGI2YjJlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlv
blN1YnRyZWVSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9u
U3VidHJlZVJvb3QuY3BwCkBAIC0zOCwyOSArMzgsMjIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogU2VsZWN0aW9uU3VidHJlZVJvb3Q6OlNlbGVjdGlvblN1YnRyZWVSb290KCkKLSAgICA6IG1f
c2VsZWN0aW9uU3RhcnQobnVsbHB0cikKLSAgICAsIG1fc2VsZWN0aW9uU3RhcnRQb3MoLTEpCi0g
ICAgLCBtX3NlbGVjdGlvbkVuZChudWxscHRyKQotICAgICwgbV9zZWxlY3Rpb25FbmRQb3MoLTEp
CiB7CiB9CiAKIFNlbGVjdGlvblN1YnRyZWVSb290OjpTZWxlY3Rpb25TdWJ0cmVlUm9vdChSZW5k
ZXJPYmplY3QqIHNlbGVjdGlvblN0YXJ0LCBpbnQgc2VsZWN0aW9uU3RhcnRQb3MsIFJlbmRlck9i
amVjdCogc2VsZWN0aW9uRW5kLCBpbnQgc2VsZWN0aW9uRW5kUG9zKQotICAgIDogbV9zZWxlY3Rp
b25TdGFydChzZWxlY3Rpb25TdGFydCkKLSAgICAsIG1fc2VsZWN0aW9uU3RhcnRQb3Moc2VsZWN0
aW9uU3RhcnRQb3MpCi0gICAgLCBtX3NlbGVjdGlvbkVuZChzZWxlY3Rpb25FbmQpCi0gICAgLCBt
X3NlbGVjdGlvbkVuZFBvcyhzZWxlY3Rpb25FbmRQb3MpCisgICAgOiBtX3NlbGVjdGlvblN1YnRy
ZWVEYXRhKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25TdGFydFBvcywgc2VsZWN0aW9uRW5kLCBz
ZWxlY3Rpb25FbmRQb3MpCiB7CiB9CiAKIHZvaWQgU2VsZWN0aW9uU3VidHJlZVJvb3Q6OmFkanVz
dEZvclZpc2libGVTZWxlY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAgIGlmIChzZWxl
Y3Rpb25DbGVhcigpKQorICAgIGlmIChtX3NlbGVjdGlvblN1YnRyZWVEYXRhLnNlbGVjdGlvbkNs
ZWFyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIENyZWF0ZSBhIHJhbmdlIGJhc2VkIG9u
IHRoZSBjYWNoZWQgZW5kIHBvaW50cwotICAgIFBvc2l0aW9uIHN0YXJ0UG9zaXRpb24gPSBjcmVh
dGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obV9zZWxlY3Rpb25TdGFydC0+bm9kZSgpLCBtX3NlbGVj
dGlvblN0YXJ0UG9zKTsKLSAgICBQb3NpdGlvbiBlbmRQb3NpdGlvbiA9IGNyZWF0ZUxlZ2FjeUVk
aXRpbmdQb3NpdGlvbihtX3NlbGVjdGlvbkVuZC0+bm9kZSgpLCBtX3NlbGVjdGlvbkVuZFBvcyk7
CisgICAgUG9zaXRpb24gc3RhcnRQb3NpdGlvbiA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlv
bihtX3NlbGVjdGlvblN1YnRyZWVEYXRhLnNlbGVjdGlvblN0YXJ0KCktPm5vZGUoKSwgbV9zZWxl
Y3Rpb25TdWJ0cmVlRGF0YS5zZWxlY3Rpb25TdGFydFBvcygpKTsKKyAgICBQb3NpdGlvbiBlbmRQ
b3NpdGlvbiA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihtX3NlbGVjdGlvblN1YnRyZWVE
YXRhLnNlbGVjdGlvbkVuZCgpLT5ub2RlKCksIG1fc2VsZWN0aW9uU3VidHJlZURhdGEuc2VsZWN0
aW9uRW5kUG9zKCkpOwogCiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUo
ZG9jdW1lbnQsIHN0YXJ0UG9zaXRpb24ucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCksIGVuZFBv
c2l0aW9uLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKICAgICBWaXNpYmxlU2VsZWN0aW9u
IHNlbGVjdGlvbihyYW5nZS5nZXQoKSk7CkBAIC03NCwxOSArNjcsMTYgQEAgdm9pZCBTZWxlY3Rp
b25TdWJ0cmVlUm9vdDo6YWRqdXN0Rm9yVmlzaWJsZVNlbGVjdGlvbihEb2N1bWVudCYgZG9jdW1l
bnQpCiAgICAgaWYgKGNhbmRpZGF0ZS5pc0NhbmRpZGF0ZSgpKQogICAgICAgICBlbmRQb3MgPSBj
YW5kaWRhdGU7CiAKLSAgICBtX3NlbGVjdGlvblN0YXJ0ID0gbnVsbHB0cjsKLSAgICBtX3NlbGVj
dGlvblN0YXJ0UG9zID0gLTE7Ci0gICAgbV9zZWxlY3Rpb25FbmQgPSBudWxscHRyOwotICAgIG1f
c2VsZWN0aW9uRW5kUG9zID0gLTE7CisgICAgbV9zZWxlY3Rpb25TdWJ0cmVlRGF0YS5jbGVhclNl
bGVjdGlvbigpOwogCiAgICAgaWYgKHN0YXJ0UG9zLmlzTm90TnVsbCgpCiAgICAgICAgICYmIGVu
ZFBvcy5pc05vdE51bGwoKQogICAgICAgICAmJiBzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkgIT0g
c2VsZWN0aW9uLnZpc2libGVFbmQoKQogICAgICAgICAmJiBzdGFydFBvcy5kZXByZWNhdGVkTm9k
ZSgpLT5yZW5kZXJlcigpLT5mbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCkgPT0gZW5kUG9zLmRl
cHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCktPmZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKSkg
ewotICAgICAgICBtX3NlbGVjdGlvblN0YXJ0ID0gc3RhcnRQb3MuZGVwcmVjYXRlZE5vZGUoKS0+
cmVuZGVyZXIoKTsKLSAgICAgICAgbV9zZWxlY3Rpb25TdGFydFBvcyA9IHN0YXJ0UG9zLmRlcHJl
Y2F0ZWRFZGl0aW5nT2Zmc2V0KCk7Ci0gICAgICAgIG1fc2VsZWN0aW9uRW5kID0gZW5kUG9zLmRl
cHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCk7Ci0gICAgICAgIG1fc2VsZWN0aW9uRW5kUG9zID0g
ZW5kUG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CisgICAgICAgIG1fc2VsZWN0aW9uU3Vi
dHJlZURhdGEuc2V0U2VsZWN0aW9uU3RhcnQoc3RhcnRQb3MuZGVwcmVjYXRlZE5vZGUoKS0+cmVu
ZGVyZXIoKSk7CisgICAgICAgIG1fc2VsZWN0aW9uU3VidHJlZURhdGEuc2V0U2VsZWN0aW9uU3Rh
cnRQb3Moc3RhcnRQb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7CisgICAgICAgIG1fc2Vs
ZWN0aW9uU3VidHJlZURhdGEuc2V0U2VsZWN0aW9uRW5kKGVuZFBvcy5kZXByZWNhdGVkTm9kZSgp
LT5yZW5kZXJlcigpKTsKKyAgICAgICAgbV9zZWxlY3Rpb25TdWJ0cmVlRGF0YS5zZXRTZWxlY3Rp
b25FbmRQb3MoZW5kUG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblN1YnRyZWVSb290
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uU3VidHJlZVJvb3QuaAppbmRl
eCA0MmM1YzkzLi5kZDE5MTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
U2VsZWN0aW9uU3VidHJlZVJvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2Vs
ZWN0aW9uU3VidHJlZVJvb3QuaApAQCAtMSw0ICsxLDQgQEAKLS8qCisgLyoKICAqIENvcHlyaWdo
dCAoQykgMjAxNCBJZ2FsaWEgUy5MLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNDEsOCArNDEsNyBA
QCBjbGFzcyBTZWxlY3Rpb25TdWJ0cmVlUm9vdCB7CiBwdWJsaWM6CiAgICAgCiAgICAgdHlwZWRl
ZiBIYXNoTWFwPFJlbmRlck9iamVjdCosIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTZWxlY3Rpb25J
bmZvPj4gU2VsZWN0ZWRPYmplY3RNYXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFJlbmRlckJsb2Nr
Kiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4+IFNlbGVjdGVkQmxv
Y2tNYXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFNlbGVjdGlvblN1YnRyZWVSb290KiwgU2VsZWN0
aW9uU3VidHJlZVJvb3Q+IFJlbmRlclN1YnRyZWVzTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxj
b25zdCBSZW5kZXJCbG9jayosIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJCbG9ja1NlbGVjdGlvbklu
Zm8+PiBTZWxlY3RlZEJsb2NrTWFwOwogCiAgICAgc3RydWN0IE9sZFNlbGVjdGlvbkRhdGEgewog
ICAgICAgICBPbGRTZWxlY3Rpb25EYXRhKCkKQEAgLTU2LDQ0ICs1NSw3NSBAQCBwdWJsaWM6CiAg
ICAgICAgIFNlbGVjdGVkT2JqZWN0TWFwIHNlbGVjdGVkT2JqZWN0czsKICAgICAgICAgU2VsZWN0
ZWRCbG9ja01hcCBzZWxlY3RlZEJsb2NrczsKICAgICB9OwotICAgIAotICAgIHR5cGVkZWYgSGFz
aE1hcDxTZWxlY3Rpb25TdWJ0cmVlUm9vdCosIHN0ZDo6dW5pcXVlX3B0cjxPbGRTZWxlY3Rpb25E
YXRhPj4gU3VidHJlZU9sZFNlbGVjdGlvbkRhdGFNYXA7CisKKyAgICBjbGFzcyBTZWxlY3Rpb25T
dWJ0cmVlRGF0YSB7CisgICAgcHVibGljOgorICAgICAgICBTZWxlY3Rpb25TdWJ0cmVlRGF0YSgp
CisgICAgICAgICAgICA6IG1fc2VsZWN0aW9uU3RhcnQobnVsbHB0cikKKyAgICAgICAgICAgICwg
bV9zZWxlY3Rpb25TdGFydFBvcygtMSkKKyAgICAgICAgICAgICwgbV9zZWxlY3Rpb25FbmQobnVs
bHB0cikKKyAgICAgICAgICAgICwgbV9zZWxlY3Rpb25FbmRQb3MoLTEpCisgICAgICAgIHsKKyAg
ICAgICAgfQorCisgICAgICAgIFNlbGVjdGlvblN1YnRyZWVEYXRhKFJlbmRlck9iamVjdCogc2Vs
ZWN0aW9uU3RhcnQsIGludCBzZWxlY3Rpb25TdGFydFBvcywgUmVuZGVyT2JqZWN0KiBzZWxlY3Rp
b25FbmQsIGludCBzZWxlY3Rpb25FbmRQb3MpCisgICAgICAgICAgICA6IG1fc2VsZWN0aW9uU3Rh
cnQoc2VsZWN0aW9uU3RhcnQpCisgICAgICAgICAgICAsIG1fc2VsZWN0aW9uU3RhcnRQb3Moc2Vs
ZWN0aW9uU3RhcnRQb3MpCisgICAgICAgICAgICAsIG1fc2VsZWN0aW9uRW5kKHNlbGVjdGlvbkVu
ZCkKKyAgICAgICAgICAgICwgbV9zZWxlY3Rpb25FbmRQb3Moc2VsZWN0aW9uRW5kUG9zKQorICAg
ICAgICB7CisgICAgICAgIH0KKworICAgICAgICBSZW5kZXJPYmplY3QqIHNlbGVjdGlvblN0YXJ0
KCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb25TdGFydDsgfQorICAgICAgICBpbnQgc2VsZWN0
aW9uU3RhcnRQb3MoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdGlvblN0YXJ0UG9zOyB9CisgICAg
ICAgIFJlbmRlck9iamVjdCogc2VsZWN0aW9uRW5kKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rp
b25FbmQ7IH0KKyAgICAgICAgaW50IHNlbGVjdGlvbkVuZFBvcygpIGNvbnN0IHsgcmV0dXJuIG1f
c2VsZWN0aW9uRW5kUG9zOyB9CisgICAgICAgIGJvb2wgc2VsZWN0aW9uQ2xlYXIoKSBjb25zdAor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gIW1fc2VsZWN0aW9uU3RhcnQKKyAgICAgICAg
ICAgICYmIChtX3NlbGVjdGlvblN0YXJ0UG9zID09IC0xKQorICAgICAgICAgICAgJiYgIW1fc2Vs
ZWN0aW9uRW5kCisgICAgICAgICAgICAmJiAobV9zZWxlY3Rpb25FbmRQb3MgPT0gLTEpOworICAg
ICAgICB9CisKKyAgICAgICAgdm9pZCBzZWxlY3Rpb25TdGFydEVuZFBvc2l0aW9ucyhpbnQmIHN0
YXJ0UG9zLCBpbnQmIGVuZFBvcykgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgc3RhcnRQ
b3MgPSBtX3NlbGVjdGlvblN0YXJ0UG9zOworICAgICAgICAgICAgZW5kUG9zID0gbV9zZWxlY3Rp
b25FbmRQb3M7CisgICAgICAgIH0KKyAgICAgICAgdm9pZCBzZXRTZWxlY3Rpb25TdGFydChSZW5k
ZXJPYmplY3QqIHNlbGVjdGlvblN0YXJ0KSB7IG1fc2VsZWN0aW9uU3RhcnQgPSBzZWxlY3Rpb25T
dGFydDsgfQorICAgICAgICB2b2lkIHNldFNlbGVjdGlvblN0YXJ0UG9zKGludCBzZWxlY3Rpb25T
dGFydFBvcykgeyBtX3NlbGVjdGlvblN0YXJ0UG9zID0gc2VsZWN0aW9uU3RhcnRQb3M7IH0KKyAg
ICAgICAgdm9pZCBzZXRTZWxlY3Rpb25FbmQoUmVuZGVyT2JqZWN0KiBzZWxlY3Rpb25FbmQpIHsg
bV9zZWxlY3Rpb25FbmQgPSBzZWxlY3Rpb25FbmQ7IH0KKyAgICAgICAgdm9pZCBzZXRTZWxlY3Rp
b25FbmRQb3MoaW50IHNlbGVjdGlvbkVuZFBvcykgeyBtX3NlbGVjdGlvbkVuZFBvcyA9IHNlbGVj
dGlvbkVuZFBvczsgfQorICAgICAgICB2b2lkIGNsZWFyU2VsZWN0aW9uKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgbV9zZWxlY3Rpb25TdGFydCA9IG51bGxwdHI7CisgICAgICAgICAgICBtX3Nl
bGVjdGlvblN0YXJ0UG9zID0gLTE7CisgICAgICAgICAgICBtX3NlbGVjdGlvbkVuZCA9IG51bGxw
dHI7CisgICAgICAgICAgICBtX3NlbGVjdGlvbkVuZFBvcyA9IC0xOworICAgICAgICB9CisKKyAg
ICBwcml2YXRlOgorICAgICAgICBSZW5kZXJPYmplY3QqIG1fc2VsZWN0aW9uU3RhcnQ7CisgICAg
ICAgIGludCBtX3NlbGVjdGlvblN0YXJ0UG9zOworICAgICAgICBSZW5kZXJPYmplY3QqIG1fc2Vs
ZWN0aW9uRW5kOworICAgICAgICBpbnQgbV9zZWxlY3Rpb25FbmRQb3M7CisgICAgfTsKKworICAg
IHR5cGVkZWYgSGFzaE1hcDxTZWxlY3Rpb25TdWJ0cmVlUm9vdCosIFNlbGVjdGlvblN1YnRyZWVE
YXRhPiBSZW5kZXJTdWJ0cmVlc01hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgU2VsZWN0
aW9uU3VidHJlZVJvb3QqLCBzdGQ6OnVuaXF1ZV9wdHI8T2xkU2VsZWN0aW9uRGF0YT4+IFN1YnRy
ZWVPbGRTZWxlY3Rpb25EYXRhTWFwOwogCiAgICAgU2VsZWN0aW9uU3VidHJlZVJvb3QoKTsKICAg
ICBTZWxlY3Rpb25TdWJ0cmVlUm9vdChSZW5kZXJPYmplY3QqIHNlbGVjdGlvblN0YXJ0LCBpbnQg
c2VsZWN0aW9uU3RhcnRQb3MsIFJlbmRlck9iamVjdCogc2VsZWN0aW9uRW5kLCBpbnQgc2VsZWN0
aW9uRW5kUG9zKTsKIAotICAgIFJlbmRlck9iamVjdCogc2VsZWN0aW9uU3RhcnQoKSBjb25zdCB7
IHJldHVybiBtX3NlbGVjdGlvblN0YXJ0OyB9Ci0gICAgaW50IHNlbGVjdGlvblN0YXJ0UG9zKCkg
Y29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb25TdGFydFBvczsgfQotICAgIFJlbmRlck9iamVjdCog
c2VsZWN0aW9uRW5kKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb25FbmQ7IH0KLSAgICBpbnQg
c2VsZWN0aW9uRW5kUG9zKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb25FbmRQb3M7IH0KLSAg
ICB2b2lkIHNlbGVjdGlvblN0YXJ0RW5kUG9zaXRpb25zKGludCYgc3RhcnRQb3MsIGludCYgZW5k
UG9zKSBjb25zdAotICAgIHsKLSAgICAgICAgc3RhcnRQb3MgPSBtX3NlbGVjdGlvblN0YXJ0UG9z
OwotICAgICAgICBlbmRQb3MgPSBtX3NlbGVjdGlvbkVuZFBvczsKLSAgICB9Ci0KLSAgICBib29s
IHNlbGVjdGlvbkNsZWFyKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhbV9zZWxlY3Rp
b25TdGFydAotICAgICAgICAmJiAobV9zZWxlY3Rpb25TdGFydFBvcyA9PSAtMSkKLSAgICAgICAg
JiYgIW1fc2VsZWN0aW9uRW5kCi0gICAgICAgICYmIChtX3NlbGVjdGlvbkVuZFBvcyA9PSAtMSk7
Ci0gICAgfQotCi0gICAgdm9pZCBzZXRTZWxlY3Rpb25TdGFydChSZW5kZXJPYmplY3QqIHNlbGVj
dGlvblN0YXJ0KSB7IG1fc2VsZWN0aW9uU3RhcnQgPSBzZWxlY3Rpb25TdGFydDsgfQotICAgIHZv
aWQgc2V0U2VsZWN0aW9uU3RhcnRQb3MoaW50IHNlbGVjdGlvblN0YXJ0UG9zKSB7IG1fc2VsZWN0
aW9uU3RhcnRQb3MgPSBzZWxlY3Rpb25TdGFydFBvczsgfQotICAgIHZvaWQgc2V0U2VsZWN0aW9u
RW5kKFJlbmRlck9iamVjdCogc2VsZWN0aW9uRW5kKSB7IG1fc2VsZWN0aW9uRW5kID0gc2VsZWN0
aW9uRW5kOyB9Ci0gICAgdm9pZCBzZXRTZWxlY3Rpb25FbmRQb3MoaW50IHNlbGVjdGlvbkVuZFBv
cykgeyBtX3NlbGVjdGlvbkVuZFBvcyA9IHNlbGVjdGlvbkVuZFBvczsgfQorICAgIFNlbGVjdGlv
blN1YnRyZWVEYXRhJiBzZWxlY3Rpb25EYXRhKCkgeyByZXR1cm4gbV9zZWxlY3Rpb25TdWJ0cmVl
RGF0YTsgfQorICAgIGNvbnN0IFNlbGVjdGlvblN1YnRyZWVEYXRhJiBzZWxlY3Rpb25EYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb25TdWJ0cmVlRGF0YTsgfQogCisgICAgdm9pZCBzZXRT
ZWxlY3Rpb25EYXRhKGNvbnN0IFNlbGVjdGlvblN1YnRyZWVEYXRhJiBzZWxlY3Rpb25TdWJ0cmVl
RGF0YSkgeyBtX3NlbGVjdGlvblN1YnRyZWVEYXRhID0gc2VsZWN0aW9uU3VidHJlZURhdGE7IH0K
ICAgICB2b2lkIGFkanVzdEZvclZpc2libGVTZWxlY3Rpb24oRG9jdW1lbnQmKTsKIAogcHJpdmF0
ZToKLQotICAgIFJlbmRlck9iamVjdCogbV9zZWxlY3Rpb25TdGFydDsKLSAgICBpbnQgbV9zZWxl
Y3Rpb25TdGFydFBvczsKLSAgICBSZW5kZXJPYmplY3QqIG1fc2VsZWN0aW9uRW5kOwotICAgIGlu
dCBtX3NlbGVjdGlvbkVuZFBvczsKLQorICAgIFNlbGVjdGlvblN1YnRyZWVEYXRhIG1fc2VsZWN0
aW9uU3VidHJlZURhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240539</attachid>
            <date>2014-10-28 08:06:05 -0700</date>
            <delta_ts>2014-10-28 09:05:29 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-137740-20141028080613.patch</filename>
            <type>text/plain</type>
            <size>26461</size>
            <attacher name="Mihnea Ovidenie">mihnea</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1MjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2NiNzE4ZDZiMjk2OTAx
M2ZiN2Y1ZmRkNWZkNjliNjk1ZWJiZjI1NC4uZTI0ZDZjOTUxNTAyNTg0YjM2NjIzYmIyNGY2MjZk
YTAwZDY4OWFkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDE0LTEwLTI4ICBNaWhu
ZWEgT3ZpZGVuaWUgIDxtaWhuZWFAYWRvYmUuY29tPgorCisgICAgICAgIENsZWFuIHVwIHN1YnRy
ZWVzIHNlbGVjdGlvbiBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzc3NDAKKworICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBIeWF0dC4KKwor
ICAgICAgICBDbGVhbiB1cCBzdWJ0cmVlcyBzZWxlY3Rpb24gY29kZS4gQWRkIGEgbmV3IGNsYXNz
IFNlbGVjdGlvblN1YnRyZWVEYXRhCisgICAgICAgIHRoYXQga2VlcHMgb25seSB0aGUgc2VsZWN0
aW9uIGRhdGEuIEhhdmUgU2VsZWN0aW9uU3VidHJlZVJvb3QgY2xhc3MgZW1iZWQKKyAgICAgICAg
YSBTZWxlY3Rpb25TdWJ0cmVlRGF0YSBtZW1iZXIgYW5kIGtlZXAgdGhlIGJ1c2luZXNzIGxvZ2lj
IG1ldGhvZHMuCisgICAgICAgIE5vIGZ1bmN0aW9uYWxpdHkgY2hhbmdlZCB0aGVyZWZvcmUgbm8g
bmV3IGxheW91dCB0ZXN0cy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzZWxlY3Rpb25TdGFydEVuZCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVmlldzo6c3VidHJlZVNlbGVjdGlvbkJvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJWaWV3OjpyZXBhaW50U3VidHJlZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJWaWV3OjpzZXRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6c3Bs
aXRTZWxlY3Rpb25CZXR3ZWVuU3VidHJlZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmll
dzo6dXBkYXRlU2VsZWN0aW9uRm9yU3VidHJlZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Vmlldzo6Y2xlYXJTdWJ0cmVlU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZp
ZXc6OmFwcGx5U3VidHJlZVNlbGVjdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZp
ZXcuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvU2VsZWN0aW9uU3VidHJlZVJvb3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uU3VidHJlZVJvb3Q6OlNlbGVjdGlvblN1YnRyZWVSb290
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblN1YnRyZWVSb290OjphZGp1c3RGb3JWaXNp
YmxlU2VsZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvU2VsZWN0aW9uU3VidHJlZVJvb3Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblN1YnRyZWVSb290OjpTZWxlY3Rpb25TdWJ0
cmVlRGF0YTo6U2VsZWN0aW9uU3VidHJlZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
aW9uU3VidHJlZVJvb3Q6OlNlbGVjdGlvblN1YnRyZWVEYXRhOjpzZWxlY3Rpb25TdGFydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25TdWJ0cmVlUm9vdDo6U2VsZWN0aW9uU3VidHJlZURh
dGE6OnNlbGVjdGlvblN0YXJ0UG9zKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblN1YnRy
ZWVSb290OjpTZWxlY3Rpb25TdWJ0cmVlRGF0YTo6c2VsZWN0aW9uRW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdGlvblN1YnRyZWVSb290OjpTZWxlY3Rpb25TdWJ0cmVlRGF0YTo6c2VsZWN0
aW9uRW5kUG9zKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblN1YnRyZWVSb290OjpTZWxl
Y3Rpb25TdWJ0cmVlRGF0YTo6c2VsZWN0aW9uQ2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0aW9uU3VidHJlZVJvb3Q6OlNlbGVjdGlvblN1YnRyZWVEYXRhOjpzZWxlY3Rpb25TdGFydEVu
ZFBvc2l0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25TdWJ0cmVlUm9vdDo6U2Vs
ZWN0aW9uU3VidHJlZURhdGE6OnNldFNlbGVjdGlvblN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdGlvblN1YnRyZWVSb290OjpTZWxlY3Rpb25TdWJ0cmVlRGF0YTo6c2V0U2VsZWN0aW9u
U3RhcnRQb3MpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uU3VidHJlZVJvb3Q6OlNlbGVj
dGlvblN1YnRyZWVEYXRhOjpzZXRTZWxlY3Rpb25FbmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0aW9uU3VidHJlZVJvb3Q6OlNlbGVjdGlvblN1YnRyZWVEYXRhOjpzZXRTZWxlY3Rpb25FbmRQ
b3MpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uU3VidHJlZVJvb3Q6OlNlbGVjdGlvblN1
YnRyZWVEYXRhOjpjbGVhclNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25T
dWJ0cmVlUm9vdDo6c2VsZWN0aW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25T
dWJ0cmVlUm9vdDo6c2V0U2VsZWN0aW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rp
b25TdWJ0cmVlUm9vdDo6c2VsZWN0aW9uU3RhcnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U2VsZWN0aW9uU3VidHJlZVJvb3Q6OnNlbGVjdGlvblN0YXJ0UG9zKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvblN1YnRyZWVSb290OjpzZWxlY3Rpb25FbmQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uU3VidHJlZVJvb3Q6OnNlbGVjdGlvbkVu
ZFBvcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25TdWJ0cmVlUm9vdDo6
c2VsZWN0aW9uU3RhcnRFbmRQb3NpdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0aW9uU3VidHJlZVJvb3Q6OnNlbGVjdGlvbkNsZWFyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNlbGVjdGlvblN1YnRyZWVSb290OjpzZXRTZWxlY3Rpb25TdGFydCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25TdWJ0cmVlUm9vdDo6c2V0U2VsZWN0aW9u
U3RhcnRQb3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uU3VidHJlZVJv
b3Q6OnNldFNlbGVjdGlvbkVuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rp
b25TdWJ0cmVlUm9vdDo6c2V0U2VsZWN0aW9uRW5kUG9zKTogRGVsZXRlZC4KKwogMjAxNC0xMC0y
OCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0dUS10gUmVtb3ZlIEdESyBkZXBlbmRlbmN5IGZyb20gU2hhcmVkVGltZXJHdGsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggYzI5NTUzMTU0MDVmNDM0NjMy
NDRhZGQ1ZDFjOTM4MDk5YzA0NDZjZS4uOTVjMjMzODg4YmEzY2NiNWJmOWIyMmEyNjJiMDA0YTYz
Mzg2Njk0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAg
LTE2MzIsNyArMTYzMiw3IEBAIFNlbGVjdGlvblN1YnRyZWVSb290JiBSZW5kZXJPYmplY3Q6OnNl
bGVjdGlvblJvb3QoKSBjb25zdAogCiB2b2lkIFJlbmRlck9iamVjdDo6c2VsZWN0aW9uU3RhcnRF
bmQoaW50JiBzcG9zLCBpbnQmIGVwb3MpIGNvbnN0CiB7Ci0gICAgc2VsZWN0aW9uUm9vdCgpLnNl
bGVjdGlvblN0YXJ0RW5kUG9zaXRpb25zKHNwb3MsIGVwb3MpOworICAgIHNlbGVjdGlvblJvb3Qo
KS5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uU3RhcnRFbmRQb3NpdGlvbnMoc3BvcywgZXBvcyk7
CiB9CiAKIEZsb2F0UG9pbnQgUmVuZGVyT2JqZWN0Ojpsb2NhbFRvQWJzb2x1dGUoY29uc3QgRmxv
YXRQb2ludCYgbG9jYWxQb2ludCwgTWFwQ29vcmRpbmF0ZXNGbGFncyBtb2RlKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCmluZGV4IDUxNjA5MjZlMDQ2Mjc4MzU4
OWQ4MDI3MGQ4ZGExNGVjYzkyNjIxM2EuLjZiYmYzNjBmYjBkMDFiYTliMzE5YTE5ZjY4NWYyMzYy
YmM3OGMwZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTc1
OSwxMSArNzU5LDExIEBAIExheW91dFJlY3QgUmVuZGVyVmlldzo6c3VidHJlZVNlbGVjdGlvbkJv
dW5kcyhjb25zdCBTZWxlY3Rpb25TdWJ0cmVlUm9vdCYgcm9vdCwKICAgICB0eXBlZGVmIEhhc2hN
YXA8UmVuZGVyT2JqZWN0Kiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclNlbGVjdGlvbkluZm8+PiBT
ZWxlY3Rpb25NYXA7CiAgICAgU2VsZWN0aW9uTWFwIHNlbGVjdGVkT2JqZWN0czsKIAotICAgIFJl
bmRlck9iamVjdCogb3MgPSByb290LnNlbGVjdGlvblN0YXJ0KCk7Ci0gICAgUmVuZGVyT2JqZWN0
KiBzdG9wID0gcmVuZGVyZXJBZnRlclBvc2l0aW9uKHJvb3Quc2VsZWN0aW9uRW5kKCksIHJvb3Qu
c2VsZWN0aW9uRW5kUG9zKCkpOworICAgIFJlbmRlck9iamVjdCogb3MgPSByb290LnNlbGVjdGlv
bkRhdGEoKS5zZWxlY3Rpb25TdGFydCgpOworICAgIFJlbmRlck9iamVjdCogc3RvcCA9IHJlbmRl
cmVyQWZ0ZXJQb3NpdGlvbihyb290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25FbmQoKSwgcm9v
dC5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uRW5kUG9zKCkpOwogICAgIFNlbGVjdGlvbkl0ZXJh
dG9yIHNlbGVjdGlvbkl0ZXJhdG9yKG9zKTsKICAgICB3aGlsZSAob3MgJiYgb3MgIT0gc3RvcCkg
ewotICAgICAgICBpZiAoKG9zLT5jYW5CZVNlbGVjdGlvbkxlYWYoKSB8fCBvcyA9PSByb290LnNl
bGVjdGlvblN0YXJ0KCkgfHwgb3MgPT0gcm9vdC5zZWxlY3Rpb25FbmQoKSkgJiYgb3MtPnNlbGVj
dGlvblN0YXRlKCkgIT0gU2VsZWN0aW9uTm9uZSkgeworICAgICAgICBpZiAoKG9zLT5jYW5CZVNl
bGVjdGlvbkxlYWYoKSB8fCBvcyA9PSByb290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25TdGFy
dCgpIHx8IG9zID09IHJvb3Quc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvbkVuZCgpKSAmJiBvcy0+
c2VsZWN0aW9uU3RhdGUoKSAhPSBTZWxlY3Rpb25Ob25lKSB7CiAgICAgICAgICAgICAvLyBCbG9j
a3MgYXJlIHJlc3BvbnNpYmxlIGZvciBwYWludGluZyBsaW5lIGdhcHMgYW5kIG1hcmdpbiBnYXBz
LiBUaGV5IG11c3QgYmUgZXhhbWluZWQgYXMgd2VsbC4KICAgICAgICAgICAgIHNlbGVjdGVkT2Jq
ZWN0cy5zZXQob3MsIHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKm9zLCBj
bGlwVG9WaXNpYmxlQ29udGVudCkpOwogICAgICAgICAgICAgUmVuZGVyQmxvY2sqIGNiID0gb3Mt
PmNvbnRhaW5pbmdCbG9jaygpOwpAQCAtODA5LDEwICs4MDksMTAgQEAgdm9pZCBSZW5kZXJWaWV3
OjpyZXBhaW50U3VidHJlZVNlbGVjdGlvbihjb25zdCBTZWxlY3Rpb25TdWJ0cmVlUm9vdCYgcm9v
dCkgY29uc3QKIHsKICAgICBIYXNoU2V0PFJlbmRlckJsb2NrKj4gcHJvY2Vzc2VkQmxvY2tzOwog
Ci0gICAgUmVuZGVyT2JqZWN0KiBlbmQgPSByZW5kZXJlckFmdGVyUG9zaXRpb24ocm9vdC5zZWxl
Y3Rpb25FbmQoKSwgcm9vdC5zZWxlY3Rpb25FbmRQb3MoKSk7Ci0gICAgU2VsZWN0aW9uSXRlcmF0
b3Igc2VsZWN0aW9uSXRlcmF0b3Iocm9vdC5zZWxlY3Rpb25TdGFydCgpKTsKKyAgICBSZW5kZXJP
YmplY3QqIGVuZCA9IHJlbmRlcmVyQWZ0ZXJQb3NpdGlvbihyb290LnNlbGVjdGlvbkRhdGEoKS5z
ZWxlY3Rpb25FbmQoKSwgcm9vdC5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uRW5kUG9zKCkpOwor
ICAgIFNlbGVjdGlvbkl0ZXJhdG9yIHNlbGVjdGlvbkl0ZXJhdG9yKHJvb3Quc2VsZWN0aW9uRGF0
YSgpLnNlbGVjdGlvblN0YXJ0KCkpOwogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBvID0gc2VsZWN0
aW9uSXRlcmF0b3IuY3VycmVudCgpOyBvICYmIG8gIT0gZW5kOyBvID0gc2VsZWN0aW9uSXRlcmF0
b3IubmV4dCgpKSB7Ci0gICAgICAgIGlmICghby0+Y2FuQmVTZWxlY3Rpb25MZWFmKCkgJiYgbyAh
PSByb290LnNlbGVjdGlvblN0YXJ0KCkgJiYgbyAhPSByb290LnNlbGVjdGlvbkVuZCgpKQorICAg
ICAgICBpZiAoIW8tPmNhbkJlU2VsZWN0aW9uTGVhZigpICYmIG8gIT0gcm9vdC5zZWxlY3Rpb25E
YXRhKCkuc2VsZWN0aW9uU3RhcnQoKSAmJiBvICE9IHJvb3Quc2VsZWN0aW9uRGF0YSgpLnNlbGVj
dGlvbkVuZCgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChvLT5zZWxlY3Rp
b25TdGF0ZSgpID09IFNlbGVjdGlvbk5vbmUpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTg3
MCw3ICs4NzAsNyBAQCB2b2lkIFJlbmRlclZpZXc6OnNldFNlbGVjdGlvbihSZW5kZXJPYmplY3Qq
IHN0YXJ0LCBpbnQgc3RhcnRQb3MsIFJlbmRlck9iamVjdCogZQogICAgIC8vIElmIHRoZXJlIGlz
IG5vIFJlbmRlck5hbWVkRmxvd1RocmVhZHMgd2UgZm9sbG93IHRoZSByZWd1bGFyIHNlbGVjdGlv
bi4KICAgICBpZiAoIWhhc1JlbmRlck5hbWVkRmxvd1RocmVhZHMoKSkgewogICAgICAgICBSZW5k
ZXJTdWJ0cmVlc01hcCBzaW5nbGVTdWJ0cmVlTWFwOwotICAgICAgICBzaW5nbGVTdWJ0cmVlTWFw
LnNldCh0aGlzLCBTZWxlY3Rpb25TdWJ0cmVlUm9vdChzdGFydCwgc3RhcnRQb3MsIGVuZCwgZW5k
UG9zKSk7CisgICAgICAgIHNpbmdsZVN1YnRyZWVNYXAuc2V0KHRoaXMsIFNlbGVjdGlvblN1YnRy
ZWVEYXRhKHN0YXJ0LCBzdGFydFBvcywgZW5kLCBlbmRQb3MpKTsKICAgICAgICAgdXBkYXRlU2Vs
ZWN0aW9uRm9yU3VidHJlZXMoc2luZ2xlU3VidHJlZU1hcCwgYmxvY2tSZXBhaW50TW9kZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC04ODMsNyArODgzLDcgQEAgdm9pZCBSZW5kZXJWaWV3
OjpzcGxpdFNlbGVjdGlvbkJldHdlZW5TdWJ0cmVlcyhjb25zdCBSZW5kZXJPYmplY3QqIHN0YXJ0
LCBpbnQgc3QKICAgICAvLyBDb21wdXRlIHRoZSB2aXNpYmxlIHNlbGVjdGlvbiBlbmQgcG9pbnRz
IGZvciBlYWNoIG9mIHRoZSBzdWJ0cmVlcy4KICAgICBSZW5kZXJTdWJ0cmVlc01hcCByZW5kZXJT
dWJ0cmVlc01hcDsKIAotICAgIFNlbGVjdGlvblN1YnRyZWVSb290IGluaXRpYWxTZWxlY3Rpb247
CisgICAgU2VsZWN0aW9uU3VidHJlZURhdGEgaW5pdGlhbFNlbGVjdGlvbjsKICAgICByZW5kZXJT
dWJ0cmVlc01hcC5zZXQodGhpcywgaW5pdGlhbFNlbGVjdGlvbik7CiAgICAgZm9yIChhdXRvKiBu
YW1lZEZsb3dUaHJlYWQgOiAqZmxvd1RocmVhZENvbnRyb2xsZXIoKS5yZW5kZXJOYW1lZEZsb3dU
aHJlYWRMaXN0KCkpCiAgICAgICAgIHJlbmRlclN1YnRyZWVzTWFwLnNldChuYW1lZEZsb3dUaHJl
YWQsIGluaXRpYWxTZWxlY3Rpb24pOwpAQCAtODk5LDcgKzg5OSw3IEBAIHZvaWQgUmVuZGVyVmll
dzo6c3BsaXRTZWxlY3Rpb25CZXR3ZWVuU3VidHJlZXMoY29uc3QgUmVuZGVyT2JqZWN0KiBzdGFy
dCwgaW50IHN0CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIFNlbGVj
dGlvblN1YnRyZWVSb290JiByb290ID0gcmVuZGVyZXItPnNlbGVjdGlvblJvb3QoKTsKLSAgICAg
ICAgICAgIFNlbGVjdGlvblN1YnRyZWVSb290IHNlbGVjdGlvbkRhdGEgPSByZW5kZXJTdWJ0cmVl
c01hcC5nZXQoJnJvb3QpOworICAgICAgICAgICAgU2VsZWN0aW9uU3VidHJlZURhdGEgc2VsZWN0
aW9uRGF0YSA9IHJlbmRlclN1YnRyZWVzTWFwLmdldCgmcm9vdCk7CiAgICAgICAgICAgICBpZiAo
c2VsZWN0aW9uRGF0YS5zZWxlY3Rpb25DbGVhcigpKSB7CiAgICAgICAgICAgICAgICAgc2VsZWN0
aW9uRGF0YS5zZXRTZWxlY3Rpb25TdGFydChub2RlLT5yZW5kZXJlcigpKTsKICAgICAgICAgICAg
ICAgICBzZWxlY3Rpb25EYXRhLnNldFNlbGVjdGlvblN0YXJ0UG9zKG5vZGUgPT0gc3RhcnROb2Rl
ID8gc3RhcnRQb3MgOiAwKTsKQEAgLTkyMiwyOSArOTIyLDI0IEBAIHZvaWQgUmVuZGVyVmlldzo6
dXBkYXRlU2VsZWN0aW9uRm9yU3VidHJlZXMoUmVuZGVyU3VidHJlZXNNYXAmIHJlbmRlclN1YnRy
ZWVzTWFwCiB7CiAgICAgU3VidHJlZU9sZFNlbGVjdGlvbkRhdGFNYXAgb2xkU2VsZWN0aW9uRGF0
YU1hcDsKICAgICBmb3IgKGF1dG8mIHN1YnRyZWVTZWxlY3Rpb25JbmZvIDogcmVuZGVyU3VidHJl
ZXNNYXApIHsKLSAgICAgICAgU2VsZWN0aW9uU3VidHJlZVJvb3QmIHN1YnRyZWVTZWxlY3Rpb25E
YXRhID0gc3VidHJlZVNlbGVjdGlvbkluZm8udmFsdWU7Ci0gICAgICAgIGlmIChoYXNSZW5kZXJO
YW1lZEZsb3dUaHJlYWRzKCkpCi0gICAgICAgICAgICBzdWJ0cmVlU2VsZWN0aW9uRGF0YS5hZGp1
c3RGb3JWaXNpYmxlU2VsZWN0aW9uKGRvY3VtZW50KCkpOwotCi0gICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxPbGRTZWxlY3Rpb25EYXRhPiBvbGRTZWxlY3Rpb25EYXRhID0gc3RkOjptYWtlX3VuaXF1
ZTxPbGRTZWxlY3Rpb25EYXRhPigpOwogICAgICAgICBTZWxlY3Rpb25TdWJ0cmVlUm9vdCYgcm9v
dCA9ICpzdWJ0cmVlU2VsZWN0aW9uSW5mby5rZXk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxP
bGRTZWxlY3Rpb25EYXRhPiBvbGRTZWxlY3Rpb25EYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxPbGRT
ZWxlY3Rpb25EYXRhPigpOworCiAgICAgICAgIGNsZWFyU3VidHJlZVNlbGVjdGlvbihyb290LCBi
bG9ja1JlcGFpbnRNb2RlLCAqb2xkU2VsZWN0aW9uRGF0YSk7CiAgICAgICAgIG9sZFNlbGVjdGlv
bkRhdGFNYXAuc2V0KCZyb290LCBXVEY6Om1vdmUob2xkU2VsZWN0aW9uRGF0YSkpOwogCi0gICAg
ICAgIHJvb3Quc2V0U2VsZWN0aW9uU3RhcnQoc3VidHJlZVNlbGVjdGlvbkRhdGEuc2VsZWN0aW9u
U3RhcnQoKSk7Ci0gICAgICAgIHJvb3Quc2V0U2VsZWN0aW9uU3RhcnRQb3Moc3VidHJlZVNlbGVj
dGlvbkRhdGEuc2VsZWN0aW9uU3RhcnRQb3MoKSk7Ci0gICAgICAgIHJvb3Quc2V0U2VsZWN0aW9u
RW5kKHN1YnRyZWVTZWxlY3Rpb25EYXRhLnNlbGVjdGlvbkVuZCgpKTsKLSAgICAgICAgcm9vdC5z
ZXRTZWxlY3Rpb25FbmRQb3Moc3VidHJlZVNlbGVjdGlvbkRhdGEuc2VsZWN0aW9uRW5kUG9zKCkp
OworICAgICAgICByb290LnNldFNlbGVjdGlvbkRhdGEoc3VidHJlZVNlbGVjdGlvbkluZm8udmFs
dWUpOworICAgICAgICBpZiAoaGFzUmVuZGVyTmFtZWRGbG93VGhyZWFkcygpKQorICAgICAgICAg
ICAgcm9vdC5hZGp1c3RGb3JWaXNpYmxlU2VsZWN0aW9uKGRvY3VtZW50KCkpOwogICAgIH0KIAog
ICAgIC8vIFVwZGF0ZSBzZWxlY3Rpb24gc3RhdHVzIGZvciB0aGUgb2JqZWN0cyBpbnNpZGUgdGhl
IHNlbGVjdGlvbiBzdWJ0cmVlcy4KICAgICAvLyBUaGlzIG5lZWRzIHRvIGJlIGRvbmUgYWZ0ZXIg
dGhlIHByZXZpb3VzIGxvb3AgdXBkYXRlZCB0aGUgc2VsZWN0aW9uU3RhcnQvRW5kCiAgICAgLy8g
cGFyYW1ldGVycyBvZiBhbGwgc3VidHJlZXMgYmVjYXVzZSB3ZSdyZSBnb2luZyB0byBiZSBjbGlt
YmluZyB1cCB0aGUgY29udGFpbmluZwogICAgIC8vIGJsb2NrIGNoYWluIGFuZCB3ZSBtaWdodCBl
bmQgdXAgaW4gYSBkaWZmZXJlbnQgc2VsZWN0aW9uIHN1YnRyZWUuCi0gICAgZm9yIChhdXRvJiBz
dWJ0cmVlU2VsZWN0aW9uSW5mbyA6IHJlbmRlclN1YnRyZWVzTWFwKSB7Ci0gICAgICAgIFNlbGVj
dGlvblN1YnRyZWVSb290JiBzdWJ0cmVlU2VsZWN0aW9uRGF0YSA9IHN1YnRyZWVTZWxlY3Rpb25J
bmZvLnZhbHVlOwotICAgICAgICBPbGRTZWxlY3Rpb25EYXRhJiBvbGRTZWxlY3Rpb25EYXRhID0g
Km9sZFNlbGVjdGlvbkRhdGFNYXAuZ2V0KHN1YnRyZWVTZWxlY3Rpb25JbmZvLmtleSk7Ci0gICAg
ICAgIGFwcGx5U3VidHJlZVNlbGVjdGlvbigqc3VidHJlZVNlbGVjdGlvbkluZm8ua2V5LCBzdWJ0
cmVlU2VsZWN0aW9uRGF0YS5zZWxlY3Rpb25TdGFydCgpLCBzdWJ0cmVlU2VsZWN0aW9uRGF0YS5z
ZWxlY3Rpb25FbmQoKSwgc3VidHJlZVNlbGVjdGlvbkRhdGEuc2VsZWN0aW9uRW5kUG9zKCksIGJs
b2NrUmVwYWludE1vZGUsIG9sZFNlbGVjdGlvbkRhdGEpOworICAgIGZvciAoY29uc3QgYXV0byog
c3VidHJlZVNlbGVjdGlvblJvb3QgOiByZW5kZXJTdWJ0cmVlc01hcC5rZXlzKCkpIHsKKyAgICAg
ICAgT2xkU2VsZWN0aW9uRGF0YSYgb2xkU2VsZWN0aW9uRGF0YSA9ICpvbGRTZWxlY3Rpb25EYXRh
TWFwLmdldChzdWJ0cmVlU2VsZWN0aW9uUm9vdCk7CisgICAgICAgIGFwcGx5U3VidHJlZVNlbGVj
dGlvbigqc3VidHJlZVNlbGVjdGlvblJvb3QsIGJsb2NrUmVwYWludE1vZGUsIG9sZFNlbGVjdGlv
bkRhdGEpOwogICAgIH0KIH0KIApAQCAtOTUyLDE4ICs5NDcsMTggQEAgdm9pZCBSZW5kZXJWaWV3
OjpjbGVhclN1YnRyZWVTZWxlY3Rpb24oY29uc3QgU2VsZWN0aW9uU3VidHJlZVJvb3QmIHJvb3Qs
IFNlbGVjdGkKIHsKICAgICAvLyBSZWNvcmQgdGhlIG9sZCBzZWxlY3RlZCBvYmplY3RzLiAgVGhl
c2Ugd2lsbCBiZSB1c2VkIGxhdGVyCiAgICAgLy8gd2hlbiB3ZSBjb21wYXJlIGFnYWluc3QgdGhl
IG5ldyBzZWxlY3RlZCBvYmplY3RzLgotICAgIG9sZFNlbGVjdGlvbkRhdGEuc2VsZWN0aW9uU3Rh
cnRQb3MgPSByb290LnNlbGVjdGlvblN0YXJ0UG9zKCk7Ci0gICAgb2xkU2VsZWN0aW9uRGF0YS5z
ZWxlY3Rpb25FbmRQb3MgPSByb290LnNlbGVjdGlvbkVuZFBvcygpOworICAgIG9sZFNlbGVjdGlv
bkRhdGEuc2VsZWN0aW9uU3RhcnRQb3MgPSByb290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25T
dGFydFBvcygpOworICAgIG9sZFNlbGVjdGlvbkRhdGEuc2VsZWN0aW9uRW5kUG9zID0gcm9vdC5z
ZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uRW5kUG9zKCk7CiAgICAgCiAgICAgLy8gQmxvY2tzIGNv
bnRhaW4gc2VsZWN0ZWQgb2JqZWN0cyBhbmQgZmlsbCBnYXBzIGJldHdlZW4gdGhlbSwgZWl0aGVy
IG9uIHRoZSBsZWZ0LCByaWdodCwgb3IgaW4gYmV0d2VlbiBsaW5lcyBhbmQgYmxvY2tzLgogICAg
IC8vIEluIG9yZGVyIHRvIGdldCB0aGUgcmVwYWludCByZWN0IHJpZ2h0LCB3ZSBoYXZlIHRvIGV4
YW1pbmUgbGVmdCwgbWlkZGxlLCBhbmQgcmlnaHQgcmVjdHMgaW5kaXZpZHVhbGx5LCBzaW5jZSBv
dGhlcndpc2UKICAgICAvLyB0aGUgdW5pb24gb2YgdGhvc2UgcmVjdHMgbWlnaHQgcmVtYWluIHRo
ZSBzYW1lIGV2ZW4gd2hlbiBjaGFuZ2VzIGhhdmUgb2NjdXJyZWQuCiAKLSAgICBSZW5kZXJPYmpl
Y3QqIG9zID0gcm9vdC5zZWxlY3Rpb25TdGFydCgpOwotICAgIFJlbmRlck9iamVjdCogc3RvcCA9
IHJlbmRlcmVyQWZ0ZXJQb3NpdGlvbihyb290LnNlbGVjdGlvbkVuZCgpLCByb290LnNlbGVjdGlv
bkVuZFBvcygpKTsKKyAgICBSZW5kZXJPYmplY3QqIG9zID0gcm9vdC5zZWxlY3Rpb25EYXRhKCku
c2VsZWN0aW9uU3RhcnQoKTsKKyAgICBSZW5kZXJPYmplY3QqIHN0b3AgPSByZW5kZXJlckFmdGVy
UG9zaXRpb24ocm9vdC5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uRW5kKCksIHJvb3Quc2VsZWN0
aW9uRGF0YSgpLnNlbGVjdGlvbkVuZFBvcygpKTsKICAgICBTZWxlY3Rpb25JdGVyYXRvciBzZWxl
Y3Rpb25JdGVyYXRvcihvcyk7CiAgICAgd2hpbGUgKG9zICYmIG9zICE9IHN0b3ApIHsKLSAgICAg
ICAgaWYgKChvcy0+Y2FuQmVTZWxlY3Rpb25MZWFmKCkgfHwgb3MgPT0gcm9vdC5zZWxlY3Rpb25T
dGFydCgpIHx8IG9zID09IHJvb3Quc2VsZWN0aW9uRW5kKCkpCisgICAgICAgIGlmICgob3MtPmNh
bkJlU2VsZWN0aW9uTGVhZigpIHx8IG9zID09IHJvb3Quc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlv
blN0YXJ0KCkgfHwgb3MgPT0gcm9vdC5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uRW5kKCkpCiAg
ICAgICAgICAgICAmJiBvcy0+c2VsZWN0aW9uU3RhdGUoKSAhPSBTZWxlY3Rpb25Ob25lKSB7CiAg
ICAgICAgICAgICAvLyBCbG9ja3MgYXJlIHJlc3BvbnNpYmxlIGZvciBwYWludGluZyBsaW5lIGdh
cHMgYW5kIG1hcmdpbiBnYXBzLiAgVGhleSBtdXN0IGJlIGV4YW1pbmVkIGFzIHdlbGwuCiAgICAg
ICAgICAgICBvbGRTZWxlY3Rpb25EYXRhLnNlbGVjdGVkT2JqZWN0cy5zZXQob3MsIHN0ZDo6bWFr
ZV91bmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4oKm9zLCB0cnVlKSk7CkBAIC05ODIsMjggKzk3
NywyOCBAQCB2b2lkIFJlbmRlclZpZXc6OmNsZWFyU3VidHJlZVNlbGVjdGlvbihjb25zdCBTZWxl
Y3Rpb25TdWJ0cmVlUm9vdCYgcm9vdCwgU2VsZWN0aQogICAgICAgICBvcyA9IHNlbGVjdGlvbkl0
ZXJhdG9yLm5leHQoKTsKICAgICB9CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHNlbGVjdGVkT2Jq
ZWN0SW5mbyA6IG9sZFNlbGVjdGlvbkRhdGEuc2VsZWN0ZWRPYmplY3RzKQotICAgICAgICBzZWxl
Y3RlZE9iamVjdEluZm8ua2V5LT5zZXRTZWxlY3Rpb25TdGF0ZUlmTmVlZGVkKFNlbGVjdGlvbk5v
bmUpOworICAgIGZvciAoYXV0byogc2VsZWN0ZWRPYmplY3QgOiBvbGRTZWxlY3Rpb25EYXRhLnNl
bGVjdGVkT2JqZWN0cy5rZXlzKCkpCisgICAgICAgIHNlbGVjdGVkT2JqZWN0LT5zZXRTZWxlY3Rp
b25TdGF0ZUlmTmVlZGVkKFNlbGVjdGlvbk5vbmUpOwogfQogCi12b2lkIFJlbmRlclZpZXc6OmFw
cGx5U3VidHJlZVNlbGVjdGlvbihjb25zdCBTZWxlY3Rpb25TdWJ0cmVlUm9vdCYgcm9vdCwgUmVu
ZGVyT2JqZWN0KiBzdGFydCwgUmVuZGVyT2JqZWN0KiBlbmQsIGludCBlbmRQb3MsIFNlbGVjdGlv
blJlcGFpbnRNb2RlIGJsb2NrUmVwYWludE1vZGUsIGNvbnN0IE9sZFNlbGVjdGlvbkRhdGEmIG9s
ZFNlbGVjdGlvbkRhdGEpCit2b2lkIFJlbmRlclZpZXc6OmFwcGx5U3VidHJlZVNlbGVjdGlvbihj
b25zdCBTZWxlY3Rpb25TdWJ0cmVlUm9vdCYgcm9vdCwgU2VsZWN0aW9uUmVwYWludE1vZGUgYmxv
Y2tSZXBhaW50TW9kZSwgY29uc3QgT2xkU2VsZWN0aW9uRGF0YSYgb2xkU2VsZWN0aW9uRGF0YSkK
IHsKICAgICAvLyBVcGRhdGUgdGhlIHNlbGVjdGlvbiBzdGF0dXMgb2YgYWxsIG9iamVjdHMgYmV0
d2VlbiBzZWxlY3Rpb25TdGFydCBhbmQgc2VsZWN0aW9uRW5kCi0gICAgaWYgKHN0YXJ0ICYmIHN0
YXJ0ID09IGVuZCkKLSAgICAgICAgc3RhcnQtPnNldFNlbGVjdGlvblN0YXRlSWZOZWVkZWQoU2Vs
ZWN0aW9uQm90aCk7CisgICAgaWYgKHJvb3Quc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvblN0YXJ0
KCkgJiYgcm9vdC5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uU3RhcnQoKSA9PSByb290LnNlbGVj
dGlvbkRhdGEoKS5zZWxlY3Rpb25FbmQoKSkKKyAgICAgICAgcm9vdC5zZWxlY3Rpb25EYXRhKCku
c2VsZWN0aW9uU3RhcnQoKS0+c2V0U2VsZWN0aW9uU3RhdGVJZk5lZWRlZChTZWxlY3Rpb25Cb3Ro
KTsKICAgICBlbHNlIHsKLSAgICAgICAgaWYgKHN0YXJ0KQotICAgICAgICAgICAgc3RhcnQtPnNl
dFNlbGVjdGlvblN0YXRlSWZOZWVkZWQoU2VsZWN0aW9uU3RhcnQpOwotICAgICAgICBpZiAoZW5k
KQotICAgICAgICAgICAgZW5kLT5zZXRTZWxlY3Rpb25TdGF0ZUlmTmVlZGVkKFNlbGVjdGlvbkVu
ZCk7CisgICAgICAgIGlmIChyb290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25TdGFydCgpKQor
ICAgICAgICAgICAgcm9vdC5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uU3RhcnQoKS0+c2V0U2Vs
ZWN0aW9uU3RhdGVJZk5lZWRlZChTZWxlY3Rpb25TdGFydCk7CisgICAgICAgIGlmIChyb290LnNl
bGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25FbmQoKSkKKyAgICAgICAgICAgIHJvb3Quc2VsZWN0aW9u
RGF0YSgpLnNlbGVjdGlvbkVuZCgpLT5zZXRTZWxlY3Rpb25TdGF0ZUlmTmVlZGVkKFNlbGVjdGlv
bkVuZCk7CiAgICAgfQogCi0gICAgUmVuZGVyT2JqZWN0KiBvID0gc3RhcnQ7Ci0gICAgUmVuZGVy
T2JqZWN0KiBzdG9wID0gcmVuZGVyZXJBZnRlclBvc2l0aW9uKGVuZCwgZW5kUG9zKTsKKyAgICBS
ZW5kZXJPYmplY3QqIG8gPSByb290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25TdGFydCgpOwor
ICAgIFJlbmRlck9iamVjdCogc3RvcCA9IHJlbmRlcmVyQWZ0ZXJQb3NpdGlvbihyb290LnNlbGVj
dGlvbkRhdGEoKS5zZWxlY3Rpb25FbmQoKSwgcm9vdC5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9u
RW5kUG9zKCkpOwogICAgIFNlbGVjdGlvbkl0ZXJhdG9yIHNlbGVjdGlvbkl0ZXJhdG9yKG8pOwog
ICAgIAogICAgIHdoaWxlIChvICYmIG8gIT0gc3RvcCkgewotICAgICAgICBpZiAobyAhPSBzdGFy
dCAmJiBvICE9IGVuZCAmJiBvLT5jYW5CZVNlbGVjdGlvbkxlYWYoKSkKKyAgICAgICAgaWYgKG8g
IT0gcm9vdC5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uU3RhcnQoKSAmJiBvICE9IHJvb3Quc2Vs
ZWN0aW9uRGF0YSgpLnNlbGVjdGlvbkVuZCgpICYmIG8tPmNhbkJlU2VsZWN0aW9uTGVhZigpKQog
ICAgICAgICAgICAgby0+c2V0U2VsZWN0aW9uU3RhdGVJZk5lZWRlZChTZWxlY3Rpb25JbnNpZGUp
OwogICAgICAgICBvID0gc2VsZWN0aW9uSXRlcmF0b3IubmV4dCgpOwogICAgIH0KQEAgLTEwMTUs
MTAgKzEwMTAsMTAgQEAgdm9pZCBSZW5kZXJWaWV3OjphcHBseVN1YnRyZWVTZWxlY3Rpb24oY29u
c3QgU2VsZWN0aW9uU3VidHJlZVJvb3QmIHJvb3QsIFJlbmRlck8KICAgICAvLyBwdXQgdGhlbSBp
biB0aGUgbmV3IG9iamVjdHMgbGlzdC4KICAgICBTZWxlY3RlZE9iamVjdE1hcCBuZXdTZWxlY3Rl
ZE9iamVjdHM7CiAgICAgU2VsZWN0ZWRCbG9ja01hcCBuZXdTZWxlY3RlZEJsb2NrczsKLSAgICBv
ID0gc3RhcnQ7CisgICAgbyA9IHJvb3Quc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvblN0YXJ0KCk7
CiAgICAgc2VsZWN0aW9uSXRlcmF0b3IgPSBTZWxlY3Rpb25JdGVyYXRvcihvKTsKICAgICB3aGls
ZSAobyAmJiBvICE9IHN0b3ApIHsKLSAgICAgICAgaWYgKChvLT5jYW5CZVNlbGVjdGlvbkxlYWYo
KSB8fCBvID09IHN0YXJ0IHx8IG8gPT0gZW5kKSAmJiBvLT5zZWxlY3Rpb25TdGF0ZSgpICE9IFNl
bGVjdGlvbk5vbmUpIHsKKyAgICAgICAgaWYgKChvLT5jYW5CZVNlbGVjdGlvbkxlYWYoKSB8fCBv
ID09IHJvb3Quc2VsZWN0aW9uRGF0YSgpLnNlbGVjdGlvblN0YXJ0KCkgfHwgbyA9PSByb290LnNl
bGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25FbmQoKSkgJiYgby0+c2VsZWN0aW9uU3RhdGUoKSAhPSBT
ZWxlY3Rpb25Ob25lKSB7CiAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU2VsZWN0
aW9uSW5mbz4gc2VsZWN0aW9uSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyU2VsZWN0aW9u
SW5mbz4oKm8sIHRydWUpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCkBAIC0xMDU2
LDggKzEwNTEsOCBAQCB2b2lkIFJlbmRlclZpZXc6OmFwcGx5U3VidHJlZVNlbGVjdGlvbihjb25z
dCBTZWxlY3Rpb25TdWJ0cmVlUm9vdCYgcm9vdCwgUmVuZGVyTwogICAgICAgICBSZW5kZXJTZWxl
Y3Rpb25JbmZvKiBuZXdJbmZvID0gbmV3U2VsZWN0ZWRPYmplY3RzLmdldChvYmopOwogICAgICAg
ICBSZW5kZXJTZWxlY3Rpb25JbmZvKiBvbGRJbmZvID0gc2VsZWN0ZWRPYmplY3RJbmZvLnZhbHVl
LmdldCgpOwogICAgICAgICBpZiAoIW5ld0luZm8gfHwgb2xkSW5mby0+cmVjdCgpICE9IG5ld0lu
Zm8tPnJlY3QoKSB8fCBvbGRJbmZvLT5zdGF0ZSgpICE9IG5ld0luZm8tPnN0YXRlKCkKLSAgICAg
ICAgICAgIHx8IChyb290LnNlbGVjdGlvblN0YXJ0KCkgPT0gb2JqICYmIG9sZFNlbGVjdGlvbkRh
dGEuc2VsZWN0aW9uU3RhcnRQb3MgIT0gcm9vdC5zZWxlY3Rpb25TdGFydFBvcygpKQotICAgICAg
ICAgICAgfHwgKHJvb3Quc2VsZWN0aW9uRW5kKCkgPT0gb2JqICYmIG9sZFNlbGVjdGlvbkRhdGEu
c2VsZWN0aW9uRW5kUG9zICE9IHJvb3Quc2VsZWN0aW9uRW5kUG9zKCkpKSB7CisgICAgICAgICAg
ICB8fCAocm9vdC5zZWxlY3Rpb25EYXRhKCkuc2VsZWN0aW9uU3RhcnQoKSA9PSBvYmogJiYgb2xk
U2VsZWN0aW9uRGF0YS5zZWxlY3Rpb25TdGFydFBvcyAhPSByb290LnNlbGVjdGlvbkRhdGEoKS5z
ZWxlY3Rpb25TdGFydFBvcygpKQorICAgICAgICAgICAgfHwgKHJvb3Quc2VsZWN0aW9uRGF0YSgp
LnNlbGVjdGlvbkVuZCgpID09IG9iaiAmJiBvbGRTZWxlY3Rpb25EYXRhLnNlbGVjdGlvbkVuZFBv
cyAhPSByb290LnNlbGVjdGlvbkRhdGEoKS5zZWxlY3Rpb25FbmRQb3MoKSkpIHsKICAgICAgICAg
ICAgIG9sZEluZm8tPnJlcGFpbnQoKTsKICAgICAgICAgICAgIGlmIChuZXdJbmZvKSB7CiAgICAg
ICAgICAgICAgICAgbmV3SW5mby0+cmVwYWludCgpOwpAQCAtMTA3Miw3ICsxMDY3LDcgQEAgdm9p
ZCBSZW5kZXJWaWV3OjphcHBseVN1YnRyZWVTZWxlY3Rpb24oY29uc3QgU2VsZWN0aW9uU3VidHJl
ZVJvb3QmIHJvb3QsIFJlbmRlck8KIAogICAgIC8vIEhhdmUgYW55IG9mIHRoZSBvbGQgYmxvY2tz
IGNoYW5nZWQ/CiAgICAgZm9yIChjb25zdCBhdXRvJiBzZWxlY3RlZEJsb2NrSW5mbyA6IG9sZFNl
bGVjdGlvbkRhdGEuc2VsZWN0ZWRCbG9ja3MpIHsKLSAgICAgICAgUmVuZGVyQmxvY2sqIGJsb2Nr
ID0gc2VsZWN0ZWRCbG9ja0luZm8ua2V5OworICAgICAgICBjb25zdCBSZW5kZXJCbG9jayogYmxv
Y2sgPSBzZWxlY3RlZEJsb2NrSW5mby5rZXk7CiAgICAgICAgIFJlbmRlckJsb2NrU2VsZWN0aW9u
SW5mbyogbmV3SW5mbyA9IG5ld1NlbGVjdGVkQmxvY2tzLmdldChibG9jayk7CiAgICAgICAgIFJl
bmRlckJsb2NrU2VsZWN0aW9uSW5mbyogb2xkSW5mbyA9IHNlbGVjdGVkQmxvY2tJbmZvLnZhbHVl
LmdldCgpOwogICAgICAgICBpZiAoIW5ld0luZm8gfHwgb2xkSW5mby0+cmVjdHMoKSAhPSBuZXdJ
bmZvLT5yZWN0cygpIHx8IG9sZEluZm8tPnN0YXRlKCkgIT0gbmV3SW5mby0+c3RhdGUoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKaW5kZXggMjk2ZmY1NjgxNGY3OWEzNjQx
MTc1NDQ3Yzc2NDE5ZDg0NDdkYmZkMy4uYmZlOTkzMGEyMzJjMTJlMWFhMWNkNmZiMDUwMzYyNzlj
OTZjMzc1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCkBAIC0zMDQsNyAr
MzA0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNwbGl0U2VsZWN0aW9uQmV0d2VlblN1YnRyZWVz
KGNvbnN0IFJlbmRlck9iamVjdCogc3RhcnRSZW5kZXJlciwgaW50IHN0YXJ0UG9zLCBjb25zdCBS
ZW5kZXJPYmplY3QqIGVuZFJlbmRlcmVyLCBpbnQgZW5kUG9zLCBTZWxlY3Rpb25SZXBhaW50TW9k
ZSBibG9ja1JlcGFpbnRNb2RlKTsKICAgICB2b2lkIGNsZWFyU3VidHJlZVNlbGVjdGlvbihjb25z
dCBTZWxlY3Rpb25TdWJ0cmVlUm9vdCYsIFNlbGVjdGlvblJlcGFpbnRNb2RlLCBPbGRTZWxlY3Rp
b25EYXRhJikgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25Gb3JTdWJ0cmVlcyhSZW5k
ZXJTdWJ0cmVlc01hcCYsIFNlbGVjdGlvblJlcGFpbnRNb2RlKTsKLSAgICB2b2lkIGFwcGx5U3Vi
dHJlZVNlbGVjdGlvbihjb25zdCBTZWxlY3Rpb25TdWJ0cmVlUm9vdCYsIFJlbmRlck9iamVjdCog
c3RhcnRSZW5kZXJlciwgUmVuZGVyT2JqZWN0KiBlbmRSZW5kZXJlciwgaW50IGVuZFBvcywgU2Vs
ZWN0aW9uUmVwYWludE1vZGUsIGNvbnN0IE9sZFNlbGVjdGlvbkRhdGEmKTsKKyAgICB2b2lkIGFw
cGx5U3VidHJlZVNlbGVjdGlvbihjb25zdCBTZWxlY3Rpb25TdWJ0cmVlUm9vdCYsIFNlbGVjdGlv
blJlcGFpbnRNb2RlLCBjb25zdCBPbGRTZWxlY3Rpb25EYXRhJik7CiAgICAgTGF5b3V0UmVjdCBz
dWJ0cmVlU2VsZWN0aW9uQm91bmRzKGNvbnN0IFNlbGVjdGlvblN1YnRyZWVSb290JiwgYm9vbCBj
bGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUpIGNvbnN0OwogICAgIHZvaWQgcmVwYWludFN1YnRy
ZWVTZWxlY3Rpb24oY29uc3QgU2VsZWN0aW9uU3VidHJlZVJvb3QmKSBjb25zdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblN1YnRyZWVSb290LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25TdWJ0cmVlUm9vdC5jcHAKaW5kZXgg
ZmFmYWVlNjQ0ZmNkNTc3ZjFjZmVhZGYwMWQ0YWRmYzE5ODM5MjY0Mi4uOGI2YjJlNjExMjMyZDM5
NTI3OWJlMDkyOWM3MjY0ZGFiZGM2ZTc2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1NlbGVjdGlvblN1YnRyZWVSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvU2VsZWN0aW9uU3VidHJlZVJvb3QuY3BwCkBAIC0zOCwyOSArMzgsMjIgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogU2VsZWN0aW9uU3VidHJlZVJvb3Q6OlNlbGVjdGlvblN1YnRyZWVS
b290KCkKLSAgICA6IG1fc2VsZWN0aW9uU3RhcnQobnVsbHB0cikKLSAgICAsIG1fc2VsZWN0aW9u
U3RhcnRQb3MoLTEpCi0gICAgLCBtX3NlbGVjdGlvbkVuZChudWxscHRyKQotICAgICwgbV9zZWxl
Y3Rpb25FbmRQb3MoLTEpCiB7CiB9CiAKIFNlbGVjdGlvblN1YnRyZWVSb290OjpTZWxlY3Rpb25T
dWJ0cmVlUm9vdChSZW5kZXJPYmplY3QqIHNlbGVjdGlvblN0YXJ0LCBpbnQgc2VsZWN0aW9uU3Rh
cnRQb3MsIFJlbmRlck9iamVjdCogc2VsZWN0aW9uRW5kLCBpbnQgc2VsZWN0aW9uRW5kUG9zKQot
ICAgIDogbV9zZWxlY3Rpb25TdGFydChzZWxlY3Rpb25TdGFydCkKLSAgICAsIG1fc2VsZWN0aW9u
U3RhcnRQb3Moc2VsZWN0aW9uU3RhcnRQb3MpCi0gICAgLCBtX3NlbGVjdGlvbkVuZChzZWxlY3Rp
b25FbmQpCi0gICAgLCBtX3NlbGVjdGlvbkVuZFBvcyhzZWxlY3Rpb25FbmRQb3MpCisgICAgOiBt
X3NlbGVjdGlvblN1YnRyZWVEYXRhKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25TdGFydFBvcywg
c2VsZWN0aW9uRW5kLCBzZWxlY3Rpb25FbmRQb3MpCiB7CiB9CiAKIHZvaWQgU2VsZWN0aW9uU3Vi
dHJlZVJvb3Q6OmFkanVzdEZvclZpc2libGVTZWxlY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50KQog
ewotICAgIGlmIChzZWxlY3Rpb25DbGVhcigpKQorICAgIGlmIChtX3NlbGVjdGlvblN1YnRyZWVE
YXRhLnNlbGVjdGlvbkNsZWFyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIENyZWF0ZSBh
IHJhbmdlIGJhc2VkIG9uIHRoZSBjYWNoZWQgZW5kIHBvaW50cwotICAgIFBvc2l0aW9uIHN0YXJ0
UG9zaXRpb24gPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obV9zZWxlY3Rpb25TdGFydC0+
bm9kZSgpLCBtX3NlbGVjdGlvblN0YXJ0UG9zKTsKLSAgICBQb3NpdGlvbiBlbmRQb3NpdGlvbiA9
IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihtX3NlbGVjdGlvbkVuZC0+bm9kZSgpLCBtX3Nl
bGVjdGlvbkVuZFBvcyk7CisgICAgUG9zaXRpb24gc3RhcnRQb3NpdGlvbiA9IGNyZWF0ZUxlZ2Fj
eUVkaXRpbmdQb3NpdGlvbihtX3NlbGVjdGlvblN1YnRyZWVEYXRhLnNlbGVjdGlvblN0YXJ0KCkt
Pm5vZGUoKSwgbV9zZWxlY3Rpb25TdWJ0cmVlRGF0YS5zZWxlY3Rpb25TdGFydFBvcygpKTsKKyAg
ICBQb3NpdGlvbiBlbmRQb3NpdGlvbiA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihtX3Nl
bGVjdGlvblN1YnRyZWVEYXRhLnNlbGVjdGlvbkVuZCgpLT5ub2RlKCksIG1fc2VsZWN0aW9uU3Vi
dHJlZURhdGEuc2VsZWN0aW9uRW5kUG9zKCkpOwogCiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9
IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIHN0YXJ0UG9zaXRpb24ucGFyZW50QW5jaG9yZWRFcXVp
dmFsZW50KCksIGVuZFBvc2l0aW9uLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKICAgICBW
aXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbihyYW5nZS5nZXQoKSk7CkBAIC03NCwxOSArNjcsMTYg
QEAgdm9pZCBTZWxlY3Rpb25TdWJ0cmVlUm9vdDo6YWRqdXN0Rm9yVmlzaWJsZVNlbGVjdGlvbihE
b2N1bWVudCYgZG9jdW1lbnQpCiAgICAgaWYgKGNhbmRpZGF0ZS5pc0NhbmRpZGF0ZSgpKQogICAg
ICAgICBlbmRQb3MgPSBjYW5kaWRhdGU7CiAKLSAgICBtX3NlbGVjdGlvblN0YXJ0ID0gbnVsbHB0
cjsKLSAgICBtX3NlbGVjdGlvblN0YXJ0UG9zID0gLTE7Ci0gICAgbV9zZWxlY3Rpb25FbmQgPSBu
dWxscHRyOwotICAgIG1fc2VsZWN0aW9uRW5kUG9zID0gLTE7CisgICAgbV9zZWxlY3Rpb25TdWJ0
cmVlRGF0YS5jbGVhclNlbGVjdGlvbigpOwogCiAgICAgaWYgKHN0YXJ0UG9zLmlzTm90TnVsbCgp
CiAgICAgICAgICYmIGVuZFBvcy5pc05vdE51bGwoKQogICAgICAgICAmJiBzZWxlY3Rpb24udmlz
aWJsZVN0YXJ0KCkgIT0gc2VsZWN0aW9uLnZpc2libGVFbmQoKQogICAgICAgICAmJiBzdGFydFBv
cy5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpLT5mbG93VGhyZWFkQ29udGFpbmluZ0Jsb2Nr
KCkgPT0gZW5kUG9zLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCktPmZsb3dUaHJlYWRDb250
YWluaW5nQmxvY2soKSkgewotICAgICAgICBtX3NlbGVjdGlvblN0YXJ0ID0gc3RhcnRQb3MuZGVw
cmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsKLSAgICAgICAgbV9zZWxlY3Rpb25TdGFydFBvcyA9
IHN0YXJ0UG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7Ci0gICAgICAgIG1fc2VsZWN0aW9u
RW5kID0gZW5kUG9zLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCk7Ci0gICAgICAgIG1fc2Vs
ZWN0aW9uRW5kUG9zID0gZW5kUG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CisgICAgICAg
IG1fc2VsZWN0aW9uU3VidHJlZURhdGEuc2V0U2VsZWN0aW9uU3RhcnQoc3RhcnRQb3MuZGVwcmVj
YXRlZE5vZGUoKS0+cmVuZGVyZXIoKSk7CisgICAgICAgIG1fc2VsZWN0aW9uU3VidHJlZURhdGEu
c2V0U2VsZWN0aW9uU3RhcnRQb3Moc3RhcnRQb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7
CisgICAgICAgIG1fc2VsZWN0aW9uU3VidHJlZURhdGEuc2V0U2VsZWN0aW9uRW5kKGVuZFBvcy5k
ZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpKTsKKyAgICAgICAgbV9zZWxlY3Rpb25TdWJ0cmVl
RGF0YS5zZXRTZWxlY3Rpb25FbmRQb3MoZW5kUG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVj
dGlvblN1YnRyZWVSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uU3Vi
dHJlZVJvb3QuaAppbmRleCA0MmM1YzkzNDA5OGQzYjNjZDFkYzFjMDMwMmUyNjFhYzdhYmFhYmFh
Li5kZDE5MTk3OGZkNjRiOTliMTZlNDgxMGY5NmJkZTZhZDA0MTM0ZTk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uU3VidHJlZVJvb3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uU3VidHJlZVJvb3QuaApAQCAtMSw0ICsxLDQg
QEAKLS8qCisgLyoKICAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dApAQCAtNDEsOCArNDEsNyBAQCBjbGFzcyBTZWxlY3Rpb25TdWJ0cmVlUm9vdCB7CiBw
dWJsaWM6CiAgICAgCiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlbmRlck9iamVjdCosIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTZWxlY3Rpb25JbmZvPj4gU2VsZWN0ZWRPYmplY3RNYXA7Ci0gICAgdHlw
ZWRlZiBIYXNoTWFwPFJlbmRlckJsb2NrKiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckJsb2NrU2Vs
ZWN0aW9uSW5mbz4+IFNlbGVjdGVkQmxvY2tNYXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFNlbGVj
dGlvblN1YnRyZWVSb290KiwgU2VsZWN0aW9uU3VidHJlZVJvb3Q+IFJlbmRlclN1YnRyZWVzTWFw
OworICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBSZW5kZXJCbG9jayosIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8+PiBTZWxlY3RlZEJsb2NrTWFwOwogCiAgICAgc3Ry
dWN0IE9sZFNlbGVjdGlvbkRhdGEgewogICAgICAgICBPbGRTZWxlY3Rpb25EYXRhKCkKQEAgLTU2
LDQ0ICs1NSw3NSBAQCBwdWJsaWM6CiAgICAgICAgIFNlbGVjdGVkT2JqZWN0TWFwIHNlbGVjdGVk
T2JqZWN0czsKICAgICAgICAgU2VsZWN0ZWRCbG9ja01hcCBzZWxlY3RlZEJsb2NrczsKICAgICB9
OwotICAgIAotICAgIHR5cGVkZWYgSGFzaE1hcDxTZWxlY3Rpb25TdWJ0cmVlUm9vdCosIHN0ZDo6
dW5pcXVlX3B0cjxPbGRTZWxlY3Rpb25EYXRhPj4gU3VidHJlZU9sZFNlbGVjdGlvbkRhdGFNYXA7
CisKKyAgICBjbGFzcyBTZWxlY3Rpb25TdWJ0cmVlRGF0YSB7CisgICAgcHVibGljOgorICAgICAg
ICBTZWxlY3Rpb25TdWJ0cmVlRGF0YSgpCisgICAgICAgICAgICA6IG1fc2VsZWN0aW9uU3RhcnQo
bnVsbHB0cikKKyAgICAgICAgICAgICwgbV9zZWxlY3Rpb25TdGFydFBvcygtMSkKKyAgICAgICAg
ICAgICwgbV9zZWxlY3Rpb25FbmQobnVsbHB0cikKKyAgICAgICAgICAgICwgbV9zZWxlY3Rpb25F
bmRQb3MoLTEpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIFNlbGVjdGlvblN1YnRy
ZWVEYXRhKFJlbmRlck9iamVjdCogc2VsZWN0aW9uU3RhcnQsIGludCBzZWxlY3Rpb25TdGFydFBv
cywgUmVuZGVyT2JqZWN0KiBzZWxlY3Rpb25FbmQsIGludCBzZWxlY3Rpb25FbmRQb3MpCisgICAg
ICAgICAgICA6IG1fc2VsZWN0aW9uU3RhcnQoc2VsZWN0aW9uU3RhcnQpCisgICAgICAgICAgICAs
IG1fc2VsZWN0aW9uU3RhcnRQb3Moc2VsZWN0aW9uU3RhcnRQb3MpCisgICAgICAgICAgICAsIG1f
c2VsZWN0aW9uRW5kKHNlbGVjdGlvbkVuZCkKKyAgICAgICAgICAgICwgbV9zZWxlY3Rpb25FbmRQ
b3Moc2VsZWN0aW9uRW5kUG9zKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBSZW5k
ZXJPYmplY3QqIHNlbGVjdGlvblN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb25TdGFy
dDsgfQorICAgICAgICBpbnQgc2VsZWN0aW9uU3RhcnRQb3MoKSBjb25zdCB7IHJldHVybiBtX3Nl
bGVjdGlvblN0YXJ0UG9zOyB9CisgICAgICAgIFJlbmRlck9iamVjdCogc2VsZWN0aW9uRW5kKCkg
Y29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb25FbmQ7IH0KKyAgICAgICAgaW50IHNlbGVjdGlvbkVu
ZFBvcygpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0aW9uRW5kUG9zOyB9CisgICAgICAgIGJvb2wg
c2VsZWN0aW9uQ2xlYXIoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gIW1f
c2VsZWN0aW9uU3RhcnQKKyAgICAgICAgICAgICYmIChtX3NlbGVjdGlvblN0YXJ0UG9zID09IC0x
KQorICAgICAgICAgICAgJiYgIW1fc2VsZWN0aW9uRW5kCisgICAgICAgICAgICAmJiAobV9zZWxl
Y3Rpb25FbmRQb3MgPT0gLTEpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBzZWxlY3Rpb25T
dGFydEVuZFBvc2l0aW9ucyhpbnQmIHN0YXJ0UG9zLCBpbnQmIGVuZFBvcykgY29uc3QKKyAgICAg
ICAgeworICAgICAgICAgICAgc3RhcnRQb3MgPSBtX3NlbGVjdGlvblN0YXJ0UG9zOworICAgICAg
ICAgICAgZW5kUG9zID0gbV9zZWxlY3Rpb25FbmRQb3M7CisgICAgICAgIH0KKyAgICAgICAgdm9p
ZCBzZXRTZWxlY3Rpb25TdGFydChSZW5kZXJPYmplY3QqIHNlbGVjdGlvblN0YXJ0KSB7IG1fc2Vs
ZWN0aW9uU3RhcnQgPSBzZWxlY3Rpb25TdGFydDsgfQorICAgICAgICB2b2lkIHNldFNlbGVjdGlv
blN0YXJ0UG9zKGludCBzZWxlY3Rpb25TdGFydFBvcykgeyBtX3NlbGVjdGlvblN0YXJ0UG9zID0g
c2VsZWN0aW9uU3RhcnRQb3M7IH0KKyAgICAgICAgdm9pZCBzZXRTZWxlY3Rpb25FbmQoUmVuZGVy
T2JqZWN0KiBzZWxlY3Rpb25FbmQpIHsgbV9zZWxlY3Rpb25FbmQgPSBzZWxlY3Rpb25FbmQ7IH0K
KyAgICAgICAgdm9pZCBzZXRTZWxlY3Rpb25FbmRQb3MoaW50IHNlbGVjdGlvbkVuZFBvcykgeyBt
X3NlbGVjdGlvbkVuZFBvcyA9IHNlbGVjdGlvbkVuZFBvczsgfQorICAgICAgICB2b2lkIGNsZWFy
U2VsZWN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9zZWxlY3Rpb25TdGFydCA9IG51
bGxwdHI7CisgICAgICAgICAgICBtX3NlbGVjdGlvblN0YXJ0UG9zID0gLTE7CisgICAgICAgICAg
ICBtX3NlbGVjdGlvbkVuZCA9IG51bGxwdHI7CisgICAgICAgICAgICBtX3NlbGVjdGlvbkVuZFBv
cyA9IC0xOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBSZW5kZXJPYmplY3Qq
IG1fc2VsZWN0aW9uU3RhcnQ7CisgICAgICAgIGludCBtX3NlbGVjdGlvblN0YXJ0UG9zOworICAg
ICAgICBSZW5kZXJPYmplY3QqIG1fc2VsZWN0aW9uRW5kOworICAgICAgICBpbnQgbV9zZWxlY3Rp
b25FbmRQb3M7CisgICAgfTsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxTZWxlY3Rpb25TdWJ0cmVl
Um9vdCosIFNlbGVjdGlvblN1YnRyZWVEYXRhPiBSZW5kZXJTdWJ0cmVlc01hcDsKKyAgICB0eXBl
ZGVmIEhhc2hNYXA8Y29uc3QgU2VsZWN0aW9uU3VidHJlZVJvb3QqLCBzdGQ6OnVuaXF1ZV9wdHI8
T2xkU2VsZWN0aW9uRGF0YT4+IFN1YnRyZWVPbGRTZWxlY3Rpb25EYXRhTWFwOwogCiAgICAgU2Vs
ZWN0aW9uU3VidHJlZVJvb3QoKTsKICAgICBTZWxlY3Rpb25TdWJ0cmVlUm9vdChSZW5kZXJPYmpl
Y3QqIHNlbGVjdGlvblN0YXJ0LCBpbnQgc2VsZWN0aW9uU3RhcnRQb3MsIFJlbmRlck9iamVjdCog
c2VsZWN0aW9uRW5kLCBpbnQgc2VsZWN0aW9uRW5kUG9zKTsKIAotICAgIFJlbmRlck9iamVjdCog
c2VsZWN0aW9uU3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdGlvblN0YXJ0OyB9Ci0gICAg
aW50IHNlbGVjdGlvblN0YXJ0UG9zKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb25TdGFydFBv
czsgfQotICAgIFJlbmRlck9iamVjdCogc2VsZWN0aW9uRW5kKCkgY29uc3QgeyByZXR1cm4gbV9z
ZWxlY3Rpb25FbmQ7IH0KLSAgICBpbnQgc2VsZWN0aW9uRW5kUG9zKCkgY29uc3QgeyByZXR1cm4g
bV9zZWxlY3Rpb25FbmRQb3M7IH0KLSAgICB2b2lkIHNlbGVjdGlvblN0YXJ0RW5kUG9zaXRpb25z
KGludCYgc3RhcnRQb3MsIGludCYgZW5kUG9zKSBjb25zdAotICAgIHsKLSAgICAgICAgc3RhcnRQ
b3MgPSBtX3NlbGVjdGlvblN0YXJ0UG9zOwotICAgICAgICBlbmRQb3MgPSBtX3NlbGVjdGlvbkVu
ZFBvczsKLSAgICB9Ci0KLSAgICBib29sIHNlbGVjdGlvbkNsZWFyKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiAhbV9zZWxlY3Rpb25TdGFydAotICAgICAgICAmJiAobV9zZWxlY3Rpb25T
dGFydFBvcyA9PSAtMSkKLSAgICAgICAgJiYgIW1fc2VsZWN0aW9uRW5kCi0gICAgICAgICYmICht
X3NlbGVjdGlvbkVuZFBvcyA9PSAtMSk7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRTZWxlY3Rpb25T
dGFydChSZW5kZXJPYmplY3QqIHNlbGVjdGlvblN0YXJ0KSB7IG1fc2VsZWN0aW9uU3RhcnQgPSBz
ZWxlY3Rpb25TdGFydDsgfQotICAgIHZvaWQgc2V0U2VsZWN0aW9uU3RhcnRQb3MoaW50IHNlbGVj
dGlvblN0YXJ0UG9zKSB7IG1fc2VsZWN0aW9uU3RhcnRQb3MgPSBzZWxlY3Rpb25TdGFydFBvczsg
fQotICAgIHZvaWQgc2V0U2VsZWN0aW9uRW5kKFJlbmRlck9iamVjdCogc2VsZWN0aW9uRW5kKSB7
IG1fc2VsZWN0aW9uRW5kID0gc2VsZWN0aW9uRW5kOyB9Ci0gICAgdm9pZCBzZXRTZWxlY3Rpb25F
bmRQb3MoaW50IHNlbGVjdGlvbkVuZFBvcykgeyBtX3NlbGVjdGlvbkVuZFBvcyA9IHNlbGVjdGlv
bkVuZFBvczsgfQorICAgIFNlbGVjdGlvblN1YnRyZWVEYXRhJiBzZWxlY3Rpb25EYXRhKCkgeyBy
ZXR1cm4gbV9zZWxlY3Rpb25TdWJ0cmVlRGF0YTsgfQorICAgIGNvbnN0IFNlbGVjdGlvblN1YnRy
ZWVEYXRhJiBzZWxlY3Rpb25EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb25TdWJ0cmVl
RGF0YTsgfQogCisgICAgdm9pZCBzZXRTZWxlY3Rpb25EYXRhKGNvbnN0IFNlbGVjdGlvblN1YnRy
ZWVEYXRhJiBzZWxlY3Rpb25TdWJ0cmVlRGF0YSkgeyBtX3NlbGVjdGlvblN1YnRyZWVEYXRhID0g
c2VsZWN0aW9uU3VidHJlZURhdGE7IH0KICAgICB2b2lkIGFkanVzdEZvclZpc2libGVTZWxlY3Rp
b24oRG9jdW1lbnQmKTsKIAogcHJpdmF0ZToKLQotICAgIFJlbmRlck9iamVjdCogbV9zZWxlY3Rp
b25TdGFydDsKLSAgICBpbnQgbV9zZWxlY3Rpb25TdGFydFBvczsKLSAgICBSZW5kZXJPYmplY3Qq
IG1fc2VsZWN0aW9uRW5kOwotICAgIGludCBtX3NlbGVjdGlvbkVuZFBvczsKLQorICAgIFNlbGVj
dGlvblN1YnRyZWVEYXRhIG1fc2VsZWN0aW9uU3VidHJlZURhdGE7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>