HISE Logo Forum
    • Categories
    • Register
    • Login

    Filter/display sampleMap names by _prefix

    Scheduled Pinned Locked Moved Scripting
    24 Posts 4 Posters 1.5k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • ten7kurT
      ten7kur @ten7kur
      last edited by ten7kur

      @ten7kur
      No sorry, It does work! Brilliant!!!! Big big thanks!

      How could I also escape directories?
      I have sampleMaps inside folders inside my SampleMaps folder in my Project.

      ustkU 1 Reply Last reply Reply Quote 0
      • ustkU
        ustk @ten7kur
        last edited by

        @ten7kur Strange, it effectively removes the "BD_" part here...
        I am not sure it's a good idea to make subfolders for the samplemaps...

        Can't help pressing F5 in the forum...

        ten7kurT 1 Reply Last reply Reply Quote 0
        • ten7kurT
          ten7kur @ustk
          last edited by ten7kur

          @ustk
          It does work!
          But how could I remove the other sounds "SD_", "HH_" from display all together. Just display the BD_ filter.

          OK. Fair enough on sampleMap subfolders

          1 Reply Last reply Reply Quote 0
          • ustkU
            ustk
            last edited by ustk

            @ten7kur there are two ways:

            • Replace newName = newName.replace("BD_", ""); with newName = newName.substring(3, 100); if you always have 3 characters to remove at the beginning.

            • Or use this instead of the loop in my first example:

            // String part you don't need
            const var charsToRemove = ["BD_", "HH_", "SD_"];
            
            
            for (i = 0; i < sampleMapList.length; i++){
                
                var newName = sampleMapList[i];
                
                for (j = 0; j < charsToRemove.length; j++){
                    
                    newName = newName.replace(charsToRemove[j], "");
                }
                
                formattedSamplemaps.push(newName);
            }
            

            The latter allows you to fill the "forbidden" array with any characters you want to remove

            Can't help pressing F5 in the forum...

            ten7kurT 1 Reply Last reply Reply Quote 1
            • ten7kurT
              ten7kur @ustk
              last edited by

              @ustk
              👍 👍 👍
              Wouldn't have figured it out my self! Not with my current Javascript knowhow...

              ten7kurT 1 Reply Last reply Reply Quote 0
              • ten7kurT
                ten7kur @ten7kur
                last edited by

                @ten7kur

                Looking at this further, the filtration of BD_, SD_,etc..works. However, once I click on an item in the list, it does not change it in the sampler. (The sampler name is correct)
                Im using this code:

                inline function onViewportControl(component, value)
                {
                    Sampler.loadSampleMap(formattedSamplemaps[value]);	
                };
                
                SamplemapList.setControlCallback(onViewportControl);
                
                ten7kurT 1 Reply Last reply Reply Quote 0
                • ten7kurT
                  ten7kur @ten7kur
                  last edited by

                  @ten7kur

                  How could I also hide specific sample maps. So only show "BD_", or only "SD_".
                  How would I 'categorize' them?

                  1 Reply Last reply Reply Quote 0
                  • ustkU
                    ustk
                    last edited by

                    @ten7kur If you think about it, you are trying to load a sample map with a wrong name...
                    hint: DoesformattedSamplemaps contains the real .xml samplemap names? ;)

                    For your second question, it will be a bit complicated...
                    Ok, for loading a samplemap, you need to call its name
                    But, here, for doing so, you are using a value and look at the table the real name that corresponds to this value in order to load the SM (hidden hint for question one ;) )

                    In YOUR case (because there are different way to do it), you'll need to split the samplemapList list into several subSamplemapList depending on characters they contain in their name

                    Then you can format these names to remove what you don't like into, let say, FormattedSubSamplemapList

                    Then you can load them in different viewports
                    The value of these viewports will correspond to the different subSamplemapLists you can use to load the right SM

                    Can't help pressing F5 in the forum...

                    ten7kurT 1 Reply Last reply Reply Quote 0
                    • ten7kurT
                      ten7kur @ustk
                      last edited by ten7kur

                      @ustk said in Filter/display sampleMap names by _prefix:

                      n their

                      Got ya on the sampleMap loading.!

                      As for assigning categories,.... still a little puzzled.. 😕

                      const var charsToRemove = ["BD_", "HH_", "SD_"];
                      const var smCategories = ["BD_", "HH_", "SD_"];
                      
                      for (i = 0; i < sampleMapList.length; i++)
                          {
                          var newName = sampleMapList[i];
                          var category = sampleMapList[i];
                          
                          for (j = 0; j < charsToRemove.length; j++)
                              {
                              newName = newName.replace(charsToRemove[j], "");
                              category = category.substring(smCategories[j], "SD_");
                              }
                          formattedSamplemaps.push(newName);
                          formattedSamplemaps.push(category);
                          }
                      

                      🤔

                      Wouldn't indexOf be of help here?
                      So far I'm thinking ....

                      for (i = 0; i < sampleMapList.length; i++)
                          {
                          var category = sampleMapList[i];
                          
                          for (j = 0; j == smCategories;)
                              {
                              category = category.indexOf(smCategories["SD_"], "snare");
                              }
                          formattedSamplemaps.push(category);
                          } 
                      
                      

                      Any help, very much appreciated!!🤞😀

                      1 Reply Last reply Reply Quote 0
                      • Christoph HartC
                        Christoph Hart
                        last edited by

                        The String.split method is the missing piece:

                        
                        const var names = ["SN_One", "BD_One", "BD_Two", "SN_Two"];
                        
                        // this will hold the samplenames sorted by category
                        var obj = {};
                        
                        for(n in names)
                        {
                            // This splits the string into a list using the given separator
                            var sp = n.split("_");
                        
                            var category = sp[0];
                            var sampleName = sp[1];
                        
                            // We can check if the category is already used
                            if(isDefined(obj[category]))
                                obj[category].push(sampleName); // append to the existing list
                            else
                                obj[category] = [sampleName]; // create a new list at the key
                        }
                        
                        ten7kurT 1 Reply Last reply Reply Quote 1
                        • ten7kurT
                          ten7kur @Christoph Hart
                          last edited by ten7kur

                          @Christoph-Hart
                          Thanks for your input. Really appreciate it!
                          The code is working, but only partly. I don't quite understand what exactly is happening.

                          At the moment the viewport only is displaying BD and second item xx1. [BD_xx1 was the last item in ''var names'' that I added before pressing compile].

                          It seems like its listing the category. But I can't see the other categories.... Im somewhat confused...

                          Im trying to show the categories in a different Viewport to pick from so I could see the sampleMaps[hopefully] but can't quite get it right to display. The category viewport shows items but the items all have the 'undefined' text.

                          Full code:

                          Content.makeFrontInterface(600, 500);
                          
                          //! =================== [ Samplemap List ] ================== !
                          const var SamplemapList = Content.getComponent("SamplemapList");
                          
                          // Allow the viewport to list the items
                          SamplemapList.set("useList", true);
                          
                          const var Sampler = Synth.getSampler("Sampler");
                          const var sampleMapList = Sampler.getSampleMapList();
                          
                          const var names = ["SD_one", "SD_two", "SD_oi", "BD_one", "BD_Three", "BD_Four", "BDs_one", "BD_xx", "BD_xx1"];//, "SN_Two", "SN_Three", "HH_oneone"];
                          
                          // this will hold the samplenames sorted by category
                          var obj = {};
                          
                          for(n in names)
                          {
                              // This splits the string into a list using the given separator
                              var sp = n.split("_");
                          
                              var DRUM_category = sp[0];
                              var DRUM_sampleName = sp[1];
                          
                              // We can check if the category is already used
                              if(isDefined(obj[DRUM_category]))
                                  obj[DRUM_category].push(sampleName); // append to the existing list
                              else
                                  obj[DRUM_category] = [sampleName]; // create a new list at the key
                          }
                          // Update the viewport
                          SamplemapList.set("items", sp.join("\n"));
                          
                          // Load samplemap
                          inline function onViewportControl(component, value)
                          {
                              Sampler.loadSampleMap(sampleMapList[value]);	
                          };
                          SamplemapList.setControlCallback(onViewportControl);
                          //! =================== [ /Samplemap List ] ================== !
                          
                          
                          const var cats = Content.getComponent("cats");
                          // Allow the viewport to list the items
                          cats.set("useList", true);
                          // We can check if the category is already used
                              if( (obj[DRUM_category]));
                          
                          // Update the viewport
                          cats.set("items", obj[DRUM_category].join("\n"));
                          
                          HiseSnippet 3220.3oc6Zr1aaibjzNL2IcQWyc3.Z+RA1HTfHi5yVRNw2iff5XYmytW7CXojqstFtqEWIwKjbIHo7iKH.4GR6+g6mP+sb+B526GZmYWtbIodXEm3qosQAHl6r6L6ryL67hb+PdWVTDOzvrTmKBXFl2xp8E9wCZMf53ar8FFl+Bq1Tu.W1Nzfm3DEar9EAznHlsgo47eCtHyR2vP76e76Vm5R86xzfLLdF2oK6INdNwZn6u125359XpMqiiWlUeu01tK2uE2kODXn4spaDP69bZe1tTbYyYYXdyMsch4gsiowrHCyarN29h1C3m4KW+ybhbNwkgCZXzFHjD7i4t1HGiPMZMvw0de0AOxvvzZesXXdoX3yr1ww1IEtVbbawDDMFYkGlyMM1qQV1q9rydlYXuaHYuOwpc2PmfX8LHu8QVa6GyB6QAUPV1RtVi49m2zpEGVge7RdzmydbHLHEiZqVu9hj6Wu9BOnR4JkWd46Pd3n+HGRjlCdz.BZOPNZLKibmJkAMIL6ozPMBh0+PhhG5yhaw8B39vfZUysppJlf7HWW9Yj3ALxoNryB3gwjXNwEoDBzIl4EUobNjWJhAzaXDSPoEIwgCYR5UjmBAtQXti7RBHEmDJ3AMFQYuEf3IWkFyjopUbq7Ai2H.gCq1diigCKvQ3SwmwSdh6fOrd5jvScFDxTO+X31f7wnLq37ySenQ0idvxKizZ2i6jP0c0jXqsPzPLORITiG3DQNCtCRF.ldBAo73I4UvdJlYSN4BRWvNtOO7hJkwSB+juGNGu3kBxziGVym33KOeKTo7KpTl.+.x2AIeTfqSbjj1wgN98g0BZNpT2MLBgfS124TlOIhEPCovUGIQDB7.Xy7WRPmZUONwjPM6FG7zcNVwdvBiBNrNd9xMu7PgdOjqnwQoz.XyuiAmOeR2ArtOm3zSvMoTDNAT2PF09BfWY1Rjb5UyIZCVOGelcMPZbXNt3nEVPtL72nytTvvnA0zrzBO.YBZP.y2FsowsmcNHbPICJjjDi4FwlFYQKKMQORPzt.iGy.YsO6Lo7lJut7bFnJeovF3oA13ZxdyZr2iD2v.6nnfk9dtiesp+Y+pKjd87IbpchsCfUkxN9tfvgzane2XGtOg6+rDhi25C4t05ptxuHnmbgaloVNpaTt.MSuRUK28tCEnbzBOnDbLdvX32jcoE008DH1QsQ1ejymruskmQma4ugC5hnI5WCmrpbWmQmYHFSxG1U0rkLVyUkVbr1BZ1PYBLFa5hlDYT76xiY64WagxunboxurLo3T85M14RzSnm3wMMlwP3zPrl+PuSXgJqK0BgPm4iMaM4XyYScnqTolYgb+s8ch2Ct1NoH1FIVBPr64S3J3oXQj6OMIxMyVYXZ3XqyxJwT1Pv7YyixXFIzMsP81LfekD7eB8Dlq.0aY0RpWcXoDHGLimt8FzXJbrlKSJIkmPhiksV+f89t1advJYRFAEoxrFukUikpm7yHMwwaYUWCMatiUrV8d5Yxm+XEqlYv5xxgb8gf55YrvHvrALCrV890g+bskUHxBllu0ypSjAYRdcAe5rmWm3992vhk4.zKj6Ag68XmMfExH0XNfOfPBCtAYCojBdCnPX6ttCsYDdHYS+9f2cgC5ee681UlU.35fBd+RciCIkT8qkOdXBj1COo5hpYow.mkNTvrUkCNRAr8HTnCOPSAdbL2Kc3ANdEweqsFgChCoN8GDmh0l18YJzHxfIKurHsigm.4qf44HnCQOSO9PHR8CSVwRfWj3Zn6vEjRUc7fGu8taLw3A3jUU5BIlHNA7HGgirGhBPBJwVxw2lc9d8pc2sAGvjFz6VL0R0M+FSb2RWQgrYUvadoX1LI30n3txkh6J573+tPGLiDHkSHGDou4njLB8IzvP5EEhnl3zASu4nzDNswDNQCtjLszqSlckc590lklwSRF3zHY.VPOFJlpmSHtcoA7.rv.SjK3CICnmxvXyX7MbwdDQtqxLYqTNUrlO.YF1oXfwImXTiKOyHfy5wh6NHWr9zoDLc7.ZrDMLGfefExImPAOEjZCgc94xf6vNbB+D942AyTsjKuK0kjIGZM6mjmEv4k.tKh6xVJ.N4XYZPfPMNUI+1zA34DRKqDvQQrLIzPjRP.HnesyHuKkZhkWJh52CmTJFxhOtTi8omKXiLICNckSyqnxgTCsh7PWNPR3fZvIlftXyI2yKx01Tvo5Y3dTagizxT8dfxo6FIrpkNvQfBuvPBZrtwoaAtPXOTxyixnUkzbCN4LvtgcJ3yG42yn9.6BJ3ZnKdzdWjTBAxJYQLeRvMUHCjrKR.lYgQMN.5gASfPKPILmAwRTFHv+WU7LxRypZr4koFaVPMJ+GpPPeHf3lK8eHNru.kWeM4md0eEh.4Q8+oW82VDDePZGPfP4DazB.9xEQOAkzKeaHB03W+NzvSYtiCmNC3guVHzdX.KbZbEt9iJ39uEdcdc94S18e5JzNhOj7ZdzHuFGKHVJDLkHSL.iMpbeiOCEnKitcbUEjFBHsy.oo.xVaogrh.Rq+3NZP2S.pydRPuuYUuoMqBX884ACcUEABQH8vzzrk7N3.W1JgQhSmtvzyTl.1.UOf4wOMsAPxrMU6uvAVtf9CngQc3I3fMLCMUjcvJoUYhVXk4X50JWhBS.gYoabYZ31TZC26az16az1+AZz16BsZ68Ma6ctlsoqdr3kzTOvo2uEPVdYwsWXXC0HQD3lpQhnuqjZyok5tx3H41mBkEVjGFuFBzJG2ZqGs6ta9j1IZprflrpXzUojT413oHjvJualbHVB6qG0wOp1c2Zq6J2APyIVxBuPnmHiT5yvSRhiIZDvctCIMx+KEdOHWFh6tWGIxKA+ppua+xw13Tws0RB2His4oSX9rMPcBKIoIpSm.EZjZ1Ei80bJM8z7x603GXIjCp1LNmUZyEMMaCQZwdAd6zFHp563nsL61V6vswDWx2MNrEiISfc4KeayvVi4G4DeQglPNltzMq63mXsuCTd1D1xF42x5y7Vlz1wJVa1qGTXmd+tg0i+CWdOFyRpecGUWiiAOVdf0XRL.A8JYoF8VnUserUy6u5UqWs6GxDgjb9AF1S7urwW0LyNODjBgp4tW8uZ0B6+i7.apQYfji1Ar.HXMnhD79J54O3fuIjOLPgctSqPs1IDhtARrBysmOq8.dbAIQqPdTTO37JHZTgY2eXXelcAfGfEfGMB3cG5AZbeev0hzJ5oQL7sW3zcGJ3O47BKWre06PEuDC3BkXbiBiaVX7JEFeuBiuegwqVX7WnGmlGAZP8o5uZDRWdvEjUGmOCyads1i8e98Wjqq9kTaYaGTTroOTjLGfHkOP1szgtwJnMJro6v84AC39NcGwXAz886CWUyyMShKeTbLX8h.ueVh3xnQhqiMxP6m.ITRCUWQdMNpSS59qrjr.Ac.Pd2wqb82A7JOMt+iStBQf67gwW+RqaYItQSPe0uA61A7gXgUJWTVfWLY.8r9xZZjLpdxaxBJMqNJ.+7FpYZj7lXgYZjLiQWEIfcN4YYNCyCETC9gRh15B9ScKnSiffGH+fYZbcxhdztg7i6JS.BYzOT.AVou3EPVxZGbLogJ0GKjKM7.WaG2saNpLBNMuB3rxU.m6cEv49WAbV8JfyWbEv4KmJNXTkGMLl6IcQ..1eyjLQ2TaUUOMAWvZOfEFiuPbSyMXmBIdHuUUB7oG87Xdf309mTwig4G8Z8h+OO8k1SBV6hreyjwrywugRq8EsfOx3LG63AoK3u3s1.F95FRg7imtVf6v9N96SCAwQLKb2DohhBhBn.KTq02n74m2vHorKPNYZBDf55z22SbFtokKqWLJBROVe3r7YHj4zPyeZJrW4OLu5OU7vXb7ZIb6JVPcCxNCUdFeJGeeyY5yeXBL9qdzZIbpk4.XrhKsL+kFuUx2vb9L9Z0eXsWKeXouMBiZN2X3W7CD4Zlem0XvWSeStuYUVck+voCl4Ob5bERoV1eesrkPof9iqkq3I8dMl5lTS9gqUnnI8QoPES5IRKWReFGoVI8TpBkzPzUIogkqDIomjQJRRu52opP51fW2i+VGHu3s3mYeQyQ9.09fY6CTCH29TP.jYkq6zOcqjPzVyYJPUvXY934Mt1pO6mgagWu9ame1XWiqoBBMmOa4fYuRjVKnl2G6ARUEnBxmsVZIfJP+l0xV92URVzX1kEugUL9ecwIm++6iSdkp08cQ87DJT9mUVcFJg0xbNLDaZQrVXzQUYrVl+K3mtNVYryjJYkSNKUaaNWRs1ZS5WyBsei4x2Wv8+KVvs47F+a4jjGWA
                          

                          Thanks for any/all help!!

                          1 Reply Last reply Reply Quote 0
                          • ten7kurT
                            ten7kur
                            last edited by

                            Hi all!
                            I need help!! I can't manage to get the categories working. theres something I'm not doing right..Could someone please have a look over this code and see where its going wrong?

                            problem 1.
                            The sampleMaps List is not taking effect of the categorisation.
                            It should for "BD_Ludwig_Jazz1.xml" take "BD_" and put it inside its own "drm_category" and "Ludwig" in its own "drm_sampleName" and display only sampleMap:"Jazz1" but its not working...
                            What am I missing?
                            @ustk ? @Christoph-Hart ?

                            problem 2. The categories them selves (CAT1, CAT2) are not displaying correct.
                            I can only ever see 1 items in the CAT1, CAT2 viewports.
                            Why could this be?

                            Pardon my Javascript skills,
                            Thanks!

                            // =================== [ Samplemap List ] ================== //
                            const var SamplemapList = Content.getComponent("SamplemapList");
                            const var SamplemapList_CAT1 = Content.getComponent("SamplemapList_CAT1");
                            const var SamplemapList_CAT2 = Content.getComponent("SamplemapList_CAT2");
                            
                            // Allow the viewport to list the items
                            SamplemapList.set("useList", true);
                            SamplemapList_CAT1.set("useList", true);
                            SamplemapList_CAT2.set("useList", true);
                            
                            
                            const var Sampler = Synth.getSampler("Sampler");
                            const var sampleMapList = Sampler.getSampleMapList();
                            
                            // Populate the formatted list in a new array
                            const var formattedSamplemaps = [];
                            
                            
                            // Remove string from sampleMap name
                            const var charsToRemove = ["BD_", "HH_", "SD_"];
                            
                            for (i = 0; i < sampleMapList.length; i++)
                                {
                                var newName = sampleMapList[i];
                                
                                for (j = 0; j < charsToRemove.length; j++)
                                    {
                                    newName = newName.replace(charsToRemove[j], "");
                                    }
                                formattedSamplemaps.push(newName);
                                }
                                
                                
                            // put under category
                            const var names = ["BD_Ludwig", "BD_Xyz1", "SD_TamaSLP", "SD_Ludwig"];
                                   
                            for (i = 0; i < sampleMapList.length; i++)
                                {	
                                var newCatSplit = sampleMapList[i];
                                
                                for (j = 0; j < names.length; j++)
                                    {
                                    // this will hold the samplenames sorted by category
                                    var obj = {};
                            
                                    for(n in names)
                                        {
                                        // This splits the string into a list using the given separator
                                        var sp = n.split("_");
                            
                                        var drm_category = sp[0];
                                        var drm_sampleName = sp[1];
                            
                                        // We can check if the category is already used
                                        if(isDefined(obj[drm_category]))
                                            obj[drm_category].push(drm_sampleName); // append to the existing list
                                        else
                                            obj[drm_category] = [drm_sampleName]; // create a new list at the key
                                
                                            
                                        newCatSplit = newCatSplit.replace(names[j], "");
                                        }
                                    formattedSamplemaps.push(newCatSplit);
                                    }
                            	//sampleMapList[i].set("visible", false);
                                }
                            		
                                
                            // Update the viewport
                            SamplemapList.set("items", formattedSamplemaps.join("\n"));
                            
                            
                            // Load sampleMap
                            inline function onSamplemapListControl(component, value)
                            {
                                Sampler.loadSampleMap(sampleMapList[value]);	
                            };
                            Content.getComponent("SamplemapList").setControlCallback(onSamplemapListControl);
                            // =================== [ /Samplemap List ] ================== //
                            
                            
                            
                            
                            
                            // ============== [ Samplemap List Categories ] ================== //
                            
                            // Drum Type; BD, SD, HH, etc
                             inline function onSamplemapList_CAT1Control(component, value)
                            {
                            	SamplemapList_CAT1.set("items", [drm_category].join("\n"));
                            	SamplemapList_CAT2.set("items", [drm_sampleName].join("\n"));	
                            };
                            Content.getComponent("SamplemapList_CAT1").setControlCallback(onSamplemapList_CAT1Control);
                            
                            
                            // Drum sub-Type; 
                            // BD: Ludwig, Xyz1,     // SD: TamaSLP, Xyz,     // HH: Xyz123,   etc;
                            inline function onSamplemapList_CAT2Control(component, value)
                            {	//.set("visible", false);
                                //SamplemapList_CAT2.set("items", sp.join("\n"));
                                //SamplemapList.set("items", sp.join("\n"));
                            };
                            Content.getComponent("SamplemapList_CAT2").setControlCallback(onSamplemapList_CAT2Control);
                            // ============== [ /Samplemap List Categories ] ==================
                            
                            
                            HiseSnippet 3469.3oc6arsbaabEPxvIj0L2ZdnuzY1poyTpIJRjTVJI1Moz5hCcpjsFQEmLiphlkDKIgMHVTbQRzY7L4SoeB8o9b9R52P+CZO6MfEf2fjsbcaDch.2ama6YO2VvCBncIggz.CyRGMxmXXdGq1i7hFr8.rimwi1wvrrUm.54gjfML1ZjONLjXaXZt3WyF2rzsL3e9W+osvtXutjztLLdJ0oKYOmgNQo8dPy+riq6Cw1jibFpM6617QcodaScow.srnUMCeb2mi6SdLlMsErLLu8t1NQzf1Q3HRng4s1hZOp8.54dh4+TmPmNtDVi5FsA.I59gTWaFEy50X6ANt1Gn34PCCSqCRk.KJj.er09N1NI8mJI9.9.nzUnKOLWXVjWccxqVwIOSMx6VBx6CsZ2MvwOJcDFs8qrdjWDInGF1BzIKwbMV3eVwZaJLCunUGheN4gAPijUTcyZ0VAsQsZKe+JkqTds0Pe43ePGiZiG56RFh8Q64DFgNYBSCs1ZUJC6jvvmgCRWAeAeIRQC8IQaSG5S8fFUWJyrVhQDSABmt8CNpdw.CepyCVMJNrZrThv4AttzyQQCHnybHm6SChPQTjKiCYc5DQFFVobFHrZHA.ZbHgygqfhBhIL3MNIW3Y1XZyj8u77b.vn7y0L1T1khICxIkB48texdlbVoqTNT0DAxAT+XWPsmy98nACwQQDagDwwCgQdjyQ3f.7Hc7jLwDVKDv1wmHYA.tGRFROifBiBb75i5EPGlRbHOvvfN35N.GDdDUtF.PKs0NmBhkkZ0h+nMzR.a.wnpNvTpcejC5OlkgW0k30OZ.Lxm7IKWoLB97ihGLj.LByfDr1LK5XGFjYSR7WNFdl.COCvPFZKACOKACZXg8IEKxusZ.w2kcPMCfN9Ym.7Ee2SsxWlf+7h1U8iCGTUBO0RdoNQyE49wQnXOaPgoKrg1mFjYKiIyCUx18hsO2oOSzBM99QuntTJeDdHt8dGHaIm0IoD4UXCnTlcfswQs8cchtr6Bbpe9RePJDMvIDcN3nBM.rOyUqEXRH..itL86NizDRpUynQZGFV+wWx01TC.TSUO1wANLzPcNzKIgiXjPHiMCE3WbHvwCL0fEGshCY8vFruyYDOTHwGGfAePYAF+LsOSYZUN7ptzoRaY4mkcvvSUbDS35ebMs8sLSSHNTmE7Ot9IiAQfI9NBHg7.0eR2mib5wo0DD.7G1MffsGAbBwN6hc5U0IbGROGOhcUPddrNscxx4DerOiMIgFeVhc46yHKruOwylYzlQPjK.gISRxDpYgKwMjT.LwNQjEOmvwSWf6.qhB6e7sLrvEwyIizUT0+jsmrZ6ZsRrHv0llfk.si2yyhfBl4LjTZs0xe7R3x4LQnLvA7dXP.oYLoTIMSIequsxmfxO4D8Jx8Wx.1DHwmQc7ptzewaokWN0svdTrc5I+Jkc7bA0DTuXutQNTOD0KCVXN3CntU6p7tuBnE6B9JqTVdrS4gyE.bhKtpYYd9RNY46CbH6bcgBjgweRruM10sCDQa0ISbLtapgcsVQi6J8eiAqwidaag1qCXOaF.D.zNAwCQrXOuOZqcVA0F9+VsVAQh5BRu4H64gzL6MfRSKFHkdQtS0YUIJMs3hxrZsClYVew2LkgSVfcTcVVSokKECi67oBIIuus14dHg+wUPLGnqnra1FFP5FkORx.sZcO9LarNqKXK39yU8mKSl0V.bNelmqWas4IiC8ysqLgkMmUbI1FZT3sgFy5z0DNXMmiDPfKox3GSiHOwq5xk+wxkJ+xxn7C0q2DGSRQrvumzvrjhCl0Bq5EOrCIPs8olHjcX1zOsld5m5YG2UHx0lH06QdNQOAbPNsjRMj6SrrmkTEL0HdxoUjImtGtCw0vARA81V1jvtFbx0vrmkz+BXIALjzpkt6puR66asyWoexXhyJLwOw8f4KOIwFPPhyltdGNcUWQX6pHLdFly+CO4w7eFGuejDuD6mJcAxQ96akQWUQDokNon.5isF21yqUn0XBP6aezN3HLr8ufV0IJO0xGs0gO46Zu6gqqUWBlpmn.R2wp9p0jeLRpgzcrpk1qdYjpXs4cSGIaojpX0PaUyqbRaECp0OkDDBGu.EYqM2nFSe95p.QLRvz70dAd3ESRVhm+wut3k3gaO7qIQhLcDYVSGRNe.IffpRbff1BPDvRisMjnyYNXvQeW2XaBBxoZWu9fCGdzReS6m73Jk4IE.pDPHpIwTAIEtz8De8XYOsi6rzJpQYQ5EjzjSrKIZbhpy1iAgin9oPfFEQGlz7Pmg4WeqViQAQAXm9ChRV0t18IpkgDdgzy2Uc5X50bJYF4Jhhp+FyckhBKs1Ziu10m6ZWOsnTeWfCKUCHkUH4Bg2gPY1hdiW6ktod5RJ4BKAUaVBprsRYBVoySlMUB9ZSRRkQVV.bnnzW77t4UBxIfgtjX+gUwbMhFQiQCvmQXIfwhBfM4gHddshrbqTNQrlMrAMxIelAiGETBLleB..k0CBlZPlDTSFhSzQCvQhkwRb8Ej.JpCFNChpFCX94h7b.Lzg1gdwuikfZIWZWrKRKg5TxWlNAK.Vf5BotjU8ANmEtC3JNcMKg9jjF7vc4okAY5qUpQjPBBcB6u1Zx6RIpXYkhr82imV.0hi.yUYexQfkWjqL1L8MmFWwMGTUlVzP1gYHsXXa.RPlY7JibOqHOUmB3pmxvQ0kOIUllhClb5ODx0pElFYcxsuAY9S5FkfB1DAbnjmmnsqJf4NTz4fdC4LvZJidOG6AjKrAWkY7jouy82h.GtqvJBR.xOf.RVd1UKOtxA.OlYZvnsWez4fUZkBB72k3emQREcarw71FajaabF4WdyUDbyUDbyUDbyUDbyUDbyUDbyUDbyUDbyUD7KjqH3la.nP2.vMko++tkoWnnALPkIWp9oLtd45mxTjkre1.HWY60mrg4hypD6lEoT18nP.YpJ0tfURIZMMaSiCXUT8CRJCqp5siW3wOvZepMKJ8r0zjUnV4.rZkls3irBL5E5DMJWobmPsNKJF+PqCbfTwmBJqmEk0JLJkEush0t85AIwmhuaY8vue9UpUGT+1iTUQOBbeODBLP5dfCuRVpVuFJ386Y0XiMuZU79f.B2akyKHrab3yq+EMzvbLHEBTic2Zewl4v+CFB5TiS.RV6PhOD2BrEwo80SG+vC+5.ZruZ0Y3V915QAfU.Phkarm3QZOfFkSRrc.MLrGvubfFlazChC5yDtY57PVwVBGq6GGOD1w87fv0DZQeaHgcWYNc2GCgMeQtoywWsiv7qLCNPwaWOW6F4Zudt12MW6Mx0dybs+rz1IgXvTn9HqjlntT+QnMmjMCyaesdSEu4sWj4tQJoPYaGlnXWuy.kanGg7AxB.G6Fo5sdNjtO0i5Of54zcLkEXuuee3nZVpYZT4Chh.sWVmanCDWBNjebrtFr2C71iCTGQtDr5rjt+FKAIfXF.Pu8XUt1aAVkmE0+dxiPH3LePz0uz5NV7SzHls5WArcHMlk1oxDkEXES3PW2VVCCYqZx6CDRbsFS.9o0UiTWdu+vH0kiXzUAB.yxuKhYXQhGyNjzaqKXO0M2dZH37fQOrHMtNIwg3tAzS6JB.hQnuKuGXld7qwsj09r1njq71hQkFCASam1saFnL1ZZbEVy5Wg0b2qvZ13JrlMuBq4ytBq4ym4ZXdUdPbDcnvDAzwA6JiDc2TspZIA3BZ69jfHG1qrh4Njyf.ODmpJA1zCedD0m+RlHyx.T.lyqYxEounB0aNJsw5MO2wNZPRG0dYyAD1kGkNkurYD4hn2XuhJXWm9dC4L0ssbI8hXxj4ympWaEMFsoNiZjiQ88GiQWUxnuddkWlMeT9R8ZvjxTM+qZL0O0RRwkrNfe8XgFYYx+V+7L4Oga56F22w6.b.n9FQBdrTKVAAdJtFK3cKK4lRK541iJq2ngp02fewKpq2PMxorFqWlu8yPvS5EF2IWyFkS9CO5sxasS3oPq5hX4ZTd+snWTFjWv+IeHlmhTvA1n5Ya0Q07H9EfVOayFkk0WmSqn53bs6TVxry3Qio+THMl9iFS9gTVMwGxaGPSFN2uN1RZTtHeGVVQdp1oJXiranW11sZcJWGXFOkpGE7aBx5R0L4ZXT5ayuioMPmB0yDFRoLWjdl5PMJTO5Ck+vxD5Z7uL1j5LotF6KFx6hE7pYZJdy7xay+x7l9cg96kWFClYMPZ7CSv.YNRQXPD7i2dmWMxpgFY8y+PyYPV+bmBSVuqzL8qi7PMWTKF7zeAqWK+BNecjdk4BSfdYu9kWyzaQyM6Z5G+5qVE2tx+Bk8K7uP4LEXSMsetodo0T892alonZo3ZB0SSM361LWwzRYkbURKcfjxnkxiiUCszgTEPKsmzpmk1WlRmINTNVwyRm8aUUN6Cs1J0wCK7kwdO4emh8dxCv6.LHAzl4VN8SvknGc04DoNmxz9YpabsU3t2.GCudM3tXwHWiqoJEZtndcB0OSjTjvTZehLjp7fpd93lI0FT00uuodcAuRxh5EWV7JVJw+myQ4h+h2Q4UpHnuMtOOkJn9FkTKPsMsLWf4iMo5lV7n5k02zx7eCeRKvov4orDmhAKRYXMWPVD1TU5KYEXekoxapD6+OVIVyEM9O..GUX2C
                            
                            1 Reply Last reply Reply Quote 0
                            • First post
                              Last post

                            37

                            Online

                            1.7k

                            Users

                            11.7k

                            Topics

                            102.1k

                            Posts