<?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>131827</bug_id>
          
          <creation_ts>2014-04-17 16:13:04 -0700</creation_ts>
          <short_desc>[iOS WebKit2] support replacements for misspelled words</short_desc>
          <delta_ts>2014-04-21 14:15:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Enrica Casucci">enrica</reporter>
          <assigned_to name="Enrica Casucci">enrica</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1001741</commentid>
    <comment_count>0</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2014-04-17 16:13:04 -0700</bug_when>
    <thetext>This tracks the work required to support replacements on iOS for WebKit2.

&lt;rdar://problem/16319657&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001751</commentid>
    <comment_count>1</comment_count>
      <attachid>229593</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2014-04-17 16:30:24 -0700</bug_when>
    <thetext>Created attachment 229593
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001753</commentid>
    <comment_count>2</comment_count>
      <attachid>229593</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-04-17 16:36:16 -0700</bug_when>
    <thetext>Comment on attachment 229593
Patch

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

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:136
&gt; +@interface UITextInteractionAssistant (Staging)

Staging -&gt; Private if you don&apos;t plan to expose it in UIKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001763</commentid>
    <comment_count>3</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2014-04-17 17:02:45 -0700</bug_when>
    <thetext>Committed revision 167469. This is part one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002098</commentid>
    <comment_count>4</comment_count>
      <attachid>229695</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2014-04-18 17:49:14 -0700</bug_when>
    <thetext>Created attachment 229695
Patch - part2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002102</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-18 17:51:28 -0700</bug_when>
    <thetext>Attachment 229695 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/WebPage/WebPage.cpp:697:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1340:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/editing/VisibleUnits.h:107:  The parameter name &quot;position&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/editing/VisibleUnits.cpp:1819:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 4 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002109</commentid>
    <comment_count>6</comment_count>
      <attachid>229698</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2014-04-18 18:26:14 -0700</bug_when>
    <thetext>Created attachment 229698
Updated part 2

Fixed silly mistakes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002282</commentid>
    <comment_count>7</comment_count>
      <attachid>229698</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-19 14:46:23 -0700</bug_when>
    <thetext>Comment on attachment 229698
Updated part 2

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

&gt; Source/WebCore/editing/VisibleUnits.cpp:1825
&gt; +    String characterString = plainText(Range::create(position.deepEquivalent().anchorNode()-&gt;document(), previousPosition, position).get(), TextIteratorDefaultBehavior, true);
&gt; +    if (characterString.isEmpty())
&gt; +        return 0;

Creating a string for these two characters seems a excessive; all the overhead of using a string builder inside the plainText function has a significant cost. If performance is an issue at all, we can make a much faster version that doesn’t use the plainText function.

&gt; Source/WebCore/editing/VisibleUnits.cpp:1833
&gt; +    const UChar32 NonBreakingSpaceCharacter = 0xA0;

CharacterNames.h already has a constant for this, noBreakSpace, which I suggest we use instead of defining a new one. The name “NO BREAK SPACE” comes right out of the Unicode documentation.

&gt; Source/WebCore/editing/VisibleUnits.cpp:1834
&gt; +    return characterString[0] ? NonBreakingSpaceCharacter : &apos; &apos;;

I don’t understand the logic here. The null character turns into non-breaking space, the non-null character turns into breaking space. Don’t we sometimes want to return the character itself?

&gt; Source/WebKit2/ChangeLog:70
&gt; +&lt;&lt;&lt;&lt;&lt;&lt;&lt; .mine
&gt; +2014-04-18  Enrica Casucci  &lt;enrica@apple.com&gt;
&gt; +
&gt; +        [iOS WebKit2] support replacements for misspelled words.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=131827
&gt; +        &lt;rdar://problem/16319657&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        This is the second a final piece to support replacements.
&gt; +        It adds some entrypoints used by the keyboard code to perform
&gt; +        replacement when reaching the edge of a word using backspace.
&gt; +        I&apos;ve modified the behavior of replaceSelectedText to work both
&gt; +        with caret or range selections.
&gt; +
&gt; +        * Shared/EditorState.cpp:
&gt; +        (WebKit::EditorState::encode):
&gt; +        (WebKit::EditorState::decode):
&gt; +        * Shared/EditorState.h:
&gt; +        (WebKit::EditorState::EditorState):
&gt; +        * UIProcess/ios/WKContentViewInteraction.mm:
&gt; +        (-[WKContentView isReplaceAllowed]):
&gt; +        (-[WKContentView _characterBeforeCaretSelection]):
&gt; +        * WebProcess/WebPage/WebPage.cpp:
&gt; +        (WebKit::WebPage::editorState):
&gt; +        * WebProcess/WebPage/ios/WebPageIOS.mm:
&gt; +        (WebKit::WebPage::replaceSelectedText):
&gt; +
&gt; +=======

Looks like this accidentally includes a second change log.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002557</commentid>
    <comment_count>8</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2014-04-21 10:52:59 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebCore/editing/VisibleUnits.cpp:1834
&gt; &gt; +    return characterString[0] ? NonBreakingSpaceCharacter : &apos; &apos;;
&gt; 
&gt; I don’t understand the logic here. The null character turns into non-breaking space, the non-null character turns into breaking space. Don’t we sometimes want to return the character itself?
&gt; 
This is a mistake. I want to convert the nbsp to space. I originally had an if statement and made a mistake when cleaning up the code. I&apos;ll fix this. Thanks for catching it!


&gt; &gt; Source/WebKit2/ChangeLog:70
&gt; &gt; +&lt;&lt;&lt;&lt;&lt;&lt;&lt; .mine
&gt; &gt; +2014-04-18  Enrica Casucci  &lt;enrica@apple.com&gt;
&gt; &gt; +
&gt; &gt; +        [iOS WebKit2] support replacements for misspelled words.
&gt; &gt; +        https://bugs.webkit.org/show_bug.cgi?id=131827
&gt; &gt; +        &lt;rdar://problem/16319657&gt;
&gt; &gt; +
&gt; &gt; +        Reviewed by NOBODY (OOPS!).
&gt; &gt; +
&gt; &gt; +        This is the second a final piece to support replacements.
&gt; &gt; +        It adds some entrypoints used by the keyboard code to perform
&gt; &gt; +        replacement when reaching the edge of a word using backspace.
&gt; &gt; +        I&apos;ve modified the behavior of replaceSelectedText to work both
&gt; &gt; +        with caret or range selections.
&gt; &gt; +
&gt; &gt; +        * Shared/EditorState.cpp:
&gt; &gt; +        (WebKit::EditorState::encode):
&gt; &gt; +        (WebKit::EditorState::decode):
&gt; &gt; +        * Shared/EditorState.h:
&gt; &gt; +        (WebKit::EditorState::EditorState):
&gt; &gt; +        * UIProcess/ios/WKContentViewInteraction.mm:
&gt; &gt; +        (-[WKContentView isReplaceAllowed]):
&gt; &gt; +        (-[WKContentView _characterBeforeCaretSelection]):
&gt; &gt; +        * WebProcess/WebPage/WebPage.cpp:
&gt; &gt; +        (WebKit::WebPage::editorState):
&gt; &gt; +        * WebProcess/WebPage/ios/WebPageIOS.mm:
&gt; &gt; +        (WebKit::WebPage::replaceSelectedText):
&gt; &gt; +
&gt; &gt; +=======
&gt; 
&gt; Looks like this accidentally includes a second change log.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002675</commentid>
    <comment_count>9</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2014-04-21 14:15:26 -0700</bug_when>
    <thetext>Committed revision 167624.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229593</attachid>
            <date>2014-04-17 16:30:24 -0700</date>
            <delta_ts>2014-04-17 16:36:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>replace-part1-webkit.txt</filename>
            <type>text/plain</type>
            <size>14397</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NzQ2MykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDE0LTA0LTE3ICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPUyBXZWJLaXQyXSBzdXBw
