All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.jackrabbit.oak.segment.SegmentNodeStoreService.class Maven / Gradle / Ivy

There is a newer version: 1.74.0
Show newest version
????3r9org/apache/jackrabbit/oak/segment/SegmentNodeStoreService2org/apache/jackrabbit/oak/spi/state/ProxyNodeStore/org/apache/jackrabbit/oak/spi/commit/Observable6org/apache/jackrabbit/oak/segment/SegmentStoreProviderSegmentNodeStoreService.java,Lorg/apache/felix/scr/annotations/Component;policy6Lorg/apache/felix/scr/annotations/ConfigurationPolicy;REQUIREmetatypelabel/Apache Jackrabbit Oak Segment NodeStore Servicedescription?NodeStore implementation based on Segment model. For configuration option refer to http://jackrabbit.apache.org/oak/docs/osgi_config.html#SegmentNodeStore. Note that for system stability purpose it is advisable to not change these settings at runtime. Instead the config change should be done via file system based config file and this view should ONLY be used to determine which options are supported;org/apache/jackrabbit/oak/segment/SegmentNodeStoreService$1Jorg/apache/jackrabbit/oak/segment/SegmentNodeStore$SegmentNodeStoreBuilder2org/apache/jackrabbit/oak/segment/SegmentNodeStoreSegmentNodeStoreBuilder[org/apache/jackrabbit/oak/plugins/blob/datastore/SharedDataStoreUtils$SharedStoreRecordTypeEorg/apache/jackrabbit/oak/plugins/blob/datastore/SharedDataStoreUtilsSharedStoreRecordTypeNAMELjava/lang/String;name"	DIRECTORYrepository.home%+Lorg/apache/felix/scr/annotations/Property;	Directory?Directory location used to store the segment tar files. If not specified then looks for framework property 'repository.home' otherwise use a subdirectory with name 'tarmk'MODE
tarmk.mode+Mode=TarMK mode (64 for memory mapping, 32 for normal file access)SIZE
tarmk.size0intValueMaximum Tar File Size (MB)TarMK maximum file size (MB)SEGMENT_CACHE_SIZEsegmentCache.size7Segment cache size (MB)2Cache size for storing most recently used segmentsSTRING_CACHE_SIZEstringCache.size<String cache size (MB)1Cache size for storing most recently used stringsTEMPLATE_CACHE_SIZEtemplateCache.sizeA@Template cache size (MB)3Cache size for storing most recently used templatesSTRING_DEDUPLICATION_CACHE_SIZEstringDeduplicationCache.sizeG:?(String deduplication cache size (#items)Maximum number of templates to keep in the deduplication cacheNODE_DEDUPLICATION_CACHE_SIZEnodeDeduplicationCache.sizeS???'Node deduplication cache size  (#items):Maximum number of nodes to keep in the deduplication cacheNODE_DEDUPLICATION_CACHE_DEPTHnodeDeduplicationCache.depthY)Node deduplication cache depth  (#levels)@Maximum number of levels to keep in the node deduplication cacheCOMPACTION_MEMORY_THRESHOLDcompaction.memoryThreshold_	byteValueMemory MultiplierETarMK compaction available memory multiplier needed to run compactionCOMPACTION_GAIN_THRESHOLDcompaction.gainThresholdf
Compaction gain threshold?TarMK compaction gain threshold. The gain estimation prevents compaction from running if the provided threshold is not met. Value represents a percentage so an input between 0 and 100 is expected.PAUSE_COMPACTIONpauseCompactionl	boolValuePause Compaction.When enabled compaction would not be performedCOMPACTION_RETRY_COUNTcompaction.retryCountsCompaction RetriesQNumber of tries to compact concurrent commits on top of already compacted commitsCOMPACTION_FORCE_AFTER_FAILcompaction.forceAfterFailxForce Compaction?Whether or not to force compact concurrent commits on top of already  compacted commits after the maximum number of retries has been reached. Force committing tries to exclusively write lock the node store.!COMPACTION_LOCK_WAIT_TIME_DEFAULTI<COMPACTION_LOCK_WAIT_TIMEcompaction.lockWaitTime?Compaction Lock Wait Time?Number of seconds to wait for the lock for committing compacted changes respectively to wait for the exclusive write lock for force committing.STANDBYstandby?Standby ModedFlag indicating that this component will not register as a NodeStore but just as a NodeStoreProviderCUSTOM_BLOB_STOREcustomBlobStore?Custom BlobStore?Boolean value indicating that a custom BlobStore is to be used. By default large binary content would be stored within segment tar fileslogLorg/slf4j/Logger;store2Lorg/apache/jackrabbit/oak/segment/file/FileStore;segmentNodeStore4Lorg/apache/jackrabbit/oak/segment/SegmentNodeStore;observerTracker0Lorg/apache/jackrabbit/oak/osgi/ObserverTracker;	gcMonitor3Lorg/apache/jackrabbit/oak/spi/gc/GCMonitorTracker;context-Lorg/osgi/service/component/ComponentContext;	blobStore.Lorg/apache/jackrabbit/oak/spi/blob/BlobStore;,Lorg/apache/felix/scr/annotations/Reference;cardinality7Lorg/apache/felix/scr/annotations/ReferenceCardinality;OPTIONAL_UNARY2Lorg/apache/felix/scr/annotations/ReferencePolicy;DYNAMICtarget3(&(!(split.blobstore=old))(!(split.blobstore=new)))statisticsProvider4Lorg/apache/jackrabbit/oak/stats/StatisticsProvider;storeRegistration(Lorg/osgi/framework/ServiceRegistration;providerRegistration
registrationsLjava/util/List;ILjava/util/List;executor=Lorg/apache/jackrabbit/oak/spi/whiteboard/WhiteboardExecutor;ZDEFAULT_BLOB_GC_MAX_AGEJQ?PROP_BLOB_GC_MAX_AGEblobGcMaxAgeInSecs?	longValueBlob GC Max Age (in secs)Blob Garbage Collector (GC) logic will only consider those blobs for GC which are not accessed recently (currentTime - lastModifiedTime > blobGcMaxAgeInSecs). For example as per default only those blobs which have been created 24 hrs ago will be considered for GC()V??
?java/lang/Object?getClass()Ljava/lang/Class;??
??org/slf4j/LoggerFactory?	getLogger%(Ljava/lang/Class;)Lorg/slf4j/Logger;??
????	?2org/apache/jackrabbit/oak/stats/StatisticsProvider?NOOP??	????	?java/util/ArrayList?
????	?this;Lorg/apache/jackrabbit/oak/segment/SegmentNodeStoreService;getNodeStore6()Lorg/apache/jackrabbit/oak/segment/SegmentNodeStore;??	?#service must be activated when used?$com/google/common/base/Preconditions?
checkState(ZLjava/lang/Object;)V??
??activate0(Lorg/osgi/service/component/ComponentContext;)Vjava/io/IOException?+Lorg/apache/felix/scr/annotations/Activate;??	?property&(Ljava/lang/String;)Ljava/lang/String;??
?java/lang/Boolean?parseBoolean(Ljava/lang/String;)Z??
????	???	?^BlobStore use enabled. SegmentNodeStore would be initialized when BlobStore would be available?org/slf4j/Logger?info(Ljava/lang/String;)V???registerNodeStore?

bindBlobStore1(Lorg/apache/jackrabbit/oak/spi/blob/BlobStore;)VunbindBlobStoreunregisterNodeStore?
	
deactivate-Lorg/apache/felix/scr/annotations/Deactivate;??	
.org/apache/jackrabbit/oak/osgi/ObserverTrackerstop?
??	1org/apache/jackrabbit/oak/spi/gc/GCMonitorTracker
??	0org/apache/jackrabbit/oak/segment/file/FileStoreclose?
java/lang/Throwable registerSegmentStore()Z"#
$0org/apache/jackrabbit/oak/commons/PropertiesUtil&	toBoolean(Ljava/lang/Object;Z)Z()
'*registerSegmentNodeStore,#
-java/util/Hashtable/
0?service.pid2java/lang/Class4getName()Ljava/lang/String;67
58java/util/Dictionary:put8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;<=
;>oak.nodestore.description@java/lang/StringBnodeStoreType=segmentD+org/osgi/service/component/ComponentContextFgetBundleContext$()Lorg/osgi/framework/BundleContext;HIGJ-org/apache/jackrabbit/oak/spi/state/NodeStoreL org/osgi/framework/BundleContextNregisterServiced(Ljava/lang/String;Ljava/lang/Object;Ljava/util/Dictionary;)Lorg/osgi/framework/ServiceRegistration;PQOR??	Tprops;Ljava/util/Dictionary;?Component still not activated. Ignoring the initialization callY-org/apache/jackrabbit/oak/osgi/OsgiWhiteboard[%(Lorg/osgi/framework/BundleContext;)V?]
\^
?start8(Lorg/apache/jackrabbit/oak/spi/whiteboard/Whiteboard;)Vab
cnewGCOptionsA()Lorg/apache/jackrabbit/oak/segment/compaction/SegmentGCOptions;ef
ggetDirectory()Ljava/io/File;ij
k7org/apache/jackrabbit/oak/segment/file/FileStoreBuildermfileStoreBuilderI(Ljava/io/File;)Lorg/apache/jackrabbit/oak/segment/file/FileStoreBuilder;op
nqgetSegmentCacheSize()Ist
uwithSegmentCacheSize<(I)Lorg/apache/jackrabbit/oak/segment/file/FileStoreBuilder;wx
nygetStringCacheSize{t
|withStringCacheSize~x
ngetTemplateCacheSize?t
?withTemplateCacheSize?x
n?getStringDeduplicationCacheSize?t
? withStringDeduplicationCacheSize?x
n?!getTemplateDeduplicationCacheSize?t
?"withTemplateDeduplicationCacheSize?x
n?getNodeDeduplicationCacheSize?t
?withNodeDeduplicationCacheSize?x
n?getNodeDeduplicationDepth?t
?withNodeDeduplicationDepth?x
n?getMaxFileSize?t
?withMaxFileSize?x
n?getMode?7
?64?equals(Ljava/lang/Object;)Z??
C?withMemoryMapping<(Z)Lorg/apache/jackrabbit/oak/segment/file/FileStoreBuilder;??
n?
withGCMonitorg(Lorg/apache/jackrabbit/oak/spi/gc/GCMonitor;)Lorg/apache/jackrabbit/oak/segment/file/FileStoreBuilder;??
n?withStatisticsProvidero(Lorg/apache/jackrabbit/oak/stats/StatisticsProvider;)Lorg/apache/jackrabbit/oak/segment/file/FileStoreBuilder;??
n?
withGCOptionsz(Lorg/apache/jackrabbit/oak/segment/compaction/SegmentGCOptions;)Lorg/apache/jackrabbit/oak/segment/file/FileStoreBuilder;??
n?1Initializing SegmentNodeStore with BlobStore [{}]?'(Ljava/lang/String;Ljava/lang/Object;)V????
withBlobStorei(Lorg/apache/jackrabbit/oak/spi/blob/BlobStore;)Lorg/apache/jackrabbit/oak/segment/file/FileStoreBuilder;??
n?build4()Lorg/apache/jackrabbit/oak/segment/file/FileStore;??
n?>org/apache/jackrabbit/oak/segment/compaction/SegmentRevisionGC?Corg/apache/jackrabbit/oak/segment/compaction/SegmentRevisionGCMBean?B(Lorg/apache/jackrabbit/oak/segment/compaction/SegmentGCOptions;)V??
?? SegmentRevisionGarbageCollection?Segment node store gc options?8org/apache/jackrabbit/oak/spi/whiteboard/WhiteboardUtils?
registerMBean?(Lorg/apache/jackrabbit/oak/spi/whiteboard/Whiteboard;Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;)Lorg/apache/jackrabbit/oak/spi/whiteboard/Registration;??
??java/util/List?add????getSegmentCacheStats5()Lorg/apache/jackrabbit/oak/api/jmx/CacheStatsMBean;??
?1org/apache/jackrabbit/oak/api/jmx/CacheStatsMBean?
CacheStats??8getStringCacheStats??
?getTemplateCacheStats??
? getStringDeduplicationCacheStats??
?"getTemplateDeduplicationCacheStats??
?getNodeDeduplicationCacheStats??
?;org/apache/jackrabbit/oak/spi/whiteboard/WhiteboardExecutor?
????	?
?c>(Lorg/apache/jackrabbit/oak/segment/SegmentNodeStoreService;)V??
3org/apache/jackrabbit/oak/spi/state/RevisionGCMBean.org/apache/jackrabbit/oak/spi/state/RevisionGC6(Ljava/lang/Runnable;Ljava/util/concurrent/Executor;)V?
RevisionGarbageCollection	.Segment node store revision garbage collection:org/apache/jackrabbit/oak/segment/file/FileStoreStatsMBean
getStats9()Lorg/apache/jackrabbit/oak/segment/file/FileStoreStats;
FileStoreStatsFileStore statistics9org/apache/jackrabbit/oak/segment/file/FileStoreGCMonitor%org/apache/jackrabbit/oak/stats/ClockSIMPLE'Lorg/apache/jackrabbit/oak/stats/Clock;	*(Lorg/apache/jackrabbit/oak/stats/Clock;)V?
 >org/apache/jackrabbit/oak/spi/whiteboard/CompositeRegistration"5org/apache/jackrabbit/oak/spi/whiteboard/Registration$*org/apache/jackrabbit/oak/spi/gc/GCMonitor&java/util/Collections(emptyMap()Ljava/util/Map;*+
),registerk(Ljava/lang/Class;Ljava/lang/Object;Ljava/util/Map;)Lorg/apache/jackrabbit/oak/spi/whiteboard/Registration;./
\05org/apache/jackrabbit/oak/segment/file/GCMonitorMBean2
GC Monitor4%File Store garbage collection monitor6scheduleWithFixedDelay?(Lorg/apache/jackrabbit/oak/spi/whiteboard/Whiteboard;Ljava/lang/Runnable;J)Lorg/apache/jackrabbit/oak/spi/whiteboard/Registration;89
?:;([Lorg/apache/jackrabbit/oak/spi/whiteboard/Registration;)V?<
#=??	?
whiteboard/Lorg/apache/jackrabbit/oak/osgi/OsgiWhiteboard;	gcOptions?Lorg/apache/jackrabbit/oak/segment/compaction/SegmentGCOptions;builder9Lorg/apache/jackrabbit/oak/segment/file/FileStoreBuilder;segmentCacheStats3Lorg/apache/jackrabbit/oak/api/jmx/CacheStatsMBean;stringCacheStatstemplateCacheStatsstringDeduplicationCacheStatstemplateDeduplicationCacheStatsnodeDeduplicationCacheStatstriggerGarbageCollectionLjava/lang/Runnable;fsgcm;Lorg/apache/jackrabbit/oak/segment/file/FileStoreGCMonitor;=org/apache/jackrabbit/oak/segment/compaction/SegmentGCOptionsR	toInteger(Ljava/lang/Object;I)ITU
'VgetMemoryThreshold()BXY
ZgetGainThreshold\Y
]	(ZIIIZI)V?_
S`setForceAfterFailB(Z)Lorg/apache/jackrabbit/oak/segment/compaction/SegmentGCOptions;bc
Sd
retryCountforceAfterFaillockWaitTimememoryThresholdB
gainThresholdsegmentGCOptionsjava/lang/Exceptionm
getProperties()Ljava/util/Dictionary;opGqget&(Ljava/lang/Object;)Ljava/lang/Object;st
;uvalueOf&(Ljava/lang/Object;)Ljava/lang/String;wx
Cy"!	{toLong(Ljava/lang/Object;J)J}~
':org/apache/jackrabbit/oak/segment/SegmentNodeStoreBuilders??(Lorg/apache/jackrabbit/oak/segment/file/FileStore;)Lorg/apache/jackrabbit/oak/segment/SegmentNodeStore$SegmentNodeStoreBuilder;E?
????
?4(Lorg/apache/jackrabbit/oak/spi/commit/Observable;)V??
?a]
?1org/apache/jackrabbit/oak/api/jmx/CheckpointMBean?8org/apache/jackrabbit/oak/segment/SegmentCheckpointMBean?7(Lorg/apache/jackrabbit/oak/segment/SegmentNodeStore;)V??
??CheckpointManger?(Segment node store checkpoint management?1org/apache/jackrabbit/oak/util/GenericDescriptors?
??
oak.clusterid?0org/apache/jackrabbit/commons/SimpleValueFactory?
??Borg/apache/jackrabbit/oak/plugins/identifier/ClusterRepositoryInfo?
getOrCreateIdC(Lorg/apache/jackrabbit/oak/spi/state/NodeStore;)Ljava/lang/String;??
??createValue%(Ljava/lang/String;)Ljavax/jcr/Value;??
??Z(Ljava/lang/String;Ljavax/jcr/Value;ZZ)Lorg/apache/jackrabbit/oak/util/GenericDescriptors;<?
??)org/apache/jackrabbit/oak/api/Descriptors?Aorg/apache/jackrabbit/oak/segment/SegmentDiscoveryLiteDescriptors?2(Lorg/apache/jackrabbit/oak/spi/state/NodeStore;)V??
???isShared1(Lorg/apache/jackrabbit/oak/spi/blob/BlobStore;)Z??
?6org/apache/jackrabbit/oak/plugins/blob/SharedDataStore?java/io/ByteArrayInputStream?([B)V??
??
REPOSITORY]Lorg/apache/jackrabbit/oak/plugins/blob/datastore/SharedDataStoreUtils$SharedStoreRecordType;??	?
getNameFromId??
?addMetadataRecord*(Ljava/io/InputStream;Ljava/lang/String;)V????(Could not register a unique repositoryId?*(Ljava/lang/String;Ljava/lang/Throwable;)V??
??getBlobStore0()Lorg/apache/jackrabbit/oak/spi/blob/BlobStore;??
?>org/apache/jackrabbit/oak/spi/blob/GarbageCollectableBlobStore?@org/apache/jackrabbit/oak/plugins/blob/MarkSweepGarbageCollector??org/apache/jackrabbit/oak/segment/SegmentBlobReferenceRetriever?5(Lorg/apache/jackrabbit/oak/segment/file/FileStore;)V??
??java/util/concurrent/TimeUnit?SECONDSLjava/util/concurrent/TimeUnit;??	??toMillis(J)J??
???(Lorg/apache/jackrabbit/oak/plugins/blob/BlobReferenceRetriever;Lorg/apache/jackrabbit/oak/spi/blob/GarbageCollectableBlobStore;Ljava/util/concurrent/Executor;JLjava/lang/String;)V??
??2org/apache/jackrabbit/oak/plugins/blob/BlobGCMBean?-org/apache/jackrabbit/oak/plugins/blob/BlobGC?_(Lorg/apache/jackrabbit/oak/plugins/blob/BlobGarbageCollector;Ljava/util/concurrent/Executor;)V??
??BlobGarbageCollection?*Segment node store blob garbage collection?SegmentNodeStore initialized?eLjava/lang/Exception;gc=Lorg/apache/jackrabbit/oak/plugins/blob/BlobGarbageCollector;
propertiesLjava/util/Dictionary<**>;
clusterIdDesc3Lorg/apache/jackrabbit/oak/util/GenericDescriptors;repoId(Ljava/util/List;)V?
#
unregister?
#&org/osgi/framework/ServiceRegistration
?getBaseDirectoryjava/io/File??

tarmk	directoryj
segmentstore#(Ljava/io/File;Ljava/lang/String;)V?

sun.arch.data.model32java/lang/SystemgetProperty8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; !
"modegetCacheSize ?
&propertyName	cacheSize%?
*java/lang/Integer,parseInt(Ljava/lang/String;)I./
-0getMaxFileSizeProperty2563size27
6java/lang/Byte8$(Ljava/lang/String;)Ljava/lang/Byte;w:
9;aY
9=mtgt'org/apache/jackrabbit/oak/osgi/OsgiUtilA lookupConfigurationThenFrameworkS(Lorg/osgi/service/component/ComponentContext;Ljava/lang/String;)Ljava/lang/String;CD
BEgetSegmentStore2()Lorg/apache/jackrabbit/oak/segment/SegmentStore;addObserverD(Lorg/apache/jackrabbit/oak/spi/commit/Observer;)Ljava/io/Closeable;??
KIJ
Mobserver/Lorg/apache/jackrabbit/oak/spi/commit/Observer;toStringjava/lang/StringBuilderR
S?append-(Ljava/lang/String;)Ljava/lang/StringBuilder;UV
SW: Y-(Ljava/lang/Object;)Ljava/lang/StringBuilder;U[
S\Q7
S^1()Lorg/apache/jackrabbit/oak/spi/state/NodeStore;
access$000o(Lorg/apache/jackrabbit/oak/segment/SegmentNodeStoreService;)Lorg/apache/jackrabbit/oak/segment/file/FileStore;x0bindStatisticsProvider7(Lorg/apache/jackrabbit/oak/stats/StatisticsProvider;)VunbindStatisticsProvider
ConstantValueRuntimeInvisibleAnnotations	SignatureCodeLocalVariableTableLineNumberTable
StackMapTable
ExceptionsLocalVariableTypeTable
SourceFileInnerClasses!$ !g#$!g&h's(s)*!g,h's-s./!g1h'2[I3s4s56!g8h'2[I3s9s:;!g=h'2[I3s>s?@!gBh'2[ICsDsEF!gHh'2[IIsJsKL!gNh'2[IOsPsQR!gTh'2[IUsVsWX!gZh'2[I[s\s]^!g`h'a[Bbscsde!ggh'a[Bhsisjk!gmh'n[Zospsqr!gth'2[Ibsusvw!gyh'n[Zoszs{|}g~!g?h'2[I~s?s??!g?h'n[Zos?s??!g?h'n[Zos?s???"!??B????????B??h??e??e???s???h???????i???????g??!g?h'?[J?s?s?"??jX"*??**?¸ȵ?*?ϵ?*??Y?Եֱk"??lq???jO*????޸?*?ܰk??l
%&m@??j?3*+??**??????*???*???*?????*??k3??3??l+,. /.123m.n?h?jF
*+??*??k
??
??l67	8n?jF
*??*?
?k
??
??l;<	=?j?G*?
*YL?*??
*??*??
*??*??*??*??*?+çM+?,??>AADAkG??l2ACDEGH$J)L0M7N<PFQm?
D!h"?j?^*?%?Y*????+??*?.?D?0Y?1L+3?9??W+A?CYES??W**??KM?9*+?S?U?k$9VX^??o$9VWl&	TUVYZ$[1\C]]`m?Gn?"#j}?*???*??Z???\Y*??K?_L*?Y?`?*?+?d*?hM*?l?r*?v?z*?}??*????*????*????*????*????*????*???????*???*?Ѷ?,??N*???*???*????-*????W*-?ʵ*??+̻?Y,???ո۹?W*???:*??+?????۹?W*???:*??+?????۹?W*???:*??+?????۹?W*???:? *??+?????۹?W*???:? *??+?????۹?W*???:		? *??+?	?	???۹?W*??Y????*??+???Y*?:
*??+?Y
*???
?۹?W*??+*???۹?W?Y??!:*?ֻ#Y?%Y+'?-?1SY+357??SY+
?;S?>??W**??K?9*?S?@?kz???&wAB>_CD?EF??GH?IH9dJH_>KH?LH??MH	??NO
B[PQlCcdeh&l1m9p>sFtMuTv[wbxiypzw{~|?}?~??????????????????
??"?'?0?9?H?M?V?_?d?s?x??????????????????????????????$?-?6?B?V?k?u?|????m:??\Sn??\Sn?????*??*?n?efj?V*m???+<*t???W=*y???+>*???<=*A7BJDXFbJ?S?Tm ?;\?Cn?\n??j?L?#Y*?ַ?*?@?*?@?	*?@*?U?*?U?	*?U*???*???
*???kL??l.XYZ[#]*^3_8a?bFcKem#jjm*&??L+??
Y+???
Y??k??!lhjknm?Cijj9?
Y*???k??lr?7jj*,??L+?+?,?#?#?k??$!lvxy
|m?
C%?ji*+??M,?,?+?'?k ??(!)!l??
??m?Cstj4
*8?+?1?k
??l?{tj4
*=?+?1?k
??l??tj4
*B?+?1?k
??l??tj4
*H?+?1?k
??l??tj4
*N?+?1?k
??l??tj4
*T?+?1?k
??l??tj4
*Z?+?1?k
??l?27jd*1??L+?+?14?#?k??5!l???
?m?
C?tj2*?7?1?k??l?XYjc*`??L+??+??k???!l???
?m?
C\Yjd*g??L+?
?+??k??@!l????m?C??j=	*??+?F?k	??	"!l?GHj/*??k??l?IJj=	*?L+?N?k	??	OPl?Q7jI?SY?T*?|?XZ?X*?ܶ]?_?k??l?D?`j/*?L?k??lhabj/*??kc?lqdej*+?ѱfej#*??+?*?ѱm
p	q	@h
e
Zss




© 2015 - 2025 Weber Informatics LLC | Privacy Policy