From fec94fd5f54074c330e192d6b28bc0a6bde9f13b Mon Sep 17 00:00:00 2001 From: bokuweb Date: Wed, 10 Aug 2022 14:45:27 +0900 Subject: [PATCH] Read hyperlink instr (#518) * fix: read hyperlink instr * fix * fix * fix * rc7 --- docx-core/src/documents/elements/fld_char.rs | 4 +- .../src/documents/elements/instr_hyperlink.rs | 68 + .../src/documents/elements/instr_pageref.rs | 1 + docx-core/src/documents/elements/instr_tc.rs | 1 + .../src/documents/elements/instr_text.rs | 8 + docx-core/src/documents/elements/instr_toc.rs | 7 +- docx-core/src/documents/elements/mod.rs | 2 + docx-core/src/reader/instr_text.rs | 5 + docx-core/src/types/field_char_type.rs | 4 +- docx-wasm/js/json/bindings/FieldChar.ts | 3 + docx-wasm/js/json/bindings/FieldCharType.ts | 2 + docx-wasm/js/json/bindings/InstrHyperlink.ts | 2 + docx-wasm/js/json/bindings/InstrToC.ts | 3 + docx-wasm/js/json/bindings/StyleWithLevel.ts | 2 + docx-wasm/js/json/run.ts | 25 +- docx-wasm/package.json | 2 +- .../test/__snapshots__/index.test.js.snap | 1953 ++++++++++++++++- docx-wasm/test/index.test.js | 6 + fixtures/instr_links/instr_links.docx | Bin 0 -> 15057 bytes 19 files changed, 2054 insertions(+), 44 deletions(-) create mode 100644 docx-core/src/documents/elements/instr_hyperlink.rs create mode 100644 docx-wasm/js/json/bindings/FieldChar.ts create mode 100644 docx-wasm/js/json/bindings/FieldCharType.ts create mode 100644 docx-wasm/js/json/bindings/InstrHyperlink.ts create mode 100644 docx-wasm/js/json/bindings/InstrToC.ts create mode 100644 docx-wasm/js/json/bindings/StyleWithLevel.ts create mode 100644 fixtures/instr_links/instr_links.docx diff --git a/docx-core/src/documents/elements/fld_char.rs b/docx-core/src/documents/elements/fld_char.rs index 96fb354..395a25d 100644 --- a/docx-core/src/documents/elements/fld_char.rs +++ b/docx-core/src/documents/elements/fld_char.rs @@ -4,7 +4,9 @@ use crate::documents::*; use crate::types::*; use crate::xml_builder::*; -#[derive(Serialize, Debug, Clone, PartialEq)] +#[derive(Serialize, Debug, Clone, PartialEq, ts_rs::TS)] +#[ts(export)] +#[serde(rename_all = "camelCase")] pub struct FieldChar { pub field_char_type: FieldCharType, pub dirty: bool, diff --git a/docx-core/src/documents/elements/instr_hyperlink.rs b/docx-core/src/documents/elements/instr_hyperlink.rs new file mode 100644 index 0000000..7b7e166 --- /dev/null +++ b/docx-core/src/documents/elements/instr_hyperlink.rs @@ -0,0 +1,68 @@ +use serde::Serialize; + +// https://c-rex.net/projects/samples/ooxml/e1/Part4/OOXML_P4_DOCX_HYPERLINKHYPERLINK_topic_ID0EFYG1.html +#[derive(Serialize, Debug, Clone, PartialEq, Default, ts_rs::TS)] +#[ts(export)] +#[serde(rename_all = "camelCase")] +pub struct InstrHyperlink { + pub target: String, + // \l + pub anchor: bool, +} + +impl InstrHyperlink { + pub fn new(target: impl Into) -> Self { + Self { + target: target.into(), + ..Default::default() + } + } +} + +// impl BuildXML for instrHyperlink { +// fn build(&self) -> Vec { +// TODO: +// } +// } + +impl std::str::FromStr for InstrHyperlink { + type Err = (); + + fn from_str(instr: &str) -> Result { + let mut s = instr.split(' '); + let mut target = "".to_string(); + let mut anchor = false; + loop { + if let Some(i) = s.next() { + match i { + "\\l" => { + anchor = true; + } + "\\m" => { + // TODO: + } + "\\n" => { + // TODO: + } + "\\o" => { + // TODO: Support later + let _ = s.next(); + } + "\\t" => { + // TODO: Support later + let _ = s.next(); + } + _ => { + target = i.replace(""", "").replace("\"", "").to_string(); + } + } + } else { + // FIXME: For now, return error if target is not found + if target.is_empty() { + return Err(()); + } + return Ok(Self { target, anchor }); + } + } + } +} diff --git a/docx-core/src/documents/elements/instr_pageref.rs b/docx-core/src/documents/elements/instr_pageref.rs index d8fd153..4f8a9bb 100644 --- a/docx-core/src/documents/elements/instr_pageref.rs +++ b/docx-core/src/documents/elements/instr_pageref.rs @@ -4,6 +4,7 @@ use crate::documents::*; // https://c-rex.net/projects/samples/ooxml/e1/Part4/OOXML_P4_DOCX_PAGEREFPAGEREF_topic_ID0EHXK1.html #[derive(Serialize, Debug, Clone, PartialEq, Default)] +#[serde(rename_all = "camelCase")] pub struct InstrPAGEREF { pub page_ref: String, pub hyperlink: bool, diff --git a/docx-core/src/documents/elements/instr_tc.rs b/docx-core/src/documents/elements/instr_tc.rs index 4425b1d..5583fdf 100644 --- a/docx-core/src/documents/elements/instr_tc.rs +++ b/docx-core/src/documents/elements/instr_tc.rs @@ -4,6 +4,7 @@ use crate::documents::*; // https://c-rex.net/projects/samples/ooxml/e1/Part4/OOXML_P4_DOCX_TCTC_topic_ID0EU2N1.html #[derive(Serialize, Debug, Clone, PartialEq, Default)] +#[serde(rename_all = "camelCase")] pub struct InstrTC { pub text: String, // \n Omits the page number for the entry. diff --git a/docx-core/src/documents/elements/instr_text.rs b/docx-core/src/documents/elements/instr_text.rs index ecf1274..f2def1d 100644 --- a/docx-core/src/documents/elements/instr_text.rs +++ b/docx-core/src/documents/elements/instr_text.rs @@ -9,6 +9,7 @@ pub enum InstrText { TOC(InstrToC), TC(InstrTC), PAGEREF(InstrPAGEREF), + HYPERLINK(InstrHyperlink), Unsupported(String), } @@ -18,6 +19,7 @@ impl BuildXML for Box { InstrText::TOC(toc) => toc.build(), InstrText::TC(tc) => tc.build(), InstrText::PAGEREF(page_ref) => page_ref.build(), + InstrText::HYPERLINK(_link) => todo!(), InstrText::Unsupported(s) => s.as_bytes().to_vec(), }; XMLBuilder::new() @@ -52,6 +54,12 @@ impl Serialize for InstrText { t.serialize_field("data", s)?; t.end() } + InstrText::HYPERLINK(ref s) => { + let mut t = serializer.serialize_struct("HYPERLINK", 2)?; + t.serialize_field("type", "hyperlink")?; + t.serialize_field("data", s)?; + t.end() + } InstrText::Unsupported(ref s) => { let mut t = serializer.serialize_struct("Unsupported", 2)?; t.serialize_field("type", "unsupported")?; diff --git a/docx-core/src/documents/elements/instr_toc.rs b/docx-core/src/documents/elements/instr_toc.rs index 3f89804..78f18fc 100644 --- a/docx-core/src/documents/elements/instr_toc.rs +++ b/docx-core/src/documents/elements/instr_toc.rs @@ -2,7 +2,8 @@ use serde::Serialize; use crate::documents::*; -#[derive(Serialize, Debug, Clone, PartialEq, Default)] +#[derive(Serialize, Debug, Clone, PartialEq, Default, ts_rs::TS)] +#[ts(export)] pub struct StyleWithLevel(pub (String, usize)); impl StyleWithLevel { @@ -11,7 +12,9 @@ impl StyleWithLevel { } } // https://c-rex.net/projects/samples/ooxml/e1/Part4/OOXML_P4_DOCX_TOCTOC_topic_ID0ELZO1.html -#[derive(Serialize, Debug, Clone, PartialEq, Default)] +#[derive(Serialize, Debug, Clone, PartialEq, Default, ts_rs::TS)] +#[ts(export)] +#[serde(rename_all = "camelCase")] pub struct InstrToC { // \o If no heading range is specified, all heading levels used in the document are listed. #[serde(skip_serializing_if = "Option::is_none")] diff --git a/docx-core/src/documents/elements/mod.rs b/docx-core/src/documents/elements/mod.rs index 6b433fd..fee7f6c 100644 --- a/docx-core/src/documents/elements/mod.rs +++ b/docx-core/src/documents/elements/mod.rs @@ -34,6 +34,7 @@ mod hyperlink; mod indent; mod indent_level; mod insert; +mod instr_hyperlink; mod instr_pageref; mod instr_tc; mod instr_text; @@ -148,6 +149,7 @@ pub use hyperlink::*; pub use indent::*; pub use indent_level::*; pub use insert::*; +pub use instr_hyperlink::*; pub use instr_pageref::*; pub use instr_tc::*; pub use instr_text::*; diff --git a/docx-core/src/reader/instr_text.rs b/docx-core/src/reader/instr_text.rs index c7a56d6..6aec674 100644 --- a/docx-core/src/reader/instr_text.rs +++ b/docx-core/src/reader/instr_text.rs @@ -38,6 +38,11 @@ impl ElementReader for InstrText { return Ok(InstrText::TC(instr)); } } + if instr.starts_with("HYPERLINK") { + if let Ok(instr) = InstrHyperlink::from_str(instr) { + return Ok(InstrText::HYPERLINK(instr)); + } + } if instr.starts_with("PAGEREF") { if let Ok(instr) = InstrPAGEREF::from_str(instr) { return Ok(InstrText::PAGEREF(instr)); diff --git a/docx-core/src/types/field_char_type.rs b/docx-core/src/types/field_char_type.rs index 09ca88c..7626497 100644 --- a/docx-core/src/types/field_char_type.rs +++ b/docx-core/src/types/field_char_type.rs @@ -10,7 +10,9 @@ use wasm_bindgen::prelude::*; use super::errors; #[wasm_bindgen] -#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq)] +#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, ts_rs::TS)] +#[ts(export)] +#[serde(rename_all = "camelCase")] pub enum FieldCharType { Begin, Separate, diff --git a/docx-wasm/js/json/bindings/FieldChar.ts b/docx-wasm/js/json/bindings/FieldChar.ts new file mode 100644 index 0000000..63a3274 --- /dev/null +++ b/docx-wasm/js/json/bindings/FieldChar.ts @@ -0,0 +1,3 @@ +import type { FieldCharType } from "./FieldCharType"; + +export interface FieldChar { fieldCharType: FieldCharType, dirty: boolean, } \ No newline at end of file diff --git a/docx-wasm/js/json/bindings/FieldCharType.ts b/docx-wasm/js/json/bindings/FieldCharType.ts new file mode 100644 index 0000000..49c863a --- /dev/null +++ b/docx-wasm/js/json/bindings/FieldCharType.ts @@ -0,0 +1,2 @@ + +export type FieldCharType = "begin" | "separate" | "end" | "unsupported"; \ No newline at end of file diff --git a/docx-wasm/js/json/bindings/InstrHyperlink.ts b/docx-wasm/js/json/bindings/InstrHyperlink.ts new file mode 100644 index 0000000..e695616 --- /dev/null +++ b/docx-wasm/js/json/bindings/InstrHyperlink.ts @@ -0,0 +1,2 @@ + +export interface InstrHyperlink { target: string, anchor: boolean, } \ No newline at end of file diff --git a/docx-wasm/js/json/bindings/InstrToC.ts b/docx-wasm/js/json/bindings/InstrToC.ts new file mode 100644 index 0000000..6f227f3 --- /dev/null +++ b/docx-wasm/js/json/bindings/InstrToC.ts @@ -0,0 +1,3 @@ +import type { StyleWithLevel } from "./StyleWithLevel"; + +export interface InstrToC { headingStylesRange?: [number, number], tcFieldLevelRange?: [number, number], omitPageNumbersLevelRange?: [number, number], entryBookmarkName?: string, stylesWithLevels: Array, entryAndPageNumberSeparator?: string, sequenceAndPageNumbersSeparator?: string, captionLabel: string | null, captionLabelIncludingNumbers?: string, seqFieldIdentifierForPrefix?: string, tcFieldIdentifier?: string, hyperlink: boolean, preserveTab: boolean, preserveNewLine: boolean, useAppliedParagraphLineLevel: boolean, hideTabAndPageNumbersInWebview: boolean, } \ No newline at end of file diff --git a/docx-wasm/js/json/bindings/StyleWithLevel.ts b/docx-wasm/js/json/bindings/StyleWithLevel.ts new file mode 100644 index 0000000..fe57b68 --- /dev/null +++ b/docx-wasm/js/json/bindings/StyleWithLevel.ts @@ -0,0 +1,2 @@ + +export type StyleWithLevel = [string, number]; \ No newline at end of file diff --git a/docx-wasm/js/json/run.ts b/docx-wasm/js/json/run.ts index 158322c..7439239 100644 --- a/docx-wasm/js/json/run.ts +++ b/docx-wasm/js/json/run.ts @@ -4,6 +4,9 @@ import { CommentRangeStartJSON, CommentRangeEndJSON } from ".."; import { BorderType } from "../border"; import { InsertJSON, DeleteJSON } from "./paragraph"; import { VertAlignType } from "../run"; +import { FieldChar } from "./bindings/FieldChar"; +import { InstrHyperlink } from "./bindings/InstrHyperlink"; +import { InstrToC } from "./bindings/InstrToC"; export type TextBorderJSON = { borderType: BorderType; @@ -53,7 +56,9 @@ export type RunChildJSON = | DrawingJSON | ShapeJSON | CommentRangeStartJSON - | CommentRangeEndJSON; + | CommentRangeEndJSON + | FieldCharJSON + | InstrTextJSON; export type TextJSON = { type: "text"; @@ -89,3 +94,21 @@ export type RunJSON = { children: RunChildJSON[]; }; }; + +export type FieldCharJSON = { + type: "fieldChar"; + data: FieldChar; +}; + +export type InstrTextJSON = { + type: "instrText"; + data: + | { + type: "hyperlink"; + data: InstrHyperlink; + } + | { + type: "toc"; + data: InstrToC; + }; +}; diff --git a/docx-wasm/package.json b/docx-wasm/package.json index 4fb4f36..4740477 100644 --- a/docx-wasm/package.json +++ b/docx-wasm/package.json @@ -1,6 +1,6 @@ { "name": "docx-wasm", - "version": "0.0.276-rc4", + "version": "0.0.276-rc7", "main": "dist/node/index.js", "browser": "dist/web/index.js", "author": "bokuweb ", diff --git a/docx-wasm/test/__snapshots__/index.test.js.snap b/docx-wasm/test/__snapshots__/index.test.js.snap index d8c0bd4..ea5e686 100644 --- a/docx-wasm/test/__snapshots__/index.test.js.snap +++ b/docx-wasm/test/__snapshots__/index.test.js.snap @@ -12003,6 +12003,1883 @@ Object { } `; +exports[`reader should read hyperlink instr 1`] = ` +Object { + "comments": Object { + "comments": Array [], + }, + "commentsExtended": Object { + "children": Array [], + }, + "contentType": Object { + "custom_xml_count": 1, + "footer_count": 0, + "header_count": 0, + "types": Object { + "/_rels/.rels": "application/vnd.openxmlformats-package.relationships+xml", + "/docProps/app.xml": "application/vnd.openxmlformats-officedocument.extended-properties+xml", + "/docProps/core.xml": "application/vnd.openxmlformats-package.core-properties+xml", + "/docProps/custom.xml": "application/vnd.openxmlformats-officedocument.custom-properties+xml", + "/word/_rels/document.xml.rels": "application/vnd.openxmlformats-package.relationships+xml", + "/word/comments.xml": "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml", + "/word/commentsExtended.xml": "application/vnd.openxmlformats-officedocument.wordprocessingml.commentsExtended+xml", + "/word/document.xml": "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml", + "/word/fontTable.xml": "application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml", + "/word/numbering.xml": "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml", + "/word/settings.xml": "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml", + "/word/styles.xml": "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml", + }, + "web_extension_count": 1, + }, + "customItemProps": Array [], + "customItemRels": Array [], + "customItems": Array [], + "docProps": Object { + "app": Object {}, + "core": Object { + "config": Object { + "created": null, + "creator": null, + "description": null, + "language": null, + "lastModifiedBy": null, + "modified": null, + "revision": null, + "subject": null, + "title": null, + }, + }, + "custom": Object { + "properties": Object {}, + }, + }, + "document": Object { + "children": Array [ + Object { + "data": Object { + "children": Array [ + Object { + "data": Object { + "author": "bokuweb", + "children": Array [ + Object { + "data": Object { + "children": Array [ + Object { + "data": Object { + "dirty": false, + "fieldCharType": "begin", + }, + "type": "fieldChar", + }, + ], + "runProperty": Object {}, + }, + "type": "run", + }, + Object { + "data": Object { + "children": Array [], + "runProperty": Object { + "fonts": Object { + "hint": "eastAsia", + }, + }, + }, + "type": "run", + }, + Object { + "data": Object { + "children": Array [ + Object { + "data": Object { + "dirty": false, + "fieldCharType": "separate", + }, + "type": "fieldChar", + }, + ], + "runProperty": Object {}, + }, + "type": "run", + }, + Object { + "data": Object { + "children": Array [ + Object { + "data": Object { + "preserveSpace": true, + "text": "H", + }, + "type": "deleteText", + }, + ], + "runProperty": Object { + "fonts": Object { + "hint": "eastAsia", + }, + "style": "a3", + }, + }, + "type": "run", + }, + Object { + "data": Object { + "children": Array [ + Object { + "data": Object { + "preserveSpace": true, + "text": "ello World ", + }, + "type": "deleteText", + }, + ], + "runProperty": Object { + "style": "a3", + }, + }, + "type": "run", + }, + Object { + "data": Object { + "children": Array [ + Object { + "data": Object { + "dirty": false, + "fieldCharType": "end", + }, + "type": "fieldChar", + }, + ], + "runProperty": Object {}, + }, + "type": "run", + }, + ], + "date": "2022-08-09T13:35:00Z", + }, + "type": "delete", + }, + Object { + "data": Object { + "children": Array [ + Object { + "data": Object { + "dirty": false, + "fieldCharType": "begin", + }, + "type": "fieldChar", + }, + ], + "runProperty": Object {}, + }, + "type": "run", + }, + Object { + "data": Object { + "children": Array [], + "runProperty": Object {}, + }, + "type": "run", + }, + Object { + "data": Object { + "children": Array [ + Object { + "data": Object { + "data": Object { + "anchor": false, + "target": "https://example.com/", + }, + "type": "hyperlink", + }, + "type": "instrText", + }, + ], + "runProperty": Object { + "fonts": Object { + "hint": "eastAsia", + }, + }, + }, + "type": "run", + }, + Object { + "data": Object { + "children": Array [], + "runProperty": Object {}, + }, + "type": "run", + }, + Object { + "data": Object { + "children": Array [ + Object { + "data": Object { + "dirty": false, + "fieldCharType": "separate", + }, + "type": "fieldChar", + }, + ], + "runProperty": Object {}, + }, + "type": "run", + }, + Object { + "data": Object { + "children": Array [ + Object { + "data": Object { + "preserveSpace": true, + "text": "Foooooo", + }, + "type": "text", + }, + ], + "runProperty": Object { + "fonts": Object { + "hint": "eastAsia", + }, + "style": "a3", + }, + }, + "type": "run", + }, + Object { + "data": Object { + "children": Array [ + Object { + "data": Object { + "preserveSpace": true, + "text": "ar", + }, + "type": "text", + }, + ], + "runProperty": Object { + "style": "a3", + }, + }, + "type": "run", + }, + Object { + "data": Object { + "children": Array [ + Object { + "data": Object { + "dirty": false, + "fieldCharType": "end", + }, + "type": "fieldChar", + }, + ], + "runProperty": Object {}, + }, + "type": "run", + }, + ], + "hasNumbering": false, + "id": "199D0E21", + "property": Object { + "runProperty": Object {}, + "tabs": Array [], + }, + }, + "type": "paragraph", + }, + Object { + "data": Object { + "children": Array [], + "hasNumbering": false, + "id": "55601D49", + "property": Object { + "runProperty": Object {}, + "tabs": Array [], + }, + }, + "type": "paragraph", + }, + Object { + "data": Object { + "children": Array [ + Object { + "data": Object { + "author": "bokuweb", + "children": Array [ + Object { + "data": Object { + "children": Array [ + Object { + "data": Object { + "dirty": false, + "fieldCharType": "begin", + }, + "type": "fieldChar", + }, + ], + "runProperty": Object {}, + }, + "type": "run", + }, + Object { + "data": Object { + "children": Array [], + "runProperty": Object {}, + }, + "type": "run", + }, + Object { + "data": Object { + "children": Array [ + Object { + "data": Object { + "data": Object { + "anchor": false, + "target": "https://google.com/", + }, + "type": "hyperlink", + }, + "type": "instrText", + }, + ], + "runProperty": Object { + "fonts": Object { + "hint": "eastAsia", + }, + }, + }, + "type": "run", + }, + Object { + "data": Object { + "children": Array [], + "runProperty": Object {}, + }, + "type": "run", + }, + Object { + "data": Object { + "children": Array [ + Object { + "data": Object { + "dirty": false, + "fieldCharType": "separate", + }, + "type": "fieldChar", + }, + ], + "runProperty": Object {}, + }, + "type": "run", + }, + Object { + "data": Object { + "children": Array [ + Object { + "data": Object { + "preserveSpace": true, + "text": "B", + }, + "type": "text", + }, + ], + "runProperty": Object { + "fonts": Object { + "hint": "eastAsia", + }, + "style": "a3", + }, + }, + "type": "run", + }, + Object { + "data": Object { + "children": Array [ + Object { + "data": Object { + "preserveSpace": true, + "text": "ar", + }, + "type": "text", + }, + ], + "runProperty": Object { + "style": "a3", + }, + }, + "type": "run", + }, + Object { + "data": Object { + "children": Array [ + Object { + "data": Object { + "dirty": false, + "fieldCharType": "end", + }, + "type": "fieldChar", + }, + ], + "runProperty": Object {}, + }, + "type": "run", + }, + ], + "date": "2022-08-09T13:51:00Z", + }, + "type": "insert", + }, + ], + "hasNumbering": false, + "id": "32D1F8AE", + "property": Object { + "runProperty": Object { + "del": Object { + "author": "bokuweb", + "children": Array [], + "date": "2022-08-09T14:00:00Z", + }, + "fonts": Object { + "hint": "eastAsia", + }, + }, + "tabs": Array [], + }, + }, + "type": "paragraph", + }, + Object { + "data": Object { + "children": Array [ + Object { + "data": Object { + "author": "bokuweb", + "children": Array [ + Object { + "data": Object { + "children": Array [ + Object { + "data": Object { + "dirty": false, + "fieldCharType": "begin", + }, + "type": "fieldChar", + }, + ], + "runProperty": Object {}, + }, + "type": "run", + }, + Object { + "data": Object { + "children": Array [], + "runProperty": Object {}, + }, + "type": "run", + }, + Object { + "data": Object { + "children": Array [], + "runProperty": Object { + "fonts": Object { + "hint": "eastAsia", + }, + }, + }, + "type": "run", + }, + Object { + "data": Object { + "children": Array [], + "runProperty": Object {}, + }, + "type": "run", + }, + Object { + "data": Object { + "children": Array [ + Object { + "data": Object { + "dirty": false, + "fieldCharType": "separate", + }, + "type": "fieldChar", + }, + ], + "runProperty": Object {}, + }, + "type": "run", + }, + Object { + "data": Object { + "children": Array [ + Object { + "data": Object { + "preserveSpace": true, + "text": "a", + }, + "type": "deleteText", + }, + ], + "runProperty": Object { + "fonts": Object { + "hint": "eastAsia", + }, + "style": "a3", + }, + }, + "type": "run", + }, + Object { + "data": Object { + "children": Array [ + Object { + "data": Object { + "preserveSpace": true, + "text": "aaaa", + }, + "type": "deleteText", + }, + ], + "runProperty": Object { + "style": "a3", + }, + }, + "type": "run", + }, + Object { + "data": Object { + "children": Array [ + Object { + "data": Object { + "dirty": false, + "fieldCharType": "end", + }, + "type": "fieldChar", + }, + ], + "runProperty": Object {}, + }, + "type": "run", + }, + ], + "date": "2022-08-09T14:00:00Z", + }, + "type": "delete", + }, + ], + "hasNumbering": false, + "id": "780E500C", + "property": Object { + "runProperty": Object {}, + "tabs": Array [], + }, + }, + "type": "paragraph", + }, + Object { + "data": Object { + "children": Array [], + "hasNumbering": false, + "id": "732F1243", + "property": Object { + "runProperty": Object { + "fonts": Object { + "hint": "eastAsia", + }, + }, + "tabs": Array [], + }, + }, + "type": "paragraph", + }, + Object { + "data": Object { + "children": Array [ + Object { + "data": Object { + "id": 4, + "name": "_1", + }, + "type": "bookmarkStart", + }, + Object { + "data": Object { + "id": 4, + }, + "type": "bookmarkEnd", + }, + Object { + "data": Object { + "children": Array [ + Object { + "data": Object { + "preserveSpace": true, + "text": "1", + }, + "type": "text", + }, + ], + "runProperty": Object { + "fonts": Object { + "hint": "eastAsia", + }, + }, + }, + "type": "run", + }, + ], + "hasNumbering": false, + "id": "34364387", + "property": Object { + "runProperty": Object { + "fonts": Object { + "hint": "eastAsia", + }, + }, + "style": "1", + "tabs": Array [], + }, + }, + "type": "paragraph", + }, + ], + "hasNumbering": false, + "sectionProperty": Object { + "columns": 425, + "docGrid": Object { + "charSpace": null, + "gridType": "lines", + "linePitch": 360, + }, + "pageMargin": Object { + "bottom": 1701, + "footer": 992, + "gutter": 0, + "header": 851, + "left": 1701, + "right": 1701, + "top": 1985, + }, + "pageSize": Object { + "h": 16838, + "orient": null, + "w": 11906, + }, + "titlePg": false, + }, + }, + "documentRels": Object { + "customXmlCount": 0, + "footerCount": 0, + "hasComments": false, + "hasNumberings": false, + "headerCount": 0, + "hyperlinks": Array [], + "images": Array [], + }, + "fontTable": Object {}, + "hyperlinks": Array [ + Array [ + "rId5", + "https://example.com/", + "External", + ], + ], + "images": Array [], + "media": Array [], + "numberings": Object { + "abstractNums": Array [], + "numberings": Array [], + }, + "rels": Object { + "rels": Array [ + Array [ + "http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties", + "rId1", + "docProps/core.xml", + ], + Array [ + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties", + "rId2", + "docProps/app.xml", + ], + Array [ + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument", + "rId3", + "word/document.xml", + ], + Array [ + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties", + "rId4", + "docProps/custom.xml", + ], + ], + }, + "settings": Object { + "defaultTabStop": 840, + "docId": "1D08889F-3E41-C046-8805-654C0B247DE3", + "docVars": Array [], + "evenAndOddHeaders": false, + "zoom": 100, + }, + "styles": Object { + "docDefaults": Object { + "runPropertyDefault": Object { + "runProperty": Object { + "fonts": Object { + "asciiTheme": "minorHAnsi", + "csTheme": "minorBidi", + "eastAsiaTheme": "minorEastAsia", + "hiAnsiTheme": "minorHAnsi", + }, + "sz": 21, + "szCs": 21, + }, + }, + }, + "styles": Array [ + Object { + "basedOn": null, + "name": "Normal", + "next": null, + "paragraphProperty": Object { + "alignment": "both", + "runProperty": Object {}, + "tabs": Array [], + }, + "runProperty": Object {}, + "styleId": "a", + "styleType": "paragraph", + "tableCellProperty": Object { + "borders": null, + "gridSpan": null, + "shading": null, + "textDirection": null, + "verticalAlign": null, + "verticalMerge": null, + "width": null, + }, + "tableProperty": Object { + "borders": Object { + "bottom": Object { + "borderType": "single", + "color": "000000", + "position": "bottom", + "size": 2, + "space": 0, + }, + "insideH": Object { + "borderType": "single", + "color": "000000", + "position": "insideH", + "size": 2, + "space": 0, + }, + "insideV": Object { + "borderType": "single", + "color": "000000", + "position": "insideV", + "size": 2, + "space": 0, + }, + "left": Object { + "borderType": "single", + "color": "000000", + "position": "left", + "size": 2, + "space": 0, + }, + "right": Object { + "borderType": "single", + "color": "000000", + "position": "right", + "size": 2, + "space": 0, + }, + "top": Object { + "borderType": "single", + "color": "000000", + "position": "top", + "size": 2, + "space": 0, + }, + }, + "justification": "left", + "width": Object { + "width": 0, + "widthType": "auto", + }, + }, + }, + Object { + "basedOn": "a", + "name": "heading 1", + "next": null, + "paragraphProperty": Object { + "keepNext": true, + "outlineLvl": 0, + "runProperty": Object {}, + "tabs": Array [], + }, + "runProperty": Object { + "fonts": Object { + "asciiTheme": "majorHAnsi", + "csTheme": "majorBidi", + "eastAsiaTheme": "majorEastAsia", + "hiAnsiTheme": "majorHAnsi", + }, + "sz": 24, + "szCs": 24, + }, + "styleId": "1", + "styleType": "paragraph", + "tableCellProperty": Object { + "borders": null, + "gridSpan": null, + "shading": null, + "textDirection": null, + "verticalAlign": null, + "verticalMerge": null, + "width": null, + }, + "tableProperty": Object { + "borders": Object { + "bottom": Object { + "borderType": "single", + "color": "000000", + "position": "bottom", + "size": 2, + "space": 0, + }, + "insideH": Object { + "borderType": "single", + "color": "000000", + "position": "insideH", + "size": 2, + "space": 0, + }, + "insideV": Object { + "borderType": "single", + "color": "000000", + "position": "insideV", + "size": 2, + "space": 0, + }, + "left": Object { + "borderType": "single", + "color": "000000", + "position": "left", + "size": 2, + "space": 0, + }, + "right": Object { + "borderType": "single", + "color": "000000", + "position": "right", + "size": 2, + "space": 0, + }, + "top": Object { + "borderType": "single", + "color": "000000", + "position": "top", + "size": 2, + "space": 0, + }, + }, + "justification": "left", + "width": Object { + "width": 0, + "widthType": "auto", + }, + }, + }, + Object { + "basedOn": null, + "name": "Default Paragraph Font", + "next": null, + "paragraphProperty": Object { + "runProperty": Object {}, + "tabs": Array [], + }, + "runProperty": Object {}, + "styleId": "a0", + "styleType": "character", + "tableCellProperty": Object { + "borders": null, + "gridSpan": null, + "shading": null, + "textDirection": null, + "verticalAlign": null, + "verticalMerge": null, + "width": null, + }, + "tableProperty": Object { + "borders": Object { + "bottom": Object { + "borderType": "single", + "color": "000000", + "position": "bottom", + "size": 2, + "space": 0, + }, + "insideH": Object { + "borderType": "single", + "color": "000000", + "position": "insideH", + "size": 2, + "space": 0, + }, + "insideV": Object { + "borderType": "single", + "color": "000000", + "position": "insideV", + "size": 2, + "space": 0, + }, + "left": Object { + "borderType": "single", + "color": "000000", + "position": "left", + "size": 2, + "space": 0, + }, + "right": Object { + "borderType": "single", + "color": "000000", + "position": "right", + "size": 2, + "space": 0, + }, + "top": Object { + "borderType": "single", + "color": "000000", + "position": "top", + "size": 2, + "space": 0, + }, + }, + "justification": "left", + "width": Object { + "width": 0, + "widthType": "auto", + }, + }, + }, + Object { + "basedOn": null, + "name": "Normal Table", + "next": null, + "paragraphProperty": Object { + "runProperty": Object {}, + "tabs": Array [], + }, + "runProperty": Object {}, + "styleId": "a1", + "styleType": "table", + "tableCellProperty": Object { + "borders": null, + "gridSpan": null, + "shading": null, + "textDirection": null, + "verticalAlign": null, + "verticalMerge": null, + "width": null, + }, + "tableProperty": Object { + "borders": Object { + "bottom": null, + "insideH": null, + "insideV": null, + "left": null, + "right": null, + "top": null, + }, + "justification": "left", + "margins": Object { + "bottom": Object { + "val": 0, + "widthType": "dxa", + }, + "left": Object { + "val": 108, + "widthType": "dxa", + }, + "right": Object { + "val": 108, + "widthType": "dxa", + }, + "top": Object { + "val": 0, + "widthType": "dxa", + }, + }, + "width": Object { + "width": 0, + "widthType": "auto", + }, + }, + }, + Object { + "basedOn": null, + "name": "No List", + "next": null, + "paragraphProperty": Object { + "runProperty": Object {}, + "tabs": Array [], + }, + "runProperty": Object {}, + "styleId": "a2", + "styleType": "numbering", + "tableCellProperty": Object { + "borders": null, + "gridSpan": null, + "shading": null, + "textDirection": null, + "verticalAlign": null, + "verticalMerge": null, + "width": null, + }, + "tableProperty": Object { + "borders": Object { + "bottom": Object { + "borderType": "single", + "color": "000000", + "position": "bottom", + "size": 2, + "space": 0, + }, + "insideH": Object { + "borderType": "single", + "color": "000000", + "position": "insideH", + "size": 2, + "space": 0, + }, + "insideV": Object { + "borderType": "single", + "color": "000000", + "position": "insideV", + "size": 2, + "space": 0, + }, + "left": Object { + "borderType": "single", + "color": "000000", + "position": "left", + "size": 2, + "space": 0, + }, + "right": Object { + "borderType": "single", + "color": "000000", + "position": "right", + "size": 2, + "space": 0, + }, + "top": Object { + "borderType": "single", + "color": "000000", + "position": "top", + "size": 2, + "space": 0, + }, + }, + "justification": "left", + "width": Object { + "width": 0, + "widthType": "auto", + }, + }, + }, + Object { + "basedOn": "a0", + "name": "Hyperlink", + "next": null, + "paragraphProperty": Object { + "runProperty": Object {}, + "tabs": Array [], + }, + "runProperty": Object { + "color": "0563C1", + "underline": "single", + }, + "styleId": "a3", + "styleType": "character", + "tableCellProperty": Object { + "borders": null, + "gridSpan": null, + "shading": null, + "textDirection": null, + "verticalAlign": null, + "verticalMerge": null, + "width": null, + }, + "tableProperty": Object { + "borders": Object { + "bottom": Object { + "borderType": "single", + "color": "000000", + "position": "bottom", + "size": 2, + "space": 0, + }, + "insideH": Object { + "borderType": "single", + "color": "000000", + "position": "insideH", + "size": 2, + "space": 0, + }, + "insideV": Object { + "borderType": "single", + "color": "000000", + "position": "insideV", + "size": 2, + "space": 0, + }, + "left": Object { + "borderType": "single", + "color": "000000", + "position": "left", + "size": 2, + "space": 0, + }, + "right": Object { + "borderType": "single", + "color": "000000", + "position": "right", + "size": 2, + "space": 0, + }, + "top": Object { + "borderType": "single", + "color": "000000", + "position": "top", + "size": 2, + "space": 0, + }, + }, + "justification": "left", + "width": Object { + "width": 0, + "widthType": "auto", + }, + }, + }, + Object { + "basedOn": "a0", + "name": "Unresolved Mention", + "next": null, + "paragraphProperty": Object { + "runProperty": Object {}, + "tabs": Array [], + }, + "runProperty": Object { + "color": "605E5C", + }, + "styleId": "a4", + "styleType": "character", + "tableCellProperty": Object { + "borders": null, + "gridSpan": null, + "shading": null, + "textDirection": null, + "verticalAlign": null, + "verticalMerge": null, + "width": null, + }, + "tableProperty": Object { + "borders": Object { + "bottom": Object { + "borderType": "single", + "color": "000000", + "position": "bottom", + "size": 2, + "space": 0, + }, + "insideH": Object { + "borderType": "single", + "color": "000000", + "position": "insideH", + "size": 2, + "space": 0, + }, + "insideV": Object { + "borderType": "single", + "color": "000000", + "position": "insideV", + "size": 2, + "space": 0, + }, + "left": Object { + "borderType": "single", + "color": "000000", + "position": "left", + "size": 2, + "space": 0, + }, + "right": Object { + "borderType": "single", + "color": "000000", + "position": "right", + "size": 2, + "space": 0, + }, + "top": Object { + "borderType": "single", + "color": "000000", + "position": "top", + "size": 2, + "space": 0, + }, + }, + "justification": "left", + "width": Object { + "width": 0, + "widthType": "auto", + }, + }, + }, + Object { + "basedOn": null, + "name": "Revision", + "next": null, + "paragraphProperty": Object { + "runProperty": Object {}, + "tabs": Array [], + }, + "runProperty": Object {}, + "styleId": "a5", + "styleType": "paragraph", + "tableCellProperty": Object { + "borders": null, + "gridSpan": null, + "shading": null, + "textDirection": null, + "verticalAlign": null, + "verticalMerge": null, + "width": null, + }, + "tableProperty": Object { + "borders": Object { + "bottom": Object { + "borderType": "single", + "color": "000000", + "position": "bottom", + "size": 2, + "space": 0, + }, + "insideH": Object { + "borderType": "single", + "color": "000000", + "position": "insideH", + "size": 2, + "space": 0, + }, + "insideV": Object { + "borderType": "single", + "color": "000000", + "position": "insideV", + "size": 2, + "space": 0, + }, + "left": Object { + "borderType": "single", + "color": "000000", + "position": "left", + "size": 2, + "space": 0, + }, + "right": Object { + "borderType": "single", + "color": "000000", + "position": "right", + "size": 2, + "space": 0, + }, + "top": Object { + "borderType": "single", + "color": "000000", + "position": "top", + "size": 2, + "space": 0, + }, + }, + "justification": "left", + "width": Object { + "width": 0, + "widthType": "auto", + }, + }, + }, + Object { + "basedOn": "a0", + "name": "FollowedHyperlink", + "next": null, + "paragraphProperty": Object { + "runProperty": Object {}, + "tabs": Array [], + }, + "runProperty": Object { + "color": "954F72", + "underline": "single", + }, + "styleId": "a6", + "styleType": "character", + "tableCellProperty": Object { + "borders": null, + "gridSpan": null, + "shading": null, + "textDirection": null, + "verticalAlign": null, + "verticalMerge": null, + "width": null, + }, + "tableProperty": Object { + "borders": Object { + "bottom": Object { + "borderType": "single", + "color": "000000", + "position": "bottom", + "size": 2, + "space": 0, + }, + "insideH": Object { + "borderType": "single", + "color": "000000", + "position": "insideH", + "size": 2, + "space": 0, + }, + "insideV": Object { + "borderType": "single", + "color": "000000", + "position": "insideV", + "size": 2, + "space": 0, + }, + "left": Object { + "borderType": "single", + "color": "000000", + "position": "left", + "size": 2, + "space": 0, + }, + "right": Object { + "borderType": "single", + "color": "000000", + "position": "right", + "size": 2, + "space": 0, + }, + "top": Object { + "borderType": "single", + "color": "000000", + "position": "top", + "size": 2, + "space": 0, + }, + }, + "justification": "left", + "width": Object { + "width": 0, + "widthType": "auto", + }, + }, + }, + Object { + "basedOn": "a0", + "name": "見出し 1 (文字)", + "next": null, + "paragraphProperty": Object { + "runProperty": Object {}, + "tabs": Array [], + }, + "runProperty": Object { + "fonts": Object { + "asciiTheme": "majorHAnsi", + "csTheme": "majorBidi", + "eastAsiaTheme": "majorEastAsia", + "hiAnsiTheme": "majorHAnsi", + }, + "sz": 24, + "szCs": 24, + }, + "styleId": "10", + "styleType": "character", + "tableCellProperty": Object { + "borders": null, + "gridSpan": null, + "shading": null, + "textDirection": null, + "verticalAlign": null, + "verticalMerge": null, + "width": null, + }, + "tableProperty": Object { + "borders": Object { + "bottom": Object { + "borderType": "single", + "color": "000000", + "position": "bottom", + "size": 2, + "space": 0, + }, + "insideH": Object { + "borderType": "single", + "color": "000000", + "position": "insideH", + "size": 2, + "space": 0, + }, + "insideV": Object { + "borderType": "single", + "color": "000000", + "position": "insideV", + "size": 2, + "space": 0, + }, + "left": Object { + "borderType": "single", + "color": "000000", + "position": "left", + "size": 2, + "space": 0, + }, + "right": Object { + "borderType": "single", + "color": "000000", + "position": "right", + "size": 2, + "space": 0, + }, + "top": Object { + "borderType": "single", + "color": "000000", + "position": "top", + "size": 2, + "space": 0, + }, + }, + "justification": "left", + "width": Object { + "width": 0, + "widthType": "auto", + }, + }, + }, + ], + }, + "taskpanes": null, + "taskpanesRels": Object { + "rels": Array [], + }, + "themes": Array [ + Object { + "fontSchema": Object { + "majorFont": Object { + "cs": "", + "ea": "", + "fonts": Array [ + Object { + "script": "Jpan", + "typeface": "游ゴシック Light", + }, + Object { + "script": "Hang", + "typeface": "맑은 고딕", + }, + Object { + "script": "Hans", + "typeface": "等线 Light", + }, + Object { + "script": "Hant", + "typeface": "新細明體", + }, + Object { + "script": "Arab", + "typeface": "Times New Roman", + }, + Object { + "script": "Hebr", + "typeface": "Times New Roman", + }, + Object { + "script": "Thai", + "typeface": "Angsana New", + }, + Object { + "script": "Ethi", + "typeface": "Nyala", + }, + Object { + "script": "Beng", + "typeface": "Vrinda", + }, + Object { + "script": "Gujr", + "typeface": "Shruti", + }, + Object { + "script": "Khmr", + "typeface": "MoolBoran", + }, + Object { + "script": "Knda", + "typeface": "Tunga", + }, + Object { + "script": "Guru", + "typeface": "Raavi", + }, + Object { + "script": "Cans", + "typeface": "Euphemia", + }, + Object { + "script": "Cher", + "typeface": "Plantagenet Cherokee", + }, + Object { + "script": "Yiii", + "typeface": "Microsoft Yi Baiti", + }, + Object { + "script": "Tibt", + "typeface": "Microsoft Himalaya", + }, + Object { + "script": "Thaa", + "typeface": "MV Boli", + }, + Object { + "script": "Deva", + "typeface": "Mangal", + }, + Object { + "script": "Telu", + "typeface": "Gautami", + }, + Object { + "script": "Taml", + "typeface": "Latha", + }, + Object { + "script": "Syrc", + "typeface": "Estrangelo Edessa", + }, + Object { + "script": "Orya", + "typeface": "Kalinga", + }, + Object { + "script": "Mlym", + "typeface": "Kartika", + }, + Object { + "script": "Laoo", + "typeface": "DokChampa", + }, + Object { + "script": "Sinh", + "typeface": "Iskoola Pota", + }, + Object { + "script": "Mong", + "typeface": "Mongolian Baiti", + }, + Object { + "script": "Viet", + "typeface": "Times New Roman", + }, + Object { + "script": "Uigh", + "typeface": "Microsoft Uighur", + }, + Object { + "script": "Geor", + "typeface": "Sylfaen", + }, + Object { + "script": "Armn", + "typeface": "Arial", + }, + Object { + "script": "Bugi", + "typeface": "Leelawadee UI", + }, + Object { + "script": "Bopo", + "typeface": "Microsoft JhengHei", + }, + Object { + "script": "Java", + "typeface": "Javanese Text", + }, + Object { + "script": "Lisu", + "typeface": "Segoe UI", + }, + Object { + "script": "Mymr", + "typeface": "Myanmar Text", + }, + Object { + "script": "Nkoo", + "typeface": "Ebrima", + }, + Object { + "script": "Olck", + "typeface": "Nirmala UI", + }, + Object { + "script": "Osma", + "typeface": "Ebrima", + }, + Object { + "script": "Phag", + "typeface": "Phagspa", + }, + Object { + "script": "Syrn", + "typeface": "Estrangelo Edessa", + }, + Object { + "script": "Syrj", + "typeface": "Estrangelo Edessa", + }, + Object { + "script": "Syre", + "typeface": "Estrangelo Edessa", + }, + Object { + "script": "Sora", + "typeface": "Nirmala UI", + }, + Object { + "script": "Tale", + "typeface": "Microsoft Tai Le", + }, + Object { + "script": "Talu", + "typeface": "Microsoft New Tai Lue", + }, + Object { + "script": "Tfng", + "typeface": "Ebrima", + }, + ], + "latin": "游ゴシック Light", + }, + "minorFont": Object { + "cs": "", + "ea": "", + "fonts": Array [ + Object { + "script": "Jpan", + "typeface": "游明朝", + }, + Object { + "script": "Hang", + "typeface": "맑은 고딕", + }, + Object { + "script": "Hans", + "typeface": "等线", + }, + Object { + "script": "Hant", + "typeface": "新細明體", + }, + Object { + "script": "Arab", + "typeface": "Arial", + }, + Object { + "script": "Hebr", + "typeface": "Arial", + }, + Object { + "script": "Thai", + "typeface": "Cordia New", + }, + Object { + "script": "Ethi", + "typeface": "Nyala", + }, + Object { + "script": "Beng", + "typeface": "Vrinda", + }, + Object { + "script": "Gujr", + "typeface": "Shruti", + }, + Object { + "script": "Khmr", + "typeface": "DaunPenh", + }, + Object { + "script": "Knda", + "typeface": "Tunga", + }, + Object { + "script": "Guru", + "typeface": "Raavi", + }, + Object { + "script": "Cans", + "typeface": "Euphemia", + }, + Object { + "script": "Cher", + "typeface": "Plantagenet Cherokee", + }, + Object { + "script": "Yiii", + "typeface": "Microsoft Yi Baiti", + }, + Object { + "script": "Tibt", + "typeface": "Microsoft Himalaya", + }, + Object { + "script": "Thaa", + "typeface": "MV Boli", + }, + Object { + "script": "Deva", + "typeface": "Mangal", + }, + Object { + "script": "Telu", + "typeface": "Gautami", + }, + Object { + "script": "Taml", + "typeface": "Latha", + }, + Object { + "script": "Syrc", + "typeface": "Estrangelo Edessa", + }, + Object { + "script": "Orya", + "typeface": "Kalinga", + }, + Object { + "script": "Mlym", + "typeface": "Kartika", + }, + Object { + "script": "Laoo", + "typeface": "DokChampa", + }, + Object { + "script": "Sinh", + "typeface": "Iskoola Pota", + }, + Object { + "script": "Mong", + "typeface": "Mongolian Baiti", + }, + Object { + "script": "Viet", + "typeface": "Arial", + }, + Object { + "script": "Uigh", + "typeface": "Microsoft Uighur", + }, + Object { + "script": "Geor", + "typeface": "Sylfaen", + }, + Object { + "script": "Armn", + "typeface": "Arial", + }, + Object { + "script": "Bugi", + "typeface": "Leelawadee UI", + }, + Object { + "script": "Bopo", + "typeface": "Microsoft JhengHei", + }, + Object { + "script": "Java", + "typeface": "Javanese Text", + }, + Object { + "script": "Lisu", + "typeface": "Segoe UI", + }, + Object { + "script": "Mymr", + "typeface": "Myanmar Text", + }, + Object { + "script": "Nkoo", + "typeface": "Ebrima", + }, + Object { + "script": "Olck", + "typeface": "Nirmala UI", + }, + Object { + "script": "Osma", + "typeface": "Ebrima", + }, + Object { + "script": "Phag", + "typeface": "Phagspa", + }, + Object { + "script": "Syrn", + "typeface": "Estrangelo Edessa", + }, + Object { + "script": "Syrj", + "typeface": "Estrangelo Edessa", + }, + Object { + "script": "Syre", + "typeface": "Estrangelo Edessa", + }, + Object { + "script": "Sora", + "typeface": "Nirmala UI", + }, + Object { + "script": "Tale", + "typeface": "Microsoft Tai Le", + }, + Object { + "script": "Talu", + "typeface": "Microsoft New Tai Lue", + }, + Object { + "script": "Tfng", + "typeface": "Ebrima", + }, + ], + "latin": "游明朝", + }, + }, + }, + ], + "webExtensions": Array [], + "webSettings": Object { + "divs": Array [], + }, +} +`; + exports[`reader should read image inline and anchor docx 1`] = ` Object { "comments": Object { @@ -26740,7 +28617,7 @@ Object { Object { "data": Object { "dirty": false, - "field_char_type": "Begin", + "fieldCharType": "begin", }, "type": "fieldChar", }, @@ -26780,7 +28657,7 @@ Object { Object { "data": Object { "dirty": false, - "field_char_type": "Separate", + "fieldCharType": "separate", }, "type": "fieldChar", }, @@ -26820,7 +28697,7 @@ Object { Object { "data": Object { "dirty": false, - "field_char_type": "End", + "fieldCharType": "end", }, "type": "fieldChar", }, @@ -26860,7 +28737,7 @@ Object { Object { "data": Object { "dirty": false, - "field_char_type": "Begin", + "fieldCharType": "begin", }, "type": "fieldChar", }, @@ -26908,7 +28785,7 @@ Object { Object { "data": Object { "dirty": false, - "field_char_type": "Separate", + "fieldCharType": "separate", }, "type": "fieldChar", }, @@ -26956,7 +28833,7 @@ Object { Object { "data": Object { "dirty": false, - "field_char_type": "End", + "fieldCharType": "end", }, "type": "fieldChar", }, @@ -45432,7 +47309,7 @@ Object { Object { "data": Object { "dirty": false, - "field_char_type": "Begin", + "fieldCharType": "begin", }, "type": "fieldChar", }, @@ -45447,17 +47324,17 @@ Object { Object { "data": Object { "data": Object { - "caption_label": null, - "heading_styles_range": Array [ + "captionLabel": null, + "headingStylesRange": Array [ 1, 3, ], - "hide_tab_and_page_numbers_in_webview": true, + "hideTabAndPageNumbersInWebview": true, "hyperlink": true, - "preserve_new_line": false, - "preserve_tab": false, - "styles_with_levels": Array [], - "use_applied_paragraph_line_level": true, + "preserveNewLine": false, + "preserveTab": false, + "stylesWithLevels": Array [], + "useAppliedParagraphLineLevel": true, }, "type": "toc", }, @@ -45474,7 +47351,7 @@ Object { Object { "data": Object { "dirty": false, - "field_char_type": "Separate", + "fieldCharType": "separate", }, "type": "fieldChar", }, @@ -45559,7 +47436,7 @@ Object { Object { "data": Object { "dirty": false, - "field_char_type": "Begin", + "fieldCharType": "begin", }, "type": "fieldChar", }, @@ -45575,8 +47452,8 @@ Object { "data": Object { "data": Object { "hyperlink": true, - "page_ref": "PAGEREF", - "relative_position": false, + "pageRef": "PAGEREF", + "relativePosition": false, }, "type": "pageref", }, @@ -45600,7 +47477,7 @@ Object { Object { "data": Object { "dirty": false, - "field_char_type": "Separate", + "fieldCharType": "separate", }, "type": "fieldChar", }, @@ -45630,7 +47507,7 @@ Object { Object { "data": Object { "dirty": false, - "field_char_type": "End", + "fieldCharType": "end", }, "type": "fieldChar", }, @@ -45743,7 +47620,7 @@ Object { Object { "data": Object { "dirty": false, - "field_char_type": "Begin", + "fieldCharType": "begin", }, "type": "fieldChar", }, @@ -45759,8 +47636,8 @@ Object { "data": Object { "data": Object { "hyperlink": true, - "page_ref": "PAGEREF", - "relative_position": false, + "pageRef": "PAGEREF", + "relativePosition": false, }, "type": "pageref", }, @@ -45784,7 +47661,7 @@ Object { Object { "data": Object { "dirty": false, - "field_char_type": "Separate", + "fieldCharType": "separate", }, "type": "fieldChar", }, @@ -45814,7 +47691,7 @@ Object { Object { "data": Object { "dirty": false, - "field_char_type": "End", + "fieldCharType": "end", }, "type": "fieldChar", }, @@ -45927,7 +47804,7 @@ Object { Object { "data": Object { "dirty": false, - "field_char_type": "Begin", + "fieldCharType": "begin", }, "type": "fieldChar", }, @@ -45943,8 +47820,8 @@ Object { "data": Object { "data": Object { "hyperlink": true, - "page_ref": "PAGEREF", - "relative_position": false, + "pageRef": "PAGEREF", + "relativePosition": false, }, "type": "pageref", }, @@ -45968,7 +47845,7 @@ Object { Object { "data": Object { "dirty": false, - "field_char_type": "Separate", + "fieldCharType": "separate", }, "type": "fieldChar", }, @@ -45998,7 +47875,7 @@ Object { Object { "data": Object { "dirty": false, - "field_char_type": "End", + "fieldCharType": "end", }, "type": "fieldChar", }, @@ -46111,7 +47988,7 @@ Object { Object { "data": Object { "dirty": false, - "field_char_type": "Begin", + "fieldCharType": "begin", }, "type": "fieldChar", }, @@ -46127,8 +48004,8 @@ Object { "data": Object { "data": Object { "hyperlink": true, - "page_ref": "PAGEREF", - "relative_position": false, + "pageRef": "PAGEREF", + "relativePosition": false, }, "type": "pageref", }, @@ -46152,7 +48029,7 @@ Object { Object { "data": Object { "dirty": false, - "field_char_type": "Separate", + "fieldCharType": "separate", }, "type": "fieldChar", }, @@ -46182,7 +48059,7 @@ Object { Object { "data": Object { "dirty": false, - "field_char_type": "End", + "fieldCharType": "end", }, "type": "fieldChar", }, @@ -46225,7 +48102,7 @@ Object { Object { "data": Object { "dirty": false, - "field_char_type": "End", + "fieldCharType": "end", }, "type": "fieldChar", }, @@ -52327,7 +54204,7 @@ Object { Object { "data": Object { "dirty": false, - "field_char_type": "Begin", + "fieldCharType": "begin", }, "type": "fieldChar", }, @@ -52357,7 +54234,7 @@ Object { Object { "data": Object { "dirty": false, - "field_char_type": "End", + "fieldCharType": "end", }, "type": "fieldChar", }, diff --git a/docx-wasm/test/index.test.js b/docx-wasm/test/index.test.js index 75b7165..76b85cc 100644 --- a/docx-wasm/test/index.test.js +++ b/docx-wasm/test/index.test.js @@ -159,6 +159,12 @@ describe("reader", () => { const json = w.readDocx(buffer); expect(json).toMatchSnapshot(); }); + + test("should read hyperlink instr", () => { + const buffer = readFileSync("../fixtures/instr_links/instr_links.docx"); + const json = w.readDocx(buffer); + expect(json).toMatchSnapshot(); + }); }); describe("writer", () => { diff --git a/fixtures/instr_links/instr_links.docx b/fixtures/instr_links/instr_links.docx new file mode 100644 index 0000000000000000000000000000000000000000..8973eae89d1dfe91d9967260f4df89a80a4db524 GIT binary patch literal 15057 zcmbt*1yo&0*7XB|OK_Lq?rwqL9^9Sa?h@SH-JRg>?!nz9NN|@x@Sk+gq{DpO)6?sR zb!)wQAGK?9&Z$#%t9D6?gS(_-GV_ND*Gm`XT4W{6vwH zH8oe0=nW>2-dOFdWIg!38i)N7k-P!TFc05q3Yj4N1gF4fmP_OVz)|1Gz^kUtGay4? z=%^l?02Q0C!+#lT9YixDJbnYKg;k`tjq#hw`YAn!on;^dJ}%+Ap`%(-O}=sWYme8k z1_{KDEbk){RB!v!+UpccaeH`L8%LuiK7M(<@2AYy*sI1u>3$C>{p>!dXV(D$udN^z ze*5sR0_@p+S~mJ-wzR)_>}c;y_x$<#50Cw*|A+f=qcH3Dp6g2i0|3xJ>(l%|`EPD7 zjqWt*ri0-<@pXq8#)M9-0;)f-HV78-s`C1Ye~_YuyqnRpZ?S&|g~{>e*U)_O^DG=E~+~|G?s%q(cxD&lbmj z?m|C0+#eXmcKYV@f7jtkBPHRy>EMOR`CI_OG|KSqy4h;<_|{s30Lev+NjNYI%b8tB zb*XJP+6&1Avr&@Qr=9SM8<7SCkR?{q@$eL0M9EEuA>oSU_(V~C(wA|GNeO&|nTA#r zxix^k6_Hi)@SF^yu$&1il2#7h_l0`jnS^tt26y1UHX!_qfBv5at{o4%OUttv z$)3%K`zJ_0jrlT`kN`if*SPI1xA^LCer9Quy3Wn-0vPtK!SVwI%$w6I&d)RR(6Cx z_VkKDo*g0;XA7{&fc^Gt;7_<`FOda zV@f}8uXD15FubRo4OO;Kx4p=ZLvN6Vle2s$g0>93vrRqi1c#= zea!fBfX4p4{an-Be!o4oxM_4SJe+olG_r{3HQD+1;C=AF4n@dkV|}pH`^`fCpey4y zd7o}R+j;{80QeEjKOuCitp2Var^$_2Ako9O5uU+Oe!;TLmVU=%?I)Xs>nSu?$BlJj zrn_ECy%dHSe&h$f-p7AR=Zw&|V6Y%9_5E^$b@Pms$3G-s7Fi8OhLh89Q)U3FW^iV) zZ09il*6J!Ag+QngWVi#L?15kly{=3*D8*re{o0D$RX{+Q2Ge)oFDCIc&V_68)<_#9 zjy4wO%Xi9yu3Al16UGySZ#SkbXK~HL(C5p8ayE4LoM|kSvYG6T(}R>sJ!;=7fmTx=C=@7Xuz?gTB1%oJ_~d8{W^sa_~IT zBK#UGdX_f&e-|xb(UMZnz0&VmWEubbZS4{;g-o)TXA>}F5CJ^rTzXx8kokfI|ClEm z08t!O9ca|Y1uivL5^~>r<-X;H$$iu5G&ZjjF%(7YN~T#*8W2rR^R*_zLb$sk0Qlh3 zS0)9-TO&|Z*ywJb#JxarkU1e^Iw?Bi1%#p0Der{LhbVI`rD6v@T@)ti zN-m^I0XagjcVe&&7Unbn{F_L!VWX=t3(-iZfl_ru@Im&dEb14X3hcERnjJF_?_~|T zN|_GhEK+K32ZB`-cbq9t;$_=Cu)b(%tj4~F^`mOh^^8ue{tTJGhq$S+OW2Ig18l3% zDCIf~BV8cDpm-q&w^`L*iefRQ6Gz!ynql@qv#*nZu;zlbq#?{(sbIQ^(qlRZ;9e&- zdqR6qAEEtl`|aUIed7@#7z0FH<~}%Ajbfi^Rau=Hoa=N}ATDZYRO9+ymq|c0z>Wid z&+n_9KzR1CwZLcoN-aHi@L?9{`xxc51b*5;U6T9s3Bt- z!sj^feV%k9{=2%t^TbE~iIrctKPXG>+6buSk19=a~ zD7Y#xIG1-)vBmyM!*L=VKLvQi4dy#GPOEyY)HoRgYxd*1Yw`^{M|(pYxvH(6pCbO% z$5(`9iQ&Gg{@*V~?mvV^*~<$u%>)NHbyK$`wz=7+zt=5I6^txD6sUqH9o0t~tEO6y zUQ8ct@YXH~%Z1Y%nT(lsRnaGv7z*X6gfFzhqJ8th*EG}_PO!gH`(CU%?(1OOP5L@H zd~H?GXEXkx4E~|oAch=_dQ_Kq-% zeeNP0AUR18!)g-odQ~63wjm8E6ldEDqLAQ~jCxx0h$8(~MxJl`ab4%>=-}}#f+1EW zkNO(FDc?9ybfVw$zP3UM`vW9%eDn5NL%be^V3VDdJu(o_5WP2ri%6NF? z1yFLf3hx6sb#nJWAIIvc8?(3Nae!co1iWdnc9~2jY2^WOGT+n@(_YIoFH4s=aAD15 zhym)`&$gF^CHLgQLb>n#*M{J)+!&mu5zfWJ)f4=&Zv&(ZGE>6?5}r8tMjtmJ5?M}m zAtd@O?riHHYMYyv%ugo3D#5@TKT3fh00 zw*EfJ4|0Q4u;6a*i3bG$R!M(PJ-~zk21AKdv*meig0W|D0Ee6`K?+WdK(`={Cp$xSGcLQ5JMk^ zhZ#4MItTjSN2nBWX%8YsXB78=YbaRZMw1Qf?Cj$?#xTBDKo@rQm5tuC{RYYSZR+%) zIb!Gy!8$=VyApuFu(JwcY$ox7V4MlHkB$G3Ki)T%j$spzFWUG6i#T5iHDnl*9P8z| z+B?xe3=n4}G7nw}w7<)BSsFiOylJkqkG_U2E|LSN6oyjE`6$1*IL}IMsyOmzaZvzuyds%B;&)? z+m-1DuF?iG^3uY;&lgQTB?Zi`K%t7A-{CfO7EwqT2!eOR)PxGK)n-E>vn!!7y(ap+ z04AV}Si<{N*d9ZwnH=El2Fr6EdjkxGwnHM)O)V157v=qHSEILTvaUwKiWa?t95ovVN-8-IfV!RQ8 z*(=*x2yY@*4G!3Ub)gEKJP+@T4-w+hfFdp2HTI~)dOsYIQT!z8V%;-jG zgD7Ug>*i)A>fCzH;7iG6--{Yyk_#i*d|2Dy+Q+VzokMlgBzLY25uL@zOtJ$?zLY@x zB5NZ7HyBE5d6qKnx>)lu4+||})-g@z#)@xHe3*--zKsA2XPB=hLXdRGXQOR?CXFM! z7>jVJ+@YXsEAZ;PYBFumzdDPv^zFj2RINr8we1IqmJn-&x}4WE4_;bvM`1V~HZqi% zGo9vsA0+Hd5<-Lmjzd$#V$AI0W+rf8el*Q)QiGWj$MN_EJGvR(elMXn_0c)sEed!!b!Qv9SA6FgYn8qSG-18cK78|b_f|BCQg30y_tVL{>9RGTw z9j6{!hDHrVEip9*X5)6q)~_Bl?82xzS7&j_H}cg6e@>y^kriCG)n`kixdvkhzni0W zI(x`f7T4C$4)nI>^eyH}`C$*r3rJGG?~;>hwOIpPU>9Ltn(4X{kUKl?GzLz})g-U;Vs*WG!V$adp++3>m)qS@hG~V059j3F$JgkEw2CoZP;HDysf^Sow0?X?au`N zS4((GOBPFP@NQb#Po3iz9PwrY_F+weuBNg?OK-&L$6}f4=B0CaWgV7#AMfBqC(g4i zqU^#w zV4Vu0rdta|8T$Mcmqg8Y8oEmK<@FI=hU$*AAFOMfq@4OP;|aj?PQ56$L2_Gcu|4?h zF5SG^mMB#zm?HQ-a)fa?V|1Qkd0WH1r`=4f!3L?}+REx3a_SStRZTs;SEnO=RWvSm zLlB=ecF-}8C@GdbC@18kB0UgwEN#y&d&sV^nTeGwO7OaXSZ-_TfEq3O159`4F2d~; z^0fa1Dm!(5x5!_Rmhg(O3oDO#K*rLGCRbZ?2u3>S!ENqToz)?<*1@4FIfjp48Tw|g zZ!46p%T^>Rr1L)0+Lbwp(=FeRrrEF&sLF>upP#;@Pn_{P^?U`mC>bNryMk7iB5Uqk z;+5Tx<7~rJ0>QLlldQ4bDC6dZOurtxfpg6T2~ya`jTD-l_6y7EbC2_1S<6 zo3Pw5%fJp&N-=LdHpE0X*H;xl`L`W(#_9!^l*sj<3zzCN{S6})9 zb<|RL{Y<1`9@{JrcH^)r@C`1j$kBK!QLQOdIbyH1sVKWt&ESwiOx|kn<{+1s6^`4o zXi5PMcY|KV=R>PT{5s`Qn$yRE=~y)QJX#du>NV&+j|S6&l!57KlI7?o2jX<|9F>k? z>9EkGKCK3JyrT#+PP59aUVpf19uW(gkj0~{7}(ZB0n4xYIZ~(}Rh9=3X~j7f=7;)( z6gQ+}8ocl-m+mJ%vwG8425b~{w9M&cHgEP0~A>B;Nd%{5TfM&jOe>&k>; zQM9vYky_uy=4`p*z$U;+9Y)VM@M)Wz=rEE(1*2Z%2QfZys_LdlYL?&SC}4j>)8RUP zPogu4M|uXFLhfFx9`W_4SewC1P4EaINYoWW9yeY;3b#hvSU~IsrNra*(bFc&`-SsXc&DUPj=W0@Ehz z8N$k~U(q*?`c0QaH$2 zVYkTb^ucX0U3DzJAFmQ=EYxvpAQd06ijD-5n&&=BP3q%k?mMu?Ezon0Ldh+9VDDUk zM#x}T2lbCtf<+#$#vd#*MWgPI?+Q8`ah;H%F>tTJEU!Moz1G+ZIz4WP6jJjoyvD;EH?#=OQOb&XQPc^kWMpL zL46W;X&hJoYbn9rIh$e{+lmffCPaaU2;3ST$uN-d5Q>_oFR^_BZY@?n-V!CV_ z878yV*4hNE-?QCDKwi!{XdMp5dGlG{BXt==YQb-nGY|BAlc8&;EKg8%#Dt{0E7jXQ z9yA6C-JLV)5Dk0_1&|pT;4C;NXT-kjf-5UjQqoH8nY5kWI=4D@3hvctg(M1#SE_xqaqtagM>@}@5It$aWIcGSWW903WW7kJ zWIbu%WIYHwrhfQ-qi}o)gj9j1e6o^Pcc0;pMwVA>eQ_MGW3~HNxIyNv9Z6j|kB{#y z`d89Mj~be*>v0?%tNLs&^5SjtKA@7MDbz(WKEAN8?8_`Xu_P98`rs9*V@#r1Dw-05P%8ObE9+w%yc<6 zpmEQ}w_?2{!M_Q9PNRd}epT71>-d2R*QKXh2~jk=ZxF8q`Gdokn|(_npj2>*OR<@O-f*xQ>}ELzK5CwLSasbpfF_vQ5p$s z#`lxXG(6u}|F}^cZ;Dtd6>)vEnV~oGI6j_Epcm{)32Kfk1m(Tn%V#s(U#51IaKRxcD4HXXXnwtm8YZT0iW}83%SGT->bydH^^Q8G z8g!9ZlABR{N3_&vNePs3yWqyVu6a>;lDmrqxB*^9g2cy#>fI}k;rQwV0r6Hz%4Sxx z?tPl#1eKr~XVB=(xHh{Jo*bp`tCaA(3!PKJ;W85`1kOJ3;S+oJ@5<8W40a4S>18vzDVWoO0%C zoFBE8mwN2l`5-x@9D78-MmXrIC6;Y#ngS`TX7S`;o{-cAn`4V);ktdEcgc;5aXYO{ zJEk~{ayo5%7eYL@VUfgEy>)Bmfx@`*#aIRPP|cwEwKD7Wl+LC;$@|=Q3(`)Ey>`>9 zP7tB}&0(yRLDWN{;^I!jdlo|@6wX8EnR&!q+dASy2o+|N-54RqrXcH?Gk{WH6U=A1SjIYSovpMoN95$c?i2Ua5Y9_d?xo$dS(CmijclD)cE*m+)7-pY^2qK(`h7 z{E&ZZ{0Ef%q|B#r+~>wDpDR>8H{`z#BoISH|+c% zVx_$rm#UFeJqsg#pb<1_S#It}t;zwtQj2iR&EWN(f#?hI1JNPtw*@&rwmHYX72wcr9*Sar|&u zpMto3SshxDMy>pgiF)k^JLWP~lb;1cGo}*tOyh6G;#>A51#uyz&7!=Y1#xw;^^9!V zF9oO6XNMWtoF7kq6wwPa4JL)7FN%TP=Z2<#79Sj*n=G<@Q7|+;H_807aFZtSUPF+s z_7n`_ziw#|N2NuYeOUL+=nm|k^jJ&hUz#zMr@f0%D{mj1zg=Lp{>q^0<+ zZGDS{?UA8n3QG$tw9??@)(x6CwdD<&5BZ-Lz@-?t^ylez{U}*G(>*LHr|%?7C92G3 zruoo?)W#SXLAzy|{R<6-AC^n^Gm7b;6Z$t$ES*7G3kaZQ9_5bj@RT3T8yP%ic0!20 zaL)6TEbxqFBpTI3Tuz(3x~#{V(sJzL8ouE~4*uer=JWmJZ#>wQ_m08W*yk(b8c<>^iB%2hw9?H)?T|>IaoW) zS_JMJqO$<;*R)Y9*Xyh7=`D5AeZxL#CpW@&bvd@|b`y>{>+L+%H=^BFTjK6nVNzUp zPwS+ap9z#2@w_e6{&0KI{`fGbB|mUB;_>)+QT}wlwbW<5q)L6LOqGZR(SFp}c2Dbm z&GXlrgFiG?ziqeJ8R?tr|AQ^U1;!cr(&z2Lximyd;F&Mth0l zdyF#>|22bnReQ*xZos1ILt3nQ_*Ny;K~&#xsKcBu?*LyGs~?}L%S7zzx9nIjOd~SC zx5IpVDQ^XYqdl0ejH*)(<9X+x>kPIz4cpjvhLfsu4p_taN^p1w;e(Q0ZjuX4>CQjH z3%bj-e>sWUZ|Y+U^asR1uzVx`a2qxf!P5lC;soIT1bGu^?wOBk^>%>{W;@8Dqbv$C zv}ZnW9Nuaow~an`O?nr$Qigt{2mu&*PxTdF*443*FW09uY!7#v`~HEm>)UNtZyHoB z1Vhn)fW7pD(c}cN%5H1+8y&fA-69;o@^r5{zs-Dru=*UGwmJ-xJ>$b}-?qITzOS>F znN(SVyMYa(*Lp+rpo~Wae2sa3Ssm&vWzwU)di`vvLou`)Ilw7h*;pm3TG9Flg9UsL z7o~}_He4b8l>K2Avu%sW194S#brDCUy}Czf?v%NDrqUGg zEhs3u;3jj;o;1p-n%1L^3^6o=D|gHFDVNoB~6dBZ~3s8-QL zl-d)wFm1~)txG<{j~BJuAKN!l!{0bJvhuip8>=3xY4>+;^b!K2JG*2-s<9gpV9gJ=J|bznvdT^APNbo ze+;Z);T4OyobW96tCJ?XXHY;uevCJ(zTh=QDv|x-1 z$N4MEnpg1G)mWG4P7Jj4D|`}FM+gkLf#p28pkwnl=LwTXoKBd7B7+mke#>CKU!!ms z96;cuVpC<1zgA{cR6@vP9wC+yz59w2UE_zxE5CaT4sm{QbaY1mTL?mg5maa*&P#C8 zPmT-pNp>|mD^^zxnLH;4=T6qhl0UE$AD!>h%9DT}DN;6x8zsDoK6H_pE%fKg*KS< z%&q`LbmD4~I5Z2GI8Jbp817EqfQ(TSBHksLPl2Nsf#koAtSc3(=Oa=KAzC6w35l~I zbe^JF(Jn#e!4H-y_3cS|+HW?boQbe?o*6T18!B?5X`3Y%BP~XeLa?YUvxdaUe%)TO z=gGF{w?WicWKvd?{G_KKSCdh0l2oj^T@-&aW|E|Tqx-eoRhC+3{b3A3r=`CD-J-hY zR7dyZ^~Y>R^IX1=gM869xQ0`rY#H8{DmlI$!A=!uoQ!xoG=R z;^l11_}wM->givspny6O9OHUK9U`X=Kdm~dl zDwJ)ei5%kZE!gUc2~D_zV$Ej!rtyvAVQ3TtE5c-V&-V)EZ2J~0LL zTM=AV63GD_3QMkRGV-^J8zf2hae9JcP~i;D;t{|V`pb~%a-V=9I=vgKBJX1$9-O#-MGA`uJ^8WoR2pk7aTTOXTBtlw5j5-vMSaz{R|M)%jO=p3{oZHh6SIxI z{-Wx~UP-V!f^*Jn)i8R)g_-#%vi6mmp#dtS+}4Xjo1WUl?EJ^icB*x1*2~ceoM1^crct>FjLSgrj{4w2qR z@mq^C7OnEs%@zY?$&e2&Ir7z%aq$|aGtCYMXT!6)TNhs%o#ixBp8ktU^ydKjPX(eW zNnE`@7K5jr_rLHN9PBJ*w$Gn^c@2{jNQpM-cRp0Jwmju}q}* z?($||Q@|^BNZt=lw$l4eU(Qg-I;DKDlN^~O4uOL;J_@nS!yEl^Vr3NFlFl=+@KuV9 zNwg|Omolix2TjX2Zd3fB;aoYQ@lZSiY#vQT>pZK8J3`%r`+lIpqy$7~n%ewZ(3$dP zgQbZ*W+Y#Y{SRm`fZ@;f{6YGpjQJZleYC@_(CG@4a~?!@ripIiR6%AHa=w|b#Lu79 z7^^Cbn>owX_mXP#9SFXu!Aq?p4czphfb}v@^L&@U#Lkgiq;kP=C5zQ#o&ZnGc{A8> z1Egz?HIEiQSQeniEz>-MHq7?jSadCoL)>YKcpYtc^|2++zk!p&`4T0p?H5JLk5dPN zz1+2N&jKjTXC?d3MPVy_ORK+EKjpTONwBW=jP3$Y2HOizK~}Z9--^VtwG>d)Lwh~=)uFo(1!Ys#x>IajtTXCvY7$V2nAMA;+AC!zl<2@-4xNuuwxHrI*Kva z6lt~5eE>#7Y;a40?5(KeuN8tRzLRx9rK-%LRF$r-m*BCWOFX|r2rnrjt}u3CSx2Og z;-i(P5$(s7T+_ zHI*2KWI)*f%|*dXIsgmCk^u&P1)%rx;tBDm=VXB2b8zg<0;yN%4pM`Ye9yKyoC>fr znY^bGoBxWUplW6nZtpJUdm$l6Z80WgLo`Rb1c4VzrZ1dBn?v0k->|hKIUeye+B8ke zXq%vC%t=f*U^C*^Roul{{4DVMgZY07{{OiHAz#?#=J{3hr@Z}t_1{Z<{I6uWz<+`Jsh0n5B>ynM zOCj~IsK$`Lp#CAN{%^2<-m^eo{O>H#fPV{o|F^h(DewK2q5Z$1{zL5h-zff-j`LUC zug}7tKT&l)!~Th)^FQ;zOZCvNu)RqCf_@->)q=(EW?@uk*jZ0tJ1}LjVBk^RMA^3Xy00 HargfKWTP$- literal 0 HcmV?d00001