<?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>173570</bug_id>
          
          <creation_ts>2017-06-19 17:06:36 -0700</creation_ts>
          <short_desc>Occasional deadlocks under ensurePositionInformationIsUpToDate (incoming sync message with waitForAndDispatchImmediately)</short_desc>
          <delta_ts>2017-06-20 12:46:39 -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>New Bugs</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>bdakin</cc>
    
    <cc>buildbot</cc>
    
    <cc>graouts</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1320895</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-06-19 17:06:36 -0700</bug_when>
    <thetext>Occasional deadlocks under ensurePositionInformationIsUpToDate (incoming sync message with waitForAndDispatchImmediately)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320896</commentid>
    <comment_count>1</comment_count>
      <attachid>313344</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-06-19 17:07:34 -0700</bug_when>
    <thetext>Created attachment 313344
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320897</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-06-19 17:08:28 -0700</bug_when>
    <thetext>rdar://problem/32720928</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320899</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-19 17:10:07 -0700</bug_when>
    <thetext>Attachment 313344 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:579:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:579:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:580:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:580:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:587:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:580:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:580:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:587:  Wrong number of spaces before statement. (expected: 16)  [whitespace/indent] [4]
Total errors found: 8 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320912</commentid>
    <comment_count>4</comment_count>
      <attachid>313344</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-06-19 18:10:35 -0700</bug_when>
    <thetext>Comment on attachment 313344
Patch

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

&gt; Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:127
&gt; +    if (auto positionInformation = [delegate positionInformationForActionSheetAssistant:self])

Can this just be _positionInformation = [delegate positionInformationForActionSheetAssistant:self]?

&gt; Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:348
&gt; +    [self synchronouslyRetrievePositionInformation];

Nit - I think it would be cleaner if this returned a BOOL like -ensurePositionInformationIsUpToDate:, so we could do something like

if (![self synchronouslyRetrievePositionInformation])
    return;

...etc...

&gt; Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:513
&gt; +    [self synchronouslyRetrievePositionInformation];

Ditto.

&gt; Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:557
&gt; +    [self synchronouslyRetrievePositionInformation];

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1320917</commentid>
    <comment_count>5</comment_count>
      <attachid>313344</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-06-19 18:19:55 -0700</bug_when>
    <thetext>Comment on attachment 313344
Patch

r=me

Please make sure that the PositionInformationTests still all pass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321195</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-06-20 12:44:39 -0700</bug_when>
    <thetext>Tests all pass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321198</commentid>
    <comment_count>7</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-06-20 12:46:39 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/218606/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313344</attachid>
            <date>2017-06-19 17:07:34 -0700</date>
            <delta_ts>2017-06-19 18:19:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173570-20170619170733.patch</filename>
            <type>text/plain</type>
            <size>26130</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4Mjc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjc5MTBjNzIzZTkyYzA2
