Skip to content

Instantly share code, notes, and snippets.

@sajayantony
Last active November 2, 2021 22:31
Show Gist options
  • Save sajayantony/75bd90a7f3db4980b02b32bb6d23fd54 to your computer and use it in GitHub Desktop.
Save sajayantony/75bd90a7f3db4980b02b32bb6d23fd54 to your computer and use it in GitHub Desktop.
oras-types-uml
Display the source blob
Display the rendered blob
Raw
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="2059px" preserveAspectRatio="none" style="width:5395px;height:2059px;" version="1.1" viewBox="0 0 5395 2059" width="5395px" zoomAndPan="magnify"><defs/><g><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="399" x="2500" y="16.708">https://www.github.com/oras-project/oras-go</text><!--MD5=[0c4a738b3201a23a254af68352446157]
cluster auth--><polygon fill="#FFFFFF" points="3357,120.4531,3398,120.4531,3405,142.75,4367,142.75,4367,477.9531,3357,477.9531,3357,120.4531" style="stroke: #000000; stroke-width: 1.5;"/><line style="stroke: #000000; stroke-width: 1.5;" x1="3357" x2="3405" y1="142.75" y2="142.75"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="35" x="3361" y="135.4482">auth</text><!--MD5=[3a99a4dbfc0dec0b14f698d556913447]
cluster content--><polygon fill="#FFFFFF" points="1804,566.9531,1871,566.9531,1878,589.25,5274,589.25,5274,1959.9531,1804,1959.9531,1804,566.9531" style="stroke: #000000; stroke-width: 1.5;"/><line style="stroke: #000000; stroke-width: 1.5;" x1="1804" x2="1878" y1="589.25" y2="589.25"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="61" x="1808" y="581.9482">content</text><!--MD5=[26b23ba35003a7b318d311807c678c69]
cluster remotes--><polygon fill="#FFFFFF" points="2045,394.9531,2117,394.9531,2124,417.25,2262,417.25,2262,477.9531,2045,477.9531,2045,394.9531" style="stroke: #000000; stroke-width: 1.5;"/><line style="stroke: #000000; stroke-width: 1.5;" x1="2045" x2="2124" y1="417.25" y2="417.25"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="66" x="2049" y="409.9482">remotes</text><!--MD5=[41793ebf2473be711c2d2bac7d4ab610]
cluster io--><polygon fill="#FFFFFF" points="2838,394.9531,2858,394.9531,2865,417.25,2944,417.25,2944,477.9531,2838,477.9531,2838,394.9531" style="stroke: #000000; stroke-width: 1.5;"/><line style="stroke: #000000; stroke-width: 1.5;" x1="2838" x2="2865" y1="417.25" y2="417.25"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="14" x="2842" y="409.9482">io</text><!--MD5=[548e49a641a4be10c4b466f18cafe0d4]
cluster go-digest--><polygon fill="#FFFFFF" points="5282,1257.4531,5363,1257.4531,5370,1279.75,5373,1279.75,5373,1340.4531,5282,1340.4531,5282,1257.4531" style="stroke: #000000; stroke-width: 1.5;"/><line style="stroke: #000000; stroke-width: 1.5;" x1="5282" x2="5370" y1="1279.75" y2="1279.75"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="75" x="5286" y="1272.4482">go-digest</text><!--MD5=[5ec7eedd57310648f8059ffb2621ca4b]
cluster docker--><polygon fill="#FFFFFF" points="4375,330.9531,4436,330.9531,4443,353.25,4967,353.25,4967,541.9531,4375,541.9531,4375,330.9531" style="stroke: #000000; stroke-width: 1.5;"/><line style="stroke: #000000; stroke-width: 1.5;" x1="4375" x2="4443" y1="353.25" y2="353.25"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="55" x="4379" y="345.9482">docker</text><!--MD5=[6c550be60240c14d70d88223f013044f]
cluster oras--><polygon fill="#FFFFFF" points="14,81.9531,55,81.9531,62,104.25,2037,104.25,2037,535.4531,14,535.4531,14,81.9531" style="stroke: #000000; stroke-width: 1.5;"/><line style="stroke: #000000; stroke-width: 1.5;" x1="14" x2="62" y1="104.25" y2="104.25"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="35" x="18" y="96.9482">oras</text><!--MD5=[26c5909e3beb0655f44a32ec04b7bf98]
cluster target--><polygon fill="#FFFFFF" points="4834,152.4531,4888,152.4531,4895,174.75,4924,174.75,4924,235.4531,4834,235.4531,4834,152.4531" style="stroke: #000000; stroke-width: 1.5;"/><line style="stroke: #000000; stroke-width: 1.5;" x1="4834" x2="4895" y1="174.75" y2="174.75"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="48" x="4838" y="167.4482">target</text><!--MD5=[ff1caba15de5209cae05ef0dcb067aa3]
class auth.Client--><rect fill="#FEFECE" height="112.0234" id="auth.Client" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="576" x="3783" y="147.4531"/><ellipse cx="4049.25" cy="163.4531" fill="#B4A7E5" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M4045.1719,159.2188 L4045.1719,157.0625 L4052.5625,157.0625 L4052.5625,159.2188 L4050.0938,159.2188 L4050.0938,167.2969 L4052.5625,167.2969 L4052.5625,169.4531 L4045.1719,169.4531 L4045.1719,167.2969 L4047.6406,167.2969 L4047.6406,159.2188 L4045.1719,159.2188 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="35" x="4069.75" y="167.6074">Client</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3784" x2="4358" y1="179.4531" y2="179.4531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3784" x2="4358" y1="187.4531" y2="187.4531"/><ellipse cx="3794" cy="198.4531" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="550" x="3803" y="201.6636">Login(ctx context.Context, hostname string, username string, secret string, insecure bool) error</text><ellipse cx="3794" cy="211.2578" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="246" x="3803" y="214.4683">LoginWithOpts(options ...LoginOption) error</text><ellipse cx="3794" cy="224.0625" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="289" x="3803" y="227.2729">Logout(ctx context.Context, hostname string) error</text><ellipse cx="3794" cy="236.8672" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="513" x="3803" y="240.0776">Resolver(ctx context.Context, client *http.Client, plainHTTP bool) (remotes.Resolver, error)</text><ellipse cx="3794" cy="249.6719" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="401" x="3803" y="252.8823">ResolverWithOpts(options ...ResolverOption) (remotes.Resolver, error)</text><!--MD5=[404cfc3ec4e11392d78f2e454ce00c91]
class auth.LoginOption--><rect fill="#FEFECE" height="48" id="auth.LoginOption" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="106" x="3613" y="421.9531"/><ellipse cx="3628" cy="437.9531" fill="#FF7700" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M3628.8438,444.7031 L3626.3906,444.7031 L3626.3906,434.4531 L3623.25,434.4531 L3623.25,432.3125 L3631.9844,432.3125 L3631.9844,434.4531 L3628.8438,434.4531 L3628.8438,444.7031 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="74" x="3642" y="442.1074">LoginOption</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3614" x2="3718" y1="453.9531" y2="453.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3614" x2="3718" y1="461.9531" y2="461.9531"/><!--MD5=[f8007bdd65beada911f8e55a35962e60]
class auth.ResolverOption--><rect fill="#FEFECE" height="48" id="auth.ResolverOption" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="126" x="3394" y="421.9531"/><ellipse cx="3409" cy="437.9531" fill="#FF7700" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M3409.8438,444.7031 L3407.3906,444.7031 L3407.3906,434.4531 L3404.25,434.4531 L3404.25,432.3125 L3412.9844,432.3125 L3412.9844,434.4531 L3409.8438,434.4531 L3409.8438,444.7031 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="94" x="3423" y="442.1074">ResolverOption</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3395" x2="3519" y1="453.9531" y2="453.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3395" x2="3519" y1="461.9531" y2="461.9531"/><!--MD5=[6926c499a7201d160c2f125325cfce76]
class auth.<font color=blue>func</font>(*LoginSettings) --><rect fill="#FEFECE" height="48" id="auth.&lt;font color=blue&gt;func&lt;/font&gt;(*LoginSettings) " rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="164" x="3584" y="179.4531"/><ellipse cx="3599" cy="195.4531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M3601.9688,201.0938 Q3601.3906,201.3906 3600.75,201.5313 Q3600.1094,201.6875 3599.4063,201.6875 Q3596.9063,201.6875 3595.5781,200.0469 Q3594.2656,198.3906 3594.2656,195.2656 Q3594.2656,192.1406 3595.5781,190.4844 Q3596.9063,188.8281 3599.4063,188.8281 Q3600.1094,188.8281 3600.75,188.9844 Q3601.4063,189.1406 3601.9688,189.4375 L3601.9688,192.1563 Q3601.3438,191.5781 3600.75,191.3125 Q3600.1563,191.0313 3599.5313,191.0313 Q3598.1875,191.0313 3597.5,192.1094 Q3596.8125,193.1719 3596.8125,195.2656 Q3596.8125,197.3594 3597.5,198.4375 Q3598.1875,199.5 3599.5313,199.5 Q3600.1563,199.5 3600.75,199.2344 Q3601.3438,198.9531 3601.9688,198.375 L3601.9688,201.0938 Z "/><text fill="#0000FF" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="27" x="3613" y="199.6074">func</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="101" x="3640" y="199.6074">(*LoginSettings)</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3585" x2="3747" y1="211.4531" y2="211.4531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3585" x2="3747" y1="219.4531" y2="219.4531"/><!--MD5=[99be0f248bd79c2f0deb45605ec5c3c8]
class auth.<font color=blue>func</font>(*ResolverSettings) --><rect fill="#FEFECE" height="48" id="auth.&lt;font color=blue&gt;func&lt;/font&gt;(*ResolverSettings) " rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="184" x="3365" y="179.4531"/><ellipse cx="3380" cy="195.4531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M3382.9688,201.0938 Q3382.3906,201.3906 3381.75,201.5313 Q3381.1094,201.6875 3380.4063,201.6875 Q3377.9063,201.6875 3376.5781,200.0469 Q3375.2656,198.3906 3375.2656,195.2656 Q3375.2656,192.1406 3376.5781,190.4844 Q3377.9063,188.8281 3380.4063,188.8281 Q3381.1094,188.8281 3381.75,188.9844 Q3382.4063,189.1406 3382.9688,189.4375 L3382.9688,192.1563 Q3382.3438,191.5781 3381.75,191.3125 Q3381.1563,191.0313 3380.5313,191.0313 Q3379.1875,191.0313 3378.5,192.1094 Q3377.8125,193.1719 3377.8125,195.2656 Q3377.8125,197.3594 3378.5,198.4375 Q3379.1875,199.5 3380.5313,199.5 Q3381.1563,199.5 3381.75,199.2344 Q3382.3438,198.9531 3382.9688,198.375 L3382.9688,201.0938 Z "/><text fill="#0000FF" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="27" x="3394" y="199.6074">func</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="121" x="3421" y="199.6074">(*ResolverSettings)</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3366" x2="3548" y1="211.4531" y2="211.4531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3366" x2="3548" y1="219.4531" y2="219.4531"/><!--MD5=[f7d971ddc0bd469abbec19fe58d0eb63]
class content.Decompress--><rect fill="#FEFECE" height="99.2188" id="content.Decompress" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="413" x="2388.5" y="785.9531"/><ellipse cx="2551.75" cy="801.9531" fill="#7FFFD4" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2551.2344,802.5156 Q2549.375,801.8125 2548.7188,801.0469 Q2548.0781,800.2656 2548.0781,798.9531 Q2548.0781,797.2656 2549.1563,796.2969 Q2550.2344,795.3281 2552.1094,795.3281 Q2552.9688,795.3281 2553.8125,795.5313 Q2554.6719,795.7188 2555.5156,796.1094 L2555.5156,798.5 Q2554.7344,797.9375 2553.9063,797.6563 Q2553.0938,797.3594 2552.2969,797.3594 Q2551.4219,797.3594 2550.9375,797.7188 Q2550.4688,798.0781 2550.4688,798.7344 Q2550.4688,799.25 2550.8125,799.5938 Q2551.1563,799.9219 2552.25,800.3281 L2553.3125,800.7344 Q2554.7969,801.2813 2555.5,802.1875 Q2556.2188,803.0938 2556.2188,804.4688 Q2556.2188,806.3438 2555.1094,807.2656 Q2554,808.1875 2551.75,808.1875 Q2550.8281,808.1875 2549.9063,807.9688 Q2548.9844,807.75 2548.125,807.3281 L2548.125,804.7969 Q2549.0938,805.4844 2550.0156,805.8281 Q2550.9375,806.1719 2551.8281,806.1719 Q2552.7344,806.1719 2553.2344,805.7656 Q2553.7344,805.3438 2553.7344,804.6094 Q2553.7344,804.0469 2553.3906,803.6406 Q2553.0625,803.2188 2552.4375,802.9688 L2551.2344,802.5156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="78" x="2572.25" y="806.1074">Decompress</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="2389.5" x2="2800.5" y1="817.9531" y2="817.9531"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="2396.5" y="825.9531"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="136" x="2408.5" y="832.1636">pusher remotes.Pusher</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="2396.5" y="838.7578"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="69" x="2408.5" y="844.9683">blocksize int</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="2396.5" y="851.5625"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="136" x="2408.5" y="857.7729">multiWriterIngester bool</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="2389.5" x2="2800.5" y1="864.3672" y2="864.3672"/><ellipse cx="2399.5" cy="875.3672" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="387" x="2408.5" y="878.5776">Push(ctx context.Context, desc v1.Descriptor) (content.Writer, error)</text><!--MD5=[431f763343b967f7964f28c270b7be10]
class content.File--><rect fill="#FEFECE" height="483.3594" id="content.File" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="542" x="2980" y="593.9531"/><ellipse cx="3236.25" cy="609.9531" fill="#7FFFD4" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M3235.7344,610.5156 Q3233.875,609.8125 3233.2188,609.0469 Q3232.5781,608.2656 3232.5781,606.9531 Q3232.5781,605.2656 3233.6563,604.2969 Q3234.7344,603.3281 3236.6094,603.3281 Q3237.4688,603.3281 3238.3125,603.5313 Q3239.1719,603.7188 3240.0156,604.1094 L3240.0156,606.5 Q3239.2344,605.9375 3238.4063,605.6563 Q3237.5938,605.3594 3236.7969,605.3594 Q3235.9219,605.3594 3235.4375,605.7188 Q3234.9688,606.0781 3234.9688,606.7344 Q3234.9688,607.25 3235.3125,607.5938 Q3235.6563,607.9219 3236.75,608.3281 L3237.8125,608.7344 Q3239.2969,609.2813 3240,610.1875 Q3240.7188,611.0938 3240.7188,612.4688 Q3240.7188,614.3438 3239.6094,615.2656 Q3238.5,616.1875 3236.25,616.1875 Q3235.3281,616.1875 3234.4063,615.9688 Q3233.4844,615.75 3232.625,615.3281 L3232.625,612.7969 Q3233.5938,613.4844 3234.5156,613.8281 Q3235.4375,614.1719 3236.3281,614.1719 Q3237.2344,614.1719 3237.7344,613.7656 Q3238.2344,613.3438 3238.2344,612.6094 Q3238.2344,612.0469 3237.8906,611.6406 Q3237.5625,611.2188 3236.9375,610.9688 L3235.7344,610.5156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="21" x="3256.75" y="614.1074">File</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="2981" x2="3521" y1="625.9531" y2="625.9531"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="2988" y="633.9531"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="60" x="3000" y="640.1636">root string</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="2988" y="646.7578"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="121" x="3000" y="652.9683">descriptor *sync.Map</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="2988" y="659.5625"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="111" x="3000" y="665.7729">pathMap *sync.Map</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="2988" y="672.3672"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="133" x="3000" y="678.5776">memoryMap *sync.Map</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="2988" y="685.1719"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="102" x="3000" y="691.3823">refMap *sync.Map</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="2988" y="697.9766"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="111" x="3000" y="704.187">tmpFiles *sync.Map</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="2988" y="710.7813"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="112" x="3000" y="716.9917">ignoreNoName bool</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="0" x="3004" y="729.7964"/><ellipse cx="2991" cy="739.3906" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="125" x="3000" y="742.6011">DisableOverwrite bool</text><ellipse cx="2991" cy="752.1953" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="180" x="3000" y="755.4058">AllowPathTraversalOnWrite bool</text><ellipse cx="2991" cy="765" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="101" x="3000" y="768.2104">Reproducible bool</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="2981" x2="3521" y1="774.8047" y2="774.8047"/><rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="2988" y="782.8047"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="468" x="3000" y="789.0151">descFromFile(info os.FileInfo, mediaType string, path string) (v1.Descriptor, error)</text><rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="2988" y="795.6094"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="449" x="3000" y="801.8198">descFromDir(name string, mediaType string, root string) (v1.Descriptor, error)</text><rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="2988" y="808.4141"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="148" x="3000" y="814.6245">tempFile() (*os.File, error)</text><rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="2988" y="821.2188"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="254" x="3000" y="827.4292">resolveWritePath(name string) (string, error)</text><rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="2988" y="834.0234"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="406" x="3000" y="840.2339">createWritePath(path string, desc v1.Descriptor, prefix string) (*os.File,</text><text fill="#0000FF" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="24" x="3410" y="840.2339">func</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="82" x="3434" y="840.2339">() error, error)</text><rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="2988" y="846.8281"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="174" x="3000" y="853.0386">resolvePath(path string) string</text><rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="2988" y="859.6328"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="133" x="3000" y="865.8433">set(desc v1.Descriptor)</text><rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="2988" y="872.4375"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="253" x="3000" y="878.6479">get(desc v1.Descriptor) (v1.Descriptor, bool)</text><rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="2988" y="885.2422"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="254" x="3000" y="891.4526">getMemory(desc v1.Descriptor) ([]byte, bool)</text><rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="2988" y="898.0469"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="3000" y="904.2573">getRef(ref string) (v1.Descriptor, bool)</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="0" x="3004" y="917.062"/><ellipse cx="2991" cy="926.6563" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="162" x="3000" y="929.8667">Resolver() remotes.Resolver</text><ellipse cx="2991" cy="939.4609" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="387" x="3000" y="942.6714">Resolve(ctx context.Context, ref string) (string, v1.Descriptor, error)</text><ellipse cx="2991" cy="952.2656" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="362" x="3000" y="955.4761">Fetcher(ctx context.Context, ref string) (remotes.Fetcher, error)</text><ellipse cx="2991" cy="965.0703" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="389" x="3000" y="968.2808">Fetch(ctx context.Context, desc v1.Descriptor) (io.ReadCloser, error)</text><ellipse cx="2991" cy="977.875" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="358" x="3000" y="981.0854">Pusher(ctx context.Context, ref string) (remotes.Pusher, error)</text><ellipse cx="2991" cy="990.6797" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="400" x="3000" y="993.8901">Add(name string, mediaType string, path string) (v1.Descriptor, error)</text><ellipse cx="2991" cy="1003.4844" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="244" x="3000" y="1006.6948">Load(desc v1.Descriptor, data []byte) error</text><ellipse cx="2991" cy="1016.2891" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="244" x="3000" y="1019.4995">Ref(ref string) (v1.Descriptor, []byte, error)</text><ellipse cx="2991" cy="1029.0938" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="73" x="3000" y="1032.3042">Close() error</text><ellipse cx="2991" cy="1041.8984" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="232" x="3000" y="1045.1089">MapPath(name string, path string) string</text><ellipse cx="2991" cy="1054.7031" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="183" x="3000" y="1057.9136">ResolvePath(name string) string</text><ellipse cx="2991" cy="1067.5078" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="382" x="3000" y="1070.7183">StoreManifest(ref string, desc v1.Descriptor, manifest []byte) error</text><!--MD5=[bb94a89e124548479e5a0f1246d9be57]
class content.IoContentWriter--><rect fill="#FEFECE" height="176.0469" id="content.IoContentWriter" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="552" x="3557" y="747.4531"/><ellipse cx="3779.75" cy="763.4531" fill="#7FFFD4" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M3779.2344,764.0156 Q3777.375,763.3125 3776.7188,762.5469 Q3776.0781,761.7656 3776.0781,760.4531 Q3776.0781,758.7656 3777.1563,757.7969 Q3778.2344,756.8281 3780.1094,756.8281 Q3780.9688,756.8281 3781.8125,757.0313 Q3782.6719,757.2188 3783.5156,757.6094 L3783.5156,760 Q3782.7344,759.4375 3781.9063,759.1563 Q3781.0938,758.8594 3780.2969,758.8594 Q3779.4219,758.8594 3778.9375,759.2188 Q3778.4688,759.5781 3778.4688,760.2344 Q3778.4688,760.75 3778.8125,761.0938 Q3779.1563,761.4219 3780.25,761.8281 L3781.3125,762.2344 Q3782.7969,762.7813 3783.5,763.6875 Q3784.2188,764.5938 3784.2188,765.9688 Q3784.2188,767.8438 3783.1094,768.7656 Q3782,769.6875 3779.75,769.6875 Q3778.8281,769.6875 3777.9063,769.4688 Q3776.9844,769.25 3776.125,768.8281 L3776.125,766.2969 Q3777.0938,766.9844 3778.0156,767.3281 Q3778.9375,767.6719 3779.8281,767.6719 Q3780.7344,767.6719 3781.2344,767.2656 Q3781.7344,766.8438 3781.7344,766.1094 Q3781.7344,765.5469 3781.3906,765.1406 Q3781.0625,764.7188 3780.4375,764.4688 L3779.2344,764.0156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="98" x="3800.25" y="767.6074">IoContentWriter</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3558" x2="4108" y1="779.4531" y2="779.4531"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="3565" y="787.4531"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="84" x="3577" y="793.6636">writer io.Writer</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="3565" y="800.2578"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="156" x="3577" y="806.4683">digester go-digest.Digester</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="3565" y="813.0625"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="54" x="3577" y="819.2729">size int64</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="3565" y="825.8672"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="131" x="3577" y="832.0776">hash *go-digest.Digest</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3558" x2="4108" y1="838.6719" y2="838.6719"/><ellipse cx="3568" cy="849.6719" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="142" x="3577" y="852.8823">Write(p []byte) (int, error)</text><ellipse cx="3568" cy="862.4766" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="73" x="3577" y="865.687">Close() error</text><ellipse cx="3568" cy="875.2813" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="141" x="3577" y="878.4917">Digest() go-digest.Digest</text><ellipse cx="3568" cy="888.0859" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="526" x="3577" y="891.2964">Commit(ctx context.Context, size int64, expected go-digest.Digest, opts ...content.Opt) error</text><ellipse cx="3568" cy="900.8906" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="177" x="3577" y="904.1011">Status() (content.Status, error)</text><ellipse cx="3568" cy="913.6953" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="145" x="3577" y="916.9058">Truncate(size int64) error</text><!--MD5=[b241b008a613c4e12a750214c8632763]
class content.Memory--><rect fill="#FEFECE" height="240.0703" id="content.Memory" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="442" x="4144" y="715.4531"/><ellipse cx="4336.75" cy="731.4531" fill="#7FFFD4" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M4336.2344,732.0156 Q4334.375,731.3125 4333.7188,730.5469 Q4333.0781,729.7656 4333.0781,728.4531 Q4333.0781,726.7656 4334.1563,725.7969 Q4335.2344,724.8281 4337.1094,724.8281 Q4337.9688,724.8281 4338.8125,725.0313 Q4339.6719,725.2188 4340.5156,725.6094 L4340.5156,728 Q4339.7344,727.4375 4338.9063,727.1563 Q4338.0938,726.8594 4337.2969,726.8594 Q4336.4219,726.8594 4335.9375,727.2188 Q4335.4688,727.5781 4335.4688,728.2344 Q4335.4688,728.75 4335.8125,729.0938 Q4336.1563,729.4219 4337.25,729.8281 L4338.3125,730.2344 Q4339.7969,730.7813 4340.5,731.6875 Q4341.2188,732.5938 4341.2188,733.9688 Q4341.2188,735.8438 4340.1094,736.7656 Q4339,737.6875 4336.75,737.6875 Q4335.8281,737.6875 4334.9063,737.4688 Q4333.9844,737.25 4333.125,736.8281 L4333.125,734.2969 Q4334.0938,734.9844 4335.0156,735.3281 Q4335.9375,735.6719 4336.8281,735.6719 Q4337.7344,735.6719 4338.2344,735.2656 Q4338.7344,734.8438 4338.7344,734.1094 Q4338.7344,733.5469 4338.3906,733.1406 Q4338.0625,732.7188 4337.4375,732.4688 L4336.2344,732.0156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="48" x="4357.25" y="735.6074">Memory</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="4145" x2="4585" y1="747.4531" y2="747.4531"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="4152" y="755.4531"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="58" x="4164" y="761.6636">descriptor</text><text fill="#0000FF" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="25" x="4226" y="761.6636">map</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="177" x="4251" y="761.6636">[go-digest.Digest]v1.Descriptor</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="4152" y="768.2578"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="42" x="4164" y="774.4683">content</text><text fill="#0000FF" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="25" x="4210" y="774.4683">map</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="133" x="4235" y="774.4683">[go-digest.Digest][]byte</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="4152" y="781.0625"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="55" x="4164" y="787.2729">nameMap</text><text fill="#0000FF" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="25" x="4223" y="787.2729">map</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="117" x="4248" y="787.2729">[string]v1.Descriptor</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="4152" y="793.8672"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="39" x="4164" y="800.0776">refMap</text><text fill="#0000FF" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="25" x="4207" y="800.0776">map</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="117" x="4232" y="800.0776">[string]v1.Descriptor</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="4152" y="806.6719"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="95" x="4164" y="812.8823">lock *sync.Mutex</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="4145" x2="4585" y1="819.4766" y2="819.4766"/><ellipse cx="4155" cy="830.4766" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="162" x="4164" y="833.687">Resolver() remotes.Resolver</text><ellipse cx="4155" cy="843.2813" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="387" x="4164" y="846.4917">Resolve(ctx context.Context, ref string) (string, v1.Descriptor, error)</text><ellipse cx="4155" cy="856.0859" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="362" x="4164" y="859.2964">Fetcher(ctx context.Context, ref string) (remotes.Fetcher, error)</text><ellipse cx="4155" cy="868.8906" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="389" x="4164" y="872.1011">Fetch(ctx context.Context, desc v1.Descriptor) (io.ReadCloser, error)</text><ellipse cx="4155" cy="881.6953" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="358" x="4164" y="884.9058">Pusher(ctx context.Context, ref string) (remotes.Pusher, error)</text><ellipse cx="4155" cy="894.5" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="416" x="4164" y="897.7104">Add(name string, mediaType string, content []byte) (v1.Descriptor, error)</text><ellipse cx="4155" cy="907.3047" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="220" x="4164" y="910.5151">Set(desc v1.Descriptor, content []byte)</text><ellipse cx="4155" cy="920.1094" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="295" x="4164" y="923.3198">Get(desc v1.Descriptor) (v1.Descriptor, []byte, bool)</text><ellipse cx="4155" cy="932.9141" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="304" x="4164" y="936.1245">GetByName(name string) (v1.Descriptor, []byte, bool)</text><ellipse cx="4155" cy="945.7188" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="382" x="4164" y="948.9292">StoreManifest(ref string, desc v1.Descriptor, manifest []byte) error</text><!--MD5=[806ae0bb7317572dccd6df60ef4061d0]
class content.MultiReader--><rect fill="#FEFECE" height="86.4141" id="content.MultiReader" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="415" x="4620.5" y="792.4531"/><ellipse cx="4786.75" cy="808.4531" fill="#7FFFD4" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M4786.2344,809.0156 Q4784.375,808.3125 4783.7188,807.5469 Q4783.0781,806.7656 4783.0781,805.4531 Q4783.0781,803.7656 4784.1563,802.7969 Q4785.2344,801.8281 4787.1094,801.8281 Q4787.9688,801.8281 4788.8125,802.0313 Q4789.6719,802.2188 4790.5156,802.6094 L4790.5156,805 Q4789.7344,804.4375 4788.9063,804.1563 Q4788.0938,803.8594 4787.2969,803.8594 Q4786.4219,803.8594 4785.9375,804.2188 Q4785.4688,804.5781 4785.4688,805.2344 Q4785.4688,805.75 4785.8125,806.0938 Q4786.1563,806.4219 4787.25,806.8281 L4788.3125,807.2344 Q4789.7969,807.7813 4790.5,808.6875 Q4791.2188,809.5938 4791.2188,810.9688 Q4791.2188,812.8438 4790.1094,813.7656 Q4789,814.6875 4786.75,814.6875 Q4785.8281,814.6875 4784.9063,814.4688 Q4783.9844,814.25 4783.125,813.8281 L4783.125,811.2969 Q4784.0938,811.9844 4785.0156,812.3281 Q4785.9375,812.6719 4786.8281,812.6719 Q4787.7344,812.6719 4788.2344,812.2656 Q4788.7344,811.8438 4788.7344,811.1094 Q4788.7344,810.5469 4788.3906,810.1406 Q4788.0625,809.7188 4787.4375,809.4688 L4786.2344,809.0156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="74" x="4807.25" y="812.6074">MultiReader</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="4621.5" x2="5034.5" y1="824.4531" y2="824.4531"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="4628.5" y="832.4531"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="143" x="4640.5" y="838.6636">stores []remotes.Fetcher</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="4621.5" x2="5034.5" y1="845.2578" y2="845.2578"/><ellipse cx="4631.5" cy="856.2578" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="200" x="4640.5" y="859.4683">AddStore(store ...remotes.Fetcher)</text><ellipse cx="4631.5" cy="869.0625" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="389" x="4640.5" y="872.2729">Fetch(ctx context.Context, desc v1.Descriptor) (io.ReadCloser, error)</text><!--MD5=[8937c6f005cf0b2c49469cfe2899403f]
class content.MultiWriterIngester--><rect fill="#FEFECE" height="60.8047" id="content.MultiWriterIngester" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="572" x="2654" y="1277.9531"/><ellipse cx="2876.25" cy="1293.9531" fill="#B4A7E5" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2872.1719,1289.7188 L2872.1719,1287.5625 L2879.5625,1287.5625 L2879.5625,1289.7188 L2877.0938,1289.7188 L2877.0938,1297.7969 L2879.5625,1297.7969 L2879.5625,1299.9531 L2872.1719,1299.9531 L2872.1719,1297.7969 L2874.6406,1297.7969 L2874.6406,1289.7188 L2872.1719,1289.7188 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="119" x="2896.75" y="1298.1074">MultiWriterIngester</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="2655" x2="3225" y1="1309.9531" y2="1309.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2655" x2="3225" y1="1317.9531" y2="1317.9531"/><ellipse cx="2665" cy="1328.9531" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="312" x="2674" y="1332.1636">Writers(ctx context.Context, opts ...content.WriterOpt) (</text><text fill="#0000FF" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="24" x="2986" y="1332.1636">func</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="210" x="3010" y="1332.1636">(string) (content.Writer, error), error)</text><!--MD5=[4d4e9bccbbe476dedd16ced5615c3364]
class content.MultiWriterPusher--><rect fill="#FEFECE" height="60.8047" id="content.MultiWriterPusher" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="546" x="3261" y="1277.9531"/><ellipse cx="3475.25" cy="1293.9531" fill="#B4A7E5" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M3471.1719,1289.7188 L3471.1719,1287.5625 L3478.5625,1287.5625 L3478.5625,1289.7188 L3476.0938,1289.7188 L3476.0938,1297.7969 L3478.5625,1297.7969 L3478.5625,1299.9531 L3471.1719,1299.9531 L3471.1719,1297.7969 L3473.6406,1297.7969 L3473.6406,1289.7188 L3471.1719,1289.7188 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="109" x="3495.75" y="1298.1074">MultiWriterPusher</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3262" x2="3806" y1="1309.9531" y2="1309.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3262" x2="3806" y1="1317.9531" y2="1317.9531"/><ellipse cx="3272" cy="1328.9531" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="286" x="3281" y="1332.1636">Pushers(ctx context.Context, desc v1.Descriptor) (</text><text fill="#0000FF" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="24" x="3567" y="1332.1636">func</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="210" x="3591" y="1332.1636">(string) (content.Writer, error), error)</text><!--MD5=[92f7d497ecff5bb223150bcef78bf538]
class content.OCI--><rect fill="#FEFECE" height="342.5078" id="content.OCI" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="511" x="2107.5" y="1136.9531"/><ellipse cx="2348.75" cy="1152.9531" fill="#7FFFD4" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2348.2344,1153.5156 Q2346.375,1152.8125 2345.7188,1152.0469 Q2345.0781,1151.2656 2345.0781,1149.9531 Q2345.0781,1148.2656 2346.1563,1147.2969 Q2347.2344,1146.3281 2349.1094,1146.3281 Q2349.9688,1146.3281 2350.8125,1146.5313 Q2351.6719,1146.7188 2352.5156,1147.1094 L2352.5156,1149.5 Q2351.7344,1148.9375 2350.9063,1148.6563 Q2350.0938,1148.3594 2349.2969,1148.3594 Q2348.4219,1148.3594 2347.9375,1148.7188 Q2347.4688,1149.0781 2347.4688,1149.7344 Q2347.4688,1150.25 2347.8125,1150.5938 Q2348.1563,1150.9219 2349.25,1151.3281 L2350.3125,1151.7344 Q2351.7969,1152.2813 2352.5,1153.1875 Q2353.2188,1154.0938 2353.2188,1155.4688 Q2353.2188,1157.3438 2352.1094,1158.2656 Q2351,1159.1875 2348.75,1159.1875 Q2347.8281,1159.1875 2346.9063,1158.9688 Q2345.9844,1158.75 2345.125,1158.3281 L2345.125,1155.7969 Q2346.0938,1156.4844 2347.0156,1156.8281 Q2347.9375,1157.1719 2348.8281,1157.1719 Q2349.7344,1157.1719 2350.2344,1156.7656 Q2350.7344,1156.3438 2350.7344,1155.6094 Q2350.7344,1155.0469 2350.3906,1154.6406 Q2350.0625,1154.2188 2349.4375,1153.9688 L2348.2344,1153.5156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="20" x="2369.25" y="1157.1074">OCI</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="2108.5" x2="2617.5" y1="1168.9531" y2="1168.9531"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="2115.5" y="1176.9531"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="60" x="2127.5" y="1183.1636">root string</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="2115.5" y="1189.7578"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="87" x="2127.5" y="1195.9683">index *v1.Index</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="2115.5" y="1202.5625"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="55" x="2127.5" y="1208.7729">nameMap</text><text fill="#0000FF" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="25" x="2186.5" y="1208.7729">map</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="117" x="2211.5" y="1208.7729">[string]v1.Descriptor</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="2108.5" x2="2617.5" y1="1215.3672" y2="1215.3672"/><rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="2115.5" y="1223.3672"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="161" x="2127.5" y="1229.5776">validateOCILayoutFile() error</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="0" x="2131.5" y="1242.3823"/><ellipse cx="2118.5" cy="1251.9766" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="98" x="2127.5" y="1255.187">LoadIndex() error</text><ellipse cx="2118.5" cy="1264.7813" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="99" x="2127.5" y="1267.9917">SaveIndex() error</text><ellipse cx="2118.5" cy="1277.5859" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="162" x="2127.5" y="1280.7964">Resolver() remotes.Resolver</text><ellipse cx="2118.5" cy="1290.3906" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="387" x="2127.5" y="1293.6011">Resolve(ctx context.Context, ref string) (string, v1.Descriptor, error)</text><ellipse cx="2118.5" cy="1303.1953" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="362" x="2127.5" y="1306.4058">Fetcher(ctx context.Context, ref string) (remotes.Fetcher, error)</text><ellipse cx="2118.5" cy="1316" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="389" x="2127.5" y="1319.2104">Fetch(ctx context.Context, desc v1.Descriptor) (io.ReadCloser, error)</text><ellipse cx="2118.5" cy="1328.8047" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="358" x="2127.5" y="1332.0151">Pusher(ctx context.Context, ref string) (remotes.Pusher, error)</text><ellipse cx="2118.5" cy="1341.6094" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="270" x="2127.5" y="1344.8198">AddReference(name string, desc v1.Descriptor)</text><ellipse cx="2118.5" cy="1354.4141" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="170" x="2127.5" y="1357.6245">DeleteReference(name string)</text><ellipse cx="2118.5" cy="1367.2188" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="92" x="2127.5" y="1370.4292">ListReferences()</text><text fill="#0000FF" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="25" x="2223.5" y="1370.4292">map</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="117" x="2248.5" y="1370.4292">[string]v1.Descriptor</text><ellipse cx="2118.5" cy="1380.0234" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="383" x="2127.5" y="1383.2339">Info(ctx context.Context, dgst go-digest.Digest) (content.Info, error)</text><ellipse cx="2118.5" cy="1392.8281" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="485" x="2127.5" y="1396.0386">Update(ctx context.Context, info content.Info, fieldpaths ...string) (content.Info, error)</text><ellipse cx="2118.5" cy="1405.6328" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="384" x="2127.5" y="1408.8433">Walk(ctx context.Context, fn content.WalkFunc, filters ...string) error</text><ellipse cx="2118.5" cy="1418.4375" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="315" x="2127.5" y="1421.6479">Delete(ctx context.Context, dgst go-digest.Digest) error</text><ellipse cx="2118.5" cy="1431.2422" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="346" x="2127.5" y="1434.4526">Status(ctx context.Context, ref string) (content.Status, error)</text><ellipse cx="2118.5" cy="1444.0469" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="417" x="2127.5" y="1447.2573">ListStatuses(ctx context.Context, filters ...string) ([]content.Status, error)</text><ellipse cx="2118.5" cy="1456.8516" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="240" x="2127.5" y="1460.062">Abort(ctx context.Context, ref string) error</text><ellipse cx="2118.5" cy="1469.6563" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="428" x="2127.5" y="1472.8667">ReaderAt(ctx context.Context, desc v1.Descriptor) (content.ReaderAt, error)</text><!--MD5=[f324668e469c33ecf5d15e53e762b82a]
class content.PassthroughMultiWriter--><rect fill="#FEFECE" height="240.0703" id="content.PassthroughMultiWriter" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="552" x="3842" y="1188.4531"/><ellipse cx="4040.75" cy="1204.4531" fill="#7FFFD4" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M4040.2344,1205.0156 Q4038.375,1204.3125 4037.7188,1203.5469 Q4037.0781,1202.7656 4037.0781,1201.4531 Q4037.0781,1199.7656 4038.1563,1198.7969 Q4039.2344,1197.8281 4041.1094,1197.8281 Q4041.9688,1197.8281 4042.8125,1198.0313 Q4043.6719,1198.2188 4044.5156,1198.6094 L4044.5156,1201 Q4043.7344,1200.4375 4042.9063,1200.1563 Q4042.0938,1199.8594 4041.2969,1199.8594 Q4040.4219,1199.8594 4039.9375,1200.2188 Q4039.4688,1200.5781 4039.4688,1201.2344 Q4039.4688,1201.75 4039.8125,1202.0938 Q4040.1563,1202.4219 4041.25,1202.8281 L4042.3125,1203.2344 Q4043.7969,1203.7813 4044.5,1204.6875 Q4045.2188,1205.5938 4045.2188,1206.9688 Q4045.2188,1208.8438 4044.1094,1209.7656 Q4043,1210.6875 4040.75,1210.6875 Q4039.8281,1210.6875 4038.9063,1210.4688 Q4037.9844,1210.25 4037.125,1209.8281 L4037.125,1207.2969 Q4038.0938,1207.9844 4039.0156,1208.3281 Q4039.9375,1208.6719 4040.8281,1208.6719 Q4041.7344,1208.6719 4042.2344,1208.2656 Q4042.7344,1207.8438 4042.7344,1207.1094 Q4042.7344,1206.5469 4042.3906,1206.1406 Q4042.0625,1205.7188 4041.4375,1205.4688 L4040.2344,1205.0156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="146" x="4061.25" y="1208.6074">PassthroughMultiWriter</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3843" x2="4393" y1="1220.4531" y2="1220.4531"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="3850" y="1228.4531"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="163" x="3862" y="1234.6636">writers []*PassthroughWriter</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="3850" y="1241.2578"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="114" x="3862" y="1247.4683">pipew *io.PipeWriter</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="3850" y="1254.0625"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="156" x="3862" y="1260.2729">digester go-digest.Digester</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="3850" y="1266.8672"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="54" x="3862" y="1273.0776">size int64</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="3850" y="1279.6719"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="126" x="3862" y="1285.8823">reader *io.PipeReader</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="3850" y="1292.4766"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="131" x="3862" y="1298.687">hash *go-digest.Digest</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="3850" y="1305.2813"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="28" x="3862" y="1311.4917">done</text><text fill="#0000FF" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="27" x="3894" y="1311.4917">chan</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="29" x="3925" y="1311.4917">error</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="3850" y="1318.0859"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="113" x="3862" y="1324.2964">startedAt time.Time</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="3850" y="1330.8906"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="118" x="3862" y="1337.1011">updatedAt time.Time</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3843" x2="4393" y1="1343.6953" y2="1343.6953"/><ellipse cx="3853" cy="1354.6953" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="142" x="3862" y="1357.9058">Write(p []byte) (int, error)</text><ellipse cx="3853" cy="1367.5" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="73" x="3862" y="1370.7104">Close() error</text><ellipse cx="3853" cy="1380.3047" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="141" x="3862" y="1383.5151">Digest() go-digest.Digest</text><ellipse cx="3853" cy="1393.1094" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="526" x="3862" y="1396.3198">Commit(ctx context.Context, size int64, expected go-digest.Digest, opts ...content.Opt) error</text><ellipse cx="3853" cy="1405.9141" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="177" x="3862" y="1409.1245">Status() (content.Status, error)</text><ellipse cx="3853" cy="1418.7188" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="145" x="3862" y="1421.9292">Truncate(size int64) error</text><!--MD5=[65e4932ded1c63a398150974ef8694a5]
class content.PassthroughWriter--><rect fill="#FEFECE" height="227.2656" id="content.PassthroughWriter" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="552" x="4429" y="1194.9531"/><ellipse cx="4642.25" cy="1210.9531" fill="#7FFFD4" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M4641.7344,1211.5156 Q4639.875,1210.8125 4639.2188,1210.0469 Q4638.5781,1209.2656 4638.5781,1207.9531 Q4638.5781,1206.2656 4639.6563,1205.2969 Q4640.7344,1204.3281 4642.6094,1204.3281 Q4643.4688,1204.3281 4644.3125,1204.5313 Q4645.1719,1204.7188 4646.0156,1205.1094 L4646.0156,1207.5 Q4645.2344,1206.9375 4644.4063,1206.6563 Q4643.5938,1206.3594 4642.7969,1206.3594 Q4641.9219,1206.3594 4641.4375,1206.7188 Q4640.9688,1207.0781 4640.9688,1207.7344 Q4640.9688,1208.25 4641.3125,1208.5938 Q4641.6563,1208.9219 4642.75,1209.3281 L4643.8125,1209.7344 Q4645.2969,1210.2813 4646,1211.1875 Q4646.7188,1212.0938 4646.7188,1213.4688 Q4646.7188,1215.3438 4645.6094,1216.2656 Q4644.5,1217.1875 4642.25,1217.1875 Q4641.3281,1217.1875 4640.4063,1216.9688 Q4639.4844,1216.75 4638.625,1216.3281 L4638.625,1213.7969 Q4639.5938,1214.4844 4640.5156,1214.8281 Q4641.4375,1215.1719 4642.3281,1215.1719 Q4643.2344,1215.1719 4643.7344,1214.7656 Q4644.2344,1214.3438 4644.2344,1213.6094 Q4644.2344,1213.0469 4643.8906,1212.6406 Q4643.5625,1212.2188 4642.9375,1211.9688 L4641.7344,1211.5156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="117" x="4662.75" y="1215.1074">PassthroughWriter</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="4430" x2="4980" y1="1226.9531" y2="1226.9531"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="4437" y="1234.9531"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="116" x="4449" y="1241.1636">writer content.Writer</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="4437" y="1247.7578"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="114" x="4449" y="1253.9683">pipew *io.PipeWriter</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="4437" y="1260.5625"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="156" x="4449" y="1266.7729">digester go-digest.Digester</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="4437" y="1273.3672"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="54" x="4449" y="1279.5776">size int64</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="4437" y="1286.1719"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="194" x="4449" y="1292.3823">underlyingWriter *underlyingWriter</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="4437" y="1298.9766"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="126" x="4449" y="1305.187">reader *io.PipeReader</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="4437" y="1311.7813"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="131" x="4449" y="1317.9917">hash *go-digest.Digest</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="4437" y="1324.5859"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="28" x="4449" y="1330.7964">done</text><text fill="#0000FF" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="27" x="4481" y="1330.7964">chan</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="29" x="4512" y="1330.7964">error</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="4430" x2="4980" y1="1337.3906" y2="1337.3906"/><ellipse cx="4440" cy="1348.3906" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="142" x="4449" y="1351.6011">Write(p []byte) (int, error)</text><ellipse cx="4440" cy="1361.1953" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="73" x="4449" y="1364.4058">Close() error</text><ellipse cx="4440" cy="1374" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="141" x="4449" y="1377.2104">Digest() go-digest.Digest</text><ellipse cx="4440" cy="1386.8047" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="526" x="4449" y="1390.0151">Commit(ctx context.Context, size int64, expected go-digest.Digest, opts ...content.Opt) error</text><ellipse cx="4440" cy="1399.6094" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="177" x="4449" y="1402.8198">Status() (content.Status, error)</text><ellipse cx="4440" cy="1412.4141" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="145" x="4449" y="1415.6245">Truncate(size int64) error</text><!--MD5=[8a28be7d259b62bac457ba45b55aadad]
class content.ReaderAtWrapper--><rect fill="#FEFECE" height="86.4141" id="content.ReaderAtWrapper" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="168" x="5016" y="1265.4531"/><ellipse cx="5042.25" cy="1281.4531" fill="#7FFFD4" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M5041.7344,1282.0156 Q5039.875,1281.3125 5039.2188,1280.5469 Q5038.5781,1279.7656 5038.5781,1278.4531 Q5038.5781,1276.7656 5039.6563,1275.7969 Q5040.7344,1274.8281 5042.6094,1274.8281 Q5043.4688,1274.8281 5044.3125,1275.0313 Q5045.1719,1275.2188 5046.0156,1275.6094 L5046.0156,1278 Q5045.2344,1277.4375 5044.4063,1277.1563 Q5043.5938,1276.8594 5042.7969,1276.8594 Q5041.9219,1276.8594 5041.4375,1277.2188 Q5040.9688,1277.5781 5040.9688,1278.2344 Q5040.9688,1278.75 5041.3125,1279.0938 Q5041.6563,1279.4219 5042.75,1279.8281 L5043.8125,1280.2344 Q5045.2969,1280.7813 5046,1281.6875 Q5046.7188,1282.5938 5046.7188,1283.9688 Q5046.7188,1285.8438 5045.6094,1286.7656 Q5044.5,1287.6875 5042.25,1287.6875 Q5041.3281,1287.6875 5040.4063,1287.4688 Q5039.4844,1287.25 5038.625,1286.8281 L5038.625,1284.2969 Q5039.5938,1284.9844 5040.5156,1285.3281 Q5041.4375,1285.6719 5042.3281,1285.6719 Q5043.2344,1285.6719 5043.7344,1285.2656 Q5044.2344,1284.8438 5044.2344,1284.1094 Q5044.2344,1283.5469 5043.8906,1283.1406 Q5043.5625,1282.7188 5042.9375,1282.4688 L5041.7344,1282.0156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="111" x="5058.75" y="1285.6074">ReaderAtWrapper</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="5017" x2="5183" y1="1297.4531" y2="1297.4531"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="5024" y="1305.4531"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="65" x="5036" y="1311.6636">offset int64</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="5024" y="1318.2578"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="118" x="5036" y="1324.4683">readerAt io.ReaderAt</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="5017" x2="5183" y1="1331.0625" y2="1331.0625"/><ellipse cx="5027" cy="1342.0625" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="142" x="5036" y="1345.2729">Read(p []byte) (int, error)</text><!--MD5=[20bf9067d5827c31d3884e1d62cb909d]
class content.Registry--><rect fill="#FEFECE" height="48" id="content.Registry" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="82" x="2170" y="811.4531"/><ellipse cx="2185" cy="827.4531" fill="#7FFFD4" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2184.4844,828.0156 Q2182.625,827.3125 2181.9688,826.5469 Q2181.3281,825.7656 2181.3281,824.4531 Q2181.3281,822.7656 2182.4063,821.7969 Q2183.4844,820.8281 2185.3594,820.8281 Q2186.2188,820.8281 2187.0625,821.0313 Q2187.9219,821.2188 2188.7656,821.6094 L2188.7656,824 Q2187.9844,823.4375 2187.1563,823.1563 Q2186.3438,822.8594 2185.5469,822.8594 Q2184.6719,822.8594 2184.1875,823.2188 Q2183.7188,823.5781 2183.7188,824.2344 Q2183.7188,824.75 2184.0625,825.0938 Q2184.4063,825.4219 2185.5,825.8281 L2186.5625,826.2344 Q2188.0469,826.7813 2188.75,827.6875 Q2189.4688,828.5938 2189.4688,829.9688 Q2189.4688,831.8438 2188.3594,832.7656 Q2187.25,833.6875 2185,833.6875 Q2184.0781,833.6875 2183.1563,833.4688 Q2182.2344,833.25 2181.375,832.8281 L2181.375,830.2969 Q2182.3438,830.9844 2183.2656,831.3281 Q2184.1875,831.6719 2185.0781,831.6719 Q2185.9844,831.6719 2186.4844,831.2656 Q2186.9844,830.8438 2186.9844,830.1094 Q2186.9844,829.5469 2186.6406,829.1406 Q2186.3125,828.7188 2185.6875,828.4688 L2184.4844,828.0156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="50" x="2199" y="831.6074">Registry</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="2171" x2="2251" y1="843.4531" y2="843.4531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2171" x2="2251" y1="851.4531" y2="851.4531"/><!--MD5=[21d073bff1e253dbd19df1ffaaacbee4]
class content.RegistryOptions--><rect fill="#FEFECE" height="112.0234" id="content.RegistryOptions" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="130" x="2875" y="1590.9531"/><ellipse cx="2890" cy="1606.9531" fill="#7FFFD4" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2889.4844,1607.5156 Q2887.625,1606.8125 2886.9688,1606.0469 Q2886.3281,1605.2656 2886.3281,1603.9531 Q2886.3281,1602.2656 2887.4063,1601.2969 Q2888.4844,1600.3281 2890.3594,1600.3281 Q2891.2188,1600.3281 2892.0625,1600.5313 Q2892.9219,1600.7188 2893.7656,1601.1094 L2893.7656,1603.5 Q2892.9844,1602.9375 2892.1563,1602.6563 Q2891.3438,1602.3594 2890.5469,1602.3594 Q2889.6719,1602.3594 2889.1875,1602.7188 Q2888.7188,1603.0781 2888.7188,1603.7344 Q2888.7188,1604.25 2889.0625,1604.5938 Q2889.4063,1604.9219 2890.5,1605.3281 L2891.5625,1605.7344 Q2893.0469,1606.2813 2893.75,1607.1875 Q2894.4688,1608.0938 2894.4688,1609.4688 Q2894.4688,1611.3438 2893.3594,1612.2656 Q2892.25,1613.1875 2890,1613.1875 Q2889.0781,1613.1875 2888.1563,1612.9688 Q2887.2344,1612.75 2886.375,1612.3281 L2886.375,1609.7969 Q2887.3438,1610.4844 2888.2656,1610.8281 Q2889.1875,1611.1719 2890.0781,1611.1719 Q2890.9844,1611.1719 2891.4844,1610.7656 Q2891.9844,1610.3438 2891.9844,1609.6094 Q2891.9844,1609.0469 2891.6406,1608.6406 Q2891.3125,1608.2188 2890.6875,1607.9688 L2889.4844,1607.5156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="98" x="2904" y="1611.1074">RegistryOptions</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="2876" x2="3004" y1="1622.9531" y2="1622.9531"/><ellipse cx="2886" cy="1633.9531" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="88" x="2895" y="1637.1636">Configs []string</text><ellipse cx="2886" cy="1646.7578" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="96" x="2895" y="1649.9683">Username string</text><ellipse cx="2886" cy="1659.5625" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="93" x="2895" y="1662.7729">Password string</text><ellipse cx="2886" cy="1672.3672" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="77" x="2895" y="1675.5776">Insecure bool</text><ellipse cx="2886" cy="1685.1719" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="84" x="2895" y="1688.3823">PlainHTTP bool</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="2876" x2="3004" y1="1694.9766" y2="1694.9766"/><!--MD5=[f6749fd6881412ecb18ca5dd5c3fd2e2]
class content.Store--><rect fill="#FEFECE" height="48" id="content.Store" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="66" x="2287" y="811.4531"/><ellipse cx="2302" cy="827.4531" fill="#B4A7E5" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2297.9219,823.2188 L2297.9219,821.0625 L2305.3125,821.0625 L2305.3125,823.2188 L2302.8438,823.2188 L2302.8438,831.2969 L2305.3125,831.2969 L2305.3125,833.4531 L2297.9219,833.4531 L2297.9219,831.2969 L2300.3906,831.2969 L2300.3906,823.2188 L2297.9219,823.2188 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="34" x="2316" y="831.6074">Store</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="2288" x2="2352" y1="843.4531" y2="843.4531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2288" x2="2352" y1="851.4531" y2="851.4531"/><!--MD5=[8390c7aa8ee38c491bf7c5932dffa74f]
class content.WriterOpts--><rect fill="#FEFECE" height="112.0234" id="content.WriterOpts" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="196" x="5070" y="779.4531"/><ellipse cx="5130.75" cy="795.4531" fill="#7FFFD4" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M5130.2344,796.0156 Q5128.375,795.3125 5127.7188,794.5469 Q5127.0781,793.7656 5127.0781,792.4531 Q5127.0781,790.7656 5128.1563,789.7969 Q5129.2344,788.8281 5131.1094,788.8281 Q5131.9688,788.8281 5132.8125,789.0313 Q5133.6719,789.2188 5134.5156,789.6094 L5134.5156,792 Q5133.7344,791.4375 5132.9063,791.1563 Q5132.0938,790.8594 5131.2969,790.8594 Q5130.4219,790.8594 5129.9375,791.2188 Q5129.4688,791.5781 5129.4688,792.2344 Q5129.4688,792.75 5129.8125,793.0938 Q5130.1563,793.4219 5131.25,793.8281 L5132.3125,794.2344 Q5133.7969,794.7813 5134.5,795.6875 Q5135.2188,796.5938 5135.2188,797.9688 Q5135.2188,799.8438 5134.1094,800.7656 Q5133,801.6875 5130.75,801.6875 Q5129.8281,801.6875 5128.9063,801.4688 Q5127.9844,801.25 5127.125,800.8281 L5127.125,798.2969 Q5128.0938,798.9844 5129.0156,799.3281 Q5129.9375,799.6719 5130.8281,799.6719 Q5131.7344,799.6719 5132.2344,799.2656 Q5132.7344,798.8438 5132.7344,798.1094 Q5132.7344,797.5469 5132.3906,797.1406 Q5132.0625,796.7188 5131.4375,796.4688 L5130.2344,796.0156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="66" x="5151.25" y="799.6074">WriterOpts</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="5071" x2="5265" y1="811.4531" y2="811.4531"/><ellipse cx="5081" cy="822.4531" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="160" x="5090" y="825.6636">InputHash *go-digest.Digest</text><ellipse cx="5081" cy="835.2578" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="170" x="5090" y="838.4683">OutputHash *go-digest.Digest</text><ellipse cx="5081" cy="848.0625" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="70" x="5090" y="851.2729">Blocksize int</text><ellipse cx="5081" cy="860.8672" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="134" x="5090" y="864.0776">MultiWriterIngester bool</text><ellipse cx="5081" cy="873.6719" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="112" x="5090" y="876.8823">IgnoreNoName bool</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="5071" x2="5265" y1="883.4766" y2="883.4766"/><!--MD5=[dae8f1839274262281c4c758e0c5cae4]
class content.WriterOpt--><rect fill="#FEFECE" height="48" id="content.WriterOpt" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="91" x="1833.5" y="1284.4531"/><ellipse cx="1848.5" cy="1300.4531" fill="#FF7700" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1849.3438,1307.2031 L1846.8906,1307.2031 L1846.8906,1296.9531 L1843.75,1296.9531 L1843.75,1294.8125 L1852.4844,1294.8125 L1852.4844,1296.9531 L1849.3438,1296.9531 L1849.3438,1307.2031 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="59" x="1862.5" y="1304.6074">WriterOpt</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1834.5" x2="1923.5" y1="1316.4531" y2="1316.4531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1834.5" x2="1923.5" y1="1324.4531" y2="1324.4531"/><!--MD5=[0f1b401606c71ad755f94f2d6372393a]
class content.filePusher--><rect fill="#FEFECE" height="99.2188" id="content.filePusher" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="413" x="3040.5" y="1597.4531"/><ellipse cx="3211.75" cy="1613.4531" fill="#7FFFD4" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M3211.2344,1614.0156 Q3209.375,1613.3125 3208.7188,1612.5469 Q3208.0781,1611.7656 3208.0781,1610.4531 Q3208.0781,1608.7656 3209.1563,1607.7969 Q3210.2344,1606.8281 3212.1094,1606.8281 Q3212.9688,1606.8281 3213.8125,1607.0313 Q3214.6719,1607.2188 3215.5156,1607.6094 L3215.5156,1610 Q3214.7344,1609.4375 3213.9063,1609.1563 Q3213.0938,1608.8594 3212.2969,1608.8594 Q3211.4219,1608.8594 3210.9375,1609.2188 Q3210.4688,1609.5781 3210.4688,1610.2344 Q3210.4688,1610.75 3210.8125,1611.0938 Q3211.1563,1611.4219 3212.25,1611.8281 L3213.3125,1612.2344 Q3214.7969,1612.7813 3215.5,1613.6875 Q3216.2188,1614.5938 3216.2188,1615.9688 Q3216.2188,1617.8438 3215.1094,1618.7656 Q3214,1619.6875 3211.75,1619.6875 Q3210.8281,1619.6875 3209.9063,1619.4688 Q3208.9844,1619.25 3208.125,1618.8281 L3208.125,1616.2969 Q3209.0938,1616.9844 3210.0156,1617.3281 Q3210.9375,1617.6719 3211.8281,1617.6719 Q3212.7344,1617.6719 3213.2344,1617.2656 Q3213.7344,1616.8438 3213.7344,1616.1094 Q3213.7344,1615.5469 3213.3906,1615.1406 Q3213.0625,1614.7188 3212.4375,1614.4688 L3211.2344,1614.0156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="62" x="3232.25" y="1617.6074">filePusher</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3041.5" x2="3452.5" y1="1629.4531" y2="1629.4531"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="3048.5" y="1637.4531"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="59" x="3060.5" y="1643.6636">store *File</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="3048.5" y="1650.2578"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="53" x="3060.5" y="1656.4683">ref string</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="3048.5" y="1663.0625"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="65" x="3060.5" y="1669.2729">hash string</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3041.5" x2="3452.5" y1="1675.8672" y2="1675.8672"/><ellipse cx="3051.5" cy="1686.8672" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="387" x="3060.5" y="1690.0776">Push(ctx context.Context, desc v1.Descriptor) (content.Writer, error)</text><!--MD5=[0cf67623febd0fd89d4c2203c3d1945c]
class content.fileWriter--><rect fill="#FEFECE" height="214.4609" id="content.fileWriter" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="552" x="3489" y="1539.9531"/><ellipse cx="3733.25" cy="1555.9531" fill="#7FFFD4" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M3732.7344,1556.5156 Q3730.875,1555.8125 3730.2188,1555.0469 Q3729.5781,1554.2656 3729.5781,1552.9531 Q3729.5781,1551.2656 3730.6563,1550.2969 Q3731.7344,1549.3281 3733.6094,1549.3281 Q3734.4688,1549.3281 3735.3125,1549.5313 Q3736.1719,1549.7188 3737.0156,1550.1094 L3737.0156,1552.5 Q3736.2344,1551.9375 3735.4063,1551.6563 Q3734.5938,1551.3594 3733.7969,1551.3594 Q3732.9219,1551.3594 3732.4375,1551.7188 Q3731.9688,1552.0781 3731.9688,1552.7344 Q3731.9688,1553.25 3732.3125,1553.5938 Q3732.6563,1553.9219 3733.75,1554.3281 L3734.8125,1554.7344 Q3736.2969,1555.2813 3737,1556.1875 Q3737.7188,1557.0938 3737.7188,1558.4688 Q3737.7188,1560.3438 3736.6094,1561.2656 Q3735.5,1562.1875 3733.25,1562.1875 Q3732.3281,1562.1875 3731.4063,1561.9688 Q3730.4844,1561.75 3729.625,1561.3281 L3729.625,1558.7969 Q3730.5938,1559.4844 3731.5156,1559.8281 Q3732.4375,1560.1719 3733.3281,1560.1719 Q3734.2344,1560.1719 3734.7344,1559.7656 Q3735.2344,1559.3438 3735.2344,1558.6094 Q3735.2344,1558.0469 3734.8906,1557.6406 Q3734.5625,1557.2188 3733.9375,1556.9688 L3732.7344,1556.5156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="55" x="3753.75" y="1560.1074">fileWriter</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3490" x2="4040" y1="1571.9531" y2="1571.9531"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="3497" y="1579.9531"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="59" x="3509" y="1586.1636">store *File</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="3497" y="1592.7578"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="64" x="3509" y="1598.9683">file *os.File</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="3497" y="1605.5625"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="107" x="3509" y="1611.7729">desc v1.Descriptor</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="3497" y="1618.3672"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="156" x="3509" y="1624.5776">digester go-digest.Digester</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="3497" y="1631.1719"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="123" x="3509" y="1637.3823">status content.Status</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3490" x2="4040" y1="1643.9766" y2="1643.9766"/><rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="3497" y="1651.9766"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="71" x="3509" y="1658.187">afterCommit</text><text fill="#0000FF" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="24" x="3584" y="1658.187">func</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="41" x="3608" y="1658.187">() error</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="0" x="3513" y="1670.9917"/><ellipse cx="3500" cy="1680.5859" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="177" x="3509" y="1683.7964">Status() (content.Status, error)</text><ellipse cx="3500" cy="1693.3906" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="141" x="3509" y="1696.6011">Digest() go-digest.Digest</text><ellipse cx="3500" cy="1706.1953" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="142" x="3509" y="1709.4058">Write(p []byte) (int, error)</text><ellipse cx="3500" cy="1719" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="526" x="3509" y="1722.2104">Commit(ctx context.Context, size int64, expected go-digest.Digest, opts ...content.Opt) error</text><ellipse cx="3500" cy="1731.8047" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="73" x="3509" y="1735.0151">Close() error</text><ellipse cx="3500" cy="1744.6094" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="145" x="3509" y="1747.8198">Truncate(size int64) error</text><!--MD5=[f684f7548e0a0c8898f7eafbf2f5ebfe]
class content.memoryPusher--><rect fill="#FEFECE" height="99.2188" id="content.memoryPusher" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="413" x="4076.5" y="1597.4531"/><ellipse cx="4232.25" cy="1613.4531" fill="#7FFFD4" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M4231.7344,1614.0156 Q4229.875,1613.3125 4229.2188,1612.5469 Q4228.5781,1611.7656 4228.5781,1610.4531 Q4228.5781,1608.7656 4229.6563,1607.7969 Q4230.7344,1606.8281 4232.6094,1606.8281 Q4233.4688,1606.8281 4234.3125,1607.0313 Q4235.1719,1607.2188 4236.0156,1607.6094 L4236.0156,1610 Q4235.2344,1609.4375 4234.4063,1609.1563 Q4233.5938,1608.8594 4232.7969,1608.8594 Q4231.9219,1608.8594 4231.4375,1609.2188 Q4230.9688,1609.5781 4230.9688,1610.2344 Q4230.9688,1610.75 4231.3125,1611.0938 Q4231.6563,1611.4219 4232.75,1611.8281 L4233.8125,1612.2344 Q4235.2969,1612.7813 4236,1613.6875 Q4236.7188,1614.5938 4236.7188,1615.9688 Q4236.7188,1617.8438 4235.6094,1618.7656 Q4234.5,1619.6875 4232.25,1619.6875 Q4231.3281,1619.6875 4230.4063,1619.4688 Q4229.4844,1619.25 4228.625,1618.8281 L4228.625,1616.2969 Q4229.5938,1616.9844 4230.5156,1617.3281 Q4231.4375,1617.6719 4232.3281,1617.6719 Q4233.2344,1617.6719 4233.7344,1617.2656 Q4234.2344,1616.8438 4234.2344,1616.1094 Q4234.2344,1615.5469 4233.8906,1615.1406 Q4233.5625,1614.7188 4232.9375,1614.4688 L4231.7344,1614.0156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="93" x="4252.75" y="1617.6074">memoryPusher</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="4077.5" x2="4488.5" y1="1629.4531" y2="1629.4531"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="4084.5" y="1637.4531"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="85" x="4096.5" y="1643.6636">store *Memory</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="4084.5" y="1650.2578"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="53" x="4096.5" y="1656.4683">ref string</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="4084.5" y="1663.0625"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="65" x="4096.5" y="1669.2729">hash string</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="4077.5" x2="4488.5" y1="1675.8672" y2="1675.8672"/><ellipse cx="4087.5" cy="1686.8672" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="387" x="4096.5" y="1690.0776">Push(ctx context.Context, desc v1.Descriptor) (content.Writer, error)</text><!--MD5=[712173845731e341b63865d1a8ec07f2]
class content.memoryWriter--><rect fill="#FEFECE" height="188.8516" id="content.memoryWriter" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="552" x="4525" y="1552.4531"/><ellipse cx="4753.75" cy="1568.4531" fill="#7FFFD4" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M4753.2344,1569.0156 Q4751.375,1568.3125 4750.7188,1567.5469 Q4750.0781,1566.7656 4750.0781,1565.4531 Q4750.0781,1563.7656 4751.1563,1562.7969 Q4752.2344,1561.8281 4754.1094,1561.8281 Q4754.9688,1561.8281 4755.8125,1562.0313 Q4756.6719,1562.2188 4757.5156,1562.6094 L4757.5156,1565 Q4756.7344,1564.4375 4755.9063,1564.1563 Q4755.0938,1563.8594 4754.2969,1563.8594 Q4753.4219,1563.8594 4752.9375,1564.2188 Q4752.4688,1564.5781 4752.4688,1565.2344 Q4752.4688,1565.75 4752.8125,1566.0938 Q4753.1563,1566.4219 4754.25,1566.8281 L4755.3125,1567.2344 Q4756.7969,1567.7813 4757.5,1568.6875 Q4758.2188,1569.5938 4758.2188,1570.9688 Q4758.2188,1572.8438 4757.1094,1573.7656 Q4756,1574.6875 4753.75,1574.6875 Q4752.8281,1574.6875 4751.9063,1574.4688 Q4750.9844,1574.25 4750.125,1573.8281 L4750.125,1571.2969 Q4751.0938,1571.9844 4752.0156,1572.3281 Q4752.9375,1572.6719 4753.8281,1572.6719 Q4754.7344,1572.6719 4755.2344,1572.2656 Q4755.7344,1571.8438 4755.7344,1571.1094 Q4755.7344,1570.5469 4755.3906,1570.1406 Q4755.0625,1569.7188 4754.4375,1569.4688 L4753.2344,1569.0156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="86" x="4774.25" y="1572.6074">memoryWriter</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="4526" x2="5076" y1="1584.4531" y2="1584.4531"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="4533" y="1592.4531"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="85" x="4545" y="1598.6636">store *Memory</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="4533" y="1605.2578"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="114" x="4545" y="1611.4683">buffer *bytes.Buffer</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="4533" y="1618.0625"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="107" x="4545" y="1624.2729">desc v1.Descriptor</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="4533" y="1630.8672"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="156" x="4545" y="1637.0776">digester go-digest.Digester</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="4533" y="1643.6719"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="123" x="4545" y="1649.8823">status content.Status</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="4526" x2="5076" y1="1656.4766" y2="1656.4766"/><ellipse cx="4536" cy="1667.4766" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="177" x="4545" y="1670.687">Status() (content.Status, error)</text><ellipse cx="4536" cy="1680.2813" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="141" x="4545" y="1683.4917">Digest() go-digest.Digest</text><ellipse cx="4536" cy="1693.0859" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="142" x="4545" y="1696.2964">Write(p []byte) (int, error)</text><ellipse cx="4536" cy="1705.8906" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="526" x="4545" y="1709.1011">Commit(ctx context.Context, size int64, expected go-digest.Digest, opts ...content.Opt) error</text><ellipse cx="4536" cy="1718.6953" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="73" x="4545" y="1721.9058">Close() error</text><ellipse cx="4536" cy="1731.5" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="145" x="4545" y="1734.7104">Truncate(size int64) error</text><!--MD5=[b4a1fea929417bdee8530f95cd177d19]
class content.nopCloserAt--><rect fill="#FEFECE" height="60.8047" id="content.nopCloserAt" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="108" x="2837" y="804.9531"/><ellipse cx="2852" cy="820.9531" fill="#7FFFD4" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2851.4844,821.5156 Q2849.625,820.8125 2848.9688,820.0469 Q2848.3281,819.2656 2848.3281,817.9531 Q2848.3281,816.2656 2849.4063,815.2969 Q2850.4844,814.3281 2852.3594,814.3281 Q2853.2188,814.3281 2854.0625,814.5313 Q2854.9219,814.7188 2855.7656,815.1094 L2855.7656,817.5 Q2854.9844,816.9375 2854.1563,816.6563 Q2853.3438,816.3594 2852.5469,816.3594 Q2851.6719,816.3594 2851.1875,816.7188 Q2850.7188,817.0781 2850.7188,817.7344 Q2850.7188,818.25 2851.0625,818.5938 Q2851.4063,818.9219 2852.5,819.3281 L2853.5625,819.7344 Q2855.0469,820.2813 2855.75,821.1875 Q2856.4688,822.0938 2856.4688,823.4688 Q2856.4688,825.3438 2855.3594,826.2656 Q2854.25,827.1875 2852,827.1875 Q2851.0781,827.1875 2850.1563,826.9688 Q2849.2344,826.75 2848.375,826.3281 L2848.375,823.7969 Q2849.3438,824.4844 2850.2656,824.8281 Q2851.1875,825.1719 2852.0781,825.1719 Q2852.9844,825.1719 2853.4844,824.7656 Q2853.9844,824.3438 2853.9844,823.6094 Q2853.9844,823.0469 2853.6406,822.6406 Q2853.3125,822.2188 2852.6875,821.9688 L2851.4844,821.5156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="76" x="2866" y="825.1074">nopCloserAt</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="2838" x2="2944" y1="836.9531" y2="836.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2838" x2="2944" y1="844.9531" y2="844.9531"/><ellipse cx="2848" cy="855.9531" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="73" x="2857" y="859.1636">Close() error</text><!--MD5=[46643b0cb213cf993c13f8f7fe06e968]
class content.ociPusher--><rect fill="#FEFECE" height="99.2188" id="content.ociPusher" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="413" x="2733.5" y="1833.4531"/><ellipse cx="2904.75" cy="1849.4531" fill="#7FFFD4" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2904.2344,1850.0156 Q2902.375,1849.3125 2901.7188,1848.5469 Q2901.0781,1847.7656 2901.0781,1846.4531 Q2901.0781,1844.7656 2902.1563,1843.7969 Q2903.2344,1842.8281 2905.1094,1842.8281 Q2905.9688,1842.8281 2906.8125,1843.0313 Q2907.6719,1843.2188 2908.5156,1843.6094 L2908.5156,1846 Q2907.7344,1845.4375 2906.9063,1845.1563 Q2906.0938,1844.8594 2905.2969,1844.8594 Q2904.4219,1844.8594 2903.9375,1845.2188 Q2903.4688,1845.5781 2903.4688,1846.2344 Q2903.4688,1846.75 2903.8125,1847.0938 Q2904.1563,1847.4219 2905.25,1847.8281 L2906.3125,1848.2344 Q2907.7969,1848.7813 2908.5,1849.6875 Q2909.2188,1850.5938 2909.2188,1851.9688 Q2909.2188,1853.8438 2908.1094,1854.7656 Q2907,1855.6875 2904.75,1855.6875 Q2903.8281,1855.6875 2902.9063,1855.4688 Q2901.9844,1855.25 2901.125,1854.8281 L2901.125,1852.2969 Q2902.0938,1852.9844 2903.0156,1853.3281 Q2903.9375,1853.6719 2904.8281,1853.6719 Q2905.7344,1853.6719 2906.2344,1853.2656 Q2906.7344,1852.8438 2906.7344,1852.1094 Q2906.7344,1851.5469 2906.3906,1851.1406 Q2906.0625,1850.7188 2905.4375,1850.4688 L2904.2344,1850.0156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="62" x="2925.25" y="1853.6074">ociPusher</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="2734.5" x2="3145.5" y1="1865.4531" y2="1865.4531"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="2741.5" y="1873.4531"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="46" x="2753.5" y="1879.6636">oci *OCI</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="2741.5" y="1886.2578"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="53" x="2753.5" y="1892.4683">ref string</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="2741.5" y="1899.0625"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="72" x="2753.5" y="1905.2729">digest string</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="2734.5" x2="3145.5" y1="1911.8672" y2="1911.8672"/><ellipse cx="2744.5" cy="1922.8672" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="387" x="2753.5" y="1926.0776">Push(ctx context.Context, desc v1.Descriptor) (content.Writer, error)</text><!--MD5=[5a69fb7042838e3696c8d95b5f0a8138]
class content.readAtCloser--><rect fill="#FEFECE" height="48" id="content.readAtCloser" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="112" x="2023" y="811.4531"/><ellipse cx="2038" cy="827.4531" fill="#B4A7E5" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2033.9219,823.2188 L2033.9219,821.0625 L2041.3125,821.0625 L2041.3125,823.2188 L2038.8438,823.2188 L2038.8438,831.2969 L2041.3125,831.2969 L2041.3125,833.4531 L2033.9219,833.4531 L2033.9219,831.2969 L2036.3906,831.2969 L2036.3906,823.2188 L2033.9219,823.2188 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="80" x="2052" y="831.6074">readAtCloser</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="2024" x2="2134" y1="843.4531" y2="843.4531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2024" x2="2134" y1="851.4531" y2="851.4531"/><!--MD5=[426af50783f017a7f8f2318a17dc76a6]
class content.sizeReaderAt--><rect fill="#FEFECE" height="73.6094" id="content.sizeReaderAt" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="113" x="1959.5" y="1271.4531"/><ellipse cx="1974.5" cy="1287.4531" fill="#7FFFD4" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1973.9844,1288.0156 Q1972.125,1287.3125 1971.4688,1286.5469 Q1970.8281,1285.7656 1970.8281,1284.4531 Q1970.8281,1282.7656 1971.9063,1281.7969 Q1972.9844,1280.8281 1974.8594,1280.8281 Q1975.7188,1280.8281 1976.5625,1281.0313 Q1977.4219,1281.2188 1978.2656,1281.6094 L1978.2656,1284 Q1977.4844,1283.4375 1976.6563,1283.1563 Q1975.8438,1282.8594 1975.0469,1282.8594 Q1974.1719,1282.8594 1973.6875,1283.2188 Q1973.2188,1283.5781 1973.2188,1284.2344 Q1973.2188,1284.75 1973.5625,1285.0938 Q1973.9063,1285.4219 1975,1285.8281 L1976.0625,1286.2344 Q1977.5469,1286.7813 1978.25,1287.6875 Q1978.9688,1288.5938 1978.9688,1289.9688 Q1978.9688,1291.8438 1977.8594,1292.7656 Q1976.75,1293.6875 1974.5,1293.6875 Q1973.5781,1293.6875 1972.6563,1293.4688 Q1971.7344,1293.25 1970.875,1292.8281 L1970.875,1290.2969 Q1971.8438,1290.9844 1972.7656,1291.3281 Q1973.6875,1291.6719 1974.5781,1291.6719 Q1975.4844,1291.6719 1975.9844,1291.2656 Q1976.4844,1290.8438 1976.4844,1290.1094 Q1976.4844,1289.5469 1976.1406,1289.1406 Q1975.8125,1288.7188 1975.1875,1288.4688 L1973.9844,1288.0156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="81" x="1988.5" y="1291.6074">sizeReaderAt</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1960.5" x2="2071.5" y1="1303.4531" y2="1303.4531"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="1967.5" y="1311.4531"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="54" x="1979.5" y="1317.6636">size int64</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1960.5" x2="2071.5" y1="1324.2578" y2="1324.2578"/><ellipse cx="1970.5" cy="1335.2578" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="63" x="1979.5" y="1338.4683">Size() int64</text><!--MD5=[a8be7c4c0225c72d4991edfb62a8882d]
class content.underlyingWriter--><rect fill="#FEFECE" height="137.6328" id="content.underlyingWriter" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="182" x="3182" y="1813.9531"/><ellipse cx="3218.6" cy="1829.9531" fill="#7FFFD4" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M3218.0844,1830.5156 Q3216.225,1829.8125 3215.5688,1829.0469 Q3214.9281,1828.2656 3214.9281,1826.9531 Q3214.9281,1825.2656 3216.0063,1824.2969 Q3217.0844,1823.3281 3218.9594,1823.3281 Q3219.8188,1823.3281 3220.6625,1823.5313 Q3221.5219,1823.7188 3222.3656,1824.1094 L3222.3656,1826.5 Q3221.5844,1825.9375 3220.7563,1825.6563 Q3219.9438,1825.3594 3219.1469,1825.3594 Q3218.2719,1825.3594 3217.7875,1825.7188 Q3217.3188,1826.0781 3217.3188,1826.7344 Q3217.3188,1827.25 3217.6625,1827.5938 Q3218.0063,1827.9219 3219.1,1828.3281 L3220.1625,1828.7344 Q3221.6469,1829.2813 3222.35,1830.1875 Q3223.0688,1831.0938 3223.0688,1832.4688 Q3223.0688,1834.3438 3221.9594,1835.2656 Q3220.85,1836.1875 3218.6,1836.1875 Q3217.6781,1836.1875 3216.7563,1835.9688 Q3215.8344,1835.75 3214.975,1835.3281 L3214.975,1832.7969 Q3215.9438,1833.4844 3216.8656,1833.8281 Q3217.7875,1834.1719 3218.6781,1834.1719 Q3219.5844,1834.1719 3220.0844,1833.7656 Q3220.5844,1833.3438 3220.5844,1832.6094 Q3220.5844,1832.0469 3220.2406,1831.6406 Q3219.9125,1831.2188 3219.2875,1830.9688 L3218.0844,1830.5156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="102" x="3237.4" y="1834.1074">underlyingWriter</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3183" x2="3363" y1="1845.9531" y2="1845.9531"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="3190" y="1853.9531"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="116" x="3202" y="1860.1636">writer content.Writer</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="3190" y="1866.7578"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="156" x="3202" y="1872.9683">digester go-digest.Digester</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="3190" y="1879.5625"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="54" x="3202" y="1885.7729">size int64</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="3190" y="1892.3672"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="131" x="3202" y="1898.5776">hash *go-digest.Digest</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3183" x2="3363" y1="1905.1719" y2="1905.1719"/><ellipse cx="3193" cy="1916.1719" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="142" x="3202" y="1919.3823">Write(p []byte) (int, error)</text><ellipse cx="3193" cy="1928.9766" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="63" x="3202" y="1932.187">Size() int64</text><ellipse cx="3193" cy="1941.7813" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="141" x="3202" y="1944.9917">Digest() go-digest.Digest</text><!--MD5=[ec4c896d8cc2157463801747643add09]
class content.<font color=blue>func</font>(*WriterOpts) error--><rect fill="#FEFECE" height="48" id="content.&lt;font color=blue&gt;func&lt;/font&gt;(*WriterOpts) error" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="176" x="1812" y="811.4531"/><ellipse cx="1827" cy="827.4531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1829.9688,833.0938 Q1829.3906,833.3906 1828.75,833.5313 Q1828.1094,833.6875 1827.4063,833.6875 Q1824.9063,833.6875 1823.5781,832.0469 Q1822.2656,830.3906 1822.2656,827.2656 Q1822.2656,824.1406 1823.5781,822.4844 Q1824.9063,820.8281 1827.4063,820.8281 Q1828.1094,820.8281 1828.75,820.9844 Q1829.4063,821.1406 1829.9688,821.4375 L1829.9688,824.1563 Q1829.3438,823.5781 1828.75,823.3125 Q1828.1563,823.0313 1827.5313,823.0313 Q1826.1875,823.0313 1825.5,824.1094 Q1824.8125,825.1719 1824.8125,827.2656 Q1824.8125,829.3594 1825.5,830.4375 Q1826.1875,831.5 1827.5313,831.5 Q1828.1563,831.5 1828.75,831.2344 Q1829.3438,830.9531 1829.9688,830.375 L1829.9688,833.0938 Z "/><text fill="#0000FF" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="27" x="1841" y="831.6074">func</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="117" x="1868" y="831.6074">(*WriterOpts) error</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1813" x2="1987" y1="843.4531" y2="843.4531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1813" x2="1987" y1="851.4531" y2="851.4531"/><!--MD5=[1b66ce7337a42d64534dac0c721b9c75]
class remotes.Resolver--><rect fill="#FEFECE" height="48" id="remotes.Resolver" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="85" x="2168.5" y="421.9531"/><ellipse cx="2183.5" cy="437.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2186.4688,443.5938 Q2185.8906,443.8906 2185.25,444.0313 Q2184.6094,444.1875 2183.9063,444.1875 Q2181.4063,444.1875 2180.0781,442.5469 Q2178.7656,440.8906 2178.7656,437.7656 Q2178.7656,434.6406 2180.0781,432.9844 Q2181.4063,431.3281 2183.9063,431.3281 Q2184.6094,431.3281 2185.25,431.4844 Q2185.9063,431.6406 2186.4688,431.9375 L2186.4688,434.6563 Q2185.8438,434.0781 2185.25,433.8125 Q2184.6563,433.5313 2184.0313,433.5313 Q2182.6875,433.5313 2182,434.6094 Q2181.3125,435.6719 2181.3125,437.7656 Q2181.3125,439.8594 2182,440.9375 Q2182.6875,442 2184.0313,442 Q2184.6563,442 2185.25,441.7344 Q2185.8438,441.4531 2186.4688,440.875 L2186.4688,443.5938 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="53" x="2197.5" y="442.1074">Resolver</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="2169.5" x2="2252.5" y1="453.9531" y2="453.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2169.5" x2="2252.5" y1="461.9531" y2="461.9531"/><!--MD5=[d99806f8b50a87423b34d9753f8038f8]
class remotes.Fetcher--><rect fill="#FEFECE" height="48" id="remotes.Fetcher" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="80" x="2053" y="421.9531"/><ellipse cx="2068" cy="437.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2070.9688,443.5938 Q2070.3906,443.8906 2069.75,444.0313 Q2069.1094,444.1875 2068.4063,444.1875 Q2065.9063,444.1875 2064.5781,442.5469 Q2063.2656,440.8906 2063.2656,437.7656 Q2063.2656,434.6406 2064.5781,432.9844 Q2065.9063,431.3281 2068.4063,431.3281 Q2069.1094,431.3281 2069.75,431.4844 Q2070.4063,431.6406 2070.9688,431.9375 L2070.9688,434.6563 Q2070.3438,434.0781 2069.75,433.8125 Q2069.1563,433.5313 2068.5313,433.5313 Q2067.1875,433.5313 2066.5,434.6094 Q2065.8125,435.6719 2065.8125,437.7656 Q2065.8125,439.8594 2066.5,440.9375 Q2067.1875,442 2068.5313,442 Q2069.1563,442 2069.75,441.7344 Q2070.3438,441.4531 2070.9688,440.875 L2070.9688,443.5938 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="48" x="2082" y="442.1074">Fetcher</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="2054" x2="2132" y1="453.9531" y2="453.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2054" x2="2132" y1="461.9531" y2="461.9531"/><!--MD5=[752038394b8a65288c300d800dc05b3b]
class io.ReaderAt--><rect fill="#FEFECE" height="48" id="io.ReaderAt" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="90" x="2846" y="421.9531"/><ellipse cx="2861" cy="437.9531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2863.9688,443.5938 Q2863.3906,443.8906 2862.75,444.0313 Q2862.1094,444.1875 2861.4063,444.1875 Q2858.9063,444.1875 2857.5781,442.5469 Q2856.2656,440.8906 2856.2656,437.7656 Q2856.2656,434.6406 2857.5781,432.9844 Q2858.9063,431.3281 2861.4063,431.3281 Q2862.1094,431.3281 2862.75,431.4844 Q2863.4063,431.6406 2863.9688,431.9375 L2863.9688,434.6563 Q2863.3438,434.0781 2862.75,433.8125 Q2862.1563,433.5313 2861.5313,433.5313 Q2860.1875,433.5313 2859.5,434.6094 Q2858.8125,435.6719 2858.8125,437.7656 Q2858.8125,439.8594 2859.5,440.9375 Q2860.1875,442 2861.5313,442 Q2862.1563,442 2862.75,441.7344 Q2863.3438,441.4531 2863.9688,440.875 L2863.9688,443.5938 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="58" x="2875" y="442.1074">ReaderAt</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="2847" x2="2935" y1="453.9531" y2="453.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2847" x2="2935" y1="461.9531" y2="461.9531"/><!--MD5=[8cdc40e571c073c91bdef013610e76ea]
class go-digest.Digest--><rect fill="#FEFECE" height="48" id="go-digest.Digest" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="72" x="5290" y="1284.4531"/><ellipse cx="5305" cy="1300.4531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M5307.9688,1306.0938 Q5307.3906,1306.3906 5306.75,1306.5313 Q5306.1094,1306.6875 5305.4063,1306.6875 Q5302.9063,1306.6875 5301.5781,1305.0469 Q5300.2656,1303.3906 5300.2656,1300.2656 Q5300.2656,1297.1406 5301.5781,1295.4844 Q5302.9063,1293.8281 5305.4063,1293.8281 Q5306.1094,1293.8281 5306.75,1293.9844 Q5307.4063,1294.1406 5307.9688,1294.4375 L5307.9688,1297.1563 Q5307.3438,1296.5781 5306.75,1296.3125 Q5306.1563,1296.0313 5305.5313,1296.0313 Q5304.1875,1296.0313 5303.5,1297.1094 Q5302.8125,1298.1719 5302.8125,1300.2656 Q5302.8125,1302.3594 5303.5,1303.4375 Q5304.1875,1304.5 5305.5313,1304.5 Q5306.1563,1304.5 5306.75,1304.2344 Q5307.3438,1303.9531 5307.9688,1303.375 L5307.9688,1306.0938 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="40" x="5319" y="1304.6074">Digest</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="5291" x2="5361" y1="1316.4531" y2="1316.4531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="5291" x2="5361" y1="1324.4531" y2="1324.4531"/><!--MD5=[0d69a7a468f53d19e8cb97dc746990ba]
class docker.Client--><rect fill="#FEFECE" height="176.0469" id="docker.Client" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="576" x="4383" y="357.9531"/><ellipse cx="4649.25" cy="373.9531" fill="#7FFFD4" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M4648.7344,374.5156 Q4646.875,373.8125 4646.2188,373.0469 Q4645.5781,372.2656 4645.5781,370.9531 Q4645.5781,369.2656 4646.6563,368.2969 Q4647.7344,367.3281 4649.6094,367.3281 Q4650.4688,367.3281 4651.3125,367.5313 Q4652.1719,367.7188 4653.0156,368.1094 L4653.0156,370.5 Q4652.2344,369.9375 4651.4063,369.6563 Q4650.5938,369.3594 4649.7969,369.3594 Q4648.9219,369.3594 4648.4375,369.7188 Q4647.9688,370.0781 4647.9688,370.7344 Q4647.9688,371.25 4648.3125,371.5938 Q4648.6563,371.9219 4649.75,372.3281 L4650.8125,372.7344 Q4652.2969,373.2813 4653,374.1875 Q4653.7188,375.0938 4653.7188,376.4688 Q4653.7188,378.3438 4652.6094,379.2656 Q4651.5,380.1875 4649.25,380.1875 Q4648.3281,380.1875 4647.4063,379.9688 Q4646.4844,379.75 4645.625,379.3281 L4645.625,376.7969 Q4646.5938,377.4844 4647.5156,377.8281 Q4648.4375,378.1719 4649.3281,378.1719 Q4650.2344,378.1719 4650.7344,377.7656 Q4651.2344,377.3438 4651.2344,376.6094 Q4651.2344,376.0469 4650.8906,375.6406 Q4650.5625,375.2188 4649.9375,374.9688 L4648.7344,374.5156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="35" x="4669.75" y="378.1074">Client</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="4384" x2="4958" y1="389.9531" y2="389.9531"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="4391" y="397.9531"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="169" x="4403" y="404.1636">configs []*configfile.ConfigFile</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="4384" x2="4958" y1="410.7578" y2="410.7578"/><rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="4391" y="418.7578"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="344" x="4403" y="424.9683">primaryCredentialsStore(hostname string) credentials.Store</text><rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="4391" y="431.5625"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="230" x="4403" y="437.7729">login(settings *auth.LoginSettings) error</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="0" x="4407" y="450.5776"/><ellipse cx="4394" cy="460.1719" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="550" x="4403" y="463.3823">Login(ctx context.Context, hostname string, username string, secret string, insecure bool) error</text><ellipse cx="4394" cy="472.9766" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="275" x="4403" y="476.187">LoginWithOpts(options ...auth.LoginOption) error</text><ellipse cx="4394" cy="485.7813" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="279" x="4403" y="488.9917">Logout(_ context.Context, hostname string) error</text><ellipse cx="4394" cy="498.5859" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="503" x="4403" y="501.7964">Resolver(_ context.Context, client *http.Client, plainHTTP bool) (remotes.Resolver, error)</text><ellipse cx="4394" cy="511.3906" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="430" x="4403" y="514.6011">ResolverWithOpts(options ...auth.ResolverOption) (remotes.Resolver, error)</text><ellipse cx="4394" cy="524.1953" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="283" x="4403" y="527.4058">Credential(hostname string) (string, string, error)</text><!--MD5=[12e78fa7b51bbc862fc4fe5d5130ddac]
class oras.ProviderWrapper--><rect fill="#FEFECE" height="73.6094" id="oras.ProviderWrapper" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="454" x="820" y="166.4531"/><ellipse cx="990.75" cy="182.4531" fill="#7FFFD4" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M990.2344,183.0156 Q988.375,182.3125 987.7188,181.5469 Q987.0781,180.7656 987.0781,179.4531 Q987.0781,177.7656 988.1563,176.7969 Q989.2344,175.8281 991.1094,175.8281 Q991.9688,175.8281 992.8125,176.0313 Q993.6719,176.2188 994.5156,176.6094 L994.5156,179 Q993.7344,178.4375 992.9063,178.1563 Q992.0938,177.8594 991.2969,177.8594 Q990.4219,177.8594 989.9375,178.2188 Q989.4688,178.5781 989.4688,179.2344 Q989.4688,179.75 989.8125,180.0938 Q990.1563,180.4219 991.25,180.8281 L992.3125,181.2344 Q993.7969,181.7813 994.5,182.6875 Q995.2188,183.5938 995.2188,184.9688 Q995.2188,186.8438 994.1094,187.7656 Q993,188.6875 990.75,188.6875 Q989.8281,188.6875 988.9063,188.4688 Q987.9844,188.25 987.125,187.8281 L987.125,185.2969 Q988.0938,185.9844 989.0156,186.3281 Q989.9375,186.6719 990.8281,186.6719 Q991.7344,186.6719 992.2344,186.2656 Q992.7344,185.8438 992.7344,185.1094 Q992.7344,184.5469 992.3906,184.1406 Q992.0625,183.7188 991.4375,183.4688 L990.2344,183.0156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="104" x="1011.25" y="186.6074">ProviderWrapper</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="821" x2="1273" y1="198.4531" y2="198.4531"/><ellipse cx="831" cy="209.4531" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="140" x="840" y="212.6636">Fetcher remotes.Fetcher</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="821" x2="1273" y1="219.2578" y2="219.2578"/><ellipse cx="831" cy="230.2578" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="428" x="840" y="233.4683">ReaderAt(ctx context.Context, desc v1.Descriptor) (content.ReaderAt, error)</text><!--MD5=[e5558804974df2a4913e7738d03c691c]
class oras.copyOpts--><rect fill="#FEFECE" height="188.8516" id="oras.copyOpts" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="559" x="225.5" y="108.9531"/><ellipse cx="471.75" cy="124.9531" fill="#7FFFD4" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M471.2344,125.5156 Q469.375,124.8125 468.7188,124.0469 Q468.0781,123.2656 468.0781,121.9531 Q468.0781,120.2656 469.1563,119.2969 Q470.2344,118.3281 472.1094,118.3281 Q472.9688,118.3281 473.8125,118.5313 Q474.6719,118.7188 475.5156,119.1094 L475.5156,121.5 Q474.7344,120.9375 473.9063,120.6563 Q473.0938,120.3594 472.2969,120.3594 Q471.4219,120.3594 470.9375,120.7188 Q470.4688,121.0781 470.4688,121.7344 Q470.4688,122.25 470.8125,122.5938 Q471.1563,122.9219 472.25,123.3281 L473.3125,123.7344 Q474.7969,124.2813 475.5,125.1875 Q476.2188,126.0938 476.2188,127.4688 Q476.2188,129.3438 475.1094,130.2656 Q474,131.1875 471.75,131.1875 Q470.8281,131.1875 469.9063,130.9688 Q468.9844,130.75 468.125,130.3281 L468.125,127.7969 Q469.0938,128.4844 470.0156,128.8281 Q470.9375,129.1719 471.8281,129.1719 Q472.7344,129.1719 473.2344,128.7656 Q473.7344,128.3438 473.7344,127.6094 Q473.7344,127.0469 473.3906,126.6406 Q473.0625,126.2188 472.4375,125.9688 L471.2344,125.5156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="58" x="492.25" y="129.1074">copyOpts</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="226.5" x2="783.5" y1="140.9531" y2="140.9531"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="233.5" y="148.9531"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="155" x="245.5" y="155.1636">allowedMediaTypes []string</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="233.5" y="161.7578"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="181" x="245.5" y="167.9683">baseHandlers []images.Handler</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="233.5" y="174.5625"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="198" x="245.5" y="180.7729">callbackHandlers []images.Handler</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="233.5" y="187.3672"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="294" x="245.5" y="193.5776">contentProvideIngesterPusherFetcher content.Store</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="233.5" y="200.1719"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="152" x="245.5" y="206.3823">cachedMediaTypes []string</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="233.5" y="212.9766"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="95" x="245.5" y="219.187">userAgent string</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="226.5" x2="783.5" y1="225.7813" y2="225.7813"/><rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="233.5" y="233.7813"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="48" x="245.5" y="239.9917">dispatch</text><text fill="#0000FF" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="24" x="297.5" y="239.9917">func</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="457" x="321.5" y="239.9917">(context.Context, images.Handler, *semaphore.Weighted, ...v1.Descriptor) error</text><rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="233.5" y="246.5859"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="59" x="245.5" y="252.7964">filterName</text><text fill="#0000FF" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="24" x="308.5" y="252.7964">func</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="112" x="332.5" y="252.7964">(v1.Descriptor) bool</text><rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="233.5" y="259.3906"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="75" x="245.5" y="265.6011">saveManifest</text><text fill="#0000FF" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="24" x="324.5" y="265.6011">func</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="40" x="348.5" y="265.6011">([]byte)</text><rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="233.5" y="272.1953"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="65" x="245.5" y="278.4058">saveLayers</text><text fill="#0000FF" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="24" x="314.5" y="278.4058">func</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="92" x="338.5" y="278.4058">([]v1.Descriptor)</text><rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="233.5" y="285"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="77" x="245.5" y="291.2104">validateName</text><text fill="#0000FF" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="24" x="326.5" y="291.2104">func</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="117" x="350.5" y="291.2104">(v1.Descriptor) error</text><!--MD5=[c74d7f423df791b04fc8f14c670e3f29]
class oras.fetcherReaderAt--><rect fill="#FEFECE" height="150.4375" id="oras.fetcherReaderAt" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="234" x="1309" y="128.4531"/><ellipse cx="1370.25" cy="144.4531" fill="#7FFFD4" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1369.7344,145.0156 Q1367.875,144.3125 1367.2188,143.5469 Q1366.5781,142.7656 1366.5781,141.4531 Q1366.5781,139.7656 1367.6563,138.7969 Q1368.7344,137.8281 1370.6094,137.8281 Q1371.4688,137.8281 1372.3125,138.0313 Q1373.1719,138.2188 1374.0156,138.6094 L1374.0156,141 Q1373.2344,140.4375 1372.4063,140.1563 Q1371.5938,139.8594 1370.7969,139.8594 Q1369.9219,139.8594 1369.4375,140.2188 Q1368.9688,140.5781 1368.9688,141.2344 Q1368.9688,141.75 1369.3125,142.0938 Q1369.6563,142.4219 1370.75,142.8281 L1371.8125,143.2344 Q1373.2969,143.7813 1374,144.6875 Q1374.7188,145.5938 1374.7188,146.9688 Q1374.7188,148.8438 1373.6094,149.7656 Q1372.5,150.6875 1370.25,150.6875 Q1369.3281,150.6875 1368.4063,150.4688 Q1367.4844,150.25 1366.625,149.8281 L1366.625,147.2969 Q1367.5938,147.9844 1368.5156,148.3281 Q1369.4375,148.6719 1370.3281,148.6719 Q1371.2344,148.6719 1371.7344,148.2656 Q1372.2344,147.8438 1372.2344,147.1094 Q1372.2344,146.5469 1371.8906,146.1406 Q1371.5625,145.7188 1370.9375,145.4688 L1369.7344,145.0156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="103" x="1390.75" y="148.6074">fetcherReaderAt</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1310" x2="1542" y1="160.4531" y2="160.4531"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="1317" y="168.4531"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="108" x="1329" y="174.6636">ctx context.Context</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="1317" y="181.2578"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="138" x="1329" y="187.4683">fetcher remotes.Fetcher</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="1317" y="194.0625"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="107" x="1329" y="200.2729">desc v1.Descriptor</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="1317" y="206.8672"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="94" x="1329" y="213.0776">rc io.ReadCloser</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="1317" y="219.6719"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="65" x="1329" y="225.8823">offset int64</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1310" x2="1542" y1="232.4766" y2="232.4766"/><ellipse cx="1320" cy="243.4766" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="73" x="1329" y="246.687">Close() error</text><ellipse cx="1320" cy="256.2813" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="63" x="1329" y="259.4917">Size() int64</text><ellipse cx="1320" cy="269.0859" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="208" x="1329" y="272.2964">ReadAt(p []byte, off int64) (int, error)</text><!--MD5=[1607a6a3c2d63d519bb5085abc7a698a]
class oras.hybridStore--><rect fill="#FEFECE" height="163.2422" id="oras.hybridStore" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="451" x="1578.5" y="121.9531"/><ellipse cx="1763.75" cy="137.9531" fill="#7FFFD4" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1763.2344,138.5156 Q1761.375,137.8125 1760.7188,137.0469 Q1760.0781,136.2656 1760.0781,134.9531 Q1760.0781,133.2656 1761.1563,132.2969 Q1762.2344,131.3281 1764.1094,131.3281 Q1764.9688,131.3281 1765.8125,131.5313 Q1766.6719,131.7188 1767.5156,132.1094 L1767.5156,134.5 Q1766.7344,133.9375 1765.9063,133.6563 Q1765.0938,133.3594 1764.2969,133.3594 Q1763.4219,133.3594 1762.9375,133.7188 Q1762.4688,134.0781 1762.4688,134.7344 Q1762.4688,135.25 1762.8125,135.5938 Q1763.1563,135.9219 1764.25,136.3281 L1765.3125,136.7344 Q1766.7969,137.2813 1767.5,138.1875 Q1768.2188,139.0938 1768.2188,140.4688 Q1768.2188,142.3438 1767.1094,143.2656 Q1766,144.1875 1763.75,144.1875 Q1762.8281,144.1875 1761.9063,143.9688 Q1760.9844,143.75 1760.125,143.3281 L1760.125,140.7969 Q1761.0938,141.4844 1762.0156,141.8281 Q1762.9375,142.1719 1763.8281,142.1719 Q1764.7344,142.1719 1765.2344,141.7656 Q1765.7344,141.3438 1765.7344,140.6094 Q1765.7344,140.0469 1765.3906,139.6406 Q1765.0625,139.2188 1764.4375,138.9688 L1763.2344,138.5156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="72" x="1784.25" y="142.1074">hybridStore</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1579.5" x2="2028.5" y1="153.9531" y2="153.9531"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="1586.5" y="161.9531"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="134" x="1598.5" y="168.1636">cache *content.Memory</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="1586.5" y="174.7578"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="152" x="1598.5" y="180.9683">cachedMediaTypes []string</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="1586.5" y="187.5625"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="86" x="1598.5" y="193.7729">cacheOnly bool</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="1586.5" y="200.3672"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="144" x="1598.5" y="206.5776">provider content.Provider</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="1586.5" y="213.1719"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="144" x="1598.5" y="219.3823">ingester content.Ingester</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1579.5" x2="2028.5" y1="225.9766" y2="225.9766"/><ellipse cx="1589.5" cy="236.9766" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="220" x="1598.5" y="240.187">Set(desc v1.Descriptor, content []byte)</text><ellipse cx="1589.5" cy="249.7813" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="389" x="1598.5" y="252.9917">Fetch(ctx context.Context, desc v1.Descriptor) (io.ReadCloser, error)</text><ellipse cx="1589.5" cy="262.5859" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="387" x="1598.5" y="265.7964">Push(ctx context.Context, desc v1.Descriptor) (content.Writer, error)</text><ellipse cx="1589.5" cy="275.3906" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="425" x="1598.5" y="278.6011">Writer(ctx context.Context, opts ...content.WriterOpt) (content.Writer, error)</text><!--MD5=[9637587a5b472e486d06d568d9f78374]
class oras.CopyOpt--><rect fill="#FEFECE" height="48" id="oras.CopyOpt" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="84" x="64" y="421.9531"/><ellipse cx="79" cy="437.9531" fill="#FF7700" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M79.8438,444.7031 L77.3906,444.7031 L77.3906,434.4531 L74.25,434.4531 L74.25,432.3125 L82.9844,432.3125 L82.9844,434.4531 L79.8438,434.4531 L79.8438,444.7031 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="52" x="93" y="442.1074">CopyOpt</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="65" x2="147" y1="453.9531" y2="453.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="65" x2="147" y1="461.9531" y2="461.9531"/><!--MD5=[1438545206e4dfb81d0b37f1f9dddb44]
class oras.pusherIngester--><rect fill="#FEFECE" height="73.6094" id="oras.pusherIngester" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="451" x="279.5" y="408.9531"/><ellipse cx="452.75" cy="424.9531" fill="#7FFFD4" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M452.2344,425.5156 Q450.375,424.8125 449.7188,424.0469 Q449.0781,423.2656 449.0781,421.9531 Q449.0781,420.2656 450.1563,419.2969 Q451.2344,418.3281 453.1094,418.3281 Q453.9688,418.3281 454.8125,418.5313 Q455.6719,418.7188 456.5156,419.1094 L456.5156,421.5 Q455.7344,420.9375 454.9063,420.6563 Q454.0938,420.3594 453.2969,420.3594 Q452.4219,420.3594 451.9375,420.7188 Q451.4688,421.0781 451.4688,421.7344 Q451.4688,422.25 451.8125,422.5938 Q452.1563,422.9219 453.25,423.3281 L454.3125,423.7344 Q455.7969,424.2813 456.5,425.1875 Q457.2188,426.0938 457.2188,427.4688 Q457.2188,429.3438 456.1094,430.2656 Q455,431.1875 452.75,431.1875 Q451.8281,431.1875 450.9063,430.9688 Q449.9844,430.75 449.125,430.3281 L449.125,427.7969 Q450.0938,428.4844 451.0156,428.8281 Q451.9375,429.1719 452.8281,429.1719 Q453.7344,429.1719 454.2344,428.7656 Q454.7344,428.3438 454.7344,427.6094 Q454.7344,427.0469 454.3906,426.6406 Q454.0625,426.2188 453.4375,425.9688 L452.2344,425.5156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="96" x="473.25" y="429.1074">pusherIngester</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="280.5" x2="729.5" y1="440.9531" y2="440.9531"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="287.5" y="448.9531"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="136" x="299.5" y="455.1636">pusher remotes.Pusher</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="280.5" x2="729.5" y1="461.7578" y2="461.7578"/><ellipse cx="290.5" cy="472.7578" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="425" x="299.5" y="475.9683">Writer(ctx context.Context, opts ...content.WriterOpt) (content.Writer, error)</text><!--MD5=[127c42d7c28eaed2b9f1542270ba428e]
class oras.teeWriter--><rect fill="#FEFECE" height="163.2422" id="oras.teeWriter" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="552" x="766" y="364.4531"/><ellipse cx="1008.75" cy="380.4531" fill="#7FFFD4" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1008.2344,381.0156 Q1006.375,380.3125 1005.7188,379.5469 Q1005.0781,378.7656 1005.0781,377.4531 Q1005.0781,375.7656 1006.1563,374.7969 Q1007.2344,373.8281 1009.1094,373.8281 Q1009.9688,373.8281 1010.8125,374.0313 Q1011.6719,374.2188 1012.5156,374.6094 L1012.5156,377 Q1011.7344,376.4375 1010.9063,376.1563 Q1010.0938,375.8594 1009.2969,375.8594 Q1008.4219,375.8594 1007.9375,376.2188 Q1007.4688,376.5781 1007.4688,377.2344 Q1007.4688,377.75 1007.8125,378.0938 Q1008.1563,378.4219 1009.25,378.8281 L1010.3125,379.2344 Q1011.7969,379.7813 1012.5,380.6875 Q1013.2188,381.5938 1013.2188,382.9688 Q1013.2188,384.8438 1012.1094,385.7656 Q1011,386.6875 1008.75,386.6875 Q1007.8281,386.6875 1006.9063,386.4688 Q1005.9844,386.25 1005.125,385.8281 L1005.125,383.2969 Q1006.0938,383.9844 1007.0156,384.3281 Q1007.9375,384.6719 1008.8281,384.6719 Q1009.7344,384.6719 1010.2344,384.2656 Q1010.7344,383.8438 1010.7344,383.1094 Q1010.7344,382.5469 1010.3906,382.1406 Q1010.0625,381.7188 1009.4375,381.4688 L1008.2344,381.0156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="58" x="1029.25" y="384.6074">teeWriter</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="767" x2="1317" y1="396.4531" y2="396.4531"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="774" y="404.4531"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="131" x="786" y="410.6636">writers []content.Writer</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="774" y="417.2578"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="156" x="786" y="423.4683">digester go-digest.Digester</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="774" y="430.0625"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="123" x="786" y="436.2729">status content.Status</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="767" x2="1317" y1="442.8672" y2="442.8672"/><ellipse cx="777" cy="453.8672" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="73" x="786" y="457.0776">Close() error</text><ellipse cx="777" cy="466.6719" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="142" x="786" y="469.8823">Write(p []byte) (int, error)</text><ellipse cx="777" cy="479.4766" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="141" x="786" y="482.687">Digest() go-digest.Digest</text><ellipse cx="777" cy="492.2813" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="526" x="786" y="495.4917">Commit(ctx context.Context, size int64, expected go-digest.Digest, opts ...content.Opt) error</text><ellipse cx="777" cy="505.0859" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="177" x="786" y="508.2964">Status() (content.Status, error)</text><ellipse cx="777" cy="517.8906" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="145" x="786" y="521.1011">Truncate(size int64) error</text><!--MD5=[5d7650cd1def2b41f41195b672c3604c]
class oras.<font color=blue>func</font>(*copyOpts) error--><rect fill="#FEFECE" height="48" id="oras.&lt;font color=blue&gt;func&lt;/font&gt;(*copyOpts) error" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="168" x="22" y="179.4531"/><ellipse cx="37" cy="195.4531" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M39.9688,201.0938 Q39.3906,201.3906 38.75,201.5313 Q38.1094,201.6875 37.4063,201.6875 Q34.9063,201.6875 33.5781,200.0469 Q32.2656,198.3906 32.2656,195.2656 Q32.2656,192.1406 33.5781,190.4844 Q34.9063,188.8281 37.4063,188.8281 Q38.1094,188.8281 38.75,188.9844 Q39.4063,189.1406 39.9688,189.4375 L39.9688,192.1563 Q39.3438,191.5781 38.75,191.3125 Q38.1563,191.0313 37.5313,191.0313 Q36.1875,191.0313 35.5,192.1094 Q34.8125,193.1719 34.8125,195.2656 Q34.8125,197.3594 35.5,198.4375 Q36.1875,199.5 37.5313,199.5 Q38.1563,199.5 38.75,199.2344 Q39.3438,198.9531 39.9688,198.375 L39.9688,201.0938 Z "/><text fill="#0000FF" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="27" x="51" y="199.6074">func</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="109" x="78" y="199.6074">(*copyOpts) error</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="23" x2="189" y1="211.4531" y2="211.4531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="23" x2="189" y1="219.4531" y2="219.4531"/><!--MD5=[e86fe7b358d14af4c20821d4a4457b66]
class target.Target--><rect fill="#FEFECE" height="48" id="target.Target" rx="5" ry="5" style="stroke: #A80036; stroke-width: 1.5;" width="73" x="4842.5" y="179.4531"/><ellipse cx="4857.5" cy="195.4531" fill="#B4A7E5" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M4853.4219,191.2188 L4853.4219,189.0625 L4860.8125,189.0625 L4860.8125,191.2188 L4858.3438,191.2188 L4858.3438,199.2969 L4860.8125,199.2969 L4860.8125,201.4531 L4853.4219,201.4531 L4853.4219,199.2969 L4855.8906,199.2969 L4855.8906,191.2188 L4853.4219,191.2188 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="41" x="4871.5" y="199.6074">Target</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="4843.5" x2="4914.5" y1="211.4531" y2="211.4531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="4843.5" x2="4914.5" y1="219.4531" y2="219.4531"/><!--MD5=[6a8a4034120f947f2b3d1879a471cceb]
reverse link content.Store to content.OCI--><path d="M2323.3904,872.7477 C2328.5428,929.4244 2338.668,1040.8008 2347.3911,1136.7552 " fill="none" id="content.Store&lt;-content.OCI" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="2322.1915,859.5595,2318.7512,865.897,2323.278,871.5102,2326.7183,865.1727,2322.1915,859.5595" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="51" x="2294.5284" y="1125.7164">extends</text><!--MD5=[9df86c69191f6c76ee7b8defc0837dc6]
reverse link remotes.Resolver to content.Registry--><path d="M2211,483.08 C2211,562.0647 2211,744.9298 2211,811.0444 " fill="none" id="remotes.Resolver&lt;-content.Registry" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="2211,470.0241,2207,476.0241,2211,482.0241,2215,476.0241,2211,470.0241" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="51" x="2153.7844" y="800.3498">extends</text><!--MD5=[b8ec7b5bb7d2806cd07821879b7256d9]
reverse link io.ReaderAt to content.nopCloserAt--><path d="M2891,483.1501 C2891,559.7788 2891,733.9699 2891,804.722 " fill="none" id="io.ReaderAt&lt;-content.nopCloserAt" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="2891,470.0241,2887,476.0241,2891,482.0241,2895,476.0241,2891,470.0241" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="51" x="2834.7406" y="793.9376">extends</text><!--MD5=[0ef314e1945dde6b5668edc8fe567f4f]
reverse link content.readAtCloser to content.sizeReaderAt--><path d="M2074.0593,872.5479 C2062.2938,960.8823 2032.7233,1182.8957 2020.9493,1271.2944 " fill="none" id="content.readAtCloser&lt;-content.sizeReaderAt" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="2075.7892,859.5595,2071.032,864.9789,2074.2048,871.4545,2078.962,866.0351,2075.7892,859.5595" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="51" x="1966.2887" y="1260.4531">extends</text><!--MD5=[b1a2929b9a82ab0153dfeaba94ed4662]
reverse link content.WriterOpts to go-digest.Digest--><path d="M5196.2182,903.557 C5220.7399,964.1761 5256.2667,1055.589 5282,1136.9531 C5298.4066,1188.8278 5313.1598,1250.9538 5320.7029,1284.3572 " fill="none" id="content.WriterOpts&lt;-go-digest.Digest" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="5191.3135,891.4801,5189.8651,898.5443,5195.8288,902.5982,5197.2772,895.5341,5191.3135,891.4801" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="30" x="5162.3787" y="911.6934">uses</text><!--MD5=[e6950d1d5ea8791b385b25a46c0eb512]
reverse link auth.Client to docker.Client--><path d="M4228.7643,267.2162 C4297.3349,294.9301 4378.8052,327.8577 4453.0211,357.8533 " fill="none" id="auth.Client&lt;-docker.Client" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="4225.7024,273.5288,4209.7827,259.5444,4230.9485,260.5489,4225.7024,273.5288" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="76" x="4355.8228" y="347.0069">implements</text><!--MD5=[3fadd94abbf5d9fe98aa39f22d749bd4]
reverse link oras.ProviderWrapper to remotes.Fetcher--><path d="M1135.7727,245.8841 C1181.1356,265.4708 1237.8514,286.8124 1291,297.9531 C1373.0743,315.157 1976.245,282.9436 2045,330.9531 C2074.8001,351.7616 2086.1595,394.7853 2090.4477,421.9053 " fill="none" id="oras.ProviderWrapper&lt;-remotes.Fetcher" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="1123.5934,240.5502,1127.4848,246.6212,1134.5855,245.3642,1130.6941,239.2932,1123.5934,240.5502" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="30" x="1103.7948" y="260.0469">uses</text><!--MD5=[771320a697045bf7bd973cf34ed0eccf]
reverse link auth.<font color=blue>func</font>(*LoginSettings) to auth.LoginOption--><path d="M3666,232.6929 C3666,281.1378 3666,377.1385 3666,421.9123 " fill="none" id="auth.&lt;font color=blue&gt;func&lt;/font&gt;(*LoginSettings) &lt;-auth.LoginOption" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><rect fill="#FFFFFF" height="10" style="stroke: #A80036; stroke-width: 1.5;" width="10" x="3661" y="222.5915"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="45" x="3615.2344" y="410.9139">alias of</text><!--MD5=[f734487c6c50a069fd7f455c4b328846]
reverse link auth.<font color=blue>func</font>(*ResolverSettings) to auth.ResolverOption--><path d="M3457,232.6929 C3457,281.1378 3457,377.1385 3457,421.9123 " fill="none" id="auth.&lt;font color=blue&gt;func&lt;/font&gt;(*ResolverSettings) &lt;-auth.ResolverOption" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><rect fill="#FFFFFF" height="10" style="stroke: #A80036; stroke-width: 1.5;" width="10" x="3452" y="222.5915"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="45" x="3406.2344" y="410.9139">alias of</text><!--MD5=[c1ac9f8e3e07a1f72b07764aad6c7b54]
reverse link content.<font color=blue>func</font>(*WriterOpts) error to content.WriterOpt--><path d="M1898.6981,864.7773 C1894.8525,951.3944 1883.5935,1204.9909 1880.0681,1284.3952 " fill="none" id="content.&lt;font color=blue&gt;func&lt;/font&gt;(*WriterOpts) error&lt;-content.WriterOpt" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><rect fill="#FFFFFF" height="10" style="stroke: #A80036; stroke-width: 1.5;" width="10" x="1893.9297" y="854.5595"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="45" x="1829.5762" y="1273.3924">alias of</text><!--MD5=[f6da4be21210bd82f82bd303df704d22]
reverse link oras.<font color=blue>func</font>(*copyOpts) error to oras.CopyOpt--><path d="M106,232.6929 C106,281.1378 106,377.1385 106,421.9123 " fill="none" id="oras.&lt;font color=blue&gt;func&lt;/font&gt;(*copyOpts) error&lt;-oras.CopyOpt" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><rect fill="#FFFFFF" height="10" style="stroke: #A80036; stroke-width: 1.5;" width="10" x="101" y="222.5915"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="45" x="55.2344" y="410.9139">alias of</text><!--MD5=[f1b2338350abb598c345f0f7ed6365cd]
link content.Decompress to content.File--><!--MD5=[a28702160eb24d698af0628d4b341f4d]
link content.File to content.IoContentWriter--><!--MD5=[eeeaca0e8050d4d609c1f0adf7a354b6]
link content.IoContentWriter to content.Memory--><!--MD5=[16f76a44fe9434b0ede043eecfaab722]
link content.Memory to content.MultiReader--><!--MD5=[63e5fea859a9570d466be8f43c383008]
link content.Decompress to content.MultiWriterIngester--><!--MD5=[5200e32cd1e0dacfbd87543cd6a71216]
link content.MultiWriterIngester to content.MultiWriterPusher--><!--MD5=[c65560f58a7c18465f0e3113e0b7b390]
link content.MultiWriterPusher to content.PassthroughMultiWriter--><!--MD5=[84d539bb4b2977f60ddad81c5b0170cf]
link content.PassthroughMultiWriter to content.PassthroughWriter--><!--MD5=[e84e3e5ba1a786c77efbaf444cb88712]
link content.PassthroughWriter to content.ReaderAtWrapper--><!--MD5=[4c1655fab930b9faf81ef851d70e1a0a]
link content.MultiWriterIngester to content.RegistryOptions--><!--MD5=[636eb2ac3c6d316ce7548c200ed52d54]
link content.RegistryOptions to content.filePusher--><!--MD5=[17f7497bb8e0dc8b2016aac1c09d0ad8]
link content.filePusher to content.fileWriter--><!--MD5=[f2c9a87e1869b8ba6611dec81f908b71]
link content.fileWriter to content.memoryPusher--><!--MD5=[df612db2ca8f690b1ac134d4a5f8cadb]
link content.memoryPusher to content.memoryWriter--><!--MD5=[1feadb72859f0b81a0d30058db653a41]
link content.RegistryOptions to content.ociPusher--><!--MD5=[0cfb3d616c04462c7b9679ee85110b15]
link content.ociPusher to content.underlyingWriter--><!--MD5=[ad56a4cdc9c0ea600b74a24c844fbbcb]
link oras.copyOpts to oras.fetcherReaderAt--><!--MD5=[76207e88f39e02b95864123d51c0b2c5]
link oras.fetcherReaderAt to oras.hybridStore--><!--MD5=[8aeb5463593afbebd9fe371439e0a956]
link oras.copyOpts to oras.pusherIngester--><!--MD5=[cfc522cf43c82c22421ecb4b2339cb3d]
link oras.pusherIngester to oras.teeWriter--><text fill="#888888" font-family="sans-serif" font-size="10" lengthAdjust="spacingAndGlyphs" textLength="158" x="2620.5" y="1987.2354">Generated via www.dumels.com</text><image height="60" width="60" x="2669.5" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAACW0lEQVR4Xu2aO1LDMBRFH3/YAR0LoYWKkm9BwV5YDXRQBKhImIFhExlaCgpq/rpRHuM8W4lsyUIWujMHHDt++DiyLJkQ5eTk5OQ4Z04x3xLRBbLXipeWiC4Q7iu+FV8eQT0QXVj4TbGiWPXAGul6UQu/i/UuWaAsHDaQqoK39SkRYchckJaRnI23Jyd8SbrXvFUMCpyOtycp/FF4nXyTLgpX5V8LY1kODZvQCWFc50PFkyd4tBU0dYTxHhsgARm53kTQ2Agj3AxnsUi61vl4WW6vImhshW2DeqjF9/DokoUd00j4uCV2qBxbYex7YsknTQrP2vd3YiwnzC6g3gOVz7qNMPfSdY4JnRb2433ldj6m0W0JP3AAB57YI13vntyE8cmhlqxfxSZ2HGerYvsh6Xq/whiF4FbgKxgluQr7Hlpm4baEJZgPJymMuvgj3GlgmV/jtymdF64iyU+4T+XmXMSUzgoPaLqYKckJrys25MpCggjzwGPfAzzwqBLG6x7pE2wKC6PGLpUHEU2ZEAZyKOYC6pmEr8iul27jmEbCRy2xTeXYCCPYV9YzgZbwSOVJgomgsRW2DfodCNeaHoaMb2HUQ+eWhWOJrTAeyC1ZsEy6SUf9EG+WMPfScjhqgntziNsQNHWEITGk8gP1pvCtKWjqCOPaxLL8t0kT+Pl19MK+gmuXm3/Q/FthXE93pJ+KVPFKCQn3SE8epoETkoQwB+LTwKeflPC0QBjNOgs7pDPCGDrKrxE2AV89/JP7sE1YGAcnJ/EuoF60wjeK55aIMpCWw0Nf5OTk5HQnP5VHM9pzOexnAAAAAElFTkSuQmCC" y="1989.5938"/><!--MD5=[530b594f899e72a158f0a1fda7a59713]
@startuml
skinparamlocked shadowing false
skinparamlocked roundCorner 10
title https://www.github.com/oras-project/oras-go
namespace auth {
interface Client {
+ Login(ctx context.Context, hostname string, username string, secret string, insecure bool) error
+ LoginWithOpts(options ...LoginOption) error
+ Logout(ctx context.Context, hostname string) error
+ Resolver(ctx context.Context, client *http.Client, plainHTTP bool) (remotes.Resolver, error)
+ ResolverWithOpts(options ...ResolverOption) (remotes.Resolver, error)
}
class auth.LoginOption << (T, #FF7700) >> {
}
class auth.ResolverOption << (T, #FF7700) >> {
}
}
namespace content {
class Decompress << (S,Aquamarine) >> {
- pusher remotes.Pusher
- blocksize int
- multiWriterIngester bool
+ Push(ctx context.Context, desc v1.Descriptor) (content.Writer, error)
}
class File << (S,Aquamarine) >> {
- root string
- descriptor *sync.Map
- pathMap *sync.Map
- memoryMap *sync.Map
- refMap *sync.Map
- tmpFiles *sync.Map
- ignoreNoName bool
+ DisableOverwrite bool
+ AllowPathTraversalOnWrite bool
+ Reproducible bool
- descFromFile(info os.FileInfo, mediaType string, path string) (v1.Descriptor, error)
- descFromDir(name string, mediaType string, root string) (v1.Descriptor, error)
- tempFile() (*os.File, error)
- resolveWritePath(name string) (string, error)
- createWritePath(path string, desc v1.Descriptor, prefix string) (*os.File, <font color=blue>func</font>() error, error)
- resolvePath(path string) string
- set(desc v1.Descriptor)
- get(desc v1.Descriptor) (v1.Descriptor, bool)
- getMemory(desc v1.Descriptor) ([]byte, bool)
- getRef(ref string) (v1.Descriptor, bool)
+ Resolver() remotes.Resolver
+ Resolve(ctx context.Context, ref string) (string, v1.Descriptor, error)
+ Fetcher(ctx context.Context, ref string) (remotes.Fetcher, error)
+ Fetch(ctx context.Context, desc v1.Descriptor) (io.ReadCloser, error)
+ Pusher(ctx context.Context, ref string) (remotes.Pusher, error)
+ Add(name string, mediaType string, path string) (v1.Descriptor, error)
+ Load(desc v1.Descriptor, data []byte) error
+ Ref(ref string) (v1.Descriptor, []byte, error)
+ Close() error
+ MapPath(name string, path string) string
+ ResolvePath(name string) string
+ StoreManifest(ref string, desc v1.Descriptor, manifest []byte) error
}
class IoContentWriter << (S,Aquamarine) >> {
- writer io.Writer
- digester go-digest.Digester
- size int64
- hash *go-digest.Digest
+ Write(p []byte) (int, error)
+ Close() error
+ Digest() go-digest.Digest
+ Commit(ctx context.Context, size int64, expected go-digest.Digest, opts ...content.Opt) error
+ Status() (content.Status, error)
+ Truncate(size int64) error
}
class Memory << (S,Aquamarine) >> {
- descriptor <font color=blue>map</font>[go-digest.Digest]v1.Descriptor
- content <font color=blue>map</font>[go-digest.Digest][]byte
- nameMap <font color=blue>map</font>[string]v1.Descriptor
- refMap <font color=blue>map</font>[string]v1.Descriptor
- lock *sync.Mutex
+ Resolver() remotes.Resolver
+ Resolve(ctx context.Context, ref string) (string, v1.Descriptor, error)
+ Fetcher(ctx context.Context, ref string) (remotes.Fetcher, error)
+ Fetch(ctx context.Context, desc v1.Descriptor) (io.ReadCloser, error)
+ Pusher(ctx context.Context, ref string) (remotes.Pusher, error)
+ Add(name string, mediaType string, content []byte) (v1.Descriptor, error)
+ Set(desc v1.Descriptor, content []byte)
+ Get(desc v1.Descriptor) (v1.Descriptor, []byte, bool)
+ GetByName(name string) (v1.Descriptor, []byte, bool)
+ StoreManifest(ref string, desc v1.Descriptor, manifest []byte) error
}
class MultiReader << (S,Aquamarine) >> {
- stores []remotes.Fetcher
+ AddStore(store ...remotes.Fetcher)
+ Fetch(ctx context.Context, desc v1.Descriptor) (io.ReadCloser, error)
}
interface MultiWriterIngester {
+ Writers(ctx context.Context, opts ...content.WriterOpt) (<font color=blue>func</font>(string) (content.Writer, error), error)
}
interface MultiWriterPusher {
+ Pushers(ctx context.Context, desc v1.Descriptor) (<font color=blue>func</font>(string) (content.Writer, error), error)
}
class OCI << (S,Aquamarine) >> {
- root string
- index *v1.Index
- nameMap <font color=blue>map</font>[string]v1.Descriptor
- validateOCILayoutFile() error
+ LoadIndex() error
+ SaveIndex() error
+ Resolver() remotes.Resolver
+ Resolve(ctx context.Context, ref string) (string, v1.Descriptor, error)
+ Fetcher(ctx context.Context, ref string) (remotes.Fetcher, error)
+ Fetch(ctx context.Context, desc v1.Descriptor) (io.ReadCloser, error)
+ Pusher(ctx context.Context, ref string) (remotes.Pusher, error)
+ AddReference(name string, desc v1.Descriptor)
+ DeleteReference(name string)
+ ListReferences() <font color=blue>map</font>[string]v1.Descriptor
+ Info(ctx context.Context, dgst go-digest.Digest) (content.Info, error)
+ Update(ctx context.Context, info content.Info, fieldpaths ...string) (content.Info, error)
+ Walk(ctx context.Context, fn content.WalkFunc, filters ...string) error
+ Delete(ctx context.Context, dgst go-digest.Digest) error
+ Status(ctx context.Context, ref string) (content.Status, error)
+ ListStatuses(ctx context.Context, filters ...string) ([]content.Status, error)
+ Abort(ctx context.Context, ref string) error
+ ReaderAt(ctx context.Context, desc v1.Descriptor) (content.ReaderAt, error)
}
class PassthroughMultiWriter << (S,Aquamarine) >> {
- writers []*PassthroughWriter
- pipew *io.PipeWriter
- digester go-digest.Digester
- size int64
- reader *io.PipeReader
- hash *go-digest.Digest
- done <font color=blue>chan</font> error
- startedAt time.Time
- updatedAt time.Time
+ Write(p []byte) (int, error)
+ Close() error
+ Digest() go-digest.Digest
+ Commit(ctx context.Context, size int64, expected go-digest.Digest, opts ...content.Opt) error
+ Status() (content.Status, error)
+ Truncate(size int64) error
}
class PassthroughWriter << (S,Aquamarine) >> {
- writer content.Writer
- pipew *io.PipeWriter
- digester go-digest.Digester
- size int64
- underlyingWriter *underlyingWriter
- reader *io.PipeReader
- hash *go-digest.Digest
- done <font color=blue>chan</font> error
+ Write(p []byte) (int, error)
+ Close() error
+ Digest() go-digest.Digest
+ Commit(ctx context.Context, size int64, expected go-digest.Digest, opts ...content.Opt) error
+ Status() (content.Status, error)
+ Truncate(size int64) error
}
class ReaderAtWrapper << (S,Aquamarine) >> {
- offset int64
- readerAt io.ReaderAt
+ Read(p []byte) (int, error)
}
class Registry << (S,Aquamarine) >> {
}
class RegistryOptions << (S,Aquamarine) >> {
+ Configs []string
+ Username string
+ Password string
+ Insecure bool
+ PlainHTTP bool
}
interface Store {
}
class WriterOpts << (S,Aquamarine) >> {
+ InputHash *go-digest.Digest
+ OutputHash *go-digest.Digest
+ Blocksize int
+ MultiWriterIngester bool
+ IgnoreNoName bool
}
class content.WriterOpt << (T, #FF7700) >> {
}
class filePusher << (S,Aquamarine) >> {
- store *File
- ref string
- hash string
+ Push(ctx context.Context, desc v1.Descriptor) (content.Writer, error)
}
class fileWriter << (S,Aquamarine) >> {
- store *File
- file *os.File
- desc v1.Descriptor
- digester go-digest.Digester
- status content.Status
- afterCommit <font color=blue>func</font>() error
+ Status() (content.Status, error)
+ Digest() go-digest.Digest
+ Write(p []byte) (int, error)
+ Commit(ctx context.Context, size int64, expected go-digest.Digest, opts ...content.Opt) error
+ Close() error
+ Truncate(size int64) error
}
class memoryPusher << (S,Aquamarine) >> {
- store *Memory
- ref string
- hash string
+ Push(ctx context.Context, desc v1.Descriptor) (content.Writer, error)
}
class memoryWriter << (S,Aquamarine) >> {
- store *Memory
- buffer *bytes.Buffer
- desc v1.Descriptor
- digester go-digest.Digester
- status content.Status
+ Status() (content.Status, error)
+ Digest() go-digest.Digest
+ Write(p []byte) (int, error)
+ Commit(ctx context.Context, size int64, expected go-digest.Digest, opts ...content.Opt) error
+ Close() error
+ Truncate(size int64) error
}
class nopCloserAt << (S,Aquamarine) >> {
+ Close() error
}
class ociPusher << (S,Aquamarine) >> {
- oci *OCI
- ref string
- digest string
+ Push(ctx context.Context, desc v1.Descriptor) (content.Writer, error)
}
interface readAtCloser {
}
class sizeReaderAt << (S,Aquamarine) >> {
- size int64
+ Size() int64
}
class underlyingWriter << (S,Aquamarine) >> {
- writer content.Writer
- digester go-digest.Digester
- size int64
- hash *go-digest.Digest
+ Write(p []byte) (int, error)
+ Size() int64
+ Digest() go-digest.Digest
}
}
"content.Store" *- - "extends""content.OCI"
"remotes.Resolver" *- - "extends""content.Registry"
"io.ReaderAt" *- - "extends""content.nopCloserAt"
"content.readAtCloser" *- - "extends""content.sizeReaderAt"
"content.WriterOpts""uses" o- - "go-digest.Digest"
namespace docker {
class Client << (S,Aquamarine) >> {
- configs []*configfile.ConfigFile
- primaryCredentialsStore(hostname string) credentials.Store
- login(settings *auth.LoginSettings) error
+ Login(ctx context.Context, hostname string, username string, secret string, insecure bool) error
+ LoginWithOpts(options ...auth.LoginOption) error
+ Logout(_ context.Context, hostname string) error
+ Resolver(_ context.Context, client *http.Client, plainHTTP bool) (remotes.Resolver, error)
+ ResolverWithOpts(options ...auth.ResolverOption) (remotes.Resolver, error)
+ Credential(hostname string) (string, string, error)
}
}
"auth.Client" <|- - "implements""docker.Client"
namespace oras {
class ProviderWrapper << (S,Aquamarine) >> {
+ Fetcher remotes.Fetcher
+ ReaderAt(ctx context.Context, desc v1.Descriptor) (content.ReaderAt, error)
}
class copyOpts << (S,Aquamarine) >> {
- allowedMediaTypes []string
- dispatch <font color=blue>func</font>(context.Context, images.Handler, *semaphore.Weighted, ...v1.Descriptor) error
- baseHandlers []images.Handler
- callbackHandlers []images.Handler
- contentProvideIngesterPusherFetcher content.Store
- filterName <font color=blue>func</font>(v1.Descriptor) bool
- cachedMediaTypes []string
- saveManifest <font color=blue>func</font>([]byte)
- saveLayers <font color=blue>func</font>([]v1.Descriptor)
- validateName <font color=blue>func</font>(v1.Descriptor) error
- userAgent string
}
class fetcherReaderAt << (S,Aquamarine) >> {
- ctx context.Context
- fetcher remotes.Fetcher
- desc v1.Descriptor
- rc io.ReadCloser
- offset int64
+ Close() error
+ Size() int64
+ ReadAt(p []byte, off int64) (int, error)
}
class hybridStore << (S,Aquamarine) >> {
- cache *content.Memory
- cachedMediaTypes []string
- cacheOnly bool
- provider content.Provider
- ingester content.Ingester
+ Set(desc v1.Descriptor, content []byte)
+ Fetch(ctx context.Context, desc v1.Descriptor) (io.ReadCloser, error)
+ Push(ctx context.Context, desc v1.Descriptor) (content.Writer, error)
+ Writer(ctx context.Context, opts ...content.WriterOpt) (content.Writer, error)
}
class oras.CopyOpt << (T, #FF7700) >> {
}
class pusherIngester << (S,Aquamarine) >> {
- pusher remotes.Pusher
+ Writer(ctx context.Context, opts ...content.WriterOpt) (content.Writer, error)
}
class teeWriter << (S,Aquamarine) >> {
- writers []content.Writer
- digester go-digest.Digester
- status content.Status
+ Close() error
+ Write(p []byte) (int, error)
+ Digest() go-digest.Digest
+ Commit(ctx context.Context, size int64, expected go-digest.Digest, opts ...content.Opt) error
+ Status() (content.Status, error)
+ Truncate(size int64) error
}
}
"oras.ProviderWrapper""uses" o- - "remotes.Fetcher"
namespace target {
interface Target {
}
}
"auth.<font color=blue>func</font>(*LoginSettings) " #.. "alias of""auth.LoginOption"
"auth.<font color=blue>func</font>(*ResolverSettings) " #.. "alias of""auth.ResolverOption"
"content.<font color=blue>func</font>(*WriterOpts) error" #.. "alias of""content.WriterOpt"
"oras.<font color=blue>func</font>(*copyOpts) error" #.. "alias of""oras.CopyOpt"
footer Generated via www.dumels.com\n<img:support_files/svg_placeholders/logo.png{scale=.3}>
@enduml
PlantUML version 1.2019.12(Sun Nov 03 10:24:54 UTC 2019)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Java Version: 11.0.8+10-post-Debian-1deb10u1
Operating System: Linux
Default Encoding: ANSI_X3.4-1968
Language: en
Country: US
--></g></svg>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment