Thursday, May 30, 2024
HomeUncategorizedOptimization Example: Mandelbrot Set (part 1)

Optimization Example: Mandelbrot Set (part 1)

Introduction

This post documents the process of optimizing a small problem – generating images of the Mandelbrot Set. Although I will show a speedup of ~8x over the naive implementation (there is a part 2 that will bring this to ~100x in some cases), this is mostly meant as an example of how I go about using my knowledge of software design and computer architecture to optimize software. This post is rather long, but many of the sections are independent of each other, so feel free to use the Contents to go to the sections of interest. In particular I spend some time setting up the problem, and the real optimizing starts here.

General notes

• This is not a cookbook – there is no cookbook for this. Optimization is an exploration, not a recipe, it is often more of an art than a science.
• While many techniques might be able to be applied to different problems, each problems will have its own, often unique, set of techniques that can be usefully applied.
• Measure, measure, measure to know whether a change is an improvement, and profile to know where to improve. Just because something looks like it might improve performance doesn’t mean that it does – I’ve had many years of practice and I still sometimes go down blind alleys.
• Optimization is never finished (except maybe for tiny problems, or where a solution is totally memory or I/O bound). Generally what happens is that diminishing returns kick in, in that it starts taking more and more effort to get smaller and smaller gains. Sometimes trying a whole different path might yield better results.
• This is not an academic paper – there has been no literature review, no peer review, there is no bibliography, and I’m not claiming that any of these ideas are novel.
• Although I use C++ for the examples, the techniques I use would work in any compiled language or assembler – C++, C, assembler, Fortran, Rust, Go, Java (if using a JIT), although vectorizing requires access to the intrinsics or a good vectorizing compiler. They would not offer anything useful in interpreted languages such as Python or Javascript.
• There is a repository with the code used for this here. The code shown here will be different as it has been simplified somewhat for this post.

Setting up the problem

In order to demonstrate the thought processes that go into optimizing code, it is important to firstly to have a well defined problem to solve. The example chosen here is a Mandelbrot Set generator. This has the advantages of being well known and understood, suitable for optimization, small enough to explore the problem in a reasonable amount of time, and generates some pretty images. It has the disadvantage that there aren’t a lot algorithmic improvements that can be made, and is too small a problem to demonstrate any interesting data structures.

Definition of the Mandelbrot Set

Given a point (c) in the complex plane, it belongs in the Mandelbrot set if the recurrence relation (z_{n+1}=z_n+c, z_0=c) does not diverge. It can be demonstrated that not diverging is equivalent to testing (|z|leq 4) for all (n geq 0).

Unpacking this a little,

Because we don’t have a way of iterating an infinite number of times, let’s pick some maximum number of iterations (n_{max}).

For a point ((c_x,c_y)), start with (x=0, y=0) (this is equivalent to starting with (x=c_x, y=c_y), it will just require one extra iteration) and apply

(x_{n+1}={x_n}^2-{y_n}^2+c_x)

(y_{n+1}=2{x_n}{y_n}+c_y)

until (x_n^2+y_n^2>4) or (n>=n_{max}).

If (n_{max}) is reached, we say that a point is in the Mandelbrot Set, otherwise it is not. The higher the limit (n_{max}), the less the false positives.

It is customary when displaying this in an image to set the points in the Mandelbrot set to be black, and use a gradient of colors to represent how many iterations (n) it took to reach (x_n^2+y_n^2>4). It ends up looking like this for (-2 leq x,y < 2):

Parameters of problem

There are still some things I need to nail down. Firstly, what sort of hardware am I going to run this on? In particular, am I going to use a CPU, or a GPU with something like OpenCL or CUDA? In practice, this problem is embarrassingly parallel (yes, that is a technical term), which makes it highly suited to a GPU, but this post is about CPU optimization. In particular, I am going to use x86-64, with the assumption AVX2 is available. Some notes will be included for how this would transfer to other processors, such as ARM, POWER or RISC-V. The particular CPU I used is a `Intel(R) Core(TM) i5-4340M CPU @ 2.90GHz` (Haswell).

Numeric representation

There are two sorts of numbers that that need to be processed and/or stored: the point coordinates (x),(y), and the iteration count.

Representation of (x),(y)

What sort of numerical representation should be used for (x) and (y)? Options include 32 bit float, 64 bit double, 32, 64, 128 (or larger) fixed point numbers stored in integers. The higher the precision, the deeper it is possible to zoom into the set before rounding errors distort the images and make them grainy.

If fixed point integers are used, note that all numbers are in the range (-16 < x < 16), so 5 bits are needed for the integer part, the rest can be used for the fractional part.

Type Precision (bits) Storage (bits) Notes
float ~24 32 Precision depends on distance from 0
double ~53 64 Precision depends on distance from 0
32 bit fixed 27 32
64 bit fixed 59 64 Limited AVX2 support
128 bit fixed 123 128 No direct CPU support

Note that the storage size isn’t going to matter until it becomes time to vectorize this – at which point the smaller sizes mean that more can be packed into a vector, which will dramatically help with speed.

I start by ruling out float and 32 fixed point – they don’t allow particularly high levels of zoom, and low zoom levels don’t require many levels of iteration, so a naive solution will already be very fast.

I also ruled out 128 bit integers or higher, as there is no direct CPU support for this, and the problem becomes that of dealing with high speed multiprecision arithmetic, which is an interesting problem, but takes me away from considering a variety of optimizations.

64 bit integers would look to be a better choice than doubles because of slightly higher precision, and is certainly my preference (I prefer to use fixed point to floating point where feasible as then I have much better control over error propagation), but there is a wrinkle: I am going to want to vectorize this, and x86-64 AVX2 does not directly support any way of multiplying vectors of 64 bit integers and getting the high part, which would make the problem expensive to vectorize (the same is true of ARM NEON), which would bring me back to dealing with multiprecision arithmetic to do multiplications.

For the rest of this discussion, I will use double. In practice this seems to limit the workable zoom level to about (2^{33} times image_width) which for 1000×1000 images means a maximum zoom of 8589934592000.

Representation of the number of iterations

Another thing to determine the size of the elements of the array that iteration counts are stored in – the two options are 16 bit integers and 32 bit integers. Smaller means less memory, but a smaller maximum number of iterations. If the problem was memory bound on access to this array this choice might be important for performance, but there is so much numerical processing going on that it’s not going to matter here. I punted on this decision by defining a type `iterations_t` that can be changed later, and set it to be a 32 bit unsigned integer for now.

``````typedef uint32_t iterations_t;
``````

First do the simple version

The first step is to write a simple version. Starting with this has several advantages:

• It is a check that the problem is well understood,
• It can be used to provide a dataset for testing more complicated versions,
• I consider it good practice to leave a commented copy in our final code (or internal documentation or somewhere else accessible) so that the algorithm is clear when doing maintenance,
• It might be fast enough, in which case optimization is not even required.

Here is a naive version of a Mandelbrot set generator written in C++:

``````iterations_t mandelbrot_point(double cx, double cy, iterations_t m) {
iterations_t count = 0;
double x = 0, y = 0;
while(count < m && x * x + y * y <= 4.0) {
double nx = x * x - y * y + cx;
y = 2.0 * x * y + cy;
x = nx;
count++;
}
return count;
}

void mandelbrot_render_simple(iterations_t* p, double cx, double cy,
double zoom, int width, int height, iterations_t iterations) {
double xs = cx - 0.5 / zoom;
double ys = cy + 0.5 * height / (zoom * width);
double inc = 1.0 / (zoom * width);
for(int j = 0; j < height ; j++) {
iterations_t* py = p + j * width;
double y = ys - inc * j;
for(int i = 0; i < width; i++) {
py[i] = mandelbrot_point(xs + inc * i, y, iterations);
}
}
}
``````

A note about `mandelbrot_render_simple`: It would be faster to do the following for the inner loop:

``````		double x = xs;
for(int i = 0; i < width; i++) {
py[i] = mandelbrot_point(x, y, iterations);
x += inc;
}
``````

This replaces `xs + inc * i` (an integer to double conversion, a multiply and an addition) by `x += inc` (addition), but if `inc` is much smaller than `x`, rounding errors will accumulate rapidly. This is an example of how slippery it can be to deal with floating point arithmetic - What Every Computer Scientist Should Know About Floating-Point Arithmetic by David Goldberg (ACM Computing Surveys 23 issue 1, 1991) should be required reading for anyone dealing with floating point in a non-trivial way. Also, the time spent in `mandelbrot_render_simple` is tiny compared to the time spent in `mandelbrot_point`, so there is very little benefit to this in any case.

Set up some tests

It is important to have some idea that our initial code works, and to set up some tests to measure performance with.

I picked four areas of the Mandelbrot set, zoom set at the effective maximum of 8589934592000 and max iterations of 50000, to use in testing, the first three (A,B,C) to represent the sort of workloads that might typically be found zooming in, and the fourth (D) to represent the slowest possible example.

test (c_x) (c_y) black detail
A -0.57245092932760 0.563219321276942 lots lots
B -0.57245092932763 0.563219321276842 little lots
C -0.57245092932663 0.563219321276852 little little
D 0 0 all none

Test A

Test B

Test C

Test D

For these tests, I used clang++-13, with compiler flags

``````-Werror -Wall -Wextra -std=c++20 -mavx2 -mfma -mtune=haswell
``````

Tests are run on an `Intel(R) Core(TM) i5-4340M CPU @ 2.90GHz` with 16GB of RAM, on Debian Linux with KDE and most applications shut down. I ran each case 20 times, which is enough to give a rough speed comparison.

Initial results:

Test A Test B Test C Test D
time (seconds) 973.4 68.7 41.2 3550.7
total iterations 273760647440 19289413880 11543441620 1000000000000

Whether to optimize

I’ve done a lot of tramping in New Zealand (tramping is the word we use for hiking and backpacking), and many tracks have rivers to cross without the benefit of bridges. Part of the training for how to do this safely is to first ask yourselves (plural, because you are not doing this on your own, right?) the question “Do we cross?”, the point being that you never need to cross a river. Only after that do the other questions get considered: “Where do we cross?”, “How do we cross?”, etc.

Optimization is similar, that the first question should always be “Do I optimize?”. Clearly the advantages of optimization are that code may race faster, but there are reasons not to:

• The code might already be fast enough,
• The code might not be the bottleneck, so optimizing it will have little effect until the bottlenecks are dealt with,
• It takes a lot of engineering time to do well,
• Optimized code is generally much harder to maintain.

For the purposes of this discussion, I decide to go ahead with optimization.

Are there any compiler flags that will help?

It is good to get the compiler to do as much of the work as possible, so with that in mind, are there any optimization flags that might help that aren’t already covered by `-O3`?

One possibilty is `-ffast-math` for the mandelbrot_point function only. This is a flag to really be avoided unless you are sure of what you are doing, but this particular function is well behaved, there are no NaNs, no divisions or square roots, I don’t care about order of operations or associativity, and that loop by its nature is propagating rounding errors anyway, so `-ffast-math` may result in it just propagating different ones. In the next section, I am going to look at the assembler produced by the compiler, which is an extra check that `ffast-math` is safe to use.

Results with `-ffast-math`

Test A Test B Test C Test D
time (seconds) 932.5 65.9 39.5 3404.8
total iterations 273729279660 19298214380 11543330380 1000000000000

This is a small improvement. Note that the total number of iterations has changed slightly, reflecting the different rounding in the calculation, but these changes are tiny, and could be avoided by specifying the order of operations in the problem, or by using fixed point.

Look at the assembler

Decades ago, when CPU architectures were much simpler and compilers were not as good, it would sometimes be worth using assembler for tight inner loops. On some of the more modern CPUs, particularly the x86 family with “out of order execution”, “μops” and “ports”, the machine code instructions are converted into something that bears little resemblance to the original before being run. The compilers have been written to output code that gives very good performance, and are very hard to beat. I’m not saying it is impossible to do better - a person will have a better understanding of the problem being solved and may be able to take shortcuts that the compiler can’t, and a person can do at least as well as the compiler by using the compiler output as a starting point, but this would only be worth the effort in extreme cases, and would require a lot of trial and error and testing for possibly small gains, and even then there is the risk that something that works great on one processor performs badly on another processor in the same family. It is also much harder to maintain. I chose not to go that route for this problem, and let a compiler do that level of lifting.

On the other hand, it is important to be aware at some level of what is going on, both at the assembly and architecture level. I can’t recommend Agner Fog’s Software Optimization Resources highly enough for the x86 family of microprocessors. If there are equivalent resources for ARM (I know this is unlikely, as there are a lot more variety in ARM chips), I would be delighted to find out where they are.

For a tight loop it is very much worth looking at the assembler produced by the compiler (particularly after using `-ffast-math` to check that hasn’t had unexpected consequences). This can be done either with the -S flag with the compiler (gcc or clang, other compilers will have equivalents) or use the Compiler Explorer. The compiler explorer also has the advantages of showing how different compilers handle the same code.

Doing this with `mandelbrot_point` with `-ffast-math`, the result is (just showing the inner loop, and I’ve line numbered and annotated it):

``````0 .LBB0_3
1	vmulsd  %xmm4, %xmm4, %xmm6      x_squared = x * x
2	vmulsd  %xmm2, %xmm2, %xmm5      y_squared = y * y
3	vaddsd  %xmm6, %xmm5, %xmm7      mag_squared=x_squared + y_squared
4	vucomisd        %xmm3, %xmm7     branch if mag_squared > 4.0
5	ja     .LBB0_6
6	vaddsd  %xmm0, %xmm6, %xmm6      x_squared_plus_cx = x_squared + cx
7	vaddsd  %xmm4, %xmm4, %xmm4      x_times_2 = x + x
8	vsubsd  %xmm5, %xmm6, %xmm5      x_next = x_squared_plus_cx - y_squared
9	vfmadd213sd %xmm1, %xmm4, %xmm2  y = x_times_2 * y + cy
10	incl    %eax                     count++
11	vmovapd %xmm5, %xmm4             x =x _next
12	cmpl    %eax, %edi               branch if count != m
13	jne     .LBB0_3
``````

This looks really efficient, and there a doesn’t seem to be anything bad introduced by `-ffast-math` - mostly it just allowed a multiply and an add to be bundled into one `vfmadd213sd` instruction, and flexibility about the associativity of `2*x*y`.

Sheep race optimization

Anyone that has spent any time around sheep will know that they generally try to cluster together and move away from people. Say that you have a race of sheep that you want to move forwards.

The obvious thing to try (option a in the diagram) is to stand at the back in the hope that they will all move away from you. That doesn’t work, as the back sheep are blocked from moving by the sheep in front of them (they may bunch up a little), and the front sheep don’t want to move as you are too far away to be a threat, and they don’t want to separate from the rest of the sheep behind them.

What does work (option b in the diagram) is to start in front of all the sheep and walk backwards along the race. As you walk past the front sheep, they will move forwards to get away from you, followed by the next, then the next, until you are at the back and they are all moving forwards.

This concept of moving backwards to unstick a pipeline motivates the next optimization - reversing the order of instructions to stretch the distance between dependent instructions, so that the pipeline stays full.

Looking at a portion of the Instruction tables: Lists of instruction latencies, throughputs and micro-operation breakdowns for Intel, AMD and VIA CPUs for Haswell (other generations are similar enough that the same reasoning still applies):

Instruction Ports Latency Reciprocal Throughput
vucomisd p1 3 1
vmulsd p01 5 0.5

and looking at the assembly above, there are a lot of stalls going on, for instance `%xmm5` is generated on line 1, but won’t be ready for line 2 until 5 clock cycles later, and `%xmm4` is generated on line 7 and used on line 9. The processor internally will be able to mitigate this a little by out of order execution.

The loop structure (using `<-` to denote “depends on”) is something like:

``````while(D) {
A <- B
B <- A
C <- A,B
D <- C
}
``````

where A and B represent the calculation of the next x and y, C and D represent the calculation and comparison of `mag_squared` to 4.

If calculations of C and D are reordered so that the gap between them and what they depend on is as long as possible, it changes to

``````while(D) {
D <- C
C <- A,B
A <- B
B <- A
}
``````

D now has nearly a full loop between being calculated and being needed (although will be one loop behind), as does C.

I call this optimization a ‘sheep race’ - there is almost certainly a more common name for that, and I’d welcome being told what it is.

Turning this into code (incidentally, count has been changed to decrease rather than increase - this results in no change in performance, but will help later):

``````iterations_t mandelbrot_sheeprace(double cx, double cy, iterations_t m) {
double x = 0, y = 0, x_squared = 0, y_squared = 0, mag_squared = 0;
iterations_t count = m + 2;
while(count != 0 && mag_squared <= 4.0) {
mag_squared = x_squared + y_squared;
y_squared = y * y;
x_squared = x * x;
double newx = x_squared - y_squared + cx;
y = 2 * y * x + cy;
x = newx;
count--;
}
return m - count;
}
``````

This now has the comparison of the `mag_squared` to 4 occur before the calculation of the next value of `mag_squared`, and the calculation of of `mag_squared` to occur before the calculation of the next values of `x_squared` and `y_squared`. As a result, the value used into comparison is now two loops behind, and `count` has to be adjusted accordingly (hence the `m + 2`). The extra two x,y values generated are harmless, and now the dependencies are further apart.

Test A Test B Test C Test D
time (seconds) 674 47.7 28.7 2462.3
total iterations 273743913640 19294157420 11543469820 1000000000000

This is a substantial improvement, and the only cost is that the code is less obvious.

Interleaving

Another thing to do to fill in the pipeline bubbles is to do the calculations for two points at the same time. I will call each calculation a stream, so there are two streams, (s_1) and (s_2). One loop handles the case of both streams (s_1) and (s_2) running, and the other loop handles the case where one of the streams has finished and only (s_1) is running. If (s_1) finishes before (s_2), the (s_1) result gets returned, and the contents of (s_2) get transferred to (s_1). The pipeline terminates when all streams are finished.

``````void mandelbrot2_sheeprace(double s1_cx, double s1_cy, double s2_cx, double s2_cy, uint32_t m,
iterations_t* s1_r, iterations_t* s2_r) {
double s1_x = 0, s1_y = 0, s1_x_squared = 0, s1_y_squared = 0, s1_mag_squared = 0;
double s2_x = 0, s2_y = 0, s2_x_squared = 0, s2_y_squared = 0, s2_mag_squared = 0;
iterations_t count = m + 2;
while(count != 0) {
if(s2_mag_squared > 4.0) {
// write out stream 1
*s2_r = m - count;
// now only stream 0 left
goto single_point;
}
if(s1_mag_squared > 4.0) {
// write out stream 0
*s1_r = m - count;
// transfer stream 1 to stream 0
s1_r = s2_r;
s1_x = s2_x;
s1_y = s2_y;
s1_cx = s2_cx;
s1_cy = s2_cy;
s1_x_squared = s2_x_squared;
s1_y_squared = s2_y_squared;
s1_mag_squared = s2_mag_squared;
// now only stream 0 left
goto single_point;
}
s1_mag_squared = s1_x_squared + s1_y_squared;
s2_mag_squared = s2_x_squared + s2_y_squared;
count--;
s1_y_squared = s1_y * s1_y;
s2_y_squared = s2_y * s2_y;
s1_x_squared = s1_x * s1_x;
s2_x_squared = s2_x * s2_x;
s1_y = 2 * s1_y * s1_x + s1_cy;
s2_y = 2 * s2_y * s2_x + s2_cy;
s1_x = s1_x_squared - s1_y_squared + s1_cx;
s2_x = s2_x_squared - s2_y_squared + s2_cx;
}
*s1_r = m;
*s2_r = m;
return;
single_point:
while(count != 0 && s1_mag_squared <= 4.0) {
s1_mag_squared = s1_x_squared + s1_y_squared;
count--;
s1_y_squared = s1_y * s1_y;
s1_x_squared = s1_x * s1_x;
s1_y = 2 * s1_y * s1_x + s1_cy;
s1_x = s1_x_squared - s1_y_squared + s1_cx;
}
*s1_r = m - count;
}
``````

The corresponding outer loop is a straightforward extension of mandelbrot_render_simple - points are just processed two at a time:

``````template void mandelbrot_render_simple2(iterations_t* p, double cx, double cy,
double zoom, uint32_t width, uint32_t height, uint32_t iterations) {
double xs = cx-0.5 / zoom;
double ys = cy + 0.5 * height / (zoom * width);
double inc = 1.0 / (zoom * width);
for(uint32_t j = 0; j < height; j++) {
iterations_t* py=p + j * width;
double y=ys - inc * j;
for(uint32_t i=0; i < width; i += 2) {
F(xs + inc * i, y, xs + inc * (i + 1), y, iterations,
&py[i], &py[i + 1]);
}
}
}
``````

This can be expanded to work with (n) streams (s_1 cdots s_n). Check the github repository for examples with 3 or 4 streams.

Here is a diagram, showing a pipeline working with 4 streams. Note that stream (s_4) transfers to stream (s_2) then (s_1) as they finish.

Results with pipeline of width 2

#streams Test A Test B Test C Test D
time (seconds) 2 433.7 30.6 18.2 1562.7
total iterations 2 273729279660 19298214380 11543330380 1000000000000
time (seconds) 3* 393.7 28.0 16.7 1424.2
total iterations 3* 273773335620 19336345300 11565894240 1020000000000
time (seconds) 4 393.2 27.9 16.7 1424.4
total iterations 4 273729279660 19298214380 11543330380 1000000000000

* - There are edge effects where the number of streams does not evenly divide the row width, resulting in slightly overflowing the rows in this case (I made the array `p` a little larger so this would not result in undefined behavior). This would be relatively easy to deal with, but the approach taken in the next section won’t have this issue.

This is a substantial speed improvement - the speed increase is now ~2.5x for a pipeline with 3 or 4 streams, but there are diminishing returns for increasing the number of streams. Possible reasons for this:

• As more streams are added, the calculations are interleaved, the time between dependent calculations gets to be greater than or equal to the latency, and which point adding streams contributes nothing.

• More streams requires more active variables. Ideally the inner loop variables should all occur in CPU registers - if there are more variables needed at any given moment than there are registers, the compiler will spill these values to memory, which is slower. The x86_64 family has 16 AVX registers, which are the ones used for floating point (AVX-512 increases that number to 32). PowerPC, ARM and RISC-V have 32 of each register type, so could possibly handle a larger number of streams.

• The way that this code is set up requires an extra loop for each possible number of active streams (except zero, in which case the function returns), so if there are (n) streams, there are (n) loops. This results in the code size being (O(n^2)). Increased code size might put pressure on the execution and branch caches on the CPU - although the code would have to get rather large for this to happen on modern x86-64 CPUs.

• The function doesn’t return until all the streams are done, so if one stream takes much longer than the others, the other streams won’t be processing (the black area in the figure above), which means that resources are sitting idle.

Interleaving, take two

The next step is to use SIMD to set up more streams, but the above approach won’t scale to this - the cases in the code would get huge.

The problem can be restructured be inverting the order of the loops and putting what was the inner loop (`mandelbrot_point`) on the outside, and turning what was the outer loop (`mandelbrot_render_simple`) into a state engine to get the next point to process:

First the state engine, which simply iterates through the points (there is a wrinkle with the `tail` which will be described below, but can be assumed to be zero and ignored for now):

``````class MandelbrotStateEngineSimple {
public:
MandelbrotStateEngineSimple(iterations_t* pp, int pwidth, int pheight,
double pxs, double pys, double pinc, int ptail) {
p = pp;
width = pwidth;
height = pheight;
inc = pinc;
xs = pxs;
ys = pys;
w = 0;
h = 0;
tail = ptail;
};
// get_next point sets px, py, x, y and returns true if there
// is a next point, returns false otherwise
bool get_next_point(double& px, double& py, int&x, int& y) {
if(h == height) {
if(tail == 0) {
return false;
}
tail--;
px = py = 0;
// dummy point
x = 0;
y = height;
return true;
}
x = w;
y = h;
px = xs + w * inc;
py = ys - h * inc;
w++;
if(w >= width) {
w = 0;
h++;
};
return true;
}
private:
iterations_t* p;
int width;
int height;
int w;
int h;
double xs;
double ys;
double inc;
int tail;
};
``````

Here is a simple render loop that uses this state engine - it first calls `get_next_point` to get the first point, then every time a point is finished, it writes it and gets the next point.

