retrieve from ID’s snipets…インデザインのスニペットから元データを取り出す
えー、インデザインからデスクトップにドロップされたクリッピングはスニペットと呼ばれるのですが、このファイルはXMLベースのファイルでして、スタイルやリンク情報等様々な内容が盛り込まれています。まあ、そんな事は皆様ご承知のことですね。しかし、結構危なっかしい代物なのでほとんど利用されていないのではないかとも思います。しかしながら、このスニペット君、場合によっては非常に役立つものなのです。
先日TLにIDファイルに埋め込まれたデータの抜き出し云々が流れていました。のろまなわたしはタイムリーに情報をお渡しする事ができていないのですが、こう言った場合はスニペットが救世主になったりします。
一度構造を見てみましょう。
<?xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”?><?aid style=”50″ type=”snippet” readerVersion=”6.0″ featureSet=”257″ product=”9.0(244)” ?>
<?aid SnippetType=”PageItem”?>
<Document DOMVersion=”9.0″ Self=”d”>
<Color Self=”Color/Black” Model=”Process” Space=”CMYK” ColorValue=”0 0 0 100″ ColorOverride=”Specialblack” AlternateSpace=”NoAlternateColor” AlternateColorValue=”” Name=”Black” ColorEditable=”false” ColorRemovable=”false” Visible=”true” SwatchCreatorID=”7937″ />
<Swatch Self=”Swatch/None” Name=”None” ColorEditable=”false” ColorRemovable=”false” Visible=”true” SwatchCreatorID=”7937″ />
<StrokeStyle Self=”StrokeStyle/$ID/Solid” Name=”$ID/Solid” />
<RootCharacterStyleGroup Self=”u7b”>
<CharacterStyle Self=”CharacterStyle/$ID/[No character style]” Imported=”false” Name=”$ID/[No character style]” />
</RootCharacterStyleGroup>
<NumberingList Self=”NumberingList/$ID/[Default]” Name=”$ID/[Default]” ContinueNumbersAcrossStories=”false” ContinueNumbersAcrossDocuments=”false” />
<RootParagraphStyleGroup Self=”u7a”>
<ParagraphStyle Self=”ParagraphStyle/$ID/[No paragraph style]” Name=”$ID/[No paragraph style]” Imported=”false” FillColor=”Color/Black” FontStyle=”R” PointSize=”9.21259842519685″ HorizontalScale=”100″ KerningMethod=”$ID/Metrics – Roman Only” Ligatures=”true” PageNumberType=”AutoPageNumber” StrokeWeight=”0.7086614173228347″ Tracking=”0″ Composer=”HL Composer J” DropCapCharacters=”0″ DropCapLines=”0″ BaselineShift=”0″ Capitalization=”Normal” StrokeColor=”Swatch/None” HyphenateLadderLimit=”3″ VerticalScale=”100″ LeftIndent=”0″ RightIndent=”0″ FirstLineIndent=”0″ AutoLeading=”175″ AppliedLanguage=”$ID/Japanese” Hyphenation=”true” HyphenateAfterFirst=”2″ HyphenateBeforeLast=”2″ HyphenateCapitalizedWords=”true” HyphenateWordsLongerThan=”5″ NoBreak=”false” HyphenationZone=”28.34645669291339″ SpaceBefore=”0″ SpaceAfter=”0″ Underline=”false” OTFFigureStyle=”Default” DesiredWordSpacing=”100″ MaximumWordSpacing=”133″ MinimumWordSpacing=”80″ DesiredLetterSpacing=”0″ MaximumLetterSpacing=”0″ MinimumLetterSpacing=”0″ DesiredGlyphScaling=”100″ MaximumGlyphScaling=”100″ MinimumGlyphScaling=”100″ StartParagraph=”Anywhere” KeepAllLinesTogether=”false” KeepWithNext=”0″ KeepFirstLines=”2″ KeepLastLines=”2″ Position=”Normal” StrikeThru=”false” CharacterAlignment=”AlignEmCenter” KeepLinesTogether=”false” StrokeTint=”-1″ FillTint=”-1″ OverprintStroke=”false” OverprintFill=”false” GradientStrokeAngle=”0″ GradientFillAngle=”0″ GradientStrokeLength=”-1″ GradientFillLength=”-1″ GradientStrokeStart=”0 0″ GradientFillStart=”0 0″ Skew=”0″ RuleAboveLineWeight=”0.7086614173228347″ RuleAboveTint=”-1″ RuleAboveOffset=”0″ RuleAboveLeftIndent=”0″ RuleAboveRightIndent=”0″ RuleAboveWidth=”ColumnWidth” RuleBelowLineWeight=”0.7086614173228347″ RuleBelowTint=”-1″ RuleBelowOffset=”0″ RuleBelowLeftIndent=”0″ RuleBelowRightIndent=”0″ RuleBelowWidth=”ColumnWidth” RuleAboveOverprint=”false” RuleBelowOverprint=”false” RuleAbove=”false” RuleBelow=”false” LastLineIndent=”0″ HyphenateLastWord=”true” ParagraphBreakType=”Anywhere” SingleWordJustification=”FullyJustified” OTFOrdinal=”false” OTFFraction=”false” OTFDiscretionaryLigature=”false” OTFTitling=”false” RuleAboveGapTint=”-1″ RuleAboveGapOverprint=”false” RuleBelowGapTint=”-1″ RuleBelowGapOverprint=”false” Justification=”LeftJustified” DropcapDetail=”0″ PositionalForm=”None” OTFMark=”true” HyphenWeight=”5″ OTFLocale=”true” HyphenateAcrossColumns=”true” KeepRuleAboveInFrame=”false” IgnoreEdgeAlignment=”false” OTFSlashedZero=”false” OTFStylisticSets=”0″ OTFHistorical=”false” OTFContextualAlternate=”true” UnderlineGapOverprint=”false” UnderlineGapTint=”-1″ UnderlineOffset=”-9999″ UnderlineOverprint=”false” UnderlineTint=”-1″ UnderlineWeight=”-9999″ StrikeThroughGapOverprint=”false” StrikeThroughGapTint=”-1″ StrikeThroughOffset=”-9999″ StrikeThroughOverprint=”false” StrikeThroughTint=”-1″ StrikeThroughWeight=”-9999″ MiterLimit=”4″ StrokeAlignment=”OutsideAlignment” EndJoin=”MiterEndJoin” SpanColumnType=”SingleColumn” SplitColumnInsideGutter=”6″ SplitColumnOutsideGutter=”0″ KeepWithPrevious=”false” SpanColumnMinSpaceBefore=”0″ SpanColumnMinSpaceAfter=”0″ OTFSwash=”false” Tsume=”0″ LeadingAki=”-1″ TrailingAki=”-1″ KinsokuType=”KinsokuPushInFirst” KinsokuHangType=”None” BunriKinshi=”true” RubyOpenTypePro=”true” RubyFontSize=”-1″ RubyAlignment=”RubyJIS” RubyType=”PerCharacterRuby” RubyParentSpacing=”RubyParent121Aki” RubyXScale=”100″ RubyYScale=”100″ RubyXOffset=”0″ RubyYOffset=”0″ RubyPosition=”AboveRight” RubyAutoAlign=”true” RubyParentOverhangAmount=”RubyOverhangOneRuby” RubyOverhang=”false” RubyAutoScaling=”false” RubyParentScalingPercent=”66″ RubyTint=”-1″ RubyOverprintFill=”Auto” RubyStrokeTint=”-1″ RubyOverprintStroke=”Auto” RubyWeight=”-1″ KentenKind=”None” KentenFontSize=”-1″ KentenXScale=”100″ KentenYScale=”100″ KentenPlacement=”0″ KentenAlignment=”AlignKentenCenter” KentenPosition=”AboveRight” KentenCustomCharacter=”” KentenCharacterSet=”CharacterInput” KentenTint=”-1″ KentenOverprintFill=”Auto” KentenStrokeTint=”-1″ KentenOverprintStroke=”Auto” KentenWeight=”-1″ Tatechuyoko=”false” TatechuyokoXOffset=”0″ TatechuyokoYOffset=”0″ AutoTcy=”0″ AutoTcyIncludeRoman=”false” Jidori=”0″ GridGyoudori=”0″ GridAlignFirstLineOnly=”false” GridAlignment=”None” CharacterRotation=”0″ RotateSingleByteCharacters=”false” Rensuuji=”true” ShataiMagnification=”0″ ShataiDegreeAngle=”4500″ ShataiAdjustTsume=”true” ShataiAdjustRotation=”false” Warichu=”false” WarichuLines=”2″ WarichuSize=”50″ WarichuLineSpacing=”0″ WarichuAlignment=”Auto” WarichuCharsBeforeBreak=”2″ WarichuCharsAfterBreak=”2″ OTFHVKana=”false” OTFProportionalMetrics=”false” OTFRomanItalics=”false” LeadingModel=”LeadingModelAkiBelow” ScaleAffectsLineHeight=”false” ParagraphGyoudori=”false” CjkGridTracking=”false” GlyphForm=”None” RubyAutoTcyDigits=”0″ RubyAutoTcyIncludeRoman=”false” RubyAutoTcyAutoScale=”true” TreatIdeographicSpaceAsSpace=”true” AllowArbitraryHyphenation=”false” BulletsAndNumberingListType=”NoList” NumberingStartAt=”1″ NumberingLevel=”1″ NumberingContinue=”true” NumberingApplyRestartPolicy=”true” BulletsAlignment=”LeftAlign” NumberingAlignment=”LeftAlign” NumberingExpression=”^#.^t” BulletsTextAfter=”^t” DigitsType=”DefaultDigits” Kashidas=”DefaultKashidas” DiacriticPosition=”OpentypePositionFromBaseline” CharacterDirection=”DefaultDirection” ParagraphDirection=”LeftToRightDirection” ParagraphJustification=”DefaultJustification” ParagraphKashidaWidth=”2″ XOffsetDiacritic=”0″ YOffsetDiacritic=”0″ OTFOverlapSwash=”false” OTFStylisticAlternate=”false” OTFJustificationAlternate=”false” OTFStretchedAlternate=”false” KeyboardDirection=”DefaultDirection”>
<Properties>
<Leading type=”enumeration”>Auto</Leading>
<TabList type=”list”>
</TabList>
<AppliedFont type=”string”>小塚明朝 Pr6N</AppliedFont>
<RuleAboveColor type=”string”>Text Color</RuleAboveColor>
<RuleBelowColor type=”string”>T
ext Color</RuleBelowColor>
<RuleAboveType type=”object”>StrokeStyle/$ID/Solid</RuleAboveType>
<RuleBelowType type=”object”>StrokeStyle/$ID/Solid</RuleBelowType>
<BalanceRaggedLines type=”enumeration”>NoBalancing</BalanceRaggedLines>
<RuleAboveGapColor type=”object”>Swatch/None</RuleAboveGapColor>
<RuleBelowGapColor type=”object”>Swatch/None</RuleBelowGapColor>
<UnderlineColor type=”string”>Text Color</UnderlineColor>
<UnderlineGapColor type=”object”>Swatch/None</UnderlineGapColor>
<UnderlineType type=”object”>StrokeStyle/$ID/Solid</UnderlineType>
<StrikeThroughColor type=”string”>Text Color</StrikeThroughColor>
<StrikeThroughGapColor type=”object”>Swatch/None</StrikeThroughGapColor>
<StrikeThroughType type=”object”>StrokeStyle/$ID/Solid</StrikeThroughType>
<SpanSplitColumnCount type=”enumeration”>All</SpanSplitColumnCount>
<Mojikumi type=”enumeration”>LineEndAllOneHalfEmEnum</Mojikumi>
<KinsokuSet type=”enumeration”>HardKinsoku</KinsokuSet>
<RubyFont type=”string”>$ID/</RubyFont>
<RubyFontStyle type=”enumeration”>Nothing</RubyFontStyle>
<RubyFill type=”string”>Text Color</RubyFill>
<RubyStroke type=”string”>Text Color</RubyStroke>
<KentenFont type=”string”>$ID/</KentenFont>
<KentenFontStyle type=”enumeration”>Nothing</KentenFontStyle>
<KentenFillColor type=”string”>Text Color</KentenFillColor>
<KentenStrokeColor type=”string”>Text Color</KentenStrokeColor>
<BulletChar BulletCharacterType=”UnicodeOnly” BulletCharacterValue=”8226″ />
<NumberingFormat type=”string”>1, 2, 3, 4…</NumberingFormat>
<BulletsFont type=”string”>$ID/</BulletsFont>
<BulletsFontStyle type=”enumeration”>Nothing</BulletsFontStyle>
<AppliedNumberingList type=”object”>NumberingList/$ID/[Default]</AppliedNumberingList>
<NumberingRestartPolicies RestartPolicy=”AnyPreviousLevel” LowerLevel=”0″ UpperLevel=”0″ />
<BulletsCharacterStyle type=”object”>CharacterStyle/$ID/[No character style]</BulletsCharacterStyle>
<NumberingCharacterStyle type=”object”>CharacterStyle/$ID/[No character style]</NumberingCharacterStyle>
</Properties>
</ParagraphStyle>
</RootParagraphStyleGroup>
<RootObjectStyleGroup Self=”u95″>
<ObjectStyle Self=”ObjectStyle/$ID/[None]” Name=”$ID/[None]” AppliedParagraphStyle=”ParagraphStyle/$ID/[No paragraph style]” CornerRadius=”14.173228346456694″ FillColor=”Swatch/None” FillTint=”-1″ StrokeWeight=”0″ MiterLimit=”4″ EndCap=”ButtEndCap” EndJoin=”MiterEndJoin” StrokeType=”StrokeStyle/$ID/Solid” LeftLineEnd=”None” RightLineEnd=”None” StrokeColor=”Swatch/None” StrokeTint=”-1″ GapColor=”Swatch/None” GapTint=”-1″ StrokeAlignment=”CenterAlignment” Nonprinting=”false” GradientFillAngle=”0″ GradientStrokeAngle=”0″ AppliedNamedGrid=”n” TopLeftCornerOption=”None” TopRightCornerOption=”None” BottomLeftCornerOption=”None” BottomRightCornerOption=”None” TopLeftCornerRadius=”14.173228346456694″ TopRightCornerRadius=”14.173228346456694″ BottomLeftCornerRadius=”14.173228346456694″ BottomRightCornerRadius=”14.173228346456694″ CornerOption=”None”>
<ObjectExportOption AltTextSourceType=”SourceXMLStructure” ActualTextSourceType=”SourceXMLStructure” CustomAltText=”$ID/” CustomActualText=”$ID/” ApplyTagType=”TagFromStructure” CustomImageConversion=”false” ImageConversionType=”JPEG” CustomImageSizeOption=”SizeRelativeToPageWidth” ImageExportResolution=”Ppi300″ GIFOptionsPalette=”AdaptivePalette” GIFOptionsInterlaced=”true” JPEGOptionsQuality=”High” JPEGOptionsFormat=”BaselineEncoding” ImageAlignment=”AlignLeft” ImageSpaceBefore=”0″ ImageSpaceAfter=”0″ UseImagePageBreak=”false” ImagePageBreak=”PageBreakBefore” CustomImageAlignment=”false” SpaceUnit=”CssPixel” CustomLayout=”false” CustomLayoutType=”AlignmentAndSpacing”>
<Properties>
&nb
sp; <AltMetadataProperty NamespacePrefix=”$ID/” PropertyPath=”$ID/” />
<ActualMetadataProperty NamespacePrefix=”$ID/” PropertyPath=”$ID/” />
</Properties>
</ObjectExportOption>
<TextFramePreference TextColumnCount=”1″ TextColumnGutter=”14.173″ TextColumnFixedWidth=”144″ UseFixedColumnWidth=”false” FirstBaselineOffset=”EmboxHeight” MinimumFirstBaselineOffset=”0″ VerticalJustification=”TopAlign” VerticalThreshold=”0″ IgnoreWrap=”false” UseFlexibleColumnWidth=”false” TextColumnMaxWidth=”0″ AutoSizingType=”Off” AutoSizingReferencePoint=”CenterPoint” UseMinimumHeightForAutoSizing=”false” MinimumHeightForAutoSizing=”0″ UseMinimumWidthForAutoSizing=”false” MinimumWidthForAutoSizing=”0″ UseNoLineBreaksForAutoSizing=”false” VerticalBalanceColumns=”false”>
<Properties>
<InsetSpacing type=”list”>
<ListItem type=”unit”>0</ListItem>
<ListItem type=”unit”>0</ListItem>
<ListItem type=”unit”>0</ListItem>
<ListItem type=”unit”>0</ListItem>
</InsetSpacing>
</Properties>
</TextFramePreference>
<BaselineFrameGridOption UseCustomBaselineFrameGrid=”false” StartingOffsetForBaselineFrameGrid=”0″ BaselineFrameGridRelativeOption=”TopOfInset” BaselineFrameGridIncrement=”12″>
<Properties>
<BaselineFrameGridColor type=”enumeration”>Charcoal</BaselineFrameGridColor>
</Properties>
</BaselineFrameGridOption>
<AnchoredObjectSetting AnchoredPosition=”InlinePosition” SpineRelative=”false” LockPosition=”false” PinPosition=”true” AnchorPoint=”BottomRightAnchor” HorizontalAlignment=”LeftAlign” HorizontalReferencePoint=”TextFrame” VerticalAlignment=”BottomAlign” VerticalReferencePoint=”LineBaseline” AnchorXoffset=”0″ AnchorYoffset=”0″ AnchorSpaceAbove=”0″ />
<TextWrapPreference Inverse=”false” ApplyToMasterPageOnly=”false” TextWrapSide=”BothSides” TextWrapMode=”None”>
<Properties>
<TextWrapOffset Top=”0″ Left=”0″ Bottom=”0″ Right=”0″ />
</Properties>
<ContourOption ContourType=”SameAsClipping” IncludeInsideEdges=”false” ContourPathName=”$ID/” />
</TextWrapPreference>
<StoryPreference OpticalMarginAlignment=”false” OpticalMarginSize=”9.2125984251969″ FrameType=”TextFrameType” StoryOrientation=”Horizontal” StoryDirection=”LeftToRightDirection” />
<FrameFittingOption AutoFit=”false” LeftCrop=”0″ TopCrop=”0″ RightCrop=”0″ BottomCrop=”0″ FittingOnEmptyFrame=”None” FittingAlignment=”CenterAnchor” />
</ObjectStyle>
</RootObjectStyleGroup>
<TinDocumentDataObject>
<Properties>
<GaijiRefMaps><![CDATA[/////wAAAAAAAAAA]]></GaijiRefMaps>
</Properties>
</TinDocumentDataObject>
<TransparencyDefaultContainerObject>
<TransparencySetting>
<BlendingSetting BlendMode=”Normal” Opacity=”100″ KnockoutGroup=”false” IsolateBlending=”false” />
<DropShadowSetting Mode=”None” BlendMode=”Multiply” Opacity=”75″ XOffset=”7″ YOffset=”7″ Size=”5″ EffectColor=”n” Noise=”0″ Spread=”0″ UseGlobalLight=”false” KnockedOut=”true” HonorOtherEffects=”false” />
<FeatherSetting Mode=”None” Width=”9″ CornerType=”Diffusion” Noise=”0″ ChokeAmount=”0″ />
<InnerShadowSetting Applied=”false” EffectColor=”n” BlendMode=”Multiply” Opacity=”75″ Angle=”120″ Distance=”7″ UseGlobalLight=”false” ChokeAmount=”0″ Size=”7″ Noise=”0″ />
<OuterGlowSetting Applied=”false” BlendMode=”Screen” Opacity=”75″ Noise=”0″ EffectColor=”n” Technique=”Softer” Spread=”0″ Size=”7″ />
<InnerGlowSetting Applied=”false” BlendMode=”Screen” Opacity=”75″ Noise=”0″ EffectColor=”n” Technique=”Softer” Spread=”0″ Size=”7″ Source=”EdgeSourced” />
<BevelAndEm
bossSetting Applied=”false” Style=”InnerBevel” Technique=”SmoothContour” Depth=”100″ Direction=”Up” Size=”7″ Soften=”0″ Angle=”120″ Altitude=”30″ UseGlobalLight=”false” HighlightColor=”n” HighlightBlendMode=”Screen” HighlightOpacity=”75″ ShadowColor=”n” ShadowBlendMode=”Multiply” ShadowOpacity=”75″ />
<SatinSetting Applied=”false” EffectColor=”n” BlendMode=”Multiply” Opacity=”50″ Angle=”120″ Distance=”7″ Size=”7″ InvertEffect=”false” />
<DirectionalFeatherSetting Applied=”false” LeftWidth=”0″ RightWidth=”0″ TopWidth=”0″ BottomWidth=”0″ ChokeAmount=”0″ Angle=”0″ FollowShapeMode=”LeadingEdge” Noise=”0″ />
<GradientFeatherSetting Applied=”false” Type=”Linear” Angle=”0″ Length=”0″ GradientStart=”0 0″ HiliteAngle=”0″ HiliteLength=”0″ />
</TransparencySetting>
<StrokeTransparencySetting>
<BlendingSetting BlendMode=”Normal” Opacity=”100″ KnockoutGroup=”false” IsolateBlending=”false” />
<DropShadowSetting Mode=”None” BlendMode=”Multiply” Opacity=”75″ XOffset=”7″ YOffset=”7″ Size=”5″ EffectColor=”n” Noise=”0″ Spread=”0″ UseGlobalLight=”false” KnockedOut=”true” HonorOtherEffects=”false” />
<FeatherSetting Mode=”None” Width=”9″ CornerType=”Diffusion” Noise=”0″ ChokeAmount=”0″ />
<InnerShadowSetting Applied=”false” EffectColor=”n” BlendMode=”Multiply” Opacity=”75″ Angle=”120″ Distance=”7″ UseGlobalLight=”false” ChokeAmount=”0″ Size=”7″ Noise=”0″ />
<OuterGlowSetting Applied=”false” BlendMode=”Screen” Opacity=”75″ Noise=”0″ EffectColor=”n” Technique=”Softer” Spread=”0″ Size=”7″ />
<InnerGlowSetting Applied=”false” BlendMode=”Screen” Opacity=”75″ Noise=”0″ EffectColor=”n” Technique=”Softer” Spread=”0″ Size=”7″ Source=”EdgeSourced” />
<BevelAndEmbossSetting Applied=”false” Style=”InnerBevel” Technique=”SmoothContour” Depth=”100″ Direction=”Up” Size=”7″ Soften=”0″ Angle=”120″ Altitude=”30″ UseGlobalLight=”false” HighlightColor=”n” HighlightBlendMode=”Screen” HighlightOpacity=”75″ ShadowColor=”n” ShadowBlendMode=”Multiply” ShadowOpacity=”75″ />
<SatinSetting Applied=”false” EffectColor=”n” BlendMode=”Multiply” Opacity=”50″ Angle=”120″ Distance=”7″ Size=”7″ InvertEffect=”false” />
<DirectionalFeatherSetting Applied=”false” LeftWidth=”0″ RightWidth=”0″ TopWidth=”0″ BottomWidth=”0″ ChokeAmount=”0″ Angle=”0″ FollowShapeMode=”LeadingEdge” Noise=”0″ />
<GradientFeatherSetting Applied=”false” Type=”Linear” Angle=”0″ Length=”0″ GradientStart=”0 0″ HiliteAngle=”0″ HiliteLength=”0″ />
</StrokeTransparencySetting>
<FillTransparencySetting>
<BlendingSetting BlendMode=”Normal” Opacity=”100″ KnockoutGroup=”false” IsolateBlending=”false” />
<DropShadowSetting Mode=”None” BlendMode=”Multiply” Opacity=”75″ XOffset=”7″ YOffset=”7″ Size=”5″ EffectColor=”n” Noise=”0″ Spread=”0″ UseGlobalLight=”false” KnockedOut=”true” HonorOtherEffects=”false” />
<FeatherSetting Mode=”None” Width=”9″ CornerType=”Diffusion” Noise=”0″ ChokeAmount=”0″ />
<InnerShadowSetting Applied=”false” EffectColor=”n” BlendMode=”Multiply” Opacity=”75″ Angle=”120″ Distance=”7″ UseGlobalLight=”false” ChokeAmount=”0″ Size=”7″ Noise=”0″ />
<OuterGlowSetting Applied=”false” BlendMode=”Screen” Opacity=”75″ Noise=”0″ EffectColor=”n” Technique=”Softer” Spread=”0″ Size=”7″ />
<InnerGlowSetting Applied=”false” BlendMode=”Screen” Opacity=”75″ Noise=”0″ EffectColor=”n” Technique=”Softer” Spread=”0″ Size=”7″ Source=”EdgeSourced” />
<BevelAndEmbossSetting Applied=”false” Style=”InnerBevel” Technique=”SmoothContour” Depth=”100″ Direction=”Up” Size=”7″ Soften=”0″ Angle=”120″ Altitude=”30″ UseGlobalLight=”false” HighlightColor=”n” HighlightBlendMode=”Screen” HighlightOpacity=”75″ ShadowColor=”n” ShadowBlendMode=”Multiply” ShadowOpacity=”75″ />
<SatinSetting Applied=”false” EffectColor=”n” BlendMode=”Multiply” Opacity=”50″ Angle=”120″ Distance=”7″ Size=”7″ InvertEffect=”false” />
<DirectionalFeatherSetting Applied=”false” LeftWidth=”0″ RightWidth=”0″ TopWidth=”0″ BottomWidth=”0″ ChokeAmount=”0″ Angle=”0″ FollowShapeMode=”LeadingEdge” Noise=”0″ />
<GradientFeatherSetting Applied=”false” Type=”Linear” Angle=”0″ Length=”0″ GradientStart=”0 0″ HiliteAngle=”0″ HiliteLength=”0″ />
</FillTransparencySetting>
<ContentTransparencySetting>
<BlendingSetting BlendMode=”Normal” Opacity=”100″ KnockoutGroup=”false” IsolateBlending=”false” />
<DropShadowSetting Mode=”None” BlendMode=”Multiply” Opacity=”75″ XOffset=”7″ YOffset=”7″ Size=”5″ EffectColor=”n” Noise=”0″ Spread=”0″ UseGlobalLight=”false” KnockedOut=”true” HonorOtherEffects=”false” />
<FeatherSetting Mode=”None” Width=”9″ CornerType=”Diffusion” Noise=”0″ ChokeAmount=”0″ />
<InnerShadowSetting Applied=”false” EffectColor=”n” BlendMode=”Multiply” Opacity=”75″ Angle=”120″ Distance=”7″ UseGlobalLight=”false” ChokeAmount=”0″ Size=”7″ Noise=”0″ />
<OuterGlowSetting Applied=”false” BlendMode=”Screen” Opacity=”75″ Noise=”0″ EffectColor=”n” Technique=”Softer” Spread=”0″ Size=”7″ />
<InnerGlowSetting Applied=”false” BlendMode=”Screen” Opacity=”75″ Noise=”0″ EffectColor=”n” Technique=”Softer” Spread=”0″ Size=”7″ Source=”EdgeSourced” />
&nbs
p; <BevelAndEmbossSetting Applied=”false” Style=”InnerBevel” Technique=”SmoothContour” Depth=”100″ Direction=”Up” Size=”7″ Soften=”0″ Angle=”120″ Altitude=”30″ UseGlobalLight=”false” HighlightColor=”n” HighlightBlendMode=”Screen” HighlightOpacity=”75″ ShadowColor=”n” ShadowBlendMode=”Multiply” ShadowOpacity=”75″ />
<SatinSetting Applied=”false” EffectColor=”n” BlendMode=”Multiply” Opacity=”50″ Angle=”120″ Distance=”7″ Size=”7″ InvertEffect=”false” />
<DirectionalFeatherSetting Applied=”false” LeftWidth=”0″ RightWidth=”0″ TopWidth=”0″ BottomWidth=”0″ ChokeAmount=”0″ Angle=”0″ FollowShapeMode=”LeadingEdge” Noise=”0″ />
<GradientFeatherSetting Applied=”false” Type=”Linear” Angle=”0″ Length=”0″ GradientStart=”0 0″ HiliteAngle=”0″ HiliteLength=”0″ />
</ContentTransparencySetting>
</TransparencyDefaultContainerObject>
<Layer Self=”udf” Name=”レイヤー 1″ Visible=”true” Locked=”false” IgnoreWrap=”false” ShowGuides=”true” LockGuides=”false” UI=”true” Expendable=”true” Printable=”true”>
<Properties>
<LayerColor type=”enumeration”>LightBlue</LayerColor>
</Properties>
</Layer>
<Spread Self=”ue2″>
<Rectangle Self=”u107″ ContentType=”GraphicType” StoryTitle=”$ID/” ParentInterfaceChangeCount=”” TargetInterfaceChangeCount=”” LastUpdatedInterfaceChangeCount=”” OverriddenPageItemProps=”” HorizontalLayoutConstraints=”FlexibleDimension FixedDimension FlexibleDimension” VerticalLayoutConstraints=”FlexibleDimension FixedDimension FlexibleDimension” GradientFillStart=”0 0″ GradientFillLength=”0″ GradientFillAngle=”0″ GradientStrokeStart=”0 0″ GradientStrokeLength=”0″ GradientStrokeAngle=”0″ ItemLayer=”udf” Locked=”false” LocalDisplaySetting=”Default” GradientFillHiliteLength=”0″ GradientFillHiliteAngle=”0″ GradientStrokeHiliteLength=”0″ GradientStrokeHiliteAngle=”0″ AppliedObjectStyle=”ObjectStyle/$ID/[None]” Visible=”true” Name=”$ID/” ItemTransform=”1 0 0 1 -289.4566929133858 79.21653543307086″>
<Properties>
<PathGeometry>
<GeometryPathType PathOpen=”false”>
<PathPointArray>
<PathPointType Anchor=”-97 -91.5″ LeftDirection=”-97 -91.5″ RightDirection=”-97 -91.5″ />
<PathPointType Anchor=”-97 91.5″ LeftDirection=”-97 91.5″ RightDirection=”-97 91.5″ />
<PathPointType Anchor=”97 91.5″ LeftDirection=”97 91.5″ RightDirection=”97 91.5″ />
<PathPointType Anchor=”97 -91.5″ LeftDirection=”97 -91.5″ RightDirection=”97 -91.5″ />
</PathPointArray>
</GeometryPathType>
</PathGeometry>
</Properties>
<TextWrapPreference Inverse=”false” ApplyToMasterPageOnly=”false” TextWrapSide=”BothSides” TextWrapMode=”None”>
<Properties>
<TextWrapOffset Top=”0″ Left=”0″ Bottom=”0″ Right=”0″ />
</Properties>
<ContourOption ContourType=”SameAsClipping” IncludeInsideEdges=”false” ContourPathName=”$ID/” />
</TextWrapPreference>
<InCopyExportOption IncludeGraphicProxies=”true” IncludeAllResources=”false” />
<ObjectExportOption AltTextSourceType=”SourceXMLStructure” ActualTextSourceType=”SourceXMLStructure” CustomAltText=”$ID/” CustomActualText=”$ID/” ApplyTagType=”TagFromStructure” CustomImageConversion=”false” ImageConversionType=”JPEG” CustomImageSizeOption=”SizeRelativeToPageWidth” ImageExportResolution=”Ppi300″ GIFOptionsPalette=”AdaptivePalette” GIFOptionsInterlaced=”true” JPEGOptionsQuality=”High” JPEGOptionsFormat=”BaselineEncoding” ImageAlignment=”AlignLeft” ImageSpaceBefore=”0″ ImageSpaceAfter=”0″ UseImagePageBreak=”false” ImagePageBreak=”PageBreakBefore” CustomImageAlignment=”false” SpaceUnit=”CssPixel” CustomLayout=”false” CustomLayoutType=”AlignmentAndSpacing”>
<Properties>
<AltMetadataProperty NamespacePrefix=”$ID/” PropertyPath=”$ID/” />
<ActualMetadataProperty NamespacePrefix=”$ID/” PropertyPath=”$ID/” />
</Properties>
</ObjectExportOption>
<I
mage Self=”u100″ Space=”$ID/#Links_RGB” ActualPpi=”72 72″ EffectivePpi=”72 72″ ImageRenderingIntent=”UseColorSettings” OverriddenPageItemProps=”” LocalDisplaySetting=”Default” ImageTypeName=”$ID/JPEG” AppliedObjectStyle=”ObjectStyle/$ID/[None]” ItemTransform=”1 0 0 1 -97 -91.5″ ParentInterfaceChangeCount=”” TargetInterfaceChangeCount=”” LastUpdatedInterfaceChangeCount=”” HorizontalLayoutConstraints=”FlexibleDimension FixedDimension FlexibleDimension” VerticalLayoutConstraints=”FlexibleDimension FixedDimension FlexibleDimension” GradientFillStart=”0 0″ GradientFillLength=”0″ GradientFillAngle=”0″ GradientFillHiliteLength=”0″ GradientFillHiliteAngle=”0″ Visible=”true” Name=”$ID/”>
<Properties>
<Profile type=”string”>$ID/None</Profile>
<Contents><![CDATA[/9j/4AAQSkZJRgABAgEASABIAAD/4RXRRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUA
AAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAeAAAAcgEyAAIAAAAUAAAAkIdp
・
・
・
IxdXxfiM8Ldmdpf053J/D8ptnRRow0+IaN8v/Tx+z8mWGLnpk6PsV2NKYHI6nxc78XN4n+Zv++WS
cQAgAQAIAEACABAH/9k=]]></Contents>
<GraphicBounds Left=”0″ Top=”0″ Right=”194″ Bottom=”183″ />
</Properties>
<TextWrapPreference Inverse=”false” ApplyToMasterPageOnly=”false” TextWrapSide=”BothSides” TextWrapMode=”None”>
<Properties>
<TextWrapOffset Top=”0″ Left=”0″ Bottom=”0″ Right=”0″ />
</Properties>
<ContourOption ContourType=”SameAsClipping” IncludeInsideEdges=”false” ContourPathName=”$ID/” />
</TextWrapPreference>
<MetadataPacketPreference>
<Properties>
<Contents><![CDATA[<?xpacket begin=”” id=”W5M0MpCehiHzreSzNTczkc9d”?>
<x:xmpmeta xmlns:x=”adobe:ns:meta/” x:xmptk=”Adobe XMP Core 5.5-c014 79.151481, 2013/03/13-12:09:15 “>
<rdf:RDF xmlns:rdf=”http://www.w3.org/1999/02/22-rdf-syntax-ns#”>
<rdf:Description rdf:about=””
xmlns:xmpMM=”http://ns.adobe.com/xap/1.0/mm/”
xmlns:stRef=”http://ns.adobe.com/xap/1.0/sType/ResourceRef#”
xmlns:xmp=”http://ns.adobe.com/xap/1.0/”
xmlns:dc=”http://purl.org/dc/elements/1.1/”
xmlns:photoshop=”http://ns.adobe.com/photoshop/1.0/”
xmlns:tiff=”http://ns.adobe.com/tiff/1.0/”
xmlns:exif=”http://ns.adobe.com/exif/1.0/”>
<xmpMM:DocumentID>uuid:140D120BE19411DEAC24C3E37D334D57</xmpMM:DocumentID>
<xmpMM:InstanceID>uuid:140D120CE19411DEAC24C3E37D334D57</xmpMM:InstanceID>
<xmpMM:DerivedFrom rdf:parseType=”Resource”>
<stRef:instanceID>uuid:92592206466C11DCA4ADC88813568800</stRef:instanceID>
<stRef:documentID>uuid:92592205466C11DCA4ADC88813568800</stRef:documentID>
</xmpMM:DerivedFrom>
<xmp:CreateDate>2009-12-03T11:48:34+09:00</xmp:CreateDate>
<xmp:ModifyDate>2009-12-03T11:48:34+09:00</xmp:ModifyDate>
<xmp:MetadataDate>2009-12-03T11:48:34+09:00</xmp:MetadataDate>
<xmp:CreatorTool>Adobe Photoshop CS3 Macintosh</xmp:CreatorTool>
<dc:format>image/jpeg</dc:format>
<photoshop:ColorMode>3</photoshop:ColorMode>
<photoshop:History/>
<tiff:Orientation>1</tiff:Orientation>
<tiff:XResolution>720000/10000</tiff:XResolution>
<tiff:YResolution>720000/10000</tiff:YResolution>
<tiff:ResolutionUnit>2</tiff:ResolutionUnit>
<tiff:NativeDigest>256,257,258,259,262,274,277,284,530,531,282,283,296,301,318,319,529,532,306,270,271,272,305,315,33432;6FDAB0C7F3B3010C44523135D1CE98AD</tiff:NativeDigest>
<exif:PixelXDimension>194</exif:PixelXDimension>
<exif:PixelYDimension>183</exif:PixelYDimension>
<exif:ColorSpace>-1</exif:ColorSpace>
<exif:NativeDigest>36864,40960,40961,37121,37122,40962,40963,37510,40964,36867,36868,33434,33437,34850,34852,34855,34856,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37396,41483,41484,41486,41487,41488,41492,41493,41495,41728,41729,41730,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,42016,0,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,22,23,24,25,26,27,28,30;9F13890B0C4245DF746FBB328D226255</exif:NativeDigest>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end=”r”?>]]></Contents>
&n
bsp; </Properties>
</MetadataPacketPreference>
<Link Self=”u104″ AssetURL=”$ID/” AssetID=”$ID/” LinkResourceURI=”file:/bara.jpg” LinkResourceFormat=”$ID/JPEG” StoredState=”Embedded” LinkClassID=”35906″ LinkClientID=”257″ LinkResourceModified=”false” LinkObjectModified=”false” ShowInUI=”true” CanEmbed=”true” CanUnembed=”true” CanPackage=”true” ImportPolicy=”NoAutoImport” ExportPolicy=”NoAutoExport” LinkImportStamp=”file 129042821270000000 33245″ LinkImportModificationTime=”2009-12-03T11:48:47″ LinkImportTime=”2013-08-15T16:30:58″ LinkResourceSize=”0~81dd” />
<ClippingPathSettings ClippingType=”None” InvertPath=”false” IncludeInsideEdges=”false” RestrictToFrame=”false” UseHighResolutionImage=”true” Threshold=”25″ Tolerance=”2″ InsetFrame=”0″ AppliedPathName=”$ID/” Index=”-1″ />
<ImageIOPreference ApplyPhotoshopClippingPath=”true” AllowAutoEmbedding=”true” AlphaChannelName=”$ID/” />
</Image>
</Rectangle>
</Spread>
<?xpacket begin=”” id=”W5M0MpCehiHzreSzNTczkc9d”?>
<x:xmpmeta xmlns:x=”adobe:ns:meta/” x:xmptk=”Adobe XMP Core 5.5-c014 79.151481, 2013/03/13-12:09:15 “>
<rdf:RDF xmlns:rdf=”http://www.w3.org/1999/02/22-rdf-syntax-ns#”>
<rdf:Description rdf:about=””
xmlns:dc=”http://purl.org/dc/elements/1.1/”
xmlns:xmp=”http://ns.adobe.com/xap/1.0/”
xmlns:xmpGImg=”http://ns.adobe.com/xap/1.0/g/img/”
xmlns:xmpMM=”http://ns.adobe.com/xap/1.0/mm/”
xmlns:stEvt=”http://ns.adobe.com/xap/1.0/sType/ResourceEvent#”>
<dc:format>application/x-indesign</dc:format>
<xmp:CreatorTool>Adobe InDesign CC (Macintosh)</xmp:CreatorTool>
<xmp:CreateDate>2013-08-15T16:34:17+09:00</xmp:CreateDate>
<xmp:MetadataDate>2013-08-15T16:34:17+09:00</xmp:MetadataDate>
<xmp:ModifyDate>2013-08-15T16:34:17+09:00</xmp:ModifyDate>
<xmp:Thumbnails>
<rdf:Alt>
<rdf:li rdf:parseType=”Resource”>
<xmpGImg:format>JPEG</xmpGImg:format>
<xmpGImg:width>512</xmpGImg:width>
<xmpGImg:height>512</xmpGImg:height>
<xmpGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9z・・・0d39No8WHHzH1f71//2Q==</xmpGImg:image>
</rdf:li>
</rdf:Alt>
</xmp:Thumbnails>
<xmpMM:InstanceID>xmp.iid:710f50a0-1064-449e-a3de-83916db427b5</xmpMM:InstanceID>
<xmpMM:DocumentID>xmp.did:710f50a0-1064-449e-a3de-83916db427b5</xmpMM:DocumentID>
<xmpMM:OriginalDocumentID>xmp.did:710f50a0-1064-449e-a3de-83916db427b5</xmpMM:OriginalDocumentID>
<xmpMM:History>
<rdf:Seq>
<rdf:li rdf:parseType=”Resource”>
<stEvt:action>created</stEvt:action>
<stEvt:instanceID>xmp.iid:710f50a0-1064-449e-a3de-83916db427b5</stEvt:instanceID>
<stEvt:when>2013-08-15T16:34:17+09:00</stEvt:when>
<stEvt:softwareAgent>Adobe InDesign CC (Macintosh)</stEvt:softwareAgent>
</rdf:li>
</rdf:Seq>
</xmpMM:History>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end=”r”?>
</Document>
はい、長ったらしくて恐縮なのですが、まず最初に見ていただきたいのは175行目です。
<Image Self=”u100″ Space=”$ID/#Links_RGB” ActualPpi=”72 72″ EffectivePpi=”72 72″ ImageRenderingIntent=”UseColorSettings” OverriddenPageItemProps=”” LocalDisplaySetting=”Default” ImageTypeName=”$ID/JPEG” AppliedObjectStyle=”ObjectStyle/$ID/[None]” ItemTransform=”1 0 0 1 -97 -91.5″ ParentInterfaceChangeCount=”” TargetInterfaceChangeCount=”” LastUpdatedInterfaceChangeCount=”” HorizontalLayoutConstraints=”FlexibleDimension FixedDimension FlexibleDimension” VerticalLayoutConstraints=”FlexibleDimension FixedDimension FlexibleDimension” GradientFillStart=”0 0″ GradientFillLength=”0″ GradientFillAngle=”0″ GradientFillHiliteLength=”0″ GradientFillHiliteAngle=”0″ Visible=”true” Name=”$ID/”>
こんな感じなのですが、ImageTypeNameというプロパティに、埋め込まれたファイルの種類に関する記述があります。ここ憶えておいてください。
上の例の場合「ImageTypeName=”$ID/JPEG”」でJPEGファイルが埋め込まれていると判別出来るわけです。
次に埋め込まれたデータですが、177行目から始まるタグに囲まれた部分にいらっしゃいます。しかしながら、XMLファイルにバイナリを埋め込めるわけではありません。こんな場合はバイナリデータをテキストで表記するためエンコード処理されるのが世の常です。Adobeのファイルではよく使われるエンコーディングにBase64とAscii85があるのですが、ここではBase64が利用されています。
実際のデータはCDATAの後のブラケットの次から始まり、最後はブラケットが2つ連続する部分の手前までがデータの本体になります。以下がそのエンコードされたJPEGデータです。
/9j/4AAQSkZJRgABAgEASABIAAD/4RXRRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUA
AAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAeAAAAcgEyAAIAAAAUAAAAkIdp
AAQAAAABAAAApAAAANAACvyAAAAnEAAK/IAAACcQQWRvYmUgUGhvdG9zaG9wIENTMyBNYWNpbnRv
c2gAMjAwOToxMjowMyAxMTo0ODozNAAAA6ABAAMAAAAB//8AAKACAAQAAAABAAAAwqADAAQAAAAB
AAAAtwAAAAAAAAAGAQMAAwAAAAEABgAAARoABQAAAAEAAAEeARsABQAAAAEAAAEmASgAAwAAAAEA
AgAAAgEABAAAAAEAAAEuAgIABAAAAAEAABSbAAAAAAAAAEgAAAABAAAASAAAAAH/2P/gABBKRklG
AAECAABIAEgAAP/tAAxBZG9iZV9DTQAB/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJDBEL
CgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsN
Dg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM
DAwM/8AAEQgAlwCgAwEiAAIRAQMRAf/dAAQACv/EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYH
CAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQh
EjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXi
ZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5/cRAAICAQIE
BAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKy
gwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14/NGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dX
Z3eHl6e3x//aAAwDAQACEQMRAD8A9VSSSSUpNISLgOVjdb+s2F0pxpDTk5hALcZhggdnX2fRpY7/
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
sHH8rcqsn/wA3LVwvqt0jcHdQ63jbRzXjWME/wDXbnO/89LxlJSw9nrf+F/6C0OZ/wBL0eH26/1P
zf8Aj3qfpfotPQ6Kn1dHNBraf0ppeLHE/wDD2bn2bv8AjFpCOy+VklZFVpt4PPZPc45e5xe5fq9z
57/rcT9VJL5VSRWP1UkvlVJJT//Z/+04OFBob3Rvc2hvcCAzLjAAOEJJTQQEAAAAAAAHHAIAAAIA
AAA4QklNBCUAAAAAABDo8VzzL8EYoaJ7Z63FZNW6OEJJTQPqAAAAAB2mPD94bWwgdmVyc2lvbj0i
MS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUg
Q29tcHV0ZXIvL0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Q
cm9wZXJ0eUxpc3QtMS4wLmR0ZCI+CjxwbGlzdCB2ZXJzaW9uPSIxLjAiPgo8ZGljdD4KCTxrZXk+
Y29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1Ib3Jpem9udGFsUmVzPC9rZXk+Cgk8ZGljdD4K
CQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCTxzdHJpbmc+Y29t
LmFwcGxlLnByaW50aW5nbWFuYWdlcjwvc3RyaW5nPgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRp
Y2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk+CgkJCTxkaWN0PgoJCQkJPGtleT5jb20uYXBw
bGUucHJpbnQuUGFnZUZvcm1hdC5QTUhvcml6b250YWxSZXM8L2tleT4KCQkJCTxyZWFsPjcyPC9y
ZWFsPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNsaWVudDwva2V5PgoJCQkJPHN0
cmluZz5jb20uYXBwbGUucHJpbnRpbmdtYW5hZ2VyPC9zdHJpbmc+CgkJCQk8a2V5PmNvbS5hcHBs
ZS5wcmludC50aWNrZXQubW9kRGF0ZTwva2V5PgoJCQkJPGRhdGU+MjAwNy0wOC0wN1QwMjozNTow
OVo8L2RhdGU+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+
CgkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQk8L2RpY3Q+CgkJPC9hcnJheT4KCTwvZGljdD4K
CTxrZXk+Y29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1PcmllbnRhdGlvbjwva2V5PgoJPGRp
Y3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5n
PmNvbS5hcHBsZS5wcmludGluZ21hbmFnZXI8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmlu
dC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk+Y29t
LmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1PcmllbnRhdGlvbjwva2V5PgoJCQkJPGludGVnZXI+
MTwvaW50ZWdlcj4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jbGllbnQ8L2tleT4K
CQkJCTxzdHJpbmc+Y29tLmFwcGxlLnByaW50aW5nbWFuYWdlcjwvc3RyaW5nPgoJCQkJPGtleT5j
b20uYXBwbGUucHJpbnQudGlja2V0Lm1vZERhdGU8L2tleT4KCQkJCTxkYXRlPjIwMDctMDgtMDdU
MDI6MzU6MDlaPC9kYXRlPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxh
Zzwva2V5PgoJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJyYXk+Cgk8
L2RpY3Q+Cgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNU2NhbGluZzwva2V5PgoJ
PGRpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3Ry
aW5nPmNvbS5hcHBsZS5wcmludGluZ21hbmFnZXI8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5w
cmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk+
Y29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1TY2FsaW5nPC9rZXk+CgkJCQk8cmVhbD4xPC9y
ZWFsPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNsaWVudDwva2V5PgoJCQkJPHN0
cmluZz5jb20uYXBwbGUucHJpbnRpbmdtYW5hZ2VyPC9zdHJpbmc+CgkJCQk8a2V5PmNvbS5hcHBs
ZS5wcmludC50aWNrZXQubW9kRGF0ZTwva2V5PgoJCQkJPGRhdGU+MjAwNy0wOC0wN1QwMjozNTow
OVo8L2RhdGU+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+
CgkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQk8L2RpY3Q+CgkJPC9hcnJheT4KCTwvZGljdD4K
CTxrZXk+Y29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1WZXJ0aWNhbFJlczwva2V5PgoJPGRp
Y3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5n
PmNvbS5hcHBsZS5wcmludGluZ21hbmFnZXI8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmlu
dC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk+Y29t
LmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1WZXJ0aWNhbFJlczwva2V5PgoJCQkJPHJlYWw+NzI8
L3JlYWw+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY2xpZW50PC9rZXk+CgkJCQk8
c3RyaW5nPmNvbS5hcHBsZS5wcmludGluZ21hbmFnZXI8L3N0cmluZz4KCQkJCTxrZXk+Y29tLmFw
cGxlLnByaW50LnRpY2tldC5tb2REYXRlPC9rZXk+CgkJCQk8ZGF0ZT4yMDA3LTA4LTA3VDAyOjM1
OjA5WjwvZGF0ZT4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tl
eT4KCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0
PgoJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVZlcnRpY2FsU2NhbGluZzwva2V5
PgoJPGRpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQk8
c3RyaW5nPmNvbS5hcHBsZS5wcmludGluZ21hbmFnZXI8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBs
ZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxr
ZXk+Y29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1WZXJ0aWNhbFNjYWxpbmc8L2tleT4KCQkJ
CTxyZWFsPjE8L3JlYWw+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY2xpZW50PC9r
ZXk+CgkJCQk8c3RyaW5nPmNvbS5hcHBsZS5wcmludGluZ21hbmFnZXI8L3N0cmluZz4KCQkJCTxr
ZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5tb2REYXRlPC9rZXk+CgkJCQk8ZGF0ZT4yMDA3LTA4
LTA3VDAyOjM1OjA5WjwvZGF0ZT4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0
ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCTwvZGljdD4KCQk8L2FycmF5
PgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQuc3ViVGlja2V0LnBhcGVyX2luZm9fdGlj
a2V0PC9rZXk+Cgk8ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNQWRq
dXN0ZWRQYWdlUmVjdDwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNr
ZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5wcmludGluZ21hbmFnZXI8L3N0
cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8
YXJyYXk+CgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBN
QWRqdXN0ZWRQYWdlUmVjdDwva2V5PgoJCQkJCTxhcnJheT4KCQkJCQkJPHJlYWw+MC4wPC9yZWFs
PgoJCQkJCQk8cmVhbD4wLjA8L3JlYWw+CgkJCQkJCTxyZWFsPjc4MzwvcmVhbD4KCQkJCQkJPHJl
YWw+NTU5PC9yZWFsPgoJCQkJCTwvYXJyYXk+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlj
a2V0LmNsaWVudDwva2V5PgoJCQkJCTxzdHJpbmc+Y29tLmFwcGxlLnByaW50aW5nbWFuYWdlcjwv
c3RyaW5nPgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5tb2REYXRlPC9rZXk+CgkJ
CQkJPGRhdGU+MjAwOS0xMi0wM1QwMjo0ODoxOFo8L2RhdGU+CgkJCQkJPGtleT5jb20uYXBwbGUu
cHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJ
CQk8L2RpY3Q+CgkJCTwvYXJyYXk+CgkJPC9kaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBh
Z2VGb3JtYXQuUE1BZGp1c3RlZFBhcGVyUmVjdDwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5h
cHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5wcmlu
dGluZ21hbmFnZXI8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1B
cnJheTwva2V5PgoJCQk8YXJyYXk+CgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmlu
dC5QYWdlRm9ybWF0LlBNQWRqdXN0ZWRQYXBlclJlY3Q8L2tleT4KCQkJCQk8YXJyYXk+CgkJCQkJ
CTxyZWFsPi0xODwvcmVhbD4KCQkJCQkJPHJlYWw+LTE4PC9yZWFsPgoJCQkJCQk8cmVhbD44MjQ8
L3JlYWw+CgkJCQkJCTxyZWFsPjU3NzwvcmVhbD4KCQkJCQk8L2FycmF5PgoJCQkJCTxrZXk+Y29t
LmFwcGxlLnByaW50LnRpY2tldC5jbGllbnQ8L2tleT4KCQkJCQk8c3RyaW5nPmNvbS5hcHBsZS5w
cmludGluZ21hbmFnZXI8L3N0cmluZz4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQu
bW9kRGF0ZTwva2V5PgoJCQkJCTxkYXRlPjIwMDktMTItMDNUMDI6NDg6MThaPC9kYXRlPgoJCQkJ
CTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdl
cj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNv
bS5hcHBsZS5wcmludC5QYXBlckluZm8uUE1QYXBlck5hbWU8L2tleT4KCQk8ZGljdD4KCQkJPGtl
eT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBw
bGUucHJpbnQucG0uUG9zdFNjcmlwdDwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50
aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk+Y29t
LmFwcGxlLnByaW50LlBhcGVySW5mby5QTVBhcGVyTmFtZTwva2V5PgoJCQkJCTxzdHJpbmc+aXNv
LWE0PC9zdHJpbmc+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNsaWVudDwva2V5
PgoJCQkJCTxzdHJpbmc+Y29tLmFwcGxlLnByaW50LnBtLlBvc3RTY3JpcHQ8L3N0cmluZz4KCQkJ
CQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQubW9kRGF0ZTwva2V5PgoJCQkJCTxkYXRlPjIw
MDMtMDctMDFUMTc6NDk6MzZaPC9kYXRlPgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tl
dC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4xPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJ
CQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm8uUE1V
bmFkanVzdGVkUGFnZVJlY3Q8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQu
dGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUucHJpbnQucG0uUG9zdFNj
cmlwdDwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9r
ZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhcGVy
SW5mby5QTVVuYWRqdXN0ZWRQYWdlUmVjdDwva2V5PgoJCQkJCTxhcnJheT4KCQkJCQkJPHJlYWw+
MC4wPC9yZWFsPgoJCQkJCQk8cmVhbD4wLjA8L3JlYWw+CgkJCQkJCTxyZWFsPjc4MzwvcmVhbD4K
CQkJCQkJPHJlYWw+NTU5PC9yZWFsPgoJCQkJCTwvYXJyYXk+CgkJCQkJPGtleT5jb20uYXBwbGUu
cHJpbnQudGlja2V0LmNsaWVudDwva2V5PgoJCQkJCTxzdHJpbmc+Y29tLmFwcGxlLnByaW50aW5n
bWFuYWdlcjwvc3RyaW5nPgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5tb2REYXRl
PC9rZXk+CgkJCQkJPGRhdGU+MjAwNy0wOC0wN1QwMjozNTowOVo8L2RhdGU+CgkJCQkJPGtleT5j
b20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2lu
dGVnZXI+CgkJCQk8L2RpY3Q+CgkJCTwvYXJyYXk+CgkJPC9kaWN0PgoJCTxrZXk+Y29tLmFwcGxl
LnByaW50LlBhcGVySW5mby5QTVVuYWRqdXN0ZWRQYXBlclJlY3Q8L2tleT4KCQk8ZGljdD4KCQkJ
PGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20u
YXBwbGUucHJpbnQucG0uUG9zdFNjcmlwdDwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmlu
dC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk+
Y29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVVuYWRqdXN0ZWRQYXBlclJlY3Q8L2tleT4KCQkJ
CQk8YXJyYXk+CgkJCQkJCTxyZWFsPi0xODwvcmVhbD4KCQkJCQkJPHJlYWw+LTE4PC9yZWFsPgoJ
CQkJCQk8cmVhbD44MjQ8L3JlYWw+CgkJCQkJCTxyZWFsPjU3NzwvcmVhbD4KCQkJCQk8L2FycmF5
PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jbGllbnQ8L2tleT4KCQkJCQk8c3Ry
aW5nPmNvbS5hcHBsZS5wcmludGluZ21hbmFnZXI8L3N0cmluZz4KCQkJCQk8a2V5PmNvbS5hcHBs
ZS5wcmludC50aWNrZXQubW9kRGF0ZTwva2V5PgoJCQkJCTxkYXRlPjIwMDctMDgtMDdUMDI6MzU6
MDlaPC9kYXRlPgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tl
eT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwv
ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm8ucHBkLlBNUGFwZXJOYW1lPC9r
ZXk+CgkJPGRpY3Q+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+
CgkJCTxzdHJpbmc+Y29tLmFwcGxlLnByaW50LnBtLlBvc3RTY3JpcHQ8L3N0cmluZz4KCQkJPGtl
eT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJyYXk+CgkJCQk8
ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm8ucHBkLlBNUGFwZXJOYW1l
PC9rZXk+CgkJCQkJPHN0cmluZz5BNDwvc3RyaW5nPgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50
LnRpY2tldC5jbGllbnQ8L2tleT4KCQkJCQk8c3RyaW5nPmNvbS5hcHBsZS5wcmludC5wbS5Qb3N0
U2NyaXB0PC9zdHJpbmc+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lm1vZERhdGU8
L2tleT4KCQkJCQk8ZGF0ZT4yMDAzLTA3LTAxVDE3OjQ5OjM2WjwvZGF0ZT4KCQkJCQk8a2V5PmNv
bS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJCQkJPGludGVnZXI+MTwvaW50
ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJheT4KCQk8L2RpY3Q+CgkJPGtleT5jb20uYXBwbGUu
cHJpbnQudGlja2V0LkFQSVZlcnNpb248L2tleT4KCQk8c3RyaW5nPjAwLjIwPC9zdHJpbmc+CgkJ
PGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnByaXZhdGVMb2NrPC9rZXk+CgkJPGZhbHNlLz4K
CQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQudHlwZTwva2V5PgoJCTxzdHJpbmc+Y29tLmFw
cGxlLnByaW50LlBhcGVySW5mb1RpY2tldDwvc3RyaW5nPgoJPC9kaWN0PgoJPGtleT5jb20uYXBw
bGUucHJpbnQudGlja2V0LkFQSVZlcnNpb248L2tleT4KCTxzdHJpbmc+MDAuMjA8L3N0cmluZz4K
CTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5wcml2YXRlTG9jazwva2V5PgoJPGZhbHNlLz4K
CTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC50eXBlPC9rZXk+Cgk8c3RyaW5nPmNvbS5hcHBs
ZS5wcmludC5QYWdlRm9ybWF0VGlja2V0PC9zdHJpbmc+CjwvZGljdD4KPC9wbGlzdD4KOEJJTQPt
AAAAAAAQAEgAAAABAAIASAAAAAEAAjhCSU0EJgAAAAAADgAAAAAAAAAAAAA/gAAAOEJJTQQNAAAA
AAAEAAAAHjhCSU0EGQAAAAAABAAAAB44QklNA/MAAAAAAAkAAAAAAAAAAAEAOEJJTQQKAAAAAAAB
AAA4QklNJxAAAAAAAAoAAQAAAAAAAAACOEJJTQP1AAAAAABIAC9mZgABAGxmZgAGAAAAAAABAC9m
ZgABAKGZmgAGAAAAAAABADIAAAABAFoAAAAGAAAAAAABADUAAAABAC0AAAAGAAAAAAABOEJJTQP4
AAAAAABwAAD/////////////////////////////A+gAAAAA////////////////////////////
/wPoAAAAAP////////////////////////////8D6AAAAAD/////////////////////////////
A+gAADhCSU0ECAAAAAAAEAAAAAEAAAJAAAACQAAAAAA4QklNBB4AAAAAAAQAAAAAOEJJTQQaAAAA
AAM9AAAABgAAAAAAAAAAAAAAtwAAAMIAAAAEAGIAYQByAGEAAAABAAAAAAAAAAAAAAAAAAAAAAAA
AAEAAAAAAAAAAAAAAMIAAAC3AAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEAAA
AAEAAAAAAABudWxsAAAAAgAAAAZib3VuZHNPYmpjAAAAAQAAAAAAAFJjdDEAAAAEAAAAAFRvcCBs
b25nAAAAAAAAAABMZWZ0bG9uZwAAAAAAAAAAQnRvbWxvbmcAAAC3AAAAAFJnaHRsb25nAAAAwgAA
AAZzbGljZXNWbExzAAAAAU9iamMAAAABAAAAAAAFc2xpY2UAAAASAAAAB3NsaWNlSURsb25nAAAA
AAAAAAdncm91cElEbG9uZwAAAAAAAAAGb3JpZ2luZW51bQAAAAxFU2xpY2VPcmlnaW4AAAANYXV0
b0dlbmVyYXRlZAAAAABUeXBlZW51bQAAAApFU2xpY2VUeXBlAAAAAEltZyAAAAAGYm91bmRzT2Jq
YwAAAAEAAAAAAABSY3QxAAAABAAAAABUb3AgbG9uZwAAAAAAAAAATGVmdGxvbmcAAAAAAAAAAEJ0
b21sb25nAAAAtwAAAABSZ2h0bG9uZwAAAMIAAAADdXJsVEVYVAAAAAEAAAAAAABudWxsVEVYVAAA
AAEAAAAAAABNc2dlVEVYVAAAAAEAAAAAAAZhbHRUYWdURVhUAAAAAQAAAAAADmNlbGxUZXh0SXNI
VE1MYm9vbAEAAAAIY2VsbFRleHRURVhUAAAAAQAAAAAACWhvcnpBbGlnbmVudW0AAAAPRVNsaWNl
SG9yekFsaWduAAAAB2RlZmF1bHQAAAAJdmVydEFsaWduZW51bQAAAA9FU2xpY2VWZXJ0QWxpZ24A
AAAHZGVmYXVsdAAAAAtiZ0NvbG9yVHlwZWVudW0AAAARRVNsaWNlQkdDb2xvclR5cGUAAAAATm9u
ZQAAAAl0b3BPdXRzZXRsb25nAAAAAAAAAApsZWZ0T3V0c2V0bG9uZwAAAAAAAAAMYm90dG9tT3V0
c2V0bG9uZwAAAAAAAAALcmlnaHRPdXRzZXRsb25nAAAAAAA4QklNBCgAAAAAAAwAAAABP/AAAAAA
AAA4QklNBBEAAAAAAAEBADhCSU0EFAAAAAAABAAAAAE4QklNBAwAAAAAFLcAAAABAAAAoAAAAJcA
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
TXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRh
LyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNC4xLWMwMzYgNDYuMjc2NzIwLCBNb24gRmViIDE5
IDIwMDcgMjI6MTM6NDMgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFi
b3V0PSIiIHhtbG5zOnhhcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxu
czpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIg
eG1sbnM6eGFwPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDov
L3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFk
b2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90
aWZmLzEuMC8iIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIiB4YXBN
TTpEb2N1bWVudElEPSJ1dWlkOjE0MEQxMjBCRTE5NDExREVBQzI0QzNFMzdEMzM0RDU3IiB4YXBN
TTpJbnN0YW5jZUlEPSJ1dWlkOjE0MEQxMjBDRTE5NDExREVBQzI0QzNFMzdEMzM0RDU3IiB4YXA6
Q3JlYXRlRGF0ZT0iMjAwOS0xMi0wM1QxMTo0ODozNCswOTowMCIgeGFwOk1vZGlmeURhdGU9IjIw
MDktMTItMDNUMTE6NDg6MzQrMDk6MDAiIHhhcDpNZXRhZGF0YURhdGU9IjIwMDktMTItMDNUMTE6
NDg6MzQrMDk6MDAiIHhhcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTMyBNYWNpbnRv
c2giIGRjOmZvcm1hdD0iaW1hZ2UvanBlZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9z
aG9wOkhpc3Rvcnk9IiIgdGlmZjpPcmllbnRhdGlvbj0iMSIgdGlmZjpYUmVzb2x1dGlvbj0iNzIw
MDAwLzEwMDAwIiB0aWZmOllSZXNvbHV0aW9uPSI3MjAwMDAvMTAwMDAiIHRpZmY6UmVzb2x1dGlv
blVuaXQ9IjIiIHRpZmY6TmF0aXZlRGlnZXN0PSIyNTYsMjU3LDI1OCwyNTksMjYyLDI3NCwyNzcs
Mjg0LDUzMCw1MzEsMjgyLDI4MywyOTYsMzAxLDMxOCwzMTksNTI5LDUzMiwzMDYsMjcwLDI3MSwy
NzIsMzA1LDMxNSwzMzQzMjs2RkRBQjBDN0YzQjMwMTBDNDQ1MjMxMzVEMUNFOThBRCIgZXhpZjpQ
aXhlbFhEaW1lbnNpb249IjE5NCIgZXhpZjpQaXhlbFlEaW1lbnNpb249IjE4MyIgZXhpZjpDb2xv
clNwYWNlPSItMSIgZXhpZjpOYXRpdmVEaWdlc3Q9IjM2ODY0LDQwOTYwLDQwOTYxLDM3MTIxLDM3
MTIyLDQwOTYyLDQwOTYzLDM3NTEwLDQwOTY0LDM2ODY3LDM2ODY4LDMzNDM0LDMzNDM3LDM0ODUw
LDM0ODUyLDM0ODU1LDM0ODU2LDM3Mzc3LDM3Mzc4LDM3Mzc5LDM3MzgwLDM3MzgxLDM3MzgyLDM3
MzgzLDM3Mzg0LDM3Mzg1LDM3Mzg2LDM3Mzk2LDQxNDgzLDQxNDg0LDQxNDg2LDQxNDg3LDQxNDg4
LDQxNDkyLDQxNDkzLDQxNDk1LDQxNzI4LDQxNzI5LDQxNzMwLDQxOTg1LDQxOTg2LDQxOTg3LDQx
OTg4LDQxOTg5LDQxOTkwLDQxOTkxLDQxOTkyLDQxOTkzLDQxOTk0LDQxOTk1LDQxOTk2LDQyMDE2
LDAsMiw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwyMCwyMiwyMywyNCwy
NSwyNiwyNywyOCwzMDs5RjEzODkwQjBDNDI0NURGNzQ2RkJCMzI4RDIyNjI1NSI+IDx4YXBNTTpE
ZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ1dWlkOjkyNTkyMjA2NDY2QzExRENBNEFEQzg4
ODEzNTY4ODAwIiBzdFJlZjpkb2N1bWVudElEPSJ1dWlkOjkyNTkyMjA1NDY2QzExRENBNEFEQzg4
ODEzNTY4ODAwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/eHBh
Y2tldCBlbmQ9InciPz7/7gAOQWRvYmUAZAAAAAAB/9sAhAAGBAQEBQQGBQUGCQYFBgkLCAYGCAsM
CgoLCgoMEAwMDAwMDBAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQcHBw0MDRgQEBgUDg4O
FBQODg4OFBEMDAwMDBERDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAC3
AMIDAREAAhEBAxEB/90ABAAZ/8QAwgAAAQQDAQAAAAAAAAAAAAAAAAIDBAUGBwgBAQABBQEBAAAA
AAAAAAAAAAAAAQIDBAUGBxAAAQMCAwMIBggDBQQLAAAAAQACAxEEIRIFMUEGUWEiMkJSEwdxgZGh
YhSxwXKCkqIjM9GyFfBDNRYI4fHCY/JTc5OjwyQ0VDYXEQACAQIDAwcKAwUGBwEAAAAAAQIRAyES
BDEyBUFRIkJSYhPwYXKCkqKywtIG4jMUcYGxI3ORQ1NjgxWh0fKjs9OkJP/aAAwDAQACEQMRAD8A
6pQAIAEACABAAgCLd31paQm4up2WsAFXSzODGj0uJASNpbR9u3KbpFOUu6YTq/nLwjZZo7Iy6nKP
/jMyx1/7R+UfhzqtLVxWzpG5p/tvUTxlS0u/vezExG/87eJZ6tsNOtrNmwOmLp3+7I1V5auXIbFn
7ZsR35Sm+7/L+oobrzK8wLjrauYR3YYom+/KXfmUT1FznNCHBtHHqZvSlL/mQDxnxwcRr156n/7F
G79znZYXDtL/AIUCv1HiPiO8wvtbupWjsOmeG/haaJkrs5crLNnR2IbluC9VFPI62eavlzu5XEuU
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
cQAgAQAIAEACABAH/9k=
では、これをコピーしてWEB上のデコードサービスに投げ込んでみましょう。(http://www.opinionatedgeek.com/dotnet/tools/base64decode/)
はい、データが帰ってきました。エクステンションがbinで返されていますのでエクステンションを変更しておきましょう。この様にデータが埋め込まれている場合は、デスクトップにドロップすると、そのスニペットにはオリジナルのデータが包含されるのです。ここで一つ注意なのですが、リンクされたデータの場合はスニペットに含まれるのはリンク情報です。データを抜き出す事はできません。
しかしながら、毎回コピペでWEBアプリ利用するのは面倒です。自前でなんとかしましょう。
var str = “”;
var s = “”;
var dat = “”;
var flg = false;
var extension = “”;
var re = /<Contents><!\[CDATA\[(.*)/;
var re2 = /(.+)\]\]><\/Contents>/;
var f = prompt (“Input file name?”, “retrievedFile”, “Set file name.”);
var tgFile = File.openDialog(“Select source file”);
var rslt = new File (‘~/Desktop/’+f);
if(tgFile.open(‘r’)&&rslt.open(‘w’)){
rslt.encoding = ‘binary’;
while(!tgFile.eof){
s = tgFile.readln();
if (s.indexOf(“ImageTypeName”)>0){
extension = detectType(s);
alert (“Filetype : ” + extension);
}
if (flg){
str = s.match(re2);
if (str!=null){
rslt.write(decB64(RegExp.$1));
break;
} else {
str = decB64(s);
rslt.write(str);
str = “”;
continue;
}
} else {
str = s.match(re);
if (str==null) continue;
flg = true;
str = decB64(RegExp.$1);
rslt.write(str);
str = “”;
}
}
tgFile.close();
rslt.close();
rslt.copy(“~/Desktop/” + f + “.” + extension);
rslt.remove ();
}
function decB64(input) {
var keyStr = “ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=”;
var rs = “”;
var c1 = “”, c2 = “”, c3 = “”;
var e1 = “”, e2 = “”, e3 = “”, e4 = “”;
var i = 0;
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, “”);
while (i<input.length){
e1 = keyStr.indexOf(input.charAt(i++));
e2 = keyStr.indexOf(input.charAt(i++));
e3 = keyStr.indexOf(input.charAt(i++));
e4 = keyStr.indexOf(input.charAt(i++));
c1 = (e1 << 2) | (e2 >> 4);
c2 = ((e2 & 15) << 4) | (e3 >> 2);
c3 = ((e3 & 3) << 6) | e4;
rs += String.fromCharCode(c1);
if (e3!=64) rs += String.fromCharCode(c2);
if (e4!=64) rs += String.fromCharCode(c3);
c1 = c2 = c3 = “”;
e1 = e2 = e3 = e4 = “”;
}
return rs;
}
function detectType(st){
var ls = [“$ID/Portable Network Graphics (PNG)”,
“$ID/Photoshop”,
“$ID/JPEG”,
“$ID/EPS”,
“$ID/TIFF”,
“$ID/Adobe Portable Document Format (PDF)”];
var ext = [“png”,”psd”,”jpg”,”eps”,”tiff”,”pdf”]
for (var i=0;i<6;i++)
if (st.indexOf (ls[i])>0) return ext[i];
return “dat”;
}
<input.length){ e1="keyStr.indexOf(input.charAt(i++));" e2="keyStr.indexOf(input.charAt(i++));" e3="keyStr.indexOf(input.charAt(i++));" e4="keyStr.indexOf(input.charAt(i++));" c1="(e1" <
64デコーダファンクションは度々出てきているお馴染みのものです。ファイルをオープンして該当する部分を抜き出すのは正規表現です。単純なものなのでそう難しくはありませんね。
動作的には、スニペットから一行ずつ読み出してデコーダ通して別ファイルに書き込む、の繰り返しで処理しています。
さて、ここで悪いお知らせです。ビットマップ系のデータ(画像)では以上の手順で問題ありません。しかしながら、AIネイティブファイルが埋め込まれている場合はIndesignが埋込処理を行う時にデータの改ざんを行います。おそらく最適化の類いだと思われますが、この処理はAIネイティブフォーマットであるPGFフォーマットのメタデータを破壊してしまうようです。PDF部分は改変があるものの正常なデータとして存在しますのでAcrobatでは正常に扱う事ができます。しかし、この抽出したAIファイルはもはやIllustratorでは開く事ができません。
埋め込んだのだから再度、元のアプリで編集する事はあり得ないという認識に立てばPGFを除外する事は真っ当な思考だと思います。しかしながら、このPGFフォーマット部分は中途半端に残されている為にAIがエラーを吐きます。せめて、完全に取り去ってあればPDFとしてAIで開く事もできるはずなのに。へんなバグです。