<?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>45560</bug_id>
          
          <creation_ts>2010-09-10 12:46:28 -0700</creation_ts>
          <short_desc>Expose an entry point to Chrome for scrolling portions of the page</short_desc>
          <delta_ts>2012-02-08 07:34:01 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Robert Kroeger">rjkroege</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>277378</commentid>
    <comment_count>0</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2010-09-10 12:46:28 -0700</bug_when>
    <thetext>It is desirable under certain circumstances (inertial scroll for example) for the Chromium RenderWidget to be able to request portions of the contained WebWidget to scroll as if it were the target of mouse wheel events. I propose adding a method gestureScroll to the WebWidget in chromium/public/WebWidget to provide this functionality: calling gestureScroll results in the same behaviour as pixel precision wheel events to the specified positions in the WebWidget.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278516</commentid>
    <comment_count>1</comment_count>
      <attachid>67479</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2010-09-13 15:23:27 -0700</bug_when>
    <thetext>Created attachment 67479
Patch for 45560: minor touch tweaks and gestureScroll method</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278518</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-13 15:24:47 -0700</bug_when>
    <thetext>Attachment 67479 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit/chromium/tests/GestureScrollTest.cpp:33:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit/chromium/tests/GestureScrollTest.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/chromium/tests/GestureScrollTest.cpp:39:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/chromium/tests/GestureScrollTest.cpp:63:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebKit/chromium/tests/GestureScrollTest.cpp:64:  Missing space after ,  [whitespace/comma] [3]
WebKit/chromium/tests/GestureScrollTest.cpp:66:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebKit/chromium/tests/GestureScrollTest.cpp:78:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebKit/chromium/tests/GestureScrollTest.cpp:79:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebKit/chromium/tests/GestureScrollTest.cpp:81:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebKit/chromium/tests/GestureScrollTest.cpp:82:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebKit/chromium/tests/GestureScrollTest.cpp:83:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebKit/chromium/tests/GestureScrollTest.cpp:84:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebKit/chromium/tests/GestureScrollTest.cpp:85:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebKit/chromium/tests/GestureScrollTest.cpp:104:  Missing space after ,  [whitespace/comma] [3]
WebKit/chromium/tests/GestureScrollTest.cpp:105:  Missing space after ,  [whitespace/comma] [3]
WebKit/chromium/src/WebPopupMenuImpl.cpp:127:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 16 in 12 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>278582</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-09-13 17:04:40 -0700</bug_when>
    <thetext>Why do we want the logic for initiating scrolls outside of WebKit?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278873</commentid>
    <comment_count>4</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2010-09-14 07:10:35 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Why do we want the logic for initiating scrolls outside of WebKit?

Various gestures may wish to initiate scrolling.  But I wanted to put the code for recognizing gestures in Chrome (as opposed to WebKit) to make it possible for both Views-based UI code and the RenderView to share as much of the gesture detection code as possible.

Adding this new entry point seemed to provide a clearer separation of concern than crafting and delivering fake mouse wheel events from the RenderView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>278889</commentid>
    <comment_count>5</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-09-14 07:41:42 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; Why do we want the logic for initiating scrolls outside of WebKit?
&gt; 
&gt; Various gestures may wish to initiate scrolling.  But I wanted to put the code for recognizing gestures in Chrome (as opposed to WebKit) to make it possible for both Views-based UI code and the RenderView to share as much of the gesture detection code as possible.
&gt; 
&gt; Adding this new entry point seemed to provide a clearer separation of concern than crafting and delivering fake mouse wheel events from the RenderView.

Wouldn&apos;t it be a Good Thing to have this code in WebCore? It seems that sharing this code across various ports of WebKit is a more interesting idea than sharing it between parts of Chrome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279132</commentid>
    <comment_count>6</comment_count>
      <attachid>67598</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2010-09-14 13:25:13 -0700</bug_when>
    <thetext>Created attachment 67598
patch for 45560: fewer style warnings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279135</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-14 13:29:18 -0700</bug_when>
    <thetext>Attachment 67598 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit/chromium/tests/GestureScrollTest.cpp:33:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 1 in 12 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>285241</commentid>
    <comment_count>8</comment_count>
      <attachid>67598</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-09-26 19:05:47 -0700</bug_when>
    <thetext>Comment on attachment 67598
patch for 45560: fewer style warnings.

The code is fine, but I really think we should bake GestureManager stuff into WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285485</commentid>
    <comment_count>9</comment_count>
      <attachid>67598</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-09-27 08:57:45 -0700</bug_when>
    <thetext>Comment on attachment 67598
patch for 45560: fewer style warnings.

R- because I object to the addition of WebWidget::gestureScroll.

See the discussion here:
http://codereview.chromium.org/3388013

It seems like the GestureManager from that patch can move into WebKit so
that the interface for event processing in WebKit remains handleInputEvent.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67479</attachid>
            <date>2010-09-13 15:23:27 -0700</date>
            <delta_ts>2010-09-14 13:25:13 -0700</delta_ts>
            <desc>Patch for 45560: minor touch tweaks and gestureScroll method</desc>
            <filename>patch1</filename>
            <type>text/plain</type>
            <size>15595</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGIxOGQ0NDcuLmJkOGMxMTQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQyIEBACisyMDEwLTA5LTEzICBSb2JlcnQgS3JvZWdlciAgPHJqa3JvZWdlQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hy
