<?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>72479</bug_id>
          
          <creation_ts>2011-11-16 00:44:40 -0800</creation_ts>
          <short_desc>Accessibility: Multiselect list boxes need to report focus in addition to selection</short_desc>
          <delta_ts>2011-11-25 14:33:55 -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>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dominic Mazzoni">dmazzoni</reporter>
          <assigned_to name="Dominic Mazzoni">dmazzoni</assigned_to>
          <cc>cfleizach</cc>
    
    <cc>dtseng</cc>
    
    <cc>fishd</cc>
    
    <cc>rniwa</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>503689</commentid>
    <comment_count>0</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2011-11-16 00:44:40 -0800</bug_when>
    <thetext>When a user navigates through a multiselect list box using the arrow keys, the accessible representation of the list box and its options must include not only which options are currently selected, but also which one has focus.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503695</commentid>
    <comment_count>1</comment_count>
      <attachid>115345</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2011-11-16 00:53:40 -0800</bug_when>
    <thetext>Created attachment 115345
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503891</commentid>
    <comment_count>2</comment_count>
      <attachid>115345</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-11-16 08:09:57 -0800</bug_when>
    <thetext>Comment on attachment 115345
Patch

what platform was this tested on? on the mac, the list box should retain focus() and the selection is returned through selectedChildren(). the concept of selection vs. focus() is different</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503905</commentid>
    <comment_count>3</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2011-11-16 08:25:01 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 115345 [details])
&gt; what platform was this tested on? on the mac, the list box should retain focus() and the selection is returned through selectedChildren(). the concept of selection vs. focus() is different

This doesn&apos;t send any focus events, so I think Safari will be okay - but I&apos;ll test some more to make sure.

If you prefer, I could expose this as something other than focus. It&apos;s kind of like an active descendant.

Note that on Windows, the focus really does move to the option within the list. So ideally let&apos;s create an abstraction that&apos;s cross-platform.

- Dominic</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503909</commentid>
    <comment_count>4</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-11-16 08:28:51 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 115345 [details] [details])
&gt; &gt; what platform was this tested on? on the mac, the list box should retain focus() and the selection is returned through selectedChildren(). the concept of selection vs. focus() is different
&gt; 
&gt; This doesn&apos;t send any focus events, so I think Safari will be okay - but I&apos;ll test some more to make sure.
&gt; 
&gt; If you prefer, I could expose this as something other than focus. It&apos;s kind of like an active descendant.
&gt; 
&gt; Note that on Windows, the focus really does move to the option within the list. So ideally let&apos;s create an abstraction that&apos;s cross-platform.
&gt; 
&gt; - Dominic

It seems like this might be a platform decision for windows, i.e.) when asked if an object is isFocused() and the object is a listBoxOptionRole and isSelected() == true, then it returns true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503912</commentid>
    <comment_count>5</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-11-16 08:32:49 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (In reply to comment #2)
&gt; &gt; &gt; (From update of attachment 115345 [details] [details] [details])
&gt; &gt; &gt; what platform was this tested on? on the mac, the list box should retain focus() and the selection is returned through selectedChildren(). the concept of selection vs. focus() is different
&gt; &gt; 
&gt; &gt; This doesn&apos;t send any focus events, so I think Safari will be okay - but I&apos;ll test some more to make sure.
&gt; &gt; 
&gt; &gt; If you prefer, I could expose this as something other than focus. It&apos;s kind of like an active descendant.
&gt; &gt; 
&gt; &gt; Note that on Windows, the focus really does move to the option within the list. So ideally let&apos;s create an abstraction that&apos;s cross-platform.
&gt; &gt; 
&gt; &gt; - Dominic
&gt; 
&gt; It seems like this might be a platform decision for windows, i.e.) when asked if an object is isFocused() and the object is a listBoxOptionRole and isSelected() == true, then it returns true.

Does Chrome  move KB focus to each item in the &lt;select&gt; list? The last time I looked at list boxes the options were not actual nodes that could receive focus.. they were literally just strings that were drawn at the right place</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504425</commentid>
    <comment_count>6</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2011-11-16 17:15:38 -0800</bug_when>
    <thetext>&gt; &gt; It seems like this might be a platform decision for windows, i.e.) when asked if an object is isFocused() and the object is a listBoxOptionRole and isSelected() == true, then it returns true.
&gt; 
&gt; Does Chrome  move KB focus to each item in the &lt;select&gt; list? The last time I looked at list boxes the options were not actual nodes that could receive focus.. they were literally just strings that were drawn at the right place

No, keyboard focus stays with the &lt;select&gt; list itself, however there is a concept of the focused element within the list that&apos;s not the same as the selection when multiple things are selected. On Windows, the accessible object for the list option actually gets focus, even though it doesn&apos;t correspond to a browser element. 

In a list of 5 items, if you start on item 2 and press shift+down, now 2 and 3 are selected, but 3 is focused.  But if you start at 3 and press shift+up, 2 and 3 are selected, but 2 is focused. That&apos;s what this changelist is attempting to do - identify which of all of the selected items is the active one.

Alternatives:

1. I could add a new interface isActive that would indicate whether an element is the active descendant of its parent widget.

2. Or, I could have AccessibilityListBox return the active element in activeDescendant(), which is currently only used for ARIA but could be used here as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504427</commentid>
    <comment_count>7</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-11-16 17:16:58 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; &gt; It seems like this might be a platform decision for windows, i.e.) when asked if an object is isFocused() and the object is a listBoxOptionRole and isSelected() == true, then it returns true.
&gt; &gt; 
&gt; &gt; Does Chrome  move KB focus to each item in the &lt;select&gt; list? The last time I looked at list boxes the options were not actual nodes that could receive focus.. they were literally just strings that were drawn at the right place
&gt; 
&gt; No, keyboard focus stays with the &lt;select&gt; list itself, however there is a concept of the focused element within the list that&apos;s not the same as the selection when multiple things are selected. On Windows, the accessible object for the list option actually gets focus, even though it doesn&apos;t correspond to a browser element. 
&gt; 
&gt; In a list of 5 items, if you start on item 2 and press shift+down, now 2 and 3 are selected, but 3 is focused.  But if you start at 3 and press shift+up, 2 and 3 are selected, but 2 is focused. That&apos;s what this changelist is attempting to do - identify which of all of the selected items is the active one.
&gt; 
&gt; Alternatives:
&gt; 
&gt; 1. I could add a new interface isActive that would indicate whether an element is the active descendant of its parent widget.
&gt; 
&gt; 2. Or, I could have AccessibilityListBox return the active element in activeDescendant(), which is currently only used for ARIA but could be used here as well.

It sounds like this is what isSelected() already does. (as well as selectedChildren())</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504436</commentid>
    <comment_count>8</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2011-11-16 17:26:53 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; It sounds like this is what isSelected() already does. (as well as selectedChildren())

Not quite - if multiple items are selected, isSelected / selectedChildren is enough to tell you that several items are selected, but it doesn&apos;t tell you what would happen if you were to press shift+up arrow or shift+down arrow to try to extend or contract the selection. You need to know which of those items is the active one.

It&apos;s like text selection - it&apos;s not enough to know that the selection is from character 5 to character 10, you have to know whether the selection focus is at the beginning or end.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504439</commentid>
    <comment_count>9</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-11-16 17:28:21 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; It sounds like this is what isSelected() already does. (as well as selectedChildren())
&gt; 
&gt; Not quite - if multiple items are selected, isSelected / selectedChildren is enough to tell you that several items are selected, but it doesn&apos;t tell you what would happen if you were to press shift+up arrow or shift+down arrow to try to extend or contract the selection. You need to know which of those items is the active one.
&gt; 
&gt; It&apos;s like text selection - it&apos;s not enough to know that the selection is from character 5 to character 10, you have to know whether the selection focus is at the beginning or end.

k, i see. 

i think we should have a new attribute (perhaps isActiveSelection()) for this. it&apos;s definitely a different concept than focus and selection

thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504576</commentid>
    <comment_count>10</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2011-11-16 23:01:55 -0800</bug_when>
    <thetext>No problem - I&apos;ll switch it to a new attribute, how about isActiveSelectedOption to be a little more clear?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504580</commentid>
    <comment_count>11</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-11-16 23:09:52 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; No problem - I&apos;ll switch it to a new attribute, how about isActiveSelectedOption to be a little more clear?

Does this concept apply to any other widget? if so, we could put it on AccessibilityObject. if not, we could just put it on the list box option</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504585</commentid>
    <comment_count>12</comment_count>
      <attachid>115529</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2011-11-16 23:14:43 -0800</bug_when>
    <thetext>Created attachment 115529
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504588</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-16 23:17:18 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504589</commentid>
    <comment_count>14</comment_count>
      <attachid>115529</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-11-16 23:19:54 -0800</bug_when>
    <thetext>Comment on attachment 115529
Patch

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

&gt; Source/WebCore/accessibility/AccessibilityListBoxOption.cpp:93
&gt; +}

extra parens not needed

&gt; Source/WebKit/chromium/src/WebAccessibilityObject.cpp:233
&gt; +

for methods that return a bool, you should use true/false

&gt; LayoutTests/accessibility/multiselect-list-reports-active-option.html:61
&gt; +                layoutTestController.notifyDone();

you need to remove the notificationListener from the object, otherwise notifications can bleed into other tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504596</commentid>
    <comment_count>15</comment_count>
      <attachid>115529</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2011-11-16 23:37:26 -0800</bug_when>
    <thetext>Comment on attachment 115529
Patch

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

&gt;&gt; Source/WebCore/accessibility/AccessibilityListBoxOption.cpp:93
&gt;&gt; +}
&gt; 
&gt; extra parens not needed

Done.

&gt;&gt; Source/WebKit/chromium/src/WebAccessibilityObject.cpp:233
&gt;&gt; +
&gt; 
&gt; for methods that return a bool, you should use true/false

Done.

&gt;&gt; LayoutTests/accessibility/multiselect-list-reports-active-option.html:61
&gt;&gt; +                layoutTestController.notifyDone();
&gt; 
&gt; you need to remove the notificationListener from the object, otherwise notifications can bleed into other tests

Thanks, didn&apos;t realize that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504597</commentid>
    <comment_count>16</comment_count>
      <attachid>115531</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2011-11-16 23:38:13 -0800</bug_when>
    <thetext>Created attachment 115531
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504599</commentid>
    <comment_count>17</comment_count>
      <attachid>115531</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-11-16 23:40:45 -0800</bug_when>
    <thetext>Comment on attachment 115531
Patch

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

&gt; LayoutTests/accessibility/multiselect-list-reports-active-option.html:23
&gt; +            }

this will mean you&apos;ll get one notification and then it will not get any more. i think you want to remove this right before you notifyDone() at the end</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504605</commentid>
    <comment_count>18</comment_count>
      <attachid>115533</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2011-11-16 23:49:04 -0800</bug_when>
    <thetext>Created attachment 115533
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504606</commentid>
    <comment_count>19</comment_count>
      <attachid>115531</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2011-11-16 23:49:32 -0800</bug_when>
    <thetext>Comment on attachment 115531
Patch

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

&gt;&gt; LayoutTests/accessibility/multiselect-list-reports-active-option.html:23
&gt;&gt; +            }
&gt; 
&gt; this will mean you&apos;ll get one notification and then it will not get any more. i think you want to remove this right before you notifyDone() at the end

Hmmm, you&apos;re right. It looks like the test was still passing for me either way because removeNotificationListener doesn&apos;t do anything in the Chromium DumpRenderTree implementation. I can&apos;t reproduce the problem where it bleeds into another test, maybe it only affects some platforms?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506072</commentid>
    <comment_count>20</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2011-11-18 14:41:28 -0800</bug_when>
    <thetext>I updated the patch earlier to put removeNotificationListener in the right place - take another look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506078</commentid>
    <comment_count>21</comment_count>
      <attachid>115533</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-11-18 14:49:29 -0800</bug_when>
    <thetext>Comment on attachment 115533
Patch

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

looks ok. one minor comment to fix before checking in

&gt; Source/WebCore/accessibility/AccessibilityObject.h:414
&gt;  

I think this should be renamed to

isSelectedOptionActive()

and you should put a comment above to explain what it means</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506081</commentid>
    <comment_count>22</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2011-11-18 14:53:41 -0800</bug_when>
    <thetext>Sounds good, will do, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506797</commentid>
    <comment_count>23</comment_count>
      <attachid>116052</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2011-11-21 01:29:08 -0800</bug_when>
    <thetext>Created attachment 116052
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506808</commentid>
    <comment_count>24</comment_count>
      <attachid>116052</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-21 01:50:57 -0800</bug_when>
    <thetext>Comment on attachment 116052
Patch for landing

Clearing flags on attachment: 116052

Committed r100892: &lt;http://trac.webkit.org/changeset/100892&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506809</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-21 01:51:02 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509266</commentid>
    <comment_count>26</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-11-25 14:33:55 -0800</bug_when>
    <thetext>The test added by this patch is failing on Mac:
http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r101180%20(34953)/accessibility/multiselect-list-reports-active-option-actual.txt

To begin with, why did this patch add a test expectation to platform/chromium? That makes very little sense given this is a script test. Are you expecting this test to fail on non-Chromium platforms? If that were the case, then the correct thing to do is to add it to the skipped list and file appropriate bugs for non-Chromium ports. If not, then you should have added the test expectation to LayoutTests/accessibility/</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115345</attachid>
            <date>2011-11-16 00:53:40 -0800</date>
            <delta_ts>2011-11-16 23:14:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72479-20111116005338.patch</filename>
            <type>text/plain</type>
            <size>8981</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMDQyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDExLTExLTE2ICBEb21pbmlj
