<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<diagram program="umlet" version="14.3.0">
  <help_text>fontsize=13
fontfamily=SansSerif
</help_text>
  <zoom_level>10</zoom_level>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>80</x>
      <y>140</y>
      <w>150</w>
      <h>100</h>
    </coordinates>
    <panel_attributes>NativeChanged
--
#path: path
#lastChanged: time
--
+NativeChanged(path&amp;)
_+getTime(path&amp;): time_</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>700</x>
      <y>410</y>
      <w>150</w>
      <h>40</h>
    </coordinates>
    <panel_attributes>&lt;&lt;datatype&gt;&gt;
path {::boost::filesystem}</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>20</x>
      <y>40</y>
      <w>250</w>
      <h>70</h>
    </coordinates>
    <panel_attributes>/Changed {::ZipDirFs::Containers::Helpers}/
--
--
/+operator()(): bool/
/+operator time(): time/
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>40</x>
      <y>100</y>
      <w>60</w>
      <h>90</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;70.0;40.0;70.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>80</x>
      <y>270</y>
      <w>200</w>
      <h>140</h>
    </coordinates>
    <panel_attributes>ZipFileChanged
--
#path: path
#item: string
#lastPathChanged: time
#lastItemChanged: time
#state: bitset&lt;2&gt;
--
+ZipFileChanged(path&amp;, string&amp;)
_+getTime(path&amp;, string&amp;): time_</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>840</x>
      <y>470</y>
      <w>100</w>
      <h>60</h>
    </coordinates>
    <panel_attributes>&lt;&lt;datatype&gt;&gt;
template=i: int
bitset {::std}</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>700</x>
      <y>550</y>
      <w>100</w>
      <h>40</h>
    </coordinates>
    <panel_attributes>&lt;&lt;datatype&gt;&gt;
string {::std}</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>40</x>
      <y>100</y>
      <w>60</w>
      <h>220</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;200.0;40.0;200.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>300</x>
      <y>40</y>
      <w>290</w>
      <h>110</h>
    </coordinates>
    <panel_attributes>template=T
/Enumerator {::ZipDirFs::Containers::Helpers}/
--
--
/+reset(): void/
/+next(): void/
/+valid(): bool/
/+current(): T&amp;/</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>430</x>
      <y>180</y>
      <w>220</w>
      <h>100</h>
    </coordinates>
    <panel_attributes>NativeDirectoryEnumerator
--
#path: path
#currentIt: EntryIterator
#endIt: EntryIterator
--
+NativeDirectoryEnumerator(path&amp;)
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>450</x>
      <y>490</y>
      <w>230</w>
      <h>30</h>
    </coordinates>
    <panel_attributes>EntryIterator {::ZipDirFs::Containers}</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>320</x>
      <y>140</y>
      <w>130</w>
      <h>90</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-
&lt;&lt;bind&gt;&gt;
&lt; T -&gt; string &gt;</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;70.0;110.0;70.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>400</x>
      <y>310</y>
      <w>250</w>
      <h>140</h>
    </coordinates>
    <panel_attributes>ZipDirectoryEnumerator
--
#path: path
#item: string
#currentIr: EntryIterator
#endIt: EntryIterator
--
+ZipDirectoryEnumerator(path&amp;, string&amp;)
--
{innerclass
HolderBase
innerclass}</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>320</x>
      <y>140</y>
      <w>120</w>
      <h>220</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-
&lt;&lt;bind&gt;&gt;
&lt; T -&gt; string &gt;</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;200.0;80.0;200.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>590</x>
      <y>440</y>
      <w>70</w>
      <h>70</h>
    </coordinates>
    <panel_attributes>lt=&lt;.
&lt;&lt;uses&gt;&gt;</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;50.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>640</x>
      <y>200</y>
      <w>90</w>
      <h>310</h>
    </coordinates>
    <panel_attributes>lt=&lt;.
&lt;&lt;uses&gt;&gt;</panel_attributes>
    <additional_attributes>10.0;10.0;30.0;10.0;30.0;270.0;10.0;270.0;10.0;290.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>660</x>
      <y>40</y>
      <w>240</w>
      <h>100</h>
    </coordinates>
    <panel_attributes>/Factory {::ZipDirFs::Containers::Helper}/
--
--
/+create(key_type&amp;): mapped_type/
/+destroy(mapped_type): void/
--
alias key_type: string
alias mapped_type: entry*</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>870</x>
      <y>410</y>
      <w>100</w>
      <h>40</h>
    </coordinates>
    <panel_attributes>&lt;&lt;datatype&gt;&gt;
entry {::fusekit}</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>720</x>
      <y>170</y>
      <w>250</w>
      <h>80</h>
    </coordinates>
    <panel_attributes>template=Directory, Symlink, Zip
NativeFactory
--
#path: path&amp;
--
+NativeFactory(path: path&amp;)
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>720</x>
      <y>280</y>
      <w>330</w>
      <h>100</h>
    </coordinates>
    <panel_attributes>template=Directory, File
ZipFactory
--
#archive: path&amp;
#inner: key_type&amp;
--
+ZipFactory(archive: path&amp;, inner: key_type&amp;)
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>680</x>
      <y>130</y>
      <w>60</w>
      <h>90</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;70.0;40.0;70.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>680</x>
      <y>130</y>
      <w>60</w>
      <h>200</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;180.0;40.0;180.0</additional_attributes>
  </element>
  <element>
    <id>UMLPackage</id>
    <coordinates>
      <x>0</x>
      <y>0</y>
      <w>1080</w>
      <h>900</h>
    </coordinates>
    <panel_attributes>ZipDirFs::Components
