<?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>169487</bug_id>
          
          <creation_ts>2017-03-10 15:27:48 -0800</creation_ts>
          <short_desc>[iOS WK2] Web Automation: implement platform methods for simulating keyboard events</short_desc>
          <delta_ts>2017-03-16 14:49:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>joepeck</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1285940</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-03-10 15:27:48 -0800</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285941</commentid>
    <comment_count>1</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-03-10 15:28:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/28360564&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287214</commentid>
    <comment_count>2</comment_count>
      <attachid>304264</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-03-13 10:06:13 -0700</bug_when>
    <thetext>Created attachment 304264
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287668</commentid>
    <comment_count>3</comment_count>
      <attachid>304264</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-03-14 10:39:32 -0700</bug_when>
    <thetext>Comment on attachment 304264
Patch

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

&gt; Source/WebKit2/UIProcess/Automation/WebAutomationSession.h:175
&gt; +#if PLATFORM(MAC) || PLATFORM(IOS)

This is what PLATFORM(COCOA) is for</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287687</commentid>
    <comment_count>4</comment_count>
      <attachid>304264</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-03-14 11:11:47 -0700</bug_when>
    <thetext>Comment on attachment 304264
Patch

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

r=me

&gt; Source/WebKit2/UIProcess/Automation/WebAutomationSession.cpp:936
&gt; +#if !PLATFORM(MAC) &amp;&amp; !PLATFORM(IOS)

This could be !PLATFORM(COCOA)

&gt; Source/WebKit2/UIProcess/Automation/WebAutomationSession.h:226
&gt; +    // We don&apos;t platform keyboard events on iOS, so we need to track it ourselves.

Grammar: &quot;We don&apos;t platform keyboard&quot; is missing a word somewhere.

&gt; Source/WebKit2/UIProcess/Automation/WebAutomationSession.h:227
&gt; +    unsigned m_currentModifiers;

Initialize this to { 0 }.

&gt; Source/WebKit2/UIProcess/Automation/ios/WebAutomationSessionIOS.mm:111
&gt; +        return;

This should be break, not return.

&gt; Source/WebKit2/UIProcess/Automation/ios/WebAutomationSessionIOS.mm:270
&gt; +        [eventsToBeSent addObject:[[::WebEvent alloc] initWithKeyEventType:WebEventKeyDown timeStamp:CFAbsoluteTimeGetCurrent() characters:characters charactersIgnoringModifiers:characters modifiers:m_currentModifiers isRepeating:NO withFlags:inputFlags withInputManagerHint:nil keyCode:keyCode isTabKey:isTabKey]];

I suspect this code is not under ARC (you are using a RetainPtr above). So all of these [::WebEvent alloc] allocated objects in this patch should be autoreleased when put into the eventsToBeSent array.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288770</commentid>
    <comment_count>5</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-03-16 14:49:37 -0700</bug_when>
    <thetext>Committed r214070: &lt;http://trac.webkit.org/changeset/214070&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304264</attachid>
            <date>2017-03-13 10:06:13 -0700</date>
            <delta_ts>2017-03-14 11:11:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169487-20170313100612.patch</filename>
            <type>text/plain</type>
            <size>24016</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggY2E1YjMyZDQ2MzZjYjk2