IE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFjY2Vzc2liaWxpdHk6
IE11bHRpc2VsZWN0IGxpc3QgYm94ZXMgbmVlZCB0byByZXBvcnQgZm9jdXMgaW4gYWRkaXRpb24g
dG8gc2VsZWN0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzI0NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbXBsZW1lbnRzIGlzRm9jdXNlZCBpbiBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbiBi
eSByZXBvcnRpbmcKKyAgICAgICAgdGhlIHNlbGVjdGlvbiBlbmQgYXMgdGhlIGZvY3VzZWQgb3B0
aW9uLiBUaGlzIGFsbG93cyBzY3JlZW4gcmVhZGVycworICAgICAgICB0byBnaXZlIGFwcHJvcHJp
YXRlIGZlZWRiYWNrIGFzIHVzZXJzIG1ha2Ugc2VsZWN0aW9ucyBhbmQgZXh0ZW5kCisgICAgICAg
IHRoZW0gdG8gc2VsZWN0IG11bHRpcGxlIG9wdGlvbnMgd2l0aCB0aGUga2V5Ym9hcmQuCisKKyAg
ICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS9tdWx0aXNlbGVjdC1saXN0LXJlcG9ydHMtZm9jdXNl
ZC1vcHRpb24uaHRtbAorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlz
dEJveE9wdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGlzdEJveE9w
dGlvbjo6aXNGb2N1c2VkKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlM
aXN0Qm94T3B0aW9uLmg6CisKIDIwMTEtMTEtMTYgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2Fu
Y2hlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFVzZSBHUXVhcmsncyBpbiB0aGUgQVRL
IHdyYXBwZXIgdG8gZ2V0IGFuZCBzZXQgYXJiaXRyYXJ5IGRhdGEKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hP
cHRpb24uY3BwCShyZXZpc2lvbiAxMDAwOTkpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMs
NiArODMsMTUgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6aXNTZWxlYwogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxIVE1MT3B0aW9uRWxlbWVudCo+KG1fb3B0aW9uRWxlbWVudCkt
PnNlbGVjdGVkKCk7CiB9CiAKK2Jvb2wgQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OmlzRm9j
dXNlZCgpIGNvbnN0Cit7CisgICAgSFRNTFNlbGVjdEVsZW1lbnQqIGxpc3RCb3hQYXJlbnROb2Rl
ID0gbGlzdEJveE9wdGlvblBhcmVudE5vZGUoKTsKKyAgICBpZiAoIWxpc3RCb3hQYXJlbnROb2Rl
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gKGxpc3RCb3hQYXJlbnROb2Rl
LT5hY3RpdmVTZWxlY3Rpb25FbmRMaXN0SW5kZXgoKSA9PSBsaXN0Qm94T3B0aW9uSW5kZXgoKSk7
Cit9CisKIExheW91dFJlY3QgQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OmVsZW1lbnRSZWN0
KCkgY29uc3QKIHsKICAgICBMYXlvdXRSZWN0IHJlY3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5o
CShyZXZpc2lvbiAxMDAwOTkpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlMaXN0Qm94T3B0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Q7
CiAgICAgdmlydHVhbCBib29sIGlzU2VsZWN0ZWQoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wg
aXNFbmFibGVkKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzRm9jdXNlZCgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ1ZhbHVlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBFbGVt
ZW50KiBhY3Rpb25FbGVtZW50KCkgY29uc3Q7CiAgICAgdmlydHVhbCBOb2RlKiBub2RlKCkgY29u
c3QgeyByZXR1cm4gbV9vcHRpb25FbGVtZW50OyB9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDA0MjEp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBA
QAorMjAxMS0xMS0xNiAgRG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KKwor
ICAgICAgICBBY2Nlc3NpYmlsaXR5OiBNdWx0aXNlbGVjdCBsaXN0IGJveGVzIG5lZWQgdG8gcmVw
b3J0IGZvY3VzIGluIGFkZGl0aW9uIHRvIHNlbGVjdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNDc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L211bHRpc2VsZWN0LWxp
c3QtcmVwb3J0cy1mb2N1c2VkLW9wdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L211bHRpc2VsZWN0LWxpc3QtcmVwb3J0cy1mb2N1c2Vk
LW9wdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDExLTExLTE2ICBKYW1lcyBSb2JpbnNv
biAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBVcGRhdGUgY2hy
b21pdW0gd2luIGFuZCBsaW51eCBjb21wb3NpdGluZyBiYXNlbGluZXMKSW5kZXg6IExheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvbXVsdGlzZWxlY3QtbGlzdC1yZXBvcnRzLWZvY3VzZWQtb3B0aW9u
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tdWx0aXNlbGVj
dC1saXN0LXJlcG9ydHMtZm9jdXNlZC1vcHRpb24uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbXVsdGlzZWxlY3QtbGlzdC1yZXBvcnRzLWZvY3VzZWQtb3B0
aW9uLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODMgQEAKKzxodG1sPgorPGhlYWQ+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKwor
ICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3Rz
IHRoYXQgbmF2aWdhdGluZyBpbiBhIG11bHRpc2VsZWN0IGxpc3QgdXBkYXRlcyBzZWxlY3Rpb24g
YW5kIGZvY3VzIGFuZCBzZW5kcyBhIG5vdGlmaWNhdGlvbi4iKTsKKworICAgICAgICBpZiAod2lu
ZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgICAgICB2YXIgbWVudWxpc3Qg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWVudWxpc3QiKTsKKyAgICAgICAgICAgIG1lbnVs
aXN0LmZvY3VzKCk7CisgICAgICAgICAgICB3aW5kb3cuYWNjZXNzaWJsZU1lbnVsaXN0ID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgICAgICAgICB3aW5kb3cu
YWNjZXNzaWJsZU9uZSA9IGFjY2Vzc2libGVNZW51bGlzdC5jaGlsZEF0SW5kZXgoMCk7CisgICAg
ICAgICAgICB3aW5kb3cuYWNjZXNzaWJsZVR3byA9IGFjY2Vzc2libGVNZW51bGlzdC5jaGlsZEF0
SW5kZXgoMSk7CisgICAgICAgICAgICB3aW5kb3cuYWNjZXNzaWJsZVRocmVlID0gYWNjZXNzaWJs
ZU1lbnVsaXN0LmNoaWxkQXRJbmRleCgyKTsKKworICAgICAgICAgICAgZnVuY3Rpb24gbGlzdExp
c3RlbmVyKG5vdGlmaWNhdGlvbikgeworICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjb25zb2xlIikuaW5uZXJUZXh0ICs9ICJMaXN0IG5vdGlmaWNhdGlvbjogIiArIG5v
dGlmaWNhdGlvbiArICJcbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhY2Nlc3NpYmxl
TWVudWxpc3QuYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIobGlzdExpc3RlbmVyKTsKKworICAgICAg
ICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVPbmUuaXNTZWxlY3RlZCIsICJ0cnVlIik7CisgICAg
ICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJsZU9uZS5pc0ZvY3VzZWQiLCAidHJ1ZSIpOworICAg
ICAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVUd28uaXNTZWxlY3RlZCIsICJmYWxzZSIpOwor
ICAgICAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVUd28uaXNGb2N1c2VkIiwgImZhbHNlIik7
CisgICAgICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJsZVRocmVlLmlzU2VsZWN0ZWQiLCAiZmFs
c2UiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJhY2Nlc3NpYmxlVGhyZWUuaXNGb2N1c2VkIiwg
ImZhbHNlIik7CisKKyAgICAgICAgICAgIC8vIENoYW5nZSB0aGUgc2VsZWN0ZWQgaW5kZXggYnkg
c2ltdWxhdGluZyBhIGRvd24gYXJyb3cga2V5ZG93biBldmVudC4KKyAgICAgICAgICAgIHZhciBl
dmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdLZXlib2FyZEV2ZW50cycpOworICAgICAgICAg
ICAgZXZlbnQuaW5pdEtleWJvYXJkRXZlbnQoJ2tleWRvd24nLCB0cnVlLCB0cnVlLCBkb2N1bWVu
dC5kZWZhdWx0VmlldywgJ0Rvd24nLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UpOworICAgICAgICAgICAgbWVudWxpc3QuZGlzcGF0Y2hFdmVudChldmVudCk7CisKKyAgICAg
ICAgICAgIHNob3VsZEJlKCJhY2Nlc3NpYmxlT25lLmlzU2VsZWN0ZWQiLCAiZmFsc2UiKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlKCJhY2Nlc3NpYmxlT25lLmlzRm9jdXNlZCIsICJmYWxzZSIpOwor
ICAgICAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVUd28uaXNTZWxlY3RlZCIsICJ0cnVlIik7
CisgICAgICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJsZVR3by5pc0ZvY3VzZWQiLCAidHJ1ZSIp
OworICAgICAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVUaHJlZS5pc1NlbGVjdGVkIiwgImZh
bHNlIik7CisgICAgICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJsZVRocmVlLmlzRm9jdXNlZCIs
ICJmYWxzZSIpOworCisgICAgICAgICAgICAvLyBFeHRlbmQgdGhlIHNlbGVjdGlvbiBieSBzaW11
bGF0aW5nIGEgU2hpZnQgKyBEb3duIEFycm93IGtleWRvd24gZXZlbnQuCisgICAgICAgICAgICB2
YXIgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnS2V5Ym9hcmRFdmVudHMnKTsKKyAgICAg
ICAgICAgIGV2ZW50LmluaXRLZXlib2FyZEV2ZW50KCdrZXlkb3duJywgdHJ1ZSwgdHJ1ZSwgZG9j
dW1lbnQuZGVmYXVsdFZpZXcsICdEb3duJywgMCwgZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSwg
ZmFsc2UpOworICAgICAgICAgICAgbWVudWxpc3QuZGlzcGF0Y2hFdmVudChldmVudCk7CisKKyAg
ICAgICAgICAgIHNob3VsZEJlKCJhY2Nlc3NpYmxlT25lLmlzU2VsZWN0ZWQiLCAiZmFsc2UiKTsK
KyAgICAgICAgICAgIHNob3VsZEJlKCJhY2Nlc3NpYmxlT25lLmlzRm9jdXNlZCIsICJmYWxzZSIp
OworICAgICAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVUd28uaXNTZWxlY3RlZCIsICJ0cnVl
Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJsZVR3by5pc0ZvY3VzZWQiLCAiZmFs
c2UiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJhY2Nlc3NpYmxlVGhyZWUuaXNTZWxlY3RlZCIs
ICJ0cnVlIik7CisgICAgICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJsZVRocmVlLmlzRm9jdXNl
ZCIsICJ0cnVlIik7CisgICAgICAgIH0KKworICAgICAgICAvLyBNYWtlIHRoZSB0ZXN0IGZpbmlz
aCBxdWlja2x5IHdoZXRoZXIgd2UgZ2V0IHRoZSBub3RpZmljYXRpb24gb3Igbm90LgorICAgICAg
ICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGRlYnVnKCc8YnIg
Lz48c3BhbiBjbGFzcz0icGFzcyI+VEVTVCBDT01QTEVURTwvc3Bhbj4nKTsKKyAgICAgICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9LCAxMCk7CisgICAgfQorCisg
ICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
c2V0VGltZW91dChydW5UZXN0LCAxMCk7CisgICAgfSwgZmFsc2UpOworPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKworPHNlbGVjdCBtdWx0aXBsZSBpZD0ibWVudWxpc3QiPgorICA8b3B0aW9u
IHNlbGVjdGVkPk9uZTwvb3B0aW9uPgorICA8b3B0aW9uPlR3bzwvb3B0aW9uPgorICA8b3B0aW9u
PlRocmVlPC9vcHRpb24+CisgIDxvcHRpb24+Rm91cjwvb3B0aW9uPgorPC9zZWxlY3Q+CisKKzxw
IGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzwvYm9k
eT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbXVsdGlzZWxlY3QtbGlzdC1yZXBvcnRzLWZvY3VzZWQtb3B0aW9uLmh0bWwKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9tdWx0aXNlbGVjdC1saXN0LXJlcG9ydHMtZm9jdXNl
ZC1vcHRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvbXVsdGlzZWxlY3QtbGlzdC1yZXBvcnRzLWZvY3VzZWQt
b3B0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvbXVsdGlzZWxlY3QtbGlzdC1yZXBvcnRzLWZvY3VzZWQt
b3B0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyOSBAQAorCitUaGlz
IHRlc3RzIHRoYXQgbmF2aWdhdGluZyBpbiBhIG11bHRpc2VsZWN0IGxpc3QgdXBkYXRlcyBzZWxl
Y3Rpb24gYW5kIGZvY3VzIGFuZCBzZW5kcyBhIG5vdGlmaWNhdGlvbi4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1MgYWNjZXNzaWJsZU9uZS5pc1NlbGVjdGVkIGlzIHRydWUK
K1BBU1MgYWNjZXNzaWJsZU9uZS5pc0ZvY3VzZWQgaXMgdHJ1ZQorUEFTUyBhY2Nlc3NpYmxlVHdv
LmlzU2VsZWN0ZWQgaXMgZmFsc2UKK1BBU1MgYWNjZXNzaWJsZVR3by5pc0ZvY3VzZWQgaXMgZmFs
c2UKK1BBU1MgYWNjZXNzaWJsZVRocmVlLmlzU2VsZWN0ZWQgaXMgZmFsc2UKK1BBU1MgYWNjZXNz
aWJsZVRocmVlLmlzRm9jdXNlZCBpcyBmYWxzZQorUEFTUyBhY2Nlc3NpYmxlT25lLmlzU2VsZWN0
ZWQgaXMgZmFsc2UKK1BBU1MgYWNjZXNzaWJsZU9uZS5pc0ZvY3VzZWQgaXMgZmFsc2UKK1BBU1Mg
YWNjZXNzaWJsZVR3by5pc1NlbGVjdGVkIGlzIHRydWUKK1BBU1MgYWNjZXNzaWJsZVR3by5pc0Zv
Y3VzZWQgaXMgdHJ1ZQorUEFTUyBhY2Nlc3NpYmxlVGhyZWUuaXNTZWxlY3RlZCBpcyBmYWxzZQor
UEFTUyBhY2Nlc3NpYmxlVGhyZWUuaXNGb2N1c2VkIGlzIGZhbHNlCitQQVNTIGFjY2Vzc2libGVP
bmUuaXNTZWxlY3RlZCBpcyBmYWxzZQorUEFTUyBhY2Nlc3NpYmxlT25lLmlzRm9jdXNlZCBpcyBm
YWxzZQorUEFTUyBhY2Nlc3NpYmxlVHdvLmlzU2VsZWN0ZWQgaXMgdHJ1ZQorUEFTUyBhY2Nlc3Np
YmxlVHdvLmlzRm9jdXNlZCBpcyBmYWxzZQorUEFTUyBhY2Nlc3NpYmxlVGhyZWUuaXNTZWxlY3Rl
ZCBpcyB0cnVlCitQQVNTIGFjY2Vzc2libGVUaHJlZS5pc0ZvY3VzZWQgaXMgdHJ1ZQorTGlzdCBu
b3RpZmljYXRpb246IFNlbGVjdGVkQ2hpbGRyZW5DaGFuZ2VkCitMaXN0IG5vdGlmaWNhdGlvbjog
U2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQKKworVEVTVCBDT01QTEVURQorCgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L211bHRp
c2VsZWN0LWxpc3QtcmVwb3J0cy1mb2N1c2VkLW9wdGlvbi1leHBlY3RlZC50eHQKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115529</attachid>
            <date>2011-11-16 23:14:43 -0800</date>
            <delta_ts>2011-11-16 23:38:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72479-20111116231442.patch</filename>
            <type>text/plain</type>
            <size>19344</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMDU2MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDExLTExLTE2ICBEb21pbmlj