``````void mandelbrot_render1(iterations_t* p, double cen_x, double cen_y,
double zoom, int width, int height, iterations_t iterations) {
double xs = cen_x - 0.5 / zoom;
double ys = cen_y + 0.5 * height / (zoom * width);
double inc = 1.0 / (zoom * width);
MandelbrotStateEngineSimple mse(p, width, height, xs, ys, inc, 0);
double x = 0, y = 0, x_squared = 0, y_squared = 0;
double mag_squared = 0;
iterations_t count = iterations;
int dx = 0, dy = 0;
double cx = 0, cy = 0;
mse.get_next_point(cx, cy, dx, dy);
while(true) {
if(count ==  0 || mag_squared >  4) {
p[dx + dy * width] = iterations - count;
if(!mse.get_next_point(cx, cy, dx, dy)) {
return;
}
// reset the iterators
x = y = 0;
count = iterations;
}
count--;
y = 2 * y * x + cy;
x = x_squared - y_squared + cx;
x_squared = x * x;
y_squared = y * y;
mag_squared = x_squared + y_squared;
}
}
``````

The extension of this to multiple streams is easy - each stream is primed with a call to `get_next_point`, and each time a point in a stream is finished, it is written out and replaced by the next point, which other streams keep going.

``````void mandelbrot_render2_sheeprace(iterations_t* p, double cen_x, double cen_y,
double zoom, int width, int height, iterations_t iterations) {
double xs = cen_x - 0.5 / zoom;
double ys = cen_y + 0.5 * height / (zoom * width);
double inc = 1.0 / (zoom * width);
MandelbrotStateEngineSimple mse(p, width, height, xs, ys, inc, 1);
double s1_x = 0, s1_y = 0, s1_x_squared = 0, s1_y_squared = 0, s1_mag_squared = 0;
double s2_x = 0, s2_y = 0, s2_x_squared = 0, s2_y_squared = 0, s2_mag_squared = 0;
iterations_t s1_count = iterations + 2;
iterations_t s2_count = iterations + 2;
int s1_dx = 0, s1_dy = 0;
int s2_dx = 0, s2_dy = 0;
double s1_cx = 0, s1_cy = 0;
double s2_cx = 0, s2_cy = 0;
mse.get_next_point(s1_cx, s1_cy, s1_dx, s1_dy);
mse.get_next_point(s2_cx, s2_cy, s2_dx, s2_dy);
while(true) {
if(s1_count ==  0 || s1_mag_squared >  4) {
p[s1_dx + s1_dy * width] = iterations - s1_count;
if(!mse.get_next_point(s1_cx, s1_cy, s1_dx, s1_dy)) {
return;
}
s1_x = s1_y = s1_x_squared = s1_y_squared = s1_mag_squared = 0;
s1_count = iterations + 2;
}
if(s2_count ==  0 || s2_mag_squared >  4) {
p[s2_dx + s2_dy * width] = iterations - s2_count;
if(!mse.get_next_point(s2_cx, s2_cy, s2_dx, s2_dy)) {
return;
}
s2_x = s2_y = s2_x_squared = s2_y_squared = s2_mag_squared = 0;
s2_count = iterations + 2;
}
s1_mag_squared = s1_x_squared + s1_y_squared;
s2_mag_squared = s2_x_squared + s2_y_squared;
s1_count--;
s2_count--;
s1_y_squared = s1_y * s1_y;
s2_y_squared = s2_y * s2_y;
s1_x_squared = s1_x * s1_x;
s2_x_squared = s2_x * s2_x;
s1_y = 2 * s1_y * s1_x + s1_cy;
s2_y = 2 * s2_y * s2_x + s2_cy;
s1_x = s1_x_squared - s1_y_squared + s1_cx;
s2_x = s2_x_squared - s2_y_squared + s2_cx;
}
}
``````

This is what the pipeline looks like:

Note that the order of entry of points to the pipeline may not be the same as the order of exit. For instance, `a` enters the pipeline before `b`, but `b` finishes before `a`.

There needs to be some care taken when there are no more points to process - if the function exits immediately, there may be other points left in the pipeline that don’t get processed. The solution to this is to flush the pipeline at the end by processing some extra points. First the array `p` is extended by one to be of size `width*height+1`, so that the last index `width*height` corresponding to (0,height) can be used to dump the flush values. If if there are (n) streams, then (n+1) points that take the maximum number of iterations ((c_x=0), (c_y=0) works for this ) is sufficient to flush the pipeline. The `tail` parameter is used to insert these pipeline flushing points.

Test A Test B Test C Test D
render1 934.5 66.1 39.6 3406.9
render1_sheeprace 855.5 60.6 36.4 3124.9
render2 467.9 33.3 20.1 1706.1
render2_sheeprace 428.5 30.4 18.3 1567.9
render3 494.6 35.1 21.0 1807.4
render3_sheeprace 520.2 39.9 22.1 1899.6
render4 527.4 37.4 22.4 1923.0
render4_sheeprace 560.8 40.1 24.1 2044.3

One surprising thing from these results is that the sweet spot seems to be 2 streams, whereas the previous pipeline had a sweet spot of 3 streams. Looking at the assembler, `get_next_point` is getting inlined, which adds to the register pressure, which leads to more register spills with 3 streams. I speculate that the slowdown is enough to make 3 streams less competitive than two.

Vectorizing

Now there is enough of a framework to use all the parts of the AVX vector, not just the one lane that the previous code has been using. AVX vectors are 256 bits wide, which allows SIMD on 4 doubles at the same time. I’m going to borrow from ARM terminology and call each of these 4 components a lane.

There are cases which the compiler can auto-vectorize code, but I have not explored whether it is possible in this case, so I use the Intel Intrinsics here.

The test for whether a stream has finished needs some effort to make fast - it would be expensive to test each component of the vector one at a time, so I want one test for each vector. One of my favorite intrinsics is `_mm256_movemask_pd` which uses the `vmovmskpd` instruction. `_mm256_movemask_pd` takes the top bit of each 64 bit component of a vector and packs them into the low 4 bits of an integer. The goal is to get the expression `(count!=0 && mag_squared=<4.0)` to set the high bit to 1 if it succeeds, 0 otherwise.

Firstly, I modified the `count` loop a little by reducing the value by one, so instead of checking `count!=0` the check is changed to `count>=0`, which will set the high bit when it is time to exit. The `_mm256_cmp_pd` intrinsic will take care of the `mag_squared=<4.0`. Then or-ing these together will make the test ready for `_mm256_movemask_pd`.

Once the end of a stream is detected, the result needs to be written and `get_next_point` invoked. Both x86-64 AVX2 and ARM NEON support extracting a value from one lane of a vector, but neither of them support the lane chosen to be a variable, so my solution is to store all the vectors to memory, do the setup for the next point from there, then load the memory back into the registers. This is expensive, but for deep zooms will happen infrequently compared to the case where a normal iteration happens.

ARM notes: ARM NEON only has 128 bit vectors so there are only two lanes per vector, the intrinsics documentation is here, and there is no direct `vmovmskpd` instruction on ARM, but the equivalent can be performed with a few instructions. Apart from that, the ARM NEON code will have pretty similar steps.