ZTAzYjQ1Mjg3ODRlY2UzZjFiN2VlZGU5NS4uZDZiMjZmZmY5ZjI5OTY1OWFhMjE4NDE2MjMzYTNh
OTYwYzU3NGU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE3LTA2LTE5ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIE9jY2FzaW9uYWwg
ZGVhZGxvY2tzIHVuZGVyIGVuc3VyZVBvc2l0aW9uSW5mb3JtYXRpb25Jc1VwVG9EYXRlIChpbmNv
bWluZyBzeW5jIG1lc3NhZ2Ugd2l0aCB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzU3MAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMzI3MjA5Mjg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6Z2V0UG9zaXRpb25JbmZvcm1hdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IEdldCByaWQgb2YgZ2V0UG9zaXRpb25JbmZvcm1hdGlvbjsgaXQgb25seSBoYXMgb25lIGNhbGxl
ciwgYW5kIGl0J3MgZWFzaWVyCisgICAgICAgIHRvIHJlYXNvbiBhYm91dCB0aGUgY29kZSBpZiBp
dCdzIGFsbCBpbiBvbmUgcGxhY2UuIEFsc28sIHdlIHNob3VsZG4ndAorICAgICAgICBhZGQgbW9y
ZSBjYWxsZXJzLi4uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGVuc3VyZVBvc2l0aW9uSW5mb3JtYXRp
b25Jc1VwVG9EYXRlOl0pOgorICAgICAgICBBZGQgYSByZXR1cm4gdmFsdWUgdG8gZW5zdXJlUG9z
aXRpb25JbmZvcm1hdGlvbklzVXBUb0RhdGUgdGhhdCBpbmRpY2F0ZXMKKyAgICAgICAgd2hldGhl
ciB3ZSBzdWNjZWVkZWQgaW4gdGhhdCBlZmZvcnQuCisKKyAgICAgICAgQWRkIHRoZSBmbGFnIHRv
IG91ciB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSB0aGF0IGNhdXNlcyB0aGUgd2FpdAor
ICAgICAgICB0byBiZSBpbnRlcnJ1cHRlZCBpZiBhIHN5bmMgbWVzc2FnZSBhcnJpdmVzLgorCisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgZ2VzdHVyZVJlY29nbml6ZXJTaG91bGRCZWdpbjpdKToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBoYXNTZWxlY3RhYmxlUG9zaXRpb25BdFBvaW50Ol0p
OgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHBvaW50SXNOZWFyTWFya2VkVGV4dDpdKToKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyB0ZXh0SW50ZXJhY3Rpb25HZXN0dXJlOnNob3VsZEJlZ2lu
QXRQb2ludDpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBwb3NpdGlvbkluZm9ybWF0aW9u
Rm9yQWN0aW9uU2hlZXRBc3Npc3RhbnQ6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2lu
dGVyYWN0aW9uU2hvdWxkQmVnaW5Gcm9tUHJldmlld0l0ZW1Db250cm9sbGVyOmZvclBvc2l0aW9u
Ol0pOgorICAgICAgICBJZiBhbnl0aGluZyBoYXBwZW5zIHRvIGludGVycnVwdCBvdXIgcG9zaXRp
b24gaW5mb3JtYXRpb24gdXBkYXRlLCBmYWlsCisgICAgICAgIGluIHRoZSBtb3N0IGdyYWNlZnVs
IHBvc3NpYmxlIHdheSBhdCBlYWNoIGNhbGxzaXRlIChnZW5lcmFsbHkgYnkgYmFpbGluZworICAg
ICAgICBmcm9tIGRvaW5nIHdoYXRldmVyIGFjdGlvbiByZXF1aXJlZCBwb3NpdGlvbiBpbmZvcm1h
dGlvbikuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbToKKyAgICAgICAg
KC1bV0tQREZWaWV3IHBvc2l0aW9uSW5mb3JtYXRpb25Gb3JBY3Rpb25TaGVldEFzc2lzdGFudDpd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW06CisgICAgICAg
ICgtW1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQgc3luY2hyb25vdXNseVJldHJpZXZlUG9zaXRpb25J
bmZvcm1hdGlvbl0pOgorICAgICAgICAoLVtXS0FjdGlvblNoZWV0QXNzaXN0YW50IHByZXNlbnRh
dGlvblJlY3RGb3JFbGVtZW50VXNpbmdDbG9zZXN0SW5kaWNhdGVkUmVjdF0pOgorICAgICAgICAo
LVtXS0FjdGlvblNoZWV0QXNzaXN0YW50IHByZXNlbnRhdGlvblJlY3RGb3JJbmRpY2F0ZWRFbGVt
ZW50XSk6CisgICAgICAgICgtW1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQgaW5pdGlhbFByZXNlbnRh
dGlvblJlY3RJbkhvc3RWaWV3Rm9yU2hlZXRdKToKKyAgICAgICAgKC1bV0tBY3Rpb25TaGVldEFz
c2lzdGFudCBwcmVzZW50YXRpb25SZWN0SW5Ib3N0Vmlld0ZvclNoZWV0XSk6CisgICAgICAgICgt
W1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQgX2NyZWF0ZVNoZWV0V2l0aEVsZW1lbnRBY3Rpb25zOnNo
b3dMaW5rVGl0bGU6XSk6CisgICAgICAgICgtW1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQgc2hvd0lt
YWdlU2hlZXRdKToKKyAgICAgICAgKC1bV0tBY3Rpb25TaGVldEFzc2lzdGFudCBkZWZhdWx0QWN0
aW9uc0ZvckxpbmtTaGVldDpdKToKKyAgICAgICAgKC1bV0tBY3Rpb25TaGVldEFzc2lzdGFudCBz
aG93TGlua1NoZWV0XSk6CisgICAgICAgICgtW1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQgc2hvd0Rh
dGFEZXRlY3RvcnNTaGVldF0pOgorICAgICAgICAoLVtXS0FjdGlvblNoZWV0QXNzaXN0YW50IGNs
ZWFudXBTaGVldF0pOgorICAgICAgICBJbnN0ZWFkIG9mIGNvbnN0YW50bHkgcmUtcXVlcnlpbmcg
dGhlIHBvc2l0aW9uIGluZm9ybWF0aW9uLCBzYXZlIGl0IGFzaWRlCisgICAgICAgIHdoZW4gcHJl
c2VudGluZyBhbiBhY3Rpb24gc2hlZXQsIGFuZCB1c2UgaXQgdG8gcmVzcG9uZCB0byBhbGwgb2Yg
dGhlCisgICAgICAgIHN1YnNlcXVlbnQgcXVlc3Rpb25zLiBBbHNvLCBiYWlsIGZyb20gcHJlc2Vu
dGluZyB0aGUgYWN0aW9uIHNoZWV0IGlmIHdlIGZhaWwKKyAgICAgICAgdG8gcmV0cmlldmUgY29y
cmVjdCBwb3NpdGlvbiBpbmZvcm1hdGlvbi4KKwogMjAxNy0wNi0xNCAgSm9uYXRoYW4gQmVkYXJk
ICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgQ29uZmlndXJlIHNjcmVlbiBzY2FsZSBm
b3IgcnVubmluZyBsYXlvdXQgdGVzdHMgb24gcGx1cyBkZXZpY2VzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNmE0NTc3NGJhZjY4ZWQzMTQyMDkzMTcxNWQwNTA1
OTZjZDE3MGVhNS4uYTA5YzQxMzM1MGNlYmI4NzVkMDRhMGE1YmE3MDQ3NzQyYzQ0MjczNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNTI1LDcgKzUyNSw2IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlcGxhY2VEaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiBvbGRU
ZXh0LCBjb25zdCBTdHJpbmcmIG5ld1RleHQpOwogICAgIHZvaWQgcmVwbGFjZVNlbGVjdGVkVGV4
dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3VGV4dCk7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0
aW9uQXRQb3NpdGlvbiYpOwotICAgIHZvaWQgZ2V0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJ
bnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCYsIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBv
c2l0aW9uJik7CiAgICAgdm9pZCByZXF1ZXN0UG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRl
cmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCYpOwogICAgIHZvaWQgc3RhcnRJbnRlcmFjdGlvbldp
dGhFbGVtZW50QXRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZvaWQg
c3RvcEludGVyYWN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5oCmluZGV4IGY4MDA0NmM3NzU2NjI4OTRmZmJhYjE5
MGM4NTdjNDZmY2MxZDY1MWMuLmExOWNlNTE5MGY3YWYzYThmNjcwMDVmZjQ5YzIxNDgyOTI2Y2Y5
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVl
dEFzc2lzdGFudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25T
aGVldEFzc2lzdGFudC5oCkBAIC00Miw3ICs0Miw3IEBAIHN0cnVjdCBJbnRlcmFjdGlvbkluZm9y
bWF0aW9uQXRQb3NpdGlvbjsKIAogQHByb3RvY29sIFdLQWN0aW9uU2hlZXRBc3Npc3RhbnREZWxl
Z2F0ZSA8TlNPYmplY3Q+CiBAcmVxdWlyZWQKLS0gKGNvbnN0IFdlYktpdDo6SW50ZXJhY3Rpb25J
bmZvcm1hdGlvbkF0UG9zaXRpb24mKXBvc2l0aW9uSW5mb3JtYXRpb25Gb3JBY3Rpb25TaGVldEFz
c2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudDsKKy0gKHN0ZDo6b3B0
aW9uYWw8Y29uc3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiY+KXBv
c2l0aW9uSW5mb3JtYXRpb25Gb3JBY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFz
c2lzdGFudCAqKWFzc2lzdGFudDsKIC0gKHZvaWQpYWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0
aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgcGVyZm9ybUFjdGlvbjooV2ViS2l0OjpTaGVl
dEFjdGlvbilhY3Rpb247CiAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNo
ZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IG9wZW5FbGVtZW50QXRMb2NhdGlvbjooQ0dQb2ludCls
b2NhdGlvbjsKIC0gKHZvaWQpYWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Np
c3RhbnQgKilhc3Npc3RhbnQgc2hhcmVFbGVtZW50V2l0aFVSTDooTlNVUkwgKil1cmwgcmVjdDoo
Q0dSZWN0KWJvdW5kaW5nUmVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQppbmRleCBkYTI2MzZiMTQzZTBjM2M5NDg4
YWU3Y2FjNzExZWJhZTU3NWFiNzFiLi5lY2FjZjNhOTY3YzI1YTZmNmUyYzk4ZTdhODJiZDNiZGYz
NzU5MzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQWN0aW9u
U2hlZXRBc3Npc3RhbnQubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0Fj
dGlvblNoZWV0QXNzaXN0YW50Lm1tCkBAIC04OCw2ICs4OCw3IEBAIEBpbXBsZW1lbnRhdGlvbiBX
S0FjdGlvblNoZWV0QXNzaXN0YW50IHsKICAgICBXZWFrT2JqQ1B0cjxpZCA8V0tBY3Rpb25TaGVl
dEFzc2lzdGFudERlbGVnYXRlPj4gX2RlbGVnYXRlOwogICAgIFJldGFpblB0cjxXS0FjdGlvblNo
ZWV0PiBfaW50ZXJhY3Rpb25TaGVldDsKICAgICBSZXRhaW5QdHI8X1dLQWN0aXZhdGVkRWxlbWVu
dEluZm8+IF9lbGVtZW50SW5mbzsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6SW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb24+IF9wb3NpdGlvbkluZm9ybWF0aW9uOwogICAgIFVJVmll
dyAqX3ZpZXc7CiAgICAgQk9PTCBfbmVlZHNMaW5rSW5kaWNhdG9yOwogICAgIEJPT0wgX2lzUHJl
c2VudGluZ0REVXNlckludGVyZmFjZTsKQEAgLTExNiw2ICsxMTcsMTkgQEAgLSAodm9pZClkZWFs
bG9jCiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCistICh2b2lkKXN5bmNocm9ub3VzbHlSZXRy
aWV2ZVBvc2l0aW9uSW5mb3JtYXRpb24KK3sKKyAgICBhdXRvIGRlbGVnYXRlID0gX2RlbGVnYXRl
LmdldCgpOworICAgIGlmICghZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBiZSBhc3luY2hyb25vdXMsIHNpbmNlIHdlIGNvbnRyb2wgdGhlIHBy
ZXNlbnRhdGlvbiBvZiB0aGUgYWN0aW9uIHNoZWV0LgorICAgIGlmIChhdXRvIHBvc2l0aW9uSW5m
b3JtYXRpb24gPSBbZGVsZWdhdGUgcG9zaXRpb25JbmZvcm1hdGlvbkZvckFjdGlvblNoZWV0QXNz
aXN0YW50OnNlbGZdKQorICAgICAgICBfcG9zaXRpb25JbmZvcm1hdGlvbiA9ICpwb3NpdGlvbklu
Zm9ybWF0aW9uOworICAgIGVsc2UKKyAgICAgICAgX3Bvc2l0aW9uSW5mb3JtYXRpb24gPSBzdGQ6
Om51bGxvcHQ7Cit9CisKIC0gKFVJVmlldyAqKXN1cGVydmlld0ZvclNoZWV0CiB7CiAgICAgVUlW
aWV3ICp2aWV3ID0gW192aWV3IHdpbmRvd107CkBAIC0xNTgsMTUgKzE3MiwxNCBAQCAtIChDR1Jl
Y3QpcHJlc2VudGF0aW9uUmVjdEZvckVsZW1lbnRVc2luZ0Nsb3Nlc3RJbmRpY2F0ZWRSZWN0CiB7
CiAgICAgVUlWaWV3ICp2aWV3ID0gW3NlbGYgc3VwZXJ2aWV3Rm9yU2hlZXRdOwogICAgIGF1dG8g
ZGVsZWdhdGUgPSBfZGVsZWdhdGUuZ2V0KCk7Ci0gICAgaWYgKCF2aWV3IHx8ICFkZWxlZ2F0ZSkK
KyAgICBpZiAoIXZpZXcgfHwgIWRlbGVnYXRlIHx8ICFfcG9zaXRpb25JbmZvcm1hdGlvbikKICAg
ICAgICAgcmV0dXJuIENHUmVjdFplcm87CiAKLSAgICBhdXRvIGluZm8gPSBbZGVsZWdhdGUgcG9z
aXRpb25JbmZvcm1hdGlvbkZvckFjdGlvblNoZWV0QXNzaXN0YW50OnNlbGZdOwotICAgIGF1dG8g
aW5kaWNhdG9yID0gaW5mby5saW5rSW5kaWNhdG9yOworICAgIGF1dG8gaW5kaWNhdG9yID0gX3Bv
c2l0aW9uSW5mb3JtYXRpb24tPmxpbmtJbmRpY2F0b3I7CiAgICAgaWYgKGluZGljYXRvci50ZXh0
UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IENHUmVjdFplcm87CiAKLSAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHRvdWNoTG9jYXRpb24gPSBp
bmZvLnJlcXVlc3QucG9pbnQ7CisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCB0b3VjaExvY2F0aW9u
ID0gX3Bvc2l0aW9uSW5mb3JtYXRpb24tPnJlcXVlc3QucG9pbnQ7CiAgICAgV2ViQ29yZTo6Rmxv
YXRQb2ludCBsaW5rRWxlbWVudExvY2F0aW9uID0gaW5kaWNhdG9yLnRleHRCb3VuZGluZ1JlY3RJ
blJvb3RWaWV3Q29vcmRpbmF0ZXMubG9jYXRpb24oKTsKICAgICBWZWN0b3I8V2ViQ29yZTo6Rmxv
YXRSZWN0PiBpbmRpY2F0ZWRSZWN0czsKICAgICBmb3IgKGF1dG8gcmVjdCA6IGluZGljYXRvci50
ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzKSB7CkBAIC0xODgsMTAgKzIwMSwxMCBA
QCAtIChDR1JlY3QpcHJlc2VudGF0aW9uUmVjdEZvckluZGljYXRlZEVsZW1lbnQKIHsKICAgICBV
SVZpZXcgKnZpZXcgPSBbc2VsZiBzdXBlcnZpZXdGb3JTaGVldF07CiAgICAgYXV0byBkZWxlZ2F0
ZSA9IF9kZWxlZ2F0ZS5nZXQoKTsKLSAgICBpZiAoIXZpZXcgfHwgIWRlbGVnYXRlKQorICAgIGlm
ICghdmlldyB8fCAhZGVsZWdhdGUgfHwgIV9wb3NpdGlvbkluZm9ybWF0aW9uKQogICAgICAgICBy
ZXR1cm4gQ0dSZWN0WmVybzsKIAotICAgIGF1dG8gZWxlbWVudEJvdW5kcyA9IFtkZWxlZ2F0ZSBw
b3NpdGlvbkluZm9ybWF0aW9uRm9yQWN0aW9uU2hlZXRBc3Npc3RhbnQ6c2VsZl0uYm91bmRzOwor
ICAgIGF1dG8gZWxlbWVudEJvdW5kcyA9IF9wb3NpdGlvbkluZm9ybWF0aW9uLT5ib3VuZHM7CiAg
ICAgcmV0dXJuIENHUmVjdEluc2V0KFt2aWV3IGNvbnZlcnRSZWN0OmVsZW1lbnRCb3VuZHMgZnJv
bVZpZXc6X3ZpZXddLCAtcHJlc2VudGF0aW9uRWxlbWVudFJlY3RQYWRkaW5nLCAtcHJlc2VudGF0
aW9uRWxlbWVudFJlY3RQYWRkaW5nKTsKIH0KIApAQCAtMTk5LDIzICsyMTIsMjEgQEAgLSAoQ0dS
ZWN0KWluaXRpYWxQcmVzZW50YXRpb25SZWN0SW5Ib3N0Vmlld0ZvclNoZWV0CiB7CiAgICAgVUlW
aWV3ICp2aWV3ID0gW3NlbGYgc3VwZXJ2aWV3Rm9yU2hlZXRdOwogICAgIGF1dG8gZGVsZWdhdGUg
PSBfZGVsZWdhdGUuZ2V0KCk7Ci0gICAgaWYgKCF2aWV3IHx8ICFkZWxlZ2F0ZSkKKyAgICBpZiAo
IXZpZXcgfHwgIWRlbGVnYXRlIHx8ICFfcG9zaXRpb25JbmZvcm1hdGlvbikKICAgICAgICAgcmV0
dXJuIENHUmVjdFplcm87CiAKLSAgICByZXR1cm4gW3NlbGYgX3ByZXNlbnRhdGlvblJlY3RGb3JT
aGVldEdpdmVuUG9pbnQ6W2RlbGVnYXRlIHBvc2l0aW9uSW5mb3JtYXRpb25Gb3JBY3Rpb25TaGVl
dEFzc2lzdGFudDpzZWxmXS5yZXF1ZXN0LnBvaW50IGluSG9zdFZpZXc6dmlld107CisgICAgcmV0
dXJuIFtzZWxmIF9wcmVzZW50YXRpb25SZWN0Rm9yU2hlZXRHaXZlblBvaW50Ol9wb3NpdGlvbklu
Zm9ybWF0aW9uLT5yZXF1ZXN0LnBvaW50IGluSG9zdFZpZXc6dmlld107CiB9CiAKIC0gKENHUmVj
dClwcmVzZW50YXRpb25SZWN0SW5Ib3N0Vmlld0ZvclNoZWV0CiB7CiAgICAgVUlWaWV3ICp2aWV3
ID0gW3NlbGYgc3VwZXJ2aWV3Rm9yU2hlZXRdOwogICAgIGF1dG8gZGVsZWdhdGUgPSBfZGVsZWdh
dGUuZ2V0KCk7Ci0gICAgaWYgKCF2aWV3IHx8ICFkZWxlZ2F0ZSkKKyAgICBpZiAoIXZpZXcgfHwg
IWRlbGVnYXRlIHx8ICFfcG9zaXRpb25JbmZvcm1hdGlvbikKICAgICAgICAgcmV0dXJuIENHUmVj
dFplcm87CiAKLSAgICBjb25zdCBhdXRvJiBwb3NpdGlvbkluZm9ybWF0aW9uID0gW2RlbGVnYXRl
IHBvc2l0aW9uSW5mb3JtYXRpb25Gb3JBY3Rpb25TaGVldEFzc2lzdGFudDpzZWxmXTsKLQotICAg
IENHUmVjdCBib3VuZGluZ1JlY3QgPSBwb3NpdGlvbkluZm9ybWF0aW9uLmJvdW5kczsKLSAgICBD
R1BvaW50IGZyb21Qb2ludCA9IHBvc2l0aW9uSW5mb3JtYXRpb24ucmVxdWVzdC5wb2ludDsKKyAg
ICBDR1JlY3QgYm91bmRpbmdSZWN0ID0gX3Bvc2l0aW9uSW5mb3JtYXRpb24tPmJvdW5kczsKKyAg
ICBDR1BvaW50IGZyb21Qb2ludCA9IF9wb3NpdGlvbkluZm9ybWF0aW9uLT5yZXF1ZXN0LnBvaW50
OwogCiAgICAgLy8gRklYTUU6IFdlIG11c3QgYWRqdXN0IG91ciBwcmVzZW50YXRpb24gcG9pbnQg
dG8gdGFrZSBpbnRvIGFjY291bnQgYSBjaGFuZ2UgaW4gZG9jdW1lbnQgc2NhbGUuCiAKQEAgLTI3
NSw5ICsyODYsMTAgQEAgLSAodm9pZClfY3JlYXRlU2hlZXRXaXRoRWxlbWVudEFjdGlvbnM6KE5T
QXJyYXkgKilhY3Rpb25zIHNob3dMaW5rVGl0bGU6KEJPT0wpc2gKICAgICBpZiAoIWRlbGVnYXRl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBjb25zdCBhdXRvJiBwb3NpdGlvbkluZm9ybWF0aW9u
ID0gW2RlbGVnYXRlIHBvc2l0aW9uSW5mb3JtYXRpb25Gb3JBY3Rpb25TaGVldEFzc2lzdGFudDpz
ZWxmXTsKKyAgICBpZiAoIV9wb3NpdGlvbkluZm9ybWF0aW9uKQorICAgICAgICByZXR1cm47CiAK
LSAgICBOU1VSTCAqdGFyZ2V0VVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6cG9zaXRpb25JbmZv
cm1hdGlvbi51cmxdOworICAgIE5TVVJMICp0YXJnZXRVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpfcG9zaXRpb25JbmZvcm1hdGlvbi0+dXJsXTsKICAgICBOU1N0cmluZyAqdXJsU2NoZW1lID0g
W3RhcmdldFVSTCBzY2hlbWVdOwogICAgIEJPT0wgaXNKYXZhU2NyaXB0VVJMID0gW3VybFNjaGVt
ZSBsZW5ndGhdICYmIFt1cmxTY2hlbWUgY2FzZUluc2Vuc2l0aXZlQ29tcGFyZTpAImphdmFzY3Jp
cHQiXSA9PSBOU09yZGVyZWRTYW1lOwogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY2hlY2sgaWYg
SmF2YXNjcmlwdCBpcyBlbmFibGVkIGluIHRoZSBwcmVmZXJlbmNlcy4KQEAgLTI5Niw3ICszMDgs
NyBAQCAtICh2b2lkKV9jcmVhdGVTaGVldFdpdGhFbGVtZW50QWN0aW9uczooTlNBcnJheSAqKWFj
dGlvbnMgc2hvd0xpbmtUaXRsZTooQk9PTClzaAogICAgICAgICAgICAgdGl0bGVJc1VSTCA9IFlF
UzsKICAgICAgICAgfQogICAgIH0gZWxzZQotICAgICAgICB0aXRsZVN0cmluZyA9IHBvc2l0aW9u
SW5mb3JtYXRpb24udGl0bGU7CisgICAgICAgIHRpdGxlU3RyaW5nID0gX3Bvc2l0aW9uSW5mb3Jt
YXRpb24tPnRpdGxlOwogCiAgICAgaWYgKFt0aXRsZVN0cmluZyBsZW5ndGhdKSB7CiAgICAgICAg
IFtfaW50ZXJhY3Rpb25TaGVldCBzZXRUaXRsZTp0aXRsZVN0cmluZ107CkBAIC0zMzMsMTIgKzM0
NSwxNCBAQCAtICh2b2lkKXNob3dJbWFnZVNoZWV0CiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgY29uc3QgYXV0byYgcG9zaXRpb25JbmZvcm1hdGlvbiA9IFtkZWxl
Z2F0ZSBwb3NpdGlvbkluZm9ybWF0aW9uRm9yQWN0aW9uU2hlZXRBc3Npc3RhbnQ6c2VsZl07Cisg
ICAgW3NlbGYgc3luY2hyb25vdXNseVJldHJpZXZlUG9zaXRpb25JbmZvcm1hdGlvbl07CisgICAg
aWYgKCFfcG9zaXRpb25JbmZvcm1hdGlvbikKKyAgICAgICAgcmV0dXJuOwogCiAgICAgdm9pZCAo
XnNob3dJbWFnZVNoZWV0V2l0aEFsdGVybmF0ZVVSTEJsb2NrKShOU1VSTCosIE5TRGljdGlvbmFy
eSAqdXNlckluZm8pID0gXihOU1VSTCAqYWx0ZXJuYXRlVVJMLCBOU0RpY3Rpb25hcnkgKnVzZXJJ
bmZvKSB7Ci0gICAgICAgIE5TVVJMICp0YXJnZXRVUkwgPSBbTlNVUkwgX3dlYl9VUkxXaXRoV1RG
U3RyaW5nOnBvc2l0aW9uSW5mb3JtYXRpb24udXJsXSA/OiBhbHRlcm5hdGVVUkw7Ci0gICAgICAg
IGF1dG8gZWxlbWVudEJvdW5kcyA9IHBvc2l0aW9uSW5mb3JtYXRpb24uYm91bmRzOwotICAgICAg
ICBhdXRvIGVsZW1lbnRJbmZvID0gYWRvcHROUyhbW19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvIGFs
bG9jXSBfaW5pdFdpdGhUeXBlOl9XS0FjdGl2YXRlZEVsZW1lbnRUeXBlSW1hZ2UgVVJMOnRhcmdl
dFVSTCBsb2NhdGlvbjpwb3NpdGlvbkluZm9ybWF0aW9uLnJlcXVlc3QucG9pbnQgdGl0bGU6cG9z
aXRpb25JbmZvcm1hdGlvbi50aXRsZSBJRDpwb3NpdGlvbkluZm9ybWF0aW9uLmlkQXR0cmlidXRl
IHJlY3Q6ZWxlbWVudEJvdW5kcyBpbWFnZTpwb3NpdGlvbkluZm9ybWF0aW9uLmltYWdlLmdldCgp
IHVzZXJJbmZvOnVzZXJJbmZvXSk7CisgICAgICAgIE5TVVJMICp0YXJnZXRVUkwgPSBbTlNVUkwg
X3dlYl9VUkxXaXRoV1RGU3RyaW5nOl9wb3NpdGlvbkluZm9ybWF0aW9uLT51cmxdID86IGFsdGVy
bmF0ZVVSTDsKKyAgICAgICAgYXV0byBlbGVtZW50Qm91bmRzID0gX3Bvc2l0aW9uSW5mb3JtYXRp
b24tPmJvdW5kczsKKyAgICAgICAgYXV0byBlbGVtZW50SW5mbyA9IGFkb3B0TlMoW1tfV0tBY3Rp
dmF0ZWRFbGVtZW50SW5mbyBhbGxvY10gX2luaXRXaXRoVHlwZTpfV0tBY3RpdmF0ZWRFbGVtZW50
VHlwZUltYWdlIFVSTDp0YXJnZXRVUkwgbG9jYXRpb246X3Bvc2l0aW9uSW5mb3JtYXRpb24tPnJl
cXVlc3QucG9pbnQgdGl0bGU6X3Bvc2l0aW9uSW5mb3JtYXRpb24tPnRpdGxlIElEOl9wb3NpdGlv
bkluZm9ybWF0aW9uLT5pZEF0dHJpYnV0ZSByZWN0OmVsZW1lbnRCb3VuZHMgaW1hZ2U6X3Bvc2l0
aW9uSW5mb3JtYXRpb24tPmltYWdlLmdldCgpIHVzZXJJbmZvOnVzZXJJbmZvXSk7CiAgICAgICAg
IGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihhY3Rpb25TaGVldEFz
c2lzdGFudDpzaG93Q3VzdG9tU2hlZXRGb3JFbGVtZW50OildICYmIFtkZWxlZ2F0ZSBhY3Rpb25T
aGVldEFzc2lzdGFudDpzZWxmIHNob3dDdXN0b21TaGVldEZvckVsZW1lbnQ6ZWxlbWVudEluZm8u
Z2V0KCldKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBhdXRvIGRlZmF1bHRBY3Rpb25z
ID0gW3NlbGYgZGVmYXVsdEFjdGlvbnNGb3JJbWFnZVNoZWV0OmVsZW1lbnRJbmZvLmdldCgpXTsK
QEAgLTM2Myw4ICszNzcsOCBAQCAtICh2b2lkKXNob3dJbWFnZVNoZWV0CiAgICAgICAgICAgICBb
c2VsZiBjbGVhbnVwU2hlZXRdOwogICAgIH07CiAKLSAgICBpZiAocG9zaXRpb25JbmZvcm1hdGlv
bi51cmwuaXNFbXB0eSgpICYmIHBvc2l0aW9uSW5mb3JtYXRpb24uaW1hZ2UgJiYgW2RlbGVnYXRl
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYWN0aW9uU2hlZXRBc3Npc3RhbnQ6Z2V0QWx0
ZXJuYXRlVVJMRm9ySW1hZ2U6Y29tcGxldGlvbjopXSkgewotICAgICAgICBSZXRhaW5QdHI8VUlJ
bWFnZT4gdWlJbWFnZSA9IGFkb3B0TlMoW1tVSUltYWdlIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6
cG9zaXRpb25JbmZvcm1hdGlvbi5pbWFnZS0+bWFrZUNHSW1hZ2VDb3B5KCkuZ2V0KCldKTsKKyAg
ICBpZiAoX3Bvc2l0aW9uSW5mb3JtYXRpb24tPnVybC5pc0VtcHR5KCkgJiYgX3Bvc2l0aW9uSW5m
b3JtYXRpb24tPmltYWdlICYmIFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KGFjdGlvblNoZWV0QXNzaXN0YW50OmdldEFsdGVybmF0ZVVSTEZvckltYWdlOmNvbXBsZXRpb246
KV0pIHsKKyAgICAgICAgUmV0YWluUHRyPFVJSW1hZ2U+IHVpSW1hZ2UgPSBhZG9wdE5TKFtbVUlJ
bWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOl9wb3NpdGlvbkluZm9ybWF0aW9uLT5pbWFnZS0+
bWFrZUNHSW1hZ2VDb3B5KCkuZ2V0KCldKTsKIAogICAgICAgICBfaGFzUGVuZGluZ0FjdGlvblNo
ZWV0ID0gWUVTOwogICAgICAgICBSZXRhaW5QdHI8V0tBY3Rpb25TaGVldEFzc2lzdGFudD4gcmV0
YWluZWRTZWxmKHNlbGYpOwpAQCAtNDM0LDkgKzQ0OCwxMCBAQCAtIChSZXRhaW5QdHI8TlNBcnJh
eT4pZGVmYXVsdEFjdGlvbnNGb3JMaW5rU2hlZXQ6KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICop
ZWxlbQogICAgIGlmICghZGVsZWdhdGUpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBjb25z
dCBhdXRvJiBwb3NpdGlvbkluZm9ybWF0aW9uID0gW2RlbGVnYXRlIHBvc2l0aW9uSW5mb3JtYXRp
b25Gb3JBY3Rpb25TaGVldEFzc2lzdGFudDpzZWxmXTsKKyAgICBpZiAoIV9wb3NpdGlvbkluZm9y
bWF0aW9uKQorICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgTlNVUkwgKnRhcmdldFVSTCA9IFtO
U1VSTCBVUkxXaXRoU3RyaW5nOnBvc2l0aW9uSW5mb3JtYXRpb24udXJsXTsKKyAgICBOU1VSTCAq
dGFyZ2V0VVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6X3Bvc2l0aW9uSW5mb3JtYXRpb24tPnVy
bF07CiAgICAgaWYgKCF0YXJnZXRVUkwpCiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTQ5NSwx
NSArNTEwLDE3IEBAIC0gKHZvaWQpc2hvd0xpbmtTaGVldAogICAgICAgICByZXR1cm47CiAKICAg
ICBfbmVlZHNMaW5rSW5kaWNhdG9yID0gWUVTOwotICAgIGNvbnN0IGF1dG8mIHBvc2l0aW9uSW5m
b3JtYXRpb24gPSBbZGVsZWdhdGUgcG9zaXRpb25JbmZvcm1hdGlvbkZvckFjdGlvblNoZWV0QXNz
aXN0YW50OnNlbGZdOworICAgIFtzZWxmIHN5bmNocm9ub3VzbHlSZXRyaWV2ZVBvc2l0aW9uSW5m
b3JtYXRpb25dOworICAgIGlmICghX3Bvc2l0aW9uSW5mb3JtYXRpb24pCisgICAgICAgIHJldHVy
bjsKIAotICAgIE5TVVJMICp0YXJnZXRVUkwgPSBbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5n
OnBvc2l0aW9uSW5mb3JtYXRpb24udXJsXTsKKyAgICBOU1VSTCAqdGFyZ2V0VVJMID0gW05TVVJM
IF93ZWJfVVJMV2l0aFdURlN0cmluZzpfcG9zaXRpb25JbmZvcm1hdGlvbi0+dXJsXTsKICAgICBp
ZiAoIXRhcmdldFVSTCkgewogICAgICAgICBfbmVlZHNMaW5rSW5kaWNhdG9yID0gTk87CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGVsZW1lbnRJbmZvID0gYWRvcHROUyhbW19X
S0FjdGl2YXRlZEVsZW1lbnRJbmZvIGFsbG9jXSBfaW5pdFdpdGhUeXBlOl9XS0FjdGl2YXRlZEVs
ZW1lbnRUeXBlTGluayBVUkw6dGFyZ2V0VVJMIGxvY2F0aW9uOnBvc2l0aW9uSW5mb3JtYXRpb24u
cmVxdWVzdC5wb2ludCB0aXRsZTpwb3NpdGlvbkluZm9ybWF0aW9uLnRpdGxlIElEOnBvc2l0aW9u
SW5mb3JtYXRpb24uaWRBdHRyaWJ1dGUgcmVjdDpwb3NpdGlvbkluZm9ybWF0aW9uLmJvdW5kcyBp
bWFnZTpwb3NpdGlvbkluZm9ybWF0aW9uLmltYWdlLmdldCgpXSk7CisgICAgYXV0byBlbGVtZW50
SW5mbyA9IGFkb3B0TlMoW1tfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyBhbGxvY10gX2luaXRXaXRo
VHlwZTpfV0tBY3RpdmF0ZWRFbGVtZW50VHlwZUxpbmsgVVJMOnRhcmdldFVSTCBsb2NhdGlvbjpf
cG9zaXRpb25JbmZvcm1hdGlvbi0+cmVxdWVzdC5wb2ludCB0aXRsZTpfcG9zaXRpb25JbmZvcm1h
dGlvbi0+dGl0bGUgSUQ6X3Bvc2l0aW9uSW5mb3JtYXRpb24tPmlkQXR0cmlidXRlIHJlY3Q6X3Bv
c2l0aW9uSW5mb3JtYXRpb24tPmJvdW5kcyBpbWFnZTpfcG9zaXRpb25JbmZvcm1hdGlvbi0+aW1h
Z2UuZ2V0KCldKTsKICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoYWN0aW9uU2hlZXRBc3Npc3RhbnQ6c2hvd0N1c3RvbVNoZWV0Rm9yRWxlbWVudDopXSAmJiBb
ZGVsZWdhdGUgYWN0aW9uU2hlZXRBc3Npc3RhbnQ6c2VsZiBzaG93Q3VzdG9tU2hlZXRGb3JFbGVt
ZW50OmVsZW1lbnRJbmZvLmdldCgpXSkgewogICAgICAgICBfbmVlZHNMaW5rSW5kaWNhdG9yID0g
Tk87CiAgICAgICAgIHJldHVybjsKQEAgLTUyNiw3ICs1NDMsNyBAQCAtICh2b2lkKXNob3dMaW5r
U2hlZXQKIAogICAgIF9lbGVtZW50SW5mbyA9IFdURk1vdmUoZWxlbWVudEluZm8pOwogCi0gICAg
aWYgKCFbX2ludGVyYWN0aW9uU2hlZXQgcHJlc2VudFNoZWV0OltzZWxmIF9zaG91bGRQcmVzZW50
QXRUb3VjaExvY2F0aW9uRm9yRWxlbWVudFJlY3Q6cG9zaXRpb25JbmZvcm1hdGlvbi5ib3VuZHNd
ID8gV0tBY3Rpb25TaGVldFByZXNlbnRBdFRvdWNoTG9jYXRpb24gOiBXS0FjdGlvblNoZWV0UHJl
c2VudEF0Q2xvc2VzdEluZGljYXRvclJlY3RdKQorICAgIGlmICghW19pbnRlcmFjdGlvblNoZWV0
IHByZXNlbnRTaGVldDpbc2VsZiBfc2hvdWxkUHJlc2VudEF0VG91Y2hMb2NhdGlvbkZvckVsZW1l
bnRSZWN0Ol9wb3NpdGlvbkluZm9ybWF0aW9uLT5ib3VuZHNdID8gV0tBY3Rpb25TaGVldFByZXNl
bnRBdFRvdWNoTG9jYXRpb24gOiBXS0FjdGlvblNoZWV0UHJlc2VudEF0Q2xvc2VzdEluZGljYXRv
clJlY3RdKQogICAgICAgICBbc2VsZiBjbGVhbnVwU2hlZXRdOwogfQogCkBAIC01MzcsOCArNTU0
LDExIEBAIC0gKHZvaWQpc2hvd0RhdGFEZXRlY3RvcnNTaGVldAogICAgIGlmICghZGVsZWdhdGUp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbnN0IFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb24mIHBvc2l0aW9uSW5mb3JtYXRpb24gPSBbZGVsZWdhdGUgcG9zaXRpb25J
bmZvcm1hdGlvbkZvckFjdGlvblNoZWV0QXNzaXN0YW50OnNlbGZdOwotICAgIE5TVVJMICp0YXJn
ZXRVUkwgPSBbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOnBvc2l0aW9uSW5mb3JtYXRpb24u
dXJsXTsKKyAgICBbc2VsZiBzeW5jaHJvbm91c2x5UmV0cmlldmVQb3NpdGlvbkluZm9ybWF0aW9u
XTsKKyAgICBpZiAoIV9wb3NpdGlvbkluZm9ybWF0aW9uKQorICAgICAgICByZXR1cm47CisKKyAg
ICBOU1VSTCAqdGFyZ2V0VVJMID0gW05TVVJMIF93ZWJfVVJMV2l0aFdURlN0cmluZzpfcG9zaXRp
b25JbmZvcm1hdGlvbi0+dXJsXTsKICAgICBpZiAoIXRhcmdldFVSTCkKICAgICAgICAgcmV0dXJu
OwogCkBAIC01NTQsMTcgKzU3NCwxNyBAQCAtICh2b2lkKXNob3dEYXRhRGV0ZWN0b3JzU2hlZXQK
ICAgICAgICAgY29udGV4dCA9IFtkZWxlZ2F0ZSBkYXRhRGV0ZWN0aW9uQ29udGV4dEZvckFjdGlv
blNoZWV0QXNzaXN0YW50OnNlbGZdOwogICAgIGlmIChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihzZWxlY3RlZFRleHRGb3JBY3Rpb25TaGVldEFzc2lzdGFudDopXSkKICAg
ICAgICAgdGV4dEF0U2VsZWN0aW9uID0gW2RlbGVnYXRlIHNlbGVjdGVkVGV4dEZvckFjdGlvblNo
ZWV0QXNzaXN0YW50OnNlbGZdOwotICAgIGlmICghcG9zaXRpb25JbmZvcm1hdGlvbi50ZXh0QmVm
b3JlLmlzRW1wdHkoKSB8fCAhcG9zaXRpb25JbmZvcm1hdGlvbi50ZXh0QWZ0ZXIuaXNFbXB0eSgp
KSB7CisgICAgaWYgKCFfcG9zaXRpb25JbmZvcm1hdGlvbi0+dGV4dEJlZm9yZS5pc0VtcHR5KCkg
fHwgIV9wb3NpdGlvbkluZm9ybWF0aW9uLT50ZXh0QWZ0ZXIuaXNFbXB0eSgpKSB7CiAgICAgICAg
IGV4dGVuZGVkQ29udGV4dCA9IGFkb3B0TlMoW0B7Ci0gICAgICAgICAgICBnZXRrRGF0YURldGVj
dG9yc0xlYWRpbmdUZXh0KCkgOiBwb3NpdGlvbkluZm9ybWF0aW9uLnRleHRCZWZvcmUsCi0gICAg
ICAgICAgICBnZXRrRGF0YURldGVjdG9yc1RyYWlsaW5nVGV4dCgpIDogcG9zaXRpb25JbmZvcm1h
dGlvbi50ZXh0QWZ0ZXIsCisgICAgICAgICAgICBnZXRrRGF0YURldGVjdG9yc0xlYWRpbmdUZXh0
KCkgOiBfcG9zaXRpb25JbmZvcm1hdGlvbi0+dGV4dEJlZm9yZSwKKyAgICAgICAgICAgIGdldGtE
YXRhRGV0ZWN0b3JzVHJhaWxpbmdUZXh0KCkgOiBfcG9zaXRpb25JbmZvcm1hdGlvbi0+dGV4dEFm
dGVyLAogICAgICAgICB9IG11dGFibGVDb3B5XSk7CiAgICAgICAgIAogICAgICAgICBpZiAoY29u
dGV4dCkKICAgICAgICAgICAgIFtleHRlbmRlZENvbnRleHQgYWRkRW50cmllc0Zyb21EaWN0aW9u
YXJ5OmNvbnRleHRdOwogICAgICAgICBjb250ZXh0ID0gZXh0ZW5kZWRDb250ZXh0LmdldCgpOwog
ICAgIH0KLSAgICBOU0FycmF5ICpkYXRhRGV0ZWN0b3JzQWN0aW9ucyA9IFtjb250cm9sbGVyIGFj
dGlvbnNGb3JVUkw6dGFyZ2V0VVJMIGlkZW50aWZpZXI6cG9zaXRpb25JbmZvcm1hdGlvbi5kYXRh
RGV0ZWN0b3JJZGVudGlmaWVyIHNlbGVjdGVkVGV4dDp0ZXh0QXRTZWxlY3Rpb24gcmVzdWx0czpw
b3NpdGlvbkluZm9ybWF0aW9uLmRhdGFEZXRlY3RvclJlc3VsdHMuZ2V0KCkgY29udGV4dDpjb250
ZXh0XTsKKyAgICBOU0FycmF5ICpkYXRhRGV0ZWN0b3JzQWN0aW9ucyA9IFtjb250cm9sbGVyIGFj
dGlvbnNGb3JVUkw6dGFyZ2V0VVJMIGlkZW50aWZpZXI6X3Bvc2l0aW9uSW5mb3JtYXRpb24tPmRh
dGFEZXRlY3RvcklkZW50aWZpZXIgc2VsZWN0ZWRUZXh0OnRleHRBdFNlbGVjdGlvbiByZXN1bHRz
Ol9wb3NpdGlvbkluZm9ybWF0aW9uLT5kYXRhRGV0ZWN0b3JSZXN1bHRzLmdldCgpIGNvbnRleHQ6
Y29udGV4dF07CiAgICAgaWYgKFtkYXRhRGV0ZWN0b3JzQWN0aW9ucyBjb3VudF0gPT0gMCkKICAg
ICAgICAgcmV0dXJuOwogCkBAIC02MDQsNiArNjI0LDcgQEAgLSAodm9pZCljbGVhbnVwU2hlZXQK
ICAgICBbX2ludGVyYWN0aW9uU2hlZXQgc2V0U2hlZXREZWxlZ2F0ZTpuaWxdOwogICAgIF9pbnRl
cmFjdGlvblNoZWV0ID0gbmlsOwogICAgIF9lbGVtZW50SW5mbyA9IG5pbDsKKyAgICBfcG9zaXRp
b25JbmZvcm1hdGlvbiA9IHN0ZDo6bnVsbG9wdDsKICAgICBfbmVlZHNMaW5rSW5kaWNhdG9yID0g
Tk87CiAgICAgX2lzUHJlc2VudGluZ0REVXNlckludGVyZmFjZSA9IE5POwogICAgIF9oYXNQZW5k
aW5nQWN0aW9uU2hlZXQgPSBOTzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IGZjOTRlNTI2YTMwNTA1MmRj
NDhjZGU4NTA3MTk3OWE1NTc0Y2M5N2UuLjE3OGNjOGI4OTRjNzUyODk2Njg2YzY2MmM3Mjc2YzVk
ZWQ5NTAxMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtMzAzLDcgKzMwMyw3IEBAIEZPUl9FQUNIX1dL
Q09OVEVOVFZJRVdfQUNUSU9OKERFQ0xBUkVfV0tDT05URU5UVklFV19BQ1RJT05fRk9SX1dFQl9W
SUVXKQogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFdlYktpdDo6SW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb24gY3VycmVudFBvc2l0aW9uSW5mb3JtYXRpb247CiAtICh2
b2lkKWRvQWZ0ZXJQb3NpdGlvbkluZm9ybWF0aW9uVXBkYXRlOih2b2lkICheKShXZWJLaXQ6Oklu
dGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uKSlhY3Rpb24gZm9yUmVxdWVzdDooV2ViS2l0
OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdClyZXF1ZXN0OwotLSAodm9pZCllbnN1cmVQ
b3NpdGlvbkluZm9ybWF0aW9uSXNVcFRvRGF0ZTooV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0
aW9uUmVxdWVzdClyZXF1ZXN0OworLSAoQk9PTCllbnN1cmVQb3NpdGlvbkluZm9ybWF0aW9uSXNV
cFRvRGF0ZTooV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdClyZXF1ZXN0Owog
CiAjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCiAtICh2b2lkKV9kaWRQZXJmb3JtRGF0YUlu
dGVyYWN0aW9uQ29udHJvbGxlck9wZXJhdGlvbjooQk9PTCloYW5kbGVkOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bQppbmRleCBiNjRhYjM1YzkwOTlhNjBiZmI0NThmMmQzZTU2M2Q2MmFhOGU1NDk3Li4yZDBjYzA5
OTg0OTkyZTI2ZGYyNjI4ZDgzYWYwMjY0ODU1ZTE1M2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAt
MTMwOCwyMSArMTMwOCwyNSBAQCAtICh2b2lkKWRvQWZ0ZXJQb3NpdGlvbkluZm9ybWF0aW9uVXBk
YXRlOih2b2lkICheKShJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdAogICAgICAgICBbc2Vs
ZiByZXF1ZXN0QXN5bmNocm9ub3VzUG9zaXRpb25JbmZvcm1hdGlvblVwZGF0ZTpyZXF1ZXN0XTsK
IH0KIAotLSAodm9pZCllbnN1cmVQb3NpdGlvbkluZm9ybWF0aW9uSXNVcFRvRGF0ZTooV2ViS2l0
OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdClyZXF1ZXN0CistIChCT09MKWVuc3VyZVBv
c2l0aW9uSW5mb3JtYXRpb25Jc1VwVG9EYXRlOihXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRp
b25SZXF1ZXN0KXJlcXVlc3QKIHsKICAgICBpZiAoW3NlbGYgX2N1cnJlbnRQb3NpdGlvbkluZm9y
bWF0aW9uSXNWYWxpZEZvclJlcXVlc3Q6cmVxdWVzdF0pCi0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIFlFUzsKKworICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBfcGFnZS0+cHJvY2Vzcygp
LmNvbm5lY3Rpb24oKTsKKyAgICBpZiAoIWNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiBOTzsK
IAogICAgIGlmIChbc2VsZiBfaGFzVmFsaWRPdXRzdGFuZGluZ1Bvc2l0aW9uSW5mb3JtYXRpb25S
ZXF1ZXN0OnJlcXVlc3RdKSB7Ci0gICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gX3BhZ2Ut
PnByb2Nlc3MoKS5jb25uZWN0aW9uKCkpIHsKLSAgICAgICAgICAgIGNvbm5lY3Rpb24tPndhaXRG
b3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2Vp
dmVQb3NpdGlvbkluZm9ybWF0aW9uPihfcGFnZS0+cGFnZUlEKCksIFNlY29uZHM6OmluZmluaXR5
KCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIHJldHVybiBjb25u
ZWN0aW9uLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEaWRSZWNlaXZlUG9zaXRpb25JbmZvcm1hdGlvbj4oX3BhZ2UtPnBhZ2VJRCgpLCBTZWNv
bmRzOjppbmZpbml0eSgpLCBJUEM6OldhaXRGb3JPcHRpb246OkludGVycnVwdFdhaXRpbmdJZlN5
bmNNZXNzYWdlQXJyaXZlcyk7CiAgICAgfQogCi0gICAgX3BhZ2UtPmdldFBvc2l0aW9uSW5mb3Jt
YXRpb24ocmVxdWVzdCwgX3Bvc2l0aW9uSW5mb3JtYXRpb24pOworICAgIF9wYWdlLT5wcm9jZXNz
KCkuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFBvc2l0aW9uSW5mb3JtYXRpb24ocmVx
dWVzdCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQb3NpdGlvbkluZm9ybWF0aW9uOjpSZXBseShf
cG9zaXRpb25JbmZvcm1hdGlvbiksIF9wYWdlLT5wYWdlSUQoKSk7CisKICAgICBfaGFzVmFsaWRQ
b3NpdGlvbkluZm9ybWF0aW9uID0gWUVTOwogICAgIFtzZWxmIF9pbnZva2VBbmRSZW1vdmVQZW5k
aW5nSGFuZGxlcnNWYWxpZEZvckN1cnJlbnRQb3NpdGlvbkluZm9ybWF0aW9uXTsKKworICAgIHJl
dHVybiBZRVM7CiB9CiAKIC0gKHZvaWQpcmVxdWVzdEFzeW5jaHJvbm91c1Bvc2l0aW9uSW5mb3Jt
YXRpb25VcGRhdGU6KFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QpcmVxdWVz
dApAQCAtMTQxMCw3ICsxNDE0LDggQEAgLSAoQk9PTClnZXN0dXJlUmVjb2duaXplclNob3VsZEJl
Z2luOihVSUdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKICAgICAgICAgaWYg
KF90ZXh0U2VsZWN0aW9uQXNzaXN0YW50KSB7CiAgICAgICAgICAgICAvLyBSZXF1ZXN0IGluZm9y
bWF0aW9uIGFib3V0IHRoZSBwb3NpdGlvbiB3aXRoIHN5bmMgbWVzc2FnZS4KICAgICAgICAgICAg
IC8vIElmIHRoZSBhc3Npc3RlZCBub2RlIGlzIHRoZSBzYW1lLCBwcmV2ZW50IHRoZSBnZXN0dXJl
LgotICAgICAgICAgICAgW3NlbGYgZW5zdXJlUG9zaXRpb25JbmZvcm1hdGlvbklzVXBUb0RhdGU6
SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3Qocm91bmRlZEludFBvaW50KHBvaW50KSldOwor
ICAgICAgICAgICAgaWYgKCFbc2VsZiBlbnN1cmVQb3NpdGlvbkluZm9ybWF0aW9uSXNVcFRvRGF0
ZTpJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdChyb3VuZGVkSW50UG9pbnQocG9pbnQpKV0p
CisgICAgICAgICAgICAgICAgcmV0dXJuIE5POwogICAgICAgICAgICAgaWYgKF9wb3NpdGlvbklu
Zm9ybWF0aW9uLm5vZGVBdFBvc2l0aW9uSXNBc3Npc3RlZE5vZGUpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIE5POwogICAgICAgICB9CkBAIC0xNDQ4LDcgKzE0NTMsOCBAQCAtIChCT09MKWdlc3R1
cmVSZWNvZ25pemVyU2hvdWxkQmVnaW46KFVJR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVj
b2duaXplcgogICAgICAgICAvLyB0byBnZXN0dXJlUmVjb2duaXplclNob3VsZEJlZ2luLgogICAg
ICAgICAvLyBGb3JjZSBhIHN5bmMgY2FsbCBpZiBub3QgcmVhZHkgeWV0LgogICAgICAgICBJbnRl
cmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCByZXF1ZXN0KHJvdW5kZWRJbnRQb2ludChwb2ludCkp
OwotICAgICAgICBbc2VsZiBlbnN1cmVQb3NpdGlvbkluZm9ybWF0aW9uSXNVcFRvRGF0ZTpyZXF1
ZXN0XTsKKyAgICAgICAgaWYgKCFbc2VsZiBlbnN1cmVQb3NpdGlvbkluZm9ybWF0aW9uSXNVcFRv
RGF0ZTpyZXF1ZXN0XSkKKyAgICAgICAgICAgIHJldHVybiBOTzsKIAogICAgICAgICBpZiAoX3Rl
eHRTZWxlY3Rpb25Bc3Npc3RhbnQpIHsKICAgICAgICAgICAgIC8vIFByZXZlbnQgdGhlIGdlc3R1
cmUgaWYgaXQgaXMgdGhlIHNhbWUgbm9kZS4KQEAgLTE0ODksNyArMTQ5NSw4IEBAIC0gKEJPT0wp
aGFzU2VsZWN0YWJsZVBvc2l0aW9uQXRQb2ludDooQ0dQb2ludClwb2ludAogICAgICAgICByZXR1
cm4gTk87CiAKICAgICBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCByZXF1ZXN0KHJvdW5k
ZWRJbnRQb2ludChwb2ludCkpOwotICAgIFtzZWxmIGVuc3VyZVBvc2l0aW9uSW5mb3JtYXRpb25J
c1VwVG9EYXRlOnJlcXVlc3RdOworICAgIGlmICghW3NlbGYgZW5zdXJlUG9zaXRpb25JbmZvcm1h
dGlvbklzVXBUb0RhdGU6cmVxdWVzdF0pCisgICAgICAgIHJldHVybiBOTzsKIAogI2lmIEVOQUJM
RShEQVRBX0lOVEVSQUNUSU9OKQogICAgIGlmIChfcG9zaXRpb25JbmZvcm1hdGlvbi5oYXNTZWxl
Y3Rpb25BdFBvc2l0aW9uKSB7CkBAIC0xNTA1LDcgKzE1MTIsOCBAQCAtIChCT09MKWhhc1NlbGVj
dGFibGVQb3NpdGlvbkF0UG9pbnQ6KENHUG9pbnQpcG9pbnQKIC0gKEJPT0wpcG9pbnRJc05lYXJN
YXJrZWRUZXh0OihDR1BvaW50KXBvaW50CiB7CiAgICAgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJl
cXVlc3QgcmVxdWVzdChyb3VuZGVkSW50UG9pbnQocG9pbnQpKTsKLSAgICBbc2VsZiBlbnN1cmVQ
b3NpdGlvbkluZm9ybWF0aW9uSXNVcFRvRGF0ZTpyZXF1ZXN0XTsKKyAgICBpZiAoIVtzZWxmIGVu
c3VyZVBvc2l0aW9uSW5mb3JtYXRpb25Jc1VwVG9EYXRlOnJlcXVlc3RdKQorICAgICAgICByZXR1
cm4gTk87CiAgICAgcmV0dXJuIF9wb3NpdGlvbkluZm9ybWF0aW9uLmlzTmVhck1hcmtlZFRleHQ7
CiB9CiAKQEAgLTE1MTgsNyArMTUyNiw4IEBAIC0gKEJPT0wpcG9pbnRJc0luQXNzaXN0ZWROb2Rl
OihDR1BvaW50KXBvaW50CiAtIChCT09MKXRleHRJbnRlcmFjdGlvbkdlc3R1cmU6KFVJV0tHZXN0
dXJlVHlwZSlnZXN0dXJlIHNob3VsZEJlZ2luQXRQb2ludDooQ0dQb2ludClwb2ludAogewogICAg
IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHJlcXVlc3Qocm91bmRlZEludFBvaW50KHBv
aW50KSk7Ci0gICAgW3NlbGYgZW5zdXJlUG9zaXRpb25JbmZvcm1hdGlvbklzVXBUb0RhdGU6cmVx
dWVzdF07CisgICAgaWYgKCFbc2VsZiBlbnN1cmVQb3NpdGlvbkluZm9ybWF0aW9uSXNVcFRvRGF0
ZTpyZXF1ZXN0XSkKKyAgICAgICAgcmV0dXJuIE5POwogCiAjaWYgRU5BQkxFKERBVEFfSU5URVJB
Q1RJT04pCiAgICAgaWYgKF9wb3NpdGlvbkluZm9ybWF0aW9uLmhhc1NlbGVjdGlvbkF0UG9zaXRp
b24gJiYgZ2VzdHVyZSA9PSBVSVdLR2VzdHVyZUxvdXBlKSB7CkBAIC00MDQ5LDEzICs0MDU4LDEz
IEBAIC0gKEJPT0wpaXNBbnlUb3VjaE92ZXJBY3RpdmVBcmVhOihOU1NldCAqKXRvdWNoZXMKIAog
I3ByYWdtYSBtYXJrIC0gSW1wbGVtZW50YXRpb24gb2YgV0tBY3Rpb25TaGVldEFzc2lzdGFudERl
bGVnYXRlLgogCi0tIChjb25zdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0
aW9uJilwb3NpdGlvbkluZm9ybWF0aW9uRm9yQWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9u
U2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQKKy0gKHN0ZDo6b3B0aW9uYWw8Y29uc3QgV2ViS2l0
OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiY+KXBvc2l0aW9uSW5mb3JtYXRpb25G
b3JBY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFu
dAogewotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBtb3JlIGFzeW5jaHJvbm91cywgc2lu
Y2Ugd2UgY29udHJvbCB0aGUgcHJlc2VudGF0aW9uIG9mIHRoZSBhY3Rpb24gc2hlZXQuCiAgICAg
SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QgcmVxdWVzdChfcG9zaXRpb25JbmZvcm1hdGlv
bi5yZXF1ZXN0LnBvaW50KTsKICAgICByZXF1ZXN0LmluY2x1ZGVTbmFwc2hvdCA9IHRydWU7CiAg
ICAgcmVxdWVzdC5pbmNsdWRlTGlua0luZGljYXRvciA9IGFzc2lzdGFudC5uZWVkc0xpbmtJbmRp
Y2F0b3I7Ci0gICAgW3NlbGYgZW5zdXJlUG9zaXRpb25JbmZvcm1hdGlvbklzVXBUb0RhdGU6cmVx
dWVzdF07CisgICAgaWYgKCFbc2VsZiBlbnN1cmVQb3NpdGlvbkluZm9ybWF0aW9uSXNVcFRvRGF0
ZTpyZXF1ZXN0XSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBf
cG9zaXRpb25JbmZvcm1hdGlvbjsKIH0KQEAgLTQyMTYsNyArNDIyNSw4IEBAIC0gKEJPT0wpX2lu
dGVyYWN0aW9uU2hvdWxkQmVnaW5Gcm9tUHJldmlld0l0ZW1Db250cm9sbGVyOihVSVByZXZpZXdJ
dGVtQ29udHJvbGxlCiAgICAgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QgcmVxdWVzdChy
b3VuZGVkSW50UG9pbnQocG9zaXRpb24pKTsKICAgICByZXF1ZXN0LmluY2x1ZGVTbmFwc2hvdCA9
IHRydWU7CiAgICAgcmVxdWVzdC5pbmNsdWRlTGlua0luZGljYXRvciA9IHRydWU7Ci0gICAgW3Nl
bGYgZW5zdXJlUG9zaXRpb25JbmZvcm1hdGlvbklzVXBUb0RhdGU6cmVxdWVzdF07CisgICAgaWYg
KCFbc2VsZiBlbnN1cmVQb3NpdGlvbkluZm9ybWF0aW9uSXNVcFRvRGF0ZTpyZXF1ZXN0XSkKKyAg
ICAgICAgcmV0dXJuIE5POwogICAgIGlmICghX3Bvc2l0aW9uSW5mb3JtYXRpb24uaXNMaW5rICYm
ICFfcG9zaXRpb25JbmZvcm1hdGlvbi5pc0ltYWdlICYmICFfcG9zaXRpb25JbmZvcm1hdGlvbi5p
c0F0dGFjaG1lbnQpCiAgICAgICAgIHJldHVybiBOTzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1dLUERGVmlldy5tbQppbmRleCBkNTU2ZmFlYzNiM2UwNTI4Y2FmNDUxYmUzNTk3YTg3
Y2NiNzMzYWM1Li5jMGQ0MDRiOTBkMzA0ZTdmNWY4ZmVjMjY3MzZkMmNjOGFjNGRhNTg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQpAQCAtNzA2LDcgKzcwNiw3
IEBAIC0gKHZvaWQpYW5ub3RhdGlvbjooVUlQREZBbm5vdGF0aW9uICopYW5ub3RhdGlvbiBpc0Jl
aW5nUHJlc3NlZEF0UG9pbnQ6KENHUG9pbnQpCiAKICNwcmFnbWEgbWFyayBXS0FjdGlvblNoZWV0
QXNzaXN0YW50RGVsZWdhdGUKIAotLSAoY29uc3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0
aW9uQXRQb3NpdGlvbiYpcG9zaXRpb25JbmZvcm1hdGlvbkZvckFjdGlvblNoZWV0QXNzaXN0YW50
OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50CistIChzdGQ6Om9wdGlvbmFsPGNv
bnN0IFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mPilwb3NpdGlvbklu
Zm9ybWF0aW9uRm9yQWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQg
Kilhc3Npc3RhbnQKIHsKICAgICByZXR1cm4gX3Bvc2l0aW9uSW5mb3JtYXRpb247CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IGE1
YzZmYzQzOGI4NGYzMThlY2EzODc5YjFlNWRiMzQ2N2Y1NmM5NGYuLmUwYTk0OTFmNDliNDBhNWJh
NjAyYTExYmY3MjA5ZDFhMzAwMzA5M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC02MzUsMTEgKzYzNSw2IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRSZWNlaXZlUG9zaXRpb25JbmZvcm1hdGlvbihjb25zdCBJbnRlcmFjdGlvbklu
Zm9ybWF0aW9uQXRQCiAgICAgbV9wYWdlQ2xpZW50LnBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFu
Z2UoaW5mbyk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpnZXRQb3NpdGlvbkluZm9ybWF0aW9u
KGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0JiByZXF1ZXN0LCBJbnRlcmFjdGlv
bkluZm9ybWF0aW9uQXRQb3NpdGlvbiYgaW5mbykKLXsKLSAgICBtX3Byb2Nlc3MtPnNlbmRTeW5j
KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQb3NpdGlvbkluZm9ybWF0aW9uKHJlcXVlc3QpLCBNZXNz
YWdlczo6V2ViUGFnZTo6R2V0UG9zaXRpb25JbmZvcm1hdGlvbjo6UmVwbHkoaW5mbyksIG1fcGFn
ZUlEKTsKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RQb3NpdGlvbkluZm9ybWF0aW9u
KGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdFBvc2l0aW9uSW5mb3JtYXRp
b24ocmVxdWVzdCksIG1fcGFnZUlEKTsK
</data>
<flag name="review"
          id="334244"
          type_id="1"
          status="+"
          setter="wenson_hsieh"
    />
          </attachment>
      

    </bug>

</bugzilla>