b3J0IHJlcGxhY2VtZW50cyBmb3IgbWlzc3BlbGxlZCB3b3Jkcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMTgyNworICAgICAgICA8cmRhcjovL3By
b2JsZW0vMTYzMTk2NTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBpcyB0aGUgZmlyc3QgcGFydCBvZiB0aGUgd29yayB0byBhZGQgc3VwcG9y
dCBmb3IgcmVwbGFjZW1lbnRzLgorICAgICAgICBJdCBoYW5kbGVzIF9wcm9tcHRGb3JSZXBsYWNl
IGluIGNhblBlcmZvcm1BY3Rpb24gdG8gZGVjaWRlCisgICAgICAgIHdoZXRoZXIgdG8gc2hvdyB0
aGUgUmVwbGFjZSBidXR0b24gaW4gdGhlIG1lbnUgYW5kIGFkZCB0aGUKKyAgICAgICAgaW1wbGVt
ZW50YXRpb24gb2YgdGhlIHJlcGxhY2UgYWN0aW9uLgorCisgICAgICAgICogU2hhcmVkL0VkaXRv
clN0YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yU3RhdGU6OmVuY29kZSk6CisgICAg
ICAgIChXZWJLaXQ6OkVkaXRvclN0YXRlOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9FZGl0
b3JTdGF0ZS5oOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JTdGF0ZTo6RWRpdG9yU3RhdGUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBzZWxlY3RlZFRleHRdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyByZXBsYWNlVGV4dDp3
aXRoVGV4dDpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfcHJvbXB0Rm9yUmVwbGFjZTpd
KToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyByZXBsYWNlOl0pOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IGNhblBlcmZvcm1BY3Rpb246d2l0aFNlbmRlcjpdKToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBzZWxlY3RXb3JkRm9yUmVwbGFjZW1lbnRdKTogVGhpcyBpcyBjYWxsZWQKKyAg
ICAgICAgYnkgVUlLaXQgd2hlbiB0aGUgdXNlciB0YXBzIG9uIGEgbWlzcGVsbGVkIHdvcmQgdG8g
c2VsZWN0IGl0LgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcGxhY2VTZWxlY3RlZFRleHQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6V2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmVkaXRvclN0YXRl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
c2VsZWN0V2l0aEdlc3R1cmUpOiBSZW1vdmVkIG1fc2hvdWxkUmV0dXJuV29yZEZvclNlbGVjdGlv
bi4KKyAgICAgICAgV2Ugbm93IHJldHVybiBhbHdheXMgdGhlIHdvcmQgY29ycmVzcG9uZGluZyB0
byB0aGUgY2FyZXQgc2VsZWN0aW9uIG9yCisgICAgICAgIHRoZSBzZWxlY3RlZCB0ZXh0IHVwIHRv
IGEgbWF4aW11bSBvZiAyMDAgY2hhcmFjdGVycy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
ZXh0ZW5kU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVwbGFjZVNlbGVj
dGVkVGV4dCk6CisKIDIwMTQtMDQtMTcgIFByYXRpayBTb2xhbmtpICA8cHNvbGFua2lAYXBwbGUu
Y29tPgogCiAgICAgICAgIF93ZWJQcm9jZXNzSWRlbnRpZmllciBzaG91bGQgcmV0dXJuIDAgaWYg
dGhlIHdlYiBwcm9jZXNzIGNyYXNoZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9FZGl0
b3JTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0VkaXRvclN0
YXRlLmNwcAkocmV2aXNpb24gMTY3NDM3KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0VkaXRv
clN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQCB2b2lkIEVkaXRvclN0
YXRlOjplbmNvZGUoSVBDOjpBcmd1bWVudEVuCiAgICAgZW5jb2RlciA8PCBoYXNDb21wb3NpdGlv
bjsKIAogI2lmIFBMQVRGT1JNKElPUykKKyAgICBlbmNvZGVyIDw8IGlzUmVwbGFjZUFsbG93ZWQ7
CiAgICAgZW5jb2RlciA8PCBjYXJldFJlY3RBdFN0YXJ0OwogICAgIGVuY29kZXIgPDwgY2FyZXRS
ZWN0QXRFbmQ7CiAgICAgZW5jb2RlciA8PCBzZWxlY3Rpb25SZWN0czsKQEAgLTg5LDYgKzkwLDgg
QEAgYm9vbCBFZGl0b3JTdGF0ZTo6ZGVjb2RlKElQQzo6QXJndW1lbnREZQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICNpZiBQTEFURk9STShJT1MpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQuaXNSZXBsYWNlQWxsb3dlZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jYXJldFJlY3RBdFN0YXJ0KSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNhcmV0UmVjdEF0RW5kKSkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9FZGl0b3JTdGF0ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9FZGl0b3JTdGF0ZS5oCShyZXZpc2lvbiAxNjc0MzcpCisr
KyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRWRpdG9yU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NDcsNyArNDcsOCBAQCBzdHJ1Y3QgRWRpdG9yU3RhdGUgewogICAgICAgICAsIGlzSW5QbHVnaW4o
ZmFsc2UpCiAgICAgICAgICwgaGFzQ29tcG9zaXRpb24oZmFsc2UpCiAjaWYgUExBVEZPUk0oSU9T
KQotICAgICwgc2VsZWN0ZWRUZXh0TGVuZ3RoKDApCisgICAgICAgICwgaXNSZXBsYWNlQWxsb3dl
ZChmYWxzZSkKKyAgICAgICAgLCBzZWxlY3RlZFRleHRMZW5ndGgoMCkKICNlbmRpZgogICAgIHsK
ICAgICB9CkBAIC02Myw2ICs2NCw3IEBAIHN0cnVjdCBFZGl0b3JTdGF0ZSB7CiAgICAgYm9vbCBo
YXNDb21wb3NpdGlvbjsKIAogI2lmIFBMQVRGT1JNKElPUykKKyAgICBib29sIGlzUmVwbGFjZUFs
bG93ZWQ7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBjYXJldFJlY3RBdFN0YXJ0OwogICAgIFdlYkNv
cmU6OkludFJlY3QgY2FyZXRSZWN0QXRFbmQ7CiAgICAgVmVjdG9yPFdlYkNvcmU6OlNlbGVjdGlv
blJlY3Q+IHNlbGVjdGlvblJlY3RzOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAkocmV2aXNpb24gMTY3NDM3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OTMsNiArNTkzLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgZ2V0QXV0b2NvcnJlY3Rpb25Db250ZXh0KFN0cmluZyYgY29udGV4dEJlZm9y
ZSwgU3RyaW5nJiBtYXJrZWRUZXh0LCBTdHJpbmcmIHNlbGVjdGVkVGV4dCwgU3RyaW5nJiBjb250
ZXh0QWZ0ZXIsIHVpbnQ2NF90JiBsb2NhdGlvbiwgdWludDY0X3QmIGxlbmd0aCk7CiAgICAgdm9p
ZCByZXF1ZXN0RGljdGF0aW9uQ29udGV4dChQYXNzUmVmUHRyPERpY3RhdGlvbkNvbnRleHRDYWxs
YmFjaz4pOwogICAgIHZvaWQgcmVwbGFjZURpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRl
eHQsIGNvbnN0IFN0cmluZyYgbmV3VGV4dCk7CisgICAgdm9pZCByZXBsYWNlU2VsZWN0ZWRUZXh0
KGNvbnN0IFN0cmluZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUZXh0KTsKICAgICB2b2lk
IGRpZFJlY2VpdmVQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRp
b25BdFBvc2l0aW9uJik7CiAgICAgdm9pZCBnZXRQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiwgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKTsKICAg
ICB2b2lkIHJlcXVlc3RQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQkocmV2aXNpb24gMTY3NDM3KQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTEzMyw2ICsxMzMsMTAgQEAgLSAoaWQpaW5pdFdpdGhWaWV3OihVSVJlc3BvbmRl
ciA8VUlUZXh0SQogLSAodm9pZClzZWxlY3RXb3JkOwogQGVuZAogCitAaW50ZXJmYWNlIFVJVGV4
dEludGVyYWN0aW9uQXNzaXN0YW50IChTdGFnaW5nKQorLSAodm9pZClzY2hlZHVsZVJlcGxhY2Vt
ZW50c0ZvclRleHQ6KE5TU3RyaW5nICopdGV4dDsKK0BlbmQKKwogQGludGVyZmFjZSBXS0Zvcm1J
bnB1dFNlc3Npb24gOiBOU09iamVjdCA8X1dLRm9ybUlucHV0U2Vzc2lvbj4KIAogLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoQ29udGVudFZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3IHVzZXJPYmpl
Y3Q6KE5TT2JqZWN0IDxOU1NlY3VyZUNvZGluZz4gKil1c2VyT2JqZWN0OwpAQCAtODUxLDE0ICs4
NTUsMjggQEAgLSAodm9pZClfYWRkU2hvcnRjdXQ6KGlkKXNlbmRlcgogICAgIC8vIEZJWE1FOiBU
byBiZSBpbXBsZW1lbnRlZC4KIH0KIAorLSAoTlNTdHJpbmcgKilzZWxlY3RlZFRleHQKK3sKKyAg
ICByZXR1cm4gKE5TU3RyaW5nICopX3BhZ2UtPmVkaXRvclN0YXRlKCkud29yZEF0U2VsZWN0aW9u
OworfQorCistICh2b2lkKXJlcGxhY2VUZXh0OihOU1N0cmluZyAqKXRleHQgd2l0aFRleHQ6KE5T
U3RyaW5nICopd29yZAoreworICAgIF9wYWdlLT5yZXBsYWNlU2VsZWN0ZWRUZXh0KHRleHQsIHdv
cmQpOworfQorCiAtICh2b2lkKV9wcm9tcHRGb3JSZXBsYWNlOihpZClzZW5kZXIKIHsKLSAgICAv
LyBGSVhNRTogVG8gYmUgaW1wbGVtZW50ZWQuCisgICAgaWYgKF9wYWdlLT5lZGl0b3JTdGF0ZSgp
LndvcmRBdFNlbGVjdGlvbi5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChb
X3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzY2hl
ZHVsZVJlcGxhY2VtZW50c0ZvclRleHQ6KV0pCisgICAgICAgIFtfdGV4dFNlbGVjdGlvbkFzc2lz
dGFudCBzY2hlZHVsZVJlcGxhY2VtZW50c0ZvclRleHQ6X3BhZ2UtPmVkaXRvclN0YXRlKCkud29y
ZEF0U2VsZWN0aW9uXTsKIH0KIAogLSAodm9pZClyZXBsYWNlOihpZClzZW5kZXIKIHsKLSAgICAv
LyBGSVhNRTogVG8gYmUgaW1wbGVtZW50ZWQuCisgICAgW1tVSUtleWJvYXJkSW1wbCBzaGFyZWRJ
bnN0YW5jZV0gcmVwbGFjZVRleHQ6c2VuZGVyXTsKIH0KIAogLSAoQk9PTCljYW5QZXJmb3JtQWN0
aW9uOihTRUwpYWN0aW9uIHdpdGhTZW5kZXI6KGlkKXNlbmRlcgpAQCAtOTA4LDEwICs5MjYsOCBA
QCAgICAgICAgIC8vIGFjY2VwdGFibGUsIGJ1dCB0aGUgaW50ZXJmYWNlCiAgICAgICAgIHJldHVy
biBOTzsKICAgICB9CiAKLSAgICBpZiAoYWN0aW9uID09IEBzZWxlY3RvcihfcHJvbXB0Rm9yUmVw
bGFjZTopKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBuZWVkIHRvIGltcGxlbWVudAotICAgICAgICBy
ZXR1cm4gTk87Ci0gICAgfQorICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKF9wcm9tcHRGb3JS
ZXBsYWNlOikpCisgICAgICAgIHJldHVybiBfcGFnZS0+ZWRpdG9yU3RhdGUoKS5zZWxlY3Rpb25J
c1JhbmdlICYmIF9wYWdlLT5lZGl0b3JTdGF0ZSgpLmlzUmVwbGFjZUFsbG93ZWQgJiYgW1tVSUtl
eWJvYXJkSW1wbCBhY3RpdmVJbnN0YW5jZV0gYXV0b2NvcnJlY3RTcGVsbGluZ0VuYWJsZWRdOwog
CiAgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3Ioc2VsZWN0OikpIHsKICAgICAgICAgLy8gRGlz
YWJsZSBzZWxlY3QgaW4gcGFzc3dvcmQgZmllbGRzIHNvIHRoYXQgeW91IGNhbid0IHNlZSB3b3Jk
IGJvdW5kYXJpZXMuCkBAIC0yMDE5LDYgKzIwMzUsMTEgQEAgLSAodm9pZClfc2VsZWN0aW9uQ2hh
bmdlZAogICAgICAgICBbc2VsZiBfdXBkYXRlQ2hhbmdlZFNlbGVjdGlvbl07CiB9CiAKKy0gKHZv
aWQpc2VsZWN0V29yZEZvclJlcGxhY2VtZW50Cit7CisgICAgX3BhZ2UtPmV4dGVuZFNlbGVjdGlv
bihXb3JkR3JhbnVsYXJpdHkpOworfQorCiAtICh2b2lkKV91cGRhdGVDaGFuZ2VkU2VsZWN0aW9u
CiB7CiAgICAgaWYgKCFfc2VsZWN0aW9uTmVlZHNVcGRhdGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQkocmV2aXNpb24gMTY3NDM3
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0JKHdv
cmtpbmcgY29weSkKQEAgLTIzMyw3ICsyMzMsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcGxh
Y2VEaWN0YXRlZFRleHQoYwogewogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6UmVwbGFjZURpY3RhdGVkVGV4dChvbGRUZXh0LCBuZXdUZXh0KSwgbV9wYWdlSUQpOwogfQot
ICAgIAorCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVwbGFjZVNlbGVjdGVkVGV4dChjb25zdCBTdHJp
bmcmIG9sZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3VGV4dCkKK3sKKyAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcGxhY2VTZWxlY3RlZFRleHQob2xkVGV4dCwgbmV3VGV4
dCksIG1fcGFnZUlEKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBdXRvY29ycmVj
dGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24sIFBhc3NSZWZQdHI8
QXV0b2NvcnJlY3Rpb25EYXRhQ2FsbGJhY2s+IGNhbGxiYWNrKQogewogICAgIGlmICghaXNWYWxp
ZCgpKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCShyZXZpc2lvbiAxNjc0MzcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4Niw3ICsyODYsNiBAQCBXZWJQ
YWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgCiAgICAgLCBtX2lzU2hvd2luZ0Nv
bnRleHRNZW51KGZhbHNlKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TKQotICAgICwgbV9zaG91
bGRSZXR1cm5Xb3JkQXRTZWxlY3Rpb24oZmFsc2UpCiAgICAgLCBtX2xhc3RWaXNpYmxlQ29udGVu
dFJlY3RVcGRhdGVJRCgwKQogICAgICwgbV9oYXNSZWNlaXZlZFZpc2libGVDb250ZW50UmVjdHNB
ZnRlckRpZENvbW1pdExvYWQoZmFsc2UpCiAgICAgLCBtX3NjYWxlV2FzU2V0QnlVSVByb2Nlc3Mo
ZmFsc2UpCkBAIC02OTcsMTUgKzY5NiwyMiBAQCBFZGl0b3JTdGF0ZSBXZWJQYWdlOjplZGl0b3JT
dGF0ZSgpIGNvbnN0CiAgICAgaWYgKHNlbGVjdGlvbi5pc0NhcmV0KCkpIHsKICAgICAgICAgcmVz
dWx0LmNhcmV0UmVjdEF0U3RhcnQgPSB2aWV3LT5jb250ZW50c1RvUm9vdFZpZXcoZnJhbWUuc2Vs
ZWN0aW9uKCkuYWJzb2x1dGVDYXJldEJvdW5kcygpKTsKICAgICAgICAgcmVzdWx0LmNhcmV0UmVj
dEF0RW5kID0gcmVzdWx0LmNhcmV0UmVjdEF0U3RhcnQ7Ci0gICAgICAgIGlmIChtX3Nob3VsZFJl
dHVybldvcmRBdFNlbGVjdGlvbikKLSAgICAgICAgICAgIHJlc3VsdC53b3JkQXRTZWxlY3Rpb24g
PSBwbGFpblRleHQod29yZFJhbmdlRnJvbVBvc2l0aW9uKHNlbGVjdGlvbi5zdGFydCgpKS5nZXQo
KSk7CisgICAgICAgIC8vIEZJWE1FOiBUaGUgZm9sbG93aW5nIGNoZWNrIHNob3VsZCB0YWtlIGlu
dG8gYWNjb3VudCB3cml0aW5nIGRpcmVjdGlvbi4KKyAgICAgICAgcmVzdWx0LmlzUmVwbGFjZUFs
bG93ZWQgPSByZXN1bHQuaXNDb250ZW50RWRpdGFibGUgJiYgYXRCb3VuZGFyeU9mR3JhbnVsYXJp
dHkoc2VsZWN0aW9uLnN0YXJ0KCksIFdvcmRHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9yd2FyZCk7
CisgICAgICAgIHJlc3VsdC53b3JkQXRTZWxlY3Rpb24gPSBwbGFpblRleHQod29yZFJhbmdlRnJv
bVBvc2l0aW9uKHNlbGVjdGlvbi5zdGFydCgpKS5nZXQoKSk7CiAgICAgfSBlbHNlIGlmIChzZWxl
Y3Rpb24uaXNSYW5nZSgpKSB7CiAgICAgICAgIHJlc3VsdC5jYXJldFJlY3RBdFN0YXJ0ID0gdmll
dy0+Y29udGVudHNUb1Jvb3RWaWV3KFZpc2libGVQb3NpdGlvbihzZWxlY3Rpb24uc3RhcnQoKSku
YWJzb2x1dGVDYXJldEJvdW5kcygpKTsKICAgICAgICAgcmVzdWx0LmNhcmV0UmVjdEF0RW5kID0g
dmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KFZpc2libGVQb3NpdGlvbihzZWxlY3Rpb24uZW5kKCkp
LmFic29sdXRlQ2FyZXRCb3VuZHMoKSk7CiAgICAgICAgIFJlZlB0cjxSYW5nZT4gc2VsZWN0ZWRS
YW5nZSA9IHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpOwogICAgICAgICBzZWxlY3RlZFJh
bmdlLT5jb2xsZWN0U2VsZWN0aW9uUmVjdHMocmVzdWx0LnNlbGVjdGlvblJlY3RzKTsKICAgICAg
ICAgY29udmVydFNlbGVjdGlvblJlY3RzVG9Sb290Vmlldyh2aWV3LCByZXN1bHQuc2VsZWN0aW9u
UmVjdHMpOwotICAgICAgICByZXN1bHQuc2VsZWN0ZWRUZXh0TGVuZ3RoID0gcGxhaW5UZXh0KHNl
bGVjdGVkUmFuZ2UuZ2V0KCksIFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvciwgdHJ1ZSkubGVu
Z3RoKCk7CisgICAgICAgIFN0cmluZyBzZWxlY3RlZFRleHQgPSBwbGFpblRleHQoc2VsZWN0ZWRS
YW5nZS5nZXQoKSwgVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCB0cnVlKTsKKyAgICAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBkaXNhbGxvdyByZXBsYWNlIHdoZW4gdGhlIHN0cmluZyBjb250
YWlucyBvbmx5IENKIGNoYXJhY3RlcnMuCisgICAgICAgIHJlc3VsdC5pc1JlcGxhY2VBbGxvd2Vk
ID0gcmVzdWx0LmlzQ29udGVudEVkaXRhYmxlICYmICFyZXN1bHQuaXNJblBhc3N3b3JkRmllbGQg
JiYgIXNlbGVjdGVkVGV4dC5jb250YWluc09ubHlXaGl0ZXNwYWNlKCk7CisgICAgICAgIHJlc3Vs
dC5zZWxlY3RlZFRleHRMZW5ndGggPSBzZWxlY3RlZFRleHQubGVuZ3RoKCk7CisgICAgICAgIGNv
bnN0IGludCBtYXhTZWxlY3RlZFRleHRMZW5ndGggPSAyMDA7CisgICAgICAgIGlmIChzZWxlY3Rl
ZFRleHQubGVuZ3RoKCkgPD0gbWF4U2VsZWN0ZWRUZXh0TGVuZ3RoKQorICAgICAgICAgICAgcmVz
dWx0LndvcmRBdFNlbGVjdGlvbiA9IHNlbGVjdGVkVGV4dDsKICAgICB9CiAjZW5kaWYKIApJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lv
biAxNjc0MzcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NTgsNiArNDU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZWxl
bWVudERpZEJsdXIoV2ViQ29yZTo6Tm9kZSopOwogICAgIHZvaWQgcmVxdWVzdERpY3RhdGlvbkNv
bnRleHQodWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCByZXBsYWNlRGljdGF0ZWRUZXh0
KGNvbnN0IFN0cmluZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUZXh0KTsKKyAgICB2b2lk
IHJlcGxhY2VTZWxlY3RlZFRleHQoY29uc3QgU3RyaW5nJiBvbGRUZXh0LCBjb25zdCBTdHJpbmcm
IG5ld1RleHQpOwogICAgIHZvaWQgcmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YShjb25zdCBTdHJp
bmcmIHRleHRGb3JBdXRvY29ycmVjdGlvbiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9p
ZCBhcHBseUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3Ry
aW5nJiBvcmlnaW5hbFRleHQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgc3luY0Fw
cGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcm
IG9yaWdpbmFsVGV4dCwgYm9vbCYgY29ycmVjdGlvbkFwcGxpZWQpOwpAQCAtMTE0Niw3ICsxMTQ3
LDYgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViQ29yZTo6Tm9kZT4gbV9hc3Npc3RlZE5vZGU7
CiAgICAgUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBtX2N1cnJlbnRXb3JkUmFuZ2U7CiAgICAgUmVm
UHRyPFdlYkNvcmU6Ok5vZGU+IG1faW50ZXJhY3Rpb25Ob2RlOwotICAgIGJvb2wgbV9zaG91bGRS
ZXR1cm5Xb3JkQXRTZWxlY3Rpb247CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9sYXN0SW50ZXJh
Y3Rpb25Mb2NhdGlvbjsKIAogICAgIFdlYkNvcmU6OlZpZXdwb3J0Q29uZmlndXJhdGlvbiBtX3Zp
ZXdwb3J0Q29uZmlndXJhdGlvbjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxNjc0MzcpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgko
d29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2Fj
eVJlY2VpdmVyIHsKICAgICBFeHRlbmRTZWxlY3Rpb24odWludDMyX3QgZ3JhbnVsYXJpdHkpCiAg
ICAgUmVxdWVzdERpY3RhdGlvbkNvbnRleHQodWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBSZXBs
YWNlRGljdGF0ZWRUZXh0KFN0cmluZyBvbGRUZXh0LCBTdHJpbmcgbmV3VGV4dCkKKyAgICBSZXBs
YWNlU2VsZWN0ZWRUZXh0KFN0cmluZyBvbGRUZXh0LCBTdHJpbmcgbmV3VGV4dCkKICAgICBSZXF1
ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKFN0cmluZyB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24sIHVpbnQ2
NF90IGNhbGxiYWNrSUQpCiAgICAgQXBwbHlBdXRvY29ycmVjdGlvbihTdHJpbmcgY29ycmVjdGlv
biwgU3RyaW5nIG9yaWdpbmFsVGV4dCwgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBTeW5jQXBw
bHlBdXRvY29ycmVjdGlvbihTdHJpbmcgY29ycmVjdGlvbiwgU3RyaW5nIG9yaWdpbmFsVGV4dCkg
LT4gKGJvb2wgYXV0b2NvcnJlY3Rpb25BcHBsaWVkKQpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkocmV2aXNpb24gMTY3
NDM3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01ODIsOCArNTgyLDYgQEAgdm9pZCBXZWJQYWdlOjpzZWxl
Y3RXaXRoR2VzdHVyZShjb25zdCBJbgogICAgICAgICB9CiAgICAgICAgIGlmIChyZXN1bHQuaXNO
b3ROdWxsKCkpCiAgICAgICAgICAgICByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3Vt
ZW50KCksIHJlc3VsdCwgcmVzdWx0KTsKLSAgICAgICAgaWYgKHJhbmdlKQotICAgICAgICAgICAg
bV9zaG91bGRSZXR1cm5Xb3JkQXRTZWxlY3Rpb24gPSB0cnVlOwogICAgIH0KICAgICAgICAgYnJl
YWs7CiAKQEAgLTY1Nyw3ICs2NTUsNiBAQCB2b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhHZXN0dXJl
KGNvbnN0IEluCiAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UocmFu
Z2UuZ2V0KCksIHBvc2l0aW9uLmFmZmluaXR5KCksIHRydWUpOwogCiAgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpHZXN0dXJlQ2FsbGJhY2socG9pbnQsIGdlc3R1cmVUeXBlLCBnZXN0
dXJlU3RhdGUsIHN0YXRpY19jYXN0PHVpbnQzMl90PihmbGFncyksIGNhbGxiYWNrSUQpKTsKLSAg
ICBtX3Nob3VsZFJldHVybldvcmRBdFNlbGVjdGlvbiA9IGZhbHNlOwogfQogCiBzdGF0aWMgUGFz
c1JlZlB0cjxSYW5nZT4gcmFuZ2VGb3JQb3NpdGlvbihGcmFtZSogZnJhbWUsIGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYgcG9zaXRpb24sIGJvb2wgYmFzZUlzU3RhcnQpCkBAIC0xMjExLDEyICsxMjA4
LDExIEBAIHZvaWQgV2ViUGFnZTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QKIAogdm9pZCBX
ZWJQYWdlOjpleHRlbmRTZWxlY3Rpb24odWludDMyX3QgZ3JhbnVsYXJpdHkpCiB7CisgICAgRnJh
bWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUo
KTsKICAgICAvLyBGb3IgdGhlIG1vbWVudCB3ZSBoYW5kbGUgb25seSBXb3JkR3JhbnVsYXJpdHku
Ci0gICAgaWYgKGdyYW51bGFyaXR5ICE9IFdvcmRHcmFudWxhcml0eSkKKyAgICBpZiAoZ3JhbnVs
YXJpdHkgIT0gV29yZEdyYW51bGFyaXR5IHx8ICFmcmFtZS5zZWxlY3Rpb24oKS5pc0NhcmV0KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgQVNTRVJUKGZyYW1lLnNlbGVjdGlv
bigpLmlzQ2FyZXQoKSk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uID0gZnJhbWUuc2Vs
ZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKTsKICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRT
ZWxlY3RlZFJhbmdlKHdvcmRSYW5nZUZyb21Qb3NpdGlvbihwb3NpdGlvbikuZ2V0KCksIHBvc2l0
aW9uLmFmZmluaXR5KCksIHRydWUpOwogfQpAQCAtMTI3MSw2ICsxMjY3LDE4IEBAIHZvaWQgV2Vi
UGFnZTo6cmVxdWVzdERpY3RhdGlvbkNvbnRleHQodWkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpY3RhdGlvbkNvbnRleHRDYWxsYmFjayhzZWxlY3RlZFRleHQsIGNvbnRleHRC
ZWZvcmUsIGNvbnRleHRBZnRlciwgY2FsbGJhY2tJRCkpOwogfQogCit2b2lkIFdlYlBhZ2U6OnJl
cGxhY2VTZWxlY3RlZFRleHQoY29uc3QgU3RyaW5nJiBvbGRUZXh0LCBjb25zdCBTdHJpbmcmIG5l
d1RleHQpCit7CisgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lLnNlbGVjdGlvbigpLmlzUmFuZ2Uo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHBsYWluVGV4dChmcmFtZS5zZWxlY3Rpb24o
KS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKSAhPSBvbGRUZXh0KQorICAgICAgICByZXR1cm47
CisKKyAgICBmcmFtZS5lZGl0b3IoKS5pbnNlcnRUZXh0KG5ld1RleHQsIDApOworfQorCiB2b2lk
IFdlYlBhZ2U6OnJlcGxhY2VEaWN0YXRlZFRleHQoY29uc3QgU3RyaW5nJiBvbGRUZXh0LCBjb25z
dCBTdHJpbmcmIG5ld1RleHQpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsK
</data>
<flag name="review"
          id="253970"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229695</attachid>
            <date>2014-04-18 17:49:14 -0700</date>
            <delta_ts>2014-04-18 18:26:14 -0700</delta_ts>
            <desc>Patch - part2</desc>
            <filename>replacements-part2-webkit.txt</filename>
            <type>text/plain</type>
            <size>9818</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NzUyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE0LTA0LTE4ICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPUyBXZWJLaXQyXSBzdXBw