ZGNhMGQwYThhYjRiM2U0ZTQ5MDM3OTlhMy4uYWY0ZDUzMjJiOTc3YTYyNWM4YmQ1ODE1ZjI2MWZm
NGM0MjE4YWU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE3LTAzLTEwICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1MgV0syXSBXZWIgQXV0b21h
dGlvbjogaW1wbGVtZW50IHBsYXRmb3JtIG1ldGhvZHMgZm9yIHNpbXVsYXRpbmcga2V5Ym9hcmQg
ZXZlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
Njk0ODcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI4MzYwNTY0PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlaW1wbGVtZW50IHBsYXRmb3JtU2lt
dWxhdGVLZXl7U3Ryb2tlLCBTZXF1ZW5jZX0gdG8gc2ltdWxhdGUgZXZlbnRzIGNvbWluZyBmcm9t
IFVJS2l0LgorICAgICAgICBUaGVzZSBldmVudHMgYXJlIHNlbnQgZGlyZWN0bHkgaW50byBXZWJD
b3JlIHdpdGhvdXQgZ29pbmcgdGhyb3VnaCB0aGUga2V5Ym9hcmQgc3lzdGVtLAorICAgICAgICBz
aW5jZSB3ZSBkb24ndCBuZWVkIHRvIHNob3cgdGhlIGtleWJvYXJkIHdoZW4gc2ltdWxhdGluZyBr
ZXlzdHJva2VzLiBGb3IgZXhhbXBsZSwgdGhlCisgICAgICAgIGtleXN0cm9rZXMgbWF5IG5vdCBi
ZSByZXByZXNlbnRhYmxlIGdpdmVuIHRoZSBjdXJyZW50IGtleWJvYXJkIGxheW91dCBhbmQgc3lz
dGVtIGxhbmd1YWdlLgorCisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21h
dGlvblNlc3Npb24uY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmg6CisgICAgICAgIFVuLXN0dWIgaW1wbGVtZW50YXRpb25zIHRoYXQgbm93
IGV4aXN0IGZvciBpT1MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9pb3MvV2Vi
QXV0b21hdGlvblNlc3Npb25JT1MubW06IEFkZGVkLgorCisgICAgICAgIChXZWJLaXQ6OldlYkF1
dG9tYXRpb25TZXNzaW9uOjpzZW5kU3ludGhlc2l6ZWRFdmVudHNUb1BhZ2UpOiBBZGRlZC4KKyAg
ICAgICAgVGhpcyBpcyBzaW1pbGFyIHRvIHRoZSBNYWMgdmVyc2lvbiwgYnV0IGl0IHNlbmRzIGV2
ZW50cyBkaXJlY3RseSBpbnRvIFdlYlBhZ2VQcm94eQorICAgICAgICBpbnN0ZWFkIG9mIHNlbmRp
bmcgdGhlbSB0byB0aGUgTlNXaW5kb3cgY29udGFpbmluZyB0aGUgV2ViVmlldy4KKworICAgICAg
ICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleVN0cm9r
ZSk6CisgICAgICAgIFVzZSBhIHNvbWV3aGF0IGRpZmZlcmVudCBzdHJhdGVneSBmb3IgZGV0ZXJt
aW5pbmcgdGhlIGNoYXJDb2RlL2tleUNvZGUgc2luY2Ugd2UgY2Fubm90CisgICAgICAgIHJlbHkg
b24gdGhlIHN5c3RlbSBrZXlib2FyZCAvIGlucHV0IG1hbmFnZXIgdG8gZ2VuZXJhdGUgYW5kIGRl
bGl2ZXIgcmVhbCBrZXkgZXZlbnRzLgorICAgICAgICBDb21wYXJlZCB0byB0aGUgTWFjIHBsYXRm
b3JtIG1ldGhvZCwgdGhpcyByZXF1aXJlcyBzZXR0aW5nIHVwIGZld2VyIGZpZWxkcyBhbmQgZG9l
cworICAgICAgICBub3QgdXNlIEFwcEtpdCdzIGN1cnJlbnQgbW9kaWZpZXIgc3RhdGUgdG8gZGV0
ZXJtaW5lIHRoZSBlZmZlY3Qgb2Ygc3RpY2t5IG1vZGlmaWVycy4KKworICAgICAgICAoV2ViS2l0
OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleVNlcXVlbmNlKToKKyAg
ICAgICAgVGhpcyBpcyBhbG1vc3QgdmVyYmF0aW0gZnJvbSB0aGUgTWFjIHBsYXRmb3JtIG1ldGhv
ZCBidXQgdXNlcyBhIGRpZmZlcmVudCBldmVudCBjbGFzcy4KKworICAgICAgICAqIFdlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIG5ldyBmaWxlLgorCiAyMDE3LTAzLTA5ICBE
YW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBHdWFyZCBDcmVkZW50
aWFsIE1hbmFnZW1lbnQgaW1wbGVtZW50YXRpb24gYmVoaW5kIGEgcnVudGltZSBlbmFibGVkIGZl
YXR1cmUgZmxhZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IGRlNWJlOWUyZDkwM2EwYTIw
NDlmNDZlMmI3MGRjNDAyMmI0YjQ5YmYuLmExZWQ1YTM1MWZhNWJhODg2ODdlYjkxMWQyODY1Y2Vi
NTY3OGM5MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTkzMSw3ICs5MzEsOSBAQCB2
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkaWRUYWtlU2NyZWVuc2hvdCh1aW50NjRfdCBjYWxs
YmFja0lELCBjb25zdCBTaGFyZWFibAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZv
cm1TaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNl
SW50ZXJhY3Rpb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9u
LCBXZWJFdmVudDo6TW9kaWZpZXJzKQogewogfQorI2VuZGlmIC8vICFQTEFURk9STShNQUMpCiAK
KyNpZiAhUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKQogdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleVN0cm9rZShXZWJQYWdlUHJveHkmLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlwZSwgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleSkKIHsKIH0KQEAgLTkzOSw3ICs5
NDEsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5U3Ry
b2tlKFdlYlBhZ2VQcm94eSYsIEluc3BlY3Rvcjo6UAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6cGxhdGZvcm1TaW11bGF0ZUtleVNlcXVlbmNlKFdlYlBhZ2VQcm94eSYsIGNvbnN0IFN0cmlu
ZyYpCiB7CiB9Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKE1BQykKKyNlbmRpZiAvLyAhUExBVEZPUk0o
TUFDKSAmJiAhUExBVEZPUk0oSU9TKQogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogc3RkOjpvcHRp
b25hbDxTdHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2NEVuY29k
ZWRQTkdEYXRhKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
bi5oCmluZGV4IGNkMmQwYjhhZjNkYWQxNDcyYjM3OGVlM2EzYzMyMjNmODA0Zjk2MzcuLmE0MmFm
YWM4ZmVjMWI4NGFmY2JlOWUwNzM5M2M1YWY2Yzg3YzQyNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24u
aApAQCAtNTIsOCArNTIsMTEgQEAgY2xhc3MgSW50UmVjdDsKIHN0cnVjdCBDb29raWU7CiB9CiAK
LSNpZiBVU0UoQVBQS0lUKQorI2lmIFBMQVRGT1JNKENPQ09BKQogT0JKQ19DTEFTUyBOU0FycmF5
OworI2VuZGlmCisKKyNpZiBVU0UoQVBQS0lUKQogT0JKQ19DTEFTUyBOU0V2ZW50OwogI2VuZGlm
CiAKQEAgLTE2OSw3ICsxNzIsOCBAQCBwcml2YXRlOgogICAgIC8vIEdldCBiYXNlNjQgZW5jb2Rl
ZCBQTkcgZGF0YSBmcm9tIGEgYml0bWFwLgogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBwbGF0
Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRhKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxl
Jik7CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJ
T1MpCisgICAgLy8gVGhlIHR5cGUgcGFyYW1ldGVyIG9mIHRoZSBOU0FycmF5IGFyZ3VtZW50IGlz
IHBsYXRmb3JtLWRlcGVuZGVudC4KICAgICB2b2lkIHNlbmRTeW50aGVzaXplZEV2ZW50c1RvUGFn
ZShXZWJQYWdlUHJveHkmLCBOU0FycmF5ICpldmVudHNUb1NlbmQpOwogI2VuZGlmCiAKQEAgLTIx
Niw2ICsyMjAsMTIgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAg
ICBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogbV9yZW1vdGVDaGFubmVsIHsgbnVsbHB0ciB9
OwogI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1MpCisgICAgLy8gS2VlcCB0cmFjayBvZiBjdXJy
ZW50bHkgYWN0aXZlIG1vZGlmaWVycyBhY3Jvc3MgbXVsdGlwbGUga2V5c3Ryb2tlcy4KKyAgICAv
LyBXZSBkb24ndCBwbGF0Zm9ybSBrZXlib2FyZCBldmVudHMgb24gaU9TLCBzbyB3ZSBuZWVkIHRv
IHRyYWNrIGl0IG91cnNlbHZlcy4KKyAgICB1bnNpZ25lZCBtX2N1cnJlbnRNb2RpZmllcnM7Cisj
ZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vaW9zL1dlYkF1dG9tYXRpb25TZXNzaW9uSU9TLm1t
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vaW9zL1dlYkF1dG9tYXRpb25T
ZXNzaW9uSU9TLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmNDdlMTFhODc1MmY0NjJlMzMzNjRkNzdlZTY1MjNj
NzNkOWI0ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0
b21hdGlvbi9pb3MvV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0KQEAgLTAsMCArMSwzMTIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldlYkF1dG9tYXRpb25T
ZXNzaW9uLmgiCisKKyNpZiBQTEFURk9STShJT1MpCisKKyNpbXBvcnQgIk5hdGl2ZVdlYktleWJv
YXJkRXZlbnQuaCIKKyNpbXBvcnQgIldlYkF1dG9tYXRpb25TZXNzaW9uTWFjcm9zLmgiCisjaW1w
b3J0ICJXZWJQYWdlUHJveHkuaCIKKyNpbXBvcnQgPFdlYkNvcmUvS2V5RXZlbnRDb2Rlc0lPUy5o
PgorI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2ltcG9ydCA8V2ViQ29yZS9X
ZWJFdmVudC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnNlbmRTeW50aGVzaXplZEV2ZW50c1Rv
UGFnZShXZWJQYWdlUHJveHkmIHBhZ2UsIE5TQXJyYXkgKmV2ZW50c1RvU2VuZCkKK3sKKyAgICAv
LyAnZXZlbnRzVG9TZW5kJyBjb250YWlucyBXZWJDb3JlOjpXZWJFdmVudCBpbnN0YW5jZXMuIFVz
ZSBhIHdyYXBwZXIgdHlwZSBzcGVjaWZpYyB0byB0aGUgZXZlbnQgdHlwZS4KKyAgICBmb3IgKDo6
V2ViRXZlbnQgKmV2ZW50IGluIGV2ZW50c1RvU2VuZCkgeworICAgICAgICBzd2l0Y2ggKGV2ZW50
LnR5cGUpIHsKKyAgICAgICAgY2FzZSBXZWJFdmVudE1vdXNlRG93bjoKKyAgICAgICAgY2FzZSBX
ZWJFdmVudE1vdXNlVXA6CisgICAgICAgIGNhc2UgV2ViRXZlbnRNb3VzZU1vdmVkOgorICAgICAg
ICBjYXNlIFdlYkV2ZW50U2Nyb2xsV2hlZWw6CisgICAgICAgIGNhc2UgV2ViRXZlbnRUb3VjaEJl
Z2luOgorICAgICAgICBjYXNlIFdlYkV2ZW50VG91Y2hDaGFuZ2U6CisgICAgICAgIGNhc2UgV2Vi
RXZlbnRUb3VjaEVuZDoKKyAgICAgICAgY2FzZSBXZWJFdmVudFRvdWNoQ2FuY2VsOgorICAgICAg
ICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNh
c2UgV2ViRXZlbnRLZXlEb3duOgorICAgICAgICBjYXNlIFdlYkV2ZW50S2V5VXA6CisgICAgICAg
ICAgICBwYWdlLmhhbmRsZUtleWJvYXJkRXZlbnQoTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChldmVu
dCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKKyNwcmFnbWEg
bWFyayBDb21tYW5kcyBmb3IgUGxhdGZvcm06ICdpT1MnCisKK3ZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlTdHJva2UoV2ViUGFnZVByb3h5JiBwYWdlLCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlwZSBpbnRl
cmFjdGlvbiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleSBrZXkp
Cit7CisgICAgLy8gVGhlIG1vZGlmaWVycyBjaGFuZ2VkIGJ5IHRoZSB2aXJ0dWFsIGtleSB3aGVu
IGl0IGlzIHByZXNzZWQgb3IgcmVsZWFzZWQuCisgICAgV2ViRXZlbnRGbGFncyBjaGFuZ2VkTW9k
aWZpZXJzID0gMDsKKworICAgIC8vIFVJS2l0IGRvZXMgbm90IHNlbmQga2V5IGNvZGVzIGZvciB2
aXJ0dWFsIGtleXMgZXZlbiBmb3IgYSBoYXJkd2FyZSBrZXlib2FyZC4KKyAgICAvLyBJbnN0ZWFk
LCBpdCBzZW5kcyBzaW5nbGUgdW5pY2hhcnMgYW5kIFdlYkNvcmUgbWFwcyB0aGVzZSB0byAid2lu
ZG93cyIga2V5IGNvZGVzLgorICAgIC8vIFN5bnRoZXNpemUgYSBzaW5nbGUgdW5pY2hhciBzdWNo
IHRoYXQgdGhlIGNvcnJlY3Qga2V5IGNvZGUgaXMgaW5mZXJyZWQuCisgICAgc3RkOjpvcHRpb25h
bDx1bmljaGFyPiBjaGFyQ29kZSA9IHN0ZDo6bnVsbG9wdDsKKworICAgIHN3aXRjaCAoa2V5KSB7
CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpT
aGlmdDoKKyAgICAgICAgY2hhbmdlZE1vZGlmaWVycyB8PSBXZWJFdmVudEZsYWdNYXNrU2hpZnQ7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6VmlydHVhbEtleTo6Q29udHJvbDoKKyAgICAgICAgY2hhbmdlZE1vZGlmaWVycyB8PSBXZWJF
dmVudEZsYWdNYXNrQ29udHJvbDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpBbHRlcm5hdGU6CisgICAgICAgIGNo
YW5nZWRNb2RpZmllcnMgfD0gV2ViRXZlbnRGbGFnTWFza0FsdGVybmF0ZTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5
OjpNZXRhOgorICAgICAgICAvLyBUaGUgJ21ldGEnIGtleSBkb2VzIG5vdCBleGlzdCBvbiBBcHBs
ZSBrZXlib2FyZHMgYW5kIGlzIHVzdWFsbHkKKyAgICAgICAgLy8gbWFwcGVkIHRvIHRoZSBDb21t
YW5kIGtleSB3aGVuIHVzaW5nIHRoaXJkLXBhcnR5IGtleWJvYXJkcy4KKyAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkNvbW1hbmQ6CisgICAgICAg
IGNoYW5nZWRNb2RpZmllcnMgfD0gV2ViRXZlbnRGbGFnTWFza0NvbW1hbmQ7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtl
eTo6SGVscDoKKyAgICAgICAgY2hhckNvZGUgPSBOU0hlbHBGdW5jdGlvbktleTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFs
S2V5OjpCYWNrc3BhY2U6CisgICAgICAgIGNoYXJDb2RlID0gTlNCYWNrc3BhY2VDaGFyYWN0ZXI7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6VmlydHVhbEtleTo6VGFiOgorICAgICAgICBjaGFyQ29kZSA9IE5TVGFiQ2hhcmFjdGVyOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OlZpcnR1YWxLZXk6OkNsZWFyOgorICAgICAgICBjaGFyQ29kZSA9IE5TQ2xlYXJMaW5lRnVuY3Rp
b25LZXk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6VmlydHVhbEtleTo6RW50ZXI6CisgICAgICAgIGNoYXJDb2RlID0gTlNFbnRlckNo
YXJhY3RlcjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpQYXVzZToKKyAgICAgICAgY2hhckNvZGUgPSBOU1BhdXNl
RnVuY3Rpb25LZXk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkNhbmNlbDoKKyAgICAgICAgLy8gVGhlICdjYW5j
ZWwnIGtleSBkb2VzIG5vdCBleGlzdCBvbiBBcHBsZSBrZXlib2FyZHMgYW5kIGhhcyBubyBrZXlj
b2RlLgorICAgICAgICAvLyBBY2NvcmRpbmcgdG8gdGhlIGludGVybmV0IGl0cyBmdW5jdGlvbmFs
aXR5IGlzIHNpbWlsYXIgdG8gJ0VzY2FwZScuCisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpFc2NhcGU6CisgICAgICAgIGNoYXJDb2RlID0gMHgx
QjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpWaXJ0dWFsS2V5OjpQYWdlVXA6CisgICAgICAgIGNoYXJDb2RlID0gTlNQYWdlVXBGdW5j
dGlvbktleTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpQYWdlRG93bjoKKyAgICAgICAgY2hhckNvZGUgPSBOU1Bh
Z2VEb3duRnVuY3Rpb25LZXk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RW5kOgorICAgICAgICBjaGFyQ29kZSA9
IE5TRW5kRnVuY3Rpb25LZXk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6SG9tZToKKyAgICAgICAgY2hhckNvZGUg
PSBOU0hvbWVGdW5jdGlvbktleTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpMZWZ0QXJyb3c6CisgICAgICAgIGNo
YXJDb2RlID0gTlNMZWZ0QXJyb3dGdW5jdGlvbktleTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpVcEFycm93Ogor
ICAgICAgICBjaGFyQ29kZSA9IE5TVXBBcnJvd0Z1bmN0aW9uS2V5OworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlJp
Z2h0QXJyb3c6CisgICAgICAgIGNoYXJDb2RlID0gTlNSaWdodEFycm93RnVuY3Rpb25LZXk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
VmlydHVhbEtleTo6RG93bkFycm93OgorICAgICAgICBjaGFyQ29kZSA9IE5TRG93bkFycm93RnVu
Y3Rpb25LZXk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6VmlydHVhbEtleTo6SW5zZXJ0OgorICAgICAgICBjaGFyQ29kZSA9IE5TSW5z
ZXJ0RnVuY3Rpb25LZXk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RGVsZXRlOgorICAgICAgICBjaGFyQ29kZSA9
IE5TRGVsZXRlQ2hhcmFjdGVyOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlNwYWNlOgorICAgICAgICBjaGFyQ29k
ZSA9ICcgJzsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpTZW1pY29sb246CisgICAgICAgIGNoYXJDb2RlID0gJzsn
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OlZpcnR1YWxLZXk6OkVxdWFsczoKKyAgICAgICAgY2hhckNvZGUgPSAnPSc7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVh
bEtleTo6UmV0dXJuOgorICAgICAgICBjaGFyQ29kZSA9IE5TQ2FycmlhZ2VSZXR1cm5DaGFyYWN0
ZXI7CisgICAgICAgIGJyZWFrOworCisgICAgLy8gT24gaU9TLCBpdCBzZWVtcyB0byBiZSBpcnJl
bGV2YW50IGluIGxhdGVyIHByb2Nlc3Npbmcgd2hldGhlciB0aGUgbnVtYmVyIGNhbWUgZnJvbSBu
dW1iZXIgcGFkIG9yIG5vdC4KKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDA6CisgICAgICAgIGNoYXJDb2RlID0gJzAnOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZp
cnR1YWxLZXk6Ok51bWJlclBhZDE6CisgICAgICAgIGNoYXJDb2RlID0gJzEnOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxL
ZXk6Ok51bWJlclBhZDI6CisgICAgICAgIGNoYXJDb2RlID0gJzInOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51
bWJlclBhZDM6CisgICAgICAgIGNoYXJDb2RlID0gJzMnOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBh
ZDQ6CisgICAgICAgIGNoYXJDb2RlID0gJzQnOworICAgICAgICBicmVhazsKKyAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDU6Cisg
ICAgICAgIGNoYXJDb2RlID0gJzUnOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDY6CisgICAgICAg
IGNoYXJDb2RlID0gJzYnOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDc6CisgICAgICAgIGNoYXJD
b2RlID0gJzcnOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDg6CisgICAgICAgIGNoYXJDb2RlID0g
JzgnOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDk6CisgICAgICAgIGNoYXJDb2RlID0gJzknOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OlZpcnR1YWxLZXk6Ok51bWJlclBhZE11bHRpcGx5OgorICAgICAgICBjaGFyQ29kZSA9ICcqJzsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWRBZGQ6CisgICAgICAgIGNoYXJDb2RlID0gJysnOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZp
cnR1YWxLZXk6Ok51bWJlclBhZFN1YnRyYWN0OgorICAgICAgICBjaGFyQ29kZSA9ICctJzsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpW
aXJ0dWFsS2V5OjpOdW1iZXJQYWRTZXBhcmF0b3I6CisgICAgICAgIC8vIFRoZSAnU2VwYXJhdG9y
JyBrZXkgaXMgb25seSBwcmVzZW50IG9uIGEgZmV3IGludGVybmF0aW9uYWwga2V5Ym9hcmRzLgor
ICAgICAgICAvLyBJdCBpcyB1c3VhbGx5IG1hcHBlZCB0byB0aGUgc2FtZSBjaGFyYWN0ZXIgYXMg
RGVjaW1hbCAoJy4nIG9yICcsJykuCisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWREZWNpbWFsOgorICAgICAgICBjaGFyQ29kZSA9
ICcuJzsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWREaXZpZGU6CisgICAgICAgIGNoYXJDb2RlID0g
Jy8nOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uMToKKyAgICAgICAgY2hhckNvZGUgPSBOU0YxRnVu
Y3Rpb25LZXk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb24yOgorICAgICAgICBjaGFyQ29kZSA9IE5T
RjJGdW5jdGlvbktleTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjM6CisgICAgICAgIGNoYXJDb2Rl
ID0gTlNGM0Z1bmN0aW9uS2V5OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uNDoKKyAgICAgICAgY2hh
ckNvZGUgPSBOU0Y0RnVuY3Rpb25LZXk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb241OgorICAgICAg
ICBjaGFyQ29kZSA9IE5TRjVGdW5jdGlvbktleTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjY6Cisg
ICAgICAgIGNoYXJDb2RlID0gTlNGNkZ1bmN0aW9uS2V5OworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9u
NzoKKyAgICAgICAgY2hhckNvZGUgPSBOU0Y3RnVuY3Rpb25LZXk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVu
Y3Rpb244OgorICAgICAgICBjaGFyQ29kZSA9IE5TRjhGdW5jdGlvbktleTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5
OjpGdW5jdGlvbjk6CisgICAgICAgIGNoYXJDb2RlID0gTlNGOUZ1bmN0aW9uS2V5OworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1
YWxLZXk6OkZ1bmN0aW9uMTA6CisgICAgICAgIGNoYXJDb2RlID0gTlNGMTBGdW5jdGlvbktleTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjExOgorICAgICAgICBjaGFyQ29kZSA9IE5TRjExRnVuY3Rp
b25LZXk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb24xMjoKKyAgICAgICAgY2hhckNvZGUgPSBOU0Yx
MkZ1bmN0aW9uS2V5OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBBU1NFUlQoY2hhbmdl
ZE1vZGlmaWVycyB8fCBpbnRlcmFjdGlvbiA9PSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlwZTo6S2V5UHJlc3MpOworCisgICAgLy8gRklYTUU6
IGNvbnNpZGVyIHVzaW5nIFVJS2l0IFNQSSB0byBub3JtYWxpemUgJ2NoYXJhY3RlcnMnLCBpLmUu
LCBjaGFuZ2luZyAqIHRvIFNoaWZ0LTgsCisgICAgLy8gYW5kIHBhc3NpbmcgdGhhdCBpbiB0byBj
aGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMuIFRoaXMgaXMgcHJvYmFibHkgbm90IHdvcnRoIHRo
ZSB0cm91YmxlCisgICAgLy8gdW5sZXNzIGl0IGNhdXNlcyBhbiBhY3R1YWwgYmVoYXZpb3JhbCBk
aWZmZXJlbmNlLgorICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzID0gY2hhckNvZGUgPyBbTlNTdHJp
bmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmNoYXJDb2RlLnZhbHVlKCkgbGVuZ3RoOjFdIDogbmls
OworICAgIEJPT0wgaXNUYWJLZXkgPSBjaGFyQ29kZSAmJiBjaGFyQ29kZS52YWx1ZSgpID09IE5T
VGFiQ2hhcmFjdGVyOworCisgICAgLy8gVGhpcyBpcyB1c2VkIGFzIFdlYkV2ZW50LmtleWJvYXJk
RmxhZ3MsIHdoaWNoIGFyZSBvbmx5IHVzZWQgaWYgd2UgbmVlZCB0bworICAgIC8vIHNlbmQgdGhp
cyBldmVudCBiYWNrIHRvIFVJS2l0IHRvIGJlIGludGVycHJldGVkIGJ5IHRoZSBrZXlib2FyZCAv
IGlucHV0IG1hbmFnZXIuCisgICAgLy8gSnVzdCBpZ25vcmUgdGhpcyBmb3Igbm93OyB3ZSBjYW4g
Zml4IGl0IGlmIHRoZXJlJ3MgYW4gYWN0dWFsIGJlaGF2aW9yYWwgZGlmZmVyZW5jZS4KKyAgICBO
U1VJbnRlZ2VyIGlucHV0RmxhZ3MgPSAwOworCisgICAgLy8gUHJvdmlkZSBhbiBlbXB0eSBrZXlD
b2RlIHNvIHRoYXQgV2ViQ29yZSBpbmZlcnMgaXQgZnJvbSB0aGUgY2hhckNvZGUuCisgICAgdWlu
dDE2X3Qga2V5Q29kZSA9IDA7CisKKyAgICBhdXRvIGV2ZW50c1RvQmVTZW50ID0gYWRvcHROUyhb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisKKyAgICBzd2l0Y2ggKGludGVyYWN0aW9u
KSB7CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpLZXlib2FyZElu
dGVyYWN0aW9uVHlwZTo6S2V5UHJlc3M6IHsKKyAgICAgICAgbV9jdXJyZW50TW9kaWZpZXJzIHw9
IGNoYW5nZWRNb2RpZmllcnM7CisKKyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpb
Wzo6V2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5RG93biB0
aW1lU3RhbXA6Q0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgY2hhcmFjdGVyczpjaGFyYWN0ZXJz
IGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpjaGFyYWN0ZXJzIG1vZGlmaWVyczptX2N1cnJl
bnRNb2RpZmllcnMgaXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOmlucHV0RmxhZ3Mgd2l0aElucHV0
TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6a2V5Q29kZSBpc1RhYktleTppc1RhYktleV1dOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpLZXlib2FyZEludGVyYWN0aW9uVHlwZTo6S2V5UmVsZWFzZTogeworICAgICAgICBtX2N1
cnJlbnRNb2RpZmllcnMgJj0gfmNoYW5nZWRNb2RpZmllcnM7CisKKyAgICAgICAgW2V2ZW50c1Rv
QmVTZW50IGFkZE9iamVjdDpbWzo6V2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBl
OldlYkV2ZW50S2V5VXAgdGltZVN0YW1wOkNGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpIGNoYXJh
Y3RlcnM6Y2hhcmFjdGVycyBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6Y2hhcmFjdGVycyBt
b2RpZmllcnM6bV9jdXJyZW50TW9kaWZpZXJzIGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFnczppbnB1
dEZsYWdzIHdpdGhJbnB1dE1hbmFnZXJIaW50Om5pbCBrZXlDb2RlOmtleUNvZGUgaXNUYWJLZXk6
aXNUYWJLZXldXTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6S2V5Ym9hcmRJbnRlcmFjdGlvblR5cGU6Okluc2VydEJ5S2V5
OiB7CisgICAgICAgIC8vIE1vZGlmaWVycyBvbmx5IGNoYW5nZSB3aXRoIEtleVByZXNzIG9yIEtl
eVJlbGVhc2UsIHRoaXMgY29kZSBwYXRoIGlzIGZvciBzaW5nbGUgY2hhcmFjdGVycy4KKyAgICAg
ICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbWzo6V2ViRXZlbnQgYWxsb2NdIGluaXRXaXRo
S2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5RG93biB0aW1lU3RhbXA6Q0ZBYnNvbHV0ZVRpbWVHZXRD
dXJyZW50KCkgY2hhcmFjdGVyczpjaGFyYWN0ZXJzIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVy
czpjaGFyYWN0ZXJzIG1vZGlmaWVyczptX2N1cnJlbnRNb2RpZmllcnMgaXNSZXBlYXRpbmc6Tk8g
d2l0aEZsYWdzOmlucHV0RmxhZ3Mgd2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6a2V5
Q29kZSBpc1RhYktleTppc1RhYktleV1dOworICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2Jq
ZWN0OltbOjpXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhLZXlFdmVudFR5cGU6V2ViRXZlbnRLZXlV
cCB0aW1lU3RhbXA6Q0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgY2hhcmFjdGVyczpjaGFyYWN0
ZXJzIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpjaGFyYWN0ZXJzIG1vZGlmaWVyczptX2N1
cnJlbnRNb2RpZmllcnMgaXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOmlucHV0RmxhZ3Mgd2l0aElu
cHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6a2V5Q29kZSBpc1RhYktleTppc1RhYktleV1dOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgfQorCisgICAgc2VuZFN5bnRoZXNpemVkRXZlbnRz
VG9QYWdlKHBhZ2UsIGV2ZW50c1RvQmVTZW50LmdldCgpKTsKK30KKwordm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleVNlcXVlbmNlKFdlYlBhZ2VQcm94eSYgcGFn
ZSwgY29uc3QgU3RyaW5nJiBrZXlTZXF1ZW5jZSkKK3sKKyAgICBhdXRvIGV2ZW50c1RvQmVTZW50
ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisKKyAgICAvLyBTcGxp
dCB0aGUgdGV4dCBpbnRvIGNvbWJpbmluZyBjaGFyYWN0ZXIgc2VxdWVuY2VzIGFuZCBzZW5kIGVh
Y2ggc2VwYXJhdGVseS4KKyAgICAvLyBUaGlzIGhhcyBubyBzaW1pbGFyaXR5IHRvIGhvdyBrZXli
b2FyZHMgd29yayB3aGVuIGlucHV0dGluZyBjb21wbGV4IHRleHQuCisgICAgLy8gVGhpcyBjb21t
YW5kIGlzIG1vcmUgc2ltaWxhciB0byB0aGUgJ2luc2VydFRleHQ6JyBlZGl0aW5nIGNvbW1hbmQs
IGV4Y2VwdAorICAgIC8vIHRoYXQgdGhpcyBlbWl0cyBrZXl1cC9rZXlkb3duL2tleXByZXNzIGV2
ZW50cyBmb3Igcm91Z2hseSBlYWNoIGNoYXJhY3Rlci4KKyAgICAvLyBUaGlzIEFQSSBzaG91bGQg
bW92ZSBtb3JlIHRvd2FyZHMgdGhhdCBkaXJlY3Rpb24gaW4gdGhlIGZ1dHVyZS4KKyAgICBOU1N0
cmluZyAqdGV4dCA9IGtleVNlcXVlbmNlOworICAgIEJPT0wgaXNUYWJLZXkgPSBbdGV4dCBpc0Vx
dWFsVG9TdHJpbmc6QCJcdCJdOworCisgICAgW3RleHQgZW51bWVyYXRlU3Vic3RyaW5nc0luUmFu
Z2U6TlNNYWtlUmFuZ2UoMCwgdGV4dC5sZW5ndGgpIG9wdGlvbnM6TlNTdHJpbmdFbnVtZXJhdGlv
bkJ5Q29tcG9zZWRDaGFyYWN0ZXJTZXF1ZW5jZXMgdXNpbmdCbG9jazpeKE5TU3RyaW5nICpzdWJz
dHJpbmcsIE5TUmFuZ2Ugc3Vic3RyaW5nUmFuZ2UsIE5TUmFuZ2UgZW5jbG9zaW5nUmFuZ2UsIEJP
T0wgKnN0b3ApIHsKKyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbWzo6V2ViRXZl
bnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5RG93biB0aW1lU3RhbXA6
Q0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgY2hhcmFjdGVyczpzdWJzdHJpbmcgY2hhcmFjdGVy
c0lnbm9yaW5nTW9kaWZpZXJzOnN1YnN0cmluZyBtb2RpZmllcnM6bV9jdXJyZW50TW9kaWZpZXJz
IGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFnczowIHdpdGhJbnB1dE1hbmFnZXJIaW50Om5pbCBrZXlD
b2RlOjAgaXNUYWJLZXk6aXNUYWJLZXldXTsKKyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9i
amVjdDpbWzo6V2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5
VXAgdGltZVN0YW1wOkNGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpIGNoYXJhY3RlcnM6c3Vic3Ry
aW5nIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczpzdWJzdHJpbmcgbW9kaWZpZXJzOm1fY3Vy
cmVudE1vZGlmaWVycyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6MCB3aXRoSW5wdXRNYW5hZ2Vy
SGludDpuaWwga2V5Q29kZTowIGlzVGFiS2V5OmlzVGFiS2V5XV07CisgICAgfV07CisKKyAgICBz
ZW5kU3ludGhlc2l6ZWRFdmVudHNUb1BhZ2UocGFnZSwgZXZlbnRzVG9CZVNlbnQuZ2V0KCkpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA3MTBhMGQzY2Y4ZWQ5YmQ5MzVjOTkxNWRmNjZhNGM1ZDQ1NDdkOTM0Li45ZmNmYTdhZjhlZmQ5
OWQ2ZGMwZjQzZDFhOGZlNzJjNzE3ZjU4ZTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzcyLDYgKzEzNzIsNyBAQAogCQk5
OTBEMjhCQjFDNjUzOUQzMDA5ODY5NzcgLyogQXV0b21hdGlvblNlc3Npb25DbGllbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MEQyOEI3MUM2NTM5
QTAwMDk4Njk3NyAvKiBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oICovOyB9OwogCQk5OTBEMjhC
QzFDNjUzOURBMDA5ODY5NzcgLyogQXV0b21hdGlvblNlc3Npb25DbGllbnQubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTBEMjhCODFDNjUzOUEwMDA5
ODY5NzcgLyogQXV0b21hdGlvblNlc3Npb25DbGllbnQubW0gKi87IH07CiAJCTk5MEQyOEMwMUM2
NTUzRjEwMDk4Njk3NyAvKiBBUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTkwRDI4QjMxQzY1MjZENDAwOTg2
OTc3IC8qIEFQSUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmggKi87IH07CisJCTk5NDIwQzE1MUU3
MjcwNTAwMDY4NkQxMSAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NDIwQzE0MUU3MjcwM0UwMDY4NkQx
MSAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5tbSAqLzsgfTsKIAkJOTk1NUE2RUMxQzc5ODBD
MjAwRUI2QTkzIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTU1QTZFQjFDNzk4MEJCMDBFQjZBOTMgLyogV2Vi
QXV0b21hdGlvblNlc3Npb24uaCAqLzsgfTsKIAkJOTk1NUE2RUQxQzc5ODBDQTAwRUI2QTkzIC8q
IFdlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk5NTVBNkVBMUM3OTgwQkIwMEVCNkE5MyAvKiBXZWJBdXRvbWF0aW9u
U2Vzc2lvbi5jcHAgKi87IH07CiAJCTk5NTVBNkVGMUM3OTgxMDgwMEVCNkE5MyAvKiBBdXRvbWF0
aW9uLmpzb24gaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
OTU1QTZFOTFDNzk4MEJCMDBFQjZBOTMgLyogQXV0b21hdGlvbi5qc29uICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zNTk2LDYgKzM1OTcsNyBAQAog
CQk5OTBEMjhCMzFDNjUyNkQ0MDA5ODY5NzcgLyogQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJQXV0b21hdGlvblNlc3Npb25D
bGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwRDI4QjcxQzY1MzlBMDAw
OTg2OTc3IC8qIEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTk5MEQyOEI4MUM2NTM5QTAwMDk4Njk3NyAvKiBBdXRvbWF0aW9uU2Vzc2lv
bkNsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEF1dG9t
YXRpb25TZXNzaW9uQ2xpZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTQy
MEMxNDFFNzI3MDNFMDA2ODZEMTEgLyogV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lvbklP
Uy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk1NUE2RTkxQzc5ODBCQjAwRUI2
QTkzIC8qIEF1dG9tYXRpb24uanNvbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuanNvbjsgcGF0aCA9IEF1dG9t
YXRpb24uanNvbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk1NUE2RUExQzc5ODBC
QjAwRUI2QTkzIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTk1NUE2RUIxQzc5ODBCQjAwRUI2QTkzIC8qIFdlYkF1dG9tYXRp
b25TZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1dG9tYXRp
b25TZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MjUxLDExICs2MjUz
LDIwIEBACiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsK
KwkJOTk0MjBDMTMxRTcyNkZFQjAwNjg2RDExIC8qIGlvcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdy
b3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJOTk0MjBDMTQxRTcyNzAzRTAwNjg2RDExIC8qIFdl
YkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBpb3M7CisJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk5OTU1QTZFODFDNzk4MDkwMDBFQjZBOTMg
LyogQXV0b21hdGlvbiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CiAJCQkJOTk1NUE2RTkxQzc5ODBCQjAwRUI2QTkzIC8qIEF1dG9tYXRpb24uanNvbiAqLywKIAkJ
CQk5OUMzQUUyNTFEQUQ5NDY3MDBBRjVDMTYgLyogY29jb2EgKi8sCisJCQkJOTk0MjBDMTMxRTcy
NkZFQjAwNjg2RDExIC8qIGlvcyAqLywKIAkJCQk5OUMzQUUyMjFEQUQ4RTE0MDBBRjVDMTYgLyog
bWFjICovLAogCQkJCTk5NTVBNkVBMUM3OTgwQkIwMEVCNkE5MyAvKiBXZWJBdXRvbWF0aW9uU2Vz
c2lvbi5jcHAgKi8sCiAJCQkJOTk1NUE2RUIxQzc5ODBCQjAwRUI2QTkzIC8qIFdlYkF1dG9tYXRp
b25TZXNzaW9uLmggKi8sCkBAIC05NzgzLDYgKzk3OTQsNyBAQAogCQkJCTMxQTY3RTBDMTY1QjJB
OTkwMDZDQkE2NiAvKiBQbHVnSW5BdXRvU3RhcnRQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxQThFRjRDQzEyNTI0MDM3MDBGNzA2N0YgLyogUGx1Z2luQ29udHJvbGxlclByb3h5LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUxMjBDODM2MUU1Qjc0QkUwMDI1QjI1MCAvKiBfV0tXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbSBpbiBTb3VyY2VzICovLAorCQkJCTk5NDIwQzE1
MUU3MjcwNTAwMDY4NkQxMSAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBMkQ5MUE2MTI4MUQ3MzkwMDFFQjk2MiAvKiBQbHVnaW5Db250cm9sbGVyUHJv
eHlNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQThFRjk2RTEyNTJBRjZCMDBGNzA2N0YgLyog
UGx1Z2luQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFBMTc5NzdGMTM3RUU4MkMwMEY5N0Q0NSAvKiBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMu
Y3BwIGluIFNvdXJjZXMgKi8sCg==
</data>
<flag name="review"
          id="325819"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>