b21pdW1dIHByb2dyYW1tYXRpYyBXZWJGcmFtZSBzY3JvbGxpbmcgYW5kIHRvdWNoIGV2ZW50IGRl
bGl2ZXJ5IHR3ZWFrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDU1NjAKKworICAgICAgICBBZGRzIHRoZSBnZXN0dXJlU2Nyb2xsIG1ldGhvZCBmb3Ig
cHJvZ3JhbW1hdGljYWxseSBzY3JvbGxpbmcKKyAgICAgICAgYW4gYXJiaXRyYXJ5IFdlYkZyYW1l
IHVuZGVyIGEgc3BlY2lmaWVkIHBvc2l0aW9uIGZyb20gYQorICAgICAgICBSZW5kZXJXaWRnZXQu
IEFsc28sIG1pbm9yIGltcHJvdmVtZW50cyB0byB0aGUgdG91Y2ggZXZlbnQgQVBJLgorCisgICAg
ICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViSW5wdXRFdmVudC5oOgorICAg
ICAgICAqIHB1YmxpYy9XZWJXaWRnZXQuaDoKKyAgICAgICAgKiBzcmMvV2ViSW5wdXRFdmVudENv
bnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVy
OjpQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyKToKKyAgICAgICAgKiBzcmMvV2ViSW5wdXRFdmVu
dENvbnZlcnNpb24uaDoKKyAgICAgICAgKiBzcmMvV2ViUG9wdXBNZW51SW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudUltcGw6OnRvdWNoRXZlbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQb3B1cE1lbnVJbXBsOjpnZXN0dXJlU2Nyb2xsKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUG9wdXBNZW51SW1wbDo6aGFuZGxlSW5wdXRFdmVudCk6CisgICAgICAgICogc3JjL1dlYlBv
cHVwTWVudUltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6dG91Y2hFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpnZXN0dXJlU2Nyb2xsKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAg
ICAgICAgKiB0ZXN0cy9HZXN0dXJlU2Nyb2xsVGVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpUZXN0V2ViQ29yZVdpZGdldDo6c2V0RnJhbWVSZWN0KToKKyAgICAgICAgKFdlYktpdDo6
VGVzdFdlYkNvcmVXaWRnZXQ6OmludmFsaWRhdGVSZWN0KToKKyAgICAgICAgKFdlYktpdDo6VGVz
dFdlYkNvcmVXaWRnZXQ6OmRlcmVmKToKKyAgICAgICAgKFdlYktpdDo6VGVzdFBsYXRmb3JtV2hl
ZWxFdmVudEJ1aWxkZXI6OlRlc3RQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyKToKKyAgICAgICAg
KFdlYktpdDo6VGVzdFBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXI6OmlzQnVpbHRSaWdodCk6Cisg
ICAgICAgIChXZWJLaXQ6OlRlc3RHZXN0dXJlU2Nyb2xsOjpUZXN0R2VzdHVyZVNjcm9sbCk6Cisg
ICAgICAgIChXZWJLaXQ6OlRlc3RHZXN0dXJlU2Nyb2xsOjpTZXRVcCk6CisgICAgICAgIChXZWJL
aXQ6OlRlc3RHZXN0dXJlU2Nyb2xsOjpUZWFyRG93bik6CisgICAgICAgIChXZWJLaXQ6OlRFU1Rf
Rik6CisgICAgICAgICogdGVzdHMvUG9wdXBNZW51VGVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlRlc3RXZWJXaWRnZXQ6Omdlc3R1cmVTY3JvbGwpOgorCiAyMDEwLTA5LTEzICBFbnJpY2EgQ2Fz
dWNjaSAgPGVucmljYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5p
Zy4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXAKaW5kZXggMDMyZTdiZi4uMjJkYTgwYiAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAg
LTczNSw2ICs3MzUsNyBAQAogICAgICAgICAgICAgICAgICAgICAnc291cmNlcyc6IFsKICAgICAg
ICAgICAgICAgICAgICAgICAgICd0ZXN0cy9BcmVuYVRlc3RIZWxwZXJzLmgnLAogICAgICAgICAg
ICAgICAgICAgICAgICAgJ3Rlc3RzL0RyYWdJbWFnZVRlc3QuY3BwJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICd0ZXN0cy9HZXN0dXJlU2Nyb2xsVGVzdC5jcHAnLAogICAgICAgICAgICAgICAg
ICAgICAgICAgJ3Rlc3RzL0lEQkJpbmRpbmdVdGlsaXRpZXNUZXN0LmNwcCcsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAndGVzdHMvSURCS2V5UGF0aFRlc3QuY3BwJywKICAgICAgICAgICAgICAg
ICAgICAgICAgICd0ZXN0cy9LZXlib2FyZFRlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFdmVudC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJJbnB1dEV2ZW50LmgKaW5kZXggZjhiMDU3Yi4uZGEwNWVlYSAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEV2ZW50LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJJbnB1dEV2ZW50LmgKQEAgLTI4Nyw4ICsyODcsNyBAQCBwdWJsaWM6CiAKIGNsYXNz
IFdlYlRvdWNoRXZlbnQgOiBwdWJsaWMgV2ViSW5wdXRFdmVudCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIGNvbnN0IGludCB0b3VjaFBvaW50c0xlbmd0aENhcCA9IDQ7Ci0KKyAgICBzdGF0aWMgY29u
c3QgaW50IHRvdWNoUG9pbnRzTGVuZ3RoQ2FwID0gMzsKICAgICBpbnQgdG91Y2hQb2ludHNMZW5n
dGg7CiAgICAgV2ViVG91Y2hQb2ludCB0b3VjaFBvaW50c1t0b3VjaFBvaW50c0xlbmd0aENhcF07
CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0LmggYi9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldC5oCmluZGV4IGQwMTAyNzAuLmQ1ODY5MTYgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0LmgKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXQuaApAQCAtNDEsNiArNDEsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgV2ViSW5wdXRFdmVudDsKIGNsYXNzIFdlYlN0cmluZzsKK3N0cnVj
dCBXZWJQb2ludDsKIHN0cnVjdCBXZWJSZWN0Owogc3RydWN0IFdlYlNpemU7CiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gY2xhc3MgV2ViVmVjdG9yOwpAQCAtMTE5LDYgKzEyMCwxMiBAQCBwdWJsaWM6
CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBXZWJXaWRnZXQgdXNlcyBHUFUgYWNjZWxlcmF0
ZWQgY29tcG9zaXRpbmcKICAgICAvLyB0byByZW5kZXIgaXRzIGNvbnRlbnRzLgogICAgIHZpcnR1
YWwgYm9vbCBpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoKSBjb25zdCA9IDA7CisgICAg
CisgICAgLy8gUmVxdWVzdHMgdGhlIHBvcnRpb24gb2YgdGhlIFdlYldpZGdldCB1bmRlciB0aGUg
c3BlY2lmaWVkIHBvc2l0aW9uIHRvCisgICAgLy8gc2Nyb2xsIGl0c2VsZiBieSBkZWx0YVgsIGRl
bHRhWSBwaXhlbHMuCisgICAgdmlydHVhbCB2b2lkIGdlc3R1cmVTY3JvbGwoY29uc3QgV2ViUG9p
bnQmIHBvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlBv
aW50JiBzY3JlZW5Qb3NpdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9h
dCBkZWx0YVgsIGZsb2F0IGRlbHRhWSkgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgfldlYldpZGdl
dCgpIHsgfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29u
dmVyc2lvbi5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9u
LmNwcAppbmRleCAyNGViMzcyLi5jNjE1ZjUzIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcApAQCAtMTAyLDYgKzEwMiwyNSBAQCBQbGF0Zm9y
bVdoZWVsRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyKFdpZGdldCogd2lk
Z2V0LCBjb25zdCBXZWJNbwogICAgIG1fbWV0YUtleSA9IChlLm1vZGlmaWVycyAmIFdlYklucHV0
RXZlbnQ6Ok1ldGFLZXkpOwogfQogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK1BsYXRmb3Jt
V2hlZWxFdmVudEJ1aWxkZXI6OlBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXIoV2lkZ2V0KiB3aWRn
ZXQsCisgICAgICAgIGNvbnN0IFdlYlBvaW50JiBwb3NpdGlvbiwgY29uc3QgV2ViUG9pbnQmIHNj
cmVlblBvc2l0aW9uLCBmbG9hdCBkZWx0YVgsIGZsb2F0IGRlbHRhWSkKK3sKKyAgICBtX3Bvc2l0
aW9uID0gd2lkZ2V0LT5jb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coSW50UG9pbnQocG9zaXRp
b24ueCwgcG9zaXRpb24ueSkpOworICAgIG1fZ2xvYmFsUG9zaXRpb24gPSBJbnRQb2ludChzY3Jl
ZW5Qb3NpdGlvbi54LCBzY3JlZW5Qb3NpdGlvbi55KTsKKyAgICBtX2RlbHRhWCA9IGRlbHRhWDsK
KyAgICBtX2RlbHRhWSA9IGRlbHRhWTsKKyAgICBtX3doZWVsVGlja3NYID0gMDsKKyAgICBtX3do
ZWVsVGlja3NZID0gMDsKKyAgICBtX2dyYW51bGFyaXR5ID0gU2Nyb2xsQnlQaXhlbFdoZWVsRXZl
bnQ7CisgICAgbV9pc0FjY2VwdGVkID0gZmFsc2U7CisgICAgbV9zaGlmdEtleSA9IGZhbHNlOwor
ICAgIG1fY3RybEtleSA9IGZhbHNlOworICAgIG1fYWx0S2V5ID0gZmFsc2U7CisgICAgbV9tZXRh
S2V5ID0gZmFsc2U7Cit9CisjZW5kaWYKKwogLy8gTWFrZVBsYXRmb3JtS2V5Ym9hcmRFdmVudCAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBzdGF0
aWMgaW5saW5lIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6VHlwZSB0b1BsYXRmb3JtS2V5Ym9hcmRF
dmVudFR5cGUoV2ViSW5wdXRFdmVudDo6VHlwZSB0eXBlKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oCmluZGV4IDYzOTkxYTkuLjJkMDczMWEgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uaAorKysg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmgKQEAgLTYzLDYg
KzYzLDEwIEBAIHB1YmxpYzoKIGNsYXNzIFBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXIgOiBwdWJs
aWMgV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50IHsKIHB1YmxpYzoKICAgICBQbGF0Zm9ybVdo
ZWVsRXZlbnRCdWlsZGVyKFdlYkNvcmU6OldpZGdldCosIGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVu
dCYpOworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgUGxhdGZvcm1XaGVlbEV2ZW50QnVp
bGRlcihXZWJDb3JlOjpXaWRnZXQqLCBjb25zdCBXZWJQb2ludCYsIGNvbnN0IFdlYlBvaW50JiwK
KyAgICAgICAgZmxvYXQsIGZsb2F0KTsKKyNlbmRpZgogfTsKIAogY2xhc3MgUGxhdGZvcm1LZXli
b2FyZEV2ZW50QnVpbGRlciA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQg
ewpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmNwcCBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51SW1wbC5jcHAKaW5kZXggMDg1YTE1Ny4u
MTlhOWE1ZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBs
LmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuY3BwCkBAIC0x
MjIsNiArMTIyLDIwIEBAIGJvb2wgV2ViUG9wdXBNZW51SW1wbDo6S2V5RXZlbnQoY29uc3QgV2Vi
S2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAgcmV0dXJuIG1fd2lkZ2V0LT5oYW5kbGVLZXlFdmVu
dChQbGF0Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVyKGV2ZW50KSk7CiB9CiAKKyNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQorLy8gSWdub3JlIHRoZXNlIGV2ZW50cy4KK2Jvb2wgV2ViUG9wdXBNZW51
SW1wbDo6dG91Y2hFdmVudChjb25zdCBXZWJUb3VjaEV2ZW50JikgeworICAgIHJldHVybiBmYWxz
ZTsKK307CisKK3ZvaWQgV2ViUG9wdXBNZW51SW1wbDo6Z2VzdHVyZVNjcm9sbChjb25zdCBXZWJQ
b2ludCYgcG9zaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2Vi
UG9pbnQmIHNjcmVlblBvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs
b2F0IGRlbHRhWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBkZWx0YVkp
Cit7IH07CisjZW5kaWYKKworCiAvLyBXZWJXaWRnZXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiB2b2lkIFdlYlBv
cHVwTWVudUltcGw6OmNsb3NlKCkKQEAgLTIyNyw2ICsyNDEsMTUgQEAgYm9vbCBXZWJQb3B1cE1l
bnVJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KGNvbnN0IFdlYklucHV0RXZlbnQmIGlucHV0RXZlbnQp
CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpDaGFyOgogICAgICAgICByZXR1cm4gS2V5RXZlbnQo
KnN0YXRpY19jYXN0PGNvbnN0IFdlYktleWJvYXJkRXZlbnQqPigmaW5wdXRFdmVudCkpOwogCisj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICAvLyBJdCBpcyBjb25jZWl2YWJsZSB0aGF0IHRo
aXMgY29kZSBuZWVkcyB0byBiZSB1cGRhdGVkIGZvciBob3cgd2UgaGFuZGxlCisgICAgLy8gdG91
Y2ggZXZlbnRzIGluIHBvcHVwcy4gICAgICAKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6OlRvdWNo
U3RhcnQ6CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpUb3VjaE1vdmU6CisgICAgY2FzZSBXZWJJ
bnB1dEV2ZW50OjpUb3VjaEVuZDoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6OlRvdWNoQ2FuY2Vs
OgorICAgICAgICByZXR1cm4gdG91Y2hFdmVudCgqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViVG91Y2hF
dmVudCo+KCZpbnB1dEV2ZW50KSk7CisjZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICBicmVh
azsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUlt
cGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51SW1wbC5oCmluZGV4IDIyMWJh
MDMuLmY0NTJjYjQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51
SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51SW1wbC5oCkBAIC01
MCw2ICs1MCw3IEBAIGNsYXNzIFdpZGdldDsKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2Vi
S2V5Ym9hcmRFdmVudDsKIGNsYXNzIFdlYk1vdXNlRXZlbnQ7CitjbGFzcyBXZWJUb3VjaEV2ZW50
OwogY2xhc3MgV2ViTW91c2VXaGVlbEV2ZW50Owogc3RydWN0IFdlYlJlY3Q7CiAKQEAgLTkxLDYg
KzkyLDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIE1vdXNlRG91YmxlQ2xpY2soY29uc3QgV2ViTW91
c2VFdmVudCYpOwogICAgIHZvaWQgTW91c2VXaGVlbChjb25zdCBXZWJNb3VzZVdoZWVsRXZlbnQm
KTsKICAgICBib29sIEtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKTsKKyAgICAKKyNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGJvb2wgdG91Y2hFdmVudChjb25zdCBXZWJUb3Vj
aEV2ZW50Jik7CisgICAgdmlydHVhbCB2b2lkIGdlc3R1cmVTY3JvbGwoY29uc3QgV2ViUG9pbnQm
IHBvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViUG9pbnQm
IHNjcmVlblBvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZGVs
dGFYLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZGVsdGFZKTsKKyNlbmRp
ZgogCiAgICBwcm90ZWN0ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIFdlYlBvcHVwTWVudTsgIC8vIEZv
ciBXZWJQb3B1cE1lbnU6OmNyZWF0ZQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRl
eCAwNDNlMzI4Li5mYTcxZDUwIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAt
NjkwLDEwICs2OTAsMjEgQEAgYm9vbCBXZWJWaWV3SW1wbDo6dG91Y2hFdmVudChjb25zdCBXZWJU
b3VjaEV2ZW50JiBldmVudCkKIHsKICAgICBpZiAoIW1haW5GcmFtZUltcGwoKSB8fCAhbWFpbkZy
YW1lSW1wbCgpLT5mcmFtZVZpZXcoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgUGxh
dGZvcm1Ub3VjaEV2ZW50QnVpbGRlciB0b3VjaEV2ZW50QnVpbGRlcihtYWluRnJhbWVJbXBsKCkt
PmZyYW1lVmlldygpLCBldmVudCk7CiAgICAgcmV0dXJuIG1haW5GcmFtZUltcGwoKS0+ZnJhbWUo
KS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZVRvdWNoRXZlbnQodG91Y2hFdmVudEJ1aWxkZXIpOwog
fQorCit2b2lkIFdlYlZpZXdJbXBsOjpnZXN0dXJlU2Nyb2xsKGNvbnN0IFdlYlBvaW50JiBwb3Np
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJQb2ludCYgc2Ny
ZWVuUG9zaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZGVsdGFY
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGRlbHRhWSkgeworICAgIFBs
YXRmb3JtV2hlZWxFdmVudEJ1aWxkZXIgcGxhdGZvcm1FdmVudChtYWluRnJhbWVJbXBsKCktPmZy
YW1lVmlldygpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cG9zaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNj
cmVlblBvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZWx0YVgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
bHRhWSk7CisgICAgbWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFu
ZGxlV2hlZWxFdmVudChwbGF0Zm9ybUV2ZW50KTsKK30KICNlbmRpZgogCiAjaWYgT1MoV0lORE9X
UykgfHwgT1MoTElOVVgpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggYzJlZjMxMy4u
YzhjOGUzMSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtMjQ5LDcgKzI0OSw5IEBA
IHB1YmxpYzoKICAgICBib29sIG1vdXNlV2hlZWwoY29uc3QgV2ViTW91c2VXaGVlbEV2ZW50Jik7
CiAgICAgYm9vbCBrZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50Jik7CiAgICAgYm9vbCBj
aGFyRXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOworI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCiAgICAgYm9vbCB0b3VjaEV2ZW50KGNvbnN0IFdlYlRvdWNoRXZlbnQmKTsKKyNlbmRpZgog
CiAgICAgLy8gSGFuZGxlcyBjb250ZXh0IG1lbnUgZXZlbnRzIG9yaWduYXRlZCB2aWEgdGhlIHRo
ZSBrZXlib2FyZC4gVGhlc2UKICAgICAvLyBpbmNsdWRlIHRoZSBWS19BUFBTIHZpcnR1YWwga2V5
IGFuZCB0aGUgU2hpZnQrRjEwIGNvbWJpbmUuIENvZGUgaXMKQEAgLTM0Miw2ICszNDQsMTQgQEAg
cHVibGljOgogCiAgICAgV2ViQ29yZTo6UG9wdXBDb250YWluZXIqIHNlbGVjdFBvcHVwKCkgY29u
c3QgeyByZXR1cm4gbV9zZWxlY3RQb3B1cC5nZXQoKTsgfQogCisjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKKyAgICAvLyBTY3JvbGxzIGEgcGFydCBvZiB0aGUgdW5kZXJseWluZyB2aWV3IGJ5IHNl
bmRpbmcgaXQgaXQgYSBoaWdoLXByZWNpc2lvbgorICAgIC8vIFBsYXRmb3JtV2hlZWxFdmVudCB0
aGF0IHNjcm9sbHMgaXQgYnkgZGVsdGFYLCBkZWx0YVkgcGl4ZWxzLgorICAgIHZpcnR1YWwgdm9p
ZCBnZXN0dXJlU2Nyb2xsKGNvbnN0IFdlYlBvaW50JiBwb3NpdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBXZWJQb2ludCYgc2NyZWVuUG9zaXRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZGVsdGFYLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZsb2F0IGRlbHRhWSk7CisjZW5kaWYKICAgICBib29sIHpvb21UZXh0T25s
eSgpIGNvbnN0IHsgcmV0dXJuIG1fem9vbVRleHRPbmx5OyB9CiAKICAgICAvLyBSZXR1cm5zIHRy
dWUgaWYgdGhlIGV2ZW50IGxlYWRzIHRvIHNjcm9sbGluZy4KZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9HZXN0dXJlU2Nyb2xsVGVzdC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvR2VzdHVyZVNjcm9sbFRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjA5MWExZGEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vdGVzdHMvR2Vz
dHVyZVNjcm9sbFRlc3QuY3BwCkBAIC0wLDAgKzEsMTE2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKworI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVk
ZSAiS2V5Ym9hcmRDb2Rlcy5oIgorI2luY2x1ZGUgIlBvcHVwTWVudS5oIgorI2luY2x1ZGUgIlBv
cHVwTWVudUNsaWVudC5oIgorI2luY2x1ZGUgIlBvcHVwTWVudUNocm9taXVtLmgiCisjaW5jbHVk
ZSAiV2ViRnJhbWVDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIKKyNpbmNsdWRl
ICJXZWJJbnB1dEV2ZW50LmgiCisjaW5jbHVkZSAiV2ViSW5wdXRFdmVudENvbnZlcnNpb24uaCIK
KyNpbmNsdWRlICJXZWJQb3B1cE1lbnVJbXBsLmgiCisjaW5jbHVkZSAiV2ViU2NyZWVuSW5mby5o
IgorI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK25h
bWVzcGFjZSB7CisKK2NsYXNzIFRlc3RXZWJDb3JlV2lkZ2V0IDogcHVibGljIFdlYkNvcmU6Oldp
ZGdldCB7CisgcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgSW50
UmVjdCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0
JikgeyB9CisgICAgdm9pZCBkZXJlZigpIHsgZGVyZWZCYXNlKCk7IH0KK307CisKK2NsYXNzIFRl
c3RQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyIDogcHVibGljIFBsYXRmb3JtV2hlZWxFdmVudEJ1
aWxkZXIgeworIHB1YmxpYzoKKyAgVGVzdFBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXIoV2ViQ29y
ZTo6V2lkZ2V0KiB3LCBjb25zdCBXZWJQb2ludCYgd3AxLAorICAgICAgICBjb25zdCBXZWJQb2lu
dCYgd3AyLGZsb2F0IHgsIGZsb2F0IHkpIAorICAgICAgICA6IFBsYXRmb3JtV2hlZWxFdmVudEJ1
aWxkZXIodywgd3AxLCB3cDIsIHgsIHkpIHsgfQorICBib29sIGlzQnVpbHRSaWdodChjb25zdCBJ
bnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBzY3JlZW5Qb3NpdGlvbiwKKyAgICAg
ICAgZmxvYXQgZGVsdGFYLCBmbG9hdCBkZWx0YVkpOworfTsKKworYm9vbCBUZXN0UGxhdGZvcm1X
aGVlbEV2ZW50QnVpbGRlcjo6aXNCdWlsdFJpZ2h0KGNvbnN0IEludFBvaW50JiBwb3NpdGlvbiwK
KyAgICAgICAgY29uc3QgSW50UG9pbnQmIHNjcmVlblBvc2l0aW9uLCBmbG9hdCBkZWx0YVgsIGZs
b2F0IGRlbHRhWSkgeworICAgIGJvb2wgYnVpbGRSaWdodCA9IHRydWU7CisKKyAgICBidWlsZFJp
Z2h0ICY9IG1fcG9zaXRpb24gPT0gcG9zaXRpb247CisgICAgYnVpbGRSaWdodCAmPSBtX2dsb2Jh
bFBvc2l0aW9uID09IHNjcmVlblBvc2l0aW9uOworICAgIGJ1aWxkUmlnaHQgJj0gbV9kZWx0YVgg
PT0gZGVsdGFYOworICAgIGJ1aWxkUmlnaHQgJj0gbV9kZWx0YVkgPT0gZGVsdGFZOworICAgIGJ1
aWxkUmlnaHQgJj0gbV93aGVlbFRpY2tzWCA9PSAwOworICAgIGJ1aWxkUmlnaHQgJj0gbV93aGVl
bFRpY2tzWSA9PSAwOworICAgIGJ1aWxkUmlnaHQgJj0gbV9ncmFudWxhcml0eSA9PSBTY3JvbGxC
eVBpeGVsV2hlZWxFdmVudDsKKyAgICBidWlsZFJpZ2h0ICY9IG1faXNBY2NlcHRlZCA9PSBmYWxz
ZTsKKyAgICBidWlsZFJpZ2h0ICY9IG1fc2hpZnRLZXkgPT0gZmFsc2U7CisgICAgYnVpbGRSaWdo
dCAmPSBtX2N0cmxLZXkgPT0gZmFsc2U7CisgICAgYnVpbGRSaWdodCAmPSBtX2FsdEtleSA9PSBm
YWxzZTsKKyAgICBidWlsZFJpZ2h0ICY9IG1fbWV0YUtleSA9PSBmYWxzZTsKKyAgICByZXR1cm4g
YnVpbGRSaWdodDsKK30KKworCitjbGFzcyBUZXN0R2VzdHVyZVNjcm9sbCA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0IHsKK3B1YmxpYzoKKyAgICBUZXN0R2VzdHVyZVNjcm9sbCgpIHsgfQorCitwcm90
ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIFNldFVwKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIFRl
YXJEb3duKCkgeyB9Cit9OworCitURVNUX0YoVGVzdEdlc3R1cmVTY3JvbGwsIFBsYXRmb3JtV2hl
ZWxFdmVudEJ1aWxkZXIpCit7CisgICAgVGVzdFdlYkNvcmVXaWRnZXQgdGVzdFdpZGdldDsKKyAg
ICB0ZXN0V2lkZ2V0LnJlbGF4QWRvcHRpb25SZXF1aXJlbWVudCgpOworCisgICAgY29uc3QgV2Vi
UG9pbnQgd3AxKDEsMiksIHdwMigzLDIpOworICAgIGNvbnN0IEludFBvaW50IGlwMSgxLDIpLCBp
cDIoMywyKTsKKyAgCisgICAgVGVzdFBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXIgcHdlYigmdGVz
dFdpZGdldCwgd3AxLCB3cDIsIDEuMGYsIDIuMmYpOworICAgIEFTU0VSVF9UUlVFKHB3ZWIuaXNC
dWlsdFJpZ2h0KAorICAgICAgICB0ZXN0V2lkZ2V0LmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRv
dyhpcDEpLAorICAgICAgICB0ZXN0V2lkZ2V0LmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhp
cDIpLAorICAgICAgICAxLjBmLCAyLjJmKSk7CisKKyAgICB0ZXN0V2lkZ2V0LmRlcmVmKCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUG9w
dXBNZW51VGVzdC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUG9wdXBNZW51VGVzdC5jcHAK
aW5kZXggYWVmMjljZi4uZDk2MDU1YSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L1BvcHVwTWVudVRlc3QuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Qb3B1cE1lbnVU
ZXN0LmNwcApAQCAtMTQyLDYgKzE0Miw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYlRleHRJ
bnB1dFR5cGUgdGV4dElucHV0VHlwZSgpIHsgcmV0dXJuIFdlYktpdDo6V2ViVGV4dElucHV0VHlw
ZU5vbmU7IH0KICAgICB2aXJ0dWFsIFdlYlJlY3QgY2FyZXRPclNlbGVjdGlvbkJvdW5kcygpIHsg
cmV0dXJuIFdlYlJlY3QoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0RGlyZWN0aW9uKFdl
YlRleHREaXJlY3Rpb24pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBnZXN0dXJlU2Nyb2xsKGNvbnN0
IFdlYlBvaW50JiBwb3NpdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBXZWJQb2ludCYgc2NyZWVuUG9zaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmxvYXQgZGVsdGFYLCBmbG9hdCBkZWx0YVkpIHsgfQogfTsKIAogY2xhc3MgVGVzdFdlYlZp
ZXdDbGllbnQgOiBwdWJsaWMgV2ViVmlld0NsaWVudCB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67598</attachid>
            <date>2010-09-14 13:25:13 -0700</date>
            <delta_ts>2010-09-27 08:57:45 -0700</delta_ts>
            <desc>patch for 45560: fewer style warnings.</desc>
            <filename>patch2</filename>
            <type>text/plain</type>
            <size>15292</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGIxOGQ0NDcuLmJkOGMxMTQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQyIEBACisyMDEwLTA5LTEzICBSb2JlcnQgS3JvZWdlciAgPHJqa3JvZWdlQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hy