IE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFjY2Vzc2liaWxpdHk6
IE11bHRpc2VsZWN0IGxpc3QgYm94ZXMgbmVlZCB0byByZXBvcnQgdGhlIGFjdGl2ZSBvcHRpb24g
aW4gYWRkaXRpb24gdG8gd2hpY2ggaXRlbXMgYXJlIHNlbGVjdGVkLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI0NzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBhY2Nlc3NpYmlsaXR5L211bHRp
c2VsZWN0LWxpc3QtcmVwb3J0cy1hY3RpdmUtb3B0aW9uLmh0bWwKKworICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OmlzQWN0aXZlU2VsZWN0ZWRPcHRpb24pOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uaDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWN0aXZlU2VsZWN0ZWRPcHRpb24pOgorCiAy
MDExLTExLTE2ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWls
ZCBmaXggZm9yIEFwcGxlIFdlYktpdCBkdWUgdG8gcjEwMDU2MC4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hP
cHRpb24uY3BwCShyZXZpc2lvbiAxMDAwOTkpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMs
NiArODMsMTUgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6aXNTZWxlYwogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxIVE1MT3B0aW9uRWxlbWVudCo+KG1fb3B0aW9uRWxlbWVudCkt
PnNlbGVjdGVkKCk7CiB9CiAKK2Jvb2wgQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OmlzQWN0
aXZlU2VsZWN0ZWRPcHRpb24oKSBjb25zdAoreworICAgIEhUTUxTZWxlY3RFbGVtZW50KiBsaXN0
Qm94UGFyZW50Tm9kZSA9IGxpc3RCb3hPcHRpb25QYXJlbnROb2RlKCk7CisgICAgaWYgKCFsaXN0
Qm94UGFyZW50Tm9kZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIChsaXN0
Qm94UGFyZW50Tm9kZS0+YWN0aXZlU2VsZWN0aW9uRW5kTGlzdEluZGV4KCkgPT0gbGlzdEJveE9w
dGlvbkluZGV4KCkpOworfQorCiBMYXlvdXRSZWN0IEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9u
OjplbGVtZW50UmVjdCgpIGNvbnN0CiB7CiAgICAgTGF5b3V0UmVjdCByZWN0OwpJbmRleDogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxp
c3RCb3hPcHRpb24uaAkocmV2aXNpb24gMTAwMDk5KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NCw2ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdu
b3JlZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdGVkKCkgY29uc3Q7CiAgICAg
dmlydHVhbCBib29sIGlzRW5hYmxlZCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2
ZVNlbGVjdGVkT3B0aW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nVmFsdWUo
KSBjb25zdDsKICAgICB2aXJ0dWFsIEVsZW1lbnQqIGFjdGlvbkVsZW1lbnQoKSBjb25zdDsKICAg
ICB2aXJ0dWFsIE5vZGUqIG5vZGUoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbkVsZW1lbnQ7IH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oCShyZXZpc2lvbiAxMDAwOTkpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDEwLDYgKzQxMCw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0NvbGxhcHNlZCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldElzRXhwYW5kZWQoYm9vbCkgeyB9CisgICAgdmly
dHVhbCBib29sIGlzQWN0aXZlU2VsZWN0ZWRPcHRpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogCiAgICAgdmlydHVhbCBib29sIGhhc0JvbGRGb250KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2aXJ0dWFsIGJvb2wgaGFzSXRhbGljRm9udCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTAwNTYzKQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNiBAQAorMjAxMS0xMS0xNiAgRG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNv
bT4KKworICAgICAgICBBY2Nlc3NpYmlsaXR5OiBNdWx0aXNlbGVjdCBsaXN0IGJveGVzIG5lZWQg
dG8gcmVwb3J0IHRoZSBhY3RpdmUgb3B0aW9uIGluIGFkZGl0aW9uIHRvIHdoaWNoIGl0ZW1zIGFy
ZSBzZWxlY3RlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTcyNDc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGVzdDogYWNjZXNzaWJpbGl0eS9tdWx0aXNlbGVjdC1saXN0LXJlcG9ydHMtYWN0aXZlLW9w
dGlvbi5odG1sCisKKyAgICAgICAgKiBwdWJsaWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oOgor
ICAgICAgICAqIHNyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY3RpdmVTZWxlY3RlZE9wdGlvbik6CisKIDIw
MTEtMTEtMTEgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KIAogICAgICAgICBb
Y2hyb21pdW1dIEV4cG9zZSBtb2NrIHNjcm9sbGJhcnMgdG8gd2luZG93LmludGVybmFscwpJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3QuaAkocmV2aXNpb24gMTAwMDk5KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw2
ICs5NCw3IEBAIHB1YmxpYzoKIAogICAgIFdFQktJVF9FWFBPUlQgYm9vbCBjYW5TZXRTZWxlY3Rl
ZEF0dHJpYnV0ZSgpIGNvbnN0OwogCisgICAgV0VCS0lUX0VYUE9SVCBib29sIGlzQWN0aXZlU2Vs
ZWN0ZWRPcHRpb24oKSBjb25zdDsKICAgICBXRUJLSVRfRVhQT1JUIGJvb2wgaXNBbmNob3IoKSBj
b25zdDsKICAgICBXRUJLSVRfRVhQT1JUIGJvb2wgaXNBcmlhUmVhZE9ubHkoKSBjb25zdDsKICAg
ICBXRUJLSVRfRVhQT1JUIGJvb2wgaXNCdXR0b25TdGF0ZU1peGVkKCkgY29uc3Q7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmNwcAkocmV2aXNpb24gMTAwMDk5KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNiw2ICsyMjYs
MTUgQEAgYm9vbCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjYW5TZXRTZWxlYwogICAgIHJldHVy
biBtX3ByaXZhdGUtPmNhblNldFNlbGVjdGVkQXR0cmlidXRlKCk7CiB9CiAKK2Jvb2wgV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdDo6aXNBY3RpdmVTZWxlY3RlZE9wdGlvbigpIGNvbnN0Cit7CisgICAg
aWYgKG1fcHJpdmF0ZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBtX3ByaXZh
dGUtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOworICAgIHJldHVybiBtX3ByaXZhdGUtPmlzQWN0aXZl
U2VsZWN0ZWRPcHRpb24oKTsKK30KKwogYm9vbCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Fu
Y2hvcigpIGNvbnN0CiB7CiAgICAgaWYgKG1fcHJpdmF0ZS5pc051bGwoKSkKSW5kZXg6IFRvb2xz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMDU2
MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisy
MDExLTExLTE2ICBEb21pbmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAg
ICAgIEFjY2Vzc2liaWxpdHk6IE11bHRpc2VsZWN0IGxpc3QgYm94ZXMgbmVlZCB0byByZXBvcnQg
dGhlIGFjdGl2ZSBvcHRpb24gaW4gYWRkaXRpb24gdG8gd2hpY2ggaXRlbXMgYXJlIHNlbGVjdGVk
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI0NzkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwOgorICAgICAgICAoZ2V0SXNBY3Rp
dmVTZWxlY3RlZE9wdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmdldEpTQ2xhc3MpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50LmNwcDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNB
Y3RpdmVTZWxlY3RlZE9wdGlvbkdldHRlckNhbGxiYWNrKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRHdGsuY3BwOgorICAgICAgICAoQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBY3RpdmVTZWxlY3RlZE9wdGlvbik6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAg
IChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0FjdGl2ZVNlbGVjdGVkT3B0aW9uKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVudFdpbi5jcHA6Cisg
ICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0FjdGl2ZVNlbGVjdGVkT3B0aW9uKToK
KwogMjAxMS0xMS0xNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBBZGQgYSBsaXN0IG9mIGNvbnRyaWJ1dGlvbiBhcmVhcwpJbmRleDogVG9vbHMvRHVtcFJlbmRl
clRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVt
cFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAJKHJldmlzaW9uIDEwMDA5OSkK
KysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NjIsNiArNzYyLDExIEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGdldElzTXVs
dGlTZWxlY3RhYmxlQ2EKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIHRv
QVhFbGVtZW50KHRoaXNPYmplY3QpLT5pc011bHRpU2VsZWN0YWJsZSgpKTsKIH0KIAorc3RhdGlj
IEpTVmFsdWVSZWYgZ2V0SXNBY3RpdmVTZWxlY3RlZE9wdGlvbkNhbGxiYWNrKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJl
ZiopCit7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCB0b0FYRWxlbWVu
dCh0aGlzT2JqZWN0KS0+aXNBY3RpdmVTZWxlY3RlZE9wdGlvbigpKTsKK30KKwogc3RhdGljIEpT
VmFsdWVSZWYgZ2V0SXNFeHBhbmRlZENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiopCiB7CiAgICAgcmV0
dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCB0b0FYRWxlbWVudCh0aGlzT2JqZWN0KS0+
aXNFeHBhbmRlZCgpKTsKQEAgLTk3OSw2ICs5ODQsNyBAQCBKU0NsYXNzUmVmIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmdldEpTCiAgICAgICAgIHsgImlzU2VsZWN0ZWQiLCBnZXRJc1NlbGVjdGVk
Q2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiaXNTZWxlY3RhYmxlIiwgZ2V0SXNTZWxl
Y3RhYmxlQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiaXNNdWx0aVNlbGVjdGFibGUi
LCBnZXRJc011bHRpU2VsZWN0YWJsZUNhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgImlz
QWN0aXZlU2VsZWN0ZWRPcHRpb24iLCBnZXRJc0FjdGl2ZVNlbGVjdGVkT3B0aW9uQ2FsbGJhY2ss
IDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAiaXNFeHBhbmRlZCIsIGdldElzRXhwYW5kZWRDYWxsYmFj
aywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAogICAgICAgICB7ICJpc0NoZWNrZWQiLCBnZXRJc0NoZWNrZWRDYWxsYmFj
aywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAogICAgICAgICB7ICJpc1Zpc2libGUiLCBnZXRJc1Zpc2libGVDYWxsYmFj
aywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnQuaAkocmV2aXNpb24gMTAwMDk5KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNiArMTM4LDcg
QEAgcHVibGljOgogICAgIGJvb2wgaXNTZWxlY3RlZCgpIGNvbnN0OwogICAgIGJvb2wgaXNTZWxl
Y3RhYmxlKCkgY29uc3Q7CiAgICAgYm9vbCBpc011bHRpU2VsZWN0YWJsZSgpIGNvbnN0OworICAg
IGJvb2wgaXNBY3RpdmVTZWxlY3RlZE9wdGlvbigpIGNvbnN0OwogICAgIHZvaWQgc2V0U2VsZWN0
ZWRDaGlsZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KikgY29uc3Q7CiAgICAgdW5zaWduZWQgc2Vs
ZWN0ZWRDaGlsZHJlbkNvdW50KCkgY29uc3Q7CiAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBz
ZWxlY3RlZENoaWxkQXRJbmRleCh1bnNpZ25lZCkgY29uc3Q7CkluZGV4OiBUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNw
cAkocmV2aXNpb24gMTAwMDk5KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwOCw2ICszMDgsNyBA
QCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFCiAgICAgYmluZFByb3Bl
cnR5KCJpc1NlbGVjdGVkIiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0ZWRHZXR0
ZXJDYWxsYmFjayk7CiAgICAgYmluZFByb3BlcnR5KCJpc1NlbGVjdGFibGUiLCAmQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6aXNTZWxlY3RhYmxlR2V0dGVyQ2FsbGJhY2spOwogICAgIGJpbmRQcm9w
ZXJ0eSgiaXNNdWx0aVNlbGVjdGFibGUiLCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNNdWx0
aVNlbGVjdGFibGVHZXR0ZXJDYWxsYmFjayk7CisgICAgYmluZFByb3BlcnR5KCJpc0FjdGl2ZVNl
bGVjdGVkT3B0aW9uIiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQWN0aXZlU2VsZWN0ZWRP
cHRpb25HZXR0ZXJDYWxsYmFjayk7CiAgICAgYmluZFByb3BlcnR5KCJpc0V4cGFuZGVkIiwgJkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRXhwYW5kZWRHZXR0ZXJDYWxsYmFjayk7CiAgICAgYmlu
ZFByb3BlcnR5KCJpc0NoZWNrZWQiLCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNDaGVja2Vk
R2V0dGVyQ2FsbGJhY2spOwogICAgIGJpbmRQcm9wZXJ0eSgiaXNWaXNpYmxlIiwgJkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmlzVmlzaWJsZUdldHRlckNhbGxiYWNrKTsKQEAgLTUwMyw2ICs1MDQs
MTEgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc011bHRpU2VsZQogICAgIHJlc3Vs
dC0+c2V0KGFjY2Vzc2liaWxpdHlPYmplY3QoKS5pc011bHRpU2VsZWN0YWJsZSgpKTsKIH0KIAor
dm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0FjdGl2ZVNlbGVjdGVkT3B0aW9uR2V0dGVy
Q2FsbGJhY2soQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0KGFjY2Vzc2li
aWxpdHlPYmplY3QoKS5pc0FjdGl2ZVNlbGVjdGVkT3B0aW9uKCkpOworfQorCiB2b2lkIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzRXhwYW5kZWRHZXR0ZXJDYWxsYmFjayhDcHBWYXJpYW50KiBy
ZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5zZXQoIWFjY2Vzc2liaWxpdHlPYmplY3QoKS5pc0NvbGxh
cHNlZCgpKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJKHJldmlzaW9uIDEwMDA5OSkKKysrIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtODAsNiArODAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaXNTZWxlY3RlZEdldHRl
ckNhbGxiYWNrKENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGlzU2VsZWN0YWJsZUdldHRlckNhbGxi
YWNrKENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGlzTXVsdGlTZWxlY3RhYmxlR2V0dGVyQ2FsbGJh
Y2soQ3BwVmFyaWFudCopOworICAgIHZvaWQgaXNBY3RpdmVTZWxlY3RlZE9wdGlvbkdldHRlckNh
bGxiYWNrKENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGlzRXhwYW5kZWRHZXR0ZXJDYWxsYmFjayhD
cHBWYXJpYW50Kik7CiAgICAgdm9pZCBpc0NoZWNrZWRHZXR0ZXJDYWxsYmFjayhDcHBWYXJpYW50
Kik7CiAgICAgdm9pZCBpc1Zpc2libGVHZXR0ZXJDYWxsYmFjayhDcHBWYXJpYW50Kik7CkluZGV4
OiBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRHdGsuY3BwCShyZXZpc2lvbiAxMDAwOTkpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9n
dGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2Myw2
ICs3NjMsMTIgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc011bHRpU2VsZQogICAg
IHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0FjdGl2
ZVNlbGVjdGVkT3B0aW9uKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAg
cmV0dXJuIGZhbHNlOworfQorCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzVmlzaWJs
ZSgpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudApJbmRleDogVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0JKHJl
dmlzaW9uIDEwMDA5OSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQ0LDYgKzEyNDQsMTIgQEAgYm9v
bCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc011bHRpU2VsZQogICAgIHJldHVybiBmYWxzZTsK
IH0KIAorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0FjdGl2ZVNlbGVjdGVkT3B0aW9u
KCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzVmlzaWJsZSgpIGNvbnN0CiB7CiAg
ICAgLy8gRklYTUU6IGltcGxlbWVudApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNwcAkocmV2aXNpb24gMTAwMDk5
KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NDEsNiArNjQxLDEyIEBAIGJvb2wgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aXNNdWx0aVNlbGUKICAgICByZXR1cm4gKHN0YXRlICYgbXVsdGlTZWxlY3Rh
YmxlKSA9PSBtdWx0aVNlbGVjdGFibGU7CiB9CiAKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNBY3RpdmVTZWxlY3RlZE9wdGlvbigpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGltcGxl
bWVudAorICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojppc1Zpc2libGUoKSBjb25zdAogewogICAgIERXT1JEIHN0YXRlID0gYWNjZXNzaWJpbGl0eVN0
YXRlKG1fZWxlbWVudCk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDA1NjMpCisrKyBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0xMS0xNiAg
RG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KKworICAgICAgICBBY2Nlc3Np
YmlsaXR5OiBNdWx0aXNlbGVjdCBsaXN0IGJveGVzIG5lZWQgdG8gcmVwb3J0IHRoZSBhY3RpdmUg
b3B0aW9uIGluIGFkZGl0aW9uIHRvIHdoaWNoIGl0ZW1zIGFyZSBzZWxlY3RlZC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNDc5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L211
bHRpc2VsZWN0LWxpc3QtcmVwb3J0cy1hY3RpdmUtb3B0aW9uLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvbXVsdGlzZWxlY3QtbGlzdC1yZXBv
cnRzLWFjdGl2ZS1vcHRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAxMS0xMS0xNiAgSmFt
ZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0g
VXBkYXRlIG1vcmUgY2hyb21pdW0gYmFzZWxpbmVzIGFuZCBleHBlY3RhdGlvbnMKSW5kZXg6IExh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbXVsdGlzZWxlY3QtbGlzdC1yZXBvcnRzLWFjdGl2ZS1v
cHRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L211bHRp
c2VsZWN0LWxpc3QtcmVwb3J0cy1hY3RpdmUtb3B0aW9uLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L211bHRpc2VsZWN0LWxpc3QtcmVwb3J0cy1hY3RpdmUt
b3B0aW9uLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODMgQEAKKzxodG1sPgorPGhlYWQ+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
KworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRl
c3RzIHRoYXQgbmF2aWdhdGluZyBpbiBhIG11bHRpc2VsZWN0IGxpc3QgdXBkYXRlcyBzZWxlY3Rp
b24gYW5kIHRoZSBhY3RpdmUgc2VsZWN0ZWQgb3B0aW9uIGFuZCBzZW5kcyBhIG5vdGlmaWNhdGlv
bi4iKTsKKworICAgICAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7Cisg
ICAgICAgICAgICB2YXIgbWVudWxpc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWVudWxp
c3QiKTsKKyAgICAgICAgICAgIG1lbnVsaXN0LmZvY3VzKCk7CisgICAgICAgICAgICB3aW5kb3cu
YWNjZXNzaWJsZU1lbnVsaXN0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1l
bnQ7CisgICAgICAgICAgICB3aW5kb3cuYWNjZXNzaWJsZU9uZSA9IGFjY2Vzc2libGVNZW51bGlz
dC5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAgICAgICB3aW5kb3cuYWNjZXNzaWJsZVR3byA9IGFj
Y2Vzc2libGVNZW51bGlzdC5jaGlsZEF0SW5kZXgoMSk7CisgICAgICAgICAgICB3aW5kb3cuYWNj
ZXNzaWJsZVRocmVlID0gYWNjZXNzaWJsZU1lbnVsaXN0LmNoaWxkQXRJbmRleCgyKTsKKworICAg
ICAgICAgICAgZnVuY3Rpb24gbGlzdExpc3RlbmVyKG5vdGlmaWNhdGlvbikgeworICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJUZXh0ICs9ICJM
aXN0IG5vdGlmaWNhdGlvbjogIiArIG5vdGlmaWNhdGlvbiArICJcbiI7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBhY2Nlc3NpYmxlTWVudWxpc3QuYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIo
bGlzdExpc3RlbmVyKTsKKworICAgICAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVPbmUuaXNT
ZWxlY3RlZCIsICJ0cnVlIik7CisgICAgICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJsZU9uZS5p
c0FjdGl2ZVNlbGVjdGVkT3B0aW9uIiwgInRydWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJh
Y2Nlc3NpYmxlVHdvLmlzU2VsZWN0ZWQiLCAiZmFsc2UiKTsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJhY2Nlc3NpYmxlVHdvLmlzQWN0aXZlU2VsZWN0ZWRPcHRpb24iLCAiZmFsc2UiKTsKKyAgICAg
ICAgICAgIHNob3VsZEJlKCJhY2Nlc3NpYmxlVGhyZWUuaXNTZWxlY3RlZCIsICJmYWxzZSIpOwor
ICAgICAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVUaHJlZS5pc0FjdGl2ZVNlbGVjdGVkT3B0
aW9uIiwgImZhbHNlIik7CisKKyAgICAgICAgICAgIC8vIENoYW5nZSB0aGUgc2VsZWN0ZWQgaW5k
ZXggYnkgc2ltdWxhdGluZyBhIGRvd24gYXJyb3cga2V5ZG93biBldmVudC4KKyAgICAgICAgICAg
IHZhciBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdLZXlib2FyZEV2ZW50cycpOworICAg
ICAgICAgICAgZXZlbnQuaW5pdEtleWJvYXJkRXZlbnQoJ2tleWRvd24nLCB0cnVlLCB0cnVlLCBk
b2N1bWVudC5kZWZhdWx0VmlldywgJ0Rvd24nLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UpOworICAgICAgICAgICAgbWVudWxpc3QuZGlzcGF0Y2hFdmVudChldmVudCk7CisK
KyAgICAgICAgICAgIHNob3VsZEJlKCJhY2Nlc3NpYmxlT25lLmlzU2VsZWN0ZWQiLCAiZmFsc2Ui
KTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJhY2Nlc3NpYmxlT25lLmlzQWN0aXZlU2VsZWN0ZWRP
cHRpb24iLCAiZmFsc2UiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJhY2Nlc3NpYmxlVHdvLmlz
U2VsZWN0ZWQiLCAidHJ1ZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVUd28u
aXNBY3RpdmVTZWxlY3RlZE9wdGlvbiIsICJ0cnVlIik7CisgICAgICAgICAgICBzaG91bGRCZSgi
YWNjZXNzaWJsZVRocmVlLmlzU2VsZWN0ZWQiLCAiZmFsc2UiKTsKKyAgICAgICAgICAgIHNob3Vs
ZEJlKCJhY2Nlc3NpYmxlVGhyZWUuaXNBY3RpdmVTZWxlY3RlZE9wdGlvbiIsICJmYWxzZSIpOwor
CisgICAgICAgICAgICAvLyBFeHRlbmQgdGhlIHNlbGVjdGlvbiBieSBzaW11bGF0aW5nIGEgU2hp
ZnQgKyBEb3duIEFycm93IGtleWRvd24gZXZlbnQuCisgICAgICAgICAgICB2YXIgZXZlbnQgPSBk
b2N1bWVudC5jcmVhdGVFdmVudCgnS2V5Ym9hcmRFdmVudHMnKTsKKyAgICAgICAgICAgIGV2ZW50
LmluaXRLZXlib2FyZEV2ZW50KCdrZXlkb3duJywgdHJ1ZSwgdHJ1ZSwgZG9jdW1lbnQuZGVmYXVs
dFZpZXcsICdEb3duJywgMCwgZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UpOworICAg
ICAgICAgICAgbWVudWxpc3QuZGlzcGF0Y2hFdmVudChldmVudCk7CisKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJhY2Nlc3NpYmxlT25lLmlzU2VsZWN0ZWQiLCAiZmFsc2UiKTsKKyAgICAgICAgICAg
IHNob3VsZEJlKCJhY2Nlc3NpYmxlT25lLmlzQWN0aXZlU2VsZWN0ZWRPcHRpb24iLCAiZmFsc2Ui
KTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJhY2Nlc3NpYmxlVHdvLmlzU2VsZWN0ZWQiLCAidHJ1
ZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVUd28uaXNBY3RpdmVTZWxlY3Rl
ZE9wdGlvbiIsICJmYWxzZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVUaHJl
ZS5pc1NlbGVjdGVkIiwgInRydWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJhY2Nlc3NpYmxl
VGhyZWUuaXNBY3RpdmVTZWxlY3RlZE9wdGlvbiIsICJ0cnVlIik7CisgICAgICAgIH0KKworICAg
ICAgICAvLyBNYWtlIHRoZSB0ZXN0IGZpbmlzaCBxdWlja2x5IHdoZXRoZXIgd2UgZ2V0IHRoZSBu
b3RpZmljYXRpb24gb3Igbm90LgorICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIGRlYnVnKCc8YnIgLz48c3BhbiBjbGFzcz0icGFzcyI+VEVTVCBDT01Q
TEVURTwvc3Bhbj4nKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
ICAgICAgICB9LCAxMCk7CisgICAgfQorCisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xv
YWQnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgc2V0VGltZW91dChydW5UZXN0LCAxMCk7CisgICAg
fSwgZmFsc2UpOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHNlbGVjdCBtdWx0aXBs
ZSBpZD0ibWVudWxpc3QiPgorICA8b3B0aW9uIHNlbGVjdGVkPk9uZTwvb3B0aW9uPgorICA8b3B0
aW9uPlR3bzwvb3B0aW9uPgorICA8b3B0aW9uPlRocmVlPC9vcHRpb24+CisgIDxvcHRpb24+Rm91
cjwvb3B0aW9uPgorPC9zZWxlY3Q+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+CisKKzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMg
b246IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbXVsdGlzZWxlY3QtbGlzdC1yZXBvcnRzLWFj
dGl2ZS1vcHRpb24uaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYK
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L211bHRp
c2VsZWN0LWxpc3QtcmVwb3J0cy1hY3RpdmUtb3B0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L211bHRpc2Vs
ZWN0LWxpc3QtcmVwb3J0cy1hY3RpdmUtb3B0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvbXVsdGlzZWxl
Y3QtbGlzdC1yZXBvcnRzLWFjdGl2ZS1vcHRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDI5IEBACisKK1RoaXMgdGVzdHMgdGhhdCBuYXZpZ2F0aW5nIGluIGEgbXVsdGlz
ZWxlY3QgbGlzdCB1cGRhdGVzIHNlbGVjdGlvbiBhbmQgdGhlIGFjdGl2ZSBzZWxlY3RlZCBvcHRp
b24gYW5kIHNlbmRzIGEgbm90aWZpY2F0aW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBhY2Nlc3NpYmxlT25lLmlzU2VsZWN0ZWQgaXMgdHJ1ZQorUEFTUyBhY2Nlc3Np
YmxlT25lLmlzQWN0aXZlU2VsZWN0ZWRPcHRpb24gaXMgdHJ1ZQorUEFTUyBhY2Nlc3NpYmxlVHdv
LmlzU2VsZWN0ZWQgaXMgZmFsc2UKK1BBU1MgYWNjZXNzaWJsZVR3by5pc0FjdGl2ZVNlbGVjdGVk
T3B0aW9uIGlzIGZhbHNlCitQQVNTIGFjY2Vzc2libGVUaHJlZS5pc1NlbGVjdGVkIGlzIGZhbHNl
CitQQVNTIGFjY2Vzc2libGVUaHJlZS5pc0FjdGl2ZVNlbGVjdGVkT3B0aW9uIGlzIGZhbHNlCitQ
QVNTIGFjY2Vzc2libGVPbmUuaXNTZWxlY3RlZCBpcyBmYWxzZQorUEFTUyBhY2Nlc3NpYmxlT25l
LmlzQWN0aXZlU2VsZWN0ZWRPcHRpb24gaXMgZmFsc2UKK1BBU1MgYWNjZXNzaWJsZVR3by5pc1Nl
bGVjdGVkIGlzIHRydWUKK1BBU1MgYWNjZXNzaWJsZVR3by5pc0FjdGl2ZVNlbGVjdGVkT3B0aW9u
IGlzIHRydWUKK1BBU1MgYWNjZXNzaWJsZVRocmVlLmlzU2VsZWN0ZWQgaXMgZmFsc2UKK1BBU1Mg
YWNjZXNzaWJsZVRocmVlLmlzQWN0aXZlU2VsZWN0ZWRPcHRpb24gaXMgZmFsc2UKK1BBU1MgYWNj
ZXNzaWJsZU9uZS5pc1NlbGVjdGVkIGlzIGZhbHNlCitQQVNTIGFjY2Vzc2libGVPbmUuaXNBY3Rp
dmVTZWxlY3RlZE9wdGlvbiBpcyBmYWxzZQorUEFTUyBhY2Nlc3NpYmxlVHdvLmlzU2VsZWN0ZWQg
aXMgdHJ1ZQorUEFTUyBhY2Nlc3NpYmxlVHdvLmlzQWN0aXZlU2VsZWN0ZWRPcHRpb24gaXMgZmFs
c2UKK1BBU1MgYWNjZXNzaWJsZVRocmVlLmlzU2VsZWN0ZWQgaXMgdHJ1ZQorUEFTUyBhY2Nlc3Np
YmxlVGhyZWUuaXNBY3RpdmVTZWxlY3RlZE9wdGlvbiBpcyB0cnVlCitMaXN0IG5vdGlmaWNhdGlv
bjogU2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQKK0xpc3Qgbm90aWZpY2F0aW9uOiBTZWxlY3RlZENo
aWxkcmVuQ2hhbmdlZAorCitURVNUIENPTVBMRVRFCisKClByb3BlcnR5IGNoYW5nZXMgb246IExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvbXVsdGlzZWxlY3QtbGlz
dC1yZXBvcnRzLWFjdGl2ZS1vcHRpb24tZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2
bjplb2wtc3R5bGUKICAgKyBMRgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115531</attachid>
            <date>2011-11-16 23:38:13 -0800</date>
            <delta_ts>2011-11-16 23:49:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72479-20111116233812.patch</filename>
            <type>text/plain</type>
            <size>19412</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMDU2MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDExLTExLTE2ICBEb21pbmlj