b3J0IHJlcGxhY2VtZW50cyBmb3IgbWlzc3BlbGxlZCB3b3Jkcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMTgyNworICAgICAgICA8cmRhcjovL3By
b2JsZW0vMTYzMTk2NTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkcyB1dGlsaXR5IGZ1bmN0aW9uIHRvIHJldHVybiB0aGUgY2hhcmFjdGVyIGJl
Zm9yZSB0aGUgY3VycmVudCBzZWxlY3Rpb24KKyAgICAgICAgYW5kIGNvbnZlcnRzIHRoZSBuYnNw
IHRvIHRoZSBzcGFjZSBjaGFyYWN0ZXIuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAg
ICAgICAgKiBlZGl0aW5nL1Zpc2libGVVbml0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjaGFy
YWN0ZXJCZWZvcmVQb3NpdGlvbik6CisgICAgICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuaDoK
KwogMjAxNC0wNC0xOCAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAg
W1dlYkdMXSBMaW1pdCBtYXhpbXVtIHRleHR1cmUgc2l6ZXMgb24gb2xkZXIgSW50ZWwgaGFyZHdh
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxNjc0OTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMjU2OCw2ICsyNTY4LDcg
QEAgX19aTjdXZWJDb3JlMjJIVE1MUGx1Z0luSW1hZ2VFbGVtZW50MjVjcgogX19aTjdXZWJDb3Jl
MjJzdGFydE9mRWRpdGFibGVDb250ZW50RVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FCiBfX1pON1dl
YkNvcmUyM2FwcGxpY2F0aW9uSXNNb2JpbGVNYWlsRXYKIF9fWk43V2ViQ29yZTIzYXRCb3VuZGFy
eU9mR3JhbnVsYXJpdHlFUktOU18xNVZpc2libGVQb3NpdGlvbkVOU18xNVRleHRHcmFudWxhcml0
eUVOU18xOFNlbGVjdGlvbkRpcmVjdGlvbkUKK19fWk43V2ViQ29yZTIzY2hhcmFjdGVyQmVmb3Jl
UG9zaXRpb25FUktOU18xNVZpc2libGVQb3NpdGlvbkUKIF9fWk43V2ViQ29yZTI0RG9jdW1lbnRN
YXJrZXJDb250cm9sbGVyMTRtYXJrZXJzSW5SYW5nZUVQTlNfNVJhbmdlRU5TXzE0RG9jdW1lbnRN
YXJrZXIxMU1hcmtlclR5cGVzRQogX19aTjdXZWJDb3JlMjRhY3F1aXJlTGluZUJyZWFrSXRlcmF0
b3JFTjNXVEYxMFN0cmluZ1ZpZXdFUktOUzBfMTJBdG9taWNTdHJpbmdFUEt0agogX19aTjdXZWJD
b3JlMjRjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnlFUDhOU1N0cmluZwpJbmRleDogU291cmNlL1dl
YkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAkocmV2aXNpb24gMTY3NDkwKQorKysgU291cmNl
L1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODEy
LDYgKzE4MTIsMjcgQEAgaW50IGRpc3RhbmNlQmV0d2VlblBvc2l0aW9ucyhjb25zdCBWaXNpYgog
CiAgICAgcmV0dXJuICh0aGlzSXNTdGFydCA/IC1kaXN0YW5jZSA6IGRpc3RhbmNlKTsKIH0KKyAg
ICAKK1VDaGFyMzIgY2hhcmFjdGVyQmVmb3JlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiBwb3NpdGlvbikKK3sKKyAgICBpZiAocG9zaXRpb24uaXNOdWxsKCkgfHwgaXNTdGFydE9mRG9j
dW1lbnQocG9zaXRpb24pKQorICAgICAgIHJldHVybiAwOworICAgIFZpc2libGVQb3NpdGlvbiBw
cmV2aW91c1Bvc2l0aW9uID0gbmV4dENoYXJhY3RlckJvdW5kYXJ5SW5EaXJlY3Rpb24ocG9zaXRp
b24sIERpcmVjdGlvbkJhY2t3YXJkKTsKKyAgICBpZiAocHJldmlvdXNQb3NpdGlvbi5pc051bGwo
KSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgU3RyaW5nIGNoYXJhY3RlclN0cmluZyA9IHBsYWlu
VGV4dChSYW5nZTo6Y3JlYXRlKHBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkuYW5jaG9yTm9kZSgp
LT5kb2N1bWVudCgpLCBwcmV2aW91c1Bvc2l0aW9uLCBwb3NpdGlvbikuZ2V0KCksIFRleHRJdGVy
YXRvckRlZmF1bHRCZWhhdmlvciwgdHJ1ZSk7CisgICAgaWYgKGNoYXJhY3RlclN0cmluZy5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIGlmIChjaGFyYWN0ZXJTdHJpbmcu
bGVuZ3RoKCkgPT0gMikgeworICAgICAgICBVVEYzMkNoYXIgbGVhZCA9IGNoYXJhY3RlclN0cmlu
Z1swXTsKKyAgICAgICAgVVRGMzJDaGFyIHRyYWlsID0gY2hhcmFjdGVyU3RyaW5nWzFdOworICAg
ICAgICBpZiAoVTE2X0lTX0xFQUQobGVhZCkgJiYgVTE2X0lTX1RSQUlMKHRyYWlsKSkKKyAgICAg
ICAgICAgIHJldHVybiBVMTZfR0VUX1NVUFBMRU1FTlRBUlkobGVhZCwgdHJhaWwpOworICAgIH0K
KyAgICBjb25zdCBVQ2hhcjMyIE5vbkJyZWFraW5nU3BhY2VDaGFyYWN0ZXIgPSAweEEwOworICAg
IHJldHVybiBjaGFyYWN0ZXJTdHJpbmdbMF0gPyBOb25CcmVha2luZ1NwYWNlQ2hhcmFjdGVyIDog
JyAnOworfQogCiBQYXNzUmVmUHRyPFJhbmdlPiB3b3JkUmFuZ2VGcm9tUG9zaXRpb24oY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVmlzaWJsZVVuaXRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9W
aXNpYmxlVW5pdHMuaAkocmV2aXNpb24gMTY3NDkwKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9WaXNpYmxlVW5pdHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDYgKzEwNCw3IEBAIFBhc3NS
ZWZQdHI8UmFuZ2U+IGVuY2xvc2luZ1RleHRVbml0T2ZHcmEKIGludCBkaXN0YW5jZUJldHdlZW5Q
b3NpdGlvbnMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7
CiBQYXNzUmVmUHRyPFJhbmdlPiB3b3JkUmFuZ2VGcm9tUG9zaXRpb24oY29uc3QgVmlzaWJsZVBv
c2l0aW9uJiBwb3NpdGlvbik7CiBWaXNpYmxlUG9zaXRpb24gY2xvc2VzdFdvcmRCb3VuZGFyeUZv
clBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pOworVUNoYXIzMiBjaGFy
YWN0ZXJCZWZvcmVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uKTsKICNl
bmRpZgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
Njc1MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwzMCBAQAorMjAxNC0wNC0xOCAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBwbGUuY29t
PgorCisgICAgICAgIFtpT1MgV2ViS2l0Ml0gc3VwcG9ydCByZXBsYWNlbWVudHMgZm9yIG1pc3Nw
ZWxsZWQgd29yZHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMzE4MjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2MzE5NjU3PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgdGhlIHNlY29u
ZCBhIGZpbmFsIHBpZWNlIHRvIHN1cHBvcnQgcmVwbGFjZW1lbnRzLgorICAgICAgICBJdCBhZGRz
IHNvbWUgZW50cnlwb2ludHMgdXNlZCBieSB0aGUga2V5Ym9hcmQgY29kZSB0byBwZXJmb3JtCisg
ICAgICAgIHJlcGxhY2VtZW50IHdoZW4gcmVhY2hpbmcgdGhlIGVkZ2Ugb2YgYSB3b3JkIHVzaW5n
IGJhY2tzcGFjZS4KKyAgICAgICAgSSd2ZSBtb2RpZmllZCB0aGUgYmVoYXZpb3Igb2YgcmVwbGFj
ZVNlbGVjdGVkVGV4dCB0byB3b3JrIGJvdGgKKyAgICAgICAgd2l0aCBjYXJldCBvciByYW5nZSBz
ZWxlY3Rpb25zLgorCisgICAgICAgICogU2hhcmVkL0VkaXRvclN0YXRlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6RWRpdG9yU3RhdGU6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvclN0
YXRlOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9FZGl0b3JTdGF0ZS5oOgorICAgICAgICAo
V2ViS2l0OjpFZGl0b3JTdGF0ZTo6RWRpdG9yU3RhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IGlzUmVwbGFjZUFsbG93ZWRdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfY2hhcmFjdGVy
QmVmb3JlQ2FyZXRTZWxlY3Rpb25dKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmVkaXRvclN0YXRlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJlcGxhY2VTZWxlY3RlZFRleHQpOgorCiAyMDE0LTA0LTE4ICBBbmRlcnMg
Q2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRG9uJ3QgYWxsb3cgYXBw
IHNhbmRib3hlZCBhcHBzIHdpdGhvdXQgdGhlIG5ldHdvcmsgY2xpZW50IGVudGl0bGVtZW50IHRv
IGxhdW5jaCB0aGUgbmV0d29yayBwcm9jZXNzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
RWRpdG9yU3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9FZGl0
b3JTdGF0ZS5jcHAJKHJldmlzaW9uIDE2NzQ5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9F
ZGl0b3JTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAgdm9pZCBFZGl0
b3JTdGF0ZTo6ZW5jb2RlKElQQzo6QXJndW1lbnRFbgogCiAjaWYgUExBVEZPUk0oSU9TKQogICAg
IGVuY29kZXIgPDwgaXNSZXBsYWNlQWxsb3dlZDsKKyAgICBlbmNvZGVyIDw8IGNoYXJhY3RlckJl
Zm9yZVNlbGVjdGlvbjsKICAgICBlbmNvZGVyIDw8IGNhcmV0UmVjdEF0U3RhcnQ7CiAgICAgZW5j
b2RlciA8PCBjYXJldFJlY3RBdEVuZDsKICAgICBlbmNvZGVyIDw8IHNlbGVjdGlvblJlY3RzOwpA
QCAtOTIsNiArOTMsOCBAQCBib29sIEVkaXRvclN0YXRlOjpkZWNvZGUoSVBDOjpBcmd1bWVudERl
CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlzUmVw
bGFjZUFsbG93ZWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXN1bHQuY2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNhcmV0UmVjdEF0U3RhcnQpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2Fy
ZXRSZWN0QXRFbmQpKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0VkaXRvclN0YXRlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0VkaXRvclN0YXRlLmgJKHJldmlz
aW9uIDE2NzQ5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9FZGl0b3JTdGF0ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIHN0cnVjdCBFZGl0b3JTdGF0ZSB7CiAgICAgICAg
ICwgaGFzQ29tcG9zaXRpb24oZmFsc2UpCiAjaWYgUExBVEZPUk0oSU9TKQogICAgICAgICAsIGlz
UmVwbGFjZUFsbG93ZWQoZmFsc2UpCisgICAgICAgICwgY2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9u
KDApCiAgICAgICAgICwgc2VsZWN0ZWRUZXh0TGVuZ3RoKDApCiAjZW5kaWYKICAgICB7CkBAIC02
NSw2ICs2Niw3IEBAIHN0cnVjdCBFZGl0b3JTdGF0ZSB7CiAKICNpZiBQTEFURk9STShJT1MpCiAg
ICAgYm9vbCBpc1JlcGxhY2VBbGxvd2VkOworICAgIFVDaGFyMzIgY2hhcmFjdGVyQmVmb3JlU2Vs
ZWN0aW9uOwogICAgIFdlYkNvcmU6OkludFJlY3QgY2FyZXRSZWN0QXRTdGFydDsKICAgICBXZWJD
b3JlOjpJbnRSZWN0IGNhcmV0UmVjdEF0RW5kOwogICAgIFZlY3RvcjxXZWJDb3JlOjpTZWxlY3Rp
b25SZWN0PiBzZWxlY3Rpb25SZWN0czsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCShyZXZpc2lvbiAx
Njc0OTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtODYwLDYgKzg2MCwxMSBAQCAtIChOU1N0cmlu
ZyAqKXNlbGVjdGVkVGV4dAogICAgIHJldHVybiAoTlNTdHJpbmcgKilfcGFnZS0+ZWRpdG9yU3Rh
dGUoKS53b3JkQXRTZWxlY3Rpb247CiB9CiAKKy0gKEJPT0wpaXNSZXBsYWNlQWxsb3dlZAorewor
ICAgIHJldHVybiBfcGFnZS0+ZWRpdG9yU3RhdGUoKS5pc1JlcGxhY2VBbGxvd2VkOworfQorCiAt
ICh2b2lkKXJlcGxhY2VUZXh0OihOU1N0cmluZyAqKXRleHQgd2l0aFRleHQ6KE5TU3RyaW5nICop
d29yZAogewogICAgIF9wYWdlLT5yZXBsYWNlU2VsZWN0ZWRUZXh0KHRleHQsIHdvcmQpOwpAQCAt
MTMzMSw2ICsxMzM2LDExIEBAIC0gKHZvaWQpcmVxdWVzdEF1dG9jb3JyZWN0aW9uUmVjdHNGb3JT
dHIKICAgICB9KSk7CiB9CiAKKy0oVVRGMzJDaGFyKV9jaGFyYWN0ZXJCZWZvcmVDYXJldFNlbGVj
dGlvbgoreworICAgIHJldHVybiBfcGFnZS0+ZWRpdG9yU3RhdGUoKS5jaGFyYWN0ZXJCZWZvcmVT
ZWxlY3Rpb247Cit9CisKIC0gKENHUmVjdCl0ZXh0Rmlyc3RSZWN0CiB7CiAgICAgcmV0dXJuIChf
cGFnZS0+ZWRpdG9yU3RhdGUoKS5oYXNDb21wb3NpdGlvbikgPyBfcGFnZS0+ZWRpdG9yU3RhdGUo
KS5maXJzdE1hcmtlZFJlY3QgOiBfYXV0b2NvcnJlY3Rpb25EYXRhLnRleHRGaXJzdFJlY3Q7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShy
ZXZpc2lvbiAxNjc0OTApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5Myw2ICs2OTMsNyBAQCBFZGl0b3JTdGF0ZSBX
ZWJQYWdlOjplZGl0b3JTdGF0ZSgpIGNvbnN0CiAgICAgICAgIC8vIEZJWE1FOiBUaGUgZm9sbG93
aW5nIGNoZWNrIHNob3VsZCB0YWtlIGludG8gYWNjb3VudCB3cml0aW5nIGRpcmVjdGlvbi4KICAg
ICAgICAgcmVzdWx0LmlzUmVwbGFjZUFsbG93ZWQgPSByZXN1bHQuaXNDb250ZW50RWRpdGFibGUg
JiYgYXRCb3VuZGFyeU9mR3JhbnVsYXJpdHkoc2VsZWN0aW9uLnN0YXJ0KCksIFdvcmRHcmFudWxh
cml0eSwgRGlyZWN0aW9uRm9yd2FyZCk7CiAgICAgICAgIHJlc3VsdC53b3JkQXRTZWxlY3Rpb24g
PSBwbGFpblRleHQod29yZFJhbmdlRnJvbVBvc2l0aW9uKHNlbGVjdGlvbi5zdGFydCgpKS5nZXQo
KSk7CisgICAgICAgIHJlc3VsdC5jaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb24gPSBWaXNpYmxlUG9z
aXRpb24oc2VsZWN0aW9uLnN0YXJ0KCkpLmNoYXJhY3RlckJlZm9yZSgpOyAvL2NoYXJhY3RlckJl
Zm9yZVBvc2l0aW9uKHNlbGVjdGlvbi5zdGFydCgpKTsKICAgICB9IGVsc2UgaWYgKHNlbGVjdGlv
bi5pc1JhbmdlKCkpIHsKICAgICAgICAgcmVzdWx0LmNhcmV0UmVjdEF0U3RhcnQgPSB2aWV3LT5j
b250ZW50c1RvUm9vdFZpZXcoVmlzaWJsZVBvc2l0aW9uKHNlbGVjdGlvbi5zdGFydCgpKS5hYnNv
bHV0ZUNhcmV0Qm91bmRzKCkpOwogICAgICAgICByZXN1bHQuY2FyZXRSZWN0QXRFbmQgPSB2aWV3
LT5jb250ZW50c1RvUm9vdFZpZXcoVmlzaWJsZVBvc2l0aW9uKHNlbGVjdGlvbi5lbmQoKSkuYWJz
b2x1dGVDYXJldEJvdW5kcygpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHJldmlzaW9uIDE2NzQ5MCkKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTI3NSwxMyArMTI3NSwxNCBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3REaWN0
YXRpb25Db250ZXh0KHVpCiB2b2lkIFdlYlBhZ2U6OnJlcGxhY2VTZWxlY3RlZFRleHQoY29uc3Qg
U3RyaW5nJiBvbGRUZXh0LCBjb25zdCBTdHJpbmcmIG5ld1RleHQpCiB7CiAgICAgRnJhbWUmIGZy
YW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAg
ICBpZiAoIWZyYW1lLnNlbGVjdGlvbigpLmlzUmFuZ2UoKSkKKyAgICBSZWZQdHI8UmFuZ2U+IHdv
cmRSYW5nZSA9IGZyYW1lLnNlbGVjdGlvbigpLmlzQ2FyZXQoKSA/IHdvcmRSYW5nZUZyb21Qb3Np
dGlvbihmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpKSA6IGZyYW1lLnNlbGVj
dGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCk7CisgICAgaWYgKHBsYWluVGV4dCh3b3JkUmFuZ2Uu
Z2V0KCkpICE9IG9sZFRleHQpCiAgICAgICAgIHJldHVybjsKLQotICAgIGlmIChwbGFpblRleHQo
ZnJhbWUuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSkgIT0gb2xkVGV4dCkK
LSAgICAgICAgcmV0dXJuOwotCisgICAgCisgICAgZnJhbWUuZWRpdG9yKCkuc2V0SWdub3JlQ29t
cG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UodHJ1ZSk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0
U2VsZWN0ZWRSYW5nZSh3b3JkUmFuZ2UuZ2V0KCksIFVQU1RSRUFNLCB0cnVlKTsKICAgICBmcmFt
ZS5lZGl0b3IoKS5pbnNlcnRUZXh0KG5ld1RleHQsIDApOworICAgIGZyYW1lLmVkaXRvcigpLnNl
dElnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJQ
YWdlOjpyZXBsYWNlRGljdGF0ZWRUZXh0KGNvbnN0IFN0cmluZyYgb2xkVGV4dCwgY29uc3QgU3Ry
aW5nJiBuZXdUZXh0KQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229698</attachid>
            <date>2014-04-18 18:26:14 -0700</date>
            <delta_ts>2014-04-19 14:46:22 -0700</delta_ts>
            <desc>Updated part 2</desc>
            <filename>replacements-part2-webkit.txt</filename>
            <type>text/plain</type>
            <size>11893</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NzUyNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE0LTA0LTE4ICBFbnJpY2Eg
