<?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>157415</bug_id>
          
          <creation_ts>2016-05-05 23:01:12 -0700</creation_ts>
          <short_desc>Refactor FocusController::findFocusableElementRecursively</short_desc>
          <delta_ts>2016-05-09 09:19: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>UI Events</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>151379</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1190626</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-05-05 23:01:12 -0700</bug_when>
    <thetext>FocusController::findFocusableElementRecursively and FocusController::nextFocusableElement/previousFocusableElement are named backwards.
The former finds a focusable element and the latter two finds a focusable element or a shadow host.

Fix this mess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190642</commentid>
    <comment_count>1</comment_count>
      <attachid>278240</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-05-06 00:04:38 -0700</bug_when>
    <thetext>Created attachment 278240
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190646</commentid>
    <comment_count>2</comment_count>
      <attachid>278243</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-05-06 00:18:29 -0700</bug_when>
    <thetext>Created attachment 278243
Renamed one more function</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190965</commentid>
    <comment_count>3</comment_count>
      <attachid>278243</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-07 12:50:14 -0700</bug_when>
    <thetext>Comment on attachment 278243
Renamed one more function

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

I am getting lost in all these super-long function names. The new names do seem more accurate and precise.

&gt; Source/WebCore/page/FocusController.cpp:435
&gt; +    while (owner) {

This would be more readable as a for loop, but I guess it’s hard to get outerScope into something visible in the loop condition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191185</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-05-09 08:42:47 -0700</bug_when>
    <thetext>Thanks for the review!

(In reply to comment #3)
&gt; Comment on attachment 278243 [details]
&gt; Renamed one more function
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=278243&amp;action=review
&gt; 
&gt; I am getting lost in all these super-long function names. The new names do
&gt; seem more accurate and precise.

Hopefully next round of cleanup will help.

&gt; &gt; Source/WebCore/page/FocusController.cpp:435
&gt; &gt; +    while (owner) {
&gt; 
&gt; This would be more readable as a for loop, but I guess it’s hard to get
&gt; outerScope into something visible in the loop condition.

Yeah, I thought about the same thing but I didn&apos;t want to move FocusNavigationScope out of the loop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191191</commentid>
    <comment_count>5</comment_count>
      <attachid>278243</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-09 09:19:34 -0700</bug_when>
    <thetext>Comment on attachment 278243
Renamed one more function

Clearing flags on attachment: 278243

Committed r200576: &lt;http://trac.webkit.org/changeset/200576&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191192</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-09 09:19:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278240</attachid>
            <date>2016-05-06 00:04:38 -0700</date>
            <delta_ts>2016-05-06 00:18:26 -0700</delta_ts>
            <desc>Cleanup</desc>
            <filename>bug-157415-20160506000519.patch</filename>
            <type>text/plain</type>
            <size>13739</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMDUwNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDE2LTA1LTA1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlZmFjdG9yIEZvY3VzQ29udHJv
bGxlcjo6ZmluZEZvY3VzYWJsZUVsZW1lbnRSZWN1cnNpdmVseQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3NDE1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3IgRm9jdXNDb250cm9sbGVyOjpm
aW5kRm9jdXNhYmxlRWxlbWVudFJlY3Vyc2l2ZWx5IGFuZCByZWxhdGVkIGZ1bmN0aW9ucy4gRXh0
cmFjdGVkIHR3byBmdW5jdGlvbnM6CisgICAgICAgIG5leHRGb2N1c2FibGVFbGVtZW50V2l0aGlu
U2NvcGUgYW5kIHByZXZpb3VzRm9jdXNhYmxlRWxlbWVudFdpdGhpblNjb3BlIG91dCBvZiBpdCBz
aW5jZSB0aGV5IGRpZG4ndCByZWFsbHkgc2hhcmUKKyAgICAgICAgYW55IGNvZGUgb3RoZXIgdGhh
biBjYWxsaW5nIGZpbmRGb2N1c2FibGVFbGVtZW50IGF0IHRoZSBiZWdpbm5pbmcuCisKKyAgICAg
ICAgQWxzbyByZW5hbWVkIGludGVybmFsIHZhcmlhbnQgb2YgbmV4dEZvY3VzYWJsZUVsZW1lbnQg
YW5kIHByZXZpb3VzRm9jdXNhYmxlRWxlbWVudCB0byBuZXh0Rm9jdXNhYmxlRWxlbWVudE9yU2Nv
cGVPd25lcgorICAgICAgICBhbmQgcHJldmlvdXNGb2N1c2FibGVFbGVtZW50T3JTY29wZU93bmVy
LiBJdCB3YXMgY29uZnVzaW5nIHRvIGhhdmUgdGhlc2UgaW50ZXJuYWwgZnVuY3Rpb25zIGluIGFk
ZGl0aW9uIHRvIHB1YmxpYworICAgICAgICBtZW1iZXIgZnVuY3Rpb25zIHRoYXQgYXJlIHVzZWQg
aW4gT2JqZWN0aXZlLUMgRE9NIEFQSS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXJlIGFkZGVk
IHNpbmNlIHRoZXJlIHNob3VsZCBiZSBubyBiZWhhdmlvcmFsIGNoYW5nZS4KKworICAgICAgICAq
IHBhZ2UvRm9jdXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJv
bGxlcjo6YWR2YW5jZUZvY3VzSW5Eb2N1bWVudE9yZGVyKTogVXNlIGZpbmRGb2N1c2FibGVFbGVt
ZW50QWNyb3NzRm9jdXNTY29wZSBpbnN0ZWFkIG9mIG1hbnVhbGx5CisgICAgICAgIGNhbGxpbmcg
ZmluZEZvY3VzYWJsZUVsZW1lbnRSZWN1cnNpdmVseSBhbmQgZmluZEZvY3VzYWJsZUVsZW1lbnRE
ZXNjZW5kaW5nRG93bkludG9GcmFtZURvY3VtZW50IHNlcGFyYXRlbHkuCisgICAgICAgIChXZWJD
b3JlOjpGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2FibGVFbGVtZW50QWNyb3NzRm9jdXNTY29w
ZSk6IE5vdyB0aGF0IGZpbmRGb2N1c2FibGVFbGVtZW50V2l0aGluU2NvcGUgY2FsbHMKKyAgICAg
ICAgZmluZEZvY3VzYWJsZUVsZW1lbnREZXNjZW5kaW5nRG93bkludG9GcmFtZURvY3VtZW50IGlu
dGVybmFsbHksIHRoZXJlIGlzIG5vIG5lZWQgdG8ga2VlcCBhcm91bmQgImZvdW5kIiBsb2NhbCB2
YXJpYWJsZS4KKyAgICAgICAgSW50cm9kdWNlIGEgZmV3IGVhcmx5IGV4aXN0cyBmb3IgYSBiZXR0
ZXIgY2xhcml0eS4KKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6ZmluZEZvY3Vz
YWJsZUVsZW1lbnRXaXRoaW5TY29wZSk6IFJlbmFtZWQgZnJvbSBmaW5kRm9jdXNhYmxlRWxlbWVu
dFJlY3Vyc2l2ZWx5LiBBbHNvIGNhbGwKKyAgICAgICAgZmluZEZvY3VzYWJsZUVsZW1lbnREZXNj
ZW5kaW5nRG93bkludG9GcmFtZURvY3VtZW50IGhlcmUgaW5zdGVhZCBvZiBmaW5kRm9jdXNhYmxl
RWxlbWVudEFjcm9zc0ZvY3VzU2NvcGUuCisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xs
ZXI6Om5leHRGb2N1c2FibGVFbGVtZW50V2l0aGluU2NvcGUpOiBFeHRyYWN0ZWQgZnJvbSBmaW5k
Rm9jdXNhYmxlRWxlbWVudFJlY3Vyc2l2ZWx5LgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250
cm9sbGVyOjpwcmV2aW91c0ZvY3VzYWJsZUVsZW1lbnRXaXRoaW5TY29wZSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpmaW5kRm9jdXNhYmxlRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6Om5leHRGb2N1c2FibGVFbGVtZW50KTog
QWRkZWQgYSBGSVhNRS4KKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6cHJldmlv
dXNGb2N1c2FibGVFbGVtZW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRy
b2xsZXI6Om5leHRGb2N1c2FibGVFbGVtZW50T3JTY29wZU93bmVyKTogUmVuYW1lZCBmcm9tIG5l
eHRGb2N1c2FibGVFbGVtZW50IGZvciBjbGFyaXR5LgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXND
b250cm9sbGVyOjpwcmV2aW91c0ZvY3VzYWJsZUVsZW1lbnRPclNjb3BlT3duZXIpOiBEaXR0byBm
cm9tIG5leHRGb2N1c2FibGVFbGVtZW50LgorICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVy
Lmg6CisKIDIwMTYtMDUtMDUgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbaU9TXSBXZWJDb3JlIGRvZXMgbm90IG5lZWQgdG8gbGluayB0byBDb3JlQXVkaW8s
IEdyYXBoaWNzU2VydmljZXMsIFN5c3RlbUNvbmZpZ3VyYXRpb24gZnJhbWV3b3JrcwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjAwNDc4KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNjYsOCArMzY2LDcgQEAgYm9vbCBGb2N1c0NvbnRyb2xsZXI6OmFkdmFuY2VGb2N1c0lu
RG9jdQogICAgICAgICB9CiAKICAgICAgICAgLy8gQ2hyb21lIGRvZXNuJ3Qgd2FudCBmb2N1cywg
c28gd2Ugc2hvdWxkIHdyYXAgZm9jdXMuCi0gICAgICAgIGVsZW1lbnQgPSBmaW5kRm9jdXNhYmxl
RWxlbWVudFJlY3Vyc2l2ZWx5KGRpcmVjdGlvbiwgRm9jdXNOYXZpZ2F0aW9uU2NvcGU6OnNjb3Bl
T2YoKm1fcGFnZS5tYWluRnJhbWUoKS5kb2N1bWVudCgpKSwgMCwgZXZlbnQpOwotICAgICAgICBl
bGVtZW50ID0gZmluZEZvY3VzYWJsZUVsZW1lbnREZXNjZW5kaW5nRG93bkludG9GcmFtZURvY3Vt
ZW50KGRpcmVjdGlvbiwgZWxlbWVudC5nZXQoKSwgZXZlbnQpOworICAgICAgICBlbGVtZW50ID0g
ZmluZEZvY3VzYWJsZUVsZW1lbnRBY3Jvc3NGb2N1c1Njb3BlKGRpcmVjdGlvbiwgRm9jdXNOYXZp
Z2F0aW9uU2NvcGU6OnNjb3BlT2YoKm1fcGFnZS5tYWluRnJhbWUoKS5kb2N1bWVudCgpKSwgbnVs
bHB0ciwgZXZlbnQpOwogCiAgICAgICAgIGlmICghZWxlbWVudCkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTQyMSw0OCArNDIwLDY1IEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjphZHZh
bmNlRm9jdXNJbkRvY3UKIEVsZW1lbnQqIEZvY3VzQ29udHJvbGxlcjo6ZmluZEZvY3VzYWJsZUVs
ZW1lbnRBY3Jvc3NGb2N1c1Njb3BlKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgRm9j
dXNOYXZpZ2F0aW9uU2NvcGUmIHNjb3BlLCBOb2RlKiBjdXJyZW50Tm9kZSwgS2V5Ym9hcmRFdmVu
dCogZXZlbnQpCiB7CiAgICAgQVNTRVJUKCFpczxFbGVtZW50PihjdXJyZW50Tm9kZSkgfHwgIWlz
Tm9uRm9jdXNhYmxlU2hhZG93SG9zdCgqZG93bmNhc3Q8RWxlbWVudD4oY3VycmVudE5vZGUpLCAq
ZXZlbnQpKTsKLSAgICBFbGVtZW50KiBmb3VuZDsKKwogICAgIGlmIChjdXJyZW50Tm9kZSAmJiBk
aXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb25Gb3J3YXJkICYmIGlzRm9jdXNhYmxlU2hhZG93SG9z
dCgqY3VycmVudE5vZGUsICpldmVudCkpIHsKLSAgICAgICAgRWxlbWVudCogZm91bmRJbklubmVy
Rm9jdXNTY29wZSA9IGZpbmRGb2N1c2FibGVFbGVtZW50UmVjdXJzaXZlbHkoZGlyZWN0aW9uLCBG
b2N1c05hdmlnYXRpb25TY29wZTo6c2NvcGVPd25lZEJ5U2hhZG93SG9zdChkb3duY2FzdDxFbGVt
ZW50PigqY3VycmVudE5vZGUpKSwgMCwgZXZlbnQpOwotICAgICAgICBmb3VuZCA9IGZvdW5kSW5J
bm5lckZvY3VzU2NvcGUgPyBmb3VuZEluSW5uZXJGb2N1c1Njb3BlIDogZmluZEZvY3VzYWJsZUVs
ZW1lbnRSZWN1cnNpdmVseShkaXJlY3Rpb24sIHNjb3BlLCBjdXJyZW50Tm9kZSwgZXZlbnQpOwot
ICAgIH0gZWxzZQotICAgICAgICBmb3VuZCA9IGZpbmRGb2N1c2FibGVFbGVtZW50UmVjdXJzaXZl
bHkoZGlyZWN0aW9uLCBzY29wZSwgY3VycmVudE5vZGUsIGV2ZW50KTsKKyAgICAgICAgaWYgKEVs
ZW1lbnQqIGNhbmRpZGF0ZUluSW5uZXJTY29wZSA9IGZpbmRGb2N1c2FibGVFbGVtZW50V2l0aGlu
U2NvcGUoZGlyZWN0aW9uLCBGb2N1c05hdmlnYXRpb25TY29wZTo6c2NvcGVPd25lZEJ5U2hhZG93
SG9zdChkb3duY2FzdDxFbGVtZW50PigqY3VycmVudE5vZGUpKSwgMCwgZXZlbnQpKQorICAgICAg
ICAgICAgcmV0dXJuIGNhbmRpZGF0ZUluSW5uZXJTY29wZTsKKyAgICB9CisKKyAgICBpZiAoRWxl
bWVudCogY2FuZGlkYXRlSW5DdXJyZW50U2NvcGUgPSBmaW5kRm9jdXNhYmxlRWxlbWVudFdpdGhp
blNjb3BlKGRpcmVjdGlvbiwgc2NvcGUsIGN1cnJlbnROb2RlLCBldmVudCkpCisgICAgICAgIHJl
dHVybiBjYW5kaWRhdGVJbkN1cnJlbnRTY29wZTsKIAogICAgIC8vIElmIHRoZXJlJ3Mgbm8gZm9j
dXNhYmxlIG5vZGUgdG8gYWR2YW5jZSB0bywgbW92ZSB1cCB0aGUgZm9jdXMgc2NvcGVzIHVudGls
IHdlIGZpbmQgb25lLgogICAgIEVsZW1lbnQqIG93bmVyID0gc2NvcGUub3duZXIoKTsKLSAgICB3
aGlsZSAoIWZvdW5kICYmIG93bmVyKSB7Ci0gICAgICAgIEZvY3VzTmF2aWdhdGlvblNjb3BlIGN1
cnJlbnRTY29wZSA9IEZvY3VzTmF2aWdhdGlvblNjb3BlOjpzY29wZU9mKCpvd25lcik7Ci0gICAg
ICAgIGlmIChkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb25CYWNrd2FyZCAmJiBpc0ZvY3VzYWJs
ZVNoYWRvd0hvc3QoKm93bmVyLCAqZXZlbnQpKSB7Ci0gICAgICAgICAgICBmb3VuZCA9IG93bmVy
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZm91bmQgPSBmaW5kRm9j
dXNhYmxlRWxlbWVudFJlY3Vyc2l2ZWx5KGRpcmVjdGlvbiwgY3VycmVudFNjb3BlLCBvd25lciwg
ZXZlbnQpOwotICAgICAgICBvd25lciA9IGN1cnJlbnRTY29wZS5vd25lcigpOworICAgIHdoaWxl
IChvd25lcikgeworICAgICAgICBGb2N1c05hdmlnYXRpb25TY29wZSBvdXRlclNjb3BlID0gRm9j
dXNOYXZpZ2F0aW9uU2NvcGU6OnNjb3BlT2YoKm93bmVyKTsKKyAgICAgICAgaWYgKGRpcmVjdGlv
biA9PSBGb2N1c0RpcmVjdGlvbkJhY2t3YXJkICYmIGlzRm9jdXNhYmxlU2hhZG93SG9zdCgqb3du
ZXIsICpldmVudCkpCisgICAgICAgICAgICByZXR1cm4gZmluZEZvY3VzYWJsZUVsZW1lbnREZXNj
ZW5kaW5nRG93bkludG9GcmFtZURvY3VtZW50KGRpcmVjdGlvbiwgb3duZXIsIGV2ZW50KTsKKyAg
ICAgICAgaWYgKEVsZW1lbnQqIGNhbmRpZGF0ZUluT3V0ZXJTY29wZSA9IGZpbmRGb2N1c2FibGVF
bGVtZW50V2l0aGluU2NvcGUoZGlyZWN0aW9uLCBvdXRlclNjb3BlLCBvd25lciwgZXZlbnQpKQor
ICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZUluT3V0ZXJTY29wZTsKKyAgICAgICAgb3duZXIg
PSBvdXRlclNjb3BlLm93bmVyKCk7CiAgICAgfQotICAgIGZvdW5kID0gZmluZEZvY3VzYWJsZUVs
ZW1lbnREZXNjZW5kaW5nRG93bkludG9GcmFtZURvY3VtZW50KGRpcmVjdGlvbiwgZm91bmQsIGV2
ZW50KTsKLSAgICByZXR1cm4gZm91bmQ7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUVsZW1l
bnQqIEZvY3VzQ29udHJvbGxlcjo6ZmluZEZvY3VzYWJsZUVsZW1lbnRSZWN1cnNpdmVseShGb2N1
c0RpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IEZvY3VzTmF2aWdhdGlvblNjb3BlJiBzY29wZSwg
Tm9kZSogc3RhcnQsIEtleWJvYXJkRXZlbnQqIGV2ZW50KQorRWxlbWVudCogRm9jdXNDb250cm9s
bGVyOjpmaW5kRm9jdXNhYmxlRWxlbWVudFdpdGhpblNjb3BlKEZvY3VzRGlyZWN0aW9uIGRpcmVj
dGlvbiwgY29uc3QgRm9jdXNOYXZpZ2F0aW9uU2NvcGUmIHNjb3BlLCBOb2RlKiBzdGFydCwgS2V5
Ym9hcmRFdmVudCogZXZlbnQpCiB7CiAgICAgLy8gU3RhcnRpbmcgbm9kZSBpcyBleGNsdXNpdmUu
Ci0gICAgRWxlbWVudCogZm91bmQgPSBmaW5kRm9jdXNhYmxlRWxlbWVudChkaXJlY3Rpb24sIHNj
b3BlLCBzdGFydCwgZXZlbnQpOworICAgIEVsZW1lbnQqIGNhbmRpZGF0ZSA9IGRpcmVjdGlvbiA9
PSBGb2N1c0RpcmVjdGlvbkZvcndhcmQKKyAgICAgICAgPyBuZXh0Rm9jdXNhYmxlRWxlbWVudFdp
dGhpblNjb3BlKHNjb3BlLCBzdGFydCwgZXZlbnQpCisgICAgICAgIDogcHJldmlvdXNGb2N1c2Fi
bGVFbGVtZW50V2l0aGluU2NvcGUoc2NvcGUsIHN0YXJ0LCBldmVudCk7CisgICAgcmV0dXJuIGZp
bmRGb2N1c2FibGVFbGVtZW50RGVzY2VuZGluZ0Rvd25JbnRvRnJhbWVEb2N1bWVudChkaXJlY3Rp
b24sIGNhbmRpZGF0ZSwgZXZlbnQpOworfQorCitFbGVtZW50KiBGb2N1c0NvbnRyb2xsZXI6Om5l
eHRGb2N1c2FibGVFbGVtZW50V2l0aGluU2NvcGUoY29uc3QgRm9jdXNOYXZpZ2F0aW9uU2NvcGUm
IHNjb3BlLCBOb2RlKiBzdGFydCwgS2V5Ym9hcmRFdmVudCogZXZlbnQpCit7CisgICAgRWxlbWVu
dCogZm91bmQgPSBuZXh0Rm9jdXNhYmxlRWxlbWVudE9yU2NvcGVPd25lcihzY29wZSwgc3RhcnQs
IGV2ZW50KTsKICAgICBpZiAoIWZvdW5kKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBp
ZiAoZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0aW9uRm9yd2FyZCkgewotICAgICAgICBpZiAoIWlz
Tm9uRm9jdXNhYmxlU2hhZG93SG9zdCgqZm91bmQsICpldmVudCkpCi0gICAgICAgICAgICByZXR1
cm4gZm91bmQ7Ci0gICAgICAgIEVsZW1lbnQqIGZvdW5kSW5Jbm5lckZvY3VzU2NvcGUgPSBmaW5k
Rm9jdXNhYmxlRWxlbWVudFJlY3Vyc2l2ZWx5KGRpcmVjdGlvbiwgRm9jdXNOYXZpZ2F0aW9uU2Nv
cGU6OnNjb3BlT3duZWRCeVNoYWRvd0hvc3QoKmZvdW5kKSwgMCwgZXZlbnQpOwotICAgICAgICBy
ZXR1cm4gZm91bmRJbklubmVyRm9jdXNTY29wZSA/IGZvdW5kSW5Jbm5lckZvY3VzU2NvcGUgOiBm
aW5kRm9jdXNhYmxlRWxlbWVudFJlY3Vyc2l2ZWx5KGRpcmVjdGlvbiwgc2NvcGUsIGZvdW5kLCBl
dmVudCk7CisgICAgaWYgKGlzTm9uRm9jdXNhYmxlU2hhZG93SG9zdCgqZm91bmQsICpldmVudCkp
IHsKKyAgICAgICAgaWYgKEVsZW1lbnQqIGZvdW5kSW5Jbm5lckZvY3VzU2NvcGUgPSBuZXh0Rm9j
dXNhYmxlRWxlbWVudFdpdGhpblNjb3BlKEZvY3VzTmF2aWdhdGlvblNjb3BlOjpzY29wZU93bmVk
QnlTaGFkb3dIb3N0KCpmb3VuZCksIDAsIGV2ZW50KSkKKyAgICAgICAgICAgIHJldHVybiBmb3Vu
ZEluSW5uZXJGb2N1c1Njb3BlOworICAgICAgICByZXR1cm4gbmV4dEZvY3VzYWJsZUVsZW1lbnRX
aXRoaW5TY29wZShzY29wZSwgZm91bmQsIGV2ZW50KTsKICAgICB9Ci0gICAgQVNTRVJUKGRpcmVj
dGlvbiA9PSBGb2N1c0RpcmVjdGlvbkJhY2t3YXJkKTsKKyAgICByZXR1cm4gZm91bmQ7Cit9CisK
K0VsZW1lbnQqIEZvY3VzQ29udHJvbGxlcjo6cHJldmlvdXNGb2N1c2FibGVFbGVtZW50V2l0aGlu
U2NvcGUoY29uc3QgRm9jdXNOYXZpZ2F0aW9uU2NvcGUmIHNjb3BlLCBOb2RlKiBzdGFydCwgS2V5
Ym9hcmRFdmVudCogZXZlbnQpCit7CisgICAgRWxlbWVudCogZm91bmQgPSBwcmV2aW91c0ZvY3Vz
YWJsZUVsZW1lbnRPclNjb3BlT3duZXIoc2NvcGUsIHN0YXJ0LCBldmVudCk7CisgICAgaWYgKCFm
b3VuZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKGlzRm9jdXNhYmxlU2hhZG93
SG9zdCgqZm91bmQsICpldmVudCkpIHsKLSAgICAgICAgRWxlbWVudCogZm91bmRJbklubmVyRm9j
dXNTY29wZSA9IGZpbmRGb2N1c2FibGVFbGVtZW50UmVjdXJzaXZlbHkoZGlyZWN0aW9uLCBGb2N1
c05hdmlnYXRpb25TY29wZTo6c2NvcGVPd25lZEJ5U2hhZG93SG9zdCgqZm91bmQpLCAwLCBldmVu
dCk7Ci0gICAgICAgIHJldHVybiBmb3VuZEluSW5uZXJGb2N1c1Njb3BlID8gZm91bmRJbklubmVy
Rm9jdXNTY29wZSA6IGZvdW5kOworICAgICAgICAvLyBTZWFyY2ggYW4gaW5uZXIgZm9jdXNhYmxl
IGVsZW1lbnQgaW4gdGhlIHNoYWRvdyB0cmVlIGZyb20gdGhlIGVuZC4KKyAgICAgICAgaWYgKEVs
ZW1lbnQqIGZvdW5kSW5Jbm5lckZvY3VzU2NvcGUgPSBwcmV2aW91c0ZvY3VzYWJsZUVsZW1lbnRX
aXRoaW5TY29wZShGb2N1c05hdmlnYXRpb25TY29wZTo6c2NvcGVPd25lZEJ5U2hhZG93SG9zdCgq
Zm91bmQpLCAwLCBldmVudCkpCisgICAgICAgICAgICByZXR1cm4gZm91bmRJbklubmVyRm9jdXNT
Y29wZTsKKyAgICAgICAgcmV0dXJuIGZvdW5kOwogICAgIH0KICAgICBpZiAoaXNOb25Gb2N1c2Fi
bGVTaGFkb3dIb3N0KCpmb3VuZCwgKmV2ZW50KSkgewotICAgICAgICBFbGVtZW50KiBmb3VuZElu
SW5uZXJGb2N1c1Njb3BlID0gZmluZEZvY3VzYWJsZUVsZW1lbnRSZWN1cnNpdmVseShkaXJlY3Rp
b24sIEZvY3VzTmF2aWdhdGlvblNjb3BlOjpzY29wZU93bmVkQnlTaGFkb3dIb3N0KCpmb3VuZCks
IDAsIGV2ZW50KTsKLSAgICAgICAgcmV0dXJuIGZvdW5kSW5Jbm5lckZvY3VzU2NvcGUgPyBmb3Vu
ZEluSW5uZXJGb2N1c1Njb3BlIDpmaW5kRm9jdXNhYmxlRWxlbWVudFJlY3Vyc2l2ZWx5KGRpcmVj
dGlvbiwgc2NvcGUsIGZvdW5kLCBldmVudCk7CisgICAgICAgIGlmIChFbGVtZW50KiBmb3VuZElu
SW5uZXJGb2N1c1Njb3BlID0gcHJldmlvdXNGb2N1c2FibGVFbGVtZW50V2l0aGluU2NvcGUoRm9j
dXNOYXZpZ2F0aW9uU2NvcGU6OnNjb3BlT3duZWRCeVNoYWRvd0hvc3QoKmZvdW5kKSwgMCwgZXZl
bnQpKQorICAgICAgICAgICAgcmV0dXJuIGZvdW5kSW5Jbm5lckZvY3VzU2NvcGU7CisgICAgICAg
IHJldHVybiBwcmV2aW91c0ZvY3VzYWJsZUVsZW1lbnRXaXRoaW5TY29wZShzY29wZSwgZm91bmQs
IGV2ZW50KTsKICAgICB9CiAgICAgcmV0dXJuIGZvdW5kOwogfQpAQCAtNDcwLDggKzQ4Niw4IEBA
IEVsZW1lbnQqIEZvY3VzQ29udHJvbGxlcjo6ZmluZEZvY3VzYWJsZUUKIEVsZW1lbnQqIEZvY3Vz
Q29udHJvbGxlcjo6ZmluZEZvY3VzYWJsZUVsZW1lbnQoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9u
LCBjb25zdCBGb2N1c05hdmlnYXRpb25TY29wZSYgc2NvcGUsIE5vZGUqIG5vZGUsIEtleWJvYXJk
RXZlbnQqIGV2ZW50KQogewogICAgIHJldHVybiAoZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0aW9u
Rm9yd2FyZCkKLSAgICAgICAgPyBuZXh0Rm9jdXNhYmxlRWxlbWVudChzY29wZSwgbm9kZSwgZXZl
bnQpCi0gICAgICAgIDogcHJldmlvdXNGb2N1c2FibGVFbGVtZW50KHNjb3BlLCBub2RlLCBldmVu
dCk7CisgICAgICAgID8gbmV4dEZvY3VzYWJsZUVsZW1lbnRPclNjb3BlT3duZXIoc2NvcGUsIG5v
ZGUsIGV2ZW50KQorICAgICAgICA6IHByZXZpb3VzRm9jdXNhYmxlRWxlbWVudE9yU2NvcGVPd25l
cihzY29wZSwgbm9kZSwgZXZlbnQpOwogfQogCiBFbGVtZW50KiBGb2N1c0NvbnRyb2xsZXI6OmZp
bmRFbGVtZW50V2l0aEV4YWN0VGFiSW5kZXgoY29uc3QgRm9jdXNOYXZpZ2F0aW9uU2NvcGUmIHNj
b3BlLCBOb2RlKiBzdGFydCwgaW50IHRhYkluZGV4LCBLZXlib2FyZEV2ZW50KiBldmVudCwgRm9j
dXNEaXJlY3Rpb24gZGlyZWN0aW9uKQpAQCAtNTI4LDE3ICs1NDQsMTkgQEAgc3RhdGljIEVsZW1l
bnQqIHByZXZpb3VzRWxlbWVudFdpdGhMb3dlcgogCiBFbGVtZW50KiBGb2N1c0NvbnRyb2xsZXI6
Om5leHRGb2N1c2FibGVFbGVtZW50KE5vZGUmIHN0YXJ0KQogeworICAgIC8vIEZJWE1FOiBUaGlz
IGNhbiByZXR1cm4gYSBub24tZm9jdXNhYmxlIHNoYWRvdyBob3N0LgogICAgIFJlZjxLZXlib2Fy
ZEV2ZW50PiBrZXlFdmVudCA9IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZUZvckR1bW15KCk7Ci0gICAg
cmV0dXJuIG5leHRGb2N1c2FibGVFbGVtZW50KEZvY3VzTmF2aWdhdGlvblNjb3BlOjpzY29wZU9m
KHN0YXJ0KSwgJnN0YXJ0LCBrZXlFdmVudC5wdHIoKSk7CisgICAgcmV0dXJuIG5leHRGb2N1c2Fi
bGVFbGVtZW50T3JTY29wZU93bmVyKEZvY3VzTmF2aWdhdGlvblNjb3BlOjpzY29wZU9mKHN0YXJ0
KSwgJnN0YXJ0LCBrZXlFdmVudC5wdHIoKSk7CiB9CiAKIEVsZW1lbnQqIEZvY3VzQ29udHJvbGxl
cjo6cHJldmlvdXNGb2N1c2FibGVFbGVtZW50KE5vZGUmIHN0YXJ0KQogeworICAgIC8vIEZJWE1F
OiBUaGlzIGNhbiByZXR1cm4gYSBub24tZm9jdXNhYmxlIHNoYWRvdyBob3N0LgogICAgIFJlZjxL
ZXlib2FyZEV2ZW50PiBrZXlFdmVudCA9IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZUZvckR1bW15KCk7
Ci0gICAgcmV0dXJuIHByZXZpb3VzRm9jdXNhYmxlRWxlbWVudChGb2N1c05hdmlnYXRpb25TY29w
ZTo6c2NvcGVPZihzdGFydCksICZzdGFydCwga2V5RXZlbnQucHRyKCkpOworICAgIHJldHVybiBw
cmV2aW91c0ZvY3VzYWJsZUVsZW1lbnRPclNjb3BlT3duZXIoRm9jdXNOYXZpZ2F0aW9uU2NvcGU6
OnNjb3BlT2Yoc3RhcnQpLCAmc3RhcnQsIGtleUV2ZW50LnB0cigpKTsKIH0KIAotRWxlbWVudCog
Rm9jdXNDb250cm9sbGVyOjpuZXh0Rm9jdXNhYmxlRWxlbWVudChjb25zdCBGb2N1c05hdmlnYXRp
b25TY29wZSYgc2NvcGUsIE5vZGUqIHN0YXJ0LCBLZXlib2FyZEV2ZW50KiBldmVudCkKK0VsZW1l
bnQqIEZvY3VzQ29udHJvbGxlcjo6bmV4dEZvY3VzYWJsZUVsZW1lbnRPclNjb3BlT3duZXIoY29u
c3QgRm9jdXNOYXZpZ2F0aW9uU2NvcGUmIHNjb3BlLCBOb2RlKiBzdGFydCwgS2V5Ym9hcmRFdmVu
dCogZXZlbnQpCiB7CiAgICAgaW50IHN0YXJ0VGFiSW5kZXggPSAwOwogICAgIGlmIChzdGFydCAm
JiBpczxFbGVtZW50Pigqc3RhcnQpKQpAQCAtNTc1LDcgKzU5Myw3IEBAIEVsZW1lbnQqIEZvY3Vz
Q29udHJvbGxlcjo6bmV4dEZvY3VzYWJsZUUKICAgICByZXR1cm4gZmluZEVsZW1lbnRXaXRoRXhh
Y3RUYWJJbmRleChzY29wZSwgJnNjb3BlLnJvb3ROb2RlKCksIDAsIGV2ZW50LCBGb2N1c0RpcmVj
dGlvbkZvcndhcmQpOwogfQogCi1FbGVtZW50KiBGb2N1c0NvbnRyb2xsZXI6OnByZXZpb3VzRm9j
dXNhYmxlRWxlbWVudChjb25zdCBGb2N1c05hdmlnYXRpb25TY29wZSYgc2NvcGUsIE5vZGUqIHN0
YXJ0LCBLZXlib2FyZEV2ZW50KiBldmVudCkKK0VsZW1lbnQqIEZvY3VzQ29udHJvbGxlcjo6cHJl
dmlvdXNGb2N1c2FibGVFbGVtZW50T3JTY29wZU93bmVyKGNvbnN0IEZvY3VzTmF2aWdhdGlvblNj
b3BlJiBzY29wZSwgTm9kZSogc3RhcnQsIEtleWJvYXJkRXZlbnQqIGV2ZW50KQogewogICAgIE5v
ZGUqIGxhc3QgPSBudWxscHRyOwogICAgIGZvciAoTm9kZSogbm9kZSA9ICZzY29wZS5yb290Tm9k
ZSgpOyBub2RlOyBub2RlID0gc2NvcGUubGFzdENoaWxkSW5TY29wZShub2RlKSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuaAkocmV2aXNpb24gMjAwNDc4KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODks
NyArODksMTEgQEAgcHJpdmF0ZToKICAgICBib29sIGFkdmFuY2VGb2N1c0luRG9jdW1lbnRPcmRl
cihGb2N1c0RpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCosIGJvb2wgaW5pdGlhbEZvY3VzKTsKIAog
ICAgIEVsZW1lbnQqIGZpbmRGb2N1c2FibGVFbGVtZW50QWNyb3NzRm9jdXNTY29wZShGb2N1c0Rp
cmVjdGlvbiwgY29uc3QgRm9jdXNOYXZpZ2F0aW9uU2NvcGUmIHN0YXJ0U2NvcGUsIE5vZGUqIHN0
YXJ0LCBLZXlib2FyZEV2ZW50Kik7Ci0gICAgRWxlbWVudCogZmluZEZvY3VzYWJsZUVsZW1lbnRS
ZWN1cnNpdmVseShGb2N1c0RpcmVjdGlvbiwgY29uc3QgRm9jdXNOYXZpZ2F0aW9uU2NvcGUmLCBO
b2RlKiBzdGFydCwgS2V5Ym9hcmRFdmVudCopOworCisgICAgRWxlbWVudCogZmluZEZvY3VzYWJs
ZUVsZW1lbnRXaXRoaW5TY29wZShGb2N1c0RpcmVjdGlvbiwgY29uc3QgRm9jdXNOYXZpZ2F0aW9u
U2NvcGUmLCBOb2RlKiBzdGFydCwgS2V5Ym9hcmRFdmVudCopOworICAgIEVsZW1lbnQqIG5leHRG
b2N1c2FibGVFbGVtZW50V2l0aGluU2NvcGUoY29uc3QgRm9jdXNOYXZpZ2F0aW9uU2NvcGUmLCBO
b2RlKiBzdGFydCwgS2V5Ym9hcmRFdmVudCopOworICAgIEVsZW1lbnQqIHByZXZpb3VzRm9jdXNh
YmxlRWxlbWVudFdpdGhpblNjb3BlKGNvbnN0IEZvY3VzTmF2aWdhdGlvblNjb3BlJiwgTm9kZSog
c3RhcnQsIEtleWJvYXJkRXZlbnQqKTsKKwogICAgIEVsZW1lbnQqIGZpbmRGb2N1c2FibGVFbGVt
ZW50RGVzY2VuZGluZ0Rvd25JbnRvRnJhbWVEb2N1bWVudChGb2N1c0RpcmVjdGlvbiwgRWxlbWVu
dCosIEtleWJvYXJkRXZlbnQqKTsKIAogICAgIC8vIFNlYXJjaGVzIHRocm91Z2ggdGhlIGdpdmVu
IHRyZWUgc2NvcGUsIHN0YXJ0aW5nIGZyb20gc3RhcnQgbm9kZSwgZm9yIHRoZSBuZXh0L3ByZXZp
b3VzIHNlbGVjdGFibGUgZWxlbWVudCB0aGF0IGNvbWVzIGFmdGVyL2JlZm9yZSBzdGFydCBub2Rl
LgpAQCAtMTA1LDggKzEwOSw4IEBAIHByaXZhdGU6CiAKICAgICBFbGVtZW50KiBmaW5kRWxlbWVu
dFdpdGhFeGFjdFRhYkluZGV4KGNvbnN0IEZvY3VzTmF2aWdhdGlvblNjb3BlJiwgTm9kZSogc3Rh
cnQsIGludCB0YWJJbmRleCwgS2V5Ym9hcmRFdmVudCosIEZvY3VzRGlyZWN0aW9uKTsKICAgICAK
LSAgICBFbGVtZW50KiBuZXh0Rm9jdXNhYmxlRWxlbWVudChjb25zdCBGb2N1c05hdmlnYXRpb25T
Y29wZSYsIE5vZGUqIHN0YXJ0LCBLZXlib2FyZEV2ZW50Kik7Ci0gICAgRWxlbWVudCogcHJldmlv
dXNGb2N1c2FibGVFbGVtZW50KGNvbnN0IEZvY3VzTmF2aWdhdGlvblNjb3BlJiwgTm9kZSogc3Rh
cnQsIEtleWJvYXJkRXZlbnQqKTsKKyAgICBFbGVtZW50KiBuZXh0Rm9jdXNhYmxlRWxlbWVudE9y
U2NvcGVPd25lcihjb25zdCBGb2N1c05hdmlnYXRpb25TY29wZSYsIE5vZGUqIHN0YXJ0LCBLZXli
b2FyZEV2ZW50Kik7CisgICAgRWxlbWVudCogcHJldmlvdXNGb2N1c2FibGVFbGVtZW50T3JTY29w
ZU93bmVyKGNvbnN0IEZvY3VzTmF2aWdhdGlvblNjb3BlJiwgTm9kZSogc3RhcnQsIEtleWJvYXJk
RXZlbnQqKTsKIAogICAgIGJvb2wgYWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseUluQ29udGFpbmVy
KE5vZGUqIGNvbnRhaW5lciwgY29uc3QgTGF5b3V0UmVjdCYgc3RhcnRpbmdSZWN0LCBGb2N1c0Rp
cmVjdGlvbiwgS2V5Ym9hcmRFdmVudCopOwogICAgIHZvaWQgZmluZEZvY3VzQ2FuZGlkYXRlSW5D
b250YWluZXIoTm9kZSYgY29udGFpbmVyLCBjb25zdCBMYXlvdXRSZWN0JiBzdGFydGluZ1JlY3Qs
IEZvY3VzRGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiwgRm9jdXNDYW5kaWRhdGUmIGNsb3Nlc3Qp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278243</attachid>
            <date>2016-05-06 00:18:29 -0700</date>
            <delta_ts>2016-05-09 09:19:34 -0700</delta_ts>
            <desc>Renamed one more function</desc>
            <filename>bug-157415-20160506001911.patch</filename>
            <type>text/plain</type>
            <size>15038</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMDUwNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDE2LTA1LTA1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlZmFjdG9yIEZvY3VzQ29udHJv
bGxlcjo6ZmluZEZvY3VzYWJsZUVsZW1lbnRSZWN1cnNpdmVseQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3NDE1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3IgRm9jdXNDb250cm9sbGVyOjpm
aW5kRm9jdXNhYmxlRWxlbWVudFJlY3Vyc2l2ZWx5IGFuZCByZWxhdGVkIGZ1bmN0aW9ucy4gRXh0
cmFjdGVkIHR3byBmdW5jdGlvbnM6CisgICAgICAgIG5leHRGb2N1c2FibGVFbGVtZW50V2l0aGlu
U2NvcGUgYW5kIHByZXZpb3VzRm9jdXNhYmxlRWxlbWVudFdpdGhpblNjb3BlIG91dCBvZiBpdCBz
aW5jZSB0aGV5IGRpZG4ndCByZWFsbHkgc2hhcmUKKyAgICAgICAgYW55IGNvZGUgb3RoZXIgdGhh
biBjYWxsaW5nIGZpbmRGb2N1c2FibGVFbGVtZW50IGF0IHRoZSBiZWdpbm5pbmcuCisKKyAgICAg
ICAgQWxzbyByZW5hbWVkIGludGVybmFsIHZhcmlhbnQgb2YgbmV4dEZvY3VzYWJsZUVsZW1lbnQg
YW5kIHByZXZpb3VzRm9jdXNhYmxlRWxlbWVudCB0byBuZXh0Rm9jdXNhYmxlRWxlbWVudE9yU2Nv
cGVPd25lcgorICAgICAgICBhbmQgcHJldmlvdXNGb2N1c2FibGVFbGVtZW50T3JTY29wZU93bmVy
LiBJdCB3YXMgY29uZnVzaW5nIHRvIGhhdmUgdGhlc2UgaW50ZXJuYWwgZnVuY3Rpb25zIGluIGFk
ZGl0aW9uIHRvIHB1YmxpYworICAgICAgICBtZW1iZXIgZnVuY3Rpb25zIHRoYXQgYXJlIHVzZWQg
aW4gT2JqZWN0aXZlLUMgRE9NIEFQSS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXJlIGFkZGVk
IHNpbmNlIHRoZXJlIHNob3VsZCBiZSBubyBiZWhhdmlvcmFsIGNoYW5nZS4KKworICAgICAgICAq
IHBhZ2UvRm9jdXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJv
bGxlcjo6ZmluZEZvY3VzYWJsZUVsZW1lbnREZXNjZW5kaW5nRG93bkludG9GcmFtZURvY3VtZW50
KTogQWRkZWQgYSBGSVhNRS4KKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6YWR2
YW5jZUZvY3VzSW5Eb2N1bWVudE9yZGVyKTogVXNlIGZpbmRGb2N1c2FibGVFbGVtZW50QWNyb3Nz
Rm9jdXNTY29wZSBpbnN0ZWFkIG9mIG1hbnVhbGx5CisgICAgICAgIGNhbGxpbmcgZmluZEZvY3Vz
YWJsZUVsZW1lbnRSZWN1cnNpdmVseSBhbmQgZmluZEZvY3VzYWJsZUVsZW1lbnREZXNjZW5kaW5n
RG93bkludG9GcmFtZURvY3VtZW50IHNlcGFyYXRlbHkuCisgICAgICAgIChXZWJDb3JlOjpGb2N1
c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2FibGVFbGVtZW50QWNyb3NzRm9jdXNTY29wZSk6IE5vdyB0
aGF0IGZpbmRGb2N1c2FibGVFbGVtZW50V2l0aGluU2NvcGUgY2FsbHMKKyAgICAgICAgZmluZEZv
Y3VzYWJsZUVsZW1lbnREZXNjZW5kaW5nRG93bkludG9GcmFtZURvY3VtZW50IGludGVybmFsbHks
IHRoZXJlIGlzIG5vIG5lZWQgdG8ga2VlcCBhcm91bmQgImZvdW5kIiBsb2NhbCB2YXJpYWJsZS4K
KyAgICAgICAgSW50cm9kdWNlIGEgZmV3IGVhcmx5IGV4aXN0cyBmb3IgYSBiZXR0ZXIgY2xhcml0
eS4KKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6ZmluZEZvY3VzYWJsZUVsZW1l
bnRXaXRoaW5TY29wZSk6IFJlbmFtZWQgZnJvbSBmaW5kRm9jdXNhYmxlRWxlbWVudFJlY3Vyc2l2
ZWx5LiBBbHNvIGNhbGwKKyAgICAgICAgZmluZEZvY3VzYWJsZUVsZW1lbnREZXNjZW5kaW5nRG93
bkludG9GcmFtZURvY3VtZW50IGhlcmUgaW5zdGVhZCBvZiBmaW5kRm9jdXNhYmxlRWxlbWVudEFj
cm9zc0ZvY3VzU2NvcGUuCisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6Om5leHRG
b2N1c2FibGVFbGVtZW50V2l0aGluU2NvcGUpOiBFeHRyYWN0ZWQgZnJvbSBmaW5kRm9jdXNhYmxl
RWxlbWVudFJlY3Vyc2l2ZWx5LgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpw
cmV2aW91c0ZvY3VzYWJsZUVsZW1lbnRXaXRoaW5TY29wZSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Rm9jdXNDb250cm9sbGVyOjpmaW5kRm9jdXNhYmxlRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6Om5leHRGb2N1c2FibGVFbGVtZW50KTogQWRkZWQgYSBG
SVhNRS4KKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6cHJldmlvdXNGb2N1c2Fi
bGVFbGVtZW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmZp
bmRGb2N1c2FibGVFbGVtZW50T3JTY29wZU93bmVyKTogUmVuYW1lZCBmcm9tIGZpbmRGb2N1c2Fi
bGVFbGVtZW50IGZvciBjbGFyaXR5LgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVy
OjpuZXh0Rm9jdXNhYmxlRWxlbWVudE9yU2NvcGVPd25lcik6IERpdHRvIGZyb20gbmV4dEZvY3Vz
YWJsZUVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OnByZXZpb3Vz
Rm9jdXNhYmxlRWxlbWVudE9yU2NvcGVPd25lcik6IERpdHRvIGZyb20gbmV4dEZvY3VzYWJsZUVs
ZW1lbnQuCisgICAgICAgICogcGFnZS9Gb2N1c0NvbnRyb2xsZXIuaDoKKwogMjAxNi0wNS0wNSAg
RGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFdlYkNv
cmUgZG9lcyBub3QgbmVlZCB0byBsaW5rIHRvIENvcmVBdWRpbywgR3JhcGhpY3NTZXJ2aWNlcywg
U3lzdGVtQ29uZmlndXJhdGlvbiBmcmFtZXdvcmtzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L0ZvY3VzQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9G
b2N1c0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMDA0NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL0ZvY3VzQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwMCw3ICszMDAsOCBA
QCBFbGVtZW50KiBGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2FibGVFCiAgICAgICAgIEhUTUxG
cmFtZU93bmVyRWxlbWVudCYgb3duZXIgPSBkb3duY2FzdDxIVE1MRnJhbWVPd25lckVsZW1lbnQ+
KCplbGVtZW50KTsKICAgICAgICAgaWYgKCFvd25lci5jb250ZW50RnJhbWUoKSkKICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBFbGVtZW50KiBmb3VuZEVsZW1lbnQgPSBmaW5kRm9jdXNhYmxl
RWxlbWVudChkaXJlY3Rpb24sIEZvY3VzTmF2aWdhdGlvblNjb3BlOjpzY29wZU93bmVkQnlJRnJh
bWUob3duZXIpLCAwLCBldmVudCk7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNhbiByZXR1cm4g
YSBub24tZm9jdXNhYmxlIHNoYWRvdyByb290LgorICAgICAgICBFbGVtZW50KiBmb3VuZEVsZW1l
bnQgPSBmaW5kRm9jdXNhYmxlRWxlbWVudE9yU2NvcGVPd25lcihkaXJlY3Rpb24sIEZvY3VzTmF2
aWdhdGlvblNjb3BlOjpzY29wZU93bmVkQnlJRnJhbWUob3duZXIpLCAwLCBldmVudCk7CiAgICAg
ICAgIGlmICghZm91bmRFbGVtZW50KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIEFTU0VS
VChlbGVtZW50ICE9IGZvdW5kRWxlbWVudCk7CkBAIC0zNjYsOCArMzY3LDcgQEAgYm9vbCBGb2N1
c0NvbnRyb2xsZXI6OmFkdmFuY2VGb2N1c0luRG9jdQogICAgICAgICB9CiAKICAgICAgICAgLy8g
Q2hyb21lIGRvZXNuJ3Qgd2FudCBmb2N1cywgc28gd2Ugc2hvdWxkIHdyYXAgZm9jdXMuCi0gICAg
ICAgIGVsZW1lbnQgPSBmaW5kRm9jdXNhYmxlRWxlbWVudFJlY3Vyc2l2ZWx5KGRpcmVjdGlvbiwg
Rm9jdXNOYXZpZ2F0aW9uU2NvcGU6OnNjb3BlT2YoKm1fcGFnZS5tYWluRnJhbWUoKS5kb2N1bWVu
dCgpKSwgMCwgZXZlbnQpOwotICAgICAgICBlbGVtZW50ID0gZmluZEZvY3VzYWJsZUVsZW1lbnRE
ZXNjZW5kaW5nRG93bkludG9GcmFtZURvY3VtZW50KGRpcmVjdGlvbiwgZWxlbWVudC5nZXQoKSwg
ZXZlbnQpOworICAgICAgICBlbGVtZW50ID0gZmluZEZvY3VzYWJsZUVsZW1lbnRBY3Jvc3NGb2N1
c1Njb3BlKGRpcmVjdGlvbiwgRm9jdXNOYXZpZ2F0aW9uU2NvcGU6OnNjb3BlT2YoKm1fcGFnZS5t
YWluRnJhbWUoKS5kb2N1bWVudCgpKSwgbnVsbHB0ciwgZXZlbnQpOwogCiAgICAgICAgIGlmICgh
ZWxlbWVudCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQyMSw1NyArNDIxLDc0IEBA
IGJvb2wgRm9jdXNDb250cm9sbGVyOjphZHZhbmNlRm9jdXNJbkRvY3UKIEVsZW1lbnQqIEZvY3Vz
Q29udHJvbGxlcjo6ZmluZEZvY3VzYWJsZUVsZW1lbnRBY3Jvc3NGb2N1c1Njb3BlKEZvY3VzRGly
ZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgRm9jdXNOYXZpZ2F0aW9uU2NvcGUmIHNjb3BlLCBOb2Rl
KiBjdXJyZW50Tm9kZSwgS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7CiAgICAgQVNTRVJUKCFpczxF
bGVtZW50PihjdXJyZW50Tm9kZSkgfHwgIWlzTm9uRm9jdXNhYmxlU2hhZG93SG9zdCgqZG93bmNh
c3Q8RWxlbWVudD4oY3VycmVudE5vZGUpLCAqZXZlbnQpKTsKLSAgICBFbGVtZW50KiBmb3VuZDsK
KwogICAgIGlmIChjdXJyZW50Tm9kZSAmJiBkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb25Gb3J3
YXJkICYmIGlzRm9jdXNhYmxlU2hhZG93SG9zdCgqY3VycmVudE5vZGUsICpldmVudCkpIHsKLSAg
ICAgICAgRWxlbWVudCogZm91bmRJbklubmVyRm9jdXNTY29wZSA9IGZpbmRGb2N1c2FibGVFbGVt
ZW50UmVjdXJzaXZlbHkoZGlyZWN0aW9uLCBGb2N1c05hdmlnYXRpb25TY29wZTo6c2NvcGVPd25l
ZEJ5U2hhZG93SG9zdChkb3duY2FzdDxFbGVtZW50PigqY3VycmVudE5vZGUpKSwgMCwgZXZlbnQp
OwotICAgICAgICBmb3VuZCA9IGZvdW5kSW5Jbm5lckZvY3VzU2NvcGUgPyBmb3VuZEluSW5uZXJG
b2N1c1Njb3BlIDogZmluZEZvY3VzYWJsZUVsZW1lbnRSZWN1cnNpdmVseShkaXJlY3Rpb24sIHNj
b3BlLCBjdXJyZW50Tm9kZSwgZXZlbnQpOwotICAgIH0gZWxzZQotICAgICAgICBmb3VuZCA9IGZp
bmRGb2N1c2FibGVFbGVtZW50UmVjdXJzaXZlbHkoZGlyZWN0aW9uLCBzY29wZSwgY3VycmVudE5v
ZGUsIGV2ZW50KTsKKyAgICAgICAgaWYgKEVsZW1lbnQqIGNhbmRpZGF0ZUluSW5uZXJTY29wZSA9
IGZpbmRGb2N1c2FibGVFbGVtZW50V2l0aGluU2NvcGUoZGlyZWN0aW9uLCBGb2N1c05hdmlnYXRp
b25TY29wZTo6c2NvcGVPd25lZEJ5U2hhZG93SG9zdChkb3duY2FzdDxFbGVtZW50PigqY3VycmVu
dE5vZGUpKSwgMCwgZXZlbnQpKQorICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZUluSW5uZXJT
Y29wZTsKKyAgICB9CisKKyAgICBpZiAoRWxlbWVudCogY2FuZGlkYXRlSW5DdXJyZW50U2NvcGUg
PSBmaW5kRm9jdXNhYmxlRWxlbWVudFdpdGhpblNjb3BlKGRpcmVjdGlvbiwgc2NvcGUsIGN1cnJl
bnROb2RlLCBldmVudCkpCisgICAgICAgIHJldHVybiBjYW5kaWRhdGVJbkN1cnJlbnRTY29wZTsK
IAogICAgIC8vIElmIHRoZXJlJ3Mgbm8gZm9jdXNhYmxlIG5vZGUgdG8gYWR2YW5jZSB0bywgbW92
ZSB1cCB0aGUgZm9jdXMgc2NvcGVzIHVudGlsIHdlIGZpbmQgb25lLgogICAgIEVsZW1lbnQqIG93
bmVyID0gc2NvcGUub3duZXIoKTsKLSAgICB3aGlsZSAoIWZvdW5kICYmIG93bmVyKSB7Ci0gICAg
ICAgIEZvY3VzTmF2aWdhdGlvblNjb3BlIGN1cnJlbnRTY29wZSA9IEZvY3VzTmF2aWdhdGlvblNj
b3BlOjpzY29wZU9mKCpvd25lcik7Ci0gICAgICAgIGlmIChkaXJlY3Rpb24gPT0gRm9jdXNEaXJl
Y3Rpb25CYWNrd2FyZCAmJiBpc0ZvY3VzYWJsZVNoYWRvd0hvc3QoKm93bmVyLCAqZXZlbnQpKSB7
Ci0gICAgICAgICAgICBmb3VuZCA9IG93bmVyOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgZm91bmQgPSBmaW5kRm9jdXNhYmxlRWxlbWVudFJlY3Vyc2l2ZWx5KGRpcmVj
dGlvbiwgY3VycmVudFNjb3BlLCBvd25lciwgZXZlbnQpOwotICAgICAgICBvd25lciA9IGN1cnJl
bnRTY29wZS5vd25lcigpOworICAgIHdoaWxlIChvd25lcikgeworICAgICAgICBGb2N1c05hdmln
YXRpb25TY29wZSBvdXRlclNjb3BlID0gRm9jdXNOYXZpZ2F0aW9uU2NvcGU6OnNjb3BlT2YoKm93
bmVyKTsKKyAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbkJhY2t3YXJkICYm
IGlzRm9jdXNhYmxlU2hhZG93SG9zdCgqb3duZXIsICpldmVudCkpCisgICAgICAgICAgICByZXR1
cm4gZmluZEZvY3VzYWJsZUVsZW1lbnREZXNjZW5kaW5nRG93bkludG9GcmFtZURvY3VtZW50KGRp
cmVjdGlvbiwgb3duZXIsIGV2ZW50KTsKKyAgICAgICAgaWYgKEVsZW1lbnQqIGNhbmRpZGF0ZUlu
T3V0ZXJTY29wZSA9IGZpbmRGb2N1c2FibGVFbGVtZW50V2l0aGluU2NvcGUoZGlyZWN0aW9uLCBv
dXRlclNjb3BlLCBvd25lciwgZXZlbnQpKQorICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZUlu
T3V0ZXJTY29wZTsKKyAgICAgICAgb3duZXIgPSBvdXRlclNjb3BlLm93bmVyKCk7CiAgICAgfQot
ICAgIGZvdW5kID0gZmluZEZvY3VzYWJsZUVsZW1lbnREZXNjZW5kaW5nRG93bkludG9GcmFtZURv
Y3VtZW50KGRpcmVjdGlvbiwgZm91bmQsIGV2ZW50KTsKLSAgICByZXR1cm4gZm91bmQ7CisgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKLUVsZW1lbnQqIEZvY3VzQ29udHJvbGxlcjo6ZmluZEZvY3Vz
YWJsZUVsZW1lbnRSZWN1cnNpdmVseShGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IEZv
Y3VzTmF2aWdhdGlvblNjb3BlJiBzY29wZSwgTm9kZSogc3RhcnQsIEtleWJvYXJkRXZlbnQqIGV2
ZW50KQorRWxlbWVudCogRm9jdXNDb250cm9sbGVyOjpmaW5kRm9jdXNhYmxlRWxlbWVudFdpdGhp
blNjb3BlKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgRm9jdXNOYXZpZ2F0aW9uU2Nv
cGUmIHNjb3BlLCBOb2RlKiBzdGFydCwgS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7CiAgICAgLy8g
U3RhcnRpbmcgbm9kZSBpcyBleGNsdXNpdmUuCi0gICAgRWxlbWVudCogZm91bmQgPSBmaW5kRm9j
dXNhYmxlRWxlbWVudChkaXJlY3Rpb24sIHNjb3BlLCBzdGFydCwgZXZlbnQpOworICAgIEVsZW1l
bnQqIGNhbmRpZGF0ZSA9IGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbkZvcndhcmQKKyAgICAg
ICAgPyBuZXh0Rm9jdXNhYmxlRWxlbWVudFdpdGhpblNjb3BlKHNjb3BlLCBzdGFydCwgZXZlbnQp
CisgICAgICAgIDogcHJldmlvdXNGb2N1c2FibGVFbGVtZW50V2l0aGluU2NvcGUoc2NvcGUsIHN0
YXJ0LCBldmVudCk7CisgICAgcmV0dXJuIGZpbmRGb2N1c2FibGVFbGVtZW50RGVzY2VuZGluZ0Rv
d25JbnRvRnJhbWVEb2N1bWVudChkaXJlY3Rpb24sIGNhbmRpZGF0ZSwgZXZlbnQpOworfQorCitF
bGVtZW50KiBGb2N1c0NvbnRyb2xsZXI6Om5leHRGb2N1c2FibGVFbGVtZW50V2l0aGluU2NvcGUo
Y29uc3QgRm9jdXNOYXZpZ2F0aW9uU2NvcGUmIHNjb3BlLCBOb2RlKiBzdGFydCwgS2V5Ym9hcmRF
dmVudCogZXZlbnQpCit7CisgICAgRWxlbWVudCogZm91bmQgPSBuZXh0Rm9jdXNhYmxlRWxlbWVu
dE9yU2NvcGVPd25lcihzY29wZSwgc3RhcnQsIGV2ZW50KTsKICAgICBpZiAoIWZvdW5kKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpZiAoZGlyZWN0aW9uID09IEZvY3VzRGlyZWN0aW9u
Rm9yd2FyZCkgewotICAgICAgICBpZiAoIWlzTm9uRm9jdXNhYmxlU2hhZG93SG9zdCgqZm91bmQs
ICpldmVudCkpCi0gICAgICAgICAgICByZXR1cm4gZm91bmQ7Ci0gICAgICAgIEVsZW1lbnQqIGZv
dW5kSW5Jbm5lckZvY3VzU2NvcGUgPSBmaW5kRm9jdXNhYmxlRWxlbWVudFJlY3Vyc2l2ZWx5KGRp
cmVjdGlvbiwgRm9jdXNOYXZpZ2F0aW9uU2NvcGU6OnNjb3BlT3duZWRCeVNoYWRvd0hvc3QoKmZv
dW5kKSwgMCwgZXZlbnQpOwotICAgICAgICByZXR1cm4gZm91bmRJbklubmVyRm9jdXNTY29wZSA/
IGZvdW5kSW5Jbm5lckZvY3VzU2NvcGUgOiBmaW5kRm9jdXNhYmxlRWxlbWVudFJlY3Vyc2l2ZWx5
KGRpcmVjdGlvbiwgc2NvcGUsIGZvdW5kLCBldmVudCk7CisgICAgaWYgKGlzTm9uRm9jdXNhYmxl
U2hhZG93SG9zdCgqZm91bmQsICpldmVudCkpIHsKKyAgICAgICAgaWYgKEVsZW1lbnQqIGZvdW5k
SW5Jbm5lckZvY3VzU2NvcGUgPSBuZXh0Rm9jdXNhYmxlRWxlbWVudFdpdGhpblNjb3BlKEZvY3Vz
TmF2aWdhdGlvblNjb3BlOjpzY29wZU93bmVkQnlTaGFkb3dIb3N0KCpmb3VuZCksIDAsIGV2ZW50
KSkKKyAgICAgICAgICAgIHJldHVybiBmb3VuZEluSW5uZXJGb2N1c1Njb3BlOworICAgICAgICBy
ZXR1cm4gbmV4dEZvY3VzYWJsZUVsZW1lbnRXaXRoaW5TY29wZShzY29wZSwgZm91bmQsIGV2ZW50
KTsKICAgICB9Ci0gICAgQVNTRVJUKGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbkJhY2t3YXJk
KTsKKyAgICByZXR1cm4gZm91bmQ7Cit9CisKK0VsZW1lbnQqIEZvY3VzQ29udHJvbGxlcjo6cHJl
dmlvdXNGb2N1c2FibGVFbGVtZW50V2l0aGluU2NvcGUoY29uc3QgRm9jdXNOYXZpZ2F0aW9uU2Nv
cGUmIHNjb3BlLCBOb2RlKiBzdGFydCwgS2V5Ym9hcmRFdmVudCogZXZlbnQpCit7CisgICAgRWxl
bWVudCogZm91bmQgPSBwcmV2aW91c0ZvY3VzYWJsZUVsZW1lbnRPclNjb3BlT3duZXIoc2NvcGUs
IHN0YXJ0LCBldmVudCk7CisgICAgaWYgKCFmb3VuZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgaWYgKGlzRm9jdXNhYmxlU2hhZG93SG9zdCgqZm91bmQsICpldmVudCkpIHsKLSAgICAg
ICAgRWxlbWVudCogZm91bmRJbklubmVyRm9jdXNTY29wZSA9IGZpbmRGb2N1c2FibGVFbGVtZW50
UmVjdXJzaXZlbHkoZGlyZWN0aW9uLCBGb2N1c05hdmlnYXRpb25TY29wZTo6c2NvcGVPd25lZEJ5
U2hhZG93SG9zdCgqZm91bmQpLCAwLCBldmVudCk7Ci0gICAgICAgIHJldHVybiBmb3VuZEluSW5u
ZXJGb2N1c1Njb3BlID8gZm91bmRJbklubmVyRm9jdXNTY29wZSA6IGZvdW5kOworICAgICAgICAv
LyBTZWFyY2ggYW4gaW5uZXIgZm9jdXNhYmxlIGVsZW1lbnQgaW4gdGhlIHNoYWRvdyB0cmVlIGZy
b20gdGhlIGVuZC4KKyAgICAgICAgaWYgKEVsZW1lbnQqIGZvdW5kSW5Jbm5lckZvY3VzU2NvcGUg
PSBwcmV2aW91c0ZvY3VzYWJsZUVsZW1lbnRXaXRoaW5TY29wZShGb2N1c05hdmlnYXRpb25TY29w
ZTo6c2NvcGVPd25lZEJ5U2hhZG93SG9zdCgqZm91bmQpLCAwLCBldmVudCkpCisgICAgICAgICAg
ICByZXR1cm4gZm91bmRJbklubmVyRm9jdXNTY29wZTsKKyAgICAgICAgcmV0dXJuIGZvdW5kOwog
ICAgIH0KICAgICBpZiAoaXNOb25Gb2N1c2FibGVTaGFkb3dIb3N0KCpmb3VuZCwgKmV2ZW50KSkg
ewotICAgICAgICBFbGVtZW50KiBmb3VuZEluSW5uZXJGb2N1c1Njb3BlID0gZmluZEZvY3VzYWJs
ZUVsZW1lbnRSZWN1cnNpdmVseShkaXJlY3Rpb24sIEZvY3VzTmF2aWdhdGlvblNjb3BlOjpzY29w
ZU93bmVkQnlTaGFkb3dIb3N0KCpmb3VuZCksIDAsIGV2ZW50KTsKLSAgICAgICAgcmV0dXJuIGZv
dW5kSW5Jbm5lckZvY3VzU2NvcGUgPyBmb3VuZEluSW5uZXJGb2N1c1Njb3BlIDpmaW5kRm9jdXNh
YmxlRWxlbWVudFJlY3Vyc2l2ZWx5KGRpcmVjdGlvbiwgc2NvcGUsIGZvdW5kLCBldmVudCk7Cisg
ICAgICAgIGlmIChFbGVtZW50KiBmb3VuZEluSW5uZXJGb2N1c1Njb3BlID0gcHJldmlvdXNGb2N1
c2FibGVFbGVtZW50V2l0aGluU2NvcGUoRm9jdXNOYXZpZ2F0aW9uU2NvcGU6OnNjb3BlT3duZWRC
eVNoYWRvd0hvc3QoKmZvdW5kKSwgMCwgZXZlbnQpKQorICAgICAgICAgICAgcmV0dXJuIGZvdW5k
SW5Jbm5lckZvY3VzU2NvcGU7CisgICAgICAgIHJldHVybiBwcmV2aW91c0ZvY3VzYWJsZUVsZW1l
bnRXaXRoaW5TY29wZShzY29wZSwgZm91bmQsIGV2ZW50KTsKICAgICB9CiAgICAgcmV0dXJuIGZv
dW5kOwogfQogCi1FbGVtZW50KiBGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2FibGVFbGVtZW50
KEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgRm9jdXNOYXZpZ2F0aW9uU2NvcGUmIHNj
b3BlLCBOb2RlKiBub2RlLCBLZXlib2FyZEV2ZW50KiBldmVudCkKK0VsZW1lbnQqIEZvY3VzQ29u
dHJvbGxlcjo6ZmluZEZvY3VzYWJsZUVsZW1lbnRPclNjb3BlT3duZXIoRm9jdXNEaXJlY3Rpb24g
ZGlyZWN0aW9uLCBjb25zdCBGb2N1c05hdmlnYXRpb25TY29wZSYgc2NvcGUsIE5vZGUqIG5vZGUs
IEtleWJvYXJkRXZlbnQqIGV2ZW50KQogewogICAgIHJldHVybiAoZGlyZWN0aW9uID09IEZvY3Vz
RGlyZWN0aW9uRm9yd2FyZCkKLSAgICAgICAgPyBuZXh0Rm9jdXNhYmxlRWxlbWVudChzY29wZSwg
bm9kZSwgZXZlbnQpCi0gICAgICAgIDogcHJldmlvdXNGb2N1c2FibGVFbGVtZW50KHNjb3BlLCBu
b2RlLCBldmVudCk7CisgICAgICAgID8gbmV4dEZvY3VzYWJsZUVsZW1lbnRPclNjb3BlT3duZXIo
c2NvcGUsIG5vZGUsIGV2ZW50KQorICAgICAgICA6IHByZXZpb3VzRm9jdXNhYmxlRWxlbWVudE9y
U2NvcGVPd25lcihzY29wZSwgbm9kZSwgZXZlbnQpOwogfQogCiBFbGVtZW50KiBGb2N1c0NvbnRy
b2xsZXI6OmZpbmRFbGVtZW50V2l0aEV4YWN0VGFiSW5kZXgoY29uc3QgRm9jdXNOYXZpZ2F0aW9u
U2NvcGUmIHNjb3BlLCBOb2RlKiBzdGFydCwgaW50IHRhYkluZGV4LCBLZXlib2FyZEV2ZW50KiBl
dmVudCwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKQpAQCAtNTI4LDE3ICs1NDUsMTkgQEAgc3Rh
dGljIEVsZW1lbnQqIHByZXZpb3VzRWxlbWVudFdpdGhMb3dlcgogCiBFbGVtZW50KiBGb2N1c0Nv
bnRyb2xsZXI6Om5leHRGb2N1c2FibGVFbGVtZW50KE5vZGUmIHN0YXJ0KQogeworICAgIC8vIEZJ
WE1FOiBUaGlzIGNhbiByZXR1cm4gYSBub24tZm9jdXNhYmxlIHNoYWRvdyBob3N0LgogICAgIFJl
ZjxLZXlib2FyZEV2ZW50PiBrZXlFdmVudCA9IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZUZvckR1bW15
KCk7Ci0gICAgcmV0dXJuIG5leHRGb2N1c2FibGVFbGVtZW50KEZvY3VzTmF2aWdhdGlvblNjb3Bl
OjpzY29wZU9mKHN0YXJ0KSwgJnN0YXJ0LCBrZXlFdmVudC5wdHIoKSk7CisgICAgcmV0dXJuIG5l
eHRGb2N1c2FibGVFbGVtZW50T3JTY29wZU93bmVyKEZvY3VzTmF2aWdhdGlvblNjb3BlOjpzY29w
ZU9mKHN0YXJ0KSwgJnN0YXJ0LCBrZXlFdmVudC5wdHIoKSk7CiB9CiAKIEVsZW1lbnQqIEZvY3Vz
Q29udHJvbGxlcjo6cHJldmlvdXNGb2N1c2FibGVFbGVtZW50KE5vZGUmIHN0YXJ0KQogeworICAg
IC8vIEZJWE1FOiBUaGlzIGNhbiByZXR1cm4gYSBub24tZm9jdXNhYmxlIHNoYWRvdyBob3N0Lgog
ICAgIFJlZjxLZXlib2FyZEV2ZW50PiBrZXlFdmVudCA9IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZUZv
ckR1bW15KCk7Ci0gICAgcmV0dXJuIHByZXZpb3VzRm9jdXNhYmxlRWxlbWVudChGb2N1c05hdmln
YXRpb25TY29wZTo6c2NvcGVPZihzdGFydCksICZzdGFydCwga2V5RXZlbnQucHRyKCkpOworICAg
IHJldHVybiBwcmV2aW91c0ZvY3VzYWJsZUVsZW1lbnRPclNjb3BlT3duZXIoRm9jdXNOYXZpZ2F0
aW9uU2NvcGU6OnNjb3BlT2Yoc3RhcnQpLCAmc3RhcnQsIGtleUV2ZW50LnB0cigpKTsKIH0KIAot
RWxlbWVudCogRm9jdXNDb250cm9sbGVyOjpuZXh0Rm9jdXNhYmxlRWxlbWVudChjb25zdCBGb2N1
c05hdmlnYXRpb25TY29wZSYgc2NvcGUsIE5vZGUqIHN0YXJ0LCBLZXlib2FyZEV2ZW50KiBldmVu
dCkKK0VsZW1lbnQqIEZvY3VzQ29udHJvbGxlcjo6bmV4dEZvY3VzYWJsZUVsZW1lbnRPclNjb3Bl
T3duZXIoY29uc3QgRm9jdXNOYXZpZ2F0aW9uU2NvcGUmIHNjb3BlLCBOb2RlKiBzdGFydCwgS2V5
Ym9hcmRFdmVudCogZXZlbnQpCiB7CiAgICAgaW50IHN0YXJ0VGFiSW5kZXggPSAwOwogICAgIGlm
IChzdGFydCAmJiBpczxFbGVtZW50Pigqc3RhcnQpKQpAQCAtNTc1LDcgKzU5NCw3IEBAIEVsZW1l
bnQqIEZvY3VzQ29udHJvbGxlcjo6bmV4dEZvY3VzYWJsZUUKICAgICByZXR1cm4gZmluZEVsZW1l
bnRXaXRoRXhhY3RUYWJJbmRleChzY29wZSwgJnNjb3BlLnJvb3ROb2RlKCksIDAsIGV2ZW50LCBG
b2N1c0RpcmVjdGlvbkZvcndhcmQpOwogfQogCi1FbGVtZW50KiBGb2N1c0NvbnRyb2xsZXI6OnBy
ZXZpb3VzRm9jdXNhYmxlRWxlbWVudChjb25zdCBGb2N1c05hdmlnYXRpb25TY29wZSYgc2NvcGUs
IE5vZGUqIHN0YXJ0LCBLZXlib2FyZEV2ZW50KiBldmVudCkKK0VsZW1lbnQqIEZvY3VzQ29udHJv
bGxlcjo6cHJldmlvdXNGb2N1c2FibGVFbGVtZW50T3JTY29wZU93bmVyKGNvbnN0IEZvY3VzTmF2
aWdhdGlvblNjb3BlJiBzY29wZSwgTm9kZSogc3RhcnQsIEtleWJvYXJkRXZlbnQqIGV2ZW50KQog
ewogICAgIE5vZGUqIGxhc3QgPSBudWxscHRyOwogICAgIGZvciAoTm9kZSogbm9kZSA9ICZzY29w
ZS5yb290Tm9kZSgpOyBub2RlOyBub2RlID0gc2NvcGUubGFzdENoaWxkSW5TY29wZShub2RlKSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuaAkocmV2aXNpb24gMjAwNDc4
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtODksNyArODksMTEgQEAgcHJpdmF0ZToKICAgICBib29sIGFkdmFuY2VGb2N1c0luRG9j
dW1lbnRPcmRlcihGb2N1c0RpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCosIGJvb2wgaW5pdGlhbEZv
Y3VzKTsKIAogICAgIEVsZW1lbnQqIGZpbmRGb2N1c2FibGVFbGVtZW50QWNyb3NzRm9jdXNTY29w
ZShGb2N1c0RpcmVjdGlvbiwgY29uc3QgRm9jdXNOYXZpZ2F0aW9uU2NvcGUmIHN0YXJ0U2NvcGUs
IE5vZGUqIHN0YXJ0LCBLZXlib2FyZEV2ZW50Kik7Ci0gICAgRWxlbWVudCogZmluZEZvY3VzYWJs
ZUVsZW1lbnRSZWN1cnNpdmVseShGb2N1c0RpcmVjdGlvbiwgY29uc3QgRm9jdXNOYXZpZ2F0aW9u
U2NvcGUmLCBOb2RlKiBzdGFydCwgS2V5Ym9hcmRFdmVudCopOworCisgICAgRWxlbWVudCogZmlu
ZEZvY3VzYWJsZUVsZW1lbnRXaXRoaW5TY29wZShGb2N1c0RpcmVjdGlvbiwgY29uc3QgRm9jdXNO
YXZpZ2F0aW9uU2NvcGUmLCBOb2RlKiBzdGFydCwgS2V5Ym9hcmRFdmVudCopOworICAgIEVsZW1l
bnQqIG5leHRGb2N1c2FibGVFbGVtZW50V2l0aGluU2NvcGUoY29uc3QgRm9jdXNOYXZpZ2F0aW9u
U2NvcGUmLCBOb2RlKiBzdGFydCwgS2V5Ym9hcmRFdmVudCopOworICAgIEVsZW1lbnQqIHByZXZp
b3VzRm9jdXNhYmxlRWxlbWVudFdpdGhpblNjb3BlKGNvbnN0IEZvY3VzTmF2aWdhdGlvblNjb3Bl
JiwgTm9kZSogc3RhcnQsIEtleWJvYXJkRXZlbnQqKTsKKwogICAgIEVsZW1lbnQqIGZpbmRGb2N1
c2FibGVFbGVtZW50RGVzY2VuZGluZ0Rvd25JbnRvRnJhbWVEb2N1bWVudChGb2N1c0RpcmVjdGlv
biwgRWxlbWVudCosIEtleWJvYXJkRXZlbnQqKTsKIAogICAgIC8vIFNlYXJjaGVzIHRocm91Z2gg
dGhlIGdpdmVuIHRyZWUgc2NvcGUsIHN0YXJ0aW5nIGZyb20gc3RhcnQgbm9kZSwgZm9yIHRoZSBu
ZXh0L3ByZXZpb3VzIHNlbGVjdGFibGUgZWxlbWVudCB0aGF0IGNvbWVzIGFmdGVyL2JlZm9yZSBz
dGFydCBub2RlLgpAQCAtMTAxLDEyICsxMDUsMTIgQEAgcHJpdmF0ZToKICAgICAvLyBAcmV0dXJu
IFRoZSBmb2N1cyBub2RlIHRoYXQgY29tZXMgYWZ0ZXIvYmVmb3JlIHN0YXJ0IG5vZGUuCiAgICAg
Ly8KICAgICAvLyBTZWUgaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvaW50ZXJhY3QvZm9ybXMu
aHRtbCNoLTE3LjExLjEKLSAgICBFbGVtZW50KiBmaW5kRm9jdXNhYmxlRWxlbWVudChGb2N1c0Rp
cmVjdGlvbiwgY29uc3QgRm9jdXNOYXZpZ2F0aW9uU2NvcGUmLCBOb2RlKiBzdGFydCwgS2V5Ym9h
cmRFdmVudCopOworICAgIEVsZW1lbnQqIGZpbmRGb2N1c2FibGVFbGVtZW50T3JTY29wZU93bmVy
KEZvY3VzRGlyZWN0aW9uLCBjb25zdCBGb2N1c05hdmlnYXRpb25TY29wZSYsIE5vZGUqIHN0YXJ0
LCBLZXlib2FyZEV2ZW50Kik7CiAKICAgICBFbGVtZW50KiBmaW5kRWxlbWVudFdpdGhFeGFjdFRh
YkluZGV4KGNvbnN0IEZvY3VzTmF2aWdhdGlvblNjb3BlJiwgTm9kZSogc3RhcnQsIGludCB0YWJJ
bmRleCwgS2V5Ym9hcmRFdmVudCosIEZvY3VzRGlyZWN0aW9uKTsKICAgICAKLSAgICBFbGVtZW50
KiBuZXh0Rm9jdXNhYmxlRWxlbWVudChjb25zdCBGb2N1c05hdmlnYXRpb25TY29wZSYsIE5vZGUq
IHN0YXJ0LCBLZXlib2FyZEV2ZW50Kik7Ci0gICAgRWxlbWVudCogcHJldmlvdXNGb2N1c2FibGVF
bGVtZW50KGNvbnN0IEZvY3VzTmF2aWdhdGlvblNjb3BlJiwgTm9kZSogc3RhcnQsIEtleWJvYXJk
RXZlbnQqKTsKKyAgICBFbGVtZW50KiBuZXh0Rm9jdXNhYmxlRWxlbWVudE9yU2NvcGVPd25lcihj
b25zdCBGb2N1c05hdmlnYXRpb25TY29wZSYsIE5vZGUqIHN0YXJ0LCBLZXlib2FyZEV2ZW50Kik7
CisgICAgRWxlbWVudCogcHJldmlvdXNGb2N1c2FibGVFbGVtZW50T3JTY29wZU93bmVyKGNvbnN0
IEZvY3VzTmF2aWdhdGlvblNjb3BlJiwgTm9kZSogc3RhcnQsIEtleWJvYXJkRXZlbnQqKTsKIAog
ICAgIGJvb2wgYWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseUluQ29udGFpbmVyKE5vZGUqIGNvbnRh
aW5lciwgY29uc3QgTGF5b3V0UmVjdCYgc3RhcnRpbmdSZWN0LCBGb2N1c0RpcmVjdGlvbiwgS2V5
Ym9hcmRFdmVudCopOwogICAgIHZvaWQgZmluZEZvY3VzQ2FuZGlkYXRlSW5Db250YWluZXIoTm9k
ZSYgY29udGFpbmVyLCBjb25zdCBMYXlvdXRSZWN0JiBzdGFydGluZ1JlY3QsIEZvY3VzRGlyZWN0
aW9uLCBLZXlib2FyZEV2ZW50KiwgRm9jdXNDYW5kaWRhdGUmIGNsb3Nlc3QpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>