IE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFjY2Vzc2liaWxpdHk6
IE11bHRpc2VsZWN0IGxpc3QgYm94ZXMgbmVlZCB0byByZXBvcnQgdGhlIGFjdGl2ZSBvcHRpb24g
aW4gYWRkaXRpb24gdG8gd2hpY2ggaXRlbXMgYXJlIHNlbGVjdGVkLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI0NzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBhY2Nlc3NpYmlsaXR5L211bHRp
c2VsZWN0LWxpc3QtcmVwb3J0cy1hY3RpdmUtb3B0aW9uLmh0bWwKKworICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OmlzQWN0aXZlU2VsZWN0ZWRPcHRpb24pOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uaDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWN0aXZlU2VsZWN0ZWRPcHRpb24pOgorCiAy
MDExLTExLTE2ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWls
ZCBmaXggZm9yIEFwcGxlIFdlYktpdCBkdWUgdG8gcjEwMDU2MC4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hP
cHRpb24uY3BwCShyZXZpc2lvbiAxMDAwOTkpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMs
NiArODMsMTUgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6aXNTZWxlYwogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxIVE1MT3B0aW9uRWxlbWVudCo+KG1fb3B0aW9uRWxlbWVudCkt
PnNlbGVjdGVkKCk7CiB9CiAKK2Jvb2wgQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OmlzQWN0
aXZlU2VsZWN0ZWRPcHRpb24oKSBjb25zdAoreworICAgIEhUTUxTZWxlY3RFbGVtZW50KiBsaXN0
Qm94UGFyZW50Tm9kZSA9IGxpc3RCb3hPcHRpb25QYXJlbnROb2RlKCk7CisgICAgaWYgKCFsaXN0
Qm94UGFyZW50Tm9kZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGxpc3RC
b3hQYXJlbnROb2RlLT5hY3RpdmVTZWxlY3Rpb25FbmRMaXN0SW5kZXgoKSA9PSBsaXN0Qm94T3B0
aW9uSW5kZXgoKTsKK30KKwogTGF5b3V0UmVjdCBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6
ZWxlbWVudFJlY3QoKSBjb25zdAogewogICAgIExheW91dFJlY3QgcmVjdDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0
Qm94T3B0aW9uLmgJKHJldmlzaW9uIDEwMDA5OSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTQs
NiArNTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGFjY2Vzc2liaWxpdHlJc0lnbm9y
ZWQoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3RlZCgpIGNvbnN0OwogICAgIHZp
cnR1YWwgYm9vbCBpc0VuYWJsZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmVT
ZWxlY3RlZE9wdGlvbigpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ1ZhbHVlKCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBFbGVtZW50KiBhY3Rpb25FbGVtZW50KCkgY29uc3Q7CiAgICAg
dmlydHVhbCBOb2RlKiBub2RlKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25FbGVtZW50OyB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3QuaAkocmV2aXNpb24gMTAwMDk5KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxMCw2ICs0MTAsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNDb2xsYXBzZWQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRJc0V4cGFuZGVkKGJvb2wpIHsgfQorICAgIHZpcnR1
YWwgYm9vbCBpc0FjdGl2ZVNlbGVjdGVkT3B0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
IAogICAgIHZpcnR1YWwgYm9vbCBoYXNCb2xkRm9udCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCBib29sIGhhc0l0YWxpY0ZvbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMDU2MykKKysrIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMTEtMTEtMTYgIERvbWluaWMgTWF6em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+
CisKKyAgICAgICAgQWNjZXNzaWJpbGl0eTogTXVsdGlzZWxlY3QgbGlzdCBib3hlcyBuZWVkIHRv
IHJlcG9ydCB0aGUgYWN0aXZlIG9wdGlvbiBpbiBhZGRpdGlvbiB0byB3aGljaCBpdGVtcyBhcmUg
c2VsZWN0ZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MjQ3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3Q6IGFjY2Vzc2liaWxpdHkvbXVsdGlzZWxlY3QtbGlzdC1yZXBvcnRzLWFjdGl2ZS1vcHRp
b24uaHRtbAorCisgICAgICAgICogcHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAg
ICAgICAgKiBzcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWN0aXZlU2VsZWN0ZWRPcHRpb24pOgorCiAyMDEx
LTExLTExICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2No
cm9taXVtXSBFeHBvc2UgbW9jayBzY3JvbGxiYXJzIHRvIHdpbmRvdy5pbnRlcm5hbHMKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0LmgJKHJldmlzaW9uIDEwMDA5OSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtOTQsNiAr
OTQsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJLSVRfRVhQT1JUIGJvb2wgY2FuU2V0U2VsZWN0ZWRB
dHRyaWJ1dGUoKSBjb25zdDsKIAorICAgIFdFQktJVF9FWFBPUlQgYm9vbCBpc0FjdGl2ZVNlbGVj
dGVkT3B0aW9uKCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9SVCBib29sIGlzQW5jaG9yKCkgY29u
c3Q7CiAgICAgV0VCS0lUX0VYUE9SVCBib29sIGlzQXJpYVJlYWRPbmx5KCkgY29uc3Q7CiAgICAg
V0VCS0lUX0VYUE9SVCBib29sIGlzQnV0dG9uU3RhdGVNaXhlZCgpIGNvbnN0OwpJbmRleDogU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dC5jcHAJKHJldmlzaW9uIDEwMDA5OSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjYsNiArMjI2LDE1
IEBAIGJvb2wgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6Y2FuU2V0U2VsZWMKICAgICByZXR1cm4g
bV9wcml2YXRlLT5jYW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSgpOwogfQogCitib29sIFdlYkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzQWN0aXZlU2VsZWN0ZWRPcHRpb24oKSBjb25zdAoreworICAgIGlm
IChtX3ByaXZhdGUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fcHJp
dmF0ZS0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+aXNBY3Rp
dmVTZWxlY3RlZE9wdGlvbigpOworfQorCiBib29sIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q6Omlz
QW5jaG9yKCkgY29uc3QKIHsKICAgICBpZiAobV9wcml2YXRlLmlzTnVsbCgpKQpJbmRleDogVG9v
bHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTAw
NTYzKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAK
KzIwMTEtMTEtMTYgIERvbWluaWMgTWF6em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgQWNjZXNzaWJpbGl0eTogTXVsdGlzZWxlY3QgbGlzdCBib3hlcyBuZWVkIHRvIHJlcG9y
dCB0aGUgYWN0aXZlIG9wdGlvbiBpbiBhZGRpdGlvbiB0byB3aGljaCBpdGVtcyBhcmUgc2VsZWN0
ZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjQ3
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA6CisgICAgICAgIChnZXRJc0Fj
dGl2ZVNlbGVjdGVkT3B0aW9uQ2FsbGJhY2spOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6Z2V0SlNDbGFzcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuY3BwOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudCk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpp
c0FjdGl2ZVNlbGVjdGVkT3B0aW9uR2V0dGVyQ2FsbGJhY2spOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDoKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHA6CisgICAgICAgIChB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0FjdGl2ZVNlbGVjdGVkT3B0aW9uKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbToKKyAgICAg
ICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQWN0aXZlU2VsZWN0ZWRPcHRpb24pOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNwcDoK
KyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQWN0aXZlU2VsZWN0ZWRPcHRpb24p
OgorCiAyMDExLTExLTE2ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIEFkZCBhIGxpc3Qgb2YgY29udHJpYnV0aW9uIGFyZWFzCkluZGV4OiBUb29scy9EdW1wUmVu
ZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9E
dW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAkocmV2aXNpb24gMTAwMDk5
KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc2Miw2ICs3NjIsMTEgQEAgc3RhdGljIEpTVmFsdWVSZWYgZ2V0SXNN
dWx0aVNlbGVjdGFibGVDYQogICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwg
dG9BWEVsZW1lbnQodGhpc09iamVjdCktPmlzTXVsdGlTZWxlY3RhYmxlKCkpOwogfQogCitzdGF0
aWMgSlNWYWx1ZVJlZiBnZXRJc0FjdGl2ZVNlbGVjdGVkT3B0aW9uQ2FsbGJhY2soSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVl
UmVmKikKK3sKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIHRvQVhFbGVt
ZW50KHRoaXNPYmplY3QpLT5pc0FjdGl2ZVNlbGVjdGVkT3B0aW9uKCkpOworfQorCiBzdGF0aWMg
SlNWYWx1ZVJlZiBnZXRJc0V4cGFuZGVkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikKIHsKICAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIHRvQVhFbGVtZW50KHRoaXNPYmplY3Qp
LT5pc0V4cGFuZGVkKCkpOwpAQCAtOTc5LDYgKzk4NCw3IEBAIEpTQ2xhc3NSZWYgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6Z2V0SlMKICAgICAgICAgeyAiaXNTZWxlY3RlZCIsIGdldElzU2VsZWN0
ZWRDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJpc1NlbGVjdGFibGUiLCBnZXRJc1Nl
bGVjdGFibGVDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJpc011bHRpU2VsZWN0YWJs
ZSIsIGdldElzTXVsdGlTZWxlY3RhYmxlQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAi
aXNBY3RpdmVTZWxlY3RlZE9wdGlvbiIsIGdldElzQWN0aXZlU2VsZWN0ZWRPcHRpb25DYWxsYmFj
aywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAogICAgICAgICB7ICJpc0V4cGFuZGVkIiwgZ2V0SXNFeHBhbmRlZENhbGxi
YWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImlzQ2hlY2tlZCIsIGdldElzQ2hlY2tlZENhbGxi
YWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImlzVmlzaWJsZSIsIGdldElzVmlzaWJsZUNhbGxi
YWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudC5oCShyZXZpc2lvbiAxMDAwOTkpCisrKyBUb29scy9EdW1wUmVuZGVyVHJl
ZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw2ICsxMzgs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1NlbGVjdGVkKCkgY29uc3Q7CiAgICAgYm9vbCBpc1Nl
bGVjdGFibGUoKSBjb25zdDsKICAgICBib29sIGlzTXVsdGlTZWxlY3RhYmxlKCkgY29uc3Q7Cisg
ICAgYm9vbCBpc0FjdGl2ZVNlbGVjdGVkT3B0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTZWxl
Y3RlZENoaWxkKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqKSBjb25zdDsKICAgICB1bnNpZ25lZCBz
ZWxlY3RlZENoaWxkcmVuQ291bnQoKSBjb25zdDsKICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
IHNlbGVjdGVkQ2hpbGRBdEluZGV4KHVuc2lnbmVkKSBjb25zdDsKSW5kZXg6IFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxMDAwOTkpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA4LDYgKzMwOCw3
IEBAIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUUKICAgICBiaW5kUHJv
cGVydHkoImlzU2VsZWN0ZWQiLCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RlZEdl
dHRlckNhbGxiYWNrKTsKICAgICBiaW5kUHJvcGVydHkoImlzU2VsZWN0YWJsZSIsICZBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojppc1NlbGVjdGFibGVHZXR0ZXJDYWxsYmFjayk7CiAgICAgYmluZFBy
b3BlcnR5KCJpc011bHRpU2VsZWN0YWJsZSIsICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc011
bHRpU2VsZWN0YWJsZUdldHRlckNhbGxiYWNrKTsKKyAgICBiaW5kUHJvcGVydHkoImlzQWN0aXZl
U2VsZWN0ZWRPcHRpb24iLCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBY3RpdmVTZWxlY3Rl
ZE9wdGlvbkdldHRlckNhbGxiYWNrKTsKICAgICBiaW5kUHJvcGVydHkoImlzRXhwYW5kZWQiLCAm
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFeHBhbmRlZEdldHRlckNhbGxiYWNrKTsKICAgICBi
aW5kUHJvcGVydHkoImlzQ2hlY2tlZCIsICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0NoZWNr
ZWRHZXR0ZXJDYWxsYmFjayk7CiAgICAgYmluZFByb3BlcnR5KCJpc1Zpc2libGUiLCAmQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aXNWaXNpYmxlR2V0dGVyQ2FsbGJhY2spOwpAQCAtNTAzLDYgKzUw
NCwxMSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzTXVsdGlTZWxlCiAgICAgcmVz
dWx0LT5zZXQoYWNjZXNzaWJpbGl0eU9iamVjdCgpLmlzTXVsdGlTZWxlY3RhYmxlKCkpOwogfQog
Cit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQWN0aXZlU2VsZWN0ZWRPcHRpb25HZXR0
ZXJDYWxsYmFjayhDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXQoYWNjZXNz
aWJpbGl0eU9iamVjdCgpLmlzQWN0aXZlU2VsZWN0ZWRPcHRpb24oKSk7Cit9CisKIHZvaWQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFeHBhbmRlZEdldHRlckNhbGxiYWNrKENwcFZhcmlhbnQq
IHJlc3VsdCkKIHsKICAgICByZXN1bHQtPnNldCghYWNjZXNzaWJpbGl0eU9iamVjdCgpLmlzQ29s
bGFwc2VkKCkpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJp
bGl0eVVJRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkocmV2aXNpb24gMTAwMDk5KQorKysgVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC04MCw2ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpc1NlbGVjdGVkR2V0
dGVyQ2FsbGJhY2soQ3BwVmFyaWFudCopOwogICAgIHZvaWQgaXNTZWxlY3RhYmxlR2V0dGVyQ2Fs
bGJhY2soQ3BwVmFyaWFudCopOwogICAgIHZvaWQgaXNNdWx0aVNlbGVjdGFibGVHZXR0ZXJDYWxs
YmFjayhDcHBWYXJpYW50Kik7CisgICAgdm9pZCBpc0FjdGl2ZVNlbGVjdGVkT3B0aW9uR2V0dGVy
Q2FsbGJhY2soQ3BwVmFyaWFudCopOwogICAgIHZvaWQgaXNFeHBhbmRlZEdldHRlckNhbGxiYWNr
KENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGlzQ2hlY2tlZEdldHRlckNhbGxiYWNrKENwcFZhcmlh
bnQqKTsKICAgICB2b2lkIGlzVmlzaWJsZUdldHRlckNhbGxiYWNrKENwcFZhcmlhbnQqKTsKSW5k
ZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50R3RrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudEd0ay5jcHAJKHJldmlzaW9uIDEwMDA5OSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2d0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYz
LDYgKzc2MywxMiBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzTXVsdGlTZWxlCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQWN0
aXZlU2VsZWN0ZWRPcHRpb24oKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNWaXNp
YmxlKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CkluZGV4OiBUb29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQko
cmV2aXNpb24gMTAwMDk5KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyNDQsNiArMTI0NCwxMiBAQCBi
b29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzTXVsdGlTZWxlCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQWN0aXZlU2VsZWN0ZWRPcHRp
b24oKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNWaXNpYmxlKCkgY29uc3QKIHsK
ICAgICAvLyBGSVhNRTogaW1wbGVtZW50CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4v
QWNjZXNzaWJpbGl0eVVJRWxlbWVudFdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwCShyZXZpc2lvbiAxMDAw
OTkpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVudFdp
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0MSw2ICs2NDEsMTIgQEAgYm9vbCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojppc011bHRpU2VsZQogICAgIHJldHVybiAoc3RhdGUgJiBtdWx0aVNlbGVj
dGFibGUpID09IG11bHRpU2VsZWN0YWJsZTsKIH0KIAorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojppc0FjdGl2ZVNlbGVjdGVkT3B0aW9uKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1w
bGVtZW50CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzVmlzaWJsZSgpIGNvbnN0CiB7CiAgICAgRFdPUkQgc3RhdGUgPSBhY2Nlc3NpYmlsaXR5
U3RhdGUobV9lbGVtZW50KTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMDU2MykKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDExLTExLTE2
ICBEb21pbmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFjY2Vz
c2liaWxpdHk6IE11bHRpc2VsZWN0IGxpc3QgYm94ZXMgbmVlZCB0byByZXBvcnQgdGhlIGFjdGl2
ZSBvcHRpb24gaW4gYWRkaXRpb24gdG8gd2hpY2ggaXRlbXMgYXJlIHNlbGVjdGVkLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI0NzkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
bXVsdGlzZWxlY3QtbGlzdC1yZXBvcnRzLWFjdGl2ZS1vcHRpb24uaHRtbDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9tdWx0aXNlbGVjdC1saXN0LXJl
cG9ydHMtYWN0aXZlLW9wdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDExLTExLTE2ICBK
YW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVt
XSBVcGRhdGUgbW9yZSBjaHJvbWl1bSBiYXNlbGluZXMgYW5kIGV4cGVjdGF0aW9ucwpJbmRleDog
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tdWx0aXNlbGVjdC1saXN0LXJlcG9ydHMtYWN0aXZl
LW9wdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbXVs
dGlzZWxlY3QtbGlzdC1yZXBvcnRzLWFjdGl2ZS1vcHRpb24uaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbXVsdGlzZWxlY3QtbGlzdC1yZXBvcnRzLWFjdGl2
ZS1vcHRpb24uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NCBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgZGVzY3JpcHRpb24oIlRoaXMg
dGVzdHMgdGhhdCBuYXZpZ2F0aW5nIGluIGEgbXVsdGlzZWxlY3QgbGlzdCB1cGRhdGVzIHNlbGVj
dGlvbiBhbmQgdGhlIGFjdGl2ZSBzZWxlY3RlZCBvcHRpb24gYW5kIHNlbmRzIGEgbm90aWZpY2F0
aW9uLiIpOworCisgICAgICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsK
KyAgICAgICAgICAgIHZhciBtZW51bGlzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtZW51
bGlzdCIpOworICAgICAgICAgICAgbWVudWxpc3QuZm9jdXMoKTsKKyAgICAgICAgICAgIHdpbmRv
dy5hY2Nlc3NpYmxlTWVudWxpc3QgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxl
bWVudDsKKyAgICAgICAgICAgIHdpbmRvdy5hY2Nlc3NpYmxlT25lID0gYWNjZXNzaWJsZU1lbnVs
aXN0LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgICAgIHdpbmRvdy5hY2Nlc3NpYmxlVHdvID0g
YWNjZXNzaWJsZU1lbnVsaXN0LmNoaWxkQXRJbmRleCgxKTsKKyAgICAgICAgICAgIHdpbmRvdy5h
Y2Nlc3NpYmxlVGhyZWUgPSBhY2Nlc3NpYmxlTWVudWxpc3QuY2hpbGRBdEluZGV4KDIpOworCisg
ICAgICAgICAgICBmdW5jdGlvbiBsaXN0TGlzdGVuZXIobm90aWZpY2F0aW9uKSB7CisgICAgICAg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lclRleHQgKz0g
Ikxpc3Qgbm90aWZpY2F0aW9uOiAiICsgbm90aWZpY2F0aW9uICsgIlxuIjsKKyAgICAgICAgICAg
ICAgICBhY2Nlc3NpYmxlTWVudWxpc3QucmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGFjY2Vzc2libGVNZW51bGlzdC5hZGROb3RpZmljYXRp
b25MaXN0ZW5lcihsaXN0TGlzdGVuZXIpOworCisgICAgICAgICAgICBzaG91bGRCZSgiYWNjZXNz
aWJsZU9uZS5pc1NlbGVjdGVkIiwgInRydWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJhY2Nl
c3NpYmxlT25lLmlzQWN0aXZlU2VsZWN0ZWRPcHRpb24iLCAidHJ1ZSIpOworICAgICAgICAgICAg
c2hvdWxkQmUoImFjY2Vzc2libGVUd28uaXNTZWxlY3RlZCIsICJmYWxzZSIpOworICAgICAgICAg
ICAgc2hvdWxkQmUoImFjY2Vzc2libGVUd28uaXNBY3RpdmVTZWxlY3RlZE9wdGlvbiIsICJmYWxz
ZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVUaHJlZS5pc1NlbGVjdGVkIiwg
ImZhbHNlIik7CisgICAgICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJsZVRocmVlLmlzQWN0aXZl
U2VsZWN0ZWRPcHRpb24iLCAiZmFsc2UiKTsKKworICAgICAgICAgICAgLy8gQ2hhbmdlIHRoZSBz
ZWxlY3RlZCBpbmRleCBieSBzaW11bGF0aW5nIGEgZG93biBhcnJvdyBrZXlkb3duIGV2ZW50Lgor
ICAgICAgICAgICAgdmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0tleWJvYXJkRXZl
bnRzJyk7CisgICAgICAgICAgICBldmVudC5pbml0S2V5Ym9hcmRFdmVudCgna2V5ZG93bicsIHRy
dWUsIHRydWUsIGRvY3VtZW50LmRlZmF1bHRWaWV3LCAnRG93bicsIDAsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICBtZW51bGlzdC5kaXNwYXRjaEV2ZW50
KGV2ZW50KTsKKworICAgICAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVPbmUuaXNTZWxlY3Rl
ZCIsICJmYWxzZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVPbmUuaXNBY3Rp
dmVTZWxlY3RlZE9wdGlvbiIsICJmYWxzZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImFjY2Vz
c2libGVUd28uaXNTZWxlY3RlZCIsICJ0cnVlIik7CisgICAgICAgICAgICBzaG91bGRCZSgiYWNj
ZXNzaWJsZVR3by5pc0FjdGl2ZVNlbGVjdGVkT3B0aW9uIiwgInRydWUiKTsKKyAgICAgICAgICAg
IHNob3VsZEJlKCJhY2Nlc3NpYmxlVGhyZWUuaXNTZWxlY3RlZCIsICJmYWxzZSIpOworICAgICAg
ICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVUaHJlZS5pc0FjdGl2ZVNlbGVjdGVkT3B0aW9uIiwg
ImZhbHNlIik7CisKKyAgICAgICAgICAgIC8vIEV4dGVuZCB0aGUgc2VsZWN0aW9uIGJ5IHNpbXVs
YXRpbmcgYSBTaGlmdCArIERvd24gQXJyb3cga2V5ZG93biBldmVudC4KKyAgICAgICAgICAgIHZh
ciBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdLZXlib2FyZEV2ZW50cycpOworICAgICAg
ICAgICAgZXZlbnQuaW5pdEtleWJvYXJkRXZlbnQoJ2tleWRvd24nLCB0cnVlLCB0cnVlLCBkb2N1
bWVudC5kZWZhdWx0VmlldywgJ0Rvd24nLCAwLCBmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlLCBm
YWxzZSk7CisgICAgICAgICAgICBtZW51bGlzdC5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKKworICAg
ICAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVPbmUuaXNTZWxlY3RlZCIsICJmYWxzZSIpOwor
ICAgICAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVPbmUuaXNBY3RpdmVTZWxlY3RlZE9wdGlv
biIsICJmYWxzZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVUd28uaXNTZWxl
Y3RlZCIsICJ0cnVlIik7CisgICAgICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJsZVR3by5pc0Fj
dGl2ZVNlbGVjdGVkT3B0aW9uIiwgImZhbHNlIik7CisgICAgICAgICAgICBzaG91bGRCZSgiYWNj
ZXNzaWJsZVRocmVlLmlzU2VsZWN0ZWQiLCAidHJ1ZSIpOworICAgICAgICAgICAgc2hvdWxkQmUo
ImFjY2Vzc2libGVUaHJlZS5pc0FjdGl2ZVNlbGVjdGVkT3B0aW9uIiwgInRydWUiKTsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIE1ha2UgdGhlIHRlc3QgZmluaXNoIHF1aWNrbHkgd2hldGhlciB3
ZSBnZXQgdGhlIG5vdGlmaWNhdGlvbiBvciBub3QuCisgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZGVidWcoJzxiciAvPjxzcGFuIGNsYXNzPSJwYXNz
Ij5URVNUIENPTVBMRVRFPC9zcGFuPicpOworICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CisgICAgICAgIH0sIDEwKTsKKyAgICB9CisKKyAgICB3aW5kb3cuYWRkRXZlbnRM
aXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uKCkgeworICAgICAgICBzZXRUaW1lb3V0KHJ1blRlc3Qs
IDEwKTsKKyAgICB9LCBmYWxzZSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8c2Vs
ZWN0IG11bHRpcGxlIGlkPSJtZW51bGlzdCI+CisgIDxvcHRpb24gc2VsZWN0ZWQ+T25lPC9vcHRp
b24+CisgIDxvcHRpb24+VHdvPC9vcHRpb24+CisgIDxvcHRpb24+VGhyZWU8L29wdGlvbj4KKyAg
PG9wdGlvbj5Gb3VyPC9vcHRpb24+Cis8L3NlbGVjdD4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48
L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPC9ib2R5PgorPC9odG1sPgoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tdWx0aXNlbGVjdC1saXN0
LXJlcG9ydHMtYWN0aXZlLW9wdGlvbi5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5
bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2li
aWxpdHkvbXVsdGlzZWxlY3QtbGlzdC1yZXBvcnRzLWFjdGl2ZS1vcHRpb24tZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxp
dHkvbXVsdGlzZWxlY3QtbGlzdC1yZXBvcnRzLWFjdGl2ZS1vcHRpb24tZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0
eS9tdWx0aXNlbGVjdC1saXN0LXJlcG9ydHMtYWN0aXZlLW9wdGlvbi1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMjkgQEAKKworVGhpcyB0ZXN0cyB0aGF0IG5hdmlnYXRpbmcg
aW4gYSBtdWx0aXNlbGVjdCBsaXN0IHVwZGF0ZXMgc2VsZWN0aW9uIGFuZCB0aGUgYWN0aXZlIHNl
bGVjdGVkIG9wdGlvbiBhbmQgc2VuZHMgYSBub3RpZmljYXRpb24uCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIGFjY2Vzc2libGVPbmUuaXNTZWxlY3RlZCBpcyB0cnVlCitQ
QVNTIGFjY2Vzc2libGVPbmUuaXNBY3RpdmVTZWxlY3RlZE9wdGlvbiBpcyB0cnVlCitQQVNTIGFj
Y2Vzc2libGVUd28uaXNTZWxlY3RlZCBpcyBmYWxzZQorUEFTUyBhY2Nlc3NpYmxlVHdvLmlzQWN0
aXZlU2VsZWN0ZWRPcHRpb24gaXMgZmFsc2UKK1BBU1MgYWNjZXNzaWJsZVRocmVlLmlzU2VsZWN0
ZWQgaXMgZmFsc2UKK1BBU1MgYWNjZXNzaWJsZVRocmVlLmlzQWN0aXZlU2VsZWN0ZWRPcHRpb24g
aXMgZmFsc2UKK1BBU1MgYWNjZXNzaWJsZU9uZS5pc1NlbGVjdGVkIGlzIGZhbHNlCitQQVNTIGFj
Y2Vzc2libGVPbmUuaXNBY3RpdmVTZWxlY3RlZE9wdGlvbiBpcyBmYWxzZQorUEFTUyBhY2Nlc3Np
YmxlVHdvLmlzU2VsZWN0ZWQgaXMgdHJ1ZQorUEFTUyBhY2Nlc3NpYmxlVHdvLmlzQWN0aXZlU2Vs
ZWN0ZWRPcHRpb24gaXMgdHJ1ZQorUEFTUyBhY2Nlc3NpYmxlVGhyZWUuaXNTZWxlY3RlZCBpcyBm
YWxzZQorUEFTUyBhY2Nlc3NpYmxlVGhyZWUuaXNBY3RpdmVTZWxlY3RlZE9wdGlvbiBpcyBmYWxz
ZQorUEFTUyBhY2Nlc3NpYmxlT25lLmlzU2VsZWN0ZWQgaXMgZmFsc2UKK1BBU1MgYWNjZXNzaWJs
ZU9uZS5pc0FjdGl2ZVNlbGVjdGVkT3B0aW9uIGlzIGZhbHNlCitQQVNTIGFjY2Vzc2libGVUd28u
aXNTZWxlY3RlZCBpcyB0cnVlCitQQVNTIGFjY2Vzc2libGVUd28uaXNBY3RpdmVTZWxlY3RlZE9w
dGlvbiBpcyBmYWxzZQorUEFTUyBhY2Nlc3NpYmxlVGhyZWUuaXNTZWxlY3RlZCBpcyB0cnVlCitQ
QVNTIGFjY2Vzc2libGVUaHJlZS5pc0FjdGl2ZVNlbGVjdGVkT3B0aW9uIGlzIHRydWUKK0xpc3Qg
bm90aWZpY2F0aW9uOiBTZWxlY3RlZENoaWxkcmVuQ2hhbmdlZAorTGlzdCBub3RpZmljYXRpb246
IFNlbGVjdGVkQ2hpbGRyZW5DaGFuZ2VkCisKK1RFU1QgQ09NUExFVEUKKwoKUHJvcGVydHkgY2hh
bmdlcyBvbjogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9tdWx0
aXNlbGVjdC1saXN0LXJlcG9ydHMtYWN0aXZlLW9wdGlvbi1leHBlY3RlZC50eHQKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115533</attachid>
            <date>2011-11-16 23:49:04 -0800</date>
            <delta_ts>2011-11-21 01:29:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72479-20111116234903.patch</filename>
            <type>text/plain</type>
            <size>19461</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMDU2MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDExLTExLTE2ICBEb21pbmlj