``````void render_avx_sheeprace2(iterations_t* p, double cen_x, double cen_y,
double zoom, int width, int height, iterations_t iterations) {
double xs = cen_x - 0.5 / zoom;
double ys = cen_y + 0.5 * height / (zoom * width);
double inc = 1.0 / (zoom * width);
MandelbrotStateEngineSimple mse(p, width, height, xs, ys, inc, 7);
iterations--;
__m256d s1_x = _mm256_setzero_pd();
__m256d s1_y = _mm256_setzero_pd();
__m256d s1_x_squared = _mm256_setzero_pd();
__m256d s1_y_squared = _mm256_setzero_pd();
__m256d s1_mag_squared = _mm256_setzero_pd();
__m256i s1_count = _mm256_set1_epi64x(iterations + 2);
__m256d s2_x = _mm256_setzero_pd();
__m256d s2_y = _mm256_setzero_pd();
__m256d s2_x_squared = _mm256_setzero_pd();
__m256d s2_y_squared = _mm256_setzero_pd();
__m256d s2_mag_squared = _mm256_setzero_pd();
__m256i s2_count = _mm256_set1_epi64x(iterations + 2);
__m256i one_int64 = _mm256_set1_epi64x(1);
__m256d four = _mm256_set1_pd(4.0);
int s1_dx[4] = {}, s1_dy[4] = {};
int s2_dx[4] = {}, s2_dy[4] = {};
double cx_mem[4] __attribute__((__aligned__(32)));
double cy_mem[4] __attribute__((__aligned__(32)));
mse.get_next_point(cx_mem[0], cy_mem[0], s1_dx[0], s1_dy[0]);
mse.get_next_point(cx_mem[1], cy_mem[1], s1_dx[1], s1_dy[1]);
mse.get_next_point(cx_mem[2], cy_mem[2], s1_dx[2], s1_dy[2]);
mse.get_next_point(cx_mem[3], cy_mem[3], s1_dx[3], s1_dy[3]);
__m256d s1_cx = *(__m256d*)cx_mem;
__m256d s1_cy = *(__m256d*)cy_mem;
mse.get_next_point(cx_mem[0], cy_mem[0], s2_dx[0], s2_dy[0]);
mse.get_next_point(cx_mem[1], cy_mem[1], s2_dx[1], s2_dy[1]);
mse.get_next_point(cx_mem[2], cy_mem[2], s2_dx[2], s2_dy[2]);
mse.get_next_point(cx_mem[3], cy_mem[3], s2_dx[3], s2_dy[3]);
__m256d s2_cx = *(__m256d*)cx_mem;
__m256d s2_cy = *(__m256d*)cy_mem;
while(true) {
__m256d cmp2;
cmp2 = _mm256_or_pd((__m256d)s1_count, _mm256_cmp_pd(s1_mag_squared, four, _CMP_GT_OS));
if(!_mm256_testz_pd(cmp2, cmp2)) {
_mm256_store_pd(cx_mem, s1_cx);
_mm256_store_pd(cy_mem, s1_cy);
double s1_x_mem[4] __attribute__((__aligned__(32)));
double s1_y_mem[4] __attribute__((__aligned__(32)));
uint64_t s1_count_mem[4] __attribute__((__aligned__(32)));
double s1_x_squared_mem[4] __attribute__((__aligned__(32)));
double s1_y_squared_mem[4] __attribute__((__aligned__(32)));
_mm256_store_pd(s1_x_mem, s1_x);
_mm256_store_pd(s1_y_mem, s1_y);
_mm256_store_si256((__m256i*)s1_count_mem, s1_count);
_mm256_store_pd(s1_x_squared_mem, s1_x_squared);
_mm256_store_pd(s1_y_squared_mem, s1_y_squared);
p[s1_dx[b] + s1_dy[b] * width] = iterations - s1_count_mem[b];
if(!mse.get_next_point(cx_mem[b], cy_mem[b], s1_dx[b], s1_dy[b])) {
return;
}
s1_count_mem[b] = iterations + 2;
s1_x_mem[b] = s1_y_mem[b] = s1_x_squared_mem[b] = s1_y_squared_mem[b] = 0;
``` Test A Test B Test C Test D render1_avx 215.6 15.6 9.5 786.7 render1_avx_sheeprace 207.9 15.1 9.2 750.0 render2_avx 126.3 9.3 5.8 458.3 render2_avx_sheeprace 119.7 8.8 5.4 436.8 render3_avx 131.6 9.7 6.0 479.2 render3_avx_sheeprace 131.2 9.8 6.0 480.6 render2_avx_sheeprace is the clear winner here, which is not a great surprise given the earlier results. Conclusion render2_avx_sheeprace with test D is running ~2.3 billion iterations/second on a single core. On a 2.9 GHz processor, that’s an average of 10.13 clock cycles/iteration for each of 8 streams. Comparing this with the naive implementation right at the start: Test A Test B Test C Test D naive 973.4 68.7 41.2 3550.7 render2_avx_sheeprace 119.7 8.8 5.4 436.8 speed multiplier 8.1 7.8 7.6 8.1 So using a looking carefully at the problem, knowing about the machine architecture and using variety of optimization techniques, I have managed to get a speed improvement of about ~8x. Here is a rough breakdown of of how much each technique contributes to the best result: multiplier -ffast-math 1.04 Sheep race 1.09 Interleaving (2) 2.0 Vectorization 3.6 Apart from vectorization and interleaving using the same framework with pipelining and a state engine, these are largely independent of each other. I’m sure that this is not the final improvement that could be made in this area - I welcome any other suggestions, and please feel free to contact me. There will be a part 2 to this - in that, I will discuss alternatives to the MandelbrotStateEngineSimple state engine that can prune the number of points to calculate, and make some observations about multithreading. This will result in another substantial speed improvement on top of what I have already presented (getting to ~100x in some cases) using these techniques. Any comments, corrections, observations, or optimizations that I missed? Please feel free to contact me ```
``` ```
``` Read More ```
``` .td_block_separator{width:100%;align-items:center;margin-bottom:38px;padding-bottom:10px}.td_block_separator span{position:relative;display:block;margin:0 auto;width:100%;height:1px;border-top:1px solid #EBEBEB}.td_separator_align_left span{margin-left:0}.td_separator_align_right span{margin-right:0}.td_separator_dashed span{border-top-style:dashed}.td_separator_dotted span{border-top-style:dotted}.td_separator_double span{height:3px;border-bottom:1px solid #EBEBEB}.td_separator_shadow>span{position:relative;height:20px;overflow:hidden;border:0;color:#EBEBEB}.td_separator_shadow>span>span{position:absolute;top:-30px;left:0;right:0;margin:0 auto;height:13px;width:98%;border-radius:100%}html :where([style*='border-width']){border-style:none}.tdi_83{margin-top:28px!important;margin-bottom:20px!important}```
``` .tdi_84 .td-post-sharing-visible{align-items:flex-start} Share FacebookTwitterPinterestWhatsApp ```
``` .tdi_86{margin-bottom:30px!important}@media (max-width:767px){.tdi_86{margin-top:-7px!important}}```
``` .tdi_87{margin-bottom:43px!important} .tdb_single_next_prev{*zoom:1}.tdb_single_next_prev:before,.tdb_single_next_prev:after{display:table;content:'';line-height:0}.tdb_single_next_prev:after{clear:both}.tdb-next-post{font-family:'Roboto',sans-serif;width:48%;float:left;transform:translateZ(0);-webkit-transform:translateZ(0);min-height:1px;line-height:1}.tdb-next-post span{display:block;font-size:12px;color:#747474;margin-bottom:7px}.tdb-next-post a{font-size:15px;color:#222;line-height:21px;-webkit-transition:color 0.2s ease;transition:color 0.2s ease}.tdb-next-post a:hover{color:var(--td_theme_color,#4db2ec)}.tdb-post-next{margin-left:2%;text-align:right}.tdb-post-prev{margin-right:2%}.tdb-post-next .td-image-container{display:inline-block}.tdi_87 .td-module-container{display:flex;flex-direction:column}.tdi_87 .tdb-post-next .td-module-container{align-items:flex-end}.tdi_87 .td-image-container{display:block;order:0}.ie10 .tdi_87 .next-prev-title,.ie11 .tdi_87 .next-prev-title{flex:auto}@media (min-width:1019px) and (max-width:1140px){}@media (min-width:768px) and (max-width:1018px){}@media (max-width:767px){}Previous articleClean your codebase with basic information theoryNext articleDiseconomies of scale in fraud, spam, support, and moderation```
``` @media (max-width:767px){.tdi_88{justify-content:center!important;text-align:center!important}} .tdb-author-box .tdb-author-photo,.tdb-author-box .tdb-author-info{display:table-cell;vertical-align:top}.tdb-author-box .tdb-author-photo img{display:block}.tdb-author-box .tdb-author-counters span{display:inline-block;background-color:#222;margin:0 10px 0 0;padding:5px 10px 4px;font-family:'Roboto',sans-serif;font-size:11px;font-weight:700;line-height:1;color:#fff}.tdb-author-box .tdb-author-name,.tdb-author-box .tdb-author-url{display:block}.tdb-author-box .tdb-author-name{margin:7px 0 8px;font-family:'Open Sans','Open Sans Regular',sans-serif;font-size:15px;line-height:21px;font-weight:700;color:#222}.tdb-author-box .tdb-author-name:hover{color:#4db2ec}.tdb-author-box .tdb-author-url{margin-bottom:6px;font-size:11px;font-style:italic;line-height:21px;color:#444}.tdb-author-box .tdb-author-url:hover{color:#4db2ec}.tdb-author-box .tdb-author-descr{font-size:12px}.tdb-author-box .tdb-author-social{margin-top:4px}.tdb-author-box .tdb-social-item{position:relative;display:inline-block;-webkit-transition:all 0.2s;transition:all 0.2s;text-align:center;-webkit-transform:translateZ(0);transform:translateZ(0)}.tdb-author-box .tdb-social-item:last-child{margin-right:0!important}.tdb-author-box .tdb-social-item i{color:#000;-webkit-transition:all 0.2s;transition:all 0.2s}.tdb-author-box .tdb-social-item:hover i{color:#000}.tdi_88{padding:21px;border:1px solid #ededed}.tdi_88 .tdb-author-info{width:auto;padding-bottom:0;padding-left:21px}.tdi_88 .tdb-author-photo{width:117px;transform:translateZ(0);-webkit-transform:translateZ(0);pointer-events:auto}.tdi_88 .tdb-social-item i{font-size:15px;vertical-align:middle;line-height:15px}.tdi_88 .tdb-social-item i.td-icon-twitter,.tdi_88 .tdb-social-item i.td-icon-linkedin,.tdi_88 .tdb-social-item i.td-icon-pinterest,.tdi_88 .tdb-social-item i.td-icon-blogger,.tdi_88 .tdb-social-item i.td-icon-vimeo{font-size:12px}.tdi_88 .tdb-social-item{min-width:15px;height:15px;margin:10px 20px 10px 0}.tdi_88 .tdb-author-photo:hover:before{opacity:0}@media (min-width:1019px) and (max-width:1140px){.tdi_88{border:1px solid #ededed}}@media (min-width:768px) and (max-width:1018px){.tdi_88{border:1px solid #ededed}}@media (max-width:767px){.tdi_88{border:1px solid #ededed}.tdi_88 .tdb-author-photo{display:inline-block;transform:translateZ(0);-webkit-transform:translateZ(0)}.tdi_88 .tdb-author-info{display:inline-block;width:100%;padding-top:21px;padding-left:0}}adminhttp://instadsc.in```
``` .tdi_89 .td-image-wrap{padding-bottom:70%}.tdi_89 .entry-thumb{background-position:center 50%}.tdi_89 .td-module-container{flex-direction:column;border-color:#eaeaea!important}.tdi_89 .td-image-container{display:block;order:0}.ie10 .tdi_89 .td-module-meta-info,.ie11 .tdi_89 .td-module-meta-info{flex:auto}body .tdi_89 .td-favorite{font-size:36px;box-shadow:1px 1px 4px 0px rgba(0,0,0,0.2)}.tdi_89 .td-module-meta-info{border-color:#eaeaea}.tdi_89 .td_module_wrap{width:33.33333333%;float:left;padding-left:10px;padding-right:10px;padding-bottom:10px;margin-bottom:10px}.rtl .tdi_89 .td_module_wrap{float:right}.tdi_89 .td_block_inner{margin-left:-10px;margin-right:-10px}.tdi_89 .td-module-container:before{bottom:-10px;border-color:#eaeaea}.tdi_89 .td-post-vid-time{display:block}.tdi_89 .td-post-category:not(.td-post-extra-category){display:inline-block}.tdi_89 .td-author-photo .avatar{width:20px;height:20px;margin-right:6px;border-radius:50%}.tdi_89 .td-excerpt{display:none;column-count:1;column-gap:48px}.tdi_89 .td-audio-player{opacity:1;visibility:visible;height:auto;font-size:13px}.tdi_89 .td-read-more{display:none}.tdi_89 .td-author-date{display:inline}.tdi_89 .td-post-author-name{display:none}.tdi_89 .td-post-date,.tdi_89 .td-post-author-name span{display:none}.tdi_89 .entry-review-stars{display:inline-block}.tdi_89 .td-icon-star,.tdi_89 .td-icon-star-empty,.tdi_89 .td-icon-star-half{font-size:15px}.tdi_89 .td-module-comments{display:none}.tdi_89 .td_module_wrap:nth-child(3n+1){clear:both}.tdi_89 .td_module_wrap:nth-last-child(-n+3){margin-bottom:0;padding-bottom:0}.tdi_89 .td_module_wrap:nth-last-child(-n+3) .td-module-container:before{display:none}.tdi_89 .td-module-exclusive .td-module-title a:before{display:inline-block}.tdi_89 .entry-title{font-size:13px!important;line-height:1.4!important;font-weight:500!important}html:not([class*='ie']) .tdi_89 .td-module-container:hover .entry-thumb:before{opacity:0}@media (min-width:1019px) and (max-width:1140px){.tdi_89 .td_module_wrap{padding-bottom:10px;margin-bottom:10px}.tdi_89 .td-module-container:before{bottom:-10px}.tdi_89 .td_module_wrap{clear:none!important;padding-bottom:10px!important;margin-bottom:10px!important}.tdi_89 .td_module_wrap:nth-child(3n+1){clear:both!important}.tdi_89 .td_module_wrap:nth-last-child(-n+3){margin-bottom:0!important;padding-bottom:0!important}.tdi_89 .td_module_wrap .td-module-container:before{display:block!important}.tdi_89 .td_module_wrap:nth-last-child(-n+3) .td-module-container:before{display:none!important}}@media (min-width:768px) and (max-width:1018px){.tdi_89 .td_module_wrap{padding-left:7.5px;padding-right:7.5px}.tdi_89 .td_block_inner{margin-left:-7.5px;margin-right:-7.5px}.tdi_89 .td_module_wrap{padding-bottom:7.5px;margin-bottom:7.5px;clear:none!important;padding-bottom:7.5px!important;margin-bottom:7.5px!important}.tdi_89 .td-module-container:before{bottom:-7.5px}.tdi_89 .td-video-play-ico{width:24px;height:24px;font-size:24px}.tdi_89 .td_module_wrap:nth-child(3n+1){clear:both!important}.tdi_89 .td_module_wrap:nth-last-child(-n+3){margin-bottom:0!important;padding-bottom:0!important}.tdi_89 .td_module_wrap .td-module-container:before{display:block!important}.tdi_89 .td_module_wrap:nth-last-child(-n+3) .td-module-container:before{display:none!important}.tdi_89 .entry-title{font-size:12px!important}}@media (max-width:767px){.tdi_89 .td-image-container{flex:0 0 30%;width:30%}.ie10 .tdi_89 .td-image-container,.ie11 .tdi_89 .td-image-container{flex:0 0 auto}.tdi_89 .td-module-container{flex-direction:row}.tdi_89 .td-image-container{display:block;order:0}.ie10 .tdi_89 .td-module-meta-info,.ie11 .tdi_89 .td-module-meta-info{flex:1}.tdi_89 .td-module-meta-info{margin:0 0 0 16px;padding:0px}.tdi_89 .td_module_wrap{width:100%;float:left;padding-left:7.5px;padding-right:7.5px;padding-bottom:13px;margin-bottom:13px;padding-bottom:13px!important;margin-bottom:13px!important}.rtl .tdi_89 .td_module_wrap{float:right}.tdi_89 .td_block_inner{margin-left:-7.5px;margin-right:-7.5px}.tdi_89 .td-module-container:before{bottom:-13px}.tdi_89 .td-video-play-ico{width:24px;height:24px;font-size:24px}.tdi_89 .td-post-date,.tdi_89 .td-post-author-name span{display:inline-block}.tdi_89 .td_module_wrap:nth-last-child(1){margin-bottom:0!important;padding-bottom:0!important}.tdi_89 .td_module_wrap .td-module-container:before{display:block!important}.tdi_89 .td_module_wrap:nth-last-child(1) .td-module-container:before{display:none!important}.tdi_89 .entry-title{margin:0 0 6px 0;font-size:14px!important}}var block_tdi_89 = new tdBlock(); block_tdi_89.id = "tdi_89"; block_tdi_89.atts = '{"title_tag":"div","modules_on_row":"eyJhbGwiOiIzMy4zMzMzMzMzMyUiLCJwaG9uZSI6IjEwMCUifQ==","limit":"3","modules_category":"image","show_btn":"none","show_excerpt":"none","ajax_pagination":"next_prev","sort":"","category_id":"_related_cat","f_title_font_size":"eyJwaG9uZSI6IjE0IiwiYWxsIjoiMTMiLCJwb3J0cmFpdCI6IjEyIn0=","f_title_font_line_height":"eyJwaG9uZSI6IjEuNCIsImFsbCI6IjEuNCJ9","modules_gap":"eyJhbGwiOiIyMCIsInBvcnRyYWl0IjoiMTUiLCJwaG9uZSI6IjE1In0=","show_com":"none","show_date":"eyJhbGwiOiJub25lIiwicGhvbmUiOiJpbmxpbmUtYmxvY2sifQ==","show_author":"none","image_height":"70","f_title_font_weight":"500","all_modules_space":"eyJhbGwiOiIyMCIsImxhbmRzY2FwZSI6IjIwIiwicG9ydHJhaXQiOiIxNSIsInBob25lIjoiMjYifQ==","custom_title":"RELATED ARTICLES","image_floated":"eyJwaG9uZSI6ImZsb2F0X2xlZnQifQ==","image_width":"eyJwaG9uZSI6IjMwIn0=","meta_info_align":"","meta_margin":"eyJwaG9uZSI6IjAgMCAwIDE2cHgifQ==","meta_padding":"eyJwaG9uZSI6IjAifQ==","video_icon":"eyJwb3J0cmFpdCI6IjI0IiwicGhvbmUiOiIyNCJ9","image_size":"td_485x360","art_title":"eyJwaG9uZSI6IjAgMCA2cHggMCJ9","block_type":"td_flex_block_1","separator":"","custom_url":"","block_template_id":"","mc1_tl":"","mc1_title_tag":"","mc1_el":"","post_ids":"-11236","taxonomies":"","category_ids":"","in_all_terms":"","tag_slug":"","autors_id":"","installed_post_types":"","include_cf_posts":"","exclude_cf_posts":"","popular_by_date":"","linked_posts":"","favourite_only":"","locked_only":"","offset":"","open_in_new_window":"","show_modified_date":"","time_ago":"","time_ago_add_txt":"ago","time_ago_txt_pos":"","review_source":"","el_class":"","td_query_cache":"","td_query_cache_expiration":"","td_ajax_filter_type":"","td_ajax_filter_ids":"","td_filter_default_txt":"All","td_ajax_preloading":"","container_width":"","m_padding":"","modules_border_size":"","modules_border_style":"","modules_border_color":"#eaeaea","modules_border_radius":"","modules_divider":"","modules_divider_color":"#eaeaea","h_effect":"","image_alignment":"50","image_radius":"","hide_image":"","show_favourites":"","fav_size":"2","fav_space":"","fav_ico_color":"","fav_ico_color_h":"","fav_bg":"","fav_bg_h":"","fav_shadow_shadow_header":"","fav_shadow_shadow_title":"Shadow","fav_shadow_shadow_size":"","fav_shadow_shadow_offset_horizontal":"","fav_shadow_shadow_offset_vertical":"","fav_shadow_shadow_spread":"","fav_shadow_shadow_color":"","video_popup":"yes","video_rec":"","spot_header":"","video_rec_title":"","video_rec_color":"","video_rec_disable":"","autoplay_vid":"yes","show_vid_t":"block","vid_t_margin":"","vid_t_padding":"","video_title_color":"","video_title_color_h":"","video_bg":"","video_overlay":"","vid_t_color":"","vid_t_bg_color":"","f_vid_title_font_header":"","f_vid_title_font_title":"Video pop-up article title","f_vid_title_font_settings":"","f_vid_title_font_family":"","f_vid_title_font_size":"","f_vid_title_font_line_height":"","f_vid_title_font_style":"","f_vid_title_font_weight":"","f_vid_title_font_transform":"","f_vid_title_font_spacing":"","f_vid_title_":"","f_vid_time_font_title":"Video duration text","f_vid_time_font_settings":"","f_vid_time_font_family":"","f_vid_time_font_size":"","f_vid_time_font_line_height":"","f_vid_time_font_style":"","f_vid_time_font_weight":"","f_vid_time_font_transform":"","f_vid_time_font_spacing":"","f_vid_time_":"","excl_show":"inline-block","excl_txt":"","excl_margin":"","excl_padd":"","all_excl_border":"","all_excl_border_style":"solid","excl_radius":"","excl_color":"","excl_color_h":"","excl_bg":"","excl_bg_h":"","all_excl_border_color":"","excl_border_color_h":"","f_excl_font_header":"","f_excl_font_title":"Label text","f_excl_font_settings":"","f_excl_font_family":"","f_excl_font_size":"","f_excl_font_line_height":"","f_excl_font_style":"","f_excl_font_weight":"","f_excl_font_transform":"","f_excl_font_spacing":"","f_excl_":"","meta_info_horiz":"layout-default","meta_width":"","meta_space":"","art_btn":"","meta_info_border_size":"","meta_info_border_style":"","meta_info_border_color":"#eaeaea","meta_info_border_radius":"","modules_category_margin":"","modules_category_padding":"","modules_cat_border":"","modules_category_radius":"0","show_cat":"inline-block","modules_extra_cat":"","author_photo":"","author_photo_size":"","author_photo_space":"","author_photo_radius":"","show_review":"inline-block","review_space":"","review_size":"2.5","review_distance":"","art_excerpt":"","excerpt_col":"1","excerpt_gap":"","excerpt_middle":"","excerpt_inline":"","show_audio":"block","hide_audio":"","art_audio":"","art_audio_size":"1.5","btn_title":"","btn_margin":"","btn_padding":"","btn_border_width":"","btn_radius":"","pag_space":"","pag_padding":"","pag_border_width":"","pag_border_radius":"","prev_tdicon":"","next_tdicon":"","pag_icons_size":"","f_header_font_header":"","f_header_font_title":"Block header","f_header_font_settings":"","f_header_font_family":"","f_header_font_size":"","f_header_font_line_height":"","f_header_font_style":"","f_header_font_weight":"","f_header_font_transform":"","f_header_font_spacing":"","f_header_":"","f_ajax_font_title":"Ajax categories","f_ajax_font_settings":"","f_ajax_font_family":"","f_ajax_font_size":"","f_ajax_font_line_height":"","f_ajax_font_style":"","f_ajax_font_weight":"","f_ajax_font_transform":"","f_ajax_font_spacing":"","f_ajax_":"","f_more_font_title":"Load more button","f_more_font_settings":"","f_more_font_family":"","f_more_font_size":"","f_more_font_line_height":"","f_more_font_style":"","f_more_font_weight":"","f_more_font_transform":"","f_more_font_spacing":"","f_more_":"","f_title_font_header":"","f_title_font_title":"Article title","f_title_font_settings":"","f_title_font_family":"","f_title_font_style":"","f_title_font_transform":"","f_title_font_spacing":"","f_title_":"","f_cat_font_title":"Article category tag","f_cat_font_settings":"","f_cat_font_family":"","f_cat_font_size":"","f_cat_font_line_height":"","f_cat_font_style":"","f_cat_font_weight":"","f_cat_font_transform":"","f_cat_font_spacing":"","f_cat_":"","f_meta_font_title":"Article meta info","f_meta_font_settings":"","f_meta_font_family":"","f_meta_font_size":"","f_meta_font_line_height":"","f_meta_font_style":"","f_meta_font_weight":"","f_meta_font_transform":"","f_meta_font_spacing":"","f_meta_":"","f_ex_font_title":"Article excerpt","f_ex_font_settings":"","f_ex_font_family":"","f_ex_font_size":"","f_ex_font_line_height":"","f_ex_font_style":"","f_ex_font_weight":"","f_ex_font_transform":"","f_ex_font_spacing":"","f_ex_":"","f_btn_font_title":"Article read more button","f_btn_font_settings":"","f_btn_font_family":"","f_btn_font_size":"","f_btn_font_line_height":"","f_btn_font_style":"","f_btn_font_weight":"","f_btn_font_transform":"","f_btn_font_spacing":"","f_btn_":"","mix_color":"","mix_type":"","fe_brightness":"1","fe_contrast":"1","fe_saturate":"1","mix_color_h":"","mix_type_h":"","fe_brightness_h":"1","fe_contrast_h":"1","fe_saturate_h":"1","m_bg":"","color_overlay":"","shadow_shadow_header":"","shadow_shadow_title":"Module Shadow","shadow_shadow_size":"","shadow_shadow_offset_horizontal":"","shadow_shadow_offset_vertical":"","shadow_shadow_spread":"","shadow_shadow_color":"","title_txt":"","title_txt_hover":"","all_underline_height":"","all_underline_color":"","cat_bg":"","cat_bg_hover":"","cat_txt":"","cat_txt_hover":"","cat_border":"","cat_border_hover":"","meta_bg":"","author_txt":"","author_txt_hover":"","date_txt":"","ex_txt":"","com_bg":"","com_txt":"","rev_txt":"","audio_btn_color":"","audio_time_color":"","audio_bar_color":"","audio_bar_curr_color":"","shadow_m_shadow_header":"","shadow_m_shadow_title":"Meta info shadow","shadow_m_shadow_size":"","shadow_m_shadow_offset_horizontal":"","shadow_m_shadow_offset_vertical":"","shadow_m_shadow_spread":"","shadow_m_shadow_color":"","btn_bg":"","btn_bg_hover":"","btn_txt":"","btn_txt_hover":"","btn_border":"","btn_border_hover":"","pag_text":"","pag_h_text":"","pag_bg":"","pag_h_bg":"","pag_border":"","pag_h_border":"","ajax_pagination_next_prev_swipe":"","ajax_pagination_infinite_stop":"","css":"","tdc_css":"","td_column_number":2,"header_color":"","color_preset":"","border_top":"","class":"tdi_89","tdc_css_class":"tdi_89","tdc_css_class_style":"tdi_89_rand_style","live_filter":"cur_post_same_categories","live_filter_cur_post_id":11236,"live_filter_cur_post_parent_id":0}'; block_tdi_89.td_column_number = "2"; block_tdi_89.block_type = "td_flex_block_1"; block_tdi_89.post_count = "3"; block_tdi_89.found_posts = "4858"; block_tdi_89.header_color = ""; block_tdi_89.ajax_pagination_infinite_stop = ""; block_tdi_89.max_num_pages = "1620"; tdBlocksArray.push(block_tdi_89); RELATED ARTICLES Uncategorized Kino: Pro Video Camera May 29, 2024 Uncategorized New attention mechanisms that outperform standard multi-head attention May 29, 2024 Uncategorized Vector indexing all of Wikipedia on a laptop May 29, 2024 ```
``` var tdb_login_sing_in_shortcode="on"; .tdb_single_comments input[type=text]{min-height:34px;height:auto}.tdb_single_comments .comments,.tdb_single_comments .comment-respond:last-child,.tdb_single_comments .form-submit{margin-bottom:0}.is-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.tdb-comm-layout3 form,.tdb-comm-layout5 form{display:flex;flex-wrap:wrap}.tdb-comm-layout3 .td-form-comment,.tdb-comm-layout5 .td-form-comment,.tdb-comm-layout3 .form-submit,.tdb-comm-layout5 .form-submit{flex:0 0 100%;order:1}.tdb-comm-layout3 .td-form-author,.tdb-comm-layout3 .td-form-email,.tdb-comm-layout3 .td-form-url{flex:0 0 32%}.tdb-comm-layout5 .td-form-author,.tdb-comm-layout5 .td-form-email{flex:0 0 49%}.tdb-comm-layout5 .td-form-url{flex:0 0 100%}.tdb-comm-leave_reply_top .comments{display:flex;flex-direction:column}.tdb-comm-leave_reply_top .td-comments-title{order:0;margin-bottom:14px}.tdb-comm-leave_reply_top .comment-respond .form-submit{order:1;margin-bottom:21px}.tdb-comm-leave_reply_top .comment-list{order:2}.tdb-comm-leave_reply_top .comment-pagination{order:3}.tdi_90 .comment-link{display:inline-block}.tdi_90 .comment{border-bottom-style:dashed}.tdi_90 .comment .children{border-top-style:dashed}@media (min-width:767px){.tdb-comm-layout2 form,.tdb-comm-layout4 form{margin:0 -10px}.tdb-comm-layout2 .logged-in-as,.tdb-comm-layout4 .logged-in-as,.tdb-comm-layout2 .comment-form-input-wrap,.tdb-comm-layout4 .comment-form-input-wrap,.tdb-comm-layout2 .form-submit,.tdb-comm-layout4 .form-submit,.tdb-comm-layout2 .comment-respond p,.tdb-comm-layout4 .comment-respond p{padding:0 10px}.tdb-comm-layout2 .td-form-author,.tdb-comm-layout2 .td-form-email{float:left;width:33.3333%}.tdb-comm-layout2 .td-form-url{width:33.3333%}.tdb-comm-layout2 .td-form-url{float:left}.tdb-comm-layout4 .td-form-author,.tdb-comm-layout4 .td-form-email{float:left;width:50%}.tdb-comm-layout3 .td-form-author,.tdb-comm-layout5 .td-form-author,.tdb-comm-layout3 .td-form-email{margin-right:2%}}@media (max-width:767px){.tdb-comm-layout3 .td-form-author,.tdb-comm-layout3 .td-form-email,.tdb-comm-layout3 .td-form-url,.tdb-comm-layout5 .td-form-author,.tdb-comm-layout5 .td-form-email{flex:0 0 100%}} LEAVE A REPLY Comment: Please enter your comment! Name:* Please enter your name here Email:* You have entered an incorrect email address! Please enter your email address here Website: Save my name, email, and website in this browser for the next time I comment. ```
``` .tdi_92{vertical-align:baseline}.tdi_92>.wpb_wrapper,.tdi_92>.wpb_wrapper>.tdc-elements{display:block}.tdi_92>.wpb_wrapper>.tdc-elements{width:100%}.tdi_92>.wpb_wrapper>.vc_row_inner{width:auto}.tdi_92>.wpb_wrapper{width:auto;height:auto} .tdi_93{margin-bottom:48px!important} .tdi_93.td-a-rec{text-align:center}.tdi_93.td-a-rec:not(.td-a-rec-no-translate){transform:translateZ(0)}.tdi_93 .td-element-style{z-index:-1}- Advertisment - .tdi_94 .td-image-wrap{padding-bottom:70%}.tdi_94 .entry-thumb{background-position:center 50%}.tdi_94 .td-image-container{flex:0 0 30%;width:30%;display:block;order:0}.ie10 .tdi_94 .td-image-container,.ie11 .tdi_94 .td-image-container{flex:0 0 auto}.tdi_94 .td-module-container{flex-direction:row;border-color:#eaeaea!important}.ie10 .tdi_94 .td-module-meta-info,.ie11 .tdi_94 .td-module-meta-info{flex:1}body .tdi_94 .td-favorite{font-size:36px;box-shadow:1px 1px 4px 0px rgba(0,0,0,0.2)}.tdi_94 .td-module-meta-info{padding:0 0 0 13px;border-color:#eaeaea}.tdi_94 .td_module_wrap{padding-left:20px;padding-right:20px;padding-bottom:15px;margin-bottom:15px}.tdi_94 .td_block_inner{margin-left:-20px;margin-right:-20px}.tdi_94 .td-module-container:before{bottom:-15px;border-color:#eaeaea}.tdi_94 .td-post-vid-time{display:block}.tdi_94 .td-post-category:not(.td-post-extra-category){display:none}.tdi_94 .td-author-photo .avatar{width:20px;height:20px;margin-right:6px;border-radius:50%}.tdi_94 .td-excerpt{display:none;column-count:1;column-gap:48px}.tdi_94 .td-audio-player{opacity:1;visibility:visible;height:auto;font-size:13px}.tdi_94 .td-read-more{display:none}.tdi_94 .td-author-date{display:inline}.tdi_94 .td-post-author-name{display:none}.tdi_94 .entry-review-stars{display:inline-block}.tdi_94 .td-icon-star,.tdi_94 .td-icon-star-empty,.tdi_94 .td-icon-star-half{font-size:15px}.tdi_94 .td-module-comments{display:none}.tdi_94 .td_module_wrap:nth-last-child(1){margin-bottom:0;padding-bottom:0}.tdi_94 .td_module_wrap:nth-last-child(1) .td-module-container:before{display:none}.tdi_94 .td-module-exclusive .td-module-title a:before{display:inline-block}.tdi_94 .td-block-title a,.tdi_94 .td-block-title span{text-transform:uppercase!important}.tdi_94 .entry-title{font-size:14px!important;line-height:1.4!important;font-weight:500!important}html:not([class*='ie']) .tdi_94 .td-module-container:hover .entry-thumb:before{opacity:0}@media (min-width:1019px) and (max-width:1140px){.tdi_94 .td_module_wrap{padding-bottom:15px;margin-bottom:15px}.tdi_94 .td-module-container:before{bottom:-15px}.tdi_94 .td_module_wrap{padding-bottom:15px!important;margin-bottom:15px!important}.tdi_94 .td_module_wrap:nth-last-child(1){margin-bottom:0!important;padding-bottom:0!important}.tdi_94 .td_module_wrap .td-module-container:before{display:block!important}.tdi_94 .td_module_wrap:nth-last-child(1) .td-module-container:before{display:none!important}}@media (min-width:768px) and (max-width:1018px){.tdi_94 .td_module_wrap{width:100%;float:left}.rtl .tdi_94 .td_module_wrap{float:right}.tdi_94 .td_module_wrap{padding-left:10px;padding-right:10px;padding-bottom:10px;margin-bottom:10px;padding-bottom:10px!important;margin-bottom:10px!important}.tdi_94 .td_block_inner{margin-left:-10px;margin-right:-10px}.tdi_94 .td-module-container:before{bottom:-10px}.tdi_94 .td-post-date,.tdi_94 .td-post-author-name span{display:none}.tdi_94 .td_module_wrap:nth-last-child(1){margin-bottom:0!important;padding-bottom:0!important}.tdi_94 .td_module_wrap .td-module-container:before{display:block!important}.tdi_94 .td_module_wrap:nth-last-child(1) .td-module-container:before{display:none!important}.tdi_94 .entry-title{font-size:12px!important}}@media (max-width:767px){.tdi_94 .td-module-meta-info{padding:0 0 0 16px}.tdi_94 .td_module_wrap{width:100%;float:left;padding-bottom:15px;margin-bottom:15px;padding-bottom:15px!important;margin-bottom:15px!important}.rtl .tdi_94 .td_module_wrap{float:right}.tdi_94 .td-module-container:before{bottom:-15px}.tdi_94 .td_module_wrap:nth-last-child(1){margin-bottom:0!important;padding-bottom:0!important}.tdi_94 .td_module_wrap .td-module-container:before{display:block!important}.tdi_94 .td_module_wrap:nth-last-child(1) .td-module-container:before{display:none!important}}var block_tdi_94 = new tdBlock(); block_tdi_94.id = "tdi_94"; block_tdi_94.atts = '{"modules_on_row":"eyJwb3J0cmFpdCI6IjEwMCUiLCJwaG9uZSI6IjEwMCUifQ==","image_size":"","image_floated":"float_left","image_width":"30","image_height":"70","show_btn":"none","show_excerpt":"none","show_com":"none","show_author":"none","show_cat":"none","limit":"4","meta_padding":"eyJhbGwiOiIwIDAgMCAxM3B4IiwicGhvbmUiOiIwIDAgMCAxNnB4In0=","f_title_font_size":"eyJhbGwiOiIxNCIsInBvcnRyYWl0IjoiMTIifQ==","f_title_font_line_height":"1.4","f_title_font_weight":"500","all_modules_space":"eyJhbGwiOiIzMCIsInBvcnRyYWl0IjoiMjAifQ==","category_id":"","modules_gap":"eyJwb3J0cmFpdCI6IjIwIn0=","show_date":"eyJwb3J0cmFpdCI6Im5vbmUifQ==","custom_title":"Most Popular","ajax_pagination":"load_more","sort":"","f_header_font_transform":"uppercase","block_type":"td_flex_block_1","separator":"","custom_url":"","block_template_id":"","title_tag":"","mc1_tl":"","mc1_title_tag":"","mc1_el":"","post_ids":"-11236","taxonomies":"","category_ids":"","in_all_terms":"","tag_slug":"","autors_id":"","installed_post_types":"","include_cf_posts":"","exclude_cf_posts":"","popular_by_date":"","linked_posts":"","favourite_only":"","locked_only":"","offset":"","open_in_new_window":"","show_modified_date":"","time_ago":"","time_ago_add_txt":"ago","time_ago_txt_pos":"","review_source":"","el_class":"","td_query_cache":"","td_query_cache_expiration":"","td_ajax_filter_type":"","td_ajax_filter_ids":"","td_filter_default_txt":"All","td_ajax_preloading":"","container_width":"","m_padding":"","modules_border_size":"","modules_border_style":"","modules_border_color":"#eaeaea","modules_border_radius":"","modules_divider":"","modules_divider_color":"#eaeaea","h_effect":"","image_alignment":"50","image_radius":"","hide_image":"","show_favourites":"","fav_size":"2","fav_space":"","fav_ico_color":"","fav_ico_color_h":"","fav_bg":"","fav_bg_h":"","fav_shadow_shadow_header":"","fav_shadow_shadow_title":"Shadow","fav_shadow_shadow_size":"","fav_shadow_shadow_offset_horizontal":"","fav_shadow_shadow_offset_vertical":"","fav_shadow_shadow_spread":"","fav_shadow_shadow_color":"","video_icon":"","video_popup":"yes","video_rec":"","spot_header":"","video_rec_title":"","video_rec_color":"","video_rec_disable":"","autoplay_vid":"yes","show_vid_t":"block","vid_t_margin":"","vid_t_padding":"","video_title_color":"","video_title_color_h":"","video_bg":"","video_overlay":"","vid_t_color":"","vid_t_bg_color":"","f_vid_title_font_header":"","f_vid_title_font_title":"Video pop-up article title","f_vid_title_font_settings":"","f_vid_title_font_family":"","f_vid_title_font_size":"","f_vid_title_font_line_height":"","f_vid_title_font_style":"","f_vid_title_font_weight":"","f_vid_title_font_transform":"","f_vid_title_font_spacing":"","f_vid_title_":"","f_vid_time_font_title":"Video duration text","f_vid_time_font_settings":"","f_vid_time_font_family":"","f_vid_time_font_size":"","f_vid_time_font_line_height":"","f_vid_time_font_style":"","f_vid_time_font_weight":"","f_vid_time_font_transform":"","f_vid_time_font_spacing":"","f_vid_time_":"","excl_show":"inline-block","excl_txt":"","excl_margin":"","excl_padd":"","all_excl_border":"","all_excl_border_style":"solid","excl_radius":"","excl_color":"","excl_color_h":"","excl_bg":"","excl_bg_h":"","all_excl_border_color":"","excl_border_color_h":"","f_excl_font_header":"","f_excl_font_title":"Label text","f_excl_font_settings":"","f_excl_font_family":"","f_excl_font_size":"","f_excl_font_line_height":"","f_excl_font_style":"","f_excl_font_weight":"","f_excl_font_transform":"","f_excl_font_spacing":"","f_excl_":"","meta_info_align":"","meta_info_horiz":"layout-default","meta_width":"","meta_margin":"","meta_space":"","art_title":"","art_btn":"","meta_info_border_size":"","meta_info_border_style":"","meta_info_border_color":"#eaeaea","meta_info_border_radius":"","modules_category":"","modules_category_margin":"","modules_category_padding":"","modules_cat_border":"","modules_category_radius":"0","modules_extra_cat":"","author_photo":"","author_photo_size":"","author_photo_space":"","author_photo_radius":"","show_review":"inline-block","review_space":"","review_size":"2.5","review_distance":"","art_excerpt":"","excerpt_col":"1","excerpt_gap":"","excerpt_middle":"","excerpt_inline":"","show_audio":"block","hide_audio":"","art_audio":"","art_audio_size":"1.5","btn_title":"","btn_margin":"","btn_padding":"","btn_border_width":"","btn_radius":"","pag_space":"","pag_padding":"","pag_border_width":"","pag_border_radius":"","prev_tdicon":"","next_tdicon":"","pag_icons_size":"","f_header_font_header":"","f_header_font_title":"Block header","f_header_font_settings":"","f_header_font_family":"","f_header_font_size":"","f_header_font_line_height":"","f_header_font_style":"","f_header_font_weight":"","f_header_font_spacing":"","f_header_":"","f_ajax_font_title":"Ajax categories","f_ajax_font_settings":"","f_ajax_font_family":"","f_ajax_font_size":"","f_ajax_font_line_height":"","f_ajax_font_style":"","f_ajax_font_weight":"","f_ajax_font_transform":"","f_ajax_font_spacing":"","f_ajax_":"","f_more_font_title":"Load more button","f_more_font_settings":"","f_more_font_family":"","f_more_font_size":"","f_more_font_line_height":"","f_more_font_style":"","f_more_font_weight":"","f_more_font_transform":"","f_more_font_spacing":"","f_more_":"","f_title_font_header":"","f_title_font_title":"Article title","f_title_font_settings":"","f_title_font_family":"","f_title_font_style":"","f_title_font_transform":"","f_title_font_spacing":"","f_title_":"","f_cat_font_title":"Article category tag","f_cat_font_settings":"","f_cat_font_family":"","f_cat_font_size":"","f_cat_font_line_height":"","f_cat_font_style":"","f_cat_font_weight":"","f_cat_font_transform":"","f_cat_font_spacing":"","f_cat_":"","f_meta_font_title":"Article meta info","f_meta_font_settings":"","f_meta_font_family":"","f_meta_font_size":"","f_meta_font_line_height":"","f_meta_font_style":"","f_meta_font_weight":"","f_meta_font_transform":"","f_meta_font_spacing":"","f_meta_":"","f_ex_font_title":"Article excerpt","f_ex_font_settings":"","f_ex_font_family":"","f_ex_font_size":"","f_ex_font_line_height":"","f_ex_font_style":"","f_ex_font_weight":"","f_ex_font_transform":"","f_ex_font_spacing":"","f_ex_":"","f_btn_font_title":"Article read more button","f_btn_font_settings":"","f_btn_font_family":"","f_btn_font_size":"","f_btn_font_line_height":"","f_btn_font_style":"","f_btn_font_weight":"","f_btn_font_transform":"","f_btn_font_spacing":"","f_btn_":"","mix_color":"","mix_type":"","fe_brightness":"1","fe_contrast":"1","fe_saturate":"1","mix_color_h":"","mix_type_h":"","fe_brightness_h":"1","fe_contrast_h":"1","fe_saturate_h":"1","m_bg":"","color_overlay":"","shadow_shadow_header":"","shadow_shadow_title":"Module Shadow","shadow_shadow_size":"","shadow_shadow_offset_horizontal":"","shadow_shadow_offset_vertical":"","shadow_shadow_spread":"","shadow_shadow_color":"","title_txt":"","title_txt_hover":"","all_underline_height":"","all_underline_color":"","cat_bg":"","cat_bg_hover":"","cat_txt":"","cat_txt_hover":"","cat_border":"","cat_border_hover":"","meta_bg":"","author_txt":"","author_txt_hover":"","date_txt":"","ex_txt":"","com_bg":"","com_txt":"","rev_txt":"","audio_btn_color":"","audio_time_color":"","audio_bar_color":"","audio_bar_curr_color":"","shadow_m_shadow_header":"","shadow_m_shadow_title":"Meta info shadow","shadow_m_shadow_size":"","shadow_m_shadow_offset_horizontal":"","shadow_m_shadow_offset_vertical":"","shadow_m_shadow_spread":"","shadow_m_shadow_color":"","btn_bg":"","btn_bg_hover":"","btn_txt":"","btn_txt_hover":"","btn_border":"","btn_border_hover":"","pag_text":"","pag_h_text":"","pag_bg":"","pag_h_bg":"","pag_border":"","pag_h_border":"","ajax_pagination_next_prev_swipe":"","ajax_pagination_infinite_stop":"","css":"","tdc_css":"","td_column_number":1,"header_color":"","color_preset":"","border_top":"","class":"tdi_94","tdc_css_class":"tdi_94","tdc_css_class_style":"tdi_94_rand_style"}'; block_tdi_94.td_column_number = "1"; block_tdi_94.block_type = "td_flex_block_1"; block_tdi_94.post_count = "4"; block_tdi_94.found_posts = "12589"; block_tdi_94.header_color = ""; block_tdi_94.ajax_pagination_infinite_stop = ""; block_tdi_94.max_num_pages = "3148"; tdBlocksArray.push(block_tdi_94); Most Popular Facebook doesn’t think hackers accessed third-party sites May 30, 2024 It’s getting a lot harder for global brands to win in China May 30, 2024 Why it’s time for investors to go on the defense May 30, 2024 Facebook doesn’t think hackers accessed third-party sites May 30, 2024 Load more .tdi_95 .recentcomments{margin:0px!important}.tdi_95 .recentcomments{padding:0 0 15px!important;border-bottom-color:#eaeaea}.tdi_95 .td-block-title a,.tdi_95 .td-block-title span{text-transform:uppercase!important}.tdi_95 .comment-author-link span,.tdi_95 .comment-author-link a{font-family:Open Sans!important}.tdi_95 .recentcomments>a:last-child{font-family:Open Sans!important}Recent Comments scam on Why it’s time for investors to go on the defense scam on A concrete example of why Apple’s documentation is terrible scam on Project Mage is an effort to build a power-user environment in Common Lisp scam on What Do I Need to Make It in the World of Business? scam on Photographs of out-of-copyright images are not copyrightable scam on Microdot: Yet Another Python Web Framework scam on Why it’s time for investors to go on the defense scam on Why it’s time for investors to go on the defense scam on Complimentary Decor and Design Advice with Summit Park Estates scam on Pic: Virat Kohli’s Walk On The Beach With Wife Anushka, Daughter Vamika scam on Project Mage is an effort to build a power-user environment in Common Lisp scam on Do open source licences cover the Ship of Theseus? scam on Oven Baked Yummy Pulled Pork for Food Travelers scam on Houthi anti-ship missile systems: getting better all the time scam on Man Agrees to Complete \$50,000 Hereford Lighthouse Paint Job scam on The Google 0-day all Infostealer groups are exploiting scam on Could inflammation be the cause of myriad chronic conditions? (2019) scam on Trade-offs between Different CRDTs scam on Latent Dictionary: 3D map of Oxford3000+search words via DistilBert embeddings scam on Snapdragon Super Chip Mounted on the Latest Photo Cameras scam on A Busy 1979 scam on Pic: Virat Kohli’s Walk On The Beach With Wife Anushka, Daughter Vamika scam on Nigeria: Airlines’ Trapped Funds – Pressure Mounts Despite U.S.\$61 Million Release scam on South Africa: Ex-Spy Boss ‘Lied’ for Millions, Says Agency – South African News Briefs – December 14, 2023 scam on Phoenix 1.7.0 scam on How to improve Python packaging scam on 2023: Year in Review scam on What Do I Need to Make It in the World of Business? scam on Pasta with Caramelised Tomatoes and Yogurt Recipe scam on Ethiopia: Holistic Approach Vital to Ease Ethiopia’s External Debt Stress scam on 1D Pac-Man scam on SEC’s X Account Hacked, Bitcoin Spot ETFs Not yet Approved scam on Angola: Okavango – Zambezi Project Registers Tourists Growth scam on Silicon Valley Guru Affected by the Fulminant Slashed scam on EasyPost (YC S13) Is Hiring scam on Ethiopia: Ethiopia Finalizes Preparations to Welcome, Host Second Generation Ethiopians scam on Trying chDB, an embeddable ClickHouse engine scam on It’s not always DNS – unless it is scam on Japan’s first-ever soft lunar landing with SLIM spacecraft [video] scam on Apple cuts off Beeper Mini’s access scam on Wikihouse: Open-Source Houses scam on Drought impacting traffic in Panama Canal disrupts global trade scam on Replacing WebRTC: real-time latency with WebTransport and WebCodecs scam on Dive: A tool for exploring a Docker image, layer contents and more criminal on Intel Core i9-13900T CPU benchmarks show faster than 12900K 125W performance scam on Angola: Angola Among CNN Travel Top 10 Destinations for 2024 scam on AlphaGeometry: An Olympiad-level AI system for geometry scam on TextDiffuser-2: Unleashing the Power of Language Models for Text Rendering scam on eBPF Networking Techniques – Packet Redirection scam on W4 Games raises \$15M to drive video game development with Godot Engine criminal on A 116kb WASM of Blink that lets you run x86_64 Linux binaries in the browser scam on Ghana: Foreign Affairs Ministry Proposes 544% Increase in Passport Application Fee scam on Even the Pylint codebase uses Ruff scam on From Ruby to Node: Overhauling Shopify’s CLI for a Better Developer Experience scam on Show HN: Whataaabout.com – unique activity ideas for the holiday break criminal on Starlink Successfully Tests Space Direct to Cell Mobile Service scam on Nebula Genomics – First to offer consumer anonymous sequencing scam on End of Life of Technologies and Devices scam on New Action Game Refreshed With a Premium Hi-Fi Sound criminal on US developers can offer non-app store purchasing, Apple still collect commission scam on Our language, our world scam on RISC-V SBC VisionFive 2 Officially Shipped scam on “If It’s PM Modi vs Arvind Kejriwal Or Rahul Gandhi In 2024…”: A Owaisi scam on Do It Yourself Blind Repair scam on Shanghai Fashion Week Highlights: The Shape of Things to Come scam on Rwanda: Where Are Rwanda’s Hot Springs? scam on I Hacked Magic the Gathering: Arena for a 100% Win Rate scam on AlphaFold Found Possible Psychedelics scam on How to Find the Perfect Sunglasses for Your Hair & Face Shape scam on Modern Monochrome Home with Calm and Cosy Terrace and Steps scam on A lowering strategy for control effects in Rust scam on Increasing customer purchases at farmers markets using POS scanner data scam on Fake it until you automate it scam on Have a look around this bold and colourful 1930s semi in London scam on Fake Trees: Using Indents for Simpler UIs scam on Taina Blue Retreat is a Converted Tower on the Greek Coast scam on Building an e-ink picture frame that displays an iCloud photo album scam on The Globus INK: a mechanical navigation computer for Soviet spaceflight scam on Sony debuts first PS5 controller for disabled gamers scam on Logistic Regression for Image Classification Using OpenCV scam on Teach Yourself Programming in Ten Years (1998) scam on OpenBao – FOSS Fork of HashiCorp Vault scam on Another Big Apartment Project Slated for Broad Ripple Company scam on The Best of Vocal Deep House Chill Out Music Mix 2020 scam on Balkan genomes trace the rise/fall of Roman Empire’s frontier, migrations scam on Show HN: Better Seater: Wedding Seating Chart Optimizer scam on Road Trip from Port Douglas to Cape Tribulation: Stops, Attractions & Tips scam on R-Sport Team: Sebastien Ogier Title Priority Over Teams’ Crown scam on A Busy 1979 scam on Style Spy: Fashion Model Goes Casual in Faux Furr and Plaid scam on In a Moment, Mathematicians Merge Probability and Number Theory scam on The Best Gray Paint – How to Choose the Right Shade for Your Walls scam on Wind-to-Hydrogen Production Reaches Deep Water scam on Standard Ebooks scam on Ethiopia: Holistic Approach Vital to Ease Ethiopia’s External Debt Stress scam on Mathematical Introduction to Deep Learning: Methods, Implementations, and Theory scam on The Flo Control Project (2000) scam on GitHub Actions as a time-sharing supercomputer scam on 1D Pac-Man scam on The Bun Shell scam on The new local data stack: Integrating Dagster, dbt and DuckDB scam on Linear Transformers Are Faster After All scam on Urban Kitchen with Granite Tops, Exposed Bulb Lights and Island scam on Trying chDB, an embeddable ClickHouse engine scam on First look at Microsoft 365 Copilot lose money on Replacing WebRTC: real-time latency with WebTransport and WebCodecs scam on Top 5 Easy Last Minute Fall Table Decorating Ideas to Try Now scam on 3dfx: So powerful it’s kind of ridiculous scam on Discover the Newest Waterproof and Rugged Cameras of 2020 scam on The Top 10 Tech Events that You Don’ Want to Miss this Summer criminal on Did a 1997 merger ruin Boeing? scam on Radio Air Time Marketing: A New Strategy for the Economy scam on Show HN: Heynote – A Dedicated Scratchpad for Developers scam on From Ruby to Node: Overhauling Shopify’s CLI for a Better Developer Experience scam on Making Lenses Practical in Java scam on Lack of sunlight during the day is worse than electric lighting at night scam on Android developers no longer need Windows USB drivers scam on Tips and tricks for securing data when migrating to the cloud scam on My daily driver is older than I thought; it’s positively vintage scam on Launch HN: MagnaPlay (YC W23) – Indie gaming subscription service for PC scam on New Screen Savers: The Show Launched Video into the Stratosphere scam on Encrypting private data and private communications is now an ethical duty scam on Bayesians Moving from Defense to Offense scam on Apache Hudi vs. Delta Lake vs. Apache Iceberg Lakehouse Feature Comparison scam on End of Life of Technologies and Devices scam on A list of Hacker News’s undocumented features and behaviors scam on Immediate Mode GUI Programming scam on Margaret Cavendish: A Polymath Who Scandalized 17th-Century London scam on Intel Core i9-13900T CPU benchmarks show faster than 12900K 125W performance scam on Stable Code 3B: Coding on the Edge scam on Amazon’s Twitch to Cut 500 Employees, About 35% of Staff scam on Ceph: A Journey to 1 TiB/s scam on Modern iOS Navigation Patterns scam on Every billable hour is amateur hour scam on Kenya: Kenya Emerges as South Africa’s Top Tourism Source in Africa scam on 7 watts idle – building a low powered server/NAS on Intel 12th/13th gen scam on Portable Web Documents – An Alternative to PDF Based on HTML5 and Web Standards scam on Conditional Git Configuration scam on Libwa: WhatsApp C Library scam on Lack of sunlight during the day is worse than electric lighting at night scam on The Linux Backdoor Attempt of 2003 (2013) scam on Tips and tricks for securing data when migrating to the cloud scam on The UK is wasting a lot of wind power scam on This Amazing Massage Service for Women is Changing The Game scam on Guerrilla guide to CNC machining, mold making, and resin casting (2015) criminal on Learning eBPF Exploitation scam on Nigeria: Amid High Cost Concern, Ana Spearheads Advocacy for Hajj 2024 Accessibility scam on Luxe Hallway with Chess Table Flooring and Large Rounded Windows scam on Audiophile forum debating which versions of memcpy had the highest sound quality (2013) scam on New Action Game Refreshed With a Premium Hi-Fi Sound scam on As Nepali villages modernize, mokha art is on the verge of disappearing scam on “No inventions; no innovations” A History of US Steel scam on The Google 0-day all Infostealer groups are exploiting scam on RAD Debugger by Epic Games scam on The Best Point and Shoot Camera Phones for your Next Vacation scam on Cells Across the Body Talk to Each Other About Aging scam on Games Nintendo didn’t want you to play: Tengen (2022) scam on Academy of Country Music Awards Hosts this Year’s Fashion Show scam on Why isn’t Bluesky a peer-to-peer network? scam on From Nand to Tetris: Building a Modern Computer from First Principles scam on “Amazonian dark earth” was the work of ancient humans scam on “If It’s PM Modi vs Arvind Kejriwal Or Rahul Gandhi In 2024…”: A Owaisi scam on How to build a submarine and survive [video] scam on Was BASIC that horrible or better? scam on Shanghai Fashion Week Highlights: The Shape of Things to Come lose money on Rwanda: Where Are Rwanda’s Hot Springs? scam on Backlog size is inversely proportional to how often we talk to customers scam on Mypy 1.6 scam on Rwanda: Rubavu – Residents Seek Improved Facilities at Nyamyumba Hot Springs scam on Cisco Knows It’s Routers Are The Fastest Ever for Desktop PCs scam on Text Editor: Data Structures scam on The Dangers of Eating too Much Restaurant Food scam on Fluorite lenses: Corrective capabilities beyond ordinary optical glass scam on Investigating a vanishing BIOS on the Fujitsu Lifebook AH532 scam on Oxlint – written in Rust – 50-100 Times Faster than ESLint criminal on CSS3D Clouds scam on Proenza Schouler Advice to Young Designers: Start Your Own Business scam on Trade-offs between Different CRDTs scam on Mistral: Mixtral of Experts scam on Pixar to undergo 20% layoffs in 2024 scam on Victorian Glass Fire Grenades criminal on Google announces update to unlock Stadia controllers to work with other devices scam on Show HN: A Who is Hiring app with AI filters scam on “Don’t Think He Can Do That Again”: Rauf Opens Up On Kohli’s T20 WC Six scam on What Do I Need to Make It in the World of Business? scam on Maths and science animations scam on Why Don’t the Top Fashion Designers Wear Their Own Clothes? scam on Email Validation Logic is Wrong (2021) scam on Computer Engineering for Babies (2021) scam on NASA’s plan to “swarm” Proxima Centauri with tiny probes lose money on Whipper: Accurate Audio CD Ripping scam on Losing my son – Lars Doucet scam on Trying chDB, an embeddable ClickHouse engine criminal on Second Life UPS Mark II scam on Taking the derivative of an algebraic data type [pdf] scam on Houthi anti-ship missile systems: getting better all the time scam on ‘Magical’ Error Correction Scheme Proved Inherently Inefficient scam on Margaret Cavendish: A Polymath Who Scandalized 17th-Century London scam on Dive: A tool for exploring a Docker image, layer contents and more scam on W4 Games raises \$15M to drive video game development with Godot Engine scam on Apple won’t let you use an Apple TV unless you have another Apple device lose money on Cisco to Acquire Cloud Native Networking and Security Leader Isovalent scam on How Nancy Reagan Gave Glamour and Class to the White House scam on Workout Routine for Big Forearms and a Crushing Grip scam on Duolingo Cuts 10% of Contractors as It Uses More AI to Create App Content scam on Libwa: WhatsApp C Library scam on This Amazing Girl Is on Top of The Emerging Fashion Empire scam on Lack of sunlight during the day is worse than electric lighting at night scam on Multiple microprocessors as a single CPU (not multiprocessing) scam on Innovation of the Year: BYD Blade Battery scam on GitHub Is Down scam on The Biggest Mistakes Influencers Make on Instagram scam on CCC Invites to the 37th Chaos Communication Congress in Hamburg 8xbet on The dark side of the Mac App Store scam on Reindeer Sleep and Eat Simultaneously scam on Delhi Colder Than Most Places In Himachal, Uttarakhand For 5th Day In Row scam on U.S. National Park Service API scam on Sys.monitoring: Python Execution event monitoring scam on Reverse Engineering an LCD Display scam on Was BASIC that horrible or better? scam on 7.1M miles, 3 minor injuries: Waymo’s safety data looks good scam on I Hacked Magic the Gathering: Arena for a 100% Win Rate scam on Hobbes OS/2 Archive: As of April 15th, 2024 this site will no longer exist scam on Spring Fashion Show at the University of Michigan Has Started scam on Show HN: Scan QR codes to check-in guests registered via Google Forms™ scam on Unpacking the Benefits of Zero Trust Architecture as Defined by NIST lose money on Interior Designer and Maude Interiors by Yvonne Designs scam on Eclipse: The Demo that Sold 3D to Nintendo scam on The Dangers of Eating too Much Restaurant Food scam on MakeMake: Generate make files from C source code scam on The drive stats of Backblaze storage pods scam on NanoGPT scam on InVision design collaboration services shutdown scam on The Invisible Screen – An E-Paper Smart Display scam on Proenza Schouler Advice to Young Designers: Start Your Own Business scam on ScummVM on the App Store scam on Heat pumps of the 1800s are becoming the technology of the future scam on Pic: Virat Kohli’s Walk On The Beach With Wife Anushka, Daughter Vamika scam on AdaptNet: Policy Adaptation for Physics-Based Character Control scam on Signs that it’s time to leave a company scam on AsmBB – a lightweight web forum engine written in assembly language scam on How To Use Basic Design Principles To Decorate Your Home scam on Designer Fashion Show Kicks off with Great Success at Variety scam on Japan to crack down on Apple and Google app store monopolies scam on Flaubert’s letters are as hilarious and humane as his best fiction scam on How virtualisation came to Apple Silicon Macs scam on Swedish union declares strike for Tesla employees scam on Particle Life scam on Against risk-based authentication (or, why I wouldn’t trust Google Cloud) scam on Cormac McCarthy has died scam on KTM Marchetti Signs with Larranaga and Zanotti for Next Season scam on Watch Free Online Documentaries scam on Show HN: How do you OCR on a Mac using the CLI or just Python for free scam on Guerrilla guide to CNC machining, mold making, and resin casting (2015) scam on After Effects Guru: Tracking and Stabilizing Footage scam on What to Wear on Gala Night? We Asked the Biggest Names! scam on Wakamai Fondue, the tool that answers the question “what can my font do?” scam on A list of Hacker News’s undocumented features and behaviors scam on Snowcraft – Building a Lego Snowfort from giant Lego snow-bricks scam on Oven Baked Yummy Pulled Pork for Food Travelers scam on US developers can offer non-app store purchasing, Apple still collect commission 8xbet on The dark side of the Mac App Store 8xbet on The dark side of the Mac App Store 8xbet on The dark side of the Mac App Store 8xbet on The dark side of the Mac App Store criminal on Interesting double-poly latches inside AMD’s vintage LANCE Ethernet chip scam on Games Nintendo didn’t want you to play: Tengen (2022) scam on Our language, our world porn on Attack of the Week: Airdrop Tracing scam on C and C++ Hot-Reload/Live Coding criminal on Mind Your Own Business Act of 2021 scam on Academy of Country Music Awards Hosts this Year’s Fashion Show scam on Kramdown-man: A Kramdown convert for converting Markdown files into man pages scam on Why isn’t Bluesky a peer-to-peer network? scam on From Nand to Tetris: Building a Modern Computer from First Principles scam on “Amazonian dark earth” was the work of ancient humans scam on GPT-3.5 crashes when it thinks about useRalativeImagePath too much scam on RISC-V SBC VisionFive 2 Officially Shipped scam on Maestro: A Linux-compatible kernel in Rust scam on Sys.monitoring: Python Execution event monitoring criminal on “If It’s PM Modi vs Arvind Kejriwal Or Rahul Gandhi In 2024…”: A Owaisi scam on Identity Thieves Bypassed Experian Security to View Credit Reports scam on Introduction to Plan 9 scam on Complimentary Decor and Design Advice with Summit Park Estates scam on How to build a submarine and survive [video] porn on The Eyes Have It (1953) criminal on Neuville Feels Confident He Still Has Upper Hand in Title Fight scam on Expert Advice: The Best Retro Chic Fashion for All Ages porn on Shoelace: A library of web components scam on WordPress News Magazine Charts the Most Chic and Fashionable Women of New York City criminal on Three chips in and Google Tensor is on life support scam on Reverse Engineering an LCD Display scam on Do It Yourself Blind Repair scam on Cloud email services bolster encryption against hackers porn on Laptop with 128-bit Processor, 32GB of RAM and 24MP Front Camera lose money on What’s that touchscreen in my room? porn on Social media companies made \$11B in US ad revenue from minors scam on New theory claims to unite Einstein’s gravity with quantum mechanics scam on GE Vernova announces order of 674 wind turbines, providing 2.4 GW of power scam on Textart.sh porn on Remastering Colin McRae Rally 3 with SilentPatch scam on Ideal Monitor Rotation for Programmers (2021) scam on Shanghai Fashion Week Highlights: The Shape of Things to Come scam on Writing a Profiler in 240 lines of pure Java scam on NRC Certifies First U.S. Small Modular Reactor Design scam on Alpine Linux in the Browser scam on FSRS: A modern, efficient spaced repetition algorithm scam on 7.1M miles, 3 minor injuries: Waymo’s safety data looks good criminal on The Usefulness of a Memory Guides Where the Brain Saves It scam on Fixing Classical Cats: How I Got Tricked by 28-Year-Old Defensive Programming lose money on Rwanda: Where Are Rwanda’s Hot Springs? scam on Hidden Changes in GPT-4, Uncovered scam on Discover a Better Camera for Your YouTube Account criminal on A cab ride I’ll never forget (1999) scam on Own Your Data scam on I Hacked Magic the Gathering: Arena for a 100% Win Rate scam on Makefiles for web work scam on AlphaFold Found Possible Psychedelics scam on Moving my PC into my rack in a 2U case porn on I don’t read web articles anymore, but I read books porn on Possible Meissner effect near room temperature: copper-substituted lead apatite criminal on History of the PDF [pdf] lose money on Bluesky has launched RSS feeds criminal on High-Speed Large Language Model Serving on PCs with Consumer-Grade GPUs scam on The Ultimate Exercises to Improve Back Muscles lose money on Hobbes OS/2 Archive: As of April 15th, 2024 this site will no longer exist porn on Spring Fashion Show at the University of Michigan Has Started scam on Reverse-engineering an airspeed/Mach indicator from 1977 scam on ‘Terminator’ 1 and 2 Save Their Reveals for the Right Time porn on Archaeologists Unearth 3k-Year-Old Wishing Well in Germany scam on How to Find the Perfect Sunglasses for Your Hair & Face Shape scam on Kenya: Kenya Emerges as South Africa’s Top Tourism Source in Africa scam on How to make LLMs go fast scam on Niklaus Wirth has died scam on Modern Monochrome Home with Calm and Cosy Terrace and Steps porn on Backlog size is inversely proportional to how often we talk to customers scam on On leading underscores and names reserved by the C and C++ languages scam on 4B If Statements criminal on Watch: Amruta Fadnavis Grooves To Her New Single ‘Mood Banaleya’ scam on JupyterLab 4.0 scam on Launch HN: Outerbase (YC W23) – A new UI and editor for your database lose money on Black Triangles (2014) scam on Mypy 1.6 lose money on Approximate Nearest Neighbor Oh Yeah (Annoy) scam on A lowering strategy for control effects in Rust scam on How to Run Hackathons in 2024 scam on Teens from Local School Amaze as Runway Models at DisArt Show scam on BuzzFeed Home scam on DIY Raspberry / Orange Pi NAS That Looks Like a NAS – 2023 Edition scam on Woman with rectifier and electric car (1912) scam on Kenya: Kenya Emerges as South Africa’s Top Tourism Source in Africa lose money on iPhone Offers Three Cameras and Brilliand Oled Display for All scam on Unpacking the Benefits of Zero Trust Architecture as Defined by NIST scam on Increasing customer purchases at farmers markets using POS scanner data scam on Fake it until you automate it scam on Emacs-copilot: Large language model code completion for Emacs scam on Hertz to sell 20k EVs in shift back to gas-powered cars scam on Yahoo News – Latest News & Headlines scam on Have a look around this bold and colourful 1930s semi in London lose money on Interior Designer and Maude Interiors by Yvonne Designs scam on 10 Ways to Make Some Consistent Extra Money as a Intrior Designer lose money on Ancient Stars Made Extraordinarily Heavy Elements (2023) scam on Fake Trees: Using Indents for Simpler UIs lose money on McDonald’s just dropped a brand new Game Boy game scam on Rwanda: Rubavu – Residents Seek Improved Facilities at Nyamyumba Hot Springs lose money on Lode Runner (HTML5 Remake) lose money on Taina Blue Retreat is a Converted Tower on the Greek Coast scam on Egypt: Egypt Eyes More Archaeological Site Investment to Enhance Tourist Experience scam on Cisco Knows It’s Routers Are The Fastest Ever for Desktop PCs criminal on Tanzania: ‘Hunted Largest Crocodile to Promote Tourism’ scam on Splatter Image: Ultra-Fast Single-View 3D Reconstruction scam on Shop The Best Street Style From Paris Fashion Week Shows scam on Stellarium: Software which renders realistic skies in real time scam on Reflecting on 18 Years at Google scam on Outdoor Kitchen Decorating: Furnish and Accessorize with Flair criminal on Dave Williams Defeated in Spectacular Motorcross Final porn on Text Editor: Data Structures porn on Reverse engineering a neural network’s clever solution to binary addition lose money on Building an e-ink picture frame that displays an iCloud photo album porn on Vint Cerf is accumulating Dave Mills stories scam on A battery has replaced Hawaii’s last coal plant lose money on Photographs of out-of-copyright images are not copyrightable criminal on Increase your Endurance Through the Pilates Method scam on Mozilla sccache: ccache with cloud storage scam on Decker – A HyperCard Replacement scam on Eclipse: The Demo that Sold 3D to Nintendo scam on The Globus INK: a mechanical navigation computer for Soviet spaceflight scam on “First do it, then do it right, then do it better.” scam on Making the web fun again (2013) scam on Save A Life. Donate A Blanket scam on Sony debuts first PS5 controller for disabled gamers scam on U.S. Automakers Respond to the Coronavirus Pandemic scam on Doola a “Business-in-a-Box” for LLCs (YC S20) Is Hiring a Data Analyst (Remote) porn on Decompilation of Paper Mario for N64 scam on UK announces commercial operations of longest land/subsea interconnector scam on How fast are Linux pipes anyway? (2022) scam on MakeMake: Generate make files from C source code scam on Ethiopia: From Spotlight to the Shadows: Ethiopia’s Tourism Odyssey Hangs in the Balance scam on Fluorite lenses: Corrective capabilities beyond ordinary optical glass scam on John Michell: Country Parson Described Black Holes in 1783 (2000) scam on Show HN: Anytype – local-first, P2P knowledge management scam on Now Is the Time to Think About Your Small-Business Success scam on Executives at eBay sent live spiders and cockroaches to critical bloggers criminal on Logistic Regression for Image Classification Using OpenCV porn on Low-cost open source device can measure air pollution anywhere criminal on Teach Yourself Programming in Ten Years (1998) criminal on The Usefulness of Useless Knowledge [pdf] scam on Epigrams in Programming scam on Original Sling’n’shoot Worms Game porn on Aim, fire, scan: the 80/20 of executing on big projects criminal on The McMurdo Webcams scam on OpenVoice: Versatile Instant Voice Cloning scam on Nigeria: Flight Delays, Cancellations Worsen As NCAA Pleads With Passengers scam on Fyre Festival Insight – Exclusive Interview with Ja Rule criminal on Investigating a vanishing BIOS on the Fujitsu Lifebook AH532 lose money on Suno AI porn on OpenBao – FOSS Fork of HashiCorp Vault scam on Tanzania: Wildlife Policy, Anti-Poaching Plan Launched to Boost Tourism scam on Game Changing Virtual Reality Console Hits the Market criminal on Inside the Steam Deck’s APU criminal on The drive stats of Backblaze storage pods scam on Five years of indie hacking scam on Could inflammation be the cause of myriad chronic conditions? (2019) scam on Vector Databases: A Technical Primer [pdf] scam on Another Big Apartment Project Slated for Broad Ripple Company scam on NanoGPT porn on Tanzania: ‘Hunted Largest Crocodile to Promote Tourism’ lose money on The Best of Vocal Deep House Chill Out Music Mix 2020 scam on Theft At Delhi Car Horror Victim’s Home, Family Allege Friend’s Role criminal on Oxlint – written in Rust – 50-100 Times Faster than ESLint scam on Discover the Most Magical Sunset in Santorini porn on Open source hospital price database scam on Web AI Model Testing: WebGPU, WebGL, and Headless Chrome scam on Balkan genomes trace the rise/fall of Roman Empire’s frontier, migrations scam on InVision design collaboration services shutdown porn on Best Things You Can Do on a Solo Mountain Climb scam on JEP Draft: Deprecate memory-access methods in sun.misc.unsafe for removal scam on Style Magazine Removes Its Rule About Running Woman Only Covers scam on CSS3D Clouds scam on Golang’s best-kept secret: ‘executable examples’ scam on Contra Wirecutter on the IKEA air purifier (2022) scam on The step-by-step logic of old pinball machines [video] lose money on Trust-Based Moderation Systems scam on Everyone Should Travel for Their Favorite Foods scam on Tanzania: ‘Hunted Largest Crocodile to Promote Tourism’ scam on Marriage rules in Minoan Crete revealed by ancient DNA analysis scam on Trade-offs between Different CRDTs scam on Road Trip from Port Douglas to Cape Tribulation: Stops, Attractions & Tips scam on Leonardo da Vinci’s experiments explored gravity as a form of acceleration scam on Complexity theory’s 50-year journey to the limits of knowledge porn on R-Sport Team: Sebastien Ogier Title Priority Over Teams’ Crown scam on A* tricks for videogame path finding scam on We migrated our PostgreSQL database with 11 seconds downtime porn on The Omnichord will be re-produced to commemorate our 70th anniversary scam on Conway’s Game of Life: Mathematics and Construction scam on Mistral: Mixtral of Experts scam on NIST Elliptic Curves Seeds Bounty scam on Removing data transfer fees when moving off Google Cloud scam on Making small games, which is fun in itself scam on Flooring – Everything You Need to Know About Fitting and Cleaning scam on ScummVM on the App Store scam on Tanzania: ‘Hunted Largest Crocodile to Promote Tourism’ scam on Etleap (YC W13) Is Hiring a Software Engineer (London or San Francisco) scam on Recent 2022 cyberattacks presage a rocky 2023 lose money on Snapdragon Super Chip Mounted on the Latest Photo Cameras scam on Major Deep New Release: Feelings Power Deep House Mix criminal on Timeline to remove DSA support in OpenSSH lose money on Palantir CEO Rejects Calls to Pause AI Development scam on Microsoft Band Review Roundup: What Makes this Phone Stand Out? scam on A Busy 1979 lose money on Pixar to undergo 20% layoffs in 2024 scam on Style Spy: Fashion Model Goes Casual in Faux Furr and Plaid scam on Jody’s True Story of Saddleback’s Suicide Mountain Biking Race criminal on Show HN: Alpaca.cpp – Run an Instruction-Tuned Chat-Style LLM on a MacBook porn on Pic: Virat Kohli’s Walk On The Beach With Wife Anushka, Daughter Vamika scam on YouTube has become the world’s nanny criminal on Arno A. Penzias, 90, Dies; Nobel Physicist Confirmed Big Bang Theory scam on Brainstorm Questions Not Ideas scam on Wokwi – Simulate IoT Projects in the Browser scam on Video Receipes: How to Make a Perfect Caffe Macchiato criminal on AdaptNet: Policy Adaptation for Physics-Based Character Control scam on Signs that it’s time to leave a company porn on AsmBB – a lightweight web forum engine written in assembly language lose money on Templ: A language for writing HTML user interfaces in Go scam on Examples of floating point problems porn on Formally modeled Dreidel for no good reason scam on Long context prompting for Claude 2.1 scam on Victorian Glass Fire Grenades scam on In a Moment, Mathematicians Merge Probability and Number Theory porn on How To Use Basic Design Principles To Decorate Your Home CarlosTreat on The Alien Grave of Aurora, Texas Marilou Didomizio on McDonald’s just dropped a brand new Game Boy game Charis Axline on McDonald’s just dropped a brand new Game Boy game goltogel on Small business owners say they’re pressured to hire off-duty cops for security linetogel on Wind-to-Hydrogen Production Reaches Deep Water goltogel on Wind-to-Hydrogen Production Reaches Deep Water MelbetcomEt on Writing a Profiler in 240 lines of pure Java Puravive on LLM spews nonsense in CVE report for curl rempmail on Libwa: WhatsApp C Library fakemeial on Most states start school too early in the morning weight loss gummies on Show HN: Better Seater: Wedding Seating Chart Optimizer Puravive on C and C++ Hot-Reload/Live Coding weight loss gummies that actually work on Libwa: WhatsApp C Library Charity Gear on McDonald’s just dropped a brand new Game Boy game Charlie Davids on McDonald’s just dropped a brand new Game Boy game Esther Klaers on McDonald’s just dropped a brand new Game Boy game Puravive on Niklaus Wirth has died Puravive on Show HN: FrameOS – operating system for single function smart frames weight loss gummies that actually work on Show HN: A Who is Hiring app with AI filters Puravive on 1D Pac-Man keto gummies for weight loss reviews on A* tricks for videogame path finding weight loss gummies review on Mathematical Introduction to Deep Learning: Methods, Implementations, and Theory review of alpilean on “First do it, then do it right, then do it better.” alpilean weight loss reviews amazon on LLM spews nonsense in CVE report for curl what is in alpilean on Show HN: How do you OCR on a Mac using the CLI or just Python for free dr oz weight loss gummies on Introduction to Plan 9 weight loss keto gummies on “First do it, then do it right, then do it better.” weight loss keto gummies on Mathematical Introduction to Deep Learning: Methods, Implementations, and Theory Zyn Male Enhancement pill on Threads.net is the new app.net but with ads and interoperable Zyn Male Enhancement Ingredient on DARPA Triage Challenge Charlee Mccall on YouTube has become the world’s nanny Tree Mail on Woman with rectifier and electric car (1912) Tree Mail on PyPy has moved to Git, GitHub Tree Mail on Interesting double-poly latches inside AMD’s vintage LANCE Ethernet chip Tree Mail on PyPy has moved to Git, GitHub Tree Mail on I forked SteamOS for my living room PC Tree Mail on DARPA Triage Challenge Zyn Male Enhancement Ingredient on DARPA Triage Challenge Tree Mail on OpenVoice: Versatile Instant Voice Cloning Tree Mail on Logistic Regression for Image Classification Using OpenCV Disposable Email on Standard Ebooks Revive CBD on ‘Suicide pod’ is completely legal and approved for use in Switzerland Disposable Email on I forked SteamOS for my living room PC Disposable Temporary Email on The art of high performance computing Zyn Male Enhancement pill on Interesting double-poly latches inside AMD’s vintage LANCE Ethernet chip Disposable Temporary Email on Logistic Regression for Image Classification Using OpenCV Fake Temp Mail on The art of high performance computing Fake Mail on Threads.net is the new app.net but with ads and interoperable Mail Tm on I forked SteamOS for my living room PC Temp eMail on The Google 0-day all Infostealer groups are exploiting Free Temp Mail on The Google 0-day all Infostealer groups are exploiting Temp Mail on I forked SteamOS for my living room PC Zyn Male Enhancement Price on The art of high performance computing Mail Tm on UK announces commercial operations of longest land/subsea interconnector Tree Mail on Hidden gems of moreutils Restore CBD Gummies Review on The Linux Backdoor Attempt of 2003 (2013) Tree Mail on Original Sling’n’shoot Worms Game Where To buy Restore CBD Gummies on Original Sling’n’shoot Worms Game Restore CBD Gummies Reviews on Increasing customer purchases at farmers markets using POS scanner data Restore CBD Gummies Review on Ideal Monitor Rotation for Programmers (2021) Restore CBD Gummies on “No inventions; no innovations” A History of US Steel Temp Gmail on Amazon receives FDA warning letter for supplements with undeclared ingredients Restore CBD Gummies Reviews on How the append-only btree works yasirelectronic on 4B If Statements Temp YahooMail on Show HN: Scan QR codes to check-in guests registered via Google Forms™ Temp Gmail on Black Triangles (2014) Vision Premium on 2023 Medley Interlisp Project Annual Report Vision Premium on Show HN: Whataaabout.com – unique activity ideas for the holiday break viglug.org on Phoenix 1.7.0 Jaylin Arnold on YouTube has become the world’s nanny Renew Calm CBD on Lack of sunlight during the day is worse than electric lighting at night bahis siteleri child porn on Reflecting on 18 Years at Google anal siteleri on Reflecting on 18 Years at Google bahis siteleri incest category on Reflecting on 18 Years at Google puravive supplement on Bayesians Moving from Defense to Offense puravive on The mystery of the mimic plant (2022) puravive capsules on The Johnson Solids (2019) Brendon Reinartz on McDonald’s just dropped a brand new Game Boy game Susie Busk on McDonald’s just dropped a brand new Game Boy game how to lose weight on Epigrams in Programming puravive weight loss review on Putting the “J” in the RPG, Part 3: Playing Final Fantasy VII Giuseppe Arbolida on McDonald’s just dropped a brand new Game Boy game Kassie Belon on McDonald’s just dropped a brand new Game Boy game Fake Temp Mail on Epigrams in Programming Fake Temp Mail on Epigrams in Programming Renew Calm CBD Gummies Benefits on Rest in Peace, Optane Temp eMail on Endurain: Self-hosted Strava like service Fake Mail on TextDiffuser-2: Unleashing the Power of Language Models for Text Rendering VigorVita CBD Gummies on Understanding every byte in a WASM module Vigor Vita CBD Gummies on Was BASIC that horrible or better? Temp Mail on Was BASIC that horrible or better? Tm Mail on It’s not always DNS – unless it is Temp eMail on Trying chDB, an embeddable ClickHouse engine Tm Mail on Splatter Image: Ultra-Fast Single-View 3D Reconstruction temporary email generator on OneSignal (YC S11) Is Hiring Engineers for It’s SMS Platform Team Blue Burn Keto on Rest in Peace, Optane time to mail on An Interactive Guide to the Fourier Transform tmp email on Pipe Dreams: The life and times of Yahoo Pipes temp emial on Multiple microprocessors as a single CPU (not multiprocessing) temp email for discord on OneSignal (YC S11) Is Hiring Engineers for It’s SMS Platform Team gecici mail on Ed(1) mastery is a must for a real Unix person weight loss gummies work on Lack of sunlight during the day is worse than electric lighting at night Felipe Tate on Rest in Peace, Optane Hot Deals on Mistral: Mixtral of Experts Exilean on The diminishing half-life of knowledge Exilean on Fixing Classical Cats: How I Got Tricked by 28-Year-Old Defensive Programming Exilean on \$35 smart calculator for small shops Eliana Kim on Rest in Peace, Optane Healthcare on PysimpleGUI loss weight gummies on Rest in Peace, Optane Massive Health on Games Nintendo didn’t want you to play: Tengen (2022) AlanAmund on Internet search tips Mail Tm on Lack of sunlight during the day is worse than electric lighting at night Fake Mail on New theory claims to unite Einstein’s gravity with quantum mechanics Temp Mail on Rest in Peace, Optane Dodie Acerra on McDonald’s just dropped a brand new Game Boy game breaking cat news on History of the PDF [pdf] Fast_Build_S on Generate RSS feed for any website using CSS selectors Fast_Build_O on Generate RSS feed for any website using CSS selectors the best general blog of 2023 on The Raft Consensus Algorithm Fredianto on Leonardo da Vinci’s experiments explored gravity as a form of acceleration Fast_Build_S on Gboard Hat Version Fast_Build_O on Gboard Hat Version viglug.org on Phoenix 1.7.0 Laila on The Raft Consensus Algorithm ditox on Complexity theory’s 50-year journey to the limits of knowledge scholding on Generate RSS feed for any website using CSS selectors zara on The Globus INK: a mechanical navigation computer for Soviet spaceflight ```
` `
``` ```
``` ```
``` ```
``` var block_tdi_97 = new tdBlock(); block_tdi_97.id = "tdi_97"; block_tdi_97.atts = '{"custom_title":"EDITOR PICKS","limit":3,"sort":"featured","block_type":"td_block_7","separator":"","custom_url":"","block_template_id":"","m6_tl":"","post_ids":"-11236","category_id":"","taxonomies":"","category_ids":"","in_all_terms":"","tag_slug":"","autors_id":"","installed_post_types":"","include_cf_posts":"","exclude_cf_posts":"","popular_by_date":"","linked_posts":"","favourite_only":"","offset":"","open_in_new_window":"","show_modified_date":"","time_ago":"","time_ago_add_txt":"ago","time_ago_txt_pos":"","review_source":"","el_class":"","td_ajax_filter_type":"","td_ajax_filter_ids":"","td_filter_default_txt":"All","td_ajax_preloading":"","f_header_font_header":"","f_header_font_title":"Block header","f_header_font_settings":"","f_header_font_family":"","f_header_font_size":"","f_header_font_line_height":"","f_header_font_style":"","f_header_font_weight":"","f_header_font_transform":"","f_header_font_spacing":"","f_header_":"","f_ajax_font_title":"Ajax categories","f_ajax_font_settings":"","f_ajax_font_family":"","f_ajax_font_size":"","f_ajax_font_line_height":"","f_ajax_font_style":"","f_ajax_font_weight":"","f_ajax_font_transform":"","f_ajax_font_spacing":"","f_ajax_":"","f_more_font_title":"Load more button","f_more_font_settings":"","f_more_font_family":"","f_more_font_size":"","f_more_font_line_height":"","f_more_font_style":"","f_more_font_weight":"","f_more_font_transform":"","f_more_font_spacing":"","f_more_":"","m6f_title_font_header":"","m6f_title_font_title":"Article title","m6f_title_font_settings":"","m6f_title_font_family":"","m6f_title_font_size":"","m6f_title_font_line_height":"","m6f_title_font_style":"","m6f_title_font_weight":"","m6f_title_font_transform":"","m6f_title_font_spacing":"","m6f_title_":"","m6f_cat_font_title":"Article category tag","m6f_cat_font_settings":"","m6f_cat_font_family":"","m6f_cat_font_size":"","m6f_cat_font_line_height":"","m6f_cat_font_style":"","m6f_cat_font_weight":"","m6f_cat_font_transform":"","m6f_cat_font_spacing":"","m6f_cat_":"","m6f_meta_font_title":"Article meta info","m6f_meta_font_settings":"","m6f_meta_font_family":"","m6f_meta_font_size":"","m6f_meta_font_line_height":"","m6f_meta_font_style":"","m6f_meta_font_weight":"","m6f_meta_font_transform":"","m6f_meta_font_spacing":"","m6f_meta_":"","ajax_pagination":"","ajax_pagination_next_prev_swipe":"","ajax_pagination_infinite_stop":"","css":"","tdc_css":"","td_column_number":1,"header_color":"","color_preset":"","border_top":"","class":"tdi_97","tdc_css_class":"tdi_97","tdc_css_class_style":"tdi_97_rand_style"}'; block_tdi_97.td_column_number = "1"; block_tdi_97.block_type = "td_block_7"; block_tdi_97.post_count = "3"; block_tdi_97.found_posts = "15"; block_tdi_97.header_color = ""; block_tdi_97.ajax_pagination_infinite_stop = ""; block_tdi_97.max_num_pages = "5"; tdBlocksArray.push(block_tdi_97); EDITOR PICKS Top Fashion Trends to Look for in Every Important Collection March 13, 2023 Spring Fashion Show at the University of Michigan Has Started March 13, 2023 Top Ten Kitchen Shortcuts for Indian Food Delights March 13, 2023 var block_tdi_98 = new tdBlock(); block_tdi_98.id = "tdi_98"; block_tdi_98.atts = '{"custom_title":"POPULAR POSTS","limit":3,"sort":"popular","block_type":"td_block_7","separator":"","custom_url":"","block_template_id":"","m6_tl":"","post_ids":"-11236","category_id":"","taxonomies":"","category_ids":"","in_all_terms":"","tag_slug":"","autors_id":"","installed_post_types":"","include_cf_posts":"","exclude_cf_posts":"","popular_by_date":"","linked_posts":"","favourite_only":"","offset":"","open_in_new_window":"","show_modified_date":"","time_ago":"","time_ago_add_txt":"ago","time_ago_txt_pos":"","review_source":"","el_class":"","td_ajax_filter_type":"","td_ajax_filter_ids":"","td_filter_default_txt":"All","td_ajax_preloading":"","f_header_font_header":"","f_header_font_title":"Block header","f_header_font_settings":"","f_header_font_family":"","f_header_font_size":"","f_header_font_line_height":"","f_header_font_style":"","f_header_font_weight":"","f_header_font_transform":"","f_header_font_spacing":"","f_header_":"","f_ajax_font_title":"Ajax categories","f_ajax_font_settings":"","f_ajax_font_family":"","f_ajax_font_size":"","f_ajax_font_line_height":"","f_ajax_font_style":"","f_ajax_font_weight":"","f_ajax_font_transform":"","f_ajax_font_spacing":"","f_ajax_":"","f_more_font_title":"Load more button","f_more_font_settings":"","f_more_font_family":"","f_more_font_size":"","f_more_font_line_height":"","f_more_font_style":"","f_more_font_weight":"","f_more_font_transform":"","f_more_font_spacing":"","f_more_":"","m6f_title_font_header":"","m6f_title_font_title":"Article title","m6f_title_font_settings":"","m6f_title_font_family":"","m6f_title_font_size":"","m6f_title_font_line_height":"","m6f_title_font_style":"","m6f_title_font_weight":"","m6f_title_font_transform":"","m6f_title_font_spacing":"","m6f_title_":"","m6f_cat_font_title":"Article category tag","m6f_cat_font_settings":"","m6f_cat_font_family":"","m6f_cat_font_size":"","m6f_cat_font_line_height":"","m6f_cat_font_style":"","m6f_cat_font_weight":"","m6f_cat_font_transform":"","m6f_cat_font_spacing":"","m6f_cat_":"","m6f_meta_font_title":"Article meta info","m6f_meta_font_settings":"","m6f_meta_font_family":"","m6f_meta_font_size":"","m6f_meta_font_line_height":"","m6f_meta_font_style":"","m6f_meta_font_weight":"","m6f_meta_font_transform":"","m6f_meta_font_spacing":"","m6f_meta_":"","ajax_pagination":"","ajax_pagination_next_prev_swipe":"","ajax_pagination_infinite_stop":"","css":"","tdc_css":"","td_column_number":1,"header_color":"","color_preset":"","border_top":"","class":"tdi_98","tdc_css_class":"tdi_98","tdc_css_class_style":"tdi_98_rand_style"}'; block_tdi_98.td_column_number = "1"; block_tdi_98.block_type = "td_block_7"; block_tdi_98.post_count = "3"; block_tdi_98.found_posts = "12578"; block_tdi_98.header_color = ""; block_tdi_98.ajax_pagination_infinite_stop = ""; block_tdi_98.max_num_pages = "4193"; tdBlocksArray.push(block_tdi_98); POPULAR POSTS Reflecting on 18 Years at Google November 23, 2023 Feathered robotic wing paves way for flapping drones January 14, 2023 Gboard Hat Version October 6, 2023 .td_block_popular_categories{padding-bottom:0}POPULAR CATEGORYBusiness7494Technology92Gadgets24Racing20Make it Modern15New Look15Street Fashion15Recipes15 ABOUT USFOLLOW US Facebook Instagram Twitter Vimeo Youtube Home Default Blog Videos var block_tdi_100 = new tdBlock(); block_tdi_100.id = "tdi_100"; block_tdi_100.atts = '{"limit":"5","td_column_number":3,"ajax_pagination":"next_prev","category_id":"235","show_child_cat":30,"td_ajax_filter_type":"td_category_ids_filter","td_ajax_preloading":"","block_type":"td_block_mega_menu","block_template_id":"","header_color":"","ajax_pagination_infinite_stop":"","offset":"","td_filter_default_txt":"","td_ajax_filter_ids":"","el_class":"","color_preset":"","ajax_pagination_next_prev_swipe":"","border_top":"","css":"","tdc_css":"","class":"tdi_100","tdc_css_class":"tdi_100","tdc_css_class_style":"tdi_100_rand_style"}'; block_tdi_100.td_column_number = "3"; block_tdi_100.block_type = "td_block_mega_menu"; block_tdi_100.post_count = "0"; block_tdi_100.found_posts = "0"; block_tdi_100.header_color = ""; block_tdi_100.ajax_pagination_infinite_stop = ""; block_tdi_100.max_num_pages = "0"; tdBlocksArray.push(block_tdi_100); Post Video Features Post Styles Post Gallery Post Ajax Sidebar Review Shortcodes Category Layouts Videos Sports Pages Team Template Contact Contact (Ninja) 404 Template Search Page Tag Page Archive Page Blog WooCommerce Child Menu Sub-child Menu Sub-child Menu Sub-child Menu Sub-child Menu Sub-child Menu Sub-child Menu Sports © ```
``` (function () { var c = document.body.className; c = c.replace(/woocommerce-no-js/, 'woocommerce-js'); document.body.className = c; })(); /* <![CDATA[ */ var wpcf7 = {"api":{"root":"https:\/\/instadsc.in\/index.php\/wp-json\/","namespace":"contact-form-7\/v1"}}; /* ]]> */ /* <![CDATA[ */ var wc_order_attribution = {"params":{"lifetime":1.0e-5,"session":30,"ajaxurl":"https:\/\/instadsc.in\/wp-admin\/admin-ajax.php","prefix":"wc_order_attribution_","allowTracking":"yes"}}; /* ]]> */ /* <![CDATA[ */ wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } ); /* ]]> */ /* <![CDATA[ */ ( function() { var userId = 0; var storageKey = "WP_DATA_USER_" + userId; wp.data .use( wp.data.plugins.persistence, { storageKey: storageKey } ); } )(); /* ]]> */ /* <![CDATA[ */ window.lodash = _.noConflict(); /* ]]> */ /* <![CDATA[ */ wp.apiFetch.use( wp.apiFetch.createRootURLMiddleware( "https://instadsc.in/index.php/wp-json/" ) ); wp.apiFetch.nonceMiddleware = wp.apiFetch.createNonceMiddleware( "286b48b824" ); wp.apiFetch.use( wp.apiFetch.nonceMiddleware ); wp.apiFetch.use( wp.apiFetch.mediaUploadMiddleware ); wp.apiFetch.nonceEndpoint = "https://instadsc.in/wp-admin/admin-ajax.php?action=rest-nonce"; /* ]]> */ /* <![CDATA[ */ var wcSettings = wcSettings || JSON.parse( decodeURIComponent( '%7B%22shippingCostRequiresAddress%22%3Afalse%2C%22adminUrl%22%3A%22https%3A%5C%2F%5C%2Finstadsc.in%5C%2Fwp-admin%5C%2F%22%2C%22countries%22%3A%7B%22AF%22%3A%22Afghanistan%22%2C%22AX%22%3A%22%5Cu00c5land%20Islands%22%2C%22AL%22%3A%22Albania%22%2C%22DZ%22%3A%22Algeria%22%2C%22AS%22%3A%22American%20Samoa%22%2C%22AD%22%3A%22Andorra%22%2C%22AO%22%3A%22Angola%22%2C%22AI%22%3A%22Anguilla%22%2C%22AQ%22%3A%22Antarctica%22%2C%22AG%22%3A%22Antigua%20and%20Barbuda%22%2C%22AR%22%3A%22Argentina%22%2C%22AM%22%3A%22Armenia%22%2C%22AW%22%3A%22Aruba%22%2C%22AU%22%3A%22Australia%22%2C%22AT%22%3A%22Austria%22%2C%22AZ%22%3A%22Azerbaijan%22%2C%22BS%22%3A%22Bahamas%22%2C%22BH%22%3A%22Bahrain%22%2C%22BD%22%3A%22Bangladesh%22%2C%22BB%22%3A%22Barbados%22%2C%22BY%22%3A%22Belarus%22%2C%22PW%22%3A%22Belau%22%2C%22BE%22%3A%22Belgium%22%2C%22BZ%22%3A%22Belize%22%2C%22BJ%22%3A%22Benin%22%2C%22BM%22%3A%22Bermuda%22%2C%22BT%22%3A%22Bhutan%22%2C%22BO%22%3A%22Bolivia%22%2C%22BQ%22%3A%22Bonaire%2C%20Saint%20Eustatius%20and%20Saba%22%2C%22BA%22%3A%22Bosnia%20and%20Herzegovina%22%2C%22BW%22%3A%22Botswana%22%2C%22BV%22%3A%22Bouvet%20Island%22%2C%22BR%22%3A%22Brazil%22%2C%22IO%22%3A%22British%20Indian%20Ocean%20Territory%22%2C%22BN%22%3A%22Brunei%22%2C%22BG%22%3A%22Bulgaria%22%2C%22BF%22%3A%22Burkina%20Faso%22%2C%22BI%22%3A%22Burundi%22%2C%22KH%22%3A%22Cambodia%22%2C%22CM%22%3A%22Cameroon%22%2C%22CA%22%3A%22Canada%22%2C%22CV%22%3A%22Cape%20Verde%22%2C%22KY%22%3A%22Cayman%20Islands%22%2C%22CF%22%3A%22Central%20African%20Republic%22%2C%22TD%22%3A%22Chad%22%2C%22CL%22%3A%22Chile%22%2C%22CN%22%3A%22China%22%2C%22CX%22%3A%22Christmas%20Island%22%2C%22CC%22%3A%22Cocos%20%28Keeling%29%20Islands%22%2C%22CO%22%3A%22Colombia%22%2C%22KM%22%3A%22Comoros%22%2C%22CG%22%3A%22Congo%20%28Brazzaville%29%22%2C%22CD%22%3A%22Congo%20%28Kinshasa%29%22%2C%22CK%22%3A%22Cook%20Islands%22%2C%22CR%22%3A%22Costa%20Rica%22%2C%22HR%22%3A%22Croatia%22%2C%22CU%22%3A%22Cuba%22%2C%22CW%22%3A%22Cura%26ccedil%3Bao%22%2C%22CY%22%3A%22Cyprus%22%2C%22CZ%22%3A%22Czech%20Republic%22%2C%22DK%22%3A%22Denmark%22%2C%22DJ%22%3A%22Djibouti%22%2C%22DM%22%3A%22Dominica%22%2C%22DO%22%3A%22Dominican%20Republic%22%2C%22EC%22%3A%22Ecuador%22%2C%22EG%22%3A%22Egypt%22%2C%22SV%22%3A%22El%20Salvador%22%2C%22GQ%22%3A%22Equatorial%20Guinea%22%2C%22ER%22%3A%22Eritrea%22%2C%22EE%22%3A%22Estonia%22%2C%22SZ%22%3A%22Eswatini%22%2C%22ET%22%3A%22Ethiopia%22%2C%22FK%22%3A%22Falkland%20Islands%22%2C%22FO%22%3A%22Faroe%20Islands%22%2C%22FJ%22%3A%22Fiji%22%2C%22FI%22%3A%22Finland%22%2C%22FR%22%3A%22France%22%2C%22GF%22%3A%22French%20Guiana%22%2C%22PF%22%3A%22French%20Polynesia%22%2C%22TF%22%3A%22French%20Southern%20Territories%22%2C%22GA%22%3A%22Gabon%22%2C%22GM%22%3A%22Gambia%22%2C%22GE%22%3A%22Georgia%22%2C%22DE%22%3A%22Germany%22%2C%22GH%22%3A%22Ghana%22%2C%22GI%22%3A%22Gibraltar%22%2C%22GR%22%3A%22Greece%22%2C%22GL%22%3A%22Greenland%22%2C%22GD%22%3A%22Grenada%22%2C%22GP%22%3A%22Guadeloupe%22%2C%22GU%22%3A%22Guam%22%2C%22GT%22%3A%22Guatemala%22%2C%22GG%22%3A%22Guernsey%22%2C%22GN%22%3A%22Guinea%22%2C%22GW%22%3A%22Guinea-Bissau%22%2C%22GY%22%3A%22Guyana%22%2C%22HT%22%3A%22Haiti%22%2C%22HM%22%3A%22Heard%20Island%20and%20McDonald%20Islands%22%2C%22HN%22%3A%22Honduras%22%2C%22HK%22%3A%22Hong%20Kong%22%2C%22HU%22%3A%22Hungary%22%2C%22IS%22%3A%22Iceland%22%2C%22IN%22%3A%22India%22%2C%22ID%22%3A%22Indonesia%22%2C%22IR%22%3A%22Iran%22%2C%22IQ%22%3A%22Iraq%22%2C%22IE%22%3A%22Ireland%22%2C%22IM%22%3A%22Isle%20of%20Man%22%2C%22IL%22%3A%22Israel%22%2C%22IT%22%3A%22Italy%22%2C%22CI%22%3A%22Ivory%20Coast%22%2C%22JM%22%3A%22Jamaica%22%2C%22JP%22%3A%22Japan%22%2C%22JE%22%3A%22Jersey%22%2C%22JO%22%3A%22Jordan%22%2C%22KZ%22%3A%22Kazakhstan%22%2C%22KE%22%3A%22Kenya%22%2C%22KI%22%3A%22Kiribati%22%2C%22KW%22%3A%22Kuwait%22%2C%22KG%22%3A%22Kyrgyzstan%22%2C%22LA%22%3A%22Laos%22%2C%22LV%22%3A%22Latvia%22%2C%22LB%22%3A%22Lebanon%22%2C%22LS%22%3A%22Lesotho%22%2C%22LR%22%3A%22Liberia%22%2C%22LY%22%3A%22Libya%22%2C%22LI%22%3A%22Liechtenstein%22%2C%22LT%22%3A%22Lithuania%22%2C%22LU%22%3A%22Luxembourg%22%2C%22MO%22%3A%22Macao%22%2C%22MG%22%3A%22Madagascar%22%2C%22MW%22%3A%22Malawi%22%2C%22MY%22%3A%22Malaysia%22%2C%22MV%22%3A%22Maldives%22%2C%22ML%22%3A%22Mali%22%2C%22MT%22%3A%22Malta%22%2C%22MH%22%3A%22Marshall%20Islands%22%2C%22MQ%22%3A%22Martinique%22%2C%22MR%22%3A%22Mauritania%22%2C%22MU%22%3A%22Mauritius%22%2C%22YT%22%3A%22Mayotte%22%2C%22MX%22%3A%22Mexico%22%2C%22FM%22%3A%22Micronesia%22%2C%22MD%22%3A%22Moldova%22%2C%22MC%22%3A%22Monaco%22%2C%22MN%22%3A%22Mongolia%22%2C%22ME%22%3A%22Montenegro%22%2C%22MS%22%3A%22Montserrat%22%2C%22MA%22%3A%22Morocco%22%2C%22MZ%22%3A%22Mozambique%22%2C%22MM%22%3A%22Myanmar%22%2C%22NA%22%3A%22Namibia%22%2C%22NR%22%3A%22Nauru%22%2C%22NP%22%3A%22Nepal%22%2C%22NL%22%3A%22Netherlands%22%2C%22NC%22%3A%22New%20Caledonia%22%2C%22NZ%22%3A%22New%20Zealand%22%2C%22NI%22%3A%22Nicaragua%22%2C%22NE%22%3A%22Niger%22%2C%22NG%22%3A%22Nigeria%22%2C%22NU%22%3A%22Niue%22%2C%22NF%22%3A%22Norfolk%20Island%22%2C%22KP%22%3A%22North%20Korea%22%2C%22MK%22%3A%22North%20Macedonia%22%2C%22MP%22%3A%22Northern%20Mariana%20Islands%22%2C%22NO%22%3A%22Norway%22%2C%22OM%22%3A%22Oman%22%2C%22PK%22%3A%22Pakistan%22%2C%22PS%22%3A%22Palestinian%20Territory%22%2C%22PA%22%3A%22Panama%22%2C%22PG%22%3A%22Papua%20New%20Guinea%22%2C%22PY%22%3A%22Paraguay%22%2C%22PE%22%3A%22Peru%22%2C%22PH%22%3A%22Philippines%22%2C%22PN%22%3A%22Pitcairn%22%2C%22PL%22%3A%22Poland%22%2C%22PT%22%3A%22Portugal%22%2C%22PR%22%3A%22Puerto%20Rico%22%2C%22QA%22%3A%22Qatar%22%2C%22RE%22%3A%22Reunion%22%2C%22RO%22%3A%22Romania%22%2C%22RU%22%3A%22Russia%22%2C%22RW%22%3A%22Rwanda%22%2C%22ST%22%3A%22S%26atilde%3Bo%20Tom%26eacute%3B%20and%20Pr%26iacute%3Bncipe%22%2C%22BL%22%3A%22Saint%20Barth%26eacute%3Blemy%22%2C%22SH%22%3A%22Saint%20Helena%22%2C%22KN%22%3A%22Saint%20Kitts%20and%20Nevis%22%2C%22LC%22%3A%22Saint%20Lucia%22%2C%22SX%22%3A%22Saint%20Martin%20%28Dutch%20part%29%22%2C%22MF%22%3A%22Saint%20Martin%20%28French%20part%29%22%2C%22PM%22%3A%22Saint%20Pierre%20and%20Miquelon%22%2C%22VC%22%3A%22Saint%20Vincent%20and%20the%20Grenadines%22%2C%22WS%22%3A%22Samoa%22%2C%22SM%22%3A%22San%20Marino%22%2C%22SA%22%3A%22Saudi%20Arabia%22%2C%22SN%22%3A%22Senegal%22%2C%22RS%22%3A%22Serbia%22%2C%22SC%22%3A%22Seychelles%22%2C%22SL%22%3A%22Sierra%20Leone%22%2C%22SG%22%3A%22Singapore%22%2C%22SK%22%3A%22Slovakia%22%2C%22SI%22%3A%22Slovenia%22%2C%22SB%22%3A%22Solomon%20Islands%22%2C%22SO%22%3A%22Somalia%22%2C%22ZA%22%3A%22South%20Africa%22%2C%22GS%22%3A%22South%20Georgia%5C%2FSandwich%20Islands%22%2C%22KR%22%3A%22South%20Korea%22%2C%22SS%22%3A%22South%20Sudan%22%2C%22ES%22%3A%22Spain%22%2C%22LK%22%3A%22Sri%20Lanka%22%2C%22SD%22%3A%22Sudan%22%2C%22SR%22%3A%22Suriname%22%2C%22SJ%22%3A%22Svalbard%20and%20Jan%20Mayen%22%2C%22SE%22%3A%22Sweden%22%2C%22CH%22%3A%22Switzerland%22%2C%22SY%22%3A%22Syria%22%2C%22TW%22%3A%22Taiwan%22%2C%22TJ%22%3A%22Tajikistan%22%2C%22TZ%22%3A%22Tanzania%22%2C%22TH%22%3A%22Thailand%22%2C%22TL%22%3A%22Timor-Leste%22%2C%22TG%22%3A%22Togo%22%2C%22TK%22%3A%22Tokelau%22%2C%22TO%22%3A%22Tonga%22%2C%22TT%22%3A%22Trinidad%20and%20Tobago%22%2C%22TN%22%3A%22Tunisia%22%2C%22TR%22%3A%22Turkey%22%2C%22TM%22%3A%22Turkmenistan%22%2C%22TC%22%3A%22Turks%20and%20Caicos%20Islands%22%2C%22TV%22%3A%22Tuvalu%22%2C%22UG%22%3A%22Uganda%22%2C%22UA%22%3A%22Ukraine%22%2C%22AE%22%3A%22United%20Arab%20Emirates%22%2C%22GB%22%3A%22United%20Kingdom%20%28UK%29%22%2C%22US%22%3A%22United%20States%20%28US%29%22%2C%22UM%22%3A%22United%20States%20%28US%29%20Minor%20Outlying%20Islands%22%2C%22UY%22%3A%22Uruguay%22%2C%22UZ%22%3A%22Uzbekistan%22%2C%22VU%22%3A%22Vanuatu%22%2C%22VA%22%3A%22Vatican%22%2C%22VE%22%3A%22Venezuela%22%2C%22VN%22%3A%22Vietnam%22%2C%22VG%22%3A%22Virgin%20Islands%20%28British%29%22%2C%22VI%22%3A%22Virgin%20Islands%20%28US%29%22%2C%22WF%22%3A%22Wallis%20and%20Futuna%22%2C%22EH%22%3A%22Western%20Sahara%22%2C%22YE%22%3A%22Yemen%22%2C%22ZM%22%3A%22Zambia%22%2C%22ZW%22%3A%22Zimbabwe%22%7D%2C%22currency%22%3A%7B%22code%22%3A%22USD%22%2C%22precision%22%3A2%2C%22symbol%22%3A%22%24%22%2C%22symbolPosition%22%3A%22left%22%2C%22decimalSeparator%22%3A%22.%22%2C%22thousandSeparator%22%3A%22%2C%22%2C%22priceFormat%22%3A%22%251%24s%252%24s%22%7D%2C%22currentUserId%22%3A0%2C%22currentUserIsAdmin%22%3Afalse%2C%22dateFormat%22%3A%22F%20j%2C%20Y%22%2C%22homeUrl%22%3A%22https%3A%5C%2F%5C%2Finstadsc.in%5C%2F%22%2C%22locale%22%3A%7B%22siteLocale%22%3A%22en_US%22%2C%22userLocale%22%3A%22en_US%22%2C%22weekdaysShort%22%3A%5B%22Sun%22%2C%22Mon%22%2C%22Tue%22%2C%22Wed%22%2C%22Thu%22%2C%22Fri%22%2C%22Sat%22%5D%7D%2C%22dashboardUrl%22%3A%22https%3A%5C%2F%5C%2Finstadsc.in%5C%2Findex.php%5C%2Fmy-account%5C%2F%22%2C%22orderStatuses%22%3A%7B%22pending%22%3A%22Pending%20payment%22%2C%22processing%22%3A%22Processing%22%2C%22on-hold%22%3A%22On%20hold%22%2C%22completed%22%3A%22Completed%22%2C%22cancelled%22%3A%22Cancelled%22%2C%22refunded%22%3A%22Refunded%22%2C%22failed%22%3A%22Failed%22%2C%22checkout-draft%22%3A%22Draft%22%7D%2C%22placeholderImgSrc%22%3A%22https%3A%5C%2F%5C%2Finstadsc.in%5C%2Fwp-content%5C%2Fuploads%5C%2Fwoocommerce-placeholder-300x300.png%22%2C%22productsSettings%22%3A%7B%22cartRedirectAfterAdd%22%3Afalse%7D%2C%22siteTitle%22%3A%22instadsc%22%2C%22storePages%22%3A%7B%22myaccount%22%3A%7B%22id%22%3A605%2C%22title%22%3A%22My%20Account%22%2C%22permalink%22%3A%22https%3A%5C%2F%5C%2Finstadsc.in%5C%2Findex.php%5C%2Fmy-account%5C%2F%22%7D%2C%22shop%22%3A%7B%22id%22%3A602%2C%22title%22%3A%22Shop%22%2C%22permalink%22%3A%22https%3A%5C%2F%5C%2Finstadsc.in%5C%2Findex.php%5C%2Fshop%5C%2F%22%7D%2C%22cart%22%3A%7B%22id%22%3A9650%2C%22title%22%3A%22Cart%22%2C%22permalink%22%3A%22https%3A%5C%2F%5C%2Finstadsc.in%5C%2Findex.php%5C%2Fcart-2%5C%2F%22%7D%2C%22checkout%22%3A%7B%22id%22%3A9651%2C%22title%22%3A%22Checkout%22%2C%22permalink%22%3A%22https%3A%5C%2F%5C%2Finstadsc.in%5C%2Findex.php%5C%2Fcheckout-2%5C%2F%22%7D%2C%22privacy%22%3A%7B%22id%22%3A0%2C%22title%22%3A%22%22%2C%22permalink%22%3Afalse%7D%2C%22terms%22%3A%7B%22id%22%3A0%2C%22title%22%3A%22%22%2C%22permalink%22%3Afalse%7D%7D%2C%22wcAssetUrl%22%3A%22https%3A%5C%2F%5C%2Finstadsc.in%5C%2Fwp-content%5C%2Fplugins%5C%2Fwoocommerce%5C%2Fassets%5C%2F%22%2C%22wcVersion%22%3A%228.5.2%22%2C%22wpLoginUrl%22%3A%22https%3A%5C%2F%5C%2Finstadsc.in%5C%2Fwp-login.php%22%2C%22wpVersion%22%3A%226.5.3%22%2C%22collectableMethodIds%22%3A%5B%22pickup_location%22%5D%2C%22admin%22%3A%7B%22wccomHelper%22%3A%7B%22isConnected%22%3Afalse%2C%22connectURL%22%3A%22https%3A%5C%2F%5C%2Finstadsc.in%5C%2Fwp-admin%5C%2Fadmin.php%3Fpage%3Dwc-addons%26section%3Dhelper%26wc-helper-connect%3D1%26wc-helper-nonce%3D669a7bdc97%22%2C%22userEmail%22%3A%22%22%2C%22userAvatar%22%3A%22https%3A%5C%2F%5C%2Fsecure.gravatar.com%5C%2Favatar%5C%2F%3Fs%3D48%26d%3Dmm%26r%3Dg%22%2C%22storeCountry%22%3A%22US%22%2C%22inAppPurchaseURLParams%22%3A%7B%22wccom-site%22%3A%22https%3A%5C%2F%5C%2Finstadsc.in%22%2C%22wccom-back%22%3A%22%252Findex.php%252F2024%252F02%252F19%252Foptimization-example-mandelbrot-set-part-1%252F%22%2C%22wccom-woo-version%22%3A%228.5.2%22%2C%22wccom-connect-nonce%22%3A%22669a7bdc97%22%7D%7D%2C%22_feature_nonce%22%3A%227e6834122f%22%2C%22alertCount%22%3A%220%22%2C%22visibleTaskListIds%22%3A%5B%22setup%22%2C%22extended%22%5D%7D%7D' ) ); /* ]]> */ /* <![CDATA[ */ var wcBlocksMiddlewareConfig = { storeApiNonce: '9a2c5d342b', wcStoreApiNonceTimestamp: '1717084626' }; /* ]]> */ /* <![CDATA[ */ var tds_js_globals = {"wpRestNonce":"286b48b824","wpRestUrl":"https:\/\/instadsc.in\/index.php\/wp-json\/","permalinkStructure":"\/index.php\/%year%\/%monthnum%\/%day%\/%postname%\/"}; /* ]]> */ /* <![CDATA[ */ var megamenu = {"timeout":"300","interval":"100"}; /* ]]> */ /* <![CDATA[ */ window.gtranslateSettings = /* document.write */ window.gtranslateSettings || {};window.gtranslateSettings['52735729'] = {"default_language":"en","languages":["en","hi","kn"],"url_structure":"none","native_language_names":1,"detect_browser_language":1,"flag_style":"2d","flag_size":24,"alt_flags":[],"flags_location":"\/wp-content\/plugins\/gtranslate\/flags\/"}; /* ]]> */ /* <![CDATA[ */ window.gtranslateSettings = /* document.write */ window.gtranslateSettings || {};window.gtranslateSettings['35458085'] = {"default_language":"en","languages":["en","hi","kn"],"url_structure":"none","native_language_names":1,"detect_browser_language":1,"flag_style":"2d","flag_size":24,"wrapper_selector":"#gt-wrapper-35458085","alt_flags":[],"horizontal_position":"right","vertical_position":"top","flags_location":"\/wp-content\/plugins\/gtranslate\/flags\/"}; /* ]]> */ /* global jQuery:{} */ jQuery(document).ready( function () { var tdbMenuItem = new tdbMenu.item(); tdbMenuItem.blockUid = 'tdi_1'; tdbMenuItem.jqueryObj = jQuery('.tdi_1'); tdbMenuItem.blockAtts = '{"mc1_title_tag":"p","main_sub_tdicon":"td-icon-down","sub_tdicon":"td-icon-right-arrow","mm_align_horiz":"content-horiz-center","modules_on_row_regular":"20%","modules_on_row_cats":"25%","image_size":"td_324x400","modules_category":"image","show_excerpt":"none","show_com":"none","show_date":"","show_author":"none","mm_sub_align_horiz":"content-horiz-right","mm_elem_align_horiz":"content-horiz-right","inline":"yes","menu_id":"276","mm_align_screen":"yes","f_elem_font_family":"","f_elem_font_size":"eyJwb3J0cmFpdCI6IjExIn0=","mm_width":"1300","mm_subcats_bg":"#ffffff","mm_elem_border_a":"0 1px 0 0","mm_elem_padd":"eyJhbGwiOiIycHggMjJweCIsInBvcnRyYWl0IjoiMCAxNHB4In0=","mm_sub_padd":"eyJhbGwiOiIxNnB4IDAiLCJwb3J0cmFpdCI6IjE0cHggMCJ9","f_title_font_size":"eyJhbGwiOiIxNSIsImxhbmRzY2FwZSI6IjE0IiwicG9ydHJhaXQiOiIxMyJ9","f_title_font_line_height":"1.2","art_title":"3px 0","f_mm_sub_font_size":"eyJhbGwiOiIxMyIsInBvcnRyYWl0IjoiMTEifQ==","mm_child_cats":"10","mm_elem_border":"0 1px 0 0","mm_height":"eyJhbGwiOiIzNDUiLCJsYW5kc2NhcGUiOiIzMDAiLCJwb3J0cmFpdCI6IjI0MCJ9","mm_sub_width":"eyJsYW5kc2NhcGUiOiIxNjAiLCJwb3J0cmFpdCI6IjE0MCJ9","mm_padd":"eyJwb3J0cmFpdCI6IjE0In0=","modules_gap":"eyJwb3J0cmFpdCI6IjE0In0=","elem_padd":"eyJwb3J0cmFpdCI6IjAgMTJweCJ9","f_elem_font_line_height":"eyJwb3J0cmFpdCI6IjQ4cHgifQ==","video_icon":"eyJwb3J0cmFpdCI6IjI0In0=","all_modules_space":"26","tds_menu_sub_active":"tds_menu_sub_active1","tds_menu_sub_active2-line_color":"","tds_menu_active":"tds_menu_active1","block_type":"tdb_header_menu","show_subcat":"","show_mega":"","show_mega_cats":"","mob_load":"","separator":"","width":"","more":"","float_right":"","align_horiz":"content-horiz-left","elem_space":"","main_sub_icon_size":"","main_sub_icon_space":"","main_sub_icon_align":"-1","sep_tdicon":"","sep_icon_size":"","sep_icon_space":"","sep_icon_align":"-1","more_txt":"","more_tdicon":"","more_icon_size":"","more_icon_align":"0","sub_width":"","sub_first_left":"","sub_rest_top":"","sub_padd":"","sub_align_horiz":"content-horiz-left","sub_elem_inline":"","sub_elem_space":"","sub_elem_padd":"","sub_elem_radius":"0","sub_icon_size":"","sub_icon_space":"","sub_icon_pos":"","sub_icon_align":"1","mm_content_width":"","mm_radius":"","mm_offset":"","mm_posts_limit":"5","mm_subcats_posts_limit":"4","open_in_new_window":"","mm_ajax_preloading":"","mm_hide_all_item":"","mm_sub_border":"","mm_sub_inline":"","mm_elem_order":"name","mm_elem_space":"","mm_elem_border_rad":"","mc1_tl":"","mc1_el":"","m_padding":"","modules_border_size":"","modules_border_style":"","modules_border_color":"#eaeaea","modules_divider":"","modules_divider_color":"#eaeaea","h_effect":"","image_alignment":"50","image_height":"","image_width":"","image_floated":"no_float","image_radius":"","hide_image":"","show_vid_t":"block","vid_t_margin":"","vid_t_padding":"","vid_t_color":"","vid_t_bg_color":"","f_vid_time_font_header":"","f_vid_time_font_title":"Video duration text","f_vid_time_font_settings":"","f_vid_time_font_family":"","f_vid_time_font_size":"","f_vid_time_font_line_height":"","f_vid_time_font_style":"","f_vid_time_font_weight":"","f_vid_time_font_transform":"","f_vid_time_font_spacing":"","f_vid_time_":"","excl_show":"inline-block","excl_txt":"","excl_margin":"","excl_padd":"","all_excl_border":"","all_excl_border_style":"solid","excl_radius":"","excl_color":"","excl_color_h":"","excl_bg":"","excl_bg_h":"","all_excl_border_color":"","excl_border_color_h":"","f_excl_font_header":"","f_excl_font_title":"Label text","f_excl_font_settings":"","f_excl_font_family":"","f_excl_font_size":"","f_excl_font_line_height":"","f_excl_font_style":"","f_excl_font_weight":"","f_excl_font_transform":"","f_excl_font_spacing":"","f_excl_":"","show_audio":"block","hide_audio":"","art_audio":"","art_audio_size":"1","meta_info_align":"","meta_info_horiz":"content-horiz-left","meta_width":"","meta_margin":"","meta_padding":"","meta_info_border_size":"","meta_info_border_style":"","meta_info_border_color":"#eaeaea","modules_category_margin":"","modules_category_padding":"","modules_cat_border":"","modules_category_radius":"0","show_cat":"inline-block","modules_extra_cat":"","author_photo":"","author_photo_size":"","author_photo_space":"","author_photo_radius":"","show_modified_date":"","time_ago":"","time_ago_add_txt":"ago","time_ago_txt_pos":"","art_excerpt":"","excerpt_col":"1","excerpt_gap":"","excerpt_middle":"","show_review":"inline-block","review_space":"","review_size":"2.5","review_distance":"","show_pagination":"","pag_space":"","pag_padding":"","pag_border_width":"","pag_border_radius":"","prev_tdicon":"","next_tdicon":"","pag_icons_size":"","text_color":"","main_sub_color":"","sep_color":"","more_icon_color":"","hover_opacity":"","f_elem_font_header":"","f_elem_font_title":"Elements text","f_elem_font_settings":"","f_elem_font_style":"","f_elem_font_weight":"","f_elem_font_transform":"","f_elem_font_spacing":"","f_elem_":"","sub_bg_color":"","sub_border_size":"","sub_border_color":"","sub_border_radius":"","sub_text_color":"","sub_elem_bg_color":"","sub_color":"","sub_shadow_shadow_header":"","sub_shadow_shadow_title":"Shadow","sub_shadow_shadow_size":"","sub_shadow_shadow_offset_horizontal":"","sub_shadow_shadow_offset_vertical":"","sub_shadow_shadow_spread":"","sub_shadow_shadow_color":"","f_sub_elem_font_header":"","f_sub_elem_font_title":"Elements text","f_sub_elem_font_settings":"","f_sub_elem_font_family":"","f_sub_elem_font_size":"","f_sub_elem_font_line_height":"","f_sub_elem_font_style":"","f_sub_elem_font_weight":"","f_sub_elem_font_transform":"","f_sub_elem_font_spacing":"","f_sub_elem_":"","mm_bg":"","mm_border_size":"","mm_border_color":"","mm_shadow_shadow_header":"","mm_shadow_shadow_title":"Shadow","mm_shadow_shadow_size":"","mm_shadow_shadow_offset_horizontal":"","mm_shadow_shadow_offset_vertical":"","mm_shadow_shadow_spread":"","mm_shadow_shadow_color":"","mm_subcats_border_color":"","mm_elem_color":"","mm_elem_color_a":"","mm_elem_bg":"","mm_elem_bg_a":"","mm_elem_border_color":"","mm_elem_border_color_a":"","mm_elem_shadow_shadow_header":"","mm_elem_shadow_shadow_title":"Elements shadow","mm_elem_shadow_shadow_size":"","mm_elem_shadow_shadow_offset_horizontal":"","mm_elem_shadow_shadow_offset_vertical":"","mm_elem_shadow_shadow_spread":"","mm_elem_shadow_shadow_color":"","f_mm_sub_font_header":"","f_mm_sub_font_title":"Sub categories elements","f_mm_sub_font_settings":"","f_mm_sub_font_family":"","f_mm_sub_font_line_height":"","f_mm_sub_font_style":"","f_mm_sub_font_weight":"","f_mm_sub_font_transform":"","f_mm_sub_font_spacing":"","f_mm_sub_":"","m_bg":"","color_overlay":"","shadow_shadow_header":"","shadow_shadow_title":"Module Shadow","shadow_shadow_size":"","shadow_shadow_offset_horizontal":"","shadow_shadow_offset_vertical":"","shadow_shadow_spread":"","shadow_shadow_color":"","title_txt":"","title_txt_hover":"","all_underline_height":"","all_underline_color":"#000","cat_bg":"","cat_bg_hover":"","cat_txt":"","cat_txt_hover":"","cat_border":"","cat_border_hover":"","meta_bg":"","author_txt":"","author_txt_hover":"","date_txt":"","ex_txt":"","com_bg":"","com_txt":"","rev_txt":"","shadow_m_shadow_header":"","shadow_m_shadow_title":"Meta info shadow","shadow_m_shadow_size":"","shadow_m_shadow_offset_horizontal":"","shadow_m_shadow_offset_vertical":"","shadow_m_shadow_spread":"","shadow_m_shadow_color":"","audio_btn_color":"","audio_time_color":"","audio_bar_color":"","audio_bar_curr_color":"","pag_text":"","pag_h_text":"","pag_bg":"","pag_h_bg":"","pag_border":"","pag_h_border":"","f_title_font_header":"","f_title_font_title":"Article title","f_title_font_settings":"","f_title_font_family":"","f_title_font_style":"","f_title_font_weight":"","f_title_font_transform":"","f_title_font_spacing":"","f_title_":"","f_cat_font_title":"Article category tag","f_cat_font_settings":"","f_cat_font_family":"","f_cat_font_size":"","f_cat_font_line_height":"","f_cat_font_style":"","f_cat_font_weight":"","f_cat_font_transform":"","f_cat_font_spacing":"","f_cat_":"","f_meta_font_title":"Article meta info","f_meta_font_settings":"","f_meta_font_family":"","f_meta_font_size":"","f_meta_font_line_height":"","f_meta_font_style":"","f_meta_font_weight":"","f_meta_font_transform":"","f_meta_font_spacing":"","f_meta_":"","f_ex_font_title":"Article excerpt","f_ex_font_settings":"","f_ex_font_family":"","f_ex_font_size":"","f_ex_font_line_height":"","f_ex_font_style":"","f_ex_font_weight":"","f_ex_font_transform":"","f_ex_font_spacing":"","f_ex_":"","mix_color":"","mix_type":"","fe_brightness":"1","fe_contrast":"1","fe_saturate":"1","mix_color_h":"","mix_type_h":"","fe_brightness_h":"1","fe_contrast_h":"1","fe_saturate_h":"1","el_class":"","tdc_css":"","block_template_id":"","td_column_number":1,"header_color":"","ajax_pagination_infinite_stop":"","offset":"","limit":"5","td_ajax_preloading":"","td_ajax_filter_type":"","td_filter_default_txt":"","td_ajax_filter_ids":"","color_preset":"","ajax_pagination":"","ajax_pagination_next_prev_swipe":"","border_top":"","css":"","class":"tdi_1","tdc_css_class":"tdi_1","tdc_css_class_style":"tdi_1_rand_style"}'; tdbMenuItem.isMegaMenuFull = true; tdbMenuItem.megaMenuLoadType = ''; tdbMenu.addItem(tdbMenuItem); }); /* global jQuery:{} */ jQuery(document).ready( function () { var tdbMenuItem = new tdbMenu.item(); tdbMenuItem.blockUid = 'tdi_16'; tdbMenuItem.jqueryObj = jQuery('.tdi_16'); tdbMenuItem.blockAtts = '{"mc1_title_tag":"p","main_sub_tdicon":"td-icon-down","sub_tdicon":"td-icon-right-arrow","mm_align_horiz":"content-horiz-center","modules_on_row_regular":"20%","modules_on_row_cats":"25%","image_size":"td_324x400","modules_category":"image","show_excerpt":"none","show_com":"none","show_date":"","show_author":"none","mm_sub_align_horiz":"content-horiz-right","mm_elem_align_horiz":"content-horiz-right","inline":"yes","menu_id":"276","mm_align_screen":"yes","f_elem_font_family":"","f_elem_font_size":"eyJwb3J0cmFpdCI6IjExIn0=","mm_width":"1300","mm_subcats_bg":"#ffffff","mm_elem_border_a":"0 1px 0 0","mm_elem_padd":"eyJhbGwiOiIycHggMjJweCIsInBvcnRyYWl0IjoiMCAxNHB4In0=","mm_sub_padd":"eyJhbGwiOiIxNnB4IDAiLCJwb3J0cmFpdCI6IjE0cHggMCJ9","f_title_font_size":"eyJhbGwiOiIxNSIsImxhbmRzY2FwZSI6IjE0IiwicG9ydHJhaXQiOiIxMyJ9","f_title_font_line_height":"1.2","art_title":"3px 0","f_mm_sub_font_size":"eyJhbGwiOiIxMyIsInBvcnRyYWl0IjoiMTEifQ==","mm_child_cats":"10","mm_elem_border":"0 1px 0 0","mm_height":"eyJhbGwiOiIzNDUiLCJsYW5kc2NhcGUiOiIzMDAiLCJwb3J0cmFpdCI6IjI0MCJ9","mm_sub_width":"eyJsYW5kc2NhcGUiOiIxNjAiLCJwb3J0cmFpdCI6IjE0MCJ9","mm_padd":"eyJwb3J0cmFpdCI6IjE0In0=","modules_gap":"eyJwb3J0cmFpdCI6IjE0In0=","elem_padd":"eyJwb3J0cmFpdCI6IjAgMTJweCJ9","f_elem_font_line_height":"eyJwb3J0cmFpdCI6IjQ4cHgifQ==","video_icon":"eyJwb3J0cmFpdCI6IjI0In0=","all_modules_space":"26","tds_menu_sub_active":"tds_menu_sub_active1","tds_menu_sub_active2-line_color":"","block_type":"tdb_header_menu","show_subcat":"","show_mega":"","show_mega_cats":"","mob_load":"","separator":"","width":"","more":"","float_right":"","align_horiz":"content-horiz-left","elem_space":"","main_sub_icon_size":"","main_sub_icon_space":"","main_sub_icon_align":"-1","sep_tdicon":"","sep_icon_size":"","sep_icon_space":"","sep_icon_align":"-1","more_txt":"","more_tdicon":"","more_icon_size":"","more_icon_align":"0","sub_width":"","sub_first_left":"","sub_rest_top":"","sub_padd":"","sub_align_horiz":"content-horiz-left","sub_elem_inline":"","sub_elem_space":"","sub_elem_padd":"","sub_elem_radius":"0","sub_icon_size":"","sub_icon_space":"","sub_icon_pos":"","sub_icon_align":"1","mm_content_width":"","mm_radius":"","mm_offset":"","mm_posts_limit":"5","mm_subcats_posts_limit":"4","open_in_new_window":"","mm_ajax_preloading":"","mm_hide_all_item":"","mm_sub_border":"","mm_sub_inline":"","mm_elem_order":"name","mm_elem_space":"","mm_elem_border_rad":"","mc1_tl":"","mc1_el":"","m_padding":"","modules_border_size":"","modules_border_style":"","modules_border_color":"#eaeaea","modules_divider":"","modules_divider_color":"#eaeaea","h_effect":"","image_alignment":"50","image_height":"","image_width":"","image_floated":"no_float","image_radius":"","hide_image":"","show_vid_t":"block","vid_t_margin":"","vid_t_padding":"","vid_t_color":"","vid_t_bg_color":"","f_vid_time_font_header":"","f_vid_time_font_title":"Video duration text","f_vid_time_font_settings":"","f_vid_time_font_family":"","f_vid_time_font_size":"","f_vid_time_font_line_height":"","f_vid_time_font_style":"","f_vid_time_font_weight":"","f_vid_time_font_transform":"","f_vid_time_font_spacing":"","f_vid_time_":"","excl_show":"inline-block","excl_txt":"","excl_margin":"","excl_padd":"","all_excl_border":"","all_excl_border_style":"solid","excl_radius":"","excl_color":"","excl_color_h":"","excl_bg":"","excl_bg_h":"","all_excl_border_color":"","excl_border_color_h":"","f_excl_font_header":"","f_excl_font_title":"Label text","f_excl_font_settings":"","f_excl_font_family":"","f_excl_font_size":"","f_excl_font_line_height":"","f_excl_font_style":"","f_excl_font_weight":"","f_excl_font_transform":"","f_excl_font_spacing":"","f_excl_":"","show_audio":"block","hide_audio":"","art_audio":"","art_audio_size":"1","meta_info_align":"","meta_info_horiz":"content-horiz-left","meta_width":"","meta_margin":"","meta_padding":"","meta_info_border_size":"","meta_info_border_style":"","meta_info_border_color":"#eaeaea","modules_category_margin":"","modules_category_padding":"","modules_cat_border":"","modules_category_radius":"0","show_cat":"inline-block","modules_extra_cat":"","author_photo":"","author_photo_size":"","author_photo_space":"","author_photo_radius":"","show_modified_date":"","time_ago":"","time_ago_add_txt":"ago","time_ago_txt_pos":"","art_excerpt":"","excerpt_col":"1","excerpt_gap":"","excerpt_middle":"","show_review":"inline-block","review_space":"","review_size":"2.5","review_distance":"","show_pagination":"","pag_space":"","pag_padding":"","pag_border_width":"","pag_border_radius":"","prev_tdicon":"","next_tdicon":"","pag_icons_size":"","text_color":"","main_sub_color":"","sep_color":"","more_icon_color":"","tds_menu_active":"tds_menu_active1","hover_opacity":"","f_elem_font_header":"","f_elem_font_title":"Elements text","f_elem_font_settings":"","f_elem_font_style":"","f_elem_font_weight":"","f_elem_font_transform":"","f_elem_font_spacing":"","f_elem_":"","sub_bg_color":"","sub_border_size":"","sub_border_color":"","sub_border_radius":"","sub_text_color":"","sub_elem_bg_color":"","sub_color":"","sub_shadow_shadow_header":"","sub_shadow_shadow_title":"Shadow","sub_shadow_shadow_size":"","sub_shadow_shadow_offset_horizontal":"","sub_shadow_shadow_offset_vertical":"","sub_shadow_shadow_spread":"","sub_shadow_shadow_color":"","f_sub_elem_font_header":"","f_sub_elem_font_title":"Elements text","f_sub_elem_font_settings":"","f_sub_elem_font_family":"","f_sub_elem_font_size":"","f_sub_elem_font_line_height":"","f_sub_elem_font_style":"","f_sub_elem_font_weight":"","f_sub_elem_font_transform":"","f_sub_elem_font_spacing":"","f_sub_elem_":"","mm_bg":"","mm_border_size":"","mm_border_color":"","mm_shadow_shadow_header":"","mm_shadow_shadow_title":"Shadow","mm_shadow_shadow_size":"","mm_shadow_shadow_offset_horizontal":"","mm_shadow_shadow_offset_vertical":"","mm_shadow_shadow_spread":"","mm_shadow_shadow_color":"","mm_subcats_border_color":"","mm_elem_color":"","mm_elem_color_a":"","mm_elem_bg":"","mm_elem_bg_a":"","mm_elem_border_color":"","mm_elem_border_color_a":"","mm_elem_shadow_shadow_header":"","mm_elem_shadow_shadow_title":"Elements shadow","mm_elem_shadow_shadow_size":"","mm_elem_shadow_shadow_offset_horizontal":"","mm_elem_shadow_shadow_offset_vertical":"","mm_elem_shadow_shadow_spread":"","mm_elem_shadow_shadow_color":"","f_mm_sub_font_header":"","f_mm_sub_font_title":"Sub categories elements","f_mm_sub_font_settings":"","f_mm_sub_font_family":"","f_mm_sub_font_line_height":"","f_mm_sub_font_style":"","f_mm_sub_font_weight":"","f_mm_sub_font_transform":"","f_mm_sub_font_spacing":"","f_mm_sub_":"","m_bg":"","color_overlay":"","shadow_shadow_header":"","shadow_shadow_title":"Module Shadow","shadow_shadow_size":"","shadow_shadow_offset_horizontal":"","shadow_shadow_offset_vertical":"","shadow_shadow_spread":"","shadow_shadow_color":"","title_txt":"","title_txt_hover":"","all_underline_height":"","all_underline_color":"#000","cat_bg":"","cat_bg_hover":"","cat_txt":"","cat_txt_hover":"","cat_border":"","cat_border_hover":"","meta_bg":"","author_txt":"","author_txt_hover":"","date_txt":"","ex_txt":"","com_bg":"","com_txt":"","rev_txt":"","shadow_m_shadow_header":"","shadow_m_shadow_title":"Meta info shadow","shadow_m_shadow_size":"","shadow_m_shadow_offset_horizontal":"","shadow_m_shadow_offset_vertical":"","shadow_m_shadow_spread":"","shadow_m_shadow_color":"","audio_btn_color":"","audio_time_color":"","audio_bar_color":"","audio_bar_curr_color":"","pag_text":"","pag_h_text":"","pag_bg":"","pag_h_bg":"","pag_border":"","pag_h_border":"","f_title_font_header":"","f_title_font_title":"Article title","f_title_font_settings":"","f_title_font_family":"","f_title_font_style":"","f_title_font_weight":"","f_title_font_transform":"","f_title_font_spacing":"","f_title_":"","f_cat_font_title":"Article category tag","f_cat_font_settings":"","f_cat_font_family":"","f_cat_font_size":"","f_cat_font_line_height":"","f_cat_font_style":"","f_cat_font_weight":"","f_cat_font_transform":"","f_cat_font_spacing":"","f_cat_":"","f_meta_font_title":"Article meta info","f_meta_font_settings":"","f_meta_font_family":"","f_meta_font_size":"","f_meta_font_line_height":"","f_meta_font_style":"","f_meta_font_weight":"","f_meta_font_transform":"","f_meta_font_spacing":"","f_meta_":"","f_ex_font_title":"Article excerpt","f_ex_font_settings":"","f_ex_font_family":"","f_ex_font_size":"","f_ex_font_line_height":"","f_ex_font_style":"","f_ex_font_weight":"","f_ex_font_transform":"","f_ex_font_spacing":"","f_ex_":"","mix_color":"","mix_type":"","fe_brightness":"1","fe_contrast":"1","fe_saturate":"1","mix_color_h":"","mix_type_h":"","fe_brightness_h":"1","fe_contrast_h":"1","fe_saturate_h":"1","el_class":"","tdc_css":"","block_template_id":"","td_column_number":1,"header_color":"","ajax_pagination_infinite_stop":"","offset":"","limit":"5","td_ajax_preloading":"","td_ajax_filter_type":"","td_filter_default_txt":"","td_ajax_filter_ids":"","color_preset":"","ajax_pagination":"","ajax_pagination_next_prev_swipe":"","border_top":"","css":"","class":"tdi_16","tdc_css_class":"tdi_16","tdc_css_class_style":"tdi_16_rand_style"}'; tdbMenuItem.isMegaMenuFull = true; tdbMenuItem.megaMenuLoadType = ''; tdbMenu.addItem(tdbMenuItem); }); jQuery().ready(function () { var blockClass = '.tdi_23'; jQuery(blockClass + '.tdb-horiz-menu-singleline > .menu-item-has-children a').click(function (e) { e.preventDefault(); }) }); /* global jQuery:{} */ jQuery(document).ready( function () { var tdbMenuItem = new tdbMenu.item(); tdbMenuItem.blockUid = 'tdi_42'; tdbMenuItem.jqueryObj = jQuery('.tdi_42'); tdbMenuItem.blockAtts = '{"mc1_title_tag":"p","main_sub_tdicon":"td-icon-down","sub_tdicon":"td-icon-right-arrow","mm_align_horiz":"content-horiz-center","modules_on_row_regular":"20%","modules_on_row_cats":"25%","image_size":"td_324x400","modules_category":"image","show_excerpt":"none","show_com":"none","show_date":"","show_author":"none","mm_sub_align_horiz":"content-horiz-right","mm_elem_align_horiz":"content-horiz-right","inline":"yes","menu_id":"276","mm_align_screen":"yes","f_elem_font_family":"","f_elem_font_size":"eyJwb3J0cmFpdCI6IjExIn0=","mm_width":"1300","mm_subcats_bg":"#ffffff","mm_elem_border_a":"0 1px 0 0","mm_elem_padd":"eyJhbGwiOiIycHggMjJweCIsInBvcnRyYWl0IjoiMCAxNHB4In0=","mm_sub_padd":"eyJhbGwiOiIxNnB4IDAiLCJwb3J0cmFpdCI6IjE0cHggMCJ9","f_title_font_size":"eyJhbGwiOiIxNSIsImxhbmRzY2FwZSI6IjE0IiwicG9ydHJhaXQiOiIxMyJ9","f_title_font_line_height":"1.2","art_title":"3px 0","f_mm_sub_font_size":"eyJhbGwiOiIxMyIsInBvcnRyYWl0IjoiMTEifQ==","mm_child_cats":"10","mm_elem_border":"0 1px 0 0","mm_height":"eyJhbGwiOiIzNDUiLCJsYW5kc2NhcGUiOiIzMDAiLCJwb3J0cmFpdCI6IjI0MCJ9","mm_sub_width":"eyJsYW5kc2NhcGUiOiIxNjAiLCJwb3J0cmFpdCI6IjE0MCJ9","mm_padd":"eyJwb3J0cmFpdCI6IjE0In0=","modules_gap":"eyJwb3J0cmFpdCI6IjE0In0=","elem_padd":"eyJwb3J0cmFpdCI6IjAgMTJweCJ9","f_elem_font_line_height":"eyJwb3J0cmFpdCI6IjQ4cHgifQ==","video_icon":"eyJwb3J0cmFpdCI6IjI0In0=","all_modules_space":"26","tds_menu_sub_active":"tds_menu_sub_active1","tds_menu_sub_active2-line_color":"","tds_menu_active":"tds_menu_active1","block_type":"tdb_header_menu","show_subcat":"","show_mega":"","show_mega_cats":"","mob_load":"","separator":"","width":"","more":"","float_right":"","align_horiz":"content-horiz-left","elem_space":"","main_sub_icon_size":"","main_sub_icon_space":"","main_sub_icon_align":"-1","sep_tdicon":"","sep_icon_size":"","sep_icon_space":"","sep_icon_align":"-1","more_txt":"","more_tdicon":"","more_icon_size":"","more_icon_align":"0","sub_width":"","sub_first_left":"","sub_rest_top":"","sub_padd":"","sub_align_horiz":"content-horiz-left","sub_elem_inline":"","sub_elem_space":"","sub_elem_padd":"","sub_elem_radius":"0","sub_icon_size":"","sub_icon_space":"","sub_icon_pos":"","sub_icon_align":"1","mm_content_width":"","mm_radius":"","mm_offset":"","mm_posts_limit":"5","mm_subcats_posts_limit":"4","open_in_new_window":"","mm_ajax_preloading":"","mm_hide_all_item":"","mm_sub_border":"","mm_sub_inline":"","mm_elem_order":"name","mm_elem_space":"","mm_elem_border_rad":"","mc1_tl":"","mc1_el":"","m_padding":"","modules_border_size":"","modules_border_style":"","modules_border_color":"#eaeaea","modules_divider":"","modules_divider_color":"#eaeaea","h_effect":"","image_alignment":"50","image_height":"","image_width":"","image_floated":"no_float","image_radius":"","hide_image":"","show_vid_t":"block","vid_t_margin":"","vid_t_padding":"","vid_t_color":"","vid_t_bg_color":"","f_vid_time_font_header":"","f_vid_time_font_title":"Video duration text","f_vid_time_font_settings":"","f_vid_time_font_family":"","f_vid_time_font_size":"","f_vid_time_font_line_height":"","f_vid_time_font_style":"","f_vid_time_font_weight":"","f_vid_time_font_transform":"","f_vid_time_font_spacing":"","f_vid_time_":"","excl_show":"inline-block","excl_txt":"","excl_margin":"","excl_padd":"","all_excl_border":"","all_excl_border_style":"solid","excl_radius":"","excl_color":"","excl_color_h":"","excl_bg":"","excl_bg_h":"","all_excl_border_color":"","excl_border_color_h":"","f_excl_font_header":"","f_excl_font_title":"Label text","f_excl_font_settings":"","f_excl_font_family":"","f_excl_font_size":"","f_excl_font_line_height":"","f_excl_font_style":"","f_excl_font_weight":"","f_excl_font_transform":"","f_excl_font_spacing":"","f_excl_":"","show_audio":"block","hide_audio":"","art_audio":"","art_audio_size":"1","meta_info_align":"","meta_info_horiz":"content-horiz-left","meta_width":"","meta_margin":"","meta_padding":"","meta_info_border_size":"","meta_info_border_style":"","meta_info_border_color":"#eaeaea","modules_category_margin":"","modules_category_padding":"","modules_cat_border":"","modules_category_radius":"0","show_cat":"inline-block","modules_extra_cat":"","author_photo":"","author_photo_size":"","author_photo_space":"","author_photo_radius":"","show_modified_date":"","time_ago":"","time_ago_add_txt":"ago","time_ago_txt_pos":"","art_excerpt":"","excerpt_col":"1","excerpt_gap":"","excerpt_middle":"","show_review":"inline-block","review_space":"","review_size":"2.5","review_distance":"","show_pagination":"","pag_space":"","pag_padding":"","pag_border_width":"","pag_border_radius":"","prev_tdicon":"","next_tdicon":"","pag_icons_size":"","text_color":"","main_sub_color":"","sep_color":"","more_icon_color":"","hover_opacity":"","f_elem_font_header":"","f_elem_font_title":"Elements text","f_elem_font_settings":"","f_elem_font_style":"","f_elem_font_weight":"","f_elem_font_transform":"","f_elem_font_spacing":"","f_elem_":"","sub_bg_color":"","sub_border_size":"","sub_border_color":"","sub_border_radius":"","sub_text_color":"","sub_elem_bg_color":"","sub_color":"","sub_shadow_shadow_header":"","sub_shadow_shadow_title":"Shadow","sub_shadow_shadow_size":"","sub_shadow_shadow_offset_horizontal":"","sub_shadow_shadow_offset_vertical":"","sub_shadow_shadow_spread":"","sub_shadow_shadow_color":"","f_sub_elem_font_header":"","f_sub_elem_font_title":"Elements text","f_sub_elem_font_settings":"","f_sub_elem_font_family":"","f_sub_elem_font_size":"","f_sub_elem_font_line_height":"","f_sub_elem_font_style":"","f_sub_elem_font_weight":"","f_sub_elem_font_transform":"","f_sub_elem_font_spacing":"","f_sub_elem_":"","mm_bg":"","mm_border_size":"","mm_border_color":"","mm_shadow_shadow_header":"","mm_shadow_shadow_title":"Shadow","mm_shadow_shadow_size":"","mm_shadow_shadow_offset_horizontal":"","mm_shadow_shadow_offset_vertical":"","mm_shadow_shadow_spread":"","mm_shadow_shadow_color":"","mm_subcats_border_color":"","mm_elem_color":"","mm_elem_color_a":"","mm_elem_bg":"","mm_elem_bg_a":"","mm_elem_border_color":"","mm_elem_border_color_a":"","mm_elem_shadow_shadow_header":"","mm_elem_shadow_shadow_title":"Elements shadow","mm_elem_shadow_shadow_size":"","mm_elem_shadow_shadow_offset_horizontal":"","mm_elem_shadow_shadow_offset_vertical":"","mm_elem_shadow_shadow_spread":"","mm_elem_shadow_shadow_color":"","f_mm_sub_font_header":"","f_mm_sub_font_title":"Sub categories elements","f_mm_sub_font_settings":"","f_mm_sub_font_family":"","f_mm_sub_font_line_height":"","f_mm_sub_font_style":"","f_mm_sub_font_weight":"","f_mm_sub_font_transform":"","f_mm_sub_font_spacing":"","f_mm_sub_":"","m_bg":"","color_overlay":"","shadow_shadow_header":"","shadow_shadow_title":"Module Shadow","shadow_shadow_size":"","shadow_shadow_offset_horizontal":"","shadow_shadow_offset_vertical":"","shadow_shadow_spread":"","shadow_shadow_color":"","title_txt":"","title_txt_hover":"","all_underline_height":"","all_underline_color":"#000","cat_bg":"","cat_bg_hover":"","cat_txt":"","cat_txt_hover":"","cat_border":"","cat_border_hover":"","meta_bg":"","author_txt":"","author_txt_hover":"","date_txt":"","ex_txt":"","com_bg":"","com_txt":"","rev_txt":"","shadow_m_shadow_header":"","shadow_m_shadow_title":"Meta info shadow","shadow_m_shadow_size":"","shadow_m_shadow_offset_horizontal":"","shadow_m_shadow_offset_vertical":"","shadow_m_shadow_spread":"","shadow_m_shadow_color":"","audio_btn_color":"","audio_time_color":"","audio_bar_color":"","audio_bar_curr_color":"","pag_text":"","pag_h_text":"","pag_bg":"","pag_h_bg":"","pag_border":"","pag_h_border":"","f_title_font_header":"","f_title_font_title":"Article title","f_title_font_settings":"","f_title_font_family":"","f_title_font_style":"","f_title_font_weight":"","f_title_font_transform":"","f_title_font_spacing":"","f_title_":"","f_cat_font_title":"Article category tag","f_cat_font_settings":"","f_cat_font_family":"","f_cat_font_size":"","f_cat_font_line_height":"","f_cat_font_style":"","f_cat_font_weight":"","f_cat_font_transform":"","f_cat_font_spacing":"","f_cat_":"","f_meta_font_title":"Article meta info","f_meta_font_settings":"","f_meta_font_family":"","f_meta_font_size":"","f_meta_font_line_height":"","f_meta_font_style":"","f_meta_font_weight":"","f_meta_font_transform":"","f_meta_font_spacing":"","f_meta_":"","f_ex_font_title":"Article excerpt","f_ex_font_settings":"","f_ex_font_family":"","f_ex_font_size":"","f_ex_font_line_height":"","f_ex_font_style":"","f_ex_font_weight":"","f_ex_font_transform":"","f_ex_font_spacing":"","f_ex_":"","mix_color":"","mix_type":"","fe_brightness":"1","fe_contrast":"1","fe_saturate":"1","mix_color_h":"","mix_type_h":"","fe_brightness_h":"1","fe_contrast_h":"1","fe_saturate_h":"1","el_class":"","tdc_css":"","block_template_id":"","td_column_number":3,"header_color":"","ajax_pagination_infinite_stop":"","offset":"","limit":"5","td_ajax_preloading":"","td_ajax_filter_type":"","td_filter_default_txt":"","td_ajax_filter_ids":"","color_preset":"","ajax_pagination":"","ajax_pagination_next_prev_swipe":"","border_top":"","css":"","class":"tdi_42","tdc_css_class":"tdi_42","tdc_css_class_style":"tdi_42_rand_style"}'; tdbMenuItem.isMegaMenuFull = true; tdbMenuItem.megaMenuLoadType = ''; tdbMenu.addItem(tdbMenuItem); }); jQuery().ready(function () { var tdbSearchItem = new tdbSearch.item(); //block unique ID tdbSearchItem.blockUid = 'tdi_57'; tdbSearchItem.blockAtts = '{"inline":"yes","toggle_txt_pos":"after","form_align":"content-horiz-right","results_msg_align":"content-horiz-center","image_floated":"float_left","image_width":"30","image_size":"td_324x400","show_cat":"none","show_btn":"none","show_date":"","show_review":"","show_com":"none","show_excerpt":"none","show_author":"none","art_title":"0 0 2px 0","all_modules_space":"20","tdicon":"td-icon-magnifier-big-rounded","icon_size":"eyJhbGwiOiIyMCIsInBvcnRyYWl0IjoiMTgifQ==","tdc_css":"eyJhbGwiOnsiZGlzcGxheSI6IiJ9LCJwb3J0cmFpdCI6eyJtYXJnaW4tdG9wIjoiMSIsImRpc3BsYXkiOiIifSwicG9ydHJhaXRfbWF4X3dpZHRoIjoxMDE4LCJwb3J0cmFpdF9taW5fd2lkdGgiOjc2OH0=","modules_on_row":"eyJhbGwiOiI1MCUiLCJwb3J0cmFpdCI6IjUwJSIsImxhbmRzY2FwZSI6IjUwJSJ9","meta_info_horiz":"content-horiz-left","form_width":"600","input_border":"0 0 1px 0","modules_divider":"","form_padding":"eyJwb3J0cmFpdCI6IjIwcHggMjBweCAyMHB4IiwiYWxsIjoiMzBweCJ9","arrow_color":"#ffffff","btn_bg_h":"rgba(0,0,0,0)","btn_tdicon":"td-icon-menu-right","btn_icon_pos":"after","btn_icon_size":"7","btn_icon_space":"8","f_title_font_family":"","f_cat_font_family":"","f_cat_font_transform":"uppercase","f_title_font_weight":"","f_title_font_transform":"","f_title_font_size":"13","title_txt_hover":"#4db2ec","results_limit":"6","float_block":"yes","icon_color":"#000000","results_border":"0 0 1px 0","f_title_font_line_height":"1.4","btn_color":"#000000","btn_color_h":"#4db2ec","all_underline_color":"","results_msg_color_h":"#4db2ec","image_height":"100","meta_padding":"3px 0 0 16px","modules_gap":"20","mc1_tl":"12","show_form":"yes","f_meta_font_weight":"","h_effect":"","results_msg_padding":"10px 0","f_results_msg_font_style":"normal","video_icon":"24","modules_divider_color":"","modules_border_color":"","btn_padding":"0","form_border":"0","form_shadow_shadow_offset_vertical":"3","results_padding":"0 30px 30px","btn_bg":"rgba(0,0,0,0)","icon_padding":"eyJhbGwiOjIuNCwicG9ydHJhaXQiOiIyLjYifQ==","block_type":"tdb_header_search","post_type":"","disable_trigger":"","show_results":"yes","separator":"","disable_live_search":"","exclude_pages":"","exclude_posts":"","search_section_header":"","results_section_1_title":"","results_section_1_taxonomies":"","results_section_1_level":"","results_section_2_title":"","results_section_2_taxonomies":"","results_section_2_level":"","results_section_3_title":"","results_section_3_taxonomies":"","results_section_3_level":"","results_section_search_query_terms":"","results_section_search_query_terms_title":"","results_section_search_query_terms_taxonomies":"","sec_title_space":"","sec_title_color":"","tax_space":"","tax_title_color":"","tax_title_color_h":"","f_sec_title_font_header":"","f_sec_title_font_title":"Section title text","f_sec_title_font_settings":"","f_sec_title_font_family":"","f_sec_title_font_size":"","f_sec_title_font_line_height":"","f_sec_title_font_style":"","f_sec_title_font_weight":"","f_sec_title_font_transform":"","f_sec_title_font_spacing":"","f_sec_title_":"","f_tax_title_font_title":"Taxonomy title text","f_tax_title_font_settings":"","f_tax_title_font_family":"","f_tax_title_font_size":"","f_tax_title_font_line_height":"","f_tax_title_font_style":"","f_tax_title_font_weight":"","f_tax_title_font_transform":"","f_tax_title_font_spacing":"","f_tax_title_":"","toggle_txt":"","toggle_txt_align":"0","toggle_txt_space":"","toggle_horiz_align":"content-horiz-left","form_offset":"","form_offset_left":"","form_content_width":"","form_align_screen":"","input_placeholder":"","placeholder_travel":"0","input_padding":"","input_radius":"","btn_text":"Search","btn_icon_align":"0","btn_margin":"","btn_border":"","btn_radius":"","results_msg_border":"","mc1_title_tag":"","mc1_el":"","open_in_new_window":"","m_padding":"","modules_border_size":"","modules_border_style":"","image_alignment":"50","image_radius":"","hide_image":"","show_vid_t":"block","vid_t_margin":"","vid_t_padding":"","vid_t_color":"","vid_t_bg_color":"","f_vid_time_font_header":"","f_vid_time_font_title":"Video duration text","f_vid_time_font_settings":"","f_vid_time_font_family":"","f_vid_time_font_size":"","f_vid_time_font_line_height":"","f_vid_time_font_style":"","f_vid_time_font_weight":"","f_vid_time_font_transform":"","f_vid_time_font_spacing":"","f_vid_time_":"","excl_show":"inline-block","excl_txt":"","excl_margin":"","excl_padd":"","all_excl_border":"","all_excl_border_style":"solid","excl_radius":"","excl_color":"","excl_color_h":"","excl_bg":"","excl_bg_h":"","all_excl_border_color":"","excl_border_color_h":"","f_excl_font_header":"","f_excl_font_title":"Label text","f_excl_font_settings":"","f_excl_font_family":"","f_excl_font_size":"","f_excl_font_line_height":"","f_excl_font_style":"","f_excl_font_weight":"","f_excl_font_transform":"","f_excl_font_spacing":"","f_excl_":"","meta_info_align":"","meta_width":"","meta_margin":"","meta_info_border_size":"","meta_info_border_style":"","meta_info_border_color":"#eaeaea","art_btn":"","modules_category":"","modules_category_margin":"","modules_category_padding":"","modules_cat_border":"","modules_category_radius":"0","modules_extra_cat":"","author_photo":"","author_photo_size":"","author_photo_space":"","author_photo_radius":"","show_modified_date":"","time_ago":"","time_ago_add_txt":"ago","time_ago_txt_pos":"","review_space":"","review_size":"2.5","review_distance":"","art_excerpt":"","excerpt_col":"1","excerpt_gap":"","excerpt_middle":"","btn_title":"","btn_border_width":"","form_general_bg":"","icon_color_h":"","toggle_txt_color":"","toggle_txt_color_h":"","f_toggle_txt_font_header":"","f_toggle_txt_font_title":"Text","f_toggle_txt_font_settings":"","f_toggle_txt_font_family":"","f_toggle_txt_font_size":"","f_toggle_txt_font_line_height":"","f_toggle_txt_font_style":"","f_toggle_txt_font_weight":"","f_toggle_txt_font_transform":"","f_toggle_txt_font_spacing":"","f_toggle_txt_":"","form_bg":"","form_border_color":"","form_shadow_shadow_header":"","form_shadow_shadow_title":"Shadow","form_shadow_shadow_size":"","form_shadow_shadow_offset_horizontal":"","form_shadow_shadow_spread":"","form_shadow_shadow_color":"","input_color":"","placeholder_color":"","placeholder_opacity":"0","input_bg":"","input_border_color":"","input_shadow_shadow_header":"","input_shadow_shadow_title":"Input shadow","input_shadow_shadow_size":"","input_shadow_shadow_offset_horizontal":"","input_shadow_shadow_offset_vertical":"","input_shadow_shadow_spread":"","input_shadow_shadow_color":"","btn_icon_color":"","btn_icon_color_h":"","btn_border_color":"","btn_border_color_h":"","btn_shadow_shadow_header":"","btn_shadow_shadow_title":"Button shadow","btn_shadow_shadow_size":"","btn_shadow_shadow_offset_horizontal":"","btn_shadow_shadow_offset_vertical":"","btn_shadow_shadow_spread":"","btn_shadow_shadow_color":"","f_input_font_header":"","f_input_font_title":"Input text","f_input_font_settings":"","f_input_font_family":"","f_input_font_size":"","f_input_font_line_height":"","f_input_font_style":"","f_input_font_weight":"","f_input_font_transform":"","f_input_font_spacing":"","f_input_":"","f_placeholder_font_title":"Placeholder text","f_placeholder_font_settings":"","f_placeholder_font_family":"","f_placeholder_font_size":"","f_placeholder_font_line_height":"","f_placeholder_font_style":"","f_placeholder_font_weight":"","f_placeholder_font_transform":"","f_placeholder_font_spacing":"","f_placeholder_":"","f_btn_font_title":"Button text","f_btn_font_settings":"","f_btn_font_family":"","f_btn_font_size":"","f_btn_font_line_height":"","f_btn_font_style":"","f_btn_font_weight":"","f_btn_font_transform":"","f_btn_font_spacing":"","f_btn_":"","results_bg":"","results_border_color":"","results_msg_color":"","results_msg_bg":"","results_msg_border_color":"","f_results_msg_font_header":"","f_results_msg_font_title":"Text","f_results_msg_font_settings":"","f_results_msg_font_family":"","f_results_msg_font_size":"","f_results_msg_font_line_height":"","f_results_msg_font_weight":"","f_results_msg_font_transform":"","f_results_msg_font_spacing":"","f_results_msg_":"","m_bg":"","color_overlay":"","shadow_module_shadow_header":"","shadow_module_shadow_title":"Module Shadow","shadow_module_shadow_size":"","shadow_module_shadow_offset_horizontal":"","shadow_module_shadow_offset_vertical":"","shadow_module_shadow_spread":"","shadow_module_shadow_color":"","title_txt":"","all_underline_height":"","cat_bg":"","cat_bg_hover":"","cat_txt":"","cat_txt_hover":"","cat_border":"","cat_border_hover":"","meta_bg":"","author_txt":"","author_txt_hover":"","date_txt":"","ex_txt":"","com_bg":"","com_txt":"","rev_txt":"","shadow_meta_shadow_header":"","shadow_meta_shadow_title":"Meta info shadow","shadow_meta_shadow_size":"","shadow_meta_shadow_offset_horizontal":"","shadow_meta_shadow_offset_vertical":"","shadow_meta_shadow_spread":"","shadow_meta_shadow_color":"","btn_bg_hover":"","btn_txt":"","btn_txt_hover":"","btn_border_hover":"","f_title_font_header":"","f_title_font_title":"Article title","f_title_font_settings":"","f_title_font_style":"","f_title_font_spacing":"","f_title_":"","f_cat_font_title":"Article category tag","f_cat_font_settings":"","f_cat_font_size":"","f_cat_font_line_height":"","f_cat_font_style":"","f_cat_font_weight":"","f_cat_font_spacing":"","f_cat_":"","f_meta_font_title":"Article meta info","f_meta_font_settings":"","f_meta_font_family":"","f_meta_font_size":"","f_meta_font_line_height":"","f_meta_font_style":"","f_meta_font_transform":"","f_meta_font_spacing":"","f_meta_":"","f_ex_font_title":"Article excerpt","f_ex_font_settings":"","f_ex_font_family":"","f_ex_font_size":"","f_ex_font_line_height":"","f_ex_font_style":"","f_ex_font_weight":"","f_ex_font_transform":"","f_ex_font_spacing":"","f_ex_":"","el_class":"","block_template_id":"","td_column_number":3,"header_color":"","ajax_pagination_infinite_stop":"","offset":"","limit":"5","td_ajax_preloading":"","td_ajax_filter_type":"","td_filter_default_txt":"","td_ajax_filter_ids":"","color_preset":"","ajax_pagination":"","ajax_pagination_next_prev_swipe":"","border_top":"","css":"","class":"tdi_57","tdc_css_class":"tdi_57","tdc_css_class_style":"tdi_57_rand_style"}'; tdbSearchItem.jqueryObj = jQuery('.tdi_57'); tdbSearchItem._openSearchFormClass = 'tdb-drop-down-search-open'; tdbSearchItem._resultsLimit = '6'; tdbSearch.addItem( tdbSearchItem ); }); jQuery(window).on( 'load', function () { var block = jQuery('.tdi_77'), blockClass = '.tdi_77', blockInner = block.find('.tdb-block-inner'), blockOffsetLeft; if( block.find('audio').length > 0 ) { jQuery(blockClass + ' audio').mediaelementplayer(); } if( block.hasClass('tdb-sfi-stretch') ) { jQuery(window).resize(function () { blockOffsetLeft = block.offset().left; if( block.hasClass('tdb-sfi-stretch-left') ) { blockInner.css('margin-left', -blockOffsetLeft + 'px'); } else { blockInner.css('margin-right', -(jQuery(window).width() - (blockOffsetLeft + block.outerWidth())) + 'px'); } }); jQuery(window).resize(); } setTimeout(function () { block.css('opacity', 1); }, 500); }); var td_res_context_registered_atts=["style_general_mobile_menu","style_general_header_align","style_general_header_logo","style_general_mobile_search","style_general_header_date","style_general_header_user","style_general_mobile_horiz_menu","style_general_socials","style_general_header_mega_menu","style_general_module_header","style_general_header_menu","style_general_header_search","style_general_header_search_trigger_enabled","style_general_breadcrumbs","style_general_single_categories","style_general_single_title","style_general_title_single","style_bg_space","style_general_post_meta","style_general_single_author","style_general_single_date","style_general_comments_count","style_general_post_views","style_general_single_post_share","style_general_featured_image","style_general_single_content","style_general_separator","style_general_author_box","style_general_popular_categories"]; ```