Q2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPUyBXZWJLaXQyXSBzdXBw
b3J0IHJlcGxhY2VtZW50cyBmb3IgbWlzc3BlbGxlZCB3b3Jkcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMTgyNworICAgICAgICA8cmRhcjovL3By
b2JsZW0vMTYzMTk2NTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkcyB1dGlsaXR5IGZ1bmN0aW9uIHRvIHJldHVybiB0aGUgY2hhcmFjdGVyIGJl
Zm9yZSB0aGUgY3VycmVudCBzZWxlY3Rpb24KKyAgICAgICAgYW5kIGNvbnZlcnRzIHRoZSBuYnNw
IHRvIHRoZSBzcGFjZSBjaGFyYWN0ZXIuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAg
ICAgICAgKiBlZGl0aW5nL1Zpc2libGVVbml0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjaGFy
YWN0ZXJCZWZvcmVQb3NpdGlvbik6CisgICAgICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuaDoK
KwogMjAxNC0wNC0xOCAgSm9uIEhvbmV5Y3V0dCAgPGpob25leWN1dHRAYXBwbGUuY29tPgogCiAg
ICAgICAgIEhhcmRlbiBSZW5kZXJJbmxpbmU6OmlubGluZUVsZW1lbnRDb250aW51YXRpb24oKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDE2NzUyNCkKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNTY5LDYgKzI1NjksNyBAQCBf
X1pON1dlYkNvcmUyMkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQyNWNyCiBfX1pON1dlYkNvcmUyMnN0
YXJ0T2ZFZGl0YWJsZUNvbnRlbnRFUktOU18xNVZpc2libGVQb3NpdGlvbkUKIF9fWk43V2ViQ29y
ZTIzYXBwbGljYXRpb25Jc01vYmlsZU1haWxFdgogX19aTjdXZWJDb3JlMjNhdEJvdW5kYXJ5T2ZH
cmFudWxhcml0eUVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRU5TXzE1VGV4dEdyYW51bGFyaXR5RU5T
XzE4U2VsZWN0aW9uRGlyZWN0aW9uRQorX19aTjdXZWJDb3JlMjNjaGFyYWN0ZXJCZWZvcmVQb3Np
dGlvbkVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRQogX19aTjdXZWJDb3JlMjREb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXIxNG1hcmtlcnNJblJhbmdlRVBOU181UmFuZ2VFTlNfMTREb2N1bWVudE1hcmtl
cjExTWFya2VyVHlwZXNFCiBfX1pON1dlYkNvcmUyNGFjcXVpcmVMaW5lQnJlYWtJdGVyYXRvckVO
M1dURjEwU3RyaW5nVmlld0VSS05TMF8xMkF0b21pY1N0cmluZ0VQS3RqCiBfX1pON1dlYkNvcmUy
NGNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeUVQOE5TU3RyaW5nCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCShyZXZpc2lvbiAxNjc1MjQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MTIsNiAr
MTgxMiwyNyBAQCBpbnQgZGlzdGFuY2VCZXR3ZWVuUG9zaXRpb25zKGNvbnN0IFZpc2liCiAKICAg
ICByZXR1cm4gKHRoaXNJc1N0YXJ0ID8gLWRpc3RhbmNlIDogZGlzdGFuY2UpOwogfQorICAgIAor
VUNoYXIzMiBjaGFyYWN0ZXJCZWZvcmVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBv
c2l0aW9uKQoreworICAgIGlmIChwb3NpdGlvbi5pc051bGwoKSB8fCBpc1N0YXJ0T2ZEb2N1bWVu
dChwb3NpdGlvbikpCisgICAgICAgIHJldHVybiAwOworICAgIFZpc2libGVQb3NpdGlvbiBwcmV2
aW91c1Bvc2l0aW9uID0gbmV4dENoYXJhY3RlckJvdW5kYXJ5SW5EaXJlY3Rpb24ocG9zaXRpb24s
IERpcmVjdGlvbkJhY2t3YXJkKTsKKyAgICBpZiAocHJldmlvdXNQb3NpdGlvbi5pc051bGwoKSkK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgU3RyaW5nIGNoYXJhY3RlclN0cmluZyA9IHBsYWluVGV4
dChSYW5nZTo6Y3JlYXRlKHBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkuYW5jaG9yTm9kZSgpLT5k
b2N1bWVudCgpLCBwcmV2aW91c1Bvc2l0aW9uLCBwb3NpdGlvbikuZ2V0KCksIFRleHRJdGVyYXRv
ckRlZmF1bHRCZWhhdmlvciwgdHJ1ZSk7CisgICAgaWYgKGNoYXJhY3RlclN0cmluZy5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIGlmIChjaGFyYWN0ZXJTdHJpbmcubGVu
Z3RoKCkgPT0gMikgeworICAgICAgICBVVEYzMkNoYXIgbGVhZCA9IGNoYXJhY3RlclN0cmluZ1sw
XTsKKyAgICAgICAgVVRGMzJDaGFyIHRyYWlsID0gY2hhcmFjdGVyU3RyaW5nWzFdOworICAgICAg
ICBpZiAoVTE2X0lTX0xFQUQobGVhZCkgJiYgVTE2X0lTX1RSQUlMKHRyYWlsKSkKKyAgICAgICAg
ICAgIHJldHVybiBVMTZfR0VUX1NVUFBMRU1FTlRBUlkobGVhZCwgdHJhaWwpOworICAgIH0KKyAg
ICBjb25zdCBVQ2hhcjMyIE5vbkJyZWFraW5nU3BhY2VDaGFyYWN0ZXIgPSAweEEwOworICAgIHJl
dHVybiBjaGFyYWN0ZXJTdHJpbmdbMF0gPyBOb25CcmVha2luZ1NwYWNlQ2hhcmFjdGVyIDogJyAn
OworfQogCiBQYXNzUmVmUHRyPFJhbmdlPiB3b3JkUmFuZ2VGcm9tUG9zaXRpb24oY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VmlzaWJsZVVuaXRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNp
YmxlVW5pdHMuaAkocmV2aXNpb24gMTY3NTI0KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9W
aXNpYmxlVW5pdHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDYgKzEwNCw3IEBAIFBhc3NSZWZQ
dHI8UmFuZ2U+IGVuY2xvc2luZ1RleHRVbml0T2ZHcmEKIGludCBkaXN0YW5jZUJldHdlZW5Qb3Np
dGlvbnMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CiBQ
YXNzUmVmUHRyPFJhbmdlPiB3b3JkUmFuZ2VGcm9tUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiBwb3NpdGlvbik7CiBWaXNpYmxlUG9zaXRpb24gY2xvc2VzdFdvcmRCb3VuZGFyeUZvclBv
c2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pOworVUNoYXIzMiBjaGFyYWN0
ZXJCZWZvcmVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKICNlbmRpZgogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjc1MjQpCisrKyBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw3MyBAQAor
MjAxNC0wNC0xNyAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgorCisgICAgICAg
IFtpT1MgV2ViS2l0Ml0gc3VwcG9ydCByZXBsYWNlbWVudHMgZm9yIG1pc3NwZWxsZWQgd29yZHMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE4MjcK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2MzE5NjU3PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgdGhlIGZpcnN0IHBhcnQgb2YgdGhl
IHdvcmsgdG8gYWRkIHN1cHBvcnQgZm9yIHJlcGxhY2VtZW50cy4KKyAgICAgICAgSXQgaGFuZGxl
cyBfcHJvbXB0Rm9yUmVwbGFjZSBpbiBjYW5QZXJmb3JtQWN0aW9uIHRvIGRlY2lkZQorICAgICAg
ICB3aGV0aGVyIHRvIHNob3cgdGhlIFJlcGxhY2UgYnV0dG9uIGluIHRoZSBtZW51IGFuZCBhZGQg
dGhlCisgICAgICAgIGltcGxlbWVudGF0aW9uIG9mIHRoZSByZXBsYWNlIGFjdGlvbi4KKworICAg
ICAgICAqIFNoYXJlZC9FZGl0b3JTdGF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvclN0
YXRlOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JTdGF0ZTo6ZGVjb2RlKToKKyAg
ICAgICAgKiBTaGFyZWQvRWRpdG9yU3RhdGUuaDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yU3Rh
dGU6OkVkaXRvclN0YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgc2VsZWN0ZWRUZXh0XSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgcmVwbGFjZVRleHQ6d2l0aFRleHQ6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcg
X3Byb21wdEZvclJlcGxhY2U6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgcmVwbGFjZTpd
KToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjYW5QZXJmb3JtQWN0aW9uOndpdGhTZW5kZXI6
XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgc2VsZWN0V29yZEZvclJlcGxhY2VtZW50XSk6
IFRoaXMgaXMgY2FsbGVkCisgICAgICAgIGJ5IFVJS2l0IHdoZW4gdGhlIHVzZXIgdGFwcyBvbiBh
IG1pc3BlbGxlZCB3b3JkIHRvIHNlbGVjdCBpdC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dl
YlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXBsYWNl
U2VsZWN0ZWRUZXh0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjplZGl0b3JTdGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnNlbGVjdFdpdGhHZXN0dXJlKTogUmVtb3ZlZCBtX3Nob3VsZFJl
dHVybldvcmRGb3JTZWxlY3Rpb24uCisgICAgICAgIFdlIG5vdyByZXR1cm4gYWx3YXlzIHRoZSB3
b3JkIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNhcmV0IHNlbGVjdGlvbiBvcgorICAgICAgICB0aGUg
c2VsZWN0ZWQgdGV4dCB1cCB0byBhIG1heGltdW0gb2YgMjAwIGNoYXJhY3RlcnMuCisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmV4dGVuZFNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnJlcGxhY2VTZWxlY3RlZFRleHQpOgorCis8PDw8PDw8IC5taW5lCisyMDE0LTA0LTE4
ICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPUyBXZWJL
aXQyXSBzdXBwb3J0IHJlcGxhY2VtZW50cyBmb3IgbWlzc3BlbGxlZCB3b3Jkcy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMTgyNworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMTYzMTk2NTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBpcyB0aGUgc2Vjb25kIGEgZmluYWwgcGllY2UgdG8gc3Vw
cG9ydCByZXBsYWNlbWVudHMuCisgICAgICAgIEl0IGFkZHMgc29tZSBlbnRyeXBvaW50cyB1c2Vk
IGJ5IHRoZSBrZXlib2FyZCBjb2RlIHRvIHBlcmZvcm0KKyAgICAgICAgcmVwbGFjZW1lbnQgd2hl
biByZWFjaGluZyB0aGUgZWRnZSBvZiBhIHdvcmQgdXNpbmcgYmFja3NwYWNlLgorICAgICAgICBJ
J3ZlIG1vZGlmaWVkIHRoZSBiZWhhdmlvciBvZiByZXBsYWNlU2VsZWN0ZWRUZXh0IHRvIHdvcmsg
Ym90aAorICAgICAgICB3aXRoIGNhcmV0IG9yIHJhbmdlIHNlbGVjdGlvbnMuCisKKyAgICAgICAg
KiBTaGFyZWQvRWRpdG9yU3RhdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JTdGF0ZTo6
ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yU3RhdGU6OmRlY29kZSk6CisgICAgICAg
ICogU2hhcmVkL0VkaXRvclN0YXRlLmg6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvclN0YXRlOjpF
ZGl0b3JTdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaXNSZXBsYWNlQWxsb3dlZF0pOgor
ICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jaGFyYWN0ZXJCZWZvcmVDYXJldFNlbGVjdGlvbl0p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6ZWRpdG9yU3RhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVwbGFjZVNl
bGVjdGVkVGV4dCk6CisKKz09PT09PT0KIDIwMTQtMDQtMTggIFN0ZXBoYW5pZSBMZXdpcyAgPHNs
ZXdpc0BhcHBsZS5jb20+CiAKICAgICAgICAgV2Ugc2hvdWxkbuKAmXQgY3JlYXRlIHBhZ2UgdGhy
b3R0bGVycyBmb3Igb3RoZXIgcGFnZXMgdGhhbiBXZWJLaXQyIHBhZ2VzLgpAQCAtMjEsNiArOTEs
NyBAQAogICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp3aGVlbEV2ZW50KTogZGl0dG8KICAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6a2V5RXZlbnQpOiBkaXR0bwogCis+Pj4+Pj4+IC5yMTY3NTI0
CiAyMDE0LTA0LTE4ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAg
ICAgICAgRG9uJ3QgYWxsb3cgYXBwIHNhbmRib3hlZCBhcHBzIHdpdGhvdXQgdGhlIG5ldHdvcmsg
Y2xpZW50IGVudGl0bGVtZW50IHRvIGxhdW5jaCB0aGUgbmV0d29yayBwcm9jZXNzCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvRWRpdG9yU3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAJKHJldmlzaW9uIDE2NzUyNCkKKysrIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9FZGl0b3JTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDYgKzQ4LDcgQEAgdm9pZCBFZGl0b3JTdGF0ZTo6ZW5jb2RlKElQQzo6QXJndW1lbnRFbgogCiAj
aWYgUExBVEZPUk0oSU9TKQogICAgIGVuY29kZXIgPDwgaXNSZXBsYWNlQWxsb3dlZDsKKyAgICBl
bmNvZGVyIDw8IGNoYXJhY3RlckJlZm9yZVNlbGVjdGlvbjsKICAgICBlbmNvZGVyIDw8IGNhcmV0
UmVjdEF0U3RhcnQ7CiAgICAgZW5jb2RlciA8PCBjYXJldFJlY3RBdEVuZDsKICAgICBlbmNvZGVy
IDw8IHNlbGVjdGlvblJlY3RzOwpAQCAtOTIsNiArOTMsOCBAQCBib29sIEVkaXRvclN0YXRlOjpk
ZWNvZGUoSVBDOjpBcmd1bWVudERlCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0LmlzUmVwbGFjZUFsbG93ZWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9u
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
LmNhcmV0UmVjdEF0U3RhcnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQuY2FyZXRSZWN0QXRFbmQpKQpJbmRleDogU291cmNlL1dlYktpdDIv
U2hhcmVkL0VkaXRvclN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVk
L0VkaXRvclN0YXRlLmgJKHJldmlzaW9uIDE2NzUyNCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9FZGl0b3JTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIHN0cnVjdCBF
ZGl0b3JTdGF0ZSB7CiAgICAgICAgICwgaGFzQ29tcG9zaXRpb24oZmFsc2UpCiAjaWYgUExBVEZP
Uk0oSU9TKQogICAgICAgICAsIGlzUmVwbGFjZUFsbG93ZWQoZmFsc2UpCisgICAgICAgICwgY2hh
cmFjdGVyQmVmb3JlU2VsZWN0aW9uKDApCiAgICAgICAgICwgc2VsZWN0ZWRUZXh0TGVuZ3RoKDAp
CiAjZW5kaWYKICAgICB7CkBAIC02NSw2ICs2Niw3IEBAIHN0cnVjdCBFZGl0b3JTdGF0ZSB7CiAK
ICNpZiBQTEFURk9STShJT1MpCiAgICAgYm9vbCBpc1JlcGxhY2VBbGxvd2VkOworICAgIFVDaGFy
MzIgY2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uOwogICAgIFdlYkNvcmU6OkludFJlY3QgY2FyZXRS
ZWN0QXRTdGFydDsKICAgICBXZWJDb3JlOjpJbnRSZWN0IGNhcmV0UmVjdEF0RW5kOwogICAgIFZl
Y3RvcjxXZWJDb3JlOjpTZWxlY3Rpb25SZWN0PiBzZWxlY3Rpb25SZWN0czsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tCShyZXZpc2lvbiAxNjc1MjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtODYwLDYg
Kzg2MCwxMSBAQCAtIChOU1N0cmluZyAqKXNlbGVjdGVkVGV4dAogICAgIHJldHVybiAoTlNTdHJp
bmcgKilfcGFnZS0+ZWRpdG9yU3RhdGUoKS53b3JkQXRTZWxlY3Rpb247CiB9CiAKKy0gKEJPT0wp
aXNSZXBsYWNlQWxsb3dlZAoreworICAgIHJldHVybiBfcGFnZS0+ZWRpdG9yU3RhdGUoKS5pc1Jl
cGxhY2VBbGxvd2VkOworfQorCiAtICh2b2lkKXJlcGxhY2VUZXh0OihOU1N0cmluZyAqKXRleHQg
d2l0aFRleHQ6KE5TU3RyaW5nICopd29yZAogewogICAgIF9wYWdlLT5yZXBsYWNlU2VsZWN0ZWRU
ZXh0KHRleHQsIHdvcmQpOwpAQCAtMTMzMSw2ICsxMzM2LDExIEBAIC0gKHZvaWQpcmVxdWVzdEF1
dG9jb3JyZWN0aW9uUmVjdHNGb3JTdHIKICAgICB9KSk7CiB9CiAKKy0gKFVURjMyQ2hhcilfY2hh
cmFjdGVyQmVmb3JlQ2FyZXRTZWxlY3Rpb24KK3sKKyAgICByZXR1cm4gX3BhZ2UtPmVkaXRvclN0
YXRlKCkuY2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uOworfQorCiAtIChDR1JlY3QpdGV4dEZpcnN0
UmVjdAogewogICAgIHJldHVybiAoX3BhZ2UtPmVkaXRvclN0YXRlKCkuaGFzQ29tcG9zaXRpb24p
ID8gX3BhZ2UtPmVkaXRvclN0YXRlKCkuZmlyc3RNYXJrZWRSZWN0IDogX2F1dG9jb3JyZWN0aW9u
RGF0YS50ZXh0Rmlyc3RSZWN0OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMTY3NTI0KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OTQsNiAr
Njk0LDcgQEAgRWRpdG9yU3RhdGUgV2ViUGFnZTo6ZWRpdG9yU3RhdGUoKSBjb25zdAogICAgICAg
ICAvLyBGSVhNRTogVGhlIGZvbGxvd2luZyBjaGVjayBzaG91bGQgdGFrZSBpbnRvIGFjY291bnQg
d3JpdGluZyBkaXJlY3Rpb24uCiAgICAgICAgIHJlc3VsdC5pc1JlcGxhY2VBbGxvd2VkID0gcmVz
dWx0LmlzQ29udGVudEVkaXRhYmxlICYmIGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KHNlbGVjdGlv
bi5zdGFydCgpLCBXb3JkR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpOwogICAgICAgICBy
ZXN1bHQud29yZEF0U2VsZWN0aW9uID0gcGxhaW5UZXh0KHdvcmRSYW5nZUZyb21Qb3NpdGlvbihz
ZWxlY3Rpb24uc3RhcnQoKSkuZ2V0KCkpOworICAgICAgICByZXN1bHQuY2hhcmFjdGVyQmVmb3Jl
U2VsZWN0aW9uID0gY2hhcmFjdGVyQmVmb3JlUG9zaXRpb24oc2VsZWN0aW9uLnN0YXJ0KCkpOwog
ICAgIH0gZWxzZSBpZiAoc2VsZWN0aW9uLmlzUmFuZ2UoKSkgewogICAgICAgICByZXN1bHQuY2Fy
ZXRSZWN0QXRTdGFydCA9IHZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhWaXNpYmxlUG9zaXRpb24o
c2VsZWN0aW9uLnN0YXJ0KCkpLmFic29sdXRlQ2FyZXRCb3VuZHMoKSk7CiAgICAgICAgIHJlc3Vs
dC5jYXJldFJlY3RBdEVuZCA9IHZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhWaXNpYmxlUG9zaXRp
b24oc2VsZWN0aW9uLmVuZCgpKS5hYnNvbHV0ZUNhcmV0Qm91bmRzKCkpOwpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQko
cmV2aXNpb24gMTY3NTI0KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjc1LDEzICsxMjc1LDE0IEBAIHZv
aWQgV2ViUGFnZTo6cmVxdWVzdERpY3RhdGlvbkNvbnRleHQodWkKIHZvaWQgV2ViUGFnZTo6cmVw
bGFjZVNlbGVjdGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3
VGV4dCkKIHsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZv
Y3VzZWRPck1haW5GcmFtZSgpOwotICAgIGlmICghZnJhbWUuc2VsZWN0aW9uKCkuaXNSYW5nZSgp
KQorICAgIFJlZlB0cjxSYW5nZT4gd29yZFJhbmdlID0gZnJhbWUuc2VsZWN0aW9uKCkuaXNDYXJl
dCgpID8gd29yZFJhbmdlRnJvbVBvc2l0aW9uKGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigp
LnN0YXJ0KCkpIDogZnJhbWUuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKTsKKyAgICBp
ZiAocGxhaW5UZXh0KHdvcmRSYW5nZS5nZXQoKSkgIT0gb2xkVGV4dCkKICAgICAgICAgcmV0dXJu
OwotCi0gICAgaWYgKHBsYWluVGV4dChmcmFtZS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5n
ZSgpLmdldCgpKSAhPSBvbGRUZXh0KQotICAgICAgICByZXR1cm47Ci0KKyAgICAKKyAgICBmcmFt
ZS5lZGl0b3IoKS5zZXRJZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZSh0cnVlKTsKKyAg
ICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHdvcmRSYW5nZS5nZXQoKSwgVVBT
VFJFQU0sIHRydWUpOwogICAgIGZyYW1lLmVkaXRvcigpLmluc2VydFRleHQobmV3VGV4dCwgMCk7
CisgICAgZnJhbWUuZWRpdG9yKCkuc2V0SWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2Uo
ZmFsc2UpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnJlcGxhY2VEaWN0YXRlZFRleHQoY29uc3QgU3Ry
aW5nJiBvbGRUZXh0LCBjb25zdCBTdHJpbmcmIG5ld1RleHQpCg==
</data>
<flag name="review"
          id="254068"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>