IE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFjY2Vzc2liaWxpdHk6
IE11bHRpc2VsZWN0IGxpc3QgYm94ZXMgbmVlZCB0byByZXBvcnQgdGhlIGFjdGl2ZSBvcHRpb24g
aW4gYWRkaXRpb24gdG8gd2hpY2ggaXRlbXMgYXJlIHNlbGVjdGVkLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI0NzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBhY2Nlc3NpYmlsaXR5L211bHRp
c2VsZWN0LWxpc3QtcmVwb3J0cy1hY3RpdmUtb3B0aW9uLmh0bWwKKworICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OmlzQWN0aXZlU2VsZWN0ZWRPcHRpb24pOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uaDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWN0aXZlU2VsZWN0ZWRPcHRpb24pOgorCiAy
MDExLTExLTE2ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWls
ZCBmaXggZm9yIEFwcGxlIFdlYktpdCBkdWUgdG8gcjEwMDU2MC4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hP
cHRpb24uY3BwCShyZXZpc2lvbiAxMDAwOTkpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMs
NiArODMsMTUgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6aXNTZWxlYwogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxIVE1MT3B0aW9uRWxlbWVudCo+KG1fb3B0aW9uRWxlbWVudCkt
PnNlbGVjdGVkKCk7CiB9CiAKK2Jvb2wgQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OmlzQWN0
aXZlU2VsZWN0ZWRPcHRpb24oKSBjb25zdAoreworICAgIEhUTUxTZWxlY3RFbGVtZW50KiBsaXN0
Qm94UGFyZW50Tm9kZSA9IGxpc3RCb3hPcHRpb25QYXJlbnROb2RlKCk7CisgICAgaWYgKCFsaXN0
Qm94UGFyZW50Tm9kZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGxpc3RC
b3hQYXJlbnROb2RlLT5hY3RpdmVTZWxlY3Rpb25FbmRMaXN0SW5kZXgoKSA9PSBsaXN0Qm94T3B0
aW9uSW5kZXgoKTsKK30KKwogTGF5b3V0UmVjdCBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6
ZWxlbWVudFJlY3QoKSBjb25zdAogewogICAgIExheW91dFJlY3QgcmVjdDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0
Qm94T3B0aW9uLmgJKHJldmlzaW9uIDEwMDA5OSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTQs
NiArNTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGFjY2Vzc2liaWxpdHlJc0lnbm9y
ZWQoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3RlZCgpIGNvbnN0OwogICAgIHZp
cnR1YWwgYm9vbCBpc0VuYWJsZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmVT
ZWxlY3RlZE9wdGlvbigpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ1ZhbHVlKCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBFbGVtZW50KiBhY3Rpb25FbGVtZW50KCkgY29uc3Q7CiAgICAg
dmlydHVhbCBOb2RlKiBub2RlKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25FbGVtZW50OyB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3QuaAkocmV2aXNpb24gMTAwMDk5KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxMCw2ICs0MTAsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNDb2xsYXBzZWQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRJc0V4cGFuZGVkKGJvb2wpIHsgfQorICAgIHZpcnR1
YWwgYm9vbCBpc0FjdGl2ZVNlbGVjdGVkT3B0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
IAogICAgIHZpcnR1YWwgYm9vbCBoYXNCb2xkRm9udCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCBib29sIGhhc0l0YWxpY0ZvbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMDU2MykKKysrIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMTEtMTEtMTYgIERvbWluaWMgTWF6em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+
CisKKyAgICAgICAgQWNjZXNzaWJpbGl0eTogTXVsdGlzZWxlY3QgbGlzdCBib3hlcyBuZWVkIHRv
IHJlcG9ydCB0aGUgYWN0aXZlIG9wdGlvbiBpbiBhZGRpdGlvbiB0byB3aGljaCBpdGVtcyBhcmUg
c2VsZWN0ZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MjQ3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3Q6IGFjY2Vzc2liaWxpdHkvbXVsdGlzZWxlY3QtbGlzdC1yZXBvcnRzLWFjdGl2ZS1vcHRp
b24uaHRtbAorCisgICAgICAgICogcHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAg
ICAgICAgKiBzcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWN0aXZlU2VsZWN0ZWRPcHRpb24pOgorCiAyMDEx
LTExLTExICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2No
cm9taXVtXSBFeHBvc2UgbW9jayBzY3JvbGxiYXJzIHRvIHdpbmRvdy5pbnRlcm5hbHMKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0LmgJKHJldmlzaW9uIDEwMDA5OSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtOTQsNiAr
OTQsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJLSVRfRVhQT1JUIGJvb2wgY2FuU2V0U2VsZWN0ZWRB
dHRyaWJ1dGUoKSBjb25zdDsKIAorICAgIFdFQktJVF9FWFBPUlQgYm9vbCBpc0FjdGl2ZVNlbGVj
dGVkT3B0aW9uKCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9SVCBib29sIGlzQW5jaG9yKCkgY29u
c3Q7CiAgICAgV0VCS0lUX0VYUE9SVCBib29sIGlzQXJpYVJlYWRPbmx5KCkgY29uc3Q7CiAgICAg
V0VCS0lUX0VYUE9SVCBib29sIGlzQnV0dG9uU3RhdGVNaXhlZCgpIGNvbnN0OwpJbmRleDogU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dC5jcHAJKHJldmlzaW9uIDEwMDA5OSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjYsNiArMjI2LDE1
IEBAIGJvb2wgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6Y2FuU2V0U2VsZWMKICAgICByZXR1cm4g
bV9wcml2YXRlLT5jYW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSgpOwogfQogCitib29sIFdlYkFjY2Vz
c2liaWxpdHlPYmplY3Q6OmlzQWN0aXZlU2VsZWN0ZWRPcHRpb24oKSBjb25zdAoreworICAgIGlm
IChtX3ByaXZhdGUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fcHJp
dmF0ZS0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+aXNBY3Rp
dmVTZWxlY3RlZE9wdGlvbigpOworfQorCiBib29sIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q6Omlz
QW5jaG9yKCkgY29uc3QKIHsKICAgICBpZiAobV9wcml2YXRlLmlzTnVsbCgpKQpJbmRleDogVG9v
bHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTAw
NTYzKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAK
KzIwMTEtMTEtMTYgIERvbWluaWMgTWF6em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgQWNjZXNzaWJpbGl0eTogTXVsdGlzZWxlY3QgbGlzdCBib3hlcyBuZWVkIHRvIHJlcG9y
dCB0aGUgYWN0aXZlIG9wdGlvbiBpbiBhZGRpdGlvbiB0byB3aGljaCBpdGVtcyBhcmUgc2VsZWN0
ZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjQ3
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA6CisgICAgICAgIChnZXRJc0Fj
dGl2ZVNlbGVjdGVkT3B0aW9uQ2FsbGJhY2spOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6Z2V0SlNDbGFzcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnQuY3BwOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudCk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpp
c0FjdGl2ZVNlbGVjdGVkT3B0aW9uR2V0dGVyQ2FsbGJhY2spOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDoKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHA6CisgICAgICAgIChB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0FjdGl2ZVNlbGVjdGVkT3B0aW9uKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbToKKyAgICAg
ICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQWN0aXZlU2VsZWN0ZWRPcHRpb24pOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNwcDoK
KyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQWN0aXZlU2VsZWN0ZWRPcHRpb24p
OgorCiAyMDExLTExLTE2ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIEFkZCBhIGxpc3Qgb2YgY29udHJpYnV0aW9uIGFyZWFzCkluZGV4OiBUb29scy9EdW1wUmVu
ZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9E
dW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAkocmV2aXNpb24gMTAwMDk5
KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc2Miw2ICs3NjIsMTEgQEAgc3RhdGljIEpTVmFsdWVSZWYgZ2V0SXNN
dWx0aVNlbGVjdGFibGVDYQogICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwg
dG9BWEVsZW1lbnQodGhpc09iamVjdCktPmlzTXVsdGlTZWxlY3RhYmxlKCkpOwogfQogCitzdGF0
aWMgSlNWYWx1ZVJlZiBnZXRJc0FjdGl2ZVNlbGVjdGVkT3B0aW9uQ2FsbGJhY2soSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVl
UmVmKikKK3sKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIHRvQVhFbGVt
ZW50KHRoaXNPYmplY3QpLT5pc0FjdGl2ZVNlbGVjdGVkT3B0aW9uKCkpOworfQorCiBzdGF0aWMg
SlNWYWx1ZVJlZiBnZXRJc0V4cGFuZGVkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikKIHsKICAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIHRvQVhFbGVtZW50KHRoaXNPYmplY3Qp
LT5pc0V4cGFuZGVkKCkpOwpAQCAtOTc5LDYgKzk4NCw3IEBAIEpTQ2xhc3NSZWYgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6Z2V0SlMKICAgICAgICAgeyAiaXNTZWxlY3RlZCIsIGdldElzU2VsZWN0
ZWRDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJpc1NlbGVjdGFibGUiLCBnZXRJc1Nl
bGVjdGFibGVDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJpc011bHRpU2VsZWN0YWJs
ZSIsIGdldElzTXVsdGlTZWxlY3RhYmxlQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAi
aXNBY3RpdmVTZWxlY3RlZE9wdGlvbiIsIGdldElzQWN0aXZlU2VsZWN0ZWRPcHRpb25DYWxsYmFj
aywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAogICAgICAgICB7ICJpc0V4cGFuZGVkIiwgZ2V0SXNFeHBhbmRlZENhbGxi
YWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImlzQ2hlY2tlZCIsIGdldElzQ2hlY2tlZENhbGxi
YWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImlzVmlzaWJsZSIsIGdldElzVmlzaWJsZUNhbGxi
YWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudC5oCShyZXZpc2lvbiAxMDAwOTkpCisrKyBUb29scy9EdW1wUmVuZGVyVHJl
ZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw2ICsxMzgs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1NlbGVjdGVkKCkgY29uc3Q7CiAgICAgYm9vbCBpc1Nl
bGVjdGFibGUoKSBjb25zdDsKICAgICBib29sIGlzTXVsdGlTZWxlY3RhYmxlKCkgY29uc3Q7Cisg
ICAgYm9vbCBpc0FjdGl2ZVNlbGVjdGVkT3B0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTZWxl
Y3RlZENoaWxkKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqKSBjb25zdDsKICAgICB1bnNpZ25lZCBz
ZWxlY3RlZENoaWxkcmVuQ291bnQoKSBjb25zdDsKICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
IHNlbGVjdGVkQ2hpbGRBdEluZGV4KHVuc2lnbmVkKSBjb25zdDsKSW5kZXg6IFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxMDAwOTkpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA4LDYgKzMwOCw3
IEBAIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUUKICAgICBiaW5kUHJv
cGVydHkoImlzU2VsZWN0ZWQiLCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RlZEdl
dHRlckNhbGxiYWNrKTsKICAgICBiaW5kUHJvcGVydHkoImlzU2VsZWN0YWJsZSIsICZBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojppc1NlbGVjdGFibGVHZXR0ZXJDYWxsYmFjayk7CiAgICAgYmluZFBy
b3BlcnR5KCJpc011bHRpU2VsZWN0YWJsZSIsICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc011
bHRpU2VsZWN0YWJsZUdldHRlckNhbGxiYWNrKTsKKyAgICBiaW5kUHJvcGVydHkoImlzQWN0aXZl
U2VsZWN0ZWRPcHRpb24iLCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBY3RpdmVTZWxlY3Rl
ZE9wdGlvbkdldHRlckNhbGxiYWNrKTsKICAgICBiaW5kUHJvcGVydHkoImlzRXhwYW5kZWQiLCAm
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFeHBhbmRlZEdldHRlckNhbGxiYWNrKTsKICAgICBi
aW5kUHJvcGVydHkoImlzQ2hlY2tlZCIsICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0NoZWNr
ZWRHZXR0ZXJDYWxsYmFjayk7CiAgICAgYmluZFByb3BlcnR5KCJpc1Zpc2libGUiLCAmQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aXNWaXNpYmxlR2V0dGVyQ2FsbGJhY2spOwpAQCAtNTAzLDYgKzUw
NCwxMSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzTXVsdGlTZWxlCiAgICAgcmVz
dWx0LT5zZXQoYWNjZXNzaWJpbGl0eU9iamVjdCgpLmlzTXVsdGlTZWxlY3RhYmxlKCkpOwogfQog
Cit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQWN0aXZlU2VsZWN0ZWRPcHRpb25HZXR0
ZXJDYWxsYmFjayhDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXQoYWNjZXNz
aWJpbGl0eU9iamVjdCgpLmlzQWN0aXZlU2VsZWN0ZWRPcHRpb24oKSk7Cit9CisKIHZvaWQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFeHBhbmRlZEdldHRlckNhbGxiYWNrKENwcFZhcmlhbnQq
IHJlc3VsdCkKIHsKICAgICByZXN1bHQtPnNldCghYWNjZXNzaWJpbGl0eU9iamVjdCgpLmlzQ29s
bGFwc2VkKCkpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJp
bGl0eVVJRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkocmV2aXNpb24gMTAwMDk5KQorKysgVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC04MCw2ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpc1NlbGVjdGVkR2V0
dGVyQ2FsbGJhY2soQ3BwVmFyaWFudCopOwogICAgIHZvaWQgaXNTZWxlY3RhYmxlR2V0dGVyQ2Fs
bGJhY2soQ3BwVmFyaWFudCopOwogICAgIHZvaWQgaXNNdWx0aVNlbGVjdGFibGVHZXR0ZXJDYWxs
YmFjayhDcHBWYXJpYW50Kik7CisgICAgdm9pZCBpc0FjdGl2ZVNlbGVjdGVkT3B0aW9uR2V0dGVy
Q2FsbGJhY2soQ3BwVmFyaWFudCopOwogICAgIHZvaWQgaXNFeHBhbmRlZEdldHRlckNhbGxiYWNr
KENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGlzQ2hlY2tlZEdldHRlckNhbGxiYWNrKENwcFZhcmlh
bnQqKTsKICAgICB2b2lkIGlzVmlzaWJsZUdldHRlckNhbGxiYWNrKENwcFZhcmlhbnQqKTsKSW5k
ZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50R3RrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudEd0ay5jcHAJKHJldmlzaW9uIDEwMDA5OSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2d0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYz
LDYgKzc2MywxMiBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzTXVsdGlTZWxlCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQWN0
aXZlU2VsZWN0ZWRPcHRpb24oKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNWaXNp
YmxlKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CkluZGV4OiBUb29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQko
cmV2aXNpb24gMTAwMDk5KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyNDQsNiArMTI0NCwxMiBAQCBi
b29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzTXVsdGlTZWxlCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQWN0aXZlU2VsZWN0ZWRPcHRp
b24oKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNWaXNpYmxlKCkgY29uc3QKIHsK
ICAgICAvLyBGSVhNRTogaW1wbGVtZW50CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4v
QWNjZXNzaWJpbGl0eVVJRWxlbWVudFdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwCShyZXZpc2lvbiAxMDAw
OTkpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVudFdp
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0MSw2ICs2NDEsMTIgQEAgYm9vbCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojppc011bHRpU2VsZQogICAgIHJldHVybiAoc3RhdGUgJiBtdWx0aVNlbGVj
dGFibGUpID09IG11bHRpU2VsZWN0YWJsZTsKIH0KIAorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojppc0FjdGl2ZVNlbGVjdGVkT3B0aW9uKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1w
bGVtZW50CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzVmlzaWJsZSgpIGNvbnN0CiB7CiAgICAgRFdPUkQgc3RhdGUgPSBhY2Nlc3NpYmlsaXR5
U3RhdGUobV9lbGVtZW50KTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMDU2MykKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDExLTExLTE2
ICBEb21pbmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFjY2Vz
c2liaWxpdHk6IE11bHRpc2VsZWN0IGxpc3QgYm94ZXMgbmVlZCB0byByZXBvcnQgdGhlIGFjdGl2
ZSBvcHRpb24gaW4gYWRkaXRpb24gdG8gd2hpY2ggaXRlbXMgYXJlIHNlbGVjdGVkLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI0NzkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
bXVsdGlzZWxlY3QtbGlzdC1yZXBvcnRzLWFjdGl2ZS1vcHRpb24uaHRtbDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9tdWx0aXNlbGVjdC1saXN0LXJl
cG9ydHMtYWN0aXZlLW9wdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDExLTExLTE2ICBK
YW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVt
XSBVcGRhdGUgbW9yZSBjaHJvbWl1bSBiYXNlbGluZXMgYW5kIGV4cGVjdGF0aW9ucwpJbmRleDog
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tdWx0aXNlbGVjdC1saXN0LXJlcG9ydHMtYWN0aXZl
LW9wdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbXVs
dGlzZWxlY3QtbGlzdC1yZXBvcnRzLWFjdGl2ZS1vcHRpb24uaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbXVsdGlzZWxlY3QtbGlzdC1yZXBvcnRzLWFjdGl2
ZS1vcHRpb24uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NSBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgZGVzY3JpcHRpb24oIlRoaXMg
dGVzdHMgdGhhdCBuYXZpZ2F0aW5nIGluIGEgbXVsdGlzZWxlY3QgbGlzdCB1cGRhdGVzIHNlbGVj
dGlvbiBhbmQgdGhlIGFjdGl2ZSBzZWxlY3RlZCBvcHRpb24gYW5kIHNlbmRzIGEgbm90aWZpY2F0
aW9uLiIpOworCisgICAgICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsK
KyAgICAgICAgICAgIHZhciBtZW51bGlzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtZW51
bGlzdCIpOworICAgICAgICAgICAgbWVudWxpc3QuZm9jdXMoKTsKKyAgICAgICAgICAgIHdpbmRv
dy5hY2Nlc3NpYmxlTWVudWxpc3QgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxl
bWVudDsKKyAgICAgICAgICAgIHdpbmRvdy5hY2Nlc3NpYmxlT25lID0gYWNjZXNzaWJsZU1lbnVs
aXN0LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgICAgIHdpbmRvdy5hY2Nlc3NpYmxlVHdvID0g
YWNjZXNzaWJsZU1lbnVsaXN0LmNoaWxkQXRJbmRleCgxKTsKKyAgICAgICAgICAgIHdpbmRvdy5h
Y2Nlc3NpYmxlVGhyZWUgPSBhY2Nlc3NpYmxlTWVudWxpc3QuY2hpbGRBdEluZGV4KDIpOworCisg
ICAgICAgICAgICBmdW5jdGlvbiBsaXN0TGlzdGVuZXIobm90aWZpY2F0aW9uKSB7CisgICAgICAg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lclRleHQgKz0g
Ikxpc3Qgbm90aWZpY2F0aW9uOiAiICsgbm90aWZpY2F0aW9uICsgIlxuIjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGFjY2Vzc2libGVNZW51bGlzdC5hZGROb3RpZmljYXRpb25MaXN0ZW5l
cihsaXN0TGlzdGVuZXIpOworCisgICAgICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJsZU9uZS5p
c1NlbGVjdGVkIiwgInRydWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJhY2Nlc3NpYmxlT25l
LmlzQWN0aXZlU2VsZWN0ZWRPcHRpb24iLCAidHJ1ZSIpOworICAgICAgICAgICAgc2hvdWxkQmUo
ImFjY2Vzc2libGVUd28uaXNTZWxlY3RlZCIsICJmYWxzZSIpOworICAgICAgICAgICAgc2hvdWxk
QmUoImFjY2Vzc2libGVUd28uaXNBY3RpdmVTZWxlY3RlZE9wdGlvbiIsICJmYWxzZSIpOworICAg
ICAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVUaHJlZS5pc1NlbGVjdGVkIiwgImZhbHNlIik7
CisgICAgICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJsZVRocmVlLmlzQWN0aXZlU2VsZWN0ZWRP
cHRpb24iLCAiZmFsc2UiKTsKKworICAgICAgICAgICAgLy8gQ2hhbmdlIHRoZSBzZWxlY3RlZCBp
bmRleCBieSBzaW11bGF0aW5nIGEgZG93biBhcnJvdyBrZXlkb3duIGV2ZW50LgorICAgICAgICAg
ICAgdmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0tleWJvYXJkRXZlbnRzJyk7Cisg
ICAgICAgICAgICBldmVudC5pbml0S2V5Ym9hcmRFdmVudCgna2V5ZG93bicsIHRydWUsIHRydWUs
IGRvY3VtZW50LmRlZmF1bHRWaWV3LCAnRG93bicsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSk7CisgICAgICAgICAgICBtZW51bGlzdC5kaXNwYXRjaEV2ZW50KGV2ZW50KTsK
KworICAgICAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVPbmUuaXNTZWxlY3RlZCIsICJmYWxz
ZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVPbmUuaXNBY3RpdmVTZWxlY3Rl
ZE9wdGlvbiIsICJmYWxzZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVUd28u
aXNTZWxlY3RlZCIsICJ0cnVlIik7CisgICAgICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJsZVR3
by5pc0FjdGl2ZVNlbGVjdGVkT3B0aW9uIiwgInRydWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJhY2Nlc3NpYmxlVGhyZWUuaXNTZWxlY3RlZCIsICJmYWxzZSIpOworICAgICAgICAgICAgc2hv
dWxkQmUoImFjY2Vzc2libGVUaHJlZS5pc0FjdGl2ZVNlbGVjdGVkT3B0aW9uIiwgImZhbHNlIik7
CisKKyAgICAgICAgICAgIC8vIEV4dGVuZCB0aGUgc2VsZWN0aW9uIGJ5IHNpbXVsYXRpbmcgYSBT
aGlmdCArIERvd24gQXJyb3cga2V5ZG93biBldmVudC4KKyAgICAgICAgICAgIHZhciBldmVudCA9
IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdLZXlib2FyZEV2ZW50cycpOworICAgICAgICAgICAgZXZl
bnQuaW5pdEtleWJvYXJkRXZlbnQoJ2tleWRvd24nLCB0cnVlLCB0cnVlLCBkb2N1bWVudC5kZWZh
dWx0VmlldywgJ0Rvd24nLCAwLCBmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSk7Cisg
ICAgICAgICAgICBtZW51bGlzdC5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKKworICAgICAgICAgICAg
c2hvdWxkQmUoImFjY2Vzc2libGVPbmUuaXNTZWxlY3RlZCIsICJmYWxzZSIpOworICAgICAgICAg
ICAgc2hvdWxkQmUoImFjY2Vzc2libGVPbmUuaXNBY3RpdmVTZWxlY3RlZE9wdGlvbiIsICJmYWxz
ZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVUd28uaXNTZWxlY3RlZCIsICJ0
cnVlIik7CisgICAgICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJsZVR3by5pc0FjdGl2ZVNlbGVj
dGVkT3B0aW9uIiwgImZhbHNlIik7CisgICAgICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJsZVRo
cmVlLmlzU2VsZWN0ZWQiLCAidHJ1ZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2li
bGVUaHJlZS5pc0FjdGl2ZVNlbGVjdGVkT3B0aW9uIiwgInRydWUiKTsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIE1ha2UgdGhlIHRlc3QgZmluaXNoIHF1aWNrbHkgd2hldGhlciB3ZSBnZXQgdGhl
IG5vdGlmaWNhdGlvbiBvciBub3QuCisgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgZGVidWcoJzxiciAvPjxzcGFuIGNsYXNzPSJwYXNzIj5URVNUIENP
TVBMRVRFPC9zcGFuPicpOworICAgICAgICAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcikKKyAgICAgICAgICAgICAgICBhY2Nlc3NpYmxlTWVudWxpc3QucmVtb3ZlTm90aWZp
Y2F0aW9uTGlzdGVuZXIoKTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworICAgICAgICB9LCAxMCk7CisgICAgfQorCisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIo
J2xvYWQnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgc2V0VGltZW91dChydW5UZXN0LCAxMCk7Cisg
ICAgfSwgZmFsc2UpOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHNlbGVjdCBtdWx0
aXBsZSBpZD0ibWVudWxpc3QiPgorICA8b3B0aW9uIHNlbGVjdGVkPk9uZTwvb3B0aW9uPgorICA8
b3B0aW9uPlR3bzwvb3B0aW9uPgorICA8b3B0aW9uPlRocmVlPC9vcHRpb24+CisgIDxvcHRpb24+
Rm91cjwvb3B0aW9uPgorPC9zZWxlY3Q+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+CisKKzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5n
ZXMgb246IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbXVsdGlzZWxlY3QtbGlzdC1yZXBvcnRz
LWFjdGl2ZS1vcHRpb24uaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsg
TEYKCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L211
bHRpc2VsZWN0LWxpc3QtcmVwb3J0cy1hY3RpdmUtb3B0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L211bHRp
c2VsZWN0LWxpc3QtcmVwb3J0cy1hY3RpdmUtb3B0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvbXVsdGlz
ZWxlY3QtbGlzdC1yZXBvcnRzLWFjdGl2ZS1vcHRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDI5IEBACisKK1RoaXMgdGVzdHMgdGhhdCBuYXZpZ2F0aW5nIGluIGEgbXVs
dGlzZWxlY3QgbGlzdCB1cGRhdGVzIHNlbGVjdGlvbiBhbmQgdGhlIGFjdGl2ZSBzZWxlY3RlZCBv
cHRpb24gYW5kIHNlbmRzIGEgbm90aWZpY2F0aW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworUEFTUyBhY2Nlc3NpYmxlT25lLmlzU2VsZWN0ZWQgaXMgdHJ1ZQorUEFTUyBhY2Nl
c3NpYmxlT25lLmlzQWN0aXZlU2VsZWN0ZWRPcHRpb24gaXMgdHJ1ZQorUEFTUyBhY2Nlc3NpYmxl
VHdvLmlzU2VsZWN0ZWQgaXMgZmFsc2UKK1BBU1MgYWNjZXNzaWJsZVR3by5pc0FjdGl2ZVNlbGVj
dGVkT3B0aW9uIGlzIGZhbHNlCitQQVNTIGFjY2Vzc2libGVUaHJlZS5pc1NlbGVjdGVkIGlzIGZh
bHNlCitQQVNTIGFjY2Vzc2libGVUaHJlZS5pc0FjdGl2ZVNlbGVjdGVkT3B0aW9uIGlzIGZhbHNl
CitQQVNTIGFjY2Vzc2libGVPbmUuaXNTZWxlY3RlZCBpcyBmYWxzZQorUEFTUyBhY2Nlc3NpYmxl
T25lLmlzQWN0aXZlU2VsZWN0ZWRPcHRpb24gaXMgZmFsc2UKK1BBU1MgYWNjZXNzaWJsZVR3by5p
c1NlbGVjdGVkIGlzIHRydWUKK1BBU1MgYWNjZXNzaWJsZVR3by5pc0FjdGl2ZVNlbGVjdGVkT3B0
aW9uIGlzIHRydWUKK1BBU1MgYWNjZXNzaWJsZVRocmVlLmlzU2VsZWN0ZWQgaXMgZmFsc2UKK1BB
U1MgYWNjZXNzaWJsZVRocmVlLmlzQWN0aXZlU2VsZWN0ZWRPcHRpb24gaXMgZmFsc2UKK1BBU1Mg
YWNjZXNzaWJsZU9uZS5pc1NlbGVjdGVkIGlzIGZhbHNlCitQQVNTIGFjY2Vzc2libGVPbmUuaXNB
Y3RpdmVTZWxlY3RlZE9wdGlvbiBpcyBmYWxzZQorUEFTUyBhY2Nlc3NpYmxlVHdvLmlzU2VsZWN0
ZWQgaXMgdHJ1ZQorUEFTUyBhY2Nlc3NpYmxlVHdvLmlzQWN0aXZlU2VsZWN0ZWRPcHRpb24gaXMg
ZmFsc2UKK1BBU1MgYWNjZXNzaWJsZVRocmVlLmlzU2VsZWN0ZWQgaXMgdHJ1ZQorUEFTUyBhY2Nl
c3NpYmxlVGhyZWUuaXNBY3RpdmVTZWxlY3RlZE9wdGlvbiBpcyB0cnVlCitMaXN0IG5vdGlmaWNh
dGlvbjogU2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQKK0xpc3Qgbm90aWZpY2F0aW9uOiBTZWxlY3Rl
ZENoaWxkcmVuQ2hhbmdlZAorCitURVNUIENPTVBMRVRFCisKClByb3BlcnR5IGNoYW5nZXMgb246
IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvbXVsdGlzZWxlY3Qt
bGlzdC1yZXBvcnRzLWFjdGl2ZS1vcHRpb24tZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6
IHN2bjplb2wtc3R5bGUKICAgKyBMRgoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116052</attachid>
            <date>2011-11-21 01:29:08 -0800</date>
            <delta_ts>2011-11-21 01:50:57 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-72479-20111121012907.patch</filename>
            <type>text/plain</type>
            <size>19715</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMDg4NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDExLTExLTIxICBEb21pbmlj
IE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFjY2Vzc2liaWxpdHk6
IE11bHRpc2VsZWN0IGxpc3QgYm94ZXMgbmVlZCB0byByZXBvcnQgdGhlIGFjdGl2ZSBvcHRpb24g
aW4gYWRkaXRpb24gdG8gd2hpY2ggaXRlbXMgYXJlIHNlbGVjdGVkLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI0NzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBDaHJpcyBGbGVpemFjaC4KKworICAgICAgICBUZXN0OiBhY2Nlc3NpYmlsaXR5L211bHRp
c2VsZWN0LWxpc3QtcmVwb3J0cy1hY3RpdmUtb3B0aW9uLmh0bWwKKworICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb246OmlzU2VsZWN0ZWRPcHRpb25BY3RpdmUpOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uaDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzU2VsZWN0ZWRPcHRpb25BY3RpdmUpOgorCiAy
MDExLTExLTIwICBLZW5pY2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbQ2hyb21pdW1dIFJlbW92ZSBvbGQgZ2V0Rm9udEZhbWlseUZvckNoYXJhY3RlcnMoKSBh
bmQgZmFtaWx5Rm9yQ2hhcnMoKSBBUElzLgpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAJKHJl
dmlzaW9uIDEwMDg4NykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eUxpc3RCb3hPcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4MywxNSBAQCBi
b29sIEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uOjppc1NlbGVjCiAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEhUTUxPcHRpb25FbGVtZW50Kj4obV9vcHRpb25FbGVtZW50KS0+c2VsZWN0ZWQoKTsK
IH0KIAorYm9vbCBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbjo6aXNTZWxlY3RlZE9wdGlvbkFj
dGl2ZSgpIGNvbnN0Cit7CisgICAgSFRNTFNlbGVjdEVsZW1lbnQqIGxpc3RCb3hQYXJlbnROb2Rl
ID0gbGlzdEJveE9wdGlvblBhcmVudE5vZGUoKTsKKyAgICBpZiAoIWxpc3RCb3hQYXJlbnROb2Rl
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gbGlzdEJveFBhcmVudE5vZGUt
PmFjdGl2ZVNlbGVjdGlvbkVuZExpc3RJbmRleCgpID09IGxpc3RCb3hPcHRpb25JbmRleCgpOwor
fQorCiBMYXlvdXRSZWN0IEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uOjplbGVtZW50UmVjdCgp
IGNvbnN0CiB7CiAgICAgTGF5b3V0UmVjdCByZWN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uaAko
cmV2aXNpb24gMTAwODg3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5TGlzdEJveE9wdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdGVkKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlz
RW5hYmxlZCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdGVkT3B0aW9uQWN0aXZl
KCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nVmFsdWUoKSBjb25zdDsKICAgICB2
aXJ0dWFsIEVsZW1lbnQqIGFjdGlvbkVsZW1lbnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIE5vZGUq
IG5vZGUoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbkVsZW1lbnQ7IH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCShyZXZp
c2lvbiAxMDA4ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDA3LDYgKzQwNyw5IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgaXNDb2xsYXBzZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
IHZpcnR1YWwgdm9pZCBzZXRJc0V4cGFuZGVkKGJvb2wpIHsgfQogCisgICAgLy8gSW4gYSBtdWx0
aS1zZWxlY3QgbGlzdCwgbWFueSBpdGVtcyBjYW4gYmUgc2VsZWN0ZWQgYnV0IG9ubHkgb25lIGlz
IGFjdGl2ZSBhdCBhIHRpbWUuCisgICAgdmlydHVhbCBib29sIGlzU2VsZWN0ZWRPcHRpb25BY3Rp
dmUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgdmlydHVhbCBib29sIGhhc0JvbGRG
b250KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaGFzSXRhbGlj
Rm9udCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBoYXNNaXNzcGVsbGluZygp
IGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMDg4NykK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMTEtMTEtMjEgIERvbWluaWMgTWF6em9uaSAgPGRtYXp6b25pQGdvb2ds
ZS5jb20+CisKKyAgICAgICAgQWNjZXNzaWJpbGl0eTogTXVsdGlzZWxlY3QgbGlzdCBib3hlcyBu
ZWVkIHRvIHJlcG9ydCB0aGUgYWN0aXZlIG9wdGlvbiBpbiBhZGRpdGlvbiB0byB3aGljaCBpdGVt
cyBhcmUgc2VsZWN0ZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MjQ3OQorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIEZsZWl6YWNoLgorCisg
ICAgICAgIFRlc3Q6IGFjY2Vzc2liaWxpdHkvbXVsdGlzZWxlY3QtbGlzdC1yZXBvcnRzLWFjdGl2
ZS1vcHRpb24uaHRtbAorCisgICAgICAgICogcHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3Qu
aDoKKyAgICAgICAgKiBzcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzU2VsZWN0ZWRPcHRpb25BY3RpdmUpOgor
CiAyMDExLTExLTIwICBLZW5pY2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbQ2hyb21pdW1dIFJlbW92ZSBvbGQgZ2V0Rm9udEZhbWlseUZvckNoYXJhY3RlcnMo
KSBhbmQgZmFtaWx5Rm9yQ2hhcnMoKSBBUElzLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaAkocmV2aXNpb24g
MTAwODg3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNiArMTEzLDcgQEAgcHVibGljOgogICAg
IFdFQktJVF9FWFBPUlQgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9S
VCBib29sIGlzUmVxdWlyZWQoKSBjb25zdDsKICAgICBXRUJLSVRfRVhQT1JUIGJvb2wgaXNTZWxl
Y3RlZCgpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgYm9vbCBpc1NlbGVjdGVkT3B0aW9uQWN0
aXZlKCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9SVCBib29sIGlzVmVydGljYWwoKSBjb25zdDsK
ICAgICBXRUJLSVRfRVhQT1JUIGJvb2wgaXNWaXNpYmxlKCkgY29uc3Q7CiAgICAgV0VCS0lUX0VY
UE9SVCBib29sIGlzVmlzaXRlZCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJKHJldmlzaW9uIDEw
MDg4NykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTcsNiArMzk3LDE1IEBAIGJvb2wgV2ViQWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNTZWxlY3RlZCgKICAgICByZXR1cm4gbV9wcml2YXRlLT5pc1NlbGVj
dGVkKCk7CiB9CiAKK2Jvb2wgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNTZWxlY3RlZE9wdGlv
bkFjdGl2ZSgpIGNvbnN0Cit7CisgICAgaWYgKG1fcHJpdmF0ZS5pc051bGwoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgbV9wcml2YXRlLT51cGRhdGVCYWNraW5nU3RvcmUoKTsKKyAg
ICByZXR1cm4gbV9wcml2YXRlLT5pc1NlbGVjdGVkT3B0aW9uQWN0aXZlKCk7Cit9CisKIGJvb2wg
V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNWZXJ0aWNhbCgpIGNvbnN0CiB7CiAgICAgaWYgKG1f
cHJpdmF0ZS5pc051bGwoKSkKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMDg4NikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDExLTExLTIxICBEb21pbmljIE1henpvbmkg
IDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFjY2Vzc2liaWxpdHk6IE11bHRpc2Vs
ZWN0IGxpc3QgYm94ZXMgbmVlZCB0byByZXBvcnQgdGhlIGFjdGl2ZSBvcHRpb24gaW4gYWRkaXRp
b24gdG8gd2hpY2ggaXRlbXMgYXJlIHNlbGVjdGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI0NzkKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJp
cyBGbGVpemFjaC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuY3BwOgorICAgICAgICAoZ2V0SXNTZWxlY3RlZE9wdGlvbkFjdGl2ZUNhbGxiYWNrKToK
KyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldEpTQ2xhc3MpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDoKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcDoKKyAgICAgICAg
KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQpOgorICAgICAg
ICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RlZE9wdGlvbkFjdGl2ZUdldHRlckNh
bGxiYWNrKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnRHdGsuY3BwOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxl
Y3RlZE9wdGlvbkFjdGl2ZSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpp
c1NlbGVjdGVkT3B0aW9uQWN0aXZlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudFdpbi5jcHA6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojppc1NlbGVjdGVkT3B0aW9uQWN0aXZlKToKKwogMjAxMS0xMS0yMCAgT2phbiBWYWZhaSAg
PG9qYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENoYW5nZSB0aGUgZmluYWwgcGxhY2Ugd2hl
cmUgd2UgdXNlIHZlcnNpb24gMyBvZiB0aGUgcmVzdWx0cyBqc29uIG91dHB1dApJbmRleDogVG9v
bHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAJKHJldmlz
aW9uIDEwMDg4NykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjIsNiArNzYyLDExIEBAIHN0YXRpYyBKU1ZhbHVl
UmVmIGdldElzTXVsdGlTZWxlY3RhYmxlQ2EKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFu
KGNvbnRleHQsIHRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT5pc011bHRpU2VsZWN0YWJsZSgpKTsK
IH0KIAorc3RhdGljIEpTVmFsdWVSZWYgZ2V0SXNTZWxlY3RlZE9wdGlvbkFjdGl2ZUNhbGxiYWNr
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1Jl
ZiwgSlNWYWx1ZVJlZiopCit7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0
LCB0b0FYRWxlbWVudCh0aGlzT2JqZWN0KS0+aXNTZWxlY3RlZE9wdGlvbkFjdGl2ZSgpKTsKK30K
Kwogc3RhdGljIEpTVmFsdWVSZWYgZ2V0SXNFeHBhbmRlZENhbGxiYWNrKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiop
CiB7CiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCB0b0FYRWxlbWVudCh0
aGlzT2JqZWN0KS0+aXNFeHBhbmRlZCgpKTsKQEAgLTk5MSw2ICs5OTYsNyBAQCBKU0NsYXNzUmVm
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldEpTCiAgICAgICAgIHsgImlzU2VsZWN0ZWQiLCBn
ZXRJc1NlbGVjdGVkQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiaXNTZWxlY3RhYmxl
IiwgZ2V0SXNTZWxlY3RhYmxlQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiaXNNdWx0
aVNlbGVjdGFibGUiLCBnZXRJc011bHRpU2VsZWN0YWJsZUNhbGxiYWNrLCAwLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisg
ICAgICAgIHsgImlzU2VsZWN0ZWRPcHRpb25BY3RpdmUiLCBnZXRJc1NlbGVjdGVkT3B0aW9uQWN0
aXZlQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiaXNFeHBhbmRlZCIsIGdldElzRXhw
YW5kZWRDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJpc0NoZWNrZWQiLCBnZXRJc0No
ZWNrZWRDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJpc1Zpc2libGUiLCBnZXRJc1Zp
c2libGVDYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkocmV2aXNpb24gMTAwODg3KQorKysgVG9vbHMvRHVt
cFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzgsNiArMTM4LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNTZWxlY3RlZCgpIGNvbnN0OwogICAg
IGJvb2wgaXNTZWxlY3RhYmxlKCkgY29uc3Q7CiAgICAgYm9vbCBpc011bHRpU2VsZWN0YWJsZSgp
IGNvbnN0OworICAgIGJvb2wgaXNTZWxlY3RlZE9wdGlvbkFjdGl2ZSgpIGNvbnN0OwogICAgIHZv
aWQgc2V0U2VsZWN0ZWRDaGlsZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KikgY29uc3Q7CiAgICAg
dW5zaWduZWQgc2VsZWN0ZWRDaGlsZHJlbkNvdW50KCkgY29uc3Q7CiAgICAgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudCBzZWxlY3RlZENoaWxkQXRJbmRleCh1bnNpZ25lZCkgY29uc3Q7CkluZGV4OiBU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50LmNwcAkocmV2aXNpb24gMTAwODg3KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMw
OCw2ICszMDgsNyBAQCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFCiAg
ICAgYmluZFByb3BlcnR5KCJpc1NlbGVjdGVkIiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omlz
U2VsZWN0ZWRHZXR0ZXJDYWxsYmFjayk7CiAgICAgYmluZFByb3BlcnR5KCJpc1NlbGVjdGFibGUi
LCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RhYmxlR2V0dGVyQ2FsbGJhY2spOwog
ICAgIGJpbmRQcm9wZXJ0eSgiaXNNdWx0aVNlbGVjdGFibGUiLCAmQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aXNNdWx0aVNlbGVjdGFibGVHZXR0ZXJDYWxsYmFjayk7CisgICAgYmluZFByb3BlcnR5
KCJpc1NlbGVjdGVkT3B0aW9uQWN0aXZlIiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2Vs
ZWN0ZWRPcHRpb25BY3RpdmVHZXR0ZXJDYWxsYmFjayk7CiAgICAgYmluZFByb3BlcnR5KCJpc0V4
cGFuZGVkIiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRXhwYW5kZWRHZXR0ZXJDYWxsYmFj
ayk7CiAgICAgYmluZFByb3BlcnR5KCJpc0NoZWNrZWQiLCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNDaGVja2VkR2V0dGVyQ2FsbGJhY2spOwogICAgIGJpbmRQcm9wZXJ0eSgiaXNWaXNpYmxl
IiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzVmlzaWJsZUdldHRlckNhbGxiYWNrKTsKQEAg
LTUwMyw2ICs1MDQsMTEgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc011bHRpU2Vs
ZQogICAgIHJlc3VsdC0+c2V0KGFjY2Vzc2liaWxpdHlPYmplY3QoKS5pc011bHRpU2VsZWN0YWJs
ZSgpKTsKIH0KIAordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1NlbGVjdGVkT3B0aW9u
QWN0aXZlR2V0dGVyQ2FsbGJhY2soQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+
c2V0KGFjY2Vzc2liaWxpdHlPYmplY3QoKS5pc1NlbGVjdGVkT3B0aW9uQWN0aXZlKCkpOworfQor
CiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRXhwYW5kZWRHZXR0ZXJDYWxsYmFjayhD
cHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5zZXQoIWFjY2Vzc2liaWxpdHlPYmpl
Y3QoKS5pc0NvbGxhcHNlZCgpKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJKHJldmlzaW9uIDEwMDg4NykK
KysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtODEsNiArODEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaXNT
ZWxlY3RlZEdldHRlckNhbGxiYWNrKENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGlzU2VsZWN0YWJs
ZUdldHRlckNhbGxiYWNrKENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGlzTXVsdGlTZWxlY3RhYmxl
R2V0dGVyQ2FsbGJhY2soQ3BwVmFyaWFudCopOworICAgIHZvaWQgaXNTZWxlY3RlZE9wdGlvbkFj
dGl2ZUdldHRlckNhbGxiYWNrKENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGlzRXhwYW5kZWRHZXR0
ZXJDYWxsYmFjayhDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBpc0NoZWNrZWRHZXR0ZXJDYWxsYmFj
ayhDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBpc1Zpc2libGVHZXR0ZXJDYWxsYmFjayhDcHBWYXJp
YW50Kik7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRHdGsuY3BwCShyZXZpc2lvbiAxMDA4ODcpCisrKyBUb29scy9EdW1w
UmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc2Myw2ICs3NjMsMTIgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc011
bHRpU2VsZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojppc1NlbGVjdGVkT3B0aW9uQWN0aXZlKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1w
bGVtZW50CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzVmlzaWJsZSgpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudApJbmRleDog
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRNYWMubW0JKHJldmlzaW9uIDEwMDg4NykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYyLDYgKzEy
NjIsMTIgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc011bHRpU2VsZQogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1NlbGVjdGVk
T3B0aW9uQWN0aXZlKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0
dXJuIGZhbHNlOworfQorCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzVmlzaWJsZSgp
IGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudApJbmRleDogVG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNwcAkocmV2
aXNpb24gMTAwODg3KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnRXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NDEsNiArNjQxLDEyIEBAIGJvb2wg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNNdWx0aVNlbGUKICAgICByZXR1cm4gKHN0YXRlICYg
bXVsdGlTZWxlY3RhYmxlKSA9PSBtdWx0aVNlbGVjdGFibGU7CiB9CiAKK2Jvb2wgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6aXNTZWxlY3RlZE9wdGlvbkFjdGl2ZSgpIGNvbnN0Cit7CisgICAgLy8g
RklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojppc1Zpc2libGUoKSBjb25zdAogewogICAgIERXT1JEIHN0YXRlID0gYWNj
ZXNzaWJpbGl0eVN0YXRlKG1fZWxlbWVudCk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDA4ODEpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAor
MjAxMS0xMS0yMSAgRG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBBY2Nlc3NpYmlsaXR5OiBNdWx0aXNlbGVjdCBsaXN0IGJveGVzIG5lZWQgdG8gcmVwb3J0
IHRoZSBhY3RpdmUgb3B0aW9uIGluIGFkZGl0aW9uIHRvIHdoaWNoIGl0ZW1zIGFyZSBzZWxlY3Rl
ZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyNDc5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRmxlaXphY2guCisKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L211bHRpc2VsZWN0LWxpc3QtcmVwb3J0cy1hY3RpdmUtb3B0aW9uLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvbXVsdGlzZWxl
Y3QtbGlzdC1yZXBvcnRzLWFjdGl2ZS1vcHRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAx
MS0xMS0yMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFNob3dp
bmcgdGhlIGRhdGEgb3ZlcmxheSBpbiBPcGVuU3RyZWV0TWFwIGRvZXNuJ3Qgd29yaywgem9vbWlu
ZyBwYXJ0aWFsbHkgYnJva2VuCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L211bHRp
c2VsZWN0LWxpc3QtcmVwb3J0cy1hY3RpdmUtb3B0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tdWx0aXNlbGVjdC1saXN0LXJlcG9ydHMtYWN0aXZlLW9w
dGlvbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tdWx0
aXNlbGVjdC1saXN0LXJlcG9ydHMtYWN0aXZlLW9wdGlvbi5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDg1IEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0i
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4K
KyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgewor
ICAgICAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IG5hdmlnYXRpbmcgaW4gYSBtdWx0
aXNlbGVjdCBsaXN0IHVwZGF0ZXMgc2VsZWN0aW9uIGFuZCB0aGUgYWN0aXZlIHNlbGVjdGVkIG9w
dGlvbiBhbmQgc2VuZHMgYSBub3RpZmljYXRpb24uIik7CisKKyAgICAgICAgaWYgKHdpbmRvdy5h
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICAgICAgdmFyIG1lbnVsaXN0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1lbnVsaXN0Iik7CisgICAgICAgICAgICBtZW51bGlzdC5m
b2N1cygpOworICAgICAgICAgICAgd2luZG93LmFjY2Vzc2libGVNZW51bGlzdCA9IGFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgICAgICAgICAgd2luZG93LmFjY2Vz
c2libGVPbmUgPSBhY2Nlc3NpYmxlTWVudWxpc3QuY2hpbGRBdEluZGV4KDApOworICAgICAgICAg
ICAgd2luZG93LmFjY2Vzc2libGVUd28gPSBhY2Nlc3NpYmxlTWVudWxpc3QuY2hpbGRBdEluZGV4
KDEpOworICAgICAgICAgICAgd2luZG93LmFjY2Vzc2libGVUaHJlZSA9IGFjY2Vzc2libGVNZW51
bGlzdC5jaGlsZEF0SW5kZXgoMik7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGxpc3RMaXN0ZW5l
cihub3RpZmljYXRpb24pIHsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiY29uc29sZSIpLmlubmVyVGV4dCArPSAiTGlzdCBub3RpZmljYXRpb246ICIgKyBub3RpZmlj
YXRpb24gKyAiXG4iOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYWNjZXNzaWJsZU1lbnVs
aXN0LmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKGxpc3RMaXN0ZW5lcik7CisKKyAgICAgICAgICAg
IHNob3VsZEJlKCJhY2Nlc3NpYmxlT25lLmlzU2VsZWN0ZWQiLCAidHJ1ZSIpOworICAgICAgICAg
ICAgc2hvdWxkQmUoImFjY2Vzc2libGVPbmUuaXNTZWxlY3RlZE9wdGlvbkFjdGl2ZSIsICJ0cnVl
Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJsZVR3by5pc1NlbGVjdGVkIiwgImZh
bHNlIik7CisgICAgICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJsZVR3by5pc1NlbGVjdGVkT3B0
aW9uQWN0aXZlIiwgImZhbHNlIik7CisgICAgICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJsZVRo
cmVlLmlzU2VsZWN0ZWQiLCAiZmFsc2UiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJhY2Nlc3Np
YmxlVGhyZWUuaXNTZWxlY3RlZE9wdGlvbkFjdGl2ZSIsICJmYWxzZSIpOworCisgICAgICAgICAg
ICAvLyBDaGFuZ2UgdGhlIHNlbGVjdGVkIGluZGV4IGJ5IHNpbXVsYXRpbmcgYSBkb3duIGFycm93
IGtleWRvd24gZXZlbnQuCisgICAgICAgICAgICB2YXIgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVF
dmVudCgnS2V5Ym9hcmRFdmVudHMnKTsKKyAgICAgICAgICAgIGV2ZW50LmluaXRLZXlib2FyZEV2
ZW50KCdrZXlkb3duJywgdHJ1ZSwgdHJ1ZSwgZG9jdW1lbnQuZGVmYXVsdFZpZXcsICdEb3duJywg
MCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgIG1lbnVs
aXN0LmRpc3BhdGNoRXZlbnQoZXZlbnQpOworCisgICAgICAgICAgICBzaG91bGRCZSgiYWNjZXNz
aWJsZU9uZS5pc1NlbGVjdGVkIiwgImZhbHNlIik7CisgICAgICAgICAgICBzaG91bGRCZSgiYWNj
ZXNzaWJsZU9uZS5pc1NlbGVjdGVkT3B0aW9uQWN0aXZlIiwgImZhbHNlIik7CisgICAgICAgICAg
ICBzaG91bGRCZSgiYWNjZXNzaWJsZVR3by5pc1NlbGVjdGVkIiwgInRydWUiKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlKCJhY2Nlc3NpYmxlVHdvLmlzU2VsZWN0ZWRPcHRpb25BY3RpdmUiLCAidHJ1
ZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImFjY2Vzc2libGVUaHJlZS5pc1NlbGVjdGVkIiwg
ImZhbHNlIik7CisgICAgICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJsZVRocmVlLmlzU2VsZWN0
ZWRPcHRpb25BY3RpdmUiLCAiZmFsc2UiKTsKKworICAgICAgICAgICAgLy8gRXh0ZW5kIHRoZSBz
ZWxlY3Rpb24gYnkgc2ltdWxhdGluZyBhIFNoaWZ0ICsgRG93biBBcnJvdyBrZXlkb3duIGV2ZW50
LgorICAgICAgICAgICAgdmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0tleWJvYXJk
RXZlbnRzJyk7CisgICAgICAgICAgICBldmVudC5pbml0S2V5Ym9hcmRFdmVudCgna2V5ZG93bics
IHRydWUsIHRydWUsIGRvY3VtZW50LmRlZmF1bHRWaWV3LCAnRG93bicsIDAsIGZhbHNlLCBmYWxz
ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgIG1lbnVsaXN0LmRpc3BhdGNoRXZl
bnQoZXZlbnQpOworCisgICAgICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJsZU9uZS5pc1NlbGVj
dGVkIiwgImZhbHNlIik7CisgICAgICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJsZU9uZS5pc1Nl
bGVjdGVkT3B0aW9uQWN0aXZlIiwgImZhbHNlIik7CisgICAgICAgICAgICBzaG91bGRCZSgiYWNj
ZXNzaWJsZVR3by5pc1NlbGVjdGVkIiwgInRydWUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJh
Y2Nlc3NpYmxlVHdvLmlzU2VsZWN0ZWRPcHRpb25BY3RpdmUiLCAiZmFsc2UiKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlKCJhY2Nlc3NpYmxlVGhyZWUuaXNTZWxlY3RlZCIsICJ0cnVlIik7CisgICAg
ICAgICAgICBzaG91bGRCZSgiYWNjZXNzaWJsZVRocmVlLmlzU2VsZWN0ZWRPcHRpb25BY3RpdmUi
LCAidHJ1ZSIpOworICAgICAgICB9CisKKyAgICAgICAgLy8gTWFrZSB0aGUgdGVzdCBmaW5pc2gg
cXVpY2tseSB3aGV0aGVyIHdlIGdldCB0aGUgbm90aWZpY2F0aW9uIG9yIG5vdC4KKyAgICAgICAg
d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBkZWJ1ZygnPGJyIC8+
PHNwYW4gY2xhc3M9InBhc3MiPlRFU1QgQ09NUExFVEU8L3NwYW4+Jyk7CisgICAgICAgICAgICBp
ZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAgICAgICAgICAgICAgIGFjY2Vz
c2libGVNZW51bGlzdC5yZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigpOworICAgICAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0sIDEwKTsKKyAgICB9CisKKyAg
ICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uKCkgeworICAgICAgICBz
ZXRUaW1lb3V0KHJ1blRlc3QsIDEwKTsKKyAgICB9LCBmYWxzZSk7Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorCis8c2VsZWN0IG11bHRpcGxlIGlkPSJtZW51bGlzdCI+CisgIDxvcHRpb24g
c2VsZWN0ZWQ+T25lPC9vcHRpb24+CisgIDxvcHRpb24+VHdvPC9vcHRpb24+CisgIDxvcHRpb24+
VGhyZWU8L29wdGlvbj4KKyAgPG9wdGlvbj5Gb3VyPC9vcHRpb24+Cis8L3NlbGVjdD4KKworPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPC9ib2R5
PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tdWx0aXNlbGVjdC1saXN0LXJlcG9ydHMtYWN0aXZlLW9wdGlvbi5odG1sCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
QWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvbXVsdGlzZWxlY3QtbGlzdC1yZXBvcnRzLWFjdGl2ZS1v
cHRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2FjY2Vzc2liaWxpdHkvbXVsdGlzZWxlY3QtbGlzdC1yZXBvcnRzLWFjdGl2ZS1vcHRp
b24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vYWNjZXNzaWJpbGl0eS9tdWx0aXNlbGVjdC1saXN0LXJlcG9ydHMtYWN0aXZlLW9wdGlv
bi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjkgQEAKKworVGhpcyB0ZXN0
cyB0aGF0IG5hdmlnYXRpbmcgaW4gYSBtdWx0aXNlbGVjdCBsaXN0IHVwZGF0ZXMgc2VsZWN0aW9u
IGFuZCB0aGUgYWN0aXZlIHNlbGVjdGVkIG9wdGlvbiBhbmQgc2VuZHMgYSBub3RpZmljYXRpb24u
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGFjY2Vzc2libGVPbmUuaXNT
ZWxlY3RlZCBpcyB0cnVlCitQQVNTIGFjY2Vzc2libGVPbmUuaXNTZWxlY3RlZE9wdGlvbkFjdGl2
ZSBpcyB0cnVlCitQQVNTIGFjY2Vzc2libGVUd28uaXNTZWxlY3RlZCBpcyBmYWxzZQorUEFTUyBh
Y2Nlc3NpYmxlVHdvLmlzU2VsZWN0ZWRPcHRpb25BY3RpdmUgaXMgZmFsc2UKK1BBU1MgYWNjZXNz
aWJsZVRocmVlLmlzU2VsZWN0ZWQgaXMgZmFsc2UKK1BBU1MgYWNjZXNzaWJsZVRocmVlLmlzU2Vs
ZWN0ZWRPcHRpb25BY3RpdmUgaXMgZmFsc2UKK1BBU1MgYWNjZXNzaWJsZU9uZS5pc1NlbGVjdGVk
IGlzIGZhbHNlCitQQVNTIGFjY2Vzc2libGVPbmUuaXNTZWxlY3RlZE9wdGlvbkFjdGl2ZSBpcyBm
YWxzZQorUEFTUyBhY2Nlc3NpYmxlVHdvLmlzU2VsZWN0ZWQgaXMgdHJ1ZQorUEFTUyBhY2Nlc3Np
YmxlVHdvLmlzU2VsZWN0ZWRPcHRpb25BY3RpdmUgaXMgdHJ1ZQorUEFTUyBhY2Nlc3NpYmxlVGhy
ZWUuaXNTZWxlY3RlZCBpcyBmYWxzZQorUEFTUyBhY2Nlc3NpYmxlVGhyZWUuaXNTZWxlY3RlZE9w
dGlvbkFjdGl2ZSBpcyBmYWxzZQorUEFTUyBhY2Nlc3NpYmxlT25lLmlzU2VsZWN0ZWQgaXMgZmFs
c2UKK1BBU1MgYWNjZXNzaWJsZU9uZS5pc1NlbGVjdGVkT3B0aW9uQWN0aXZlIGlzIGZhbHNlCitQ
QVNTIGFjY2Vzc2libGVUd28uaXNTZWxlY3RlZCBpcyB0cnVlCitQQVNTIGFjY2Vzc2libGVUd28u
aXNTZWxlY3RlZE9wdGlvbkFjdGl2ZSBpcyBmYWxzZQorUEFTUyBhY2Nlc3NpYmxlVGhyZWUuaXNT
ZWxlY3RlZCBpcyB0cnVlCitQQVNTIGFjY2Vzc2libGVUaHJlZS5pc1NlbGVjdGVkT3B0aW9uQWN0
aXZlIGlzIHRydWUKK0xpc3Qgbm90aWZpY2F0aW9uOiBTZWxlY3RlZENoaWxkcmVuQ2hhbmdlZAor
TGlzdCBub3RpZmljYXRpb246IFNlbGVjdGVkQ2hpbGRyZW5DaGFuZ2VkCisKK1RFU1QgQ09NUExF
VEUKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
YWNjZXNzaWJpbGl0eS9tdWx0aXNlbGVjdC1saXN0LXJlcG9ydHMtYWN0aXZlLW9wdGlvbi1leHBl
Y3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>