--
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>990</x>
      <y>410</y>
      <w>70</w>
      <h>40</h>
    </coordinates>
    <panel_attributes>&lt;&lt;datatype&gt;&gt;
time {::std}</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>80</x>
      <y>440</y>
      <w>240</w>
      <h>80</h>
    </coordinates>
    <panel_attributes>ChangedProxy
--
--
+ChangedProxy(parent_ptr)
+swap(parent_ptr&amp;): void
--
alias parent_ptr: unique_ptr&lt;Changed&gt;</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>80</x>
      <y>550</y>
      <w>600</w>
      <h>120</h>
    </coordinates>
    <panel_attributes>ChangedStart
--
#access: mutex
#lastChanged: time
#called: bool
-buildReal: function&lt;unique_ptr&lt;Changed&gt;()&gt;
-firstValue: function&lt;time()&gt;
--
+ChangedStart(function&lt;time()&gt;&amp;, function&lt;unique_ptr&lt;Changed&gt;()&gt;, shared_ptr&lt;ChangedProxy&gt;&amp;)</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>960</x>
      <y>470</y>
      <w>100</w>
      <h>60</h>
    </coordinates>
    <panel_attributes>template=T
&lt;&lt;datatype&gt;&gt;
function {::std}</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>40</x>
      <y>100</y>
      <w>60</w>
      <h>390</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;370.0;40.0;370.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>40</x>
      <y>100</y>
      <w>60</w>
      <h>500</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;480.0;40.0;480.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>310</x>
      <y>470</y>
      <w>140</w>
      <h>100</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;-&gt;
m1=1
r1=-target\n{shared_ptr&amp;}</panel_attributes>
    <additional_attributes>40.0;80.0;40.0;10.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>740</x>
      <y>700</y>
      <w>310</w>
      <h>160</h>
    </coordinates>
    <panel_attributes>/EntryListProxy {::ZipDirFs::Containers::Helpers}/
--
--
/+begin(): iterator/
/+end(): iterator/
/+insert(iterator, key_type&amp;, mapped_type&amp;): iterator/
/+erase(iterator): iterator/
/+find(key_type&amp;): entry*/
--
alias iterator: EntryIterator
alias key_type: string
alias mapped_type: entry*</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>80</x>
      <y>700</y>
      <w>440</w>
      <h>80</h>
    </coordinates>
    <panel_attributes>EntryListProxyIncremental
--
-resolve: function&lt;entry*(string)&gt;
--
EntryListProxyStart(function&lt;entry*(string)&gt;, shared_ptr&lt;EntryListProxy&gt;)
get(): shared_ptr&lt;EntryListProxy&gt;&amp;</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>510</x>
      <y>720</y>
      <w>250</w>
      <h>30</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;230.0;10.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>700</x>
      <y>610</y>
      <w>200</w>
      <h>30</h>
    </coordinates>
    <panel_attributes>EntryList {::ZipDirFs::Containers}</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>830</x>
      <y>550</y>
      <w>220</w>
      <h>30</h>
    </coordinates>
    <panel_attributes>EntryIterator {::ZipDirFs::Containers}</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>700</x>
      <y>470</y>
      <w>120</w>
      <h>60</h>
    </coordinates>
    <panel_attributes>template=T
&lt;&lt;datatype&gt;&gt;
shared_ptr {::std}</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>20</x>
      <y>820</y>
      <w>120</w>
      <h>60</h>
    </coordinates>
    <panel_attributes>template=T
&lt;&lt;datatype&gt;&gt;
unique_ptr {::std}</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>950</x>
      <y>600</y>
      <w>100</w>
      <h>40</h>
    </coordinates>
    <panel_attributes>&lt;&lt;datatype&gt;&gt;
entry {::fusekit}</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>510</x>
      <y>730</y>
      <w>250</w>
      <h>50</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;-&gt;
m1=1
r1=-entryListProxy {shared_ptr}</panel_attributes>
    <additional_attributes>10.0;20.0;230.0;20.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>170</x>
      <y>810</y>
      <w>300</w>
      <h>70</h>
    </coordinates>
    <panel_attributes>EntryListProxyProxy
--
--
EntryListProxyProxy(unique_ptr&lt;EntryListProxy&gt;)
+swap(unique_ptr&lt;EntryListProxy&gt;&amp;): void</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>460</x>
      <y>800</y>
      <w>300</w>
      <h>60</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;40.0;180.0;40.0;180.0;10.0;280.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>240</x>
      <y>100</y>
      <w>150</w>
      <h>360</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;-&gt;
m1=1
r1=-changed\n{unique_ptr}</panel_attributes>
    <additional_attributes>60.0;340.0;60.0;150.0;10.0;150.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>460</x>
      <y>820</y>
      <w>300</w>
      <h>70</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;-&gt;
m1=1
r1=-entryListProxy {unique_ptr}</panel_attributes>
    <additional_attributes>10.0;40.0;200.0;40.0;200.0;10.0;280.0;10.0</additional_attributes>
  </element>
</diagram>