b21pdW1dIHByb2dyYW1tYXRpYyBXZWJGcmFtZSBzY3JvbGxpbmcgYW5kIHRvdWNoIGV2ZW50IGRl
bGl2ZXJ5IHR3ZWFrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDU1NjAKKworICAgICAgICBBZGRzIHRoZSBnZXN0dXJlU2Nyb2xsIG1ldGhvZCBmb3Ig
cHJvZ3JhbW1hdGljYWxseSBzY3JvbGxpbmcKKyAgICAgICAgYW4gYXJiaXRyYXJ5IFdlYkZyYW1l
IHVuZGVyIGEgc3BlY2lmaWVkIHBvc2l0aW9uIGZyb20gYQorICAgICAgICBSZW5kZXJXaWRnZXQu
IEFsc28sIG1pbm9yIGltcHJvdmVtZW50cyB0byB0aGUgdG91Y2ggZXZlbnQgQVBJLgorCisgICAg
ICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViSW5wdXRFdmVudC5oOgorICAg
ICAgICAqIHB1YmxpYy9XZWJXaWRnZXQuaDoKKyAgICAgICAgKiBzcmMvV2ViSW5wdXRFdmVudENv
bnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVy
OjpQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyKToKKyAgICAgICAgKiBzcmMvV2ViSW5wdXRFdmVu
dENvbnZlcnNpb24uaDoKKyAgICAgICAgKiBzcmMvV2ViUG9wdXBNZW51SW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudUltcGw6OnRvdWNoRXZlbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQb3B1cE1lbnVJbXBsOjpnZXN0dXJlU2Nyb2xsKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUG9wdXBNZW51SW1wbDo6aGFuZGxlSW5wdXRFdmVudCk6CisgICAgICAgICogc3JjL1dlYlBv
cHVwTWVudUltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6dG91Y2hFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpnZXN0dXJlU2Nyb2xsKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAg
ICAgICAgKiB0ZXN0cy9HZXN0dXJlU2Nyb2xsVGVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpUZXN0V2ViQ29yZVdpZGdldDo6c2V0RnJhbWVSZWN0KToKKyAgICAgICAgKFdlYktpdDo6
VGVzdFdlYkNvcmVXaWRnZXQ6OmludmFsaWRhdGVSZWN0KToKKyAgICAgICAgKFdlYktpdDo6VGVz
dFdlYkNvcmVXaWRnZXQ6OmRlcmVmKToKKyAgICAgICAgKFdlYktpdDo6VGVzdFBsYXRmb3JtV2hl
ZWxFdmVudEJ1aWxkZXI6OlRlc3RQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyKToKKyAgICAgICAg
KFdlYktpdDo6VGVzdFBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXI6OmlzQnVpbHRSaWdodCk6Cisg
ICAgICAgIChXZWJLaXQ6OlRlc3RHZXN0dXJlU2Nyb2xsOjpUZXN0R2VzdHVyZVNjcm9sbCk6Cisg
ICAgICAgIChXZWJLaXQ6OlRlc3RHZXN0dXJlU2Nyb2xsOjpTZXRVcCk6CisgICAgICAgIChXZWJL
aXQ6OlRlc3RHZXN0dXJlU2Nyb2xsOjpUZWFyRG93bik6CisgICAgICAgIChXZWJLaXQ6OlRFU1Rf
Rik6CisgICAgICAgICogdGVzdHMvUG9wdXBNZW51VGVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlRlc3RXZWJXaWRnZXQ6Omdlc3R1cmVTY3JvbGwpOgorCiAyMDEwLTA5LTEzICBFbnJpY2EgQ2Fz
dWNjaSAgPGVucmljYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5p
Zy4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXAKaW5kZXggMDMyZTdiZi4uMjJkYTgwYiAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAg
LTczNSw2ICs3MzUsNyBAQAogICAgICAgICAgICAgICAgICAgICAnc291cmNlcyc6IFsKICAgICAg
ICAgICAgICAgICAgICAgICAgICd0ZXN0cy9BcmVuYVRlc3RIZWxwZXJzLmgnLAogICAgICAgICAg
ICAgICAgICAgICAgICAgJ3Rlc3RzL0RyYWdJbWFnZVRlc3QuY3BwJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICd0ZXN0cy9HZXN0dXJlU2Nyb2xsVGVzdC5jcHAnLAogICAgICAgICAgICAgICAg
ICAgICAgICAgJ3Rlc3RzL0lEQkJpbmRpbmdVdGlsaXRpZXNUZXN0LmNwcCcsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAndGVzdHMvSURCS2V5UGF0aFRlc3QuY3BwJywKICAgICAgICAgICAgICAg
ICAgICAgICAgICd0ZXN0cy9LZXlib2FyZFRlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFdmVudC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJJbnB1dEV2ZW50LmgKaW5kZXggZjhiMDU3Yi4uZGEwNWVlYSAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEV2ZW50LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJJbnB1dEV2ZW50LmgKQEAgLTI4Nyw4ICsyODcsNyBAQCBwdWJsaWM6CiAKIGNsYXNz
IFdlYlRvdWNoRXZlbnQgOiBwdWJsaWMgV2ViSW5wdXRFdmVudCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIGNvbnN0IGludCB0b3VjaFBvaW50c0xlbmd0aENhcCA9IDQ7Ci0KKyAgICBzdGF0aWMgY29u
c3QgaW50IHRvdWNoUG9pbnRzTGVuZ3RoQ2FwID0gMzsKICAgICBpbnQgdG91Y2hQb2ludHNMZW5n
dGg7CiAgICAgV2ViVG91Y2hQb2ludCB0b3VjaFBvaW50c1t0b3VjaFBvaW50c0xlbmd0aENhcF07
CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0LmggYi9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldC5oCmluZGV4IGQwMTAyNzAuLmQ1ODY5MTYgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViV2lkZ2V0LmgKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXQuaApAQCAtNDEsNiArNDEsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgV2ViSW5wdXRFdmVudDsKIGNsYXNzIFdlYlN0cmluZzsKK3N0cnVj
dCBXZWJQb2ludDsKIHN0cnVjdCBXZWJSZWN0Owogc3RydWN0IFdlYlNpemU7CiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gY2xhc3MgV2ViVmVjdG9yOwpAQCAtMTE5LDYgKzEyMCwxMiBAQCBwdWJsaWM6
CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBXZWJXaWRnZXQgdXNlcyBHUFUgYWNjZWxlcmF0
ZWQgY29tcG9zaXRpbmcKICAgICAvLyB0byByZW5kZXIgaXRzIGNvbnRlbnRzLgogICAgIHZpcnR1
YWwgYm9vbCBpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoKSBjb25zdCA9IDA7CisgICAg
CisgICAgLy8gUmVxdWVzdHMgdGhlIHBvcnRpb24gb2YgdGhlIFdlYldpZGdldCB1bmRlciB0aGUg
c3BlY2lmaWVkIHBvc2l0aW9uIHRvCisgICAgLy8gc2Nyb2xsIGl0c2VsZiBieSBkZWx0YVgsIGRl
bHRhWSBwaXhlbHMuCisgICAgdmlydHVhbCB2b2lkIGdlc3R1cmVTY3JvbGwoY29uc3QgV2ViUG9p
bnQmIHBvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlBv
aW50JiBzY3JlZW5Qb3NpdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9h
dCBkZWx0YVgsIGZsb2F0IGRlbHRhWSkgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgfldlYldpZGdl
dCgpIHsgfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29u
dmVyc2lvbi5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9u
LmNwcAppbmRleCAyNGViMzcyLi5jNjE1ZjUzIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcApAQCAtMTAyLDYgKzEwMiwyNSBAQCBQbGF0Zm9y
bVdoZWVsRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyKFdpZGdldCogd2lk
Z2V0LCBjb25zdCBXZWJNbwogICAgIG1fbWV0YUtleSA9IChlLm1vZGlmaWVycyAmIFdlYklucHV0
RXZlbnQ6Ok1ldGFLZXkpOwogfQogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK1BsYXRmb3Jt
V2hlZWxFdmVudEJ1aWxkZXI6OlBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXIoV2lkZ2V0KiB3aWRn
ZXQsCisgICAgICAgIGNvbnN0IFdlYlBvaW50JiBwb3NpdGlvbiwgY29uc3QgV2ViUG9pbnQmIHNj
cmVlblBvc2l0aW9uLCBmbG9hdCBkZWx0YVgsIGZsb2F0IGRlbHRhWSkKK3sKKyAgICBtX3Bvc2l0
aW9uID0gd2lkZ2V0LT5jb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coSW50UG9pbnQocG9zaXRp
b24ueCwgcG9zaXRpb24ueSkpOworICAgIG1fZ2xvYmFsUG9zaXRpb24gPSBJbnRQb2ludChzY3Jl
ZW5Qb3NpdGlvbi54LCBzY3JlZW5Qb3NpdGlvbi55KTsKKyAgICBtX2RlbHRhWCA9IGRlbHRhWDsK
KyAgICBtX2RlbHRhWSA9IGRlbHRhWTsKKyAgICBtX3doZWVsVGlja3NYID0gMDsKKyAgICBtX3do
ZWVsVGlja3NZID0gMDsKKyAgICBtX2dyYW51bGFyaXR5ID0gU2Nyb2xsQnlQaXhlbFdoZWVsRXZl
bnQ7CisgICAgbV9pc0FjY2VwdGVkID0gZmFsc2U7CisgICAgbV9zaGlmdEtleSA9IGZhbHNlOwor
ICAgIG1fY3RybEtleSA9IGZhbHNlOworICAgIG1fYWx0S2V5ID0gZmFsc2U7CisgICAgbV9tZXRh
S2V5ID0gZmFsc2U7Cit9CisjZW5kaWYKKwogLy8gTWFrZVBsYXRmb3JtS2V5Ym9hcmRFdmVudCAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBzdGF0
aWMgaW5saW5lIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6VHlwZSB0b1BsYXRmb3JtS2V5Ym9hcmRF
dmVudFR5cGUoV2ViSW5wdXRFdmVudDo6VHlwZSB0eXBlKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oCmluZGV4IDYzOTkxYTkuLjJkMDczMWEgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uaAorKysg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmgKQEAgLTYzLDYg
KzYzLDEwIEBAIHB1YmxpYzoKIGNsYXNzIFBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXIgOiBwdWJs
aWMgV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50IHsKIHB1YmxpYzoKICAgICBQbGF0Zm9ybVdo
ZWVsRXZlbnRCdWlsZGVyKFdlYkNvcmU6OldpZGdldCosIGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVu
dCYpOworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgUGxhdGZvcm1XaGVlbEV2ZW50QnVp
bGRlcihXZWJDb3JlOjpXaWRnZXQqLCBjb25zdCBXZWJQb2ludCYsIGNvbnN0IFdlYlBvaW50JiwK
KyAgICAgICAgZmxvYXQsIGZsb2F0KTsKKyNlbmRpZgogfTsKIAogY2xhc3MgUGxhdGZvcm1LZXli
b2FyZEV2ZW50QnVpbGRlciA6IHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQg
ewpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmNwcCBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51SW1wbC5jcHAKaW5kZXggMDg1YTE1Ny4u
OGI5YmY3ZCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBs
LmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuY3BwCkBAIC0x
MjIsNiArMTIyLDIxIEBAIGJvb2wgV2ViUG9wdXBNZW51SW1wbDo6S2V5RXZlbnQoY29uc3QgV2Vi
S2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAgcmV0dXJuIG1fd2lkZ2V0LT5oYW5kbGVLZXlFdmVu
dChQbGF0Zm9ybUtleWJvYXJkRXZlbnRCdWlsZGVyKGV2ZW50KSk7CiB9CiAKKyNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQorLy8gSWdub3JlIHRoZXNlIGV2ZW50cy4KK2Jvb2wgV2ViUG9wdXBNZW51
SW1wbDo6dG91Y2hFdmVudChjb25zdCBXZWJUb3VjaEV2ZW50JikKK3sKKyAgICByZXR1cm4gZmFs
c2U7Cit9OworCit2b2lkIFdlYlBvcHVwTWVudUltcGw6Omdlc3R1cmVTY3JvbGwoY29uc3QgV2Vi
UG9pbnQmIHBvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdl
YlBvaW50JiBzY3JlZW5Qb3NpdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
bG9hdCBkZWx0YVgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZGVsdGFZ
KQoreyB9OworI2VuZGlmCisKKwogLy8gV2ViV2lkZ2V0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogdm9pZCBXZWJQ
b3B1cE1lbnVJbXBsOjpjbG9zZSgpCkBAIC0yMjcsNiArMjQyLDE1IEBAIGJvb2wgV2ViUG9wdXBN
ZW51SW1wbDo6aGFuZGxlSW5wdXRFdmVudChjb25zdCBXZWJJbnB1dEV2ZW50JiBpbnB1dEV2ZW50
KQogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6Q2hhcjoKICAgICAgICAgcmV0dXJuIEtleUV2ZW50
KCpzdGF0aWNfY2FzdDxjb25zdCBXZWJLZXlib2FyZEV2ZW50Kj4oJmlucHV0RXZlbnQpKTsKIAor
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgLy8gSXQgaXMgY29uY2VpdmFibGUgdGhhdCB0
aGlzIGNvZGUgbmVlZHMgdG8gYmUgdXBkYXRlZCBmb3IgaG93IHdlIGhhbmRsZQorICAgIC8vIHRv
dWNoIGV2ZW50cyBpbiBwb3B1cHMuICAgICAgCisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpUb3Vj
aFN0YXJ0OgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6VG91Y2hNb3ZlOgorICAgIGNhc2UgV2Vi
SW5wdXRFdmVudDo6VG91Y2hFbmQ6CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpUb3VjaENhbmNl
bDoKKyAgICAgICAgcmV0dXJuIHRvdWNoRXZlbnQoKnN0YXRpY19jYXN0PGNvbnN0IFdlYlRvdWNo
RXZlbnQqPigmaW5wdXRFdmVudCkpOworI2VuZGlmCiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJl
YWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJ
bXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuaAppbmRleCAyMjFi
YTAzLi5mNDUyY2I0IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVu
dUltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuaApAQCAt
NTAsNiArNTAsNyBAQCBjbGFzcyBXaWRnZXQ7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdl
YktleWJvYXJkRXZlbnQ7CiBjbGFzcyBXZWJNb3VzZUV2ZW50OworY2xhc3MgV2ViVG91Y2hFdmVu
dDsKIGNsYXNzIFdlYk1vdXNlV2hlZWxFdmVudDsKIHN0cnVjdCBXZWJSZWN0OwogCkBAIC05MSw2
ICs5MiwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBNb3VzZURvdWJsZUNsaWNrKGNvbnN0IFdlYk1v
dXNlRXZlbnQmKTsKICAgICB2b2lkIE1vdXNlV2hlZWwoY29uc3QgV2ViTW91c2VXaGVlbEV2ZW50
Jik7CiAgICAgYm9vbCBLZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50Jik7CisgICAgCisj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBib29sIHRvdWNoRXZlbnQoY29uc3QgV2ViVG91
Y2hFdmVudCYpOworICAgIHZpcnR1YWwgdm9pZCBnZXN0dXJlU2Nyb2xsKGNvbnN0IFdlYlBvaW50
JiBwb3NpdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlBvaW50
JiBzY3JlZW5Qb3NpdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGRl
bHRhWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGRlbHRhWSk7CisjZW5k
aWYKIAogICAgcHJvdGVjdGVkOgogICAgIGZyaWVuZCBjbGFzcyBXZWJQb3B1cE1lbnU7ICAvLyBG
b3IgV2ViUG9wdXBNZW51OjpjcmVhdGUKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5k
ZXggMDQzZTMyOC4uZmE3MWQ1MCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAg
LTY5MCwxMCArNjkwLDIxIEBAIGJvb2wgV2ViVmlld0ltcGw6OnRvdWNoRXZlbnQoY29uc3QgV2Vi
VG91Y2hFdmVudCYgZXZlbnQpCiB7CiAgICAgaWYgKCFtYWluRnJhbWVJbXBsKCkgfHwgIW1haW5G
cmFtZUltcGwoKS0+ZnJhbWVWaWV3KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIFBs
YXRmb3JtVG91Y2hFdmVudEJ1aWxkZXIgdG91Y2hFdmVudEJ1aWxkZXIobWFpbkZyYW1lSW1wbCgp
LT5mcmFtZVZpZXcoKSwgZXZlbnQpOwogICAgIHJldHVybiBtYWluRnJhbWVJbXBsKCktPmZyYW1l
KCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVUb3VjaEV2ZW50KHRvdWNoRXZlbnRCdWlsZGVyKTsK
IH0KKwordm9pZCBXZWJWaWV3SW1wbDo6Z2VzdHVyZVNjcm9sbChjb25zdCBXZWJQb2ludCYgcG9z
aXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViUG9pbnQmIHNj
cmVlblBvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGRlbHRh
WCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBkZWx0YVkpIHsKKyAgICBQ
bGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyIHBsYXRmb3JtRXZlbnQobWFpbkZyYW1lSW1wbCgpLT5m
cmFtZVZpZXcoKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
Y3JlZW5Qb3NpdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVsdGFYLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZWx0YVkpOworICAgIG1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhh
bmRsZVdoZWVsRXZlbnQocGxhdGZvcm1FdmVudCk7Cit9CiAjZW5kaWYKIAogI2lmIE9TKFdJTkRP
V1MpIHx8IE9TKExJTlVYKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IGMyZWYzMTMu
LmM4YzhlMzEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAor
KysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTI0OSw3ICsyNDksOSBA
QCBwdWJsaWM6CiAgICAgYm9vbCBtb3VzZVdoZWVsKGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVudCYp
OwogICAgIGJvb2wga2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpOwogICAgIGJvb2wg
Y2hhckV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKTsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQogICAgIGJvb2wgdG91Y2hFdmVudChjb25zdCBXZWJUb3VjaEV2ZW50Jik7CisjZW5kaWYK
IAogICAgIC8vIEhhbmRsZXMgY29udGV4dCBtZW51IGV2ZW50cyBvcmlnbmF0ZWQgdmlhIHRoZSB0
aGUga2V5Ym9hcmQuIFRoZXNlCiAgICAgLy8gaW5jbHVkZSB0aGUgVktfQVBQUyB2aXJ0dWFsIGtl
eSBhbmQgdGhlIFNoaWZ0K0YxMCBjb21iaW5lLiBDb2RlIGlzCkBAIC0zNDIsNiArMzQ0LDE0IEBA
IHB1YmxpYzoKIAogICAgIFdlYkNvcmU6OlBvcHVwQ29udGFpbmVyKiBzZWxlY3RQb3B1cCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2VsZWN0UG9wdXAuZ2V0KCk7IH0KIAorI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCisgICAgLy8gU2Nyb2xscyBhIHBhcnQgb2YgdGhlIHVuZGVybHlpbmcgdmlldyBieSBz
ZW5kaW5nIGl0IGl0IGEgaGlnaC1wcmVjaXNpb24KKyAgICAvLyBQbGF0Zm9ybVdoZWVsRXZlbnQg
dGhhdCBzY3JvbGxzIGl0IGJ5IGRlbHRhWCwgZGVsdGFZIHBpeGVscy4KKyAgICB2aXJ0dWFsIHZv
aWQgZ2VzdHVyZVNjcm9sbChjb25zdCBXZWJQb2ludCYgcG9zaXRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgV2ViUG9pbnQmIHNjcmVlblBvc2l0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGRlbHRhWCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmbG9hdCBkZWx0YVkpOworI2VuZGlmCiAgICAgYm9vbCB6b29tVGV4dE9u
bHkoKSBjb25zdCB7IHJldHVybiBtX3pvb21UZXh0T25seTsgfQogCiAgICAgLy8gUmV0dXJucyB0
cnVlIGlmIHRoZSBldmVudCBsZWFkcyB0byBzY3JvbGxpbmcuCmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvR2VzdHVyZVNjcm9sbFRlc3QuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0dlc3R1cmVTY3JvbGxUZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4zMmU0Y2IxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0dl
c3R1cmVTY3JvbGxUZXN0LmNwcApAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2luY2x1ZGUgIldlYklucHV0RXZlbnQuaCIKKyNpbmNsdWRlICJXZWJJbnB1dEV2ZW50Q29u
dmVyc2lvbi5oIgorI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rl
c3QuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OworCituYW1lc3BhY2UgeworCitjbGFzcyBUZXN0V2ViQ29yZVdpZGdldCA6IHB1YmxpYyBXZWJD
b3JlOjpXaWRnZXQgeworIHB1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RnJhbWVSZWN0KGNv
bnN0IEludFJlY3QmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3Qg
SW50UmVjdCYpIHsgfQorICAgIHZvaWQgZGVyZWYoKSB7IGRlcmVmQmFzZSgpOyB9Cit9OworCitj
bGFzcyBUZXN0UGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlciA6IHB1YmxpYyBQbGF0Zm9ybVdoZWVs
RXZlbnRCdWlsZGVyIHsKKyBwdWJsaWM6CisgICAgVGVzdFBsYXRmb3JtV2hlZWxFdmVudEJ1aWxk
ZXIoV2ViQ29yZTo6V2lkZ2V0KiB3LCBjb25zdCBXZWJQb2ludCYgd3AxLAorICAgICAgICBjb25z
dCBXZWJQb2ludCYgd3AyLCBmbG9hdCB4LCBmbG9hdCB5KSAKKyAgICAgICAgOiBQbGF0Zm9ybVdo
ZWVsRXZlbnRCdWlsZGVyKHcsIHdwMSwgd3AyLCB4LCB5KSB7IH0KKyAgICBib29sIGlzQnVpbHRS
aWdodChjb25zdCBJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBzY3JlZW5Qb3Np
dGlvbiwKKyAgICAgICAgZmxvYXQgZGVsdGFYLCBmbG9hdCBkZWx0YVkpOworfTsKKworYm9vbCBU
ZXN0UGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlcjo6aXNCdWlsdFJpZ2h0KGNvbnN0IEludFBvaW50
JiBwb3NpdGlvbiwKKyAgICAgICAgY29uc3QgSW50UG9pbnQmIHNjcmVlblBvc2l0aW9uLCBmbG9h
dCBkZWx0YVgsIGZsb2F0IGRlbHRhWSkgeworICAgIGJvb2wgYnVpbGRSaWdodCA9IHRydWU7CisK
KyAgICByZXR1cm4gbV9wb3NpdGlvbiA9PSBwb3NpdGlvbgorICAgICAgICAgICAgJiYgbV9nbG9i
YWxQb3NpdGlvbiA9PSBzY3JlZW5Qb3NpdGlvbgorICAgICAgICAgICAgJiYgbV9kZWx0YVggPT0g
ZGVsdGFYCisgICAgICAgICAgICAmJiBtX2RlbHRhWSA9PSBkZWx0YVkKKyAgICAgICAgICAgICYm
ICFtX3doZWVsVGlja3NYIC8qID09IDAgKi8KKyAgICAgICAgICAgICYmICFtX3doZWVsVGlja3NZ
IC8qPT0gMCovCisgICAgICAgICAgICAmJiBtX2dyYW51bGFyaXR5ID09IFNjcm9sbEJ5UGl4ZWxX
aGVlbEV2ZW50CisgICAgICAgICAgICAmJiAhbV9pc0FjY2VwdGVkIC8qPT0gZmFsc2UqLworICAg
ICAgICAgICAgJiYgIW1fc2hpZnRLZXkgLyo9PSBmYWxzZSAqLworICAgICAgICAgICAgJiYgIW1f
Y3RybEtleSAvKj09IGZhbHNlICovCisgICAgICAgICAgICAmJiAhbV9hbHRLZXkgLyo9PSBmYWxz
ZSAqLworICAgICAgICAgICAgJiYgIW1fbWV0YUtleSAvKj09IGZhbHNlICovOworfQorCisKK2Ns
YXNzIFRlc3RHZXN0dXJlU2Nyb2xsIDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHVibGljOgor
ICAgIFRlc3RHZXN0dXJlU2Nyb2xsKCkgeyB9CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIHZv
aWQgU2V0VXAoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7IH0KK307CisKK1RF
U1RfRihUZXN0R2VzdHVyZVNjcm9sbCwgUGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlcikKK3sKKyAg
ICBUZXN0V2ViQ29yZVdpZGdldCB0ZXN0V2lkZ2V0OworICAgIHRlc3RXaWRnZXQucmVsYXhBZG9w
dGlvblJlcXVpcmVtZW50KCk7CisKKyAgICBjb25zdCBXZWJQb2ludCB3cDEoMSwgMiksIHdwMigz
LCAyKTsKKyAgICBjb25zdCBJbnRQb2ludCBpcDEoMSwgMiksIGlwMigzLCAyKTsKKyAgCisgICAg
VGVzdFBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXIgcHdlYigmdGVzdFdpZGdldCwgd3AxLCB3cDIs
IDEuMGYsIDIuMmYpOworICAgIEFTU0VSVF9UUlVFKHB3ZWIuaXNCdWlsdFJpZ2h0KAorICAgICAg
ICB0ZXN0V2lkZ2V0LmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhpcDEpLAorICAgICAgICB0
ZXN0V2lkZ2V0LmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhpcDIpLAorICAgICAgICAxLjBm
LCAyLjJmKSk7CisKKyAgICB0ZXN0V2lkZ2V0LmRlcmVmKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUG9wdXBNZW51VGVzdC5jcHAgYi9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvUG9wdXBNZW51VGVzdC5jcHAKaW5kZXggYWVmMjljZi4uZDk2
MDU1YSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BvcHVwTWVudVRlc3QuY3Bw
CisrKyBiL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Qb3B1cE1lbnVUZXN0LmNwcApAQCAtMTQyLDYg
KzE0Miw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYlRleHRJbnB1dFR5cGUgdGV4dElucHV0
VHlwZSgpIHsgcmV0dXJuIFdlYktpdDo6V2ViVGV4dElucHV0VHlwZU5vbmU7IH0KICAgICB2aXJ0
dWFsIFdlYlJlY3QgY2FyZXRPclNlbGVjdGlvbkJvdW5kcygpIHsgcmV0dXJuIFdlYlJlY3QoKTsg
fQogICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0RGlyZWN0aW9uKFdlYlRleHREaXJlY3Rpb24pIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBnZXN0dXJlU2Nyb2xsKGNvbnN0IFdlYlBvaW50JiBwb3NpdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJQb2ludCYgc2NyZWVu
UG9zaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZGVsdGFYLCBm
bG9hdCBkZWx0YVkpIHsgfQogfTsKIAogY2xhc3MgVGVzdFdlYlZpZXdDbGllbnQgOiBwdWJsaWMg
V2ViVmlld0NsaWVudCB7Cg==
</data>
<flag name="review"
          id="56941"
          type_id="1"
          status="-"
          setter="fishd"
    />
    <flag name="commit-queue"
          id="56942"
          type_id="3"
          status="-"
          setter="dglazkov"
    />
          </attachment>
      

    </bug>

</bugzilla>